Licio Fonseca: ntfs leitura e escrita nativos no Snow Leopard

25 de Agosto de 2010, por Desconhecido - 0sem comentários ainda

Se você não é usuário de mac pode parar de ler por aqui.

Você que é usuário de mac e tem Snow Leopard já deve ter se deparado com o sistema montando um disco NTFS como somente leitura.  No Leopard precisavamos de instalar o NTFS-3G, no Snow Leopard isso não é mais necessário.

O primeiro passo é abrir o terminal.

Se você não sabe o que é o terminal ou não sabe usa-lo, peça ajuda de um adulto capacitado.

Vamos renomear o script responsavel por montar os volumes ntfs:

sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig

Agora criamos um script:

#!/bin/bash
/sbin/mount_ntfs.orig -o rw “$@”

Salve o script como /sbin/mount_ntfs

Agora alteramos as permissões:

sudo chown root:wheel /sbin/mount_ntfs
sudo chmod 755 /sbin/mount_ntfs

E voilá, você agora pode copiar seus arquivos para o seu disco externo.

Obviamente, eu gostaria muito de saber se alguem tem uma solução melhor e mais elegante ;)



Lucas Rocha: Strangeness at Home

18 de Agosto de 2010, por Desconhecido - 0sem comentários ainda

Baiana by Tiago Celestino (CC-BY-NC-ND)

So, here I am in Salvador, the city I was born in Brazil, after almost three years since my last visit. It’s an incredibly rich experience to be here after so long. I’ve been living abroad since 2006 and it’s interesting to notice how my perception of my own cultural roots have changed so much since then.

During my undergrad years, I took an anthropology course where I learnt a bunch of interesting things such as ethnography, cultural relativism, cerebral rubicon, etc. But one of the most interesting concepts I learnt was the notion of strangeness:

The art or mental trick of making a social setting and behaviour within it appear as if the observer is encountered it as a stranger. If applied to mundane ‘taken-for-granted’ events, this can lead to unusual and original insights.

Living abroad gave me a wide range of opportunities to experience strangeness. Salvador is a city where people are mostly Afro-Brazilians, relaxed, loud, informal, easy-going, welcoming, talkative, syncretically religious … you got the idea. I guess you can imagine how culturally shocking it was to move to Finland. Our move from Finland to England was much smoother of course. I’ve become much more aware of my own origins because it’s by recognizing cultural differences that you get to know your own culture more deeply.

On the flip side, the experience of living abroad for a relatively long time inevitably involves some cultural adaptation: the more you stay abroad the more you end up blending in. And now, visiting the city I was born in after so long, I’m experiencing a sort of backwards strangeness. It’s like I’m starting to perceive my own culture from an outsider perspective. Many of those things that I used to perceive as a given in terms of social behaviour, weather, accent, slang, city organization, etc, are now things that I explicitly notice. It’s a bit like being a foreigner in your own country.

The bottom line is: after almost four years living abroad, I have never been more aware of my origins and my cultural roots. On the other hand, I’m starting to feel like a stranger in my own city. I’m in a sort of cultural limbo I guess…



Djavan Fagundes: Me acompanhe no Butequeiro!

16 de Agosto de 2010, por Desconhecido - 0sem comentários aindaComo quase todo mundo deve saber, mineiros não tem mar, então, vão para o bar! Belo Horizonte é a capital mundial dos botecos, com um (ou mais de um) em quase toda esquina. Também não é segredo para ninguém que aprecio muito parar para fazer como dizem na linguagem mineira: "Dá dois dedim de prosa".

Então decidi juntar o útil ao agradável e vou passar a blogar sobre os bares, restaurantes, butecos, bistrôs e coisa do tipo que frequento aqui em Belzonte, criando um catálogo itinerante.

A ideia nasceu há tempos, desde quando criei a mania de fotografar meus brindes, mas infelizmente por diversos fatores a ideia não saia do plano da imaginação, felizmente estou tornando-a realidade junto com a Liliane, minha grande incentivadora!

Convido todos a acompanhar lendo, assinando o feed, e divulgando para os amigos. Prometo ser divertido e dar boas dicas sobre ambiente, preço e ocasiões para visitar aqui na terra do pão-de-queijo!

Endereço: http://butequeiro.comum.org/

Comentários | Link permanente
© Djavan Fagundes, 2010.



Djavan Fagundes: Um relato mais que atrasado do FISL11

16 de Agosto de 2010, por Desconhecido - 0sem comentários aindaOlhando as fotos que tiramos neste FISL, decidi mesmo que tardiamente fazer o meu relato de como foi o evento. Infelizmente o sono já começa a fazer o seu trabalho, então irei tentar resumir o evento pelas fotos que tirei.

