Centro de Estudos, Pesquisa e Tecnologia - Fundação Aprender

Tecnologia Aplicada Programação e Web Design Ensino à Distância

Um espaço para APRENDER. Ler artigos, fazer cursos, trocar idéias, participar e usufruir de projetos ligados a informática, tecnologia, web e programação em geral

Busca no site

Tópicos

Erro na instalação do Mylin no Eclipse

Por renan, April 28th, 2010. Arquivado em: Eclipse - Sem comentários

Para configurar e instalar os devidos plugins no eclipse e conseguir programar na linguagem python com framework django, encontrei algumas dificuldades, que acredito que seja de grande ajuda para o pessoal.

O seguinte erro:  requires plug-in “org.eclipse.ui (3.4.0.I20070918)”, or later version aparece quando você tenta instalar o Mylin no eclipse para a instalação do Pydev e poder programar na linguagem de programação python devido a um bug, e essa atualização não funciona , assim é necessário instalaruma outra versão do Mylin.

Para resolver o problema siga os seguintes passos:

    1. Abrar o menu Help → Software Updates → Find and Install…
    2. Selecione Search for new features… and Next
    3. Desmarque o Mylyn. Adicione New Remote Site:
    4. Nome: Mylyn for Eclipse 3.3

Link para atualização do Mylin http://download.eclipse.org/tools/mylyn/update-archive/3.2.3/v20100217-0100/e3.3

Espero que tenham gostado do esclarecimento e boa programação

Comandos linux: date e hwclock

Por renan, March 24th, 2009. Arquivado em: Uncategorized - Sem comentários

Neste post será mostrado como mudar a hora do seu computador e também a hora do hardware ou seja da BIOS.

# date 051909522004

Onde o 05 corresponde ao mês, o 19 ao dia, o 09 as horas, o 52 aos minutos, o 20 às duas primeiras casas do ano e o 04 às duas segundas casas do ano, logo estou selecionando para o meu sistema a data 19/05/2004 e a hora 09h52min.

Para mudar hora no hardware:
# hwclock –set –date=”01/25/2008 20:30:05″

Até a próxima

Configurando cron.php no moodle

Por renan, March 24th, 2009. Arquivado em: Moodle - Sem comentários

Para configurar o cron.php para auto execução siga as instruções:

Crie um arquivo no /bin chamado cron_nome.sh

Dentro do arquivo insira a seguinte linha:

wget -q -O /dev/null http://seusite/admin/cron.php

Depois vá em cd /etc

Digite vim crontab

Dentro do crontab adicione a seguinte linha

*/30 * * * *    root    /bin/cron_nome.sh

Pronto, neste momento o cron.php será executado  de meia em meia hora.

Django e Unicode

Por Gustavo Gonçalves, December 13th, 2007. Arquivado em: Python, Django - Sem comentários

Quem trabalha com Django já deve ter se deparado com as mensagens “UnicodeDecodeError” ou “UnicodeEncodeError”.

A versão mais recente do Django já está padronizada em Unicode, mas é preciso ficar atento a algumas práticas para que estes erros não aconteçam:

  • substitua todos os métodos __str__ que há em seus models por __unicode__. É obrigatório um model ter um método __unicode__.
  • salve seus arquivos como utf-8.
  • Todas as strings tem que ser unicode também. Isso é feito colocando um ‘u ‘ na frente da string. Ex: u’meu texto’
  • Declare nos seus arquivos em python (.py) a codificação utf-8. Para fazer isso adicione essa linha no início do seu arquivo: # -*- coding: utf-8 -*-

Se alguém já tem algum projeto rodando que não segue estes padrões e está tendo problema, deve estar xingando neste momento! Calma, ainda tem outra solução… Se tiver acesso ao servidor, faça:

Crie o arquivo /usr/lib/python2.5/sitecustomize.py e coloque em seu conteúdo:

import sys
sys.setdefaultencoding('utf-8')

Desta forma o Python já irá entender as strings como unicode por padrão.

Escrevi este post porque é útil para a equipe da Fundação ainda pouco familiarizada com Django e pode ser útil à mais pessoas. Estas dicas foram obtidas no grupo Django-BR e dadas pelo Gabriel Falcão e Andrews Medina

