flackus

5 октября 2015, Saint Petersburg, Russia

# Понедельник 83 твита

На этой неделе с вами @flackus. Петербуржец, разработчик интерфейсов в Яндексе. Делаем рантайм на node.js и бухаем винчик.

9:23

Про БЭМ, йогу и аджайл ничего не будет, но могу подсказать хорошие бары в Питере. Ну или про машины спрашивайте.

9:24

Буду активно использовать местоимение “мы”. Я-то сам вообще туповат, просто вокруг собрались умные люди.

9:24

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

9:24

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

9:24
@jsunderhood а че так на бэм все взъелись?
9:29
@jsunderhood алкоголь или наркотики?
9:30

Ну ладно, давайте серьезно. Хочу услышать всех, у кого node.js в продакшене в рантайме. Пишите свой опыт и ссылки на сайты.

9:36
@jsunderhood Я щитаю, что притащить JS в серверсайд было самой дерьмовой идеей всех времен. Но времена были дикие, крутились как могли.
9:43

Довольно иронично, что именно @twilightfeel является главной движущей силой по node.js в Яндексе. <s>И пьёт как конь.</s>

10:05

Про бары в Питере. Терминал всё еще хорош, ББН кончился, на Думскую не ходите. Приличным в Зинг, пьяным в Пойзон-3, другим на Некрасова.

10:07

Но в целом всё плохо. Купите портвейн и на набережную (любую).

10:08

Главное выбрать набережную с нужной стороны от мостов.

10:14

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

10:17

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

10:18

Поясняю для непитерцев про набережные. Мосты разведут и будете куковать. Как в песне Кирпичей pleer.com/tracks/1001489… @gxoptg_

10:23
@jsunderhood задача dsl’я чтоб 90% задач делалась совсем просто. А для оставшихся 10% не мешать переключаться в ручной режим.
10:35

Серега, тебе ли не знать, что эти 10% окажутся из говна и палок, причем палки тоже будут из говна. @knopsh

10:35

Про серверный JS слабо бомбануло. ЦА пока слишком мала. Такой же наброс в курилке Яндекса уже привел бы к драке и примирительной пьянке.

10:47
@jsunderhood, а какие есть проекты размеров Авто и Недвижимости на Node.js вне Яндекса? Ладно, любых размеров, кроме как «для кота».
10:51

Я вот и интересовался про такие проекты на территории СНГ чуть раньше, но пока только "мертвые стартапы". @pepelsbey

10:52

Про западные понятно. Linkedin, Walmart, кто-то еще наверняка.

10:54

Тогда я немного расскажу. Из сервисов нашей команды на node.js (0.10) работают Яндекс.Авто, Работа, Недвижимость и Путешествия.

11:47

Наш опыт разработки рантайма на node.js частично перетёк сюда github.com/nodules Напоминаю про 0.10, но к этому мы еще вернемся.

11:48

А еще хипстеры подсказывают, что есть видео: events.yandex.ru/lib/talks/937/ events.yandex.ru/lib/talks/936/

11:48

Тут говорили про DSL, так вот у нас до ноды был DSL на XML-синтаксисе, а встроенным в него скриптовым языком был lua. Пхп казался прекрасным

11:50

Кстати, если работодатель интересуется опытом XSLT, бегите и уходите в запой.

11:51
@jsunderhood извините тупого, что имеется в виду под рантаймом здесь?
11:54

Тут речь о том, что node.js используется не как вспомогательные скрипты, а как живой веб-сервер, обрабатывающий запросы в реальном времени.

11:56

Академическая формулировка тут вряд ли нужна.

11:56
@jsunderhood С другой стороны, если вы действительно умеете XSLT, то это полезный опыт функциональщины, immutability, паттерн матчинга, ..
11:57

Раз уж вспомнили XSLT, держите немного ада stackoverflow.com/questions/4651… Больше лайков, чем у Майкла Кея, ахаха.

12:41

Ладно, вернемся к нашим баранам.

13:30

В продакшене в пределах одной машины у нас двухуровневая балансировка: round-robin в nginx и дефолтная в node.js clck.ru/9aakp

13:31

Поднимать группы воркеров на разных портах/сокетах позволяет github.com/nodules/luster На уровне nginx всё просто wiki.nginx.org/LoadBalanceExa…

13:31

В 0.12 по-умолчанию уже round-robin, но в 0.10 и раньше cluster неравномерно распределяет нагрузку по воркерам. clck.ru/9aakx

13:32

И если не заморачиваться, то получится примерно такая картинка. Я воркер, я не хочу ничего делать, я хочу фыр-фыр-фыр pic.twitter.com/wRaPB7WKFK

13:33

Тут вы спросите, почему мы до сих пор используем 0.10. "Обстоятельства непреодолимой силы", "кровавый энтерпрайз", вот это всё.

