клавіатурний ендшпіль

можна мріяти про що завгодно, але я гадаю, що pok3r + /dev/tty буде моїм, як кажуть маніяки на /r/mechanicalkeyboards, ендґеймом: відносно недорого (бо pok3r я вже маю, хаха) і у стилі *nix.

одна біда: довго чекати. massdrop каже — п'ять місяців до відсилки, плюс ще мінімум тиждень, поки доїде.

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

p.s. хоча ні, на повну — то була би ще обов'язкова фотосесія з кросівками, а я того вже не розумію =)

p.p.s. але infinity — тримаю на прицілі. бо open source і повністю програмоване.

альтернатива instagram'у?

вважаю instagram цяцькою для тих, кому нема до чого вчепитися… але переглянув свою стрічку і залип на кількадесят хвилин — цікаво згадувати: два роки з хвостиком, сім країн

якщо клацати щось під час виїздів ровером — світлинки звідси підтягуються також і до strava. але водночас instagram дуже незручний для журналювання під час виїздів через декілька серйозних недоліків:
  • (epic fail) в офлайновому режимі instagram не дозволяє додавати мітку геолокації до світлини;
  • (fail) в офлайновому режимі instagram зберігає відзняте, але… додає потім до стрічки в хаотичному порядку, не прив'язаному до часу.
звідси питання: чи існує в природі якийсь альтернативний клієнт для instagram без цих недоліків, щоби з ним було зручно робити хронологічні стрічки з геолокацією навіть офлайн?

я хочу іншу руку!

щойно малий прокидається і одразу капризує, хнюпає. підходжу, заговорюю до нього лагідно:

— доброго ранку! що не так, цьомчику?

витягує руку і чи то показує щось за вікном, чи показує мені руку.

— що таке?
— вона не краща! — хнюпає далі.
— щось не так з ручкою?
— так. я хочу іншу руку!

зареєструвався би на assholeparents.com: мовляв, я поганий батько, бо не дав дитині кращу ручку… але світлина невдала =)

про імідж держави

коротко про імідж україни за кордоном:

поки не накрав — ще не до іміджу держави, а як вже накрав і будує палац — вже не до іміджу.

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

пересічний канадієць, чуючи мою українську, — ба навіть бачачи мене у вишиванці! — з сяючою посмішкою питає мене «рюс?» — і вельми дивується, коли я не розпливаюся в усмішці, а суворо відповідаю «абсолюмон па!»

хз, що з тим робить.

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

весняна мішанка

аптайм ноутбука наразі — 33 дні. далеко не рекорд, навіть для простого особистого комп'ютера, на котрім не робиться ніякої серйозної роботи. головна загроза аптаму — вогнелис, котрий, зараза, попри довжелезну історію розробки і фіксів, жере пам'ять, як дурний. другий претендент — dropbox (але тут я сам винуватий).

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

в середу мав цікавий досвід копирсання в смітнику. ага, дожився, емігрант =) історія така: пік хліб, але щось пішло не так (оливкова олія, чи зіпсуті дріжджі?) — вийшла грудка. засмутився, викинув до смітника. надвечір згадав про мішалочки від хлібопічки! вранці попрохав управителя відчинити мені смітник. порпався, порпався — не знайшов… зазирнув на ebay — мішалки по $19 штучка о_О довелося придбати на kijiji ще одну таку саму хлібопічку за $20 заради лопаток. висновок: зберігайте спокій і витягайте мішалки.

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

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

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


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

ну, бо справді, що возьмеш з дворового бика?

дми в дудку!

в зв'язку з оновленням образу «укрпошти» пропоную нове, але заряджене традиціями гасло:

ЗАГУБИЛОСЯ? ДМИ В ДУДКУ!

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

ДОВГО? ДМИ В ДУДКУ!
ЧЕРГИ? ДМИ В ДУДКУ!

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

ДОРОГО? ДМИ В ДУДКУ!

p.s. насправді то лише жарт, я сподіваюся на зміни.
довго не міг зрозуміти, як «переклади з французької» стикується з «що почитати французькою»…

…аж поки не вчитався: «що почитати французькою весною».

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

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

гонтарєва

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

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

забули? чи вас влаштовує така брехня з трибун?

аласанія

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

цитата | «а це просто мерзота. людина на ім'я pawel bobolowicz, яка пише „чи в новорічну ніч на першому національному можна почути пісні українською мовою? чи тільки російською?“ — це мерзота, яка свідомо і навмисно розпалює міжнаціональну ворожнечу».

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

