IV ENSOL um sucesso e cheio de informações

Olá galera,

Hoje cheguei da 4ª edição do ENSOL – Encontro de Software Livre da Paraíba, que ocorreu nos dias de 06 à 09 de maio de 2010, na Estação Cabo Branco Ciência em João Pessoa, e diga-se de passagem, o lugar é muito bom.

O evento em si foi ótimo, reuniu grandes nomes do software livre, alguns palestrantes internacionais e outros nacionais, alguns novos no pedaço mas outros já conhecidos de edições anteriores.

Tudo foi recheado de boas informações sobre o mundo e a filosofia do sotware livre, e não apenas isso, muita informação sobre empreendedorismo com software livre, a palestra do Paulino da Fábrica Livre abordou bem um pouco disto tudo.

O Jon “Maddog” Hall esteve presente em mais esta edição do ENSOL, e fez bonito em suas palestras. Falou sobre o Linux e ainda nos trouxe informações sobre o Projeto Cauã, um bom projeto de software livre.

Outra ilustre presença, que pra mim foi o que mais me empolgou, o Rasmus Lerdorf, o cara criador do PHP, que hoje é uma das minhas grandes paixões, e ainda ganho meus trocados com isso. Gostei muito de conhecer os pensamentos e filosofias do cara.

Coisas legais que quem não foi deve saber que rolou no IV ENSOL:

E algumas outras coisas que depois vou postando aqui.

Voltei do ENSOL com uma visão diferente e bastante ideias legais. É um crescimento para qualquer estudante ou profissional da área.


PHP, padrões de projeto, interfaces e desenvolvimento

Desde o começo, quando comecei a desenvolver pra web utilizando PHP, foram de cara duas paixões, a web e PHP.

No começo, todo desenvolvedor inicia logo sabendo como não se deve programar e no decorrer de sua experiência, adquire padrões e o métodos corretos de desenvolvimento de aplicações, ou não!

Não foi diferente comigo, eu comecei programação para sistemas web em PHP da forma mais comum, pilhas e pilhas de programação praticamente estruturadas, com monte de códigos “espaguete”, onde a manutenção era difícil, devido a grande agregação de código PHP com marcação HTML.

Mas como toda paixão passa pela maturação até que vire amor de verdade! Aprendi e descobri sobre o mundo OO, e minha iniciação foi como a primeira vez da maioria, na prostituição, pois é aprendi com Java! Brincadeira pessoal, não tenho nada contra Java, apenas não gosto da forma oferecida para o desenvolvimento web, complicada e cheia de configurações.

Mas Java me deu uma boa experiência, programação orientada a objetos e com isso um desafio, adaptar-me às boas práticas e iniciar o desenvolvimento em PHP de forma mais organizada, tornando os sistemas de fácil manutenção.

Um dos desenvolvimentos que me “excitei” bastante foi um de um site com recursos de galeria de produtos com imagens, para este eu desenvolvi uma classe de Imagem que faz o envio e redimensionamento, sei que isso tem aos montes nos banco de classes prontas, mas quando você desenvolve o seu próprio código se torna mais “sexy”!

Neste caso já utilizei OO, criei várias classes para as entidades do sistema, incluindo alguns DAOs e Facades. Algum tempo depois, ou seja, nos dias atuais, após ter aderido ao wordpress para gerenciamento dos sites, percebi que esta escolha não é a mais adequada para todos os projetos, então retomei o trabalho e comecei novamente o sistema particular de gerenciamento de conteúdo, só que desta vez com uma motivação maior, pois estou tendo aulas de MAP e conhecendo detalhes de alguns padrões de projeto como AbstractFactory, Template Method, entre outros.

