# Понедельник 40 твитов
-~/-~/-~/-~/-~/-~/
0:27Доброй ночи, дамы и господа! На этой неделе этот аккаунт буду вести я, Антон @subzey Хлыновский. Я JS-кодер в одном финансовом стартапе
0:36Моя излюбленная тема — «сырой» JS, т.е., всё что ниже уровнем, чем фреймворки и библиотеки, в том числе code golf и демосцена
0:43Кстати, вот эта штука в начале twitter.com/jsunderhood/st… — это не просто сепаратор, а вполне валидный js-код, попробуйте в консоли :)
0:55Никто не расскажет про code golf на js лучше, чем @aemkei m.ustream.tv/recorded/62250… (начало где-то на 1:00:00)
6:45Когда я начнал ковырять ES6, Google Traceur эмулировал `let x` через try-throw-catch(x). После такого адового трэша я надолго на него забил
7:53… в новых версиях try-throw нет, но и код генерится неправильный goo.gl/VyOVbL Вот то же самое на Babel: goo.gl/a3wrou
7:57А вы уже пользуетесь транспилерами из ES6? В продакшне, или для развлечения?
8:00@jsunderhood в проде во внутренних проектах вроде CMS пишу на ES6 (babel).8:02
@jsunderhood Пока только на pet-side проектах, планируем переводить прод на babel в ближайшие полгода.8:08
@jsunderhood На каком стэке работаете? Как в целом среда в компании (фин. темы обычно клонятся в сторону костенелого энтерпрайза)?8:13
.@morhetz JS+Python (Django)+Erlang. Подробнее есть видео от моего коллеги youtu.be/l1lr2ckSrTo При разработке используем Канбан
8:17@jsunderhood Какого работать в Ростове? Есть ли мотивация уезжать за более интересными проектами или удаленная разработка решает?8:19
.@morhetz В Ростове норм :) Проект мне по душе, почти чистый JS, и географию менять смысла нет. Единственное — местных конф мало проводится
8:22@jsunderhood я очень хочу Typescript + ES6 :-( Но Typescript мало кто желает использовать в продакшне. А траспилеры ES6 и подавно.8:29
@Vitalliumm @jsunderhood юзаем TS во всю на продакшене, но и место это называется MS :)9:16
.@greybax А в вижл-студии есть какие-то особые плюшки для TS? Ну там, рефакторинг в один клик или что-то подобное?
9:18@jsunderhood в VS синтаксис подсвечивается, а по рефакторингу юзаю Resharper, а там есть довольно много blog.jetbrains.com/dotnet/2014/12…9:31
@jsunderhood ни для прода, и ни для развлечения. Все свои новые npm-модули пишу в es69:50
Похоже, early adopter'ов ES6 довольно много. Больше, чем я ожидал. Или менее авантюрные люди просто стесняются ответить?
9:52@jsunderhood “или” ;-)9:55
@jsunderhood ну блочный скоуп убирается, если перед блоком действительно обьявить переменную x, тогда все работает правильно.10:22
.@an4ger Но это же «затмит» глобальную переменную. Да даже и не глобальную, а просто из внешнего скопа goo.gl/W13kdd
10:24.@an4ger let же вроде специально сделан, чтобы упростить жизнь и не запоминать все глобалы (как в руби). А тут, как по мне, явный баг.
10:26А может быть среди читателей есть такие, кто фигачит на кофескрипте, и им всё равно, во какой там ES это всё скомпилится? :)
11:19@jsunderhood У меня есть некоторые проекты на кофескрипт. Мне не нравится. Кажется, они что-то не то пытаются оптимизировать.11:41
@jsunderhood фигачим на coffee, мне нормально. Если будет следующий проект, то скорее всего на ES611:59
@toivonens выгода в возрастании «читабельности» и сокращении объема кода @jsunderhood11:59
Быть фронтендером — это не только писать чистенький код на языках будущего. Иногда приходится уныло подпиливать IE9+ код под IE8
13:28Уважаемые js-кодеры, а как вы используете "use strict"? По одному на файл? В каждой функции? Вообще никак?
14:02(Я уже спрашивал об этом на основном аккаунте, но астрологи объявили мне неделю jsunderhood и прирост аудитории, думаю, не грех повторить)
14:06@jsunderhood никак14:09
@jsunderhood по одному на модуль (он же файл, но внутри define)14:24
@jsunderhood никак, потому что babel. До этого юзал strict-loader, чтобы вручную не писать github.com/mistadikay/str…14:48
@jsunderhood Я обожаю CoffeeScript и пишу только на нем, несмотря на наличие Babel в пайплайне проекта. Могу обосновать, но не в одном твите14:55
@jsunderhood да, линтеры всё равно нужны и спасают от большего15:01
У Python и JS больше общего, чем может показаться. Например, не поверите, модель наследования repl.it/oZV repl.it/ozU
17:47js13kGames.com — интересное ежегодное компо. Цель создать за месяц игру на js и уложиться в 13кб (в .zip) со всей графикой и звуками
19:35В прошлом году в js13k на конкурс было отправлено 129 игр. Но все они в zip-архиве уместились на одну дискетку 1.44
19:38# Вторник 52 твита
Начнём утро, если не возражаете, с музыкальной паузы: js1k.com/2313 Как по мне, эта интра была самой крутой на js1k 2015
6:41…хотя бы потому что в ней используется Web Audio API и WebGL, что, в общем-то, не характерно для килобайтных интро.
6:43Ух! Впервые применил по назначению фронтальную камеру. Оказывается, превью на экране как ты видишь себя в зеркале, а фото — как видят другие
8:31…говорят, этот эффект применяют фотографы для выпускных виньеток, чтобы учительница не говорила, что выглядит как-то не так, как в зеркале
8:36@jsunderhood не применяют8:45
Почти все демки на js1k запакованы RegPack'ом (github.com/Siorki/RegPack/), он заменяет длинные повторяющиеся строки на один символ
9:32RegPack не просто взялся с неба, он основан на iteral.com/jscrush/, если захотите разобраться в принципе работы, лучше начать с JsCrush
9:44Код под RegPack пишется не так, как «обычный» гольферский код: цель не минимальный размер, а минимальная энтропия (goo.gl/RS3FNF)
10:49…иными словами, как можно больше повторяющихся строк и как можно меньше набор символов. Вплоть по повторного использования переменных
10:52Но задротские демосценерские подходы неожиданно близки к реальности. goo.gl/xY4Suu тут ryry.min.js явно больше, чем dry.min.js
11:11Но после сжатия GZIP (все современные браузеры так делают) dry.min.js.gz 70 байт, а ryry.min.js.gz — 64. Тут всё дело в энтропии :)
11:13UglifyJS может заменять имена переменных на однобуквенные. Он тоже не берёт их с потолка, а использует самые частые pic.twitter.com/xTMXN4Q5zl
11:49Наконец, Closure Compiler может даже повторно использовать переменные: goo.gl/HG8vFn (Uglify, похоже, не умеет)
11:56Яркий пример «переоптимизации»: github.com/cowboy/jquery-…. Если выкинуть трюк с Reused strings, вес js.min.gz уменьшится с 468 байт до 451
12:19Не всегда стоит стараться перехитрить свой компилятор
12:22Прошу прощения за битую ссылку, спасибо @ru_rodweb twitter.com/ru_rodweb/stat…
12:24microjs.com — россыпь маленьких полезных билиотек. Пожалуй, то место, где мир гольфо-сценеров соприкасается с миром «продакшна»
12:36Шах и мат, функциональщики! pic.twitter.com/Ej3X4teDKm
13:53Кстати, часто ли вас на собеседованиях просили написать функцию для подсчёта чисел Фибонначи, факториалов или прочей математики?
14:00@jsunderhood ни разу)14:14
@jsunderhood дважды14:14
@jsunderhood сам на собеседованиях спрашивал. Такое интересно? :)14:21
.@dosyara Ещё бы! Интересно то, стоит ли вообще кандидата спрашивать какую-то математику из младших классов или FizzBuzz
14:22@jsunderhood а что, в рнд на js-кодера могут задать такой вопрос?) а то у меня в тгн есть перспективный товарищ по js, я ему расскажу)14:23
.@_sashashakun В нашей конторе он точно фибонначей на интервью не отделается :) Но где-нибудь в РнД наверняка спрашивают
14:24.@_sashashakun Сам работал в такой конторе, где если занешь циклы, то уже кодер. Никто не приходит в вебдев сразу супер-стар-ниндзя.
14:25@jsunderhood @_sashashakun А что еще интересного вы спрашиваете на интервью?14:26
.@YevhenBoyarsky Фибы как раз не спрашиваем :) Интересуют тривиальные вещи — прототипы, замыкания и событийная петля. Про них и спрашиваем
14:28Один раз оказалось, что к нам приходил на собеседование чувак чисто ради острых ощущений и опыта интервью. Работать он у нас не собирался.
14:31@YevhenBoyarsky @jsunderhood а ещё не дорос до проведения интервью) но как отвечающему интересно когда дают кусок кода и просят что-то 1/214:32
@YevhenBoyarsky @jsunderhood 2/2 по не у рассказать. В мой небольшой практике были и достойные ответы и знатные фейлы)14:32
@jsunderhood не всегда просто по таким задачам сделать вывод. Часто фронтендщики пугаются "математики".14:34
@jsunderhood а потом двигаешь пиксели и центруешь по вертикали14:39
Вот это интересный пойнт:
RT @SelenIT2: @jsunderhood отлавливают любителей неуместной рекурсии?
@jsunderhood А по событийной петле есть примеры вопросов? :)14:52
.@YevhenBoyarsky Раскрою карты — вопрос на ивентлуп у нас один :) «gist.github.com/subzey/47d7720… — как будет работать этот код?»
14:55@jsunderhood на собеседовании в яндекс.екатеринбург просили что-то с числами Фибонначи. Я провалился к счастью.14:56
За статью о событийной петле, кстати, я получил (зачёркнуто: диплом) инвайт на Хабре. Вот она, если интересно: habrahabr.ru/company/tradin…
15:07А диплом я так и не получил
15:09@jsunderhood вот еще отличный доклад по этой теме youtube.com/watch?v=8aGhZQ…15:22
Я же надеюсь, никого не отпугнёт то, что у меня из образования 4 курса «1205 00 3 Оборудование и технология сварочного производства»? :D
15:24И сразу вопрос проводящим собеседование: а вы спрашиваете диплом у кандидатов-программистов?
15:25@jsunderhood Только если юридически нужен (такое бывает, если нанимать из за границы)15:30
@jsunderhood несколько раз.15:33
@jsunderhood Был за последние пару лет примерно на двадцати собеседованиях, про образование спросили дважды, и то исключительно формально.15:46
@jsunderhood событийная петля? Event loop что-ли?16:51
.@oelifantiev Да, прошу прощения, правильно-то «событийный цикл»
16:53@jsunderhood у меня сразу ассоциации - черная дыра, теория относительности. А асинхронный вызов - горизонт событий :)16:58
Хм, действительно, по запросу «событийная петля» гуглится какая-то атсральная ересь. Пора завязывать с жаргонизмами pic.twitter.com/xTJP2QfMJh
17:01@jsunderhood спроси лучше, у многих ли тут есть образование :)17:15
# Среда 67 твитов
Предлагаю ещё одну музыкальную паузу: pouet.net/prod.php?which… (1 место на DemoJS'12 в категории 1K), в ней ещё нет ни Web Audio, ни WebGL
7:45Зато есть ручное псевдо-3d, хитрая генерация звука (p01.org/releases/140by…) и ещё более хитрая упаковка JS в PNG (pouet.net/prod.php?which…)
7:51Но лучше давайте послушаем автора этого интро, великого и ужасного @p01: 2014.jsconf.eu/speakers/mathi…
8:00Если вы рисуете на канвасе, вот вам хинт: между определением кривой и её обводкой/заливкой можно менять трансформации jsfiddle.net/subzey/phb4976…
11:09…в продакшне этот приём нужен нечасто, но вот в приглашении на js1k'15 (pouet.net/prod.php?which…) я его применял более чем активно
11:24Получил массу приятных эмоций всего за полчаса: штраф за переход на красный, мудаки в РЖД и слоупочный общественный транспорт
12:02@jsunderhood интересно кто в вебдеве с каким образованием работает. Я инженер электромеханник хим.производства.12:39
@serebro @jsunderhood без образования :( 11 классов средней школы12:42
@Vitalliumm @jsunderhood @serebro ушел из школы еще в 10м классе, но уже сам читал лекцию в универе!12:45
@Vitalliumm @jsunderhood @serebro 9 классов, + 1,5 курса "программирования" местячкового техникума12:45
Этот ответ я специально приберёг twitter.com/le0_nik/status…
14:02Использутете ли вы модули? Много ли было проблем при переводе legacy-кода на модули?
14:03С новыми проектами-то всё просто: берём и сразу пилим на модулях, как взрослые дяди и тёти. :)
14:05@jsunderhood С legacy-кодом неплохо управляется browserify + browserify-shim. В пятницу упомяну это в докладе frontendconf.ru/2015/abstracts…14:48
@jsunderhood есть некоторый монолит который как швейцарский нож. умеет все но не очень плохо. сущий легаси. сейчас делаю его масштабируемым14:49
@serebro 4 курса «программирования в компьютерных системах» @jsunderhood15:01
.@shuvalov_anton А потом чего? Ну, понятно, чего химики и связисты бросали, а «тыж-программист»?
15:03@serebro @jsunderhood техник по телекоммуникациям) проще говоря, связист15:03
@serebro @jsunderhood 4 курса «Комплексное обеспечение информационной безопасности автоматизированных систем»15:08
.@lancedikson Хочу тебя тоже попросить рассказать, почему ты ушел с программерской специальности
15:09@jsunderhood это заочка, и перспектива госов на паскале меня не радовала. Ворд, пеинт, диаграммы эйлера-вейна, VBA… А я ведущий уже разраб15:09
.@lancedikson А, или имеется в виду, что остановится на бакалавре?
15:12@jsunderhood 1. Уверенно осознал, чем хочу заниматься и от чего получаю удовольствие — веб. 2. Объёмы лишней и устаревшей информации в ВУЗе.15:17
@serebro @jsunderhood 2 курса компьютерной безопасности и 1 курс прикладной математики, без диплома — забрал документы15:22
@jsunderhood 3. Несмотря, что это IT-специальность, всё равно практического опыта, применимого в разработке очень мало.15:25
@jsunderhood, поэтому я решил не тратить время и деньги в пустую, и заняться приятным мне делом.15:25
.@lancedikson Аналогичная фигня. Даже верстать в «оппа-говносайт» мне понравилось больше, чем непонятно зачем чертить редукторы и эвольвенты
15:28@jsunderhood отучился 5 лет на математика-программиста. Математике научили, а программировать — нет :-(15:29
@jsunderhood лично знаю ентерпрайз сеньёра который по образованию философ16:50
@jsunderhood что можете сказать по поводу js фреймворка aurelia.io и на чем сейчас имеет смысл начинать большие проекты?17:11
.@serebro Фреймворки и их особенности, увы, не моя сильная сторона, я сразу в этом и признался twitter.com/jsunderhood/st… Беру помощь зала :)
17:16.@serebro Но с виду ничего так. Хотя и ничего революционно нового. А про то, какой ф/в выбрать — it depends, серебряной пули не существует
17:20@serebro @jsunderhood если речь идет о фронтенде, то я бы предложил ember.js17:21
Признаться, для меня фреймворки — скорее «необходимое зло»
17:49@jsunderhood фреймворк это просто инструмент, как молоток или отвертка. Отвертка для тебя тоже необходимое зло?18:18
.@instanceofpro Если проводить аналогии, отвёртка, как по-моему, — это либа. Ей можно закручивать и саморезы в стену и винты обшивки ракеты
18:26.@instanceofpro а фреймворк — это самолёт. Всё включено, заранее продумано и отлично летает, но на работу по городу на нём не поездишь
18:28.@instanceofpro На эту тему есть хорошая статья, frontender.info/zero_framework… Автор несколько экстремален, но кое в чём я с ним согласен
18:33@jsunderhood если бы единственная доступная отвертка была с анально-педальным приводом, то я бы определнно считал её «необходимое злом»18:33
@jsunderhood @instanceofpro сейчас все без разбора называют и либами и фреймворками. А разница лишь в размере отвертки и кол-ве насадок18:40
.@_elergy_ Как говорилось в «Осторожно, Модерн!», разница — коrенная! pbs.twimg.com/media/Bt8NEveI…
18:41@jsunderhood @instanceofpro отверткой можно чай размешивать18:44
@rastopyr_ua @jsunderhood @instanceofpro если либа зависит от других либ и диктует,как тебе структурировать код-стоит ли называть это любой?18:54
.@_elergy_ Зависимости — это просто замечательно. Но то, что заставляет определённым образом писать код — фреймворк
18:59Например, e.stopImmediatePropagation() в jquery — фреймворковая замашка. Он не будет работать с хэндлерами, установленными не через jquery
19:02@jsunderhood По-моему, разница между библиотекой и фреймворком - в том, что ты вызываешь функции библиотеки, а фреймворк вызывает твой код19:06
@_elergy_ а вы тут о Фреймворки vs Либы или что обсуждается? @rastopyr_ua @jsunderhood @instanceofpro19:06
@_elergy_ @jsunderhood @rastopyr_ua @instanceofpro ох не люба мне либа, люб – фреймворк)19:22
.@oelifantiev Спасибо! Вот это очень важная поправка, не знал, прошу прощения
19:29После реплая @jsunderhood вся лента засрана холиварами, а я совсем не о том писал.19:31
Раз уж зашёл разговор. А не кажется ли вам, что e.stopPropagation() слишком авторитарен? Не лучше ли, если бы каждый хэндлер решал за себя…
19:53…исполняться ему или нет на основе e.defaultPrevented? (Поддержку этого свойства оставим за скобками)
19:54@jsunderhood для себя по опыту пришел к тому, что он нужен в каких-то очень особых случаях. Приводит к неожиданным неудобствам потом19:57
@jsunderhood у нас разрешается использовать stopPropagation, только если докажешь, что по-другому нельзя. Не помню, чтобы кому-то удавалось.20:15
@ap_savin останавливать баблинг свайпа на элементах с горизонтальным скролом на мобильных, если по свайпу открывается меню? @jsunderhood21:23
.@SilentImp В обработчике жеста для меню проверять scrollWidth и scrollLeft у e.target? Не знаю. Не уверен, что правильно понял
21:25Вот юзкейс. Есть открытое меню и какой-то блок с кнопкой внутри. При клике куда-нибудь вовне выпадалка скрывается pic.twitter.com/rkC0lOJzin
22:03…кликаем на кнопку внутри. Обработчик на самом блоке нам вызывать нельзя, мы глушим событие через stopPropagation()…
22:05…но заглушенное событие не долетает до body/documentElement, и выпадалка не знает, что ей надо закрыться. Проблема.
22:06@jsunderhood странное условие не вызывать обработчик на блоке. Тогда блок должен смотреть, что клик не в кнопку. Тогда не будет stopP.22:20
.@likhter к примеру, кнопка удаления пункта ToDo-листа. А ещё внутри могут быть и другие кнопки, на все мыслимые случаи `if` не поставишь
22:23@jsunderhood Кейс имеет право на жизнь :) В моем понимании контейнер должен заботиться о том, что происходит у него внутри, а не наоборот.22:27
.@likhter трудно не согласиться) Я лишь о том, что блок не должен делать stopP, а то в этом случае он решает вообще за всю страницу
22:29# Четверг 60 твитов
Когда я в конторе служил версталём,
Ко мне постучался сеньор девелопер.
И глядя на код мой в открытом окне,
Он усмехнулся мне.
…это вам сегодня вместо музыкальной паузы :) Всем доброго утра!
6:25@likhter @jsunderhood вот пример проблемы: jsfiddle.net/wbvyz17h/ Решение: capture phase или stopPropagation.8:42
Сейчас проходит крупный ивент #FrontConfMsk, на @webstandards_up вы можете почитать текстовую трансляцию pic.twitter.com/cuPPylhCiQ
10:10@jsunderhood @huigovnomuravei он рассказал, как плачет QA11:02
Писать сейчас про фронтенд, пока идёт масштабная конфа, это как транслировать местный матч во время финала кубка чемпионов. Или нет? :)
13:35habrahabr.ru/post/258449/ — весьма интересная статья. И показательная. А сообщали ли вы когда-нибудь об уязвимостях, и что вам за это было?
14:42Свою первую «нормальную» уязвимость я нашёл 9 лет назад в одной браузерной игрушке. Отрепортил. Получил бан на четыре года.
15:25С другой стороны, недавно в наш стартапчик обратился белый хакер и рассказал об XSS. Поблагодарили и ещё $100 ему дали
15:27@jsunderhood так и становятся блэкхэтами15:27
А, может, у вас есть private bugs? Не обязательно говорить, где и каких масштабов, достаточно намекнуть ;)
15:29@jsunderhood private bugs? Это мандавошки, что ли?15:31
.@aod_toxic :D Упс! Я имел в виду нераскрытые уязвимости для личного пользования
15:32@jsunderhood а как вы это представляете? можно пример?15:33
.@SilentImp Да хоть бы и как в статье после хитрых манипуляций из ниоткуда берутся деньги. Можно сообщить, а можно сохранить в тайне и юзать
15:36@jsunderhood и сесть за мошенничество? Как бы коммиты в репозиторий именные, верно? Или предполагается, что клиент идиот?15:39
.@SilentImp Не на своём проекте, разумеется, закладки делать. Это как минимум саботаж. Я про найденные уязвимости на чужих проектах
15:41Прямым текстом, чтобы не было кривотолков. Я НЕ призываю делать закладки в коде. Обманывать работодателя — плохо и за это положен 9 круг ада
15:45Но если вы обнаружили, что кофейный автомат (который кодили не вы!) выдаёт латте по цене чая — вы будете этим пользоваться, или сообщите?
15:46@jsunderhood А статья не положена?15:48
.@chemikadze И статья, наверняка
15:48@jsunderhood Думаю качественный код дает больше профита (как минимум денег), чем экономия на латте.15:49
.@aod_toxic Хм… а зачем заботиться о качестве кода чужого, никак не связанного с тобой кофейного аппарата?
15:51@jsunderhood добавляешь в резюме - пофиксил кофеварку =)15:52
.@aod_toxic Ну, фиксить-то другие будут. А вот на вакансию QA «нашел багу в кофейном автомате» весьма достойно.
15:53Once again. Давайте говорить о багах, которые вы сами честно нашли (НЕ имея доступа к исходникам даже на чтение).
15:55@jsunderhood мне кажется, или ты пытаешься вычленить "хакеров" среди программистов?15:56
.@aod_toxic гхм… не хакеров, а добровольных аудиторов безопасности
15:58.@aod_toxic …чтобы найти SQL-инъекцию в поиске на Джумле, не нужно иметь особых хакерских талантов
15:59Окей, видимо, никто не хочет рассказывать, это нормально. Тогда расскажу о своих курьёзах. Один раз я нашёл SQL-инъекцию на сайте РГУ…
16:05…это вуз, выпускающий программистов. Сам по себе факт нахождения SQL-inj не ахти какое достижение, конечно. Но порадовала реакция…
16:07…говорю им, чуваки, у вас SQL-inj. Они: нее, не может быть, потому что не может быть. Поверили только когда скинул им логин подключения к БД
16:08Люди отрицали очевидное. Зачем — мне непонятно.
16:10Для меня сообщить об уязвимости — это как сказать «а у вас ширинка расстёгнута». Кто-то скажет спасибо. Кто-то расценит как домогательство
16:13Ошибки бывают у всех. По невнимательности или по незнанию. Но если не знать, как искать уязвимости, то как научиться их не делать?
16:21@jsunderhood @valerypopoff в Вышке два месяца стоял автомат, который готовил капучино за 20 копеек, а ещё давал три рубля сдачи16:23
Меня обвинили в аморальности и саботаже, потом в хвастовстве. Или я поднял не ту тему, или не умею изъясняться. В любом случае — извините.
16:28@jsunderhood а еще у тебя фотка страшная. ты там как будто с адского похмела. я же видела тебя в жизни - ты не такой!16:58
.@teardrop_lisa Ты же меня видела после полудня, да?
16:59@jsunderhood вот и фотографируйся после полудня!17:04
@teardrop_lisa @jsunderhood да, фотография эпически прекрасна. Под капотом AlcoScript от Кошерного Клошара.17:22
@teardrop_lisa @jsunderhood Я любя. Просто воздаю фото должное.17:22
.@SilentImp @teardrop_lisa У меня вообще морда нефотогигиеничная. Но что поделать, Кодекс Ведущего Подкапотного требует фото на аватарке.
17:24Прямо какой-то месяц мержев github.com/jashkenas/unde…
19:21Интересно, что дальше? Grulp? Emberbone? Npmower?
19:29@jsunderhood Embularactymerbone19:52
@jsunderhood bower был не нужен с самого начала. npm вполне мог работать с css/html и тд, Grulp был планом Gulpовцев на момент релиза.19:58
.@listochkin про bower — в самую точку! Мне кажется, fat написал его не потому что он нужен, а потому что хипстер
20:01@jsunderhood @listochkin мне безумно нравится управлять пакетами при помощи nuget, когда "прилетает" только то, что нужно20:10
.@Vitalliumm Но никто же не мешает подключать только то, что нужно, а остальное — нехай лежит, много места не займёт @listochkin
20:12@jsunderhood @listochkin да, но бывает так, что автор меняет директорию/название/etc., приходится подстраиваться.20:17
@jsunderhood @listochkin или вспомните истории, когда автор внезапно удаляет свою библиотеку с гитхаба, с корнями.20:17
.@Vitalliumm Если одолевают сомнения, можно же всегда форкнуть репу и выставить путь к ней в депсах package.json
20:23@jsunderhood нам в универе начальник СБ с гордость рассказывал, как завели дело на нашедшего уязвимость на их сайте, а на дыру забили.20:24
Вообще, интересно, зачем удалять свой код если им пользуются? У меня есть проект, страшный как смерть, но я его храню, ради трёх калек
20:33@jsunderhood когда мне грустно и плохо я чищу жесткий диск и репозитории. И репозиториев все меньше.20:36
.@SilentImp Ну что же так, сплеча? Можно сначала добавить опечаток, чтобы не запускалось. А если за месяц ни одного ишью или форка — удалять
20:42@Vitalliumm @jsunderhood @listochkin можно открепить форк в свой самостоятельный проект, написав в поддержку и обосновав зачем. Я так делал.20:56
@jsunderhood ну как мне кажется, это большое дело. Мердж давно напрашивался. Это всегда интересно,когда форк становится популярнее оригинала21:47
@Vitalliumm @jsunderhood У bower есть одно преимущество ему не важно наличие meta.jsonЧто полезно при проверке библиотек. Не все есть в npm.22:03
# Пятница 89 твитов
Bret Victor круто рассказывает о «so meta». Особенно хорош его доклад Inventing on a Principle youtu.be/a-OyoVcbwWE Всем доброго утра!
6:46Предлагаю сегодня и поговорить о всяких мета-штуках. Не о том, как пилить фронтенд, а почему именно вы фронтендеры?
8:53Возвращаясь к вышесказнному, я выбрал для себя кодинг осознанно, даже бросил универ. Мне нравится в нём то, что это всё-таки инженерное дело
8:54Но в отличие от железячных инженеров, тут обратная свзять приходит значительно раньше. Большая часть ошибок аукается максимум через месяц
8:56@jsunderhood Можно ещё почему программисты8:57
.@toivonens Ну, я имею в виду и версталей и даже немного «фронтовых» админов. Да и «нативщики» вряд ли будут читать jsUnderHood
8:58Мой хороший друг работает фронтендером. И честно признался, что он ненавидит айти, но больше ничего не умеет делать.
8:59@jsunderhood Мне нравится разработка и круг общения, который она предполагает. С людьми всегда можно договориться, и они поступают логично.9:06
@jsunderhood Но в другой стороны сложно пользоваться сервисами людей других профессий, тк везде видишь косяки и плохую организацию.9:07
Если какая-то тема уже раньше поднималась другими сессионными ведущими этого аккаунта, вы же говорите, ок? Чего одно и то же мусолить?
9:08@jsunderhood потому что в 11 лет я увидел на полке книжного книгу по HTML. После этого я пробовал себя в разном программинге, но выбрал веб.9:14
Странно. Точно помню, что на работе лежала книжка по HTML где-то 2000 года. Наверное, её всё-таки сожгли, чтобы не дай бог никто не прочитал
9:20Мой друг хотел срубить бабла по легкому в интернете, всё началось с порносайта :D9:21
так вот я попал в веб )) twitter.com/jsunderhood/st…
@jsunderhood в айти приходится "переучиваться" каждые 3 года; странно слышать "не умею"; программист может освоить много профессий9:27
Мне кажется, программисту важно знать не только его круг обязанностей, но и хотя бы иметь представление о том, что уровнем абстракции ниже
9:30Вам же приходилось слышать вопросы «как получить в php результат из функции js на странице», да? Такие люди не понимают, что происходит
9:32Чтобы уверенно работать с клиентским js, нужно хотя бы иметь представление о http и, желательно, о tcp/ip
9:36@jsunderhood В библиотеке нашел книгу "Сам себе WEB программист". Пожалуй, последняя книга, с которой надо было начинать знакомство с веб.9:41
@jsunderhood всё банально. В детстве я нажал не тот пункт в меню на сайте и открылся исходный код :) меня это поразило до глубины души :)9:41
.@kuzvac У меня примерно так же. Ради любопытства посмотрел в сгенерированный HTML, и — ба! — да там же просто текст. И пошло-поехало
9:42@jsunderhood к сожалению, в реальности все иначе. Очень часто человек использует нечто, не понимая или не зная как оно работает внутри.9:44
@jsunderhood имхо, хороший программист должен понимать КАКИМ ОБРАЗОМ это работет в первую очередь9:44
@jsunderhood А я в 11 начал с советских калькуляторов, потом C++ писал 4 года, а потом понял, что он никому не нужен, и свалил во фронт.9:52
@jsunderhood страш.бро писал на джаве. я хотел писать лучше него.начал с HTML :). сейчас брат преподает математику, а я пилю битуби-битуси9:52
@jsunderhood рисовал говнодизайны, позже стал брать еще за верстку. Потом верстал чужие говнодизайны. Далее стал прогать интерфейсы на JS =)9:52
.@VovanR Хм, мой коллега ушёл из труъ-вебдизайна в хардкорный JS. А вот случаев перехода из кодеров в дизайнеры я не знаю
9:54Отлично! Это же чертовски простой план, как привлекать в нашу отрасль новые кадры :) twitter.com/safrankov/stat…
9:56@jsunderhood @VovanR знаю одного дизайнера бывшего админа. Не эникейщика, а вполне нормального сетевика в провайдере.10:00
@green343 @jsunderhood освоил какие нибудь профессии еще?10:15
.@i_told_ya Что до меня, я верстаю для полиграфии, в меру фотошоплю, сисадминю, знаю основы UI/UX и перевожу для frontender.info :)
10:18.@i_told_ya …это, конечно, скорее, навыки, а не профессии. Но когда диз забухал, а надо оконтурить иконки в svg, и Jack of all trades сойдёт
10:25@jsunderhood всю жизнь был уверен, что айти не мое, хоть и учился в этой сфере. Потом нашел работу разрабом и не представляю себя иначе10:25
@jsunderhood а есть желание попробовать новые профессии? Какие?10:34
@jsunderhood я подумываю о психологии, урбанистике, градостроительстве10:34
.@i_told_ya моё откровенно слабое место — коммуникации с людьми. Думаю, это надо подтянуть. Но все книжки, что я видел — какая-то хрень
10:37.@i_told_ya психология — дело хорошее. В UX и производственных процессах точно пригодится. Но, опять же, трудно найти адекватную литературу
10:39.@i_told_ya Кстати, «Thinking Fast and Slow» Даниеля Канеман — просто великолепная книга и очень легко читается
10:42@i_told_ya @jsunderhood плитку умею, электрику(3 года назад научился); после ряда внедрений могу работать менеджером в некоторых темах10:43
Ещё из книг очень хвалили amazon.ca/Field-Guide-Un…
10:46Иногда, когда мне очень грустно, я хочу бросить вебдев и стать водителем маршрутки
10:47@jsunderhood меня тоже к машинам тянет, хочу их чинить10:54
Ну давате ещё по книгам. «Вы, наверное, шутите, мистер Фейнман» — это маст-рид для каждого человека с техническим складом ума
10:57@jsunderhood а я почему-то таксистом.10:57
@jsunderhood книга очень средняя на троечку11:13
На twitter.com/jsunderhood/st… много интересных ответов
11:17@jsunderhood У этого вопроса есть ответ, отличный от «никак»12:48
@jsunderhood Когда мне стало грустно продвать краску, я пошел в вебдев. Теперь когда мне грустно, я думаю о краске и становится легче.13:37
Продолжая мета-тему: Занимаетесь ли вы фротендом после работы, как хобби, и как ваши вторые половинки относятся к этому?
14:16Моя, например, не всегда понимает, почему я до трёх ночи пытаюсь уменшить код на один байт при том, что не получу с этого никакой выгоды :)
14:18@jsunderhood просто программирую в свободное время, когда оно есть. но приоритет идет на половинок. времени хватает на все :)14:18
@jsunderhood это уже зависимость 😂14:20
@jsunderhood кстати о мета-темах. я знаю что @veged такое любит обсуждать. и давайте еще про парное программирование потом поговорим?)14:21
.@rastopyr_ua Давайте! Как по мне, парное программирование — утопия. Лучше хорошее, но краткое, ревью и включённые линтеры
14:23@jsunderhood после работы - только бэкендом14:24
@jsunderhood у меня это хобби, поэтому занимаюсь после работы. А как к этому должны относиться половинки? у каждого есть хобби14:25
Вообще, самая лучшая работа — это хобби, за которое почему-то платят деньги
14:26@jsunderhood не согласен, вдвоем некоторые проблемы решаются гораздо быстрей. Просто оно должно быть таргетированным на конкретную задачу14:27
@jsunderhood там, где проседает один программист, подхватывает другой и наоборот — получается довольно эффективно14:27
@jsunderhood youtube.com/watch?v=F_cD6X… вот кстати достаточно подробная лекция на тему14:32
@jsunderhood а есть такие? (из дева) :)14:33
.@Vitalliumm тут жеж как. Если чувствуешь, что дев не приносит тебе удовольствия, значит твоя настоящая привязанность какая-то другая
14:34.@Vitalliumm Само собой, не может быть так, чтобы вообще всегда всё офигенно. Я имею в виду некое усреднённое значение «довольности»
14:35@jsunderhood В России занималась, сейчас нет. На работе хватает времени на все что меня интересует.14:39
@sc0rp1d @jsunderhood Привет, меня зовут Александр и я программирую дома уже 12 лет…*всхлипывает*15:02
Только вряд ли у кого-то есть хобби "фиксить баги" или "разбирать чужой говнокод". А это приходится тоже делать twitter.com/jsunderhood/st…15:03
.@rusgautama С адским говнокодом я — тьфу-тьфу — уже сталкиваюсь нечасто. А правка багов — это медитативный процесс, улучшение Вселенной
15:05.@rusgautama …правка багов — это как уход за садом. Там смотришь, листочек неправильно — чик! Там заборчик покосился — шлеп! Красота!
15:07@jsunderhood представь что ты оказался на огромной куче радиоактивных отходов и говна с задачей привести сад в порядок. @rusgautama15:11
@jsunderhood берешь лопату и начинаешь искать сад. А за спиной стоит черный властелин с секундомером и страпоном. @rusgautama15:11
@jsunderhood Это больше напоминает реальный багфиксинг. И процесс не медитативен. Совсем. @rusgautama15:11
.@SilentImp Надо думать, по условиям задачи я сам же разложил эту атомную диарею? Если да, то так мне и надо. @rusgautama
15:15@SilentImp @jsunderhood @rusgautama есть вещи хуже багфиксинга. Писать документацию к чужому коду, например:)15:15
@jsunderhood нет, в одиночку такое не осилить. Всегда есть легаси код и тот, другой, чувак. @rusgautama15:23
.@SilentImp Я каждый день работаю с легаси, 7Мб JS, начнали писать в 2011 C++ники, но у меня нет анального таймера, и это сильно меняет дело
15:24.@SilentImp Если манагер не вынимает душу, то есть вера в светлое будущее и то, что будут на Марсе яблони цвести
15:25@jsunderhood идиотизм16:59
Cheers! pic.twitter.com/lXkOX9TYe9
17:31@jsunderhood @rastopyr_ua тогда я с коллегами работаю в утопии ;-) у нас уже триплпрограммирование работает, пробуем квадропрограммирование!17:31
@jsunderhood В Финляндии любят тоже вдвоём засесть, или коллективные технические брейнштормы @rastopyr_ua17:32
@jsunderhood занимаюсь бэкендом. Какие вторые половинки? :)17:39
@jsunderhood да, но вторая половинка и отпочковавшиеся четвертинки не очень готовы мириться с этим фактом))18:02
@jsunderhood @rastopyr_ua парное программирование позволяет пресекать ересь, которая может пройти, если задача срочносрочная18:02
.@unel86 если задача юберсрочная, то, конечно, можно хоть всем отделом её пилить. Но это же не постоянно
18:03@okertanov ну, вы не правы, время от времени стоит переключится. Но @jsunderhood почему именно водителем?18:08
@jsunderhood меня вот всегда больше тянуло попробовать себя в качестве маленькой лошадки, баристы или стриптизера в гей-клубе. @okertanov18:10
@jsunderhood Так как свою работу стоит любить, то это для меня вполне логичный выбор.18:16
@jsunderhood я пилю фронтент потому что ненавижу людей, а стать врачом помешала гемофобия.18:34
@jsunderhood к чёрту фронтенд. Кому он нужен)18:34
.@tommy_diaver Пральна! Только telnet, только хардкор
18:36# Суббота 75 твитов
Одна из моих излюбленных «дисциплин» js-гольфа — злоупотребление DOM и BOM. Например,
var escapedHTML = new Option(”<").innerHTML; // "<"
В том же jsfuck.com символ "<" добывается весьма изощрённым способом: ““.italics()[0]
8:13Что интересно, код выше будет работать даже в nodejs, в нём тоже есть нестандартные String.prototype.italics, .link, .anchor, .big и другие
8:17@jsunderhood да, жена только рада, что я развиваюсь профессионально) но до трёх не сидел, максимум пару часов после работы8:18
@jsunderhood Мне кажется что настоящие айтишники — они до мозга костей. И, конечно, же прогят/админят/изучают/читают во вне работы →8:18
@jsunderhood → но жены/подруги, если они не айтишницы, обычно смотрят на это не очень воодушевленно. У меня так.8:18
Вопрос читателям:
Есть строка с таким содержимым: текст в UTF-8, закодированный в base64. Как его оттуда вытащить на клиенте?
@jsunderhood почему нестандартные-то? Annex B: people.mozilla.org/~jorendorff/es…8:36
.@vkurchatkin Забавно, похоже их уже «легализовали». В es5 их не было
8:37@jsunderhood функции btoa или atob8:38
.@roman01la Близко. Но atob вернёт не utf-8, а строку псевдо-8bit-ascii (символы с charCodeAt от 0 до 255)
8:42@jsunderhood такой еще есть стандарт: javascript.spec.whatwg.org8:50
@jsunderhood developer.mozilla.org/en-US/docs/Web… Solution 1, функция b64_to_utf8. Работает в IE10+ и остальных браузерах.10:03
.@le0_nik Йеп! Это как раз тот случай, когда два метода со странным поведением дают ровно то, что нужно
10:04@jsunderhood sublime или atom?10:05
.@DimkaSerov Пока что саблайм 3. Атом хорош, но остаётся смутное чувство недопиленности
10:06.@DimkaSerov Хайповый Slack тоже на атом-шелле (его ещё вроде в electron переименовали?), и тоже вызывает чувство недопиленности
10:08@jsunderhood пользуешься easymotion под саблайм? Или как то по другому перебегаешь по коду?10:09
.@DimkaSerov неа, я не большой любитель вима (хотя и говорят, что это удобно). Ctrl-G, Ctrl-F, Ctrl-D и Ctrl-F мне достаточно
10:11.@DimkaSerov *поправочка, вместо одного из Ctrl-F я имел в виду Ctrl-R
10:12@jsunderhood @DimkaSerov атом имеет склонность к зависанию :(10:19
@jsunderhood напоминает: Don't code and drive! ;)
10:27Непонятно, зачем надо было форкать не-очень-стабильный nwjs в не-очень-стабильный electron
10:54@KSDaemon @jsunderhood голове отдыхать тоже нужно давать :)10:55
@jsunderhood расскажешь про свой топ плагинов для саблайма?)10:56
.@DimkaSerov Всё достаточно ванильно: hayaku, jshint, trailing spaces и схемы для подсветки less и шаблонизатора django.
10:58.@DimkaSerov с hayaku гораздо проще писать css, но его киллер-фича для меня — Ctrl-Alt-⇅
11:04@jsunderhood @DimkaSerov в emmet есть тоже самое11:07
.@iamstarkov Наверняка ещё и больше. Но мне все равно, какой именно плагин обеспечивает мне эту функциональность
11:09.@iamstarkov @DimkaSerov Раньше я мог потратить три дня, чтобы отконфигать и вылизать Миранду или Тотал с нуля. Но уже как-то надоело
11:12Вот ещё загадка на смекалку: как проще всего в браузере редиректнуть на другой домен, то тот же uri? Скажем с foo.сom/bar/ на baz.сom/bar/
11:17.@mostolovista В точку!
11:37Ещё задачка для скучающих джаваскриптстеров (если ещё не надоело), какая строка будет соостветствовать регулярке: /(\cb)\1\2/
11:41Самый «завальный» вопрос, который можно задать на собеседовании, это не про равно-равно и сложение строк с числами…
11:45…вот кто уверен, что знает, что вернёт такая функция?
function foo(){
try { return 1}
finally { return 2}
}
@jsunderhood 2 она всегда вернет. Инфа 100%13:00
Уважаемые Знатоки, внимание, ответ: "\x02\x02\x02"
13:08… \cb — это Ctrl-b, т.е, \x02. \1 — ссылка на первую скобку, которая явно равна \x02. А второй скобки нет, поэтому \2 парсистся как \002
13:10Вот ещё кусочек «адокода»:
with({foo: 42}){
var foo = 33;
}
Как оно отработает?
@jsunderhood правильный ответ - кинет ошибку, т.к. должен быть 'use strict', блеат. А вообще в объекте foo станет равным 33.13:56
@jsunderhood верно, во внешнем скоупе объявится, но без значения.14:24
Приходилось ли вам работать с кодом с js как с AST?
15:41@jsunderhood было дело - для автоматизации перехода на другую систему интернационализации (она же i18n)15:45
Вдогонку: что больше понравилось, Esprima или ast uglify (или что-то другое)?
15:46@jsunderhood с ним только так и надо работать!… жаль нет нормальных редакторов :-(15:48
Желание поработать с AST появилось после ужасного хака, где код парсился регуляркой. И вылилось в npmjs.com/package/rhubarb
15:54На всякий случай: никогда, слышите, никогда! не парсите js регулярками!
15:56Главная проблема в парсе js регулярками — это… регулярки. Точнее RegexpLiteral, начало которого трудно отличить от деления и начала коммента
15:58@jsunderhood ничего кроме Esprima не использовал, но впечатления положительные15:58
Я сейчас не могу найти тот твит, но буквально недавно оказалось, что для одной и той же задачи эсприма работает ещё и быстрее, чем регулярки
16:04В Эсприме больше всего не понравилось, что Identifier может быть как varname, так и propertyname, отличить можно только по родительской ноде
16:20@jsunderhood вопрос возникает когда js надо не только распарсить, но и изменить и, желательно, еще и сохранить.16:22
@jsunderhood вот тогда уже ast выглядит менее предпочтительным вариантом16:22
.@mkazantsev да, есть такое дело. Распарсить — но проблемо, собрать обратно целый гемор. Да ещё ж и с сорцмэпами надо (иначе уже не принято)
16:24.@mkazantsev Говорят, в jscs именно это долгое время мешало не просто выдавать ошибки, но и править их автоматически
16:28@mkazantsev @jsunderhood так а вроде есть estraverse и еще какая-то либа, которая ast "сериализует" обратно.17:55
@jsunderhood я в итоге в другую сторону пересобирал регэкспами - повезло, что довольно простые паттерны были18:46
.@mkazantsev Я полагался на индекс вхождения и длину токена. И замены в обратном порядке: с конца в начало. Зато это сохраняет ориг. отступы
18:49@jsunderhood @mkazantsev esprima плоха?18:53
.@iamstarkov Из имеющегося Эсприма чертовски хороша @mkazantsev
18:54Кто-нибудь может посоветовать REPL джаваскрипта под андроид? Для проверки чего-нибудь в полевых условиях пользуюсь repl.it, не очень удобно
19:08@jsunderhood github.com/jxcore/jxcore + repl его, мб?20:24
.@sudodoki Выглядит очень многообещающе, особенно после полуживого anode (github.com/paddybyers/ano…)
20:38Джаваскипт со скрипом, медленно, но верно расползается по платформам и скоро будет в вашем холодильнике. Если его ещё там нет, конечно
20:56@mkazantsev @jsunderhood вот этот доклад гляньте, там пример реальный. abstract.properties/jsconfbp-2015/20:58
@jsunderhood йеп21:02
The JS World Domination medium.com/@slsoftworks/j…
и The Birth & Death of JS destroyallsoftware.com/talks/the-birt… pic.twitter.com/7qOsUUz4d8
Тащемта, даже Рендалл Манро не обошёл это явление стороной xkcd.com/1508/
21:05@jsunderhood конкуренты: Python или Go, близки или далеки от js в этом деле ?21:08
.@Moroz_v Python и так уже на всех платформах, даже на Symbian. Но вокруг него уже нет хайпа, и на микроволновки его портировать не станут
21:15.@Moroz_v Как обстоят дела с Go увы, не знаю. О Go или Dart я слышу только когда собирается очередной митап по Go или Dart
21:17.@Moroz_v Весьма вероятно, JS как таковой ни при чём, и любой браузерный язык был бы так же популярен. Снова Ренделл xkcd.com/1367/
21:22@jsunderhood меня вот ещё один вопрос интересует у Python или Go есть такое же сообщество и пакетный менеджер, как у JS?21:36
# Воскресенье 107 твитов
Вопрос @iamstarkov превратился в интересное обсуждение пакетных менеджеров twitter.com/iamstarkov/sta…
8:30Похоже, и в других языках наметился переход от глобальной установки модулей к локальной (у каждого проекта своё собственное окружение)
8:43@jsunderhood например, в каких?)8:45
.@sagrenite в дискассе (ссылка чуть выше) шле речь про Python, да и про php я что-то такое слышал
8:46@jsunderhood даже у PHP уже давно есть Composer.9:09
@jsunderhood почитал дискасс, интересно) когда я учил питон - сразу рекомендовали юзать virtualenv. В особенности для Django9:09
.@sagrenite А когда ты учил питон? Ну хотя бы примерно, мне для общей картины
9:12@rusgautama @jsunderhood composer в PHP по-моему не умеет то что озвучено. Там одна свалка зависимостей, как в bower9:22
@jsunderhood учил его в 2011, но virtualenv появился ещё в 20089:22
.@sagrenite Примерно в одно время со мной. Жаль, мне тогда никто не сказал For great justice использовать virtualenv
9:24float: left;
display: inline;
Кто-нибудь ещё помнит, зачем эти два CSS-свойства применяются вместе? :)
@jsunderhood что за дичь?)9:55
@jsunderhood фикс для дабл маржинлв в ие6?9:55
@jsunderhood забудешь эти двойные маргины в IE, как же.9:55
@gxoptg_ @denisov @jsunderhood это не нужно читать, у нас уже есть флексбоксы, и уже слава богу нет IE610:37
@jsunderhood @sagrenite в разных других языках есть инструменты для проектного управления завмсимостями 100 лет как;)10:57
Последний раз я верстал шаблон email года четыре назад. В то время приходилось использовать чуть ли махровый html 3.0. Как там дела сейчас?
11:01@jsunderhood tables, inline-css :(11:29
@jsunderhood Вот таблица, полная боли: templates.mailchimp.com/resources/emai…11:29
Специально для подписчиков @jsunderhood, которые просили больше ада и шуток - твиттер @horse_js!11:34
.@bashmish Я оттуда новости узнаю. :) Если КоньJS пишет «underDash», то как бы понятно, что-то происходит
11:36Чуть больше девяти часов остаётся мне на подкапотном посту. Пожалуй, я уже спросил и рассказал всё, что хотел.
11:46Что не рассказал, можете почитать тут gist.github.com/subzey или тут habrahabr.ru/users/subzey/t…
11:48В оставшееся время я поотвечаю на ваши вопросы. Задавайте любые, даже не связанные с вебдевом
11:51@jsunderhood Может, спрашивали, но я не видел. Какой у тебя опыт разработки?11:55
@jsunderhood на каких ещё языках ты программируешь? Какой опыт на них?11:56
.@Kern_0 Раньше хорошо умел php (ок. 5 лет стажа). Питон около 3-4 лет. Знаю, с какой стороны держать C и Asm
12:01.@Kern_0 Но js — моя первая любовь (после бейсиков). Подкупило тогда то, что ничего не надо ни ставить, ни компилировать :)
12:03@jsunderhood что насчет 420?12:07
.@i_told_ya Не, 420 не прёт, чувствую себя тупым и вялым. Старый-добрый алкоголь лучше
12:09@jsunderhood какие у тебя музыкальные пристрастия?12:11
.@i_told_ya По большей части Industrial rock/metal, IDM, ambient и chiptune
12:12@jsunderhood Я — джуниор, читавший Code Complete и учивший JS по MDN. Что мне стоит почитать?12:15
.@gxoptg_ Почитай «The Good Parts», и айда фигачить код! Только практика, только хардкор, а там по ходу и сам поймёшь, что ещё почитать
12:17@jsunderhood Ну и вдогонку: какие книги/ресурсы/навыки/etc тебе больше всего помогли в карьере и развитии?12:18
.@gxoptg_ javascript.ru и как ни странно, стандарт ES5 в переводе Д. Сошникова. Ну и остальное по мелочи, уже не помню
12:25.@gxoptg_ Ах, да, код сам по себе хорошая книга. Можно открыть сорц какого-нибудь jquery или underscore и изучать, как пишут маститые кодеры
12:28@gxoptg_ @jsunderhood Пробовал на досуге как-то пособирать gist получился небольшой gist.github.com/ufocoder/13eb3…12:29
@jsunderhood jQuery скорее учебник того, как не надо писать. По крайней мере в 2015 году.12:36
.@mkazantsev если ты про API, согласен, апи jquery — то ещё нагромождение легаси
12:38@gxoptg_ @jsunderhood Professional JavaScript for Web Developers by Nicholas C. Zakas, чувак дотошнейший и практичнейший.12:42
jQuery можно поблагодарить за популяризацию чейнинга. Но в самой джеквере местами чейнинг сделан только ради чейнинга
12:45Например, метод .end(). Используется чуть чаще, чем никогда. А ссылку на предыдущий объект держит, отличное место для утечки памяти
12:48…в каком-то из плагинов было что-то вроде setInterval(fn(){
$a = $a.closest(".foo");
}
Ух, как оно текло!
Или вот: в ноде .emit() возвращает то, было ли обработано событие. В DOM dispatchEvent — то, был ли он defaultPrevented…
12:55В jquery $(…).trigger() возвращает this. А зачем нам знать, было обработано событие или нет? Чейнинг-то важнее
12:56@jsunderhood помимо JS, на чем разрабатываешь/что изучаешь и почему? Нравится ли?12:57
.@le0_nik ответил чуть выше, twitter.com/jsunderhood/st… Сейчас изучаю Open/WebGL, без фреймворков WebGL — злая вещь, но пока не унываю)
13:01@jsunderhood что ты думаешь на счёт раскладок ? Дворака и тд?13:01
.@DimkaSerov кому как удобнее. Если у тебя один ноут, с которым ты везде, то вообще нет препятствий. Сам пользую Бирмановскую Qwerty
13:03@jsunderhood @le0_nik Кстати в этом году вышла первая книжка по WebGL на русском13:04
@jsunderhood а что на WebGL разрабатываешь?13:05
.@le0_nik Пока ничего. Изучать начал потому что заметил в демосценерской теме заметный дрейф в его сторону
13:06@jsunderhood сколько символов набираешь в минуту на англ раскладке?)13:07
.@DimkaSerov Не знаю. Когда кодю, я думаю с «меньшим рейтом», чем печатаю. А в скайпе сильно не разгонишься
13:11@jsunderhood я сейчас верстаю письмо. Это как и прежде ужас: таблицы, inline CSS. Только Premailer немного упрощает жизнь.13:12
Кстати, разработчики, как у вас с английским языком? Общаетесь ли вы с иностранными коллегами в скайпе/слэке/чем-нибудь ещё?
13:14Я частенько переписываюсь с французами, они говорят, что у них английский знают практически все
13:17@jsunderhood для реддита хватает)13:17
.@jsunderhood ладно. Самый технический вопрос этой недели : как думаешь, если сразится акула и медведь, кто победит?13:18
.@DimkaSerov Ха! Конечно же медведь! Этж машина для убийства, когти — во!, зубы — во! А черно-белая раскраска и тёмная шерсть под глазами…
13:21@jsunderhood на работе все общение на английском языке, 95% всей информации из англоязычных источников, ну и общение с коммьюнити конечно же13:21
@jsunderhood Общаюсь только на англ, но с сообществом из России/Украины/Беларуси - по русски13:21
@oelifantiev есть такой how-to по верстке писем habrahabr.ru/company/pechki… @jsunderhood13:28
@jsunderhood @gxoptg_ можно было сразу ссылку дать на профиль @DmitrySoshnikov :)13:31
@jsunderhood Если в целом говорить в рамках event drivent development, то нам действительно не нужно знать обработалось ли событие.14:00
Вы наверняка видели выступление Вадима Макишвили «36» youtu.be/xPPCzryZK44. Делюсь ссылкой на его новое выступление youtu.be/iBHr8gKc5L8
14:38@jsunderhood отличная идея про this gist.github.com/subzey/8115612 Еще нигде не встречал до этого15:40
@jsunderhood хватает только на чтение и написание комментариев к коду. Разговаривать не с кем, так как никто не знает английский =)15:41
Я всё думаю, в coffescript же нельзя принудительно объявить переменную как локальную (coffeescript.org/#try:%23%20%D1…) и нет неймспейсов…
18:07…товарищи кофескриптеры, вы что, все имена глобальных (или в общем случае из внешних скопов) переменных запоминаете?
18:08@jsunderhood в частности поэтому и забил на coffeescript. Да сейчас он уже и не актуален. ES6 + Babel FTW.18:14
.@le0_nik просто именно «вывернутые наизнанку» объявления переменных меня в своё время и оттолкнули от кофе. Но вдруг я чего-то не понял
18:17Вдогонку признаюсь, у нас на проекте в .jshintrc выставлен "-W004": true, разрешающий несколько объявлений одной переменной (пока пилим es5)
18:31…не очень красиво, но зато легко добавлять-удалять циклы, при условии, что var используется де-факто как «типа-let» с блочным скопом
18:34А вы, когда редактируете код, думаете о том, какой гит-дифф получится? Пытаетесь ли избегать мерж-конфликтов, или пофигу?
18:38@jsunderhood иногда, зависит от обстоятельств. Точно нет если я - один разработчик на проекте :) И да, стараюсь не делать вайтспейс диффы.18:40
Я считаю, singlevar — плохая практика. После мержа может остаться
var a=1,
b=2;
c=3;
«Одна переменная — один var» в этом железобетонно.
…да и замена ; на , меняет строку и делает тебя последним в блейме :)
18:47@jsunderhood Всегда делаю git add -p и иногда редактирую в нем чанки. Стараюсь раскидывать функциональные правки по разным коммитам.18:48
@jsunderhood гит вообще меняет мышление о процессе разработки, приходится разбивать правки на разные коммиты в зависимости от их назначения.18:48
.@lancedikson @ixth А-аналогично. Атомарные правки проще отследить и при необходимости откатить. git-revert-driven development, хехе.
18:51@jsunderhood поэтому, отвечая на твой вопрос: да, стараюсь задумываться обо всём, что делаю18:52
@jsunderhood а что есть из годных программ периодические перерывы/нотификейшены делать под мак?18:52
Эксперимента ради использовал в одной строчке let, стрелочную функцию, дестр. присваивание и аргументы по умолчанию: babeljs.io/repl/#?experim…
19:07…Тото, мне кажется, мы больше не в Канзасе.
19:08@jsunderhood из-за несовершенства контроля версий? Пфф19:14
@jsunderhood @toivonens первая же проверка отвалиться, что ж такого. Хотя я - за19:19
.@denisx Хорошо, если есть линтер на он-коммит хуке. А то «чего там проверять, одну очевидную строчку?»
19:20@jsunderhood Если весь новый код вливать через PR с continuous integration, этой проблемы не существует.19:21
.@toivonens Для проектов размером с баржу — безусловно! А кто будет каждый раз делать CI для библиотечки npm в 50 строк?
19:23@jsunderhood @denisx препуш-хуки лучше, меньше отвлекают19:23
@iamstarkov @ixth @jsunderhood вы задроты просто, я бы вам не доверил организовать пьянку, например. ;)19:28
@jsunderhood @toivonens я для своих однострочников тренис поднимаю и норм19:30
@jsunderhood думаю об этом перед коммитом. Но обычно не парюсь и в один коммит может попасть несколько тикетов. Или попутно исправленный баг19:58
@jsunderhood атомарные коммиты стараюсь делать. Если много форматирования и прочих стайл-фиксов -> отдельная ветка и прошу всех помержиться19:58
@listochkin @VovanR @jsunderhood аналогично считаю идею плохой. Давно юзаю bind и других заставляю:)20:20
Что ж, моё время подходит к концу. Спасибо вам, коллеги, я узнал много новых вещей и услышал много самых разных мнений
20:45Надеюсь, вам тоже понравилось, и вы тоже открыли для себя что-то новое
20:47Вот вам на прощание микроскопическая демка:
20:47eval(unescape(escape('𬱥𭁉𫡴𩑲𭡡𫀨𡡵𫡣𭁩𫱮👣𫱮𬱯𫁥𨱬𩑡𬠦𫁥𨑲𛁥𫱧𨰽𧁜𫠢🐧𠑲𬡡𮐨𪡯𪑮𘂷𘠺𘢷𘀢𨠽𦱩𧐫🐡𪐬𘠠𥁨𨑮𪰠𮑯𭐡𘀭𠁪𬱕𫡤𩑲𢁯𫱤𘀢𨠫𨰫𨐫𘠩𛁩🐱𩐳').replace(/uD./g,'')))
20:48…да, это тоже исполняемый код, не бойтесь, скопируйте и запустите его в консоли браузера или ноды :)
20:49На этой неделе с вами был Антон @subzey Хлыновский.
Для меня это было очень новым, необычайно интересным впечатлением. Вы офигенные!
# Ссылки
goo.gl
- https://goo.gl/VyOVbL
- https://goo.gl/a3wrou
- https://goo.gl/W13kdd
- https://goo.gl/RS3FNF
- http://goo.gl/xY4Suu
- https://goo.gl/HG8vFn
youtu.be
- https://youtu.be/l1lr2ckSrTo
- http://youtu.be/a-OyoVcbwWE
- https://youtu.be/8d4RtvMQp10
- http://youtu.be/xPPCzryZK44
- http://youtu.be/iBHr8gKc5L8
github.com
- https://github.com/mistadikay/strict-loader
- https://github.com/Siorki/RegPack/
- https://github.com/cowboy/jquery-resize/blob/master/jquery.ba-resize.js
- https://github.com/jashkenas/underscore/issues/2182
- https://github.com/jxcore/jxcore
- https://github.com/paddybyers/anode
gist.github.com
- https://gist.github.com/subzey/47d772020089b6e41cab
- https://gist.github.com/subzey/2616ee0dc8c1ea43a8eb
- https://gist.github.com/subzey
- https://gist.github.com/ufocoder/13eb354d9463850d654b
- https://gist.github.com/subzey/8115612
other
- http://m.ustream.tv/recorded/62250630
- http://blog.jetbrains.com/dotnet/2014/12/15/improved-typescript-support-in-resharper-9/
- http://vk.com/it_61?w=wall-55614321_897
- http://repl.it/oZV
- http://repl.it/ozU
- http://js13kgames.com/
- http://js1k.com/2313
- http://www.iteral.com/jscrush/
- http://microjs.com/
- http://habrahabr.ru/company/tradingview/blog/178261/
- http://habrahabr.ru/post/258449/
- http://habrahabr.ru/users/subzey/topics/
- http://habrahabr.ru/company/pechkin/blog/255819/
- https://www.youtube.com/watch?v=8aGhZQkoFbQ
- https://www.youtube.com/watch?v=F_cD6XOrfAc
- http://www.pouet.net/prod.php?which=59403
- http://www.pouet.net/prod.php?which=59298
- http://www.pouet.net/prod.php?which=64966
- http://www.p01.org/releases/140bytes_music_softSynth/
- http://2014.jsconf.eu/speakers/mathieu-p01-henri-monster-audiovisual-demos-in-a-tcp-packet.html
- http://jsfiddle.net/subzey/phb49762/
- http://jsfiddle.net/92ewxh6k/
- http://jsfiddle.net/wbvyz17h/
- http://frontendconf.ru/2015/abstracts/1724
- http://aurelia.io/
- http://frontender.info/zero_framework_manifesto/
- http://frontender.info/
- https://pbs.twimg.com/media/Bt8NEveIcAEsTqH.png
- http://thecodelesscode.com/case/104?lang=ru
- https://www.npmjs.com/package/ex
- https://www.npmjs.com/package/rhubarb
- http://www.amazon.ca/Field-Guide-Understanding-Human-Error/dp/0754648265
- http://jsfuck.com/
- https://people.mozilla.org/~jorendorff/es6-draft.html#sec-additional-properties-of-the-string.prototype-object
- https://javascript.spec.whatwg.org/
- https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_.22Unicode_Problem.22
- http://location.host/
- http://baz.com/
- http://abstract.properties/jsconfbp-2015/
- https://medium.com/@slsoftworks/javascript-world-domination-af9ca2ee5070
- https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
- https://xkcd.com/1508/
- https://xkcd.com/1367/
- http://templates.mailchimp.com/resources/email-client-css-support/
- http://javascript.horse/
- http://coffeescript.org/#try:%23%20%D1%83%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%20%D0%B3%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%0Astate%20%3D%20%7B%7D%0A%0A%23%20...%20100%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%20%D1%81%D0%BF%D1%83%D1%81%D1%82%D1%8F%0A%0Apluck%20%3D%20(arr)-%3E%0A%20%20state.foo%20for%20state%20in%20arr%0A%0A
- https://babeljs.io/repl/#?experimental=true&evaluate=true&loose=false&spec=false&code=let%20foo%20%3D%20(%7Bbar%20%3D%2042%2C%20baz%7D%20%3D%20%7B%7D)%20%3D%3E%20console.log(bar%2C%20baz)%20%20%0A%0Afoo()%3B%0Afoo(%7B%7D)%0Afoo(%7Bbar%3A%2033%7D)%0A