DojoSEA: quarta, e novo 1
Só lembrando que quarta, às 17:00 vamos continuar nosso campo minado com JQuery & JSpec.
Semana passada começamos a mexer na lógica do jogo, mas ainda estamos bem no começo.
Compareçam!

DojoSEA: vai explodir! 5
Semana passada, começamos a implementar o campo minado com TDD, usando Javascript, JSpec e JQuery.
Até agora, só fizemos preparar o ambiente, desenhar uma tabela HTML que virá a ser nosso tabuleiro, e discutir um bocado (além de comer pizza).

Essa quarta (sempre às 17:00), iremos continuar o desafio.
Se quiser aparecer, sinta-se convidado!
[Só peço a gentileza de deixar um comentário confirmando quem vem (inclusive o pessoal da SEA), pra não encher demais - 10 pessoas é o limite! ]
Ah, quem vier, tente chegar na hora, pois toda semana está aparecendo em nossa retrospectiva que estamos começando atrasados… :-(
DojoSEA: campo minado 5
Nessa quarta (17:00 - 19:00) vamos começar a implementar um joguinho de campo minado, 100% HTML e Javascript (JQuery), usando BDD e JSpec. Quer dizer, vamos tentar… :-)

Compareça.
Mas venha preparado: nosso objetivo não é terminar o joguinho, deixar ele impecável e bem acabado, e muito menos o de disputar quem sabe mais.
Venha disposto a comer uma pizza e conversar sobre código e metodologia.
(Se vier, dá um toque antes)
Desenvolvimento de portlets com Rails 2
No final do ano passado fechamos um contrato com o Conselho Federal de Administração (CFA) para o desenvolvimento do cadastro integrado de administradores do Brasil dentre outras funcionalidades. Além da implementação, o CFA também tinha a necessidade de uma ferramenta capaz de prover recursos de CMS, comunidades, fóruns, etc. Tendo em vista esse cenário ficou decidido que o Liferay iria ser a ferramenta de portal utilizada enquanto o desenvolvimento dos portlets seria feito em Ruby/Rails.
Como seria possível desenvolver um portlet Ruby em uma plataforma Java? o.O? Utilizando JRuby é claro! Dentre os projetos que viabilizavam uso do Ruby/Rails em portlets java, o rails-portlet foi o que apresentou a melhor proposta. E como ele funciona?
- 1 portlet java
- O projeto feito com o Rails empacotado com a gem warble, rodando com o JRuby
- Comunicação HTTP entre o portlet e o projeto Rails
- Rails inacessível sem o portlet
O portlet java, que é provido pelo projeto rails-portlet, é adicionado ao portlet container e irá conversar com a aplicação feita em Ruby, isso facilita muito o trabalho, pois conseguimos desenvolver tudo em Ruby e com alguns comandos geramos o .war do portlet.
O projeto feito com o Rails tem algumas particularidades, a mais proeminente é o mapeamento das rotas, pois no projeto original cada método de controller gerava um novo portlet, um mapeamento fixo, por exemplo:
map.portlet_exemplo(
‘portlet_exemplo’, :controller => :controller_1, :action => :method_1
)
Com as contribuições que nossa equipe fez ao projeto, nós conseguimos criar rotas que abrangem N controllers, o que melhorou bastante o processo de reaproveitamento de código, exemplo:
map.portlet_exemplo(
‘portlet_exemplo/:controller/:action’, :controller => :controller_1
)
Nessa caso, utilizamos um namespace ‘portlet_exemplo’ para definir o portlet e definimos que o controller padrão será o :controller_1 e o método padrão será o :index, que no caso, não precisa ser informado. Os wildcards :controller e :action serão substituídos pelos valores passados por parâmetro na URL, por exemplo:
http://…/portlet_exemplo
controller_1, método index
http://…/portlet_exemplo/meu_controller
meu_controller, método index
http://…/portlet_exemplo/outro_controller/outro_metodo
outro_controller, método outro_metodo
Outra necessidade é a utilização da gem caterpillar que é a responsável por gerar automaticamente os xmls de configuração do portlet e do liferay, além de empacotar utilizando o warbler e realizar o deploy. Essa gem tem como dependência a gem lportal, que contém as tabelas do liferay na forma de modelos do ActiveRecord. Infelizmente o lportal não atendeu as nossas necessidades pois ele apresentou algumas problemas básicos, talvez por inatividade do projeto. Dessa forma nós criamos o projeto liferay_models, que ainda não está público, e que é assunto para um outro post.
Após o panorama geral, vejamos como criar um portlet em Rails.
1) Instalar e configurar o GEM
criar variável de ambiente $GEM_HOME=/caminho/das/gems/sem/a/pasta/gems
* Atenção: O caminho das gems não inclui a pasta gems.
Por exemplo:
export GEM_HOME=/usr/lib/ruby/gems/1.8
1) Instalar e configurar o JRuby
download
http://jruby.kenai.com/downloads/1.4.0/jruby-bin-1.4.0.zip
criar variável $JRUBY_HOME=/… e adicionar no path $JRUBY_HOME:$JRUBY_HOME/bin
1.5)
apt-get install ruby-dev
Ubuntu:
apt-get install libpqxx3-dev
Debian:
apt-get install libpq-dev libpgsql-ruby
2) Instalar gems
gem install jruby-openssl
gem install jruby-jars
gem install hpricot
gem install warbler
gem install caterpillar
gem install lportal
gem install uuidtools
gem install rails -v=2.3.3 (Até o momento o caterpillar só funciona com essa versão do rails, estamos trabalhando nisso)
* no caso de utilizar postgres
gem install pg
gem install activerecord-jdbcpostgresql-adapter
3) Criar projeto
rails nome-projeto
cd nome-projeto
ruby script/generate controller example index
- Configure a rota
map.example(‘example/index’, {:controller => ‘example’, :action => ‘index’})
- Adicionar as dependências das gems no config/environment.rb
config.gem "caterpillar"
config.gem "lportal"
- Configurar config/database.yml
development:
adapter: postgresql
database: lportal
username: postgres
password: postgres
host: 127.0.0.1
timeout: 5000
production:
adapter: jdbcpostgresql
database: lportal
username: postgres
password: postgres
host: 127.0.0.1
encoding: unicode
- Ativar caterpillar
ruby script/generate caterpillar
- No arquivo config/portlets.rb adicione
portlet.container.root = ‘/../Programas/liferay-portal-5.2.3/tomcat-6.0.18/’
portlet.category = ‘Rails-apps’ (ou um nome que você preferir)
- Deploy
* Teste a conexao com:
caterpillar portlets
- Gerar o arquivo warble.rb
warble config
- Adicionar essa configuração no warble.rb
config.gems << "activerecord-jdbcpostgresql-adapter"
config.gems << "lportal"
# Precisa fazer apenas uma vez
caterpillar jar:install (Coloca o portlet genérico que trata as requisições no liferay)
# Sempre que mudar alguma configuracao e for testar a aplicação no liferay
caterpillar xml
caterpillar warble (nesse momento não pode ter nenhuma gem nativa no environment.rb, exemplo pg)
# Utilizado para atualizar os arquivos no container
caterpillar deploy:xml
caterpillar deploy:war
Após realizar os passos acima, inicie o Liferay e acesse a aplicação. Selecione o portlet rails que se encontra na categoria que foi configurada. Pronto, nós temos nosso portlet rails rodando!
Esse foi o primeiro de uma série de posts sobre o assunto. Fiquem no aguardo.
Equipe CFA:
Túlio Ornelas, Pedro Dias, Bruce Rodrigues e Renan Mendes.
DojoSEA: JQuery de novo 2
Galera,
Quarta passada, assistimos à metade do vídeo sobre JQuery e discutimos um monte! (Tanto que não conseguimos assistir mais que a metade do filme).
Essa quarta, dia 20/jan, das 17:00 às 19:00, vamos terminar de assistir ao video (espero) e acabar de discutir sobre ele.

