Андруша пишет код – Telegram
Андруша пишет код
1.25K subscribers
137 photos
1 video
1 file
218 links
Download Telegram
Как я писал раньше, я пишу маленькую библиотечку, которая собирает библиотеки в npm пакеты.

И это позволило мне очень сильно возненавидеть webstorm и vscode. У сегодня весь день один вопрос: Как? Как вы умудряетесь проигрывать Cursor по DX и качеству подсказок?

WebStorm тут вообще днина. Их inline режим - это насмешка. Через него вообще ничего невозможно делать. Он подсказывает чушь. Из него код фиг скопируешь. Даже вставлять код в chatgpt и копировать ответ обратно более комфортно и продуктивно. Я не знаю в каком мире живут ребята из jetbrains, но это ужас. Маленькие типовые задачи уже спокойно на 95% делаются в Cursor через LLM, а живя(и платя) в WebStorm ты вынужден страдать.

С VSCode же ситуация нифига не лучше. Да, они сделали новый инлайн режим, но это полный пососач. У меня в 60% ситуаций возникает "ой, мы не смогли ответить, пылызы переформулируй запрос". И это после интеграции к ним Claude.

Я прямо очень разочарован. Такое чувство, что Microsoft и JetBrains тупо не хватает человека, который запустит Cursor и их редактор рядом и покажет как он решает одну и ту же задачу. Я не удивлюсь, если через года 3-4 JetBrains вообще обанкротится с таким подходом. И это прямо даже обидно, так как я плачу им и сижу невылозно на их продуктах с 2015 года. И такой тупой конец. Просто не могут осилить скопировать DX курсора. Слов нет
👎11👍7💩5🤡5🤔2👀1
В последний месяц я активно занимаюсь вопросами совместимости и всё больше убеждаюсь, что "конфиги — это зло". Причём дело не в том, что людям не нужно подстраивать что-то под себя, а в том, что многие оставляют настройки по умолчанию или копируют из другого проекта, полагаясь на принцип "ну, если работает, зачем менять". Оказалось, что конфиги — это действительно сложно: нужно разбираться и тратить время, чтобы понять, как всё устроено. А зачем париться, если и так работает?

Так вот, к сути. Если вы используете в проекте, который как-либо собирается, typenoscript и у него в конфиге прописано moduleResolution: Node или же Node10, то попробуйте изменить его на bundler. Я думал со всех сторон и не понял зачем Node/Node10 может быть нужно в современном мире. Очень сильно сомневаюсь, что вы отпрыск ljharb'a, которому нужна нода 0.4.
https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-5-0/#--moduleresolution-bundler
https://www.typenoscriptlang.org/tsconfig/#moduleResolution

На удивление, даже в текущем моём проекте стоит moduleResolution: Node, который мне пару раз стрелял в колено. Но так как мне было лень разбираться как оно работает, я попросту откатывал изменения. Не будьте как я. Старайтесь понимать как у вас работает код.
👍20🤡3💩2
За последнюю неделю я пользовался гуглом ровно 1 раз. 1 раз за 7 дней.
Это просто гиганский сдвиг лично для меня. Если раньше про программистов говорили: самый главный навык - это умение гуглить, то сейчас, наверное, это пользоваться нужной LLMкой в нужное время.

Я полностью пересел на:
- https://www.perplexity.ai, когда мне нужно что-то загуглить. Теперь мне не нужно специально писать какие-то специальные запросы, удалять союзы, писать инфинитивы и делать прочие пассы руками, чтобы поисковик меня понимал. Я просто ищу на естественном языке что мне требуется;
- https://claude.ai - это основной мой генератор текста. Любого текста. Нужно написать письмо? Иду туда. Нужно написать код? Тоже туда. Нужна консультация по каким-то фундаментальным вещам - аналогично;
- http://chatgpt.com - но иногда лимиты у клауди заканчиваются. В таком случае я перехожу в чатгпт. Это тоже самое, только с худшим качеством, но безлимитно.

И самое главное: это всё доступно бесплатно! Я потратил ровно 0 центов на то, чтобы пользоваться сервисами выше. Я уверен, что у сервисов выше начнутся проблемы с бизнес моделью, если ими начнут пользоваться все люди мира, как они делают сейчас с гуглом. Но для меня гугл как поиск практически умер.

Вот так и произошла тихая революция. Старые инструменты, которые основаны не на LLM понемногу вымирают. Я даже впервые подумал обновить телефон на последний айфон до того как моя текущая трубка пришла в негодность - ровно из-за добавления apple ai в их продукты. В современном мире слишком много мусорной информации, чтобы обрабатывать её самостоятельно. Уведомления, куча писем в почте и т.п. И LLM являются прекрасным решением для упрощения жизни.
👍26💯4🤡3🗿3💩211👌1🍌1
Почти что каждая документация забывает описывать самую главную штуку напротив фич: это причина почему эта фича была добавлена и какие проблемы решаются. И даже не важно к какому продукту документация. Некст, нода, редакс? Везде будет только описание фич.

