July 02, 2009

Epx

Rightwinger

Democracia e baderna

Existe no Brasil uma confusão essencial sobre democracia, que já causou a sua abolição diversas vezes. A última "edição" tem durado bastante, mas não está nem de longe livre deste problema:

* Muita gente (tradicionalmente "de esquerda") confunde baderna com democracia.

* Muita gente (tradicionalmente "de direita") confunde democracia com baderna.

Uma obra necessária, que qualquer pessoa do povo concorda que é necessária, que levava 5 anos para ser realizada com os parcos tecnológicos de 1880, e agora demora 20 anos por que os diversos setores do governo ficam batendo cabeça, isso é baderna. É perfeitamente possível ouvir todas as partes interessadas, respeitando a democracia, sem quadruplicar os prazos em relação a 1880.

Manifestações de rua parecem baderna, mas são democracia, ainda que incomodem outros que não o alvo da manifestação.

Quando funcionários públicos que ganham salários estratosféricos fazem greve todo santo ano, quase sempre no mesmo mês, isso é baderna. Fazer greve "porque está na Constituição" não é democracia. Greve é um instrumento extremo, reservado para quem enfrenta condições subumanas de trabalho, assim como dar um tiro em alguém que invade sua casa é a única situação (extrema) onde é aceitável dar um tiro em alguém. E ainda assim sujeito a dar muitas explicações para o delegado.

Quando controladores de vôo fazem greve por absoluta falta de condição de trabalhar (um problema conhecido desde o início dos anos 90), isso é democracia, não é baderna, AINDA que a lei proíba militares de fazer greve.

A burocracia reinante no país, com os DETRAN e os cartórios de mestre-sala e porta-bandeira, não é nem democracia nem baderna. No Brasil, o ditado de Napoleão vale ao contrário: "Nunca tome por burrice o que pode ser explicado por conspiração." Criar dificuldades para vender facilidades. Mas este problema de nível mais baixo não será objeto deste post.

Olhando as diversas expansões e contrações das liberdades democráticas no Brasil, podemos associar cada uma delas a este mau entendimento do que seja democracia, trocando apenas o sinal.

Eu atribuí cada uma das polaridades da confusão a um viés político, mas isso provavelmente tem mais a ver com o fato de que o Brasil tem sido governado pela "direita" desde sempre. Na verdade, qualquer governo tende a confundir democracia com baderna.

Como "nunca antes neste país" a esquerda governou por tanto tempo e num regime estável, só agora podemos constatar isso in loco -- com o Lula sempre às turras com a imprensa, acusando-a de baderneira e uma ameaça à democracia, quando ela na maioria das vezes só está apontando as badernas que ameaçam a democracia.

Curiosamente, enquanto reclama da imprensa, tolera as badernas dos achegados e tenta vendê-las embrulhando-as no celofane do "jogo democrático".

Na verdade a característica mais negativa, ou talvez a que mais me incomode, do governo Lula é a extrema ambivalência, o conseguir exercitar as duas polaridades dessa confusão AO MESMO TEMPO, confundindo baderna com baderna e democracia com democracia. Outra ambivalência essencial do governo Lula, esta fora do seu controle, é ser perpetrante e vítima ao mesmo tempo da confusão baderna-democracia, pois muita gente ainda toma sua subida ao poder por sintoma de baderna.

Note que eu disse que o governo Lula é ambivalente. O PT não é. O PT apenas confunde baderna com democracia, infelizmente pelo motivo errado: ainda pensa que está na oposição. Quando acontece uma baderneira greve de funcionários públicos, o Lula é ambivalente, o PT apóia. Quando o governo quer fazer uma obra, o PT se coloca ao lado de qualquer coisa que se mexa que possa obstar a obra (índios, verdes, MS*, etc.). Quem assistir durante alguns dias a TV Câmara vai constatar que os parlamentares petistas ficam o tempo todo criando projetos de lei embaraçosos e prejudiciais ao governo. Sob essa métrica, PT é muito mais oposicionista que o PSDB.

July 02, 2009 17:11

Gustavo Niemeyer

Labix Blog

Screwing up Python compatibility: unicode(), str(), and bytes()

Backwards and forwards compatibility is an art. In the very basic and generic form, it consists in organizing the introduction of new concepts while allowing people to maintain existing assets working. In some cases, the new concepts introduced are disruptive, in the sense that they prevent the original form of the asset to be preserved completely, and then some careful consideration has to be done for creating a migration path which is technically viable, and which at the same time helps people keeping the process in mind. A great example of what not to do when introducing such disruptive changes has happened in Python recently.

Up to Python 2.5, any strings you put within normal quotes (without a leading character marker in front of it) would be considered to be of the type str, which originally was used for both binary data and textual data, but in modern times it was seen as the type to be used for binary data only. For textual information, the unicode type has been introduced in Python 2.0, and it provides easy access to all the goodness of Unicode. Besides converting to and from str, it’s also possible to use Unicode literals in the code by preceding the quotes with a leading u character.

This evolution has happened quite cleanly, but it introduced one problem: these two types were both seen as the main way to input textual data in one point in time, and the language syntax clearly makes it very easy to use either type interchangeably. Sounds good in theory, but the types are not interchangeable, and what is worse: in many cases the problem is only seen at runtime when incompatible data passes through the code. This is what gives form to the interminable UnicodeDecodeError problem you may have heard about. So what can be done about this? Enter Python 3.0.

In Python 3.0 an attempt is being made to sanitize this, by promoting the unicode type to a more prominent position, removing the original str type, and introducing a similar but incompatible bytes type which is more clearly oriented towards binary data.

So far so good. The motivation is good, the target goal is a good one too. As usual, the details may complicate things a bit. Before we go into what was actually done, let’s look at an ideal scenario for such an incompatible change.

As mentioned above, when introducing disruptive changes like this, we want a good migration path, and we want to help people keeping the procedure in mind, so that they do the right thing even though they’re not spending too many brain cycles on it. Here is a suggested schema of what might have happened to achieve the above goal: in Python 2.6, introduce the bytes type, with exactly the same semantics of what will be seen in Python 3.0. During 2.6, encourage people to migrate str references in their code to either the previously existent unicode type, when dealing with textual data, or to the new bytes type, when handling binary data. When 3.0 comes along, simply kill the old str types, and we’re done. People can easily write code in 2.6 which supports 3.0, and if they see a reference to str they know something must be done. No big deal, and apparently quite straightforward.

Now, let’s see how to do it in a bad way.

Python 2.6 introduces the bytes type, but it’s not actually a new type. It’s simply an alias to the existing str type. This means that if you write code to support bytes in 2.6, you are actually not writing code which is compatible with Python 3.0. Why on earth would someone introduce an alias on 2.6 which will generate incompatible code with 3.0 is beyond me. It must be some kind of anti-migration pattern. Then, Python 3.0 renames unicode to str, and kills the old str. So, the result is quite bad: Python 3.0 has both str and bytes, and they both mean something else than they did on 2.6, which is the first version which supposedly should help migration, and not a single one of the three types from 2.6 got their names and semantics preserved in 3.0. In fact, just unicode exists at all, and it has a different name.

There you go. I’ve heard people learn better from counter-examples. Here we have a good one to keep in mind and avoid repeating.

July 02, 2009 15:50

Eugeni

Eugeni's blog

Não tem preço!

Defender o doutorado com camisa de Corinthians a tarde no dia que o Corinthians é campeão brasileiro a noite – não tem preço!! :) :) :)