13:34

Но, как говорится, смотря в будущее, не наступите в старое дерьмецо. Помните про балансировку, а то засмеют.

13:34

По-моему, пяток предыдущих записей были для большинства бесовской тарабарщиной. А смешных картинок я не заготовил. Давайте коварные вопросы.

14:00

А я пока пойду порисую смешные надписи на котиках.

14:02
@jsunderhood Что ты думаешь о семантике в HTML? (хахаха)
14:04

Семантика в HTML? Лолшто? Мы в 2006 год вернулись, а я не в курсе? Ахахаха. @ki_zu

14:05
@jsunderhood я всегда хотел спросить у парней с Яндекса: кто же эти люди, которые написали Яндекс-Бар?
14:08

Я как-то глушил ёрш в Цинике и даже там меня спросили, чё за тема с Яндекс.Баром. Парни, я до сих пор не в курсе, честно. @denysdovhan

14:10
@jsunderhood куда если не яндекс? А бармены пойдешь? Чувствуешь профдеформацию?
14:10

Профдеформации не ощущаю. После вебдева? Открою бар или пойду воровать нефть. P.S. Урик, ты зайка. @yuritkachenko

14:11

Прочитал в ответах слово "микроформаты", нервно закурил. И Макс Россомахин сразу вспомнился.

14:14
@jsunderhood стоит ли волноваться, если всю неделю хлестал вино, а на пятый пришла утка?
14:54

Если утка пришла, то это не страшно, главное чтоб по взаимному согласию. А вот если селезень, то я бы напрягся. @twilightfeel

14:55
@jsunderhood Ощущаешь ли физические последствия алкоголизма?
14:59

Физические последствия алкоголизма ощущаются и еще как. Но надо держаться и идти к поставленной цели! @toivonens

15:00

Не сочтите меня превратно, я просто стараюсь отвечать по порядку. Но это явно никуда не годится, будем фильтровать.

15:37
@jsunderhood как насчет микросервисов? Используете их?
15:37

Не вполне уверен, что правильно понял вопрос про микросервисы, но самой архитектуре сервисов что-то похожее (по духу) есть.

15:39

Возьмем трехступенчатую архитектуру: клиент - фронтенд - бекенд.
Присущая микросервисам атомарность есть прежде всего в бекендах.

15:40

Фронтенд собирает нужные для шаблонизации данные из нескольких (иногда более десятка) бекендов-источников. Протокол обычно просто HTTP.

15:41

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

15:43

Плюс такого подхода в том, что падение одного бекенда (не основного вроде поиска) может быть несущественным для приложения.

15:45

Даже потеря авторизации пользователя (если это не user-specific страница) является допустимой. Идет деградация ответа до опр-й степени.

15:46

Грань этого допуска, конечно, определятся из бизнес-специфики приложения и настраивается руками, а не божественным проведением.

15:47

Да, надо пояснить, что в трехуровневой архитектуре фронтенд это nodejs-слой как раз.

15:49
@jsunderhood задвинь ещё что-нибудь про ноду. например, как лучше кэш готовить.
15:51

Кеша результатов шаблонизации у нас нет, он нам особо ничего не даёт. Очевидно есть версионированный кеш статики (js/css/картинки).

15:52

Также мы кешируем (в мемкеш) те данные, которые мы достаем с бекенда. Естественно, далеко не все и не всегда.

15:53

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

15:53

В дополнение к предыдущим потокам сознания я наконец приложу картинку для наглядности. pic.twitter.com/K8GBFHgVi0

16:07
@jsunderhood а можно еще про тонкую грень между фронтенд и бекенд? Актуально
16:12

Грань между фронтом и бекендами довольно тонкая. Но вкратце:

16:14

2. Нет прямой записи данных (например, на диск или в БД)

16:16

Как пример, данные об украинских ценах на авто живут в бекендах, а перевод интерфейса на украинский -- полностью дело фронта.

16:19
@jsunderhood а на чем у вас бэк обычно. Бывает ли node на бэке?
16:20

Конкретно у нас в основном Java/Scala. Встречаются плюсы, питон, перл. Бекендов прям бекендов на ноде я не встречал @zilm

16:21
@jsunderhood урл у апишки поменялся, в json-е приходящем поле добавилось, которое надо модифицировать и т.д.
16:35

Нет, обработки таких изменений без выкладок не происходит. Единственно, что я видел -- правила кеширования могут получаться на лету. @zilm

16:36
@jsunderhood видел у пацанов при старте ноды тянут с бека редко измен-мые данные и хранят прямо в памяти. Отсюда вопрос что с shared memory?
16:55

Для этой цели проще использовать memcached (redis, whatever) на локальном порту, там все продумано и проверено до нас @MaximSukharev

16:57
@jsunderhood промисы, генераторы или прочий async?