(Não, não é o filme do urso que vamos assistir, é o de JQuery ;-) )
Em seguida - na outra quarta - iremos resolver algum desafio com JQuery.
Novamente, estão todos convidados! (Só peço que quem vier avise por email ou comentário, pois semana passada quase faltou cadeira :-P )
Precisamos de desnvolvedores 6
Quem tiver interesse, por favor, entre em contato com bruno ponto pedroso arroba sea tecnologia ponto com ponto br.
Dojo SEA 2010 1
Salve!
Vamos reiniciar as atividades do DojoSEA essa semana, com uma reunião aberta (estão todos convidados).

Quarta-feira, dia 13/jan/2010
Às 17:00
Na SEA (CLN 110 - em cima do Marvin)
Nossa atividade para essa primeira reunião do ano será:
- Assistir ao Screencast de JQuery do peepcode e discutir;
- Conversar sobre as atividades para esse ano;

Sejam todos muito bem vindos !
Portlets JSP
Como presente de Natal, fiquem com o 4º capítulo do nosso minicurso de Liferay.
O problema da contratação de TI 3

A Constituição
da República Federativa do Brasil
de 1988, a.k.a
Constituição, estabelece alguns
princípios básicos sobre os quais toda a
legislação derivada deve se estruturar. Em
especial, destaca-se o princípio da
isonomia, expresso em seu
Art. 5º, que clama que:
O Art. 45 da Lei 8.666/93 (e outras leis complementares), em seu parágrafo primeiro, define 4 possíveis tipos de licitação: (i) a de menor preço, (ii) a de melhor técnica, (iii) a de técnica e preço e (iv) a de maior lance ou oferta.
Falando especialmente em termos de TI, a modalidade de licitação predominante nos últimos tempos foi a de melhor técnica e preço. Nesta modalidade, a empresa vencedora da concorrência é aquela que apresentar os melhores diferenciais técnicos e a melhor proposta de preço, conforme ponderação previamente definida pelo edital. Por diferenciais técnicos, entende-se certificações, currículos abastados, parcerias estratégicas, selos, prêmios e outros.
Só que é bem sabida a articulação política que grandes empresas fazem nos bastidores da administração pública, para o fomento e viabilização de projetos de seus interesses. Neste trabalho, influencia-se a elaboração de editais para que características únicas de suas empresas sejam inseridas como critérios de alto peso na classificação final. Como resultados, vê-se o claro loteamento do setor público, entre grandes empresas terceirizadoras de mão-de-obra, e a marginalização das micro e pequenas empresas do mercado de prestação de serviços para o governo, como deflagrado pela Operação Mainframe da Polícia Federal. Leia sobre o assunto aqui, aqui, aqui, aqui, aqui, aqui, aqui, aqui e vários outros aqui (pesquise por ‘operacao mainframe’).
![]() |
“O
Departamento de Proteção e Defesa da
Concorrência, da Secretaria de
Direito Econômico (SDE), do Ministério da
Justiça e o Departamento de
Polícia Federal deflagraram nesta quinta-feira, 19/03, a
“Operação
Mainframe” para a busca e a apreensão de documentos e discos
rígidos de
computadores em quatro das principais empresas de Tecnologia da
Informação de Brasília: Poliedro,
Politec, Policentro e CTIS. Os dois
órgãos abriram inquéritos -
administrativo e polícial - para investigar
suspeitas de formação de cartel e fraude em
licitações públicas
cometidas por essas empresas.” Convergência Digital |
Como forma de contornar a situação, o TCU, em conjunto à Secretaria de TI e Logística do Ministério do Planejamento, uniram-se na compilação de toda a jusrisprudência relacionada e elaboraram um conjunto de orientações, na forma da Instrução Normativa Nº 04 de 19 de maio de 2008, direcionadas a gestores públicos responsáveis pela contratação de TI.
Da IN04/2008 em diante, pouco importa a qualidade de seu produto ou serviço. Só o preço importa. Então, não adianta ser ágil, entregar valor constante e guiar-se sempre pelo ROI. Tudo isso, em nada mais importa ao governo. Importa quem tem o menor preço. E, neste menor preço, incluem-se aventureiros das mais diferentes laias, que tiram oportunidade reais de empresas sérias, e desperdiçam nosso dinheiro ao se demonstrarem incapazes de cumprirem com todas as obrigações do contrato, obrigando o gestor contratante a cancelar o contrato vigente e a iniciar um novo processo de contratação que, a propósito, não é nada rápido, e nem barato.
Bom, deste ponto em diante, sugiro que leiam o excelente post do Willi, sobre Agilidade e Licitações. O objetivo aqui foi de esclarecer conceitos iniciais da discussão. No post do Willi, há uma chamada para formação de um grupo de discussão sobre o assunto. Participem, e ajude-nos a fazer um Brasil melhor.
Customizando o Liferay
segue mais um capítulo do minicurso online de Liferay que estamos fazendo aqui no blog. Os primeiros capítulos estão disponíveis em http://tinyurl.com/LiferayNaSEA
Nesta edição, discutimos conceitos básicos para customização do portal. Não entramos ainda no nível de código, mas chegaremos lá. Baby stetps, baby. Baby steps…
