domingo, janeiro 15, 2012

Email forward para pasta pública

Quando tentamos efectuar o forward de email inbound de um recipiente para uma pasta pública do exchange usando a consola (Recipient ->Properties | Mail Flow Settings | Delivery Options |Forward to:) o GUI não mostra as pastas públicas mail enabled.

Isto pode ser efectuado recorrendo à shell:
Set-Mailbox "Foo" -ForwardingAddress "TestPF@mydomain.com"

O comando em cima efectua o forward do email para uma pasta pública sem enviar uma cópia para o destinatário original. Para que uma cópia seja enviada para o destinatário original deveremos colocar a seguinte propriedade, DeliverToMailboxAndForward,  como verdadeira.

Set-Mailbox "Foo" -ForwardingAddress "TestPF@mydomain.com" -DeliverToMailboxAndForward $true

quinta-feira, dezembro 22, 2011

Jogo Flash ActionScript 3.0

No âmbito de um trabalho para uma disciplina do meu mestrado, propus a elaboração de um jogo em ActionScript 3.0.
O jogo é para 2 jogadores. Ainda não está completamente acabado, pois faltam algumas funcionalidades em opções e alguns botões, mas dá para dar uma amostra.


quarta-feira, dezembro 21, 2011

Traffic Shaping

Traffic Shaping é uma técnica de gestão de tráfego de rede que atrasa a transferência de alguns pacotes de determinado protocolos de transferência de dados (tais como o FTP). Isto é efectuado por vários operadores ISP a nível mundial, pois todos sabemos que a capacidade da rede está dividida entre vários destinatários da largura de banda, e os ISPs para garantirem a velocidade contratada, usam diversas técnicas. Esta é uma técnica proibida.

Para se saber se o ISP está a efectuar Traffic Shaping, poderemos analisar recorrendo a esta ferramenta:

http://broadband.mpi-sws.org/transparency/bttest.php

quarta-feira, agosto 10, 2011

Passagem de dados entre winforms em aplicações Windows

Por vezes existem cenários onde temos necessidade de passar dados entre formulários. Neste caso, existem vários métodos para passar dados entre formulários no desenvolvimento de uma aplicação Windows:


  • Using constructor
  • Using objects
  • Using properties
  • Using delegates
A aplicação destes métodos é explicada em :


domingo, dezembro 12, 2010

XNA - Primeira experiência

Resolvi propor o desenvolvimento de uma Slot Machine no âmbito de um projecto de trabalho para uma disciplina do meu Mestrado.
Não o queria fazer usando labels e picture boxes e uma função randomica que me retornasse uma figura. Queria fazer algo mais real, com recursos gráficos e por isso resolvi experimentar a plataforma XNA que me dá isso tudo (DirectX inclusive).

De facto com esta plataforma tudo se torna mais fácil.
Baseado na leitura que efectuei em http://felipearon.net/curso-online-xna/aula-01-o-que-e-xna, resolvi meter mãos á obra.

Criei uma Sprite de frutos, uma classe roda e o resto já funciona. Agora falta acrescentar algumas funcionalidades e melhorar bastante as imagens. O motor está quase pronto.
Assim que estiver finalizada irei colocar o código da classe roda aqui. Até porque não consegui encontrar nada do género feito em XNA na Internet.

terça-feira, outubro 26, 2010

Photoshop change color of line

Start a new layer over the line-art layer

Fill the layer with the desired color.

Dois cliques na layer e definir blending options
In the Layers Palette Blending modes pull-down, select:
* Lighten
* Screen
* Linear Dodge

and the image will take on that color.

quarta-feira, outubro 13, 2010

Aplicação web tenta usar Exchange 2007 para envio de mensagens

A aplicação web tenta usar as credenciais do servidor exchange 2007 para enviar notificações mas recebe 5.7.1 unable to relay.

Para colmatar este problema, deve-se criar um SMTP receive connector para os IPs em questão "Receber emails de servidores remotos". De seguida providenciar relay com o tipo de autenticação Anonymous e escrever na linha de comandos "Shell" o seguinte:

Get-ReceiveConnector "Intranet" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "ms-Exch-SMTP-Accept-Any-Recipient"

domingo, setembro 19, 2010

Criar default values no XSD gerado

Verificar defaults da tabela para cria-los no dataset XSD

