Postagens

Mostrando postagens com o rótulo Programação

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 di...

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.

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 .

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...

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 escol...

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     {         printf("#%i favorite number is:",x+1);         f=atoi(gets(input));         favs[x]=f;     } }

Imprimindo Código de Barras no HTML usando JavaScript e CSS

Imagem
1 - Crie um arquivo JavaScript com o código abaixo, ex. codigoDeBarras.js .