автоповорот екрана для linux

чорнова версія скрипту для автоповороту екрана між портретним та пейзажним режимами для linux — працює.

запуск:

tabletizer --cont

якщо не вказати параметр --cont, скрипт відпрацює один раз і завершиться; --cont [інтервал] запускає циклічне опитування акселерометра зі вказаним інтервалом в секундах (за замовчуванням 1 с).

виявилося, що гістерезис для повороту все ж таки має враховувати всі три осі, а не лише x, як я собі гадав на початку.

залежностей мінімум: xrandr, xinput, grep, sed. перевірено лише на aspire r13 (r7-371t) з arch linux (manjaro kde), але і на інших «трансформерах» та під іншими дистрибутивами теж має працювати (можливо, з невеликими модифікаціями), якщо встановлено відповідні драйвери для linux industrial i/o.

можуть бути вади, пов'язані з кількома моніторами чи робочими просторами (як в kde) — поки що не мав часу все перевірити.



в планах на колись (коли буде натхнення):
  • «причесати» код, особливо в частині перемикання (гістерезис);
  • додати опцію відкривання екранної клавіатури;
  • позбутися залежності від sed (малесенький фрагмент, що я запозичив готовий, треба переписати).
екранна клавіатура onboard досить бідна на опції командного рядка… але відкривати та закривати її програмно таки можна — за допомогою повідомлень dbus.

відкриваємо:

onboard && dbus-send --type=method_call --print-reply --dest=org.onboard.Onboard /org/onboard/Onboard/Keyboard org.onboard.Onboard.Keyboard.Show > /dev/null

"onboard &&" на початку — простіше, ніж перевіряти, чи програму вже запущено.

закриваємо:

dbus-send --type=method_call --print-reply --dest=org.onboard.Onboard /org/onboard/Onboard/Keyboard org.onboard.Onboard.Keyboard.Hide > /dev/null

перемикаємо (toggle):

dbus-send --type=method_call --print-reply --dest=org.onboard.Onboard /org/onboard/Onboard/Keyboard org.onboard.Onboard.Keyboard.ToggleVisible > /dev/null
проблему випадкового монтування сенсорів вирішив: нова версія скрипта test_sensors самотужки шукає потрібний сенсор у теці /sys/bus/iio/devices:



все готово для збирання докупи скрипта автоповороту екрана.

сенсори та linux (продовження)

невеликий проміжний підсумок експериментів з сенсорами на aspire r13: linux (в моєму випадку arch під капотом manjaro) від початку має необхідні драйвери для підсистеми industrial i/o та дає доступ до їх відгуків через дерево підтек і текстових файлів:

/sys/bus/iio/devices/
└ iio:device0/             # магнетометр
  └ ...
└ iio:device1/             # датчик нахилу?
  └ ...
└ iio:device2/             # датчик кутової швидкості?
  └ ...
└ iio:device3/             # акселерометр
  ├ in_accel_x_raw         # вісь x: кут нахилу в площині екрана
  ├ in_accel_y_raw         # вісь y: кут нахилу екрану на себе/від себе 
  ├ in_accel_z_raw         # ?
  └ ...
└ iio:device4/             # ?
  └ ...
└ iio:device5/             # сенсор освітлення
  ├ in_illuminance_raw     # рівень освітленості (підозрюю, що в десятих люкса)
  └ ...

при цьому сам manjaro ніяк ці дані не використовує: вочевидячки, дистрибутив просто не призначений для пристроїв-трансформерів чи планшетів.

тож я накидав невеликий (і дуже чорновий) скрипт оболонки, котрий інтерпретує дані від акселерометра і сенсора освітлення (можливо, поки що не дуже коректно) і дозволяє погратися з ними — себто, покрутити ноутбуком на всі боки й спостерігати, як міняються показники:



що далі? зібрати докупи три різних скрипти, що вже маю:
  • універсальний повертач екрану/тактильного екрану
  • перемикач режиму (пейзаж/портрет)
  • скрипт інтерпретування сенсорів…
…у один автоматичний перемикач режиму ноутбук/планшет залежно від нахилу. отже, як каже один добрий сусіда наприкінці кожного допису — не перемикайтеся =)

поновлення (2018-12-22): халепа! під час завантаження сенсори монтуються до тек device0...device5 суб'єктивно випадковим чином… себто  після перезавантаження акселерометр опинився в теці device5 замість device3… себто треба шукати спосіб динамічно визначати, куди який сенсор змонтовано.
на продовження давнього допису:

lsmod | grep "^hid_sensor"

на aspire r13 видає вельми цікаві штуки: акселерометр, компас, гіроскоп, датчик освітлення (als)…

інша цікавинка:

udevadm info --export-db | grep -C 7 hid_sensor

треба гуглити, як до цього всього дотягнутися зі скрипта оболонки…

поновлення (21 грудня 2018): здається, знайшов…

watch -n 1 cat /sys/bus/iio/devices/iio:device3/in_accel_x_raw

показує посекундно кут нахилу ноутбука навколо поздовжньої осі. кодування, схоже, таке: значення 1—1'000 кодують нахил за годинниковою стрілою, а 64'536—65'535 (насправді це від'ємні 16-бітні цілі, старший біт 1) — нахил проти годинникової стрілки.

залишилося «наскриптувати» простенький сенсор, котрий запускатиме поворот екрану (цю частину вже маю) при нахилі на ±800—1000 за цією шкалою — себто приблизно в портретну орієнтацію.

задачка на інший день.

на баштані спека!

за вікном сьогодні сонячно і мінус 9°, але на баштані — спека!

це я «залип» на exercism.io — воно ж азартне, як не знати що! при цьому змушує думати й учитися.