Ubuntu vs. SUSE

Por Gustavo Gonçalves, October 5th, 2007. Arquivado em: Administração de sistemas, Linux - Sem comentários

Na migração para software livre ocorrida na Fundação Aprender, tivemos que escolher uma distribuição do Linux para instalar nas estações de trabalho e servidor.

Inicialmente a escolha foi pelo Ubuntu. Os CDs gratuitos enviados pelo correio e todo aquele marketing de “linux para seres humanos” nos conquistou. Além disso o fato de ser derivada do Debian e ter uma enorme comunidade na web também foram pontos positivos para nossa escolha.

Entretando, no dia a dia, para a aplicação em um ambiente coorporativo, a experiênia não foi das melhores. Devido a authenticação centralizada via LDAP e diretórios home exportados via NFS, vários bugs foram surgindo. Podendo listar:

  • Dificuldade de transferência de arquivos entre o sistemas de arquivo diferentes no GNOME;
  • Montagem automática de pen drives e cd-rom, não funcionando;
  • Impossibilidade de desligar o computador diretamente. Primeiro era preciso “deslogar” para depois desligar/reiniciar.

Estes problemas só surgiram após o sistema ser configurado para receber usuários e grupos de um servidor LDAP. Antes tudo funcionava prefeitamente.

Tentando nos livrar destes problemas, testamos algumas distribuições, através de live CDs e instalações em micros de teste, podendo citar Debian Etch, OpenSUSE 10.2 e Dreamlinux 2.2. A escolhida foi o OpenSUSE por não ter demonstrado nenhum dos problemas listados acima. Além disso esta distribuição é voltada para desktops tem por trás a Novell, empresa com longo legado no mercado de informática.

Neste artigo vamos citar pontos positivos e negativos do OpenSUSE e do Ubuntu, com intenção única de auxiliar quem esteja no mesmo dilema de escolha de uma distribuíção em meio a mais de aproximadamente 400 disponíveis. A qualificação POSITIVA ou NEGATIVA é em relação às distribuições analisadas.

Ubuntu

Distribuição baseada em Debian, voltada para desktops, vastamente distribuída no planeta devido a um programa de entrega grauita por correios. Tem por trás uma empresa chamada Canonical, da áfrica do sul. Conheça melhor

Ponto analisado Qualificação Opinião
Administração de pacotes POSITIVA O Synaptic é a interface gráfica de administração de pacotes. Apt-get e aptitude são similares para linha de comando. Ambos são ótimos! Rápidos e com uma resolução de dependências boa e simples de entender.
Quantidade de pacotes POSITIVA Os repositórios de pacotes Debian são repletos de softwares. Dizem que é um número em torno de 22 mil. Quase tudo se encontra instalável via synaptic ou apt-get. Pense em um software, 90% de chance de ser encontrado nos repositórios.
Configurações NEGATIVA Existem algumas aplicações específicas para configuração. A de redes é um exemplo de configuração fácil. Entretando, alguma coisa diferente do básico exige do usuário se aprofundar no terminal e na arte de editar arquivos de configuração. Podem ser baixados outros softwares GUI para configuração, mas não são padrão do sistema.
Usabilidade POSITIVA A interface minimalista com GNOME agrada a maioria dos usuários. Poucas opções no menu torna o uso mais fácil. Ponto negativo por não trazer por padrão instalado o OpenOffice.
Authenticação via LDAP NEGATIVA Toda a configração deve ser feita via arquivos de texto. Existe um bug que chega ao extremo de impedir o boot o computador, e não existe nenhum letreiro gigante avisando isso! Felizmente um simples “bind soft” resolve, mas se o arquivo de configuração já viesse assim por padrão pouparia o problema. Ao ser implementada, a autenticação LDAP gera uma série de defeitos, que exigem pesquisa e trabalho para resolver, e as vezes nem tudo é possível resolver.
Multimídia NEGATIVA Não vem com todo suporte à multimídia instalado, devido a questões de licença, mas pelo repositório este problema é resolvido e a comunidade ajuda mutio. Existe um projeto chamado EasyUbuntu que instala tudo que é necessário em poucos cliques.
Instalação POSITIVA Fácil e rápida, basta clicar no botão “avançar” algumas vezes. 1 CD de instalação que já é Live CD. A escolha por GNOME, KDE ou XFCE é feita na hora de baixar a imagem, não durante a instalação. A existênicia de 1 CD só deixa o processo mais leve.

