segunda-feira, 30 de novembro de 2009

nota de falecimento (do meu notebook)

Todo mundo já sabe o quanto eu ODEIO a HP. mas agora foi o cúmulo: pela 3ª vez esse ano (exatamente na reta final do semestre na faculdade), vou ficar sem meu PC principal: o notebook.

Ele veio da manutenção, dia 23 de julho (130 dias, ou 4 meses), completamente recauchutado, com 90% das peças trocadas (pq os FDP não quiseram arrumar tudo) e já era a segunda vez. Agora, de novo.

HP, nem morto.

A novela: http://ratosdelaboratorio.blogspot.com/search/label/problemas de hardware

Um artigo sobre a porcaria: http://www.artigonal.com/laptops-artigos/escandalo-da-ressolda-bga-934591.html

sexta-feira, 16 de outubro de 2009

Quando reiniciar o seu PC?

Meu recorde de tempo sem reiniciar o Desktop do trabalho: 36 dias

Não que eu deixe ligado o tempo todo (o que seria feio para a conta de luz - que nem sou eu que pago), mas usei a "hibernação" do sistema. Sim, funciona - e muito bem até agora - no Linux! =D



E porque não mais do que 36 dias? Simples: 427 pacotes atualizados no último update do Debian (eu uso a versão testing e a unstable, que recebem mais atualizações). Uma delas é o "kernel" do Linux, que precisa reiniciar para carregá-lo.

E aí? Seu desktop suporta mais tempo sem desligar?

;)

segunda-feira, 5 de outubro de 2009

Quem acredita em uma fotografia?

Ou "o poder do Photoshop".

Extensões python - Hello world

Rapidinha: criando extensão para o Python em C - Hello World:

Arquivo gphoto2py_module.c

#include <Python.h>

static PyObject *
spam(PyObject *self, PyObject *args)
{
char *hello = "Hello World\n";
return Py_BuildValue("s", hello);
}

static PyObject *SpamError;

static PyMethodDef GPhoto2pyMethods[] = {
{"spam", spam, METH_VARARGS, "spam docs?"},
{NULL, NULL, 0, NULL} /* Sentinel */
};

PyMODINIT_FUNC
initGPhoto2py(void)
{
PyObject *m;

m = Py_InitModule("GPhoto2py", GPhoto2pyMethods);
if (m == NULL)
return;

SpamError = PyErr_NewException("GPhoto2py.error", NULL, NULL);
Py_INCREF(SpamError);
PyModule_AddObject(m, "error", SpamError);

}

int
main(int argc, char *argv[])
{
/* Pass argv[0] to the Python interpreter */
Py_SetProgramName(argv[0]);

/* Initialize the Python interpreter. Required. */
Py_Initialize();

/* Add a static module */
initGPhoto2py();

return 0;
}



Arquivo setup.py


from distutils.core import setup, Extension

module1 = Extension('GPhoto2py',
sources = ['gphoto2py_module.c'])

setup (name = 'GPhoto2py',
version = '0.1',
description = 'This is a demo package',
ext_modules = [module1])



Para gerar o módulo

$ python setup.py build


Para testar:

$ cd build/lib*
$ ls
GPhoto2py.so
$ python
Python 2.5.4 (r254:67916, Feb 18 2009, 03:00:47)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import GPhoto2py
>>> GPhoto2py.spam()
'Hello World\n'
>>>


Simples assim!

Fontes:
http://docs.python.org/extending/building.html#building
http://docs.python.org/extending/extending.html

PS.: O nome do arquivo é "GPhoto2py" porque o objetivo é, mais à frente, user o GPhoto2 no Python (o bind do projeto não é atualizado desde 2007)

domingo, 20 de setembro de 2009

Montar CD: windows

Para montar uma imagem "iso" no Linux é barbada (mount -o loop ). Já no Windows, é preciso usar um programa externo (é o XP, no Vista não sei ainda).

A própria microsoft fornece no seu site o Microsoft Virtual CD-ROM Control Panel, que pode ser baixado em http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe

O arquivo é auto-extraível e contém um readme que explica como instalar e botar para funcionar:

Installation instructions
=========================
1. Copy VCdRom.sys to your %systemroot%\system32\drivers folder.
2. Execute VCdControlTool.exe
3. Click "Driver control"
4. If the "Install Driver" button is available, click it. Navigate to the %systemroot%\system32\drivers folder, select VCdRom.sys, and click Open.
5. Click "Start"
6. Click OK
7. Click "Add Drive" to add a drive to the drive list. Ensure that the drive added is not a local drive. If it is, continue to click "Add Drive" until an unused drive letter is available.
8. Select an unused drive letter from the drive list and click "Mount".
9. Navigate to the image file, select it, and click "OK". UNC naming conventions should not be used, however mapped network drives should be OK.


Fonte: http://support.microsoft.com/kb/916902

sexta-feira, 28 de agosto de 2009

Matando pacotes TCP

A pouco estava precisando testar se o POOL de conexões para o banco conseguia "se achar" se a conexão cair e voltar, mas para fazer testes precisava simular isso.

Eu não ia puxar o cabo, claro, mesmo sendo só a minha máquina, ia ser feio.

Poderia pensar em criar regras no firewall local, mas tem uma solução mais simples: tcpkill

O uso mais simples é bloquear tudo de determinado servidor:

tcpkill host <hostname>

Se não estiver disponível:

apt-get install dsniff


Fonte: http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php

terça-feira, 18 de agosto de 2009

Menos é Mais - redução de escopo

Navegando na internet durante a aula de engenharia de software, pesquisando sobre metodologias ágeis, caí no blog da Locaweb. O parágrafo valeu a leitura de tudo:

Já quando falamos em redução de escopo, não damos margem para interpretação: é sempre fazer menos do que foi planejado, mantendo o trabalho bem feito. E muitas vezes quando fazemos e entregamos menos, percebemos que o menos que entregamos já é suficiente e que o produto final de nosso projeto ficou melhor com menos do que o que foi originalmente planejado.


Fonte: http://agilblog.locaweb.com.br/2009/06/22/fixe-o-tempo-e-os-custos-e-reduza-o-escopo/

domingo, 16 de agosto de 2009

Chevy Volt

Comercial do Chevy Volt. Não vejo a hora de nos livrarmos de carros consumidores de petróleo.



Site do carro: http://www.chevrolet.com/pages/open/default/future/volt.do

segunda-feira, 10 de agosto de 2009

"Firebug" para IE

Não é tão bom, além de ser pago. Mas tem uma versão demo:

http://www.debugbar.com/

Um componente é grátis:

http://www.my-debugbar.com/wiki/CompanionJS/HomePage

O Firebug tem uma versão "lite" para o IE (http://getfirebug.com/lite.html), mas não é a mesma coisa, visto que não é uma extensão, e sim um script que deve ser adicionado na página.


Sim, mesmo não suportando o IE, algumas coisas ainda dependem dele...

quinta-feira, 30 de julho de 2009

MXML + ActionScript (Flex)

Continuando na bagunça do Flex, agora adicionando um pouco de action script na brincadeira. Além disso, adiciona-se mais alguns widgets... aos fontes:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init();">
<mx:Script>
<![CDATA[
//ActionScript statements
public function init():void {
btn.addEventListener(flash.events.MouseEvent.CLICK,
clicar);
btn2.addEventListener(flash.events.MouseEvent.CLICK,
clicar);
}
public function clicar(event:flash.events.MouseEvent):void {
var bb:Button = event.target as Button;
var aux:String = txt.text;
txt.text = bb.label;
bb.label = aux;
}
]]>
</mx:Script>

<mx:Panel title="Modelo 001"
width="100%"
height="100%"
>

<mx:HBox width="100%"
height="100%"
>
<!-- conteúdo -->
<mx:Text id="txt"
text="hello"
/>
</mx:HBox>

<mx:ControlBar
direction="horizontal"
>
<!-- barra de controles -->
<mx:Button label="!"
id="btn2"
/>
<mx:Button label="world"
id="btn"
/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>


É bem bobo, mas é só um começo... um screenshot:



Documentação: http://livedocs.adobe.com/

(e dalhe mais pygments nos códigos!)

segunda-feira, 27 de julho de 2009

Alterando Volume via linha de comando

As pessoas reclamam da linha de comando do Linux, mas até o (r)windows está aderindo a ela com o PowerShell.

É possível controlar o volume através da linha de comandos. Quem faz isso é um software chamado amixer (pra instalar, apt-get install amixer).

"Master" é o controle principal, e os outros são separados para cada coisa (microfone, por exemplo). Adaptei um script que permite aumentar e diminuir o volume:

#!/bin/bash
volsetting=`amixer sget 'Master' | grep off`
case "$1" in
mute)
amixer sset 'Master' mute
;;
unmute)
amixer sset 'Master' unmute
;;
toggle)
if [[ x"$volsetting" = x"" ]]; then
amixer sset 'Master' mute
else
amixer sset 'Master' unmute
fi
;;
increase)
amixer sset 'Master' 8%+
;;
decrease)
amixer sset 'Master' 8%-
;;
*)
echo "This is not an acceptable command!";
echo -e "Use \033[01;33mmute\033[01;00;0m, \033[01;33mincrease\033[01;00;0m or \033[01;33mdecrease\033[01;00;0m as options!";
echo;
esac


