quinta-feira, 14 de julho de 2011

Reporting Services - Artigos Publicados na Revista Codificando.NET

Segue link das seis edições da revista Codificando .Net com meus artigos sobre  Reporting Services.
Trata-se de um tutorial bem bacana sobre essa poderosa ferramenta, de sua arquitetura à codificação de relatórios.

http://www.codificandomagazine.com.br/revista/post/Edicao-11---N11.aspx
http://www.codificandomagazine.com.br/revista/post/Edicao-12---N12.aspx
http://www.codificandomagazine.com.br/revista/post/Edicao-13.aspx
http://www.codificandomagazine.com.br/revista/post/Edicao-14.aspx
http://www.codificandomagazine.com.br/revista/post/Edicao-15.aspx
http://www.codificandomagazine.com.br/revista/post/Edicao-16.aspx

Nota 1: Os artigos foram escritos e exemplificados na versão 2005 do Reporting Services, mas são perfeitamente aplicáveis para a versão 2008.

Nota 2: Se preferir os arquivos referentes as revistas estão em meu google docs disponíveis em :
http://bit.ly/p25IVH


Enjoy them..
Caio Azevedo

terça-feira, 12 de julho de 2011

Caverna do Dragão = Escritório de TI




Escritório = Caverna do Dragão: Quem trabalha em São Paulo sabe disso. O escritório geralmente fica num lugar longe pra caramba, cheio de perigos para chegar (Marginal Tietê, enchente, trânsito), onde você nunca sabe como chegou e tem que penar para sair.
Na verdade quando você entrou nele parecia um parque de diversão, mas na verdade é o lugar onde você vai passar por todo tipo de
perrengue antes de voltar pra casa!

Gerente de TI = Mestre dos Magos: Responsável por te colocar nas maiores enrascadas, sempre aparece do nada,
pergunta umas paradas nada a ver, não tem reposta para nenhuma de suas perguntas, nunca ajuda e por ele você não sai nunca da
Caverna do Dragão. Dizem que ele tem um poder e conhecimento ilimitado, mas você nunca vai ver em utilização. Se é que é verdade mesmo…
Suporte Técnico = Uni: Só faz volume no grupo, não tem nenhuma habilidade especial, não sabe falar (nem escrever),
precisa ser salva a toda hora colocando a equipe toda em perigo. Na verdade ninguém sabe porque ela está na party, e sempre tem um
que quer se sacrificar para ajudá-la. E no final, a party nunca vai embora sem a Uni!
Gerência de Projeto (PMO) Vingador: Como se não bastasse o Mestre dos Magos para encher o saco, o
Vingador (que não tem nada a ver com você ou com seus problemas) vem toda hora te torrar a paciência, aumentando suas tarefas (ou enrascadas)
e tentando te aterrorizar com prazos e atividades que você não pode cumprir. Na verdade a função principal dele ninguém sabe direito,
mas é um dos seres mais temidos da Caverna do Dragão, que sempre aparece na hora errada e quando aparece você sabe que vem encrenca…
Equipe de Manutenção = Eric, Diana e Presto: Tem um que sempre quer se defender de
tudo quanto é bucha (com o escudo) e está sempre reclamando por isso, outro que é obrigado a fazer mágica para cumprir a demanda
(com o chapéu), e no final todo mundo acaba tendo que pular todos os processos (com o bastão) para o sistema voltar a funcionar….
Equipe Desenvolvimento = Hank, Sheila e Bobby: Sempre precisa conseguir fazer qualquer
coisa (arma, defesa, corda, rede, programa em três camadas) com apenas um arco e flecha e tem sempre um novato que vem e acaba quebrando
tudo o que funcionava perfeitamente (com o tacape). E a Sheila? Digamos que sempre tem um que desaparece quando mais se precisa…
Cliente = Tiamat: No fundo, só quer ter um pouco de sossego. É gigante e
poderoso. A Uni (suporte) acha que ele vai  comê-la, por isso se caga de medo e perde a voz perto dele, o Vingador (PMO) que se acha o
maioral, também treme na base e acaba cedendo a tudo o que ele pede, o Mestre dos Magos (Gerente) não ajuda em nada mesmo, só fica
perguntando coisas sem sentido e some quando se precisa dele, e sempre sobra para a party (Manutenção e Desenvolvimento) se ferra para
vencê-lo a qualquer custo… E depois, com todo mundo cansado e sem paciência, o Mestre dos Magos e o Vingador voltam para trazer mais um
desafio antes de te deixar voltar para casa…