А у меня в мозгу есть суровый баг. Зачастую я не вижу связи между задачами и возможностями инструмента, даже если я знаю и про возможности, и про то как решаются задачи.
И я даже могу сходу привести пример подобного: зачем нужны inlineSnapshot в jest/vitest? Есть идеи? Вот я знал о наличии подобных штук, но никогда не применял, так как не видел смысла. И даже более, я начал в штыки воспринимать снепшоты, так как куча людей начали их использовать для тестирования интерфейсов.

А в реальности эта штука сверхудобна, когда у вас есть детерменированный output, который вы корректно руками описать не можете. К примеру, проверка ошибок тайпскрипта. Или же проверка на отсутсвие ошибок.
В моём же случае мне нужно было тестировать выхлоп моего сборщика библиотек. И пока мне напрямую не ткнули носом, что в этом кейсе можно было использовать инлайн снепшоты - мне это даже в голову не приходило.

Пишите в документации не только "что умеет", но и "зачем умеет". Это очень сильно упрощает жизнь.
👍26💯4💩1🤡1
Ну и небольшое воскресное напоминание насколько люди могут использовать ваши штуки по-своему даже в самых мелочах. Они даже название по-своему переиначат.
😁4🤔2🤡2👍1💩1
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 тулы?
🤡11👍4💩2
https://vc.ru/ai/1675484-polzovateli-claude-poluchili-vozmozhnost-nastraivat-stil-otvetov-chat-bota

Тут пролетела мимо меня интересная новость, которая напомнила мне крутую штуку, которая есть у чатгпт.

Так сложилось, что я не очень дружелюбен со всякими иноземными мовами, в список которых входит и английский в том числе. По этой причине я почти везде перешел на английский. Но есть засада: современные инструменты слишком хорошо понимают кривой язык. Гораздо лучше людей.
И у чатгпт есть прямо киллер фича для такой ситуации: можно описать как тебе нужно именно отвечать. Причём это доступно и для бесплатного тарифа.

Промпт со скриншота закинул в комментарий
👍22🔥5💩3❤‍🔥2🤡2
Старые апи.

Каждый раз, когда я сталкиваюсь с чем-то кривым и плохо спланированным в браузерах, то понимаю что это что-то из эпохи 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. В итоге, для примитивной аналитики нам нужно костылить кучу кода.
👍6💩1🤡1
Где-то год назад я поражался насколько людей легко пробить, используя утечки Яндекс.Еды или других крупных компаний. Но меня успокаивало то что я чуток доверяю Яндексу и понимаю, что они закроют эту дырень. Но то, что данными людей торгуют просто в открытую и это легально - это прямо удивительно для меня:
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 и прочие технологии, которые мешают вас трекать
👍9🤡2🤯1💩1
Зависимости

package.json - это место, где мне всегда нужно лезть в доку, так как я критически не могу угадать по названию что делает тот или иной ключ.

А так как я пишу бандлер для либ, то это бесит просто донельзя.
Из последнего: мне нужно описать список пакетов, с которыми может работать моя либа. Т.е. эти пакеты могут существовать, а могут и не существовать. Я справедливо предположил, что нужно использовать "optionalDependencies". Но после релиза ко мне начали приходить пользователи со словами: "а почему у меня устанавливается бабель и тс, хотя я их не ставлю?".

Оказалось, что optDeps - это как deps(т.е. нужно ставить), но установка зависимостей не падает, если поставить зависимость не удаётся. Да, об этом написано в документации. Но кто её читает перед использованием?

И да, это весьма удобно в некоторых редких ситуациях. К примеру, таким макаром Vite ставит нативные зависимости: перечисляются зависимости для всех платформ, и поставятся только те, которые подходят для текущей машины. Остальное просто упадёт и проигнорируется.

В моём же случае понадобилось описать мои зависимости в peerDeps и проставить флаги в peerDepsMeta.

{
"peerDependencies": {
"react": "^17.0.0",
},
"peerDependenciesMeta": {
"react": {
"optional": true
},
}
}

Хорошо, конечно что есть такая возможность, но то что это делается не так очевидно и требует в 2 раза больше строк - бесит. Хотя этот кейс на порядки более частый чем optDeps.
👍18🤡4💩3
https://github.com/copilot

Тут MS добавил copilot для гитхаба, который умеет искать по гитхабу.

Правда он тупой и особо не помогает в сложных сценариях, но хотя бы ищет по документации.

P.S. Россияне, есть ли у вас возможность его использовать без VPN? В РФ и прочих запрещённых странах не доступно. Плюс, видимо, требуется покупка github copilot
👍4💩3🤡3🤬2
Воскресный юморок
https://x.com/UnseenJapanSite/status/1865557220857151961

