Entendendo os programadores

Deve-se perceber que nenhum engenheiro de software eticamente preparado jamais vai consentir em escrever uma procedure DestroyBaghdad. A ética profissional básica vai, por outro lado, pedir dele que escreva uma procedure DestroyCity, para a qual Baghdad possa ser passada como um parâmetro.

Mais aqui, inclusive muitos links sérios e interessantes.

xSpec, o emulador de Sinclair ZX Spectrum

Para os que gostam da história da informática: o primeiro computador em que eu programei na vida foi um Sinclair ZX Spectrum, que aqui no Brasil se chamava TK-90X. Pois não é que o saudoso micrinho fez 25 anos mês passado?

Baixei nos repositórios do Ubuntu o xspec, um emulador de Spectrum, para ver se eu ainda sabia alguma coisa de BASIC, e fiz um videozinho para que os mais novos nesse negócio possam ver um pouquinho de como foi o início da programação em microcomputadores:

Ah, que saudades!

Imite o Mac OS X você também

Dashboard, Exposè, estilo Aqua, tudo já foi copiado no elegante Mac OS X. Mas a marca registrada do sistema ainda é o Dock. Há uma porção de cópias interessantes para o Dock em diversos ambientes. Mas, com javascript e CSS, eu nunca tinha visto uma razoável. Até que vi essa aqui. Veja esse Dock rodando nesse exemplo.

Muito bom. Tanto o código quanto o resultado visual.

Ah, se você tiver um tempinho para estudar o código, vai passar a odiar um pouquinho mais o Internet Explorer ;-)

Aprenda expressões regulares!

Exemplos de expressões regulares PHP. Expressões prontas para uma porção de coisas.

Seguem também uns exemplos brasileiros bem comuns:

CPF='\b([0-9]{3}\.?){3}-[0-9]{2}\b'
CNPJ='\b[0-9]{2,3}\.?([0-9]{3}\.?){2}\/[0-9]{4}-[0-9]{2}\b'
CEP='\b[0-9]{2}\.?[0-9]{3}-[0-9]{3}\b'

Expessões regulares permitem fazer com uma linha de código coisas que, de outra forma, levariam um bocado de código e tempo. Veja, por exemplo, este trecho de Javascript:

// Exibe o texto da página, removendo todas as tags
t=document.body.innerHTML
t=t.replace(/<.*?>/g,"")
t=t.replace(/[ \t]+/g," ")
t=t.replace(/(\n ?)+/g,"\n")

Pode dar um pouco de trabalho aprender expressões regulares[bb], mas eu garanto que o tempo que você investir nisso se paga muito rápido.

A experiência de uso Linux

Sobre as grandes diferenças: Coisas que posso fazer em Linux e em windows não

Sobre as semelhanças (e as pequenas diferenças): Linux[bb] x Windows

Se você trabalha com internet, essa série deve interessá-lo:

Por falar nisso, no terceiro artigo dessa série o perguntou nos comentários:

Como você, vim do Windows/DreamWeaver para Linux/?(ainda). Gostei do
que vi no QuantaPlus, realmente é excelente, porém um das vantagens que
eu via ao usar o DreamWeaver com seu FTP era
o de ter sempre a certeza de pegar a última versão do programa e não
precisar me preocupar em enviar o arquivo certo e se está na última
versão. Eu abria o arquivo direto do ftp, ele baixava o último
(inclusive as dependências) abria na minha tela, eu editava (um ou mais
de um) salvava e o DreamWeaver já efetuava o Upload. Eu gostaria de
saber como é o seu procedimento agora. De repente eu também mudo e vejo
as vantagens. Sempre devemos estar aberto a aprender, né?

Tentei responder por lá, mas o sistema matemático parece funcionar com uma matemática diferente da minha. Então minha resposta vai aqui:

araujo,O Kate faz isso que você está querendo. Ele tem uma barra lateral de navegação em arquivos. Você pode adicionar um favorito ali no formato:

ftp://usuario:senha@servidor.com.br/pasta

Também suporta uma série de outros protocolos, como o sftp. Adicionando o favorito, é só clicar nele que o Kate lista os aruqivos e pastas. Clicando num arquivo o Kate abre diretamente do FTP, e se você salvar, salva direto lá também.

A dobradinha nautilus/gedit também torna isso transparente para você. Se você se conecta a um servidor de FTP pelo nautilus, pode clicar com o botão direito em qualquer arquivo e escolher “Abrir com Editor de Textos”. O nautilus também coloca o servidor de FTP como um dos caminhos possíveis nas caixas de abrir e salvar do gedit.

A quebra da proteção anti-cópia do HD-DVD, o Digg, e o futuro do DRM e das indústrias de música e cinema.

Saudações amigos piratas!

