Postagens

Mostrando postagens de 2010

Instalando Windows 7 – problema de HD / partição

Tenho um computador com 2 HD, e que estavam sendo utilizados da seguinte forma: HD1: Drive C:\ – Windows Vista Drive D:\ – Arquivos HD2: Drive F:\ – Arquivos Decidi instalar o Windows 7 nele. Fiz meus backups, coloquei o DVD do Win7 na máquina e dei boot. Na hora de escolher a partição, formatei a partição que estava instalado o Windows Vista e a informei para utilizada. Foi quando o setup do Win7 começou a reclamar de “Setup was unable to create a new system partition or locate an existing system partition”… Que diabos era isso, o Vista estava funcinando ok nesta partição há uns 3 ou 4 anos… Busquei na internet (sorte que eu estava com um netbook ao lado), e encontrei a solução: desliguei o segundo HD, aquele que tinha a partição F:\. Com isso, consegui escolher a partição para efetuar a instalação. Achei a solução estranha, mas o importante é que está funcionando… Obs. Essa solução eu encontrei na seguinte thread de fórum: http://arstec

O pior é impossível? – parte 3

Imagem
Desta vez vamos deixar a seção de “Pérolas do Desenvolvimento” mais voltada para a especificação. Na UML, um diagrama de sequência é a representação gráfica da troca de mensagens entre objetos, mostrando essa interação durante o tempo de execução da funcionalidade. O que agrega neste diagrama é saber a sequência de acontecimentos, para podermos programar corretamente o comportamento esperado do sistema. Só que pra isso precisamos de mais detalhes…vejam o diagrama abaixo. O que ele agrega para nós? Nada, é a mesma coisa que falar “usuário usa o sistema”. Não dá detalhes de quais objetos estão envolvidos na funcionalidade (generalizou-se o objeto “Aplicação” como todos os objetos internos do sistema). Documentação boa é documentação que tráz valor ao desenvolvimento. Se não trouxer, só serve pra engordar o orçamento do projeto. Obs. Não coloquei aqui, mas tem também o fluxo alternativo dessa funcionalidade…, que é igual ao fluxo básico… []’s

Obras Completas de Carl Barks

Imagem
Finalmente, após alguns anos colecionando e gastos “caros” no Mercado Livre, consegui completar minha coleção das Obras Completas de Carl Barks. Carl Barks foi o criador de vários personagens da Disney, entre eles o Pato Donald e o Tio Patinhas. Ele foi fonte de inspiração não apenas para pessoas que trabalham com quadrinhos mas também outros artistas. Um exemplo é Steven Spielberg. A cena inicial de Indiana Jones, onde ele é perseguido por uma rocha rolante, é baseada na história “As Cidades do Ouro”, de 1954.

O pior é impossível? – parte 2

Imagem
Continuando a série de “pérolas do desenvolvimento”, temos esta chamada a um web service. Veja que forma inovadora de efetuar a chamada: através de um post http! Não há mais necessidade de se criar proxies! E o pior de tudo, isso funciona! Obs. Este método retorna um XML. Veja que é feito um tratamento no retorno obtido, para modificar HTML para que esteja num formato correto. Vários replaces…

Composite e Chain of Responsibility

Imagem
Pessoal, saiu outro artigo meu na .NET Magazine 76 , ainda a respeito de design patterns: nesta edição, eu abordo os padrões Composite e Chain of Responsibility. []’s

MVP – Passive View

Imagem
O MVP é um padrão para a construção de aplicações que interagem com o usuários (User Interface) que tem dois objetivos principais: Separar as responsabilidades na camada de apresentação, ou seja, o que é da tela e o que é da lógica de negócio do aplicativo. Facilitar os testes,  permitindo que os mesmos sejam automatizados. O pattern MVP pode ser separado em duas categorias: Passive View e Supervising Controller . A diferença entre os dois é o grau de testabilidade que cada um provê. Hoje iremos ver alguns detalhes da primeira categoria, com foco na questão de separação de responsabilidades. A idéia aqui é separarmos o que o que é da apresentação e o que é da lógica de acesso aos objetos do domínio de negócios. O diagrama acima mostra como temos essa separação entre as classes que compõe a estrutura básica do MVP Passive View. Do lado da camada de apresentação, temos a classe View, que no final das contas será uma tela WPF ou uma página ASP.NET. Do lad

