Agora sim!!! Seus problemas acabaram! Sempre quis ter um plugin para monitorar quais usuários podem escrever em uma determinada categoria fazendo do meu blog um blog comunitário com regras de usuários. Sempre procurei mas nunca achei realmente um cliente que precisava.

Não achava. A @s1mone do pixeladas aleatórias me pediu para fazer um plugin que irá acabar com essa deficiência que o wordpress tem de niveis de acesso de multi-usuários que podem postar em qualquer categoria. Qualquer categoria? Meu blog não é bagunça!

Agora, com o user-cats-manager (plus exterminator tabajara) posso convidar pessoas para postar em meu blog, mas elas só podem postar na categoria que eu quiser que postem, muito útil para
conteúdos jornalisticos onde um repórter irá fazer parte do grupo de tecnologia e só poderá postar em informática, mac, windows e linux. Ele também não pode criar uma nova categoia, afinal: Meu blog não é bagunça!

Só tem uma coisa: administradores podem postar em qualquer categoria já que eles tem acesso à administração do plugin. O lance é, administrador deve ter todas as responsabilidades do blog, então deixe apenas um admnistrador no comando, gerando novos usuários e definindo as regras. Para os outros, você pode usar um editor, que pode escrever e postar no blog, mas não tem funções administrativas. Ou mesmo um contribuidor, que pode escrever, mas sua matéria deve passar pela mão do editor para poder ser publicada.

Eu recomendo o roler manager para gerar novos usuários com diferentes permissões de acesso, lembrando que apenas o administrador tem acesso à administração do user-cats-manager.

O plugin encontra-se na versão ingles para agradar os gringos (a maior parte de quem usa a internet no mundo é gringo), mas está com todas as tags de tradução que o wordpress sugere __(). Logo será facil criar a tradução para brazuca, mas estou meio sem tempo para fazer isso agora, então se tiver alguém que saiba como e se habilitar a fazer a tradução, ficarei muito grato e coloco como contribuidor do plugin. :D

Se você quiser colaborar também mas não sabe programar ou não tem vontade ou tempo de aprender como funcionam os plugins do wordpress, teste o plugin e coloque sua sugestão nos comentários deste post. Todas as sugestões serão avaliadas com carinho e quem sabe implementadas. :)

Sabe aquele ótimo sistema de gerenciamento de conteúdos onde você pode gerenciar vários textos de forma simples e eficaz. Pois é, estou falando dele mesmo, o WordPress.

Quem já usa o wordpress e atualizou para a nova versão, viu que pode escrever um simples arquivo, denominado home.php na sua pasta de templates e isso será sua home page, onde você pode colocar vários the_loops com vários filtros, como apenas pertencentes à uma determinada categoria.

Recentemente, a @s1mone me pediu para escrever um plugin para trabalhar exatamente nesta área. O nome do plugin é get image e pode ser encontrado no repositório de plugins do wordpress.

Ele pega as imagens a primeira imagen que você fizer upload referente àquele post e te retorna a mesma num dos três formatos gerados pelo wordpress: thumbnail, médio e tamanho real.

Estes tamanhos são definidos na área de configuração do próprio wordpress, assim você pode usar até três tamanhos de arquivos diferentes para um post. Como um thumbnail do post. E este post não precisa ter a imagem escrita no próprio post, basta ser a primeira imagem da biblioteca do post.

Bem, para usar o plugin basta instalá-lo como qualquer outro e no seu template, use um dos seguintes comandos.


gi_fullsize ();
gi_medium ();
gi_thumbnail ();

Estava procurando informações sobre a aplicação “web py” e fui ver o que já havia sido feito com esse framework. Não é que me deparo com o jottit!? Nele podemos criar uma página web simples mas com todos os recursos necessários. Ótimos para escrever tutoriais ou anotações soltas sobre algo.

Bom resolvi começar a escrever sobre o meu editor de textos favoritos no Linux: o Vim. Com ajuda de um host de imagens (picasa) e um host de videos (youtube) pode escrever o que eu queria. Quem quiser, pode dar uma lida e fique à vontade para comentar ou tirar dúvidas a respeito de tal editor que resolve muitos problemas no dia-a-dia de qualquer programador.