O Digg perdeu o controle de seu próprio site por causa da singela seqüência de números[bb] acima. Uma história interessante que vale a pena acompanhar. Sua primeira tendência pode ser a de criticar o Digg pela censura. Mas, pense bem, se fosse o seu pequeno negócio de milhões de dólares que estivesse ameaçado de processo judicial, será que você seria realmente tão corajoso assim?
Continuar lendo

Resultado do concurso dos 4KB

Depois de muito confabular, chegamos a uma conclusão a respeito do Desafio dos 4KB.

O vencedor é o Michael Humberto Castillo, com seu joguinho. Demoramos a decidir porque o joguinho tem uns bugs, mas foi o mais impressionante que foi enviado. Como o critério, segundo o anúncio da promoção, era a quantidade de barulho produzida pela reação emocionada do pessoal aqui, não conseguimos deixar de premiar o Humberto, apesar dos pequenos bugs. Parabéns Humberto! Aguarde nosso contato.

Parabéns também a todos os outros participantes! Foi muito divertido.

Desafio dos 4KB

Momento Jabá: Quanta coisa você consegue fazer com apenas 4KB?

Crie uma página que faça algo impressionante com apenas 4KB de código. Pode usar HTML válido ou inválido, XML, Javascript, CSS e o que mais você quiser, desde que esteja tudo em uma única página. Nada de Flash, imagens externas, scripts externos ou Ajax. O resultado pode ser o que você quiser, desde que seja impressionante. Pode também funcionar apenas no Firefox, se você preferir. Afinal, você vai programar só por diversão.

Inclua a frase “Visie, ensinando os melhores”, publique em algum lugar e envie o link para a gente. Vamos mostrar para o pessoal da Visie e ouvir o “Uau!” da galera. A página que conseguir o maior número de decibéis na reação dos espectadores, a mais impressionante, a mais surpreendente, vai ganhar um curso online de Javascript Crossbrowser da Visie, para você ou para doar para alguém.

Para que todos possamos ver os trabalhos, deixe um comentário aqui com o link para o seu. Você tem até sexta-feira, às 11h da manhã para enviar seus impressionantes 4KB de código. Vamos começar a avaliação na sexta-feira ao meio-dia, e a hora em que vai sair o resultado depende da quantidade de participantes.

Vamos mostrar para esse pessoal boboca por aí que programar[bb] é muito mais divertido que ficar escrevendo frasezinhas de efeito.

Divirtam-se!

Quem tem medo do terminal?

Estava ajudando um amigo a instalar o Ubuntu[bb] em sua máquina, tentando evitar, a todo custo, me conectar por ssh. E tentando evitar também o uso de terminal, pois meu amigo estava migrando de Windows e parecia ter um certo receio da tela preta. Tivemos alguns problemas com o Automatix, e entrei no canal #ubuntu-br da Freenode para perguntar. Fiquei impressionadíssimo com a solicitude das pessoas que estavam online. Uso bastante irc, e é comum estar em canais sobre Python[bb], SQLObject, Javascript e etc. E sei que geralmente quem se dá ao trabalho de estar ali é porque realmente gosta de ajudar. Mas o pessoal da #ubuntu-br foi especialmente paciente e atencioso.

Depois que desconectei, recebi até um e-mail do Vinícius Depizzol sanando as dúvidas que haviam ficado pendentes. Obrigado Vinícius, obrigado ao pessoal do #ubuntu-br.

Uma das coisas que o Vinícius me mostrou é que eu não preciso de Automatix. Quase tudo o que se faz por ele pode ser feito pelo Ubuntu, na interface gráfica, sem nenhum programa especial. Boa parte no menu “Aplicações” -> “Adicionar/Remover”. E o que não dá para resolver lá geralmente é muito fácil de fazer no terminal.

Isso me fez pensar. Nós, programadores, sabemos que o terminal (shell, console ou como você preferir chamá-lo) é a ferramenta mais poderosa dos sistemas Unix. Não há outra maneira de se obter a rapidez e flexibilidade que se tem num terminal.

Estes dias vi um amigo fazendo algo curioso. Ele precisa copiar uma pasta no servidor, chamada “site”, para “sitenovo”, para começar a trabalhar no novo site. Ele se conectou por FTP, copiou a pasta inteira para a sua máquina (eram alguns megabytes) renomeou e enviou de novo para o servidor. Mais de meia hora de trabalho. Ele poderia ter se conectado via SSH e feito:

cp -r site sitenovo

E em menos de um minuto a cópia estaria feita.

Claro, isso não é novidade nenhuma para o usuário de Linux que já lida com o terminal há algum tempo. Um administrador de sistemas Linux é uma pessoa muito mais feliz graças ao terminal. Mas como fazer com que o usuário de interface gráfica, que não tem gosto pela linha de comando, não perca o tempo que meu amigo perdeu? Como fazer com que o webdesigner que publica arquivos num servidor remoto aprenda pelo menos o básico? Que ele saiba copiar, mover, apagar e editar arquivos e diretórios, navegar por diretórios, sincronizar diretórios, comparar arquivos, criar pequenos scripts para automatizar tarefas e editar o seu crontab?

