Postagens

Mostrando postagens de 2015

Programas de Aplicações, Toolkits e Frameworks

Imagem
Extraído do livro:  Padrões de Projeto - Soluções Reutilizáveis de Software Orientado a Objetos - Gof Uma breve descrição relacionada ao uso dos padrões de projeto sobre estas três categorias de sistemas. 1.0 - Programas de Aplicações Se você esta construindo um programa de aplicação tal como um editor de documentos ou uma planilha, então as prioridades mais altas são reutilizabilidade interna, facilidade de manutenção e de extensão. A reutilizabilidade interna garante que você não projete, nem implemente, mais do que necessita. Os padrões de projeto que reduzem dependências podem aumentar a reusabilidade interna. O acoplamento mais fraco aumenta a probabilidade de que uma classe de objetos possa cooperar com várias outras. Por exemplo, quando você elimina dependências de operações específicas, pelo isolamento e encapsulamento de cada operação, torna mais fácil a reutilização de uma operação em contextos diferentes. A mesma coisa também pode acontecer quando você remove depend

Desgin Patterns

Imagem
Para quem deseja ser um bom programador conhecer os Padrões de Projeto é fundamental no mundo Orientado a Objetos. Mesmo que você goste da programação funcional o mundo OO esta sempre presente. Segue um link bacana. Source Making

Um Pouco de Física....

Imagem

Modelo Arquitetural de um Projeto