Промисы. Vow github.com/dfilatov/vow Надо бы, конечно, ковырять блидинг эдж уже.

@jsunderhood промисы, генераторы или прочий async?

17:24
@jsunderhood только это не трёхуровневая структура, а четырёх — за бекендом ещё БД

Теоретически она там бесконечноуровневая, но зачем пугать всех и самого себя.

@jsunderhood только это не трёхуровневая структура, а четырёх — за бекендом ещё БД

17:40

Прежде чем что-то делать на ноде, очень рекомендую нанять человека, который умеет полный стек. Чтоб научил 200 от 400 отличать хотя бы.

18:02
@jsunderhood Давай лучше, как руководитель, в студию мануал «Как рулить группой фронтендеров и не сойти с ума». С бухлом все понятно, а еще?

Нанимать людей умнее себя и не мешать им работать.

@jsunderhood Давай лучше, как руководитель, в студию мануал «Как рулить группой фронтендеров и не сойти с ума». С бухлом все понятно, а еще?

18:30
@jsunderhood чтобы аргументировать переезд с 0.10 на 4.0?

Нечего там аргументировать. Там проблема в миграции окружения, а не кода. Это не объяснишь на пальцах, к сожалению.

@jsunderhood чтобы аргументировать переезд с 0.10 на 4.0?

18:35

На сегодня всё, на посошок NSFW-история про добавление “малюсенькой задачки” в стабильную ветку за день до релиза youtube.com/watch?v=2oRwQ5…

18:42

# Вторник 48 твитов

@jsunderhood посоветуй хороший портвейн, кстати?)

Мне хватает простого Красного Крымского от Массандры. А так еще Сандеман люблю.

@jsunderhood посоветуй хороший портвейн, кстати?)

9:09
@jsunderhood, расскажи завтра про путь к успеху: от первой строчки кода до <del>меня узнают в барах</del> нынешней работы и команды.

Более чем уверен, что это никому не интересно.

@jsunderhood, расскажи завтра про путь к успеху: от первой строчки кода до <del>меня узнают в барах</del> нынешней работы и команды.

9:10
@jsunderhood когда-то @flackus меня собеседовал, и это было круто, меня не взяли, но дали хороший пендаль в нужном направлении, спасибо)

Приятно слышать. Справедливости ради, недовольных тоже оставалось :)

@jsunderhood когда-то @flackus меня собеседовал, и это было круто, меня не взяли, но дали хороший пендаль в нужном направлении, спасибо)

9:11
@jsunderhood полный HTTP стек? Или о чем речь?

Не. Чтобы мог объяснять бывшим верстальщикам про линукс, баш, кеширование, греп логов и т.д. Чуточку от админства.

@jsunderhood полный HTTP стек? Или о чем речь?

9:14
@jsunderhood @twilightfeel а как со стажерами? Есть рецепт, как за минимальный срок вырастить разработчика которому не страшно «не мешать»?

Для меня это больная тема. Я не умею, терпения не хватает. Мне проще с кандидатами, которые сами тебя собеседуют.

@jsunderhood @twilightfeel а как со стажерами? Есть рецепт, как за минимальный срок вырастить разработчика которому не страшно «не мешать»?

9:17
@jsunderhood ой, а давно стали пользователей (клиент) в архитектурные схемы вносить? Или у вас клиент что-то иное обозначает?

Это чтобы не путать клиентский js и серверный. Слово "фронтенд" слишком гибко толкуемо.

@jsunderhood ой, а давно стали пользователей (клиент) в архитектурные схемы вносить? Или у вас клиент что-то иное обозначает?

9:18
@jsunderhood и если мы проектирует микросервисы, то атомарность должна быть обеспечена как-либо и во фронте

Например? Про это часто говорят, но я так и не придумал ничего путного да с понятной реализацией.

@jsunderhood и если мы проектирует микросервисы, то атомарность должна быть обеспечена как-либо и во фронте

9:19
@jsunderhood ноду дебажите console.log'ами?

Логи, таймеры, стресс-тесты, мониторинги (включая проц-диск-память). Прям так чтоб console.log только в разработке.

@jsunderhood ноду дебажите console.log'ами?

9:21
@jsunderhood Я думал, речь шла о Node-гуру, а тут совсем другое. Тут вообще не про Node)

Сам node для наших целей вполне понятен. Ошибиться вот в деплое куда проще. bash этот с его кавычками, вот это всё.

@jsunderhood Я думал, речь шла о Node-гуру, а тут совсем другое. Тут вообще не про Node)

9:26
@jsunderhood нативные аддоны для ноды не приходилось писать?

Ох. Там вот ниже выясняли, почему сидим на 0.10. Как раз поэтому. Есть плюсовые биндинги, переводить тяжело.

@jsunderhood нативные аддоны для ноды не приходилось писать?

