-
Мой вклад в clj-http
В проект clj-http приняли мой скромный пулл-реквест. Теперь, если запрос был вызван с флагом
:throw-exceptions true
и вернулся плохой ответ (статус не 2хх, 3хх), то во вбрасываемый словарь добавляеся ключ:type :clj-http.client/unexceptional-status
. Это на ура работает с библиотекой Slingshot, потому что отлов исключений по полю:type
стал негласным стандартом.Если абзац выше звучит для вас бессмыслецей, расскажу подробней. Изначально в Кложе идут унылые Java-исключения, которые плохо ложатся на мир структур и коллекций. Но поскольку Кложа это Лисп, а в Лиспе любая проблема решается его же силами, умельцы написали библиотеку для альтернативных исключений slingshot.
Библиотека упрощает работу с исключениями до мыслимого предела. Теперь можно вбрасывать не только объект, унаследованный от Throwable, а вообще что угодно. Лучше всего подходит словарь. Форма отлова исключения, выброшенного из slingshot, может иметь разную структуру. Например, предикат, но удобней и короче будет вектор двух элементов, где первый – ключ, а второй – значение.
Если раньше приходилось передавать неочевидный предикат, который проверял, что в словаре есть поле
status
, и оно числовое:(catch (fn [response] (-> response :statsus integer?)) ...)
, то теперь достаточно сравнить так:
(catch [:type :clj-http.client/unexceptional-status])
Визуально разницы мало, но селектор по ключу
:type
открывает новые горизонты. Например, во фреймворке Compojure API, на котором наш проект, обработка исключений целиком работает на этом принципе. В особом словаре лежат ключи – потенциальные варианты:type
, а значения – функции-обработчики. Хорошие примеры в документации.Пока пулл-реквест не приняли, приходилось писать свой костыль для добавления ключа. Теперь с этим покончено.
-
Статья в Associated Press
В издании Associated Press опубликована статья об айти-специалистах Воронежа, в том числе из нашего офиса. Я немного рассказал про удаленку, деньги и прочие детали, словом, все то, что описывал в посте про удаленную работу. Мой коллега Михаил поделился взглядами на рынок специалистов и воздействие кризиза на айти.
Фотографии в хорошем качестве и видео на сайте AP доступны только по платной подписке.
-
Синтаксис
Незрелый программист судит о языке по синтаксису. Эти скобочки люблю, а такие нет. Языки с отступами не рассматриваю. Требую коммерческую ИДЕ с дебагом мышкой.
Это проблема.
Каждый язык обладает неповторимым портретом. Он складывается из идей, которые вложил в него автор. Как устроены коллекции, как ведут себя типы-примитивы, какая парадигма господствует.
Автор выбирает тот или иной синтаксис, чтобы выразить внутреннее устройство языка явно. Чтобы программисты смогли понять заложенные в языке принципы. Верно их применить.
Бывает, синтаксис не только справляется со своей задачей, но и привносит преимущества, недоступные в другим синтаксисам. Например, любой диалект Лиспа автоматически несет мощь макросов и метапрограммирования в дополнение к языку.
Обыватели полагают, что Кложа – это очередной “современный” Лисп. Это рассуждение дилетанта. Кложа – самостоятельный язык с принципиально новыми идеями, оформленный в виде Лиспа. Его создатель мог бы выбрать сишный или питонячий синтаксис и получить какой-нибудь Котлин или Скалу со своими особенностями.
Синтаксис – это внешность языка. По налогии с людьми, внешность бывает обманчива. Человек заметил это еще в древние времена: не тот друг, кто красиво выглядит, и не тот враг, кто некрасив.
Посмотрите на этого человека. Выглядит он слегка комично. Волос нет, черты лица ассиметричны: нос скошен, левое ухо больше, глаза неровные. А это, на минутку, Сет Годин – мировой эксперт по маркетингу, автор научных работ и бестеллеров.
Сделал он столько всего хорошего, что другим и за несколько жизней не сделать. С такой внешностью, да.
Следующий тезис выделю особо.
Я слышал много раз, что у Лиспа странный синтаксис, но ни разу не слышал, что он не решил какую-то задачу
Когда вы жаловались, пытались сделать что-то полезное? Например, распарсить XML, JSON, дернуть урл или сходить в базу. Спорю, что даже не пытались, потому что все это Лисп делает на раз.
Фразы о синтаксисе обычно исходят от самовлюбленных нарциссов, которым лень пошевелить головой. Малейшая неожиданность, мозг потревожен – включается агрессия. Плохой синтаксис!
Человек привыкает ко всему. Садишься за Лисп, и непривычно. А недавно, после двух месяцев Кложи, сел за Питон и все вызовы функций напихал в скобки. Уже автомат.
Испытываешь приятно чувство, когда видишь стену кода на Лиспе и скачешь по нему вверх и вниз с полным пониманием, что происходит. Синтаксис уходит и остается только смысл, заложенный в код. Я читал, похожее чувствуют спортсмены, когда прорывают очередной рубеж. Только здесь работает голова, а не тело.
Синтаксисы хороши все. Важно видеть за синтаксисом природу языка, тогда не будет проблем с восприятием синтаксиса.
-
Что почитать на выходных №4
Поехали:
-
Starting a Node.js app with ClojureScript and Boot (английский)
Небольшой туториал как начать проект на Ноде с Кложе-скриптом. Да, под Ноду можно спокойно писать на cljs.
-
Why I Don’t Publish E-Books (английский)
Егор Бугаенко о недостатках электронных книг.
-
Николай Товеровский (сотрудник Бюро Горбунова) объясняет разницу между “делать” и “сделать”. В рамочку и на стену.
-
И на сладкое: Голый патриарх, или Закон Микки Мауса
Александр Невзоров как всегда прекрасен.
-
-
Двенадцатая встреча
Провели двенадцатую встречу. Двенадцатую, Карл! Целый год без пропусков, в жару и холод, в будни и на майских. 25 выступлений, 12 докладчиков. Отдельным постом я расскажу, с чего все начиналось и как вообще держится, я пока что свежие видосы.
Антон Чикин рассказал про мердж в Гите:
Артем Трубачев топил за веб-сокеты, послушал с удовольствием:
Косяки: я вел трансляцию в Перископе, ушла только половина эфира. В следующий раз нам грозятся дать личный пароль от Дом.ру, так что есть надежда. Во время записи опять налажал со звуком: писал на встроенный микрофон мимо петличного, звук вышел не ахти. Зато слышен весь бред из зала :-)
На следующую встречу уже запланированы выступления: про Докер и No-SQL базы данных. Следите за новостями. Хотите выступить – пишите в личку. Напомню, на тему Рефакторинга мы общаемся в чате Телеграма.
-
Что почитать на выходных №3
В этом выпуске:
-
Мой скромный опыт в роли HR (русский)
О вечном: работе и найме. Под “мой” в данном случае подразумевается опыт Александра. Тема собеседования мне очень интересна, я писал о нем неоднократно: раз, два, три, четыре.
-
Rich Hickey: Spec-ulation Keynote (видео, английский)
Опубликованы доклады с Clojure/conj 2016 (плейлист). Судя по заголовкам, все доклады интересные, но пусть это будет Рич в качестве главного рекомендуемого к просмотру.
-
На сладкое: Один день из жизни Николая Ивановича (русский)
Просто читать до конца.
-
-
Емакс в терминале
Долгое время я пользовался Емаксом с графическим интерфейсом. Для Мака такой Емакс качается с сайта Emacs For Mac OS X и ставится как обычное приложение в папке
Applications
.Два месяца назад перешел на версию для терминала. Ниже короткие заметки о том, как это сделать и что изменилось.
Установка из пакетов. Для Мака ставится из brew:
brew install emacs
. На момент написания статьи скачивается версия 25.1. Важно: бинарник находится по пути/usr/local/Cellar/emacs/25.1/bin/emacs
! Если вы введете в терминале простоemacs
, то запустится/usr/bin/emacs
, у меня это какое-то старье.Внешний вид. Я использую стандартную цветовую схему
light-blue
из коробки. Включается командой(load-theme 'light-blue t)
. В терминальной версии цвета немного другие. Сравните графическую версию:и терминал:
Размер текста. Для комфортной работы я нашел полезным ставить шрифт покрупнее. Глаза нам даны одни на всю жизнь, так что лучше их поберечь. В графической версии высота шрифта меняется командой
(set-face-attribute 'default nil :height 140)
(140 – моя метрика, подобранная эмпирически). В терминале, конечно, это не прокатит. Поэтому я просто жму три разаCmd + =
. Получается как на рисунке ниже (картинка специально обрезана, чтобы вошла в колонку без масштабирования):Курсор. Больше недели не мог настроить цвет курсора в терминале. В графической версии был красный, а в терминале серый. Сливается в голубым фоном, глазам трудно найти. Команды вроде
(set-cursor-color "#ffffff")
не помогают. Оказывается, в маковском терминалеIterm2
цвет курсора и текста под ним регулируется силами самого терминала. Пришлось поправить настройки:Вместе с цветом курсора (Cursor) можно включить легкое цветовое выделение текущей строки (Cursor Guide).
Общие впечатления. В целом мне показалось, что терминальная версия работает быстрее графической. Изредка бывают артефакты при сложной прорисовке (несколько рабиений окна, например), а так все ок. Мини-буфер, попапы работают как надо.
Напомню, мой конфиг Емакса с комментариями лежит в Гитхабе.
-
Что почитать на выходных №2
В этом выпуске:
-
История одного тестового задания (русский) – забавный пост о том, как кандидаты справляются с практическим заданием при трудоустройстве. Каждый абзац прекрасен. С юмором, тонко и по делу.
-
Simple Made Easy (видео, слайды, английский) – ТОТ САМЫЙ доклад Рича Хики, что делит жизнь пополам. Серьезно: очень мощное выступление Рича. Без привязки к конкретному языку.
-
Культ женской глупости (русский) – Арина Холина о женщинах и интеллекте.
Что, мало про технологии? Да забейте. Дайте мозгу отдохнуть.
-
-
Отказ
Дональд Трамп отказался от президентской зарплаты в $400.000. Вместо этого он будет получать один доллар. На меня это произвело большое впечатление. Когда я упоминаю об этом, слышу гнилой базар что у Трампа денег много, и он чуть ли не был обязан так поступить.
Те, кто так рассуждают, мещане. Давайте-ка я объясню.
Во-первых, считать чужие деньги некрасиво. Да, Трамп богат, но мещанин всегда видит только одну сторону медали. То, что богатый человек выплачивает по 25 миллионов долларов в судах, его не интересует.
Далее, нет установленной суммы, после которой считается, что ты получаешь “много” и можно отказываться от денег. У каждого человека эта планка своя, но в среднем стремится к бесконечности.
Когда говорят: будь у меня столько денег, и я бы отказался, то, извините, это пиздеж. Потому что реальность в том, что у вас никогда не будет таких денег и вы ни от чего не откажетесь.
Бедный мечтает о самом необходимом: жилье и питании. На этом его интересы заканчиваются. А у богатого планы шире! У него бизнес, инвестиции, суды. Для бедного все, что превосходит его потолок, считается роскошью. Он обещает, что, удовлетворив минимальные потребности, раздаст излишки на благотворительность.
Легко обещать, зная, что никогда не понесешь ответственность за сказанное.
Вот вы зарабатываете 50 тысяч рублей, на жизнь хватает. Откажетесь ли вы от халявных 100 тысяч? Нет же. Вы скажете: будь у меня миллион, я бы не взял. А будь миллион, скажете, что все равно на квартиру не хватит, так что возьму.
Вам вообще приходилось от чего-то отказываться? Например, от денег, на которые вы морально не претендуете. Или от вещей, которые в прекрасном состоянии, но просто вы ими не пользуетесь?
Вот вам на размышление: под Новый Год дают премию в размере одной зарплаты. Вы знаете, что работали хреново, без конца срались в чатиках и смотрели смешные картинки. Откажетесь от денег?
Дома у вас компьютер и ноутбук, пользуетесь чем-то одним. Отнесете лишнюю технику в школу? Подарите малообеспеченным соседям?
Сделайте что-то подобное, а потом говорите.
Вердикт: даже очень богатый человек, отказываясь от крупной суммы денег, поступает благородно. Искать этому причину в размере доходов – мудачество.
-
БиБиСи говно
Я не знаю, кто решил, что БиБиСи делает хорошие обучающие фильмы. Да, наснимали их кучу, заполонили ТВ и Ютубы. А вы их видели? Пытались посмотреть целиком? Я не вынес и 15 минут. Что интересно, сын – тоже.
Подозреваю, что когда-то фильмы БиБиСи были действительно качественными и несли крупицы образования. В тот момент руководство почуяло, что пипл хавает. Начали масштабное производство, продали каналам, подсадили школы. Конечно, качество просело.
Чтобы вы знали, что представляет собой типичный “образовательный” фильм БиБиСи, представьте вечерний НТВ. Резкий, агрессивный монтаж. Попытка навязать значимость лишним деталям. Строй повествования скачет. В кадре без конца появляются люди, которые говорят 10 секунд, а затем пропадают навсегда. Кто это был – эксперт или уборщица?
Нет логических пауз. Фильм гонят, как боевик, не дают переварить информацию. Русский перевод ниже всех санитарных норм, наложен поверх оригинальной дорожки. Это и есть типичный фильм, который, по мнению БиБиСи, обучает и развивает.
Показывают ядовитого паука. Резкие кадры, челюсти, мы все умрем. Внезапно, ученый: этот паук поразил меня! Снова резкие кадры. Какая-то баба: паук до сих пор представляет загадку для всего человечества! Диктор говорит за дикие пальмы. И так два часа.
На Ютубе крайне трудно найти что-то на тему космоса или природы, чтобы это было не БиБиСи. Поиск выплевывает бесконечный список халтуры. Везде одно и то же – никакое повествование и говно-перевод.
Такое видео отупляет. Ребенка не обманешь – после хороших, годных фильмов халтура не катит. И не рассказывай, что это БиБиСи. Мне искренне жаль американских и европейских детей, что им впаривают это говно в школах.
Если сделать обобщение, боюсь, прозвучит оно не очень оптимистично. Обучающее видео никогда не будет масовым. И не только видео, а вообще любые учебные материалы. Нельзя сделать 1000 классных обучающих роликов. Нельзя выкатить 1000 хороших обучающих статей, если только вы не Дональд Кнут, потративший на это жизнь. Массовые обучающие материалы – такой же способ заработка, как Эмвей или МММ.