Hackerspace na Desconf

Sábado, dia 26/11 foi a data de uma experiência sensacional. A Desconferência Rápida, vulga Desconf, reuniu 50 palestrantes apresentando Lightning Talks de 5 minutos cada, e daí meu amigo, foi só alegria.

Vivemos um dia inteiro de troca furiosa de idéias, alegria, tristeza, bigodes. muito networking e um poquinho assim só de nudez . A organização está de parabéns por conseguir reunir tanta gente interessante, mantê-los felizes, bem alimentados e interagindo.

A minha palestra foi sobre o Hackerspace MateHackers que eu e o meus parceiros estamos tentando construir aqui em Porto Alegre (a melhor capital do mundo :) e os slides estão aqui. Senti que todas as palestras acrescentaram alguma coisa e com o formato dinâmico era impossível ficar entediado e não se surpreender a cada 5 minutos. Sugiro fortemente você dar uma olhada pelo stream de tweets da desconf e catar os slides da galera.

Estou extremamente satisfeito com o evento e espero participar de mais desconfs no futuro!

Foto por https://twitter.com/#!/crisstanza

Solução para o problema ao mudar os permalinks no WordPress

Quando eu decidi mudar os permalinks do meu blog, para ao invés de /?p=235 eles serem mais como /titulo-do-post, eu achei que ia ser fácil. Fui em Change Permalinks, pedi para usar o Custom Scheme, ele disse OK e deu pra mim o conteúdo do arquivo .htacccess que eu deveria criar na raiz da minha instalação WordPress.

Acontece que isto não funcionou e TODOS meus links agora davam numa página de 404, nada legal. O problema provavelmente aconteceu porque eu estou usando os Virtual Hosts do Apache e eles aparentemente não brincam muito bem com o uso de arquivos .htacccess.

Primeiro eu tentei ir nas configurações no vhost do meu blog e permitir que pudesse ser feito o “override” dos arquivos .htacccess pelos presentes em cada pasta, sem sucesso. Depois de muitas tentativas e buscas frenéticas, a solução veio: é possível jogar o conteúdo do arquivo na configuração de vhost do seu blog.

<VirtualHost>

...
<Directory "/path/do/site/ ">
#configs do seu vhost
</Directory>

<Directory "/path/do/site" >
# conteudo do .htacccess
</Directory>
...
</VirtualHost>

Para mim deu certo e agora ambos os estilos de link, com o id do post e com o título, estão funcionando e coexistindo. Eu espero que este post ajude pessoas tendo problemas similares, porque eu quase fui à loucura.

Figura não relacionada. Mathematical!

Programas com opções bonitas usando getoptlong

Neste post você irá aprender rapidamente como fazer um programinha que é capaz de processar opções recebidas pela linha de comando das seguintes formas:

$ ./greeting -h
Hello World!

$ ./greeting -b
Goodbye Cruel World!

$ ./greeting -hb
Hello World!
Goodbye Cruel World!    

$ ./greeting -o lfz
Hello lfz

$ ./greeting -n 3
Hello!
Hello!
Hello!

Código

Vamos usar uma função da biblioteca padrão do Unix (portanto presente em Linux, Mac, BSD e Windows (compilando com do Mingw)) para realizar a parte difícil do serviço. A seguir, o código inteiro:

#include <stdlib.h>

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    int i;
    char ch;

    while((ch = getopt(argc, argv, "hbo:n:")) != EOF)
    {
        switch(ch)
        {
            case 'h':
                printf("Hello World!n");
            break;
            case 'b':
                printf("Goodbye Cruel Worldn");
            break;
            case 'o':
                printf("Hello %sn", optarg);
            break;
            case 'n':
                for(i=0; i < atoi(optarg); i++)
                    printf("Hello!n", argv[1]);
            break;
        }
    }

    return 0;
}

O que está acontecendo?

Como vocês podem ver é muito simples. Preste atenção nesta parte do código:

    char ch;

    while((ch = getopt(argc, argv, "hbo:n:")) != EOF)
    {
        ...
    }