OpenSUSE

Distribuição alemã, disponível desde 1992, que já foi uma das mais populares. Em 2003 foi comprada pela Novell que deu um fôlego extra ao projeto. Vem se aprimorando para se tornar mais popular.

Ponto analisado Qualificação Opinião
Administração de pacotes NEGATIVA Este ponto do SUSE é péssimo! Cada vez que é inicializado o Yast, sistema de administração de pacotes do SUSE, é baixado a lista de arquivos dos repositorios. Isso leva em torno de 10 minutos! Se você fechar o Yast e abrir novamente logo após, todo o processo é repetido. Os repositórios você deve procurar na internet e colocar manualmente, não estão lá por padrão. Cada inserção de repositório também tem um processo de download demorado. Um verdadeiro execício de paciência, capaz de levar a loucura até um monge budista! O maior ponto negativo do SUSE. Felizmente os desenvolvedores já perceberam isso e esté é o ponto máximo a ser trabalhado no projeto. A versão recém lançada 10.3 parece que já traz melhorias nesta questão. Em alternativa a este “entrave” há possibilidade de se instalar um outro administrador de pacotes, chamado Smart, que não demora 10 minutos para iniciar…
Quantidade de pacotes NEGATIVA Muitos dos softwares que estavamos acostumados a usar no Ubuntu não encontramos nos repositorios padrão do SUSE. Posso citar o Filezilla, EasySVN, BrOffice. Parece que a quantidade de pacotes do Debian é algo imbatível. Mas o SUSE tem pacotes também muito bons, incluíndo software desenvovido pela Novell e não disponível facilmente em outra distribuição, como o iFolder por exemplo.
Configurações POSITIVA O grande diferencial do SUSE. O Yast é um centro de controle onde praticamente quase tudo no computador pode ser configurado por interface gráfica. Fantástico. Cliente LDAP, Servidor Web, Firewall, Samba, Log, Boot, etc. Praticamente tudo que no Ubuntu tem que ser feito “à mão” aqui é feito pelo Yast. Nota 10.
Usabilidade NEGATIVA O ambiente GNOME tem um visual muito agradável e tudo é muito bonito. Mas inventaram um sistema de menu diferente, e vem por padrão instaldo uma quantidade enorme de pacotes, o que chega a assustar o usuário. Exige um pouco de trabalho (com o Yast! argh) para remover o excesso.
Multimídia NEGATIVA Assim como o Ubuntu, não vem instalado devido a questões de licença. A instalação é um pouco mais complicada que no Ubuntu e nem tudo está nos repositórios. Não existe um software que assista este processo e facilite a vida do usuário.
Instalação NEGATIVA 5 CDs! temos q concordar que é demais. Troca-se de CD umas 3 vezes por instalação, e nenhum deles é Live CD. Tudo isso para dar opção ao usuário de instalar o KDE ou GNOME. Muitas opções tornam o processo necessário de ser assistido e um pouco mais demorado.
Authenticação via LDAP POSITIVA O que nos levou a largar o Ubuntu e partir para o SUSE. Já na instalação é perguntado: “Quer autenticar via LDAP?”. Basta responder sim, preencher poucos campos, e pronto, no final da instalação você já pode usar seu usuário do LDAP! Isso é fantástico, comparado ao processo mais trabalhoso via console do Ubuntu. O SUSE de quebra pergunta também se você quer habilitar o automount via LDAP, que nós também usamos. Parece que o pessoal do SUSE pensou em nosso caso quando criou esta ferramenta de configuração.

Limitações do GNOME em ambiente empresarial

Por Gustavo Gonçalves, August 4th, 2007. Arquivado em: Administração de sistemas, Linux - 1 Comentário »