O tutorial está sendo escrito, então pode haver uma atualização/correção a qualquer momento, mesmo que você esteja lendo este post um ano depois de eu tê-lo publicado. ;D

Categorias do Technorati , , , , , , , , , , ,

Post Flash

Maio 22, 2008

o @elcio está distribuindo neste exato momento, ingressos para o ELPI em BH no twitter. Para você ganhar um, basta você ter uma conta no twitter e enviar uma mensagem para ele pedindo os benditos ingressos.

O ELPI é um encontro muito interessante que acontece todo ano patrocinado pela Locaweb, vale a pena ir. Ainda mais se for na faixa e de uma forma tão simples.

Se você ainda não assina o twitter, assine! Muitas vezes o pessoal distribui ingressos ou fala sobre uma feramenta nova que você não vai encontrar em um post formal como o meu blog. Se quiser, pode me aconpanhar, meu nick lá é @dgmike. :D

strtoupper melhorado

Maio 19, 2008

Há uma função em PHP que coloca uma string com todas as letras maiusculas. Hmmm… todas não, ela não consegue colocar os caracteres latinos (caracteres com acentos ou cedilha) em maiúsculas. Então resolvi escrever minha própria solução:


function upper ($str) {
  $LATIN_UC_CHARS = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ";
  $LATIN_LC_CHARS = "àáâãäåæçèéêëìíîïðñòóôõöøùúûüý";
  $str = strtr ($str, $LATIN_LC_CHARS, $LATIN_UC_CHARS);
  $str = strtoupper($str);
  return $str;
}

Para isso, usei o a função strtr que me permite “traduzir” os caracteres, trocando-os pelos seus respectivos. Ou seja, troca o primeiro caracter do primeiro parametro pelo primeiro caractero do segundo parâmetro; troca o segundo do primeiro com o segundo do segundo; terceiro do primeiro com o terceiro do segundo; quarto do primeiro com quarto do segundo e assim por diante.

Deixo aí para vocês fazerem a versão inversa, ou seja, colocar em minúsculas.

Palestras da visie

Maio 12, 2008

Aqui na visie o pessoal está organizando uma série de palestras sobre produtividade, acessibilidade, linguagens, programação, produtividade. O custo de cada palestra é de apenas R$ 35,00 (R$ 30,00 se cadastrado com antecedencia) um preço muito amigável, levando em conta a informação que eles vão passar e a quantidades de horas que eles vão falar.

Não digo isso só porque eu sou funcionário da visie, mas antes de entrar aqui eu assisti a alguns eventos dos caras como o CodeShow, palestra (resenha do arquivo de audio) no ELPI e interCon, universidades ou mesmo videos no Youtube (ah, o bate papo com eles também é muito bom, por mais que saibamos, eles sempre tem uma coisa nova para ensinar) com palestras dos caras e digo, com experiência que vale a pena pagar o preço por cada hora com os caras.

As palestras vão até outubro e cada uma leva em torno de duas horas (das 19:30 até às 21:30) e acontecerão Colégio Adventista da Liberdade (fica uma rua atrás do metrô, como você pode conferir no mapa). E até agora, as paleastras são: Formulários, Internet Móvel, JQUERY, implementação de Layout CSS, Python, Acessibilidade e Controle de Versão.

Enfim, mesmo se eu fosse de outra cidade eu juntava uma excursão, pegava um ônibus e algumas palestras para visitar a cidade e ver a palestra dos caras mais tarde. Vale a pena, já fiz muito isso. Se você quiser saber mais detalhes sobre os eventos, o @diegoeis está tirando todas as dúvidas sobre os eventos no twitter e eu também posso colocar mais informações aqui no meu blog, basta comentar suas dúvidas.

[Nota] Para quem mora fora de São Paulo e virá de ônibus, o ônibus te deixa dentro da estação de metrô (a rodoviária e o metrô são interligados) e o evento é uma rua atrás do mesmo. O metrô em São Paulo é um meio de transporte muito seguro. Então quase não há perigo para ir às palestras.