Aqui é que acontece toda a mágica. A função getopt recebe o argc (número de argumentos passados pela linha de comando) e o argv (um array com todos os argumentos passados) – ambos parâmetros da função main – e uma “definição” das opções que vamos aceitar. As opções são dadas numa string e são lidas sequencialmente da seguinte maneira:

  • Cada letra é uma opção
  • Uma letra seguida de : é uma opção que requer um parâmetro.

Neste exemplo nós estamos aceitando 4 opções, h, b, o e n das quais as duas últimas recebem um parâmetro.

Cada chamada de getopt retorna um caractere, que nesse caso estamos guardando na variável ch. Este retorno indica a presença do caracter retornado na lista de opções requisitadas pelo usuário. Quando o retorno for EOF não existem mais opções e paramos de processar.

Sabendo disso tudo é fácil entender o que o código faz. Para cada opção, que se encaixa na string "hbo:n:, dada na entrada do programa vamos rodar um código específico dentro do switch, dê uma olhada no exemplo.

Acessando os parâmetros

O parâmetro passado para uma opção pode ser acessado usando a variável global optarg e vem no formato de uma string. Exemplos desse uso podem ser vistos no código acima.

Conclusão

Espero que este post tenha te ajudado :)

Qualquer dúvida ou sugestão pode ser postada nos comentários.

Como mudar drasticamente o “feeling” de uma música mantendo a melodia mais ou menos igual?

Esta é a minha resposta para esta pergunta no Music Stack Exchange (fiz um post anterior sobre ele). Eu acho este assunto muito legal e acabei escrevendo uma resposta bem completinha, relacionando com músicas de games. Segue aqui a tradução:

Como mudar drasticamente o “feeling” de uma música mantendo a melodia mais ou menos igual?

Isto é bem possível e é bastante usado, por exemplo, em jogos para sinalizar mudanças no humor ao mesmo tempo em que se passa a idéia original da música.

Tome como exemplo a trilha sonora do Final Fantasy VI (Final Fantasy III nos EUA). O tema principal da Terra – uma das protagonistas – é uma canção forte, porém melancólica, com ênfase numa linha melódica pegajosa. Esta melodia é explorada em vários momentos durante o jogo, como em Metamorphosis onde o clima é malvado e ameaçador ou em Awakening onde ele é pacífico e tranquilo.

A interpretação dada para os humores das músicas é a minha própria, mas eu acredito que nós vamos concordar na maioria dos casos. Afinal, o que faz essas músicas serem tão diferentes?

Percussão e Rítmo

As sessões rítmicas são extremamente diferentes em cada canção. Na primeira nós temos tambores fazendo uma “marcha”, na segunda temos uma batida de rock bem devagar e na terceira não temos nenhum tipo de percussão, apenas um ritmo arrastado e lento que é implicado pelos instrumentos, especialmente as cordas. Na minha opinião este aspecto é um dos mais definitivos no sentimento expresso pela música. Uma sessão mais “cheia” e animada faz uma canção se tornar mais feliz e energética, ao mesmo tempo que uma mais lenta restrita cria climas mais sombrios ou calmos.

Acompanhamento

Estas canções compartilham o mesmo tema, mas tem acompanhamentos muito diferentes. Na primeira são apenas alguns acordes “marchando” juntamente com o rítmo. A segunda é um trabalho bastante complexo, abusando da escala cromática para construir uma tensão que é liberada quando chega a linha melódica. Finalmente, a terceira usa as cordas e alguns arpegios para deixar as coisas calmas e abrir um pouco de espaço para a melodia. Eu não acredito que exista uma receita de bolo aqui, você vai ter que ouvir canções que expressam os sentimentos que você quer e prestar atenção em qual acompanhamento elas usam.

Instrumentos

Como você pode ver, cada canção usa um conjunto variado de instrumentos, isso é muito comum em jogos. Nesta área as coisas se tornam muitos subjetivas e até mesmo culturais, mas é óbvio que somente mudando os instrumentos já podemos mudar o clima da música. Novamente, eu recomendo a experimentação e o estudo de diferentes composições que expressam os sentimentos que você busca.

Modos

