Wednesday, November 05, 2008
#
1000+ Web 2.0 APIsPodem ser encontradas aqui:
http://www.programmableweb.com/apis/directory
Saturday, November 01, 2008
#

Num projecto Web que passei, o debug era feito de forma remota e funcionava de inicio muito bem, mas depois de serem alteradas algumas politicas de rede, foi extremamente "doloroso" fazer qualquer tipo de debug, e tivemos que recorrer a métodos de leitura de valores em
runtime como por exemplo
Response.Writeln(Valor a depurar) ou Debug.WriteLine(Valor a depurar)
Hoje descobri uma funcionalidade que permitia obter valores num determinado ponto de execução, através dos
Breakpoints
posso inferir a captura de um determinado valor.
Se clicar-mos no botão direito em cima de um
breakpoint, temos uma opção denominada "
When Hit..." esta opção permite escrever mensagem para a
Output Window num determinado ponto de execução, e com a vantagem, se quisermos, de que nem de parar a execução.
Ao seleccionar a opção "
When Hit..." surge a seguinte janela.
Na caixa de texto
Print
a
message
escrevemos a
mensagem
pretendida. Para escrever o valor de uma
variável, escrevemos a
variável
entre chavetas, como mostra no exemplo a
mensagem
irá ter o seguinte aspecto:
Function: Some_Event(object, System.EventArgs), Timestamp: "18:15:54"
Function: Some_Event(object, System.EventArgs), Timestamp: "18:15:54"
(...)
Esta funcionalidade também permite correr uma macro, o que se torna muito útil para efectuar processos paralelos à execução da nossa aplicação.
Wednesday, October 29, 2008
#
Hoje pediram-me um desafio que era efectuar o tratamento de um timeout para um pedido assíncrono.
E descobri que a solução passa por adicionar ao código HTML um gestor de pedidos que validasse se o pedido efectuado caisse em timeout.
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
if (args.get_error() && args.get_response().get_timedOut()) {
// Tratar o timeout
// colocar o errorHandled = true para evitar receber a popup gerada pela biblioteca de AJAX.
args.set_errorHandled(true);
}
});
O teste que efectuei foi parar a execução com o auxilio do debug e funcionou à primeira.
Monday, October 06, 2008
#
Sunday, October 05, 2008
#
Na sexta-feira decorreu no Centro Cultural de Belém (
CCB) o evento
Dreamway. Mais um evento que deu para rever antigos colegas e conhecer mais em detalhe algumas das novidades tecnológicas da Microsoft.
Após a acreditação fui assistir á sessão do
Pedro Rosa e do
Nuno Costa sobre as novas tendências no desenvolvimento tecnológico, onde foram apresentadas as algumas demonstrações sobre do que a tecnologia Microsoft é actualmente são capaz de fazer, tais como o
Silverlight,
Virtual Earth e os serviços Live.
Segui-se uma pausa para o café e em seguida fui assistir uma sessão sobre as vantagens de se utilizar o
Visual Studio Team System e de que forma os testes unitários poderiam ser criados nesta plataforma.
A sessão seguinte, apresentada por Ivo Ramos, foi muito esclarecedora de que forma é que os programadores podem trabalhar em conjunto com os administradores de bases de dados (DBA) e de que forma o Visual Studio Team System 2008 Database Edition pode ajudar nesta tarefa.
Utilizando um projecto de base de dados, criado pelo DBA os programadores poderam trabalhar e guardar em source control todo o esquema da base dados, assim como strored procedures, tabelas etc.
Após o almoço,
Miguel Caldas apresentou com o seu estilo peculiar, as características principais do
IE8, onde se destaca-se a compatibilidade com todos browsers antecessores, indicando ao IE8 para assumir o comportamento do IE7, IE6 ou IE5.
A meio da apresentação do Miguel Caldas surgiu ao som de musica rock e ao estilo de estrela de wresting, o CEO da Microsoft
Steve Ballmer, que perante a audiência maioritariamente de programadores referiu bem ao seu estilo, que a maior força mobilizadora de uma economia são "
Developers, Developers, Developers", e que a Microsoft tem como missão dar todas as condições e ferramentas para que os programadores façam o seu trabalho e que num futuro próximo existam televisões inteligentes e telefones inteligentes em cada casa.
Após a sessão do Steve Balmer fui assistir à sessão sobre
ADO.NET Data Services e
Microsoft Entity Framework, apresentada pelo Nuno Silva. O Nuno Silva demonstrou de uma forma excelente como funciona o MS Entity Framework, que se caracteriza por criar uma abstracção do modelo de dados, em que o programador só necessita de conhecer os dados que precisa, isto é o em vez de se criar procedimentos com dez inner joins para se extrair uma entidade, com o MS Entity Framework criam-se estas entidades e o programador só necessita de aceder a estas entidades e a framework faz o resto. Outro dos aspectos é a possibilidade de ter o conceito dos objectos, a herança, em base de dados. Criamos uma entidade "A" e podemos representar outra entidade "B" que herda todas as colunas da entidade "A".
Quanto ao ADO.NET Data Services também conhecido por Astoria, resume-se a ter a Camada de Acesso a Dados (DAL) de uma forma Representational State Transfer (REST), isto é através de um URL como se fosse um WebService.
Friday, September 12, 2008
#
O Microsoft Office Sharepoint tem vindo a tornar-se no gestor de conteúdos(CMS) com mais oferta de mercado, mas o desenvolvimento de aplicações sobre este CMS é feito com pouco conhecimento das potencialidades do produto.
A Technet da Microsoft tem disponível um conjunto de documentação e de recursos que servem como boas práticas no desenvolvimento de aplicações em Sharepoint.
Esta biblia para o desenvolvimento em Sharepoint pode ser encontrada
aqui
Wednesday, September 10, 2008
#
10. Motores de Pesquisa dinâmicos
- O Google Chrome permite incorporar vários motores de busca, para isso basta:
Aceder a um motor de busca. Ex: www.yahoo.com
No lado direito surge a opção de carregar na tecla Tab para pesquisar directamente no motor de busca seleccionado
Após uma busca efectuada desta forma este motor de busca fica registado no Chrome
9. Dicionário
O Google Chrome possui um dicionário incorporado com uma grande variedade de línguas disponíveis.
8. Multilingue
O Google Chrome é verdadeiramente Multilingue, isto é, com a simples selecção de língua mudamos toda a cultura do Google Chrome.
7. Limpeza de dados de navegação faseada
Nos browsers mais conhecidos a limpeza de ficheiros é feita a todos os ficheiros. O Google Chrome permite limpar os ficheiros só do dia, da semana, do mês ou simplesmente todos.
6. Miniaturas dos sites mais visitados
A pagina principal do Chrome disponibiliza Miniaturas (Tumbnails) dos sites mais visitados.
5. Navegação Incógnita sem vestígios
Esta funcionalidade permite a navegação sem deixar nenhum vestígio em lado nenhum
4. Consola de JavaScript
A consola de Java Script permite averiguar e colocar javascript "on the fly" sobre a pagina, bem como conhecer todos os estilos de CSS e suas hierarquias no site.
3. Debug de JavaScript
Ao seleccionar esta opção o Chrome abre uma janela que inspecciona todo os scripts JavaScript que corre na pagina, e podemos validar expressões, marcar breakpoints, etc.
2. Gestor de Tarefas Incorporado
O Chrome trata cada Janela como um Processo do browser e podemos "matar" as janelas, sem ter que fechar o browser por completo.
1. Pesquisa dinâmica
Ao digitar qualquer coisa na barra de endereço o Google Chrome faz uma pesquisa do que digitamos pelo GMail, Google, etc. e oferece algumas sugestões daquilo que queremos efectivamente.
Wednesday, September 03, 2008
#
O novo browser da Google o Chrome ja saiu. Pode fazer o download
aqui.
Aqui estão as suas funcionalidades.
Monday, September 01, 2008
#
Para um programador por vezes o seu ambiente integrado de desenvolvimento (
integrated development environment(IDE)) é insuficiente para dar resposta às suas necessidades de programação, aqui ficam algumas sugestões para tornar o desenvolvimento mais eficaz.
10.
Reflector Para quem desenvolve aplicações sobre a arquitectura .net, necessita de saber como ela é por dentro. Esta aplicação consegue reverter do common language runtime (CLR) para as linguagens suportadas pela arquitectura .net (c#, vb.net, etc), o que possibilita visualizar como os métodos e propriedades da arquitectura foram desenvolvidas.
9.
Sysinternals São um conjunto de utilitários que tem a finalidade de ajudar a gerir, manter e diagnosticar o sistema Windows e as aplicações. Dos vários utilitários destaco o
Process Explorer e o
PsTools.
8.
ReSharperAdd-in para o Visual Studio que permite corrigir erros de código, gerar código, remover código redundante à medida que escrevemos o próprio código, esta ferramenta possui um motor de analise de código que permite também efectuar pesquisas dinâmicas em forma de cobertura de código (
code coverage).
7.
CodeRush O refactoring é uma técnica utilizada por alguns IDE que permite se sejam renomeadas variáveis, em todas as suas ocorrências e que sejam gerados métodos de uma forma dinâmica. O CodeRush permite que seja feito o refactoring de uma forma simples e visualmente intuitiva.
6.
CodeSmith Um programador ao criar varias vezes o mesmo código para contextos aplicacionais diferentes é uma coisa banal e enfadonha. O CodeSmith permite criar templates de código e gerar código de uma forma rápida. Existem ja alguns templates conhecidos, tais como o
.netTiers,
CSLA,
NHibernate,
PLINQO,
Wilson's ORMapper,
APOSA que dão a possibilidade de desenvolver aplicações de uma forma ágil e que obedece a vários padrões de desenvolvimento.
5.
Firebug (FireFox) e
IE Developer Toolbar (Internet Explorer)
Em Aplicações web estas ferramentas são fundamentais no desenvolvimento nesse tipo de aplicações, pois permitem visualizar ao pormenor das tags de HTML quais os estilos que lhe são afectados, os tempos de download de uma pagina e no caso do Firebug é possível fazer debug ao javascript da pagina.
4.
Fiddler Nas comunicações entre um cliente e o servidor, é importante diagnosticar o que passa no "fio" para poder averiguar os problemas existentes, na ligação entre o servidor e o cliente. Este software faz a descrição por cada pedido efectuado ao servidor, onde inclui os cabeçalhos do protocolo, dados transferidos e tempos de comunicação.
3.
Koders Código, código e muito, muito código.
2.
ProgrammersHeaven Não, não é um site de pronografia, é uma fonte gigantesca de utilitários, código, foruns e de recursos para todos os programadores.
1.
Google O amigo #1 de qualquer programador, para alem de levar o nosso escritório para todo lado, com a suite Google (GMail, Calendar, Documents, etc), o Google permite dar resposta aos nosso problemas aplicacionais, basta procurar.
Thursday, August 28, 2008
#
Por vezes quando surge uma message box dá jeito obter o seu texto, por exemplo quando surge uma message box com um erro que queremos procurar alguma informação sobre este na internet, para fazer isso basta:
quando surge a caixa de texto faz-se CTRL+C e em seguida no editor notepad, faz-se CTRL-V e o resultado é o seguinte.
e desta forma podemos aceder ao texto da message box.
Thursday, August 14, 2008
#
No
Technical Meeting Altior falei sobre as novidades do ASP.NET, e entre elas está os Dados Dinâmicos (Dynamic Data), os Dados Dinâmicos são úteis para a manutenção de tabelas ou para a criação de aplicações web de backoffice.
Para criar um web site de dados dinâmicos devemos fazer o seguinte:
Criamos um novo projecto do tipo "
Dynamic Data Web Application"
O Visual Studio gera um solução com um projecto web contendo os seguintes ficheiros:
A pasta "
Dynamic Data" contem os Web User Controls que vão ser utilizados para a criação do nosso web site de dados dinâmicos.
Em seguida criamos a ligação à base de dados e um contexto para ser carregado pelo modelo de dados. Esta ligação pode ser feita de duas formas, ou através de uma ligação "
LINQ to SQL Classes" ou através da novo "
ADO.NET Entity Data Model". Eu criei uma ligação "
LINQ to SQL Classes".

Arrastamos as tabelas que queremos visualizar do Server Explorer para o editor do modelo de dados.
E registamos o contexto da ligação à base de dados no ficheiro
Global.asax, o registo é feito passando o tipo do contexto e a configuração que queremos apresentar as tabelas. A configuração pode ser definida de duas formas:
- Definimos um provider de metadata e colocamos-o na propriedade MetadataProviderFactory, este método é útil para quando queremos modificar o comportamento de alguns controlos mediante alguns tipo de dados, exemplo criar intervalos de validação.
- Colocamos a propriedade ScaffoldAllTables a verdadeiro e todas as tabelas do contexto são exibidas, a falso obriga a colocar o atributo [Scaffold(true)] nas classes das tabelas que queremos exibir.
De seguida corremos a aplicação e eis o resultado:
Wednesday, July 30, 2008
#
No projecto que estou actualmente utilizo o .netTiers para gerar o código das varias camadas da aplicação. O .netTiers utiliza o motor do CodeSmith para gerar código, e a sua arquitectura foi desenvolvida sobre a Enterprise Library.
A uma semana atraz surgiu um problema com o arranque inicial da aplicação que demorava cerca de 30seg. a abrir a arrancar, depois de muito "Googlar" verifiquei que o problema devia-se à Enterprise Library não estar instalada nos servidores de staging, isto é, não basta copiar as .dll da Enterprise Library, é necessário instalar-la nos servidores onde a aplicação vai correr.
A Enterprise Library no seu arranque procura instanciar Performance Counters, e caso estes não existam na maquina onde a aplicação corre ocorrem excepções, o que geram lentidão no arranque de qualquer aplicação.
Uma das soluções (mais rápida) é instalar a Enterprise Library nos servidores de staging, a outra solução é:
- Abrir a solução da Enterprise Library no Visual Studio
- Abrir as propriedades do projecto Common
- Na pasta Configuration Properties seleccionar a opção Build
- Na propriedade Conditional Compilation remover as seguintes Constantes:
;USEWMI;USEEVENTLOG;USEPERFORMANCECOUNTER
- Recompilar a Enterprise Library e substituir as dlls
Wednesday, July 23, 2008
#
Passei hoje o exame de MCPD para aplicações Web com resultado de 975
Thursday, June 26, 2008
#
Como sou utilizador do GMail, andava a muito à procura de uma solução para colocar imagens directamente no mail, e hoje um colega meu deu-me essa solução muito simples e eficaz, que quero partilhar convosco.
- Abram o Google Docs, criem um novo documento
- Componham o texto com uma ou mais imagens, seleccionem o texto e façam Copy
- Componham um novo mail no GMail e façam Paste para o mail
simples não ;)
Friday, June 20, 2008
#
O Scott Hanselman desenvolveu uma aplicação chamada BabySmash, e ontem experimentei com o meu filho de 2 anos que riu até mais não. Para passarem um bom bocado com os vossos filhos aconselho vivamente.