Em nosso trabalho de migrar nossa infraestrutura MS Windows para uma rede completa com estações e servidores Linux (Ubuntu 7.04), nos deparamos com uma limitação que está tornando impossível continuar a utilizar o GNOME como escolha para desktop.

Leia mais…

Python e Web Services

Por Gustavo Gonçalves, April 13th, 2007. Arquivado em: Python, Web Services - Sem comentários

Esta semana foi necessário integrar um sistema que estamos desenvolvendo com Python e Django ao sistema de cobrança F2B. Basicamente acessar os serviços como cliente, através de web services. Este artigo relata a experiência.

A única interface oferecida é SOAP (simple object access protocol). Outra maneira de utilizar os serviços é através de GET ou POST, mas diferente de um web service REST, neste caso seria necessário que nosso usuário fosse redirecionado à página da F2B, o que é indesejado.

Não tendo outra saída a não ser usar SOAP, uma pesquisa foi iniciada para descobrir bibliotecas em Python para este trabalho. Foram descobertas várias. Entre as open source, muitas estão descontinuadas ou sem suporte. As mais confiáveis e utilizadas são SOAPpy e ZSI.

A bilioteca ZSI é evolução da SOAPpy e pode-se dizer que ambas caminham para a unificação sobre o nome da primeira. Ambas podem ser encontradas no endereço http://pywebsvcs.sourceforge.net/.

As duas dependem da biblioteca pyXML, projeto que está atualmente descontinuado. Como o desenvolvimento está se dando em ambiente windows e Pyhton 2.5, houve dificuldade para encontrar esta biblioteca compilada. Em tentativas de compilação em ambiente windows, foi exigido o Visual Studio 2003, impedindo a continuação do processo. Em fim uma busca refinada no Google encontrou a biblioteca pyXML compilada para python 2.5 e win32, entretanto com um grande aviso “use por sua conta e risco”.

Depois de alguma luta, as bibliotecas instaladas, iniciaram-se os testes, tentando acessar um web service simples que fornece a temperatura de um local a partir do cep da área (estados unidos). Houve um problema com “namespaces” e não foi possível o acesso porque a biblioteca ZSI pelo que consta não tem suporte a namespaces, a não ser em casos onde o se tem acesso ao lado do servidor. Uma nova tentativa foi criando-se um pequeno web service a ser servido na porta 8080 e um cliente para acessa-lo. Pouco código, coisa simples. Mesmo assim por um motivo ainda não identificado não deu certo. As fontes de pesquisa foram um artigo no site da IBM e o material do Dive Into Python

Trabalho frustrante. Praticamente um dia inteiro, foco perdido do sistema e voltado para web services usando SOAP. Foi uma decepção encontrar tão pouco recurso para utilizar este protocolo no Python, que é de certa forma tido com “padrão” no que se trata de Web Services.

Fraquezas do SOAP

Padrão SOAP? Entre aspas… Há um grande grupo de desenvolvedores que acreditam que a tecnologia de web services, que se diz simples e de fraco acoplamento, está “metendo os pés pelas mãos” quando adota SOAP como padrão.

Web services com SOAP funcionam da seguinte maneira: Você cria uma classe, e utiliza alguma biblioteca para torná-la acessível pela internet. Junto cria um arquivo chamado WSDL(Web Services Definition Language) que é uma descrição dos métodos públicos oferecidos por seu serviço e de como acessa-los, no formato XML. O cliente por sua vez, através da WSDL, acessa o serviço enviando a requisição como um arquivo XML e recebe a resposta também como um XML, segundo as regras definidas no arquivo WSDL do serviço. A idéia é que através da WSDL o sistema seja capaz de entender o web service e interagir com ele.

Em conceito está perfeito, entretanto a prática é um pouco diferente. A WSDL é fortemente “tipada”, ou seja, tem tipos de variáveis inflexíveis. Se tratando de uma tecnologia que pretende acoplar outras tecnologias para que trabalhem juntas, de forma distribuída, este já é um entrave. Os tipos variam entre as linguagens e a WSDL pretende criar tipos que são comuns a todas, e este é o ponto crítico. SOAP torna o acoplamento forte, pois se o criador do web service alterar poucos pontos do arquivo WSDL já é o suficiente para quebrar os sistemas clientes.

