Encontre o espaço perdido que você não sabe aonde foi parar

Descobrir aonde foi parar o espaço em disco que desapareceu e você não sabe com quê é uma tarefa cada vez mais difícil hoje em dia. Aí é que entra (no mac os) um software livre chamado GrandPerspective: Ele usa um tree map para visualizar uma hierarquia de diretórios e arquivos, mostrando cada arquivo como um retângulo com tamanho proporcional ao seu tamanho. Arquivos contidos no mesmo diretório são mostrados juntos.

No exemplo aí do lado, aquela grande área à esquerda com muitos arquivos pequenos é minha pasta iTunes Music. O grande arquivo azul claro é o disco virtual do windows xp sob vmware. A área azul escura são os caches locais do mail.app para meus emails, etc. Isso foi o resultado final de uma sessão de uso do GrandPerspective que me mostrou que tinha mais de 6GB desperdiçados com 2 filmes Piratas do Caribe que estavam catalogados no iTunes que eu nem me lembrava mais que os tinha, juntos com outras tranqueiras grandes. É uma ferramenta simples para fazer uma única tarefa e bem feito, recomendo: http://grandperspectiv.sourceforge.net/.

SMS e discar celular via Bluetooth a partir do Mac OS

O Leopard nos tirou um recurso bastante útil do Addressbook, que era envio de SMS e discar o celular diretamente do mac os via bluetooth. Fear no more! A comunidade shareware-zeira do mac os (nunca open source, sempre shareware…) já “tapou o buraco”:
Phone plugins for Mac OS X, da NovaMedia e BluePhoneElite 2, da Mira Software.

Dos 2, só testei o plugin da novamedia e com o meu velho V3i Motorola, funcionou. Ainda vou avaliar o BluePhoneElite 2, que oferece o recurso de usar o computador como hands free device para o celular. Não sei se usaria isso, com voip e skype já instalados no computador, mas vou testar.

Alguem tem alguma outra dica, além de “volte ao tiger”?

O Windows XP morreu. e agora?

O Windows XP morreu. e agora? Estou dando tratos à bola e pensando em finalmente comprar um XP para regularizar uma cópia, digamos, ‘de avaliação’ instalada dentro de um Vmware fusion lá em casa, antes que o XP comece a encarecer por começar a virar ‘figurinha difícil’.

Pensando bem, e que tal comprar umas dez cópias de XP, “sentar em cima” e vender depois, como investimento? :p

releases de projetos open source. como você faz o seu?

Minhas dores de cabeça com os releases desse nano-projetinho open source (CachedObjects), essa biblioteca de cache para um framework (CodeIgniter) de desenvolvimento web em php me colocaram pra pensar:

Como você administra os releases do seu projeto open source? Tudo manualmente? Chama o tar -cvzf na linha de comando? Automatizou isso? e controle de versão? Qual? (povo do nerds.valeta, essa é pra vcs responderem :p)

Para quem não me entendeu, controle de versão não automatiza em nada o processo de release, seja cvs, svn, bzr, git, o que você quiser.

No meu caso, fiz um makefile para simplificar as seguintes etapas:
a) extração do history svn e formatação no padrão changelog.
b) produção tanto do README quando do site usando txt2tags
c) empacotamento em .tar.gz e .zip
d) upload do site atualizado e dos pacotes.
Mas ainda falta + coisa pra que o release seja realmente one liner.

CachedObjects v1.3.1

CachedObjects v1.3.1 the oops release.

4 files missing in v1.3 :)

Now that Im tagging the releases, the process to make a release are complicated again: I manually update the various references to the version number (now only in the makefile and the documentation), check that there are no pending commits to the repository, svn copy the trunk to the tags/release-VERSION, make, make upload. And now Im still editing the html generated to manually include the google analytics, Ive still dont included it in automated generation.

The holly grail of “one-liner release” is again, not possible.
Some more make-automation to do :p

Again in http://sergio.bruder.com.br/cachedobjects/

CachedObjects v1.3

Versão 1.3 do cachedobjects publicado hoje, primeira versão publicada já sobre controle de versão e makefile para empacotamento, produção de documentação e publicação do site.

Já a biblioteca em si acrescenta a de-duplicação de um bom pedaço do código e consequente modularização do backend de cache, com a inclusão de um backend memcache além do previamente existente baseando no cache stock do codeigniter.

Documentação e site produzidos com txt2tags :p

http://sergio.bruder.com.br/cachedobjects/.

Cachedobjects v1.3 published today. Its the first version under version control, and with a basic Makefile to manage packaging, documentation production and site publishing.

On the feature side we de-duplicated a good chunk of code between the 2 classes, Model and Controller, modularized the backend, included a new backend memcache-based, and mantained too the old backend using the stock codeigniter cache.