July 02, 2009 03:43

Thiago Santos

Thiago Marcos P. Santos

Internet em Manaus - FAIL

Chega ao fim minha busca por uma conexão banda-larga à Internet em Manaus. Minha última tentativa foi com a Oi/Telemar e seu serviço Velox. Venda casada é complicado... a única forma de se ter o serviço Velox é contratando o Oi Fixo. Dada a falta de opções, tive que me ...

July 02, 2009 03:30

July 01, 2009

Eugeni

Eugeni's blog

Dr. Eugeni

Dr. Eugeni

Dr. Eugeni

Well, the title says it all :) . Yep, it is true – after 5 years, 3 journal publications, 7 conference publications and 1 book chapter, I am finally a PhD :) .

Update: a short description about the nature of the thesis is here

July 01, 2009 23:13

Roberto Teixeira

Sobre Bytes e Bits

Só um desabafo 100% pessoal

Nos últimos tempos eu percebi que me pego constantemente sem tempo para fazer coisas legais. Só que isto é apenas uma desculpa. Eu tenho tempo. Se tem uma coisa que eu tenho muito no momento é tempo.

Mas me sinto assim do mesmo jeito…

É totalmente psicológico, na verdade. Toda a vez em que eu penso em algo prazeiroso para fazer, eu imediatamente tenho uma sensação ruim pelas coisas que estão por vir. Só que racionalmente não é bem assim. Eu não acho que haja nenhuma coisa ruim no meu futuro próximo. Ao contrário, tem coisas muito boas que estão por vir:

E ainda assim eu sinto como se fosse enfrentar meses horríveis. Acho que existem várias razões para isso. A mais importante certamente é a ansiedade. E é ansiedade gerada diretamente pela incerteza. Será que vou conseguir fazer o trabalho para o qual fui contratado? Será que a minha mulher vai gostar da cidade? Será que eu vou achar um lugar bom para vivermos? Nossa, a lista de dúvidas parece interminável.

Não ajuda nada o fato de eu estar indo para outro país. Um país cuja língua eu não domino. Também não ajuda em nada o fato de ser um país parecido com o meu no que diz respeito à paixão pela burocracia. Esta é outra fonte de frutração e incerteza. Preciso esperar um ano para poder pedir a carteira de identidade de lá. E os advogados me dizem que deve demorar algo como seis meses para esta carteira sair, de forma que devo me preparar para ficar sem documentos por algo como um ano e meio. Nada demais? Você precisa da droga da carteira de identidade para quase tudo por lá. Tem uma empresa de advocacia local me ajudando e eles vão aos poucos pesquisando o que posso e não posso fazer. Em geral, a maioria das coisas vai exigir que eu espere pelo documento. Então obviamente não estou louco por passar por esta fase.

E lembra que eu disse que tenho uma filha a caminho? É mais uma coisa para eu me preocupa. Não com ela mesmo, mas estou mudando de país. AGORA. Então preciso fazer todo um processo burocrático que envolve dois países que amam a burocracia de paixão, ao mesmo tempo em que coordeno tudo para poder estar aqui no dia no nascimento antes de voltar para fora e encontrar um lugar para viver. E como achar um lugar para viver sem documentos? Nada fácil.

E a mudança? Não posso mudar nossas coisas enquanto minha esposa ainda estiver por aqui. E quando ela sair, a mudança vai junto, mas tem um probleminha. A mudança vai de navio e vai levar de 8 a 12 semanas para chegar. O que fazer com esses meses? Hotel é caro. Apartamento sem móveis é algo com que eu poderia viver alguns meses, mas não minha mulher com uma bebê recém-nascida.

E o cachorro? Não tenho como levá-lo, de forma que preciso achar uma casa para ele. Quem tem cachorro sabe como a gente se apega a esses bichos. É parte da família. Então é mais uma coisa…

São um monte de coisinhas que somadas só ajudam a aumentar a ansiedade. E tudo isso quando eu parei de tomar remédios para ansiedade…


© robteix para Sobre Bytes e Bits, 2009. | Link Permanente | Um comentário | Conecte-se ao autor via Twitter.
Tags:


July 01, 2009 18:26

Epx

Digital Senzala

Qt and Javascript^WQtScript

Today (at dawn) I had my first experience with Javascript inside Qt. The language is actually referred as QtScript by Qt documentation. The thing is simply great. Executing simple Javascript code is simple as


QScriptEngine engine;
qDebug() << engine.evaluate("a = 1; b = 2; a + b;").toInt();

As expected, the "protocol" between C++ and Javascript objects has its rules. Javascript can't "see" the current application's context. For exemple, if we want to make an object available to Javascript, we must add it to the global scope:

engine.globalObject().setProperty("close_button", closeButton);

When an object is made available in Javascript context, the following features (among others) are made available from Javascript side:

a) properties can be set and get using the obj.property syntax. Yet another incentive to use Qt properties as much as possible in our C++ classes.

b) public slot methods can be called (as normal methods) from Javascript, since Qt has introspection information about them. Too good that exporting methods as slots costs nothing.

c) signals and slots can be used (connected and fired at will). Slot functions may be written in Javascript. The only limitation is that signals must be defined in C++; you can not define a new signal in Javascript.

Non-slot methods must be encapsulated to be made available. The easiest way is to connect them to properties, which in turn are always available in Javascript space.

Perhaps unexpectedly, class constructors are not made automatically available to Javascript. Constructors and C++ free functions must be added to Javascript by encapsulating them in QScriptValue objects and then adding them to Javascript scope the same way we did with closeButton.

This means that, for now, QtScript can not be used to write whole applications, because it always depends on a C++ supportive "shell" to make the right objects and classes available for scripting.

I guess the problem can be mitigated somewhat by using factories in C++; if you use factory("AnyClass") to instantiate objects, it is just a matter of exporting the factory() to Javascript. Of course, this leaves the Qt classes themselves out.

If we want to use some Javascript in our Qt apps, there are some architectural trends that we must follow. Using properties, signals/slots and factories instead of static method calls everytime we can. And leave behind the anal-retentive mania of keeping most methods protected/private. Those techniques make life easier in C++ anyway, so why not?

July 01, 2009 16:08

Ademar

blog.ademar.org

Viagem à Patagônia: 30 dias no sul da Argentina e Chile

Foram 30 dias de viagem pela Patagônia, alternando entre Chile e Argentina. Quem já nos conhece sabe que não somos “turistinhas”: gostamos de viajar em baixa temporada e tentamos sair do lugar comum. E assim foi essa viagem: rodamos por estradas do interior, conhecemos pequenas vilas, fizemos trekking, acampamos, pedimos carona e nos hospedamos ou pelo menos conhecemos vários outros couchsurfers.

Fim do outono e início do inverno é a baixa temporada na Patagônia, com tempo frio, cidades desertas e chuva, vento e neve. A maior parte da infra-estrutura turística das pequenas cidades está fechada e algumas estradas ou trilhas pra trekking bloqueadas. Mas no geral tivemos muita sorte: conseguimos dias de sol onde era mais importante e a chuva atrapalhou bem menos do que esperávamos.

Algumas fotos da viagem

Algumas fotos da viagem (clique para ampliar)

Mas enfim, isso tudo é assunto pros posts futuros onde relatarei a viagem em detalhes. Esse aqui é só pra dizer que chegamos bem e que a viagem foi ótima, com pouquíssimos contratempos. Seguem algumas estatísticas da viagem:

Ao longo dos próximos meses, conforme eu for precessando a massa de dados, reporto as diferentes etapas da viagem e disponibilizo os álbuns de fotos e principais vídeos. Obrigado a todos os que ajudaram a tornar essa viagem uma realidade.

Posts Relacionados:

  1. Viagem à Patagônia: Argentina e Chile no Outono/Inverno
  2. Viagem à Africa do Sul: The Elephants Sanctuary
  3. Viagem à África do Sul: Skydive em Plettenberg Bay


Link Permanente | Um comentário
Post tags: , , , ,

July 01, 2009 05:09

Gustavo Niemeyer

Labix Blog

My iPhone for an Android!

Yes, you’ve heard it right. I’ll exchange a legally unlocked iPhone 3G for a recent Android phone such as the Samsung Galaxy or the HTC Hero, and will pay the difference back! (street price minus 30% of devaluation for the used iPhone 3G).

I got an iPhone some time ago to learn the concepts introduced in the platform, and get a feeling of how it works out in practice. I’m happy I did it, since the hands on experience is worthwhile. But the experience is done, and even though I have positive things to say about the platform, the omnipotent and arrogant position of Apple with developers kills any chance of any further involvement I could have with the platform. I’m upset enough with it that I don’t want to see my wife using the device either.

There are many things in Apple’s behavior which are a source of arguments, and interminable flamewars, and most of the times I can see both sides of the story. For instance, when people pay a premium to get the hardware, some feel like it’s just throwing money away, but if there is good engineering behind it, well.. I understand people may want to pay the premium to get that exclusive product they like. That said, being so incredibly arrogant in the marketplace, and with developers, which theoretically should be their most precious partners, since they sustain the platform going, is something I can’t tolerate.

I know.. who am I. Just a random guy that actually gave them some money for one of their products. But I’m also a guy that won’t be buying their upgraded phones, and will be spreading the word to make people realize what a terrible future it will be if Apple ever dominates the marketplace. Even you’re not a developer, it’s a good idea to ponder carefully about this behavior. It tells a lot about how far they go to defend their own interests, and what kind of lock in they intend to get you into.

Finally, compare that to a nice open source operating system on which multiple first class vendors are cooperating. Sheeshh.. easy choice for me.

July 01, 2009 02:50

June 30, 2009

Verde

Blog do Aurélio (verde)

10anos: Vim


Quando comecei a trabalhar na Conectiva, em 1997, também comecei a (tentar) utilizar diariamente um editor de textos estranho, todo preto, sem menus nem botões, que mais apitava do que escrevia.

— Bip. Bip. Bip.
— Eu digito e nada parece!
— Bip. Bip. Bip.
— Será que meu teclado estragou?
— Bip. Bip. Bip.
— Maldito editor dos infernos que não faz nada e ainda trava!
— Bip. Bip. Bip.
— Como é que eu saio? Esc? Ctrl-Q? Ctrl-C?
— Bip. Bip. Bip.
— M**** de programa (dedo no botão liga/desliga do computador)

E assim foi a minha primeira experiência com o Vim. Experiência não, frustração. “Que droga de editor”, pensei. Como todos ali em volta podiam usar esse treco que não faz nada e ainda trava o computador?

A primeira de muitas frustrações.

vim

O editor Vim, pronto para apitar

O Vim é um editor casca-grossa. Ele não te ajuda, não é intuitivo, não é bonito, não dá nenhuma mensagem esclarecedora. Ele só apita.

Depois de várias (inúmeras, diversas, constantes) aulas de humildade que este maravilhoso editor me proporcionou, aos poucos ele começou a diminuir o número de apitos. Eu fui pegando o jeito dos comandos mais básicos. Minha tática foi me policiar a sempre pensar antes de digitar qualquer tecla, com um objetivo fixo na cabeça: “maldito, você não vai apitar mais”. Com rigorosa disciplina e concentração, eu já conseguia passar um ou dois minutos sem ouvir nenhum apito. Quem está comando agora, hein Vim manézão?

— Bip.
— Droga.

Acabou virando questão de honra dar uma lição naquele editor petulante. Quem ele pensa que é para ficar apitando na cara dos outros assim, indiscriminadamente? Basta! E assim prometi para mim mesmo que um dia eu iria dominar aquele mala.

————— ∞ —————

Meses depois, ele já não apitava mais (santo :set visualbell hehe).
Apertar o Esc a toda hora tornou-se natural.
O :wq parecia que eu já conhecia desde criancinha.
E aquele tal .vimrc passou de alienígena a camarada.

O caminho não foi fácil, a curva de aprendizado do Vim (curva?) é extrema. Você apanha, apanha, apanha, apanha, apanha e de repente um dia acorda iluminado e tudo faz sentido. De inimigo o editor torna-se seu companheiro inseparável para todas as horas.

Escrever programas, editar arquivos de configuração, relatórios, emails, o mundo é bem melhor com uma tela preta.

$ export EDITOR=/bin/vi
$ set -o vi
$

É, o Vim é o melhor editor de textos de todos os tempos! \o/

Mas apenas usar o Vim e deliciar-se sozinho com suas mágicas poderosas era muito egoísmo. O MUNDO precisava conhecer este editor maravilhoso! Que ganho em produtividade as empresas teriam se todos os funcionários usassem o Vim! yyp é muito mais rápido que Ctrl-C Ctrl-V! E os mapeamentos, e as abreviações, e as marcas, e os…

E assim nasceu uma área dedicada ao Vim dentro da minha recente “página” de internet, em 1999.

Lá eu guardava os links para artigos legais que eu encontrava, e também escrevi minhas próprias dicas e posteriormente artigos mais elaborados, que foram publicados na Revista do Linux e na Linux Magazine. Em 1999 mesmo também criei a lista vi-br no antigo eGroups (atual Yahoo! Groups) que até hoje reúne os aficionados pelo editor.

————— ∞ —————

Para comemorar os 10 anos do meu site, quero dar um presente especial para aqueles que o acompanham desde o início e que até hoje ajudam em sua divulgação: os nerds.

Dessa vez, nada de MiGuXeiToR, AdSense, carveboard, viagens ou música. Quem vai ganhar uma reforma geral são as áreas nerds do site, que confesso, estão há algum tempo esquecidas por este que vos escreve. Isso já mudou.

Já investi mais de 30 horas na reforma das áreas nerds do site, e outras tantas ainda serão nos próximos dias. É um trabalho em andamento que espero melhorar com o retorno de vocês.

O foco da reforma é somente um: conteúdo. Afinal, isso é o que interessa, não é mesmo?

Pensei sobre os artigos do site, sobre como eu poderia melhorar a experiência do usuário no sentido de ele aproveitar melhor os textos, realmente aprender e ficar sedento por mais conhecimento. E uma vez sedento, oferecer mais links e artigos para que ele continue lendo até saciar-se. Tipo a Wikipedia, onde um artigo puxa o outro.

Para mim ficou claro que o formato atual do site apesar de ser completo no sentido de o megamenu conter todos os links possíveis para todas as áreas do site, isso atrapalha aquele que quer simplesmente ler mais sobre o assunto atual. Então eu precisava de um menu mais especialista, que listasse apenas os artigos do assunto em questão. Por exemplo, não faz sentido listar o MiGuXeiToR na área de Vim.