Eu não posso apontar exatamente onde isso é usado nestas três músicas, porque eu não as transcrevi nem olhei suas partituras, mas explorar os modos das escalas pode ser usado para expressar sentimentos diferentes. Ao simplesmente deslocar as notas que são tocadas para outra parte da escala você efetivamente dá ao ouvinte a sensação de que algo mudou, mesmo que ele ache que a melodia é basicamente a mesma. As pessoas tendem a considerar Éolico como triste, Jônico como alegre, Lócrio como malvado e assim por diante … mais uma vez, subjetividade entra em jogo. Você terá que estudar os modos e as músicas que usam variações deles para achar os sentimentos que você procura. Uma sugestão para estudo são estas duas canções do jogo Super Mario World: Overworld e Castle. O tema é compartilhado, porém as notas e os “feelings” são diferentes.

Para finalizar. Não existe um conjunto bem definido de regras para fazer este tipo de transformação em músicas. Você terá que ouvir, emular, entender e estudar várias canções. Entretanto o mais importante de tudo é seguir o seu “feeling” como um compositor e não ter medo de inovar, quebrar as “regras” e conseguir o resultado desejado.

Bônus

Eu não coloquei isto na resposta, mas outro ótimo exemplo desse tipo de transformação (e que inclusive me deixou emocionado quando eu ouvi) é o arranjo da Saria’s Song, originalmente do Zelda: Ocarina of Time, que é tocado no Zelda: Twilight Princess.

Na minha opinião, o compositor conseguiu transformar uma das canções mais alegres e festivas de todos tempos em algo bem melancólico e apropriado com a parte do jogo em que é usada, uma Lost Woods mais obscura e assustadora. Um trabalho de mestre!

Original

Arranjo

https://www.youtube.com/watch?v=ctdHjXSAaBE

Mais Wine

Este post é mais um apanhado de dicas úteis para aqueles que precisam rodar programas do Windows em outros sistemas operacionais. Estas dicas são um pouco mais avançadas e voltadas para usuários que já estão familiarizados com o Wine e sabem futricar na linha comando e afins. Para uma melhor introdução ao Wine e como fazer uso básico dele veja A Sip of Wine.

Winecfg

Esta é uma interface gráfica que vem por padrão juntamente com o Wine para ajudar a cofigurá-lo. Para abrí-la é só digitar num terminal winecfg ou abra o aplicativo Configure Wine. Existem muitas coisas para ver aqui e não irei entrar em detalhes, mas uma boa explorada aqui pode te ajudar bastante.

Programas úteis

Incluídos também com o Wine temos diversos programinhas úteis, que geralmente são padrão do Windows.

# Desinstalar programas. Similar a "Adicionar e Remover Programas" 
$ wine uninstaller 

# Gerenciador de Processos 
$ wine taskmgr 

# Editor de Registro 
$ wine regedit 

# Campo minado :D 
$ wine winemine

WINEPREFIX

O Wine implementa um conceito interessante chamado Wine Prefixes. Ele por padrão guarda a estrutura de diretórios do Windows e seus dados de configuração na pasta .wine dentro do seu home, este é o prefixo padrão. Um prefixo alternativo é apenas uma outra pasta dessas, onde o Wine pode manter uma outra configuração sua, uma outra instalação virtual do Windows.

E por que diabos ele iria querer fazer isso? Bem, o conjunto da obra do Wine é basicamente um monte de reimplementações de DLLs do Windows, mas ele também consegue carregar e rodar DLLs nativas. Geralmente estas são bibliotecas de funções usadas pelos mais diversos programas e não há nada de errado com isto. O problema surge porque existem programas que, juntamente com o seu processo de instalação, copiam para o seu computador DLLs de sistema, escrevem no registro e outras coisas mais. Isto acaba por fazer com que o Wine funcione incorretamente, ou mais comumente, que alguns programas funcionem e outros não.

Para resolver este problema que existem os prefixos. Podemos isolar o instalação de alguns aplicativos em determinados prefixos e impedir que eles interfiram com as outras. Uma demonstração de como isso pode ser feito segue abaixo, imagine que temos os aplicativos A, B, C.

# A sendo instalado no prefixo padrão. ~/.wine 
$ wine install_A.exe 

# B sendo instalado no seu próprio prefixo ~/.wine-B 
# O diretório não precisa ser criado previamente 
$ WINEPREFIX=~/.wine-B wine install_B.exe 

# C sendo instalado no seu próprio prefixo ~/.wine-C 
$ WINEPREFIX=~/.wine-C wine install_C.exe

