Os artigos mais lidos

Quarta, Janeiro 30, 2013 Helio Loureiro Blog 19316
XGH é uma das coisas mais genias que surgiu nos últimos tempos, descrevendo a estupidez que se aplica em métodos ágeis, mas que reflete bem o ambiente corporativo. Infelizmente o site foi abandonado...
Sábado, Maio 03, 2008 Helio Loureiro FreeBSD 16582
This article is kindly linked by: http://tuxmobil.org/hp_compaq.html http://tuxmobil.org/mobile_bsd.html Barely finished my last article about FreeBSD (PRERELEASE at that time) on Compaq laptops,...
Quarta, Junho 11, 2014 Helio Loureiro Blog 16135
Nem só de discussões de licença, flamewares, releases de kernel e ativistas sapatênis vive o mundo do software livre. Às vezes é envolto de mistério também. Um dos enigmas recentes foi o sumiço da...
Sexta, Maio 20, 2005 Helio Loureiro Python 15689
Esse é o script usado para autenticar automaticamente no Speedy da Telefonica (região de São Paulo). Evita que usuários residenciais, como eu, precisem estar em frente à máquina, permitindo que a...

Se assim como eu, você precisa invariavelmente entregar programas binários e sem o código fonte, então também está sentindo falta do perlcc, que compilava o programa em perl em um belo binário.

Devido à vários bugs, incompatibilidades e falta de manutenção, o perlcc foi removido já no perl 5.8.

Eu testei várias outras soluções, mas ultimamente estava entregando binário utilizando o freeze do python, que eu achava mais simples.

Hoje, buscando uma outra coisa perl, topei com um PAR packer.  Tanto a sintaxe quanto a funcionalidade é idêntica ao perlcc.

PAR packer

Eu testei aqui, e funcionou muito bem.

helio@shibboleet:tmp$ pp -B -o accumulatorEventSender accumulatorEventSender.pl
helio@shibboleet:tmp$ ls
accumulatorEventSender  accumulatorEventSender.pl
helio@shibboleet:tmp$ file accumulatorEventSender
accumulatorEventSender: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.15,
BuildID[sha1]=0x75828a5e4b38f0a935c9461e07d6ac23d3282d73, stripped

O aplicativo se encontra no pacote libpar-packer-perl no Ubuntu (e possivelmente no Debian).

No sistema de agendamento de tarefas, o cron, existe a possibilidade de controle de acesso pelos arquivos /etc/cron.allow/etc/cron.deny.  Existindo somente o /etc/cron.allow no sistema, o usuário deverá ter seu login incluso nesse arquivo para fazer uso do cron.  Do contrário será brindando com uma mensagem semelhante a essa:

You (helio) are not allowed to use this program (crontab)
See crontab(1) for more information

Nos ambientes de telecomunicações, onde muitos dos sistemas operacionais em uso são Solaris, ex-Sun e agora da Oracle, esses vêm com essa forma de controle do cron habilitada por padrão.

Isso aumenta a segurança do sistema, mas também torna alguns trabalhos simples mais difíceis, principalmente quando é necessário ter agendamento de trabalho.  Claro que isso poderia ser resolvido com ajuda de um bom administrador de sistemas, o sysadmin, e conhecimento em Unix, mas isso parece estar se tornando cada vez mais raro nesses dias.

Então criei o mycrond, um daemon escrito em perl, para rodar periodicamente como o crond do sistema.  A sintaxe não é perfeita e tem alguns furos, como não aceitar "*/5" para tarefas a cada 5 intervalos, mas utiliza uma sintaxe que somente Solaris aceita como, por exemplo para tarefas agendadas para cada 5 minutos, utilizar "0,5,10,15,20,25,30,35,40,45,50,55".  O restante é parecido com o uso normal da crontab.

Não é 100% perfeito, pois acabei deixando a análise de sintaxe incompleta para todos os valores de data, mas funciona perfeitamente como daemon, não morrendo ao sair do sistema, e é capaz de analisar e rodar formas mais simples da crontab.


Faz tempo que não me deparo com esse tipo de problema, mas acabei vendo novamente depois que um colega de trabalho pediu ajuda nisso.

A primeira vez que trabalhei com conversão de caracteres foi em português mesmo, de ISO-8859-1 para UTF-8. Não guardei lembranças boas. Dessa vez o desafio era para converter supostos caracteres no mesmo formato para UTF-8, mas não da nossa língua pátria.

Para quem nunca viu isso, o código em Perl que faz a conversão está no pacote Encode , disponível no CPAN, da seguinte forma:

use Encode; 
...
...
foreach $line () {
next if ($line =~ m/^$/);
chomp($line);
$i = Encode::decode("iso-8859-1", $line);
$line = Encode::encode("utf8", $i);
print $line."\n";
}
...

Dessa vez tive um problema com a palavra "ΑστέριαΑστέρια". Juro que não sei o que significa, mas a droga da palavra, escrita em grego (CP1253) estava junto ao restante do texto codificado em ISO-8859-1.

Apanhei pra achar o formato certo... ainda falta fazer um conversor inteligente o suficiente para usar o formato certo antes de processar, mas já é alguma coisa...