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

Teach Yourself Programming in Ten Years

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-
Tags: ,

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

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

Read more... )
Tags:

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

Tags:

LWP::UserAgent: обработка файлов на лету
main
[info]d11he11
Для того, чтобы обработать файл (например 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 }


Tags:

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

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

Tags:

FreeBSD 7.2 + skype = вынос мозга
main
[info]d11he11
Блин, каждый раз при установке skype на фряху вылазят какие то грабли. Imho это самый геморройный порт из всех 20773.
На этот раз при запуске вместо нормального текста везде квадратики.

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

+1
main
[info]d11he11
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

-- Antoine de Saint Exupéry

Perl: передача параметров при загрузке модуля
main
[info]d11he11
При загрузке модуля с помощью use, можно передать ему произвольные параметры:

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

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

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

perl segfault
main
[info]d11he11
Интерпретатор перла не идеален :-)

% 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
Tags:

Улыбнуло
main
[info]d11he11
Ссылко
Вкратце. Как инвертировать знак числа, примеры из жизни.

Вариант 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




Firefox без мышиной возни
main
[info]d11he11
Несколько полезных сочетаний клавиш для firefox (FreeBSD):

  • Перейти к адресной строке: Ctrl+L или Alt+D или F6
  • Перейти к строке поиска: Ctrl+K
  • Назад: Alt+Left
  • Вперед: Alt+Right
  • Открыть ссылку в новом окне: Shift+Enter
  • Открыть ссылку в новой вкладке: Ctrl+Enter
  • Открыть адрес/результаты поиска в новой вкладке: Alt+Enter
  • Перейти к следующей вкладке: Ctrl+Page Down
  • Перейти к предыдущей вкладке: Ctrl+Page Up
  • Исходный код страницы: Ctrl+U


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

mysql: pager
main
[info]d11he11
Часто пользуюсь консольным клиентом mysql. Недавно обратил внимание на команду pager, которая позволяет отправить вывод любой программе.

И снова о языках программирования
main
[info]d11he11
The purpose of most computer languages is to lengthen your resume by
a word and a comma.

--- Larry Wall

Zen of Python and Perl mantras
main
[info]d11he11
Знакомство с питоном как правило начинается с "The Zen of Python":

$ python -c 'import this'
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

 
Для сравнения, несколько Perl-овых слоганов. )
Может что-то забыл.
ЗЫ. Editor в LJ на редкость у%бищный.
Tags: ,

Парадокс?
main
[info]d11he11
Для того, чтобы действительно хорошо программировать на Perl, к примеру, мало просто сидеть и строчить Perl.
Надо бы еще ознакомиться с С, Python, etc. (чем больше, тем лучше).

Иными словами, важно быть разносторонним программистом. Зная о подходах к решению проблемы в других языках, можно их приспособить к нужному языку.

Очередная перловая задачка
main
[info]d11he11
Задача простая: есть набор объектов (e.g. баннеров), из которого надо рандомом выбирать N-ное число объектов для показа на странице. Но. При выборке надо учитывать "вес" каждого баннера - некоторое целое число.Read more... )
Tags:

bash prompt с человеческим лицом
main
[info]d11he11
Давненько я не твикал свой bash prompt. Вот недавно увидел прикольную фичу.

Home