Marcio Alexandre's Blog !

Algo sobre tecnologia… =)

MySql 5.0.22 – Configurando Foreign key (InnoDB)

Usar chaves estrangeiras no MySql pode se tornar algo meio “trabalhoso”.

A importância do uso das mesmas, refiro-me às Foreign keys, nós estamos calejados de saber.

Caso você utilize phpMyAdmin para criar as tabelas de seu banco, e não está familiarizado com Sqls,  como este:

CREATE TABLE tb_pais(id_pais INT NOT NULL,descricao VARCHAR(250), PRIMARY KEY (id_pais)) TYPE=INNODB;
CREATE TABLE tb_cidade(id_cidade INT, id_pais INT,descricao VARCHAR(250), INDEX pais_ind (id_pais),
FOREIGN KEY (id_pais) REFERENCES tb_pais(id_pais) ON DELETE CASCADE ON UPDATE CASCADE) TYPE=INNODB;

Vamos lá às dicas (estou considerando que o banco da aplicação já foi criado, iremos às tabelas):

1. Certifique-se que as tabelas estão operando em InnoDB (no caso acima, seriam as duas tabelas: tb_pais e tb_cidade). Isso vc pode configurar clicando na tabela desejada, e indo na aba “Operações”, colocando a opção “InnoDB” no campo “Storage Engine”. O default costuma ser o MyISAM, deve-se mudar.

2. Crie um índice no atributo que será a chave estrangeira (clica na aba “estrutura”, e em Ações clica em “índice”). No exemplo acima, seria o atributo id_pais da tabela tb_cidade. Automaticamente será gerado um índice com o nome do atributo.

3. Após gerado o índice para o atributo, clique em “ver relações”. Teremos 3 campos para configurar. No primeiro campo escolha a relação que este atributo terá com a tabela-mãe (no exemplo acima seria, “tb_pais -> id_pais“), nos demais campos você irá escolher  a ação (cascate, restrict, set null, no action) que deverá ser feita ao deletar e/ou atualizar a tabela-mãe.

Explicando rapidamente: cascate é quando a tupla da tabela-mãe é deletada, todas as tuplas referenciadas nas tabelas-filha também serão, num efeito “cascata”; restrict é o contrário, enquanto houver referencia não pode deletar; set null insere valor null na tupla referenciada, considerando o mesmo contexto; e no action trata as tabelas-filhas como independentes e não ocorre mudança alguma, mesmo que deletando a tabela-mãe.

Pronto! Trabalho concluído, mãos à obra!

25/01/2012 Publicado por | Java, Tecnologia, Software Livre, PHP, Banco de dados | Deixe um comentário

Design Patterns – Padrões de Projetos

Basicamente, trata-se de práticas consagradas para evitar proliferação de classes pelo sistema. Maneiras mais inteligentes para o agrupamento e reutilização dos objetos, trazendo soluções mais eficazes, eficientes e com menor consumo de memória (algumas vezes).

Bom, comecei a estudar este assunto não dando muito credibilidade em sua aplicabilidade. Cheguei a conversar com meu consultor de “reclamações aleatórias”, Denysson Mota (blog ao lado ->), sobre a verdadeira necessidade deste assunto em meu cotidiano, assunto este que nasceu nos idos de 1975 (não lembro ao certo), por um engenheiro civil, sabe-se lá o nome.

Ponto. Isso já mostra a ingrime curva de meu conceito quanto à aplicabilidade dos patterns: afirmo que TODO analista de sistema (que se preze) deve conhecê-los e saber aplicá-los.

Resumindo, para não estender o post, podemos dividi-los em 3 grupos: Criacionais (que trata de melhores mecanismos de instancias das classes), Estruturais (que trata da interação entre os componentes, fazendo com que trabalhem em conjunto, cada qual com suas atribuições, solucionando melhor as requisições) e Comportamentais (trata da comunicação dos componentes, trazendo mais dinamicidade na resposta da requisição). Enfim, cada qual com suas consagradas técnicas.

