Sinatra + GoogleCharts Parceria perfeita

datePosted on 11:09, agosto 20th, 2010 by Carlos Eugênio

Caros amigos ,
Gerar gráficos sempre foram um problema para mim como começei programar em java os “malditos” gráficos utilizando o JfreeChart me tiraram diversas noites de sono.
Desde que iniciei minha curva de aprendizado em ruby fico surpreso a cada dia como as coisas podem ser mais fáceis neste novo mundo.
Me deparei com a necessidade de gerar gráficos utilizando ruby e pensei “tô ferrado” relambrando minhas noites mal dormidas.

Foi quando achei este projeto no rubyforge : http://googlecharts.rubyforge.org
Com uma facilidade a criação de relatórios se tornou a tarefa até que prazeirosa.

Read the rest of this entry »

E ai Rubystas ,

Trabalhar com a estrutura por traz de um site usando ruby on rails não é fácil … Passenger APACHE e afins trabalham muito bem mas as vezes ocorrem alguns erros intrigantes que me fazem pensar em voltar para a estrutura java que conheço muito bem .

Ontem tive o seguinte problema :

Comando :

Ao executar o comando : rails -v


/usr/lib/ruby/site_ruby/1.8/rubygems.rb:777:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
	from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:211:in `activate'
	from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:1056:in `gem'
	from /usr/bin/rails:18

Poxa o rails tá instalado na máquina o que tá faltando :


gem list rails
*** LOCAL GEMS ***
rails (2.3.8)
rails-settings (1.0.0)

Tive a grande idéia :


gem install rubygems-update

Resultado:


Successfully installed rubygems-update-1.3.7
1 gem installed
Installing ri documentation for rubygems-update-1.3.7...
Installing RDoc documentation for rubygems-update-1.3.7...
Could not find main page README
Could not find main page README
Could not find main page README
Could not find main page README

Ao testar novamente :


rails -v
Rails 2.3.8

Vualllaaaaaaaa!!!

Dicas de VIM – Selecionar as linhas de arquivo

datePosted on 09:08, agosto 11th, 2010 by Carlos Eugênio

Já fiz diversos malabarismos para enviar o conteúdo de um arquivo feito no vim por e-mail. Abrir o conteúdo do arquivo no gedit e copiar e colar o conteúdo , enviar o arquivo anexo, enviar via scp e sempre pensando em como utilizar um select all no arquivo.
Seus problemas acabaram com uma dica simples mais muito útil podemos selecionar o conteúdo de um arquivo

→ Shift-v j
Pressione a inocente tecla j até o fim do arquivo e pronto!

LPI – 101 Diferenças Hotplug e Coldplug

datePosted on 11:53, junho 17th, 2010 by Carlos Eugênio

Hotplug é uma característica de um hardware de poder ser conectado em máquina ligada. Ao utilizar um aplicatico hotplug o mesmo funciona imediatamente sem necessidade de desligar a máquina para que os mesmos funcionem Exemplos :
como o mouse PS/2 , memory key.

Subsistema udev
Atauliza os arquivos de dispositivos em /dev , o hotplug precisa ser liberado no kernel através da opção CONFIG_HOTPLUG no arquivo /proc/sys/kernel/hotplug onde o executável fica no caminho /sbin/hotplug

Coldplug
São dispositivos que necessitam de restart total do SO para que as configurações sejam validadas por exemplo placas PCI , ISA e dispositivos IDE , CPU e pentes de memória.

Linux Certification LPI – Parte 1

datePosted on 08:45, junho 8th, 2010 by Carlos Eugênio

Um dos passos importantes para conhecimento de sistemas operacionais linux é conhecer a sua estrutura segue abaixo os diretórios padrões e o que deve ter dentro deles.