приміром, вправа на підрахунок очок за слова для scrabble? перша версія використовувала пошук у масиві: алгоритм, який можна було б застосувати колись до якоїсь складнішої задачі:



але навіщо?! підглянув до чужих розв'язків, і переробив у значно простіший та читабельніший варіант з одним case:



так можна й навчитися =)

давно шукав щось подібне: exercism

ось таке знайшлося на linux.org.ua:

exercism.io

здається, аби лише завантажити й налаштувати цей курс, вже треба бути програмістом…

…але зате далі цікаво. щоправда, це самонавчання, по суті: жодних навчальних матеріалів (а навіщо, коли є tldp.org?), суто завдання і автоматизовані тести для перевірки. менторів поки що не бачив =)
новорічну ялинку прикрасили… тепер прикрасимо ping?


про prettyping вичитав на linux.org.ua. функцію закинув до ~/.bashrc — нехай буде.

p.s. і не забудьте ж про source ~/.bashrc, якщо гратиметеся й собі =)

system volume information

я вам точно кажу… якщо існує єдиний бог — він має що завгодно на своєму ноутбуці, але не windows…
цитата | «on drives formatted with the ntfs file system, this folder’s permissions are set to prevent everyone from accessing the folder, even users with administrator permissions» (звідси
адміністратор без доступу до якоїсь системної теки? пересторога столмана про те, що якщо ви не котролюєте код — код (а через нього, можливо, хтось інший?) контролює вас, набуває суттєвого змісту =)

передісторія: на на (зовнішньому) робочому диску лишилося вільних лише 80 гігабайт з 460. віртуальні машини для різних курсів у коледжі «з'їли» 258 гб — треба щось видаляти. але знайшлася ще тека system volume information (на диску встановлено windows, котрим я вже рік не користуюсь), майже 15 гб, тож я пішов гуглити, що воно таке…

телефон за $9

днями зазирнув до «village de valeur» (це така мережа крамниць вживаних речей), придбав за $9 старенький, але робочий sony xperia m. приніс додому — а він залочений, і не зрозуміло, на якого оператора…

нічого. обійшов кілька стендів мобільних операторів у місцевому торговому центрі, емпіричним методом (перепробували півдесятка карток) виявив — bell. зателефонував на службу підтримки — продиктували код розблокування, $0.

дорогою додому заскочив до wallmart'а, віддав $11,50 за картку sim з найдешевшим тарифним планом від publiс mobile: $11,50 на місяць (50 хвилин і 50 вихідних sms).


