Отступы в питоне

При использовании вима во время написания программ на питоне может быть масса проблем, связанных с отступами. В принципе это может лечиться установкой соответствующих плагинов, но если нет желания тратить время на это, то стандартизировать отступы можно таким набором команд в .vimrc
{{{ line=1 lang=vim
autocmd BufRead,BufNewFile *.py set expandtab
autocmd BufRead,BufNewFile *.py set tabstop=4
autocmd BufRead,BufNewFile *.py set shiftwidth=4
}}}

Если же уже имеется некоторый код, в котором перемешаны табуляции и пробелы, то привести всё к унифицированному виду (с учётом того, что нужные строки уже прописаны) можно командой

{{{ lang=vims line=1
:%retab
}}}

Разделение строки на составляющие в шелле

Во многих языках программирования есть удобная команда split, которая позволяет разбить строку на составляющие. Для осуществления этой операции в шелле, есть удобная утилита tr, с помощью которой можно делать то же самое. Этим, например, можно пользоваться чтобы преобразовать содержимое переменной $PATH к читабельному виду

{{{ lang=bash line=1
> echo $PATH | tr “:” “\n”
/usr/local/bin
/usr/bin
/bin
/opt/bin
/usr/games/bin
}}}

Первый аргумент (в данном случае “:”) это литера которую нужно заменить, второй аргумент это литера на которую нужно заменить. В данном случае символ-разделитель отдельных элементов $PATH, заменяется на символ перевода строки, что и приводит к нужному результату.

Полное копирование в zsh

Если пытаться скопировать содержимое директории в шелле в какую-либо другую директорию, то могут возникнуть проблемы, связанные с наличием скрытых файлов, то есть файлов, начинающихся со знака точки (‘.’). То есть, если выполнить следующую серию команд:

{{{lang=bash line=1
> cd /tmp
> mkdir a
> mkdir b
> touch a/a
> touch a/b
> touch a/.c
> touch a/.d
}}}

то в директории a будут находиться скрытые файлы. Попытка “в лоб” скопировать содержимое этой директории к успеху не приведёт

{{{lang=bash line=1
> cp a/* b
2 files ( 0,0 KiB) copied in 0,0 seconds ( 0,0 KiB/s).
> ls -al b
a b
> ls -al a
.c .d
}}}

Как видно, в директорию b скопировалось всего два файла. Это связано с тем, как zsh интерпретирует знак ‘*’, он не расшифровывает его в скрытые имена файлов. Конечно, эту проблему можно обойти в два копирования

{{{lang=bash line=1
> cp a/* a/.* b
4 files ( 0,0 KiB) copied in 0,0 seconds ( 0,0 KiB/s).
}}}

но гораздо более изящным является следующий способ
{{{lang=bash line=1
> cp a/*(D) b
4 files ( 0,0 KiB) copied in 0,0 seconds ( 0,0 KiB/s).
}}}

Модификатор (D) указывает zsh, что при раскрытии символа ‘*’ необходимо учитывать также и скрытые файлы.

Ошибка работы Postgres при использовании MediaWiki

В MediaWiki есть поддержка работы с postgreSQL, однако к сожалению эта поддержка работает достаточно плохо, и по всей видимости разработчики не всегда корректно проводят миграцию базы при изменении версии MediaWiki, из-за этого у меня возникала достаточно странная ошибка о невозможности закончить запись в базу данных.

Решение проходило в несколько шагов.
1. Необходимо включить поддержку дебагирования результатов работы wiki. Необходимо в самый конец файла LocalSettings.php дописать следующие строчки
{{{ lang=php line=1
error_reporting( -1 );
ini_set( ‘display_errors’, 1 );
$wgShowSQLErrors = true;
$wgDebugDumpSql = true;
$wgShowDBErrorBacktrace = true;
}}}
2. После этого wiki начнёт показывать дамп ошибки. В моём конкретном случае выяснилось, что неправильно настроен сиквенсер на таблице externallinks. Проблема легко решилась командами
{{{ lang=sql line=1
ALTER SEQUENCE externallinks_id_seq RENAME TO externallinks_el_id_seq;
ALTER TABLE externallinks ALTER COLUMN el_id SET DEFAULT nextval(‘externallinks_el_id_seq’::regclass);
}}}
3. В конце необходимо не забыть закомментировать строчки, которые показывают дебаг, в противном случае сайт могут сломать.

Продвижение инди игр

Интересная статья о том, как продвигать свою игру за 0 долларов. Много полезных ссылок, жаль только, что это всё ориентация на западную аудиторию, как это выглядит в России не очень представляю, но полагаю, что заметно хуже.
http://www.gamasutra.com/blogs/MarcMcCann/20140702/220096/A_small_guide_to_getting_your_PC_game_known__for_0.php