/bin – comandos necessários /básicos do sistema
/boot -kernel e arquivos necessários para o kernel
/dev – entradas de dispositivos para discos impressoras etc
/home diretórios iniciais para usuários
/lib – bibliotecas e partes de compiladores C
/media pontos de montagem para sistemas de arquivos
/opt – pacotes de software aplicativos – diretório opcional
/proc – informações sobre processos em execução
/root – diretório do super usuário
/sbin – comandos para iniciar, reparar e recuperar o sistema
/tmp – arquivos temporários que podem ser removidos no restart
/usr – hierarquia de arquivos e comandos secundários
/usr/bin – a maioria de executáveis e comandos
/usr/include – arquivos de cabeçalho para compilar C
/usr/lib – bibliotecas e arquivos de suporte padrão
/usr/local – software local
/usr/local/bin executáveis locais
/usr/local/etc arquivos de configuração local
/usr/local/lib – arquivos de suporte local
/usr/local/sbin comandos locais de manutenção do sistema linkados
/usr/local/src – código fonte para /usr/local
/usr/man – páginas de manual on-line
/usr/sbin – Comandos menos essenciais para administração e reparo do sistema
/usr/share – itens comuns para vários sistemas
/usr/share/man – páginas de manuais on-line
/usr/src – Códigos fontes de pacotes de software não locais

Linux Certification – Certificação LPI Linux 101

datePosted on 18:01, junho 7th, 2010 by Carlos Eugênio

Devido a necessidades profissionais vou dedicar meus esforços a bem falada prova de certificação LPI Linux , criada com objetivo de “certificar” que o caboblo manja de linux a prova tem um custo considerável e tem que ser marcada no instituto de sua preferência , podendo optar pelos idiomas português e inglês.

Para aprender e fixar o conhecimento minha tática é escrever sobre o que eu li e porque não compartilhar com meus leitores …. eu acho que tem alguém lendo o que eu escrevo não é …….

Beleza , como tenho alguns amigos que já são certificados algumas dicas que recebi já vou disponibilizar para a galera.

A prova normalmente é feita em uma cabine com os seguintes itens :

- Computador completo onde serão apresentadas entre 60 e 90 perguntas de linux
- Câmera Filmadora – ela seguirá seus passos portanto não pense em colar , você vai perder dinheiro e tempo.

Estudos direcionados.
Prefiro que todos os temas abordados nas provas que faço estejam claramente mencionados e graças a Deus no LPI são segue o link dos gringos que vai dar um “norte” para nossos estudos.
http://lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives

Dicas importantes que recebi:
Buscar nos links acima os itens que tem maior valor na prova “Weight 4″ pois vale a pena se aprofundar nestes temas.
Leia toda a prova com atenção algumas respostas podem estar escondidas nas questões posteriores.

Para agendar a prova :
http://www.prometric.com/default.htm

Para criar o código LPI (Importante)
http://www.lpi-brasil.org/certificacao.php#candidato

Encoding Tomcat

datePosted on 16:32, maio 26th, 2010 by Carlos Eugênio

No .bash_profile poderá inserir O ENCODING :

export LANG=pt_BR.UTF-8

No Server.xml
URIEncoding=”UTF-8″


<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"
    URIEncoding="UTF-8"/>

Heroku a new approach to deploying web applications [FREE]

datePosted on 10:21, maio 17th, 2010 by Carlos Eugênio

Galera após ter visto um artigo de locais onde podemos colocar nossas aplicações rubyonrails na faixa resolvi testar o heroku no qual ouvi boas recomendações , realmente é excelente e tem apenas algumas limitações.
Seguem os passos que fiz para utilizar este serviço :

Instalando a gem do heroku


gem install heroku --no-ri --no-rdoc

Inicializando seu projeto no git


git init
git add .
git commit -m "Mensagem de commit inicial"

Criando a aplicação no heroku


heroku create aplicacao

Resultado:
Creating aplicacao..... done
Created http://aplicacao.heroku.com/ | git@heroku.com:aplicacao.git

Trocando chaves com o servidor do heroku para enviar a aplicação.


heroku keys --add ~/.ssh/id_rsa.pub

Caso não tenha chave crie-a em sua máquina linux com este comando:


ssh-keygen 

E insira os dados solicitados.

Enviando o projeto para o heroku


