Hatred's Log Place

DON'T PANIC!

Jan 16, 2014 - 1 minute read -

Прототипирование UI для мобильных приложений на бумаге

Люблю работать с бумажными носителями. Люблю гаджеты, облегчающие эту работу. И хоть я не пишу под мобильные платформы, но информация о средствах прототипирования пользовательского интерфейса для мобильных приложений с помощью бумаги меня заинтересовала. Итак:

  1. Блокноты для прототипирования: http://onapkin.com/shop/ удобны, но не обязательны 1. Ещё блокноты:
  2. Программа для склейки и анимирования: https://popapp.in/, там же: демонстрация работы.
  3. Статья на хабре про трафарет для iPhone: http://habrahabr.ru/post/209002/, трафареты для Android на сайте производителя: 1. http://www.uistencils.com/collections/frontpage/products/android-tablet-stencil-kit - для планшетов 2. http://www.uistencils.com/collections/frontpage/products/android-stencil-kit - для телефонов

Особнячком, русский магазин, который возит на заказ: http://moiprototip.ru/

Dec 22, 2013 - 2 minute read - linux

Wifi на Asus X551C

Не думаю, что проблема дистрибутивно-специфичная, но писать буду про Linux Mint 16.

Итак, имеем проблему: при загрузке с CD и уже в самой системе после установки у нас заблокирован Wifi:

user@user-X551CAP ~ $ rfkill list
1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: yes
2: asus-wlan: Wireless LAN
	Soft blocked: no
	Hard blocked: no
3: asus-bluetooth: Bluetooth
	Soft blocked: no
	Hard blocked: no
4: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no

Обращаем внимание на строку

Hard blocked: yes

для устройства phy0. Обычно такое бывает когда карта выключена или через BIOS или через переключатель корпусе ноутбука. В случае конкретной модели Asus это состояние должно переклчаться через Fn-F2. Да вот беда: не работает эта комбинация. Вызов acpi_listen молчит как партизан при нажатии этой кнопки.

Но самым шоком стало то, что после засыпания и просыпания карта включалась! Собственно это стало поводом к поиску. И… первым воркэраундом :)

Перебирая выводы команд lspci -nn, lsmod, изучил какие модули используются. Особо заинтересовали модули из серии wmi - Windows Management Instrumentation и, в частности, asus_nb_wmi отвечающий, судя по всему за трансляцию различных клавиатурных эвентов, и его опция wapf, которая, судя по интернетам, отвечает за поведение клавиш включения/выключения Wifi и Bt.

Итак, погуглив по интернетам, нахожу следующие ссылки:

  1. http://ubuntuforums.org/showthread.php?t=2173539
  2. http://ubuntuforums.org/showthread.php?t=2172434

В общем, вроде как у некоторых проблему решает. Забегая вперёд хочу отметить: wifi заработал со значением wapf равным единице, но сама клавиша Fn-F2 - нет. Пробовать начинал с 0. Беда в том, что просто перегрузка модуля не помогает, нужно или полностью перегружать модули для карты и всего сопутствующего или просто перегружать комп.

В общем решение: создаём файл /etc/modprobe.d/asus.conf следующего содержимого:

options asus_nb_wmi wapf=1

и перегружаем комп.

Отмечу, что ещё до этого решения я задал через параметры ядра (задал в /etc/default/grub.conf) следующие настройки:

GRUB_CMDLINE_LINUX_DEFAULT="... rfkill.master_switch_mode=2 rfkill.default_state=1"

Быть может они помогли в комплексе, но проверять WAPF без параметров для rfkill было уже лень.

Ссылки по теме:

Dec 4, 2013 - 1 minute read -

LyX и вёрстка в три колонки

Ничего необычного, используем пакет LaTeX multicols: http://tex.stackexchange.com/questions/78294/lyx-3-column-document Колонок может быть и больше :)

И на будущее нужно ознакомиться с LyX FAQ: http://wiki.lyx.org/FAQ/FAQ в частности, там есть информация как убрать дату из заголовка. Здесь же в совете номер 5 есть информация как копипастить таблицы из Open- и LibreOffice.

Dec 1, 2013 - 2 minute read - linux programming