Mas as ideias que fiquei maturando na cabeça durante semanas só fizeram sentido após ler o artigo In Defense of Readers do A List Apart, que em resumo, diz para não distrair o leitor com supérfluos. Era a peça que faltava.

A chave era valorizar o prazer de ler acima de qualquer outra coisa: navegação, caixa de pesquisa, breadcrumb, nome do site, e até anúncios (vou deixar de ganhar $$$, mas é por uma boa causa).

Se o cara chegou no artigo sobre como selecionar texto no Vim, é isso que ele quer saber e pronto! Qualquer coisa fora o conteúdo do artigo só vai desviar a atenção e atrapalhar a leitura. Tipo a experiência de ler um bom livro, que lá na página 15 não tem nenhum sumário, índice, propaganda ou dados sobre o autor. É o texto e pronto. É o que o leitor quer.

Lá fui eu tentar aplicar isso no site. De volta ao básico, tirei tudo. Só sobrou o conteúdo.

tema-livro

O tamanho do texto, espaçamento e fonte “quase-serifa” tentam lembrar a experiência do livro impresso. Margens generosas de ambos os lados dão espaço para o texto brilhar sozinho, sem competição nenhuma com menus ou anúncios.

Ao chegar ao final do texto, é hora do leitor decidir o que fazer:

A área sobre o Vim está estreando a novidade, sendo a primeira a mudar para o formato novo. Experimente, depois volte aqui contar o que achou:

vim-antes

Era assim...

vim-depois

Ficou assim

Tem uma diferença, não? :)

Leia todos os artigos:

Veja o índice com links para outros artigos e informações:

June 30, 2009 21:03

Renata

Renata

Google Developer Day

Eh, eu fui ao Google Developer Day. Não devo ser uma pessoa deslumbrável. Ou minha personalidade de diva resmungona realmente chegou ao ápice. A falta de internet me incomodou (tinha wireless do hotel, mas custava uma pequena fortuna), a falta de chá/café me incomodou (tava frio, pô, eu sei que lindas modelos distribuíram picolés loucamente, mas eu queria um chá quentinho para aguentar as salas geladas, picolé… hm, não) e era muito bizarro aquela mesa de coffee-break linda, montada, e o garçon dizendo “só dez pras quatro”.

Ah, sim, vocês querem saber das palestras, claro, né? Se eu falei até agora de outra coisa, é porque não me impressionaram tanto assim. Olha, o Google Wave é SENSACIONAL, isso é bem verdade. Mas… o resto… achei… hm… “legal”, “bacana”, adjetivos não tão empolgantes assim. Palestras muito longas e repetitivas, talvez. Ou palestrantes não muito carismáticos (eu queria ENFORCAR o francesinho que a cada dez palavras dizia “Brazil!” “Futebol!” “Canvas!”, ah, ok, canvas fazia parte do script).

Enfim, aguardem o Google Wave. Acho que todo mundo foi ao Google Developer Day pra isso, e o resto foi encheção de lingüiça de HTML 5 (oooh look shiny!) e Social Bullshit. Com picolés e mulatas.

June 30, 2009 17:48

Gabriel Stein

gabrielstein.org

Macbook+openSUSE 11.1+MacOSX

I don’t have some screenshots, but I installed openSUSE 11.1 on Macbook and works fine! I will give some hints to people:

- Install rEFIt on MacOSX
- Use BootCamp to make the linux partition. After, quit BootCamp without installation.
- Reboot
- Install openSUSE, but you need to change the Boot Loader installation! NEVER install on MBR. Use the root partition installation.

For me, worked fine. I can use the right click (just using 2 fingers at same time), wireless works fine. Just the webcam have some problems, but I didn’t have enough time to test it. I read some documentation which says about Skype using, I will test it soon. On cheese, didn’t works.  V4L drivers didn’t worked well(or I didn’t installed correctly).

Some links below about installation and hardware compatibility.

http://en.opensuse.org/Installation_on_MacBook
http://en.opensuse.org/OpenSUSE_on_a_Mac

Any doubt, please use comments.

June 30, 2009 15:20

Gabriel Stein

gabrielstein.org

Fotos do FISL 2009

Aqui estão as fotos do FISL 2009

June 30, 2009 00:35

Gabriel Stein

gabrielstein.org

Link for Photos from International Free Software Conference

http://picasaweb.google.com/gabrielstein/FISL2009?feat=directlink

June 30, 2009 00:33

June 29, 2009

Gabriel Stein

gabrielstein.org

openSUSE 11.2 Milestone 3 Disponível

O Projeto openSUSE  Project apresenta com prazer  a versão Milestone 3 do   openSUSE 11.2  Imagens estão   disponíveis para download e testes.  Essa versão inclui o kernel Linux 2.6.30, KDE 4.3 beta 2, GNOME 2.27.2, OpenOffice.org 3.1.1 Alpha, e mais!

Essa é uma versão  Milestone , uma das que será  importante para a versão final 11.2 em Novembro.  Isso pode não estar a para sistemas em produção, mas deverá estar estável o suficiente para os testes.

Screenshots das versões milestone e o desenvolvimento *factory” podem ser encontrados  nesse wiki.

Mudanças desde o openSUSE 11.2 Milestone 2

Muita coisa foi modificada desde a versão M2 , e muitos pacotes estão sendo atualizados para o  11.2 M3.  Algumas das principais alterações nessa versão inclui:

Visualize o Wiki openSUSE para mudanças adicionais na versão 11.2 Milestone 3.  Você pode visualizar os últimos pacotes em *Factory* no DistroWatch,  que acompanha os 203 pacotes principais do openSUSE.

Obtendo o Milestone 3

As últimas versões de desenvolvimento estão disponíveis em http://software.opensuse.org/developer/. Escolha  entre x86 ou x86-64 install DVDs ou KDE e GNOME Live DVDs.

Testando

Ajude-nos a fazer o openSUSE 11.2 a melhor versão até agora! Por favor, rode o openSUSE em sua rotina normal e nos avise sobre alguns bugs ou outros problemas que você encontre. Lembre-se que essa é uma versão milestone e não é adequada para usar em sistemas em produção.

Embora existam muitos usuários openSUSE que usam a distribuição Factory e/ou testam  estas versões para o trabalho do dia-a-dia,  queremos frisar que é perfeitamente possível que você encontre importantes bugs.
Acesse o site  openSUSE.org/Testing para maiores informações sobre o processo de  testes. Para acompanhar o processo de teste e desenvolvimento, nós recomendamos que você assine a lista de discussão openSUSE-Factory , e entre no canal #openSUSE-Factory no servidor IRC Freenode  para discutir o desenvolvimento do openSUSE.

June 29, 2009 18:45

Epx

Rightwinger

Chegou o Papai Noel!

Para o Natal deste ano eu estava pensando em comprar umas duas dúzias do livro "Road to Serfdom" do Frederick Von Hayek e distribuir entre alguns amigos, além de doar algumas cópias para bibliotecas e escolas. Mas descobri que a tradução para o português é um e-book livre. Então, aqui vai o presente de Natal adiantado:

http://www.ordemlivre.org/ebooks/F.A.+Hayek+-+O+Caminho+da+Servidão

Falta descobrir agora quais as condições de copyright para imprimir isto e mandar para as escolas, já que não encontrei a versão papel à venda no site.

June 29, 2009 16:44

Boto

Eduardo Habkost / diary

Slides da palestra sobre o oVirt no FISL

Os slides da palestra estão em: http://raisama.net/talks/ovirt-2009/slides.pdf.

