Hatred's Log Place

DON'T PANIC!

Jan 27, 2014 - 1 minute read -

PlantUML: параллельное выполнение в Sequence Diagram

Давно хотелось иметь в PlantUML возможно в Sequence диаграмме рисовать две параллельные ветки выполнения (на самом деле иногда больше, но хотя бы…).

И вот, случайно в последней версии нащупал такую команду:

par2
  ...
else
  ...
end

Т.е. при примерно таком коде:

@startuml
hide footbox

A++
par2
    A -> B ++
    B -> B ++
    return
    return
else
    A -> C ++
    C -> C ++
end
A--

@enduml

мы получим следующую картинку:

в общем, чего и хотелось.

Правда при таком подходе, если, допустим, A, B и C - разные потоки, то операции с A нужно корректно вставлять в одну из веток par2

PS в примере можно видеть различные операции типа ++ и -- найти их описание можно здесь: http://plantuml.sourceforge.net/incubation.html

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)

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