Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Quando o ambiente é ruim, o produto é deste ambiente é ruim !

Uma coisa que sempre considero interessante é forma que o ambiente de trabalho influi na qualidade do que ali é feito. No manifesto ágil, dentro da listagem dos princípios, existe um que diz: “Build projects around motivated individuals. Give them the environment and support they need,and trust them to get the job done.(Construir projetos em torno de pessoas motivadas. Dê a eles o ambiente e suporte que necessitam, e confie que eles farão o trabalho)”. Logo, para que um projeto tenha sucesso, no sentido de ROI (Retorno de investimento – qualidade e prazo), a empresa deve propiciar um ambiente ótimo para sua equipe.
Em minhas muitas andanças, vi de tudo um pouco: ambientes que são verdadeiros sonhos de consumo, outras que são a visão do próprio inferno. Já presenciei cenas onde os profissionais se amontoavam em torno de mesas de não mais que 1 metro quadrado, em locais que não permitiam uma boa comunicação entre os membros, iluminação péssima, pessoas que não se entendem, etc. Muitos gerentes, donos de empresa, e tantos outros, podem pensar que, uma vez que somos trabalhadores do pensar, o fato de ter um meio bom não é algo importante, mas, em minha opinião, é justo contrário.
Um espaço bem pensado (em todos aspectos: espaço individual, equipamentos, iluminação, etc) afeta de forma significativa às pessoas que nele convivem. Tal fato pode ser comprovado por várias teorias de arquitetura, psicologia, cromoterapia, etc, e não vou me estender nesses pontos.
A questão que desejo abordar é de ordem prática e próxima aos assuntos de relacionamento e chefias. Não existe como trabalhar e gerar entregas com qualidade num local onde não existe valores como respeito, sentimento de equipe, abertura para diálogos, infrastrutura decente, liberdade de escolha por parte do time, excesso de “politicagem”, etc. O time não precisa estar alheio ao que acontece ao seu redor mas seria, no minímo interessante, que eles pudessem trabalhar se grandes interrupções para tratarem assuntos que não passam de caprichos de alguém.
Imaginemos uma empresa fictícia que seria um bom exemplo de o quanto um ambiente ruim gera resultados ruins. Neste caso, existe burocracia demais e tudo é “engessado”. O espaço para inovação é quase nulo(para não dizer inexistente). A cultura de individualismo é muito forte , onde o sentimento de competição está sempre presente… é um cada por si, ninguém ajuda o outro, mesmo se não tiver nada para fazer. Auto-gerenciamento é palavra proibida e apagada dos dicionários: se o chefe não mandar, nada é feito. O minimo de recursos para realizar um projeto é algo que só vem em última estancia (por várias vezes fiz servidor para sistemas em produção a partir de micros normais até um dia que deu uma pane bizarra e eles compraram mais memória !!!!). Reuniões são intermináveis e sempre não chegamos a conclusão nenhuma.
Todos, nessa nossa empresa fictícia, vivem idéias de 20 anos atrás que o mercado cansou de provar que são falhas (pilhas de documentos, pilhas de formulários, burocracia para tudo, etc). A qualidade não é medida pela satisfação do cliente e sim pela quantidade de documentos e formulários preenchidos, padrões adotadas, horas de “gestão” gastas. O custo de mudança é imenso pois o tempo gasto com papel é quase 50% do tempo total de projeto. PMI é biblia e quem faz MBA é papa.
Muitos podem se perguntar: “Trabalhar numa empresa assim pode ser horrível?”. Primeiro, acredito que “não há mérito em ser bom dentro da igreja”: devemos tentar mudar as coisas, aportar novas idéias, não impô-las, fazer a transformação pelo trabalho de formiguinha. Ser ágil dentro uma empresa que já é ágil é mole.
Concluindo, gostaria de deixar a mensagem de que antes de pensar em burocracias, métodos, formulários, reuniões, é preciso avaliar a equipe, o ambiente, até as mesas e ver se elas estão adequadas a qualidade desejada. Além disso, é preciso mudar a cultura das pessoas, ao invés de impor, convencê-las de que a mudança é boa e que vai trazer benefícios. E claro, quem manda é quem faz !!! Chefe é facilitador e não capataz… Deve ser sensível ao que acontece e blindar a equipe. Claro que não podemos responsabiliza-lo por tudo… A empresa é sempre a maior vilã.
Se você trabalhar numa empresa parecida com a nossa fictícia, e já tentou de tudo para mudar, pode ser que chegou a hora de buscar novos desafios.