SELECT c.COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.COLUMN_DEFAULT IS NOT NULL
and c.TABLE_NAME = ''
AND C.COLUMN_NAME = ''

Another Way
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q318048

domingo, setembro 12, 2010

Carregar User Controls em runtime

É possível carregar Usercontrols em runtime usando o método Loadcontrol. É ainda possível definir valores para propriedades que tenhamos criado para os mesmos.

Para podermos carregar os Usercontrol, temos de dizer onde queremos que eles apareçam na nossa página e para isso usamos por exemplo o objecto PlaceHolder:

 Control FeaturedProductUserControl = LoadControl(Request.ApplicationPath + "/UserControls/UCfeeds.ascx");
  
           FeaturedProductUserControl.ID = "UsercontrolID" + counter.ToString();
  
           Type typ = FeaturedProductUserControl.GetType();
  
           //Procurar propriedade definida no objecto Usercontrol
  
           System.Reflection.PropertyInfo pi = typ.GetProperty("nome");
  
           pi.SetValue(FeaturedProductUserControl, "nome", null);
  
           plh1.Controls.Add(FeaturedProductUserControl);  

sexta-feira, setembro 10, 2010

Criar menu com subitems especificados em control menu

Este código permite criar um menu apenas com os subitems de um item especificado.

1:  <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1">
  
2:      <DataBindings>
  
3:        <asp:MenuItemBinding DataMember="SiteMapNode" />
  
4:      </DataBindings>
  
5:    </asp:Menu>
  
6:    <div id="recibo" runat="server">
  
7:      <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false"
  
8:        StartingNodeUrl="~/Users/default.aspx?i=1" />  

Criar combobox com ultimos 12 meses

Com este código pretende-se criar uma combobox carregada com os ultimos 12 meses:

1:  DateTime month = Convert.ToDateTime(DateTime.Now.ToString()).AddMonths(-12);
  
2:        for (int i = 0; i < 12; i++)
  
3:        {
  
4:          DateTime NextMont = month.AddMonths(i);
  
5:          ListItem list = new ListItem();
  
6:          list.Text = NextMont.ToString("yyyy") + "-" + NextMont.ToString("MMMM").PadRight(15);
  
7:          list.Value = NextMont.Month.ToString();
  
8:          ddlmeses.Items.Add(list);
  
9:        }
  
10:        if (SetCurruntMonth == true)
  
11:        {
  
12:          MyddlMonthList.Items.FindByValue(DateTime.Now.Month.ToString()).Selected = true;
  
13:        }  

terça-feira, setembro 07, 2010

Profile asp.net

 A classe ProfileCommon não é gerada quando asp.net Application project. Para isso teremos de utilizar o WebProfileGenerator em:
  
 http://webprofile.codeplex.com/Thread/View.aspx?ThreadId=20291
  
 Para o utilizar com o Visual Studio 2010 temos de colocar uma pasta chamada AddIns e dentro colocar o ficheiro .dll.
  
 Teremos ainda de alterar o ficheiro (WebProfileGenerator.AddIn) de forma a contemplar o seguinte:
  
 (...)
  
 <code>
  
  <HostApplication>
  
   <Name>Microsoft Visual Studio</Name>
  
   <Version>10.0</Version>
  
  </HostApplication>
  
 </code>
  
 (...)
  
 De seguida surge dentro do Visual Studio uma opção (clique lado direito do botão do rato) para gerar a classe profile.
  
 Após classe gerada, podemos por exemplo adicionar uma opção de perfil a um determinado utilizador:
  
 <code>
  
  //Criar o profile para colocar a informacao adicional
  
       WebProfile webProfile = new WebProfile();
  
       WebProfile pro = webProfile.GetProfile(username.Text);
  
       pro.GenericField= ddlphc.SelectedItem.Value;
  
       pro.Save();
  
 </code>
  
 Não esquecer de definir o web.config:
  
 (...)
  
 <code>
  
 <profile defaultProvider="MyProfileProvider" enabled="true">
  
    <providers>
  
     <add name="MyProfileProvider" connectionStringName="intraweb.Properties.Settings.ConnString" applicationName="intraweb" type="System.Web.Profile.SqlProfileProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxx"/>
  
    </providers>
  
    <properties>
  
     <add name="GenericField" type="String" />
  
    </properties>
  
   </profile>
  
 </code>
  
 (...)  

