barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

суббота, 9 июля 2011 г.

Переключение раскладок в XFCE

В XFCE оказывается также беда с раскладками, что и в LXDE (http://barbitoff.blogspot.com/2011/06/lxde.html). Решается также, вызовом из консоли:
setxkbmap -option grp:switch,grp:alt_shift_toggle us,ru
Аналога etc/xdg/lxsession/LXDE/autostart для XFCE не нашел, поэтому зашел Настройки -> Диспетчер настроек XFCE -> Сеансы и Запуск -> Автозапуск приложений -> Добавить, куда и вставил написанную выше команду.
Ну или можно руками положить файл с расширением .desktop и любым именем в ~/.config/autostart со следующим содержанием:
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=keymap
Comment=
Exec=setxkbmap -option grp:switch,grp:alt_shift_toggle us,ru
StartupNotify=false
Terminal=false
Hidden=false

Логи сервлетов Tomcat

Логи, записываемые сервлетами (вызовом config.getServletContext().log("...")), выполняемыми Apache Tomcat, помещаются в /var/log/tomcat6/ в файлы с именами вида <vhostName>.<yyyy-mm-dd>.log (например, localhost.2011-07-09.log).

Адрес административной панели Apache Tomcat в Debian Squeeze

Для доступа к административной панели Tomcat, установленного из репов Debian, во-первых, нужно установить пакет tomcat6-admin. После этого, необходимо добавить пользователя с ролью "manager", добавив в файл /etc/tomcat6/tomcat-users.xml строчку вида:
<user username="iammanager" password="mypass" roles="manager"/>
Теперь под этим пользователем можно зайти по адресу (предварительно перезапустив Tomcat):
http://localhost:8080/manager/html/
Для доступа к панели управления хостом (host-manager), необходима роль "admin", т.е. в /etc/tomcat6/tomcat-users.xml необходимо написать следующее (если Вы хотите, чтобы пользователь iammanager был не только "manager", но и "admin"):
<user username="iammanager" password="mypass" roles="manager,admin"/>
Теперь можно войти и в панель управления хостом по адресу:
http://localhost:8080/host-manager/html

четверг, 7 июля 2011 г.

Редактор с подсветкой синтаскиса ActionScript под Linux

От одной только подсветки синтаксиса толку конечно мало, но бывает нужна именно она (просто посмотреть какой-нибудь файлик). Нашел замечательную вещь - Geany (в репозитории Debian присутствует) - не просто подсвечивает синтаксис, но вообще является IDE (компиляторов правда он не включает, их нужно подключать отдельно). Т.е. для того же ActionScript он показывает классы, методы и члены класса (намешал правда все в кучу - и члены класса, и локальные переменные в методах, так что не очень юзабельно).

воскресенье, 3 июля 2011 г.

Регистронезависимое сравнение строк в SQLite

По-умолчанию сравнение строк в SQLite - бинарное (в отличие от MySQL). Есть несколько вариантов сделать его регистронезависимым:
1) добавив COLLATE NOCASE после оператора сравнения: ... WHERE a = b COLLATE NOCASE
2) добавив COLLATE NOCASE в объявление столбца таблицы, если для него всегда должно использоваться регистронезависимое сравнение (однако, это значение может быть переопределено в конкретном запросе установкой соответствующего COLLATE):
CREATE TABLE somename(
...
d VARCHAR(20) COLLATE NOCASE
...
)

суббота, 2 июля 2011 г.

AUTO_INCREMENT в SQLite

В отличие от MySQL, в SQLite автоинкрементный первичный ключ должен задаваться следующим образом:

id INTEGER PRIMARY KEY AUTOINCREMENT

т.е. "INTEGER" целиком (а не INT), большими или маленькими буквами, и AUTOINCREMENT без "_" как в MySQL. Если написать как в MySQL, то поле вообще не становится ключевым, и если его пропускать в INSERT`ах, оно будет пустым, и никаких ошибок при этом возникать не будет. При этом роль ключа всё равно будет выполнять 64-битный псевдостолбец ROWID.

пятница, 1 июля 2011 г.

Fancybox и Blogspot

В интеграции Fancybox в блог на платформе Blogspot есть одна весомая проблема: fancybox предполагает размещение всех своих файлов (3 js, 1 css и аж 20 картинок) в каком-либо каталоге. На платформе блогспот такая возможность не предусмотрена. Поэтому приходится делать следующее:
  1. Во-первых, для работы Fancybox нужен jQuery. Т.к. библиотека jQuery доступна сразу на нескольких сайтах (http://code.jquery.com/jquery-1.6.1.min.js, https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js), то можно просто включить ссылку на неё в шаблон (Дизайн -> Изменить HTML -> Добавить <script language='JavaScript' src='http://code.jquery.com/jquery-1.6.1.min.js' type='text/javascript'/> в head).

  2. Со скриптами Fancybox (сам fancybox и необходимые для эффектов и переключения фотографий колесом jquery-плагины easing и mousewheel) можно поступить по-разному. Во-первых, можно вставить их аналогично п.1 в шаблон, только уже непосредственно, открыв тег <script> и вставив исходный текст туда. Но мне, например, сам Fancybox, в отличие от jQuery, был нужен только в одном единственном посте (точнее, странице), поэтом я открыл <script language="javascript" type="text/javascript"> в самом посте и вставил текст библиотек туда, чтобы не загружать шаблон.

  3. Теперь нужно разобраться с картинками. Если нет своего хоста, куда можно их положить, проще всего пожалуй будет залить их на blogspot (создать новое сообщение, там перейти в "Изменить Html", где нажать на "Добавить изображение" и методично залить все 20 картинок. В итоге в теле сообщения появятся теги с картинками, из них нам нужны только ссылки (вида http://1.bp.blogspot.com/-JVCSBJ0vUyQ/Tg ... ). Теперь открываем css Fancybox`a, и заменяем там все ссылки на картинки (url(*.png) и AlphaImageLoader(src='*.png')) ссылками на только что залитые на blogspot картинки.

  4. Все, css готов к вставке в блог. Идем в Дизайн -> Дизайнер шаблонов -> Дополнительно -> Добавить CSS, куда и вставляем отредактированный в п.3 код. (ну или можно вставить его в тег <style> в html-коде шаблона).

  5. Все, fancybox готов к использованию в постах блога.
UP от 08.08.2012: уже не помню, про какую версию Fancybox я писал этот пост, но с текущей версией (2.0.6) все гораздо проще: картинки там всего 3 (blank.gif, fancybox_loading.gif и fancybox_sprite.png), что порядком упрощает задачу.