У всех ведь доступен JavaScript, правда? Стюарт Лэнгридж напоминает о ситуациях, в которых у пользователя может не работать JavaScript → https://kryogenix.org/code/browser/everyonehasjs.html
Реализуем throttle с нуля на JavaScript, скринкаст в формате пятиминутки от Петра Мязина → https://5minreact.ru/screencast_throttle/
Обзор возможностей ES2018, которые хорошо бы знать всем JS-разработчикам: rest/spread, асинхронная итерация, Promise.prototype.finally и другие фичи → https://css-tricks.com/new-es2018-features-every-javascript-developer-should-know/
Дайджест Форвеба №1: важные новости и материалы первой половины января → https://forwebdev.ru/digest/2019-01-15/
Как избежать распространённых ошибок при поиске работы и что делать, если у вас нет релевантного опыта, обзор Глеба Бахмутова с позиции работодателя → https://glebbahmutov.com/blog/dont-help-me-say-no/
Защитный JavaScript: обзор подходов к написанию безопасного кода от Майка Сэмюэла из Google → https://www.javascriptjanuary.com/blog/defensive-javascript
low.js, облегчённый порт Node.js для программирования микроконтроллеров → https://www.lowjs.org/
Обзор лучших практик дизайна кнопки закрытия модального окна: иконка, цвет и расположение → https://medium.com/p/fbc66bdf500a
Решайте конкретные, а не общие проблемы: Никита Прокопов напоминает, что в программировании не стоит решать проблем, с которыми вы ещё не столкнулись → https://tonsky.me/blog/concrete-vs-abstract/
Переносим 30 000 строк кода с Flow на TypeScript: опыт инженеров MemSQL в переводе на Хабре → https://habr.com/ru/post/436554/
Опенсорсная дизайн-система правительства Австралии → https://designsystem.gov.au/
🎧
Свежие подкасты
Frontend Weekend №87, в гостях Михаил Трошев: как эффективно руководить распределённой командой в Яндексе → https://soundcloud.com/frontend-weekend/fw-87
«Девшахта» №66, в гостях Алексей Чернов: всё о платформенных командах → https://medium.com/p/39d69cc4333d
«Веб-стандарты» №157: JavaScript в вузах, JS десять лет назад, браузеры и текст в VR/AR, HTML-модули в JS → https://medium.com/p/66e3ccde77e3
«Сделайте мне красиво» №3: монорепозитории, моки в тестах и «что проиходит когда...» → https://soundcloud.com/begebot/ep3
«Сделайте мне красиво» №4: тест на знание CSS, ES2018 и сборка мусора → https://soundcloud.com/begebot/ep4
{Minsk} JSON №3: RS School vs Epam, университет никому не нужен, пора научиться пользоваться Facebook, 2 года и ты уже не в тренде → https://soundcloud.com/minsk-json/minsk-json-podcast-3
«Новости 512» от CSSSR №34: обзор новостей и интересных публикаций → https://soundcloud.com/csssr/novosti-512-vypusk-34-1401-2001
Свежие подкасты
Frontend Weekend №87, в гостях Михаил Трошев: как эффективно руководить распределённой командой в Яндексе → https://soundcloud.com/frontend-weekend/fw-87
«Девшахта» №66, в гостях Алексей Чернов: всё о платформенных командах → https://medium.com/p/39d69cc4333d
«Веб-стандарты» №157: JavaScript в вузах, JS десять лет назад, браузеры и текст в VR/AR, HTML-модули в JS → https://medium.com/p/66e3ccde77e3
«Сделайте мне красиво» №3: монорепозитории, моки в тестах и «что проиходит когда...» → https://soundcloud.com/begebot/ep3
«Сделайте мне красиво» №4: тест на знание CSS, ES2018 и сборка мусора → https://soundcloud.com/begebot/ep4
{Minsk} JSON №3: RS School vs Epam, университет никому не нужен, пора научиться пользоваться Facebook, 2 года и ты уже не в тренде → https://soundcloud.com/minsk-json/minsk-json-podcast-3
«Новости 512» от CSSSR №34: обзор новостей и интересных публикаций → https://soundcloud.com/csssr/novosti-512-vypusk-34-1401-2001
Разные бандлы для старых и современных браузеров: как реализовать и стоит ли оно того? Разбирается Джереми Вагнер → https://calendar.perfplanet.com/2018/doing-differential-serving-in-2019/
RunJS, блокнот для быстрой проверки идей на JavaScript с моментальной обратной связью → https://projects.lukehaas.me/runjs/
Learn Vanilla JS, курс по чистому JavaScript с дорожной картой, ссылками на теорию и практическими заданиями → https://learnvanillajs.com/
Сравнение подходов к интернационализации в Angular от Катерины Павленко → https://medium.com/p/bbb67a948434
This media is not supported in your browser
VIEW IN TELEGRAM
shiny, библиотека для добавления реалистичных отражений на устройствах с поддержкой DeviceMotion API → https://github.com/rikschennink/shiny
Почему стоит отказаться от дефолтных экспортов в пользу именованных, мнение создателя ESLint Николаса Закаса → https://humanwhocodes.com/blog/2019/01/stop-using-default-exports-javascript-module/
Конфигурация CI как код
Для непрерывной интеграции (Continuous Integration) обычно используют инструменты вроде Jenkins, TeamCity, Travis или CircleCI. Эти инструменты предоставляют собственный интерфейс для конфигурирования CI, в котором процесс обычно описывается шагами: настройка окружения, запуск тестов, сборка, деплой и так далее.
Настройка CI через интерфейс используемого инструмента непрозрачна и неудобна:
— изменения не версионируются;
— для внесения изменений каждый раз нужно открывать сам инструмент, который может быть недоступен (например, из-за выключенного корпоративного VPN);
— для изменения процесса в рамках конкретной задачи придётся плясать с бубном и разделять в инструменте общий билд и билд этой задачи.
Решение этих проблем — описание процесса в виде кода (например, в виде sh-скрипта или Makefile) и хранение этого кода непосредственно в репозитории проекта. В используемом вами инструменте остаётся только указать команду запуска этого кода.
Если описать основные шаги процесса в виде отдельных скриптов, их также можно будет использовать локально: например, запустить настройку окружения при старте работы с проектом или прогонять тесты перед каждым коммитом.
Больше советов → https://github.com/forwebdev/ui-developer-tips
Для непрерывной интеграции (Continuous Integration) обычно используют инструменты вроде Jenkins, TeamCity, Travis или CircleCI. Эти инструменты предоставляют собственный интерфейс для конфигурирования CI, в котором процесс обычно описывается шагами: настройка окружения, запуск тестов, сборка, деплой и так далее.
Настройка CI через интерфейс используемого инструмента непрозрачна и неудобна:
— изменения не версионируются;
— для внесения изменений каждый раз нужно открывать сам инструмент, который может быть недоступен (например, из-за выключенного корпоративного VPN);
— для изменения процесса в рамках конкретной задачи придётся плясать с бубном и разделять в инструменте общий билд и билд этой задачи.
Решение этих проблем — описание процесса в виде кода (например, в виде sh-скрипта или Makefile) и хранение этого кода непосредственно в репозитории проекта. В используемом вами инструменте остаётся только указать команду запуска этого кода.
Если описать основные шаги процесса в виде отдельных скриптов, их также можно будет использовать локально: например, запустить настройку окружения при старте работы с проектом или прогонять тесты перед каждым коммитом.
Больше советов → https://github.com/forwebdev/ui-developer-tips
GitHub
GitHub - forwebdev/ui-developer-tips: Советы для разработчика интерфейсов
Советы для разработчика интерфейсов. Contribute to forwebdev/ui-developer-tips development by creating an account on GitHub.
В чём я не шарю в 2018: Дэн Абрамов напоминает, что пробелы в знаниях не обесценивают приобретённый с годами опыт → https://overreacted.io/ru/things-i-dont-know-as-of-2018/
GraphQL спустя два года: инженеры Verve о предпосылках перехода на GraphQL, опыте использования и совершённых ошибках → https://verve.co/engineering/graphql-a-retrospective/