9:28
@jsunderhood т.е. локально реп не разворачиваете и какой-нибудь node-inspector не используете? Только логи, только хардкор

Платформа у нас устоялась, так что редко в кишки лезть приходится. А для дебага бизнес-логики это не нужно.

@jsunderhood т.е. локально реп не разворачиваете и какой-нибудь node-inspector не используете? Только логи, только хардкор

9:32
@jsunderhood это вот зря вот так вот. Интересные истории всегда интересно почитать.

Я бы согласился, будь история интересной ;)

@jsunderhood это вот зря вот так вот. Интересные истории всегда интересно почитать.

9:33
@jsunderhood coffeescript и meteor (два отдельных вопроса) — что скажешь?

Coffeescript ненавижу, про meteor ничего не скажу.

@jsunderhood coffeescript и meteor (два отдельных вопроса) — что скажешь?

9:37
@jsunderhood ты гонишь. Это крымское дерьмо с портвейном объединяет только… А нет, вообще ничего не объединяет.

Не согласен. Да и все равно ты после четвертого стакана Сандеман от Агдама не отличишь.

@jsunderhood ты гонишь. Это крымское дерьмо с портвейном объединяет только… А нет, вообще ничего не объединяет.

9:39

Ладно, история из жизни, первая и последняя. В Яндекс меня взяли благодаря тому, что человек, собеседоваваший по JS, болел. Шёл дикий 2007г.

9:56
@jsunderhood кстати, обкладывание метриками радикально уменьшает время грепа логов, а то и вовсе избавляет от него.
9:56
@jsunderhood Для метрик: node.js -> statsd -> graphite. Grafana в качестве морды к graphite. Еще события от сервисов в graphite events.
9:56
@jsunderhood Извини если уже было. Какие проекты в Я на ноде, только кинопоиск?

Первым крупным был Авто. Сейчас уже почитай половина всех живых, если не больше.

@jsunderhood Извини если уже было. Какие проекты в Я на ноде, только кинопоиск?

10:14
@jsunderhood а почему на Авто в характеристиках тачек не указан вес?

Указан, когда известен. Пруф: auto.yandex.ru/bmw/3er/368932…

@jsunderhood а почему на Авто в характеристиках тачек не указан вес?

11:47
@jsunderhood полагаю что кусков на coffee в Я исчезающе мало?

Я не видел вообще. Увижу в районе себя -- сожгу. (тире ставить не буду)

@jsunderhood полагаю что кусков на coffee в Я исчезающе мало?

11:48

Удивлен, что никто не спросил, зачем нам nginx перед node.js. Неужели никто из интереса не посмотрел заголовки упомянутых проектов?

11:52
@jsunderhood Просто все так делают :)

Ну у некоторых лайти еще :)

@jsunderhood Просто все так делают :)

12:08

Ненавижу, когда @pepelsbey узнают на Думской и прерывают наш алкогольный угар вопросами про работу. Вадик, привет!

12:14

Злободневный вопрос. Если вы из Питера и переехали в Москву, что вами двигало? По мне это так же разумно, как мешать водку с шампанским.

12:31
@jsunderhood Есть такая фраза: петербуржцы, петереезжающие в Москву, повышают IQ обоих столиц :D
12:54
@jsunderhood встречный вопрос: москвичи, не переехавшие в Санкт-Петебург, а что двигает вами?

Ой не надо. Пусть сидят себе, а то еще пробки привезут.

@jsunderhood встречный вопрос: москвичи, не переехавшие в Санкт-Петебург, а что двигает вами?

13:37
@jsunderhood Вы используете ImmutableJS?

Нет. Но боль про extend({}, ...) у нас присутствует. Ребята молодцы.

@jsunderhood Вы используете ImmutableJS?

14:24

Друзья, посоветуйте, про что рассказать. Кажется, что технические подробности про нашу специфику заходят тяжело :) Хотя кое-что я еще покажу

15:44

. @Devgru Внутренний npm есть, но лично я его не использую. Непубличные модули в проект попадают через git-теги. pic.twitter.com/GPZxizb7Pt

16:17
@jsunderhood разумный вопрос: почему не Redis? :)

Админы любят мемкеш, мы любим админов и не хотим, чтобы админы "любили" нас. Опять же зачем менять проверенное?

@jsunderhood разумный вопрос: почему не Redis? :)

16:20

. @Devgru про нагрузку будет длинная телега, но завтра. Подождите, пожалуйста :)

16:25
@jsunderhood Как происходит micro service orchestration? Есть ли какой-то высокоуровневый DSL для описания и сбора финального response'а?

Есть специфичная схема, вкратце описанная в докладе clck.ru/9b6XC Понять сложнее, чем любой DSL, не спорю.

