https://github.com/XaveScor/smartbundle
Это наверно третий раз, когда я пишу тут, в канале, о своём проекте.
Предыдущие попытки:
- signal-components - пока на паузе, так как потребитель не нашёлся
- анализатор зависимостей - даже вспоминать смысла нет, так как есть https://e18e.dev
Сейчас же я активно занимаюсь smartbundle, цель которого я хотел бы описать такой фразой:
"Пиши код, а не думай о сборке".
Smartbundle - это zero-config сборщик кода, который концентрируется на сборке библиотек. zero-config же стал возможен по простой причине: люди и так описывают конфигурацию либы в package.json. И моя гипотеза в том, что этой информации должно быть достаточно для esm/cjs/ts сборке библиотек. А сборка - это весьма сложное, как оказалось, занятие. Из простого гемора, который берёт на себя smartbundle:
- корректная генерация esm/cjs
- корректная генерация тайпингов к esm/cjs. А это немного неочевидно, так как нужны разные тайпинги для cjs/esm
- Либа будет работать в react-native. А это чуток гемор, так как там возможен только cjs.
- Либа будет работать с webpack4. Он не умеет в exports из package.json(react-native тоже не работает). А это значит, что надо поприседать, чтобы обеспечить импорт внутренних путей
- у меня есть e2e тесты для различных окружений, чтобы гарантировать, что библиотека будет импортировать корректно везде
- строится на основе vite, а значит с написанием тестов через vitest проблем не будет.
И кучу других мелочей. Я бы назвал smartbundle преттиером из мира сборщиков. Он просто работает(или должен работать).
Из возможных конкурентов я бы назвал tsup и microbundle, но у них есть потенциальный минус: они не умеют генерировать package.json, а заставляют это делать пользователя. Со smartbundle же вам вообще ничего не надо знать о сборке библиотек. К примеру, вы знали что в package.json порядок строчек важен? И это может сломать вашу либу.
Почему в этот раз эта либа не будет заброшена?
Ну, этого нельзя никак исключать, но я уже месяц работаю неотрывно от неё + есть потребители, которые хотят её к себе затащить, но пока не могут из-за отсутствия некоторых фич, так что думаю, что запала мне достаточно для дальнейшей работы.
Этим постом мне хотелось бы сделать не только анонс, но и найти возможных потребителей, так как оочень необходима обратная связь. Каждая библиотека уникальна и каждая из них генерирует собственные баги, которые хотелось бы поймать.
Поэтому пробуйте, пишите, давайте сотрудничать. От меня - снятие вашей головной боли. От вас - фидбек и найденные баги.
Всю инфу о разработке, планах, релизах и всего что связано со смартбандлом буду выкладывать на https://www.tgoop.com/smartbundle, так как делиться новостями хочется, а спамить ими - нет.
P.S. Если глянете документацию и дадите отзыв по ней - так же буду благодарен.
Это наверно третий раз, когда я пишу тут, в канале, о своём проекте.
Предыдущие попытки:
- signal-components - пока на паузе, так как потребитель не нашёлся
- анализатор зависимостей - даже вспоминать смысла нет, так как есть https://e18e.dev
Сейчас же я активно занимаюсь smartbundle, цель которого я хотел бы описать такой фразой:
"Пиши код, а не думай о сборке".
Smartbundle - это zero-config сборщик кода, который концентрируется на сборке библиотек. zero-config же стал возможен по простой причине: люди и так описывают конфигурацию либы в package.json. И моя гипотеза в том, что этой информации должно быть достаточно для esm/cjs/ts сборке библиотек. А сборка - это весьма сложное, как оказалось, занятие. Из простого гемора, который берёт на себя smartbundle:
- корректная генерация esm/cjs
- корректная генерация тайпингов к esm/cjs. А это немного неочевидно, так как нужны разные тайпинги для cjs/esm
- Либа будет работать в react-native. А это чуток гемор, так как там возможен только cjs.
- Либа будет работать с webpack4. Он не умеет в exports из package.json(react-native тоже не работает). А это значит, что надо поприседать, чтобы обеспечить импорт внутренних путей
- у меня есть e2e тесты для различных окружений, чтобы гарантировать, что библиотека будет импортировать корректно везде
- строится на основе vite, а значит с написанием тестов через vitest проблем не будет.
И кучу других мелочей. Я бы назвал smartbundle преттиером из мира сборщиков. Он просто работает(или должен работать).
Из возможных конкурентов я бы назвал tsup и microbundle, но у них есть потенциальный минус: они не умеют генерировать package.json, а заставляют это делать пользователя. Со smartbundle же вам вообще ничего не надо знать о сборке библиотек. К примеру, вы знали что в package.json порядок строчек важен? И это может сломать вашу либу.
Почему в этот раз эта либа не будет заброшена?
Ну, этого нельзя никак исключать, но я уже месяц работаю неотрывно от неё + есть потребители, которые хотят её к себе затащить, но пока не могут из-за отсутствия некоторых фич, так что думаю, что запала мне достаточно для дальнейшей работы.
Этим постом мне хотелось бы сделать не только анонс, но и найти возможных потребителей, так как оочень необходима обратная связь. Каждая библиотека уникальна и каждая из них генерирует собственные баги, которые хотелось бы поймать.
Поэтому пробуйте, пишите, давайте сотрудничать. От меня - снятие вашей головной боли. От вас - фидбек и найденные баги.
Всю инфу о разработке, планах, релизах и всего что связано со смартбандлом буду выкладывать на https://www.tgoop.com/smartbundle, так как делиться новостями хочется, а спамить ими - нет.
P.S. Если глянете документацию и дадите отзыв по ней - так же буду благодарен.
GitHub
GitHub - XaveScor/smartbundle: Just Code, No Configs. The Library Bundler That Respects Your Time
Just Code, No Configs. The Library Bundler That Respects Your Time - XaveScor/smartbundle
https://portal.noc.gov.ru/ru/news/2024/11/07/рекомендуем-отказаться-от-cdn-сервиса-cloudflare/
В блокировках и прочих регуляциях сети есть один неприятный факт: с каждым новым поколением защиты/шифрования/сети/чего_угодно блокировки или перестают работать, или же начинают работать неверно. И в итоге приходится всю работу по настройке системы контроля делать с нуля. А государство этим заниматься не любит. Очень не любит.
И тут вопрос. Кто сильнее? Прогресс или же регуляции? И, мне кажется, что прогресс. Россия уже проиграла войну с сертификатами, из-за чего, к примеру, Сбербанк из-за рубежа открывается на http и тупо не работает.
Так что чебурнет всё ближе и ближе по простой причине: никто снаружи РФ не будет учитывать мнение какого-то РНК. Особенно ребята, которые контролируют около 40-50% мирового рынка CDN. Да, cloudflare сейчас - это половина интернета.
Но, важный нюанс, если вы достаточно крупная рыбёшка, то можете банить спокойно. Китай не обманет: https://www.theregister.com/2020/08/11/china_blocking_tls_1_3_esni/
В блокировках и прочих регуляциях сети есть один неприятный факт: с каждым новым поколением защиты/шифрования/сети/чего_угодно блокировки или перестают работать, или же начинают работать неверно. И в итоге приходится всю работу по настройке системы контроля делать с нуля. А государство этим заниматься не любит. Очень не любит.
И тут вопрос. Кто сильнее? Прогресс или же регуляции? И, мне кажется, что прогресс. Россия уже проиграла войну с сертификатами, из-за чего, к примеру, Сбербанк из-за рубежа открывается на http и тупо не работает.
Так что чебурнет всё ближе и ближе по простой причине: никто снаружи РФ не будет учитывать мнение какого-то РНК. Особенно ребята, которые контролируют около 40-50% мирового рынка CDN. Да, cloudflare сейчас - это половина интернета.
Но, важный нюанс, если вы достаточно крупная рыбёшка, то можете банить спокойно. Китай не обманет: https://www.theregister.com/2020/08/11/china_blocking_tls_1_3_esni/
The Register
China now blocking ESNI-enabled TLS 1.3 connections, say Great-Firewall-watchers
And needs a very blunt instrument to do the job, because the protocol works as planned
Как я писал раньше, я пишу маленькую библиотечку, которая собирает библиотеки в npm пакеты.
И это позволило мне очень сильно возненавидеть webstorm и vscode. У сегодня весь день один вопрос: Как? Как вы умудряетесь проигрывать Cursor по DX и качеству подсказок?
WebStorm тут вообще днина. Их inline режим - это насмешка. Через него вообще ничего невозможно делать. Он подсказывает чушь. Из него код фиг скопируешь. Даже вставлять код в chatgpt и копировать ответ обратно более комфортно и продуктивно. Я не знаю в каком мире живут ребята из jetbrains, но это ужас. Маленькие типовые задачи уже спокойно на 95% делаются в Cursor через LLM, а живя(и платя) в WebStorm ты вынужден страдать.
С VSCode же ситуация нифига не лучше. Да, они сделали новый инлайн режим, но это полный пососач. У меня в 60% ситуаций возникает "ой, мы не смогли ответить, пылызы переформулируй запрос". И это после интеграции к ним Claude.
Я прямо очень разочарован. Такое чувство, что Microsoft и JetBrains тупо не хватает человека, который запустит Cursor и их редактор рядом и покажет как он решает одну и ту же задачу. Я не удивлюсь, если через года 3-4 JetBrains вообще обанкротится с таким подходом. И это прямо даже обидно, так как я плачу им и сижу невылозно на их продуктах с 2015 года. И такой тупой конец. Просто не могут осилить скопировать DX курсора. Слов нет
И это позволило мне очень сильно возненавидеть webstorm и vscode. У сегодня весь день один вопрос: Как? Как вы умудряетесь проигрывать Cursor по DX и качеству подсказок?
WebStorm тут вообще днина. Их inline режим - это насмешка. Через него вообще ничего невозможно делать. Он подсказывает чушь. Из него код фиг скопируешь. Даже вставлять код в chatgpt и копировать ответ обратно более комфортно и продуктивно. Я не знаю в каком мире живут ребята из jetbrains, но это ужас. Маленькие типовые задачи уже спокойно на 95% делаются в Cursor через LLM, а живя(и платя) в WebStorm ты вынужден страдать.
С VSCode же ситуация нифига не лучше. Да, они сделали новый инлайн режим, но это полный пососач. У меня в 60% ситуаций возникает "ой, мы не смогли ответить, пылызы переформулируй запрос". И это после интеграции к ним Claude.
Я прямо очень разочарован. Такое чувство, что Microsoft и JetBrains тупо не хватает человека, который запустит Cursor и их редактор рядом и покажет как он решает одну и ту же задачу. Я не удивлюсь, если через года 3-4 JetBrains вообще обанкротится с таким подходом. И это прямо даже обидно, так как я плачу им и сижу невылозно на их продуктах с 2015 года. И такой тупой конец. Просто не могут осилить скопировать DX курсора. Слов нет
В последний месяц я активно занимаюсь вопросами совместимости и всё больше убеждаюсь, что "конфиги — это зло". Причём дело не в том, что людям не нужно подстраивать что-то под себя, а в том, что многие оставляют настройки по умолчанию или копируют из другого проекта, полагаясь на принцип "ну, если работает, зачем менять". Оказалось, что конфиги — это действительно сложно: нужно разбираться и тратить время, чтобы понять, как всё устроено. А зачем париться, если и так работает?
Так вот, к сути. Если вы используете в проекте, который как-либо собирается, typescript и у него в конфиге прописано
https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#--moduleresolution-bundler
https://www.typescriptlang.org/tsconfig/#moduleResolution
На удивление, даже в текущем моём проекте стоит
Так вот, к сути. Если вы используете в проекте, который как-либо собирается, typescript и у него в конфиге прописано
moduleResolution: Node
или же Node10
, то попробуйте изменить его на bundler
. Я думал со всех сторон и не понял зачем Node/Node10 может быть нужно в современном мире. Очень сильно сомневаюсь, что вы отпрыск ljharb'a, которому нужна нода 0.4.https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#--moduleresolution-bundler
https://www.typescriptlang.org/tsconfig/#moduleResolution
На удивление, даже в текущем моём проекте стоит
moduleResolution: Node
, который мне пару раз стрелял в колено. Но так как мне было лень разбираться как оно работает, я попросту откатывал изменения. Не будьте как я. Старайтесь понимать как у вас работает код.Microsoft News
Announcing TypeScript 5.0
Today we’re excited to announce the release of TypeScript 5.0! This release brings many new features, while aiming to make TypeScript smaller, simpler, and faster. We’ve implemented the new decorators standard, added functionality to better support ESM projects…
За последнюю неделю я пользовался гуглом ровно 1 раз. 1 раз за 7 дней.
Это просто гиганский сдвиг лично для меня. Если раньше про программистов говорили: самый главный навык - это умение гуглить, то сейчас, наверное, это пользоваться нужной LLMкой в нужное время.
Я полностью пересел на:
- https://www.perplexity.ai, когда мне нужно что-то загуглить. Теперь мне не нужно специально писать какие-то специальные запросы, удалять союзы, писать инфинитивы и делать прочие пассы руками, чтобы поисковик меня понимал. Я просто ищу на естественном языке что мне требуется;
- https://claude.ai - это основной мой генератор текста. Любого текста. Нужно написать письмо? Иду туда. Нужно написать код? Тоже туда. Нужна консультация по каким-то фундаментальным вещам - аналогично;
- http://chatgpt.com - но иногда лимиты у клауди заканчиваются. В таком случае я перехожу в чатгпт. Это тоже самое, только с худшим качеством, но безлимитно.
И самое главное: это всё доступно бесплатно! Я потратил ровно 0 центов на то, чтобы пользоваться сервисами выше. Я уверен, что у сервисов выше начнутся проблемы с бизнес моделью, если ими начнут пользоваться все люди мира, как они делают сейчас с гуглом. Но для меня гугл как поиск практически умер.
Вот так и произошла тихая революция. Старые инструменты, которые основаны не на LLM понемногу вымирают. Я даже впервые подумал обновить телефон на последний айфон до того как моя текущая трубка пришла в негодность - ровно из-за добавления apple ai в их продукты. В современном мире слишком много мусорной информации, чтобы обрабатывать её самостоятельно. Уведомления, куча писем в почте и т.п. И LLM являются прекрасным решением для упрощения жизни.
Это просто гиганский сдвиг лично для меня. Если раньше про программистов говорили: самый главный навык - это умение гуглить, то сейчас, наверное, это пользоваться нужной LLMкой в нужное время.
Я полностью пересел на:
- https://www.perplexity.ai, когда мне нужно что-то загуглить. Теперь мне не нужно специально писать какие-то специальные запросы, удалять союзы, писать инфинитивы и делать прочие пассы руками, чтобы поисковик меня понимал. Я просто ищу на естественном языке что мне требуется;
- https://claude.ai - это основной мой генератор текста. Любого текста. Нужно написать письмо? Иду туда. Нужно написать код? Тоже туда. Нужна консультация по каким-то фундаментальным вещам - аналогично;
- http://chatgpt.com - но иногда лимиты у клауди заканчиваются. В таком случае я перехожу в чатгпт. Это тоже самое, только с худшим качеством, но безлимитно.
И самое главное: это всё доступно бесплатно! Я потратил ровно 0 центов на то, чтобы пользоваться сервисами выше. Я уверен, что у сервисов выше начнутся проблемы с бизнес моделью, если ими начнут пользоваться все люди мира, как они делают сейчас с гуглом. Но для меня гугл как поиск практически умер.
Вот так и произошла тихая революция. Старые инструменты, которые основаны не на LLM понемногу вымирают. Я даже впервые подумал обновить телефон на последний айфон до того как моя текущая трубка пришла в негодность - ровно из-за добавления apple ai в их продукты. В современном мире слишком много мусорной информации, чтобы обрабатывать её самостоятельно. Уведомления, куча писем в почте и т.п. И LLM являются прекрасным решением для упрощения жизни.
Perplexity AI
Perplexity is a free AI-powered answer engine that provides accurate, trusted, and real-time answers to any question.
Почти что каждая документация забывает описывать самую главную штуку напротив фич: это причина почему эта фича была добавлена и какие проблемы решаются. И даже не важно к какому продукту документация. Некст, нода, редакс? Везде будет только описание фич.
А у меня в мозгу есть суровый баг. Зачастую я не вижу связи между задачами и возможностями инструмента, даже если я знаю и про возможности, и про то как решаются задачи.
И я даже могу сходу привести пример подобного: зачем нужны inlineSnapshot в jest/vitest? Есть идеи? Вот я знал о наличии подобных штук, но никогда не применял, так как не видел смысла. И даже более, я начал в штыки воспринимать снепшоты, так как куча людей начали их использовать для тестирования интерфейсов.
А в реальности эта штука сверхудобна, когда у вас есть детерменированный output, который вы корректно руками описать не можете. К примеру, проверка ошибок тайпскрипта. Или же проверка на отсутсвие ошибок.
В моём же случае мне нужно было тестировать выхлоп моего сборщика библиотек. И пока мне напрямую не ткнули носом, что в этом кейсе можно было использовать инлайн снепшоты - мне это даже в голову не приходило.
Пишите в документации не только "что умеет", но и "зачем умеет". Это очень сильно упрощает жизнь.
А у меня в мозгу есть суровый баг. Зачастую я не вижу связи между задачами и возможностями инструмента, даже если я знаю и про возможности, и про то как решаются задачи.
И я даже могу сходу привести пример подобного: зачем нужны inlineSnapshot в jest/vitest? Есть идеи? Вот я знал о наличии подобных штук, но никогда не применял, так как не видел смысла. И даже более, я начал в штыки воспринимать снепшоты, так как куча людей начали их использовать для тестирования интерфейсов.
А в реальности эта штука сверхудобна, когда у вас есть детерменированный output, который вы корректно руками описать не можете. К примеру, проверка ошибок тайпскрипта. Или же проверка на отсутсвие ошибок.
В моём же случае мне нужно было тестировать выхлоп моего сборщика библиотек. И пока мне напрямую не ткнули носом, что в этом кейсе можно было использовать инлайн снепшоты - мне это даже в голову не приходило.
Пишите в документации не только "что умеет", но и "зачем умеет". Это очень сильно упрощает жизнь.
Ну и небольшое воскресное напоминание насколько люди могут использовать ваши штуки по-своему даже в самых мелочах. Они даже название по-своему переиначат.
https://www.jetbrains.com/grazie/
Мне время от времени приходится балакать и писать иноземною мовою, в которой я не сказать что силён, то я пользуюсь grammarly, которая мне весьма и хорошо помогала. Правда у граммарли есть одна особенность - она капец дорогая: 144 доллара в год при покупке на год.
Но если вы считали, что у jetbrains с AI очень плохо, то это не правда. У jetbrains есть проблемы только с js/ts и прочим фронтенд кодом. А вот с текстом он работает весьма хорошо. На уровне граммарли. И даже доступен бесплатно. И даже если платить, то получишь и jetbrains AI и их правилку текста. И это за 100 долларов(На 44 доллара дешевле). Так что, возможно, jetbrains всё же получит от меня деньги, правда не за IDE, а за возможность писать буковы другим людям.
Пока в этом году я прихожу к экономии в 300+ долларов на подписках:
- отписка от grammarly(+144 бакса)
- отписка от jetbrains All Products Pack(+175 долларов)
- возможно подпишусь на jetbrains AI(-100 долларов).
А у вас сколько трат на всякие AI тулы?
Мне время от времени приходится балакать и писать иноземною мовою, в которой я не сказать что силён, то я пользуюсь grammarly, которая мне весьма и хорошо помогала. Правда у граммарли есть одна особенность - она капец дорогая: 144 доллара в год при покупке на год.
Но если вы считали, что у jetbrains с AI очень плохо, то это не правда. У jetbrains есть проблемы только с js/ts и прочим фронтенд кодом. А вот с текстом он работает весьма хорошо. На уровне граммарли. И даже доступен бесплатно. И даже если платить, то получишь и jetbrains AI и их правилку текста. И это за 100 долларов(На 44 доллара дешевле). Так что, возможно, jetbrains всё же получит от меня деньги, правда не за IDE, а за возможность писать буковы другим людям.
Пока в этом году я прихожу к экономии в 300+ долларов на подписках:
- отписка от grammarly(+144 бакса)
- отписка от jetbrains All Products Pack(+175 долларов)
- возможно подпишусь на jetbrains AI(-100 долларов).
А у вас сколько трат на всякие AI тулы?
https://vc.ru/ai/1675484-polzovateli-claude-poluchili-vozmozhnost-nastraivat-stil-otvetov-chat-bota
Тут пролетела мимо меня интересная новость, которая напомнила мне крутую штуку, которая есть у чатгпт.
Так сложилось, что я не очень дружелюбен со всякими иноземными мовами, в список которых входит и английский в том числе. По этой причине я почти везде перешел на английский. Но есть засада: современные инструменты слишком хорошо понимают кривой язык. Гораздо лучше людей.
И у чатгпт есть прямо киллер фича для такой ситуации: можно описать как тебе нужно именно отвечать. Причём это доступно и для бесплатного тарифа.
Промпт со скриншота закинул в комментарий
Тут пролетела мимо меня интересная новость, которая напомнила мне крутую штуку, которая есть у чатгпт.
Так сложилось, что я не очень дружелюбен со всякими иноземными мовами, в список которых входит и английский в том числе. По этой причине я почти везде перешел на английский. Но есть засада: современные инструменты слишком хорошо понимают кривой язык. Гораздо лучше людей.
И у чатгпт есть прямо киллер фича для такой ситуации: можно описать как тебе нужно именно отвечать. Причём это доступно и для бесплатного тарифа.
Промпт со скриншота закинул в комментарий
https://github.com/nodejs/node/pull/55217
В следующем миноре node@22 ожидаем require(esm) без флага. Оно уже смержено в мастер.
Смерть cjs всё ближе и ближе.
В следующем миноре node@22 ожидаем require(esm) без флага. Оно уже смержено в мастер.
Смерть cjs всё ближе и ближе.
GitHub
[v22.x] backport unflagging of --experimental-require-module and related fixes/refactorings by joyeecheung · Pull Request #55217…
This backports the following PRs that are related to the unflagging of --experimental-require-module:
module: remove bogus assertion in CJS entrypoint handling with --import #54592
module: refator...
module: remove bogus assertion in CJS entrypoint handling with --import #54592
module: refator...
Старые апи.
Каждый раз, когда я сталкиваюсь с чем-то кривым и плохо спланированным в браузерах, то понимаю что это что-то из эпохи IE11 или раньше.
Сейчас я работаю над аналитикой на сайте и удивляюсь насколько плохо спроектирован sendBeacon. Если вкратце что это такое: этот метод когда-нибудь отправит данные по урлу, который мы передаём туда. Всё, максимально примитивно.
И эта примитивность плоха. В идеале, я хотел бы чтобы sendBeacon батчил и отправлять данные на сервер, когда пользователь не взаимодействует со страницей. Но этого нет - дока на mdn рекомендует делать это самостоятельно:
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon#sending_analytics_at_the_end_of_a_session
И самое неприятное то, что я не могу сделать всё это руками в юзерспейсе: requestIdleCallback попросту отсутсвует в Safari. В итоге, для примитивной аналитики нам нужно костылить кучу кода.
Каждый раз, когда я сталкиваюсь с чем-то кривым и плохо спланированным в браузерах, то понимаю что это что-то из эпохи IE11 или раньше.
Сейчас я работаю над аналитикой на сайте и удивляюсь насколько плохо спроектирован sendBeacon. Если вкратце что это такое: этот метод когда-нибудь отправит данные по урлу, который мы передаём туда. Всё, максимально примитивно.
И эта примитивность плоха. В идеале, я хотел бы чтобы sendBeacon батчил и отправлять данные на сервер, когда пользователь не взаимодействует со страницей. Но этого нет - дока на mdn рекомендует делать это самостоятельно:
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon#sending_analytics_at_the_end_of_a_session
И самое неприятное то, что я не могу сделать всё это руками в юзерспейсе: requestIdleCallback попросту отсутсвует в Safari. В итоге, для примитивной аналитики нам нужно костылить кучу кода.
MDN Web Docs
Navigator: sendBeacon() method - Web APIs | MDN
The navigator.sendBeacon()
method asynchronously sends an HTTP POST request containing a small amount of data to a web server.
method asynchronously sends an HTTP POST request containing a small amount of data to a web server.
Где-то год назад я поражался насколько людей легко пробить, используя утечки Яндекс.Еды или других крупных компаний. Но меня успокаивало то что я чуток доверяю Яндексу и понимаю, что они закроют эту дырень. Но то, что данными людей торгуют просто в открытую и это легально - это прямо удивительно для меня:
https://habr.com/ru/companies/timeweb/articles/861510/
Причём, кмк, это касается не только РФ, но и как минимум Казахстана. https://b2b.kcell.kz/ru/product/direct-marketing
Всё больше убеждаюсь и убеждаюсь, что
а) сервисам жизненно необходимо иметь поддержку, которая осуществляется не только по номеру телефона. Хотя бы почту. Просто чтобы не дарить своего клиента конкурентам или разводилам;
б) Жизненно необходимо сидеть через kill-switch VPN, чтобы тебя не мог таргетить твой провайдер.
Не стесняйтесь использовать https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https и прочие технологии, которые мешают вас трекать
https://habr.com/ru/companies/timeweb/articles/861510/
Причём, кмк, это касается не только РФ, но и как минимум Казахстана. https://b2b.kcell.kz/ru/product/direct-marketing
Всё больше убеждаюсь и убеждаюсь, что
а) сервисам жизненно необходимо иметь поддержку, которая осуществляется не только по номеру телефона. Хотя бы почту. Просто чтобы не дарить своего клиента конкурентам или разводилам;
б) Жизненно необходимо сидеть через kill-switch VPN, чтобы тебя не мог таргетить твой провайдер.
Не стесняйтесь использовать https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https и прочие технологии, которые мешают вас трекать
Зависимости
package.json - это место, где мне всегда нужно лезть в доку, так как я критически не могу угадать по названию что делает тот или иной ключ.
А так как я пишу бандлер для либ, то это бесит просто донельзя.
Из последнего: мне нужно описать список пакетов, с которыми может работать моя либа. Т.е. эти пакеты могут существовать, а могут и не существовать. Я справедливо предположил, что нужно использовать "optionalDependencies". Но после релиза ко мне начали приходить пользователи со словами: "а почему у меня устанавливается бабель и тс, хотя я их не ставлю?".
Оказалось, что optDeps - это как deps(т.е. нужно ставить), но установка зависимостей не падает, если поставить зависимость не удаётся. Да, об этом написано в документации. Но кто её читает перед использованием?
И да, это весьма удобно в некоторых редких ситуациях. К примеру, таким макаром Vite ставит нативные зависимости: перечисляются зависимости для всех платформ, и поставятся только те, которые подходят для текущей машины. Остальное просто упадёт и проигнорируется.
В моём же случае понадобилось описать мои зависимости в peerDeps и проставить флаги в peerDepsMeta.
Хорошо, конечно что есть такая возможность, но то что это делается не так очевидно и требует в 2 раза больше строк - бесит. Хотя этот кейс на порядки более частый чем optDeps.
package.json - это место, где мне всегда нужно лезть в доку, так как я критически не могу угадать по названию что делает тот или иной ключ.
А так как я пишу бандлер для либ, то это бесит просто донельзя.
Из последнего: мне нужно описать список пакетов, с которыми может работать моя либа. Т.е. эти пакеты могут существовать, а могут и не существовать. Я справедливо предположил, что нужно использовать "optionalDependencies". Но после релиза ко мне начали приходить пользователи со словами: "а почему у меня устанавливается бабель и тс, хотя я их не ставлю?".
Оказалось, что optDeps - это как deps(т.е. нужно ставить), но установка зависимостей не падает, если поставить зависимость не удаётся. Да, об этом написано в документации. Но кто её читает перед использованием?
И да, это весьма удобно в некоторых редких ситуациях. К примеру, таким макаром Vite ставит нативные зависимости: перечисляются зависимости для всех платформ, и поставятся только те, которые подходят для текущей машины. Остальное просто упадёт и проигнорируется.
В моём же случае понадобилось описать мои зависимости в peerDeps и проставить флаги в peerDepsMeta.
{
"peerDependencies": {
"react": "^17.0.0",
},
"peerDependenciesMeta": {
"react": {
"optional": true
},
}
}
Хорошо, конечно что есть такая возможность, но то что это делается не так очевидно и требует в 2 раза больше строк - бесит. Хотя этот кейс на порядки более частый чем optDeps.
https://github.com/copilot
Тут MS добавил copilot для гитхаба, который умеет искать по гитхабу.
Правда он тупой и особо не помогает в сложных сценариях, но хотя бы ищет по документации.
P.S.Россияне, есть ли у вас возможность его использовать без VPN? В РФ и прочих запрещённых странах не доступно. Плюс, видимо, требуется покупка github copilot
Тут MS добавил copilot для гитхаба, который умеет искать по гитхабу.
Правда он тупой и особо не помогает в сложных сценариях, но хотя бы ищет по документации.
P.S.
Воскресный юморок
https://x.com/UnseenJapanSite/status/1865557220857151961
Тут аспирантура в Японии в одном из университетов похоже что устала от засилия китайцев, поэтому зафорсила бан своей страницы в материковом Китае.
Так что если вы не хотите платить за геоip и хочется отключить доступ к сайту в Китае, то просто напишите "Площадь Тяньаньмэнь" в keywords, и Китай вас сам забанит
P.S. если живёте в Китае, то не удивляётесь что мой канал там забанен
https://x.com/UnseenJapanSite/status/1865557220857151961
Тут аспирантура в Японии в одном из университетов похоже что устала от засилия китайцев, поэтому зафорсила бан своей страницы в материковом Китае.
Так что если вы не хотите платить за геоip и хочется отключить доступ к сайту в Китае, то просто напишите "Площадь Тяньаньмэнь" в keywords, и Китай вас сам забанит
P.S. если живёте в Китае, то не удивляётесь что мой канал там забанен
Forwarded from <divelopers>
CSS Wrapped 2024
Команда Chrome DevRel запустила CSS Wrapped 2024. Это лендинг с обзором новых возможностей CSS, выпущенных в Chrome (и не только) в этом году. Можно считать это итогами года для CSS.
В CSS появилось 17 новых возможностей:
-
- Анимация
- Exclusive Accordion
-
- Anchor Positioning
-
- View transitions
- Scroll-driven animations
- Scroll snap events
- Наследование свойств в
-
- @property
- Popover API
- @starting-style
-
-
-
Глядя на этот список и отслеживая новинки для публикации в этот канал, я впечатлён развитием CSS в этом году. Не помню такого количества фич раньше. Осталось дождаться хорошей поддержки всего этого. Тут я тоже настроен позитивно, о чём я уже упоминал. А пока предлагаю перейти на сайт CSS Wrapped 2024 и ознакомиться с демками всех новых возможностей. Особенно через последнюю версию Chrome, в которой все они поддерживается.
На самом сайте при этом во всю используются новые возможности CSS, поэтому можно поизучать исходники.
Команда Chrome DevRel запустила CSS Wrapped 2024. Это лендинг с обзором новых возможностей CSS, выпущенных в Chrome (и не только) в этом году. Можно считать это итогами года для CSS.
В CSS появилось 17 новых возможностей:
-
field-sizing
- Анимация
height: auto
, calc-size()
и interpolate-size
- Exclusive Accordion
-
::details-content
- Anchor Positioning
-
scrollbar-color
и scrollbar-width
- View transitions
- Scroll-driven animations
- Scroll snap events
- Наследование свойств в
::backdrop
-
light-dark()
- @property
- Popover API
- @starting-style
-
ruby-align
-
paint-order
-
CSSNestedDeclarations
Глядя на этот список и отслеживая новинки для публикации в этот канал, я впечатлён развитием CSS в этом году. Не помню такого количества фич раньше. Осталось дождаться хорошей поддержки всего этого. Тут я тоже настроен позитивно, о чём я уже упоминал. А пока предлагаю перейти на сайт CSS Wrapped 2024 и ознакомиться с демками всех новых возможностей. Особенно через последнюю версию Chrome, в которой все они поддерживается.
На самом сайте при этом во всю используются новые возможности CSS, поэтому можно поизучать исходники.
CSS Wrapped 2024
Join the Chrome DevRel team and a skateboarding Chrome Dino on a journey through the latest CSS launched for Chrome and the web platform in 2024.