Meu ambiente de trabalho em 7 itens

\o/ A última vez que escrevi por aqui foi durante a agonia de escrever o TCC 1, que por sinal ainda aguardo o resultado muito ansioso.

Estou voltando por aqui devido uma intimação que recebi do grande amigo @felipernb, que me deixou a tarefa de continuar com o meme “Meu ambiente de trabalho em 7 itens” que ele postou aqui: http://blog.feliperibeiro.com/2011/01/meu-ambiente-de-trabalho-em-7-itens.html

Não é grande o ambiente mas me deixa à vontade, se liga ai:

1 – Paper Toys: Sempre quis uma mesa com meus “brinquedos”, e agora na @10envolve montei vários paper toys do Tux, Super Mario, e de um herói dos bons tempos, o Chapolin. Por último, não é um paper toy mas ganhei da @prognus um pelúcia do Tux, a mesa ficou bem mais colorida.

2 – Ubuntu: fui por muito tempo refém do windows, não tinha noção da belezura que é um ambiente linux/unix. Mergulhei no ambiente linux, instalei o Ubuntu e windows não mais, o ganho com produtividade foi imenso, e sem falar na maravilha que é ter um terminal como falou o @felipernb.

3 – Livros: gosto de ter por perto verdadeiras bíblias e materiais de consulta para eventuais dúvidas entre um desenvolvimento e melhorias nos processos atuais.

4 – Caneta e papel: muita folha de rascunho e rabiscos que podem virar modelos depois, para sempre anotar bastante as ideias que surgem e para descascar os abacaxis que tem pelo meio do trabalho, nada como caneta e papel para solucionar problemas.

5 – Eclipse+PDT: apesar das travadas que ainda apresenta, não me acostumo com outra IDE para desenvolver, muito bom o suporte para PHP. Dizem que o NetBeans está promissor para PHP na versão 7, mas o eclipse me satisfaz demais.

6 – Copinho de moedas: acumulador de moedas que serão revertidas na hora do lanche do time de desenvolvimento. =D

7 – Android: depois de adquirir meu primeiro smartphone, o Xperia X10, tenho sempre ele por perto, principalmente para relaxar quando o calo aperta jogando um pouco de AndryBirds.

Ufa! Não é que escrevi mesmo.

Agora lanço o desafio para continuar o meme com:

@allysonjd

@nigini

@thiagomanel

@leonardoufcg


Ubuntu 10.10 danadinho, um pouco de monografia e algo mais

Bom galera, o título da já diz tudo, então não preciso nem escrever nada aqui né!

Tava com meu Ubuntu 10.04 rodando redondinho (ou quase) nesta adorável #@$%&* placa de vídeo SIS671, isto depois de uma busca vasculhando toda a rede em busca de uma solução milagrosa pra usar a resolução ideal. =D Solução esta que veio do blog do grande Hugo Bastos (http://diversosassuntosbrasil.blogspot.com/2010/05/sis-671-672-mirage-3-funcionando-no.html).

Bom o que houve foi apenas que eu tive a ideia do tipo “massa, saiu o Ubuntu 10.10, vou atualizar!”, esquecido do problema que passei, e iludido na ideia de que poderia atualizar via gerenciador de atualizações, sem ter que reinstalar do zero! O que houve foi, deu falha na atualização, já devido ao driver de vídeo, mas não me lembrei, e mandei pra cima uma nova instalação! Pronto, mesmo assim cai no mesmo problema. Ubuntu 10.10 danadinho! Estou eu novamente com notebook em 800×600, apesar do blog do Hugo Bastos já ter a solução, ainda não consegui fazer funcionar, mas ainda terei muitas madrugadas pra isso.

Outro motivo de tentar passar umas madrugadas ai é a minha monografia safadinha, meu amigo, nunca vi ficar tão travado! Não tá saindo quase nada, estou a la Hank Moody, apenas tirando a parte da putaria (ainda!), estou sem inspiração de escrever. Estou tentando escrever um pouco sobre o estado da arte dos GRIDs computacionais e seus escalonadores de tarefas, só o início, pois ainda vem por ai um bocado sobre algoritmos genéticos de otimização de tarefas.

Esta seria uma grande semana para andar com esta monografia, devido os feriados, só tive dois dias de aula teoricamente, pois em um deles o professor faltou! E ainda por cima, a namorada tá viajando, ou seja, semana poderia ser totalmente dedicada, isso se saisse algo aqui pra escrever.

Pois é, mais um pouco de desafios, vou tentando escrever algo e no meio tempo vou tentar solucionar, DE NOVO, essa resolução do Ubuntu 10.10, que tá muito bom e não queria ter de voltar ao 10.04!

Valeu!


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”; ?>


\o/

Desenvolvedor web, gosto da rapidez como as coisas acontecem na rede, uma simples informação pode girar o mundo em alguns segundos, anônimos podem ficar bilionários com uma "simples" e ambiciosa ideia.

Motivação: entender e observar como as engrenagens funcionam, o encaixe de cada peça, e a facilidade de juntar as peças e ter algo novo funcionando.

Super poderes: Linguagens de script, principalmente o PHP

Mais sobre

The Ubuntu Counter Project - user number # 32836

PHPConf.com.br

PHP Conference Brasil

Categorias

Lista de Links