Um Manifesto!

...

  • Increase font size
  • Default font size
  • Decrease font size

Blog

A arte geek de aprender

E-mail Print PDF

Acho que todo bom nerd(Yeah, sou nerd!) gosta de aprender coisas novas, principalmente geeks da área de tecnologia, aonde surgem novidades a cada segundo. Basta um semana de feeds novos que vamos descobrir várias coisas novas, das quais pelo menos uma vai nos interessar em aprender.

Infelizmente, a grande quantidade de novidades empolgantes somadas as nossas atividades obrigatórias, como estudar e trabalhar, costuma atrapalhar nossa busca por novos conhecimento interessantes.

Na maioria dos casos de tecnologias novas, eu prefiro aprender fazendo. De preferência com alguma idéia nova, ou revitalizando algum projeto antigo usando as novidades. Criar um projeto novo especificamente para testar as novas tecnologias.

Nessa caso estou falando de tecnologias, de implementação. No caso de conceitos, a abordagem é diferente, começando pelo estudo. Por exemplo, para aprender Orientação a Objetos é interessante ler primeiro, para depois aprender a implementar(ai sim, na prática), ou para aprender sobre modelos de webservices(REST ou SOAP), são itens abstratos. Arquiteturas, Design, e por ai vai.

Mas se quer aprender uma nova linguagem ou framework, faça uma aplicação. Um tecnologia de virtualização, crie uma pequena rede virtual. Administração de sistema, instale e rode um servidor, mesmo que virtual. Um novo CMS, instale e use. Enfim, faça algo! Mesmo que seja numa aplicação pequena.

As vezes vou ao extremo nisso, crio o projeto antes de ler o primeiro tutorial. Começo o projeto e consulto a documentação conforme for avançando. E é importante lembrar sempre de fazer as coisas da nova forma, usando o máximo de recursos da nova tecnologia, e evitar cair na tentação de usar os métodos antigos “apenas aqui para ser rapidinho”.

E para complementar os estudos, que tal publicar artigos sobre o assunto? Tentar ensinar e passar conhecimento adiante é uma ótima forma de reavaliar seus conhecimento e aprimorar-se. 

Estes dias estou aprendendo JavaFX, que introduz o JavaFx Script, uma linguagem com sintaxe declarativa, e todo um novo pacotes de elementos ao Java. Além possuir conceitos diferentes quanto a criação de aplicações.

Não adiantaria muito se, por exemplo, eu fizesse as interfaces com swing, ou usasse o tempo todo a sintaxe padrão do Java, que é suportada. Assim não estaria aprendendo as novidades dessa tecnologia e não estaria aproveitando seus recursos únicos.

Seria o mesmo que aprender Orientação a Objetos, apenas para fazer listas de métodos chamados um após o outro de forma procedural. Ou tentar aprender um linguagem funcional sem usar closures, macros e currying. Ou usar um framework novo, e fazer gambiarras para usar os mesmos recursos do antigo. No fim não vai aprender a parte interessante da tecnologia, e ainda vai ficar reclamando que a tecnologia é ruim por que é diferente.

O interessante a notar é que a cada "milestone" do projeto, tem-se vontade de apagar tudo e começar do zero, por que nesse ponto você descobre que poderia ter feito tudo diferente e bem melhor. Ai o melhor é refatorar um pouco, deixe terminar o projeto. Ao final, faça a versão 2.0 do zero, pois ai você já tem a visão macro das melhorias e novidades.

Enfim, se quer aprender algo novo. Pegue uma das opções, e faça!

 

Configurando Java FX no Netbeans no Linux

E-mail Print PDF

Uma nova tecnologia promissora a entrar no mercado é o Java FX da SUN para o mercado de RIA, na área em que temos o Silverlight da Microsoft e o Flash/Flex da Adobe, e esta disponível no Java 6.

 

Java Fx

 

Ele pode rodar como os antigos applets diretos do browser, mas muito mais leves e rápidos, além de usar uma linguagem script muito mais prática para interfaces, deixando as desvantagens que levaram os applets a falharem no passado. Além de outras evolução do Update N, que tornaram a Maquina java mais modular e leve, com um “boot” mais rápido.

Interessante recurso também é a possibilidade de arrastar um applet para o desktop e utiliza-lo como stand-alone, transformando-o em uma aplicação desktop padrão. Há também o Java Fx Mobile, que virá em breve nos dispositivos embarcado.

Sendo principalmente uma tecnologia para interfaces ricas, possui ainda diversas ferramentas para integrar gráficos gerandos em diversas tecnologias direto ao Java Fx Script, com isso podemos por exemplo desenhar uma interface direto em vetor, com o Inkscape ou outro, e passar para o JavaFx Script, entre outras possibilidades.

Até o momento o suporte oficial é apenas ao Windows e ao Mac, mas como os bons usuários Linux não tardou um método para fazer funcionar, com a limitação de recursos de vídeo. Então, vamos colocar o ambiente para funcionar no Netbeans 6.5.1 com o JavaFX 1.1.1 no Linux.

O Método completo pode ser lido aqui, em inglês. Sequindo este vai resultar nestes arquivos, baixe-os e descompacte.

Em seguida, abra o Netbeans e use o menu Ferramentas > Plugins, na aba Baixados clique em Adcionar Plugins e selecione todos os arquivos do download e em seguida, com todos selecionados, em Instalar.

Basta reiniciar o Netbenas e pronto, o ambiente esta funcionando, pode agora usar os Samples que acompanham para ver o Java Fx em ação, e estudar essa nova tecnologia.

 

