Thursday, October 29, 2009

LWP::UserAgent: обработка файлов на лету

Для того, чтобы обработать файл (например zip-архив) без предварительного сохранения, можно открыть контент как in-memory file:
my $response = $ua->get($url);

if ($response->is_success) {
open my $fh, '<', $response->content_ref or die "Open failed: $!";
# do smth with $fh
}
else { die $response->status_line }


Как видно из примера, в качестве 3-го аргумента open в данном случае передается ссылка на скаляр.

Данный прием также довольно удобно применять для построчной обработки текста, сохраненного в скалярной переменной.

Sunday, October 25, 2009

Мелочь, а приятно..

"ftp.mgts.by является официальным зеркалом debian для архитектур i386 и amd64, а так же проектов debian-cd, debian-security, backports.org и debian-volatile".

Соответственно, зеркало можно выбрать на этапе установки debian c netinst. При настроенном гостевом подключении к byfly скорость у меня была в районе 185 KB/s.

Thursday, October 22, 2009

FreeBSD и skype

Ставить skype на FreeBSD - это как-то противоестественно, но иногда приходится. Порт довольно геморройный, и практически всегда вылазят какие то грабли.

На этот раз, например, при запуске вместо нормального текста везде квадратики.

После долгих мытарств нашел фикс для kde4: тулзой qtconfig-qt4 можно  подобрать шрифт, с которым будет нормально отображаться текст (шрифты применяются в real-time).



Update: по состоянию на 2011-02-18, skype-2.0.0.72,1 -- последняя версия работающая под FreeBSD, причем инсталлятор более недоступен на сайте skype.com.

Его надо положить вручную в /usr/ports/distfiles и запустить установку командой:
make TRYBROKEN= install clean

После этого на 8.1 + KDE4 установился и запустился без проблем (!) Единственное дополнительное действие, которое понадобилось - указать записывающее устройство. По умолчанию стояло почему то cd, надо mic:
mixer -S =rec mic

Thursday, October 8, 2009

Perl: передача параметров при загрузке модуля

При загрузке модуля с помощью use, можно передать ему произвольные параметры:


package TestPackage;
use Other::Package 'param1', 'param2';

При этом вызывается метод import подгружаемого модуля, с переданными параметрами:


package Other::Package;
sub import {
my($class, @params) = @_;}
 
Может оказаться полезным, если надо инициализировать какие то переменные модуля.

perl segfault

Интерпретатор перла не идеален :-)

% perl -e '$x = []; push @$x, eval { $x = 1; return $x }'
Segmentation fault: 11

% perl -e 'print unpack ("p*", "1.2.3.4")'
Segmentation fault: 11

% perl -e 'sub foo { /(?{ return })/ } for (1..100) { foo }'
Segmentation fault: 11

Wednesday, October 7, 2009

Улыбнуло

Ссылко
Вкратце. Как инвертировать знак числа, примеры из жизни.

Вариант I: 

  1. private function opposite(number:Number):Number
  2.         {
  3.                 if (number < 0)
  4.                 {
  5.                         number = Math.abs(number);
  6.                 }
  7.                 else
  8.                 {
  9.                         number = -(number);
  10.                 }
  11.                 return number;
  12.         }
Вариант II:

  1. int x = numberToInvertSign;
  2. boolean pos = x > 0;
  3. for(int i = 0; i < 2*Math.abs(x); i++){
  4.    if(pos){
  5.       numberToInvertSign--;
  6.    }
  7.    else{
  8.       numberToInvertSign++;
  9.    }
  10. }
Вариант III (особо зачотный) :

  1. switch (i)
  2. {
  3.   case 1: return -1;
  4.   case 2: return -2;
  5.   case 3: return -3;
  6.   // ... etc, you get the proper pattern
  7. }
Правильный ответ (на всякий случай): return number * -1



Tuesday, October 6, 2009

До чего дошел прогресс

Обзавелся для работы ноутом Dell Vostro A860.
Как оказалось, для соединения его с другим компом вполне себе подходит прямой кабель (обжатый с двух сторон по стандарту EIA/TIA-568B).
И нафиг был изначально этот гемор с кроссоверами ?