@jsunderhood Как происходит micro service orchestration? Есть ли какой-то высокоуровневый DSL для описания и сбора финального response'а?

16:33
@jsunderhood Имеется ли какой-то инструментария для отладки и нахождения блокирующих запросов? Что-то вроде Zipkin blog.twitter.com/2012/distribut… ?

Нет. Если общее ответа стало выше SLA, то виновника сразу видно на графиках, там есть тайминги отдельных операций.

@jsunderhood Имеется ли какой-то инструментария для отладки и нахождения блокирующих запросов? Что-то вроде Zipkin blog.twitter.com/2012/distribut… ?

16:41

. @jsunderhood @a_kovalev это для обязательных операций. Необязательные проложены таймаутами.

16:43
@jsunderhood расскажи про инструменты ... Что используешь повседневно? :)

Использую iTerm, WebStorm, Developer Tools, Photoshop, VirtualBox. Ну и конечно grep и штопор :)

@jsunderhood расскажи про инструменты ... Что используешь повседневно? :)

16:45
@jsunderhood Давайте обсудим кто использует async/await из ES7 на клиенте и сервере. Кажется волшебной фичей и работает из коробки с babel

Я бы тоже с удовольствием послушал :) Особенно, есть ли penalty по производительности по сравнению с.

@jsunderhood Давайте обсудим кто использует async/await из ES7 на клиенте и сервере. Кажется волшебной фичей и работает из коробки с babel

16:49

. @innin Говорю за себя. Например, IE8-9. Доля в проекте, допустим, 3%. Стоимость поддержки, грубо, день с недели.

16:53

. @innin включаем финансовые соображения. Можно ли отбить 3% денег за счет экономии 20% ресурсов? Ответ на этот вопрос всё и решит.

16:55

. @RReverser @gxoptg_ там вообще много ништяков. X-Accel-Redirect полезная вещь, домены-алиасы проще там разруливать. Тысячи их.

17:52
@jsunderhood а задавались ли вы таким вопросом - правильно считать что 3% некрофилов приносят 3% прибыли?

Так считать, разумеется, неправильно. Но точно можно предположить, что _больше_ 3% они не приносят. Такая логика.

@jsunderhood а задавались ли вы таким вопросом - правильно считать что 3% некрофилов приносят 3% прибыли?

18:00
@jsunderhood Избавление от какой версии IE принесло наибольшее моральное облегчение?

IE 5.2 for Mac

@jsunderhood Избавление от какой версии IE принесло наибольшее моральное облегчение?

18:20

"Дебажим в продакшене". Моя любимая грабля с http.Agent github.com/nodules/asker#… В 0.12 то же самое, но хоть maxSockets уже Infinity, а не 5.

18:27
@jsunderhood grep можно заменить на Silver Searcher (ag) github.com/ggreer/the_sil…

!!! Я, правда, по старой памяти использую ack beyondgrep.com Но голый grep и правда прошлый день.

@jsunderhood grep можно заменить на Silver Searcher (ag) github.com/ggreer/the_sil…

18:41

Погодите немного, сейчас наброшу напоследок и по домам.

18:50

Лучшие книги по общению с менеджерами: Понедельник начинается в субботу и Сказка о Тройке.

18:50

Это единственные книги про работу (помимо технических), которые стоит читать. Учебник английского еще не помешает.

18:51

А аджайлы ваши одна хренота, всё лишь бы не работать. Стендапы у них, блин, камедиклаб прямо.

18:51
@jsunderhood самое поганое - это скрамы. Вроде начинают по правилам, а заканчивается обсуждением хрен знает чего

проект я выкатил в продакшн
там палки из говна и мрак
методология простая
х**к

@jsunderhood самое поганое - это скрамы. Вроде начинают по правилам, а заканчивается обсуждением хрен знает чего

23:31

# Среда 10 твитов

Единственный разумный способ бороться с тайперрорами — нагрузочное тестирование настоящими запросами.

11:45

. @jsunderhood Без дураков, берешь лог, достаешь запросы и фигак ими в тестинг. Помогает. Заодно можно выпить, пока тупишь в tail -f.

11:46

Про нагрузку и стресс-тесты. Первое, что мы делаем -- совместно с эксплуатацией устанавливаем SLA по времени ответа и точке разладки в RPS.

15:48

.@jsunderhood Пример. Сервис N должен отвечать в пределах 300мс на 90м квантиле (в 90% случаев). Точка разладки не менее 100 RPS на 1 машину

15:51

.@jsunderhood заблаговременные договоренности позволяют не допускать преждевременной оптимизации и оставляют больше времени на сам продукт.

15:52

.@jsunderhood нет смысла угорать по оптимизации, если у вас и так запас прочности превышает разумные границы.

15:54

Для стресс-теста нам нужны т.н. патроны. Они представляют собой дампы реальных запросов к сервису, взятые из соответствующего лога.