Google Code Prettify.

Agora este blog tem syntax highlight para os trechos de código que eu escrevo, por exemplo:

function Pessoa(nome,idade,email){
// Para criar as propriedades da classe usamos a palavra-chave this
this.nome=nome
this.idade=idade
this.email=email
// Não existe, em javascript, o conceito de método. Um método é uma
// propriedade como outra qualquer, cujo valor é uma função e,
// portanto, é executável.
this.digaOi=function(){
alert("Oi, eu sou "+this.nome+"!")
}
}

Levei dez minutos para fazer isso. Baixei e instalei a Google Code Prettify e escrevi um plugin do WordPress para adicionar a classe prettyprint a todas as minhas tags <code> e estava feito.

Instruções detalhadas:

Primeiro baixe esses dois arquivos e coloque-os em seu site. Pode ser no diretório raiz. Em seguida inclua no head de suas páginas:


<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>

Você pode alterar o prettify.css para que fique com as cores que você desejar.

O passo seguinte é colocar onload="prettyPrint()" na tag body.

Agora é só substituir suas tags <pre> e <code> por <pre class="prettyprint"> e <code class="prettyprint">. Pronto, está funcionando.

WordPress

No WordPress você pode alterar o head de sua página e incluir o onload no body no editor de templates, editando o arquivo Header. Para incluir a classe em todas as suas tags code pode copiar o plugin abaixo:


<?php
/*
Plugin Name: Prettify
Version: 1.0
Plugin URI: http://blog.elcio.com.br/google-code-prettify/
Description: Prepares your code snippets to <a href="http://code.google.com/p/google-code-prettify/">Google Code Prettify</a>, adding class="prettyprint" to them.
Author: Elcio Ferreira
Author URI: http://blog.elcio.com.br
*/
function prettify($text) {
return str_replace('<code>','<code class="prettyprint">',$text);
}
add_filter('the_content', 'prettify');
add_filter('the_excerpt', 'prettify');
add_filter('comment_text', 'prettify');
?>

Você pode baixar esse plugin aqui.

Terno e gravata ou bermuda e chinelo?

Não sei se foi de propósito, mas esse artigo:

Dez itens para que os geeks trabalhem em paz

Tem tudo a ver com esse:

Estilo da Americanas contrasta com o do Submarino

Como é aí, onde você trabalha? Você bate cartão? Tem que usar gravata? Como são os processos de trabalho? Que tipo de prestação de contas do seu trabalho você precisa fazer?

Yahoo! Pipes: criar mash-ups é como brincar de Lego

http://pipes.yahoo.com/

Assombroso. O nome deve de alguma maneira ser inspirado nos pipes do Unix. Sabe aquele papo que quem usa Linux vive dizendo, que o grande poder do Linux[bb] só é percebido quando você entende como usar o terminal e os pipes? Sabe aquele outro papo, do pessoal da semântica e do XML, de que essa coisas toda torna as aplicações mais fáceis de se integrar?

Pois é, o Yahoo! Pipes dá um gostinho das duas coisas. De um jeito que qualquer um com um pouquinho de raciocínio lógico consegue experimentar, sem precisar saber programar.

Aprendendo a programar, em Python, Ruby, C++, Java ou Logo.

Eu já tinha lido este excelente livro (e-book grátis):

How to Think Like a Computer Scientist: Learning With Python

Eu costumo recomendar a todo mundo que está tentando aprender lógica de programação, e o uso quando preciso ensinar alguém a programar. Eu já sabia que ele é uma versão em Python[bb] do original, em C++

Mas só hoje fiquei sabendo que o mesmo livro também está disponível nas versões Java, Ruby e Logo.

Agora você pode ensinar seus sobrinhos a programar usando sua linguagem de programação predileta. E, se eles ainda não tiverem idade para coisas como orientação a objeto, e precisarem de algo mais concreto, pode usar Logo.

Ajude o Open Source encontrando defeitos

Você pode ajudar um projeto Open Source sem saber programar e sem gastar horas com isso. Basta escrever um bug report minimamente detalhado.

Por exemplo, o Automatix travou aqui no meu Linux durante uma instalação. Se eu usasse um sistema de código fechado, dificilmente poderia entender o que estava acontecendo. Mas na arquitetura aberta e flexível de sistemas Unix[bb], eu pude ajudar mesmo sem escrever uma linha de código. Escrevi um bug report.

Mesmo com meu inglês miojônico, o sujeito entendeu o que eu disse e já consertou o problema. A versão corrigida já está inclusive em minha própria máquina, atualizada sozinha pelo Ubuntu[bb].

Compare isso com as alternativas que você tem ao encontrar um defeito num produto de código fechado, rodando num sistema fechado e complicador como o Windows. O Linux[bb] também tem bugs, claro. A diferença é que com Linux você não está impotente. Você pode ajudar.