Published by Andre Fonseca, on junho 30th, 2009 at 12:29 pm. Filled under: agil,atualidades,Informática2 Comments

Finalmente minha primeira página com Django

Meus amigos após horas de tentativa e erro para colocar a primeira aplicação em Django executando, segue abaixo uma rota que irá guia-los melhor. Ao contrário do que eu disse no post anterior, os passos a seguir indicam uma instalação usando o lighttp (ele é mais rápido e leve que o apache).
Bom, em todos os tutoriais que li, eles recomendam uma séria de passo a passo, que a maioria não funciona. Sempre fica faltando o “pulo do gato”. Até parece M$ : )))) .
Vamos ao que interessa:
1 – Baixe e instale os pacotes do lighttp, django, e python-flup para o fastcgi
2 – Após crie seu primeiro projeto Django:

 django-admin startproject meu_primeiro_site

3 – dentro do seu novo projeto crie uma aplicação que conterá os dados (controladores, modelos, visões, etc)

 django-admin startapp ola

4 – Dentro do diretório de configurações do lighttp, crie um arquivo para o seu site funcionar com customizações.

sudo vi /etc/lighttp/conf-availble/10-meu_primeiro_site.conf

5 – o conteúdo do arquivo deve ser algo semelhante a :

server.modules += (“mod_fastcgi”)
server.modules += (“mod_rewrite”)

fastcgi.server = (
“/default.fcgi” => (
“main” => (
“socket” => “/tmp/lighttp-default.sock”,
“check-local” => “disable”,
“bin-path” => “/var/django/projects/primeiro_site/deploy/default.fcgi”
)
)
)

alias.url = (
“/media” => “/var/django/projects/primeiro_site/media”,
“/admin_media” => “/usr/share/python-support/python-django/django/contrib/admin/media/”
)

url.rewrite-once = (
“^(/media/.*)$” => “$1″,
“^(/admin_media/.*)$” => “$1″,
“^(/.*)$” => “/default.fcgi$1″
)

6 – No diretório que você indicou para o bin-path, no meu caso “/var/django/projects/primeiro_site/deploy/default.fcgi”, crie um arquivo chamado default.fcgi com o seguinte conteúdo:

#!/usr/bin/python
import sys, os

sys.path.insert(0, ‘/var/django/projects/primeiro_site/’)
sys.path.insert(0, ‘/var/django/projects/primeiro_site/hello_world/’)

os.chdir(“/var/django/projects/primeiro_site/”)
os.environ['DJANGO_SETTINGS_MODULE'] = “settings”

from django.core.servers.fastcgi import runfastcgi
runfastcgi(["method=threaded", "daemonize=false"])

7 – Transforme este arquivo recem criado em executavel (mude a permissão dele)

chmod a+x default.fcgi

8 – Relance o servidor lighttp :

sudo /etc/init.d/lighttp restart

9 – Para ver se tudo está ok, vá no diretorio do arquivo default.fcgi e use o python para executá-lo:

python ./default.fcgi

Veja os erros e vá corrigindo, pois pode ter problemas de copiar e colar.

Published by Andre Fonseca, on junho 21st, 2009 at 7:54 am. Filled under: django,Informática,python2 Comments

Instalando o Django no seu Ubuntu