автор книжки «learning c with pebble», про яку я нещодавно згадував, щойно виклав на github вихідні коди вправ, котрі є реальними програмами для pebble — без них книжка не була повною (довелося трохи поштурхати дядька на reddit'і):

github.com/frethop/learningcwithpebble-exercises

без вправ — це був би просто ще один підручник з програмування на с. зі вправами — це можливість торкнутися коду й одразу наживо побачити результат на «камінчику». хапайте!

магія ijkl (продовження)

має бути якийсь кращий спосіб вирішити цю задачу… можливо, доведеться зробити свої версії обох розкладок, додавши до кожної всі потрібні налаштування?

поки що виклав два файли конфігурації (для xmodmap та xkbcomp) та малесенький скрипт для їх простого завантаження на github, щоби не пропало (і не забулося), поки я тут складатиму іспити в коледжі:

github.com/tivasyk/navijkl

далі треба буде «копа́ти» xkb.

магія ijkl

за два роки з компактною клавіатурою я дуже звик рухати курсор комбінацією fn+ijkl. а оскільки fn на pok3r'і можна призначити на capslock, то й для навігації текстом чи веб-сторінкою не доводиться відривати пальці від основного положення…

…проблема виникає тоді, коли треба бодай трішки щось зробити на іншій клавіатурі. отже, давня мрія: переналаштувати обробника клавіатури linux так, щоби capslock+ijkl (і кілька інших комбінацій) працювали, як на pok3r'і.

щойно подужав… але поки що не впетраю, як це до ладу автоматизувати. поки що просто занотую, як робиться руцями.

capslock

спершу я спробував зробити справу за допомогою xmodmap — вийшло лише частково. але принаймні переналаштування capslock працює:

! ----------------------------------------
! CapsLock працюватиме як ISO_Level3_Shift
! (третій рівень, зазвичай правий Alt)
! ----------------------------------------
clear lock
clear mod5
add mod5 = Caps_Lock ISO_Level3_Shift
keycode 66 = ISO_Level3_Shift Caps_Lock

це треба зберегти до текстового файлу (приміром, capslock.xmodmap) і завантажити:

xmodmap capslock.xmodmap

після цього capslock дублює функцію правого alt'а (який на моїх обох розкладках, канадській багатомовній та українській unicode, дає доступ до «третього шару» — символів на кшалт µ, {} ы тощо), але разом із shift'ом працює як звичайний capslock.

ijkl та латинка

в канадській багатомовній отримати навігацію з altr+ijkl можна так само за допомогою xmodmap. по-перше, можна експортувати поточну розкладку (xmodmap -pke) і підглянути налаштування саме для цих клавіш (grep):

xmodmap -pke | grep -e "^.*=\ *[ijkl]" > ijkl.xmodmap

маю щось таке у файлі ijkl.xmodmap:

keycode  31 = i I Cyrillic_sha Cyrillic_SHA NoSymbol NoSymbol rightarrow idotless
keycode  44 = j J Cyrillic_o Cyrillic_O NoSymbol NoSymbol U0133 U0132
keycode  45 = k K Cyrillic_el Cyrillic_EL NoSymbol NoSymbol kra NoSymbol NoSymbol NoSymbol Cyrillic_lje Cyrillic_LJE
keycode  46 = l L Cyrillic_de Cyrillic_DE NoSymbol NoSymbol U0140 U013F NoSymbol NoSymbol Serbian_dje Serbian_DJE

ліворуч (від =) коди клавіш на вході обробника клавіатури xorg. праворуч — те, що обробник подає на вихід, залежно від стану (shift, ctrl тощо). приміром, j та J — це символи (насправді псевдоніми) при нормальному натисканні та з shift'ом. далі — другий рівень (в моєму випадку українська розкладка), нормально та з shift'ом; тут вже добре видно, що це псевдоніми: cyrillic_sha (ш) та cyrillic_SHA (Ш).

емпіричним шляхом виявляю, що наступні два псевдоніми (NoSymbol NoSymbol) — це третій рівень першої розкладки, саме те, що вмикає правий alt: так само нормальний ввід та з shift'ом. міняю на псевдоніми потрібних дій:

keycode  31 = i I Cyrillic_sha Cyrillic_SHA Up Up rightarrow idotless
keycode  44 = j J Cyrillic_o Cyrillic_O Left Left U0133 U0132
keycode  45 = k K Cyrillic_el Cyrillic_EL Down Down kra NoSymbol NoSymbol NoSymbol Cyrillic_lje Cyrillic_LJE
keycode  46 = l L Cyrillic_de Cyrillic_DE Right Right U0140 U013F NoSymbol NoSymbol Serbian_dje Serbian_DJE

згодовую xmodmap'ові й маю бажану навігацію capslock+ijkl, але лише на першій розкладці, канадській:

xmodmap ijkl.xmodmap

 

ijkl та кирилиця

коли я спробував той самий фокус для української розкладки, здогадуючись (див. псевдоніми в рядках keycode 45 та 46), що 11-й та 12-й псевдоніми мають відповідати за третій рівень (altr) другої розкладки — виявилося, що [k] та [l] працюють, а от [i] та [о] — дзуськи. після не дуже результативного гугління поліз глибше — в налаштування xkb, і знайшов.

щоби вивантажити налаштування xkb до файлу layout.xkbcomp:

xkbcomp $DISPLAY layout.xkbcomp

по-перше, аліаси потрібних клавіш (коди 31, 44, 45 та 46):

<AD08> = 31;
...
<AC07> = 44;
<AC08> = 45;
<AC09> = 46;

тут A — основна частина клавіатури, D та C — ряди (знизу вгору), 07 — номер клавіші. далі шукаю налаштування для кожної клавіші. ось моя j:

key <AD08> {
  type[group1]= "EIGHT_LEVEL_SEMIALPHABETIC",
  type[group2]= "ALPHABETIC",
  symbols[Group1]= [ i, I, Up, Up, rightarrow,  idotless, NoSymbol, NoSymbol ],
  symbols[Group2]= [  Cyrillic_sha, Cyrillic_SHA ]

порівнюючи це з одним рядком виводу xmodmap для клавіші [i] (код 31), здогадуюсь: це мої розкладки (type[groupX]) і відповідний набір псевдонімів (symbols[groupX]). українська для j відформатована за шаблоном "alphabetic", котрий містить (це видно вище у файлі) лише два символи: нормальний та з shift'ом (оті cyrillic_sha та cyrillic_SHA). ось шаблон:

type "ALPHABETIC" {
  modifiers= Shift+Lock;
  map[Shift]= Level2;
  map[Lock]= Level2;
  level_name[Level1]= "Base";
  level_name[Level2]= "Caps";
};

так само [j] має лише два символи в українській розкладці. натомість, клавіші [k] та [l] в українській розкладці відформатовано за іншим шаблоном, в якому визначено чотири символи (і після спроби редагування xmodmap'ом тут вже є потрібні псевдоніми down):

key  {
  type[group1]= "EIGHT_LEVEL_SEMIALPHABETIC",
  type[group2]= "FOUR_LEVEL_ALPHABETIC",
  symbols[Group1]= [ k, K, Down, Down, kra, NoSymbol, NoSymbol, NoSymbol ],
  symbols[Group2]= [ Cyrillic_el, Cyrillic_EL, Down, Down ]

шаблон «four_level_alphabetic»:

type "FOUR_LEVEL_ALPHABETIC" {
  modifiers= Shift+Lock+LevelThree;
  map[Shift]= Level2;
  map[Lock]= Level2;
  map[LevelThree]= Level3;
  map[Shift+LevelThree]= Level4;
  map[Lock+LevelThree]= Level4;
  map[Shift+Lock+LevelThree]= Level3;
  level_name[Level1]= "Base";
  level_name[Level2]= "Shift";
  level_name[Level3]= "Alt Base";
  level_name[Level4]= "Shift Alt";
};

отже, щоби навігація працювала і в українській розкладці, треба «поремонтувати» налаштування клавіш [i] (AD08) та [j] (AC07) — замінити шаблон і додати по два псердоніми:

key <AD08> {
  type[group1]= "EIGHT_LEVEL_SEMIALPHABETIC",
  type[group2]= "FOUR_LEVEL_ALPHABETIC",
  symbols[Group1]= [ i, I, Up, Up, rightarrow, idotless, NoSymbol, NoSymbol ],
  symbols[Group2]= [ Cyrillic_sha, Cyrillic_SHA, Up, Up ]
};
...
key <AC07> {
  type[group1]= "EIGHT_LEVEL_SEMIALPHABETIC",
  type[group2]= "FOUR_LEVEL_ALPHABETIC",
  symbols[Group1]= [ j, J, Left, Left, U0133, U0132, NoSymbol, NoSymbol ],
  symbols[Group2]= [ Cyrillic_o, Cyrillic_O, Left, Left ]
}; 

після цього завантажую налаштування:

xkbcomp layout.xkbcomp $DISPLAY

і навігація capslock+ijkl працює з обома розкладками.

 

проблеми

на жаль, налаштування працюють до перезавантаження, перелогінення, ба навіть перепідключення зовнішньої клавіатури. можливе вирішення —
  • модифіковані розкладки вже з потрібними налаштуваннями (але доведеться щоразу після поновлення системи їх відновлювати, мабуть);
  • або ж якийсь скрипт для вивантаження налаштувань xkbcomp, автоматичного редагування і зворотнього завантаження.
окрім того, треба додати home, end, pgdn, pgup та insert, як це зроблено на pok3r'і. але принаймні це вже зрозуміло як зробити.

to cat or not to cat...

натрапив на порцію цікавезного читання: useless use of cat award, поки шукав, чи підтримує wget багатопотокове завантаження (виявляється, не підтримує).

студентський страйк, ikea, кава

сьогодні мав бути іспит, до котрого я — мабуть, вперше за півтора роки — не готовий. але планети вишикувалися так, що на сьогодні пиипав страйк студентів коледжів: студкомітети вимагають оплачувати стажування незалежно від напрямку навчання тощо.

страйки у франкомовних країнах — це серйозно, як виявилося: кампус зачинено, доступу немає ані для студентів, ані для викладачів. чудово, думаю собі: є час підготуватися до іспиту...

...і заскочив до ikea дорогою додому.

виявляється, кав'ярня в ikea відчиняється о 9:30, основна площа магазину — о 10:00, а в ці півгодини кава в кав'ярні безкоштовна.

от бувають же дні, коли доля нас голубить!

нова забавка, нова книжечка…

знайшов цікавезну книжечку: «learning c with pebble». треба читати — знадобиться середовище розробки, аби погратися з програмуванням для pebble (алгоритм для arch linux):

1) компілятор c зі стандартними бібліотеками, для архітектури arm (підказка):

sudo pacman --noconfirm -S arm-none-eabi-gcc arm-none-eabi-newlib

2) бібліотеки pebble :

yaourt --noconfirm -S pebble-sdk

pebble-sdk потягне за собою python2, і принаймні один з цих пакунків не захотів компілюватися з aur'а через брак підпису. допомогло ось це (підказка щодо імпорту сертифікату):

gpg --recv-key 8C004C2F93481F6B && gpg --lsign 8C004C2F93481F6B

і тоді знову

yaourt --noconfirm -S pebble-sdk

3) трішки магії:

mkdir -p ~/.pebble-sdk/oauth/
touch ~/.pebble-sdk/NO_TRACKING


4) менеджер пакунків для javascript (от же ж і намутили…):

