<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d17740096\x26blogName\x3dMurtog\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttp://murtog.blogspot.com/search\x26blogLocale\x3dpt_BR\x26v\x3d2\x26homepageUrl\x3dhttp://murtog.blogspot.com/\x26vt\x3d-9075988469102890239', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

List comprehension - Python

7.14.2006
List Comprehensions - Python

List Comprehensions é uma utilidade de Python pouco usada, mas de muito poder e utilidade.
É uma maneira de gerar uma lista sem usar as funções map, filter ou lambda.

- Sintaxe básica

A list comprehension mais básica consiste de uma expressão de retorno seguida de uma
declaração for:
[ funcao( iterador ) for iterador in objetoIteravel ]

Para compôr a lista, Python irá percorrer o objetoIteravel e para cada elemento nesse objeto,
irá adicionar à lista o resultado de funcao( iterador ).

Exemplo prático:

frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases ]
print lista

O retorno será:

['eu', 'adoro', 'list comprehensions']

- Filtrando a lista gerada

As lists comprehensions têm a capacidade de filtrar a lista gerada usando um IF após a declaração
FOR. Vejamos o exemplo anterior com um if:

frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases if palavra[0] in ("E", "A")]
print lista

Teremos a saída:

['eu', 'adoro'] ## somente as frases começadas por E ou A.

- Combinando fors

Também podemos iterar ao mesmo tempo em dois ou mais objetos iteráveis. Assim podemos fazer uma lista
baseada em outras duas listas, por exemplo:

"Dados dois vetores, retorne os elementos combinados que somados retornam valor maior que 5"

vet1 = [ 1, 2, 3 ]
vet2 = [ 2, 3, 4 ]

valores = [(x, y) for y in vet2 for x in vet1 if x + y > 5 ]
print valores

Teremos a saída:
[(3, 3), (2, 4), (3, 4)]


OBS: Notem que para retornar um lista de tuplas eu tive que pôr os valores-retorno entre parênteses, caso eu quisesse retornar
uma lista de listas, colocaria entre colchetes.

- Conselho

Tente sempre usar a sintaxe básica com, no máximo um, if e uma declaração for. Além disso ficará complicado e difícil de manter.
Antes da praticidade, vem a clareza. Lembre-se disso.

Sempre às ordens,
Murtog.

Anotações de um maluco aprendendo (x)html.

7.10.2006
Andei lendo sobre Xhtml para um projetinho que eu estou querendo implementar. Segue link para as minhas anotações sobre o assunto (descobri que é interessante para o aprendizado escrever resumidamente o que se lê com o Taq [http://beam.to/taq]).

http://www.writely.com/View.aspx?docid=adgrqnkjvrw7_1fwjxkt

Irei atualizar com o tempo. Só estou aborando o básico do básico do HTML. Em breve partirei para o CSS da vida...

Abraços! :)

Updaite: Tio Dirceu (ou Bill) [http://www.dirceu.info], que é fera nessas coisas de Web me mandou um e-mail corrigindo minhas gafes:

1- Na verdade HTML é:

"HTML é uma linguagem de marcação que usa tags para
*estruturar* o seu conteúdo" (by Dirceu);

Tá, eu sabia o conceito. Fui desleixado ao escrever. :(

2- A estrutura básica do HTML na verdade é:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Hello, world!</title>

</head>

<body>

<p>Hello World!</p>

</body>

</html>


Sem o atributo xmlns=... o validator xia.

3- Os restantes das broncas foi quanto ao uso de atributos e tags de formatação nos exemplos. A questão é que estou seguindo o tutorial do Htmldog.com, daí só vou refazer os exemplos usando css quando chegar na parte de CSS :P (mas o Dirceu está certo, é uma péssima prática usar tags e atributos de formatação).

O que vale mesmo é o exemplo do Dirceu, ao invés de descer o pau aqui no comentário me mandou um e-mail me corrigindo e repassando o conhecimento. Isso que é discrição e classe.

Meus sinceros agradecimentos, Dirceu :) E aguardo mais aulas, valeu, Bill ?! :)

Software comercial no apt-get do Ubuntu

O projeto Ubuntu lançou recentemente um repositório para softwares comerciais pré-empacotados para a distribuição Dapper. Atualmente apenas existem o real-player e o browser opera disponíveis, porém a tendência é que entrem no bolo Skype e outras coisinhas interessantes.

O repositório é:

deb http://archive.canonical.com/ubuntu dapper-commercial main

Adicione no seu sources.list e seja feliz :-).

O bom filho a casa retorna

7.06.2006
Recebi um comentário assinado pela Tatiana me recomendando o Mandriva para desktop Linux. Achei engraçado que eu voltei a usar Linux em casa e estou trabalhando diretamente com Linux agora e sequer notifiquei no Blog.

Sim, queridos (as). Voltei a usar Linux. Estou usando a distribuição Xubuntu que é um Ubuntu rodando XFCE como Window Manager. Ele é tudo que eu sempre quis de um SO: Rápido, estável, bonito e não intrusivo. Quando digo não intrusivo digo que ele não faz nada sem que eu queira.

Os únicos problemas que estou tendo com o Linux atualmente é achar um editor HTML de verdade (o NVU foi feito no horário de almoço dos desenvolvedores do Linspire). O outro era configurar minha internet banda-larga, que na verdade era um problema deles, que não podiam me passar um rota. Tive que adiconá-la na mão grande e criar um scriptzinho para automatizar a configuração a cada boot.

