DojoSEA: quarta, e novo 1

Posted by BrunoPedroso Mon, 08 Feb 2010 18:00:00 GMT

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

Posted by BrunoPedroso Mon, 01 Feb 2010 21:48:00 GMT

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

Posted by BrunoPedroso Mon, 25 Jan 2010 23:42:00 GMT

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

Posted by Túlio Ornelas Tue, 19 Jan 2010 13:08:00 GMT

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

Posted by BrunoPedroso Mon, 18 Jan 2010 16:23:00 GMT

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

Posted by BrunoPedroso Wed, 13 Jan 2010 13:04:00 GMT

Quem tiver interesse, por favor, entre em contato com bruno ponto pedroso arroba sea tecnologia ponto com ponto br.

Dojo SEA 2010 1

Posted by BrunoPedroso Mon, 11 Jan 2010 13:43:00 GMT

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

Posted by Alê! Tue, 22 Dec 2009 14:15:00 GMT

Liferay - JSP Portlets Ho Ho Ho!

Como presente de Natal, fiquem com o 4º capítulo do nosso minicurso de Liferay.

Abraços e Boas Festas!

O problema da contratação de TI 3

Posted by Alê! Wed, 16 Dec 2009 19:44:00 GMT

TCU e os Problemas da Contratação de TI

Estamos tentando mobilizar o máximo de interessados para uma discussão prática sobre os atuais problemas da contratação de TI no serviço público. Muita gente parece se interessar pelo assunto, mas ainda carece de alguns esclarecimentos. Por isso, segue uma breve e leiga introdução de toda a história.




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:

“Todos são iguais perante a lei, sem distinção de qualquer natureza”

Por este mantra, ao adquirir qualquer bem ou serviço, instâncias públicas não podem escolher, ao livre arbítrio, fornecedores de suas preferências. Daí, criou-se regras democráticas para organizar o processo de contratação de produtos e serviços pelo Estado, expressas, em especial, na Lei 8.666 de 1993, a famosa Lei das Licitações

“Esta Lei estabelece normas gerais sobre licitações e contratos administrativos (…) no âmbito dos Poderes da União, dos Estados, do Distrito Federal e dos Municípios.”

Teoricamente, as regras definidas nesta lei deveriam servir para possibilitar a isonomia de direitos entre fornecedores concorrentes em um processo licitatório. Teoricamente, pois, na prática, não é bem assim que a coisa andou.

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.

“As contratações de serviços de Tecnologia da Informação pelos órgãos e entidades integrantes do Sistema de Administração dos Recursos de Informação e Informática - SISP serão disciplinadas por esta Instrução Normativa.”


Esta instrução, no bom intuito de coibir práticas maléficas à máquina pública, radicaliza o processo de contratação de TI, levando-o ao seu mais oposto (e prejudicial) extremo. Por possibilitar o direcionamento de resultados dos certames licitatórios, a inclusão de critério técnicos de avaliação das empresas concorrentes foi abolida da prática comum. Em seu lugar, prevaleceu apenas o preço como ponto decisivo de toda concorrência pública para o setor de TI. Com isso, extinguiu-se a possibilidade de manipulação do processo, mas criou-se um cenário de alto risco para a eficiência da aplicação dos recursos públicos (aliás, outro princípio constitucional).

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

Posted by Alê! Mon, 07 Dec 2009 19:15:00 GMT

Customizando o Liferay Olá galera,

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…


Ainda não consegui gravar com 100% de acerto. Ficaram alguns errinhos que mereciam ser polidos, mas já ficou bem melhor que os anteriores, e isso é o que importa. Afinal, o ótimo é inimigo do bom.