terça-feira, 28 de fevereiro de 2012

Arquitetura de Software

Quando eu fazia faculdade, nunca pensei que a engenharia de software pudesse ter tanta importância em uma sistema, bati a cara no muro! Hoje percebo que todos os dias devemos pensar na arquitetura de software, não além de uma simples organização do código (ah! fica bonitinho, não!) mais sim por questões de padronizações e de organização futura na hora de fazer uma manutenção.

Essa semana o pessoal da lista do Cf-Brasil começou a comentar o post do Paulo Teixeira (http://www.pauloteixeira.blog.br) sobre arquitetura. O artigo dele. Fantástico ele deu algumas boas dicas para nosso dia a dia. Aqui tem o link direto para o post (http://www.pauloteixeira.blog.br/site/index.php/content/2012/implementando-uma-arquitetura-em-camadas/).

Hoje apenas utilizo em projetos uma estrutura MVC (Model View Controller) porém comecei a pensar em implementar outros formatos para em um futuro próximo tudo ficar mais fácil de gerenciar.


Vale a leitura no post do Paulo.

Grande Abraço,

Comando Chown no Linux

Chown é utilizado para dizer quem é o proprietário do arquivo,  as vezes podemos ter problemas de permissão devido a ele não deixar você ler o editar o arquivo, lembrando que o Chown e diferente do Chmod. 


Eu estava com problemas com o Apache e SVN, quando tentava dar um commit no arquivo mesmo inserindo a senha ele dizia que não tinha acesso. Dessa forma lembrei desse meu amigo e parceiro CHOWN (rs..) sim ele me ajudou a resolver o probleminha. 


Eu basicamente precisei usar esse comando:
chown -c -R www:data www:data /pasta/pastadosvn/*


Explicação
-c: mostra o o que está sendo executado na tela
-R: inclui todas as subpastas
www:data-> é o grupo e usuário do meu sistema operacional


Para listar e saber mais detalhes do arquivo uso o comando: ls -l

Tem uma dica completa no VIVA O LINUX sobre esse comando: http://www.vivaolinux.com.br/dica/Entendento-o-comando-chown


Vivendo e apredendo :D

terça-feira, 14 de fevereiro de 2012

Script Backup no Linux

Salve galera!


Estava precisando implementar um script de backup, então andei fuçando e achei esse blog com esse maravilhoso Script que implemento ainda mais o meu. 


:)

Vai a dica.. 

#### Inicio do Script
 
#!/bin/bash
# Este script localiza e apaga arquivos que estejam em uma determinada pasta por mais de 30 dias.
# A quantidade de dia pode ser editada por voces.
# A pasta ou as pastas a ser verificada fica a escolha de voces
# O script irá verificar a pasta e apagar todos os arquivos que tenham mais tempo do que a data programada e tambem enviara um relatorio, dizendo  que foi apagado e o que será apagado amanha.
 
#Variavel para a data.
dia=`date +%d-%m-%y`
 
# Inicia o processo de escrita do log
echo Relatorio de Limpeza de $dia >> /var/log/arquivos_apagados.log
echo "-----------------------------------"  >> /var/log/arquivos_apagados.log
# Informa os itens que serao apagados amanha
echo "Amanha serao apagados os seguintes itens" >> /var/log/arquivos_apagados.log
# Os arquivos que tenham mais de 31 dias na pasta /home/pasta_a_verificar serao listados e gravados no log
find /home/pasta_a_verificar/ -maxdepth 1 -ctime +31 >> /var/log/arquivos_apagados.log
echo "-----------------------------------" >> /var/log/arquivos_apagados.log
# Inicia o processo dos logs dos arquivos que serao apagados hoje
echo "Apagados os seguintes itens" >> /var/log/arquivos_apagados.log
# Lista os arquivos que que possuem 30 dias e serao apagados hoje e grava no log
find /home/pasta_a_verificar/ -maxdepth 1 -ctime +30 >> /var/log/arquivos_apagados.log
# deleta os arquivos com mais de 30 dias
find /home/pasta_a_verificar/ -maxdepth 1 -ctime +30 -exec rm -Rf {} \;
echo "-----------------------------------"  >> /var/log/arquivos_apagados.log
# Envia o conteudo do log para seu e-mail
cat /var/log/arquivos_apagados.log | mail -s "Arquivos apagados e agenda para deletar no proximo dia" seu_email@seudominio.com.br -c pessoa_para_copia@seudominio.com.br
 
#### Fim do Script

Fonte: http://www.yeslinux.com.br/?p=200#comment-3310

quarta-feira, 18 de janeiro de 2012

CONCAT() no Mysql

Olá Para quem me escuta todos os dias, ou melhor lê todos os dias (isso é impossível mas vamos dizer que sim)

Enfim, vou postar um problema que estava tendo com o MySQL, eu tinha uma tabela cliente com 5 colunas
ID, DESPRIMEIRONOME, DESSEGUNDONOME,DESRAZAOSOCIAL,DESNOMEFANTASIA.

Sendo que tinha um combobox (SELECT) para selecionar o cliente,  como eu tinha 4 campos e apenas 1 select pensei, vamos concatenar, perfeito solução resolvida, errado erra apenas o começo.

Toda vez que a função CONCAT acha um campo NULL ele retorna NULL, certo mais e dae? qual o problema? o problema é que não pode trazer NULL.

Resolver? Como?

Depois de um googlada, eu ache um kra falando do mesmo problema, então resolvi testar, de certa forma temo que usar uma função a mais em nosso código SQL.

Fica assim:

SELECT clientes.id,CONCAT(COALESCE(desnomefantasia, '*nao tem valor*'),COALESCE(desprimeironome, 'nao tem valor*'),COALESCE(desrazaosocial, ' '),COALESCE(dessegundonome, 'nao tem valor*'),' ') AS nomecompleto FROM clientes

Toda vez que ele retornar um valor NULL ele vai dizer *nao tem valor*, no meu caso eu deixei em branco, assim sendo ele irá trazer nada quando for NULL e fazer o nome bonitinho na select.

Fonte da informação: http://www.psantos.com.pt/files/artigos/2011-02-18-cuidado-com-a-funcao-concat-do-mysql-e-campos-a-null.html

Grande Abraço Fiquem com Deus...


quinta-feira, 22 de dezembro de 2011

Criando um menu recursivo,cascata e banco de dados - CFML, Cold Fusion

Estava batendo a cabeça para criar um menu que auto se alimentasse, ou seja você cadastra ele no banco de dados com idPai assim:
Menu
id
descrição
idpai (o menu que será pai dele)

Dessa forma ele cria essa estrutura
Menu
-Menu1
--Menu2
---Menu3
Menu4
-Menu5

Assim por diante, porém eu queria algo a mais, queria que o código fizesse tudo por mim, sei que existia uma solução para isso foi ai que postei na lista do cfbrasil, enquando não conseguia botar a cabeça para funcionar (tava difícil) fui googlar, onde achei uma solução rápida e simples.

O problema e que eu não tinha a palavra chave na mão "RECURSIVIDADE" palavra bonita ne? então eu tinha esqueci dela, hehehe.. depois de um tempo uma pessoa lembro ela para mim e consegui por fim ao meu sufoco.

Bem vou parar de falar e postar a solução, ah! eu estava tentando achar algo antes no google como MENU CASCATA, MENU, CASCATA, SUBMENU, BANCO DE DADOS COM MENU. Enfim, uma série de fatores, mais volto a repetir (o palavra bonita) RECURSIVIDADE.

Fica a dica!

Fonte: http://www.dougboude.com/blog/1/2006/06/Recursive-Functions-in-ColdFusion.cfm

terça-feira, 6 de dezembro de 2011

Cases de Cfml (Cold Fusion) no Brasil

Estava, eu trabalhando quando observei novamente a lista de Cfbrasil, o pessoal estava comentando alguns cases de sucesso do CFML. Show! Aproveitei para compartilhar :)


BrFoods (Brasil Foods) 
Correios
Petrobras
Sesc
Embraer
COC
Mitsubishi Motors


Lembrando que não sabemos o tamanho da aplicação que cada empresa usa, acredito que não utilizem em toda empresa porém existe alguma aplicação em CF.


Grande Abraço,

terça-feira, 29 de novembro de 2011

MySql Error 1005: Can’t create table (errno: 150)

Esses dias estava com um problema! MYSQL ERROR, pavor!!! não conseguia resolver, fui googlar! achei um blog muito interresante com um artigo TOP... la vai! Lembrando que não escrevi ;) ao final tem o link do blog fonte... 



Vira e meche entre uma modelagem e outra eu sempre me deparo com o seguinte erro “Error 1005: Can’t create table (errno: 150)” enquanto estou trabalhando com uma Foreign Key.
Isso quer dizer que tem algo errado (lógico) do qual esteja impedindo a criação de sua nova Foreign Key, segue abaixo os erros mais comuns:
  • Os dois campos relacionados da Foreign Key não tem o mesmo tipo ou tamanho. Por exemplo, se um campo é INT(10) o campo da chave precisa ser INT(10) também, se for colocado INT(11) ou TINYINY já não serve. Você deve verificar esses dados usando a query “SHOW CREATE TABLE tblname;”. Também confirme se ambos os campos são ‘signed’ ou ‘unsigned’. Conclusão, os campos devem ser EXATAMENTE o mesmo!
  • O campo do qual você deseja se referenciar em outra tabela não tem um índice (index) ou não é uma chave primária (primary key). Se um dos campos que você deseja criar a relação não for uma “primary key”, você deve criar um índice para ela.
  • O nome da Foreign Key já existe em alguma chave. Confira se o nome de sua Foreign Key é única no seu banco de dados. Simplesmente adicione alguns caracteres aleatórios no fim do nome de sua key para testar essa condição.
  • Uma ou ambas as tabelas são MyISAM. Para utilizar Foreign Key ambas as tabelas devem usar InnoDB. Normalmente quando ambas as tabelas são MyISAM o MySQL não apresenta nenhuma mensagem de erro, simplesmente não cria a chave.
  • Você pode ter especificado “CASCADE ON DELETE SET NULL”, enquanto o campo é “NOT NULL”, esse é o erro mais comum.
  • Se o seu script está funcionando perfeitamente em um server, mas não em outro, verifique o collate ou charset, eles podem dar problemas caso sejam diferentes.
  • Você pode ter um valor default (ex. default=0) na sua coluna Foreign Key.
  • O nome de sua Foreign Key excede o limite de no máximo 64 caracteres.
Bem.. eu acredito que a maioria dos erros sejam causados por esses motivos acima, caso você tenha passado por esse problema e a causa tenha sido diferente, colabore.
Boa Sorte!

Fonte: http://diariodecodigos.info/2010/01/mysql-error-1005-can%E2%80%99t-create-table-errno-150/