16:24

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

16:25

.@jsunderhood бонусом проверяются не только нижеупомянутые тайперроры, но и, например, отсутствие 404х, если изменилась схема урлов.

16:40
@jsunderhood Яндекс.Авто написан на Node.js, PayPal тоже его используют, у ВК IM раньше был на ноде, сейчас не знаю.

Не знал, что Яндекс.Авто на ноде. Спасибо!

@jsunderhood Яндекс.Авто написан на Node.js, PayPal тоже его используют, у ВК IM раньше был на ноде, сейчас не знаю.

22:07

# Четверг 35 твитов

@jsunderhood когда собираетесь начать использовать реакт?

Сейчас, только смузи с маффином допью.

@jsunderhood когда собираетесь начать использовать реакт?

9:26
@jsunderhood Привет. Расскажи, какой code style используете, как организован code reviw, какие тесты пишите? Git?

Упрощенный github-flow, ревью в Github Enterprise. Юнит-тесты в основном в библиотеках, mocha/chai/istanbul.

@jsunderhood Привет. Расскажи, какой code style используете, как организован code reviw, какие тесты пишите? Git?

9:28

Хорошая подборка дотфайлов, до сих пор не могу оторваться dotfiles.github.io

10:49

28.08 менеджер (такое бывает) делает пулреквест во фронтенд. 9.09 он же ставит таск "Заканчиваем поддержку IE8". Совпадение? Не думаю.

13:02
@jsunderhood @pepelsbey мое лицо когда я узнал что мы не поддерживаем IE ниже 10 pic.twitter.com/shVzk9X5AO
13:23
@jsunderhood эээ, профильные специалисты, а можете прокомментировать?

_.isNumber(NaN)
true

Это не прикол JS как такового. NaN это валидное значение в вычислениях с плавающей запятой en.wikipedia.org/wiki/NaN

@jsunderhood эээ, профильные специалисты, а можете прокомментировать?

_.isNumber(NaN)
true

13:44
На волне асинхронности для загрузки всего Джейк увлечённо рассказывает про akdubya.github.io/dustjs/ Стоит смотреть туда? +@jsunderhood

Не думаю, что миру мало императивных шаблонизаторов. Бенчмарк на github pages валится с ошибкой :)

На волне асинхронности для загрузки всего Джейк увлечённо рассказывает про akdubya.github.io/dustjs/ Стоит смотреть туда? +@jsunderhood

15:36

. @jsunderhood @webstandards_up ну и вот забавный штрих github.com/akdubya/dustjs…

15:38

. @webstandards_up ну там есть форк от Linkedin. Там уже интереснее.

15:50

Назадавайте каких-нибудь вопросов, а то я опущусь до смешных картинок или, не дай б-г, "историй из жизни". Отвечу на каждый конкретный.

17:34
@jsunderhood Высыпаешься?

Последнее время да. Хотя покупка нового иксбокса чуть не стала фатальной.

@jsunderhood Высыпаешься?

17:37
@jsunderhood опиши факап недели? danluu.com/postmortem-les…

Я сразу вспомнил случай, как в названии метода counter кто-то оставил русскую букву "c". Но это давно было.

@jsunderhood опиши факап недели? danluu.com/postmortem-les…

17:46
@jsunderhood про аутентификацию клиентов на #rest #api уже говорили? Что лучше использовать #jwt или что-то ещё?

Вот про это почти ничего не знаю. На фронтенде мы такой аутентификации самостоятельно не делаем.

@jsunderhood про аутентификацию клиентов на #rest #api уже говорили? Что лучше использовать #jwt или что-то ещё?

17:55
@jsunderhood сколько _книг_ связанных с работой ты прочитал за последние 3-6-12 месяцев? Или только "каттинг едже ака твиттер читаю"

Сейчас понял, что ни одной. Пора делать профессиональное харакири.

@jsunderhood сколько _книг_ связанных с работой ты прочитал за последние 3-6-12 месяцев? Или только "каттинг едже ака твиттер читаю"

17:58

Про жизнь не буду. Можно задавать конкретные вопросы про:
* работу
* машины
* музыку
* Питер
* алкоголь

18:00
@jsunderhood перевешивает ли удобство гитхаба его стоимость для приватных реп?

Однозначно. Я с ужасом вспоминаю Crucible и иже с ними.

@jsunderhood перевешивает ли удобство гитхаба его стоимость для приватных реп?

18:10
@jsunderhood что может быть лучше чем смешать стаут и егерь?

Никогда не мешать стаут и егерь. Я не помню точной причины, но четко помню свои выводы.

@jsunderhood что может быть лучше чем смешать стаут и егерь?

18:18
@jsunderhood куда и как расти?

У меня нет серебряной пули на этот вопрос. Я сам им задаюсь.

