4 ноября 2010 г.

Карл Фогель "Создание Свободного Програмного Обеспечения"

Карл Фогель книга "Создание Свободного Програмного Обеспечения" (русский перевод, неполный) http://producingoss.com/ru/index.html

97 вещей, которые должен знать каждый программист

Нашел переводы отличной статьи "97 вещей, которые должен знать каждый программист" ("97 Things Every Programmer Should Know").

16 октября 2010 г.

Разрыв соединения VPN в Ubuntu

Сталкнулся с такой проблемой: если в Ubuntu настраивать vpn соединение с провайдером (есть локальная сеть + выход в интернет по vpn) через "Connection manager", то после нескольких минут работы соединение разрывается. При чем это наблюдается только когда соединение используется (идет трафик), когда простаивает - держит.
Оказалось, что Connection manager делает не правильные настройки для моего провайдера. Решилось все путем добавления соединения vpn вручную.
Создал файл freedom в каталоге /etc/ppp/peers/ (предварительно настроив доступ к нему командой
chmod 747 freedom
).
Содержимое файла:
pty "pptp 192.168.149.1 --nolaunchpppd"
name USERNAME
user USERNAME
password "PASS"
defaultroute
replacedefaultroute
remotename PPTP
+chap
noauth
ipparam freedom
mtu 1300
,где: 192.168.149.1 - адрес сервера vpn моего провайдера (замените на свой или укажите url),
USERNAME - имя пользователя vpn (Ваш логин),
PASS - Ваш пароль.

Убеждаемся, что в файлах /etc/ppp/options, ~/.ppprc, /etc/ppp/options.ppp0 нет
незакомментированных параметров, которыми бы система могла затереть наши настройки. Если
есть - комментируем.

Поднимаем тестовое соединение VPN командой

pppd call freedom debug nodetach

Если есть необходимость запускать соединение от простого пользователя, добавьте в файл /etc/sudoers строку:
username compname = NOPASSWD: /usr/bin/pon, /usr/bin/poff
Соответственно, замените username и compname на имя вашего пользователя и его машины. Он сможет
запускать и прерывать соединение командами
sudo pon corbina
sudo poff corbina
Делаем ярлык на рабочем столе с командой: sudo pon corbina

Все. готово, работает и соединение не рвется.

23 августа 2010 г.

Мелодии для звонка, будильника, уведомления в системе Android (каждый раз забываю при перепрошивке):

Создайте в корне флэш-карточки следующие каталоги:

\media\audio\alarms для мелодий будильника
\media\audio\notifications для звуков уведомлений (СМС, почта, чат)
\media\audio\ringtones для звонков

27 июля 2010 г.

UML редактор NClass

Нашел UML редактор с открытым исходным кодом для C# - NClass
Cам редактор написан на C# и использует второй фреймворк.

15 мая 2010 г.

Проблема при обновлении до Ubuntu 10.04 LTS

Обновился я на днях до новой версии Ubuntu, все бы ничего, но пропали заголовки окон и при нажатии кнопки "свернуть все окна" вылетало сообщение о недоступности менеджера окон. У меня стоял Compiz. Начал копать форумы что и как и хочу поделиться полученным опытом.

Заметил, что после команды
compiz -- replace
заголовки окон возвращаются, но все нормально до первой перезагрузки.
Потом нашел информацию, которая мне помогла, оказывается вот что нужно сделать:

gtk-window-decorator --replace
compiz --replace
sudo apt-get install emerald

Оказывается подобные проблемы бывают из-за профилей, которые были в предыдущей версии и при установке с "нуля" они не возникают.
У меня после проведенных команд обнулились настройки многих программ (но не всех, в основном браузеры и торрент клиент), это минус, зато все стало как должно быть. Compiz работает как прежде, заголовки окон не слетают.

10 апреля 2010 г.

Добавление Меню в Android программу

Переведено мною отсюда.

Меню опций.

Меню открывается нажатием кнопки на устройстве MENU. При открытии, меню содержит первые шесть пунктов. Если в меню более чем шесть элементов, то пять из них добавляются в меню опций, а затем те, которые не могут поместиться в меню Icon выявляются в расширенном меню, с помощью пункта меню "еще..". Расширенное меню будет автоматически добавлено, когда существуют более шести пунктов.


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

При создании меню, система Android будет вызывать метод onCreateOptionsMenu(). Вам необходимо переопределить этот метод в своем Activity и добавить в теле метода собственные пункты Меню. Вы можете заполнить меню с помощью с помощью ресурсов, которые были определены в XML файле, или вызвав метод add() для каждого добавляемого элемента. Этот метод добавляет элемент меню, и возвращает новый объект MenuItem для вас. Вы можете использовать возвращенный MenuItem, чтобы задать дополнительные параметры, как иконка, клавиши быстрого доступа и другие параметры для данного элемента.

Есть несколько вариантов вызова метода add(). Как правило, вы будете использовать один, который принимает Itemid аргумент. Это уникальное целое число, которое позволяет однозначно определить нажатый элемент меню.

Событие при выборе элемента меню опций можно отловить в методе onOptionsItemSelected(). Этот метод передает вам пункт меню, который был выбран. Вы можете определить пункт, по Itemid, с помощью getItemId (), которая возвращает целое число, которое было установлено для элемента в методе add(). Как только Вы определите нажатый пункт меню, Вы сможете описать реализацию действий в Вашей программе.

Вот пример такой процедуры, в которой мы создаем меню и обрабатываем выбор пункта меню:
private static final int MENU_NEW_GAME = 0;
private static final int MENU_QUIT = 1;
/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, MENU_NEW_GAME, 0, "New Game");
    menu.add(0, MENU_QUIT, 0, "Quit");
    return true;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case MENU_NEW_GAME:
        newGame();
        return true;
    case MENU_QUIT:
        quit();
        return true;
    }
    return false;
} 

Добавление иконки.

Для добавления иконки к пункту меню необходимо вызвать метод setIcon() :
menu.add(0, MENU_QUIT, 0, "Quit")
    .setIcon(R.drawable.menu_quit_icon);