Citando algumas “técnicas”, ou melhor dizendo: Padrões, podemos iniciar com os criacionais factoryMethod (um componente que simula uma fabrica de classes, organizadas numa idéia de “switch”,  ligado a uma interface que determina todas as subclasses),  singleton (trazendo toda uma economia de instâncias, entende-se “static” ou “static final”) e abstract factory (um componente “singleton”, que não trata apenas um switch de classes, mas também as famílias destas classes), passando pelos estruturais decorator (extendendo um componente concreto e um abstrato, decorando classes de forma independentes), bridge (fazendo uma ponte do componente abstrato com uma interface de ações), facade (“feaçaid”, liga-se a um componente concreto, economizando repetitivas chamadas de funções de diversas classes) , flyweight (que pra mim é a junção da idéia do factory com brigde, genial, economia grande memória) e adapter (um tanto quanto confuso, mas tornando “maleável” interfaces obsoletas ligando-se a um componente adaptador que possa incrementar novas ações, existentes nas suas subclasses), indo parar nos comportamentais memento (ideia genial de “backup” de objetos), iterator (largamente utilizado no Java, agrupamento e busca de classes/objetos) e chains of responsability (provendo um escudo abstrato entre o cliente e o pacote de classes, através de uma requisição é possível buscar a classe correta, e não encontrando chama-se um “sucessor”, que por sua vez é um auto-relacionamento).

Bom, existem muito mais, cheguei a contar 25 padrões em algum livro.

Concluindo: O segredo é saber o propósito de cada um, e a solução que cada um provê ao seu negócio, enxugando o mundo de classes soltas, fazendo um encadeamento mais inteligente entre elas.

Até a próxima! \m/

24/11/2011 Publicado por | Engenharia de Software, Java, PHP, Software Livre, Tecnologia | Deixe um comentário

Métricas – Complexidade Ciclomática (Java Cyclomatic Complexity)

E aí pessoal…tudo certo?

Hoje me deparei com uma métrica bastante utilizada na Engenharia de Software. Realmente achei bastante útil, e olhando para trás, vejo que muitas empresas, em que trabalhei, seriam bastante beneficiadas pelo conceito desta métrica.

Trata-se da Complexidade Ciclomática (CC). Uma métrica que calcula, basicamente, a complexidade de seu algoritmo, estabelecendo “pontos” para cada item “complexo” utilizado.

A CC tem níveis de “riscos”, onde podemos estabelecer que entre 1-10 um possível efeito colateral é baixo (5%), entre 11 e 20 baixo-moderado (10%), entre  21 e 30 é moderado (20%), entre 31 e 40 é moderado-alto (30%), entre 41 e 80 é alto (40%) e acima de 80 considerado muitíssimo alto (60%) e de certa forma não viável (Altamente complexo e não testável).

Tecnicamente falando:
Método da classe = 1pt (cada); if = 1 pt (para cada condição); for = 1 pt; while = 1pt; switch = 1pt (para cada case, lembrando que o default é zero), catch = 1 pt…enfim, não lembro todos .

Exemplificando no código (Java, mas poderia ser qualquer outra):
public boolean primo(int x){ // +1
if (x ==1 || x == 2) { // +2
return true;
}
int raiz = (int) Math.sqrt((double) x);
for (int i = 2; i <= raiz; i++){ // +1
if (x%i ==0){ // +1
return false;
}
}
return true;
}
}
Resultado: Complexidade ciclomática 5.

Para comunidade Java – Caso vocês estejam se perguntando como calcular a CC em sistemas grandes, então aqui vai uma dica, um plugin para o Eclipse, que mensura a complexidade de seu algoritmo: http://metrics2.sourceforge.net.

Dada a idéia, boas métricas para todos!!! =D

17/11/2011 Publicado por | Engenharia de Software, Java, Java Avançado, PHP, Software Livre, Tecnologia | , , , | Deixe um comentário

PHP5 – CRUD Genéricos [Data Access Objects] !!!

Depois de um zilhão de anos, resolvi ressuscitar meu blog… oO

Primeiro, por que PHP ? Bom, comecei a trabalhar com PHP, meio que forçadamente, devido a alguns projetos novos que chegaram. Então, deixei o java meio que de lado, por esse tempo…mas informo que já voltei aos estudos/produção, e tenho novidades em breve… =)

