Archive for outubro, 2008

Ubuntu 8.10 Intrepid Ibex

| outubro 31st, 2008

Saio ontem do forno a nova versão do Ubuntu codinome Intrepid Ibex, essa versão trás bastante novidades e atualizações de diversos softwares. Entre alguma das funcionalidades se destaca:

  • Suporte a 3G
  • Instalar o ubuntu a partir de USB
  • Gnome 2.24

Entre outras feautures e novas versões. Você pode fazer o download aqui, ou fazer o upgrade ou pedir um cd do ubuntu 8.10 Intrepid Ibex.

Estou trabalhando em um projeto com o Drupal, confesso que minha animação não está das maiores, devido ao fato de até agora não ter tido muita programação. É isso mesmo, até o momento foi necessário escrever poucas linhas de código e porém o site já está com grande parte das suas funcionalidades prontas.

Isso ocorre devido o CMS Drupal, e sua grande gama de módulos. Porém a linha de aprendizado do Drupal, não é uma tarefa muito simples. Passei boa parte do meu tempo lendo sobre. Logo resolvi fazer um review pequeno dos livros de Drupal que estou a ler.

Packet – Building powerful and robust websites with Drupal 6

Este livro corresponde ao que ele se propõem, que é ensinar a fazer sites com o Drupal, ele vai de explicações básicas, de como instalar o Drupal, de como habilitar módulos, até como customizar módulos. Logo este é um bom livro para se ter uma visão geral de como o Drupal funciona.

Learning Drupal 6 Module Development

Ensina os primeiros passos para desenvolvimento de módulos no drupal, contém algum exemploes de desenvolvimentos de módulos, relacionados com os nodes, blocos, entre outros módulos core do drupal. Assim como criar interfaces de formulário, e páginas no drupal, tudo através do módulo. É um livro rasoável que vai te dar uma boa base sobre os padrões de desenvolvimento de módulos, assim como proceder o desenvolvimento dos mesmos.

Esses dois livros foi que acabei por ler algumas partes para me ajudar no desenvolvimento, porém é recomendado a leitura da documentação do drupal, que possui no próprio site do drupal.

Assim como dúvidas, existe um canal no irc para saciar elas:

server: irc.freenode.org
canal: #drupal-br e #drupal

Ou pelos fórums da comunidade Brasileira e Internacional:

Brasil: http://drupal-br.org/forum
Internacional: http://drupal.org/forum

Como não achei o TUX versão Xavante resolvi fazer:

Acho que para um programador ter feito a camiseta ficou bacana.

Ocorre em pelotas de 20 à 24 de outubro, o UPGRADE 4.0, Semana Acadêmica da Informática da UCPel.

Data: 20 a 24 de outubro
Local: Auditório Central da UCPEL

Palestras Confirmadas (durante a noite):

  • TV Digital
  • GNOME
  • OpenSolaris
  • SBC
  • Segurança
  • Tecnologia 3G
  • Cybercrimes

Cursos Confirmados (durante o dia):

  • ASP.NET
  • Java Avançado
  • MySQL e PHP
  • Manutenção de Hardware

Programação Completa (provisória):
http://dainfo.ucpel.tche.br/

Inscrições:
http://dainfo.ucpel.tche.br/

Vou começar hoje uma série de post’s, voltadas para os programadores, vou passar alguns padrões de projetos a serem utilizados.

Mas afinal o que são padrões de projeto?

Padrões de Projetos ou Design Patterns, são características arquiteturais de software, que ao longo do tempo se tornaram soluções de problemas. Ou seja, você tem um problema, muitas vezes outras pessoas já passaram por ele, logo, alguém já resolveu ele. Com isso, com problemas freqüentes de arquitetura na programação que os padrões de projetos surgiram.

Eles são, soluções muito boas, que várias pessoas ajudaram a pensar na melhor solução, para problemas existentes.

Bom mas chega desse papo, deixa um pouco mais da história, para um próximo post…

Vamos por a mão na massa, opa, massa não, pois dessa vez não é CakePHP. Bom chega de piadinhas sem graça, vamos ao primeiro padrão de projeto a ser apresentado.

É ele o Singleton.

Ao que se refere o Singleton, o seu nome é bem sugestivo, Singleton é aquele padrão que garante apenas 1 instância de 1 classe, ou seja ele garante que após instanciar uma vez a classe, você sempre irá estar usando o mesmo objeto.

Hmmm, legal mas quando usar???

Em todos os lugares, onde se precisa garantir uma instancia de uma classe, ou seja, por exemplo 1 log de dados, onde apenas um objeto da aplicação é responsável pelo controle dos log’s. Outro exemplo, é uma conexão de banco de dados, que no caso seja necessário garantir sempre a mesma conexão. Entre outros exemplos.

Bom vamos ao exemplo da implementação, em PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
class Singleton {
 
	public static $instance; //atributo responsável por retornar a instancia da classe.
	public static $cont; //atributo que serve apenas para contar quantas vezes a classe foi chamada.
 
	/**
	* Método construtor responsável por criar a página, é declarado como privado para garantiar,
	* que apenas a classe Singleton chame ele!
	*/
	private function __construct() {
		echo "<h1>Sou sempre o mesmo, com a mesma instancia!</h1>
"; //Texto para mostrar quando ocorre a instancia e comprovar que só ocorre uma vez!
	}
 
	/*
	* Método singleton, responsável por ser o construtor da classe, por ser abstrato e público,
	* é possível chamar ele sem termos o objeto da classe Singleton;
	*/
	public static function singleton() {
		//Verifica se o atributo $instance já foi setado, caso não faz a instancia dele
		if (!isset(self::$instance)) {
			//Criamos o objeto e alocamos ele para o atributo self::$instance
			self::$instance = new Singleton();
		}
 
		//Código para mostrar quantas instancias requiridas da classe tivemos, e que é sempre o mesmo objeto
		self::$cont++;
		echo "e fui chamado ", self::$cont ," vezes.";
 
		//Retorna a instancia da classe!
		return self::$instance;
	} 
 
}
 
//5 chamadas do objeto singleton
Singleton::singleton();
Singleton::singleton();
Singleton::singleton();
Singleton::singleton();
Singleton::singleton();
 
?>

Acho que os comentários estão explicando bem o funcionamento, mas vamos tentar explicar um pouco mais, se temos que garantir apenas 1 objeto, não podemos ter o método construtuor liberado para novas instancias, logo criamos um novo método singleton, este passa a ser o responsável por criar um novo objeto, caso seja a preimeira instancia ou retornar o objeto que já foi instanciado.

Bom por hoje é isso, vou continuar a explicar em PHP alguns Designer Patterns.

BuscaPé, líder em comparação de preços na América Latina