git push heroku master

Seguem alguns comandos que você precisará utilizar no heroku

Para inserir um email para receber informações


heroku sharing:add seuemail@dominio

Para adicionar um domínio para sua aplicação


heroku domains:add novodominio.com

Para criar as tabelas


heroku rake:db migrate

Para push do banco


heroku db:push

Para utilizar o memcache na app
heroku addons:add memcached

(Ajp13) can’t receive the response message from tomcat

datePosted on 13:03, maio 14th, 2010 by Carlos Eugênio

Fiz um teste de stress em meu tomcat utilizando threads e foi apresentada a seguinte mensagem:

(ajp13) Tomcat is down or refused connection. No response has been sent to the client (yet)

gerando o famoso erro de bad gateway ao acessar meu ambiente web , a primeira atitude foi reinicializar o tomcat para matar todos os processos ativos e posteriormente setar as seguintes configurações no server.xml

/opt/tomcat/conf/server.xml


<Connector protocol="AJP/1.3" port="8009" maxThreads="600"
minSpareThreads="5" maxSpareThreads="100" acceptCount="500" debug="0"
 connectionTimeout="60000" enableLookups="false"
 disableUploadTimeout="true" useURIValidationHack="false"
 redirectPort="4443" />

Funcionou direitinho , indico esta alteração nas aplicações.

[Java] – Enviando e-mail autenticado

datePosted on 15:06, maio 6th, 2010 by Carlos Eugênio

Amigos ,

Mais uma vez enfrentando os desafios do dia-a-dia me deparei com um problema teoricamente simples o envio de mensagens via e-mail , desta vez de forma autenticada ou seja informando usuário senha e conta para identificação do destinatário.

Criei a seguinte classe SendMail.java que faz este processo e segue abaixo o código :


//Class SendMail.java

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;

public class SendMail {

    private static final String SMTP_HOST_NAME = "smtp.dominio";
    private static final String SMTP_AUTH_USER = "conta@dominio";
    private static final String SMTP_AUTH_PWD = "senha";
    private static final String emailMsgTxt = "Teste de Envio com autenticacao em JAVA.";
    private static final String emailSubjectTxt = "Mensagem de Teste ";
    private static final String emailFromAddress = "conta@dominio";
    // Inserir aqui os enderecos onde a mensagem sera entregue
    private static final String[] emailList = {"primeiro@dominio", "segundo@dominio", "terceiro@dominio"};

    public static void main(String args[]) throws Exception {
        SendMail smtpMailSender = new SendMail();
        smtpMailSender.postMail(emailList, emailSubjectTxt, emailMsgTxt, emailFromAddress);
        System.out.println("Email Enviado para primeiro@dominio e segundo@dominio e terceiro@dominio");
    }

    public void postMail(String recipients[], String subject,
            String message, String from) throws MessagingException {
        boolean debug = false;

        //Setando o host
        Properties props = new Properties();
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", "true");

        Authenticator auth = new SMTPAuthenticator();
        Session session = Session.getDefaultInstance(props, auth);

        session.setDebug(debug);

        // Criando a mensagem
        Message msg = new MimeMessage(session);

        // Setando o endereco
        InternetAddress addressFrom = new InternetAddress(from);
        msg.setFrom(addressFrom);

        InternetAddress[] addressTo = new InternetAddress[recipients.length];
        for (int i = 0; i < recipients.length; i++) {
            addressTo[i] = new InternetAddress(recipients[i]);
        }
        msg.setRecipients(Message.RecipientType.TO, addressTo);

        //Conteudo
        msg.setSubject(subject);
        msg.setContent(message, "text/plain");
        Transport.send(msg);
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator {

        public PasswordAuthentication getPasswordAuthentication() {
            String username = SMTP_AUTH_USER;
            String password = SMTP_AUTH_PWD;
            return new PasswordAuthentication(username, password);
        }
    }
}

Para funcionamento desta exemplo é necessário que utilize as jar standard.jar e mail.jar padrões do javamail.

Até Mais.

123456Next