Essa notícia é um pouquinho velha, mas uma boa notícia nunca é tarde para contar. É isso mesmo, você pode comprar um registro de dominio .com.br apenas com seu CPF. Como eu compro meus domínios através de CPF de empresas para as quais presto serviço, agora ficou mais fácil agradar os clientes, já que eles não precisam me passar o CNPJ, que muitas vezes não possuem.

Essa notícia eu recebi via e-mail pelo próprio registro.br, órgão responsável pelo registros de diminios no Brasil. Mas pode ser que você não tenha recebido ou mesmo procurado saber a respeito.

Deixe de pagar R$ 90,00 por um domínio simplesmente por falta de informação (eu já vi pessoas cobrando esse absurdo), e compre logo seu dominio .com.br por apenas R$ 30,00 sem CNPJ, apenas com seu CPF. Talvez eu compre um pra mim…

[update] Obrigado ao Rafael e ao William pela correção.

Um tempo atrás comecei a fazer um tutorial sobre criar tabelas com o auxilio de uma classe em php[bb] que gera uma tabela semantica[bb] (o que é dificil) e de forma simples. Antes de continuarmos a classe propriamente dita, irei explicar um pouco sobre expressões regulares[bb].

As expressões regulares auxiliam muito na hora de fazer uma busca sobre qualquer coisa em um bloco de texto, como por exemplo os links de um bloco html[bb] ou os emails contidos em uma conversa ou mesmo o ip contido em uma frase. Tudo o que é necessário é saber o padrão necessário do que você procura.

Vamos pegar um exemplo bem básico, um bloco de texto e vamos pegar alguns dados contidos nele.

IP é um acrónimo para a expressão inglesa “Internet Protocol” (ou Protocolo de Internet[bb]), que é um protocolo usado entre duas ou mais máquinas em rede para encaminhamento dos dados.

Os dados numa rede IP são enviados em blocos referidos como pacotes ou datagramas (os termos são basicamente sinónimos no IP, sendo usados para os dados em diferentes locais nas camadas IP). Em particular, no IP nenhuma definição é necessária antes do host tentar enviar pacotes para um host com o qual não comunicou previamente.

Estes são exemplos de IPs: 189.78.131.168 , 189.78.131.168 , 10.27.12.11 , 192.168.0.1 , 127.0.0.1

Retirado da Wikipedia

Percebam que existe um padrão na numeração dos IPs: Quatro sequências de até três números separados por pontos. Nas expressões regulares, podemos fazer buscas por digitos usando a expressão \d que significa digito, então para produrarmos um digito usamos \d. Também podemos definir uma quantidades de vezes que esse caracter pode aparecer, no caso, pode aparecer de uma a três vezes. Logo, nossa busca fica assim: \d{1,3}

O ponto também é uma expressão regular, que indica qualquer coisa. Sim! Qualquer coisa, ele procura por uma letra, número, espaço, pontuação, <CR> (Carriage Return, ou tecla enter), então para “desconvertermos” essa expressão regular, usamos uma barra invertida antes. Logo nossa busca por IP é: \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} ou simplesmente (\d{1,3}\.){3}\d{1,3} que indica uma busca de três sequencias de \d{1,3}\. e uma de \d{1,3}

Expressão Regular em busca de IPs de um texto

Como vocês podem constatar na imagem, a expressão regular funcionou perfeitamente. Eu uso essa extensão do Firefox (Regular Expressions Tester) para de auxiliar no dia-a-dia, já que uso expressões regulares muitas vezes por dia.

Outra coisa interessante em expressões regulares é que podemos definir uma lista de palavras ou expressões que queremos que apareça em nossa sequência. Fazemos isso através de parênteses e “pipes[bb]” (ou barrinha em pé). Eis um exemplo prático, queremos procurar a palavra menino e menina. Basta fazermos a seguinte sentença menin(o|a)