Ah, sim. Quanto ao trabalho. Estou trabalhando em um órgão do governo estadual (como terceirizado) que presta o suporte técnico para um projeto muito lindo de infocentros (lan-houses gratuitas para a população). E ao contrário do que as pessoas pensam de governo, estado, lá nós trabalhamos muito e temos metas claras de produtividade. A população é nosso cliente e são considerados assim.

Bem, até o próximo artigo: Administração do acesso a internet numa empresa.

Manutenção de micros

7.02.2006
Computadores são coisas frágeis e dão mais defeito do que se imagina. Mas são defeitos “consertáveis”, isto é, com um pouco de conhecimento e paciência, você consegue deixá-los na ativa de novo.

Onda eu trabalho temos a seguinte média: 2 computadores quebram a cada 15 dias (defeitos bestas) e 8 quebram quando chove, nos mesmos 15 dias (não me pergunte porque). Sendo que a cada dois meses um dá problemas sérios, que envolvem troca de peças.

***

Sujeira é o maior vilão dos computadores que existe (leia-se sujeira como poeira e maresia). Muitas peças darão problemas por causa do acúmulo de poeira e/ou por terem sido comidas pela maresia. Para evitar ambos, é legal pôr “perflex” nas aberturas do computador, mas só faça isso caso o computador seja usado num lugar com ar-condicionado ou bem ventilado, senão as chances dele superaquecer são grandes.

Seguindo a ordem, os outros problemas são basicamente da memória e da fonte. Para a memória temos a velha receita: passe uma borracha (daquelas de duas cores) na pontinha dela. Caso não resolva, lave-a com sabão neutro e água mesmo e depois enxágüe bem. Comigo as lavagens sempre resolveram. Já com as fontes eu tenho uma relação de amor e ódio. Os problemas que elas dão são assaz estranhos. O único que consegui resolver sem ter que trocar a fonte toda foram os problemas de barulho excessivo: Passar WD na ventoinha e afastá-la um pouco dos fios.

Os últimos e mais chatos problemas são os curtos. Alguma peça do computador entra em curto e você tem que sair a caça dela. A solução é essa mesmo: ir tirando cada peça, ligar o computador sem ela, desligar o computador, colocar a peça de volta e tentar novamente ligar o computador.

Bem, é isso. O segredo é limpar seu computador de tempos em tempos, pôr capa, passar a borracha e lavar a memória de tempos em tempos. Seguindo essas dicas os computadores não vão parar tão cedo. Pode confiar.

Ah, é claro. Comprar peças de qualidade e sempre, sempre, off-board.

Abraços!

ps: não sou técnico em manutenção de micros, então qualquer besteira falada por mim nesse artigo, desculpem-me. e ao invés de meter o pau, digam qual a solução correta.

Série de Artigos: Vida de Severino da Informática

6.21.2006
Voltando com força total nessa joça, vou lançar uma série de artigos sobre o meu atual emprego: Severino da informática. Estou trabalhando com Help Desk, Manutenção de Micros e Administração de Redes.

Baseado nos desafios da vida real vou escrever sobre cada um desses tópicos relatando os desafios e qual a melhor maneira de proceder perante eles. Para quem pensa que a dificuldade da informática é em criar softwares, prometo provar o contrário.

Mas como sou programador, esses temas serão vistos na perspectiva de um programador.

Bem, o primeiro será sobre Manutenção de Micros, pois é o que menos eu vou estender e comentar, logo, o mais rápido de escrever.

Até lá.

Linux, vamos dar um tempo?

12.27.2005
São mais ou menos dois anos usando diariamente Linux. A maioria das distribuições foi testada, sendo que parei há uns quatro meses no Ubuntu. Ele parecia ser a panacéia para meus problemas com o Linux.

A relação Ubuntu x Eu ficou muito bem enquanto eu usei a versão Hoary. Após o lançamento do Breezy resolvi fazer um upgrade, baixei a iso do Breezy e instalei-o no lugar do Hoary.

Poucas semanas depois eu fiz uma atualização pelo Synaptic do Kernel do Ubuntu, ele acabou travando no boot em um erro: “Checking Battery State”. Reinstalei o Breezy e me proibi de atualizar o Kernel do dito cujo.

Tudo bem. A vida vai indo. Essas coisas acontecem. Só que semana passada precisei fazer umas planilhas tipo Excel. Usei o Gnumeric e o Calc do OpenOffice. Primeiro: os dois são péssimos softwares. Sim, o adjetivo é para realçar minha raiva com eles. Segundo: o Gnumeric por incrível que pareça é, IMHO, melhor que o Calc.

Mas o problema não foram os programas. O Gnome, enquanto eu estava me aventurando pelos dois programas, começou a travar, dando uma mensagem de erro sobre a barra de tarefas. Reiniciei umas 15 vezes e o erro persistiu. Desisti.

Hoje meu Linux ganhou um rm –rf / e ele ficará no reino dos Linuxs formatados até a interface e usabilidade do Linux estarem maduras de fato. É uma pena, mas paciência tem limite.

PS: Linux suspenso até o lançamento do Dapper.

Guido at Google ?

12.21.2005
Será?