@jsunderhood куда и как расти?

18:20
@jsunderhood сколько живет js либа? 3-6-12 месяцев? помнишь jquery? Есть ли реюз кода или от старого только строчка copyright остается?

jQuery живее всех. С перехода на Vow (а это было давно) я и не помню, чтобы мы меняли библиотеки. Но писали свои, да

@jsunderhood сколько живет js либа? 3-6-12 месяцев? помнишь jquery? Есть ли реюз кода или от старого только строчка copyright остается?

18:23

. @jsunderhood @ya_pulser Кода почти никогда не остается. Фронтенд штука такая: есть редизайн -- есть рефакторинг, нет редизайна...

18:25
@jsunderhood а ты пишешь код как тимлид?

Стараюсь yadi.sk/i/M6ZtQioUjcPSs

@jsunderhood а ты пишешь код как тимлид?

18:39
@jsunderhood ром, водка или егерь?

Ничего из этого. Вино, портвейн, пиво, джин. Ну ладно, пусть будет водка, наливай!

@jsunderhood ром, водка или егерь?

18:40
@jsunderhood уже какую неделю всех вокруг мучаю про i18n без коитуса с кодом. Есть что?

Бэм :) Сама система для переводчиков и ко -- проприетарная и самописная. Говорят, что внутри git, но не проверял.

@jsunderhood уже какую неделю всех вокруг мучаю про i18n без коитуса с кодом. Есть что?

19:47
@jsunderhood Можно на машину установить другое кресло? Это очень дорого? Мне в моем кресле неудобно.

Думаю, что на крыше сидеть будет неудобно. Внутрь можно, но у разных машин разные варианты и бюджет.

@jsunderhood Можно на машину установить другое кресло? Это очень дорого? Мне в моем кресле неудобно.

19:49
@jsunderhood увидел) а сколько человек в команде?

Сейчас 11 разработчиков. Еще пара бы не помешала.

@jsunderhood увидел) а сколько человек в команде?

19:53
@jsunderhood бывало такое, что надо обновить библиотеку(и), а там уже обратная совместимость сломана, либа по всему проекту? Что делать?

Не обновлять. Забрать нужный дифф руками.

@jsunderhood бывало такое, что надо обновить библиотеку(и), а там уже обратная совместимость сломана, либа по всему проекту? Что делать?

19:54
@jsunderhood Приезжай к нам, в Екат, нальём водки Екатеринбург. Наш виншампанкомбинат делает. pic.twitter.com/jz7Grym0Uk

Обязательно. Закусим майонезом ;)

@jsunderhood Приезжай к нам, в Екат, нальём водки Екатеринбург. Наш виншампанкомбинат делает. pic.twitter.com/jz7Grym0Uk

19:56
@jsunderhood вопрос не по теме, забугорные андерхуды в природе существуют?

Не знаю. Давайте попросим помощи зала, интересно.

@jsunderhood вопрос не по теме, забугорные андерхуды в природе существуют?

19:59
@jsunderhood твоя машина сейчас, твоя машина в будущем

BMW E90 325i. Дальше пока не знаю, возможно купер или E92.

@jsunderhood твоя машина сейчас, твоя машина в будущем

20:03
.@jsunderhood Вопрос про Питер и алкоголь: го бухать?

Ждём, когда @pepelsbey взашей погонят из Европы.

.@jsunderhood Вопрос про Питер и алкоголь: го бухать?

20:06
@jsunderhood а если надо на мажорную версию? Не обновлять?

Планировать, втыкать рефакторинг между релизами, терпеть как дед терпел, паниковать, снова паниковать, выпить.

@jsunderhood а если надо на мажорную версию? Не обновлять?

20:07
@jsunderhood ревью в гитхабе больше чем на 5 строк тот еще ад. Crucible хоть и убог, но хоть что-то может.

Сатану он вызвать может, это да. Гитхаб как швейцарский нож, не надо бурить им скважины.

@jsunderhood ревью в гитхабе больше чем на 5 строк тот еще ад. Crucible хоть и убог, но хоть что-то может.

20:10
@jsunderhood давай про телок и бухло

music.yandex.ru/album/1893037/…
music.yandex.ru/album/1893037/…

@jsunderhood давай про телок и бухло

20:12
@jsunderhood Ну что, когда уже на Марс полетим?

<del>Чо, вдвоём?</del> Думаю, что Илон Маск наша последняя надежда. Марс уже кажется научной фантастикой.

@jsunderhood Ну что, когда уже на Марс полетим?

20:21
@jsunderhood Давай про машины. С какой мощности ты начинаешь считать транспортное средство машиной, а не жоповозкой?

Да пофиг, у меня был акцент 1.5 и я был не менее счастлив, чем сейчас. Хотя, блин, как же поёт рядная шестерка...

