понедельник, 20 сентября 2010 г.

mem #24

Область видимости переменных. Для управления видимостью используются слова my, our, local. Ограничивается видимость блоком {}, файлом или пакетом. Простой пример:
#!/usr/bin/perl
use strict;
my $q=0;
our $a=1;
our $z=555;
{
my $q="null";
local $a="five";
print '$q = ',$q,"\t\$a = ",$a,"\t\$z = ",$z,"\n--\n";
}
print '$q = ',$q,"\t\$a = ",$a,"\t\$z = ",$z,"\n--\n";
Прочитай скрипт, запусти, помедитируй. Всё ли понятно?

mem #23

Ворч, это для тебя, как для начинающего. Ну и для меня, склероз свой порастрясти...
Приём данных из формы, очень простой скрипт:
#!/usr/bin/perl
use CGI;
use strict;
my $q = new CGI;
my $q->import_names('R'); # импорт данных в пространство имён R
open my $f, ">q.txt"; # открываем файл для записи.
# и пишем данные полученные из формы,
# обращение к содержимому поля происходит так: $NameSpase::fieldname.
print $f $R::mytextarea1, $R::mytextarea2;

четверг, 16 сентября 2010 г.

mem #22

Задача недели - найти способ соединяться с MS Exchange, читать и записывать в его базу контакты.

понедельник, 13 сентября 2010 г.

...#...

Поздравляю всех с днём программиста!
CMS разрабатывается вяло. Пока сделано - управление новостями, частично фотогалереями и начата работа над форумами.

среда, 7 июля 2010 г.

mem #19

var email = 'test@mail.org'
if(!(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(email)))
alert('Invalid Email');

пятница, 18 июня 2010 г.

mem #17

普洱茶, Adrenaline Rush, глицин... Странные идеи лезут в голову. Совсем недавно решил написать свой CMS на Perl. Думаю активно использовать в нём AJAX и jQuery, так же необходимо сделать лёгкий вариант для lynx, links, w3m.

mem #16

Впаять 3G модем в netbook Asus EeePC 1005P.

понедельник, 19 апреля 2010 г.

mem #15

Media Access Control address (MAC address), Ethernet Hardware Address (EHA), hardware address, adapter address, physical address...
Под Linux, MAC address of a Network Interface Card (NIC) может быть изменён так:
$ ifconfig eth0 hw ether 00:01:02:03:04:05
или
$ ip link set eth0 address 00:01:02:03:04:05

вторник, 23 марта 2010 г.

mem #14

Написать эту заметку побудило прочтение статьи Легкий способ скачать ролик с Youtube.
Здесь я опишу некоторые полезные ключи, остальное можно найти в wiki на официальном сайте.

youtube-dl - маленькая платформонезависимая консольная прога для сливания роликов с youtube.com. Для её работы требуется python 2.х. На момент написания заметки доступна версия от 2010.03.13.

Пользоваться ей очень просто, в примере ролик скачивается в файл vid.flv:
youtube-dl -o vid.flv "http://www.youtube.com/watch?v=foobar"
Некоторые ролики требуют ввести логин с паролем, для этого предусмотрены ключи -о и -р:
youtube-dl -u login -p pass "http://www.youtube.com/watch?v=foobar"
Так же имеется возможность скачивать ролики требуемого качества. Для этого используются ключи -b или --best-quality - в наилучшем доступном качестве, -m или --mobile-version - мобильная версия ролика и -d или --high-def.

Ключ -i или --ignore-errors позволит скачивать видео несмотря на ошибки.

Опция -a или --batch-file позволяет скормить целый файл с адресами роликов. В файле должно быть по одному URL в строке.

Для того, чтобы случайно не затереть уже сохранённый ролик используется ключ -w или --no-overwrites.

Для докачивания ролика используется ключ -c или --continue, как в wget.

среда, 27 января 2010 г.

mem #13

Немного о теге <pre> ...
Этот тег создан для выделения форматированного текста. То есть, текста как есть. Текст внутри тега отображается со всеми пробелами и словами, выделяется моноширинным шрифтом. Теги внутри <pre> обрабатываются браузером как обычно.
Пример применения тега:
<pre>
текст     в     теге
ссылка внутри тега будет <a>ссылкой</a>
тег <br> будет самим собой,
но он тут не нужен
</pre>

результат будет таким:
текст     в     теге
ссылка внутри тега будет ссылкой
тег 
будет самим собой,
но он тут не нужен

четверг, 21 января 2010 г.

mem #12

Перевод грубый и приблезительный, пока не работал с этим модулем. Поработаю, перепишу.
НАЗВАНИЕ
  CGI::Ajax - перловый модуль для написания асинхронных веб приложений