Voltando ao desenvolvimento em PHP5. Minha única fonte de pesquisa, para aprender e entender, foi o site: php.net. Resumindo toda minha dificuldade: Não existe muitos artigos na internet (fóruns, blogs, e afins), explicando estruturas mais complexas da linguagem, principalmente em se tratando de PHP orientado à objetos ¬¬ (as vezes, tenho a impressão de que tudo é muito amador… oO, posso estar enganado, lógico!)

Resolvi publicar (num total de 5 artigos) uma estrutura mais “interessante”, das que eu vi em minhas pesquisas, das camadas de negócios do sistema. Achei que fazendo assim, estaria ajudando, ou norteando, àqueles que precisam de um conhecimento mais profundo.

Aí está, no site do PHP Brasil, a publicação dos tais: http://www.phpbrasil.com/procura?q=CRUD.

Fiquem à vontade para ler, criticar, não ler, ignorar…. =)

Sugiro a leitura na ordem de publicação, ou seja, da primeira parte até a última (pois está em ordem de dificuldade).

* Ainda falta publicar dois artigos, mas mesmo depois de um ano de publicação dos outros 3, não tive coragem (tempo? preguiça? enfim…) de fazê-los.

21/05/2011 Publicado por | PHP, Software Livre, Tecnologia | Deixe um comentário

Tempo

Tempo é uma coisa muito preciosa.

Não soube o que era isso a muito tempo. Ter os 03 turnos da vida ocupados com diversas tarefas, não é algo muito divertido. O que importa é que agora o sinto presente no meu dia-a-dia.

Estarei dando aquele tempo para este blog também.

Afinal de contas após a formatura, só pensamos em ter tempo :) E alimentar blog’s não faz parte de minhas prioridades, hoje.

Abraços, a todos.

29/01/2008 Publicado por | Uncategorized | Deixe um comentário

Regra do Trapézio Web (Java)

Hoje fiquei sabendo que o Prof de Cálculo II (vulgo: Jaspion), realmente botou pra frente uma idéia que surgiu no período passado.

Bom, o gás já não o mesmo, o ânimo beirando a formatura (graças a Deus) já nos leva a momentos de angústia e uma constante contagem regressiva… aheueaheuheauheaue [detalhe: faltam apenas 02 meses para me formar... ô glóriassssss].
SI realmente não um curso para qualquer um. Exaustivo! Contudo, é bom saber que vc cumpriu com seu dever (quer dizer, ainda falta passar nas últimas matérias ¬¬).

Bom, voltando ao título do post… nos tempos vindouros, estarei tentando implementar a idéia aí, a idéia é submeter ao comitê de artigos científicos da universidade, pela área da matemática!!!

Quem não entendeu a idéia, é soh pegar o livro de calculo II e dá uma lida. :)

\m/ let’s go on !!!

24/10/2007 Publicado por | Iniciantes no java, Java, Software Livre, Tecnologia | Deixe um comentário

Spintrônica Quântica e o Futuro dos Sistemas Operacionais

Um novo desafio para nós formandos do curso de Sistemas de Informação…
Eu, Denysson Mota e Bruno Marciel estaremos enfrentando um grande desafio nos próximos tempos…
Um novo e ousado tema foi proposto, por nós, e aceito, pela Msc Prof Fatima Colaço, para ser submetido ao Caderno de Graduação da Universidade Tiradentes; Ago – Dez 2007.
Abordaremos quais novos conceitos englobará os SO’s baseados numa arquitetura quântica.
Lógico será uma abordagem teórica, simplesmente porque não temos exatamente nada de concreto no mercado.
E aí que está a nossa instigação, vamos dar nossa visão quanto ao futuro dos SO’s. E se conseguirmos ir mais além… seremos os novos homens mais ricos do mundo!!! :P

Bem vindos, todos, ao mundo dos qubits !!!!!!

Em breve publicação do artigo ;)

03/10/2007 Publicado por | Tecnologia | 1 Comentário

Nanotecnologia Drexleriana na IA Moderna

——————
09/10/2007

Artigo aprovado pela Universidade Federal (UFS) hehehehehehe. \m/
Agora só falta tempo para organizar a apresentação :/ K-pra-nós, tempo é algo realmente precioso!!! Tenho sentido a necessidade dele na minha vida ¬¬