Para visualização online, também estão disponíveis no Slideshare.

June 29, 2009 16:20

Forum Internacional de anti-capitalismo, petismo, e anti-copyright

Vou tentar fazer um rant curto.

Durante o FISL 10, me convenci que os palestrantes e voluntários (isso inclui a mim) são trouxas que tem apenas uma função: aumentar o público do evento para ajudar no sucesso das campanhas políticas promovidas pelos seus organizadores.

O evento não foi completamente ruim. O conteúdo das palestras técnicas estava excelente. O ponto é que ficou claro pra mim que a qualidade das palestras é apenas um efeito colateral. Os voluntários e palestrantes ajudam a montar o FISL, mas os “donos” do FISL não são eles.

Os donos do FISL são os que recebem o dinheiro de empresas privadas e estatais, mas não têm interesse algum em demonstrar para onde o dinheiro vai. São eles que definem o discurso utilizado, qual o conteúdo do site do evento, o que dizem os releases para a imprensa. Os donos do FISL são quem define se vão fechar o evento para o PT fazer campanha política, e se software livre será associado a anti-capitalismo e anti-copyright.

Eu não sou ingênuo para esperar que política fique totalmente de fora de qualquer grupo que reúna mais que 6 pessoas. Política é um efeito colateral difícil de evitar. A questão é se a política é apenas um efeito colateral chato (como eu imaginava que seria) ou um fim (como se demonstrou ser).

[Update 02/06/2009 18:40: muita gente parece ter lido só o último parágrafo do post e não entendeu a minha crítica. Eu não estou reclamando da grade do FISL. Eu estou reclamando do uso do evento para promoção de campanhas políticas que não dizem respeito a software livre. Eu não estou reclamando do tema política, eu estou reclamando do uso político do evento. Estou reclamando do uso do público e dos voluntários do FISL como massa de manobra (eu odeio essa expressão, mas não encontrei outra melhor).]

June 29, 2009 15:46

Rudá

RSTM

Poker de família...


A Banca sempre vence.

June 29, 2009 14:22

June 29, 2009 11:59

Epx

Digital Senzala

Dynamic-language tricks in Qt

Signals and slots: implementation

It's funny how, after all those years, only now I moved my ass to actually know how Qt signal/slot mechanism is actually implemented. I guess the main reason is, after having known languages like Python and Objective C, it is kind of instinctive to search for dynamic features in Qt, to the point that it feels impossible to do something with bare C++ (without Qt Core at least).

In the past, this mechanism just sounded like yet another UI toolkit event handling scheme, with the extra handicap of being "impure C++" (based on an IDL compiler). Good times back then, when I believed in C++.

Well, I took the time to read the Qt headers and the MOC generated code, and I must say I envy the guys that created it, in particular because they did it back then at 1990s. Some random details:

1) "signals", "slots", "emit" and other Qt words are #define'd to absolutely nothing, so they don't cause any special behavior in developer's C++ code, which can be compiled and debugged normally.

2) Slots are normal C++ methods, laid out by the developer. The only special thing is that MOC adds some introspection information about them in moc_classname.cpp: method name, which includes the signature (i.e. parameter count and typing), and a big switch/case statement which maps slot string names into slot method calls.

3) Signals are also normal C++ methods; that's why "emit method()" works even though emit is #define'd as nothing. But the developer does not write signal method bodies; MOC does that in moc_classname.cpp. Of course, the signal method's body just forwards the call to Qt's signal dispatcher.

4) Signal methods cast all parameters to void* and put them in an array -- a very opaque way of marshaling the parameters. This array is passed to the signal dispatcher.

5) The switch/case that translates slot names into actual method calls does the "unpacking" of this array of void*s. It does that believing blindly that the array contains the expected parameter types and quantity.

6) Since signal and slot names include the parameter signature, it is easy to test whether a given signal and a given slot have compatible signatures; it is just a matter of comparing strings character-wise. Better yet, it just needs to be tested at connect(). That's why the void* array of parameters can be casted "blindly" back to the original types.

7) The switch/case includes signals, too, so they can be invoked dynamically as well as slots. The purpose of this seems to be signal cascading (connecting a signal to another signal).

8) SIGNAL() and SLOT() simply convert what is inside parenthesis into a common string, which is the method signature. It's a simple macro #argument trick.

Thinking about the fact that every signal method has a real implementation, signals/slots feel more like a delegation mechanism (and not just an UI event propagation thing), because calling a (signal) method on one object causes the call of another (slot) method on another object.

Beyond connections: dynamic method calling

Given that enough introspection information about slot methods is stored in moc_sourcecode.cpp, the next question is: how can I invoke dynamically a method, without having to connect to a signal. It seems that it was not (easily) possible before Qt 4. In Qt 4, there is a

QMetaObject::invokeMethod(object, method_name, param1, param2...)

that does the desired trick.

Problem is, how this call will know parameter types, so the "call signature" can be verified against target slot's signature? One solution would be to trust blindly our parameter list -- if it doesn't fit the target method signature, a segmentation fault would take place. Not exactly an elegant solution.

The actual Qt solution is to wrap every argument with Q_ARG(). The argument types must be known by QMetaObject system so it "knows" the type and can do all checks and conversions. You can register your own classes in QMetaObject, allowing almost anything to be passed as Q_ARG(). If the method invocation has a wrong signature, a friendly error message will be displayed by Qt.

Google Search returns very few entries for "QMetaObject invokeMethod". I guess this technique is rarely employed. But I see a lot of potential in it. (I'll never get used to using multiple inheritance in C++ just because we need to call *one* slimy observer method, or using downcasts pervasively.)

Properties

The meta-object system, as well as the ability to register new types, is important in another Qt cornerstone: properties. Every object which is descendant of QObject can have properties added, set and recovered dynamically, without any previous specification in header file:

obj->setProperty("bla", 1);

int x = obj->property("bla").toInt();

As expected, object->property() can not return the desired property directly, because properties may be of any type. This method returns a QVariant object, which in turn can be converted to the native type.

Using Q_PROPERTY() in the class header is needed only if you want the property to have collateral effects (i.e. cause a method call) when read and/or written. The methods abovementioned will still work for such getter/setter properties..

A more radical approach to add collateral effects to properties, is to extend property() and setProperty() methods themselves, intercepting every property request and potentially acting upon all of them. Those QObject methods are virtual, so it is a perfectly legal trick.

Of course, all those tricks are commonplace in Python and some of them are easy to do even in Objective C, but allowing those things in C++ is another story.

June 29, 2009 05:31

June 28, 2009

Mauricio Teixeira

I do what I can...

Eu, pé frio / Me, jinx

–pt_BR

Eu assisti todo o primeiro tempo do jogo Brasil x EUA. Eu não desisti de assistir, mas testei uma teoria: fui pro quartinho do computador e deixei o jogo rolar. É, parece que eu sou pé-frio. Ainda bem que eu me toquei. :)

Ps.: Alguém mordeu a língua.

–en

I watched the first half of Brasil x USA soccer match. I didn’t gave up watching, but tested a theory: walked away to the computer, and let the game roll. Yup, looks like I’m jinxed. Lucky me I noticed in time. :)

Ps.: Someone bit their tongue.

June 28, 2009 20:38

June 27, 2009

Gabriel Stein

gabrielstein.org

openSUSE and Free Software Conference – part IV

This is the picture which shows the openSUSE Users Group in the International Free Software Conference!

