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)