рекорд

поки що це найкращий результат за 740 «заїздів»: 74 слова на хвилину @ 100%.

офлайн

нагадую собі, що нині перше квітня, і навколо безліч дурнів, котрі намагатимуться зробити дурня з іншого. так, /r/mk порадував цікавою версткою сторінки, але читати стрічку нині не варто, і вже точно нічого не коментувати. те ж стосується і f.

піду, поклацаю nitrotype.

p.s. за вікном легенько сніжить, — і це не першоквітневий жарт.

швидкодрук

пройшов кілька онлайнових тестів на швидкодрук:

1) англійська — 60 слів на хвилину, точність 99%;
2) французька — 47 слів на хвилину, точність 98%;
3) українська — хорошого тесту онлайн не знайшов, поганий дав 58 слів на хвилину, точність 100%.

потреную англійську для початку. мета — 70 слів на хвилину і точність 100%.
ще трохи порнографії для тих, хто в темі.

keyboard porno

a freak like me
just needs infinity

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

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

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

отже, фінальна версія запрошення:
  • показує номер команди в історії — червоним, якщо попередня команда завершилася з помилкою;
  • виділяє root'а кольором;
  • скорочує шлях до поточної директорії, якщо довший за 30 символів, попередньо заміняючи домашню теку на ~;
  • показує кількість фонових процесів, якщо є.
на цьому й зупинюся. анімований зняток ілюструє, як все виглядає. код на pastebin:

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

ось код для .bashrc на pastebin (див. наприкінці допису). додати довелося лише ось цей фрагмент:

$(if [[ ${#PWD} -gt 30 ]]; then echo "${PWD:0:14}..${PWD:(-14)}"; else echo "${PWD}"; fi)

працює справді примітивно: якщо довжина шляху (${#PWD}) більша за 30 символів — беремо 14 символів від початку (${PWD:0:14}) та стільки ж від кінця (${PWD:(-14)}), додавши між ними дві крапки. і жодного виклику sed, — самі лише вбудовані функції bash.

результат на анімованому знятку. мені сподобалося, залишив і собі.

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

~/Dropbox/../write

але то вже буде задачка на інший раз.

p.s. …і, звісно ж, кольорове кодування $ залежно від коду завершення — поламалося. зараз міркуватиму, як поремонтувати.

трохи поекспериментував з кастомізацією запрошення в командній оболонці (bash prompt): додавав смайлики і навіть котиків, фарбував різні частини в усі кольори веселки тощо…

награвся і повернувся до стандартного, — не зовсім, але майже:
  • додав номер команди в історії;
  • додав кольорове кодування запрошення для root'а;
  • додав кольорове кодування залежно від коду завершення попередньої команди;
  • додав індикатор кількості фонових процесів.
результат на знятку. в .bashrc таке:

export PS1='\[\e[2;37m\]\! \[\e[1;32m\]\u@\H\[\e[0m\] \w $(if [[ $? != 0 ]]; then echo "\[\e[31m\]"; fi)$([ \j -gt 0 ] && echo "\[\e[2;37m\][\j]\[\e[0m\] ")\$\[\e[0m\] '

виглядає трохи складно. але якщо врахувати, що всі фрагменти «\[\e[2;37m\]» — то лише кодування кольорів тексту, залишається основа, яка теж працюватиме:

export PS1='\! \u@\H \w $(if [[ $? != 0 ]]; then echo "(Error)"; fi)$([ \j -gt 0 ] && echo "[\j] ")\$ '

її нескладно розібрати на елементи:
  • \! — номер команди в історії (див. history);
  • \u — ім'я користувача;
  • \H — ім'я машини (повністю);
  • \w — поточна директорія (повністю);
  • $(if [[ $? != 0 ]]; then echo "(Error)"; fi) — перевірка коду завершення ($?) попередньої команди;
  • $([ \j -gt 0 ] && echo "[\j] ") — перевірка (так, в bash можна без if), чи є фонові процеси (\j);
  • \$ — запрошення ($, або ж # для root'а)
налаштував і тішуся.

простий таймер для терміналу

знайшов малесенський, практично однорядковий скрипт на форумах arch linux. переробив на сповіщення замість вікна zenity (не люблю модальних вікон), і додав звук — маю простенький таймер для терміналу:

reminder () {
  delay=$1
  shift
  (sleep $delay ; (speaker-test -t sine -f 500)& pid=$! ; sleep 0.1s ; kill -9 $pid ; notify-send "Reminder" "$*\n($(date +'%Y-%m-%d, %H:%M'))" --expire-time 0) > /dev/null &
}

найпростіше використання — додати до .bashrc (і source .bashrc, щоби можна було одразу скористатися), а тоді в терміналі:

reminder 10m "Почни вже той курс WikiMook, холєра тебе забирай!"

за 10 хвилин вигулькне нагадування (якщо встановлено libnotify) як на знятку. формат затримки — як для sleep (див. текст): 30s (секунди), 10m (хвилини), 1h (дні).

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

p.s. і курс wikimook, так…

overtype: симулятор друкарської машинки

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

…для вас, молодь, добрі люди створили overtype — онлайновий симулятор друкарської машинки:


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

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

практичної користі проект не має (окрім можливості розрукувати сторінку), бо необхідних для тренажера фукнцій не має (користуйтеся klava.org), але спробувати цікаво.

про погоду

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

inxi

в комплекті з manjaro linux йде чудовий скрипт inxi — показує звіти про склад системи, і серед іншого вміє показувать поточну погоду з трьома рівнями деталізації для вказанох локації.

одним рядком:

inxi -W Kyiv,Ukraine

детальніше з тиском, вітром, вологістю в чотири рядки:

inxi -xxx -W Kyiv,Ukraine

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

wttr.in

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

curl wttr.in/Kyiv

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

залишилося щось із цього, — inxi або wttr.in — «причепити» на alias weather в .bashrc — і більше немає необхідності відкривати веб-оглядач і питати гугл про погоду. ну, але це якщо ви проводите більше часу в терміналі, ніж у фейсбуці =)

я рускій би виучіл…

я рускій би виучіл толька за то… що ним віршував шевченко!

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

висновок? бережіть свої домени.

p.s. піду, постукаю в twitter до людини. а то якось навіть непокоїть: був блог — і нема. що я пропустив?

поновлення. у twitter'і тиша — але у facebook'у є, живий. відлягло =)
я закоханий в свою клавіатуру pok3r, але… чомусь вельми кортить спробувати planck. я сумніваюся, що мені сподобається ортолінійна схема, і що 40% вистачить для зручного використання — але бодай спробувати?

підписався на відповідний дроп на massdrop'і — почекаємо понеділка по поглянемо ціну.

p.s. щойно подумав: але як на 40% комфортно друкувати українською та французькою? гхм. треба погуглити.
(початок історії: про теоретичний іспит на водійську посвідку в канаді)

нова водійська посвідка в канаді не дійсна,
якщо водій не напише про неї в блозі

через місяць після теоретичного іспиту, 27 лютого я склав практичний іспит та отримав канадську водійську посвідку. ось як то було.

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

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

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

micro — новий nano

трохи покористувався micro, і… звик. відтепер:

alias nano="micro"

мені трохи бракує лише автозавершення слів. але не критично.

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

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

ledger --no-color --file /Dropbox/finances/ledger/tivasyk_2017.ledger --begin 2017-03-01 balance Витрати

чи подібного додав собі таке до .bashrc:

export LEDGER=/Dropbox/finances/ledger/tivasyk_2017.ledger
alias expenses="ledger --no-color --file $LEDGER --begin $(date +'%Y-%m-01' -d 'now') balance Витрати"
alias balance="ledger --no-color --file $LEDGER balance Активи Пасиви"

і тепер — поточний баланс по рахунках:

balance

витрати в поточному місяці:

expenses

банально, звісно, для кожного, хто бодай трохи користується командним рядком.

одним рядком

написав собі функцію для «розрізання» текстового рядка на слова.

split_parameters () {
($DEBUG) && printf "Received: «%s»\n" "$PARAM_STRING"
  
($DEBUG) && printf "Start parsing parameters string...\n"

  # Parameters string is not empty, contains
  #   at least one character
  local TOKEN=""
  local CHAR=""
  local i=0

  # Split the raw parameters string into array
  while [[ i -lt "${#PARAM_STRING}" ]] ; do
    local CHAR="${PARAM_STRING:$i:1}"

($DEBUG) && printf "  Reading %s: «%s» (current token: «%s», string=%s)\n" $i "$CHAR" "$TOKEN" "$STRING"
    
    case "$CHAR" in
      " " )
        PARAM_ARRAY+=("$TOKEN")
        TOKEN=""
        CHAR=""
      ;;

      * )
        # Any other character just goes to the current token
        TOKEN="$TOKEN$CHAR"
        CHAR=""
      ;;
    esac
    i=$( expr $i + 1 )
  done

  # Do not forget that token still contains last parameter
  PARAM_ARRAY+=("$TOKEN")

($DEBUG) && printf "Finished parsing. Checking array...\n"

  # Process the parametrs array to set options and read value
  for (( i=0; i <= $(expr ${#PARAM_ARRAY[@]} - 1 ) ; i++ )) ; do
    printf "  Element %s: «%s»\n" $i "${PARAM_ARRAY[i]}"
  done

}

вельми задоволений собою. але те саме робиться одним рядком:

IFS=', ' read -r -a PARAM_ARRAY <<< "$PARAM_STRING"

насправді, звісно, не все так просто. я знав про рішення з read, але сподівався навчитися зберігати фрагменти між лапками ("…") вкупі, в одному елементі масиву. не вийшло — бо оболонка прибирає ті рядки ще на етапі передачі параметрів скрипту, як я зрозумів.

тому повернувся до простішого one-liner'а.

p.s. вподобав собі розставляти чекпоінти для зневадження, згодом DEBUG=true вельми спрощує життя, якщо коли щось іде не так:

($DEBUG) && printf "…\n"

gauge

— петько́, прилади?!
— триста!
— що «триста»?
— а що «прилади»?
(бородатий анекдот)

після налаштування отого монітора процесора на іскрах мені дуже захотілося змайструвати ще кілька моніторів — пам'яті, дискового простору

тож закатав рукава і попрацював трохи на bash'тані.

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

динамічні індикатори на скрінкасті — то тестові скрипти, що в циклі викликають gauge.

одна біда: десь я нахімічив, і скрипт глючить, якщо параметри передавати не явно, а запомповувати в stdin, приміром так:

echo 45 | gauge

але я знайду причину, і тоді ніщо не спинить мене наклепати різних індикаторів до системної панельки.

монітор процесора на іскрах

індикатор завантаження процесора на скріншоті — текстова псевдографіка. вивід зліплено з пари простеньких bash-скриптів та вбудованої функції виводу панелі tint2 (так, я знову на openbox'і).

найцікавіший з двох скриптів — генератор спарклайнів spark, що я його колись давно випадово надибав на github'і та трохи підправив для своїх потреб.

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

другий скрипт, для розрахунку навантаження на процесор, я запозичив на rosetta code і теж досить сильно похакав.

p.s. скрінкаст (ще один претендент на цікавий новотвір) записано за допомогою вельми приємної невеличкої софтинки peek для linux.
пережили день святого валентина в канаді. спробую коротко передати свої враження… за допомогою образної аналогії. лише прошу не аналізувати її дослівно.

уявіть собі «день презерватива». в цей день ви купуєте кольорові презервативи і весело надуваєте разом з дітками. на вулиці чи не кожен третій громадянин і громадянка йдуть на роботу підстрибом, несучи наповнені гелієм презервативи у формі сердечок. кондитери змагаються в майстерності, виготовляючи мармулядові презервативи. в скляні презервативи наливають пиво, в'язані презервативи носять на голові, рукавички з пиптиками на кожному пальчику продаються на кожній розкладці. ієдине, чого ви не побачите і не почуєте в цей день — та й взагалі будь-якого дня, — то для чого ці презервативи насправді потрібні.

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

це все нмсд, звісно.

підтримайте українське!

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

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

звідси питання, чи то пак прохання: а чи так вже нецікаво вам читати українську стрічку на itc.ua та коментувати там? навіть якщо потенційно це могло би допомогти зробити цей якісний — найкращий наразі в україні, нмсд, — ресурс про itc україномовним?

зрозуміло, що війна, зрада і «всьо вот ета вот» важливіші, ніж така дрібничка, але особисто я хотів би колись читати український itc.ua. як ще натякнути? підтримайте українське!
не наслухаюся і не надивлюся.

текстові редактори: atom vs geany

люблю текст, а ще більше за текст я люблю… простий текст. тож мені часто потрібен текстовий редактор — і то не примітивний, а такий, щоби зручний і приємний. оскільки emacs я не подужав приборкати до пуття (а за vim навіть не брався) — жоден з них не видається мені ані зручним, ані приємним. довший час я користувався geany на linux та windows, але щось мені в ньому муляло, аж поки я не спробував…

atom. вільний текстовий редактор, зліплений з усього, що було під рукою (c++ / node.js / coffeescript / javascript / css / html — див. вікіпедію), навголо ядра chromium. я мав це спробувати.

за кілька днів повернувся до geany, і поки що з ним залишуся. далі короткий підсумок тестування.

обидва редактори
+ мають все, що потрібно для звичайної роботи з текстом (я не програмую, порівнювати специфічні функції не беруся);
+ показують стрічку з «мапою» файлу (здається, вперше з'явилася в sublime text);
+ дозволяють записувати/відтворювати макрокоманди;
+ мають чималу кількість втулків.

atom
+ має підсвітку синтаксису для формату ledger!
+ пропонує значно більшу кількість втулків, включно з досить екзотичними (кому годинник та заряд батареї ноутбука в статусі?);
+ схематична «мапа» файлу (втулок) вигулькує під час гортання, потім ховається і не заважає;
+ має режим no distraction (втулок);
+ пропонує зручніший (без модальних діалогів) інтерфейс пошуку по тексту;
– гарячі клавіші не працюють в кириличній розкладці (wtf?)
– має проблеми з відображенням шрифтів на екранах з високою роздільністю під windows (wtf?!)
– дуууууже повільно стартує, як повновісний веб-оглядач чи текстовий процесор.

geany
+ стартує миттєво!
+ виглядає чудово як на linux, так і на windows;
+ жодних проблем з гарячими клавішами незалежно від розкладки;
– не має підсвітки синтаксису для формату ledger (і щоби додати, тре, здається, мати докторат з програмування);
– не має режиму distraction-free (і не матиме, здається).

в підсумку geany не має кількох функцій, котрі не є критичними — зате бездоганно реалізує справді важливі, тому його залишив, atom згодував злому pacman'ові.

а чим ви редагуєте свої тексти?

ledger is awesome

я поки що просто залишу це тут:
цитата | «ledger is awesome stuff — it's basically a multi-variable tree structured calculator» (архів hacker news).
для тих, хто любить гуглити, дражнилочка: облік персональних фінансів у форматі plain text та автомагічне формування звітів… але цитати це не пояснює, тут треба глибше копати. колись обов'язково напишу.
нова версія vlc для linux (в моєму випадку 3.0.0) має проблему з відображенням відео на екранах hd чи 4k: картинка займає ліву нижню чверть вікна програми (скріншот).

рецепт лікування знайшовся на форумах videolan: потрібно налаштувати масштабування інтерфейсу qt перед стартом vlc:

QT_SCREEN_SCALE_FACTORS=0.5 vlc

зрозуміло, що не обов'язково щоразу друкувати так багато, можн експортувати змінну у файлі конфігурації ~/.bashrc, створити аліас для vlc з  в тому ж таки ~/.bashrc тощо. головне, що після цього відео відтворюється нормально.

телевізор: тортури вибору

я розбалуваний. дуже довго я жив собі без телевізора, а тоді взяв та й придбав 47 дюймів, трошки погугливши. і, як тепер виявилося, втрапив на дуже хорошу модель, яка мала все: якісну картинку завдяки фоновій підсвітці із зональним затемненням, домашнє 3d з пасивними окулярами, wifi, купу роз'ємів, webos, і все це — за доволі помірні гроші.

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

коротше кажучи, я не розумію, що робиться на цім ринку. припустімо, відмовлюся від 3d наразі. тоді постає кілька питаннь:
  • переплатити за smart tv з wifi, чи придбати телевізор без «розумних» функцій і підключити до raspberry pi з osmc?
  • якщо smart tv — то webos від lg, чи android від sony?

про однодумців

до улюбленої фрази «кожен думає, що він не кожен» додаю ще одну, що її щойно вичитав у фейсбуці:

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


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

коротше кажучи, мусив викласти $15 за повну збірку разом з бонусними книжками.

нема про що домовлятися

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

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

як це працює: відкриваю свій улюблений термінал (для мене це terminator в режимі консолі quake, відкривається за super+q), запускаю screen (насправді воно стартує автоматом, terminator має таку опцію) і працюю собі як зазвичай…

…аж поки не знадобиться нова закладка в терміналі. замість користуватися вікнами terminator'а (завжди забуваю гарячі клавіші!) — тисну ctrl+a, c і отримую чисте вікно терміналу; при цьому якщо в попередньому вікні щось виконувалося (приміром, wget тяг щось велике з тенет, або htop слідкував за відкритими процесами) — воно продовжуватиме виконуватися. і навіть якщо я закрию вікно terminator'а (не згорну, а саме закрию) — «закладки» screen «від'єднаються» від терміналу і продовжать жити своїм життям, аж поки я не «підключуся» до них знову.

громадське дрочить на дождь?

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

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

p.s. ілюстрацію потягнув з коментарів під дописом скрипіна.

p.p.s. а, і ще, якщо комусь потрібні пояснення щодо мого ставлення до громадського: яневський та скрипін, обидва з явно проукраїнською позицією, змушені були звідти піти, а от кутєпов, що залишився, не соромиться нападати на українців.

дід всрався

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

гаразд, підемо по-порядку.

1. «Дід шанувальник української мови, якою вільно володіє і користується нею в реальному житті, на роботі і в побуті. Ніякого геройства тут нема, просто так склалося життя».

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

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

2а. «Водночас дід вільно володіє і російською мовою (теж так життя склалося) […]»

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

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

трейлер «сторожової застави»

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


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

p.s. фільм має свій вебсайт (пустий-пустісінький наразі), а також профілі у facebook, instagram та канал на youtube. цікаво, що хоч режисер москвомовний (да какая разніца?) і знімальна група працює московитською, але ж хоч двоє з трьох богатирів говорять українською на майданчику…
гаразд, я поборов тачскрін — тепер працює гортання двома пальцями, масштабування та емуляція правої кнопки миші за довгим тапом, решта жестів мені не потрібні, тож не пробував.

початок історії з налаштуванням планшетного режиму в попередньому дописі.

в тенетах знайшлося багато підказок та рецептів на різні випадки, які лише умовно можна об'єднати темою «тачскрін і linux», і треба думати. мій випадок був такий: manjaro linux (на базі arch'а) розпізнав тачскрін як підключений пристрій, підключив драйвер і дозволив користуватися як однокнопочною мишкою. найточнішу підказку знайшов на форумах arch'а. ось вивід xinput list:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SYN1B7B:00 06CB:2991 Touchpad             id=10   [slave  pointer  (2)]
⎜   ↳ SYNAPTICS Synaptics Touch Digitizer V04 Pen       id=14   [slave  pointer  (2)]
⎜   ↳ SYNAPTICS Synaptics Touch Digitizer V04   id=15   [slave  pointer  (2)]
⎜   ↳ TESORO TESORO Gaming Mouse                id=16   [slave  pointer  (2)]
⎜   ↳ TESORO TESORO Gaming Mouse                id=18   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Acer WMI hotkeys                          id=12   [slave  keyboard (3)]
    ↳ HD WebCam                                 id=13   [slave  keyboard (3)]
    ↳ TESORO TESORO Gaming Mouse                id=17   [slave  keyboard (3)]
    ↳ USB-HID Keyboard                          id=19   [slave  keyboard (3)]
    ↳ USB-HID Keyboard                          id=20   [slave  keyboard (3)]

цікаво, до речі, чому миша tesoro sagitta spectrum зареєструвалася як два пристрої… але то питання на інший раз. тачскрін теж зареєстрований двома пристроями, і я не розумію, що то за pen (id=14), адже стилусом не користуюсь; мене цікавив лише id=15 (підсвітив кольором). параметри пристрою (вивід xinput list-props 15):

Device 'SYNAPTICS Synaptics Touch Digitizer V04':
        Device Enabled (139):   1
        Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix (449):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Calibration Matrix Default (450):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Send Events Modes Available (262):     1, 0
        libinput Send Events Mode Enabled (263):        0, 0
        libinput Send Events Mode Enabled Default (264):        0, 0
        Device Node (265):      "/dev/input/event13"
        Device Product ID (266):        1739, 30332
        libinput Horizontal Scroll Enabled (267):       0

отже, суть підказки на форумах arch в тому, що потрібно додати відповідний розділ до файлу конфігурації xorg. в старіших дистрибутивах це /etc/X11/xorg.conf, а в новіших може бути кілька окремих файлів у теці /etc/X11/xorg.conf.d — у мене там лежали файли з налаштуваннями клавіатури, монітора та ще якась інформація від автоматичного конфігуратора manjaro, але нічого про тачскрін:

00-keyboard.conf
90-mhwd.conf
90-monitor.conf

задля експерименту я створив новий файл у цій теці (з-під рута або sudo!), назвавши 10-touchscreen.conf, додав запропонований на форумі код.

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

Section "InputClass"
        Identifier "touchscreen"
        MatchIsTouchscreen "on"
        Option "Mode" "ABSOLUTE"
        Option "TapButton1" "1"
        Option "TapButton2" "2"
        Option "TapButton3" "3"
        Option "Evdev Wheel Emulation" "on"
        Option "Evdev Wheel Emulation Axes" "6 7 4 5"
        Option "VertTwoFingerScroll" "on"
        Option "HorizTwoFingerScroll" "on"
        Option "EmulateTwoFingerMinZ" "40"
        Option "EmulateTwoFingerMinW" "8"
        Option "CoastingSpeed" "0"
        Option "VertScrollDelta" "50"
        Option "HorizScrollDelta" "50"
        Option "ZoomDistance" "100"
EndSection

і це, власне, все. можна перезавантажити комп'ютер, або лише ікси (ctrl+alt+backspace), і тачпад працює як слід. я в захваті від свого 13-дюймового планшета =)
ранок першого навчального дня після довгих святкових канікул завжди виглядає і звучить десь приблизно так…


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

якщо комусь цікаво, як може виглядати самогубство сапоспалення самопоховання в тенетах — ось вам кейс, вивчайте =)

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

p.s. дельфіни були лаконічніші!

ноутбук в режимі планшета

припустімо, у вас є сучасний ноутбук-трансформер з сенсорним дисплеєм, і на ньому linux, і це не ubuntu… тоді є висока ймовірність, що…
  • серсорний екран працює в примітивному режимі (без мультитача і жестів на кшалт скролу двома пучками);
  • після складання в планшет клавіатура і тачпад не працюють;
  • екранної клавіатури немає «з коробки»;
  • нема як швидко повернути зображення на екрані в портретну орієнтацію та назад;
  • автоматичний поворот зображення не працює.
і так, ubuntu не пропонувати (так само як встановлення kde/plasma, якщо там все це працює з коробки).

поки що не все з цього пофіксив, але дещо знайшов.

екранна клавіатура

поки що користуюсь onboard, але без зручностей, до яких звикаєш на мудрофоні: скажімо, відкривати клавіатуру доводиться руками з системного меню (хоча onboard має опцію автоматичного вигульку, але вона не працює без модуля gnome, який в мене не вставновлений і поки що не потрібен.

увімкнення клавіатури і тачпада

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

#!/bin/sh
[ "root" != "$USER" ] && exec sudo $0 "$@"
lsmod | grep '^[^ ]*hid' | cut -f1 -d " " | xargs -n1 rmmod
udevadm trigger
sleep 1
xinput|grep SYN1B|cut -f2 -d"="|cut -f1|xargs -n1 xinput --enable

скрипт потребує рутових прав для роботи, довелося трохи поморочитися із sudoers'ами, аби дозволити виконання з користувацького профіля.

поворот зображення

для повороту знайшов інший простий скрипт. довелося трохи змінити один рядок, бо в мене xrandr не позначає поточний екран як primary:

XDISPLAY=`xrandr --current | grep " connected" | sed -e 's/ .*//g'`

так, в лапках є пробіл перед connected, інакше, природньо, grep видає також рядки з disconnected. запускається з параметром normal / left / right / inverted для встановлення відповідної орієнтації, рута не потребує.

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

далі буде.

пиха й зарозумілість

я давно не агітую за linux чи вільне пз. але час від часу трапляються цитати, які хочеться потягти собі до колекції навіть попри те, що вони схожі на «пропаганду здорового комп'ютингу».
цитата«краса linux відкрилася мені досить нещодавно, завдяки замітці про чергову презентацію apple для преси. під час події якийсь менеджер з apple зауважив, що у світі є 600 мільйонів комп'ютерів, яким виповнилося 5 років чи більше. і він додав, що то є сумно, на що аудиторія відповіла [схвальним] сміхом. коли я це прочитав, — покрутив головою. на думку спали такі слова як пиха й зарозумілість» (opensourcemusings).

до речі, цікавий щоденник, додам собі до списку читання.
днями отримав два пакуночки — один раніше, від massdrop, і другий оце сьогодні, від китайців через ebay. розпакуємо?

допис короткий, лише фотографії без коментарів, і зацікавить не кожного. ну, а кого зацікавить — заздріть =)