Тут аспирантура в Японии в одном из университетов похоже что устала от засилия китайцев, поэтому зафорсила бан своей страницы в материковом Китае.

Так что если вы не хотите платить за геоip и хочется отключить доступ к сайту в Китае, то просто напишите "Площадь Тяньаньмэнь" в keywords, и Китай вас сам забанит

P.S. если живёте в Китае, то не удивляётесь что мой канал там забанен
🙉13🤡62👍2😁1💩1
Forwarded from <divelopers>
CSS Wrapped 2024

Команда 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, поэтому можно поизучать исходники.
👍14🔥61💩1🤡1👀1
Forwarded from БлоGнот
GitHub запустил бесплатную версию Copilot — теперь все 150 млн разработчиков на платформе получат доступ к 2000 автодополнений кода и 50 чат-сообщений в месяц при использовании VS Code. Достаточно просто авторизоваться через личный GitHub-аккаунт.

Бесплатная версия предлагает выбор между моделями Claude 3.5 Sonnet от Anthropic и GPT-4o от OpenAI. Можно задавать вопросы по коду, получать объяснения существующего кода, искать баги и вносить правки в несколько файлов одновременно. Также доступны сторонние агенты Copilot и возможность создавать собственные расширения.

Copilot Chat теперь доступен прямо из панели управления GitHub и работает с бесплатной версией. А для студентов, преподавателей и мейнтейнеров опенсорс-проектов сохраняется неограниченный бесплатный доступ к Copilot Pro.

Хороший подарок на праздники, хотя и с ограничениями. И сильный ход в конкуренции с форками VS Code с платными подписками — как Cursor или недавно запустившийся Windsurf от Codeium.

https://github.blog/news-insights/product-news/github-copilot-in-vscode-free/
🔥17👍21🤡1
Почему на клавиатуре цифры идут как 1...90, а не 0...9?

Под праздники хочется иногда понаркоманить и посмотреть почему наш мир так нелогично устроен.
Вот почему цифры имеют именно порядок 1234567890?

Для этого нужно чуток заглянуть в историю. Не секрет, что наша клавиатура напрямую была перенесена с пишущих машинок, поэтому пора посмотреть что происходило у них. А у них, так как это сложное аналоговое устройство, очень сильно экономились клавиши.
И у первых машинок цифровой ряд был ещё проще нашего: 23456789. Как набирать 1 и 0 спросите вы? Очень просто: I(заглавная i) и O(заглавная o). Замена этих цифр на буквы для тогдашнего времени было оправданным. Каждая клавиша усложняла конструкцию и увеличивала стоимость машинки.

Но мир развивается и требования растут. Плюс бухгалтеры начинают использовать букву О и ноль вперемежку, из-за чего возникает необходимость отдельной клавише для нуля. И начинают появляться пишущие машинки с номерным рядом 234567890, так как 023456789 выглядит странно. А вместо единицы можно использовать строчную L. И никаких разночтений не будет.

И уже с прогрессом добавили единицу. А ноль, из-за того что привычки, переносить в начало не стали.

А теперь вопрос на засыпку. Символы, которые вводятся через shift+цифра на пишущих машинках были такими же как и у нас сейчас на кливиатуре. Внимание, вопрос: как вводить восклицательный знак(shift+1)?
Ответ: конечно же точка-бекспейс-апостроф. Бекспейс во времена пишущих машинок перещал каретку на символ влево, а не удалял его. Как вы себе представляете удаление символов в аналоговом мире?)

Картинки как выглядели клавиатуры, кстати, в комментариях
👍20💩1🤡1
UX или как Яндекс заскамил меня на 3к рублей.

Для меня новогодним открытием стало что в Яндекс.Еде кнопочка "оставить у двери" является синонимом "подарить посылку курьеру", потому что поддержка просто моментально встала на сторону курьера и послала меня лесом. Без разбирательств, без всего.
- Нет посылку у соседей?
- Нет
- Ну, извините, не может отследить, так что до свидания.

И даже пофигу на деньги. Меня поражает, что в компании на 10к-15к программистов не нашло ни одного человека который попал в ту же самую историю. Потому что "догфудинг" - это основа разработки. Ты должен потреблять то что разрабатываешь.
Тут же не только своим не пользуются, но и конкурентов совсем не трогают. Давайте опишу как это выглядит в uber.eats: Тебе после выполнения заказа приходит уведомление с фото, которое сделал курьер и телефон курьера. И в случае если фото не совпадает с твоей дверью, то ты отправляешь фото реальной двери в поддержку и тебе возращают деньги.
У Яндекса же вообще 0 информации. Вот вообще нет ничего.
🤡15😢8💩4👍2🤮2