Imagem
Segue um modelo de arquitetura de um projeto que estou trabalhando atualmente. Um modelo baseado em referencias legadas e o bom e velho Struts . Classes Actions (métodos) e Forms (objeto que represente os dados que transitam na tela) para tratar as perspectivas de tela junto as JSP`s e JavaScripts . Onde essas classes são configurados no struts-config.xml.

Parei, Pensei e Errei...

Me empolguei com minhas últimas idéias e acabei passando dos limites.  Fui convidado para resolver um problema daqueles onde tempo é precioso. Em outra equipe um projeto não andou após um mês de esforço e o momento de entregar para testes estava chegando. Tinha três dias e um novo amigo (Ricardo, ótimo programador) para concluir o projeto. Resolvi feliz da vida refazer uma parte do código usando reflection e criando um motor para executar de forma prática as tarefas necessárias.  Tudo maravilhoso e adiantaria bem o desenvolvimento senão fosse por alguns erros e instabilidades que gerou medo quanto ao resultado final. Resultado,  voltamos para o fonte original e mãos a obra para fazer tudo da forma mais difícil porém garantida. Trabalho ate altas horas da noite e final de semana. Se eu pensasse melhor teria notado que tempo nessa tarefa era vital. E não haveria de desprender tempo com um motor inteligente porém inviável neste momento. Pare, pense com sabedoria e então execu

Pare e Pense antes de Programar

Imagem
Um programador para ser bom precisa alem dos conhecimentos técnicos, que são indispensáveis, de uma boa dose de raciocínio lógico e ser criterioso. Observo muitos programadores que sempre têm uma fórmula para resolver os desafios propostos.  Mas que em muitos casos é uma solução ruim e dispendiosa.  No mundo da computação podem existir diversos caminhos para chegar ao mesmo resultado e escolher um caminho exige reflexão e uma boa dose de lógica. 

Vida de Programador

Imagem
Vida de programador é assim. Você vira um super pai cheio de filhos. Quem é pai sabe como funciona, não existe dia nem hora para o filho aprontar uma. Alguns são mais comportados e obedientes já outros levam consigo o espírito de revoltado e difícil de lidar. Tenho meu horário fixo de trabalho, mas preciso ficar 24 horas no ar para atender as demandas de meus filhos.  Hoje mesmo recebi mensagens via whatsapp enquanto ainda dormia. Pior ainda quando você adota o filho abandonado. Tem que aprender tudo sobre o mesmo e nem semprre tem tempo hábil para isso. É claro que se trata de uma simples comparação onde coloco sistemas como um filho. Ate ele atingir maturidade o programador passa a viver em pro de seu sistema ou sistemas. Estou virando tio de alguns sistemas.  Ai é bom, o pai esta sempre perto quando a coisa fica feia. Falando em ser tio na sexta-feira precisei ficar de baba de um sobrinho. O gestor resolveu rodar alguns cálculos retroativos que levaram um dia todo e

Deploy e café

Ontem fui questionado e "apanhei" porque a aplicação que foi para o ambiente de testes unitários não funcionava. Sou o desenvolvedor e ate então tudo estava rodando perfeitamente, quando implantaram meus fontes no novo ambiente a coisa parou de funcionar. Corri atrás do prejuízo e como não tinha nada nos logs, resolvi implementar um mecanismo de log mais rigoroso com o objetivo de entender o que estava acontecendo.  Qual o erro eu pegaria na aplicação. Solicitei novo deploy do aplicativo e voi a la... o aplicativo funcionou. Nada foi alterado senão na parte de tratamento de erros e geração de logs. Isso me levou a acreditar que fizeram zerda no deploy anterior e causou todo um stress no meu lado. Como nao sou responsável pelo processo de deploy levo bronca pelo descuido dos outros. Não gosto desta divisão de trabalho onde cada grupo isolado cuida de uma parte do mesmo sistema. Querem transformar tudo em linha de produção e não se dão conta das dificuldades reais que surgem

Algumas Considerações - Homologando Fontes

Imagem
Estou participando em um projeto de software e passei por uma  situação  que gostaria de relatar. Apos desenvolver todo o sistema e testar foi preciso padronizar os fontes conforme os  critérios  do cliente. Coisas do tipo: não existir  códigos  comentados dentro dos fontes, justificar o uso de  funções  como forClassName(), configurar o log4j devidamente para os ambientes, enfim, seguir uma especie de checklist para no final sair os fontes validos para implantar em  produção . N ã o vejo problemas quanto a  motivação  para isso, criar  códigos  mais limpo e seguro, que se aderem ao ambiente de forma  fácil . O problema é como isso foi feito, aqui vai duas  considerações .

Legados e seus desafios

Nas empresas de grande porte sempre me deparo com componentes legados. Ou seja, desenvolvido dentro da empresa.  E sempre percebo que existem soluções comerciais e algumas open source que resolvem o problema, trazendo a solução de forma mais eficiente.  Baixo custo de aprendizagem e testado em outras empresas, o que traz maturidade ao componente.  Porque empresas que não possuem expertise em TI resolvem desenvolver soluções nesta área? Fazem uma solução cheia de bugs e a equipe vai embora deixando a bomba solta na mão de quem nada tem haver com o pato.

Coração de Rato

Imagem
Conta-se uma parábola que certo dia Jesus passeava pela floresta e viu um ratinho desesperado correndo, fugindo de algo. Jesus o interpelou e perguntou por que ele corria assim desesperadamente.  O ratinho foi logo dizendo que fugia do gato, e aproveitou para fazer um pedido e disse: “Senhor, por favor, me transforme em um gato assim minha vida vai ser melhor” e a história conta que Jesus concedeu o pedido e o transformou num gato.

Java - Convenções para Nomes

Imagem
Pelas estimativas da Sun (Oracle), ao longo da vida útil de um código padrão, 20% do esforço será despendido na criação e no teste originais do código, e 80% do esforço na manutenção e nas melhorias subsequentes. Concordar com um conjunto de padrões e ajuda a diminuir o esforço envolvido na fabricação de sistemas. A Sun (Oracle) criou um conjunto de padrões de programação para Java e publicou esses padrões em um documento chamado Convenções de Código Java . Classes e Interfaces : A primeira letra maiúsculas, e depois seguir as regras do formato camelCase .

Novos Projetos e Velhos Conhecidos

Imagem
Esta semana iniciei em um novo emprego na área de desenvolvimento da InfoSERVER SA. Tudo novo, ambiente de trabalho novo, computador novo e novos amigos. o que continua o mesmo foi o cliente para quem irei prestar serviços, a mesma instituição financeira. Esta será minha quarta vez que participo de projetos para o ambiente desta instituição. Eu tento deixar este cliente, mas o raio cai sempre no mesmo lugar (risos). Agora atuando com os sistemas corporativos voltados a investimentos e derivativos. E assim vou me aperfeiçoando no assunto e ficando especialista no desenvolvimento Java para a área de finanças. Estou muito animado e entusiasmado com os novos desafios pela frente. O ambiente aqui parece bem leve e amigável, sem contar que já estou familiarizado com o cliente o que me deixa mais confiante.

LIVRO: INCRÍVEIS PASSATEMPOS DE MATEMÁTICA DE IAN STEWART

Imagem
Comprei este livro já faz alguns meses, e gostei muito, traz muita curiosidade do mundo dos números e da matemática em geral. Para os gênios da matemática, aqueles que curtem um desafio de cálculo, é uma boa pedida. O livro conta algumas história curiosa e muitos desafios e enigmas matemáticos (anagramas, quebra-cabeça, jogos, ), tem até piadas. O autor é uma espécie de colecionador de curiosidades matemáticas, em 2008 já havia lançado um livro chamado  Almanaque das Curiosidades Matemáticas . Existe enigmas que vão desde um nível mais simples, que exija pouco conhecimento, até coisas mais complexas que somente um  nerd  de plantão irá solucionar.

OOP - Interfaces

Imagem
Um poderoso companheiro da Herança  ( saiba mais... )  é o uso de Interfaces . A interface é uma espécie de superclasse 100% abstract que define os métodos que uma subclasse deve suportar, mas não como esse suporte deve ser implementado. Em outras palavras, uma interface é um tipo de contrato que diz o que deve ser implementado e codificado, como essa implementação será feita fica a cargo da subclasse.

Java - Palavras-Chave ou Reservadas

Imagem

OOP - Herança

Imagem
Fundamental para Java e linguagens Orientadas a Objetos é o conceito de herança . Por meio da herança o código definido em uma classe pode ser reutilizado em outras classes. Definição de Classes pode ser encontrada aqui. A reutilização de códigos foi um dos grandes avanços que a programação obteve em sua história, evitando redundâncias desnecessárias e contribuindo para o surgimento e amadurecimento de pacotes e APIs que tratam problemas específicos. A comunidade Open Source é um bom exemplo, onde códigos são desenvolvidos e compartilhados a todo instante. Um programador Javeiro importa ( import ) classes e codifica novas funcionalidades estendendo ( extends ) classes o tempo inteiro, tudo graças ao conceito de reutilização de códigos.

OOP - Definições de Classe

Imagem
Breve definição sobre as classes em uma Programação Orientada a Objetos ( OOP ). Arquitetura esta que consiste em modelar o mundo real através das chamadas classes. Para então transferir as entidades existentes do dia-a-dia (aluno, carro, nota fiscal, países, livros, geolocalização, etc) para o mundo da computação, podendo assim armazenar e manipular tais dados e informações para um determinado propósito final. Cada classe ira conter atributos (variáveis) e métodos (comportamento). Atributos : O que é ou representa? Estamos aqui falando de dados e informações, como uma sacola que guarda temporariamente tais dados. A união desses dados representa algo do mundo real. Ex.: Imaginando uma classe aluno, que em tempo de execução (objeto) pode representar o aluno João Silva. Métodos : O que pode fazer? Ou como se comporta? Toda a lógica do sistema com seus algoritmos que representam regras do negócio ficam nesta parte. Ex.: Imaginando a mesma classe aluno, qualquer aluno pode visual

Blocos de legos

Imagem
Texto por: Rita Soares Creio que você já deve ter brincado (ou pelo menos visto) uma vez na vida uma estrutura feita com blocos de legos. As tais peças são tão perfeitamente ajustáveis que até mesmo réplicas de prédios com alguns metros de altura podem ser feitos com elas. Mas o que acontece se a base, a primeira fileira de legos não estiver bem encaixada, ou se as peças estiverem estragadas? Será que poderia suportar fileiras e mais fileiras de blocos em cima, e ainda manter o equilíbrio e o formato idealizado por seu dono?

LIVRO: FAÇA COMO STEVE JOBS

Imagem
Quando me decidi a seguir a carreira de docência e ensinar, seja em sala de aula, no escritório, numa roda de amigos ou num auditório, eu fiz o que toda pessoa sensata faz. Corri atrás do conhecimento necessário para tornar o meu trabalho mais eficiente. Agora eu tinha que aprender a me comportar e falar em público, aprender a me expressar com desenvoltura e transmitir ideias de maneira fácil, onde os ouvintes compreendessem tudo aquilo que eu gostaria de transmitir. Um dos livros que adquiri (ganhei de presente), recomendado por um professor da pós-graduação, foi  Faça como Steve Jobs   e Realize Apresentações Incríveis em Qualquer Situação  de  Carmine Gallo  (editora Lua de Papel). Um guia muito prático, na minha opinião, para ajudar a realizar apresentações. O livro foi muito bem formatado, de maneira, que o leitor consegue acompanhar e compreender todas as dicas. Eu li este livro e amei, aprendi muito como ele.

LIVRO: A LÓGICA DO CISNE NEGRO

Imagem
Outro livro que li, esse a muito tempo atrás, se chama  A Lógica do Cisne Negro – O impacto do altamente improvável . Escrito por  Nassim Nicholas Taleb , nascido no Líbano, de uma família Greco-ortodoxa, trabalhou como operador no pregão de Chicago e em sua própria firma em Wall Street. Um especialista na área da Ciências das Incertezas. Também autor do livro  Iludido pelo Acaso,  publicado em vinte idiomas. Neste livro que fala, Taleb fala sobre o impacto dos eventos não mensurados e como tudo pode mudar de uma hora para outra, pelo simples fato de um novo acontecimento. Para os aficionados pelas estatísticas e uso das probabilidades para tirar conclusões  este livro é um tremendo tapa na cara. Deixando o leitor com uma vontade de esquecer tudo aquilo que conhece e sair por ai como um hippie.

Reflexão - 23 de Março

Ore e convide a Deus para continuar realizando Seu plano em sua vida, não importa que tipo de conflitos possam vir. Tendo por certo isto mesmo, que aquele que em vós começou a boa obra a aperfeiçoará até ao dia de Jesus Cristo; Filipenses 1:6

Inveja?

Imagem
Texto por: Rogério Marques dos Reis Depois de muito trabalhar Jacó, mesmo sendo empregado de seu sogro, ficou muito rico. A benção de Deus o acompanhava e Labão que até então se mostrava aproveitador e ganancioso, começou a ficar com muita inveja dele. Até seus primos e cunhados sentiam inveja de sua prosperidade, a ponto de Jacó temer pela sua própria vida. “ Mas, passando-se o tempo, Labão ficou invejoso da prosperidade maior de Jacó, que "cresceu" "em grande maneira, e teve muitos rebanhos, e servas, e servos, e camelos, e jumentos ". Gên. 30:43. Os filhos de Labão partilhavam da inveja do pai, e suas palavras maliciosas vieram aos ouvidos de Jacó: Ele "tem tomado tudo o que era de nosso pai, e do que era de nosso pai fez ele toda esta glória. P.e Profetas, pág.192." A inveja é um sentimento que originou-se com Lúcifer no céu e como também somos pecadores temos a mesma tendência de ser invejosos. 

Diário - sexta-feira 13

Minha esposa esta viajando, hoje é dia de aproveitar e refrescar a cabeça com um pouco de videogame. Esta terminando meu tratamento (ufa quase um ano), hoje foi dia de tirar sangue mais uma vez para exames. Hoje quero dar a baixa na minha carteira de trabalho para ficar livre para novos desafios. Na quarta-feira já havia participado de minha primeira entrevista para uma vaga de emprego na Vivere Brasil. Empresa que detém um software na área de créditos e foi comprada pela Accenture. Sendo assim um braço da Accenture. Pretendo terminar minha apresentação para explanar a lição na classe dos adolescentes da igreja que frequento. Vamos lá enfrentar este novo dia.

Motoqueiros e outras coisas

Na última sexta-feira tive a infelicidade de ao sair da garagem da casa de minha mãe me envolver em um incidente com um motoqueiro. Estava com transito, carros parados, como acontece toda tarde. E ao sair da garagem com meu carro, um motorista de uma van escolar parou dando espaço para que eu pudesse passar. Enquanto saia calmamente, eis que me aparece um motoqueiro repentinamente já caindo na minha frente. Caiu sem que eu tocasse nele, caiu de maduro. Um tombo tão bobo que parecia criança quando esta aprendendo a andar de bicicleta.

O Cisne e a Gralha

Imagem
Texto por: Heverton Cordeiro Gandra Uma antiga fábula, conhecida como " O cisne e a gralha ". Certo dia, um belo cisne pousou na praia onde uma gralha estava à procura de lesmas. Por alguns momentos, a gralha ficou parada, estupefata, contemplando o cisne, admirando a sua beleza. E em seguida, perguntou: "De onde você veio?" "Eu vim do céu!", respondeu o cisne.

Saber Esperar

Imagem

Introdução a Web Service RESTful com JAX-RS

Imagem

C - Usando atoi e gets

#include stdio.h #include stdlib.h void main() { int houses, hotels, total; char temp[4]; printf("Enter the number of houses:"); gets(temp); houses=atoi(temp); printf("Enter the number of hotels:"); gets(temp); hotels=atoi(temp); total=houses*40+hotels*115; printf("You owe the bank $%i.\n",total); } referencia - gets referencia - atoi

C - Pergunta YES ou NO

/* YORN - a program to get a yes or no answer */ #include stdio.h #include conio.h #define TRUE 1 //this is "true" in C #define FALSE !TRUE //this is "not true" void main() { char c; printf("Please answer Y for Yes or N for No:"); while(TRUE)//this means "loop forever" { c=getch(); if(c=='Y' || c=='y') break; if(c=='N' || c=='n') break; } printf("%c\n",c); }

Machine learning no mundo real

Este video da QCon aborda um assunto bem interessante e atual, relacionado: Machine learning no mundo real

Estilos Arquiteturais - Programação

Imagem

Esquema Arquitetural - J2EE

Imagem
Meu último trabalho onde pude desenvolver um portal corporativo que atendia a demanda do RH (Cadastro de Funcionários, Aniversariantes, Reserva de Salas de Reunião e Controle da Biblioteca). Utilizando IDE do RAD (eclipse by IBM), SGBD SQL Server e WebSphere . Por conta do WAS e das políticas do cliente foi necessário adaptar alguns detalhes do projeto.  Como optar por usar o Myfaces na camada de View (implementação JSF), porque o mesmo é nativo no WAS o que deu mais aderência e compatibilidade, evitando problemas futuros. Uso de uma implementação tanto do Hibernate como do JSF em versões que não eram as mais atuais. E ajustes para usar o javassist.jar (problemas nas tabelas com auto-relacionamento). Tudo decorrente das bibliotecas nativas do WAS que estavam conflitando (WAS é um servidor bem robusto, porém bastante amarrado a alguns padrões) e como não havia ninguém experiente para configurá-lo corretamente, optamos por ajustar a aplicação. Utilizar o Bootstrap por escolha d

C - Ordenar números em um Vetor

#include <stdio.h> #include <stdlib.h> #define SWAP(a,b) { int t; t=a; a=b; b=t; } #define INDEX 4 void ordenar(int a[], int n); int main() { printf("Exemplo de ordenacao de numeros inteiros num vetor!\n"); //inicializo as minhas variaveis int a = 3, b = 7; int vetor[INDEX] = {14, 58, 10, 5}; //chama a funcao ordena ordenar(vetor, INDEX); //imprimo os valores ja ordenados int i; for(i = 0; i < INDEX; i++) printf("%d ", vetor[i]); printf("\n"); system("PAUSE"); return 0; } void ordenar( int a[], int n ) { int i, j; for(i = 0; i < n; i++) { for(j = 1; j < (n-i); j++) { if(a[j-1] > a[j]) SWAP(a[j-1],a[j]); } } }

C - Passagem de variável por referência

/* AUTOR: Alcides Duarte Exemplo de passagem de parametros para um funcao atraves de referencia, ou seja, a funcao recebe o endereco de memoria que aponta para a variavel. Quando a funcao altera os valores, esta indo direto no endereco de memoria onde se localiza o valor da variavel */ #include <stdio.h> #include <stdlib.h> void troca(int *px, int *py); int main() {     printf("Hello world!\n");     int a = 3, b = 7;     troca(&a, &b);     printf("a: %d - b: %d\n", a, b);     system("PAUSE");     return 0; } void troca(int *px, int *py) {     int z;     z = *px;     *px = *py;     *py = z; }

C - Escrevendo 40 Caracteres

#include #include <stdio.h> #include <stdlib.h> #define ENTER 0x0d        //Enter key void main() {     int x;     char c;     printf("You can type up to 40 characters.\n");     for(x=0;;x++)     {         c=getch();         if(c==ENTER || x==40)    //look for CAPS             break;                              //make it little         putch(c);                            //display character     } }

C - incremento(++) pre e pós-fixado

#include <stdio.h> #include <stdlib.h> void main() { int x = 10; int soma = 10; soma = ++x; printf("Soma: %d\n", soma); soma = x++; printf("Soma: %d\n", soma); }

C - Array

/* Simple array program */ #include <stdio.h> #include <stdlib.h> void main() {     int x,f;     char input[3];    //for storing text input     int favs[4];    //five items in array     printf("Please enter five of your favorite numbers\n");     printf("Between 1 and 100.\n");     for(x=0;x<5 x="">     {         printf("#%i favorite number is:",x+1);         f=atoi(gets(input));         favs[x]=f;     } }