Пятница, 3-е сентября

Освоим perl 6 к 2015 году!: nota XLVIII. >>

Создадим небольшую

Освоим perl 6 к 2015 году!: nota XLVII. 4 + -5

Интересно удостовериться как обрабатываются несколько минусов-плюсов

Освоим perl 6 к 2015 году!: nota XLVI. values

По аналогии с keys существует value - выводит список значений

Освоим perl 6 к 2015 году!: nota XLV. Безумный max

Интересный новый оператор, max. Возвращает максимальное число из

Освоим perl 6 к 2015 году!: nota XLIV. Восклицательный знак

Восклицательный знак служит для отрицания

Освоим perl 6 к 2015 году!: nota XLIII. keys

keys возвращает массив ключей хэша, sicut

Освоим perl 6 к 2015 году!: nota XLII. Интерполяция функций

Освоим perl 6 к 2015 году!: nota XLI. Интерполяция переменных

Вот, допустим, у нас есть переменная $abc. Её можно интерполировать в строку как

Освоим perl 6 к 2015 году!: nota XL. Дефис и апостроф в названии переменной

В названиях переменных может быть цифра, буква, подчеркивание, дефис и апостроф. Так написано в "Using perl 6".

Освоим perl 6 к 2015 году!: nota XXXIX. Перебор элементов в for

Теперь для перебора элементов массива с присвоением значения какой-то переменной служит конструкция со стрелочкой

Освоим perl 6 к 2015 году!: nota XXXVIII. use v6

В "Using perl 6" говорится, что хорошо бы начинать все программын на perl 6 со строки "use

Освоим perl 6 к 2015 году!: nota XXXVII. Цепочка действий

Как мы уже не раз пробовали, теперь в perl можно использовать цепочки действий (методов). Вместо громоздких конструкций со скобками вроде такого: действие1(действие2(действие3(действие4(1000)))) можно делать так

Освоим perl 6 к 2015 году!: nota XXXVI. Именованные сохраняющие скобки

Теперь в регулярных выражениях можно самому задавать названия для сохраняющих скобок. Раньше, если в регулярном выражении, встречалось что-то вроде (\d+), то содержимое записывалось в переменную $1 (или $2, $3...) Сейчас можно проще.

Освоим perl 6 к 2015 году!: nota XXXV. Именованные регексы

Мы уже пробовали грамматики. Оказывается, есть их более простое подобие - именованные регулярные выражения. В "Using perl 6" дается такой пример регекса

Освоим perl 6 к 2015 году!: nota XXXIV. Ускорение

Сразу после установки Rakudo Star 2010.08 хочется проверить производительность и - особо - утечку

Освоим perl 6 к 2015 году!: nota XXXIII. Rakudo Star 2010.08

26 августа произошел второй по счету релиз звездного ракудо,

Освоим perl 6 к 2015 году!: nota XXXII. Анкоры

Вот оно что! Оказывается, что << означает левую границу слова. А >> соответственно правую! Первый, кстати, можно заменить одним символом «. Второй - символом

Освоим perl 6 к 2015 году!: nota XXXI. Квантификаторы

+, * и ? имеют по-прежнему место

Освоим perl 6 к 2015 году!: nota XXX. Тригонометрические функции

Тригонометрические функции бывают двух видов.

Освоим perl 6 к 2015 году!: nota XXIX. Продолжаем искать целые числа

Для получения целого числа из нецелового существует ещё truncate, как

Освоим perl 6 к 2015 году!: nota XXVIII. Некоторые функции для работы с числами

abs - возвращает абсолютное значение числа, то есть отбрасывает минус, если

Четверг, 2-е сентября

On Perl — блог о языке программирования Perl и его сообществе: Мир до state

До прихода в Perl оператора state, который позволяет создавать «статические» переменные прямо внутри подпрограмм, люди пользовались вот таким приемом:

{
    my $count = 0;

    sub next_value {
        return ++$count;
    }

}

print next_value, "\n";
print next_value, "\n";


Теперь все ребята пишут так:

use v5.10;

sub next_value {
    state $count = 0;

    return ++$count;
}

say next_value;
say next_value;

Анатолий Шарифулин: Perl. Получение ссылок на mp3 из подкаста