sudo pacman --noconfirm -S npm

5) ядро для розробки:

pebble sdk install https://github.com/aveao/PebbleArchive/raw/master/SDKCores/sdk-core-4.3.tar.bz2

готово. далі…

mkdir ~/pebble && cd ~/pebble
pebble sdk new-project test
cd test


…і підстрибом спробувати щось простеньке!

поновлення (2018-11-19). клятий емулятор не хоче працювати, хоч лусни…

pebble install --emulator aplite

запускається, але щоразу «connection refused». перекидання компільованого pbw на «камінчик» через dropbox/смартфон працює, але так прикро.

поновлення (2018-12-05). автор книжки «learning c with pebble» щойно виклав на github вихідні коди вправ, котрі є реальними програмами для pebble — без них книжка не була повною (довелося трохи поштурхати дядька на reddit'і):

github.com/frethop/learningcwithpebble-exercises

без вправ — це просто ще один підручник з програмування на с. зі вправами — це можливість торкнутися коду й одразу наживо побачити результат на «камінчику». хапайте!

а за гроші веселіше!

здається, я зрозумів бізнес-модель udemy

вони викладають задурно купу навчальних відео, начитаних не дуже компетентними індійцями з жахливим акцентом (ось яскравий приклад).

а за грубі гроші — показують звабливе дівча в блакитній сукенці з ідеальною дикцією, котре могло би й просто мовчати — все-одно було би цікаво дивитися… а вже коли ти заплатив — з'являється індієць =)

учись, студент!

p.s. це жарт. ролик з дівчам — стандартний вступ від udemy до кількох (платних) курсів зі bash-скриптування.

мухи плюс котлети = python

цієї сесії нас навчають програмувать на python'і… ну, мова як мова — ми не настільки глибоко «копаємо», щоби аргументовано порівнювати її не те що до c# з попередньої сесії, ба навіть до скриптування в sh/bash чи powershell…

…але мене від початку бентежив цей підхід до визначення структури коду за допомогою «порожніх» відступів.

нарешті зрозумів: це суперечить принципу відділення змісту від вигляду!

поновлення (2018-11-08). філософський принцип python'а: «має бути один, — бажано лише один — очевидний спосіб зробити це». і тому…

…ось вам, братці, tuples, lists, dictionaries, і на додачу ще бібліотечка numpy. lol. а я тут переживаю за відділення змісту й вигляду =D

поновлення (2018-11-08). а це я просто залишу тут: «отже, підсумую: динамічне визначення типів допомагає „зробити справу“, надаючи свободу витворяти безсенсові дурниці, перезаписувати неіснуючі властивості [об'єктів], і назагал робити речі, котрі є або відвертими вадами, або ж призводять до вад» [переклад цитати англійською]

а це взагалі прекрасне: «but look at the bright side: while it allows you to write bull shit code, it will force you to indent it correctly» [з коментарів там же]

механічний фап-фап-фап…


https://www.flickr.com/photos/151659186@N03/sets/72157675239965188
фотоальбом зі збіговиська mechanicon 2018 — вельми специфічне порно… неможливо відірватися =/

гаряча лінія маямі

hotline miami надто… hectic, щоби я в це грався (мені більше імпонує атмосфера і темп subterrain), але… звукоряд чудовий. мабуть, оселиться на смартфоні на кілька днів.

нарешті дійшли руки налаштувати домашній маршрутизатор з openwrt. тепер замість d-link dir-835 з фабричною прошивкою працює такий самий (придбаний за $10), але завдяки openwrt він вміє трішки більше:
  • обслуговує домашню бездротову мережу «для своїх» майже без обмежень;
  • роздає гостьовий інтернет «slava_ukraini» з легко вгадуваним паролем, ізольований від домашньої мережі та з обмеженням швидкості (1 мбіт/с — достатньо для чату й пошти, але недостатньо, щоби заважати домашнім);
  • тихенько обслуговує «адміністративну» бездротову мережу з прихованим ssid і білим списком mac-адрес — для себе, а також для «подовжувачів» на випадок, коли захочеться мати інтернет на вулиці;
  • робить «шейпінг» трафіку на зовнішньому підключенні до провайдера, щоби навіть за високого навантаження «дурним» трафіком (торенти тощо) можна було дивитися youtube, netflix чи «скайпитися»;
  • дає доступ по мережі до принтера: придбав недорого лазерний brother hl-2040 б/у на kijiji, без wifi, підключив до usb на роутері, встановив «прозорий» драйвер p910nd — домашні можуть друкувати без дротів;
  • дозволяє все це налаштовувати через веб-інтерфейс з українським перекладом.
залишив на потім:
  • підключити якийсь мережевий диск (треба подумати як: usb на рутері один, зайнятий принтером) та перенести на роутер сервер dlna (наразі — на десктопі);
  • знову підключити «малинку» та відновити переадресацію ssh з зовнішнього підключення на неї — для розваги;
  • трохи «причесати» налаштування dns на роутері (printer.lan, malynka.lan тощо);
  • поставити openwrt на перший dir-835, що зараз лишився без діла — хто зна, може стати в пригоді =)

howl — ще один текстовий смаколик

знайшовся howl: маленьке, барвисте й зручне — зручніше, нмсд, за micro. єдиний недолік — виглядає, як консольний додаток, але таким не є…

як би я хотів, щоби micro був такий, як howl… або howl мав консольний режим!

коротше, якщо вам сподобався micro — бодай погляньте на цей текстовий редактор.

shadow warrior 2 задурно — дякую, gog.com!

минуло хіба півроку від попередньої роздачі забавок надурняк від gog.com — і «зненацька» нова роздача, на відзнаку 10-ліття сайту!

отже, не забудьте забрати свою безкоштовну копію shadow warrior 2.

не турбувати!

довелося шукати, як заборонити автоматичні поновлення windows server 2016, щоби мати змогу спокійно навчатися з віртуальними машинами замість чекати (інколи годинами) на завантаження та встановлення тих поновлень…

звісно, категорично не треба цього робити в робочому середовищі.

поновлено (5 жовтня 2018). дотичний до теми комікс на don't hit save !

канікули й dwarf fortress

канікули в коледжі, тиждень вже позаду… дозволив собі трішки «залипнути» в dwarf fortress; мета цього разу — промисловість на магмі.

музика тижня — «пісня дуріна» від clamavi de profundis, але щоби знайти щось нове, я відкрив soundcloud…

посібник ncurses українською

два питання до аматорів:
  • чи стрічався вам переклад посібника з програмування за допомогою ncurses? (tldp.org)
  • як не стрічався — то чи цікаво було би мати такий переклад?
маю трохи часу (три тижні канікул) і чимало натхнення а) пригадати засади програмування в c та б) навчитися робити ncurses =)

