20080730

shell from here

вот уж не думал, что придется еще когда-нибудь запускать windows. однако, пришлось...
чтобы не разыскивать каждый раз это решение, запишу-ка его здесь:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Command Prompt]
@="shell"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Command Prompt\command]
@="cmd.exe /k pushd %1"

это содержимое <файл с произвольным именем>.reg.
добавляет в контекстное меню каталога пункт "shell" (shell from here).

20080706

delphi form (dfm) со строками на русском

портирую сейчас в lazarus под linux приложение, написанное в delphi под windows.
в дельфийских формах (файлы с суффиксом dfm) надписи на русском представлены в таком примерно виде:
Caption = #1055#1086#1080#1089#1082
что не очень-то удобочитаемо.
для чего набросал скриптик на perl-е:
#!/usr/bin/perl -w
use Text::Iconv;
$conv=Text::Iconv->new("ucs-2be","utf-8");
sub aaa{
$a=$_[0];
$b=$a%256;
$c=($a-$b)/256;
return $conv->convert(chr($c).chr($b));
};
while (<>) {
s/((?:#\d{4})+)/"$1"/g;
s/#(\d{4})/aaa($1)/eg;
print
}
использовать его можно и просто как фильтр, и как самостоятельный обработчик файла:
cat файл.dfm | скрипт.pl | less
скрипт.pl файл.dfm | less
если Вам нужен результат не в utf-8 - подправьте соответствующую строчку. подходит все, что понимает iconv.

20080703

хитрое использование команды tee.

linux-администраторам (да и простым пользователям) временами (а иногда и частенько) приходится использовать конструкции такого типа:
$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

есть способ (не мной, конечно же, открытый) слегка сократить и упростить подобное:
$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward


p.s. заметку пишу исключительно для памяти. все это уже неоднократно советовалось в разных местах. даже, например, в википедии.

pmtu, mss и иже с ними. это когда часть сайтов не грузится.

тоже вот столкнулся с проблемой, когда некоторые сайты просто не грузятся.
у меня в данный момент adsl-подключение. питерский провайдер avangard.
размер mtu равен 1500 минус 8 байт на pppoe-заголовок, т.е. 1492 байта.
изменение mtu на интерфейсе ни к чему полезному не привело.
начитавшись примеров отсюда, решил поэкспериментировать с таблицей маршрутизации.
$ sudo ip route replace default via <шлюз> dev <интерфейс> window 1452

1452 - практически с потолка. просто вычел из 1492 еще 40 байт (размер стандартного tcp+ip заголовка, емнип).
отчасти помогло. кое-что начало загружаться.
дальше, видимо, можно продолжить в сторону других параметров - mtu lock, advmss, cwnd, initcwnd.
но это уже как-нибудь в другой раз.