Android SDK/NDK в Linux Mint

Просто последовательность действий - на память (брать из PPA не хотелось). Как качать NDK, SDK и Android Studio я расписывать не буду. Распаковку всего этого добра произвёл в ~/Android. Имена директорий привёл к виду (или переименованием или созданием необходимых симлинков):

  • android-sdk
  • android-ndk
  • android-studio

По сути, этот рецепт подходит для любого дистрибутива, в большинстве случаев будет отличаться только первый пункт.

Итак…

Необходимое

  1. Ставим OpenJDK: sudo apt-get install openjdk-7-jdk libswt-cairo-gtk-3-jni libswt-cairo-gtk-3-jni ant
  2. В ~/.profile или ~/.bashrc_profile прописываем:```bash export ANDROID_HOME=$HOME/Android/android-sdk export ANDROID_NDK=$HOME/Android/android-ndk

For compability

export NDK_HOME=$ANDROID_NDK export ANDROID_SWT=/usr/share/java export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK:$HOME/Android/android-studio/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ANDROID_HOME/tools/lib

  1. Переходим в **~/Android/android-studio/bin** и выполняем:```shln -s studio.sh android-studio```
  2. Добавляем следующие параметры в **studio.vmoptions** и **studio64.vmoptions** (предварительно сделайте резервные копии, пригодятся при обновлениях):```
-Dswing.aatext=true
  1. На этом шаге можно перелогиниться, вызвать android и поставить платформы, утилиты, потом запустить Android Studio и сделать необходимые настройки.

Опциональное

Ярлыки в меню

FIXME относительные пути к иконкам не воспринимаются, поэтому иконки не отображаются, только текст.

  1. Создаём файл: ~/.local/share/applications/android-sdk.desktop со следующим содержимым:```desktop [Desktop Entry] Encoding=UTF-8 Name=Android SDK Comment=Android Sofware Development Kit Exec=android Icon=~/Android/android-sdk/tools/apps/SdkController/res/drawable-xhdpi/ic_launcher.png Terminal=false Type=Application Categories=IDE;Development;
  1. Извлекаем иконку Android Studio: ```shunzip -o lib/resources.jar artwork/icon_AS_128.png``` Вызываем команду из корня android-studio
  2. Создаём файл: **~/.local/share/applications/android-studio.desktop**:```desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Android Studio
Exec=android-studio %f
Icon=~/Android/android-studio/artwork/icon_AS_128.png
Comment=Develop with pleasure!
Categories=Development;IDE;
Terminal=false
StartupNotify=true
StartupWMClass=jetbrains-android-studio
MimeType=application/x-extension-iml;

Автодополнение BASH