Documentation and site done with txt2tags, from my friend Aurélio.

http://sergio.bruder.com.br/cachedobjects/.

CachedObjects, a CodeIgniter extension

Im using CodeIgniter in a small pet-project in my spare time and missed a more granular cache than the entire page, and the code:

$cache = get_cache('that_snippet',60);
if (not $cache) {
// slow code here;
$cache = $result_of_slow_code;
write_cache('that_snippet',$cache);
}
return $cache;

is too ugly to be duplicated all over the code.

So using a little PHP hackerism (object __call() method) and extending the controller and model classes of CodeIgniter, now I can cache the methods results of controllers and models. All that you need to get cached results of myslowmethod(parameters) is call myslowmethodCached(parameters). Clean and Elegant to use, based on a ugly php hackerism, isolated in one place.

http://sergio.bruder.com.b/cachedobjects/

Porquê é tão lento & outras coisinhas

Porquê é tão lento?

stratus é um mac mini rodando Mac OS X Leopard 10.5.3, nimbus é um via c7 1GHZ ubuntu server ligados via fast ethernet com um WRT54GS entre eles. 128Mfile foi um arquivo gerado a partir do dd if=/dev/random, 128 megabytes. tar | netcat, scp e cp via um mount point smb (samba):

stratus:~ sergio$ time tar -cvf - 128Mfile | nc nimbus 10000 128Mfile real 0m12.501s stratus:~ sergio$ time scp 128Mfile nimbus: 128Mfile 100% 128MB 3.7MB/s 00:35 real 0m35.882s stratus:~ sergio$ time cp 128Mfile /Volumes/sergio/teste/ real 1m35.314s

Resumindo em uma pequena tabela:

  time performance
tar | netcat 12,50 s 10,24 MB/s
scp 34,88 s 3,57 MB/s
samba 95,31 s 1,34 MB/s

powertop e outras brincadeiras

Ainda brincando com o servidor novo, acabei chegando ao powertop. a situação atual (isso depois de acpi=force hpet=force, cpufreq e_powersave e cpuidle. A pergunta é, porquê não vai para C3?

PowerTOP version 1.9 (C) 2007 Intel Corporation Cn Avg residency P-states (frequencies) C0 (cpu running) ( 0.1%) 998 Mhz 0.0% C1 0.0ms ( 0.0%) 798 Mhz 100.0% C2 427.7ms (99.9%) C3 0.0ms ( 0.0%) Wakeups-from-idle per second : 2.3 interval: 30.0s no ACPI power usage estimate available Top causes for wakeups: 27.1% ( 0.6) : neigh_table_init_no_netlink (neigh_periodic_timer) 21.4% ( 0.5) ifconfig : __netdev_watchdog_up (dev_watchdog) 12.9% ( 0.3) : eth0 10.0% ( 0.2) : neigh_table_init_no_netlink (neigh_periodic_timer) 4.3% ( 0.1) nmbd : schedule_timeout (process_timeout) 4.3% ( 0.1) cpufreqd : do_setitimer (it_real_fn) 2.9% ( 0.1) : page_writeback_init (wb_timer_fn) 1.4% ( 0.0) : inet_init (inet_frag_secret_rebuild) 1.4% ( 0.0) smbd : schedule_timeout (process_timeout) 1.4% ( 0.0) : flow_cache_init (flow_cache_new_hashrnd) 1.4% ( 0.0) : rif_init (rif_check_expire) 1.4% ( 0.0) : seqgen_init (delayed_work_timer_fn)

compiling the kernel the ubuntu way

Um dos percalços que encontrei nesse servidor 24×7 fanless foi: nem CentOS nem Ubuntu-server tem kernels VIAC7-orientados, isto é, não tinha cpufreq funcional, problemas com acpi, etc.

O CentOS depois de se forçar a barra na instalação consegue-se um mínimo de algo em torno de 1GB. Ubuntu server instalação default ~ 400MB. Ganhou o ubuntu dessa vez, minha primeira tentativa não-rpm em um servidor.
Resolvi compilar meu próprio kernel! Hoooray, me senti voltando 10 anos atrás :p Acontece que minha intimidade com pacotes .deb é zero, nenhuma, nada. Várias horas de sono perdidas depois cheguei em http://sergio.bruder.com.br/debs/, uma versão para VIA C7 do último kernel flavour server do Ubuntu 8.04 com suporte a CPUFREQ habilitado, módulo para a parte hardware de cryptografia, etc, tudo compilado. Mais tarde conto em mais detalhes a parte userlevel da coisa. 
PS: Acabei compilando esse kernel em uma instalação de Ubuntu-JEOS rodando no vmware fusion 2.0 no meu macbook.