Legal, falaram do meu blog no Rails Podcast Brasil 2,
ainda não ouvi, mas ja copiei para o celular para ouvir no caminho pra casa hoje
Curso: Spring Framework 2.5 | Conhecendo e utilizando – Quarta turma
Data: 26 de janeiro de 2008 | Duração: 08 horas
Instrutor: Mauro do Valle
Investimento: R$ 380,00 | consulte no link saiba mais opções de desconto e parcelamento
Apresentação: O curso objetiva capacitar o aluno a entender e utilizar as funcionalidades deste conjunto de componentes, buscando aumentar a produtividade e a qualidade no desenvolvimento de aplicações JavaEE. Os participantes terão contato com os recursos avançados, apresentados na última versão do framework. Saiba mais no site www.techoffice.com.br
Curso: Ruby on Rails – Segunda turma
Data: De 11 a 15 de fevereiro de 2008 | Noite Duração: 20 horas
Instrutor: Urubatan Jardim
Investimento: R$ 520,00 | consulte no link saiba mais opções de desconto e parcelamento
Apresentação: O curso objetiva habilitar o aluno a desenvolver aplicações WEB utilizando o Ruby On Rails, e orientar sobre onde procurar soluções para acelerar o desenvolvimento e adicionar recursos a aplicação desenvolvida. Durante o curso será desenvolvida uma loja de DVDs como exercício e exemplo para aplicações futuras. Saiba mais no site www.techoffice.com.br
Tags: rails, Ruby, spring, springframework, techoffice, Trabalho
A todos os que quiserem palestrar em algum dos eventos do RSJUG até a metade deste ano, agora é a hora de levantar a mão ![]()
os eventos serão:
23/02 pela manhã: Tutorial de aproximadamente 3h
12/04 pela manhã: Tutorial de aproximadamente 3h
31/05 dia todo: Seminário com palestras de 1h cada e 2 tutoriais de aproximadamente 3h cada.
Quem quiser colaborar com a comunidade Java, e de quebra ainda ficar conhecido, segue o e-mail oficial do Call 4 Papers:
Caros usuários de JAVA do Rio Grande do Sul,
É com grande satisfação que viemos por meio deste publicar o
calendário de atividades do RSJUG para o primeiro semestre do ano de
2008:
– 23/02 pela manhã: Tutorial de aproximadamente 3h
– 12/04 pela manhã: Tutorial de aproximadamente 3h
– 31/05 dia todo: Seminário com palestras de 1h cada e 2 tutoriais de
aproximadamente 3h cada.Realizaremos no período de 17/01 a 18/02 um CALL4Papers. O objetivo é
receber da comunidade Java submissões de palestras, tutoriais e cases
de negócio para serem apresentados em 2008.Para participar, preencha e envie o formulário abaixo para
call4papers@rsjug.org. Sua proposta será avaliada pela comissão de
conteúdo a qual entrará em contato para requisitar maiores
informações se necessário.– Formulário -
Nome:
Email:
Telefone:
Currículo resumido:
Tipo da apresentação*:
Título da apresentação:
Descrição do conteúdo:* Escolha um item na lista:
- Palestra: apresentação de 1h aproximadamente sobre um tema técnico,
realizada de maneira resumida e introdutória.
- Tutorial: apresentação de 3h aproximadamente sobre um tema técnico,
realizada de maneira profunda e ampla.
- Case de Negócio: apresentação de 1h aproximadamente sobre a
implementação a nível comercial da tecnologia proposta no tema.
- Painel: debate aberto aos espectadores sobre o tema proposto. Tem
aproximadamente 2h de duração e é composto por 3 ou mais painelistas.Desde já o RSJUG agradece a sua participação,
Coordenação RSJUG
Vocês podem enviar quantas propostas de palestra quiserem para o endereço: call4papers@rsjug.org.
O FISL 2008 vai acontecer nos dias 17, 18 e 19 de abril, no Centro de Eventos PUCRS, na cidade de Porto Alegre, RS, Brasil.
E se seguir a tradição dos últimos anos vai estar muito bom, ainda mais agora que voltou para a PUC
eu submeti 4 palestras (espero que 1 delas seja aceita
)
As inscrições para o evento ja estão abertas, para se inscrever basta acessar o endereço: https://secure.softwarelivre.org/greve/
Mais informações sobre o evento podem ser encontradas em: http://fisl.softwarelivre.org/9.0/www/
Espero ver vocês por la ![]()
PS.: fica a pergunta, vocês acham alguma das palestras que eu submeti interessante? iriam assistir alguma?
Tags: 2008, fisl, opensource, palestra
Uma das coisas mais legais no Rails é o suporte a Plugins …
O Ruby On Rails em si já é um excelente framework, mas a combinação dos Plugins do Rails com as classes abertas do Ruby é uma combinação explosiva!
Esta combinação é o que permite a criação de “tags” customizadas para utilizar nas suas aplicações RoR nas views e nos layouts.
E é realmente fácil de criar estes “view helpers” no Rails.
A forma padrão (sem plugins) de se criar estas “tags” é simplesmente criar um método em uma das classes Helper (as que ficam em app/helpers), por exemplo, se todos os forms na sua aplicação ficam dentro de tabelas, com uma coluna para o label e uma para o campo real, você pode criar um método helper para diminuir bastante a quantidade de código a ser digitada seguindo estes passos:
O formulário padrão, bastante simples e feio, para o model “Example” que criamos, nesta aplicação seria algo parecido com:
1 2 3 4 5 6 7 | <% form_for(@example) do |f| %>
<table>
<tr><td><label for="example_name">Name</label></td><td><%= f.text_field :name %></td></tr>
<tr><td><label for="example_name">Url</label></td><td><%= f.text_field :url %></td></tr>
<tr><td colspan="2"><%= f.submit "Update" %></td></tr>
</table>
<% end %> |
mas se editarmos o arquivo app/helpers/application_helper.rb e adicionarmos o seguinte método:
1 2 3 | def textfield label, object, property, options = {} %Q{<tr><td><label for="#{object.to_s}_#{property.to_s}">#{label}</label></td><td>#{text_field object, property, options}</td></tr>} end |
o código da view ficaria muito mais simples como podemos ver abaixo.
1 2 3 4 5 6 7 | <% form_for(@example) do |f| %>
<table>
<%= textfield "Name", :example, :name %>
<%= textfield "Url", :example, :url %>
<tr><td colspan="2"><%= f.submit "Update" %></td></tr>
</table>
<% end %> |
Se você pensar apenas neste pequeno formulário, pode parecer muita complicação para pouca coisa, mas pensando na aplicação inteira isto poupa bastante trabalho
Agora pensando um pouco maior, imagine que este padrão de layout (bem feio por sinal) que eu defini para esta aplicação, seja o padrão de todas as aplicações de toda a empresa!
e todos os desenvolvedores estão trabalhando da primeira forma que eu descrevi, codificando o HTML direto em todas as páginas.
Um belo dia, um designer novo, contratado pelo dono da empresa, diz que em todos os TR de todos os forms, é necessário adicionar uma classe CSS.
Nesta situação, o negócio é sentar e chorar …
Mas se você escolheu trabalhar da segunda forma, utilizando um helper, no máximo você precisara alterar uma linha de código por aplicação!
Você pode se considerar um herói! Certo?
Mas considere a opção de você ser ainda mais esperto do que isto! Que tal criar um plugin que vai conter estas tags para facilitar o trabalho, e utilizar este plugin em todas as aplicações da empresa?
Desta forma você precisaria alterar apenas uma linha de código, testar apenas uma vez, e todas as aplicações da empresa ja estariam corrigidas!
E como sempre, com o Rails, esta é uma tarefa muito fácil de ser completada ![]()
Apenas siga estes passos simples:
1 2 3 4 5 6 | # LifeSaver module LifeSaver def textfield label, object, property, options = {} %Q{<tr><td><label for=#{object.to_s}_#{property.to_s}>#{label}</label></td><td>#{text_field object, property, options}</td></tr>} end end |
1 2 | # Include hook code here ActionView::Base.send :include, LifeSaver |
Ok, você acabou de criar o seu primeiro plugin para o Rails!
E sim, o código é exatamente o mesmo utilizado no application_helper.rb, o único truque esta no init.rb, aquela linha de código, inclui todos os métodos do module “LifeSaver” na classe base de todas as views do Rails, a ActionView::Base.
Agora, se você escolheu esta terceira opção, va falar com o seu chefe, conte uma historia parecida com a que eu contei aqui, e peça um aumento, por que você merece, você acabou de poupar diversas horas de trabalho de umas 3 pessoas pelo menos
Espero que este pequeno passo a passo ajude alguem
Este é o primeiro post de uma série sobre escrita de plugins para RoR, o próximo vai ser sobre testes unitários para o código dos seus plugins, o terceiro vai falar de plugins com generators, e o quarto vocês vão ter que voltar aqui para descobrir sobre o que vai ser
Tags: howto, passo a passo, plugin, rails, Ruby, step by step
Por que alguns profissionais se contentam em utilizar apenas o básico de uma ferramenta e nunca tentam melhorar?
Exemplos básicos disto: Arrastadores de componentes, Programadores java que aprenderam struts e acham que não precisam de mais nada, …
Por que algumas pessoas preferem pagar menos por treinamentos de péssima qualidade, mesmo sabendo que não vão saber nada no final do curso?
Na minha opinião, se você se propõe a fazer um treinamento, a idéia é aprender, a única explicação para isto seria querer colocar mais um curso sem valor no curriculo …
Por que empresas sujam seus nomes vendendo cursos de baixa qualidade, mesmo que a preços baixos?
Eu acredito que um aluno descontente, que terminou um treinamento sem aprender nada, vai sair falando mal da empresa, alem disto ter um péssimo efeito no mercado, de pessoas que não tem capacidade de comparar a qualidade dos treinamentos não entenderem o por que de um curso bom, ser muito mais caro do que um “nascoxa”, prejudicando assim quem quer fazer um trabalho sério.
Por que muitos “programadores” acham tão complicado aprender uma nova linguagem de desenvolvimento?
Eu acredito que se alguem escolheu trabalhar com desenvolvimento, tem a obrigação de fazer isto bem feito, e isto inclui utilizar a ferramenta certa para cada situação, mesmo que esta seja uma outra linguagem.
Aprender uma nova linguagem, principalmente se esta tem uma abordagem muito diferente da anterior só traz benefícios, no final você ira programar melhor nas duas linguagens, apenas por ter aprendido um novo paradigma.
Tudo bem, é necessário investir tempo nisto, mas a pessoa só vai sair ganhando no final.
Pelo menos é a minha opinião, o que vocês acham?
Bom, acho que para o desabafo de hoje era isto, o que vocês acham destas perguntas? é isto mesmo ou eu que estou viajando e o mundo não é tão feio assim?
Tags: duvidas, mercado, treinamento, vontade
Galera a Tech Office esta contratando (estou esperando a bastante tempo para poder postar algo parecido por aqui
)
Tem vaga para estagiário:
A Tech Office seleciona estudantes na área de Ciências da Computação, Tecnologia da Informação ou 2º. Grau Técnico em Informática para atuar como assistente de programação. Os candidatos deverão ter conhecimentos de lógica de programação e orientação a objetos, preferencialmente com conhecimentos em JAVA, PHP, ASP e Ruby. É desejável conhecimentos de inglês. Facilidade de relacionamento, disposição para aprender e interesse em estudar completam o perfil.
A empresa oferece bolsa de estágio compatível com o mercado, vale alimentação e transporte e treinamentos para capacitação.
Os interessados deverão enviar currículo para rh@techoffice.com.br indicando disponibilidade de horário e pretensão salarial.
E para instrutores para os treinamentos que ministramos, tanto os abertos quanto alguns in-company:
A Tech Office It seleciona instrutores freelancers para realização de cursos técnicos de programação.
Os candidatos devem ter conhecimentos aprofundados em JAVA (JEE5, JSP, SERVLETS, JPA, EJB3), Ruby, Rails, Groove, etc. Conhecimentos em outras linguagens e suas ferramentas também são válidos. Desejável certificação JAVA.
Os interessados deverão enviar currículos para seleção@techoffice.com.br indicando tempo de atuação na área, conhecimentos de acordo com os níveis de aprofundamento nos mesmos, cursos na área, histórico de palestras e publicações (se houver) bem como de outros cursos técnicos já ministrados. O arquivo também deverá conter qual o(s) turno(s) disponível(s) para atuação e se o profissional possui disponibilidade para viagens.
Tags: techoffice
Como escrevi no outro post, estou utilizando o Claro 3g aqui em casa, e estava com um problema grave pois não conseguia conectar utilizando o Kubuntu do meu linux, e graças ao link indicado pelo Walter Gomes, segue um passo a passo para utilizar a conexão no linux, e ainda ativar o compartilhamento de internet, que no meu caso é útil pois são duas maquinas aqui ![]()
E como passei trabalho para descobrir como fazer isto, resolvi compartilhar com vocês (na verdade é bem simples depois de descobrir como fazer
)
Primeiro, vamos instalar todo o software necessário para a conexão:
sudo apt-get install wvdial pppd
Espere o final da instalação e tudo pronto …
No meu caso o wvdialconf não detectou o modem da claro, ou pelo menos ele detectou primeiro o modem onboard e desistiu de procurar, mas a configuração do wvdial que eu escrevi ficou assim:
[Dialer Defaults]
Modem = /dev/ttyACM0
ISDN = off
Modem Type = USB Modem
Baud = 115200
Init = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 =
Init4 =
Init5 =
Init6 =
Init7 =
Init8 =
Init9 =
Phone1 =
Phone2 =
Phone3 =
Phone4 =
Dial Prefix =
Dial Attempts = 3
Dial Command = ATM1L3DT
Ask Password = off
Abort on Busy = off
Auto Reconnect = on
Carrier Check = on
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = off
Idle Seconds = 0
Auto DNS = on
; display modem information
[Dialer info]
Init9 = AT&V
[Dialer claro3g]
Password = claro
Username = claro
Phone = *99***10#
Auto Reconnect = off
Stupid Mode = on
O modem USB da claro esta no dispositivo /dev/ttyACM0, se você copiar e colar o texto acima e digitar:
sudo wvdial claro3g
você deve conectar a internet sem problemas, aqui aconteceu do wvdial não configurar a rota padrão, então tive que executar também:
sudo route add -net 0.0.0.0 dev ppp0
depois disto a internet passou a funcionar beleusa
Agora o negocio é fazer tudo funcionar usando o PPPD, para isto eu criei um arquivo de nome /etc/ppp/peers/claro3g com o seguinte conteúdo (não esqueça de derrubar o wvdial para terminar a conexão antes de continuar):
noauth
name wvdial
connect "/usr/bin/wvdial --chat claro3g"
/dev/ttyACM0
115200
modem
crtscts
defaultroute
usehostname
user claro
noipdefault
#usepeerdns
#demand
idle 0
logfd 6
Isto vai fazer com que você possa conectar utilizando o comando: pon claro3g, e desconectar com o comando poff claro3g
Agora estou procurando uma forma de fazer descomentar o demand e ativar o “pon claro3g” no momento em que o linux detectar que o modem USB foi inserido, e a linha peerdns esta desabilitada na por que eu prefiro utilizar o meu bind9 local, vocês podem descomentar esta linha se não quiserem utilizar um DNS local, mas sem o DNS local o próximo passo não vai funcionar muito bem …
Agora vamos compartilhar a conexão a internet, para isto precisamos de mais alguns softwares instalados:
sudo apt-get install dhcp3-server iptables
e vamos precisar configurar o servidor DHCP e um IP estático para a placa de rede da rede local …
Configurar um IP estático para a placa de rede local é fácil, basta editar o arquivo /etc/network/interfaces, localizar a ehtrada correspondente a eth0 e faze-la parecida com isto:
auto eth0
iface eth0 inet
address 192.168.57.1
netmask 255.255.255.0
e a configuração do servidor DHCP também não é exatamente complexa, edite o arquivo cat /etc/dhcp3/dhcpd.conf e adicione a seguinte configuração ao final do arquivo:
subnet 192.168.57.0 netmask 255.255.255.0 {
range 192.168.57.10 192.168.57.100;
option routers 192.168.57.1;
}
reinicie o servidor (sudo /etc/init.d/dhcp3-server restart) e tudo pronto, falta só compartilhar a conexão a internet, se você não tiver ainda um firewall configurado, basta executar isto:
#/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
#echo 1 > /proc/sys/net/ipv4/ip_forward
A primeira linha habilita mascaramento de IP (NAT) para todo o trafego saindo pela interface ppp0 e a segunda linha habilita o forwarding de pacotes IP.
Tudo pronto, esta conectando ao claro3g e compartilhando a sua conexão a internet em casa ![]()
Agora é só você falar para os seus amigos deste post, e publicar um link para ele em algum lugar para facilitar para os novos usuários da claro, assim eles vão encontrar este passo a passo e não vão perder quase duas semanas como eu perdi
Abraço e espero que este post seja útil para mais alguem …
PS.: uma outra idéia legal é fazer um script para subir as configurações do firewall automagicamente quando ligar a maquina e salvar quando desligar, para isto eu criei um arquivo /etc/init.d/iptables com o seguinte conteúdo:
#!/bin/sh
# Start/stop the iptables configuration
#
### END INIT INFO
test -f /sbin/iptables-save || exit 0
. /lib/lsb/init-functions
case "$1" in
start) log_daemon_msg "Reading iptables configuration" "iptables"
/sbin/iptables-restore < /etc/iptables.conf
log_end_msg $?
;;
stop) log_daemon_msg "Saving iptables configuration" "iptables"
/sbin/iptables-save > /etc/iptables.conf
log_end_msg $?
;;
*) log_action_msg "Usage: /etc/init.d/iptables {start|stop}"
exit 2
;;
esac
exit 0
e executei o comando update-rc.d iptables defalts 90
Tags: 3g, banda larga, claro, claro 3g, internet, iptables, linux, passo a passo, pppd, tutorial, wvdial
Pois é, fazia bastante tempo que eu não ficava tanto tempo sem escrever nada aqui no blog, e só para variar este post não tem nada de técnico ![]()
Estão terminando meus 20 dias de férias, segunda feira volto ao trabalho, mas ocorreram diversas mudanças por aqui neste periodo …
Acho que esta foi a primeira vez em uns 4 ou 5 anos que tirei férias, e como da outra vez, termino as férias tendo certeza que tenho vocação para fazer porcaria nenhuma ![]()
Mas vamos as novidades:
Não moro mais em um apartamento, aluguei uma casa em canoas, cidade vizinha de Porto Alegre, aumentou o tempo que levo para chegar ao trabalho, mas pago metade do que pagava de aluguel e com mais qualidade de vida (fala sério, pegar uma cadeira e sentar na grama na frente de casa no final da tarde para tomar um chimarrão é um espetaculo
)
Agora levantamento de copos vai deixar de ser meu unico exercício, caminho 20 minutos de casa até a estação o trem para ir trabalhar ![]()
Logo antes do natal, eu fiquei bastante feliz por que ganhei um filhote de cachorro para criar, sempre fui apaixonado por cachorros, mas em apartamento não da para criar um (não, aquelas coisas minúsculas que carregam nas bolsas não são cachorros, são ratos super desenvolvidos), infelizmente ele passou só 3 dias comigo, morreu na manha de natal, aparentemente foi parvovirose, estou esperando o resultado da necropsia, se foi mesmo parvovirose, vou ter que ficar um bom tempo sem ter o cachorro que eu quero em casa ![]()
Falando em cachorro, o morfeu (o gato da minha esposa), resolveu arrumar briga com o cachorro de um dos vizinhos e ta com a perna traseira bem rebentada, mas agora ja esta quase bom novamente ![]()
Não fiz absolutamente nada relacionado com computadores nestes dias, o mais próximo disto foi jogar Duels, eu tenho problemas com jogos, raramente eu jogo qualquer coisa no computador, mas quando pego um esquema destes para jogas passo uma ou duas semanas jogando o tempo todo, ai eu encho o saco e paro de jogar novamente ![]()
Infelizmente aqui onde estou morando não tem cobertura da NET nem da GVT, por tanto sem Cable ou ADSL, tem cobertura da brasil telecom, mas eu me recuso a pagar para uma empresa com o atendimento mais porco da face da terra, eles não dizem nem se tem ADSL disponível no local antes de se contratar uma linha telefônica, aqueles doentes não entendem que eu não quero telefone, eu nem sei qual era o número do meu telefone fixo antes, eu só quero o ADSL mesmo, mas melhor assim, assim não me prendo na pior operadora de telefonia do brasil.
Estou acessando a internet com o modem 3G da claro, até que o serviço é bom, ja passei o dia inteiro acessando a pouco mais de 1Mbps que é a velocidade contratada, levei a conta da NET e eles me deram o modem de presente, infelizmente o modem não funciona no linux (pelo menos ainda não consegui fazer funcionar), e como o note da minha esposa vai para o escritório e ficara la durante toda a semana a partir da semana que vem (fim das férias dela também), provavelmente terei que formatar o meu note e instalar windows nele novamente ![]()
A ceia de natal este ano foi aqui em casa, estava bem divertido, bastante gente, o unico problema foi o cachorrinho doente, ele começou a ficar mal na tarde da véspera de natal e morreu na manha seguinte
Constatações:
Cortar grama não é tão chato quanto eu achava quando era guri e o meu pai mandava eu cortar a grama da casa, possivelmente o fato de onde estou morando hoje ter apenas uma area de 2×2m de grama influencie bastante nisto, hoje levo no máximo 20 minutos para cortar tudo, na casa do pai eu levava 1 ou 2 horas não lembro direito ![]()
Manter uma casa limpa da mais trabalho do que manter um apartamento limpo, acho que é por que fica mais próximo do chão, mas como eu me involvo muito pouco com isto, não chega a ser um problema ![]()
Lavar o carro também não é tão chato quanto eu lembrava, e pelo menos no verão com a esposa ajudando e um banho de mangueira no final fica até bem divertido
PS.: considerando que sou uma das pessoas mais preguiçosas que conheço, quero ver quanto tempo vai levar até eu pagar para alguem cortar a grama, e para eu voltar a mandar lavar o carro em vez de lavar em casa ![]()
PS2.: vou voltar a postar aqui com mais freqüência a partir de segunda feira quando terminam as minhas férias