img_0022

Gabriel Stein(I), Luana Coimbra and Vagner Farias.

And again: Thanks to Joe Brockmeier,Vagner Farias and Luana for all efforts.

June 27, 2009 22:59

openSUSE and Free Software Conference – part III

More barbacue photos.

June 27, 2009 17:09

Verde

Blog do Aurélio (verde)

10 anos de sáite


site-antigo-2002


isso te faz lembrar de alguma coisa?
então você é velho(a)! :)


conectiva.com.br/~aurelio

verde666.org

aurelio.net


é… o tempo passa. quando que eu iria imaginar que esse treco ia durar tanto, a minha “página na internet”. e mais ainda, quando que eu iria imaginar que outras pessoas iam ter interesse em ler e acompanhar a “página”!


lá está a página ainda no ar, cá estou eu ainda escrevendo para quem-quer-que-se-interesse e aí está você, lendo (e agora também comentando) e fechando o ciclo. até quando? sei lá… mas vamos continuar nessa até aparecer algo melhor pra fazer! :)


06/(1999|200[0-9])


o bit do saudosismo foi ligado. então, prepare-se que as comemorações estão apenas começando! os próximos dias serão uma viagem, tá ligado(a)? simbora!


\o/

June 27, 2009 14:26

Gabriel Stein

gabrielstein.org

openSUSE and Free Software Conference – part II

Yesterday we had the Brazilian President visit. I gave a t-shirt and a DVD from openSUSE to him. I forgot my camera at house, but tomorow I will post pictures about Tchelinux barbecue.

June 27, 2009 13:45

June 26, 2009

Eugeni

Eugeni's blog

msec updates

Time has come for the first msec release since Mandriva 2009.1!

This time we have several improvements, such as:

So let me introduce some details about each one of them.

Support for audit plugins

You may remember that msec shipped with Mandriva 2009.1 introduced support for plugins infrastructure (take a look at your /usr/share/msec/plugins/ directory to see some examples). This new msec, which will be shipped with Mandriva 2010, also introduces auditing plugins.

Well, you might be asking what the ..? what is the difference between those plugins?, so let me clarify it a bit.

Msec has two main functionalities:

The security configuration is what you configure using msecgui or using security levels – basically, you say what settings should be used on your machine for ssh, user logins, and all kind of system configuration. The security auditing are those background checks that run daily on your machine, to determine what has changed since the last run and let you know about that.

In old msec, this security auditing was performed by security.sh, security_check.sh and diff_check.sh, so we had just three large and complex files with a lot of duplicated code. With new msec version, everything was split to reduce code duplication, improve readability and simplify plugins creation.

Let me show you a sample plugin which checks for changes in system users:

    #!/bin/bash
    # msec: check for changes in local users

    # check if we are run from main script
    if [ -z "$MSEC_TMP" -o -z "$INFOS" -o -z "$SECURITY" -o -z "$DIFF" ]; then
            # variables are set in security.sh and propagated to the subscripts
            echo "Error: this check should be run by the main msec security check!"
            echo "       do not run it directly unless you know what you are doing."
            return 1
    fi

    # files to log the list of today's and yesterday's, and difference between them
    USERS_LIST_TODAY="/var/log/security/users_list.today"
    USERS_LIST_YESTERDAY="/var/log/security/users_list.yesterday"
    USERS_LIST_DIFF="/var/log/security/users_list.diff"

    # update yesterday's list
    if [[ -f ${USERS_LIST_TODAY} ]]; then
        mv ${USERS_LIST_TODAY} ${USERS_LIST_YESTERDAY};
    fi

    # check for changes in users
    if [[ ${CHECK_USERS} == yes ]]; then
        getent passwd | cut -f 1 -d : | sort > ${USERS_LIST_TODAY}
        Diffcheck ${USERS_LIST_TODAY} ${USERS_LIST_YESTERDAY} ${USERS_LIST_DIFF} "local users"
    fi

that’s it. You just drop this file into /usr/share/msec/scripts/01_check_for_users.sh and this check will be executed every time msec security checks are run. The security log will be updated, the diff check mail will be created and mailed (along with all other checks), and it will be working automatically from now on.

More msec auditing checks

A few additional msec auditing checks were added:

If you are using cooker or 2010 alpha, these options will not be added automatically to your /etc/security/msec/security.conf configuration file. The best way to experiment with them is by using msecgui, or running msec -f standard or msec -f secure to install default configuration for standard and secure levels.

Besides those items, I was thinking on an option to check for changes in PAM authentication, check for failed login attempts and support for rkhunter. And, as always, if you have any idea on some other functionality that should be interesting to have in msec, feel free to comment!

Improved auditing logging

The logging format of /var/log/security.log was changed to be compatible with syslog-based logging. This should make it easier for system applications to parse it, and for administrator to examine its contents. Now it is way easier to find information by date, kind of message and check type.

Other ideas

Among other ideas for msec I thought on the following:

Besides that, there is a number of bugfixes (which are going to be backported to 2009.1 shortly).

So msec is definitely is alive and getting better and better. Stay tuned for more news! :)

June 26, 2009 20:02

Mauricio Teixeira

I do what I can...

Aqui vai tudo bem, obrigado

“Em meio a resultados decepcionantes por todos os lados, a Red Hat, maior distribuidora Linux do mercado, conseguiu aumentar seu lucro em 7% no primeiro trimestre de 2009.”

Leia a matéria completa no Info Plantão.

June 26, 2009 17:17

Gabriel Stein

gabrielstein.org

openSUSE and Free Software Conference

Well.. I have some photos from International Free Software Conference in Brazil.

We have an openSUSE Users Group booth, with DVDs, T-Shirts and a lot of curious people about openSUSE.

Many Thanks to Vagner Farias from Novell and Joe Brockmeier for all effort to bring  DVDs and T-Shirts.

openSUSE Rocks!

June 26, 2009 17:11

June 25, 2009

Gabriel Stein

gabrielstein.org

openSUSE 11.2 Milestones

There’s a website to follow the development of the next openSUSE release. We can see some screenshots and look how will be the next release of openSUSE.

Please follow up: http://en.opensuse.org/Screenshots/11.2_Milestones

June 25, 2009 13:42

Tabgal

duskblue.org

XOrg, TV LCD e letras pequenas

Outro dia apareceu um problema curioso aqui. Máquinas com linux *coff*coff* ao serem ligadas via VGA em uma TV LCD (grande, normalmente), em algumas aplicações mostrava letras muito pequenas (exemplo, Google Maps).

(O que é curioso, uma tela gigante com um texto ridículo de pequeno).

Mas o que acontece?? VGA -> Vesa -> DDC/EDID -> Infos do monitor

Exemplo do meu monitor

(II) intel(0): Supported additional Video Mode:
(II) intel(0): clock: 106.5 MHz Image Size: 408 x 255 mm

Tamanho da imagem e Resolução juntos -> DPI

Bem que Rasterman falou DPI scaling não presta!!! Tamanho grande, resolução baixa, DPI pequeno. (não entendi porque a letra diminuiu).

A solução é a opção “DisplaySize” no xorg.conf. Coloque valores “mais convencionais” e tudo volta ao normal.

June 25, 2009 12:55

Acoster

Costo's Blog

Buenos Aires

Friday I’m leaving for Buenos Aires and will spend a week there (despite the silly H1N1 scare). Well, I had to do something with my between-projects vacations, and since we won’t have french classes next week… ;)