Abusos dos design patterns

Recentemente recebi de um colega de trabalho um link de um artigo escrito por Rockford Lhotka, criador do framework de desenvolvimento de aplicações CSLA .NET . Neste arquivo, ele comenta sobre o mau uso dos design patterns nas aplicações. Ele condena o uso de padrões sem critério algum, ou seja, quando se faz o uso deles apenas por se “achar bonito”, sem se preocupar em realmente identificar um problema a ser resolvido. Isso acontece muito, principalmente quando se lança uma tecnologia nova ou um pattern se torna popular. Temos a tendência de nos “regogizarmos mentalmente” quando fazemos algo complexo. Em resumo, o artigo cita que se deve: Utilizar patterns quando se tem um problema a resolver e o padrão se aplica. Utilizar o padrão quando suas qualidades superarem suas desvantagens (sim, nenhum pattern é perfeito, todos têm seu lado ruim). Combinar padrões simples para enfrentar problemas complexos. Quando usado um padrão, ter certe

Windows Image Acquisition

Imagem
Windows Image Acquisition (WIA) é uma API da Microsoft para manipulação de dispositivos como câmeras e scanners. Tive o interesse em pesquisar esta API para a criação de um windows service em .NET que fique tirando fotos de tempos em tempos de quem está usando o computador e mandando para um site ou e-mail. Isso é bem útil no caso de roubo de notebooks…, pelo menos se pode ter a foto do maldito ladrão! O que vou colocar aqui é um exemplo de código que faz a captura de uma imagem. Uma coisa bem simples, mas que deu um pouco de trabalho até entender legal como é que funciona essa API. Antes de começar, é necessário dizer que esta API não funciona com todos os dispositivos. Bom, basicamente e teoricamente irá funcionar com dispositivos que estejam listados em Painel de Controle –> Scanners e câmeras. Por causa disso, esse exemplo que vou passar não funcionou no meu desktop, que possui uma webcam da marca Bright . No entanto, funciona no meu netbook, que possui uma webcam embutida (Acer

O pior é impossível?

Imagem
Sabemos que hoje a TI é uma das áreas que tem a melhor relação entre salário e tempo de aprendizado / experiência. O que quero dizer é que hoje uma pessoa que tem um mínimo necessário de instrução já consegue trabalhar recebendo um salário razoável. Isso, entre outras coisas, causado pela falta de regulamentação que temos na nossa categoria. Com isso, várias pessoas que ainda não estão preparadas são atraídas para este ramo, e isso só traz desvantagens, como sistemas mal projetados e codificados. Isso se traduz em dores de cabeça para os demais analistas e programadores. Dou como exemplo a imagem abaixo, que foi tirada da vida real. Vamos entender o problema que há nesse código. Temos uma classe X (retirei os nomes e namespaces para evitar que a pessoa fique chateada), que será exposta em um serviço WCF. Podemos perceber isso pois ela é decorada com (ambos!) os atributos Serializable e DataContract. Ou seja, instâncias dessa classe serão trafegadas pela rede, seja através de TCP,

O que são design patterns?

Imagem
Design patterns não têm segredos: tratam-se de soluções bem experimentadas e documentadas para problemas comuns. São as boas soluções para problemas que sempre enfrentamos. E esse conceito não está relacionado apenas à TI (aliás, nem começou na TI, começou na engenharia). Se observarmos, até na natureza existem tais conceitos de patterns. Tomemos como exemplo o vôo das aves. Existe um problema que é o desgaste que uma ave tem ao voar longas distâncias, geralmente em rotas migratórias. Para resolver esse problema, os pássaros voam em grupos, em uma formação “V”: dessa forma, as aves que estão atrás da primeira se aproveitam do vácuo gerado pelo vôo da líder, diminuindo o atrito com o ar e conseqüentemente diminuindo a energia gasta por elas. Quando o primeiro pássaro se cansa, ele vai para o final do grupo, e é substituído. Com isso, o grupo consegue uma autonomia de vôo em média 70% melhor do que se estivessem sozinhos. Este padrão de vôo é utilizado por aeronaves militares e também

Backup de webmail

Imagem
Preocupado com a possibilidade de perder as mensagens armazenadas no webmail que uso (Yahoo!), decidi fazer um backup dos meus e-mails. No entanto, o próprio webmail não dá uma funcionalidade desse tipo (fazer o download das mensagens em algum formato que possa ser lido em qualquer programa de e-mail como o Outlook). Com isso, houve a necessidade de fazer uma “gambiarra”. Decidi instalar o Mozilla Thunderbird pra baixar todas as minhas mensagens da caixa de entrada através de POP3 (felizmente o Yahoo! dá suporte para isso). Dessa forma, eu baixei todas as minhas mensagens (pra ser sincero, ainda estou baixando, pois é um processo demorado já que o POP3 só baixa o que está na caixa de entrada, e para fazer o backup das mensagens enviadas, por exemplo, estou tendo que movê-las da pasta Enviadas para a Entrada). Bom, até aí é a metade da solução. Falta exportar essas mensagens em disco, para poder guardar em um DVD de backup. Eu até poderia, mas não quero guardar os arquivos de ar

Strategy + Flyweight

Imagem
Pessoal, escrevi um artigo sobre design patterns na edição 72 da .NET Magazine . Ele foca em cima dos padrões Strategy e Flyweight . A idéia foi dar um conceito geral sobre esses padrões, e depois criar uma aplicação onde se faça uso deles ao mesmo tempo. Isso surgiu da questão onde eu achava na Internet apenas exemplos isolados de uso de patterns, quase impossível encontrar coisas onde o uso era combinado. Espero que gostem! []’s

Dicas para manter a vida útil de uma bateria de notebook

Obs. As dicas se referem à uma bateria de lítio! A pior situação possível para a bateria é usá-la com o notebook na tomada: sempre remova a bateria nestas situações, pois senão a bateria ficará sempre em um estado de carregar e descarregar. Neste caso, mantenha a bateria fora do notebook com uns 40% da sua carga (lembre-se de usar o notebook ligado em um estabilizador ou no-break). Não as deixe fora do notebook totalmente descarregadas. Reduza o calor que cerca a bateria. Calor aumenta a taxa na qual a bateria envelhece, resultando em perda do tempo de vida. Em casa, isso significa manter o notebook longe de carpete ou qualquer outro isolante que faça com que a temperatura do laptop aumente. Não fique descarregando totalmente e carregando totalmente a bateria, isso diminui seu tempo de vida. Às vezes a bateria precisa ser descarregada e recarregada por completo. Enquanto isto é mau quando feito constantemente, fazê-lo a cada 3 ou 4 semanas mantém a precisão do medidor da bate

Obtendo usuários de grupo AD

Abaixo está um simples código para se obter os usuários que pertencem a determinado grupo de AD. Este snippet percorre recursivamente o AD, preenchendo um arraylist com os usuários nele presentes. É uma Console Application, e recebe como parâmetros o nome do grupo (ex.: Grp-Desenvolvedores ) e o LDAP (ex.: LDAP://DC=dominio,DC=com,DC=br ) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Collections; using System.DirectoryServices; using System.IO; namespace ADUsersFromGroup { class Program { static ArrayList _userNames = new ArrayList(); static ArrayList _groupNames = new ArrayList(); static void Main(string[] args) { Console.WriteLine("Informe o nome do grupo AD e pressione ENTER: "); string group = Console.ReadLine(); string ldap = Console.ReadLine(); ArrayList list = GetADGroupUsers(group, ldap); usi

Problema: Instalando Office 2007 em um netbook

Imagem
Ganhei um netbook (Acer Aspire One D250) no Natal. Decidi instalar o Windows XP nele para ir usando, enquanto eu não pego um Windows 7 (32 bits, por sinal, pois esse modelo de netbook só suporta esta arquitetura). Após instalar o Windows XP, através do USB (utilizei o aplicativo WinToFlash para copiar o setup de instalação do CD para o pen drive), precisei instalar o Office 2007. Durante a instalação do Office, ocorreu um problema e não consegui terminá-la. O erro está na imagem abaixo: O setup reclamou que não conseguiu atualizar uma dll chamada fp4autl.dll que fica em c:\arquivos de programas\arquivos comuns\microsoft shared\web server extensions\40\bin\. Fui neste diretório e esta dll não existia. Procurando na Internet, encontrei um caso similar . Parece que este problema ocorre pelo fato de ter instalado o sistema operacional no netbook pela USB (talvez a aplicação que move o setup para o pen drive tenha feito alguma alteração…). Bom, para resolver basta copiar a dl