2012-02-21

Ubuntu и стандартные каталоги

По умолчанию в Ubuntu присутствуют несколько стандартных каталогов - Музыка, Изображения, Видео, Документы, Рабочий стол. При смене языка ОС предлагает переименовывать их. Вобщем, может возникнуть некоторая путаница, и захочется поправить самостоятельно системные пути к этим папкам. Они находятся в файле в домашнем каталоге. Правим:
gedit ~/.config/user-dirs.dirs
Получаем нечто такое:

XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Video"

Правим, как нам угодно. Красота.

Ubuntu 11.10 и parcellite - нет значка в трее

Так как трей уже не тот, приходится производить некоторые акробатические этюды. Итак, в консоли пишем да запускаем установку нужных пакетов:
sudo apt-get install parcellite dconf-tools
Это понятно, ставим parcellite и утилиту правки реестра конфигурации.
Жмем Alt-F2 и набираем dconf-editor. Там лезем в ветку desktop-unity-panel, там единственный параметр systray-whitelist, который определяет, каким приложениям можно в трей залезать. Добавляем туда нашего героя, т.е. дописываем в хвост
, 'parcellite'
жмем, Enter, перелогиниваемся, запускаем Parcellite - вот он, голубчик.

2012-02-13

Библейская программа: перевод епископа Кассиана

Собственно, вот ссылка на файл: http://dl.dropbox.com/u/6363795/Blog/kas.sqlite
Скачивайте, и копируйте в папку /usr/local/share/bible/modules/
Перезапускаете программу - и он в списке.

2012-02-02

PHP, кодировки и строковые функции


Время от времени возникает у разработчиков проблема - не желают работать стандартные функции strtolower, strtoupper, ucfirst. Особенно это актуально для сайтов, в которых есть файлы нескольких видов кодировок. Видел я решение самописное, вот такое:
strtr(
    $s,
    'йцукенгшщзхъфывапролджэячсмитьбюё',
    'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'
);
strtr(
    $s,
    'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ',
    'йцукенгшщзхъфывапролджэячсмитьбюё'
);
strtr(
    substr($s,0,1),
    'йцукенгшщзхъфывапролджэячсмитьбюё',
    'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'
).substr($s,1) ;

При использовании кодировки UTF-8 начинают сбоить и такие методы. С радостью обнаружил готовые функции, предназначенные для работы с многобайтными кодировками. Вы легко это найдете, но пусть хорошей информации будет побольше.
mb_convert_case($str, $mode [, $encoding ]);
$str - строка для обработки.
$mode может быть MB_CASE_UPPER (верхний регистр), MB_CASE_LOWER (нижний регистр) или MB_CASE_TITLE (первая буква в верхнем регистре).
$encoding может быть, например 'UTF-8'. Если не указывать, то вместо него будет использовано значение внутренней кодировки.

Есть укороченные варианты для MB_CASE_UPPER и MB_CASE_LOWER:
mb_strtolower($str [, $encoding]);
mb_strtoupper($str [, $encoding]);

P.S. Прошу не судить строго за бояны.

2011-11-15

Web-версия Evernote без рекламы


Для тех, кто пользуется сервисом облачных заметок Evernote (evernote.com) есть два варианта: бесплатный аккаунт и про-версия с регулярными взносами. Понятно, что платная предоставляет определенные плюшки, но меня они совершенно не убеждают расставаться с кровно заработанными, да и пользуюсь этим сервисом не настолько активно. К тому-же, для Linux существует только веб-версия.
Как оказалось, это не всегда плохо! Как ни крути, а в интернете шила в мешке не утаить, то есть код всегда на виду. Поэтому, для тех, кто пользуется, но не хочет смотреть рекламу, сей опус.

Устанавливаем, если не установлено, и регистрируемся:

Запускаем, логинимся, наблюдаем рекламу. Правой кнопочкой на нее кликаем, и видим класс элемента с рекламой, запоминаем:


Отправляемся на WebStore за дополнением к браузеру, которое даст нам возможность выполнять свой JavaScript код на избранных страницах:

Лезем в настройки этого плагина:


И вписываем для страницы веб-версии такой вот код (наверно, можно и получше, но так зато работает):

Сохраняем, перезаходим в веб-версию. Красота!


Чтобы скопировать, приведу код в текстовом виде:

var i=setInterval(function(){
var el=$('div.GHOV4EUDAB').parent();
if(el){
el.prev().css('bottom','0px').prev().css('bottom','35px');
el.remove();
clearInterval(i);
}
},1000);