June 25, 2009 01:04

June 24, 2009

Mauricio Teixeira

I do what I can...

Quote of the day

After USA won against Spain, I congratulated my manager, and I could feel the love by IRC. :D

<theboss> we’re still sore about the overtime loss in the ‘94 cup … we’ll see you in the final

June 24, 2009 20:36

Gustavo Niemeyer

Labix Blog

Are you ready for the mobile revolution?

Are you? I’m not entirely sure I am, even though I think about this a lot.

If you’re of the tech-savvy kind, you’re certainly aware of the great capabilities that the new mobile phone generation is bringing: Internet connection, a quite decent browser, GPS, camera, etc. But, really.. did you stop to think about what’s going on? This phone generation is still relatively expensive today, but they’re here to stay, and in just a few years, they’ll be commonplace.

Now, let’s forget about ourselves for a moment, and think about what mass adoption of a quite capable generic computer with full internet connectivity 24h a day being carried with its owner means for the world? Remember, the number of mobile phone users in the world is several times superior to the number of computers, and most of the computers are in the so called first world.

This implies that not only will everyone have access to the world in their pockets, which is already quite amazing by itself, but that a large number of people will have access to the Internet at all for the first time with their mobiles. Besides the several social impacts that these changes will bring, there are also many other interesting consequences. As simple examples, the most common client to many web services will be mobile phones, and many people will learn to use a touch screen interface of the mobile to interact with the world before ever having used a desktop computer for that.

I find that amazing, and this is happening right now, in front of our eyes.

June 24, 2009 00:58

June 23, 2009

Freitag

Tech journal by a random guy

A novela do N800 (Cap 2) - Descaso do submarino, atendimento ruim Nokia

Algumas coisas aconteceram desde o último post.

Alguém do submarino (sei lá se é verdade, eu não acredito em nada que eu vejo na Internet) 'tentou' se comunicar comigo apenas algumas horas depois do post.
hum. O estranho é que não econtrou meu cadastro. Tá, eu não incluí informações como e-mails, telefones, protocolos ou números de pedidos porque, afinal isso é a INTERNET e sabe-se lá o que alguém mal intencionado faria com esses dados (paranóia, eu sei). Mas será que tiveram tantos Eduardos de Curitiba que compraram N800 no dia 11/Maio pela manhã?? impressionante.

Enfim, também tive uma oferta de suborno, digo, oferta de um presente especial se eu tirasse o post do ar (que por sinal, me deixou extremamente indignado, já que é muito mais fácil e barato comprar alguém do que melhorar o atendimento, isso é reflexo da sociedade corrupta brasileira, mas isso é assunto pra divagações políticas). Sendo que se ela simplesmente tivesse resolvido o problema eu colocaria aqui com o maior bom gosto que finalmente fui bem tratado e o problema resolvido. Aos olhos dos leitores/cliente isso seria bom e ponto, seria bom para o submarino. Agora oferecer presentes pra tirar do ar?

Mas como ela se ofereceu assim como um acesso rápido que resolveria meu problema com toda a prioridade, resolvi dar uma chance. Ou 5. Ninguém pode dizer que eu não tentei. (ah, se quiser falar comigo agora você já deve ter o telefone, senão mande e-mail no eduardofr arrob. yahoo.com e esse não é o e-mail que eu tenho no cadastro do submarino não, mas leio-o regularmente)

Liguei no telefone 4003-5544 em torno do meio-dia. Horário de almoço.
Fiquei 10 minutos esperando na linha escutando aquele jingle e as propagandas do submarino.
Desliguei, porque é preciso almoçar.

Liguei mais uma vez lá pelas 17:30. Dez minutos esperando mais uma vez. Desliguei.

Liguei mais duas vezes entre às 18:00 e 18:30. O sistema está fora do ar senhor, o senhor gostaria de estar aguardando o sistema retornar ou gostaria de estar ligando dentro de 20 minutos? (sim, estava fora do ar as duas vezes)

Tá. Mas eu vou falar com alguém, pra pelo menos ver se esse contato de "resolução prioritária" vai resolver algo.

Mais 14 minutos esperando e ouvindo o jingle.

Falei o que fui contactado pela Maria José, do GIC e tudo mais. A moça disse que vai abri um protocolo junto com a ouvidoria e eles irão estar entrando (AARGGHHH!) em contato comigo em até um dia útil. Tá.

Mas sabe qual é o meu medo? é que o Submarino realmente venha buscar o aparelho, com toda a boa vontade do mundo pra tentar resolver isso.
E não tragam outro.
Aí eles vão retirar, levar pra nokia, a nokia vai fazer um laudo, dizendo que o aparelho está normal (sim, porque o aparelho liga se tiver carga na bateria! só não carrega a bateria de jeito nenhum) e daí o submarino pode devolver o mesmo aparelho (mais um lacrezinho em cima da caixa) com defeito, ou pode se oferecer pra realmente trocar, mas que do jeito que eu tenho sorte, eles vão dizer que o aparelho está em falta no mercado e que eles vão me dar sei lá, ou crédito na loja.

Infelizmente Maria José, parece que a resolução prioritária não é tão prioritária assim.

Ah, a nokia não ligou ainda (o prazo deles é até amanhã 24/JUN às 22:00).

Maravilha.

Eu estou realmente sem esperanças de ter esse aparelho consertado. Lá se vão R$500 pelo lixo.
-------
Mais tags legais pra que vocês acompanhem a novela:

Submarino atendimento ao cliente falho GIC teleatendimento 4003 5544 nokia n800 com defeito bateria não carrega troca impossível abandono do consumidor

June 23, 2009 22:58

Mauricio Teixeira

I do what I can...

Nova profissão e desmatamento

Não. Eu não estou virando madeireiro. :)

Acontece que nos últimos dias acho que aprendi uma nova profissão: despachante do Detran. Faz 3 dias que eu como e durmo debruçado nos processos, papeladas, taxas e burocracias do Detran tanto para transferir a placa do meu carro para o estado de São Paulo, quanto para renovar minha habilitação. Eu resolvi fazer tudo sozinho pra não ter que pagar a exorbitância que cobra um despachante. No meio das dezenas de idas e vindas, cheguei à conclusão que os caras ganham pouco pra ter que aturar tudo aquilo.

E o desmatamento? Bem, confirmei o que eu já imaginava: o grande causador do desmatamento é a burocracia. Como? Haja papel, meu amigo! Haja papel!

June 23, 2009 16:54

FZero

Serviço de Utilidade Pública

Ouch! O último update da Apple quebra o Java no OS X Leopard. Como eu acabei de gastar quase uma hora para consertar a caquinha, achei uma boa compartilhar o fix com os caléga.

Se você está setando o seu JAVA_HOME para /usr (como qualquer pessoa normal que use Linux, Solaris, *BSD e qualquer outro sistema *nix minimamente sensato), seu Java vai quebrar. No lugar disso, altere o valor no seu ~/.profile para:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

Molinho de lembrar, né? Eu acho lindo como a Apple sempre facilita a vida dos usuários! </sarcasm>

June 23, 2009 16:50

Renata

Renata

Ou você está comigo, ou você está contra mim

