Programação

Copa do Mundo em ASCII

14 de junho de 2010 ás 21:06

Você sabe o que é ASCII? A grosso modo (beeeem grosso modo), é nada mais nada menos do que as letras que se pode colocar computador adentro. Coisas como ABCDE…abcd… 1234… ðøþ«/}æ… e todo o resto…

Sabendo isso, você também deve ter ouvido falar em ASCII Art. Que são desenhos feitos somente com caracteres. Tem nerds por aí que gostam de fazê-los na mão – o que é uma coisa impressionante – mas os editores de imagem como o GIMP podem converter uma imagem para texto sem problemas. Confira a logo da PontoCom em ASCII Art:

QQQQQQQQQQQQQQWWmWmWmWWQQQQQQQQQQQQQQ
QQQQQQQQQQQWmmmmmmBmBmmmmWQQQQQQQQQQQ
QQQQQQQQQWmmBBWWWWWWWWmWmmmWQQQQQQQQQ
QQQQQQQQWmmWmQWWWWWWWWQWBmmmmQQQQQQQQ
QQQQQQQmmmmQQW#mmm#mmmmQWQWmmmWQQQQQQ
QQQQQQmmmQWW##mmmmmmmmm##WWQ#mmQQQQQQ
QQQQQW##QW###mWWWQQQWQmm###QQ###QWWQQ
QQQQWZ#QW###WWWWW#mWWWWQmm##W##mSn$QQ
QQQW##WW###mQW##Z###Z##WWW##Sn$mpvnQQ
QQQ###W###mQWZ##mmmmm##Xn3mmonn##vv$W
QQW##mW##mQ##ZmQBHHHWQmqnn3Q#vv3#zIIQ
QQWZ#Q##ZQB#ZmWSnnnnv3$QXvvdZoIIXSQQ$
QQZ#mW##UB#ZmWnonoonnvv$moIlmoiQ3n>m3
QW#ZQDnnnnnmW1onmQQQmvliWpQQ32%m)o>X)
QWX#XnooonnWEvvmQWQQWmiQ]m>W)E>=deEl3
Q#ZZnnnqQXqQ1lnQQQQQQQz#OQc=eE#IveG+-
Qm#1vnXmWXZWii3QQQQQQQk=vW>:iZX+=cv::
QmSIvnXWmZZQ#W3QQQQQQQk|=WE|;Zv:.c|
QmeilvZ#QXXQ>Z)QQQQQQQ[;+Q[:.Z=. (= .
QWcQQvZZWXZ#Lvv4QQQQQD`.jD`.jf; =( _a
QQcmZWXXQ#XZQ/|+YWQWP' .m[ .]( qaXoQW
QQo=o1]XWmXX#6:: "` .jP qmodQ#SXQW
QQmp|:1)SWm!^4m, ... .jWoumQ&SXWXXXQQ
QDXw,;:;-!` .=dQgagawQ8SXXQ#SSmBSSmQQ
Wvnns,. .....JXSXHB8XS2XXQ#SSqWXSSQWQ
Wn22oSsg.._aQmXSS2S2XSSmQ#SSSQ&2SmWQQ
WoSSnXS$QZXSXWQmwXXXqmQBXS2SmBoSXQWQQ
WZXXq2S2$Q2S2SXHWQQWWBSS2SXmW2S2mQQQQ
Qm#ZmmS2SUWm222S2S2S22S2SqQ#222mQQQQQ
QQWWQQm222XWmmXoSoS2S2SqQBS2S2mQQQQQQ
QQQQQQQQoSo2XWWmmmggmmQBS22SomQQQQQQQ
QQQQQQQQQpoSo22ZUUHUUASo2SoqQQQQQQQQQ
QQQQQQQQWQmpo22o2o2o2oo22XmQWQQQQQQQQ
QQQQQQQQQQQQQmpo222222qqmQQQQQQQQQQQQ

Tá! E a Copa do Mundo?

Teve um maluco em 2006 que abriu o site ASCI-WM, um “streaming de ASCII” ao vivo dos jogos da copa via telnet, o que acabou sendo uma bela sensação entre as pessoas que estão acostumadas com terminais e telas pretas da vida. Um dos motivos do sucesso foi a baixa banda necessária pra isso, visto que transmitir somente letras é muito mais leve do que 25 imagens por segundo – ou vídeo, como preferirem. Além de, é claro, ser uma coisa nova e criativa.

Infelizmente – ou felizmente, pois saiba lá quantos programadores deixaram de trabalhar por isso – esta Copa não tem esse streaming. O site ASCII-WM diz que é possível conectar a um jogo aleatório, mas parece que o link está quebrado.

Sem mais, vamos a um vídeo. Se você não conseguir ver um jogo de futebol aqui, não se preocupe, é só falta de prática. Se você conseguir de primeira, é um nerd nato!

1 Comentário

Interativo
Vinicius Massuchetto
Analista de Sistemas


15 anos do PHP

10 de junho de 2010 ás 11:06
Há quinze anos, no dia 08 de junho de 1995, Rasmus Lerdorf lançava o PHP com um post para a comp.infosystems.www.authoring.cgi. Ele anunciou a versão 1.0 da sua “Personal Home Page Tools”, software que foi originalmente planejado para websites. Como Lerdorf disponibilizou as ferramentas em código-fonte aberto (originalmente sob o GPL, desde a versão 4.0 sob a licença PHP) o software PHP, escrito em C, angariou grande audiência desde o inicio.
O maior avanço do PHP veio com a chegada da versão 3.0, que foi lançada em 06 de junho de 1998. Com esta versão, o desenvolvimento PHP tornou-se a tarefa de não apenas um, mas vários desenvolvedores. Zeev Suraski e Andi Gutmans, os fundadores da Zend Technologies, tinham reescrito o código base para esta versão para torná-lo ainda mais rápido.
Resumindo toda a história, finalmente o desenvolvimento do PHP 6.0 é um assunto muito comentado nos últimos dois anos. A previsão é que ele ofereça suporte total a unicode, que permite até mesmo textos em outras línguas como o mandarim. No entanto, os desenvolvedores têm repetidamente se deparado com dificuldades, o que tem provocado várias discussões relacionadas com “remigrate” para a versão 5.3. Uma delas é sobre oque a versão 6 vai oferecer e se a versão unicode “será deixada em aberto pelos desenvolvedores.

php 300x157 15 anos do PHP

Por ser uma de suas tecnologias base, a PontoCom acompanha de perto a evolução da linguagem PHP, assim como de outras ferramentas de código aberto. Seus desenvolvedores estão sempre atuantes no cenário opensource, participando de listas de discussão, fóruns e do desenvolvimento destas ferramentas.

Há quinze anos, no dia 08 de junho de 1995, Rasmus Lerdorf escreveu um post anunciando a versão 1.0 do PHP, ainda na época definido como “Personal Home Page Tools”, e voltado somente para websites. Como foi disponibilizado em código-fonte aberto e escrito em C – uma linguagem popular, teve uma boa aceitação desde o início.

O maior avanço do PHP veio com a chegada da versão 3.0, que foi lançada em 06 de junho de 1998. Com esta versão o desenvolvimento da lingaugem tornou-se a tarefa de não apenas um, mas vários desenvolvedores. Zeev Suraski e Andi Gutmans, os fundadores da Zend Technologies, tinham reescrito o código base para esta versão a fim de torná-lo ainda mais rápido.

O desenvolvimento do PHP 6 tem sido um assunto muito comentado, e uma das principais evoluções é o oferecimento de suporte total a unicode, que permite até mesmo textos em outras línguas como o mandarim. A maior dificuldade continua sendo a migração de aplicações, e fazer com que softwares escritos nas versões atuais sejam compatíveis com as próximas versões.

Deixamos aqui o nosso agradecimento e admiração por todos os envolvidos no desenvolvimento desta linguagem, pois reconhecemos a grande importância dela para o mercado de tecnologia web.

Comente

Facebook colabora com o Linux para melhorar sua performance

30 de abril de 2010 ás 18:04

mysql Facebook colabora com o Linux para melhorar sua performance

O Facebook lançou um módulo para o kernel Linux, chamado Flashcache, já usado por lá para acelerar o MySQL fazendo cache dos dados em discos SSD. O código está disponível no Github, e só foi testado nos kernels 2.6.18 e 2.6.20. Embora tenha sido feito para usar no cache do InnoDB/MySQL, ele foi projetado como um cache genérico, como você pode ver no anúncio de disponibilização.

Fonte: BR-Linux

Comente

Interativo
Vinicius Massuchetto
Analista de Sistemas


Twitter pede água pro banco de dados

25 de fevereiro de 2010 ás 18:02

Mas que Cassandra! Quantas twitadas você já deu? Mil? Duas mil? Dez mil? Bah… isso não é nada para um sistema de banco de dados parrudo processar em alguns segundos.

Imaginem agora que o Twitter recebe cerca de 50 milhões de tweets por dia. Bom… aí o papo já muda.

De fato, de aplicações web ninguém tem dó, e é por isso que o Twitter está buscando novas tecnologias de armazenamento de dados e abandonando o MySQL, que é a mesma tecnologia usada para armazenar este post aqui.

O MySQL é ótimo, duvidado por muitos, mas ótimo. É rápido, eficiente, estável e compacto… só que sua escalabilidade (capacidade de crescer rapidamente utilizando múltiplos servidores, por exemplo) não é das melhores que já foram inventadas.

twitter dead Twitter pede água pro banco de dados

Aí os caras do Facebook desenvolveram um negócio chamado Cassandra, que funciona em Java – que por sua vez é mais baixo nível, conversa melhor com o computador e por isso fica mais leve. Os caras do Twitter gostaram desta tecnologia e agora estão vendo de migrar tudo, o que vai dar um bocado de trabalho mas vai fazer a empresa crescer com mais conforto e economizar muito em infra-estrutura.

O Cassandra é NoSQL (não segue o padrão SQL de requisição), e faz parte de uma nova geração de bancos de dados que funcionam de maneira diferente e criados devido ao crescimento ignorante de armazenamento de dados que a web 2.0 exige.

Fonte: BR-Linux.

1 Comentário

Interativo
Vinicius Massuchetto
Analista de Sistemas


Pegando mensagens de vários usuários do Twitter com PHP

04 de novembro de 2009 ás 09:11

Como as histórias na internet não são somente passarinhos e borboletas, vou tentar colocar alguma coisa um pouco mais técnica no blog.

Começamos com o problema de pegar os twits de vários usuários no Twitter.

Cada pesquisa no Twitter nos fornece um feed XML que pode ser tratado por qualquer aplicação. Para ter os twits de vários usuários, podemos fazer uma pesquisa como:

http://search.twitter.com/search.atom?q=
+from%3Adjmauriciao+from%3Afelipeharmata
+from%3Aflavinha_rocha+from%3Aleo91rock

E se quisermos puxar os twits de algumas dezenas de pessoas para nossa página? Este feed do Twitter só nos possibilita fazer requisições de 140 caracteres, o que é sugestivo à ideia toda do negócio, não?

O esquema então é pegar um a um. Monta-se um vetor com o nome de todos os usuários:

$usuarios[] = 'djmauriciao';
$usuarios[] = 'felipeharmata';
$usuarios[] = 'flavinha_rocha';
$usuarios[] = 'leo91rock';

E jogá-los nesta função substituindo usuário e senha por algum válido no Twitter.

// @brief Função para ordenar os twits depois de serem capturados
// @param $t1 Data em formato ordenável
// @param $t2 Data em formato ordenável
// @return -1 Se a primeira data for maior
// @return 1 Se a primeira data for menor
function sort_twits($t1,$t2) {
	return ($t1['date'] > $t2['date']) ? -1 : 1;
}
 
// @brief Função para capturar os twits
// @param $users Vetor de usuários do Twitter
// @return Falso se der erro na conexão com o Twitter
// @return Um vetor com com os twits dos usuários se der tudo certo
function get_twitter_messages($users) {
	$j = 0;
	foreach($users as $user) {
		$twitter_url = 'http://search.twitter.com/search.atom?q='.$user;
		$uname = 'usuario';
		$pwd = 'senha';
 
		// Conectando no Twitter
		$curl_handle = curl_init();
		curl_setopt($curl_handle,CURLOPT_URL,"$twitter_url");
		curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
		curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
		curl_setopt($curl_handle,CURLOPT_USERPWD,"$uname:$pwd");
 
		// Se não conseguir conectar, retorna uma falha
		if (!$contents = curl_exec($curl_handle)) return false;
		curl_close($curl_handle);
		$contents = str_replace("twitter:", "", $contents);
 
		// Transforma o retorno em um objeto XML
		$xml = simplexml_load_string($contents);
 
		// Percorre o objeto pegando o que interessa
		foreach ($xml->entry as $entry) {
			print_r($entry);
			$twits[$j]['author'] = preg_replace('/\ .*/','',$entry->author->name);
			$twits[$j]['author_url'] = $entry->author->uri;
			$twits[$j]['avatar'] = $entry->link[1]->attributes()->href;
			$twits[$j]['date'] = date('Y-m-d H:i:s',strtotime($entry->published));
			$twits[$j]['content'] = $entry->content;
			$j++;
		}
	}
 
	// Ordena toda a galera
	usort($twits,'sort_twits');
	return $twits;
}

O vetor de retorno é o:

$twits (
	['author'] => Autor do twit
	['author_url'] => URL do Twitter para o autor
	['avatar'] => Imagem de perfil do autor
	['date'] => Data de publicação do twit
	['content'] => Conteúdo do twit
);

Basta então utilizá-lo para moldar o seu layout da maneira que você quiser.

Comente

Interativo
Vinicius Massuchetto
Analista de Sistemas