Verificar também Custom Membership, Role Providers, Website administration tool, and Role based access to individual files:

http://beta.codeproject.com/KB/aspnet/innovative_rolebased_WAT.aspx?msg=3228998

sábado, setembro 04, 2010

JQuery para Date Picker

Primeiro efectuar download de Jquery:
http://jqueryui.com/download/

De seguida integra-lo no VS na solução. Copy paste dos scripts.

Colocar o seguinte código nos header das páginas.


<!-- Jquery para datepicker -->

        "<link href="../js/jquery-ui-1.8.4.custom/css/ui-lightness/jquery-ui-1.8.4.custom.css" rel="stylesheet" type="text/css" />

        <script type="text/javascript" src="../js/jquery-ui-1.8.4.custom/development-bundle/jquery-1.4.2.js"></script>

        <script type="text/javascript" src="../js/jquery-ui-1.8.4.custom/development-bundle/ui/jquery-ui-1.8.4.custom.js"></script>

        <script type="text/javascript" src="../js/jquery-ui-1.8.4.custom/development-bundle/ui/jquery.effects.core.js"></script>

        <script type="text/javascript" src="../js/jquery-ui-1.8.4.custom/development-bundle/ui/jquery.ui.datepicker.js"></script>

        <script type="text/javascript" src="../js/jquery-ui-1.8.4.custom/development-bundle/ui/i18n/jquery.ui.datepicker-pt-BR.js"></script>

        <script type="text/javascript" >

            $(document).ready(function () {

                $.datepicker.setDefaults($.datepicker.regional['']);

                $("input[name*='dtactivodeTextBox']").datepicker($.datepicker.regional['pt-BR']);

                $("input[name*='dtactivodeTextBox']").datepicker();

                $("input[name*='dtactivoateTextBox']").datepicker($.datepicker.regional['pt-BR']);

                $("input[name*='dtactivoateTextBox']").datepicker();

                

            });

        </script>"

        <!-- Fim jquery datepicker -->

Multiselect Gridview

Adicionar propriedade de multiselect com inheritance.

http://www.mostlydevelopers.com/mostlydevelopers/blog/post/2008/09/17/MultiSelect-GridView-Control.aspx

sexta-feira, setembro 03, 2010

Formatar datas em datalist ou Gridview

De forma a aparecer o ShortDate deveremos colocar no itemtemplate o seguinte:

Eval(´date´, ´{0:d}´ )

http://forums.asp.net/t/1230232.aspx

Trocar acentos por aspas.

Plataforma de desenvolvimento: Windows + Visual Studio 2010
Linguagem de programação: .NET 4.0

quinta-feira, setembro 02, 2010

Problema .NET framework 4 com SeparatorImageUrl em MENU (ASP:NET)

O til (~) não é resolvido com Page.resolveclienteUrl.
O workaround para master pages é colocar no page.load:

//Necessário incluir este snipet para resolver questao do resoveclienturl dos separator menus
foreach (MenuItem binding in Menu1.Items)
{
binding.SeparatorImageUrl = ResolveClientUrl(binding.SeparatorImageUrl);
}

http://connect.microsoft.com/VisualStudio/feedback/details/537674/tilde-in-separatorimageurl-of-menuitem-control

Plataforma de desenvolvimento: Windows + Visual Studio 2010
Linguagem de programação: .NET 4.0

terça-feira, agosto 31, 2010

Instalar flex builder com asp.net development server

Ao tentar criar um projecto novo com ligação ao asp.net development server, poderá surgir um erro a informar da indisponibilidade do webdev.

Deveremos procurar os ficheiros WebDev.WebServer.EXE ou WebDev.WebServer40.EXE e copia-los para a pasta de framework 2.057 em c:\windows\microsoft.net\framework\xxx e renomea-los, caso diferente daquilo que o Flex Buider procura (webdev.webserver40.exe) para WebDev.WebServer.EXE.

http://www.ironspeed.com/Designer/7.0.2/WebHelp/Part_VI/The_ASP_NET_Development_Server.htm

Adicionar parametros a addEventListeners

stage.addEventListener(MouseEvent.CLICK,
function(e : MouseEvent) : void
{
fMyFunction(e, "hello world")
},
false , 0 , false);

function fMyFunction(e : MouseEvent, vMsg:String) : void
{
trace(vMsg);
}


