bertelli.name

I miss the pixels

CACTI plugin architecture in Debian

March 2nd, 2010 | Português(br)

Installing CACTI plugin architecture in Debian (using the testing version, CACTI 0.8.7e at this moment). The plugin architecture don’t come installed in the Debian package, needing to be installed manually, with some adjustments as described below.

I applied the patch in CACTI directory (/usr/share/cacti/site), following these instructions, and got an error when patching file include/global.php. So this file was manually copied from the patch files to /usr/share/cacti/site/include.

Some more adjustments were needed, as I learned in this thread. This is what I did:

  • Edited the file /usr/share/cacti/site/include/global.php (line 22, in this version), replaced
    $config['url_path'] = '/';
    with
    $config['url_path'] = '/cacti/';
  • Still in global.php, (line 202, in this version) replaced
    include($config["library_path"] ."/adodb/adodb.inc.php");
    with
    include("/usr/share/php/adodb/adodb.inc.php");

That’s it. Now I will try adding some plugins and see if it all works well.

Posted in Computers Tags: , | No Comments »

Histórias de Usuários

January 3rd, 2010

Hoje, organizando uns arquivos velhos que tinha guardado, achei um texto com alguns relatos meus de dez anos atrás, quando comecei a trabalhar na área de informática e a maior parte do tempo eu fazia atendimento a usuários. Isso no tempo dos Windows 95 e 98, e com usuários que não tinham recebido nenhum treinamento de informática.

Os relatos são do final dos anos 90, quando eu trabalhei como administrador de rede em um certo lugar que contava com várias unidades em outras cidades, e por causa disso, a maioria dos atendimentos de suporte a usuário eram feitos via telefone mesmo.

Caso 1

Telefonou uma pessoa dizendo que estava imprimindo, mas na impressora HP só saía “sujeira”. Geralmente isso acontecia porque alguns computadores tinham um chaveador de impressora, e o que devia ir para uma impressora matricial foi para uma jato de tinta. Também haviam computadores com duas portas paralelas (de impressora), então podia ser configuração errada: o driver de HP imprimindo para a LPT2 ao invés da LPT1 ou vice-versa.

Por isso, perguntamos logo de cara se aquele micro tinha chaveador de impressora; “não” foi a resposta. Aí perguntamos: “Tem duas impressoras instaladas nesse micro?”

A usuária pediu um momento, afastou a boca do telefone e gritou:

“Ô fulana, tem duas impressoras nesse micro que eu estou usando?”

Caso 2

Uma usuária estava tomando um curso de um sistema para Windows 95. Só que as máquinas do curso estavam configuradas para trabalhar em rede, portanto ao ligar aparecia a tela de logon, pedindo nome de usuário e senha. Como a usuária nunca tinha visto essa tela (só tinha usado máquinas fora da rede), ela chamou o professor dizendo que tinha uma tela estranha… pedindo uma senha…

O professor, já sabendo o que era, disse: “Tecle ESC pra sair dessa tela”.

A usuária: “Aqui só tem OK e CANCELAR”.

Caso 3

Usava-se o Lotus Notes como sistema de correio eletrônico. De tempos em tempos, os usuários recebiam uma mensagem sobre “renovação do certificado Notes” e que existe uma data limite para a renovação. Geralmente eles ligavam para perguntar o que é isso, e daí o administrador Notes explicava o que fazer.

Acontece que, quando expira a data limite e o usuário não solicitou a renovação do certificado, ele não consegue acessar mais seu correio… e o adm. Notes tem de deletar o usuário e recriá-lo, mas precisa saber da senha do usuário (ou assim me explicaram os administradores do Notes, na época). Uma coisa chata de se perguntar ao usuário, mas enfim… só se chegava a essa situação porque o próprio usuário passou meses recebendo a mensagem sobre o certificado e não o renovou.

Depois de muita conversa o pobre administrador do Notes descobriu que o usuário estava fazendo o seguinte: todas as vezes que via a mensagem do certificado, ele alterava a senha. (existia uma mensagem semelhante, que pede para o usuário trocar a senha dele em um certo prazo — mas isso não tem nada a ver com o certificado).

Finalmente, o usuário foi dizer pro adm. Notes qual era a senha dele, explicando assim pelo telefone: “Fulano, minha senha é o seguinte… zero-nove-zero-nove-zero-nove, mas primeiro eu vou pra esquerda, depois eu vou pra direita”.

Tradução (obtida depois de mais vários minutos de conversa): Sabe qual era finalmente a senha do cara? o90909 (“ó”-nove-zero-nove-zero-nove). Ele chamou a tecla O (“ó”) de zero. E o caso de direita-esquerda era o seguinte: ele digitava a tecla O no lado esquerdo do teclado (parte alfanumérica), depois ia para a parte direita do teclado e digitava o 90909 restantes.

No meio da conversa toda, o usuário tentou explicar assim, para o já confuso administrador Notes: “Esse zero aqui, onde tem no teclado, i-zero-pê…”

Caso 4

