В "Идеальном программисте" дядя Боб рассказывает о концепции "ката". Упражнения для разработчиков, которые позволяют натренировать пальцы на решения простых повседневных задач.
Хороший ресурс с набором таких упражнений по JS — http://es6katas.org/
#идеальный_программист #js
Хороший ресурс с набором таких упражнений по JS — http://es6katas.org/
#идеальный_программист #js
Часто сталкиваюсь с тем, что свеже-обращенные разработчики считают Redux какой-то магией и отказываются понимать, как он работает. Убежден, что единственный способ понять что-то — сделать это руками.
Отличная статья по теме:
“Изучаем Redux на примере создания мини-Redux” @NTolochny https://medium.com/devschacht/jakob-lind-learn-redux-by-coding-a-mini-redux-d1a58e830514
#js
Отличная статья по теме:
“Изучаем Redux на примере создания мини-Redux” @NTolochny https://medium.com/devschacht/jakob-lind-learn-redux-by-coding-a-mini-redux-d1a58e830514
#js
Medium
Изучаем Redux на примере создания мини-Redux
Перевод статьи Jakob Lind: Learn Redux by coding a Mini-Redux
При разработке React-приложений почти всегда используют Redux.
Но писать редьюсеры — большая неприятность. Куча шаблонного кода, страдает читаемость. Недавно открыл для себя библиотеку, которая полностью решает эту проблему.
https://github.com/atomixinteractions/redux-symbiote
Симбиот — функция принимающая стейт, и пейлоад экшена, возвращающая новый стейт. На выходе получаем набор экшенов и редьюсеров, которые можно использовать как обычно. Удобно!
#js
Но писать редьюсеры — большая неприятность. Куча шаблонного кода, страдает читаемость. Недавно открыл для себя библиотеку, которая полностью решает эту проблему.
https://github.com/atomixinteractions/redux-symbiote
Симбиот — функция принимающая стейт, и пейлоад экшена, возвращающая новый стейт. На выходе получаем набор экшенов и редьюсеров, которые можно использовать как обычно. Удобно!
#js
GitHub
GitHub - sergeysova/redux-symbiote: Create actions and reducer without pain
Create actions and reducer without pain. Contribute to sergeysova/redux-symbiote development by creating an account on GitHub.
По долгу службы, в скором времени буду строить довольно крупное приложение на NodeJS.
На этой неделе написал технический прототип и познал всю боль с Express. Неудобно, нужно много написать самому. Подумал, что нужно что-то другое. И как раз на митапе несколько дней назад добрый человек посоветовал посмотреть на Nest.js.
И оно выглядит прямо хорошо!
Особенно, меня, как большого любителя TypeScript, порадовала их дружба.
Всем, кто строит хоть сколько-нибудь большие приложения на NodeJS рекомендую посмотреть на это решение. Возможно, оно подойдёт и вам.
https://docs.nestjs.com
#js #ts
На этой неделе написал технический прототип и познал всю боль с Express. Неудобно, нужно много написать самому. Подумал, что нужно что-то другое. И как раз на митапе несколько дней назад добрый человек посоветовал посмотреть на Nest.js.
И оно выглядит прямо хорошо!
Особенно, меня, как большого любителя TypeScript, порадовала их дружба.
Всем, кто строит хоть сколько-нибудь большие приложения на NodeJS рекомендую посмотреть на это решение. Возможно, оно подойдёт и вам.
https://docs.nestjs.com
#js #ts
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive…
Исследуя GitHub
В функциональном программировании есть удобная концепция
Было:
Стало:
Теперь представьте, что таких преобразований не одно, а много.
Надавно нашел бибилиотеку для JavaScript/TypeScript, реализующую эту
https://github.com/bcherny/tsoption
#js #ts #fp
В функциональном программировании есть удобная концепция
Option
. Это абстракция над переменной, которой может и не быть (null
, undefined
, etc.). Она позволяет работать с такими значениями как с коллекцией (пустой, или из одного элемента).Было:
const parsedInput = !!nullableVar
? parseInt(nullableVar) + 12
: 1
calculate(parsedInput)
Стало:
const parsedInput = optionInput
.map(v => parseInt(v))
.map(v => v + 12)
.getOrElse(1)
calculate(parsedInput)
Теперь представьте, что таких преобразований не одно, а много.
Надавно нашел бибилиотеку для JavaScript/TypeScript, реализующую эту
Option
.https://github.com/bcherny/tsoption
#js #ts #fp
Конфигурация приложений — один из самых важных аспектов разработки. Это место, где постоянно происходят утечки секретных данных, тормозится процесс внедрения непрерывной доставки, случаются сложно отлавливаемые рантайм‑ошибки. Забота об этом — необходимость при разработке любого приложения.
Написал небольшую заметку — как правильно внедрять параметры конфигурации в приложение, управлять ими в разных окружениях и не страдать.
Конфигурация Node.js приложений
К Node.js относится только предпоследний абзац, так что читать можно и людям из других технологий.
#удобство_разработки #js
Написал небольшую заметку — как правильно внедрять параметры конфигурации в приложение, управлять ими в разных окружениях и не страдать.
Конфигурация Node.js приложений
К Node.js относится только предпоследний абзац, так что читать можно и людям из других технологий.
#удобство_разработки #js
Deno
На HolyJS слушал доклад про Deno. Это был не очень хороший доклад про крутую технологию от интересного человека.
Deno — это рантайм для TypeScript (можно запускать и JavaScript), который должен стать лучшей версией Node.js.
Три ключевых приемущества:
+ распределенное хранилище пакетов — любая библиотека импортируется просто по URL;
+ безопасность — по умолчанию у приложения нет доступа до важных штук (сеть, диск, устройства) и их нужно выдавать явно;
+ поддержка TypeScript из коробки.
Технология еще совсем сырая — использовать ее в реальных приложениях не стоит. Но осенью обещают стабильный релиз.
Тематические материалы:
+ Deno on GitHub
+ Распаковываем фреймворк
+ Deno — новый Node.js?
Когда выложат запись доклада уже не будет смысла его смотреть, поэтому — просто почитайте о Deno. Мне кажется, эта штука может стать очень популярной.
#js
На HolyJS слушал доклад про Deno. Это был не очень хороший доклад про крутую технологию от интересного человека.
Deno — это рантайм для TypeScript (можно запускать и JavaScript), который должен стать лучшей версией Node.js.
Три ключевых приемущества:
+ распределенное хранилище пакетов — любая библиотека импортируется просто по URL;
+ безопасность — по умолчанию у приложения нет доступа до важных штук (сеть, диск, устройства) и их нужно выдавать явно;
+ поддержка TypeScript из коробки.
Технология еще совсем сырая — использовать ее в реальных приложениях не стоит. Но осенью обещают стабильный релиз.
Тематические материалы:
+ Deno on GitHub
+ Распаковываем фреймворк
+ Deno — новый Node.js?
Когда выложат запись доклада уже не будет смысла его смотреть, поэтому — просто почитайте о Deno. Мне кажется, эта штука может стать очень популярной.
#js
Опасное место
По моему опыту, больше всего ошибок появляется в местах, где значения может не быть.
Многие языки (привет, TypeScript) не очень хорошо умеют сигнализировать о возможном отсутствии значения. Решение — явно указывать это в коде.
Option — структура данных, которая хранит такие значения и позволяет работать с ними абсолютно безопасно. В некоторых языках они встроены, в других — нужно использовать сторонние библиотеки.
Стандарт Option включает в себя многое, что зачастую не нужно в реальных приложениях. А для фронтенда важен каждый байт. Поэтому я сделал минималистичную реализацию для TS/JS — nanoption (220 байт).
Почитайте, как использовать Option в вашем языке и попробуйте.
#проектирование #js
По моему опыту, больше всего ошибок появляется в местах, где значения может не быть.
Многие языки (привет, TypeScript) не очень хорошо умеют сигнализировать о возможном отсутствии значения. Решение — явно указывать это в коде.
Option — структура данных, которая хранит такие значения и позволяет работать с ними абсолютно безопасно. В некоторых языках они встроены, в других — нужно использовать сторонние библиотеки.
Стандарт Option включает в себя многое, что зачастую не нужно в реальных приложениях. А для фронтенда важен каждый байт. Поэтому я сделал минималистичную реализацию для TS/JS — nanoption (220 байт).
Почитайте, как использовать Option в вашем языке и попробуйте.
#проектирование #js
Я люблю JavaScript, люблю Node.js. Но иногда возникают трудности связанные с органичениями платформы.
Недавно делал прототип приложения для изучения английского языка. Внутри нужно было обрабатывать натуральный язык: разбивать текст на слова, приводить их к нормальной форме, исправлять опечатки. В npm есть прекрасная библиотека для этой задачи — compromise.
Кейс: воркер-треды
#js
Недавно делал прототип приложения для изучения английского языка. Внутри нужно было обрабатывать натуральный язык: разбивать текст на слова, приводить их к нормальной форме, исправлять опечатки. В npm есть прекрасная библиотека для этой задачи — compromise.
Кейс: воркер-треды
#js
Medium
Кейс: воркер-треды
Node.js работает в одном потоке. Чаще всего это не создаёт проблем, потому что почти все операции в наших приложениях неблокирующие…
Решил написать заметку про генерацию трейс-айди в Node.js, пошел гуглить и наткнулся на куда более качественную статью.
Почитайте, очень хорошо рассказано — https://habr.com/ru/post/442452/
#js
Почитайте, очень хорошо рассказано — https://habr.com/ru/post/442452/
#js
Хабр
Как логировать в NodeJS, чтобы пацаны во дворе уважали
Что вас бесит сильнее всего, когда вы пытаетесь организовать читаемые логи в вашем NodeJS приложении? Лично меня чрезвычайно напрягает отсутствие каких-либо вме...
Готовлю доклад про
Этот менеджер пакетов хранит все зависимости прямо в репозитории, в виде архивов. А мир JS-зависимостей прикрасен и удивителен. Некоторые архивы весят больше 100MB, такие большие файлы нельзя грузить на GitHub (про другие сервисы не знаю) через Git. Это очень неудобно, и единственный выход, который я нашел — хранить такие файл в Git Large File Storage.
Вот так удобство прорывного инструмента разбивается о криворукость разработчиков.
#js
yarn@berry
, буду делится с вами некоторыми заметками-черновиками.Этот менеджер пакетов хранит все зависимости прямо в репозитории, в виде архивов. А мир JS-зависимостей прикрасен и удивителен. Некоторые архивы весят больше 100MB, такие большие файлы нельзя грузить на GitHub (про другие сервисы не знаю) через Git. Это очень неудобно, и единственный выход, который я нашел — хранить такие файл в Git Large File Storage.
Вот так удобство прорывного инструмента разбивается о криворукость разработчиков.
#js
Medium
File abc.xyz exceeds GitHub’s file size limit of 100.00 MB — Git Large File Storage to the rescue!
In a recent project of mine (Flutter + Unity) some very large files were exported from Unity. These files then had to be put below the…
На прошлой неделе писал про мои заметки с быстрыми решениями, добавил туда новую напоминалку — про JS-функцию, которая типографирует русские тексты.
https://www.notion.so/kamyshev/036b55da6eb44540b941d66c07e0857b
#js
https://www.notion.so/kamyshev/036b55da6eb44540b941d66c07e0857b
#js