Saturday, November 28, 2009

Аналоги mysql команд для psql
































mysql psql
SHOW DATABASES l
USE database c database
SHOW TABLES dt
DESCRIBE table
(SHOW COLUMNS FROM table)
d table
SHOW CREATE TABLE table
SELECT DATABASE() SELECT CURRENT_DATABASE()

Thursday, November 19, 2009

Немного про good practices

И Perl, и Python допускают наличие хвостовой запятой в списках и словарях. Но в питоне эта фича может оказаться важнее.

Например, где то в коде есть tuple:


c = (
'Japan',
'United Kingdom',
'Greece',
'Albania',
'Brazil',
'Russia'
);
Редактируя файл, мне захотелось отсортировать страны, благо в vim-е это делается простым выделением и командой :sort. Получаем:


c = (
'Albania',
'Brazil',
'Greece',
'Japan',
'Russia'
'United Kingdom',
);

Случайно забыв про запятую, сохраняем файл.
Никаких нареканий со стороны интерпретатора это не вызовет, т.к. питон автоматически склеивает смежные строки.
IMHO, это некоторое расхождение с питоновским слоганом "Explicit is better than implicit."

В перле все проще - упираемся в ошибку "String found where operator expected".

Thursday, November 12, 2009

Некоторые факты о языке python

В последнее время накопилось большое число заметок о питоне. Решил сделать небольшой brain dump, в напутствие начинающим..

Sunday, November 8, 2009

Про интерполяцию в перле

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

Интерполяция имеет место быть и в следующих случаях:
  • print "$a[$i+1]";
  • print "$r->[1]";
  • print "$a[$f->()+1]";
  • print "@a[2..$f->()]";
Суммируя: операторы в отличие от переменных не интерполируются. За исключением случаев, когда интерполяция переменной требует значение от оператора, либо оператор представляет собой разыменование ссылки и за ним следует '[' или '{'.

По моему, неплохое средство обфускации кода :-)

P.S. Ссылка.