No desenvolvimento, criei uma biblioteca denominada “comum” onde aloquei um módulo de classe genéricas e interfaces que poderia ser reusadas nos demais módulos do sistema, criei o sistema todos modularizado, e dentre os módulos, está novamente o meu bom e velho componente de upload, só que desta vez, deixou de apenas uma classe que consegui subdividir ao ponto de ganhar mais três classes, uma interface e uma classe abstrata, e com isso surgiram algumas dúvidas nesta arquitetura.

De início, comecei a montar o módulo com a seguinte divisão:

- interface ImageUploaderIF{} : uma interface definindo os seguintes métodos a serem implementados enviar(), processarEnvio() e redimensionarImagem(), onde enviar() seria responsável pela chamada aos outros dois métodos.

- abstract class AbstractImageUploader implements ImageUploaderIF{} : classe abstrata que implementa a interface acima, com o intuito de aplicar o padrão template method, então a classe abstrata implementaria apenas o método enviar(), deixando os demais para suas subclasses.

- class ImageUploader extends AbstractImageUploader{} : Subclasse de AbstractImageUploader que deveria implementar os métodos restantes, e definir sua forma de processar o envio e redimensionamento

Tudo parecia bem, porém de cara houve um problema, quando apliquei o template method, o único método que seria público é o enviar() os demais deveriam ser privados, visto que apenas poderiam ser invocados dentro do método enviar().

Daí já tive que eliminar o uso da interface, pois interfaces só definem métodos públicos, não poderia definir os outros como privados, sendo assim, também não poderia definí-los comos privados ou protected na classe abstrata também, pois só é possível aumentar a visibilidade métodos nas heranças e não diminuir.

Tive que prosseguir, aplicando o template method, utilizando apenas a classe abstrata e sua subclasse. Uma outra mudança foi no envio de um arquivo, eu não poderia simplesmente enviar o arquivo e salvá-lo em algum local, então criei um entidade para representar o arquivo enviado, criei a classe Arquivo, que definiria as propriedades do arquivo enviado como descrição, caminho, largura, altura, tamanho do arquivo em bytes e tipo de arquivo.

Pois é, de uma única classe que tinha pra fazer upload, que simplesmente retornava o caminho do arquivo enviado, agora tenho classes abstratas e suas subclasses.

No sistema também passei a usar uma fábrica de objetos ( Abstract Factory ), fábrica de conexões ( Connection Factory ), alguns DAOs e FACADEs e interfaces genéricas para muitas destas classes.

Pois é, estou ansioso com este desenvolvimento, aplicando os padrões toda a programação em PHP que já me agrada bastante fica ainda mais sexy!

[]’s


Formspring.me plugin/widget para Wordpress!

Doubts and suggestions? marcosnobregajr@gmail.com

É isso ai galera, eu tava vendo pela web o que havia para formspring.me e não vi nada, o que é normal tendo em vista que o formspring.me não disponibiliza uma API de acesso aos dados.

Resolvi brincar um pouco com PHP e Wordpress, criação de plugin/widget que permite os usuários do wordpress adicionarem suas atualizações do formspring.me.

=D

Atualizando o post aqui: Plugin/widget finalizado

Para instalar ele é bem simples, basta copiar o arquivo formspringme-widget.php para a pasta de plugins (wp-content/plugins) e depois no painel de plugins do wordpress ativar ele. Quando ativado, ele será exibido na página de widgets (Aparência/Widgets), ai é só arrastar e soltar na barra lateral.

Pronto galera, para baixar o plugin tá ai o link:

Download: FormSpring.me Updates

Link to plugin page at wordpress.org : http://wordpress.org/extend/plugins/formspringme-updates/

Formspring.me Updates

Description

This plugin adds a widget to show the lastest formspring updates based on username
For better compatibility, this plugin must be used with PHP5 or higher
This plugin allows to set 3 options:
  • Username: Formspring.me username
  • Title: The widget title to show
  • Number: The number of updates to show

Note: This plugin doesn’t uses the API of Formspring.me because it isn’t avaiable yet. So, this may still unavailable at any time.

Customization