Como já esperava, reencontrei muitos amigos. Felizmente consegui voltar ao bar da Tia Neuza, para a famosa capirinha, onde o Lincoln deu uma de galã e a luva/grama da Yaso causou muitos risos. O frio, este ano bem pior, tão forte que congelou carros na rua.

Eu assisti poucas palestras, mas entre as que eu gostei está a de OpenStreetMap onde o Samuel Vale (aka Phractal) e Arlindo Saraiva (aka Nighto) finalmente falaram juntos sobre o assunto.

As trollagens rolaram soltas, destaque pra Amandinha, que conquistou uma cadeira no hall da fama do trolling.

Percebi que neste FISL as discussões giraram em torno do #marcocivil e sobre a #leidireitoautoral, com discussões pra lá de interessantes.

Durante a noite, dentre os lugares que fomos, destaque para o Mr.Dam, onde fizemos história com o chapéu de Carlos Gardel. Teve a Camila e a Amandinha sendo iniciadas na arte de flambar curaçau, brincamos tanto que a garrafa secou em menos de 20 minutos, bom pra esquentar um pouco.

No evento, menos fotos e sempre boas discussões, troquei muitas ideias com o Rodrigo Padula sobre o GNOME e Fedora. Conversei com muitas outras pessoas durante o dia e durante a noite, infelizmente não daria pra listar todas aqui, mas me lembro de cada discussão. Mas alguém que eu não poderia deixar de citar é o baiano alucinado "Everybody Hates Chris?", vulgo Ratox, pois é, eu o conheci.

Parafraseando meus amigos Amandinha e Guerrinha, "fui ao FISL para ver gente e o fiz" e a impressão que tenho cada vez mais é as palestras são o bônus do evento, e não o contrário.

Comentários | Link permanente
© Djavan Fagundes, 2010.



Gustavo Noronha (kov): O pior cego é aquele que não quer ver

16 de Agosto de 2010, por Desconhecido - 0sem comentários ainda

Cegueira ideológica e Tribalismo

Muita gente repete que o pior cego é o que não quer ver, mas muito pouca gente me parece refletir a respeito do que isso quer de fato dizer. O Mark Shuttleworth fez há pouco tempo um post em seu blog que eu acho que vai no ponto exato da questão quando fala de algo que ele chama de “tribalismo“.

Eu tenho chamado esse comportamento de “cegueira ideológica”, mas acho que vou adotar o termo dele, que é bem mais simples e acho que bem mais correto, porque não se trata apenas de ideologia! Ele fala de 2 tipos de argumento que aparecem muito nos discursos tribalizados: “o outro pessoal nunca fez nada” (muito comum nas campanhas políticas, inclusive) e “evidência que contraria minha crença/visão não conta”.

Esse tipo de comportamento tribal aparece nas mais diversas áreas da nossa vida. Torcedores de futebol, defensores de uma determinada tecnologia ou ideia, militantes de um partido (ou, no Brasil, indivíduo!). Recentemente várias coisas interessantes aconteceram que me fizeram pensar mais e mais nesse tipo de comportamento.

O mais recente foi o processo movido pela Oracle contra o Google por violação de patentes relacionadas ao Java no Android. Não é segredo pra ninguém que eu não gosto de Java. Esse meu desgosto pela tecnologia é multi-facetado: eu não gosto da sintaxe, acho que tecnologias Java costumam complicar muito mais do que o necessário e pra piorar toda a situação nós não tínhamos uma implementação livre. Meus problemas com a tecnologia foram diminuindo com o tempo em razão de vários progressos que foram feitos - VMs livres começaram a aparecer, a própria Sun liberou as partes que podia da sua VM e por aí vai. Gostando ou não, eu acho importante que Java seja uma das ferramentas disponíveis para a realização da liberdade de software e vejo na ação da Oracle uma grande ameaça que precisa ser rechaçada.

O Java é Livre! Oh really?

Muitos anos atrás, no entanto, era comum encontrar gente que se dizia defensora de Software Livre advogando uso de Java - numa época em que nós sequer tínhamos uma implementação livre da VM e das bibliotecas básicas. Um dos principais argumentos era que a especificação era aberta e construída de forma aberta, também. Eu acho ambas as afirmações muito discutíveis, mas como elas são irrelevantes para a discussão atual não vou aprofundar agora.