“Trabalhamos tanto, que não temos tempo de ganhar dinheiro” (não sei quem falou isso, mas é uma grande verdade)
——————
Resumo (pedaço):

Ascendente e ininterrupto tem sido o avanço nos estudos com relação à Inteligência Artificial (IA), principalmente devido à necessidade de sua difusão e conseqüente contribuição nas mais diversas áreas. O afinco com que os cientistas têm dado enfoque a esta área, com a finalidade de obter um melhor aproveitamento de seus recursos, vem desencadeando resultados surpreendentemente extraordinários, seja no âmbito da saúde, indústria ou puramente computacional. Assim, o presente trabalho tem como objetivo levar o leitor a entender que a nanotecnologia Drexleriana, que presumia a construção átomo a átomo de dispositivos úteis à vida humana, não se trata de uma ficção científica, como antes era visto, e que de fato as estruturas moleculares não apenas são possíveis como também fundamentais aliados neste avanço tecnológico, trazendo o mundo microscópico para dentro das grandes estruturas (…)

——————
03/10/2007

Artigo submetido no XVII ENCONTRO DE INICIAÇÃO CIENTÍFICA e o III ENCONTRO DE PÓS-GRADUAÇÃO DA UNIVERSIDADE FEDERAL DE SERGIPE (UFS) (http://www.posgrap.ufs.br/encontro/)

Status: em esperara de aprovação.

Em breve estaremos colocando o resumo aqui, para maior contribuição para os interessados no tema. :)

03/10/2007 Publicado por | Inteligência Artificial, Tecnologia | 1 Comentário

XP – Extreme Program!!!!

Sabe aquela aula que paramos e pensamos que realmente a matéria valeu a pena? Pois, assim foi a apresentação monstruosa de nosso amigo Denysson e companhia, sobre o tema supracitado…

Todo desenvolvedor tem que ter acesso ao conteúdo deste trabalho (e está disponível no blog do ‘cabra’ citado acima). Saber como dividir tarefas; tempo; se relacionar com o cliente; códigos sendo desenvolvidos em par; reuniões em pé; disseminação de informação na equipe; ao invés de documentação exagerada e desnecessária, implementa-se um código amigável, comentado e legível. Resumindo: Explosão!

Enfim, XP é a verdadeira Administração da Informática!

21/06/2007 Publicado por | Tecnologia | 1 Comentário

Gerengiamento de Projetos baseados no PMI !!!

Deve ter quase um mês q não atualizo isso aqui… mas realmente foi um mês violento na universidade. Matérias pesadas e cada qual que exigisse ao máximo nossas madrugadas. Enfim, não foram poucas as noites em claro, junto com o batalhão de colegas guerreiros conectado ao msn, cada um dizendo o que faria e deixaria de fazer quando entrasse de férias… aheuaehueaheauh Momentos de tensão, mas hoje é no mínimo cômico lembrar. Enfim, em administração da informática neste trabalho supracitado aprendi por base como gerenciar um pouco o tempo… o que é FUNDAMENTAL no mundo de hoje.

Antes achava que era só tiração de onda… mas realmente nesse período aprendi o poder da madrugada. Acredite é muito proveitoso utilizá-la para estudar.

Denysson me citou no blog dele, falando de meu trabalho sobre Gerenciamente de Projetos baseados no PMI (Project Management Institute), informo que como profissional pró-ativo da área de informática, é meio complicado digerir alguns dos conceitos deste Instituto.

Mas de fato algumas coisas são bastante interessantes, porque olhando como um todo, realmente, não tem como um produto não sair em um processo estável e completamente dentro do planejado. Contudo, comparando-o como o XP e o RUP, fica difícil aceitá-lo em 100%. Muitas vezes soa como, grosseiramente falando: foco na papelada e documentação, e não no produto final a ser entregue ao cliente.

Lógico que não é isso, assim que o diga a galera da Administração (como é o caso do nosso Prof Msc Alex Sandro, professor da disciplina). Portanto não vou falar mais, deixarei o leitor tirar as próprias conclusões através do trabalho em anexo (informo que o trabalho foi feito com mais 04 pessoas)…

Trabalho de Gerenciamento de Projetos Baseados no PMI

21/06/2007 Publicado por | Tecnologia | Deixe um comentário

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.