почитати: homenet на openwrt

за $10 придбав на kijiji ще один маршрутизатор d-link dir-835, — аби поекспериментувати з dd-wrt та openwrt, не ризикуючи лишитися без інтернету вдома.

поки що приділив йому хіба 15 хвилин: openwrt на диво просто і швидко встановився, без шаманських танців з бубнами, лишалося тільки налаштувати роздачу підключення без дротів і…

…і тоді я випадково втрапив на підказки з налаштування homenet на openwrt (homewrt). якщо я правильно зрозумів суть, homewrt — це практична реалізація «розумної» (читай: автоконфігурованої) домашньої мережі на базі адресації ipv6 (з підтримкою ipv4, втім). переваги:
  • підтримка кількох рутерів у домашній мережі;
  • підтримка кількох підключень до провайдерів інтернету;
  • окрема віртуальна мережа для кожного інтерфейсу;
  • автовизначення імен (dns) в домашній мережі;
  • …і все це — з автоконфігурацією (встромив-працює).
вирішив, що в це обов'язково треба вчитатися:
але це читання «на згодом»: коли буде складено літню сесію, рутер з налаштованим openwrt замінить dir-835 із заводською прошивкою, а той звільниться для експериментів.

жарт дня… ні, місяця!

і місяця ще не минуло — і тут таке… трапляється, звісно. але «природа» на щось натякає, можливо?

=D
цей простенький скрипт обирає і друкує один випадковий рядок з текстового файлу:



зручно використовувати разом з cowsay:

quote wisdom.txt | cowsay -f beavis.zen

залишилося зберегти збірку цитат (бажано дурнуватих) до wisdom.txt.


велика проблема з попереднім скриптом для стиснення pdf у тім, що imagemagick конвертує всю сторінку в jpeg (або інший графічний формат), і повністю втрачає текстову інформацію — інструменти пошуку та  копіювання тексту не працюватимуть в конвертованих файлах. тож я задумався…

