artalog
4.23K subscribers
543 photos
40 videos
40 files
913 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
А вы знали что process.exit() возвращает never и этим может гарантировать наличие ваших энвов? 😉

Да, их придется импортитровать каждый раз из какого-то глобального файла констант. И это очень хорошо, так за ними проще следить.
👍20🔥5
Койкто (не я) делает новый фронтенд фреймворк и придумывает апишку для статических темплейтов, как вам такое? Поставьте смайличек плз.
👎97💩33🤔19👍6🤮3
https://learnxinyminutes.com/


Огромная подборка очень быстрых туториалов по разным технологиям и языкам программирования на разных языках (человеческих).
❤‍🔥18👍3🔥2
https://www.loom.com/share/878294970d8e48919c819f35d0cd0da4

https://www.val.town/

Новая платформа для простого и быстрого прототипирования - закинули код в инпут и получили бесплатную лямбду в облаке. Есть возможность ссылаться на другие лямбды, секреты (приватные энвы), запуск по расписанию!

R.I.P. runkit.com
🔥62👍2
О че нашел. Два года назад рисовал. OSS это вам не `npm publish` и ладно 🫠

А покидайте в дискашены годных статей как вкотиться в OSS, я уже равно таких не видел, мб в пузыре, интересно о чем сейчас пишут.
👍7🔥4
Я тоже хочу поиграть в эту игру.
А вот что бы вам совсем весело было.
👍7👎5
Forwarded from melikhov.dev
https://t.me/artalog/624

Фан-факт про JS, который вы, возможно не знали. В спеке JS не Integer, но есть абстрактная операция ToIntegerOrInfinity которая используется для приведения Number к целому числу. И работает она так, что просто отрезает всё, что находится за запятой — It converts argument to an integer representing its Number value with fractional part truncated, or to +∞ or -∞ when that Number value is infinite

Убедитесь сами, вот вам спецификация.
👍4😁4👎1
Люди не верят что я знаю лучше терсера… Ну вот вам примеры.
😁9🥴5
artalog
JavaScript empty mark Есть такой интересный proposal-partial-application, который предлагает сахар для частичного биндинга аргументов функции. Мне нравится идея этого предложения, я сталкиваюсь с задачами где это могло бы быть полезно, но мне очень не нравится…
JavaScript skip symbol

Обновил пропосал, добавил еще кейсов (про ссылочную прозрачность). Напомню смысл: возможность биндить аргументы любого порядка. Звучит как ерунда, но этим можно улучшить перф наивного кода, сделать его предсказуемее и, возможно, добавить ленивости методам массива.
👍3🔥1
Принес вам утешение

https://twitter.com/BenLesh/status/1617585843623059456


А вы видете ошибку? 🙃
👍3
Пишу статью про Act и на выходных сделал исходники НАМНОГО более читаемыми, мб кому интересно будет: https://github.com/artalar/act/blob/reference-implementation/src/index.ts
👍7🔥4
Передавая в resolve промис мы теряем лишний тик из-за того что then вызывается не синхронно, а в следующем тике: This process must take place as a Job to ensure that the evaluation of the then method occurs after evaluation of any surrounding code has completed. [https://262.ecma-international.org/6.0/#sec-promiseresolvethenablejob]
🤔9👍7
Кто такой лид.

Хочется напомнить про этот пост, после прослушивания последних Веб-стандартов, в котором обсуждали “Великий раздел” - сложность градации разработчиков по навыкам и инженерным скилам . Бизнесу, конечно, тяжело понять что такое веб-разработчик и нанять такого человека, который действительно подойдет именно для их скоупа задач. По настоящему универсальных инженеров очень мало.

А смысл же простой: специальность (должность) - набор ролей, роль - набор обязаностей. Обязанности бывают технические и менеджерские. Понятно что всю комбинаторику тройкой названий не перекрыть. Если мы не можем договориться о том какие обязанности вмещает в себя специальность, давайте оперировать более низкоуровневыми понятиями: набором ролей, думаю тут было бы проще договориться. На крайний случай, написать в описании вакансии цель, а не средство: "Разработчик интернет магазина", "Разработчик сайта админки на поддержку". Как на фрилансе :) там критичнее найти максимально подходящего исполнителя, посмотрите какие практики там применяют.
👍6
artalog
Пишу статью про Act и на выходных сделал исходники НАМНОГО более читаемыми, мб кому интересно будет: https://github.com/artalar/act/blob/reference-implementation/src/index.ts
Не могу зарелизить новый акт, v8 что-то жутко деоптимайзит.

Медиана 1000 итераций в бенче:

node16: 0.01137ms (подозрительно медленно)
node18: 0.00765ms (подозрительно медленно)
bun0.5: 0.00079ms (как надо)

Профилировать пробовал, практически пустые функции отрабатывают раз в 20 дольше нужного.

Сегодня постараюсь запистаь видео как я это профилирую.
👍17🤡9
Live stream scheduled for
Стрима не будет, интернет никакой 🙁
😢14
У меня есть очень много утверждений и мыслей по архитектуре, но т.к. они у меня не формализованы, в этом канале они практически не звучали.

Хотя общий смысл простой. Архитектура - набор технических решений (тулинг - либы, паттерны, конвенции) оптимально подобранный под задачи бизнеса. Структура проекта (правила разбивки модулей) - малая часть общего вопроса.

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

Я давно убежден - если код удобен для тестов, это хорошо спроектированный код. Соответственно, как структурировать код и организовывать интерфейсы правильно? Подстраиваться под тесты! Хороший тест проверяет то что нужно и не проверяет что не нужно, он не лезет в детали реализации, а работает с публичными интерфейсами. Если тест писать легко и удобно, значит и другим модулям приложения будет удобно и безопасно работать с этим кодом.

И вот вопрос, тесты же разные бывают, значит..? Каждый тип теста - это отдельная часть структуры проекта. Вопрос не про доменные фичи, а про системное деление, типа слоев.

Я не селен в тестировании, но так понимаю они бывают: юнит (чистые функции или снапшот / скриншот), модульные (функциональные?), интеграционные (процессы) и e2e (как на живую). Соответственно, код нужно делить на утилиты или тупые компоненты), модули (виджеты), контроллеры для связи модулей и код для среды (рулит разницей клиент / ssr и тп).

Что думаете?
👍22👎1🔥1🤔1
artalog
У меня есть очень много утверждений и мыслей по архитектуре, но т.к. они у меня не формализованы, в этом канале они практически не звучали. Хотя общий смысл простой. Архитектура - набор технических решений (тулинг - либы, паттерны, конвенции) оптимально…
И еще немного о наболевшем.

Фреймворк - диктует вам правила по кодстайлу. Это не бинарное состояние, это свойство. Оно может проявляться или не проявляться в разных контекстах.

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

Ангуляр не связывает вас хуками, а позволяет писать переносимую логику на Rx. Но понятно, что есть множество других моментов в которых реакт - просто либа, а ангуляр - фреймворк.

Понимаете логику?
🤔6🤪4👍2