Com o surgimento do .NET, seguido do Mono, uma alternativa viável ao Java como linguagem de alto nível baseada em uma VM poderosa começou a se desenhar - e com uma implementação livre! Aplicações úteis e interessantes começaram a aparecer no desktop livre, coisa que nunca houve com Java. Não demorou quase nada para esses defensores de Java caírem de pau no Mono, é claro - .NET é uma tecnologia da Microsoft, recheada de patentes, certamente, diziam. A Microsoft vai querer destruir a comunidade de SL na primeira oportunidade - assim que dependêssemos o suficiente do Mono. Eles não estavam errados, note, eles estavam muito certos e embora os riscos tenham sido diminuídos com o tempo por várias razões eles ainda são bem reais! Mas os mesmos riscos que eles viam no Mono também existiam para o Java, sempre existiram, mas eles se negavam a ver ou concordar. “A Sun é muito mais comprometida com a liberdade que a Microsoft” diziam eles. Yeah, sure.

Eu não estou argumentando que eles deviam deixar Java de lado, note bem. Eu acho que eles deviam sim, como fizeram, ter lutado para que Java fosse mais uma opção para nossa comunidade criar e exercer suas liberdades. Eu respeitaria qualquer um que dissesse “Sim, eu reconheço e assumo os riscos. Se um dia chegar a esse pior caso eu vou lutar para defender nossa liberdade frente às patentes”. Agora, 6-10 anos depois, chegou a hora da tribo do Java rever os seus conceitos e de nós todos, como comunidade, ajudarmos na defesa do Google!

E não para por aí, infelizmente.

O tribalismo não para por aí, infelizmente. É comum encontrar diversos casos em que as pessoas propagam informações a favor do que defende sem verificar (se é a favor tem que estar certo, né?) e de achar cabelo em ovo nas informações que são contra seus defendidos ou a favor dos seus “inimigos” (da época). Isso aconteceu no caso em que se divulgou por exemplo que o Windows 7 usava código do Linux, quando na verdade uma ferramenta secundária que sequer é distribuída junto com o Windows 7 usava código GPL de uma outra ferramenta publicada no Codeplex da Microsoft, que não tinha nada a ver com o Linux.

Isso também acontece sempre nas campanhas políticas, é claro e eu não paro de rir de gente fazendo defesas absurdas e fazendo a caveira dos inimigos de ocasião. Isso acaba por fazer que os debates sobre o que as pessoas defendem de fato fiquem em segundo plano, substituídos por etiquetas simplistas e simplificadoras e por discursos populistas de todos os lados.

Outro alvo recente de tribalismo é o Google. Nosso aliado em várias frentes é inegável que o Google também tem várias atitudes que ferem a sua promessa de não ser “evil”. Apesar disso, há aqueles que fazem uma defesa quase incondicional do Google, assim como há aqueles que só fazem a caveira.

É preciso ver que, como qualquer organização grande o Google tem várias forças puxando para lados distintos. De um lado, um grande usuário de tecnologias livres, um grande desenvolvedor de softwares livres, com contribuições de vulto tanto em projetos novos como em projetos existentes, um garoto propaganda da liberdade e abertura na web, inclusive com enormes contribuições para esse objetivo. De outro lado, falta de sensibilidade no tratamento da privacidade de seus usuários, mudanças de posição inesperadas com relação à política de neutralidade da rede, discriminação de minorias, síndrome do “Not Invented Here”, com projetos novos sendo criados ao invés de colaborar com já existentes e por aí vai. É importante reconhecer e tratar cada uma dessas facetas de forma separada, sem fazer defesas ou caveiras incondicionalmente.

Veja também

Alguns outros posts interessantes sobre o assunto Oracle vs Google:



Carlos José Pereira (Carlão): Programação de GUIs utilizando GTK - Parte 2

13 de Agosto de 2010, por Desconhecido - 0sem comentários ainda

.
Neste post vamos tratar da montagem do ambiente para programação GTK, exemplificando através de uma distribuição Ubuntu, versão 10.04 (GNU/Linux), recém instalada. Os requisitos para acompanhar este e os próximos posts são: conhecimentos (nível intermediário) da linguagem C (incluindo ponteiros), geração de arquivos-fonte e sua compilação pela linha de comando (terminal) utilizando o GCC.

Vamos começar com um programa simples, baseado em GTK+, uma espécie de "Hello World" dos programas em ambiente gráfico: mostra uma janela vazia na tela. O código segue abaixo:

 #include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Alou, Mundo!!!");
gtk_widget_show (window);
gtk_main ();
return 0;
}

Não se preocupe com os detalhes do programa, veremos isso depois. O objetivo agora é apenas conseguir compilar e executar o dito cujo, pelo terminal. Gere um arquivo-fonte em C com o código acima, digamos, aloumundo.c, e tente compilar:

gcc -o aloumundo aloumundo.c

E receba um monte de mensagens de erro... :-)

 aloumundo.c:2:21: error: gtk/gtk.h: No such file or directory
aloumundo.c: In function ‘main’:
aloumundo.c:6: error: ‘GtkWidget’ undeclared (first use in this function)
aloumundo.c:6: error: (Each undeclared identifier is reported only once
aloumundo.c:6: error: for each function it appears in.)
aloumundo.c:6: error: ‘window’ undeclared (first use in this function)
aloumundo.c:10: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function)

Bom, a coisa começa pelo fato de que o compilador não encontrou a biblioteca gtk (personificada, digamos assim, neste exemplo, pelo arquivo gtk.h). E a partir daí, nada relacionado com gtk foi interpretado.

O que acontece é que, apesar de estarmos usando um ambiente gráfico baseado em GTK (Gnome), ou seja, a biblioteca gtk está garantidamente instalada no sistema, precisamos instalar a biblioteca PARA DESENVOLVIMENTO. Em sistemas baseados no Debian, acho que em 99% dos casos, bibliotecas para desenvolvimento tem seu nome terminado em -dev (em outras distribuições, este tipo de biblioteca tem seu nome terminado em -devel).

Abrimos o gerenciador de pacotes Synaptic, e procuramos por libgtk:



Descobrimos que o nome correto é libgtk2.0-dev. Ao marcarmos para instalação, o Synaptic automaticamente seleciona outros pacotes que também são requeridos. Na verdade, quando falamos em GTK estamos falando em um conjunto de bibliotecas, como por exemplo, GLib (funções utilitárias de propósito geral), GDK (camada entre o sistema gráfico X e GTK), Pango (textos e fontes), ATK (acessibilidade), entre outras.



Agora, com as bibliotecas instaladas, podemos tentar compilar novamente, e.... ué?!?!? Erro de novo?

Isso acontece porque precisamos indicar ao GCC que queremos utilizar uma biblioteca extra, além da biblioteca-padrão, que ele já sabe usar diretamente. Isso significa indicar os seguintes itens:

  • caminho para o diretório onde estão os "includes" da(s) biblioteca(s) que você quer usar. Isso é feito utilizando-se a opção -I (letra "i" maiúscula);
  • caminho para o diretório onde estão as bibliotecas a serem utilizadas. Isso é feito utilizando-se a opção -L (letra "l" maiúscula);
  • finalmente, quais bibliotecas serão utilizadas, com a opção -l (letra "l" minúscula). Nomes de bibliotecas começam pelas letras "lib" (por exemplo, libblabla), e utilizamos com -lblabla (o nome depois do lib).

Já falamos que GTK é composta de várias bibliotecas de suporte. Isso significa dizer que, para compilar usando GTK, teremos que informar ao compilador, usando as opções acima, diretórios e bibliotecas para todas elas. Felizmente, temos um programa que nos auxilia nisso, chamado pkg-config, retornando as informações necessárias, para um pacote/biblioteca específico. Como nos diz o comando man,

"The pkg-config program is used to retrieve information about installed libraries in the system. It is typically used to compile and link against one or more libraries."

Então vamos experimentar, digite no terminal:

pkg-config --cflags --libs gtk+-2.0

A opção --cflags diz para retornar informações acerca dos includes, e --libs para bibliotecas, tudo isso relativo ao pacote indicado no final da linha, "gtk+-2.0".

Você deve ter obtido a seguinte saída:

-pthread -D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0

... ou seja, todos os parâmetros necessários para você compilar um programa que utilize a biblioteca GTK (e suas companheiras).

E como utilizamos isso? Copio essa coisa toda e digito junto com o comando de compilação, gcc?? Não precisa. Podemos simplesmente indicar ao GCC que os parâmetros de compilação vão ser informados pelo pkg-config. Fazemos isso dessa forma:

gcc -o aloumundo aloumundo.c `pkg-config --cflags --libs gtk+-2.0`

A linha acima tem o seguinte efeito: o comando pkg-config é executado, e sua saída é integrada ao resto da linha (compilação com o gcc) como se tivesse sido digitada normalmente. Agora, CUIDADO!! O caracter que envolve o pkg-config é a CRASE (não é a aspa simples, não é o acento agudo!).

Agora, você deve obter uma compilação sem erros, já que todas as bibliotecas estão instaladas no sistema, e você indicou ao compilador como usá-las.

Falta só executar sua obra-prima.... :-)

./aloumundo



