main

[info]d11he11


i-t-шные заметки

Teach Yourself Programming in Ten Years


Is perl dead ?
main
[info]d11he11
isperldead.com
Метки:

F5 - оружие крякера
main
[info]d11he11
Тестирование сайта (mod_perl) с помощью F5, параллельно запущен top:

top - 13:15:54 up 98 days, 22:30, 20 users,  load average: 142.30, 79.31, 34.24
Tasks: 327 total,   6 running, 320 sleeping,   0 stopped,   1 zombie
Cpu(s):  8.1%us,  2.6%sy,  0.0%ni,  0.0%id, 88.7%wa,  0.0%hi,  0.5%si,  0.0%st
Mem:   4016628k total,  3946704k used,    69924k free,     2568k buffers
Swap:  2104472k total,  2098296k used,     6176k free,    25028k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 5661 wwwrun    17   0  170m  93m 5808 D    2  2.4   0:01.01 httpd2-prefork
 5773 wwwrun    17   0  170m  94m 5808 D    1  2.4   0:00.98 httpd2-prefork
 5083 wwwrun    17   0  186m  93m 6428 D    1  2.4   0:06.38 httpd2-prefork
 6135 wwwrun    18   0  159m  93m 4544 D    1  2.4   0:01.68 httpd2-prefork
 5162 wwwrun    17   0  175m  96m 6184 D    1  2.5   0:01.41 httpd2-prefork
 5259 wwwrun    17   0  206m 119m 6504 D    1  3.0   0:20.75 httpd2-prefork
 5270 wwwrun    18   0  167m  93m 4892 D    1  2.4   0:01.30 httpd2-prefork
 5657 wwwrun    18   0  180m  98m 6424 D    1  2.5   0:03.64 httpd2-prefork
 5743 wwwrun    17   0  170m  98m 5808 D    1  2.5   0:02.37 httpd2-prefork
 6289 wwwrun    18   0  153m  85m 4044 D    1  2.2   0:00.49 httpd2-prefork
 8888 mysql     15   0  126m  14m 3876 S    0  0.4  20:14.83 mysqld
 5074 wwwrun    17   0  195m 111m 6452 D    0  2.8   0:13.65 httpd2-prefork
 5517 wwwrun    17   0  184m 101m 6428 D    0  2.6   0:04.78 httpd2-prefork
 5722 wwwrun    18   0  170m  99m 5744 D    0  2.5   0:01.57 httpd2-prefork
 5724 wwwrun    18   0  177m  95m 6208 S    0  2.4   0:01.24 httpd2-prefork
 5725 wwwrun    18   0  166m  94m 4888 D    0  2.4   0:01.41 httpd2-prefork
Метки:

Небольшая оптимизация работы с хэшами в перле
main
[info]d11he11
Часто используемая идиома - поиск уникальных элементов в массиве:
my @uniq = keys %{{ map{$_=>1} @list }};

Использование вместо "1" undef экономит некоторое кол-во памяти, в зависимости от количества элементов в исходном массиве (5.8.8):

$ perl -e 'my %x; $x{$_} = 1 for 0..1000_000; system "ps -ovsz $$"'
   VSZ
 75508
$ perl -e 'my %x; $x{$_} = undef for 0..1000_000; system "ps -ovsz $$"'
   VSZ
 71572
 
В 5.10 этого вроде не наблюдается, интересно почему..
Метки:

Борьба с тормозами в firefox
main
[info]d11he11
Довольно надоедливая временами фича в firefox - session store. С тремя рядами табов она начинает ощутимо подтормаживать, при этом процесс firefox-bin может отжирать 80-90% CPU.

По умолчанию сохранение сессии происходит каждые 10 секунд. Для изменения надо выставить параметр  browser.sessionstore.interval (миллисекунды) в число побольше, например 300000.  Или как вариант - постоянно закрывать ненужные в данный момент табы.
Метки:

Блоки бывают разные...
main
[info]d11he11
Блок в питоне - это кусок текста, который выполняется как одно целое. К блокам относятся модули, функции и классы. Ими же определяются области видимости переменных (а не привычными {}).
Т.е. если объявить переменную в цикле, она будет видна после его окончания:

l = ['a', 'b', 'c', 'd']
for i, j in enumerate(l):
    if j == 'c': break
print l[i] # c
Метки: ,

Автовивификация в перле
main
[info]d11he11
Из man perlref:
References can spring into existence when in an lvalue context. ... This process is called autovivification.

Однако там ничего не говорится про операторы, автоматически предоставляющие lvalue-контекст: foreach, grep, map. Пример:

$ perl -MData::Dumper -e 'use strict; @$a;'
Can't use an undefined value as an ARRAY reference at -e line 1.

$ perl -MData::Dumper -e 'use strict; 1 for @$a; print Dumper $a'
$VAR1 = [];
 
Инфа по теме.
 
Метки:

Присваивание в перле и С
main
[info]d11he11
В перл выражение с любым вариантом оператора присваивания (=, *=, x=, etc.) возвращает новое значение переменной в левой части, как и в С:
$a = $b = $c = 0;
В перле, однако, присваивание возвращает lvalue. Поэтому можно изменить переменную более 1 раза таким образом:
($temp -= 32) *= 5/9;
Метки:

svn: просмотр/воскрешение удаленных файлов
main
[info]d11he11
Периодически забываю, поэтому вот.Read more... )
Метки: ,