Netbeans com JavaFx no Linux
 

 

Last Updated on Tuesday, 07 April 2009 14:57
 

REST Server em segundo lugar!

E-mail Print PDF

Como publiquei no começo do mês de março, o RestServer foi nomeado ao innovation awards do phpclasses.org, o que já havia me deixado bem feliz, e esta semana saiu o resultado, e o pacote ficou em segundo! Yay. 

O pacote foi atualizado inclusive, com algumas melhorias internas e um exemplo bem melhor, pode-se conferir na página do RestServer ou no GITHUB.

Em primeiro lugar esta um outro pacote legal, o Online Zip Modifier, para edição e manutenção de arquivos ZIP "on the fly". 

Estou mega feliz com isso, e vou tentar agregar mais funções ao pacote para fazer valer a pena!

Obrigado a todos que votaram.

 

Anotações e Persistencia, no PHP.

E-mail Print PDF

Então eu já falei sobre anotações , e também sobre persistência. Vamos juntar as peças?

Um pacote em PHP para leitura de classes com anotações e geração da configuração do ORM a partir dessa. Por enquanto o ORM é o Outlet, pretendo ainda usar o Doctrine. Para annotation usa o addendum.

Então, como usar?

 $config = new PersistenceAnnotation('mysql:host=localhost;dbname=encontros','encontros','123');
 $config->addClass('User')->addClass('Encounter')->addClass('Device');
 // Starts the Persistence Framework
 Outlet::init($config->getConfig());
 $outlet = Outlet::getInstance();
 $outlet->createProxies();

E, é claro, os modelos, devidamente anotados:

  /** @Persistence('devices') */
  class Device {
  /** @Persistence(type='int',props={
  pk=true,autoIncrement=true}) */
  private $id ;
  /** @Persistence() */
  private $mac ;
  /** @Persistence() */
  private $time ;
  /** @Persistence() */
  private $user_id ;
  /** @Persistence({'many-to-one','User',{key='user_id',plural='user'}}) */
  private $user
 // resto da classe
  }

Basicamente é isso, e então continuar a usar o framework normalmente, mas sem escrever os arquivos de configurações do mesmo.

Pode-se obter o código no meu pacote no github

 

Nomeado ao Innovation Award no phpclasses.org!

E-mail Print PDF

Recebi um E-mail muito legal hoje(01-mar), avisando que fui indicado ao prêmio de inovação no PHPClasses.org. Que legal! O pacote indicado é o RestServer , implementação para webservices restful em php.

Fiquei bem feliz por que dediquei-me bastante neste pacote, e de fato o uso bastante, e recebo um feedback legal dele.

Quem for cadastrado no site pode votar na classe que achar mais inovadora através do link de votação

Uma boa maneira de começar o mês, huh? 

 

Virtualizando o ambiente

E-mail Print PDF

Algo que tem me fascinado fora da programação, na área de infraestrutura, são os recursos de virtualização de sistemas. A idéia de aproveitar a mesma máquina para rodar diversos Sistemas Operacionais de forma independente é simplemente ótima, mesmo não sendo nova já que os mainframes se virtualizam desde sempre.

Em ambientes de produção as vantagens são claras, é econômico, facilita migrações, fallbacks, homologação, cluster, etc etc. No uso pessoal, é interessante por que temos um ambiente pronto em questão de instantes e podemos testar diferentes recursos de forma prática.  

O fato é que estou virtualizando a estrutura aqui de casa, são dois ambientes fundamentais: o Famlilar e o de Desenvolvimento.

No ambiente familiar é "aquele" desktop que todo mundo usa, compartilha e estraga junto. Como os usuário são heteregêneos(mãe, pai e irmã pre-adolescente), não é incomum haver problemas. 

O ambiente familiar mantemos o Linux por bastante tempo e as pessoas foram felizes, e eu não tive problemas, usavam o Windows em dual nas poucas vezes necessárias. Fato que é que os requisitos do sistema mudaram: O provedor de internet teve uma série de frescuras e não deixava meu linux se autênticar(burlavel porem) e meus pais precisavam de alguns programas especificos(financeiros e bancos principalmente). Isso somado a falta de tempo, fez o Windows passar a ser o padrão novamente. O que foi um problema.

Fato é, o Windows dá problema, e eu não tenho tempo de resolver. Pega vírus, "bloated" rapidamente... essas coisas.

A virtualização do ambiente familiar tem dois pontos chaves: O OS principal, Debian, onde eles podem navegar com o firefox, assistir videos, instant messengers e etc, de forma segura, e uma VM com o Windows, para poderem usar o  IE e os programas financeiros sem dor de cabeça. Tem ainda uma área compartilhada para troca de arquivos.

Ponto importante é que mantenho o repositório das imagens recem criadas, limpas ainda. Então assim que a Imagem em produção do Windows der problemas(Virús, bloat, etc), *mato-a* e recoloco a limpa, de forma rápida.

No ambiente de Desenvolvimento, tenho também o Debian rodando como OS principal, com os editores e etc, uma máquina Windows XP para testes, e uma VM para simular um ambiente de servidor(ainda em construção). 

É interessante que posso testar openSolaris ou Linux ou BSD, diferentes combinações de webserver(lighthttpd, apache, nginx), banco de dados (postgres, mysql...) e etc, sem correr riscos de prejudicar o ambiente de produção. E posso fazer testes, benchmarks e etc.

Mantenho também aqui um repositório das imagens limpas, e algumas pré-instaladas, para poder refazer tudo assim que necessário.

É bem legal. 

 


Page 7 of 19