понедельник, 23 января 2012 г.

Настройка отправки почты с локального Debian сервера через exim + gmail

Прикручивал некоторую функциональность на сайт, который развёрнут на моей локальной машине, и понадобилось проверить, в каком виде отправляются письма с сайта. А почтового сервера-то на моей машине и нету!

Воспользовавшись учёткой на гуглопочте и руководством в Debian Wiki, мне удалось всё настроить за ~5 минут, чего и вам желаю. Авторы руководства, большое вам человеческое спасибо.

Напомню, что в стандартной поставке Debian Squeeze (который уже я частично переделал на Wheezy) устанавливается MTA exim4, настроенный на исключительно локальную доставку почты.

четверг, 12 января 2012 г.

Видеодрайверы для Debian на Dell Inspiron N5110

После переезда на новый Dell Inspiron N5110 выяснилась неприятная новость: в нём установлены две видеокарты, работающие по технологии NVidia Optimus, и в Debian она официально не поддерживается. Все эти приятные вещи я узнал из поста на форуме убунтоводов насчёт NVidia Optimus.

Я отключил себе видеокарту NVidia, следуя рекомендациям robbyx.net (пункт #3), и буду следить за жизнью проекта Bumblebee, посвящённому реализации NVidia Optimus на Linux. Возможно, придётся даже включиться в разработку этого проекта, а то мне очень хочется быстрый OpenGL у себя на ноуте в Debian.

Программирование компьютерных игр в Common Lisp при помощи lispbuilder-sdl

Сегодня сбылась мечта идиота: нашёл пакет для графики в Common Lisp, с помощью которого можно рисовать игры с графикой и звуком. Это не GUI пакет с виджетами, это 2D/3D канва и инициализаторы для звука, джойстика и CDROM. Пакет называется lispbuilder-sdl, и он крут.

Как обычно, напомню для себя, как lispbuilder-sdl подключается в SBCL.

четверг, 5 января 2012 г.

Интернационализация MySQL 5.1

Сегодня меня вконец достала дефолтная настройка на latin1 в MySQL, и я пошёл курить маны. Хочется, естественно, перевести всё в utf8. Решается, как оказалось, всё тремя строчками в конфиге.

понедельник, 26 декабря 2011 г.

Фильтры в Битриксе

Сегодня, после года практики в Битриксе мне открылось поистине тайное знание.

Когда передаёшь в компонент имя переменной-фильтра через 'FILTER_NAME', Битрикс ожидает имя глобально доступной переменной. Там прямо в исходниках любого компонента можно увидеть вызов

global ${$arParams['FILTER_NAME']}
или, во всяком случае, аналог этого кода. А раз используется поиск переменной средствами ключевого слова global, то без шаманства можно забыть о таких интересных вещах, как динамическая генерация фильтра внутри объектов классов или вообще внутри любого lexical scope, отличающегося от глобального.

Сегодня же до меня дошёл смысл этого global. Фильтр надо просто сохранять как элемент массива $GLOBALS, вместе со всеми остальными глобальными переменными. Это, по-видимому, самый надёжный способ генерировать фильтр и передавать его имя в компонент.

Следующие две инструкции могут быть теперь вообще где угодно, как угодно глубоко внутри иерархии классов и/или стека вызовов:

$GLOBALS['similar_items'] = array(
 '=EXTERNAL_ID' => getSimilarItems($arResult)
);
$APPLICATION->IncludeComponent(
 "bitrix:catalog.section",
 "",
 Array(
...
  "FILTER_NAME" => 'similar_items',
...
 )
);

Я знаю, вы всегда мечтали хранить временные данные в глобальной области видимости, не правда ли?

Пиздец.

понедельник, 17 октября 2011 г.

Complex integration and Theta-functions in Haskell

Just posted two packages to the Hackage. My intentions to it was that from now everyone from Haskell community can simply google for "Haskell integration of complex functions" and It will be clear as a day that package complex-integrate provides them with needed functionality. Second package is a library with implementation of Theta functions. Hope it helps someone. Details below.

понедельник, 26 сентября 2011 г.

Дефис в названии базы данных MySQL

Кстати, а вы знаете, что если в MySQL в названии базы данных есть дефис, то вы просто так не сможете её удалить? %)


mysql> drop database xxx-dev;
ERROR 1064 (42000): You have an error in your 
SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax 
to use near '-dev' at line 1

Надо, оказывается, окружать название БД back-tick'ами:


mysql> drop database `xxx-dev`;
Query OK, 55 rows affected (0.13 sec)

Решение найдено в описании MySQL Bug #461. Создаются базы данных с дефисами в названии без проблем.