#!/usr/bin/env perl
use common::sense; use ojo;

die "Usage: $0 <podcast url>" unless @ARGV;

b(g( shift )->dom->find("enclosure[url]")->each(sub {

local $_ = shift->attrs->{url}; say if /\.mp3$/;

}));


http://gist.github.com/562053

Привет, хейтерам Perl :)

Пример подкаста bobina.pdj.ru/rss.xml

use Mojolicious or die;

use Perl or die;

JFDI


ЗЫ: пизжи только на похапе или CAS или AJAX :)

Вторник, 31-е августа

On Perl — блог о языке программирования Perl и его сообществе: Пара слов про May Perl

Сегодня на «Веб-планете» появилась статья ни о чем под таким же названием: «РИТ 2010: мушкетёры 0010 лет спустя».

Читать ее всю нет нужды (да и абзацы там не связаны один с другим). Процитирую лишь пару мест.

Возможно, было бы верно и правильно рассказать про DevConf, где был сделан акцент на языках веб-программирования (PHP, Perl, Python, Ruby и, отчего-то, .NET) - с элементом соревновательности между ними. Но, право слово, для привлечения неофитов и превращения их в адептов этих ЯП, цену на вход надо снижать всё же до приемлемого для студентов уровня. В этом смысле пример продавшегося-слившегося YAPC::Russia, он же MayPerl, особенно печален. Хотя, возможно, подобное бессеребреничество сейчас могут позволить себе лишь монстры типа Google и Microsoft, для которых задача подсадить на свои технологии с уже молодости особенно важна и актуальна. Так что не будем о грустном.

Оставив за бортом стилистическую убогость этого фрагмента (и всего текста), официально могу сказать, что автор (по-ссыкловски подписавшийся Фуэнте Овехуной) не прав и не разбирается в теме.

Конференция YAPC::Russia «May Perl» выросла из первого российского Perl-воркшопа, прошедшего в Москве в 2007 году. В следующие два года под этим названием она проходила только в Москве, параллельно с другими мероприятиями в семи странах (в семи, блядь, странах!). В 2010 она не продалась-слилась, а наоборот, расширилась, и породила аж три мероприятия: совместную конференцию в Киеве и два потока на других IT-конференциях в Москве.

Название «May Perl» (оно, к вопросу о грамотности, пишется с пробелом) в 2010-м году было использовано только один раз, и не на DevConf в мае, а на РИТ++ в апреле.

YAPC::Russia / MayPerl

Конференция РИТ – это как матрёшка, содержащая внутри другие конференции – ClientSide, RootConf, MayPerl. Последняя из названных, как понятно, вся «чисто про Perl».

Автор заблуждается — конференция не только про язык программирования. Она еще про сообщество, которое у перла такое, что «Веб-планете» и не снилось.

В следующем году четвертая конференция YAPC::Russia «May Perl» — 2011 пройдет в Москве 14 и 15 мая. За день до этого запланирован хакмит про Perl 6 с участием мировых звезд.

А в августе 2011-го тот же коллектив организаторов проводит европейскую конференцию YAPC::Europe 2011 в Риге. Сосите, дрочеры, вместо того, чтобы писать бессмыслицу и катить на моих коллег и мои проекты.

P. S. Несколько дней назад появился запоздалый отчет о конференции РИТ++ за авторством Виталия Филиппова. Очень интересно сравнивать фрагменты веб-планетной статьи с этим текстом.

Blog.Perl5doc.ru: Механизмы рендеринга в Mojolicious - Модули CPAN

На сайте Perl5doc.ru в разделе CPAN появился документ Mojolicious::Guides::Rendering, описывающий механизм рендеринга Mojolicious.


Кратко говоря, "рендеринг" - это преобразование данных из одного формата в другой.  В Mojolicious под этим термином подразумевается шаблонизация, генерация кодов состояния http, маршрутизация, работа с данными в формате JSON. Как эти технологии реализованы в Mojolicious, вы узнаете из документа Mojolicious::Guides::Rendering.

Документации Mojolicious на русском языке накопилось достаточно, хотя еще многое предстоит сделать. Стоит отметить всех, кто принял посильное участие в переводе документации Mojolicious:

Mojo::Base: zhdinar
Mojolicious:  zhdinarMinoruvti .
Mojolicious::Guides::Cheatsheet:  vtiДмитрийklik-klik.
Mojolicious::Guides::CodingGuidelines: alexey-rusaleevxomavtiДмитрийFoxcool
Mojolicious::Guides::Cookbook: ДмитрийshoorickHeavyAnykeyFoxcoolzhdinarvti
Mojolicious::Guides::Rendering: xomavtiСергейkorshakДмитрийМаксим Вуецkobanklik-klikdionysDim_K

Надеюсь, число участников будет только увеличиваться :)

Сообщество ru_perl в LiveJournal: Mojo сильно нагружает процессор

Subj. Не пойму в чем может быть дело, при запуске с параметром daemon_prefork вижу, что сервер начал жутко тормозить, приложение стало нагружать процессор. Начал выяснять strace-ом причину:

...
flock(6, LOCK_EX|LOCK_NB) = -1 EAGAIN (Resource temporarily unavailable)
flock(6, LOCK_EX|LOCK_NB) = -1 EAGAIN (Resource temporarily unavailable)
flock(6, LOCK_EX|LOCK_NB) = -1 EAGAIN (Resource temporarily unavailable)
flock(6, LOCK_EX|LOCK_NB) = -1 EAGAIN (Resource temporarily unavailable)

Сделал: lsof -d 6 -p 12980, вывод:

perl 12980 root 6w REG 253,0 0 32505878 /tmp/mojolicious_lite.lock
perl 12981 root 6w REG 253,0 0 32505878 /tmp/mojolicious_lite.lock
perl 12982 root 6w REG 253,0 0 32505878 /tmp/mojolicious_lite.lock

Подробности: http://gist.github.com/558876

# ls -l /tmp/mojolicious_lite.lock
-rw-r--r-- 1 root root 0 Aug 31 15:26 /tmp/mojolicious_lite.lock

Ведающие люди, подскажите что делать? Из-за чего может быть проблема?


ОС: CentOS 5.5.

UPDATE: Проверял на последней версии 0.999930 — проблема решена. У кого 0.999926, обновляйтесь.

Понедельник, 30-е августа

Perl — Говнокод.ру: Perl / Говнокод #4129

