швидкодрук

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

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

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