DVI vs DSub
main
[info]d11he11
Плюсы подключения LCD-монитора через DVI:
  • Более высокая четкость изображения (заметно при высоких разрешениях).
  • Улучшенная цветопередача.
  • Защищенность от наводок.
  • Кнопка автоподстройки изображения не нужна.
В свете этого комплектация многих современных 24" мониторов по дефолту VGA-кабелем выглядит как то странно...
Метки:

Python: функция super()
main
[info]d11he11

Функция super(), как правило, используется для вызова метода, который был бы вызван, если бы не был найден данный метод:
class A(object):
   
def __init__(self): print "A init"

class B(A):
   
def __init__(self):
       
print "B init"
       
super(B, self).__init__()

>>> x = B()
B init
A init
Функция возвращает прокси-объект, который делегирует вызовы методов нужным классам.
Порядок поиска методов такой же, как и в getattr(), но поиск не учитывает сам класс.
Метки:

Port forwarding
main
[info]d11he11
"Connecting to the external address of the firewall from a host on the LAN, does not mean the packets will actually pass through its external interface. The TCP/IP stack on the firewall compares the destination address of incoming packets with its own addresses and aliases and detects connections to itself as soon as they have passed the internal interface. Such packets do not physically pass through the external interface, and the stack does not simulate such a passage in any way."

Поэтому тестирование порт-форвардинга из локальной сети может не сработать. Есть и способы пофиксить.
Метки: ,

Настройка беспроводной сети в FreeBSD 8
main
[info]d11he11
В хэндбуке в настоящее время неточно описана настройка wifi для FreeBSD 8. В частности, вместо
ifconfig_ath0="WPA DHCP"
в rc.conf надо писать
wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP"

Из FreeBSD 8.0 Release Notes:

The wireless network support layer (net80211) now uses pseudo-interfaces named as wlanN instead of a device driver name like em0 directly. The wlanN interface is created by ifconfig(8) as an instance of the parent interface and used for actual communication similar to vlan(4), IEEE 802.1Q VLAN network interface. Note that multiple instances (to realize multiple BSSes with a single AP device, for example) can be created if the parent interface supports it.

UPD: Впечатления. В общем, ничего не изменилось - драйвера (ral, ath) по прежнему работают хреновенько, постоянно рвется коннект. Винда и линукс в таких же условиях сеть держат на ура.
Метки:

Темная сторона FreeBSD
main
[info]d11he11
Некоторые производители ОС проводят монопольную политику, и только FreeBSD это делает неосознанно (посредством багов в инсталляторе) :-)

Время от времени при установке FreeBSD на винт с установленной виндой (в первом разделе), каким то образом херятся загрузочная область этого раздела. В результате при загрузке выдается NTLDR IS MISSING. Причем, все виндовые файлы на месте. Т.е. их копирование туда не помогает ни разу. Установка grub тоже не помогает - он успешно находит виндовый раздел, но при загрузке та же фигня.

Мистика сцуко
Метки:

vimtutor
main
[info]d11he11
Отличный способ начать освоение vim - vimtutor. Это обычный шелл-скрипт, который запускает собственно Vim с копией туториала. Жаль, что он в свое время мне не попался на глаза :)

ЗЫ. Язык учебника можно задать параметром, e.g.: vimtutor ru. По умолчанию используется английский.
Метки:

SQL JOIN (и немного умных слов)
main
[info]d11he11
Join-ы функционируют коммутативно/ассоциативно. Т.о. порядок, в котором таблицы объединяются, не влияет на итоговый result set запроса. Однако, порядок объединения имеет огромное значение для эффективности выполнения запроса.

В mysql определением порядка объединения таблиц занимается оптимизатор запросов. Для указания явного порядка чтения таблиц можно использовать STRAIGHT_JOIN.
Метки:

UFS2 subdirectory limit
main
[info]d11he11
UFS/UFS2, ext2/ex3 ограничивают число папок в отдельно взятой папке значениями 32767 и 32000 соответственно.

Это легко проверить имея одну из этих файловых систем:

mkdir tmp; cd /tmp;
for i in $(seq 32767); do mkdir $i; done
...
mkdir: 32766: Too many links
mkdir: 32767: Too many links

(Директория всегда имеет два дефолтных линка: '.' и '..').

Кстати, в ext4 лимит увеличен до 64000.

Аналоги mysql команд для psql
main
[info]d11he11
SHOW DATABASES\l
SHOW TABLES\dt
DESCRIBE TABLE
(SHOW COLUMNS FROM table)
\d table
SHOW CREATE TABLE table-
Метки: ,

Немного про good practices
main
[info]d11he11
И Perl, и Python допускают наличие хвостовой запятой в списках и словарях. Но в питоне эта фича может оказаться важнее.
Метки: ,

Некоторые факты о языке python
main
[info]d11he11
В последнее время накопилось большое число заметок о питоне. Решил сделать небольшой brain dump, в напутствие начинающим..

Read more... )
Метки:

Про интерполяцию в перле
main
[info]d11he11
Для "интерполируемых" конструкций (например, qq{}, qx{}, m{}, etc.) переменные, которые начинаются с "$" или "@" интерполируются. Так написано в man perlop. Но, есть и интересные детали..
P.S. Ссылка.

Метки:

Home