default

Purple Tentacle keyboard

Окей, оно готово. За этот отпуск я сделал себе клавиатуру.

Клавиши — Matias Quiet Click. Реально стучат тише, а тактильный фидбек ярче, чем у Cherry MX Brown.

Корпус конструкции «бутерброд»: дно — нержавеющая сталь 1 мм, стенки — оргстекло 10 мм, монтажная пластина — снова нержавеющая сталь 1 мм, сверху рамка опять из оргстекла.

Электроника собрана методом бесплатного монтажа (то есть без печатной платы).

Подставки под ладони — от клавиатуры Matias Ergo Pro. Мягкие, гелевые, прикольные.

Внутри — микроконтроллер Freaduino Micro (аналог Arduino Micro), на чипе Atmel ATMega32U4. Его пинов ввода-вывода как раз хватает на матрицу из 12 полурядов по 8 клавиш и на три светодиода.

Прошивка — TMK Keyboard Firmware by Jun «hasu» Wako. Скомпилировалась, прошилась и заработала буквально с полпинка.

Раскладка по мотивам Truly Ergonomic и Keyboardio. Примерная логическая раскладка тут.

Потратил на всё это около 215 долларов США, вместе со всеми пересылками, лазерной резкой прототипа и деталей корпуса. То есть сравнимо со стоимостью массово производимых клавиатур такого класса. И ещё осталось полкоробки клавиш на второй экземпляр.

Со временем выложу все исходники как open source hardware.

This entry was originally posted at http://yurikhan.dreamwidth.org/68819.html.
default

Ещё об веб-иконки

В предыдущих сериях: иконочные шрифты, отсутствие хинтинга в SVG-иконках.

Новый идиотский тренд: мало того, что иконки запихивают в шрифт, так ещё и задают как лигатуры. То есть слово search, набранное шрифтом Material Icons, превращается в иконку лупы.

При отсутствии соответствующего шрифта всё это выглядит как ужас:

This entry was originally posted at http://yurikhan.dreamwidth.org/68275.html.
Tags: , ,
default

За что я не люблю YAML

Спецификация JSON’а вмещается в пять страниц и её может читать пятиклассник. Однажды прочитанная, она укладывается в голову навсегда.

Спецификация YAML — это 84 страницы мелкого умного текста. Попробуйте запомнить, чем отличается unquoted, 'single-quoted', "double-quoted", | literal и > folded скаляры, и как в них работает удаление ведущих пробелов.

И ещё вот эта грабля с массивами и отображениями, эта дурацкая неоднородность в окрестности нуля:

# Массив из двух элементов
array2:
  - foo
  - bar

# Убираем один, получаем массив из одного элемента
array1:
  - foo
  #- bar

# Убираем один, получаем пустой массив?
array0:
  #- foo
  #- bar

# Отображение из двух ключей
map2:
  foo: bar
  baz: quux

# Убираем один, получаем отображение из одного ключа
map1:
  foo: bar
  #baz: quux

# Убираем один, получаем пустое отображение?
map0:
  #foo: bar
  #baz: quux

А вот фиг. Значения array0 и map0null.

Сейчас начнутся возражения, что если тебе нужен пустой массив или пустое отображение, то напиши [] или {} соответственно. Ну так продемонстрируйте, как это будет выглядеть в вышеприведённых примерах. Чтоб раскомментирование элемента немедленно приводило обратно к одноэлементной коллекции.

Опять-таки, если мы согласны писать скобки и запятые, почему мы не пишем JSON?

This entry was originally posted at http://yurikhan.dreamwidth.org/67566.html.
default

Юникодное

А вот с каких пор и хрено́в ЖЖ стал заменять юникодные символы на иконки? И как это отключить?

↔ ← здесь должен быть символ стрелки влево-вправо

Upd. Это скрипт Twitter Emoji. Блокировать для начала twemoji.min.js$script, а там дальше видно будет.

This entry was originally posted at http://yurikhan.dreamwidth.org/67135.html.
Tags: , ,
default

Мой провайдер идиот

Пьеса в трёх действиях, пяти картинах, PG-13 (демонстрация обнажённых сетевых коннекторов, возможно грубая лексика).

Действие первое

Картина первая

Среда, 2016-09-07, 12:30 UTC+7. Я сижу на работе. Входит Мониторинг.

Мониторинг (красным жирным Ариалом 24pt): PROBLEM Alert! (Спокойно:) Connection to host […] timed out after 10 seconds.

Я: А! Что! Кого? (Захожу по ssh через IP-адрес от запасного провайдера.) Доложить обстановку!

Маршрутизатор: Докладываю: Дом.ru — исправен, МТС — исправен, внутренняя сеть — исправна, Электронный город — нет линка. Работаем через МТС.

Я: Так держать.

Занавес.

Read more...Collapse ) This entry was originally posted at http://yurikhan.dreamwidth.org/66985.html.
default

CLI как язык

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

Название бинарника может быть глаголом в повелительном наклонении (reboot) или существительным в роли обращения (firefox, git). В последнем случае отсутствие аргументов соответствует запуску приложения с пользовательским интерфейсом; если аргументы есть, то первый — это опять глагол в повелительном наклонении (git fetch).

Ключ без аргумента соответствует наречию, обычно в роли обстоятельства образа действия (--quietly, --verbosely; по истерическим перчинам устоялось написание без суффикса -ly).

Ключ с аргументом — это косвенное дополнение, где имя ключа играет роль предлога (install -t /usr/bin fooустановить в /usr/bin foo); или уточняющее родовое слово в составе прямого дополнения (install -d /var/lib/fooустановить каталог /var/lib/foo).

Позиционный аргумент — это прямое дополнение (git clone git://github.com/git/git.git).

Это, конечно, не все паттерны — что-то я наверняка упустил.

Базовый язык для команднострочного интерфейса — разумеется, английский. (Если бы командную строку изобрёл японец, глагол ставился бы последним, а sudo записывалось бы как 下さい [kudasai] после глагола.)

Собственно, я это всё к чему? У системы виртуализации/контейнеризации LXC есть команды lxc-start, lxc-stop и несколько других. И все они принимают название контейнера, над которым работать, именованным аргументом (lxc-start -n foo). Жутко бесит. Очевидно же, что это должно быть прямое дополнение.

This entry was originally posted at http://yurikhan.dreamwidth.org/66551.html.
Tags: , , ,