quarta-feira, 6 de julho de 2011

Cuidados ao selecionar as tecnologias de suas aplicações


Em minhas recentes atividades como arquiteto de soluções Microsoft, deparei em alguns clientes com uma situação no mínimo inusitada. Todos tinham como meta construir suas aplicações seguindo as tecnologias do momento – Multicamadas, Web Services, Orientação a Objetos, etc. E eis que, como tantos outros, insidiam nos mesmos erros – talvez por falta de experiência, maturidade ou mesmo conhecimento, o certo é que, tentar de qualquer forma e a qualquer custo inserir todas, ou pelo menos boa parte dessas tecnologias em seus modelos de aplicação, é uma prática cada vez mais comum no ambiente corporativo, e as consequências podem ser desastrosas, pondo em risco todo o projeto.  E ai já vi diversas situações, do uso excessivo e indiscriminado de uma tecnologia, à ilusão de se estar utilizado uma delas, a saber – Web Services e Orientação a Objetos respectivamente.
Problemas com modelos de aplicações não são novidades, desde os tempos da fórmula IIS * COM+ * SQL Server, a conhecida arquitetura Windows DNA – deparavamos com alguns cenários realmente assustadores, onde na maioria das vezes o grande problema era a utilização do mais velho ainda, paradigma Cliente – Servidor. A seguir temos alguns cenários que certamente estavam fadados ao fracasso:
01. Acesso aos dados [via ADO] diretamente nas páginas, e para piorar, sem preocupação com as propriedades de otimização dos objetos Connection, RecordSet e Command, transformando uma aplicação Web em um típico cliente / servidor com os cursores no servidor [um desastre total];
02. Sub utilização de componentes [Visual Basic 6.0], uma vez que nenhuma das features do COM+ [Pool de Ativação, Controle de Transações, Segurança, etc] eram utilizadas, lhes restando somente a tarefa de executar stored procedures, caracterizando mais um caso de desuso de tecnologia, ou pior a ilusão de um ambiente em 3 camadas, já que as regras de negócio, ou ao menos parte delas, estão em sua implementação.
Consequências
Não dá outra, clientes vendo seu investimento [tempo e dinheiro] indo para o espaço, todo seu planejamento comprometido porque “o sistema não funciona”, um verdadeiro fracasso. Tecnicamente temos alguns sintomas: (para os ambientes descritos)
- Sobrecarga de processamento – ora no IIS [via dllhost.exe], ora no COM+ [com altíssimos tempos de ativação dos componentes]
- Constantes “travamentos” da aplicação, e não menos comum de todas as demais aplicações do servidor.
- Conseqüentemente surge, como já cansei de ouvir – “soluções baseadas em COM+ não funcionam.
No “admirável mundo novo” do ambiente Microsoft .net, as aplicações podem ser modeladas das mais variadas maneiras, bem mais que no mundo DNA [o que sendo bem pessimista, só aumenta as chances de erros], sendo assim, uma boa dica para iniciar a modelagem de uma aplicação .net, seria delimitar todo o cenário, seus pré-requisitos técnico-operacionais, funcionalidades, infra-estrutura do ambiente de produção, políticas de contingência, dentre outras variáveis que certamente induzirão arquitetos, analistas, desenvolvedores, DBAs e a equipe de infra a cometerem erros que podem comprometer todo projeto, a seguir temos alguns casos, facilmente encontrados em qualquer ambiente corporativo.
Como já dissemos um erro comum no desenvolvimento de aplicações, é a ilusão de se utilizar uma tecnologia/paradigma quando na verdade se está bem longe disso. Já demonstramos um caso quando falamos do mundo DNA 3-tiers, quando apesar dos recursos, a equipe responsável continuava com o paradigma Cliente x Servidor 2-tiers. Nos dias de hoje, o que vemos são aplicações, ditas orientada a objetos com multicamadas, onde não temos qualquer construção com herança de objetos [por exemplo, na implementação de classes proprietárias para repositório de dados - pessoa, cliente, usuário] – um desperdício dos recursos e funcionalidades que a OO disponibiliza. Dentro desse cenário ainda encontramos uma “camada de apresentação” implementada de tal forma que detalhes do banco de dados [string de conexão, nome de tabelas, atributos, etc] precisam ser conhecidas. Ora, uma aplicação multicamadas tem, dentre seus atrativos, prover um considerável nível de abstração entre as camadas o que não é o caso. Assim, em um cenário com esses “detalhes de construção”, a aplicação aparentemente OO x Multicamadas, só não pode ser considerada Estruturada, pois a ferramenta de desenvolvimento não permite [qualquer assembly .net precisa de pelo menos uma classe].
Dentre as questões estruturais do desenvolvimento de softwares no nível arquitetural destacamos a escalabilidade [geralmente relacionada ao desempenho] – podendo ser do tipo horizontal ou vertical, e que varia basicamente em função do parque tecnológico disponível e das perspectivas de demanda para a aplicação. Imaginemos uma situação onde, a infra é definida com um pool de 4, 5 servidores potentes, configurados para implementar um Web Farm. Para que modelar uma solução distribuída, com Web Services, “desperdiçando” um ou vários desses servidores para “camada de regras de negócio”, sob o argumento que estamos diante de uma aplicação n-camadas ? Pois bem, estamos diante de um problema conceitual [sendo bem eufemista] – Aplicações multicamadas, não implicam necessariamente em aplicações distribuídas. Para piorar a situação desse cenário, a comunicação entre as “camadas” é feita com Web Services, um exemplo típico de modismo. Uma modelagem nessa forma tem um custo absurdo e não justificável.
A seguir tomaremos esse caso como exemplo, de qualquer forma, não seria mais interessante deixar todos os componentes de regras de negócio no modelo de deploy padrão .net, “folder” bin], assim faríamos melhor uso do ambiente descrito.
Para exemplicar essa terrível tendência, lançarei mão dos Web Services, uma poderosa tecnologia – eu diria que uma das mais importantes desde o advento da internet, no entanto seu uso sem critérios pode ser catastrófico [como no cenário acima]. Os Web Services, como toda grande idéia, prima pela simplicidade, permitindo que funcionalidades, até então restritas a um ambiente fechado [uma intranet por exemplo], estejam acessíveis para todos, em qualquer lugar, por diversos dispositivos e independente das plataformas envolvidas, sendo assim, se você resolver utilizá-los no seu modelo de aplicação antes de mais nada procure dentre esses três itens, uma justificativa para tal. Como nem tudo são flores, os Web Services tem seu custo, para realizar suas proezas ele se basea em três pilares – Serialização, XML e HTTP, o resto são conceitos e siglas, no fundo os Web Services são objetos serializados [Estruturas, DataSets, Arrays, Classes, etc], transmitidos entre as partes [através o já conhecido protocolo HTTP, livre dos firewalls], em um formato de dados que já se tornou padrão e amplamente difundido [viva o XML] e os custos ??? simples, o processo de serializar/deserializar tem seus custos de processamento [o menor de todos é bem verdade], a transmissão dos dados serializados via HTTP fatalmente acarreta um custo elevado, por concorrer com as requisições dos usuário POST/GET de páginas HTML e ASPX e principalmente pelo formato dos dados, XML, que contém um conjunto de metadados para compor as mensagens, tornando-as ainda maiores.
Sendo assim, aquele cenário “distribuído”, tendo Web Services como meio de comunicação está deveras comprometido. Uma alternativa para esse ambiente, distribuído e sobretudo interno, seria o uso de Remoting uma tecnologia, que atende a demanda [se considerarmos, a real necessidade de um ambiente distribuído], sem os custos dos web services. Essa proeza é possível pela substituição de tecnologia nos três pilares do Web Service:
- Serialização – No Remoting, em sua melhor configuração para performance, a serialização binária, ao invés da XML é a mais indicada, tornando os dados trafegados significativamente menores. [o remoting também suporta serialização XML]
- HTTP – Aqui substituímos o protocolo de transporte para TCP, em uma porta específica, o que por definição é mais eficaz que o HTTP, além de evitar a concorrência com as aplicações e suas páginas estáticas e dinâmicas.
Ao executarmos os dois cenários, percebemos através dos contadores utilizados, um sensível ganho de performance na versão Remoting, no entanto em um cenário real, onde nosso web service concorre com as demais aplicações web e sobretudo, onde o processamento do componente de negócio é considerável, essa diferença tende a aumentar, e outra, para que utilizar uma tecnologia, se temos alternativas mais elegante e performática ?? – modismo, hábito, facilidade na implementação ?, são nesses “detalhes” que distinguimos bons e maus projetos de software.
Pessoal, de maneira alguma sou contra o uso de Web Services, mas sua utilização em um ambiente intra-domínio, com dois ou mais servidores, trocando todo e qualquer tipo de mensagem – operações DML, pesquisas ao banco de dados para carregar controles, instância dos componentes de regras de negócio, entre outras, definitivamente não será bem sucedida quando a demanda atingir um patamar considerável.
Bom pessoal, eis um exemplo dentre tantos outros que encontramos em qualquer ambiente corporativo, muito cuidado com os modelos de aplicação utilizados em seus projetos, façamos uma reflexão no que já temos implementado, como poderíamos modificar, detectando pontos críticos e sugerindo mudanças em próximos projetos, o que não se podemos admitir é a incidência de erros dessa natureza passivamente.
Nota: Se alguém estiver interesado nos códigos utilizados na demonstração, sinta-se a vontade para entrar em contato.