E é basicamente isto. O Wine continua a criar ícones dos aplicativos no seu Desktop e/ou menu de atalhos, não importando o prefixo em que eles foram instalados e estes inicializam a aplicação da forma correta.

WINEDEBUG

O Wine por padrão inclui várias mensagens de DEBUG espalhadas em pontos estratégicos do código e que são impressas no console quando necessário, a fim de dar algumas dicas sobre o possível problema que o Wine está enfrentando para rodar um certo aplicativo. Elas são especialmente úteis para pedir ajuda para pessoas que sabem mais que você, como por exemplo para pedir ajuda no canal irc://irc.freenode.net/#winehq.

Existem cinco tipos de mensagem (ou debug class na nomenclatura oficial): fixme, err , warn, trace. Os dois primeiros estão ativos por padrão, são mais “sérios”, os outros podem ser ativados sob demanda.

As mensagens são impressas no terminal e podem ser customizadas mudando o valor da variável de sistema WINEDEBUG, alguns exemplos:

# Não imprime nenhuma mensagem 
$ WINEDEBUG=-all wine seu_app.exe 

# Imprime warnings; ignora erros e fixmes 
$ WINEDEBUG=warn+all,err-all,fixme-all wine seu_app.exe 

# Imprime warnings do componente de OpenGL; ignore todos fixmes 
$ WINEDEBUG=warn+wgl wine seu_app.exe 

# Ignora todos os fixmes e imprime um trace do dinput 
$ WINEDEBUG=trace+dinput,fixme-all wine seu_app.exe

Como pode ser visto nos exemplos é possível filtrar as mensagens de debug por subcomponente, cada um desses componentes é chamado de um debug channel.

Para mais informações e sintaxe dos comandos consulte: Wine Debug Channels

Conclusão

Neste post vimos algumas dicas mais avançadas de uso do Wine. Espero que elas te ajudem. Mais informações podem ser encotradas também no FAQ do Wine.

Como sempre, posso esclarecer dúvidas nos comentários.

JDownloader

Este é um post muito rápido para fazer uma propaganda de um dos aplicativos mais úteis e bem feitinhos do mundo, o JDownloader.

Nesta Web que temos hoje, os webmasters cada vez mais apelam para sites como Megaupload, Rapidshare, 4Shared e derivados para hospedar seus arquivos. Tudo bem até aí, mas como sabemos estes sites geralmente impoem limites de download e todo o tipo de complicações que fazem da nossa vida um pequeno inferninho. Aí que entra o JDownloader, ele é um tipo de canivete suíço do mundo dos downloads. Eu não vou ficar falando muito, só fazer uma lista de algumas coisas maravilhosas que ele faz:

  • Faz o download de arquivos à partir do link para o arquivo e te poupa de ir até o site, esperar x segundos e clicar em um botão.
  • Enfileira downloads automaticamente e te permite, por exemplo, adicionar 5 links do Megaupload e baixar eles em ordem sem precisar ir ao site mais 4 vezes depois que cada download acabar.
  • Espera automaticamente os tempos impostos entre o download de arquivos.
  • Adiciona arquivos para download quando detecta que vocês fez um CTRL+C do link (extremamente útil)
  • Entra captchas automaticamente e só quando não consegue pede a sua ajuda.
  • Funciona para a maioria (para não dizer todos) sites de download de forma transaparente.

Além de tudo isto ele é Open Source e faz atualizaçãoes automaticamente, então todo dia ele ganha mais funcionalidades e fica cada vez melhor. Enfim, para aqueles que adoram fazer um download, recomendo.

Vídeos de explodir o cabeçao

Alguns links para vídeos musicias, muito interessantes e impressionantes que eu vi nos últimos dias. Vocês gostam de vídeos certo?

Whole Lotta Love com a guitarra humana

Aqui podemos ver o comediante Michael Winslow que (como eu descobri depois de ver este e alguns outros vídeos) é famoso por imitar de maneira realista vários sons, fazendo uma versão mágica da música Whole Lotta Love do Led Zeppelin. Um vídeo de explodir a mente da galerinha:

Outro vídeo muito recomendado deste rapaz é esta versão absurda de Purple Haze.

The Final Countdown da feira