СИНОПСИС
  use strict;
  use CGI;      # или любой другой CGI:: из handler/decoder
  use CGI::Ajax;
 my $cgi = new CGI;
  my $pjx = new CGI::Ajax( 'exported_func' => \&perl_func );
  print $pjx->build_html( $cgi, \&Show_HTML);
 sub perl_func {
  my $input = shift;
  # do something with $input
  my $output = $input . " was the input!";
  return( $output );
  }
 sub Show_HTML {
  my $html = <<EOHTML;
  <HTML>
  <BODY>
  Enter something: 
  <input type="text" name="val1" id="val1"
  onkeyup="exported_func( ['val1'], ['resultdiv'] );">
  <br>
  <div id="resultdiv"></div>
  </BODY>
  </HTML>
  EOHTML
  return $html;
  }
  Когда вы используете CGI::Ajax с приложением, оно отправляет собственный заголовок,
  можно его поскипать:
 my $pjx = new CGI::Ajax(
  'exported_func' => \&perl_func,
  'skip_header'   => 1,
  );
  $pjx->skip_header(1);
  
  print $pjx->build_html( $cgi, \&Show_HTML);
 *полнофункциональные примеры лежат в папке 'scripts/' дистрибутива*

ОПИСАНИЕ
  CGI::Ajax объектно ориентированный модуль предоставляющий уникальный механизм
  для использования perl асинхронно из HTML страниц с javascript.
  CGI::Ajax освобождает пользователя от написания большого количества кода,
  за исключением объединения экспортируемого метода с определеннм документом
  событием(таким как onClick, onKeyUp, и т.п.). CGI::Ajax так же хорошо 
  совмещается с HTML содержащим более сложный код javascript.

  CGI::Ajax поддерживает методы возвращающие один или множество
  результатов на страницу, и поддерживает возврат значений для множества
  DIV элементов на HTML странице.
  При использовании CGI::Ajax, URL для HTTP запросов GET/POST генерируется
  автоматически на основании вывода событий HTML и страница динамически
  обновляется получая данные из функций perl.
  CGI::Ajax поддерживает маппинг URL для своих функций, так что вы можете
  распределить код по нескольким скриптам.

  Кроме Class::Accessor, модуля используемого для генерации методов доступа
  CGI::Ajax, CGI::Ajax не требует установки дополнительных пакетов или системы
  управления контентом, и т.п.

  Мы добавили поддержку для других CGI handler/decoder модулей, таких как
  CGI::Simple или CGI::Minimal, но мы не можем протестировать их, так как
  работаем только с mod_perl2. CGI::Ajax проверяет наличие header() метода
  для объекта CGI и использует его. Если method() не доступен, он создаёт
  собственный минимальный заголовок.
  Мы стараемся свести генерируемый javascript к минимуму, но всё же предоставить
  пользователю разнообразные методы работы с CGI::Ajax. И ОЧЕНЬ мало javascript.

вторник, 12 января 2010 г.

mem #11

私は日本語を勉強し始めた

коряво как-то... что-то тут явно не так %)

mem #10

Exaile - приятный проигрыватель под GTK+. Умеет таскать из сети обложки и инфу об исполнителе.
Устанавливается как из пакетов, так и из исходников.

Из исходников проигрыватель собирается следующим образом (Debian/Ubuntu):
Для работы необходимо:
   * bzr
   * debhelper (>= 5)
   * python-dev
   * python-gtk2-dev
   * buildtools
   * gstreamer0.10-plugins-good
   * python-gst0.10
   * python
   * python-gtk2
   * python-glade2
   * python-dbus
   * python-pyvorbis
   * python-mutagen
   * python-pysqlite2 | python (>= 2.5)
   * python-elementtree | python (>= 2.5)
   * gstreamer0.10-plugins-base
   * intltool
Ставим:
$ sudo apt-get build-dep exaile
После выполнения необходимо убедиться в том, что python-mutagen установлен, иначе exaile будет выдавать ошибки.

Далее необходимо получить код из репозитория bazar:
Для версии 0.3.x development branch:
$ bzr checkout http://code.launchpad.net/exaile/0.3.x exaile03
Для версии 0.2.x stable branch:
$ bzr checkout http://code.launchpad.net/exaile/0.2.x exaile02
перейти в папку с исходниками и собрать их:
$ cd exaile0*
$ make
$ sudo make install
Обновление:
$ bzr update
$ make clean
$ make
$ make install
Взято из FAQ http://www.exaile.org/wiki/Downloading_and_Compiling
Get Exaile