…і накидав інший невеличкий скрипт, який використовує ghostscript замість imagemagick:



за замовчуванням скрипт намагається перекомпресувати усі файли pdf (*.pdf) у поточній теці, але приймає також маску (в лапках!) як єдиний параметр: gspdfs "file*.pdf".

випробував цей та попередній скрипти на кількох pdf'ах: текстовому, відсканованому (ч/б), графічному (кольорова плоска графіка) та фото — результати на знятку.
побачив на форумі manjaro питаннячко: як стиснути (точніше, перекомпресувати для зменшення розміру) велику кількість файлів pdf, не витрачаючи час на завантаження до онлайнового сервісу на кшталт ilovepdf?

таку магію робить утиліта comvert з пакету imagemagic:

convert -density 150x150 -quality 30 -compress jpeg input.pdf output.pdf

треба тільки «загорнути» цю команду в цикл і перебрати всі pdf'и в поточній теці:



цей скрипт намагається перекомпресувати всі файли pdf у поточній теці, але не перезаписує їх, а створює файли *_recompressed.pdf, інформуючи про хід справи.
невелика нотатка собі на згадку: однорядкова «запускалка» компіляції та виконання вправ з c#, що ми їх клепаємо десятками зараз в коледжі:

id=4.12 ; mcs exercice${id}.cs && (mono exercice${id}.exe ; rm exercice${id}.exe)

файли з вихідними текстами всі нумерую за розділом на номером, наприклад: розділ 4, вправа 12: exercice4.12.cs.

якщо набрати команду раз — згодом елементарно знайти в історії та повторити, змінивши тільки id. вправа компілюється (mcs), і якщо відкомпілювалася успішно — виконується (mono) і після завершення непотрібний мені файл exe видаляється (rm).

перша лабораторна в gns3

нова сесія — нові лабораторні: просто на першому занятті з мережевих інфраструктур (ccna 4) отримали роботу на пригадування маршрутизації ospf.

по-правильному, мали б виконувати її на «залізі», але обладнання мало, а нас багато… замість робити в packet tracer'і, цього разу граюся з gns3.

одна невелика, але помітна перевага gns3 перед «рідним» емулятором cisco — доступ до нормальної консолі (в моєму випадку konsole) з усіма звичними «смаколиками»: вкладками, розділенням екрану, синхронним вводом, сповіщеннями тощо.

монреаль, москвин, майовка

щиро кажучи, я навіть не знаю, як це коментувати… тому коротко викладу, що я бачу в цім видиві: невелика група молодих і не дуже людей, ймовірно імігрантів з «нєаб'ятнай родіни», йшли оце днями вулицями монреаля під червоними прапорами з комуністичними символами, і «на чістам рускам язикє» вигукували досить ідіотські «анті-капіталістичні» лозунги. попри явне порушення канадських законів (закриті обличчя під час демонстрації) — ніхто їх не займав, поки ці «піонери» не вирішили, що треба напасти на поліцію…