Algumas observações finais:

  • se você clicar no 'X' para fechar a janela, ela fecha, mas o programa continua sendo executado (o terminal fica "travado"). Para liberar o terminal, precisamos finalizar o programa na marra, teclando CONTROL-C. Isso acontece porque o 'X' causa apenas a parte gráfica da coisa (a janela some da tela), mas não a finalização do programa. Isso é nossa responsabilidade, e veremos como fazer isso posteriormente.
  • note que você pode mover a janela, minimizar, maximizar, redimensionar.... como isso é possível, se não escrevemos código para isso? Isso é papo pro próximo artigo.

Abraços a todas e a todos!

Carlão



Gustavo Noronha (kov): Google’s User-Agent sniffing makes one more victim

10 de Agosto de 2010, por Desconhecido - 1Um comentário

Remember when I said Epiphany worked out of the box with Youtube’s WebM? Well, Google has recently decided to deny us WebM, like it did before with Wave, the Pacman doodle, and who knows what else? \o/

Wouldn’t it be nice if Google practiced what they preach?

Update: so it looks like my message went through to the people who needed to see it, and they found a filtering error in the User Agent sniffing code that made it think Epiphany was a too old Safari - I’m told the change will land in Youtube soon, thanks for those paying attention, and working on this! User Agent sniffing keeps being a problem, of course, and there are other stuff to fix, so I will probably still push my patch to spoof the user agent to google services which are still mishandling Epiphany, but it’s good to see some progress being made!

Update2: I started shipping a patch to send the Chrome user agent string to google domains in the Debian package for WebKitGTK+, when the “enable-site-specific-quirks” setting is enabled (which is the case for Epiphany); I already found something we were missing out on =D Google Images seems to have been greatly improved, and now faking being Chrome we are also able to enjoy it:

Google Images improved



Gustavo Noronha (kov): Google’s User-Agent sniffing makes one more victim

10 de Agosto de 2010, por Desconhecido - 0sem comentários ainda

Remember when I said Epiphany worked out of the box with Youtube’s WebM? Well, Google has recently decided to deny us WebM, like it did before with Wave, the Pacman doodle, and who knows what else? \o/

Wouldn’t it be nice if Google practiced what they preach?

Update: so it looks like my message went through to the people who needed to see it, and they found a filtering error in the User Agent sniffing code that made it think Epiphany was a too old Safari - I’m told the change will land in Youtube soon, thanks for those paying attention, and working on this! User Agent sniffing keeps being a problem, of course, and there are other stuff to fix, so I will probably still push my patch to spoof the user agent to google services which are still mishandling Epiphany, but it’s good to see some progress being made!



Djavan Fagundes: Mudando para o Comum

9 de Agosto de 2010, por Desconhecido - 0sem comentários aindaEu estou abandonando meu blog antigo (de novo) e desta vez definitivamente. Irei passar a somente atualizar este blog.

Se você o lê por algum dos planetas que eu publico, provavelmente irá reler algumas notícias ou ver coisa bem desatualizada, não se preocupe, basta usar a arte de "marcar como lida".

Eu utilizo neste novo blog ao invés de Wordpress o Django Diário, que é mais simples e tem tudo o que eu preciso.
Sei lá, estou cansado de sempre mais do mesmo.

Um abraço!

Comentários | Link permanente
© Djavan Fagundes, 2010.



Gustavo Noronha (kov): WebKitGTK+ and the Web Inspector

9 de Agosto de 2010, por Desconhecido - 0sem comentários ainda

When I started working on WebKitGTK+ I was a web developer, writing IT applications using Python and Django, and building features for content portals running Plone (argh). Even though I was an Epiphany user ever since it was forked off Galeon, I still had to use Firefox for my work, because I couldn’t really live without Firebug.

It should come as no surprise, then, that one of my first patches to WebKitGTK+ was actually making the awesome Web Inspector work in our port. After the initial support, though, not a lot has been done to further improve it, partly because it was already good enough for many uses, partly because I somehow started doing non-web development again ;).

These last weeks, through my R&D efforts in Collabora, I have been able to push Web Inspector features and integration a bit further. A simple change that boosts the Inspector’s usability quite a bit is having the nodes that are being hovered highlighted. Along with that, the ability to attach the inspector to Epiphany’s window should make it easier to use for poking the DOM.

The Web Inspector has a number of settings that control its behaviour. Since, for instance, enabling javascript debugging may slow down javascript performance, the inspector usually has it disabled by default, and provides a button to enable it. It also provides an option for always enabling that feature, but that does not work right now, because we are not saving/restoring the relevant settings. A solution to that is in the works using the GSettings infrastructure that was recently merged into glib.

Here’s a simple screencast, showing these improvements in action (click the video to check it out in full size):