Além disso, o dialeto XML que compõe a WSDL faz com que seja obrigatório o uso de uma biblioteca para facilitar seu processamento e criação, pois escrever WSDL “na mão” é cansativo e sujeito a falhas, tornando assim o desenvolvedor dependente de uma (ou mais) ferramentas.

O método REST

Uma alternativa mais simples e de fraco acoplamento é o método REST . Chega a ser simples demais descrever este método de acesso à web services, mas é na simplicidade que está sua força.

REST é a sigla para Representational State Transfer. A internet por natureza é um meio de acesso a recursos, e não serviços, e REST segue esta filosofia. Para acessar um web service pelo método REST basta que se conheça sua URI e passe parâmetros usando métodos do protocolo HTTP, sendo eles GET, POST, PUT ou DELETE. O protocolo usado é HTTP, da mesma forma que se acessa uma página web qualquer. Ao acessar a URI informando dados, o web service retorna como resposta os dados solicitados, no formato que o criador do serviço bem entender. Cabe ao desenvolvedor estabelecer padrões, caso ache necessário.

Como no fim, para trafegar na web, qualquer tipo de variável é convertida em string, o método REST não se prende a tipos de variáveis, o que o torna de fraco acoplamento, seguindo os conceitos inicias dos web services. No destino, o desenvolvedor pode, a partir da string recebida, converter no tipo que precisar. Praticamente todas as linguagens de programação oferecem recursos para transforma string em tipos específicos.

O acesso através de simples requisições HTTP torna o serviço acessível a todos, sem a necessidade de que se gaste tempo (precioso) aprendendo WSDL, UBBI ou outra sigla estranha. REST se enquadra no conceito que se prova cada vez mais verdadeiro em desenvolvimento de software, que diz que “fazer menos é fazer mais”. Menos software, menos regras, menos falhas, mais qualidade, mais prazer em trabalhar.

Conclusão

Como “prazer” e “fazer da forma mais simples” é mola mestra de quem opta por Python, já está explicado porque se tem pouco suporte a SOAP na linguagem. Mesmo assim, há casos, como este, nos quais não há escolha, é obrigatório se adequar ao SOAP. A biblioteca ZSI cumpre bem este papel, apesar da curva de aprendizagem um pouco maior comparada a quem acessa um web service REST, usando a “urllib”, biblioteca padrão do Python. Mas este é um defeito do SOAP, não do Python.

A Amazon oferece seus web services nos dois modelos, REST e SOAP. REST tem 70% mais aceitação. A simplicidade no acesso popularizou estes serviços e vem se mostrando um padrão “na prática”. Entretanto vemos cursos de informática com professores ensinando SOAP e frizando que “SOAP é o padrão de mercado e deve ser seguido”. Fica a nota aos desenvolvedores que estão criando web services, e o lamento pela necessidade de ter que perder horas tentando “temperar” esta SOAP para que funcione corretamente.

Leituras sugeridas

Dados hierárquicos e bancos de dados

Por Gustavo Gonçalves, January 27th, 2007. Arquivado em: Banco de dados - Sem comentários

Quando temos em nosso sistema, por exemplo, uma lista de categorias que podem conter infinitas sub-categorias, precisamos de alguma forma armazená -las em um banco de dados ou em uma lista plana. Quando nesta necessidade, o que vem em mente é um método simples onde guardamos na categoria filha o identificador da categoria pai. Este método se chama “modelo de listas adjacentes”. Neste artigos vamos decorrer sobre este modelo e apresentar um alternativo, mais eficiente em termos de tempo de processamento. Leia mais…

Creative Commons License

Esta obra está licenciada sob uma Licença Creative Commons.

CEPT - Centro de Estudos, Pesquisa e Tecnologia
Pça. Sta. Rita, nº 109 - Centro - Santa Rita do Sapucaí
CEP: 37540-000 - Minas Gerias - Tel: +55 35 3471.4181

FUNDAÇÃO APRENDER - Sede
Rua Wenceslau Braz, nº700 - Centro - Varginha
CEP: 37000-080 - Minas Gerias - Tel: +55 35 3222.1214