Автодополнение для команд android, adb, emulator, fastboot и repo.

  1. Идём в ~/Android
  2. Забираем последнюю версию скрипта (предполагаю, что git уже установлен):bashgit clone https://github.com/mbrubeck/android-completion.git
  3. Создаём файл ~/.bash_completion и помещаем в него:```bash . $HOME/Android/android-completion/android . $HOME/Android/android-completion/repo

Dec 1, 2013 - 1 minute read - linux

Infinality в Linux Mint & Ubuntu

Готовый PPA: https://launchpad.net/~no1wantdthisname/+archive/ppa описание там же.

UPD: ломает загрузку минта в графику к чертям собачьим. НЕ ИСПОЛЬЗОВАТЬ

UPD2: мужики нашли workaround: http://forums.linuxmint.com/viewtopic.php?f=208&t=136307. Не пробовал

UPD3: применил решение из UDP2, только поместил в более логичное место: ~/.profile. Система работает. А то смотреть без слёз на рендеринг шрифтов в QtCreator’е было нельзя.

UPD4: Сохраню тут для потомков и собственного удобства:

# move infinality-settings out of system profile
sudo mv /etc/profile.d/infinality-settings.sh /etc/infinality-settings.sh

# make execute by everyone
sudo chmod a+rx /etc/infinality-settings.sh

а уже вызов /etc/infinality-settings.sh добавить в ~/.profile

Хотя в той же теме на форуме, сказано, что исправлено в mdm (его вообще мог зафейлить любой косяк в /etc/profile.d/*): https://github.com/linuxmint/mdm/commit/ee1a28b3c295c283aa94b890658d78be25e31bb7 и доступно всё это в Mint 17.2 ‘Rafaela’. Альтернативной апдейту: отредактировать /etc/init/mdm.conf согласно патчу.

Nov 23, 2013 - 1 minute read - linux

LyX в Linux Mint и русский

Что бы в LyX начали сходу работать русский нужно поставить пакеты: texlive-lang-cyrillic и cm-super. Точнее даже не так: набивать тексты вы сможете сразу, а вот генерировать PDF - только после установки пакетов.

Nov 22, 2013 - 3 minute read - linux

Linux Mint Petra и встроенная ATI/AMD RS880 [Radeon HD 4250]

Внезапно, при логине в систему (иксы) выдалось, что рендеринг у меня софтовый. Хотя пакет с драйвером radeon стоял. Изучение /var/log/Xorg.0.log указало на то, что не получается загрузить модули ati и fglrx. При этом нет попыток грузить модуль radeon:

$ cat /var/log/Xorg.0.log  | grep "ati<br/>|radeon<br/>|fglxrx"
[   990.107] Build Operating System: Linux 3.2.0-37-generic x86_64 Ubuntu
[   990.107] Current Operating System: Linux gaz-work 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013 x86_64
	(++) from command line, (!!) notice, (II) informational,
	Using a default monitor configuration.
[   990.109] (=:simple_smile: Automatically adding devices
[   990.109] (=:simple_smile: Automatically enabling devices
[   990.109] (=:simple_smile: Automatically adding GPU devices
[   990.109] 	X.Org ANSI C Emulation: 0.4
[   990.113] Initializing built-in extension XVideo-MotionCompensation
[   990.114] (II) Module glx: vendor="X.Org Foundation"
[   990.114] (=:simple_smile: Matched ati as autoconfigured driver 1
[   990.115] (=:simple_smile: Matched ati as autoconfigured driver 3
[   990.115] (II) LoadModule: "ati"
[   990.116] (WW) Warning, couldn't open module ati
[   990.116] (II) UnloadModule: "ati"
[   990.116] (II) Unloading ati
[   990.116] (EE) Failed to load module "ati" (module does not exist, 0)
[   990.117] (II) Module vesa: vendor="X.Org Foundation"
[   990.117] (II) Module modesetting: vendor="X.Org Foundation"
[   990.118] (II) Module fbdev: vendor="X.Org Foundation"
[   990.118] (=:simple_smile: Matched ati as autoconfigured driver 1
[   990.118] (=:simple_smile: Matched ati as autoconfigured driver 3
[   990.119] (II) LoadModule: "ati"
[   990.120] (WW) Warning, couldn't open module ati
[   990.120] (II) UnloadModule: "ati"
[   990.120] (II) Unloading ati
[   990.120] (EE) Failed to load module "ati" (module does not exist, 0)

Почесав макушку, решил попытаться “помочь” серверу, подтолкнув его в нужном направлении. Для чего идём в /etc/X11 создаём каталог xorg.conf.d, а в нём файл radeon.conf (используя любой редактор на своё усмотрение) со следующим содержимым:

Section "Device"
    Identifier "radeon"
    Driver "radeon"
EndSection

Сохраняемся, перелогиниваемся, радуемся отсутствию предупреждения о софтовом рендеринге. Проверяем:

$ cat /var/log/Xorg.0.log  | grep "ati<br/>|radeon<br/>|fglxrx"
[  2082.177] Build Operating System: Linux 3.2.0-37-generic x86_64 Ubuntu
[  2082.177] Current Operating System: Linux gaz-work 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013 x86_64
	(++) from command line, (!!) notice, (II) informational,
[  2082.178] (**) |   |-->Device "radeon"
	Using a default monitor configuration.
[  2082.178] (=:simple_smile: Automatically adding devices
[  2082.178] (=:simple_smile: Automatically enabling devices
[  2082.179] (=:simple_smile: Automatically adding GPU devices
[  2082.179] 	X.Org ANSI C Emulation: 0.4
[  2082.183] Initializing built-in extension XVideo-MotionCompensation
[  2082.184] (II) Module glx: vendor="X.Org Foundation"
[  2082.184] (II) LoadModule: "radeon"
[  2082.185] (II) Loading /usr/lib/xorg/modules/drivers/radeon_drv.so
[  2082.219] (II) Module radeon: vendor="X.Org Foundation"
[  2082.236] (II) RADEON(0): Creating default Display subsection in Screen section
[  2082.248] (II) Module exa: vendor="X.Org Foundation"
[  2082.313] (II) Module fb: vendor="X.Org Foundation"
[  2082.313] 	ABI class: X.Org ANSI C Emulation, version 0.4
[  2082.313] (II) EXA(0): Driver registered support for the following operations:
[  2082.313] (II)         Composite (RENDER acceleration)
[  2082.313] (II) RADEON(0): Acceleration enabled

и

$ glxinfo |grep -i render
direct rendering: Yes
OpenGL renderer string: Gallium 0.4 on AMD RS880

До этого вместо AMD RS880 выводилось следующее:

$ glxinfo | grep -i render
direct rendering: Yes
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.3, 128 bits)

Собственно всё.

Nov 21, 2013 - 2 minute read -

Firefox и быстрый поиск

Все - не все, но многие знают, что в Firefox, Google Chrome и, вроде, Опере можно в свойствах закладки указать т.н. ключевое слово (keyword), набрав которое в адресной строке браузера и нажав Ввод перейдёшь по ссылке, на которую указывает данная закладка.

Удобно? Кому как. Но! У этого функционала есть ещё одно одно применение.

Дело в том, что в самом адресе закладки можно указать подстановочную последовательность (плейсхолдер, placeholder, уж не знаю как более корректно перевести это слово на русский язык) %s. На это место будет подставлен весь текст который будет введён после ключевого слова.

На пальцах. Допустим, у нас есть закладка, у которой ключевое слово g, тогда, если в адресной строке введём: g ябеда-корябеда солёный огурец

то вместо %s будет подставлено: “ябеда-корябеда солёный огурец”

Теперь чуете? Правильно! Мы можем вызывать какие-то URL с параметрами. Это общий случай, я же, в основном, использую это для поиска. К примеру, у меня такой набор (жирным выделены названия закладок):

  • Google Search - поиск в Google
    • Location: https://www.google.ru/search?q=%s
    • Keyword: g
  • Man pages search - поиск по unix man pages
    • Location: http://manned.org/browse/search?q=%s
    • Keyword: man
  • C++ Reference - поиск по сайту http://cplusplus.com
    • Location: http://www.cplusplus.com/search.do?q=%s
    • Keyword: cpp
  • Ohloh Code Search - отличный поиск примеров использования кода, да и вообще, возможных реализаций ваших идей
    • Location: http://code.ohloh.net/search?s=%s
    • Keyword: code
  • Wikipedia [rus] - поиск в русской Википедии
    • Location: http://ru.wikipedia.org/w/index.php?search=%s
    • Keyword: wpru

Да, в самом Firefox можно ключевые слова задать для существующих поисковых систем (в Search bar), но вручную там нельзя добавить произвольную (задав только URL для поиска), только установкой соответствующего расширения, которого может не оказаться. Плюс метод работает во многих браузерах, так что импортировав закладки, получите и работающий поиск, к которому привыкли.

В luakit это сделано прямо и ровно через технологию Search Engine. Пример можно посмотреть прямо в коробке в файле globals.lua ( или тут).

Nov 19, 2013 - 1 minute read - linux

ps2pdf и отрицательное смещение сверху

Если при преобразовании PS в PDF на выходе наблюдается отрицательное смещение (как бы часть листа срезана) сверху, то стоит попробовать явно задать формат страницы при преобразовании: ps2pdf -sPAPERSIZE=a4 input.ps output.pdf

Скорее всего это связано с тем, что преобразование идёт по пайпу и теряется информация формате листа входного документа и используется значение по умолчанию, которое, скорее всего - letter. Эксперимент, с явным заданием letter как формата, порождает файл со смещением, что косвенно подтверждает мою догадку.

Nov 18, 2013 - 7 minute read - programming c++

Эффект плазмы

Во многих системах есть хранитель экрана который показывает примерно следующее:
-PLASMA-ColorCycling.Gif

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

Nov 9, 2013 - 2 minute read - life

Владивосток: УК "Дальневосточный регион" и смена сантехники

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

  • В понедельник будем вызывать заново, т.к. течёт унитаз по эксцентрику, а сегодня ещё обнаружилась течь на месте стыка новой фановой трубы со стоячной. Из-за небольшой лужи, которая образовалась при пробных запусках, после проливки не заметил
  • Разводку делают не аккуратно, про обводы /для обхода труб/ узнал сам из интернет.
  • Не смонтрировали узел с счётчиками до начала кладки плитки /были онформированы/, в результате местер, кто делал ремонт неверно посчитал размер короба, как следствие - результат далёк от ожидаемого.
  • Стоимость при этом достаточно кусачая, и даже примерная смета отличается от списка работ на сайте компании.
  • Наша ошибка, не затребовали составление договора, акт выполненых работ сделан только в одном экземпляре, который, естественно, остался не у нас. Ни компания, ни сами мастера даже не предложили. Смета работ тоже не составлена.
  • Неверно посчитали материалы, как результат пришлось два раза дополнительно бегать покупать /для установки змеевика, унитаза/
  • Не позвали, когда прикручивали змеевик, в результате утопили в короб /ещё не смонтированный/, пришлось просить “выдвигать”, дырки на новом кафеле “приятно” дополняют внешний вид.

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

Ещё один камень в огород: на сайте есть телефон аварийной службы, позвонили им, на что они ответили, что текущая канализация, особенно после новой установки - не аварийный случай, ждите понедельника, а после работы этих сантехников сейчас два стояка /14 квартир/, сидят без холодной и горячей воды, так же до понедельника.

Сайт: http://www.dvregion.vl.ru

Oct 30, 2013 - 1 minute read -

Luakit и Readability.com

Чуть более года назад выложил свои конфиги для Luakit на гиториусе: https://gitorious.org/hatred-configs/luakit/

Помимо подстроек под себя, там же был реализован URI-rewriting. Правда использовал только для хабра, что бы адрес преобразовался по следующему правилу: http://habrahabr.ru/post/196966/ –> http://m.habrahabr.ru/post/196966/

дабы избавится от рекламы, флеша и лишнего форматирования.

Вчера же добавился функционал для сохранения страниц на сервисе отложенного чтения readability.com. Сделано полностью в виде отдельного модуля (в отличии от URI-rewrite). По умолчанию заданы следующие комбинации клавиш:

  • vv - смотреть страницу через readability
  • vs - сохранить для отложенного чтения
  • vg - открыть сайт readability.com в новой вкладке

У функционала “смотреть страницу через readability” внезапно оказалось одно интересное и полезное побочное свойство: просмотр страниц, попавших в немилость роскомнадзору.

Enjoy! :simple_smile:

TODO добавить функционал для открытия сайта через http://anonymouse.org/cgi-bin/anon-www.cgi/URL или:

Oct 21, 2013 - 1 minute read - programming

Big-endian и little-endian: шпаргалка

Big-endian Little-endian
Формулировка Старшие разряды (байты) - первые Младшие разряды (байты) - первые
Запись {{ }} M = \sum{i=0}{n} {A_i} * {B^i} = A_0 * B^0 + A_1 * B^1 + \cdots + A_n * B^n {{ }}
::: {{ }}B{{ }} - база системы счисления, для dec - 10, для hex - 0xFF или 256.

{{ }}A_0{{ }} - младший разряд, {{ }}A_n{{ }} - старший разряд
::: An, …, A1, A0 A0, A1, …, An
::: 1024 (dec), 0x0400 (hex)
dec 1, 2, 0, 4 4, 0, 2, 1
::: hex 0x40, 0x00 0x00, 0x40
Синонимы Network byte order
Motorola byte order
Intel byte order
VAX order
Использование Обычная для человека((Для письма слева-направо)) запись чисел (в том
числе шестнадцатиричных в C/C++ и других)
TCP/IP
PNG
Числа в памяти на x86 и некоторых других
USB
PCI