Plataforma de desenvolvimento: Windows + Visual Studio 2008 + Flex Builder 3
Linguagem de programação: actionScript
SGBD: MSSQL 2005

sexta-feira, abril 10, 2009

GPS Tracking System

Vou falar um pouco sobre o que me foi proposto fazer em Abril de 2009. O cliente em questão tem um negócio que abrange todas as áreas relativas ao ramos automóvel. Este, para juntar ao grupo de serviços que dispões, quer um sistema próprio de GPS Tracking para poder servir os seus clientes.

Um serviço de GPS tracking pressupõe uma panóplia de requisitos essenciais.

Tipo de dispositivos a serem usados nos automoveis;
Tipo de informação a ser processada (Strings de GPS GPRMC, etc);
Serviço Online 24x7;
Acesso personalidado mediante autenticação;
Acesso a informação actualizada sobre o rumo, direcção, posicionamento, geo-referenciação imediato e em tempo real.

Mediante estes pressupostos resumidos e após análise resolvi por mãos à obra.

1º Fase - Recepção e processamento
Em primeiro criei um serviço Windows que corre em servidor dedicado para receber as coordenadas do GPS. O GPS dispositivo envia de x em x segundos um conjunto de dados incluindo a String GPRMC, conhecida por Recomended Minimum sentence que contem quase tudo que a aplicação precisa de receber para processar. A string envia, de modo codificado, a latitude, longitude, velocidade, direcção em º , satellite-derived time, fix status e magnetic variation.

O dispositivo em questão teve de ser programado para enviar de x em x segundos, via TCP para um socket onde o serviço windows fica activo.

Este serviço recebe a string, processa-a e guarda toda a informação préviamente tratada em Base de dados MSSQL 2005.

2º Fase - Presentation Layer
Nesta segunda fase a preocupação foi a apresentação dos dados, visto que grande parte do processamento e tratamento da informação é efectuada na recepção dos dados.

Para isso Usei a linguagem de programação FLEX (XML). Como o flex não trabalha directamente com os dados, era preciso um serviço Web que os disponibilizasse.

Criei um serviço web em vb.NET alojado no servidor dedicado de recepção e armazenamento de coordenadas GPS que sirva de camada intermediária de dados para a aplicação Web em FLEX.

A aplicação permite aos utilizadores terem acesso imediato a localização dos veículos, disponibilidade de colocação de marcadores, rotas percorridas, tempos de paragem e viagem, soma de km, etc.

Tempo de desenvolvimento: 1 mês
Plataforma de desenvolvimento: Windows + Visual Studio 2008 + Flex Builder 3
Linguagem de programação: vb.net, Flex
SGBD: MSSQL 2005

terça-feira, setembro 16, 2008

.NET + WEBSERVICES - SMS por E-Mail

Foi-me requisitado a análise e elaboração de uma aplicação activa de envio de sms's por e-mail.
Basicamente, o cliente envia um email para determinados números de telefone, por ex: 93456456@xxx.xx.pt e este é reecaminhado para o telémovel da pessoa a contactar.

Coloca-se desde logo um problema. Visto que deverá correr como serviço num servidor, pois quero que a aplicação se active independentemente do facto de existir alguém logado ou não no sistema, apenas este facto leva-me a pensar que terei de criar um Windows Service de propósito. Mas não.... Felizmente sou adepto fervoroso do Code Project e lá encontrei uma aplicação fantásticamente simples que faz aquilo que queria. Na verdade, o xyntservice faz isso. Vale a pena ver.


Finalmente e após análise dos requisitos, elaborei a base de dados para MSSQL.
Todo o programa foi desenvolvido em vb.net e usei como classes de manuseio de e-mail, umas antigas adaptadas que tinha no meu cofre de programas. 

A operadora de telecomunicações, forneceu o WEBSERVICE que propicia a interface de envio de smss. Basicamente teria de formatar a informação.

Mais tarde, desenvolvi uma aplicação de gestão para gerar relatórios para os clientes de numero de mensagens...etc.

A aplicação passou nos curtos testes e neste momento corre já à 2 meses sem grandes problemas.

Tempo de desenvolvimento: 1 mês e 15 dias
Plataforma de desenvolvimento: Windows + Visual Studio 2008
Linguagem de programação: vb.net
SGBD: MSSQL 2005