Ao perguntar para um funcionária porque os formulários dela eram preenchidos todos à máquina de escrever, ao invés de com o computador, recebi a resposta:

“Minha impressora não tem Word nem Excel.”

Atualização: relendo este caso 4 agora, eu me lembrei porque a usuária deu esta resposta: é que a impressora dela era matricial, ainda muito comum naquela época, e portanto não imprimia documentos feitos em programas para Windows. Ou seja, ela não podia imprimir nada feito em Word ou Excel naquela impressora.

Posted in Computers, Personal Tags: | No Comments »

HTML hates Regexp

December 2nd, 2009 | Português(br)

This probably should get HTML tags out of a string...

This probably should get HTML tags out of a string...

Seen at http://www.codinghorror.com/:

You can’t parse [X]HTML with regex. Because HTML can’t be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML.

Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions.

Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes.

Full article: http://www.codinghorror.com/blog/archives/001311.html

I never used regular expressions to do any serious HTML parsing, but thinking about it it doesn’t looks a good idea. Unless you just want to check some simple tags.

This comment in the article is interesting:

For the brave of heart: Write a regular language to recognize all strings of balanced parens.

Actually, don’t, because this is provably impossible.

Why? Because regular expressions recognize *regular languages*, a specific, well-defined class of languages. HTML, like the balanced parens problem above, doesn’t conform to this pattern.

Every once in a while, I’m reminded of why studying bona fide computer science in college was the right idea. It won’t necessarily make you a better programmer, but it has saved me from doing really stupid things from time to time, like trying to parse html with a regex.
David R. Albrecht on November 16, 2009 10:23 AM

Indeed, regexps cannot be used to anything else beyond checking simple tags, and never for a full HTML text: (http://www.perlmonks.org/?node_id=8624)

you cannot write a regexp that will match any level of nested balanced parentheses. You can always write one to match a specific number of balanced ones, but not one that can match a non- fixed number of these. I think there is an explaination in the Friedl book.

A comment taken from the Regular Expression HOWTO that sums it up well:

(Note that parsing HTML or XML with regular expressions is painful. Quick-and-dirty patterns will handle common cases, but HTML and XML have special cases that will break the obvious regular expression; by the time you’ve written a regular expression that handles all of the possible cases, the patterns will be very complicated. Use an HTML or XML parser module for such tasks.)

So… don’t do this.

Posted in Computers Tags: , , | 3 Comments »

Shell script e cacls

August 13th, 2009

O problema: um colega de trabalho queria checar as permissões de acesso de uma grande árvore de pastas em um servidor Windows. Muitos níveis de subpastas e permissões diferentes em cada uma. Por grande árvore de pastas, entenda por volta de umas 43000 pastas.

Eu não sei dizer se tem ferramenta mais fácil pra fazer o que ele queria, ou se um script VBS poderia resolver; eu até sugeri VBS, mas nenhum de nós dois conhecíamos o suficiente e aprender para resolver o problema iria tomar algum tempo. Então, ele e eu tomamos rotas usando ferramentas já conhecidas. Ele queria gerar uma saída de texto de cada pasta, usando o comando cacls do Windows, que permite listar e alterar as permissões via linha de comando. A saída desse comando é similar a isto:

Os nomes foram trocados para preservar os personagens.

Os nomes foram trocados para preservar os personagens.

Ou seja: o nome completo da pasta em questão, seguido das permissões. Havendo mais de uma permissão, elas aparecerão nas linhas seguintes, identadas com espaços para ficarem na mesma coluna que a primeira permissão listada (cuja coluna dependerá do tamanho do nome da pasta/arquivo listado).

Meu colega me perguntou se tinha alguma forma de rodar estas saídas em um script de forma a acrescentar o nome de pasta a cada uma das permissões subsequentes, de forma a facilitar a verificação; por exemplo, a listagem acima ficaria assim (usando : para separar nomes de pasta, de usuário/grupos e permissões):

\\stgreceita1\rfoc$\compartilhamentos\OC\DIESP\DIJUT\18 Controle de PL:BUILTIN\Administradores:(OI)(CI)F
\\stgreceita1\rfoc$\compartilhamentos\OC\DIESP\DIJUT\18 Controle de PL:RFOC\Domain Admins:(OI)(CI)R
\\stgreceita1\rfoc$\compartilhamentos\OC\DIESP\DIJUT\18 Controle de PL:RFOC\LS_COMP_DIESP_R:(OI)(CI)R
\\stgreceita1\rfoc$\compartilhamentos\OC\DIESP\DIJUT\18 Controle de PL:AUTORIDADE NT\SYSTEM:(OI)(CI)F

Solução: tentei fazer de cara com o sed, tentando descobrir uma forma de pegar tudo o que aparecia na linha antes do último espaço e repetir nas demais linhas, substituindo os espaços da linha; mas acabei ficando com este two-liner que deu conta do recado:

caminho=$(cat arq.txt | awk '(NR==1) { printf $1; for(i=2; i<nf ; i++) { printf " "; printf $i } }' | tr '\\' '/')
cat arq.txt | sed 's/acesso especial/acesso_especial/' | awk "{ print \"$caminho\:\"\$NF }" | tr '/' '\\' >> saida.txt

Sendo arq.txt o arquivo que contém a saída do cacls para uma pasta, e saida.txt o arquivo de saída. Depois bastou criar um loop para executar esses dois comandos para cada arquivo de entrada e pronto.

O primeiro comando pega o caminho da pasta, lendo apenas a primeira linha do arquivo e capturando tudo até o último espaço; depois esse caminho é acrescentado pelo segundo comando no começo de cada linha, retirando os espaços de identação. O sed da segunda linha está lá apenas para tratar o caso do texto “acesso especial”, que contém um espaço e atrapalhava o funcionamento do awk seguinte.

Como disse, pode ser que uma linguagem de script já própria do Windows como VBS ou Powershell resolvesse o problema de forma mais simples, mas como meu colega queria uma solução rápida resolvemos desta forma. Conhecer um pouco de shell e ter um cygwin instalado na máquina Windows ajudou bastante ;)