Может это так и надо делать? if($ENV{'mode'} eq "dialup"){ if($ENV{'login'}=~/^P/){ if($ENV{'bill'}){ if($ENV{'passwd1'}){ if($ENV{'passwd1'} eq $ENV{'passwd2'}){ if($ENV{'email'}){ my($rUser)=check_radius_user_new($ENV{'login'}); my($sUser)=check_http_user_new($ENV{'login'}); #my($Email)=Check_MailBox($ENV{'login'},$ENV{'email'}); if(($rUser==0)and($sUser==0)and($Email==0)){ my($bUser)=check_billing_user($ENV{'bill'}); if($bUser==0){ add_radius_user($ENV{'login'},$ENV{'passwd1'}); add_http_user($ENV{'login'},$ENV{'passwd1'}); add_billing($ENV{'login'},$ENV{'bill'}); Add_MailBox($ENV{'login'},$ENV{'email'},$ENV{'passwd1'}); $ENV{'message'}="User created"; }else{$ENV{'message'}="Error: Billing name is already exist";} if($Email!=0){$ENV{'message'}="Error: Email name or alias is already exist";} }else{$ENV{'message'}="Error: Sorry such login is already exist";} }else{$ENV{'message'}="Error: Enter e-mail";} }else{$ENV{'message'}="Error: Password mistake";} }else{$ENV{'message'}="Error: Enter password";} }else{$ENV{'message'}="Error: Enter billing name";} }else{$ENV{'message'}="Error: Enter login";} }else{$ENV{'message'}="Error: ";} $ENV{'message'}=~s/ /\%20/g;

Анатолий Шарифулин: Perl. Отправка письма в Mojolicious

Отправить письмо в Mojolicious -- легко, используя Mojolicious::Plugin::Mail.

А кто пизжи может отправить письмо из веб-приложения?
Требования: письмо с дизайном в шаблоне, тема письма там же, в коде только кому и отправка.

 

В Mojolicious это так:
  1. Подключение

    $self->plugin(mail => { from => 'sharifulin@gmail.com', encoding => 'base64', type => 'text/html', how => 'sendmail', howargs => [ '/usr/sbin/sendmail -t' ], });


  2. Использование в контроллере

    my $data = $self->helper('render_mail', 'user/signup'); $self->helper('mail', mail => { To => 'sharifulin@gmail.com', Subject => $self->stash('subject'), Data => $data, });

  3. Шаблон (user/signup.mail.ep) 

    % layout 'default', subject => 'Тема письма', title => 'Спасибо!'; <p>Здесь HTML</p>

  4. Шаблон с дизайном (layouts/default.mail.ep)

    <h2><%= $title %></h2> %== content

    <p>Футер</p>



Больше примеров генерации писем в Mojolicious здесь


use Mojolicious or die;

use Perl or die;

JFDI

koorchik's Perl blog: CPANPLUS и Gentoo - Автоматически создаем ebuild-ы модулей из CPAN

Internal Server Error: ... *

А вот Карл пошагово рассказывает, как от классической реализации треугольника паскаля можно докатится до

my @pascal := do [1], ->@p { [0, @p Z+ @p, 0] } ... * 

очень Perl6.

Воскресенье, 29-е августа

Сообщество ru_perl в LiveJournal: Как быстро начать писать современные веб-приложения

#curl -L http://cpanmin.us | perl - --self-upgrade
#cpanm Task::Dancer
#cpanm Starman
#dancer -a NewProject

Сообщество ru_perl в LiveJournal: посоветуйте Wiki на перле для русскоговорящих юзеров

Хочется поднять на своем серваке wiki куда я и мои родственники будем складывать разную информацию (в основном будем ее использовать как иерархическое хранилище ссылок с короткими каментами, основную часть изменений буду делать все-таки я).

Нужно чтобы wiki была более-менее руссифицирована. Дизайнов красивых не требуется.

Посоветуйте wiki которое
* не требует пол-CPAN'а (в частности, Catalyst :-) и чтобы была по-легче в плане потребления RAM
* работает под мод-перлом
* использует либо filesystem (либо sqlite) либо mysql для данных

Суббота, 28-е августа

Игорь Пашев: (без заголовка)

Наковнокодил скрипт для переименования

файлов сериала «Стар Трек»,

на основе данных Википедии.

«Стар Трек» скачан известно откуда.






#!/usr/bin/env perl



use strict;

use warnings;

use integer;

use utf8;

use open qw( :utf8 :std );

use File::Find ();

use File::Basename;





use vars qw/*name *dir *prune/;

*name   = *File::Find::name;

*dir    = *File::Find::dir;

*prune  = *File::Find::prune;





my $REGEX = q^<td align="center">(\d+)\.(\d+)</td><td>«<b>(.+?)</b>»<br>.*?lang="en">(.+?)</span>^;



$REGEX =~ s#\s+# #g;

$REGEX =~ s#> ?<#> ?<#g;



my $CNT = '';



while (<STDIN>)

{

    s/(\n|\t\r)+/ /;

    s/\s\s+/ /;

    $CNT .= $_;

}





print '#!/bin/bash

set -e

set -u



';



my %SER = ();



while ($CNT =~ s/$REGEX//i)

{

    #print qq#"$1x$2 — $3 ($4).avi"\n#;

    $SER{"$1x$2"} = "$1x$2 — $3 ($4).avi";

}



sub wanted

{

    my ($dev,$ino,$mode,$nlink,$uid,$gid);



    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&

    -f _ &&

    /^.*\.avi\z/s

    && do

    {

        utf8::decode($name);

        my $dir = dirname($name);

        my $f   = basename($name);

        if ($f =~ m/(\d+).(\d+)/)

        {

            if (exists $SER{"$1x$2"})

            {

                my $newname = $SER{"$1x$2"};

                if ($newname ne $f)

                {

                    print(qq(mv "$name" "$dir/$newname"\n));

                }

            }

        }

    }

}



File::Find::find({wanted => \&wanted}, '.');



print '

exit 0

';



exit 0








Использовать так:

./st-tng < 1.html > st-tng.sh




Получился такой файл:


#!/bin/bash

set -e

set -u



mv "./Сезон 1/1x20 - Сердце славы (Heart Of Glory).avi" "./Сезон 1/1x20  Сердце славы (Heart of Glory).avi"

mv "./Сезон 1/1x24 - Париж навсегда (We'll Always Have Paris).avi" "./Сезон 1/1x24  Париж навсегда (We'll Always Have Paris).avi"

mv "./Сезон 1/1x16 - Слишком короткий сезон (Too Short A Season).avi" "./Сезон 1/1x16  Слишком короткий сезон (Too Short a Season).avi"

mv "./Сезон 1/1x23 - Обличье зла (Skin Of Evil).avi" "./Сезон 1/1x23  Обличье зла (Skin Of Evil).avi"

mv "./Сезон 1/1x25 - Заговор (Conspiracy).avi" "./Сезон 1/1x25  Заговор (Conspiracy).avi"

mv "./Сезон 1/1x09 - Битва (The Battle).avi" "./Сезон 1/1x09  Битва (The Battle).avi"

mv "./Сезон 1/1x07 - Чужой среди своих (Lonely Among Us).avi" "./Сезон 1/1x07  Чужой среди своих (Lonely Among Us).avi"

mv "./Сезон 1/1x10 - Прятки с Кью (Hide And Q).avi" "./Сезон 1/1x10  Прятки с Кью (Hide and Q).avi"

mv "./Сезон 1/1x26 - Нейтральная зона (The Neutral Zone).avi" "./Сезон 1/1x26  Нейтральная зона (The Neutral Zone).avi"

mv "./Сезон 1/1x18 - Дым отечества (Home Soil).avi" "./Сезон 1/1x18  Дым отечества (Home Soil).avi"

mv "./Сезон 1/1x11 - Убежище (Haven).avi" "./Сезон 1/1x11  Убежище (Haven).avi"

mv "./Сезон 1/1x22 - Симбиоз (Symbiosis).avi" "./Сезон 1/1x22  Симбиоз (Symbiosis).avi"

mv "./Сезон 1/1x21 - Арсенал свободы (The Arsenal Of Freedom).avi" "./Сезон 1/1x21  Арсенал свободы (The Arsenal of Freedom).avi"

mv "./Сезон 1/1x03 - Голая действительность (The Naked Now).avi" "./Сезон 1/1x03  Голая действительность (The Naked Now).avi"

mv "./Сезон 1/1x13 - Знания (Datalore).avi" "./Сезон 1/1x13  Знания (Datalore).avi"

mv "./Сезон 1/1x08 - Справедливость (Justice).avi" "./Сезон 1/1x08  Справедливость (Justice).avi"

mv "./Сезон 1/1x19 - Выросший (Coming Of Age).avi" "./Сезон 1/1x19  Выросший (Coming Of Age).avi"

mv "./Сезон 1/1x05 - Последний форпост (The Last Outpost).avi" "./Сезон 1/1x05  Последний форпост (The Last Outpost).avi"

mv "./Сезон 1/1x04 - Кодекс чести (Code Of Honor).avi" "./Сезон 1/1x04  Кодекс чести (Code Of Honor).avi"

mv "./Сезон 1/1x12 - Большой гуд-бай (The Big Goodbye).avi" "./Сезон 1/1x12  Большой гуд-бай (The Big Goodbye).avi"

mv "./Сезон 1/1x06 - Где никто не был прежде (Where No One Has Gone Before).avi" "./Сезон 1/1x06  Где никто не был прежде (Where No One Has Gone Before).avi"

mv "./Сезон 1/1x15 - 11001001.avi" "./Сезон 1/1x15  11001001 (11001001).avi"

mv "./Сезон 1/1x14 - Ангел-1 (Angel One).avi" "./Сезон 1/1x14  Ангел-1 (Angel One).avi"

mv "./Сезон 1/1x17 - Когда ветвь ломается (When The Bough Breaks).avi" "./Сезон 1/1x17  Когда ветвь ломается (When The Bough Breaks).avi"

mv "./Сезон 2/2x18.Up.the.Long.Ladder.(DVDRip.rus).by.Suran.&.Orochimaru-Sama.&.Spaceballs.avi" "./Сезон 2/2x18  По длинной лестнице (Up the Long Ladder).avi"

mv "./Сезон 2/2x22.Shades.of.gray.(DVDRip.rus).by.Suran.&.Orochimaru-Sama.&.Spaceballs.avi" "./Сезон 2/2x22  Оттенки серого (Shades of Gray).avi"

mv "./Сезон 2/2x05 - Громкий, как шёпот (Loud as a Whisper).avi" "./Сезон 2/2x05  Громкий как шепот (Loud as a Whisper).avi"

mv "./Сезон 2/2x08 - Вопрос чести (A Matter of Honor).avi" "./Сезон 2/2x08  Вопрос чести (A Matter of Honor).avi"

mv "./Сезон 2/2x20.The.Emissary.(DVDRip.rus).by.Suran.&.Orochimaru-Sama.&.Spaceballs.avi" "./Сезон 2/2x20  Эмиссар (The Emissary).avi"

mv "./Сезон 2/2x10.The.Dauphin.rus.avi" "./Сезон 2/2x10  Дофин (The Dauphin).avi"

mv "./Сезон 2/2x19.Mmanhunt.(DVDRip.rus).by.Suran.&.Orochimaru-Sama.&.Spaceballs.avi" "./Сезон 2/2x19  Охота на человека (Manhunt).avi"

mv "./Сезон 2/2x13.Time.Squared.by.Suran.&.Orochimaru-Sama.&.Spaceballs.avi" "./Сезон 2/2x13  Время в квадрате (Time Squared).avi"

mv "./Сезон 2/2x03 - Элементарно, дорогой Дэйта (Elementary, Dear Data).avi" "./Сезон 2/2x03  Элементарно, дорогой Дейта (Elementary, Dear Data).avi"

mv "./Сезон 2/2x09.The.Measure.Of.A.Man.rus.avi" "./Сезон 2/2x09  Критерий человека (The Measure of a Man).avi"

mv "./Сезон 2/2x01 - Дитя (The Child).avi" "./Сезон 2/2x01  Дитя (The Child).avi"

mv "./Сезон 2/2x17.Samaritan.Snare.(DVDRip.rus).by.Suran.&.Orochimaru-Sama.&.Spaceballs.avi" "./Сезон 2/2x17  Самаритянская ловушка (Samaritan Snare).avi"

mv "./Сезон 2/2x21.Peak.Performance.(DVDRip.rus).by.Suran.&.Orochimaru-Sama.&.Spaceballs.avi" "./Сезон 2/2x21  Верх производительности (Peak Performance).avi"

mv "./Сезон 2/2x02 - Молчание в рассрочку (Where Silence Has Lease).avi" "./Сезон 2/2x02  Молчание в<font color


Пятница, 27-е августа

Хабрахабр: Метки / perl: Персональные блоги / Пишем свой плагин для Nagios на Perl

По мотивам Пишем свой плагин для Nagios Собственно, пых-пых это хорошо. Однако в данной статье хочу обратить внимание на CPAN-модуль Nagios::Plugin, который значительно облегчает как написание Nagios плагина на Perl, так и читабельность исходника. Пример — плагин для проверки работоспособности логина на удаленный FTP. В составе стандартных плагинов я такой функциональности не нашел, по этому быстренько и аккуратно написал вот что. check_ftp_login

Четверг, 26-е августа

Perl6.ru: Потребление памяти в Rakudo

Мориц Ленц сообщает о том, что на своих экспериментах по расчету физических явлений он заметил существенное снижение объема памяти, потребляемого Rakudo. Правки, устраняющие утечку памяти, — всего несколько строк, но зато теперь можно построить гигантскую картинку с изображением множества Мандельброта. Мориц показывает пример 1001 1001. Еще в мае более или менее быстро — и, что важнее, без падений — можно было построить картинку в 25 раз меньшую по площади.

Perl — Говнокод.ру: Perl / Говнокод #4108

Нашел тут в одном проекте. Теперь хочу поделиться с вами великолепным способом получения числа уникальных значений из таблицы. В этот способ научит вас использовать всю мощь перла. my $arr=[]; my $res=$dbr->selectrow_arrayref("SELECT DISTINCT obj.value FROM obj INNER JOIN ... INNER JOIN ... INNER JOIN ... INNER JOIN ... INNER JOIN ... WHERE ..... сложный, но не интересный SQL-запрос к наскольким таблицам под лям записей в каждом ..."); arm_ls.lsid IN ($ls_str) foreach $row (@$res) { push(@$arr,$row->[0]) if (!grep(/^$row->[0]$/,@$arr)); } my $sum=@$arr; return $sum;

what_me: Голосуем за Лукашенко!

[info] head_of_babulka обратил внимание на онлайн-голосовалку по теме ближайших президентских выборов в РБ.
Ну, просто так голосовать не интересно. Нужно подойти к делу творчески и сделать робота, который может зарабатывать проценты для любимого кандидата без отдыха круглые сутки.


Скрипт написан в качестве развлечения и содержит несколько изюминок. Чтоб его не забанили, он пытается прикинуться разными людьми, чистит куки, использует разные строки юзерагентов, разные прокси сервера, разбирает динамически генерирующиеся значения формы и даже скачивает картинку, которая, возможно, используется сервером для опознания тупых роботов.

#!/usr/bin/perl -l
# lu.pl  -- votes for Belarus!

use strict;
use warnings;
use WWW::Mechanize;

my $m = WWW::Mechanize->new();

# IE useragent strings my @ua = map m{(Mozilla/[^<]+)}g, $m->get('http://www.useragentstring.com/pages/Internet%20Explorer/')->content;

# proxies list my @pr = map /(\d+(?:\.\d+){3}:\d+)/g, map { m[^([^<]+);</script></head>$]m; my %h = split '=|;', $1; s/":"/:/g; s/\+(.)/$h{$1}/g; s/(\d+(?:\.\d+){3})[^:]+/$1/g; $_; } map { $m->get( sprintf 'http://www.samair.ru/proxy/time-%02d.htm', $_ )->content } 1 .. 10;

for my $i (0 .. @pr) { eval { # catch timeouts and inner deaths $m->cookie_jar({}); # clear cookies $m->agent( $ua[rand @ua] ); # random useragent string $m->proxy('http', "http://$pr[$i]/"); $m->get('http://election.in-by.net');

$m->content =~ m{http://[^/]+/form\.php\?opt=[^"]+} # iframe src or die; $m->get($&);

$m->content =~ m{http://[^/]+/image\.php\?opt=[^']+} # tripwire? or die; $m->get($&);

$m->back(); $m->content =~ m{selectElement\(this, (\d+)\);"></div></td>[^>]+>\S{9}\s\S{9}<} # Александр Лукашенко or die; $m->field('act', $1); $m->click;

$m->content =~ m{>\S{9} \S{9}</td>\s+<td class="r">([^%]+)%} or die; print "$i - $1 ($pr[$i])"; } };


koorchik's Perl blog: Инкремент такой инкремент : инициализируй числовую перменную как строку и потеряй 20% скорости :)

Среда, 25-е августа

Сообщество ru_perl в LiveJournal: HTML::TreeBuilder, русский язык

Доброго дня,

что можно прописать HTML::TreeBuilder'у, что бы он перестал кодировать русские буквы в HTML спецсимволы?

Что бы на выходе такого скрипта был "Тест", а не "&Ograve;&aring;&ntilde;&ograve;"

my $tree = HTML::TreeBuilder->new;
my $content = "Тест";
$tree->parse_content($content);
print $tree->as_HTML;


Спасибо.

XPoint.ru | Программирование::Perl::Разное: Чтение случайной строки из файла (ошибка в алгоритме)

уже которую неделю бьюсь над этим кодом.. никак не могу сделать так, чтобы он правильно работал.. требуется всего лишь брать случайную строку из файла, но перед этим возвращать указатель в начало файла, так как перед этим он может быть сдвинут функцией записи, но даже если использовать только этот код, он работает некорректно. что здесь не так? где ошибка? #!/usr/bin/perl -w our $pfraz; open $pfraz, "+< ./pfraz"; sub db_read_random_line { my $fh = $_[0]; my $line; seek $fh, 0, 0; rand($.) < 1 && ($line = $_) while <$fh>; return $line; } while(1){ sleep 1; print &db_read_random_line($pfraz); } файл pfraz должен содержать несколько строк текста

GneZdo: Mojolicious::Plugin::Dbi

Обновил Mojolicious::Plugin::Dbi  так как он оказался кому-то кроме меня нужен :)
Что добавлено:
- параметр 'on_connect_do' , например  'on_connect_do' =>[ 'SET NAMES UTF8'],  т.е. команды которые надо выполнить сразу после коннекта
- поддержку постоянных соединений, теперь при включении 'no_disconnect' => 1 соединение кэшируется и используется при следующих запросах
- параметр 'requests_per_connection'  - сколько реквестов обработает закешированное соединение перед тем как произойдет реконнект.

ИМХО хорошая альтернатива: Mojolicious::Plugin::DbixConnector
весьма все лаконично, что радует.

А вообще, я думаю, что все-таки разработчик Mojo добавит трУЪ плагин для работы с БД, потому как каждый для этих целей под Mojo пока стругает своего кривого буратинку и катает на велосипедике, подождем что будет.

P.S. Попутно обновил на CPAN свои плагины для Bootylicious

Вторник, 24-е августа

http://juick.com/sharifulin/891282

Получился вот такой модуль для отправки почты в Mojolicious – Mojolicious::Plugin::Mail github.com Предыдущие renderer-ы удалил, т.к. глючали и были без тестов. Можете тестировать :)

allframeworks / Perl: Их разделяет 10 лет

Вот коллега притащил такой раритет 1999 года =). Рядом последнее 5-ое издание 2009 года. Вот счетовод то =))) 10 конечно!

Понедельник, 23-е августа

Хабрахабр: Метки / perl: Конференции и Встречи / [Ссылка] Отчёт о конференции РИТ-2010

Несколько запоздалый, однако отчёт, о конференции "Российские интернет-технологии 2010", проходившей 12-14 апреля 2010 года. В не очень формальном стиле :) Главные темы "номера" — Perl 5 и 6 (хоть и без Вортингтона, "который очень любит beer/vodka и так далее"), UNIX, виртуализация, дата-центры и хостинги. А также Agile от Моего Круга и Afisha.ru, блиц-доклады, и бонус, врученный одному товарищу за скорость заказа билетов — живой карликовый кролик.

koorchik's Perl blog: Улучшаем документирование кода - текстовые диаграммы.

Хабрахабр: Метки / perl: Персональные блоги / Узкие места интерпретаторов

Эта заметка рассчитана на молодых программистов, которые уже какое-то время используют или только начинают использовать в работе интерпретируемые языки программирования, но пока еще не изучали принцип работы самого языка.

В наше время, в связи с потенциально не плохими зарплатами и офисного типа работой, программирование стало достаточно популярным среди молодежи. К тому же спросом пользуются достаточно не сложные для первоначального освоения языки программирования: Javascript, PHP, Perl, Python, Java, C#, Basic,… (как видно все они одного семейства — интерпретаторы). В результате появилось достаточно большое количество работников этой отрасли, которые специально программированию нигде не обучались. Требовался программист на язык “X”, купили книгу “X за 2 недели” и через 3 недели – мы уже пишем какой-то проект на “X”. А спустя несколько тысяч строк кода или после того, как база данных обросла реальными данными, проект начинает нещадно тормозить. Можно, конечно, ”пойти поиграть на барабанах”, пока железо дорастет до вашего проекта, но не всегда и не всех этот вариант устраивает.

Воскресенье, 22-е августа

Perl6.ru: perl6.ru

В интернете, за авторством Алексея Карманова, появился сайт perl6.su. Важно не пропустить страницу Charte situs со ссылками на заметки по отдельным моментам синтаксиса Perl 6.

Пятница, 20-е августа

Perl — Говнокод.ру: Perl / Говнокод #4044

/^([a-zA-Z0-9]+)([-_.]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]+[-_.]?)*[a-zA-Z0-9]+(?:\.[a-zA-Z]{2,6})$/

Александр Симаков — Perl: Создание PDF-файлов на Perl

allframeworks / Perl: Презенташка от ActiveState

Мета

Поиск

Участники

Список участников в формате OPML OPML

Добавить сайт

По-другому

Приборы

Rambler's Top100