…тут їм трохи дали пи%ди, кількох (лише п'ятьох, на жаль) затримали за «напад на офіцерів поліції, перешкоджання діям поліції та хуліганство» (перекладаю звідси).


нічого не розумію. люди… закреслено… ймовірно, мoскaлi, імігрують з комфотного комуністичного раю до північної америки, лігвища, можна сказати, капіталізму… отримують громадянство, купують тут собі автівки, будинки, хто зна що ще… і ходять вулицями монреаля з протестом проти капіталізму?

поновлення (2018-05-05). ось на цім видиві іншого оператора краще видно, за що поліція попрохала маніфестантів припинити ходу і розійтися… що ті сприйняли не дуже позитивно, мабуть.

gns3 на manjaro linux — працює

подужав: gns3 працює на manjaro linux, поки що віртуальному, і крутить образи маршрутизатора і комутатора cisco.

це таки було нетривіально… головним чином тому, що всі підказки в мережі, що мені траплялися, або застарілі, або неповні — включно з вікі arch linux.

але в підсумку всі програмні компоненти (сам gns3, бібліотеки та додаткові інструменти) встановилися з aur'а, без необхідності щось збирати з сирців; довелося трохи поблукати темними закапелками інтернетів, щоби знайти образи пристроїв cisco (iou) на випробу…

наче працює. тепер треба навчитися цим користуватися — і братися до free ccna workbook на дозвіллі.

тип запуску сервісу windows у powershell 4

командлет get-service у powershell 4 — це версія в комплекті з windows server 2012, яким ми найчастіше користуємось для практичних робіт у коледжі, — не дає доступу до типу запуску (.starttype) сервісу windows, ця можливість з'являється в powershell 5.1.

це тим більше дивно, що set-service у powershell 4 дає можливість встановити цей параметр!

ну, це microsoft, що ви хтіли… але що робити? ось еквівалент для powershell 4:

(Get-CimInstance -ClassName Win32_Service -Filter "Name = 'W32Time'" | Select-Object -Property StartMode).StartMode


підказку знайшов у тенетах, звісно, і трохи «допиляв» для зручності.
для курсу «інфраструктура мереж» (по суті курс cisco ccna, розбитий на шість сесій) в коледжі ми активно використовуємо packet tracer. він зручний, і працює справно на linux — за винятком невеликої проблеми під час встановлення, яку легко вирішити.

але в «живій природі» люди активно користуються емулятором мереж gns3: тому що вільний, з відкритим кодом, і значно потужніший. але складніший. і встановлення… м'яко кажучи, нетривіальне на linux, якщо зазирнути до вікі arch linux (я ж на manjaro).

і тут стає в пригоді весь наш досвід роботи з віртуальними машинками: я ж маю віртуальний manjaro десь в колекції віртуалок у virtualbox… здається, маю заняття на вихідні. можливо, не наступні (бо ще тривають іспити, треба продертися).
якщо кому було цікаво: ось повний перелік предметів курсу «адміністрування мереж» в монреальському коледжі de maisonneuve.


необхідні коментарі (клац на зображенні для збільшення):
  • ліва колонка (categorie de cours) — дисципліни; для загальних дисциплін подано назви (французька, філософія, фізкультура і т.д.), а «concentration» — це спеціалізація (номер не важливий, він просто позначає кількість спеціальних предметів в границях сесії).
  • верхній рядок (session du programme d'études) — номер «сесії», котрих я маю три на рік (українською ми називаємо це чомусь триместрами); себто тривалість навчання — 2 роки, наразі завершується третя сесія і добігає кінця мій перший рік;
  • відповідно кожна клітинка — це один«предмет» (або курс, як тут кажуть) з однієї дисципліни в рамках одного триместру;
  • зелені клітинки (réussi) — успішно зараховані предмети; частина з них, позначені «remarque : eq» — зараховані за українськими документами (шкільний атестат, інститутський диплом, сертифікати іспитів tefaq та ielts); решта, котрі мають оцінку «note : 87» (у відсотках) — предмети, успішно пройдені тут, у коледжі;
  • блакитні клітинки (en cours) — предмети, що ми їх вивчаємо в поточній сесії;
  • жовті клітинки (choisi) — предмети на наступну сесію, котра починається в червні (я писав, що пішов на прискорений курс, тому влітку канікул ми не маємо);
  • персикові клітинки (à faire) — предмети, заплановані на подальші сесії;
  • в клітинці: ідентифікатор предмету (напр. 420-R63-MA), назва скорочено (напр. «mat. & sys. d'exploit. client» — «апаратне забезпечення та операційні системи (клієнтська частина)» тощо), оцінка у відсотках (або позначка зарахування без оцінки, «eq») та сесія, коли предмет зараховано.
десь так. як маєте питання — лишайте в коментарях (бажано в щоденику, а не в google plus чи facebook, куди допис кроспоститься автоматично).

pacman з'їв мої гігабайти

щойно виявив, що кеш менеджера пакунків pacman (/var/cache/pacman) займав… трохи більше 10 гігабайт, і накопичив, здається (як перевірити, окрім як візуально?), чи не всі версії встановлених програм та бібліотек відколи систему встановлено.

pacman -Sc

видалив усе, окрім пакунків з поточними версіями — позбувся близько 8 гігабайт сміття, лишилося 2,5 гб пакунків. задумався:

а) як налаштувати менеджер пакунків, щоби він зберігав лише поточну версію?

б) що такого потрібного аж на 1,7 гб накопичилося у /var/log в системі, котра не використовується ані як сервер, ані як більш чи менш серйозна робоча станція?

що менше, то краще

що менше московитів у цивілізованій мережі — то краще, нмсд.
цитата | «…заблоковані одна ip-адреса "однокласників", п'ять — "яндекса", три — twitter, п'ять — facebook. водночас до реєстру внесли ip-адреси amazon (14), microsoft (29) та google (33)» (український тиждень)
прошу, роскомнагляд, не спиняйтесь, паліть ще.

україна сприймається безнадійно

просто цитата про безнадійність: десь так я бачив україну останні кілька років, поки там мешкав (до й після революції 2014). десь так її бачу вже з канади…
цитата | «все воно виглядає таким безнадійним: маленькі дітки, що щебечуть мовою російських мультиків у мене в дворі й не знають жодної української казки, тупість обивателя, який за гроші зречеться рідної матері, тотальна корупція у кожній владі, телебачення,яке не служить українським інтересам, здеградоване мистецтво… безнадійне, бо особисто не втрутишся і не зміниш. у приступі відчаю від безсилля  програю собі в думці «оду до радості» і повторюю «вічний революцьонер» франка. там є гормон революційності. часом на думку спадають рядки із «варнака» : «я різав все, що паном звалось,без милосердя і жалю». не тому, що я кровожерна істота, просто ці рядки теж мають у собі нестримний революційний порух. мертве серце — ось що страшніше за деградацію і застій в суспільстві» (галина пагутяк, «гормон революційності»).
але зараз трішки легше — відколи перестав читати facebook, зовсім. маю трохи більше часу на duolingo (повернувся до шведської), простіше зосереджуватися на навчанні (знову надійшла пора іспитів у коледжі).

паралельні світи

знайшов такий от перелік фантастичних романів, що торкаються теми паралельних світів… зрозумів, що багато прогавив — навіть з класики. надолужуватиму за можливості.

windows — значить віконця!

я собі гадав, що windows core має текстовий інтерфейс… аж тут гульк — віконця. windows такий windows.

на знятку : windows 2012 core у вікні віддаленої стільниці на windows 2012… у virtualbox… на linux.

це трохи нетипова (я вже витратив більше шести годин на неї) лабораторна з protocoles internet в квебецькому коледжі. загалом віртуальні машини для різних курсів відхопили 200 з гаком гігабайт на зовнішньому диску.
просто зараз погляньте на ціну deux ex: goty edition на сайті gog.com! я бачу 1,99 канадських долари, в україні ціна буде ще нижча. невже не зваблює?!

якщо придбаєте, погляньте обов'язково ще ось цей проект: gmdx.

p.s. здається, треба повторити фокус із встановленням deus ex на linux… але вже після іспитів.
програмування — це трохи знань, дрібка хисту і багааато гугління =)