Neste vídeo vocês irão conhecer a banda marcial Blaas of Glory, que toca música tradicionalista Holandesa e faz covers de grandes clássicos do Metal e Hard Rock… é amigos a porra ficou séria! Aparentemente eles ficam marchando pelos festivais de Metal e alegrando a vida dos cabeludos entre um show e outro! Curtam esta versão marota de The Final Countdown e aproveitem para ficar com esse som na cabeça durante a semana inteira:

Sinfonias Algorítmicas

Por último, umas das coisas mais lindas e misteriosas que eu já vi em muito tempo … e também um pouco geek (é assim que os jovens chamam?) então talvez só os leitores mais ligados com programação curtam. Basicamente este cara chamado viznut criou alguns programinhas com umas 2 ou 3 linhas de código que geram sons extremamente complexos e impressionantes. O resultado pode ser visto no vídeo abaixo:

Mais informações sobre o que diabos está acontecendo podem ser encontradas no blog do garoto. Como bônus acessem este site que permite vocês mesmos criarem as suas sinfonias neste estilo.

Music StackExchange

Eu fiquei relativamente viciado neste site nos últimos dias e resolvi dar uma compartilhada com os milhões de leitores deste blog. O Music StackExchange é mais um dos sites de pergunta e resposta que surgiu a partir do super famoso e útil Stack Overflow e é realmente muito bom.

Para quem não conhece esse modelo de site, pense no “Yahoo Respostas” levado a sério e com menos inclusão digital. O sistema de recompensas é bem melhor pensado e existem políticas mais efetivas para manter os tópicos dentro da linha e promover respostas mais úteis. Para se ter uma idéia dos assuntos que devem ser abordados nas perguntas e respostas você pode dar uma olhada no FAQ ou discutir sobre estas regras no Meta.

A grande vantagem destes sites é o núcleo de especialistas voluntários que respodem as perguntas. O nível do conteúdo presente tende a ser muito alto, bem como são abordados assuntos mais específicos e que dificilmente são comentados em detalhe em outros sites ou tutoriais. Por cima de tudo isto existe o sentimento dele ser um jogo divertido onde você pode acumular pontos e “achievements” por ações realizadas.

No caso do Music, os assuntos são excelentes para alguém que é fascinado pela coisa e está sempre querendo aprender mais. Recomendo fortemente uma olhada lá.

Perguntas interessantes

O site ainda está no início e a melhor maneira de dar uma divulgada é mostrar perguntas (e respostas) interessantes:

Git Over Here!

LInus Scorpion Torvalds

Hoje às 13:30 eu vou dar um mini-curso sobre versionamento de código usando Git no Insitituto de Informática da UFRGS como parte da Semana Acadêmica da Computação.

A idéia é, mais do que apresentar um resumão de todas as funções, dar uma introdução sobre as motivações por trás de um sistema como o Git e depois meter a mão na massa. Uma abordagem totalmente baseada na The Git Parable por Tom Preston Werner.

Slides para a palestra podem ser encontrados aqui: https://blog.lfzawacki.com/wp-content/uploads/2011/10/git.pdf

Git Over There!

Música com guitarrinhas de plástico

Postando isso meio atrasado, mas antes tarde do que nunca. No semestre passado eu fiz este projeto para a cadeira de “Interface Humano Computador”, a famosa IHC.

É um idéia que eu gostei bastante. Ao invés de tentar fazer um instrumento real que pode ser usado num jogo musical eu e meu grupo fizemos um instrumento “real” (há controvérsias) com uma guitarrinha de plástico.

Aqui um vídeo onde eu toco nela:

A seguir pode ser ouvida uma versão “gravada” da música que eu toquei.

Aliás eu peguei essa guitarra emprestada do meu amigo Fuji e ainda não devolvi, sou uma pessoa terrível. Em minha defesa ele não está nunca em casa u__u

Código

Foi um projeto divertido e interessante usando a linguagem ChucK (de novo). Ele mostra bem direitinho o que se pode fazer com joysticks, MIDI e multithreading e como é fácil.

O código está nesse repositório aqui. Existem boatos de que o meu parceirão John irá usar alguma coisa desse código para fazer uma “JoyCarina”, a primeira ocarina do mundo a ser tocada com um joystick (tirando a Ocarina do tempo).

css.php