Nota 2: Esse artigo foi originalmente publicado no site TIEspecialistas do qual sou colunista. 
Ver: http://www.tiespecialistas.com.br/2011/06/cuidados-ao-selecionar-as-tecnologias-de-suas-aplicacoes/

quarta-feira, 15 de junho de 2011

Citações

"A Utopia está lá no horizonte.

Me aproximo dois passos, ela se afasta dois passos.

Caminho dez passos e o horizonte corre dez passos.

Por mais que eu caminhe, jamais alcançarei.

Para que serve a Utopia?
Serve para isso: para que eu não deixe de caminhar".

(Eduardo Galeano)

"A Imaginação é mais importante que o conhecimento"

(Albert Einstein)

"A mentira é uma verdade que se esqueceu de acontecer"

(Mario Quintana)

"A inovação ocorre quando sementes maduras caem em solo fértil"
           (Walter Isaacson - em Os Inovadores)

sexta-feira, 3 de junho de 2011

Configurar HOTMAIL para Outlook 2007

Parece piada, mas ralei um bocado para achar as informações necessárias para configurar minha conta hotmail no Outlook 2007 até que finalmente achei todas as informações necessárias que compilo aqui...
Abra o Outlook 2007 e em ferramentas, Clique em configurações de conta, na próxima janela e-mail clique em novo, na próxima aba marque (Microsoft Exchange, POP3,IMAP ou HTTP) e clique em avançar.
Próxima aba preencha com os dados (e-mail e senha) após preencher marque a opção (Definir manualmente as configuracoes do servidor ou tipo de servidores Adicionais) e clique em avançar.
Em informações de usuário:
  1. Preencha com nome (teste)
  2. e-mail (teste@hotmail.com)
