# Понедельник 68 твитов
Всем привет, технически уже понедельник по Мск, так что я, пожалуй, начну. Меня зовут Иван Метелёв, я один из верстальщиков веб-версии ok.ru
0:58До «Одноклассников» работал в одном из лучших питерских диджитал-агенств, а до этого делал с нуля отдел верстки в малоизвестной студии
1:02Желание стартовать ночью вызвано стремлением понять срез местной активной аудитории перед началом недели. Итак, вы:
1:04@cssunderhood и как вам живётся верстая такой уёбищный дизайн?
Тут сразу ожидаемый вопрос из зала. Короткий ответ — хорошо. Подробный ответ — ближе к концу недели twitter.com/mikeBazhenov/s…
11:51На самом деле тут уже был @mishcherin с каким-то рассказом о внутренней кухне и процессах ok.ru, так что постараюсь не повторять эту тему
11:57Давайте к делу, что ли. Расскажите, какие самые неожиданные проблемы по производительности вы ловили на проектах? Мы тут только про css, да
12:01@cssunderhood float: left в firefox вызывает relayout до ближайшего родителя с position: relative. А у тебя keypress в contenteditable12:03
@cssunderhood multi-columns :: twitter.com/lazy_frontend/…12:24
Что, никто никогда не клал оверлей с filter: blur поверх играющего видео? Никто не страдал от тормозов :hover в старых ie?
12:29@cssunderhood на одном из проектов полный отказ от анимаций хорошо сказался на производительности и не ухудшил ui. Особенно на моб. адаптиве12:33
Вообще вот вам свежий хороший доклад от @xanf_ua. youtu.be/JIkWFrHL0xo . Там и про причины просадок, и про нюансы отладки
12:36@cssunderhood однажды ловил крэш мобильного Сафари (на iPad mini 1) из-за флексбокса для основного каркаса страницы (без него не крэшилось).12:54
Вообще я долго не понимал, какие могут быть проблемы.
Разговоры о сокращении вложенности селекторов из-за парсера казались неубедительными
Первый раз я увидел реальную проблему/целенаправленную оптимизацию, когда пришел в ok и увидел там асинхронную систему бандлов. Это был 2013
13:12@cssunderhood В Опере (кажется, 9) тормозило динамическое переключение анкеты на форму. Потом они ускорили DOM, мы открыли БЭМ, стало лучше.13:13
Здесь есть люди, которые _в силу необходимости_ применяли critical path, отложенную подгрузку? Есть те, кто от этого всего потом отказались?
13:15@cssunderhood с ховером где-то был хороший совет: указывать имя тега, например a.link:hover, вроде помогало в IE7.13:16
@cssunderhood Что есть отложенная подгрузка? Любой lazy loading?
Подразумевается подгрузка css. Например, при ajax-навигации на раздел [как в vk] twitter.com/webholt/status…
13:19@cssunderhood Непонятно, что за проблема и в чём оптимизация.
Проблему формулировали так: есть 1 мегабайт стилей, блокирующих рендер, ну и наверное лучше как-то их параллелить
twitter.com/ruGreLI/status…
Я на всякий случай отмечу, что оценку объема css я даю после минификации и до gzip, потому что скорее не про сеть, а про парсинг
13:37Зачем столько стилей — отдельный разговор. Отчасти это вызвано спецификой дизайна ok. Отчасти — спецификой a/b, которого у нас всегда много
13:40@cssunderhood да, применял оба, не отказался.13:40
В итоге отказались от асинхронной подгрузки стилей — при множестве точек входа сложно поддерживать эффективность сборок. С другой стороны,
13:47@cssunderhood профит отложенной подгрузки оказался ничтожен. Второстепенные стили из подгружаемых файлов вызывали перерисовку всей страницы
13:50@cssunderhood да, мы выигрывали, параллеля загрузку/отрисовку, но проигрывали на отложенном reflow/repaint и суммарно выходили в ноль
13:52В ok загоняются на тему оптимизаций перерисовок страницы. Год-два назад мы делали анимированные полноэкранные заставки на логин-странице,
14:09@cssunderhood мы делали их _нормально_ — без reflow и без repaint. То есть не так, как было у твиттера, например. Кстати, как такое сделать?
14:12На самом деле оптимизация отрисовки не гарантирует вам, что у пользователя ваша страница будет рисоваться так же хорошо, как на стенде
14:45У нас есть специальные «медленные» машины, чтобы моделировать пессимистичные сценарии отрисовки у юзера, но даже им нельзя верить полностью
14:48Для того, чтобы ваш пользователь не страдал, делайте фоллбэк на статичную версию без анимаций в случае, если средний fps на клиенте ниже N
14:50Средний fps меряется за заданный промежуток времени, N задается экспериментально, так что стоит озаботиться рубильниками и графиками заранее
14:51Вообще, наличие любой обратной связи при интерактиве критично. Ваша страница может «тормозить» визуально, а по метрикам быть ok, и наоборот
14:54Одна из мерзотнейших вещей, которая может испортить вам производительность — скролл. Я не имею ввиду разговоры про throttle, речь о html+css
15:08Кто-то вспомнит статью «60fps scrolling using pointer-events: none» thecssninja.com/css/pointer-ev… — применяем, но проблема не только в ховерах
15:12Экспериментально проверял, что любой скролл, кроме того, что на body, при увеличении вложенных узлов устает. Кол-во узлов зависит от клиента
15:14@cssunderhood ещё resize события негативно влияют на производительность.15:14
Постулирую: при сочетании анимации и скролла неплохо подумать о фризе оной. Подобное на мобилках — из коробки, но полезно не только там
15:18Отчего подумать, а не сразу делать: бывают скачки нагрузки на CPU, если анимация выполняется на композитном слое. Проверял в Chrome + FF
15:20Прервусь на пару часов, чтобы вернуться к вам с примерами последней нашей анимационной боли, а вы пока посмотрите котиков на @catunderhood
15:23@cssunderhood Я как-то пробовал делать прогрессивную асинхронную загрузку всего. Оно работало, но выглядело иногда фрустрирующе.17:19
Сейчас будет продолжение про css-анимации и производительность на примере реальной проблемы, решение которой, сразу говорю, мне не известно
17:24В ok есть понятие «подарка»-изображения, которое может быть разным, в т.ч. анимированым, обязано быть прозрачным. Подарки— прибыльный бизнес
17:26Тестовый стенд, который даст вам представление о происходящем. Осторожно, трафик, cpu load, анимашки, desktop-only welovehtml.ru:9000/sandbox/anim-e…
17:29Тестовый стенд, конечно, отражает рафинированный пессимистичный вариант,но приближенная к этой ситуация вполне может возникнуть в реальности
17:31Когда я начинал исследовать проблему, думал, что решу проблему просто переносом анимаций на композитный слой. Трансформы там, ну вы знаете
17:34Это работает, если изображений немного. Нагрузка на cpu падает, температура, энергопотребление — тоже. Однако «немного» зависит от клиента
17:36С другой стороны, если изображений много, то легко можно словить крэш браузера на каком-нибудь 8-ядерном mbp. Получается, что это не выход
17:38При этом вне зависимости от кол-ва изображений нагрузка на cpu при скролле растет. Вроде бы простой вывод — останавливать анимацию на скролл
17:41Однако вроде бы это хорошо работает, только если обработка на gpu не используется. Не знаю, с чем это связано, видимо браузерные оптимизации
17:43@cssunderhood попробуй расположить кадры в спрайте вертикально, это должно снизить нагрузку на кеш процессора и ввод/вывод из памяти.17:45
Какую-то роль при анимациях такого вида, видимо, играет размер спрайта — его декодирование. Однако выигрыш при сокращении в два раза невелик
17:47Также я проверял гипотезу о том, что при выносе на композитный слой «не хватает видеопамяти». Видимо, она некорректна — iStat не подтвердил
17:49Не удалось подобрать хороших инструментов для диагностики. FF валился при попытке профайлинга. IE не очень понятно объяснял происходящее
17:53Обычно не очень просто найти тестовую базу. Желающим поэкспериментировать с анимашками я подготовил архив на 200mb welovehtml.ru:9000/sandbox/anim-e…
17:55Вообще навык подготовки тестовых стендов в ok крайне важен. Обычно это самый надежный способ убедить коллегу-ревьюера в удачности решения
17:58@cssunderhood А пробовал сделать, чтоб изображений было немного? Взять окно в две высоты браузера и вне его пределов картинки убирать.
Пробовал, вьюпорт вроде бы значимой роли не играет. С другой стороны, такой сценарий недостаточно пессимистичен twitter.com/webholt/status…
18:00Вообще, конечно, анимаций у нас много разных. Особенность подарочков в том, что у них очень большая плотность. Уменьшить нельзя — деньги
18:02@cssunderhood Прям вообще картинки убирались? Из DOM долой? Откуда ж тогда нагрузка, если она при большом количестве всплывает?
Проблема в том, что неясно, что такое «большое количество». У меня на mpb оно одно, а у кого-то в деревне — другое twitter.com/webholt/status…
18:06Отдельно — проблема выяснения причины repaint конкретного элемента. Кажется, хром разучился сообщать об этом нормально, а остальные не умели
18:18У меня была проблема с устранением перерисовки при анимации opacity кейфреймами. Помогла изоляция родителя translateZ + will-change
18:22В конкретно данном случае оно укатилось в таком виде в прод, но выглядело настолько странно, что в другой раз, пожалуй, я бы не рискнул
18:24Именно по причине странности я избегаю решений, основанных на svg. Анимаций на svg я совсем боюсь, на прод пускаем только маски, аккуратно
18:29В одном из последних FF под виндой на тестовых «слабых» машинах недавно словили странные баги с отрисовкой контейнера с svg-маской. Откатили
18:32Не припомню больше свежих интересных кейсов по производительности css. Отмечу, что средний собеседуемый вообще не очень владеет этой темой
18:50Сегодня готов поотвечать на какие-нибудь ваши вопросы по ok, завтра будем говорить о рефакторинге
18:51@cssunderhood critical path нет, а вот отложенные загрузки картинок, видео и прочих больших штук -да.21:05
@cssunderhood Есть классы кирпичи общего назначения? Возможно есть сниппет для общих обьектных названий? Или в каждом проекте всё поновому
Есть реиспользуемые между приложениями ok компоненты, состоящие из шаблона, java-файла, биндящего данные и стилей twitter.com/dagoeos/status…
21:12@cssunderhood js-файл в компоненты пока, кстати, не входит, — слишком уж отличается активация компонентов на клиенте в разных приложениях
21:14# Вторник 124 твита
@cssunderhood @dagoeos
> java-файла
Ты серьёзно называешь джиэс джавой? Не стыдно?
Так-так, разберу ваши ответы. Тут меня упрекают в смешении js и java. Так вот,когда я говорю java, я имею ввиду java twitter.com/GrawlCore/stat…
11:09Серверсайд ok реализован на java; код, который рендерит html, написан на java, соответственно частью компонента является java-код
11:11@cssunderhood попробуй расположить кадры в спрайте вертикально, это должно снизить нагрузку на кеш процессора и ввод/вывод из памяти.
Тут отличный тред @wouldntfix о вчерашнем стенде. Коротко:по ховеру теряем деньги,аллокация памяти хрома вообще треш twitter.com/wouldntfix/sta…
11:14Сегодня поговорим о рефакторинге. Расскажите о вашем самом страшном рефакторинге стилей в жизни. Зачем вы его делали? Стоило ли оно того?
11:18Я прямо начинаю теряться — никто в цссандерхуде не рефакторил css? Никому не близка тема «разрушить до основанья, а затем»?
12:01@cssunderhood было, конечно, но это как-то не воспринимается как некое важное карьерное достижение. Как-то уменьшил 300kb CSS до 160kb.12:26
@cssunderhood это не минификация и гзип были, в полный рефакторинг. Выкинул стотыщ ненужных position:absolute итп, зарулил все на поток.12:26
@cssunderhood пачка хз кем свёрстанных лендингов фикс ширины. Нужно было сделать адаптив. Кроме стилей пришлось еще и с разметкой повозиться12:27
На самом деле последнее время рефакторинг css у меня связывается с процессом компонентизации. Объединение, атомизация — и тут начинается
12:29Хотя самым незабываемым опытом для меня остается рефакторинг раздела музыки в ok — было ~ 6k строк, уменьшилось минимум на треть
12:33@cssunderhood вот вспоминаю, как раньше все было просто:) а сейчас понастроили, всяких сборщиков!12:33
Переезд ok с css на styl тоже оставил воспоминания, хотя и не такие яркие. Говорят об обратной совместимости, но мы наскочили на пару багов
12:35Вообще, если вы понимаете, что предстоит рефакторинг, прежде всего нужно озаботиться «инфраструктурой» — тестированием и процессом ревью
12:36@cssunderhood мне обычно задачу «разрушить до основанья, а затем» ставили как «переверстать», т.к. п-ц в CSS следовал за п-цом в разметке12:38
У нас практикуют несколько уровней тестирования, ручное, автоматизированное, но всё равно случаются конфузы — слишком много разных сценариев
12:39Я слышал,модно говорить о тестировании интерфейса, основанном на сравнении скриншотов. У нас такого нет, и я не очень уверен в эффективности
12:48То есть если ваш интерфейс полностью построен на независимых компонентах, наверное вы можете тестировать компоненты. Их сочетание — сложнее
12:49Впрочем, наш Selenium генерирует какие-то превью, и иногда это оказывается полезным. Но полностью я полагаться на автотесты не могу
12:50@cssunderhood переделывал кипу CSS в стиле “фрилансер сверстает нам приложение”. под Angular. первым делом удалял классы из HTML.12:50
@cssunderhood ну, знаешь, можно хотя бы превью всех страниц в качестве лога делать. Уж лучше, чем прокликивать всё самому.
Клево, когда автотестам доступны все состояния на всех тестовых средах. Сложно и для нас в общем случае не работает twitter.com/GrawlCore/stat…
12:54Не всегда простые решения работают. Например, один и тот же компонент может по-разному рисоваться в авторизованном и анонимном состоянии
13:01Поэтому рекомендую идти ногами к живому тестировщику и просить, чтобы проверял вообще всё. Очень благодарен нашим за то, что не отказывались
13:03@cssunderhood А кто-нибудь использует для тестов что-то типа Galen? galenframework.com т.е. вместо скриншотов - декларативное описание?13:04
@cssunderhood что за баги были?
У нас была сырая версия тогда, проблемы с интерполяцией и интерпретацией табуляции были. Сейчас уже всё перенесли
twitter.com/roma_milkovic/…
@cssunderhood А кто-нибудь использует для тестов что-то типа Galen? galenframework.com т.е. вместо скриншотов - декларативное описание?
Вообще прошу уделить внимание этому реплаю, мне любой опыт в этом вопросе тоже крайне интересен twitter.com/vfurso/status/…
13:16Другая сторона рефакторинга — ревью. Без ревью вообще неочевидно, что сделанные вами изменения действительно сделали код лучше
13:18Мне кажется, практика ревью растет. Во всяком случае, многие собеседуемые упоминали. Делаете ли вы ревью на проектах? Какими инструментами?
13:20@cssunderhood рефакторю обычно потихоньку, до основания ни разу не получалось, жаль времени. хотя руки чешутся13:33
@cssunderhood делаем битбакетом.13:33
У нас стандартный инструмент — stash, который, видимо, эквивалентен битбакету. Ревью предполагает подтверждение минимум от двух ревьюеров
13:36@cssunderhood бесило потому что не было методологий на проекте
Самое важное при ревью — выбор критериев оценки. Это может быть методология, но не только лишь она twitter.com/antonfrolovsky…
13:46У нас есть «памятка ревьюера», в которой явно запрещается обсуждать вещи «религиозного характера», что для меня неясно (неформализовано)
13:49@cssunderhood Делаем. К сожалению внутренним аналогом Гихаба (каким он мог бы быть в 1990-е).13:50
@cssunderhood А можешь расшарить? У нас как раз пробел (или таб? :–) в этом.
Расшарить — попробую, не обещаю. Но на табы/пробелы мы точно время не тратим, мне кажется это несуществунным нюансом twitter.com/sapegin/status…
13:54@cssunderhood phacility.com/phabricator/ все здесь: и код, и ревью и таски. Замечательный инструмент13:55
Вообще по кодстайлу лично моя мысль — он должен содержать минимальное количество правил, ограничивать грабли, но не мешать работать
13:57В этом плане набор пожеланий к оформлению "css"/styl на ok далек от совершенства — оговаривается слишком многое. Например, порядок правил
13:58Признаком граблей могут быть, например, определенные виды свойств или вложенность правил. Ошибки может и не быть, но уделить внимание стоит
14:01@cssunderhood Про табы я шучу ;-) Всё, что можно запретить линтером, нужно запретить. И не тратить время на код-ревью.
У нас, кстати, нет линтера, но есть долгая история обсуждений смысла его внедрения. Пока что всем лениво twitter.com/sapegin/status…
14:03Short-list свойств, требующих внимания: overflow, z-index, float, display:flex, position: fixed, font-size: 0, line-height не коэффициентом
14:05@cssunderhood transform,backface-visibility,позиционирование,не кратное 4, цвета,не ложащиеся в стандартную палитру,base64 и что-нибудь еще
14:10@cssunderhood Если есть джуниоры или любители поспорить, линтер незаменим.
Право ревьюить css у нас выдается человеку с опытом работы не менее года, да и джуниоров мы не берем twitter.com/sapegin/status…
14:12@cssunderhood А правда что у flexbox с производительностью плохо? Очень давно видел тест flexbox vs float и старый метод был гораздо быстрее
Руками не проверял,другим не верю,хорошего ответа на вопрос не знаю. При ревью флексы не баню, сам стараюсь без них twitter.com/roma_milkovic/…
14:14@cssunderhood но если фантазировать, то потенциально любой нефиксированный руками способ раскладки может дернуть reflow у потомков
14:16О ревью препроцессорного кода:используем малое подмножество stylus,чтобы не влететь в приключения. Бан на циклы, очень аккуратно с примесями
14:19Допустимая вложенность правил не более двух,чтобы не терять контекст в коде. Бан на составные селекторы вида &-item. С & вообще аккуратно
14:21Мы используем только «сокращенные» модификаторы вида .block.__mod, с ними & можно. При контекстном .context & — можно. Остальное — опасно
14:24Недавно перекрашивал на ok все кнопки из зеленого в оранжевый,чуть недооценил & и влетел на +800 селекторов. А вы удивляетесь,откуда 1mb css
14:26@rimmer333 @cssunderhood я делал рефакторинг. Выкинул стотыщ ненужных флоатов, инлайн-блоков, флексов и переписал все нормально на абсолюты.14:27
Я вот кстати со времен верстки посредственных промосайтов очень люблю абсолюты, но теперь не очень получается ими пользоваться =)
14:28@cssunderhood а stylus у вас с каким синтаксисом? Скобочки ставите?
Да, мы в этом плане чтим традиции — скобки, двоеточия, точки с запятой, всё как полагается twitter.com/c01nd01r/statu…
14:29Мне нравится подход,когда из проекта выделяют _малое_ количество общих переменных и примесей в отдельный файл. Это дешевый путь улучшить код
14:32@cssunderhood на ревью можно просто напомнить об использовании таких значений. Главное — следить за изменениями этого файла и вовремя банить
14:34Кроме инструментов и кодстайла в ревью важно понять, кому отдать в проверку изменения. Выбор на основе истории изменений не всегда хорош
14:39@sapegin @cssunderhood Литер нужен. Всегда. Чистый код. Меньше работы. Автоматизация.
Это всё клёво, когда у вас проект с нуля, или маленькая кодовая база, или очень много времени на изменения twitter.com/Copypasting/st…
14:40Отсутствие изоляции делает важным ревью не только эксперта по конкретным изменениям, но и вообще людей, которым вы могли что-то сломать
14:44Вы мне сейчас будете говорить про независимые блоки, shadow dom, эмуляцию scoped styles в angular 2, генерируемые префиксы, но жизнь сложна
14:45@cssunderhood если я полезу менять какую-нибудь карду с видео где-нибудь в ленте, я обязательно провлеку к ревью верстальщика всего видео ok
14:47Кроме стандартного ревью до слияния с мастером у нас в ok есть еще спорная практика пост-ревью. Этот процесс живет только в команде верстки
14:52Если в вашей команде проекта кода немало, людей немного, а верстальщиков еще меньше, попробуйте начать с внедрения пост-ревью раз в неделю
14:53Формально пост-ревью — так себе решение. Заставить кого-то что-то переделать несколько дней спустя может быть непросто. Но есть и плюсы
14:56Пост-ревьюить можно только на критичные вещи, это быстрее, и вы видите изменения в контексте всего проекта, не фокусируясь на имени таска
14:57Пост-ревьюить можно весь код, не только css. Не сомневаюсь, что у вас были случаи, когда разработчик самостоятельно менял верстку. Это оно
14:58Наконец, для пост-ревью не нужно вообще никаких специальных инструментов. Если пролезло что-то критичное, достаточно revert-коммита
15:01Но, допустим, вы как-то изменили код, прошли ревью, выкатились в продакшн. Бывало ли так, что впоследствии вы сожалели о проделанной работе?
15:05@cssunderhood а почему выбрали Stylus? Мне кажется многие выбирали Stylus из-за синтаксиса.
На вопрос о причинах выбора Stylus отвечает @operatino_ru
twitter.com/xwoody/status/…
@cssunderhood на самом деле до принятия решения был опыт работы с less, и тогда хотелось инструмента, в котором не было бы тесно в будущем
15:14@cssunderhood рефакторил пару раз. Подробностей особо не помню, всё делалось постепенно, с внедрением БЭМа и базовых стилей.15:30
Постепенный, модульный рефакторинг — это правильно и здорово. Если, конечно, код позволяет
15:31Но вообще лично мой опыт: код размножается копипастой. Где-то что-то недорефакторили — обязательно вылезет потом. Лучше режьте сразу всё
15:32У нас на проекте есть как минимум три разные реализации модалок. Раз мы тут про css, то, в частности, три разных стилевых конструкции.
15:38@cssunderhood Недорефакторили в своё время.Это не единичный пример. Нужны значительные усилия, чтобы закончить рефакторинг,а не «прекратить»
15:39@cssunderhood ага, на рефакторинге :-P.15:44
Мои сожаления о проделанной работе связаны, например, с рефакторингом для упрощения поддержки ретины в музразделе ok — всё равно не оценили
15:46@cssunderhood мой личный опыт — не всегда нужный и хороший рефакторинг стоит затраченного на него времени. Теперь стараюсь оценивать точнее
15:48Вторую часть дня предлагаю поговорить об особенностях выкатки изменений на ваших проектах. У нас вот есть условная «css-специфика», а у вас?
17:57У нас рассуждают примерно так: есть фича и разные гипотезы о её внедрении. Делаем единую разметку, отображение меняем одним модификатором
18:01В таком раскладе выигрываем практически везде, кроме css: легко переключать «темы», данные шаблонизируют один раз, меньше разметки
18:03Правда, есть опасение, что в «строгом» компонентном режиме так уже не прокатит, и рубильники придется усложнять. Но пока что живем!
18:05И вообще. Тут есть еще люди, работающие с a/b на продакшне, или я тут сейчас буду изливать профдеформацию?
18:09Окей, раз никто ничего не отвечает, начну с начала: a/b-тестирование — это хорошо. В нашем случае оно помогает зарабатывать _значимо_ больше
18:29Ваша аудитория делится на некоторое количество групп, которым демонстрируется разное отображение/поведение, и анализируется их активность
18:30Под активностью можно понимать разное — проведенное время, количество кликов, полученных реплаев. Наука о метриках отдельна и сложна
18:31Знание об a/b может повысить вашу ценность, как специалиста, потому что a/b очень любят ux-дизайнеры, а ux — это модно.
18:33В ok a/b может реализовываться по-разному, но с точки зрения html+css это запросто может быть контекстный класс, который меняет вообще всё
18:34У нас есть простое правило: все ui-изменения должны выкатываться на продакшн обязательно с рубильником в отключке — аудитория теста будет 0
18:36@cssunderhood а есть интересные источники, для изучения UX и a/b?
Интересные источники для изучения UX, наверное, есть. Сам не читал, могу поспрашивать наших. Для a/b — не слышал twitter.com/PMarinchenko/s…
18:38Простой пример a/b — обновленная версия вк. У них там есть ссылка для переключения между версиями, это интересный пример контроля a/b юзером
18:40Мы своим юзерам контроля не даем. Мне кажется, свобода выбора при a/b — неудобно для разработчика. Возможно, я не прав и стоит попробовать
18:42В любом случае, без a/b рискуете получить кинопоиск и не получить денег. Выкатываете фичу — вешайте классы, переключайте шаблоны и будет ok
18:43Ребятки, а есть кто у меня в контактах, что про #фронтенд, #линукс, #опенстэк, #питон и #с++?У меня 4 вакансии в Амстердаме 🧀
Рекламная пауза twitter.com/mursya_ru/stat…
18:44Так, по a/b мне пообещали помочь источниками, но не сегодня
18:54На самом деле есть еще одна причина кроме a/b, специфичная для ok, по которой мы очень любим css — это хотфиксы
18:56Релиз ok происходит от одного до двух раз в неделю, а проблемы с ui возникают чаще =). Это требует срочной реакции, тут верстальщик полезен
18:57Релизиться чаще _непросто_ по разным причинам, начиная от процессов тестирования до, например, работ в дата-центрах и нагрузки на сервис
18:59Поэтому в админке ok есть поле для применения произвольного css в реалтайме.Точка врезки этого css помечена в коде «на случай ядерной войны»
19:01Если вы откроете приезжающий html ok, вы легко найдете такие «хаки». Использование подобного порицается, но ничего лучше пока не придумали
19:03@cssunderhood а букинг вот могёт
vk тоже могёт, там на pitercss разработчик с болью рассказывал, как они так раскатались, а потом фиксили срочно twitter.com/operatino/stat…
19:06@cssunderhood вот вам ссылка на этот доклад, если кто пропустил youtube.com/watch?v=qseu-Z…
19:08Почему такие «хаки» неудобны: 1) нужно описывать их в правильном формате, чтобы было понятно, кто автор. У нас указывают фамилию/id таска
19:102) «хаки» — тоже код. Неплохо уметь его версионировать. Наша админка умеет, хотя дифф в ней смотреть не очень удобно
19:123) «хаки» нужно не забывать переносить в репозиторий или просто удалять. У нас это решается руками и занимает какое-то время + опрос авторов
19:14Вообще у нас подобные поля есть и для js, и, по грязным слухам, для java, но это уже не формат этого твиттера, и за такое у нас больно бьют
19:16Возможность применить кастомный стиль в реалтайме может помочь заработать немало денег, в этом случае риски окупаются. Актуально при акциях
19:19Тут просили принудительно рисовать ценник на подарке,если тот бесплатен.Привязался к значению поля в json в data-атрибуте. Не делайте так =)
19:22Еще один «черный» паттерн применения этой возможности — борьба с adblock. В попытке порезать рекламу скрывают лишнее во вред другим юзерам
19:25Тема борьбы с adblock выходит за рамки этого твиттера, но полезно знать, что разные плагины на разных браузерах режут рекламу по-своему
19:26В рамках саморазвлечения рекомендую посмотреть, как работает adblock в ff. Они используют -moz-binding, мне это показалось занятным
19:27@cssunderhood для тупых не верстальщиков можно объяснить, почему?
Для стилизации лучше пользоваться обычными предсказуемыми способами. Нужно показать элемент — повесьте класс,
twitter.com/imbfa/status/7…
@cssunderhood json в data-атрибуте скорее всего нужен другим модулям. Их потом могут изменить, формат может поменяться, у вас все сломается
19:29@cssunderhood , причем вы даже об этом даже не узнаете. И еще где-то тут должны быть рассуждения о производительности селектора с [*=""]
19:32@cssunderhood и откатывать могут мгновенно
Математически выходит вроде бы всё хорошо. Но интуитивно где-то хочется прогона тестов, выкладки на тестовую группу twitter.com/operatino/stat…
19:39Вообще мне очень близка тема модификации отображения стилями без изменения разметки. Еще со времен работы в веб-студии. Когда код написан ->
19:44@cssunderhood -> непонятно кем и непонятно как, и вообще доступа к его изменению нет, дешевле наваять css-патч и выслать его автору по почте
19:45Если я правильно помню, «отцы» развлекались с csszengarden.com . Мне было лениво, я ограничился рестайлом стандартной темы вордпресса
19:49Я не могу доказать свою гипотезу, но полагаю способность рестайла неизменного html тренировкой интеллекта не худшей, чем какие-нибудь судоку
19:51Расскажите, используете ли вы css не в прикладных целях, а для «разминки мозга»? Утекают ли результаты таких развлечений в реальные решения?
19:55Чот как-то фидбэка совсем маловато. Есть две гипотезы: андерхудеры живут по ночам и мой текущий формат неудачен. Попробую завтра вести иначе
20:22@cssunderhood у нас такое в легаси-проекте было. разметку менять нельзя, потому что все шаблоны в строках, в которых чёрт ногу сломит.20:55
@cssunderhood миксины на sass пишу. Обычно потом находят применение в реальных проектах. Иногда просто фаново "попрограммировать на sass"
В первый раз слышу о миксинах, как о способе «разминки мозгов». Обычно как-то в контексте «proof of concept» twitter.com/victoria_veles…
21:26@cssunderhood вот это еще круче css1k.net22:32
@iamale_ru @cssunderhood Подробности про вакансии brightcomputing.com/jobs?__hssc=17…22:42
@cssunderhood сейчас предстоит это, я с ужасом думаю. Пытаюсь покрыть тестами регрессии :(22:43
# Среда 119 твитов
Я обещал другой формат. Сегодня пробую паттерн «аргументированный наброс», а заодно — немного смежную и более «человечную» тему — сотрудники
12:41Желание стартовать ночью вызвано стремлением понять срез местной активной аудитории перед началом недели. Итак, вы:
В начале недели я опрашивал по составу местной активной аудитории.Срез небольшой,но наверное как-то отражает отрасль twitter.com/cssunderhood/s…
12:43Обратите внимание, всего 10% женской аудитории. На мой взгляд, это странный результат. Наброс: вёрстка скорее женская профессия, чем мужская
12:46Аргументировать наброс буду на основе личного опыта, но, возможно, у кого-то есть схожий/альтернативный — не стесняемся, реплаим
12:48Если вы посадите в абстрактном вакууме верстальщика и верстальщицу с одинаковым опытом, скорее всего женский код будет качественнее
12:49Ясно, что критерии качества сложны, но можно выделить простоту, но не примитивность, аккуратность. Возможно, он будет даже документирован
12:51Почему так? Девочки почему-то внимательнее следуют рекомендациям, правилам, не срываются писать велосипеды — ровно, предсказуемо работают
12:53@cssunderhood при одинаковом сроке?
Но если было всё так просто, то наверное, результаты опроса значительно отличались бы. Хороший вопрос twitter.com/dcromster/stat…
12:54Всё меняется в агрессивных условиях работы. При фоновом стрессе выигрывают эмоционально выносливые люди. Сколько стресса на вашем проекте?
12:56Кроме того, склонность писать велосипеды (даже очень плохие велосипеды) иногда реально «выстреливает», окупая негативные издержки
12:58Кроме того, способность принимать рискованные решения, катить «решето» в прод под свою ответственность — то, чего иногда недостает
13:00Зачем я тут всё это пишу: не с целью кого-то задеть или наоборот. Полезно понимать особенности сотрудников и использовать их сильные стороны
13:01@cssunderhood какого рода стресса?13:01
@Sigiller @cssunderhood Проект надо сдать вчера, о нём узнали только сегодня, а он ещё и требует нетривиальных решений.13:01
Вообще понятие стрессовой ситуации у всех людей разное. Кому-то, например, вообще сложно жить с фиксированным сроком запуска промо-акций
13:03С коллегой-девушкой почти всегда проще договориться,если в проекте она играет роль ведомой.Возможно, ведущей—тоже,но тут у меня меньше опыта
13:04Если у вас в команде верстки есть девушка — хорошо. Попробуйте перераспределить задачи так, чтобы вам шло больше треша, ей — меньше
13:06Речь не про джентльменов и вот это все. Просто такой подход скорее всего окупится по результату.
13:07@webholt @cssunderhood впрочем это я бы стрессом не назвал. просто придётся посидеть подольше. но переработки-то все оплачиваются
А вот кстати переработки могут не всегда оплачиваться. Принуждение к переработке без переоплаты — тоже стресс twitter.com/Sigiller/statu…
13:09Старайтесь приглашать девушек в команды. Да, это может менять командную атмосферу, но заставит вас посмотреть на ваш код под другим углом
13:11@cssunderhood но вроде как в приличных конторах такого не бывает?
Ну вот в ok нет понятия переработок. Есть понятие ежегодной премии, которая как-то формируется twitter.com/Sigiller/statu…
13:12Если вы собеседуете девушку, которая немного «не дотягивает», возможно, лучше отнестись чуть более лояльно, отдать кусок задач «попроще»
13:14@cssunderhood это если есть свободные деньги у компании.
Это хороший и глубокий комментарий, я попробую ответить на него чуть позже twitter.com/bayevn/status/…
13:16@cssunderhood но у вас переработки я так понимаю - это экстренная ситуация и по идее их вообще не должно происходить?
Всё зависит от того, что считать переработкой. Деплой ok идет только ночью, иначе риск упасть — это переработка? twitter.com/Sigiller/statu…
13:17@cssunderhood недавно слушала тему о формировании команды. Найм девушек важен не сколько из-за распределения обязанностей, сколько13:18
@cssunderhood для социальной стабильности внутри команды. То, о чем ты пишешь, можно применить к любому джуну, вне зависимости от полу. :)13:18
С утверждением о применимости моих утверждений к любому джуну не согласен по опыту. Просто особенности хорошо видны на граничных ситуациях
13:19У меня была кандидатка, которая руками обновляла весь html на проекте, вместо докручивания туда любого шаблонизатора. Никто не заставлял
13:21@cssunderhood это граничный случай. Практически любому джуну-мальчику было бы тупо лениво всё это перебирать руками
13:22@cssunderhood когда команда однополая, в силу законов человеческой природы начинается дедовщина и перераспределение гендерных ролей.13:22
@cssunderhood В итоге устанавливается нездоровая система отношений, которая ухудшает выполнение профессиональных задач.13:22
@cssunderhood ну по ночам за так сидеть тоже не особенно-то приятно.
Мне кажется, в крупных компаниях есть негласное понятие «лояльности», когда на какие-то вещи взаимно закрывают глаза twitter.com/Sigiller/statu…
13:24@cssunderhood стандартный внутренний мем ok — с утра накатывал [апдейт], буду позже/работаю из дома/поликлиники/маршрутки
13:26@cssunderhood Тут как с готовкой: обычно готовят женщины, но лучшие повара — мужчины. Если нужно хорошенько подумать, вряд ли она справится.13:28
Смотрите, еще один наброс: хороший сотрудник — не обязательно хороший специалист
13:28На каждом своём месте работы я рано или поздно начинаю собеседовать людей.Не все люди,которых я взял,идеально верстали.Кто-то вообще не умел
13:31@ruGreLI @cssunderhood наверное потому, что девушек воспринимают как эфемерные создания для украшения пространства и не предъявляют
Такого вообще никогда нигде не встречал. Проще посмотреть в дифф, на стейдж, чем в соседнюю ячейку опенспейса twitter.com/SheVasya/statu…
13:32@cssunderhood зато каждый человек оказался порядочным, обладал конструктивными личными качествами. Я не знаю, как так вышло =)
13:35@cssunderhood и обратное тоже верно13:39
@cssunderhood но из хорошего сотрудника можно сделать хорошего специалиста. а вот обратный процесс гораздо сложнее, если вообще возможен13:39
@cssunderhood но брать очевидный якорь - зачем?
Зависит от контекста. Якорь удобно затачивать под конфигурацию корабля, если руки позволяют twitter.com/SheVasya/statu…
13:41@cssunderhood если говорить человеческим языком, то я упоминал, что в среднем девушки более внимательно относятся к правилам и рекомендациям
13:43Смотрите мой негативный опыт: в ok хантят суперспециалистов. Суперспециалист — часто суперличность, с суперопытом и суперуверенностью
13:45Даже на этапе собеседований с таким человеком может быть некомфортно договариваться. После приема на работу тоже бывают нюансы общения
13:48@cssunderhood я понимаю, что крупным компаниям выгодно так поступать, но и джунов для обучения они набирают пачками вне зависимости от пола.
А джунов на верстку мы не берем совсем, потому что высокий порог входа. До ok много брал, но тут всё иначе twitter.com/SheVasya/statu…
13:50Стандартная проблема специалистов — убеждены, что их личный опыт может перевешивать проектный. Это может быть некорректно в сложном проекте
13:57@cssunderhood какая-нибудь специфика, по которой (примитивный пример) ресурсы клеят в спрайты, а не в base64, или наоборот
13:58Я видел случаи, когда проектнонеприменимые предложения суперспециалистов отклоняли, они «ломались», и больше толка от них не было
14:01Я оставлю в стороне рассуждения, почему это плохо вообще для всех, и перейду к способам борьбы с такими проблемами
14:04В ok есть стандартный процесс «менторства». Кажется, он применяется не во всех командах, но у верстальщиков он точно есть
14:09Он длится весь испытательный срок (3 месяца) и подразумевает наставничество и контроль. Не все задачи в этот период могут быть продуктовыми
14:11@cssunderhood не согласен с таким подходом, это какой-то сексизм, но в другую сторону
Мы все разные, и это не хорошо и не плохо. Нужно учиться видеть в этом сильные стороны и уметь ими пользоваться twitter.com/dimaip/status/…
14:13@cssunderhood соединить какие-то хорошие вещи и сложный проект вообще может быть той ещё задачей по сложности.14:14
С точки зрения нашего руководства выход на реальные задачи для свеженанятого верстальщика—месяц.На практике всё сложнее,и зависит от ментора
14:17С чего я вообще всё это начал: каждый из вас рано или поздно может оказаться ментором в вашей команде, со всеми вытекающими последствиями
14:20Процесс менторства при найме крайне полезен как для кандидата, которому нужно облегчить коммуникацию с коллективом, вхождение в стек,
14:22@cssunderhood оградить его от лишней нагрузки на старте,оберечь от лишнего стресса,«сгорания»,прикрыть его косяки,дать раскрыть способности,
14:24@cssunderhood так и для ментора. Систематизация инструкций, аргументация причин решений, последовательность усложнения задач, вовлечение ->
14:27@cssunderhood в атмосферу коллектива, подбор «подходящих» задач под уровень, контроль подопечного — всё это позитивно сказывается на менторе
14:29Раньше в ok новый сотрудник начинал с работы над «библиотекой компонентов», которая не обладала привязкой к проду, но сохраняла специфику
14:32Этот подход позволял приучить человека к кодстайлу,процессам ревью,обсуждениям и критике до того,как это негативно сказывалось бы на задачах
14:33До ok было удобно менторить, сажая сотрудника на проект рядом с собой. Так и контролировать проще, и создается командная согласованность
14:36С контролем нового сотрудника вообще очень сложно: плохо недоконтролировать и плохо переконтролировать. Тут где-то в области интуиции
14:37Недоконтролируете — сотрудник потеряет время на разработку заведомо бесполезных, некорректных вариантов,переконтролируете — оба потеряете ->
14:39@cssunderhood -> время на избыточные обсуждения. Во втором случае будет трата вашего, более «дорогого» времени, тут аккуратно нужно
14:41Вообще, навык делегации задач значительно сложнее, чем это может показаться. Без него никак — чем выше ваш уровень, тем меньше у вас времени
14:45Тактика наброса хороша тем, что привлекает внимание, но плоха тем, что за развитием темы уже не следят. Хотя фоновые обсуждения — хорошо
14:47Сделаю еще одну попытку. Наброс: хантить сложнее, чем хорошо верстать
14:50Каков возраст вашей легаси-верстки? Во сколько бы оценили стоимость её поддержки? (Любая хорошая верстка рано или поздно становится легаси)
14:53@cssunderhood в первый год работы верстка становится легаси практически ежемесячно)15:01
Наверное, логично, что слабый фидбэк по легаси коррелирует со слабым фидбэком по рефакторингу. Я тогда за себя: в промопроектах, например,
15:22@cssunderhood код запросто может устареть за полгода. В ok можно найти используемый код какого-нибудь 2007 года. Специфика, вы понимаете
15:23@cssunderhood О этого всем будет плохо, если он не один.15:23
@cssunderhood Зависит от того, кто автор :-/ У некоторых она становится легаси в момент коммита.15:27
На самом деле сколько бы у вас ни было легаси кода и как бы ни было тяжело его поддерживать, это не так страшно, как найм «не того» человека
15:31Если вас привлекают к собеседованиям на каком-нибудь этапе процесса найма, ответственность, наверное, не так сильно ощущается
15:33Когда принимаешь решение о найме единолично — тяжело. Когда принимаешь решение об увольнении — еще сложнее. Кажется, это не для всех
15:35У меня небольшая карьера верстальщика — лет 5, я начинал с построения отдела верстки. На аутсорс, как продукта, тогда было не очень много
15:37Сделать свой бизнес бывает заманчиво. Возможно, кому-нибудь из вас из этого опыта что-то пригодится
15:38Руководство предполагает, что финальную ответственность всегда несешь лично ты. Ты несешь её в три стороны — заказчику, подчиненному и себе
15:40Сложнее всего отвечать перед подчиненными. Можно отказаться от проекта или уволиться самому, но увольнять/штрафовать людей — плохо
15:42Отсюда важно сформировать коллектив, на который можно рассчитывать в экстренных ситуациях. Достаточно автономный в работе, например
15:43Отсюда критично понимать распределение ролей участников коллектива в случае отсутствия руководства.Формирование мягкой иерархии без «базара»
15:45Каждый из участников вашей команды силен в своей области. Отдайте ему эту зону ответственности, делегируйте — результат будет качественным,
15:46@cssunderhood сотрудник будет морально удовлетворен, внутри коллектива будет формироваться взаимное уважение (делегировать — сложно,я писал)
15:47Сохранять авторитет внутри команды — сложно, особенно, если подчиненные растут быстрее тебя (больше практики, меньше бюрократической возни)
16:17В этой ситуации нет механических инструментов; важно признавать рост человека, поощрять его интересными задачами, возможно, премиями
16:18Плюс к авторитету может дать вовлечение нового человека в профессиональный инфопоток.Сейчас таких каналов больше, неясно, хорошо это или нет
16:20Сагитируйте своих коллег на _совместное_ посещение бесплатных конференций. От этого профит больше, чем от коллективного чтения твиттера
16:21Шаг назад к теме найма: какое количество людей оптимально для максимальной эффективности отдела? 7-8 человек. Параллелят 2-3 проекта
16:23Важно не перенабрать людей. Во-первых, тяжело и сложно увольнять. Во-вторых, неудобно координировать. Сложнее дифференцировать задачи
16:24Специфика микростудий: руководитель может самостоятельно искать заказы подчиненным, чтобы вообще было чем им платить. Малоприятная ситуация
16:25Меня спас аккаунт на фриланс.ру, который, в силу потока производства и общего качества поднялся, дал возможность найти постоянных клиентов
16:27Тему оценки проекта до меня поднимали. Дополню схемой работы того отдела, удачными и неудачными решениями оценки времени и стоимости
16:2950% времени сверху — минимальный запас времени. Съедается на стыковке модулей, тестировании, устранении первичных недоработок, форсмажорах
16:30Мы тогда работали «вчерную». Отчисления шли только на аренду, инфраструктуру, покрытие издержек сотрудникам при отказе заказчиком от проекта
16:32Целились в преднизовую нишу рынка — не так, чтобы треш, но чтобы з\п были в районе 30к рублей. 5 лет назад это было терпимо для найма
16:34Цену проекта формировали по статическому прайс-листу, исходя из «примерных» временных трудозатрат. Что-нибудь в духе «одна страница — 300р»
16:35Ясно, что такая оценка смешна, но в среднем з\п на фуллтайме вполне могла пробивать 30к, если человек работал. Речь о _простой верстке_.
16:36@cssunderhood это если есть свободные деньги у компании.
А вот теперь я вернусь к комментарию про «свободные деньги». Свободных денег у нас не было никогда,но схема работала twitter.com/bayevn/status/…
16:40@cssunderhood а как должно быть? Работники сами должны искать себе заказы?
Вообще у нормальных людей бывает отдел продаж. Поиск заказов руководителем отдела верстки — странная практика twitter.com/ardshock/statu…
16:41@cssunderhood надо просто определиться, менеджер ты или программист. И расти в конкретной области.
Надо просто не бояться и не ограничивать себя спецификой написанного в трудовой twitter.com/SheVasya/statu…
16:42@cssunderhood ничего себе небольшая :)
На этой неделе мне реплаят люди с опытом работы > 10 лет, по блогам которых учился — представляете, какой опыт ) twitter.com/SheVasya/statu…
16:44Еще рекомендации «коллективного» плана: собираетесь увольняться — говорите об этом заранее и только тем людям, которых зааффектит явно
16:51Если у вас в коллективе есть человек на ваше место — спросите, интересно ли ему заниматься вашими задачами. Представьте его руководству
16:52Если такого человека нет, постарайтесь его найти заранее, чтобы успеть передать все свои дела без накладок. Обычно помогает опрос знакомых
16:53Вы можете быть со мной не согласны в моральном плане, но я считаю корректным «переманивание» сотрудника из другой компании в его интересах
16:54Например, если вы гарантируете, что ваш текущий работодатель будет лучше выполнять обязательства и гарантирует лучшую оплату труда
16:54Важно не забывать, что в момент вашего увольнения у вашего работодателя почти всегда возникают проблемы, лучше их минимизировать
16:57Ну то есть, побыв в шкуре такого работодателя, начинаешь как-то более внимательно относиться к проблемам в т.ч. «старших» коллег
16:58Я упоминал об ответственности перед собой. Важно следить, можешь ли выполнить обещания, данные подчиненным, например, при собеседовании
17:01Я ушел с позиции руководителя, когда не смог выбить для подчиненных переход с «черной» схемы оплаты в «серую». Говорят, потом им всё сделали
17:02Хотите начать карьеру руководителя — постарайтесь быть уверенными во всех качествах вашего партнера. Или заранее запасайтесь деньгами
17:04@cssunderhood добавь только сюда "на неограниченное время" :) потому что с ограниченным - будет наоборот.17:04
Теперь я готов поотвечать на ваши вопросы о личном опыте _не в ok_
17:11Формат наброса не оправдался. Завтра попробуем обсуждать «всё спорное»—от инструментов до сайд-проектов. Вы кого-то:
18:08@cssunderhood Коллективное чтение твиттера? Это когда все садятся в кружок и кто-то зачитывает вслух твиттер?
Ну да, это когда у вас есть общий чатик и в нем расшаривают занятные ссылки twitter.com/ruGreLI/status…
18:37@cssunderhood аа отдела, ещё и верстки… А если в копании 3 человека?
Мне кажется, найти проект на 3х человек проще, чем на 7 twitter.com/ardshock/statu…
23:10@cssunderhood зачем люди в России работают за такие деньги, если есть западный рынок?
У нас были и западные заказчики, кстати. Платили больше, но и времени на их проект уходило больше twitter.com/dimaip/status/…
23:11# Четверг 148 твитов
Сегодня мы обсуждаем «всё спорное», и я буду пытаться ставить под сомнение какие-то известные/привычные или малоизвестные, но модные, вещи
11:31Сколько здесь людей, которые знают, что такое CSS Modules? Сколько ими пользовалось на проектах? Кто считает, что это хорошо и удобно?
11:32@cssunderhood Тесты, планирование, реакт, толстый бэкэнд.
Отличное предложение, хотя уверенно из всего этого я, наверное, смогу только про толстый бэкенд twitter.com/webholt/status…
11:34@cssunderhood знаю, но не пользовался. воспользуюсь, когда будет проект на котором не только я делаю вёрстку11:34
@cssunderhood мы пользуемся, очень довольны, считаем, что это хорошо и удобно11:36
@cssunderhood ещё как понял, если используешь css модули про бэм можно забыть раз и навсегда. Так ли это?11:36
Я сразу скажу, что мы не пользуемся, не будем и попробую показать, почему мне кажется вообще этот подход (костыль?) спорным
11:37Значит поскольку мы не применяем, я могу где-то ошибаться в рассуждениях, вы меня поправляйте, если что
11:45Со стороны выглядит, что мы берем обычные стили, направляем их на вход в какой-то черный ящик, потом результат используем в разметке
11:47Предполагается,что черный ящик делает какое-то преобразование с целью создания уникальных идентификаторов. Процесс может быть параметризован
11:48Самым простым вариантом такого преобразования выглядит добавление уникального префикса, который создает «неймспейс», организующий изоляцию
11:50@cssunderhood мы пользуемся на всех проектах, с того момента, как они появились в css-loader. Считаем, "что это хорошо и удобно" :)11:50
@cssunderhood Я пользуюсь и считаю, что это хорошо и удобно.11:51
@sapegin @cssunderhood и на 95% безопасней, чем обычный css #извините11:52
Декларирую непопулярную мысль, что любое преобразование селектора, особенно «в черном ящике» — потенциальный источник багов
11:56Сравнение примитивно, но неужели никто из вас никогда не сталкивался с проблемами сконкатенированных селекторов в коде?
11:58@cssunderhood знаю, не пользуюсь, думаю что удобно для SPA. Для лендосиков и прочей статики не очь надо имхо.11:59
Никто никогда не пытался понять результат работы нескольких таких последовательно расположенных «черных ящиков» и исправить под задачу?
12:00@cssunderhood пока не пользуюсь. Думаю что на новых проектиках уже попробую.12:00
@cssunderhood любой код - потенциальный источник багов
Справедливо. Мне кажется только, что лучше минимизировать риски twitter.com/Sigiller/statu…
12:01@cssunderhood ещё как понял, если используешь css модули про бэм можно забыть раз и навсегда. Так ли это?
Одним из аргументов к использованию CSS Modules упоминают стремление уйти от БЭМ, да twitter.com/Sigiller/statu…
12:03Я никогда не понимал проблем с неймингом БЭМа. Кого вообще волнует длина селектора? Или кто-то думает, что она серьезно влияет на трафик?
12:04@Sigiller @cssunderhood как раз писал про CSS-модули в этом контексте12:15
habrahabr.ru/post/270103/
БЭМ – это не столько про изоляцию, сколько про вменяемое описание сущностей. Изоляция – просто частное следствие из этого
12:25Вы же не загоняетесь написать «главная неактивная кнопка»? В чем проблема написать main-button __disabled?
12:27Проблема написать лишние несколько букв ничто в сравнении с отсутствием отражения сущностного подхода в представлении
12:28Брожения по коду в духе «Так, кнопка.Кнопка у друга.Ага, кнопка поделиться у друга в ленте» дольше, чем написать .friend-feed-reshare-button
12:32Так что, господа, извините, но утверждение про «когнитивный диссонанс» в вышеупомянутой статье я принципиально не разделяю
12:34@cssunderhood Проблема БЭМа не в этом, а в том, что работа компьютера перекладывается на человека. CSS-модули этой проблемы решены.
И с утверждением, что оперирование сущностями – работа компьютера, тоже. Особенно при работе с чужим кодом mobile.twitter.com/sapegin/status…
12:36@cssunderhood я на текущем проекте отказался от минификации JS, потому что все скрипты меньше самой маленькой картинки
Минификация – сложный отдельный кейс. Клёво, если вы понимаете, как она работает внутри mobile.twitter.com/rimmer333/stat…
12:39@cssunderhood ЦСС-модули – это хорошо и удобно. Я считаю 👍 @jsunderhood12:42
Некоторое время назад в ok тоже ленились писать селекторы полностью. В итоге – сотни селекторов мертвого забытого кода, недели на вычистку
12:44Я осознаю что, вероятно, с CSS модулями такого не будет, но согласитесь, это же просто очередной костыль до прихода Shadow DOM
12:46Что потом происходит с костылями? Их выпиливают. Долго и с болью, потому что вросло. Или не выпиливают, и остается мертвым грузом
12:47Вы видели костыли для Shadow DOM в Angular 2? они там генерируют уникальные атрибуты и к ним привязывают стили вида [scope1] .classname
12:49Может быть, они и знают что делают, но я лучше дождусь нормальной нативной изоляции, чтобы не словить сайд-эффектов сейчас
12:50@cssunderhood да, и это офигенно.12:51
Вот вы говорите, проблемы изоляции. Если у вас в разметке хозяйничает чужой код, или вы внедряете чужой html «насквозь», проблема не в css
12:53Хотите изоляции – берите iframe. Там уже все проблемы с безопасностью решили до вас. Посмотрите, как сделаны «родные» кнопки соцсетей
12:54В ok часть рекламы приходит в виде чужой разметки с изолированными стилями. Как-то с ними работать, достилизовывать, чинить просто кошмар
12:56Хотите чужой контент? Забирайте данные через API, шаблонизируйте и стилизуйте у себя. Больше контроля, меньше багов, больше денег
12:58@cssunderhood CSS-модули вообще не про изоляцию ;-)
Как же не про изоляцию? Вон там в статье написано про проблему глобального пространства имен mobile.twitter.com/sapegin/status…
12:59Пусть я могу быть не прав, но это очень круто, что пошел какой-то фидбэк от разных людей и дискуссия. В этом смысл нашего андерхуда
13:02Я прервусь на N часов [потому что отпуск], а вы пока попробуйте меня убедить использовать CSS Modules,и расскажите, зачем вам postcss вообще
13:05@cssunderhood Уникальность имён и изоляция стилей не одно и то же. CSS-модули только про первое.13:08
@cssunderhood CSS-модули вообще не про изоляцию ;-)13:08
@cssunderhood PostCSS — фреймворк для изменении CSS. Сам он не нужен, но позволяет просто создавать крутые инструменты13:08
@cssunderhood postcss только начал использовать. Пока что в нем только stylelint и автопрефиксер16:51
@IgorDTP @cssunderhood @meuwka Autoprefixer, cssnext, Stylelint, postcss-inline-svg16:51
CSS Modules у нас нет, и убедительных реплаев с конкретными кейсами к использованию я не увидел,а вот postcss у нас в двух местах используют
16:54@cssunderhood у меня студентка написала курсач на postcss для выявления списанного кода
!!! ссылку в студию, если можно mobile.twitter.com/olmokhov/statu…
16:56У нас есть своя недозаоперсорсенная спрайторезка, работающая на аннотациях. Не могу показать актуальную версию, к сожалению
16:58Я не её автор, так что не знаю, насколько оправдан внутри неё postcss, но наверное да. Ну и автопрефиксер еще, да. Хотя тут был случай
17:00Автопрефиксер недавно случайно отломали от сборки, мы жили так с полмесяца, релизились, и никто вообще ничего не заметил
17:02Вообще это тема для размышления, если из нескольких десятков миллионов людей в сутки была только одна жалоба на отсутствие анимации
17:03Жалоба была от пользователя браузера Maxthon, это если кто не знает, такой хромообразный [теперь] зверь
17:05Вообще идея какой-то работы с AST клёвая, и у нас есть люди, которые пытаются работать с postcss для прод-задач, но пока не очень активно
17:10Просто я понимаю проблему производительнсти обработки большого объема кода последовательностью операций над деревом, но в студийном проекте
17:13Поэтому я хотел ваших примеров, но пореплаило мне всего пара человек. Может, еще успешные кейсы?
17:15На самом деле у меня был личный негативный опыт работы с обработкой css. Правда, я не использовал postcss, может быть, дело в этом
17:32В ok периодически возникают пожелания сделать какой-нибудь инструмент дизайнерского толка. В разных целях. Например, демонстрация прототипов
17:34В рамках одного из таких проектов я пытался построить из исходного кода все возможные состояния компонента. У меня был css и html на входе
17:35Да, разумеется, я что-то там собрал на основе описания модификаторов в css, матчинга с разметкой, но полученный результат был весьма слаб
17:37Если кто-то будет собирать у себя подобное, я очень рекомендую избегать использования сокращенных модификаторов — создают неопределенность
17:38Что-то в таком ключе, если хотите поплеваться github.com/sourcejs/lego/…
17:41Пока я буду рассказывать про наши последние эксперименты по упрощению жизни дизайнерам, расскажите, занимаетесь ли вы подобным? Как успехи?
17:43@cssunderhood Только обычный стайлгайд: github.com/sapegin/react-…17:45
У нас в прошлом году дизайнеры сказали, что им сложно отслеживать текущее отображение компонентов,сплошные рубильники,хаос,ничего не понятно
17:46В общем, действительно сложно помнить все вариации, комбинации, контекстные изменения на портале,даже для примитивных элементов вроде кнопок
17:47Поэтому они попросили тул,который привозил бы им в скетч всё актуальное,а они бы из этого делали макеты.Меньше разнообразия,больше строгости
17:49Ну, мы им что-то подобное собрали, конечно — на основе спецификаций компонентов в @SourceJS и набора тестовых данных для шаблонизации
17:51Был написан дополнительно плагин для Sketch на чем-то специфичном,который принимал данные заданного формата,которые я как-то готовил из спек
17:53Идея от которой отталкивались — как-то сделать браузер из скетча. Оставили работу только по отрисовке, калькуляцию лейаута делали на сервере
17:55В целом — загоняли в фантом шаблон, данные, стили, как-то всё сочетали, снимали computed styles и приводили их к оговоренному формату
17:56С точки зрения фантома computed styles псевдоэлементов имели отличия от «нормальных» узлов, соответственно были нюансы по расчету их свойств
17:58Самым простым вариантом мне показалась замена псевдоэлементов на элементы в реалтайме с применением описанных свойств без честного парсинга
18:02С точки зрения скетча мы просто перерасчитывали все слои на абсолютное позиционирование и сравнительно без проблем отрисовывали результат
18:04Где-то попутно возникла потребность в «дообработке» значений стилей — например, перевода процентных величин в абсолютные
18:08Вся эта собранная конструкция в принципе неплохо работала на несложных шаблонах, хотя браузерный рендер, конечно, в деталях отличался
18:11Конец истории таков, что, кажется, заказчик в лице дизайнеров забыл про неё раньше, чем мы доделали её до какого-то вменяемого уровня
18:13И, на самом деле, вообще неочевидно, нужны ли подобные инструменты для облегчения взаимодействия разработчиков и дизайнеров
18:14Есть какое-то количество инструментов прототипирования. Протеин есть, из последних — но я не слышал, чтобы кто-то это внедрял, кроме авторов
18:16Вообще у меня ощущение, что модных инструментов больше, чем нужных. И используют их так же — чтобы в резюме написать, что, мол, пользовал
18:18А мне кажется — решение под задачу нужно подбирать, а не по моде. Я последнюю халтуру вообще на голом css писал и мне было не тесно
18:19Без всяких сборок, линтеров и вот этого всего обвеса. Что там верстать-то, в лендингах — несколько десятков блоков с модификаторами
18:21@cssunderhood параллаксы, кастомные прокрутки, модальные окна, формы, кастомные графики и чарты + это всё в адаптив... ну а так вообще да...18:26
Кто просил ссылки про A/B — разбирайте habrahabr.ru/post/242701/ nngroup.com/articles/putti…
18:29@cssunderhood У меня еще и года нет, как занимаюсь версткой, но первые 4 месяца так и было. Проблем не возникало.18:29
@cssunderhood resume-driven development, есть такое18:32
@alpengol @cssunderhood голый css имеет смысл использовать если в дальнейшем не будут добавляться правки и/или новые фичи
Вообще не вижу никакой связи между голым css и правками/фичами twitter.com/NUM13RU/status…
18:33Давайте вот что. Напишите, какие инструменты вы считаете излишними, в каком контексте и почему?
18:34@alpengol @cssunderhood Голый css это так секси! Мне нравится.18:35
@cssunderhood по сравнению с препроцессорами, его труднее поддерживать. Из простого: поменять медиазапросы или брэндовый цвет по всему сайту
Сколько здесь людей, которые реально меняли полностью брендовый цвет по всему сайту одной переменной? twitter.com/NUM13RU/status…
18:41Есть набор аргументов в пользу препроцессоров, которые мне всегда казались синтетическими. Генерация сетки циклами и переменными, к примеру
18:42Видимо, у кого-то бывают сайты, в которых сравнительно часто меняется сетка, и поэтому они её описывают таким образом для простоты изменений
18:43@cssunderhood Кстати, TOP 1 в списке аргументации ЗА препроцессоры
В моём представлении нельзя просто поменять брендовый цвет в переменной и пойти домой. Все равно проверять вхождения twitter.com/DenisZavgorodn…
18:48@cssunderhood так в чем тогда выигрыш в сравнении с обычной полнотекстовой заменой?
18:48@cssunderhood в читабельности
У нас есть переменная $black со значением #333. Нет, не смешно twitter.com/alexfedoseev/s…
18:59@cssunderhood да, мы все знаем, что называть переменные так глупо, и селекторы — глупо, но иногда такое просачивается, и потом не убрать
19:00@cssunderhood это бывает даже у умных джавистов, true story pic.twitter.com/jj9lxBXguZ
19:06@cssunderhood ну с такими переменными без препроцессоров лучше, согласен19:07
@cssunderhood переменные оказываются очень полезными в таких ситуациях: pic.twitter.com/lfDvR4CSRw19:13
@cssunderhood переменные оказываются очень полезными в таких ситуациях: pic.twitter.com/lfDvR4CSRw
Я с этим аргументом полностью соглашусь. Вот бы по CSS Modules мне бы так же хорошо аргументировали twitter.com/NUM13RU/status…
19:14@cssunderhood меняли19:17
@cssunderhood обычно решается через промежуточную переменную: $gray: #333; $bodyTextColor: $gray;19:19
@cssunderhood меняем через darken, lighten или их аналоги19:19
@cssunderhood а что про CSS modules? Я их люблю и готов защищать если чо))
Я хочу конкретные кейсы, где без них совсем плохо, а с ними совсем хорошо twitter.com/dimaip/status/…
19:21@cssunderhood описал вот как мы их на проекте используем. Мне больше всего нравится @value в них: github.com/neos/neos-ui/w…19:25
@cssunderhood т.е. решение глобального скоупа переменных в Sass: ты точно знаешь, от чего зависит твой компонент, и можешь его изолировать19:26
@cssunderhood мы кстати оставили и БЭМ нэйминг вместе с css modules: github.com/neos/neos-ui/w…19:29
@cssunderhood перед использованием переменной ее нужно эксплицидно импортировать, это можно статически анализировать и проч.19:31
@cssunderhood Добавляет строгости и проч. В реальном проекте, где много народу, очень помогает19:31
@cssunderhood но самый большой профит, когда большую часть реюза стилей переносишь на уровень Реакт компонентов, а не на CSS классы19:45
@cssunderhood риск нечаянно переопределить "чужой" класс в разы выше, чем что CSS modules сломаются. И это кстати будет труднее заметить19:45
@cssunderhood но самый большой профит, когда большую часть реюза стилей переносишь на уровень Реакт компонентов, а не на CSS классы
А если у меня нет реакта? twitter.com/dimaip/status/…
19:45@cssunderhood Используем уже довольно давно. После css-modules невозможно вернуться к обычному css, да и к БЭМу тоже.20:46
@cssunderhood @dimaip как нет реакта? О_о
Сейчас расскажу вам про наш сервер-сайд рендеринг (предлагали к обсуждению утром) [без реакта] twitter.com/DenisZavgorodn…
20:49Сервер-сайд рендеринг, как я понял, упоминался в качестве «спорного» подхода, и тут я в немодном/невыгодном положении — буду его защищать
20:53Сервер-сайд у нас на java, я упоминал. Серверного рендеринга на реакте, изоморфности у нас нет и не будет точно еще какое-то время
20:55html генерируется внутренним фреймворком, суть работы которого я раскрывать не буду, чтобы мне потом не выгнали за разглашение know how
20:56Про него важно знать, что он очень быстрый, умеет в себе шаблонный движок, который, на мой взгляд, превосходит все мне известные аналоги
20:58Шаблонизаторы я трогал в основном на клиенте, так что громкость заявления можно немного приглушить. Всё равно, если привыкнуть, оч. удобно
20:59Средняя по ok точка зрения такова: затраты на генерацию, доставку и отрисовку с сервера меньше, чем на всё то же на клиенте. Типа, проверяли
21:01@cssunderhood неужто даже @bemxjst?)
Не могу сходу найти примеры шаблонов. У нас — честный человекопонятный xml, расширяемый кастомными тегами twitter.com/dimaip/status/…
21:03Естественно, утверждение про скорость генерации/доставки/отрисовки выглядит спорным, поэтому каждый приходящий js-разработчик говорит «фи»
21:05В общем, если не отклоняться от css-тематики и не обсуждать нашу борьбу с gwt, пока это утверждение никто доказательно не опроверг
21:07@cssunderhood Интересно было бы увидеть числа. Почти любая страница может быть отрендерена на клиенте за 20-50 мс без учета загрузки данных
Числа я не готов. Но как минимум серверсайд приезжает с данными. Дальше можно обсуждать активацию хуков и грустить twitter.com/dmitryshimkin/…
21:09Зато я могу точно сказать, что серверсайд отлично решает проблему версионирования компонентов без какой-либо просадки по производительности
21:10А еще серверсайд хорошо решает проблему локализации и хорошей синхронной раскатки изменений на странице. У нас не совсем глупый рендер, да
21:12Естественно, страничка перерендеривается частями, там у неё есть ajax-транспорт, и вот значит оно плюётся обновлениями по запросу или само
21:13И в целом, для того, чтобы нарисовать ленту, которая может содержать в себе _много_ разных шаблонов для разных событий, такой подход хорош
21:15@cssunderhood А он умеет отдавать чанками? Critical path, все дела.
Не очень понял, но ответ да, потому что он, кажется, умеет вообще всё twitter.com/ruGreLI/status…
21:16Выходит,что вместо того,чтобы как-то забирать шаблоны на клиент, их как-то кешировать, версионировать, лишнее выгружать мы просто не паримся
21:18У нас есть разделы, которые живут полностью «на клиенте». Это, например, музыка, это исключение, и это в текущей идеологии будет переписано
21:22Есть альтернативная идеология, но тут начинаются инсайды, это я пока не готов рассказывать. Так что — мы живем сервер-сайд рендерингом!
21:23В ok есть несколько проектов — «веб»версия, «моб»версия, и два платежных модуля — «веб» и «моб», соответсвенно. Всё +- на одних технологиях
21:27И если «основные» версии умеют там как-то обновляться частями, то «платежки» обновляются втупую полностью.Кто-то в iframe, кто-то standalone
21:28@cssunderhood а чем тебе не понравилось «автоматический БЭМ, надёжнее и меньше о нём надо думать»?
Я пока не очень осознал эквивалентность методологии и способа «автономизации» компонента twitter.com/andrey_sitnik/…
21:32@cssunderhood префиксров ещё много, тот же user-select, но это правда, что большинство *популярных* префиксов ушло21:33
@cssunderhood «БЭМ как именование» защищает от конфликта селекторов и разной их селектиности — CSS Modules делает тоже самое, но автоматом
Так скажу—вообще давно (несколько лет) не сталкивался с проблемой пересечения стилей,наверное, поэтому сложно понять twitter.com/andrey_sitnik/…
21:35@cssunderhood то есть вот реально, сколько работаю в ok — никогда не видел ни у кого таких проблем [на всём нашем мегабайте css-кода]
21:36@cssunderhood у кого как, я тут тоже случайно отломал его, и заметили сразу все.21:45
В контексте истории про автопрефиксер должен сказать, что мы поддерживаем на вебе ie10+. Потому что мы — Можем, да.
21:48@cssunderhood а что для ie < 10 ?
Принудительный редирект на мобильную версию, но там какой-то смехотворный процент twitter.com/c01nd01r/statu…
21:51@cssunderhood аналогично. Да здравствуй новые технологии!21:51
Вообще мобильная версия ok значительно отличается от «web» в плане клиентских технологий, говорят, в лучшую сторону, но я там не эксперт
21:55Хорошо сегодня поговорили. Убедили меня использовать переменные в препроцессорах вот. Завтра буду собирать всякую мелочь — предлагайте темы
22:02@cssunderhood для верстки не годится вообще, а приложения всякие писать клево ж.22:35
# Пятница 46 твитов
А подскажите плагин для grunt/gulp который бы собирал все стили, используемые на странице в отдельный файл @cssunderhood1:14
@aelyseev Все оказалось проще: gulp-uncss Может я задачу неверно описал. Но, помог мне uncss @cssunderhood11:31
@cssunderhood Знаю, но не использую. Пробовал баловаться, показалось, слишком неочевидно работает, теряешь контроль над оптимизацией11:32
@cssunderhood как так? Эта проблема возникает всегда.
Сокращайте переопределения, переиспользуйте компоненты, рефакторьте спорный код вовремя и всё будет хорошо twitter.com/BestFreelancer…
12:00@cssunderhood Из одного проекта в другой слайдер, а там уже есть другой. Вот вам и конфликт стилей
В нашем случае их обобщают до одного компонента, унифицируют интерфейс, определяют параметры twitter.com/BestFreelancer…
12:28@cssunderhood заодно все возникающие «слайдерные» проблемы, расширение функционала затем происходит в одном месте, выходит качественнее
12:29С точки зрения обобщения есть конфликтующие точки зрения—«компонент должен быть универсален» и «не надо городить комбайн». Я в первом лагере
12:32Если из-за обобщения компонент чрезмерно усложняется, это повод пересмотреть вообще все подобные реализации. Пользователь хочет единообразия
12:33Убежден, что «в сложном компоненте мне не разобраться в параметрах» — проблема не компонента/его отображения/поведения, а документации
12:36Давайте узнаем состояние в отрасли: «Я верстаю / в моих проектах по-дефолту…»
Plz RT.
Предлагали обсуждать * box-sizing. Вот итоги сравнительно свежего опроса, а я пока подумаю, как с этим жить дальше twitter.com/ihorzenich/sta…
12:41box-sizing и прочий normalize мне совсем не хочется обсуждать — не вижу значимой специфики. Я просто умею со всем этим работать, и вы тоже
13:34@cssunderhood а как у вас в OK со временем на обучение? Выделяется, как-то регламентируется?
Давайте лучше про обучение, да twitter.com/DenisZavgorodn…
13:35В ok все самостоятельные. Никто не стоит за спиной и не предъявляет, что вот сегодня ты час не код писал, а читал какие-то блоги
13:37С другой стороны, никто не стоит за спиной и не пинает, чтобы ты эти блоги читал. Вообще, любое стояние за спиной оказывается неэффективным
13:38Но иногда так бывает, что интересы нескольких сотрудников совпадают, и они добиваются выделения времени на обучение чему-то конкретному
13:39Верстальщики добились курсов по основами java, чтобы не быть совсем уж беспомощными в нашем стеке. Были слухи, что лектор потом был поощрен
13:41Есть мероприятия образовательного плана, организуемые строго внутри команды — что-нибудь вроде технологического хакатона, не связанного с ok
13:43Такие мероприятия сложно организовывать — они требуют полного отрыва от работы хотя бы на несколько дней, это нужно как-то обосновывать
13:45Поэтому участвуют в них только наиболее заинтересованные, и проводятся такие мероприятия не чаще раза в год.Неясно,больше проблем или пользы
13:47@cssunderhood да, это насущная тема Останавливаться нельзя ни на минуту. А времени нет. Как быть?)
Искать внутри команды самых активных и что-то пилить во внерабочее время. Хотя бы отвечать за это не придется twitter.com/DenisZavgorodn…
13:50Принудительно тащить лентяев в светлое будущее — неблагодарное дело. Коллеги не могут? Растите с теми, кто может, или сами, иначе увязнете
13:52Формат наброса не оправдался. Завтра попробуем обсуждать «всё спорное»—от инструментов до сайд-проектов. Вы кого-то:
Хорошо расти можно, обучая других. Местной аудитории, подозреваю, это хорошо известно — 41% учил верстке с нуля twitter.com/cssunderhood/s…
13:55Проблема в том, как это наставничество хорошо организовать. Я пробовал разные форматы—менторство,чтение лекций в вузе,дипломное руководство
13:56Личное убеждение — оптимального роста для преподавателя и для студента можно добиться, только заперев их один на один на фулл-тайм проекте
13:58Всё остальное смещает баланс либо в пользу одного, либо в пользу другого, и это смещение будет нелинейно зависеть еще от других факторов
14:00Хотите вырасти сами? Попробуйте спроектировать и прочитать курс лекций по верстке на семестр.Только потом не жалуйтесь на падание самооценки
14:01Предполагаю, при системной подготовке лекций вы поймете, что сами много не знаете о своей предметной области, и начнете в себе сомневаться
14:03Затем,если это лекции в вузе, то вне зависимости от уровня вуза вы вероятно будете не в восторге от активности (и прогресса) ваших студентов
14:04Кроме того,процент эффективных студентов на выходе,который вы закладывали, исходя из собственного уровня, скорее всего будет ниже ожидаемого
14:05Если вы после этих трех твитов хотя бы немного усомнились в желании читать лекции, не ходите в вуз, не надо. Лучше попробуйте другой формат
14:06@cssunderhood не нужно спойлерить )
Ну тут опытом просили делиться, вот я делюсь — мне нравится результат работы примерно каждого десятого студента twitter.com/DenisZavgorodn…
14:08@cssunderhood из обсуждений выходит, что это хороший показатель, хотя неясно, справедливо ли такое сравнение между дисциплинами
14:09@cssunderhood Какой хороший совет. Но вот что делать с кодом, которые пишут лентяи?
1) Ревьюить 2) Рефакторить 3) (!) Понять, в лентяях ли причина 4) (!) Понять, объективно ли он плох twitter.com/sapegin/status…
14:11Лекций про верстку я больше не читаю.Не уверен, что даю полезные и нужные вещи.Раньше говорил—того,кто будет хорошо учиться,оторвут с руками
14:14Теперь,чтобы оторвали,нужно знать на входе столько разных и сложных особенностей,что я просто не успел бы их вычитать,даже если бы знал все
14:14Зато с осени буду читать про веб-дизайн! Вот сижу, читаю книжки, пытаюсь нарисовать программу. Связать свой опыт с теорией, преподнести
14:16@cssunderhood от группы зависит, обычно из человек 20 - от 1 до 3-4 человек. Так что так примерно и выходит. Правда, дисциплина не IT14:16
Если преподаете,бонус за вашу работу—возможность дать студенту написать самый лучшый диплом на кафедре,чтобы он запомнил,зачем учился в вузе
14:19Берите не больше одного человека, самого лучшего из группы, не меньше, чем за полгода и никогда не навязывайте ему тему
14:21@cssunderhood у меня студентка написала курсач на postcss для выявления списанного кода
Я, правда, не очень представляю, про что можно написать хорошую работу о современном css, хотя мне понравилась тема twitter.com/olmokhov/statu…
14:29Мы дипломы пытаемся про js писать.Пару лет назад demiurg.es/,в этом году техконсультировал по моделированию анонимного p2p на js
14:33@cssunderhood это шикарно. Моим дипломным руководителем был Java архитектор и он мне кучу полезной инфы дал, за что я ему очень благодарен14:41
@muhas Мы тут про других лентяев. Про тех, кто не хочет вырасти из первой стадии — medium.com/humans-create-… @cssunderhood14:41
Вот тут много людей учило верстке. Расскажите, с чего вы начинали курс обучения? Как мотивировали студента? Остался ли студент в отрасли?
14:53По возможности, избегайте такого при обучении студентов (и на ревью тоже) pic.twitter.com/TgbZNT2Z4w
15:12Какие-то финальные мысли и ответы на отложенные вопросы обещаю сформулировать в воскресенье
17:57# Воскресенье 22 твита
@dimaip вообще инструментов много. но я в последнее время ушел очень далеко от верстки. лучше мне кажется у @cssunderhood спросить.
Лично я инструменты для тестирования визуальных регрессий не трогал,возможно,кто-то из подписчиков что-то посоветует twitter.com/jsunderhood/st…
0:12@cssunderhood что последние годы ковыряли?
Последнее мероприятие было «не про технологии ok», и я ковырял там WebRTC twitter.com/operatino/stat…
0:14А кто поможет с картами кода для css разобраться? gulp-sourcemaps+concat+cssmin дают карту кода, которая ... @cssunderhood0:14
... проходит валидацию, но в браузере неверно подсвечивает файлы @cssunderhood0:15
@jsunderhood @dimaip @cssunderhood github.com/garris/Backsto… вполне достойно для тестирования регрессий. Если достаточно phantomjs.11:04
Классно всё-таки сделать перерыв в использовании социальных сетей на выходные. В их разработке, кстати, тоже иногда классно делать перерыв
19:33Однако я обещал вам сформулировать какие-то финальные мысли по итогу нашей недели и вообще, а также ответить на то, что задолжал
19:34За неделю я постарался раздельно обсудить некоторые вопросы производительности css, рефакторинга и ревью, кадровые и наставнические
19:36Завершить хочу рассуждением о смысле всех этих процессов — иначе к чему тогда иметь столько технических решений, споров и реализаций
19:38@cssunderhood и как вам живётся верстая такой уёбищный дизайн?
Вопрос о том, как живем с таким дизайном, и как живем с такими пользователями, и вообще, живы ли мы, я слышу нередко twitter.com/mikeBazhenov/s…
19:39Знаете, мы отлично живем. Нет никакой общей объективной метрики, какой дизайн хорош, а какой плох. Наша метрика выражается в нашем доходе
19:41Наша метрика построена на годах экспериментов и общения с пользователями, их отзывах, благодарностях и негодованиях. Длинная история
19:42Да, мы не можем убрать мигающие гифки с онлайнов, потому что люди сравнивают их с «биением сердец» в профилях, и мы не можем их игнорировать
19:43Но вместе с тем наш дизайн достаточно хорош, чтобы эволюционировать и хорошо ложиться в процесс разработки, отвечать бизнес-задачам
19:44Нам живется хорошо: мы договариваемся с дизайнерами о модульной структуре, ревьюим не только разработчиков, но и дизайнеров, движемся вперед
19:45Но главная причина в том, что мы понимаем для кого и зачем мы работаем. Видим результат своей работы не только у себя на экранах
19:47У меня есть один из любимых отрывков в кино — «Предел риска». ok.ru/video/63868334… . Он примерно про это
19:50Когда я только-только начинал верстать, одной из первых статей, что я прочел, был «Верстка со смыслом» — там что-то про семантику
19:52Господа, «верстка со смыслом» — это вообще не про то, как вы там закрываете теги,и используете ли вы <li> вместо <div>. Это всем безразлично
19:53В своё время я задумался, что я буду говорить детям о своей профессии, если буду дальше верстать лендинги со сроком годности в полгода
19:57Так что — верстайте со смыслом и ничего не бойтесь. Даже если ничего не знаете. Даже — вести андерхуды =)
19:58На этой неделе с вами был @from_anywhere, верстальщик, «Одноклассники».
19:59# Ссылки
github.com
- https://github.com/sourcejs/lego/blob/master/core/css-mod/index.js
- https://github.com/sapegin/react-styleguidist/issues/127#issue-148273338
- https://github.com/neos/neos-ui/wiki/Styling#css-modules-value-feature
- https://github.com/neos/neos-ui/wiki/Styling#block-level-scope
- https://github.com/garris/BackstopJS
other
- https://youtu.be/JIkWFrHL0xo
- http://a.link/
- https://www.thecssninja.com/css/pointer-events-60fps/comment-page-1
- http://welovehtml.ru:9000/sandbox/anim-exp/
- http://welovehtml.ru:9000/sandbox/anim-exp/anim-exp.zip
- http://galenframework.com/
- https://www.phacility.com/phabricator/
- https://www.youtube.com/watch?v=qseu-ZaGoes
- https://www.smashingmagazine.com/category/uxdesign/
- http://www.csszengarden.com/
- http://css1k.net/
- http://www.brightcomputing.com/jobs?__hssc=179083579.1.1467142624939&__hstc=179083579.73ff08f438ee029aaaf355e3d3bd988f.1462811448980.1467124930078.1467142624939.15&__hsfp=588694332&hsCtaTracking=9b76eed6-c187-453d-a9f5-8beb424537f5%7Cfc701334-3217-4f76-9a63-fb3e8772f070
- https://habrahabr.ru/post/270103/
- https://habrahabr.ru/post/242701/
- https://mobile.twitter.com/sapegin/status/748447164481806338
- https://mobile.twitter.com/rimmer333/status/748444560968278016
- https://mobile.twitter.com/sapegin/status/748455309740511232
- https://mobile.twitter.com/olmokhov/status/748514763794157568
- https://www.nngroup.com/articles/putting-ab-testing-in-its-place/
- http://demiurg.es/,в
- https://medium.com/humans-create-software/the-growth-stages-of-a-programmer-funfunfunction-6-f03fcb9c1531#.c4ueeko3x
- https://ok.ru/video/63868334353189-0