BlogCamp-ES
Eu não sou um exemplo de blogueiro, não posto com regularidade e não faço parte da panelinha da blogosfera brasileira, mas não podia deixar de me fazer presente a este evento que aconteceria justamente no prédio (e mais precisamente nas salas) onde estudo, no CT9 da UFES (Universidade Federal do Espirito Santo), além de ter um blog e estou sempre acompanhando o que se passa na rede dos blogs.
Estavam presentes no evento figuras muito conhecidas e também muitas pessoas que nunca tinha ouvido falar (ou cujo blog nunca tinha visitado), e isso é muito interessante, é um sinal de que há muito mais blogueiros do que eu podia imaginar (principalmente aqui no estado).
O evento em sí, para mim foi muito proveitoso. Fiz ótimos contatos (RafaCST, Lu Monte, Lu Freitas, Jonny Ken, Jonnhy C, Saulo, Alexandre Sena, Dulcetti, Marquin05, Karyne Lira, Pedro Cardoso, Thalles Waichert e outros) e presenciei interessantissimos debates. Mas essa não foi a opnião de todo mundo (talvez até da maioria), que achou que o clima de desconferencia do evento passou do limite. Outros acreditam que o modelo de blogcamps está esgotado ou se esgotando, o que eu não concordo, apesar de ser o primeiro blogcamp que participo. Acho que o que faltou foi uma pessoa de referencia, alguem da Confraria ou simplesmente alguem desinibido o suficiente para puxar um assunto, formar uma roda de pessoas e começar a debater.
Mas apesar de tudo, quem ficou presente o tempo todo no evento pode presenciar ótimos debates e grandes trocas de experiências e idéias. Principalmente no podcast (muito bom por sinal) produzido no sabado a tarde e na desconferencia que rolou no inicio da manhã do domingo.
Quem tentou acompanhar pelo Twitter talvez tenha tido a impressão de que as coisas não rolaram muito como esperado, mas a opnião de quem esteve sempre presente, diz que o saldo do evento foi positivo, e descrevendo em apenas uma palavra como disse o Rafael: “Uhuullll!!!”.
Fotos do BlogCamp-ES no Flickr
Fotos Oficiais com descrição de quem é quem (por Flickr de Jonny Ken):
Outros posts sobre o BlogCamp-ES:
- Papo de Homem: Primeiras Cenas do Blogcamp-ES
- Futilidade Pública: BlogCampES: devagar é a mãe. A gente gosta é de conversar
- Do Avesso: O Assunto é BlogCampES
- Prove Isso: #BlogCampES - Final do 1º dia!
- ETC: BLOGCAMP/ES - parte 2 - O primeiro dia de fato. - BLOG CAMP/ES - parte 3 - O fim!
- Receita do Sucesso: BlogCamp ES: Diário de viagem
Standard PHP Library - Parte 2
Há algum tempo havia escrito sobre a SPL e fiquei por publicar outros artigos sobre o assunto. Infelizmente não consigo manter a regularidade de publicação que gostaria aqui no blog, mas vou indo na medida do possivel.
A partir da versão 5 do PHP a SPL já vem importada nativamente, o que facilita a utlização dos recursos que ela oferece. Desde então os desenvolvedores do PHP vem trabalhando pesado para melhorar o suporte a orientação a objetos. É claro que até lá ainda há um longo caminho a percorrer e isso requer um grande esforço de toda comunidade.
Isso certamente trará beneficios, tornando a linguagem mais madura, robusta, sem perder a simplicidade que a tornou tão popular. Há também os lados negativos, por exemplo a incompatibilidade de scripts desenvolvidos para versões anteriores, mas acredito que o "prejuizo" seja por uma boa causa. Já está na hora de resolvermos problemas de inconsistencia na padronização da nomeclatura das funções das bibliotecas nativas da linguagem (algumas utilizam o separador undescore como str_replace e outras não, como strlen), o que provoca em perda de produtividade.
A SPL veio com o objetivo de prover funcionalidades básicas, organizadas através de classes e interfaces, que evitam que o programador precise reinventar a roda e permitindo que ele possa focar suas atenções para a solução dos reais problemas. Nada pior do que perder horas para resolver problemas que foram criados pela própria linguagem.
A seguir demonstrarei como utilizar as classes de manipulação de arquivos SplFileInfo e SplFileObject.
SplFileInfo
Esta classe fornece todas as informações disponíveis para um determinado aquivo, passado como paramento na instanciação do objeto.
-
<?
-
$file = new SplFileInfo("./meu_arquivo.txt");
-
?>
A partir disso, o objeto fornece os seguintes métodos:
- getATime(): Data em timestamp do último acesso ao arquivo.
- getCTime(): Data em timestamp da criação do arquivo.
- getGroup(): Retorna o group do arquivo (disponível apenas em sistemas unix).
- getInode(): Retorna o inode do arquivo (disponível apenas em sistemas unix).
- getMTime(): Data em timestamp da última modificação do arquivo.
- getPath(): Retorna o diretório no qual o arquivo está contido.
- getPerms(): Retorna as permissões do arquivo.
- getRealPath(): Retorna o caminho completo até o arquivo.
- getSize(): Retorna o tamanho do arquivo em bytes.
- isDir(): Retorna um valor booleano informando se o arquivo é do tipo diretório
- isExecutable(): Retorna um valor booleando informando se o arquivo é um executável válido.
- isFile(): Retorna um valor booleando informando se o arquivo é mesmo um arquivo, e não um diretório ou um link.
- isLink(): Retorna um valor booleando informando se o arquivo é um link para outro arquivo ou diretório.
- isReadable(): Retorna um valor booleando informando se o arquivo pode ser lido ou não.
- isWritable(): Retorna um valor booleando informando se o arquivo pode ser alterado ou não.
- openFile(): retorna um objeto do tipo SplFileObject, que será apresentado abaixo.
Estas funções fornecem os principais dados que podemos obter dos arquivos, e com certeza pode resolver muitos problemas. Principalmente as funções getMTime(), isWritable() e getSize() são comumente utilizadas no nosso dia-a-dia.
SplFileObject
Esta classe herda a classe SplFileInfo. Logo ela possui todas os métodos que a classe explicada acima possui, porém implementa também a manipulação do conteúdo do arquivo.
-
<?
-
$file = new SplFileObject("./meu_arquivo.txt");
-
?>
Colocarei apenas os métodos mais importantes a seguir:
- eof(): Retorna um valor booleando indicando se o ponteiro está no fim do arquivo.
- fflush(): Força a escrita em disco do buffer do arquivo.
- fgetc(): Retorna uma string contendo apenas um caracter lido do arquivo.
- fgets(): Retorna uma linha do arquivo.
- fscanf($format): Interpreta a leitura de um arquivo de acordo com o formato passado como parametro.
- fseek($pos): Move o ponteiro do arquivo.
- fstat(): Retorna um vetor com detalhes do arquivo.
- ftell(): Retorna um inteiro com posição do ponteiro no arquivo.
- ftruncate($size): Reduz o tamanho do arquivo ao tamanho especificado.
- fwrite($string): Escreve o conteúdo da string no arquivo.
- rewind(): Volta o ponteiro para o inicio do arquivo.
- seek($line): Muda o ponteiro para linha especificada.
Estas funções são basicamente as funções oferecidas pela biblioteca atual do PHP, organizadas em objetos e permite a iteração já que esta classe também estende a interface Iterator. É importante relembrar também que estes métodos são nativos e tão eficientes quanto as funções já existentes.
Vale a pena dar uma conferida nas ferramentas oferecias pela SPL na sua oculta documentação.