This plugin is totally customizable by CSS classes. The updates are wrapped by this CSS classes:

  • ul.formspringme-updates : the main updates list
  • li.formspringme-update : the update item, this item is child of formspringme-updates
  • span.formspringme-question : the question text
  • span.formspringme-answer : the answer text

Installation

To install is very simple:

  1. Unzip the plugin files
  2. Upload `formspringme-updates.php` to the `/wp-content/plugins/` directory
  3. Activate the plugin throught the ‘Plugins’ menu in wordpress
    1. Drag and add the widget to your theme sidebar throught ‘Widgets’ menu in wordpress
    2. Or just add [ formspringme-updates ] ( without speaces ) to your post/page content and the plugin will show your updates
    3. You can show answers from any user just adding the username, independent the user configured. eg.: [ formspringme-updates username ]
  4. It’s working!

Changelog

1.3

  • Add feature to show updates on post/page content just adding [ formspringme-updates ]

1.2

  • Fix compatibility with other servers where file_get_contents was disable

1.1

  • Added link to user profile with text “Ask me anything”
  • Added message “Any questions answered yet” when any question isn’t found
  • New CSS class added to customize style of profile link

1.0.2

  • Fixed bug in generation of direct links to questions.

Plugin example using [ formspringme-updates ] on post content:

Using just [ formspringme-updates ] ( without spaces between brackets), the plugin will show answers from configured username

[formspringme-updates]

Using [ formspringme-updates emanuellebrito ] (without spaces between brackets), the plugin will show answers from emanuellebrito, independent the configured username

[formspringme-updates emanuellebrito]


Agora sim! Programando de verdade!

“Quer aprender algo de verdade? Então lembre da velha frase ‘A prática leva a perfeição!’, não importa quantos pornôs você assiste, se não praticar….”

Desde o início no curso de Sistemas de Informação tudo sempre era bom, ou melhor, quase tudo, eu me identifiquei mais com o que era ligado a programação, algoritmos e lógica, as outras são males necessários!

Pois é, no primeiro período do curso, quando o grande mestre Hamurábi nos apresentou tipo “galera estas sãos as variáveis, guardem os seus valores!” foi ai que eu olhei assim e pensei, cara isso vai ser massa! E pelos meus antecedentes criminais eu já era apaixonado por web, mas meu mundo ainda era estático, então foi quando me viciei no PHP, e entre googadas e as aulas de programação, aprendi a migrar pro mundo dinâmico e me apaixonei pelas linguagens de script.

No decorrer do curso cheguei em OO, aprendemos orientação à objetos movidos à Java, e saíram os primeiros “Hello World” com interface gráfica. =D

Desde então passamos por várias disciplinas, dentre elas algumas de programação web, só que com Java, pra ser sincero, prefiro muito mais PHP, Java e suas configurações em excesso tiram o nosso tesão.

Nesse período, chegamos em mais um excitante etapa, 7º período, nos preparando pra jogar no mercado, não que já não estejamos, pois na minha turma a maioria, inclusive eu, já temos empresa ou estamos em uma, isso ajuda bastante a praticar pois eis o mundo exigente! Mas é que voltamos às disciplinas sexys, Métodos Avançados de Programação e Sistemas Distribuídos, já fizemos um chatzinho bem legalzinho entre linguagens diferentes!

Para terem uma ideia olha o que rolou na aula de SD: http://nigini-sci-tech.blogspot.com/2010/03/redes-e-seus-padroes-sockets.html

Claro, olhando assim pode dizer “só isso?” mas tipo, é muito massa brincar com as linguagens.

Quero só ver mais o que os padrões vão me ensinar em MAP, pois já vi que devo esquecer muitas práticas que aprendi e as nerdísses que veremos em SD.

=D


Hello world!

Pra tudo na vida tem um Hello World!

<?php echo “Hello World”; ?>


Mais sobre

Categorias

Lista de Links