[Nota] A busca anterior também poderia ser dada por menin[oa] uma diferença básica entre parânteses e colchetes é que em parênteses podemos fazer uma busca por outras expressões ou palavras, já que nos colchetes apenas por caracteres específicos. Logo, cas(a|inha|arão) irá procurar pelas três palavras, o que não é possivel fazer com os colchetes.

Vamos pensar em entradas de usuário, ou seja, frases ou listas simples (lembre-se que o nosso objetivo é a classe de criação de tabelas, logo as entradas são pequenas). Então, queremos procurar uma determinada expressão no inicio da entrada do usuário[bb]. Algo como dois pontos e uma palavra e depois dois pontos.

Explico: Digamos que queremos que o usuário entre com os seguintes dados, sequencialmente:

  • Nome
  • Sobrenome
  • :centro: Idade
  • :tel: Telefone
  • :tel: Celular
  • CPF
  • Filiação (Pai)
  • Filiação (Mãe)

Perceba que o usuário quer colocar um atributo na entrada que alinhe ou ajuste as celulas para uma determinada classe. Podemos resolver este problema usando a mágica do circunflexo (^). Quando colocado no inicio da expressão regular, ele indica o inicio da entrada. Então, nossa expressão regular irá iniciar com ^:

Assim como os digitos (\d) também existe o \w que indica um caractere alfa numérico, ou seja letras de A a Z (maiusculas e minusculas) e números de zero a nove. E também podemos definir que deve existir um ou mais desta expressão regular na oração. (Lembram do {n,m} onde n e m são os numeros limites de caracteres?) Com o mais, podemos definir que deve existir um ou mais elementos da expressão regular anterior. Assim, nossa expressão regular fica assim: ^:\w+: Com isto, pegamos o que queremos, se não existir, ele não pegará nada.

Bom, a nossa expressão regular está quase no fim. Como você é esperto, vou deixar a expressao regular final e deixarei que você pense como ela foi criada com base no que foi dito anteriormente:

^(:((\.|#)\w+|(r|c)\d+))+:

Com esta expressão regular, podemos esperar que o usuário entre com as seguintes condições e mais suas subcondições possiveis:

  • :.classe:
  • :#id:
  • :c12:
  • :r1:
  • :.classe:#id:
  • :.classe:r12:
  • :#id:c21:
  • :.qualquerClasse:#qualquerId:c21:r18

Tendo isto em mente, podemos tratar a entrada do usuário, permitindo saber que classe e/ou id ele vai querer colocar na determinada célula, e qual o numero de colspan e rowspan ele vai querer. Onde colspan é junção de colunas e rowspan é junção de linhas, como você pode ver aqui, aqui e aqui.

Digo e repito, estude expressões regulares, vale a pena! Como você pode ver para fazermos um monte de validações em nossa entrada usamos apenas 26 caracteres. Faremos o tratamento dos mesmos na próxima edição, mas adianto que usaremos as funções preg_match e preg_replace.

Li hoje no jornal impresso[bb] (Jornal do metrô) que o WordPress[bb] fará de tudo para evitar que os sites (blogs) ligados ao serviço (wordpress.com) não sejam bloqueados no Brasil.

Parece que o bloqueio foi determinado por uma ordem judicial enviada à Abranet (Associação Brasileira de Provedores de Internet) no final de março. A ordem judicial quer proibir o acesso a um unico blog[bb], o que é impossivel tecnicamente.

Por vias das dúvidas, estou fazendo o backup[bb] dos meus posts após o envio deste, assim se for bloqueado poderei levantar meu blog por conta própria futuramente.

O fatorW é escrito pelo Walmar Andrade, um cara muito inteligente formado em comunicação que escreve bons artigos em seu blog. Obviamente, ele se encontra em meus feeds e leio o seu conteudo pelo menos uma vez por mês. Recentemente ele mudou o layout do blog e anunciou. Isso caiu no meu gReader. Um tempo depois vejo, também no meu gReader, que o pessoal lá fora gostou do que viu no blog do Walmar.

Parabéns Walmar. Aprenda e se aprimore cada vez mais. É um prazer ver que o pessoal lá fora gosta dos profissionais daqui.