Umas semanas atrás, enviei pelo twitter uma lista de restaurantes vegetarianos/naturais em São Paulo. Como resposta, obtive uma enxurrada de endereços de churrascarias. Qualquer um que me conheça um pouco melhor sabe que não SOU vegetariana, ESTOU vegetariana por questões de saúde e aprecio como ninguém um bom churrasco especialmente sangrento, a ponto de causar nojo em muita gente que coma carne perto de mim. Então, mandar um endereço de churrascaria pra mim não causa nenhuma irritação, muito pelo contrário.

Ontem, tentando ajudar as pessoas que ainda sofrem com configuração de dois monitores no Linux – em geral é um procedimento plug-n-play no Ubuntu como bem relataram, mas, dependendo do driver, pode dar dor de cabeça – postei meus xorg.conf que funcionaram aqui. Até misturei tudo e disse que minha placa de vídeo era Intel, podem me zoar à vontade. Mas, curiosamente, surgiram uns Windows-lovers e Maclovers aqui, mesmo esquema do pessoal da churrascaria: achando que sou uma linuxfreak que não os suporta e que ia ficar magoadinha de algo não funcionar no linux e funcionar no Mac e no Windows.

Olha, pessoal, eu não acho que exista nada perfeito no mundo, eu não me acho perfeita, eu sou a favor da diversidade de opiniões e não acho o planeta perfeito. Não vai ser aqui que vocês vão apontar o dedinho na minha cara e dizer “iáááá sifudeu tá errada” e eu vou chorar no cantinho de vergonha. Vou rir junto e tomar um shot de tequila pra cada merda encontrada na vida, porque assim é divertido, senão fica foda. Gente que se acha perfeita e se leva a sério é muito chata e não tenho paciência. Se você é um desses, nem se dê ao trabalho de comentar aqui – ou melhor, comente sim, porque eu vou rir de você. Comentários idiotas fazem meu dia mais engraçado enquanto eu tomo meu chá quentinho e NÃO LEVO MEU BLOG A SÉRIO. Ah sim, queria deixar isso claro: eu não levo redes sociais, blogs, nada na internet a sério. Beleza? Ok, vou ali trabalhar que tenho coisas realmente sérias a fazer. Agora continuem discutindo se windows, linux ou mac são melhores. :D

June 23, 2009 16:44

Eugeni

Eugeni's blog

How to resume a broken scp transfer

Well, this question appeared quite frequently to me. However, I never bothered with it, as I was either on a LAN, or had a different source from which I could resume using wget, or a file was sufficiently small to redownload it again. However, this time these approaches did not work:

So I started looking for solutions. Most of ideas I found on google suggested using ‘rsync –partial –rsh=ssh‘, and indeed it could work. However, rsync tried to create a temporary file on the server, and, as the directory was read-only, it failed. There probably is some option to make it work, but I don’t have plenty of rsync experience. And this approach just looked to be over complicated.

After a bit of more googling, I found out that curl supported sftp backend. And, after a few minutes trying to figure out how to make it work with public key authentication, I finally figured it out:

curl -C - --pubkey ~/.ssh/key.pub --key ~/.ssh/key \
  sftp://eugeni@somewhere/mnt/.../i586/my_precious_iso.iso \
  -o my_precious_iso.iso

To shorten it up, it is possible to write a simple wrapper function (or a script) for bash:

#!/bin/bash
function scp_resume() {
        URL="$1"
        FILE="$2"
        if [ "a$FILE" == "a" ]; then
                echo "Usage: scp_resume <sftp url> <local target>"
                return 1
        fi
        # the magic
        curl -C - $URL -o $FILE
}

function scp_resume_key() {
        URL="$1"
        FILE="$2"
        KEY="$3"
        if [ "a$FILE" == "a" ]; then
                echo "Usage: scp_resume <sftp url> <local target> <key file name>"
                return 1
        fi
        # the magic
        curl -C - --key $HOME/.ssh/$KEY --pubkey $HOME/.ssh/${KEY}.pub $URL -o $FILE
}

so it did the trick.

June 23, 2009 14:29

June 22, 2009

Mauricio Teixeira

I do what I can...

Vendo jogos Xbox 360

Como meu Xbox 360 não tem jeito, resolvi vender todos os jogos. Alguns já vendi para amigos mais chegados, e sobraram alguns que coloquei no Mercado Livre. Quem estiver interessado, visite lá.

June 22, 2009 16:50

Renata

Renata

Dois monitores com vídeo ATI no Linux

Aparentemente eu consegui algo raro, que foi fazer o Xorg funcionar com dois monitores e placa de vídeo intel ATI (RENATA SUA RETARDADA) no Linux tanto com driver proprietário quanto com driver open source. Como isso me deu bastante trabalho, e sou uma pessoa a favor do compartilhamento de informação, vou distribuir meus xorgs.conf a quem interessar possa.

Meus monitores são um dell de 17 e um dell de 20.

Vamos ao que interessa: primeiro, xorg.conf com o driver proprietário, usado com o Ubuntu até 8.10:

Section "ServerLayout"
	Identifier     "Multihead layout"
	Screen      0  "Screen0" LeftOf "Screen1"
	Option	    "Xinerama" "off"
	Option	    "Clone" "off"
EndSection

Section "Files"
EndSection

Section "Module"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Dell 1701FP (Analog)"
	HorizSync    31.0 - 80.0
	VertRefresh  56.0 - 76.0
	Option	    "dpms"
EndSection

Section "Monitor"
 ### Comment all HorizSync and VertSync values to use DDC:
	Identifier   "Monitor1"
	VendorName   "Monitor Vendor"
	ModelName    "Dell 2007WFP (Digital)"
	HorizSync    30.0 - 83.0
	VertRefresh  56.0 - 76.0
	Option	    "dpms"
EndSection

Section "Device"
	Identifier  "Videocard0"
	Driver      "fglrx"
	Option	    "DesktopSetup" "horizontal"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes    "1050x1680"
	EndSubSection
EndSection

Section "Screen"
	Identifier "Screen1"
	Device     "Videocard0"
	Monitor    "Monitor1"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes    "1280x1024"
	EndSubSection
EndSection

Com o advento do Ubuntu 9.04, o driver open source passou a funcionar comigo. E ficou assim:

Section "ServerLayout"
	Identifier     "Multihead layout"
	Screen      0  "Screen0" 0 0
	InputDevice    "Keyboard0" "CoreKeyboard"
	InputDevice "Mouse0" "CorePointer"
	Option "AIGLX" "true" 	# This looks like it's on the wrong place, doesn't it? But it's where it should be.
	#Screen      1  "Screen1" RightOf "Screen0"
	#Option	    "Xinerama" "off"
	#Option	    "Clone" "off"
EndSection

Section "Files"
       FontPath        "/usr/share/fonts/X11/misc"
       FontPath        "/usr/share/fonts/X11/100dpi/:unscaled"
       FontPath        "/usr/share/fonts/X11/75dpi/:unscaled"
       FontPath        "/usr/share/fonts/X11/Type1"
       FontPath        "/usr/share/fonts/X11/100dpi"
       FontPath        "/usr/share/fonts/X11/75dpi"
       FontPath        "/usr/share/fonts/X11/misc"
       # path to defoma fonts
       FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
	#Load "dbe"
	Load "dri"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
	Option	    "XkbRules" "xorg"
	Option	    "XkbModel" "abnt2"
	Option	    "XkbLayout" "br"
EndSection

Section "InputDevice"
	Identifier "Mouse0"
	Driver "mouse"
	Option "CorePointer"
	Option "Device" "/dev/input/mice"
	Option "Protocol" "ExplorerPS/2"
	Option "ZAxi