угу, продовжую длубати powershell. наступне завдання до іспиту — скриптування створення сайту ftp: необхідні теки, файли readme, дозволи ntfs, авторизації, адреси ip та заголовки… оскільки я трохи перфекціоніст, примітивний скрипт «ось команда, а чи працює — побачимо» не підходить. отже, знадобилося перевірити, чи існує користувач чи група для налаштування дозволів на теки та автентифікації ftp.

ось так і розважаюся суботнього ранку.

пекельне пекло о другій ночі

всі знають, що powershell — це сполучення двох слів. але далеко не кожен здогадується, яких саме…



…наївно гадаючи, що то power і shell. проте кожен більш чи менш досвічений любитель покопирсатися на bash'тані знає, що перше слово — power's.

на годиннику друга ночі. завдання в рамках підготовки до іспиту з предмету «сервери та мережі» (на завтра… ні, вже на сьогодні) — виконав, скрипт працює. спати лишається десь чотири години.

друге слово — hell.

p.s. але заради справедливості треба додати, що для роботи з системними об'єктами (windows), powershell дає фору мовам скриптування linux…

doom з блекджеком і смолоскипами

brutal doom — надзвичайно весела річ, бо перетворює старезну, запилючену забавку на свіжий натурпродукт! гранати, стрільба по-македонськи і… самі дивіться — 2:45.


…і не менш брутальний doom 2

ще трохи теплого лампового геймплею: gzdoom + brutal doom + doom 2 wad.

брутальний doom

хедшоти, ґібзи і закривавлені стіни: старий добрий doom зненацька робиться значно веселіший з gzdoom + brutal doom! я ніколи не був спідранером, тож… мій старший назвав це «doom у стилі call of duty», хаха.

sounds like a plan...

коли змайстровано багатозарядний арбалет, пневматичний болтомет, збудовано мобільну фортецю на базі humvee, переробленого на електричну тягу, побудовано сонячну електростанцію для швидкого заряджання акумуляторів — у світі cataclysm стає трішки нуднувато. але!..

…здається, я маю нову мету-ідею на наступні вихідні.

p.s. цей допис не має сенсу для того, хто не пробував хоча би разочок cataclysm: dark days ahead.

письменник і самогубство

трішки спізнився до дня письменника…
цитата | «письменник є репрезентантом національної культури і несе за це відповідальність усюди і завжди. зрадити національній культурі, сумніватись в її вартості — це самогубство» (галина пагутяк)
мало пишу до щоденника останнім часом — більше залишаю коротенькі дописи в facebook'у. але якщо хтось був цікавий, як виглядає навчання в канадському коледжі на курсі адміністрування комп'ютерних мереж, ось вам зняток екрану замість слів.

це лабораторна робота в packet tracer (навчальний емулятор мереж від cisco), котра поєднує теми маршрутизації (ripv2), віртуальних мереж (vlan/vtp) та агрегації з'єднань (trunk/stp).

наближаються проміжні іспити.

безглузде самогубство windows

на одному з домашніх комп'ютерів (acer z3-600) в нас досі стоїть операційна система однієї дуже відомої і дуже заможної компанії на літеру m. ця операційка відчутно заважка для старенького pentium j2850, але я закривав не те очі, бо майже не користуюсь цим комп'ютером.

аж ось windows вчергове вирішив, не порадившись, встановити якесь своє оновлення — і після цього перестав бачити модуль бездротової мережі. а навіщо сьогодні потрібен комп'ютер без доступу до інтернету? навіть драйвер wifi неможливо завантажити, хаха. якесь безглузде самогубство.

здається, надійшов час не драйвери завантажувати, а знайти свою флешку з улюбленим manjaro linux та спробувати його в режимі liveusb для початку.

оновлення. може бути, що я даремно нарікаю на windows — принаймні стосовно зникнення зв'язку: модуля wifi не видно ані в диспетчері пристроїв windows, ані в linux'і… але ж, побий мене грім, до оновлення «вікон» все працювало!

оновлення. повне перезавантаження комп'ютера, включно з від'єднанням батареї (так, aspire z3-600 — це такий 20-дюймовий планшет з двогодинною автономністю) допомогло: wifi знову працює. втім, на моє рішення щодо долі windows на цій машині це вже не вплинуло: тепер тут встановлено manjaro linux, котрий буквально «літає», має український інтерфейс «із коробки» і не має жодних проблем з розкладками (московитська не з'являється нізвідки).

gog знову роздає ігри задурно

ви ще не зареєстровані на gog'у? але ж я вам розповідав, що там не лише бувають чималі знижки на різні хороші забавки (зараз $2.99 за візуально чудовий far cry 2), але й час від часу роздають ігри за так. безоплатно. задурно.

цього разу — dungeons 2.

якщо не собі, так діткам заберіть (gog.com).

p.s. щойно зазирнув до своєї ігротеки на gog'у — вже назбиралося 88 забавок.

свято приїхало!

дочекався. доця допомогла зняти старі клавіші, переставити гумові демпфери й поставити нові «ковпачки» /dev/tty…

…і зненацька мій pok3r — зовсім інша клавіатура, як на вигляд, так і за тактильними відчуттями та звучанням. перше враження: клавіатурний оргазм =)

ну от, тепер заздріть, хто «в темі».

вечір п'ятниці

вдома після навчання. кручу в руках нову цяцьку, bestech swordfish, не можу відкласти… читаю фотоісторію хлопаки, котрий зробив собі маленький шедевр зі старої cherry g80 і набору dz60.

оце я так відпочиваю в п'ятницю ввечері.

свято наближається!

не минуло й року: massdrop вислав замовлений ще у квітні минулого року елемент клавіатурного ендґейму, омріяний /dev/tty від matt3o. залишилося дочекатися… і поремонтувати кабель.

p.s. фотосесія в жанрі клавіатурного порно буде обов'язково =) без кросівок.