Informações do servidor:
  1. Tipo de conta deixe (POP3)
  2. Servidor de entrada de e-mail Coloque (pop3.live.com)
  3. Servidor de saida de e-mail (smtp) Coloque (smtp.live.com)
Informacoes de logon:

  1. Nome de usuário (teste@hotmail.com)
  2. Senha (senha do e-mail)
Clique agora em (Mais configurações)
  1. (Em conta de e-mail) coloque seu nome de apresentação
  2. (Em organização) coloque qualquer nome,
  3. (Em e-mail de resposta) coloque seu e-mail do Hotmail,
Clique na aba (servidor de saída)
  1. Marque a opção
(Meu servidor de saída (SMTP) requer autenticação)
na aba avançado marque a opção (este servidor requer uma conexão criptografada(SSL), na opção usar o sequinte tipo de conexão criptografado deixe em (Automatico)


É isso ai, espero que isso sirva para facilitar sua vida. E conheçam smartBuy - sua compra consciente.
Caio Azevedo

sábado, 16 de abril de 2011

AeroLixo de São Luis - MA

Sinto-me muito a vontade para falar sobre isso por ser um ludovicense que viveu até os 23 anos na capital maranhense.
Moro ha pouco mais de 10 anos em São Paulo capital e nesses dias de debates absurdos sobre copa do mundo no BraZil e "problemas" com os aeroportos nas cidades sede, eis que volto à minha cidade natal para visitar minha sobrinha recém nascida e deparo com um aeroporto que prefiro chamar de aeroLixo. Isso mesmo amigos o aerolixo da terra do Sarney é uma vergonha nacional. Desembarquei durante a madrugada e eis que deparo com o fato de ter que andar da aeronave até a "área de desembarque" onde um pobre funcionário jogava as bagagens dos passageiros literalmente no grito, a "esteira das bagagens" é uma mesa coberta com uma lona imunda, o saguão de espera são tendas e banheiros químicos nojentos são usados pelos pobres coitados que aguardam seus amigos e entes queridos - o que inclui meus queridos pais.
Alguns dias depois, ao retornar deparo com uma área de embarque igualmente devastada, pobre das funcionárias, cujas expressões de desanimo resume tudo. Resumidamente trata-se de um mal cuidado galpão em condições precárias, o teto não demonstra qualquer segurança enfim, uma vergonha.
Não sei exatamente o que aconteceu, mas o que apurei com meus pais é que o saguão simplesmente desabou por falta de manutenção – desse que até onde eu saiba é um aeroporto internacional, enfim.
O certo é que essas foram as únicas fotos que fiz de uma cidade que um dia foi linda e um ponto turístico importante do nosso país, até porque nem isso ela é mais.
Segue link com as fotos que fiz e sintam-se a vontade para publicá-las, divulgá-las em vim, como diz o Marcelo D2 vamos fazer barulho.
Abraço..
Caio Azevedo

quinta-feira, 20 de janeiro de 2011

Solving VS2008 record bar issue during stress test application

Hi everyone,

While I was trying to perform stress test into a web application with Visual Studio 2008, I faced an issue, whereby, the recorder bar does not appear when recording a new website.

My environment:
..:: VSTS 2008 : Win7 (64 bit) [I believe, Windows Vista, has the same problem] ::..

Fix:
..:: Win7 caches the list of explorer bars you have available and the recorder bar was not included in your list. ::..

The Solution:
Force Windows to rebuild that cache.
To do this, first make sure you have all Internet Explorer instances shut down,
then open the 32 bit registry editor and delete the following keys:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component Categories\{00021493-0000-0000-C000-000000000046}
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component Categories\{00021494-0000-0000-C000-000000000046}

The next time you boot Internet Explorer, your explorer bar cache will be rebuilt and the recorder bar should be available.

That's all folks..

Any commments, mail me at cazevedo@hotmail.com
see you next tip...

terça-feira, 4 de janeiro de 2011

O cavaleiro das trevas - frases

Esse 'feriadão' resolvi rever o Cavaleiro das Trevas pela n-éssima vez, além de ler A Piada Mortal, então resolvi coletar algumas frases do personagem principal das melhores fases do Batman.

I believe whatever doesn’t kill you simply makes you stranger.

Why so serious?

A little fight in you. I like that.

You let me know when you start taking things a bit more seriously.

Introduce a little anarchy!

This is what happens when an unstoppable force meets an immovable object.

I don’t wanna kill you. You complete me.

And I thought my jokes were bad…

I am an agent of chaos.

Madness is like gravity. All it takes is a little push.

Do I look like someone who has a plan?

The only sensible way to live in this world is without rules!

I’m not a monster. I’m just ahead of the curve.

I’m a dog chasing cars. I wouldn’t know what to do if I caught one.

If you’re good at something, never do it for free.

Alguém lembra de mais alguma ??? completa ai...