Ссылки за январь 2014

Elysium — 6/10

"Healthcare for all, for everyone, so that no one leaves untreated!"© Nice action in unbelievable dystopia.

карандаш и бумага

сегодня мне на глаза попалось очередное упоминание о том, как люди предпочитают решать некоторые сложные задачи не на компьютере, а с карандашом и бумагой. Я вспомнил, как недавно делал именно это, задумался о своих ощущениях в процессе, и, кажется, нашёл хорошее и простое объяснение

в повседневной жизни мы не замечаем того, как наш в мозг в фоновом режиме решает довольно сложные задачи с абстракциями. Например, даже связь движений мышки с курсором на экране не так-то проста. А уж то, как мы при помощи этого курсора взаимодействуем с разными картинками, которые символизируют объекты и интерактивность, требует долгого обучения и, полагаю, немалых мозговых усилий в процессе использования. Когда же нам нужно решить абстрактную задачу, на которую и без того невеликих абстрактных вычислительных способностей мозга едва хватает, выбрасывать заметную их часть на управление вспомогательным инструментом просто глупо. Так что, беря в руки карандаш, мы высвобождаем последнюю каплю специфического ресурса мозга, чтобы взяться за проблему с полной отдачей

по идее, планшет со стилусом в режиме простого рисования должен быть так же хорош, как и бумага, но скорее всего недостаточная скорость отклика тоже будет отвлекать

The World's End — 7/10

Pubs, dead moms, new threat, and amazing fight scenes. I guess, there's a little extra for those feeling that naturally flawed joyful people around them are replaced by boring goody-goodies.

The Kids Are All Right — 6/10

Good drama with quite believable characters

кот — это прилагательное

общее у технократов и разоружателей

я довольно давно придерживаюсь позиции, что люди должны иметь право носить с собой оружие, и в этом посте хочу обсуждать не её

недавно я заметил любопытное сходство подходов к решению проблем у сторонников запрета на ношение оружия и, условно, технократов. Технократами я назвал людей, которые пытаются победить некоторые сложные проблемы исключительно техническими средствами

базовая позиция у разоружателей обычно такая: оружие можно использовать для совершения преступлений, поэтому его нужно запретить, и считать преступником каждого человека с оружием в руках и без полицейской бляхи. Иногда эта позиция дополняется разными уточнениями, но начинается всегда с этого. Анализируя такой подход, мы видим, что разоружатели игнорируют общую полезность оружия, и фокусируют своё внимание только на частном случае применения оружия для совершения преступления. Предложенное ими решение не предпринимает никаких попыток сохранить пользу, борясь с вредом

из технократических решений я расскажу про биткоины, хотя подсознательно чувствую аналогичную проблему и у других решений тоже. Экономику я понимаю на довольно примитивном уровне, но полагаю, что даже его достаточно, чтобы увидеть ошибку. Итак, одно из базовых обещаний биткоина состоит в отмене контроля потенциально злого государства над деньгами посредством децентрализации и криптографии. Попутно отменяются транзакционные расходы в виде комиссий за платежи

легко заметить, что сторонники биткоина повторяют ошибку разоружателей, и фокусируют внимание на частных проблемах, игнорируя общую полезность системы. Частные проблемы — плата за транзакцию и риск злонамеренной манипуляции центральным органом. Первая общая полезность — правильная манипуляция центральным органом для соответствия денежной массы ВВП (при фиксированном количестве денег и растущем производстве ценность денег растёт и все начинают просто складывать их в условный матрас, изымая их из оборота). Вторая общая полезность — отношение к деньгам, как к долговому обязательству общества перед человеком, которое, вообще-то, нельзя украсть. Нельзя ведь украсть «сыновний долг», например. Вот и «украденные» из банка деньги не уменьшают обязательств общества перед вкладчиками банка

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

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

How doctors die

It’s not a frequent topic of discussion, but doctors die, too. And they don’t die like the rest of us. They know exactly what is going to happen, they know the choices, and they generally have access to any sort of medical care they could want. But they go gently.

sentry: сбор и анализ ошибок

TL;DR open-source программа Sentry очень помогает собирать, группировать и анализировать ошибки в веб-приложениях и прочих программах

не знаю, как вы, а я до недавнего времени использовал только самые примитивные методы для отслеживания ошибок. Самым первым было «исключение-на-емейл», и наши почтовые ящики нередко взрывались. В нокии мы складывали ошибки в серверные логи и пытались потом их анализировать при помощи Splunk (кстати, для своей задачи это отличный инструмент, рекомендую). А уж сама идея, что можно поймать яваскрипт-исключение в браузере и отправить его на сервер, казалась откровением