Muitas das pessoas que hoje estão aprendendo uma nova linguagem, após passar pelo “feijão com arroz”, quer ver oque pode fazer dentro da nova tecnologia que possa ser aplicável profissionalmente. Uma das coisas que o mercado mais tem demando é desenvolvimento de aplicações web: portais, páginas de informação, páginas de serviços, etc. Assim, acredito, que todas as linguagens tem a seu framework “mágico” que promete ser a mais nova revolução do mercado.
Dentro do Ruby, temos o Rails. Diga de passagem que é um dos poucos casos onde o framework é mais famoso que a linguagem na qual foi feito. O Rails traz uma nova filosofia na forma de desenvolver sistemas web, pois foge do padrão de “toneladas” de xmls de configuração, quilos de código para não fazer nada relacionado com o negócio em si (mais sobre isso veja – busque no google – artigos sobre DDD).
Dentro do Groovy, existe o Grails.[Editado] O Grails é um framework inspirado pelo Rails do Ruby, na linguagem Groovy[/Editado: graças a um comentário]. Ele se utiliza de Springs, Hibernate e tantos outros mais frameworks java para poder fazer oque o Ruby on Rails faz. Não se esqueçam que, como já falei aqui antes em outros post, o Groovy é JAVA, por isso não estranhem o fato dele usar api Java.
Como não poderia ficar de fora da festa, o Python tem também um universo enorme de bibliotecas para fazer a mesma coisas : Construir aplicações web com alta produtividade. Dentro deste cosmo existe um que vem se destacando dos demais devido a sua facilidade, robustez, e amplo uso comercial que tem tido. Ele é o Django.
Com pouco código e passos você consegue construir uma aplicação web de cadastro e listagem. Mas para poder aproveitá-lo é preciso antes de mais nada instalá-lo em sua máquina. Aqui vamos usar o Apache com um mod-python para servidor de páginas. Alguns usos mais profissionais usam um servidor otimizado para a parte estática e o apache para a parte dinâmica (meio doido isso, quando desenvolvia em Java usava o apache para estático e Tomcat, por exemplo, para a parte dinâmica).
Uma outra ressalva para o processo que será apresentado abaixo é que uso um computador com Ubuntu. Possivelmente, para o pessoal que usar Mac ou qualquer outra distribuição Linux, não mude muito (até mesmo nada), mas vale ficar experto.
O primeiro é obter os pacote de instalação do apache, mod-python e biblioteca de conexão do python com mysql.

sudo apt-get install apache2 libapache2-mod-python
sudo apt-get install mysql-server python-mysqldb

Note que a segunda linha instala o mysql também.
Após instalar o apache e o mod para python e além disso o mysql, para o ubuntu, eu digito a seguinte linha de comando para instalar o django:

sudo apt-get install python-django

Isso irá instalar o django e tudo que for necessário para que ele execute. Para testar a sua instalação você pode no seu terminal digitar:

django-admin --version

Este comando mostrará a versão do django instalado no seu sistema.
Aguarde os próximos post com explicações de como configurá-lo, montar sua primeira aplicação e etc. Mandem seu feedback.

Published by Andre Fonseca, on junho 20th, 2009 at 6:14 pm. Filled under: django,Informática,python2 Comments

Comando para remover e criar serviço no Windows

Realmente começo a me questionar porque existem pessoas que ainda insistem em usar o Windows para aplicações servidores. Hoje, após diversos problema tive que desinstalar um sistema que possua alguns serviços (windowsServices). O fato é que durante a operação ocorreu um erro – mas um daqueles que ninguém entende o porque, bastante comum em windows – e um serviço não foi removido.
Ao tentar reinstalar o dito sistema, este não ia nem por milagre pois o tal não excluida estava lá para atrapalhar minha vida. Foi então com ajuda do google, descobri dois comandos simples para adicionar e recomer serviços do windows:
– Para criar

sc create <nome do servico>

– Para remover

sc delete <nome do servico>
Published by Andre Fonseca, on junho 19th, 2009 at 2:48 pm. Filled under: InformáticaNo Comments