@jsunderhood Давай про машины. С какой мощности ты начинаешь считать транспортное средство машиной, а не жоповозкой?

20:31

# Пятница 14 твитов

@jsunderhood будущее за js?

Пока да. Рано или поздно останется только один браузерный движок, куда засунут всё, что захотят.

@jsunderhood будущее за js?

10:30

Худшее, что вы можете делать на собеседовании, — просить нарисовать табличку вроде такой dorey.github.io/JavaScript-Equ…

12:31

. @serhey_shmyg если просят написать псевдокод (а не каждую скобочку), то почему бы и не на листе бумаги? Это как раз полезно.

12:36
@jsunderhood я спрашиваю только про сравнение null и undefined с false. Для особо упоротых про NaN. Ответ: юзай === и не люби мне моск ОК.

Последняя фраза очень правильная. Если человек внятно объясняет, почему не надо что-то делать, это всегда подкупает.

@jsunderhood я спрашиваю только про сравнение null и undefined с false. Для особо упоротых про NaN. Ответ: юзай === и не люби мне моск ОК.

12:49
@jsunderhood как тебе новый кинопоиск?

Буду вести @marketingunderhood, с удовольствем отвечу. Давайте в пределах темы.

@jsunderhood как тебе новый кинопоиск?

12:51

Глава VW, шоб ему здоровья, смело свалил вину по скандалу с выбросами на инженеров arstechnica.com/tech-policy/20… Не работайте на мудаков, друзья.

13:10
@jsunderhood
– как жить в Питере и не болеть простудой >2 р в год? (отпуск на юг раз в Q?)
– йога/бег/плавание как жить при сидячей работе?

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

@jsunderhood
– как жить в Питере и не болеть простудой >2 р в год? (отпуск на юг раз в Q?)
– йога/бег/плавание как жить при сидячей работе?

15:26
@jsunderhood
– Шляпа, Дом 7. Где еще хороший джаз/и подобное играют? Джаггер?
– клубы с хорошим звуком (на СПЛИНчика там сходить)?
спасибо!

В Шляпу в последнее время тупо не войти, но там хорошо. Пару раз был в Джазофрении, но давно. Про клубы не скажу.

@jsunderhood
– Шляпа, Дом 7. Где еще хороший джаз/и подобное играют? Джаггер?
– клубы с хорошим звуком (на СПЛИНчика там сходить)?
спасибо!

16:17

Мы иногда отдаём HTTP 418, чтобы сообщить nginx об ошибке в приложении. Естественно, статус затем заменяется на более корректный.

17:05

. @jsunderhood Но ирония в том, что I'm a teapot это семантически вполне себе ошибка :) Такая вот шутка в себе. pic.twitter.com/Gb9ksyWZvf

17:06

Вообще там очень забавное чтиво tools.ietf.org/html/rfc2324 Люблю, когда серьезные дядьки шутят, очень изящно получается.

17:09
@jsunderhood, предпочитаю отдавать HTTP 418 ботам-брутфорсерам. Зачем им чайник в ботнете?
17:18

. @silentroach нет. Я даже картинку приложу, что бывает. pic.twitter.com/vZNlffTcAw

17:31
@jsunderhood недавно нашёл такую штуку: rfcreader.com интересная читалка rfc∗ доков. С оглавлением, можно пометки делать.
19:56

# Воскресенье 6 твитов

@jsunderhood
Посоветуйте курсы/книги/др. мат. для устр-ния пробелов знаний по ИТ:
архитектура ком-па, алгоритмы, БД итд.
Для гуманитариев :)

Спроси чего полегче, у меня были тройки по всем точным наукам, а закончил я психфак. Мне б свои пробелы устранить.

@jsunderhood
Посоветуйте курсы/книги/др. мат. для устр-ния пробелов знаний по ИТ:
архитектура ком-па, алгоритмы, БД итд.
Для гуманитариев :)

0:46

.@jsunderhood ну вот читал я Банду Четырех, а что толку, если я smalltalk только там и видел. А прочел Стоянова и почти понятно стало.

0:50

.@jsunderhood это я к тому, что нечего комплексовать. У нас гуманитариев свои сильные стороны, нужно их развивать. Даже в нашей профессии.

0:52

.@alexbaumgertner Про Unix я осилил только Торчинского ozon.ru/context/detail… У него хоть как-то живой язык.

0:57
@jsunderhood у гуманитариев сильные стороны))) ну насмешил :D

Хаха. Тем не менее, единицы хардкорных технарей способны "попасть" даже в простейший макет.

@jsunderhood у гуманитариев сильные стороны))) ну насмешил :D

11:38

На этом, в общем, и всё. С вами был @flackus, надеюсь было неплохо. На следующей неделе вас ждёт йога и зож, а я в логаут. Берегите себя.

17:32

github.com

other