Fonte: http://www.djlosch.com/dlo/controlling-pcm-volume-in-linux-via-command-line/

(Código-fonte colorido através do Pygments (http://pygments.org/), com um "tema" chamado "friendly")

sexta-feira, 24 de julho de 2009

quinta-feira, 23 de julho de 2009

Novo xorg - problemas (e o retorno do notebook)

Meu notebook voltou da manutenção forçada de - sim, acredite - 6 meses e meio (entre vai-e-volta deu tudo isso). Como bom linuxer, instalei logo o Debian nele, com tudo novinho, pacotes atualizados (incluindo experimental, unstable e testing).

Já deu pra perceber que o boot está mais rápido e não precisa mais de gambiarras para a placa wifi funcionar (roda com driver nativo).

Mas as coisas boas pararam por aí. Assim que instalei o novo xserver-xorg (versão 7.4), comecei a ter problemas. Vamos às porcarias.

1. Nada de Ctrl+Alt+Backspace


O Ctrl+Alt+Backspace não existe mais. Alguém conseguia pressinar essas 3 teclas ao mesmo tempo sem querer. Um comentário muito interessante é o do curl, no BR-Linux:
O argumento é que alguém pode apertar as teclas acidentalmente e daí você perde tudo o que estiver aberto no X.

No entanto acho que o problema está exatamente aí. Ao invés de desenvolverem uma forma de recuperar as janelas quando o X cai preferiram desabilitar a tecla de atalho para matar o X. :(

Sabe quem faz isso? O Firefox, que abre todas as abas que estavam abertas se vc "matar" ele, com um Session Restore. Concordo que deve ser bem mais complexo que só abrir sites da Web, mas que retirar funcionalidade é chato. Imagina como vai ser a vida do cara que vai tentar tunar o Xorg? Ou vai tentar configurar um driver novo?

Para funcionar (só depois do login, no GDM não vai funcionar), é preciso executar:

setxkbmap -option terminate:ctrl_alt_bksp

A configuração que falam por aí (DontZap) não funcionou comigo.
Colocar no ~/.xinitrc também não funcionou. Tem que criar um ~/.xsessionrc
Fonte: http://www.lunix.com.au/blog/xorg_dontzap/

2. Pouco respeito ao xorg.conf


Primeiro, o arquivo de configuração não e criado automaticamente. Só que, pra configurar o driver da NVidia, ele é necessário. Ainda bem que tem um programinha que cria um genérico, pra quebrar um galho (nvidia-xconfig)
Aí vc configura o teclado nele e... não funciona. Esqueça, simplesmente não funciona. A configuração deve ser feita no HAL (Hardware Abstraction Layer), em arquivos XML. Parece feito por programador Java...

No momento, todas as minhas configurações de teclado estão no usuário (configuradas dentro do XFCE). Ou seja, teria que reconfigurar tudo para cada usuário, e ainda não funcionaria no GDM.

Sinceramente, assim que surgir uma alternativa ao Xorg, eu vou testar.


Não bastasse isso, a atualização de BIOS da HP deixa o cooler do notebook o tempo todo ligado com potência máxima. Ou seja: torra bateria e faz barulho. Sim, bando de incompetentes os funcionários da HP...

Eu mereço...

segunda-feira, 20 de julho de 2009

Wordpress - A Tentação

Instalei o Wordpress (http://br.wordpress.org/) em casa e fiz umas experiências. Até coloquei um site para os meus pais nele. Achei muito interessante.

Hoje, dou de cara com um vídeo. Fiquei tentado...



Acho que vou dar só uma olhadinha... :)

Onde vi isso: http://www.meiobit.com/meio-bit/internet/opcoes-para-trabalho-colaborativo

domingo, 19 de julho de 2009

Hello World no Flex - MXML

O que vc vai precisar:

- Adobe Flex SDK 4
Faça download em http://opensource.adobe.com/flex
Eu estou usando a versão 4.0 Beta 1 (é o ZIP com mais de 100MB)

- ant 1.7.0
O de sempre:
apt-get install ant

Descompacte a SDK em algum lugar. Eu coloquei em /opt/flex_sdk
Dentro desse diretório, descompacte também o arquivo runtimes/player/10/lnx/flashplayer.tar.gz (se usar windows, não precisa, mas vai ter que colocar ".exe" em tudo quanto é canto)

Talvez vc precise acertar as permissões (leitura para todos, execução no "bin/*" e no "runtimes/player/10/lnx/flashplayer/flashplayer". Eu precisei. (Dica para dar permissão em todos os diretórios de 1x: "find . -type d -exec chmod uog+x {} \;")

Agora é preciso criar um diretório com o código Flex. É, na verdade, apenas um "hello world" com um MXML. No Flex, a interface fica em um XML e o código é em Action Script. Particularmente, gosto de separação assim (lembra o Glade e a libglade).

Arquivo HelloWorld.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="red">
<mx:Label text="Hello world!" color="white"/>
</mx:Application>


Sim, só isso, é um hello world basicão mesmo.

Agora a parte do ant. Isso é opcional, mas permite evitar repetir muitas vezes os mesmos comandos. Para isso, criamos um arquivo chamado build.xml

Arquivo build.xml
<project name="HelloWorld" default="compile">
<property name="sdkdir" value="/opt/flex_sdk"/>
<property name="flashplayer" value="${sdkdir}/runtimes/player/10/lnx/flashplayer"/>
<property name="flex.mxmlc" value="${sdkdir}/bin/mxmlc" />
<property name="dest.dir" value="./bin" />

<target name="init">
<delete dir="${dest.dir}" />
<mkdir dir="${dest.dir}" />
</target>

<target name="compile" depends="init">
<exec executable="${flex.mxmlc}" failonerror="true">
<arg line="-output '${dest.dir}/HelloWorld.swf'"/>
<arg line="HelloWorld.mxml"/>
</exec>
</target>

<target name="run">
<exec executable="${flashplayer}" failonerror="true">
<arg line="'${dest.dir}/HelloWorld.swf'"/>
</exec>
</target>
</project>


O que temos aqui... vejamos:
"<project>" é só a identificação do projeto.
o "default" é a ação ("target") que será executado quando chamarmos o ant sem argumentos
"<property>" funciona como uma veriável que podemos usar depois, nos comandos. Assim, ficou centralizado a localização do SDK e do FlashPlayer.
"<target>" é cada uma das ações que podemos executar com o ant.

No fim, isso só vai chamar o "mxmlc" (que é o compilador) com um parâmetro indicando para criar o arquivo "HelloWorld.swf" a partir do "HelloWorld.mxml".

Para compilar, é só chamar:

ant

Para executar dentro do flash player:

ant run

Era isso.

Documentação da Adobe (incluindo o Flex):
http://livedocs.adobe.com

Fontes:
https://admin.adobe.acrobat.com/_a200985228/p77346236/ (é um screencast em pt-BR)
http://eclipse.sys-con.com/node/309503
http://www.nutrixinteractive.com/HelloWorld/srcview/source/HelloWorld.mxml.html

quarta-feira, 1 de julho de 2009

Primeira vez no FISL - parte 2

Outra palestra que assisti no FISL 10 foi sobre a e-UNI, o projeto de educação à distância da UNIRIO. Eles fizeram um "fork" do moodle, mas agora estão colocando as modificações deles de volta no projeto original... algumas coisas dá para aproveitar.

[aviso - post pode ser considerado chato e cheio de divagações. Esteja avisado]

Tudo ali é centrado numa agenda, que é a tela inicial do software. Ali estão avisos, datas de encontros e coisas assim.

Existe uma caisa de entrada de mensagens (uma pseudo-cópia do sistema de e-mail) separada para cada disciplina. Assim todo mundo tem 10 lugares diferentes para olhar (o ponto negativo) com tudo separado num contexto (o ponto positivo).

Na educação à distância, existe o problema de ninguém conhecer seus colegas. Eu fiz uma disciplina "semi-presencial" e fui descobrir colegas agora, só no fim do semestre. Não tem solução ainda. O mesmo acontece com o professor, mas pra isso tem solução: em um laboratório, eles gravam em vídeo a apresentação do professor. Assim os alunos ao menos sabe quem é o maluco que vai ensinar alguma coisa a eles... Ainda assim, o aluno se sente distante do conteúdo.

Um chat só acontece agendado no ambiente e com assunto previamente definido. Foi a forma encontrada para não perderem o foco nas discussões.

A forma de organização do conteúdo deles é diferente. O conteúdo em PDF foi separado em diversos arquivos HTML e indexados. Pra quem entende, um Ctrl+F num PDF resolve, mas e pra quem não entende?! Além disso, HTML é muito mais leve do que o PDF...

Outras coisas que eles separaram foi o Fórum. Criaram um "Tira-dúvida", que - imagino - deve funcionar como uma FAQ.

Uma coisa importante a não fazer é deixar retrabalho para o professor. Em outras palavras: acerte de primeira.

No fim, o grande diferencial é que estão tentando variar as formas de interação dos alunos, usando conteúdos multimídias. Isso é possível com uma metodologia para criação de conteúdo com esse objetivo. É o processo de "evangelizar os pedagogos", desenvolver o conteúdo em conjunto - técnico e professores - e voltados para disciplinas. Assim, o conteúdo torna-se reaproveitável.


Tudo isso pra dizer que esse deveria ser o caminho para que os professores utilizassem melhor os recursos "informáticos"... O ponto alto aqui é evangelizar os professores...


[continua...]

terça-feira, 30 de junho de 2009

Reforma ortográfica - só problemas

Conversa com o Lucas - programador e colega aqui da UCS - agora a pouco, na hora do almoço:

(12:29:30) Faiska: eu to com um problea
(12:29:37) Faiska: preciso implementar algo nessa logica
(12:29:39) Faiska: dois botoes
(12:29:47) Faiska: um inicia uma ação e o outro para a mesma ação
(12:29:50) Faiska: como faço isso?
(12:29:59) Faiska: terei que usar trheads?

Observem a frase: "dois botoes: um inicia uma ação e o outro para a mesma ação"

Conforme as regras da nova ortografia, temos:

Acentuação 4 - some o acento diferencial
Antes: Pára, péla, pêlo, pólo, pêra, côa
Depois: Para, pela, pelo, polo, pera, coa

Então a frase está correta, dentro do contexto... tudo certo. Agora: como vou saber se são 2 botões para fazer a mesma coisa ou se o segundo é para parar?


Se for mudar, muda pra melhor, p***!


Fonte das regras:
http://g1.globo.com/Noticias/Vestibular/0,,MUL936903-5604,00-IMPRIMA+GUIA+DA+REFORMA+ORTOGRAFICA.html

sexta-feira, 26 de junho de 2009

Primeira vez no FISL

Essa está sendo a 10ª edição do FISL, mas pra mim ainda é a primeira.

Vamos começar pelo que senti falta: estandes do Google, Nokia (estava lá, mas discretamente junto com a QTopia) e Intel. Eu queria ver o Classmate Convertible da Intel...

Em compensação, tive agradáveis surpresas. E uma sorte ao escolher um workshop logo de cara. Vamos ao relato...

Primeiro, dei uma olhada na Arena de Programação. Começo a pensar se é ou não divertido participar... quem sabe um dia (se eu conseguir chegar lá, claro).



O primeiro estande que visitei foi o da Robótica Livre (http://www.roboticalivre.org/). Não tinha como ser diferente, já que lá estavam desmontando coisas e montando outras coisas (com montes de hardware espalhados por cima das mesas). Ali, entendi que robótica não é apenas formada por robôs. Ora, se o microondas toma decisões e interage com o usuário, pq não pode ser considerado parte da robótica?
Ali também surgiram várias ideias. A principal delas é propor uma disciplina de robótica (nesse novo contexto) na faculdade, mas não com Lego. A explicação é que o Lego já deixa boa parte de tudo pronto, não deixa a pessoa brincar direto com interfaces (paralela, serial ou usb) que existem no mundo real, além de deixar distante da criação das próprias peças. Além disso, já imaginou fazer um trabalho que ao invés de conectar com um hardware "mistico" (bancada digital construída pelo professor) fosse um hardware que a gente mesmo montasse?! (qualquer referência à disciplina "Orgnanização e Arquitetura de Computadores 3" não é mera coincidência)



No próprio site da Robótica Livre estão os fontes dos projetos, material didático e uma lista de discussão.

Nesse mesmo estande, quando eu estava lá, quem aparece? Jon "Maddog" Hall. E pede para bater uma foto DE MIM. Claro que depois eu pedi para bater uma com ele, mas... o cara adora fotografia (e, sim, é claro que fiquei com inveja da câmera dele, mas fiquei de várias lá...). Posso não conhecer muito do Maddog, mas gosto do pouco que conheço. O cara é muito tranquilo e ouviu atentamente a explicação dos caras que estavam ali, montando uns robôs. Ele não é arrogante como uns caras que circulam por aí... (nota mental: melhorar meu inglês o suficiente para entender tudo o que ele diz).

Meio tremida, mas está valendo. Ah, o de barba é o Maddog ;)

Agora, sim, o relato do workshop. Entramos e saímos num intervalo de mais ou menos 15 minutos. O assunto era Python e o BlueZ (http://org.csail.mit.edu/pybluez/), uma API de comunicação bluetooth em Python. No caso, o desenvolvimento foi para o Zagaia (http://zagaia.org), do INdT, usando o BlueHI (http://portal.fucapi.edu.br/nepcomp/zagaia/bluehi.html) e o PC Remote (http://portal.fucapi.edu.br/nepcomp/zagaia/pcremote.html). Comentaram também o uso do LightBlue. O resultado era um uso dos tablets da Nokia para apresentações, ver vídeos, etc (caso do BlueHI) e controlar o PC remotamente (caso so PC Remote).

A sorte foi ter achado uma única "apresentação" do Workshop e ter sido algo interessante, mesmo que não planejado.


[continua, mas agora vou dormir para acordar... amanhã tem mais FISL 10]

segunda-feira, 22 de junho de 2009

A Mesa Voadora

Do livro "A Mesa Voadora" de Luis Fernando Veríssimo, extraí um texto e uma frase:

Com champignon



Esta é uma história de amor, embora algum leitor possa protestar que instintos menos nobres a dominem. Envolve uma mulher, um homem e um sentimento entre os dois.
Se não quiserem chamá-lo de Amor, tanto faz. Uma rosa com outro nome teria o mesmo aroma etc, etc.
Encontraram-se em frente às sopas enlatadas. Ele examinava uma soupe a l'oignon, ela pegou distraidamente um creme de lagosta, bateu no braço dele e deixou cair a lata. Desculparam-se mutuamente; sorriram-se, e em pouco tempo estavam conversando. Sobre sopas, a princípio e — à medida que percorriam as prateleiras — sobre outros interesses comuns, sólidos e líquidos. Quando chegaram aos queijos, já tinham descoberto várias afinidades. A principal era um gosto pelo champignon que beirava a paixão. Os olhos dos dois brilharam quando descobriram isto. O ar se carregou de eletricidade quando seus olhos iluminados se encontraram e a conversa era sobre champignon. Se era Amor ou outra coisa, que importa?
Devo esclarecer que nem ele nem ela eram jovens. Estavam naquela idade crepuscular onde o espírito está disposto mas a carne já vacila, e o senso do ridículo intercepta o desejo para frustrar qualquer paixão além da mesa. Mas ainda havia, nos dois — como uma débil chama sob a caçarola, só o bastante para manter morno o molho, mas longe da ebulição — um saudável apetite pela vida. Ou, pelo menos, a morna memória de um apetite.
— Conheço uma receita de champignon... — disse ela, baixando os olhos como uma provocação.
Ele chegou perto para superar.
— Como são?
— Recheados.
— Mmmm.
— Só me faltam trufas para completar a receita comme ilfaut. Nunca encontro trufas...
Ele olhou para os lados antes de dizer no ouvido dela:
— Tenho trufas na minha casa. Da França.
— Não!
— Talvez um dia pudéssemos...
— Meus champignons recheados finalmente com trufas! É um sonho que tenho desde que...
— Desde que?
— Desde que meu marido morreu.
Ele engoliu em seco. Estavam agora na seção de bebidas.
— Seu marido tinha trufas?
— Não. Não é isso... — Ela parecia alvoroçada. Pegou uma garrafa de Grand Marnier para disfarçar seu embaraço. — É que comecei a cozinhar depois que meu marido faleceu. Para encher o tempo. O meu grande prato é o champignon recheado. Mas nunca fiz com trufas.
— Há quantos anos você...
— Sim?
— Está sem trufas?
Ela estava rubra como um rabanete por fora.
— Doze anos.
— Curioso. Nos cinco anos desde que minha esposa faleceu, recebo trufas regularmente, de um sobrinho que mora na França. Mas, fora um ou outro molho, que a minha cozinheira invariavelmente estraga, não sei o que fazer com as minhas trufas...
Alguma coisa pairou sobre o silêncio que se fez entre os dois naquele instante. Alguma coisa ainda disforme, a sugestão da sombra da possibilidade de uma ideia.
Não podiam ter certeza que daria certo. Às vezes está tudo conforme a receita — champignon dos grandes, o recheio de queijo, a manteiga e o creme para o molho, as trufas acrescentadas ao molho antes de gratinar — e não dá certo. Mas como saber, sem provar?
Esta história tem dois finais, à escolha do leitor. Doce ou amargo, como as sutis variações da cozinha oriental. Num final ele pergunta para ela "Você quer?" E ela faz que sim com a cabeça. Então ele pergunta: "Na minha casa ou na sua?" E ela responde: "Na minha, porque eu conheço a cozinha..." No outro final, os dois se despedem, nunca mais se vêem, e o espectro de uma possível sauce com trufas perfeitas para os champignons recheados fica vagando entre as prateleiras, por todos os tempos.


Tudo isso só pra dizer que tudo é uma escolha...

E a frase que ficou é do texto "Chineses", do mesmo livro:

É difícil saborear o mundo quando se está tentando transformá-lo.

sexta-feira, 19 de junho de 2009

Google Docs -> OpenOffice

Para solucionar o problema da Vane (ela não pediu ajuda, mas me contou e eu me meti), comecei a pensar numa forma de exportar uma planilha no Google Docs para um documento no OpenOffice mantendo tudo atualizado (não é bem uma sincronização, já que a informação vai de "mão única").

A entrada de dados será pelos Forms do Google Docs. A saída dos resultados, pelo OpenOffice.

Primeiro, crie o form no Google Docs (https://docs.google.com), clicando em "New" e depois em "Form" (eu uso em inglês).



Pode usar temas e tudo mais, nada disso influencia a exportação, só o preenchimento do formulário. Para o preenchimento, vá em "More actions", "Embed" para pegar o link do formulário na web.

Coloque os campos que quiser (a interface é auto-explicativa). Salve. Mande exibir os resultados, em "See responses" e "spreadsheets".




Na planilha que abrir, vá em "Share", "Publish as web page".



Escolha a planilha atual, marque a caixa para atualizar automático ("Automatically republish when changes are made") e clique em "Start publishing". Depois disso, selecione "CVS" e copie a URL abaixo.




Agora, vamos ao openoffice. Abra o OOCalc.

No menu superior, vá em "Insert", "Sheet from file". Vai abrir uma janela para procurar arquivos, mas aqui vem o "pulo do gato": cole a URL ali e clique em "Insert".



A partir daí é uma importação normal, escolhendo os separadores (deixe apenas a vírula - "comma") e vc pode eliminar colunas que não quiser.



Pressione OK e vamos voltar à tela para inserir a planilha. Marque a opção "Link" para que ele mantenha a referência.



Vai criar uma planilha em branco (ou só com os títulos dos campos). Isso é esperado, pois ninguém respondeu ainda... :D
Salve o arquivo e feche.

Voltando ao Google Docs, abra a url do form (que vc pegou em "More actions", "Embed") e informe alguma coisa.

Agora, cada vez que vc abrir esse arquivo, ele vai pedir para buscar os dados novamente. Clicando em "sim", os dados serão atualizados.



Meio complicado de fazer, mas interessante de mostrar... espero que ajude! :)


Fontes: http://openoffice.blogs.com/openoffice/2007/12/issues-with-ins.html
tentativa e erro

terça-feira, 9 de junho de 2009

FISL saindo de Porto Alegre?!

Meus colegas já comentaram e um amigo me mandou o link que segue:

http://softwarelivre.org/furusho/blog/asl-quer-melhores-condicoes-para-o-fisl-em-porto-alegre-divulga-que-o-parana-esta-interessado-em-levar-o-evento

Eu já tinha lido sobre isso. Se eu fosse mais assíduo na comunidade de software livre, até diria alguma coisa, mas sou só um cagão, então...

Quer minha opinião? O FISL se tornou um negócio comercial a muito tempo. Me contaram que tem gente que vive só de organizar as coisas dele. Por isso acho que perdeu um pouco da alma do evento.

Mudar para o Paraná, se a organização continuar a cargo da mesma entidade e/ou das mesmas pessoas, continuaremos na mesma: um evento que serve mais para agradar egos pessoais do que para divulgar o software livre e trocar informações e técnicas entre a comunidade.


É ou não é?!




UPDATE:
Fisl fica em Porto Alegre
09/Jun/2009 - 15:40
Enviado por Redação PSL-Brasil

Fonte: http://portalantigo.softwarelivre.org/news/13745
Saiu de cena a possibilidade do Fórum de Software Livre deixar de ser realizado em Porto Alegre.

quarta-feira, 3 de junho de 2009

XBox - promessas

Acho que isso demonstra uma tendência não só para games, mas para boa parte das novas interfaces que virão. Que Surface que nada! :P



Se realmente funcionar, teremos que tirar o chapéu para a Microsoft...

terça-feira, 2 de junho de 2009

Consumo de memória de um processo

Para saber quanta memória ocupa um processo, no Linux, podemos pegar com um:


cat /proc/PID/status


Onde:

VmSize: The size of the virtual memory allocated to the process
VmLck: The amount of locked memory
VmRSS: The amount of memory mapped in RAM ( instead of swapped out )
VmData: The size of the Data segment
VmStk: The stack size
VmExe: The size of the executable segment
VmLib: The size of the library code
VmPTE: Size of the Page Table entry

Copiado descaradamente de http://www.linuxforums.org/forum/linux-kernel/49438-proc-pid-status.html

segunda-feira, 1 de junho de 2009

Os Seminovos - Escolha já seu nerd

Não gosto muito da globo.com, mas esse vídeo ficou mto tri... Não tem como não rir.

domingo, 3 de maio de 2009

Bot do MSN em Python

Existem muitos serviços de DNS dinâmico, mas eles são atualizados de "tempos em tempos". O ideal seria ter alguém do outro lado pra nos dizer qual é o IP atual. Então, vamos criar um BOT para isso. Já que quase todo mundo usa MSN, vamos usar ele! :D

Primeiro, vamos usar o site http://www.cmyip.com/. Ele foi escolhido porque é o que tem menos "firulas" ao mostrar o IP. O código (arquivo commandos.py):

import httplib
import re

def getIP(msg):
h = httplib.HTTP('www.cmyip.com')
h.putrequest('GET', '/')
h.endheaders()
returncode, returnmsg, headers = h.getreply()
if returncode == 200:
f = h.getfile().readlines()[27].strip()
ip = re.compile('\d+\.\d+\.\d+\.\d+').match(f).group()
return ip
else:
return 'ops! erro interno (%s)! =/' % (returncode)

COMMAND = {
'IP': getIP,
}


Pode testar. É feio pegar a resposta na linha 27, mas funciona! :D

Agora criamos o cliente para o MSN. Usando o pymsn.

O código:

# -*- coding: utf-8 -*-

import pymsn
import pymsn.event

import gobject

import logging
#logging.basicConfig(level=logging.DEBUG) #para DEBUG =]

logging.basicConfig(level=logging.CRITICAL)

ALLOWED_CONTACTS = ('*****@hotmail.com',)

from comandos import COMMAND

# respostas a mudanças de status (do BOT)
class ClientEvents(pymsn.event.ClientEventInterface):
def on_client_state_changed(self, state):
if state == pymsn.event.ClientState.OPEN:
# mudar status para online

self._client.profile.presence_msn_object = pymsn.Presence.ONLINE, None
# definir subnick
self._client.profile.personal_message_current_media = "BOT!!", None

def on_client_error(self, error_type, error):
print "ERROR :", error_type, " ->", error

# respostas a eventos de conversação

class ClientConversation(pymsn.event.ConversationEventInterface):

# ao receber uma mensagem
def on_conversation_message_received(self, sender, message):
self._do(sender.account, message.content)

def _do(self, contact, cmd):
if contact not in ALLOWED_CONTACTS:
msg = "Hello %s! I'm a bot! :D" % contact
fmt = pymsn.TextFormat("Comic Sans MS",
pymsn.TextFormat.UNDERLINE | pymsn.TextFormat.BOLD,
'FF0000')
else:
c = cmd.split(' ')[0]
fmt = pymsn.TextFormat("Comic Sans MS",
pymsn.TextFormat.NO_EFFECT,
'000000')
try:
msg = COMMAND[c](cmd)
except KeyError:
msg = 'Bad command or filename... ;)'

fmt = pymsn.TextFormat("Comic Sans MS",
pymsn.TextFormat.BOLD,
'FF0000')
except:
msg = 'Erro interno... alguma coisa na função'
fmt = pymsn.TextFormat("Comic Sans MS",
pymsn.TextFormat.UNDERLINE | pymsn.TextFormat.BOLD,
'FF0000')

self._client.send_text_message(pymsn.ConversationMessage(msg, fmt))
return True

def on_conversation_error(self, error_type, error):
print "ERROR :", error_type, " ->", error


# "convite" para iniciar uma conversa
class Invite(pymsn.event.InviteEventInterface):
def on_invite_conversation(self, conversation):
self._conversation = ClientConversation(conversation)


class Client(pymsn.Client):
def __init__(self, account):
server = ('messenger.hotmail.com', 1863)
self.account = account

pymsn.Client.__init__(self, server)
self._event_handler = ClientEvents(self)
self._invite_handler = Invite(self)
gobject.idle_add(self._connect)

def _connect(self):
print 'connecting...'

self.login(*self.account)

def main():
import gobject
mainloop = gobject.MainLoop(is_running=True)

# aqui vão os dados da conexão: melhorar!
cl = Client(('bill@hotmail.com', 'Linux@PC'))
cl._connect()
while mainloop.is_running():
mainloop.run()

if __name__ == '__main__':
main()



Pode-se ver algumas validações. No exemplo, só vai responder para a minha conta no MSN. Para os outros, nada. E ainda é possível expandir através do arquivo commandos.py.

Acho que ficou bom. Alguém tem sujestões de aplicações? Lembrem-se que é um protocolo em texto plano, sem nenhum tipo de segurança das informações transmitidas...


Fontes:
http://ubuntuforums.org/showthread.php?t=1052281
arquivo test.py do pacote python-msn :)
http://madpython.com/pymsn/module-tree.html
Minha cabeça e ociosidade

Para deixar o código python legível no blog:
http://aima.cs.berkeley.edu/python/py2html.html (ainda tem que melhorar, precisei alterar o HTML pra poder colocar aqui... mas ajuda)

quarta-feira, 22 de abril de 2009

Oracle, order by e acentos

Problemas acentuação na ordenação oracle?!?

O oracle, por default, ordena primeiros os caracteres sem acentuação, depois os caracteres com acentos. Isso, na maioria das vezes, não é o que a gente precisa.

A solução é uma variável de ambiente, que faz o oracle ignorar os acentos:

NLS_SORT=generic_m_ai

Ou, no conf do Apache:

SetEnv NLS_SORT generic_m_ai

Lembrando que isso faz a ordenação ser também "case insensitive"

Fonte: http://glufke.net/2009/01/08/ignorando-acentos-e-maiusculasminusculas-no-10g/

terça-feira, 14 de abril de 2009

IA: robô com sentimento?!

A Inteligência Artificial evoluiu muito, mas ainda é um mistério a forma como funcionam os sentimentos humanos. Nada impedem pesquisas nesse sentido, claro.

Pesquisadores japoneses - sempre eles - criaram um robô que tinha sentimentos. Só não sei dizer quem confundiu o quê. Apesar disso, garanto que programadores também tem sentimentos...

Só que, num belo dia, o robo tornou-se obsessivo! Não deixou mais a pesquisadora sair da "casa" onde estavam juntos (era um estudo, nada de sacanagem). Bloqueou a porta e a agarrava com abraços e fazia sons animalescos. Só acabou quando ela pediu ajuda para outros pesquisadores, que desligaram o robô através de um botão em suas costas...

Eu fiquei aqui pensando... tem comportamento mais humano do que isso? =P



E se você já assistiu o final, tenha certeza: all this happened before... and it will be happen again!


Fonte: http://www.geek.com.br/blogs/832697632/posts/9488-robo-programado-para-amar-tem-ataque-obsessivo
http://www.muckflash.com/?p=200

segunda-feira, 13 de abril de 2009

Youtube também é educação

Eu achava que o youtube era só perda de tempo/porcarias. Estava errado... Patrocinado por algumas grandes universidades, temos aulas disponíveis online.

Tem uma de física quântica! =D

Agora sim vou me dedicar um pouco a aprender inglês...


Os links para os vídeos estão aqui: http://www.youtube.com/edu

domingo, 12 de abril de 2009

Assembly - goto x,y

No pascal (onde aprendi a programar), existia uma biblioteca que eu não lembro o nome que dava um comando que colocava o cursor em um ponto da tela. Depois, era só escrever que ele colocava o texto ali.

Pois bem, vamos fazer isso em assembly! É um longo código:

.MODEL SMALL
.STACK 200h
.386

.DATA
Message db "Hello World$"

.CODE

;
;Posiciona o cursor em posicao dh (linha) e dl (coluna)
;
posic:
push bx
push ax
mov bh, 0 ;pagina
mov ah, 2 ;numero do servico de BIOS
int 10h ;chama a interrupcao
pop ax
pop bx
ret

escreve:
push ax ;empilhar tudo o que usamos (para nao corromper outro codigo)
push dx
push ds

mov ax, seg Message ;faz a escrita
mov dx, offset Message
mov ds, ax
mov ah, 09h
int 21h

pop ds ;volta tudo o que empilhamos
pop dx
pop ax
ret

Start:
xor dh, dh ;escrever na coordenada 0,0
xor dl, dl
call posic
call escreve

mov dh, 1 ;escreve na coordenada 1,1
mov dl, 1
call posic
call escreve

mov dh, 1 ;escreve a mensagem no fim da primeira linha, em 1,79
mov dl, 79
call posic
call escreve

mov ax, 4c00h ;retorna para o SO (DOS)
int 21h
End Start


Aqui já temos várias coisas novas. O programa é dividido em partes (como funções), que são executadas através de "call".

O que temos de novo aqui é o uso da pilha, identificada através da diretiva:
.STACK 200h

Ela é usada através do push e do pop. Como todas as operações são feitas com os registradores e só temos 4, então precisamos de espaço para guardar os valores. "push" coloca na pilha, "pop" retira dela, sempre usando o registrador passado por parâmetro. Nenhuma validação é feita, então dá pra empilhar ax e ler bx...

Em "posic", você pode ver que a idéia das interrupções é sempre a mesma: empilhar os registradores, setar os que a interrupção vai usar, chamar a interrupção e desempilhar tudo. No fim, o "ret" manda o fluxo de execução (ou seja, o IP - Instruction Pointer) de volta para quem o chamou...

Uma lista de interrupções pode ser encontrada em http://www.emu8086.com/assembly_language_tutorial_assembler_reference/8086_bios_and_dos_interrupts.html
A lista de comandos assembly para os processadores da Intel estão em http://www.intel.com/software/products/compilers/embedded/toolsuite/docs/compiler/assembler/asxscale_p.htm

HP, Microsoft e o notebook - HD Sata, Windows XP e a solução

Encontrei uma solução para o problema que reportei aqui, com o HD Sata e sem drive de disquete.

Usar o NLite (http://www.nliteos.com/) para recriar o CD de instalação do Windows XP. Baixar o driver da controladora SATA do site da HP e usar o programa.

A única coisa que alterei foi adicionar o driver, criar a ISO e gravar o CD (de tão simples o processo, fiz numa máquina virtual com o KVM... hehe).

É simples, permite adicionar atualizações do XP e até o SP3. Realmente interessante, mas não testei nem mesmo 1% da ferramenta.

Fica a ajuda se precisar de novo da solução...

sábado, 11 de abril de 2009

Assembly - hello world

Iniciando uma nova série sobre... assembly! =D

Aos navegantes: um programa simples em assembly para plataforma Intel, que só roda em Windows (o Linux usa arquitetura AT&T).

.MODEL SMALL ;avisamos o montador que não vamos precisar de muita memória (por hora, fica nisso)
.386 ;indica que vamos brincar de ser um 386

.DATA ;indica o segmento de dados
Msg db "Hello World", "$" ;"cria" uma string de bytes (db) chamada Message

.CODE ;indica o segmento de codigo
Start: ;indica o comeco do programa (vc escolhe o nome que quiser)
mov ax, seg Msg ;move o numero do segmento "Msg" para o registrador AX
mov dx, offset Msg ;move o endereço de Msg para o registrador DX
mov ds, ax ;move ax para ds, carregando o segmento de dados
mov ah, 09h ;coloca o nro da interrupcao "DOS" de escrever na tela em AH
int 21h ;chama a interrupcao com o codigo AH

mov ax, 4c00h ;coloca o nro da interrupcao de retorno para o DOS
int 21h ;chama a interrupcao
End Start ;indica o fim do programa


Estamos usando 2 segmentos aqui: DS (ou DATA SEGMENT) e CS (ou CODE SEGMENT). No DS estão os dados (!) e no CS está o código do programa (!!). Temos outros, mas só usamos esses.
As linhas que começam com pontos são diretivas para o montador (assembly não se compila, se monta).

AX é um registrador de uso geral, assim como DX. AX tem 16 bits, que são divididos em 2: AH (8 bits mais significativos) e AL (8 bits menos significativos - à direita). O mesmo vale para DX, que possui DH e DL. Temos outros, mas só usamos esses (no novo).

mov faz uma atribuição. Então, mov ah, 09h significa:
av <- 9h
O "h" depois do número indica que ele é hexadecimal.

int chama uma interrupção de BIOS (Basic Input/Output System) ou de DOS (Disk Operating System). o número depois dela é o código da interrupção.

Por hora é isso... :P

domingo, 5 de abril de 2009

HP, Microsoft e o notebook

Alguns acham que eu odeio a HP. Esses estão certos.

Outros acham que eu odeio a Microsoft. Esses estão errados: eu só acho que eles são incompetentes.

Estou tentando instalar a porcaria do XP no notebook da minha irmã. Ele veio com o Vista, mas o Autocad nunca funcionou direito nele. Ela me pediu e eu, prestativo como sou, fui lá instalar o XP (antes que perguntem, a compra foi antes de dar problema no meu note).

Eis que surge:



Pra quem não consegue ler na imagem:

Insira o disco com a etiqueta Disco de suporte do hardware fornecido pelo fabricante na unidade A:


Unidade "A:"?! Num notebook? Ah, ok... sou mágico agora.

Aí vamos ao site da HP e encontramos:

NOTE: A USB diskette (floppy) drive is required to use this driver. If an external USB diskette drive is used, ensure that it is plugged into the system before starting Step 1.


http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&cc=us&prodTypeId=321957&prodSeriesId=3375953&swItem=ob-51454-1&prodNameId=3375995&swEnvOID=1093&swLang=8&taskId=135&mode=4&idx=1

Significa que vou ter que comprar a porcaria do drive de disquete USB pra poder usar um software ultrapassado nele? Ah, VTnC...

================================================================================
Solução em HP, Microsoft e o notebook - HD Sata, Windows XP e a solução

sábado, 4 de abril de 2009

O cego e o publicitário

Havia um cego sentado numa calçada em Paris, com um boné a seus pés e um pedaço de madeira que, escrito com giz branco, dizia:

"Por favor, ajude-me, sou cego"

Um publicitário, da área de criação, que passava em frente a ele, parou e viu umas poucas moedas no boné. Sem pedir licença, pegou o cartaz, virou-o, pegou o giz e escreveu outro anúncio.

Voltou a colocar o pedaço de madeira aos pés do cego e foi embora. Pela tarde o publicitário voltou a passar em frente ao cego que pedia esmola.

Agora, o seu boné estava cheio de notas e moedas.

O cego reconheceu as pisadas e lhe perguntou se havia sido ele quem reescreveu seu cartaz, sobretudo querendo saber o que havia escrito ali.

O publicitário respondeu: "Nada que não esteja de acordo com o seu anúncio, mas com outras palavras". Sorriu e continuou seu caminho.

O cego nunca soube, mas seu novo cartaz dizia:

"Hoje é primavera em Paris e eu não posso vê-la."

Mudar a estratégia quando nada nos acontece pode trazer novas perspectivas.


"Quando surge algum problema, algumas pessoas criam asas. Outras compram muletas..."
Harold Roupp

(chegou a mim por e-mail, e desconheço o autor - não sei se o Harold é autor de tudo ou só da última frase)

O mundo corporativo - Uma Fábula de Gestão

Todos os dias, a formiga chegava cedinho ao escritório e pegava duro no trabalho. Era produtiva e feliz.

O gerente marimbondo, estranhou a formiga trabalhar sem supervisão. Se ela era produtiva sem supervisão, seria ainda mais se fosse supervisionada. E colocou uma barata, que preparava belíssimos relatórios e tinha muita experiência, como supervisora.

A primeira preocupação da barata foi a de padronizar o horário de entrada e saída da formiga. Logo a barata precisou de uma secretária para ajudar a preparar os relatórios e contratou também uma aranha para organizar os arquivos e controlar as ligações telefônicas.

O marimbondo ficou encantado com os relatórios da barata, e pediu também gráficos com indicadores e análise das tendências que eram mostradas em reuniões. A barata então contratou uma mosca, e comprou um computador com impressora colorida.

Logo a formiga produtiva e feliz, começou a lamentar-se de toda aquela movimentação de papéis e reuniões que eram feitas.

O marimbondo concluiu que era o momento de criar a função de gestor para a área onde a formiga produtiva e feliz, trabalhava. O cargo foi dado a uma cigarra, que mandou colocar carpete no seu escritório e comprou uma cadeira especial. A nova gestora cigarra também precisou de um computador e de uma assistente (a sua assistente na empresa anterior) para ajudá-la a preparar um plano estratégico de melhorias e um controle do orçamento para a área onde trabalhava a formiga, que já não cantarolava mais e estava cada dia mais chateada. A cigarra então convenceu o gerente marimbondo, que era preciso fazer um estudo de clima.

Mas o marimbondo, ao rever as cifras, deu conta de que a unidade na qual a formiga trabalhava já não rendia como antes, e assim contratou a coruja, uma prestigiada consultora, muito famosa, para que fizesse um diagnóstico da situação.

A coruja permaneceu três meses nos escritórios e emitiu um volumoso relatório, com vários volumes que concluía : "Há muita gente nesta empresa".

E adivinha quem o marimbondo mandou demitir? A formiga, claro, porque ela andava muito desmotivada e aborrecida.

Fonte: Marketingold - Fábula de Gestão
(chegando até mim por e-mail)

quinta-feira, 2 de abril de 2009

como deveria ser a universidade?

Hoje o frio chegou por aqui. De quebra, 4h de reunião à tarde foram salvas* por um simples raciocínio do big boss. Fiquei algum tempo pensando nisso e não sei mais o que eu pensei ou o que realmente foi dito...

Como deveria ser a educação no nível universitário?



Todas as universidades devem enfrentar problemas com alunos preguiçosos. O mesmo deve ser com professores. O problema não são (só) as pessoas: o modelo está errado. O professor faz pose de dono do conhecimento, o aluno faz de interessado. São como inimigos: o professor querendo reprovar o aluno, que faz de tudo para passar. E ninguém falou nada de aprender.

Onde o professor e o aluno são aliados? Ora, inimigos dos meus inimigos são meus amigos. Não é assim? Pois bem, o exemplo vem de um lugar que nunca gostei muito: cursinho pré-vestibular.

Os professores mais "gente-boa" estão dando aula ali, onde os maiores interessados são os alunos. São como aliados com um mesmo objetivo: passar no vestibular.

Passando isso para a universidade, imagine como poderia funcionar. Um grupo de professores reune-se e criam várias questões avaliando o conhecimento de todo o conteúdo ensinado na disciplina. No fim, não é o professor que aplica a prova: a universidade faz isso, quando o aluno quiser fazer (ou quando o aluno solicitar e se sentir preparado), dentro do período do seu curso. O professor fica como aliado do aluno, pra "derrotar" a universidade, fazendo o aluno avançar no curso.

Todos ganhariam. Os alunos estudariam quando quisessem, no seu próprio ritmo, fazendo as provas só quando estivessem realmente preparados. A universidade ganharia também, pois muitos alunos iriam direto nas provas, perdendo tempo e, provavelmente, $$. Além disso, o ensino seria nivelado igualmente entre todos, fazendo com que todos os alunos aprendam a mesma coisa, não importando quem são os professores que os ensinam (e que não precisa nem mesmo ser 1 professor só).

Os professores, no entanto, perderiam o "status" de "donos do conhecimento". Na verdade, eles nunca foram isso - só se acham. Os professores que não sabem dividir conhecimento e não tem didática simplesmente serão renegados pelos alunos. Os bons professores serão considerados "gente-boa". Principalmente quando conseguirem fazer o aluno quebrar a cabeça, porque a prova não é com eles: eles só tem que ensinar... e o aluno, só aprender.

Aí sim, quem sabe, começaria uma boa (r)evolução...


*reuniões salvas: reuniões que acrescentam alguma coisa à vida além de mais trabalho

quarta-feira, 1 de abril de 2009

Enem

Vi na TV e depois procurei na net: MEC propõe substituir vestibular de universidade federal por novo Enem

http://www.estadao.com.br/estadaodehoje/20090325/not_imp344322,0.php

Se fosse assim quando eu fiz, eu estaria me formando em uma universidade federal!

Se é bom ou ruim, não sei. Mas que é um sentimento estranho, isso é...

(s;o um desabafo)

segunda-feira, 30 de março de 2009

Mais do mesmo: notebook

Do último e-mail, mais 3 foram trocados... por partes:



1- A resposta


Caro Rodolfo fique tranqüilo, esta placa nova tem os mesmos recursos que a antiga e é um pouco mais nova, portanto mais atualizada.

Se quiseres trazer para que nossos técnicos atualizem a BIOS pode trazê-lo.

Se tiveres dificuldades de instalação dos drivers pode trazê-lo que instalaremos pra ti e podemos gravar um CD com todos eles.

Não foi em todos os notes fabricados pela HP que deram problemas no BGA, na verdade numa parte, portanto é de se esperar que não tenhas mais problemas com teu notebook.

Outra hora se quiseres podemos fazer uma avaliação do teu note para trocar por um novo, esta chegando pra nós um modelo muito lindo da Philips, outros da Positivo e também outros da HP.

Sds.




2- Minha resposta


Olá

Você acessou o link que passei? Entendeu o que escrevi? A placa pode até ser mais nova, só que, segundo o site da HP, também foi afetada pelo problema. E a BIOS dela não está atualizada. Isso eu mesmo posso fazer (quando eu tiver tempo, eu faço).

Não tentei mais procurar os drivers para Windows dela. Desisti do site da HP porque é incompleto (ao menos para o XP). Vou procurar quando tiver mais tempo. Quem sabe instalar o Vista.

Outro problema é que as saídas de vídeo não funcionam. Pluguei na TV e nada. Pluguei em um monitor e nada.

E ele continua fazendo um barulho estranho que eu não consigo identificar o que é. Só que eu não posso ficar mais tempo sem essa máquina (foram 2 mêses e 20 dias sem ela). Dependo dela para várias coisas. Existe a possibilidade de levar o note aí e um técnico colocar a orelha em cima do teclado pra ouvir o barulho? A temperatura de 109°C é normal em uma placa de vídeo de notebook?


Rodolfo Stangherlin




3- Tréplica


Caro Rodolfo..

Esta semana estou de férias e não estou em Caxias. Semana que vem me liga pra marcarmos um dia para um técnico meu escutar o tal barulho. Ou melhor, chegando nos próximos dias um note dv2000 similar ao teu em nossa assistência te ligo para compararmos este barulho e outros detalhes.


Agora é esperar, mas ao menos sentado e com o note... :P

domingo, 29 de março de 2009

SVN server no Debian

Instalar os pacotes necessários

sudo apt-get install subversion libapache2-svn

Criar um diretório para os projetos

mkdir -p /home/www-data/svn
chown -R www-data.www-data /home/www-data

Criar um projeto

cd /home/www-data/svn
mkdir radiais
svnadmin create radiais/
chown -R www-data.www-data radiais/

Configurar o apache
criar o arquivo /etc/apache2/sites-available/svn.conf
conteúdo:

<virtualhost>
    <location>
        DAV    svn
        SVNParentPath    /home/www-data/svn
        SVNAutoVersioning    ON
        AuthType    Basic
        AuthName    "Subversion Repository"
        AuthUserFile    /home/www-data/users
        Require        valid-user
    </location>
</virtualhost>

Onde "/home/www-data/users" é o arquivo de senhas (será criado mais abaixo) e o "/home/www-data/svn" é a pasta onde vai o svn.

Depois é preciso criar um link dentro de "/etc/apache2/sites-available" apontando para o arquivo criado.

Reinicie o apache!

Criar um usuário

htpasswd -c /home/www-data/users rodolfo

Para adicionar mais usuários, é o mesmo comando, sem o "-c". "rodolfo" é o nome do usuário cadastrado. Vai pedir uma senha.

Testar
Abra o navegador e acesse:
http://localhost/svn/radiais/
Deve pedir o usuario e a senha cadastrados a pouco.

Para importar o projeto:

svn import radiais http://localhost/svn/radiais


Depois, só usar os comandos normais do SVN.

sábado, 21 de março de 2009

E-mail: notebook com nova placa-mãe

Quinta-feira peguei o notebook de volta, com placa-mãe novinha em folha (em teoria).

Como cancei de explicar o que acontece, deixo abaixo o e-mail que mandei pro cara da loja, explicando os acontecimentos. É tudo real, acredite!

Olá

Lembra de mim? Peguei o note na quinta, ele teve a placa-mãe trocada por causa de 2 problemas "BGA" seguidos...

Ele está fazendo um barulho intermitente estranho no cooler. Não sei o que é. Parece um chiado e acontece mais comumente quando o cooler trabalha mais (mas não apenas quando isso acontece).

A temperatura da placa de vídeo chegou a 109°C agora a pouco. É menos do que os 119°C da outra vez, mas ainda assim estou preocupado. A bios indica que a placa-mãe é de um RV324UA. No site da HP, encotro que é de um dv2315nr. Ele tem um aviso exatamente igual ao que o outro tinha. No site http://h10025.www1.hp.com/ewfrf/wc/document?lc=en&dlc=en&cc=us&product=3370091〈=en&docname=c01300427#c01300427_dv22 tem o modelo RV324UA como "elegível para garantia extendida". E agora, o que acontece?

Outra, a bios está desatualizada: no note está a F.23, no site está disponível a F.39 (eu tinha comentado isso quando entreguei o note pela 2° vez, né?!).

Pra finalizar, queria entender uma coisa:
- especificações da placa nova:
http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00858746&lc=en&dlc=en&cc=us〈=en&os=228&product=3370091
- especificações da placa antiga:
http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00850885&lc=en&dlc=en&cc=us&product=3347726〈=en

Wifi eu devo pegar os driver da antiga, certo? No Windows, a rede com fio se perde, devo pegar os drivers da nova, isso?!
O que significa "Video Memory Up to 288MB (shared)", que a placa antiga tinha e a nova não tem? Quer dizer que a nova tem menos memória (na bios o máximo é 128MB)? Na antiga ele tinha uma parte de memória dedicada?

Ainda estou preocupado, quero saber como devo proceder daqui pra frente, pra não ter mais problemas com esse note.


Podem me acusar de qualquer coisa, menos de não ser paciente, educado e compreensivo.

sexta-feira, 20 de março de 2009

Steve Jobs em Stanford

O vídeo é antigo, mas é muito bom.





A primeira das 3 histórias da vida dele ("connecting the dots") explica pq aprendemos coisas que "não tem nada a ver" nas faculdades. Não que eu defenda isso, mas... como podemos ter certeza que não valerão alguma coisa no futuro? O importante é que se entenda a coisa e não se entende nada quando se é "obrigado" a estudar.

Veja o vídeo e depois pensa como seria a "Web 2.0" hoje sem um curso de caligrafia... ;)

--
Tudo fica mais fácil quando você segue sua curiosidade e intuição (prefiro a curiosidade!).

Assitam até o final... vale a pena!

Download do vídeo: https://dl.getdropbox.com/u/708398/steve_jobs_stanford.mp4

quarta-feira, 18 de março de 2009

IE: Operação Cancelada

Vira, vira e meche tenho problemas com um cidadão: IE.

Dessa vez foi o erro:


Pesquisando, encontra-se:

iMasters Fóruns > Ajax ( operação anulada explorer )

Ah... vamos ao site da MS:

Por que recebo uma mensagem de erro "operação cancelada" quando eu visitar uma página da Web no Internet Explorer?

Como eu corrigir esse problema?
A maneira mais fácil de corrigir o problema é atualizar para Internet Explorer 8. Esse problema não ocorre no Internet Explorer 8.
Isso aí! Morte ao IE! E não é só o 6, é o 7 tb...


Desenvolvedor sofre... :'(

terça-feira, 17 de março de 2009

Não é tão fácil ensinar...

Olá

Uns me chamaram de louco, outros... também. O fato é que sou monitor da disciplina de "programação de computadores" (para os cursos de engenharia, em C) na universidade onde estudo. O "salário" não é bom, mas acredito que a experiência será.

De fato, ainda não sei o que é exatamente minha atribuição, mas uma coisa deu pra perceber: os caras não entenderam como funciona o escopo das variáveis e não sabem ler as mensagens de erro do DevCPP (sim, programam em Windows).

Fora isso, colocam ";" onde não precisa e etc e tal... Somado a isso que não conseguem se acalmar para colocar ordem nas ações pra resolver o problema, temos a festa pronta.

Fica a dúvida: como deve ser a nova educação? Como devem ser as disciplinas de EAD? Screencast ajudaria a entender ou atrapalharia mais? (foi uma introspecção, mas se alguém tiver idéia, avisa)...

sábado, 14 de março de 2009

Pior, só telefone

Na lista das grandes quantidades de reclamações, um chamou atenção:

- Garantia de produtos de informática

Está em segundo lugar, atrás apenas das empresas de telefonia (que são uma droga). Se somar o 4º, que é "Não cumprimento de oferta do provedor de internet", estamos ferrados. Se pensar que o acesso à internet é feito, em sua maioria, por empresas de telefonia, só uma coisa a declarar:

Empresas de infomrática daqui são uma m**** em Caxias do Sul.

Experiência própria!

Fonte: http://www.clicrbs.com.br/pioneiro/jsp/default.jsp?uf=1&local=1&section=154&action=noticiasImpressa&id=2438484&edition=11901

quinta-feira, 5 de março de 2009

Notebook re-re-encaminhado

Isso já está uma novela! Um americano, refugiado no Brazil que precisa voltar à sua terra natal para salvar sua vida com uma cirurgia. Ele vai, faz e volta. Depois de um tempo, a doença misteriosamente reaparece...

Pois é, se meu note fosse uma pessoa, a história seria mais ou menos assim.

Agora levei ele de volta na loja. A promessa é ter ele devolvido em - mais - 10 dias, com o problema resolvido - nem que seja com a "troca da placa-mãe" (palavra de vendedor)...

Como isso ficaria na história? Bom, não sei... transplantes?!


Que inferno isso!

domingo, 1 de março de 2009

Projeto de Pesquisa - Primeiro Rascunho




A idéia neste screencast é demonstrar um protótipo criado em linguagem Python utilizando a API gráfica OpenGL.

Python é utilizada pela clareza de seu código. OpenGL é utilizada por ser livre, aberta e multiplataforma. Nesse exemplo não é utilizado o software Blender para modelagem.

Esse protótipo desenha apenas algumas esferas tridimensionais, sendo possível observá-las de diferentes ângulos usando o teclado.

O exemplo é bastante simples, mas demonstra algumas possibilidades.

Seguindo caminho por essa linha de desenvolvimento seria possível criar uma base simples e depois montar um modelo complexo, indicando as coordenadas - posições no eixo (x, y, z) - e "ligações" entre os nodos.



A idéia, nesse protótipo, é não utilizar o Blender. Isso poderia dar mais flexibilidade com o desenvolvimento. Mais trabalho também, mas o impacto maior seria ter que desenhar tridimensionalmente os nodos, procurando uma posição adequada.

A volta dos que não foram...

Apenas para constar: o problema reportado aqui e com a volta reportada aqui, depois de 1 mês e meio de espera tem um novo capítulo.

Fui ligar ele hoje e... o mesmo problema: o note não liga!

3 vivas para a HP!

Depois das boas notícias com os projetos de pesquisa precisando de uma resposta nessa segunda (isso que o material para fazê-lo está no note), vem essa.

Não aceito mais explicações.

sábado, 28 de fevereiro de 2009

Wifi no Linux, subindo automático

Pra fazer a interface de rede subir no boot, é preciso configurar o arquivo /etc/network/interfaces

Assim ó:

auto wlan0
iface wlan0 inet dhcp
pre-up /sbin/wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B -D wext
down killall wpa_supplicant

Sendo "wlan0" a interface de rede wifi.

O que faz cada linha:
1- indica que a interface deve "subir" automaticamente
2- indica que o IP é definido via DHCP
3- indica qual comando será executado antes de subir a interface. Nesse caso, inicia o script que carrega a criptografia da rede
4- ao "baixar" a rede, mata todos os processos que fazem a criptografia.

O arquivo /etc/wpa_supplicant/wpa_supplicant.conf (que pode ser qualquer arquivo, basta apontar corretamente no comando anterior) fica como na configuração do WPA "manual".

A dica é configurar mais de uma rede. Fica assim:

network={
ssid="teste"
key_mgmt=WPA-PSK
#psk="<a sua chave>"
psk=<alguma coisa bem diferente>
priority=10
}

Repetindo esse trecho várias vezes é possível deixar configuradas diversas redes. Ele vai escolher uma delas, por ordem de prioridade (com o valor do campo "priority").

Fonte: http://www.guiadohardware.net/tutoriais/rede-wireless-linux/pagina3.html

sábado, 21 de fevereiro de 2009

O Mito

Sequer conheço fulana,
Vejo fulana tão curto
Fulana jamais me vê,
Mas como amo fulana.



Retirado de O Mito, de Carlos Drummond de Andrade

http://letras.terra.com.br/carlos-drummond-de-andrade/818515/

quinta-feira, 19 de fevereiro de 2009

Wifi no Linux, com criptografia WPA2

wpa2 no debian (depois de configurar a rede wifi, talvez com os driver para windows)

Software necessário para criptografia

apt-get install wpasupplicant

Escolhe o canal 6 e o essid (nome da rede) para "invisivel". Isso depende da configuração da rede

iwconfig wlan0 channel 6
iwconfig essid invisivel

criar arquivo wpa_supplicant.conf com o conteúdo do comando abaixo, sendo "invisivel" o nome da rede e "1357924680" a senha para acesso.

wpa_passphrase invisivel 1357924680

Para iniciar em modo debug (-d é debug):

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -d -D wext

Para iniciar em segundo plano (-B é backgroud):

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B -D wext (-B é backgroud)

E pegar IP:

dhclient wlan0


Ainda é possível buscar por outras redes:

iwlist wlan0 scanning

Wifi no Linux, com drivers de Windows

placa: Broadcom
lspci: 01:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)

Baixar o driver e descompactar em um diretório qualquer. "bcmwl5.inf" é o arquivo .inf do driver. Se for outro, provavelmente é diferente.

instalando:

m-a prepare
m-a a-i ndiswrapper
ndiswrapper -i bcmwl5.inf

Remover módulo "default" e carregar as dependências do ndiswrapper

rmmod ssb
ndiswrapper -m
ndiswrapper -ma
ndiswrapper -mi

Carregar o módulo

modprobe ndiswrapper


[pronto]

Notebook - voltando da UTI

Mas ainda não saiu da sala de recuperação... Estou usando o Linux pra fazer um teste de estresse (stress test) na GPU nvidia.

Pois é, ele voltou... agora ele liga (!), acessa rede wifi e grava DVD. Ainda estou em dúvida quanto a esse último, mas vamos ter pensamento positivo. (Positivo não, HP).

O principal problema era a placa de vídeo, que aquecia. Adivinhem?

Rodei o glxgears no Linux, 5 instâncias (a idéia era ver até onde ia). Depois de um tempo, uma não-agradável surpresa:



Depois parei tudo. Esperei um minuto, ainda monitorando:



Mais 1 minuto (2 depois de parar os testes)



Mais 5 minutos - sem usar nada (7 depois de parar os testes)



Pois é... 108°C... Segundo o cara que me devolveu o note, essa solda e feita com um material diferente, que resiste melhor a temperaturas altas.

Para constar, a temperatura dos núcleos da CPU chegaram a 69°C. É bom lembrar, porém, que esse teste não leva muita carga para a CPU.

Pois é, mais aposta do que bolsa de valores...