по вполне очевидным причинам эти методы работали плохо. Разобраться в списке из пары сотен объектов — сложная задача, а когда ошибок в логах популярного сервиса тысячи и десятки тысяч, руки просто опускаются. К счастью, многие программисты решили, что так быть не должно

в результате сейчас есть больше десятка сервисов, которые выполняют за вас всю рутинную работу и дают удобные инструменты для работы над ошибками. Самый первый и важный этап при этом — группировка одинаковых ошибок — в буквальном смысле уменьшает количество объектов для анализа на десятичные порядки. Например, со ста тысяч событий до ста групп ошибок, и это ещё тяжёлый случай. Из группировки естественно следует и подсчёт размера каждой группы, что даёт некоторое представление о важности каждой ошибки

уже такая группировка может показаться подарком богов, но разработчики не останавливаются на этом, и предоставляют дополнительные удобства. Например, оповещать по почте только о новых группах ошибок. Или автоматически создавать новую задачу в багтрекере. Или отмечать группу ошибок как исправленную, чтобы она не маячила перед глазами, и чтобы список групп можно было напрямую использовать как TODO. Или показывать исторические тренды проявления ошибки. Или фильтровать по разным параметрам типа платформы, браузера, сервера, кластера, или предоставленного самим приложением тега. И всё это почти для любого языка!

а у яваскрипт-приложений есть своя специфика, которая практически блокирует возможность решить проблему с наскока. Например, разные браузеры имеют разный формат сообщений об ошибках. И стек вызовов в них часто выдаётся по-разному. А у эксплорера текст сообщения об ошибке переводится на язык системы. Ну и минификация кода добивает любую возможность анализа

однако всё это — решаемые проблемы. Для единообразного вида стека вызовов есть библиотеки. Межбраузерная и межязыковая группировка тоже вполне достижима. С минификацией же успешно борются source maps

и вот тут поджидает засада. Нам кровь из носу нужна де-минификация. Для неё нужно предоставить source map, а это равносильно предоставлению исходного кода. Не всякий проект согласен открыто выложить свои исходники. А из десятка сервисов только RollBar согласен не требовать source map в открытом доступе, а получить её другим способом. Впрочем, есть ещё один вариант…

конечно, удобно, когда кто-то другой решает за тебя твои проблемы и берёт за это умеренную плату. Но в погоне за сохранностью исходников вполне можно взять на себя часть работы по установке локального сервиса. К счастью, такой сервис есть, и называется он Sentry. Его разработчик не только предоставляет Sentry как готовое SaaS-решение для анализа ошибок, но и делится исходниками с самыми параноидальными

поднять Sentry локально довольно просто, я управился за час. Подключить к коду плагины для отправки сообщений (под общим названием Raven) тоже дело простое. Остаётся только складывать в локальное хранилище source maps для разных билдов и включать в них собственно исходники (в поле sourcesContent). А потом можно откинуться на спинку кресла и наслаждаться : )

sentry interface screenshot

впрочем, у других сервисов часто бывают бесплатные тарифы с ограниченным количеством ошибок, которые могут кому-то подойти, так что вот вам список: ErrorCeption, JSLogger, QBaka, Muscula, TrackJS, BugSense, RayGun, BugSnag, RollBar, Errorify, AirBrake

I swear Facebook is slowly turning into Lotus Notes…

…It's got the the little messenger panel on the right. It's got the clunky mail client, it's got the calendar and you can invite people to a meeting/party. You have to use it because everyone else uses it and everyone else uses it because it's been around for years.

Pain & Gain — 5/10

This comedy about organised group of stupid criminal bodybuilders is not funny, and also sad

The Heat — 6/10

Sandra Bullock plays yet another strong independent woman, and this time she's got a matching partner

R.I.P.D. — 5/10

Undead but good cowboys-cops with seriously big guns shoot their way through the Apocalypse

иванушка-underdog

The Lorax — 7/10

Nice boys' cartoon with a style and a slightly annoying guardian

Cinderella Man — 6/10

Captivating boxing and some biographical backstory of a humble Irish-American boxer

to be discontinued…

The Lone Ranger — 6/10

One farce of a western. "Farce" in a good sense, not as a derogatory term.

Odd Thomas — 7/10

"Crime-solving teenage psychic" does not sound like a recipe for a good movie anymore, but this one is unexpectedly good

you are in no condition to operate a metaphor

← предыдущий месяц