Posted in Computers Tags: , , | No Comments »

Licenças de Software Livre e de Código Aberto

August 4th, 2009

Ontem dei uma palestra no Serpro, onde trabalho, na Regional Brasília. sobre o tema Licenças de Software Livre e de Código Aberto. O conteúdo está disponível para download na página aulas e palestras.

UPDATE: pode-se assistir ao vídeo da apresentação e baixar o vídeo aqui.

Posted in Computers, Palestras, Professional Tags: , , , , | No Comments »

Com Licença, sim?

July 24th, 2009

Poucas vezes tenho visto, por parte da imprensa, artigos sobre software livre que informem realmente de que se trata o mesmo, em uma linguagem acessível, sem “explicá-lo” como “software alternativo” ou coisas do gênero.

http://diplo.uol.com.br/2009-05,a2845

Posted in Computers Tags: , | No Comments »

Software Engineering is Dead

July 22nd, 2009

http://www.codinghorror.com/blog/archives/001288.html

Software development is and always will be somewhat experimental. The actual software construction isn’t necessarily experimental, but its conception is.

I can publicly acknowledge what I’ve slowly, gradually realized over the last 5 to 10 years of my career as a software developer: what we do is craftsmanship, not engineering.

control is ultimately illusory on software development projects.

Posted in Computers Tags: | No Comments »

Extraindo o último elemento de uma linha com o awk

May 25th, 2009

awk, o mastigador de linhas de texto

awk, o mastigador de linhas de texto

Hoje surgiu a necessidade de manipular, via script (shell), um arquivo texto e pegar o último elemento de uma linha, que é um código. Como a linha de exemplo abaixo:

DISSE0074I Operation successfully submitted. Distribution ID is 1234567890.123456.

No caso eu preciso pegar o código numérico no fim da linha. Geralmente eu usaria apenas o comando cut, como: cut -d’ ‘ -f8, mas e se a mensagem variar de tamanho (quantidade de palavras)? Como saber o índice do último elemento?

Entra em ação o awk. Usando awk ‘{print $8}’ dá pra imprimir o elemento número 8; e há a variável NF que informa a quantidade de campos. Então dá pra extrair o último campo assim:

cat arquivo.txt | awk ‘{print $NF}’

Perfeito para o que eu queria.

Posted in Computers Tags: , | 1 Comment »

Análise de Tráfico

April 10th, 2009

Entrei hoje na página do Projeto Tor (http://www.torproject.org/) e dei de cara com este texto:

Análise de "tráfico" de rede...

O Projeto Tor serve para redirecionar os pacotes TCP enviados pelo seu computador, de forma que eles passem por dentro de uma rede espalhada pelo mundo todo antes de atingir seu destino. Um dos vários objetivos disso é proteger você contra a análise de tráfego na rede. Não tem nada a ver com traficantes agindo na internet… :p ;)

Posted in Computers Tags: , , | No Comments »

Como trocar o Windows pelo Ubuntu

March 3rd, 2009

Geralmente eu não gosto de ficar criando posts no meu blog só pra colocar links para matérias em outros sites, mas esta não dava pra deixar de lado. O fato do portal G1 publicar alguma coisa favorável ao Linux já é, em si só, uma notícia, que dirá uma matéria explicando ao público que o Linux não é um bicho de sete cabeças.

Especial Linux: saiba como trocar o Windows pelo Ubuntu em seu PC

Nem li a matéria ainda, mas parece ser o suficiente para um iniciante dar seus primeiros passos com o Ubuntu. Lembrando que é possível rodar o Ubuntu direto do CD, sem instalá-lo no seu computador, ou seja, se você quer apenas ver este tal de Linux para conhecê-lo, não precisa apagar nada da sua máquina. Com o mesmo CD é possível tanto testar o Ubuntu sem instalar, quanto instalá-lo, se assim quiser.

Linux is not Windows.

Linux is not Windows.

Posted in Computers Tags: , , | No Comments »

« Previous Entries