Heroku в 2022-м перестал принимать российские карты. Что выросло на его месте
Push to deploy, который Heroku придумал в 2008-м, до сих пор самый приятный способ выкатить пет-проект:
На tproger.ru рассказали, как за четыре года собрали российскую альтернативу: от MVP за полгода до деплоя через MCP из Codex и Claude, встроенной IDE с агентом, управляемого PostgreSQL с pgVector и прокси к API OpenAI, Anthropic и Telegram, чтобы приложение в московском регионе не упиралось в блокировки. Отдельно — честное сравнение с каждым из пяти конкурентов: где похоже, где хуже, где иначе.
Если у вас лежит проект, который «негде хостить в два клика», это повод посмотреть.
Push to deploy, который Heroku придумал в 2008-м, до сих пор самый приятный способ выкатить пет-проект:
git push, и через минуту сайт живой. Vercel, Render, Railway и Netlify выросли из той же идеи, но у всех одна проблема для нас: оплата долларовой картой и серверы не здесь.На tproger.ru рассказали, как за четыре года собрали российскую альтернативу: от MVP за полгода до деплоя через MCP из Codex и Claude, встроенной IDE с агентом, управляемого PostgreSQL с pgVector и прокси к API OpenAI, Anthropic и Telegram, чтобы приложение в московском регионе не упиралось в блокировки. Отдельно — честное сравнение с каждым из пяти конкурентов: где похоже, где хуже, где иначе.
Если у вас лежит проект, который «негде хостить в два клика», это повод посмотреть.
💊12❤5🎉4👻4👌3🤔2🔥1😨1🤪1🙉1
После уровня сеньора рост перестаёт происходить сам по себе: нужно самому понимать, куда расти, кроме как «в менеджеры», и по каким критериям вообще можно понять, что вы растёте. Пока это непонятно, повышение зависит не от результатов, а от того, вспомнит ли руководитель о вас на очередном пересмотре зарплат. В карьерных материалах разбираемся, что реально стоит за словами «тимлид», «архитектор» и «QA-автоматизация», почему грейд — это не стаж, а измеримые критерии по хардам и смежным навыкам, и чем настоящий карьерный трек отличается от формальности на бумаге. Пригодится тем, кто чувствует потолок и не понимает, что дальше, а также руководителям, которые хотят выстроить систему объективной оценки.
Читать:
1. Тимлид, архитектор или QA: куда расти разработчику, который не хочет в менеджеры
2. Матрица компетенций разработчиков: как устроить грейды, оценки и рост
3. Как построить карьерный трек для разработчиков
Читать:
1. Тимлид, архитектор или QA: куда расти разработчику, который не хочет в менеджеры
2. Матрица компетенций разработчиков: как устроить грейды, оценки и рост
3. Как построить карьерный трек для разработчиков
👍7❤4👨💻3🔥2👏2🎉2👀2🤷♂1🥰1🌚1🦄1
Разработчик собрал agent.md, который приучает ИИ писать чистый код
Если у вас ещё нет готового свода правил для агентов и вам приходится каждый раз им напоминать о каких-то базовых вещах, то пост для вас. Автор этого набора правил собрал всё компактно и по делу, чтобы избавиться от спагетти-кода, плохой документации, излишней вложенности и прочих излюбленных «фишек» ИИ.
Забирайте себе как есть или только нужные пункты:
Если у вас ещё нет готового свода правил для агентов и вам приходится каждый раз им напоминать о каких-то базовых вещах, то пост для вас. Автор этого набора правил собрал всё компактно и по делу, чтобы избавиться от спагетти-кода, плохой документации, излишней вложенности и прочих излюбленных «фишек» ИИ.
Забирайте себе как есть или только нужные пункты:
# FAB's AGENT.MD
- When writing something intended for human consumption, (comment, commit message, reply to prompt) use as few words as possible. Pick every word meticulously to reduce the volume to a strict minimum. Be down to the point. Less is more.
- Avoid superlatives and praise. Stop telling me I am absolutely right. Give me the cold hard truth.
- Avoid magic numbers and strings by extracting recurring or meaningful values into descriptive constants (const) or enums. Keep self-explanatory, one-off values inline to avoid clutter. If a value comes from a spec (e.g. HTTP 200 OK), use a constant regardless.
- Reduce code indentation. Avoid Arrow Anti-Pattern. Leverage early return and continue.
- Keep function names short. Less than 30 characters.
- Use enums instead of booleans for function parameters.
- Let the reader of the code breathe. Add empty lines between logical blocks of code.
- Add a small, to the point, comment to explain *what* the block does and *why*. Use examples when possible. Propose ASCII drawings to explain complete systems.
- Treat member visibility changes as a breaking design shift. Keep all fields and functions private unless external access is strictly required by the design. Prompt the user for explicit approval before changing any access modifier from private to internal or public.
- Program to levels of abstraction. Lower-level mechanics (e.g., raw hardware I/O, sector parsing, direct socket streams) must be encapsulated in a dedicated driver/abstraction layer. Expose clean, high-level APIs to the rest of the application so calling code works with domain concepts, not raw implementation details.
- Don't touch blocks of code unrelated to the feature you implement. e.g. Don't add comments to a block of code if you did not create it or modify it. As much as possible try to minimize the number of changed lines when implementing a feature.
- Strictly adhere to the layered boundary hierarchy: each layer may only communicate with its immediate neighbor directly below it. Never "punch holes" through layers (e.g., controllers or UI components must never directly call database queries, raw hardware drivers, or low-level network clients; always route through the intermediate service/abstraction layer).
- Always use {}, even on a one-line "if" statement.
When you write a commit message, follow these 7 rules:
Rule 1: Separate the subject line from the body with a single blank line.
Rule 2: Limit the subject line to 50 characters (72 is the absolute hard limit).
Rule 3: Capitalize the first letter of the subject line.
Rule 4: Do not end the subject line with a period.
Rule 5: Use the imperative mood in the subject line (e.g., "Fix bug," "Add feature,"
not "Fixed" or "Adds"). Test formula: It must complete the sentence: "If applied,
this commit will [your subject line here]".
Rule 6: Wrap the body text manually at 72 characters to prevent Git formatting issues.
Rule 7: Use the body to explain what and why vs. how. Assume the code explains the how;
the message must explain the context and reasoning.
- If the prompt indicates that a bug is being fixed, don't write the fix right away. First write the test. Observe it failing. Then write the fix. And observe the test passing.
👎19✍8👍5❤3👏3🤣3💊2🎉1🤩1
Писать код и делать софт — разные работы. ИИ сделал разницу заметной
Эссе, которое сегодня разбирают на Hacker News, начинается с простого наблюдения: мы путаем «написать код» с «построить систему». Первое — перевести идею в инструкции для машины, и здесь ИИ уже отличный исполнитель. Второе — решить, какие инструкции вообще должны существовать, как они связаны, что стоит каждое решение и как система переживёт следующие пять лет.
Пример автора: «нужно обрабатывать входящие события и обновлять данные». Синхронно или через очередь? Ровно один раз или хотя бы один? Что делать, если потребитель лежал три часа? Важен ли порядок? Ни один из этих вопросов не про синтаксис, и у одной задачи есть N правильных ответов: для компании с 500 пользователями и тремя инженерами и для компании с 20 млн и двумястами инженерами «одинаковая фича» проектируется по-разному.
Главный тезис: каждая оптимизация тратит сложность где-то ещё. Кеш даёт задержку и забирает инвалидацией, микросервисы дают независимые деплои и приносят распределённые отказы. Работа инженера — решать, где сложности место. Спросить у модели «нужна ли нам очередь» можно, ответ будет; но ответ не равен решённой задаче, потому что контекст живёт в инцидентах трёхлетней давности, бюджете и привычках команды, а не в промпте.
Полный текст с десятью принципами алгоритмического мышления. Согласны, что ИИ делает архитектурное мышление важнее, а не наоборот?
#обсуждение
Эссе, которое сегодня разбирают на Hacker News, начинается с простого наблюдения: мы путаем «написать код» с «построить систему». Первое — перевести идею в инструкции для машины, и здесь ИИ уже отличный исполнитель. Второе — решить, какие инструкции вообще должны существовать, как они связаны, что стоит каждое решение и как система переживёт следующие пять лет.
Пример автора: «нужно обрабатывать входящие события и обновлять данные». Синхронно или через очередь? Ровно один раз или хотя бы один? Что делать, если потребитель лежал три часа? Важен ли порядок? Ни один из этих вопросов не про синтаксис, и у одной задачи есть N правильных ответов: для компании с 500 пользователями и тремя инженерами и для компании с 20 млн и двумястами инженерами «одинаковая фича» проектируется по-разному.
Главный тезис: каждая оптимизация тратит сложность где-то ещё. Кеш даёт задержку и забирает инвалидацией, микросервисы дают независимые деплои и приносят распределённые отказы. Работа инженера — решать, где сложности место. Спросить у модели «нужна ли нам очередь» можно, ответ будет; но ответ не равен решённой задаче, потому что контекст живёт в инцидентах трёхлетней давности, бюджете и привычках команды, а не в промпте.
Полный текст с десятью принципами алгоритмического мышления. Согласны, что ИИ делает архитектурное мышление важнее, а не наоборот?
#обсуждение
✍16💯11❤3👍3👌2⚡1🔥1🤔1🎉1😍1
Игру для Nintendo 64 декомпилировали за 84 дня вместо 596. ИИ-агенты помогли, но заслуга не только их
Крис Льюис восстановил исходники Snowboard Kids из ROM: для всех 2 145 функций написан C-код, который компилируется в байт-в-байт тот же машинный код. Сиквел он разбирал 596 дней, первую часть закончил за 84. Откуда взялась семикратная скорость, автор разбирает честно, без «это всё ИИ».
Агенты в четырёх git worktree параллельно матчили функции, уверенно закрывали библиотечный
Но игра собрана проприетарным SGI IDO 5.3, который перекраивает код в несколько проходов: мелкая правка C меняет распределение регистров. Здесь буксовали и человек, и модели, около 4,8% матчей вытянули эксперты сообщества. Pilotwings 64 люди декомпилировали за 74 дня без агентов.
Автор разбирает вклад каждого фактора.
#ии
Крис Льюис восстановил исходники Snowboard Kids из ROM: для всех 2 145 функций написан C-код, который компилируется в байт-в-байт тот же машинный код. Сиквел он разбирал 596 дней, первую часть закончил за 84. Откуда взялась семикратная скорость, автор разбирает честно, без «это всё ИИ».
Агенты в четырёх git worktree параллельно матчили функции, уверенно закрывали библиотечный
libultra и вели файл DECOMPILATION_LEARNINGS․md с причудами компилятора для следующих запусков. Codex стабильно обгонял Claude, GLM 5.2 автор бросил из-за задержек.Но игра собрана проприетарным SGI IDO 5.3, который перекраивает код в несколько проходов: мелкая правка C меняет распределение регистров. Здесь буксовали и человек, и модели, около 4,8% матчей вытянули эксперты сообщества. Pilotwings 64 люди декомпилировали за 74 дня без агентов.
Автор разбирает вклад каждого фактора.
#ии
❤20👍5🔥2🍌2👏1🤩1
Почему агент «тупит» чаще из-за обвязки, чем из-за модели
В нашем Нейроканале разобрали harness engineering: всё, что вокруг модели в Claude Code или Codex, называется harness, и именно его настраивают, когда результат не устраивает. Два типа контролей: guides до действия (AGENTS․md, skills, скрипты) и sensors после (тесты, линтеры, ревью другим агентом), плюс правило «ошибка повторилась дважды — добавь контроль, а не чини руками».
Полный разбор с примерами, что в какую категорию класть.
В нашем Нейроканале разобрали harness engineering: всё, что вокруг модели в Claude Code или Codex, называется harness, и именно его настраивают, когда результат не устраивает. Два типа контролей: guides до действия (AGENTS․md, skills, скрипты) и sensors после (тесты, линтеры, ревью другим агентом), плюс правило «ошибка повторилась дважды — добавь контроль, а не чини руками».
Полный разбор с примерами, что в какую категорию класть.
👍5❤1🔥1👏1🎉1🤩1💯1
Архитектор решений: кто это, откуда туда приходят и что спрашивают на собеседовании
Сеньор упирается в потолок и слышит «иди в архитекторы». А что там делать? Руководитель направления архитектуры в крупном банке ответил на вопросы новичков по всей дорожной карте: чем архитектор решений отличается от корпоративного, системного и технического; три задачи, за которые он отвечает лично; что случается с бюджетом и сроками, если он забыл одну систему.
Внутри: откуда приходят архитекторы (не только из разработки), какие практические знания ценятся, как проходит собеседование и первый год, из чего состоит рабочий день и какой документ считается результатом работы.
Если думаете, куда расти без управления людьми, это карта.
Сеньор упирается в потолок и слышит «иди в архитекторы». А что там делать? Руководитель направления архитектуры в крупном банке ответил на вопросы новичков по всей дорожной карте: чем архитектор решений отличается от корпоративного, системного и технического; три задачи, за которые он отвечает лично; что случается с бюджетом и сроками, если он забыл одну систему.
Внутри: откуда приходят архитекторы (не только из разработки), какие практические знания ценятся, как проходит собеседование и первый год, из чего состоит рабочий день и какой документ считается результатом работы.
Если думаете, куда расти без управления людьми, это карта.
👏5👍4🔥3🤔3🎉2🤓2🤝2❤1🤩1🙏1🤣1
В Go 1.27 появились дженерик-методы, и часть сообщества считает это концом простоты
Go задумывался как язык, который учат за выходные: минимум синтаксиса, никаких хитростей. В 1.18 в него добавили дженерики, но только для функций и типов — методам параметры типа не полагались. Аргумент был технический: дженерик-методы интерфейсов трудно скомпилировать эффективно, а раз так, то и конкретным методам они ни к чему.
26 августа Марк Фримен из команды Go объяснил в блоге, почему это решение пересмотрели. Методы служат не только для реализации интерфейсов: они ещё и способ сгруппировать функциональность вокруг типа. Раньше преобразование списка приходилось выносить в пакетную функцию и писать вызовы «наизнанку»:
Ограничение осталось: параметры типа разрешены только конкретным методам. У интерфейсов их по-прежнему нет — компилятору пришлось бы порождать инстанциации на все возможные типы-аргументы через границу пакета, потому что при раздельной компиляции он не знает, как чужой пакет распорядится вашим значением.
Через два дня в r/golang собрал 176 голосов пост «Я ненавижу, куда движется Go»: автор жалуется, что видит в коде
#go #обсуждение
Go задумывался как язык, который учат за выходные: минимум синтаксиса, никаких хитростей. В 1.18 в него добавили дженерики, но только для функций и типов — методам параметры типа не полагались. Аргумент был технический: дженерик-методы интерфейсов трудно скомпилировать эффективно, а раз так, то и конкретным методам они ни к чему.
26 августа Марк Фримен из команды Go объяснил в блоге, почему это решение пересмотрели. Методы служат не только для реализации интерфейсов: они ещё и способ сгруппировать функциональность вокруг типа. Раньше преобразование списка приходилось выносить в пакетную функцию и писать вызовы «наизнанку»:
MapList(MapList(NewList(0, 2, 4), add(2)), divideBy(2)). В 1.27 то же пишется слева направо: NewList(0, 2, 4).Map(add(2)).Map(divideBy(2)).Ограничение осталось: параметры типа разрешены только конкретным методам. У интерфейсов их по-прежнему нет — компилятору пришлось бы порождать инстанциации на все возможные типы-аргументы через границу пакета, потому что при раздельной компиляции он не знает, как чужой пакет распорядится вашим значением.
Через два дня в r/golang собрал 176 голосов пост «Я ненавижу, куда движется Go»: автор жалуется, что видит в коде
req.GetSomething.OrDefault(2) и что язык превращается в Java с Kotlin. Голосов «за» там 69%, для r/golang это необычно спорно, и верхние комментарии на стороне дженериков: «итераторы и дженерики улучшают читаемость и намерение кода», «никто не заставляет вас эти возможности использовать».#go #обсуждение
👍18❤5🔥4😁3🎉2👻2✍1👎1😍1
Интерпретатор BASIC, которому не нужна операционная система
Thoreau BASIC запускается как приложение UEFI: компьютер стартует и попадает не в Windows и не в Linux, а сразу в интерпретатор. Файлы он читает и пишет через UEFI Simple File System — то есть работает на голом железе, без ядра под собой. Весь загрузочный
Внутри при этом не игрушка: 24-битный цвет, числа с плавающей точкой, файловые операции. В версии 1.1 автор ускорил интерпретатор так, что множество Мандельброта, которое считалось примерно 230 секунд, стало считаться за 9. Небольшой фрактал укладывается меньше чем в секунду, «Жизнь» Конвея идёт примерно на 25 поколениях в секунду.
Проще всего попробовать в виртуальной машине: файлы и описание в девлоге автора.
Thoreau BASIC запускается как приложение UEFI: компьютер стартует и попадает не в Windows и не в Linux, а сразу в интерпретатор. Файлы он читает и пишет через UEFI Simple File System — то есть работает на голом железе, без ядра под собой. Весь загрузочный
BASIC64.efi весит около 95 КБ.Внутри при этом не игрушка: 24-битный цвет, числа с плавающей точкой, файловые операции. В версии 1.1 автор ускорил интерпретатор так, что множество Мандельброта, которое считалось примерно 230 секунд, стало считаться за 9. Небольшой фрактал укладывается меньше чем в секунду, «Жизнь» Конвея идёт примерно на 25 поколениях в секунду.
Проще всего попробовать в виртуальной машине: файлы и описание в девлоге автора.
🔥17👍4🤩4⚡1❤1👏1😁1🤔1🤝1
Официальная документация Python теперь на русском
Туториал, справочник по языку и описание стандартной библиотеки открываются по адресу docs․python․org/ru/3/ или переключателем языка в шапке любой страницы. Перевод держится на сообществе, так что отставать от оригинала будет ровно настолько, насколько его перестанут обновлять.
В Zen of Python рассказали, где смотреть статус перевода и как в нём поучаствовать.
Туториал, справочник по языку и описание стандартной библиотеки открываются по адресу docs․python․org/ru/3/ или переключателем языка в шапке любой страницы. Перевод держится на сообществе, так что отставать от оригинала будет ровно настолько, насколько его перестанут обновлять.
В Zen of Python рассказали, где смотреть статус перевода и как в нём поучаствовать.
👍33🎉6🔥3🤔2🥰1👏1👌1🤝1
JPEG XL всё-таки доедет до всех браузеров
Firefox объявил intent to ship, Chrome собирается включить формат, в Safari частичная поддержка с 2023-го. Пять лет формат держали за флагом из-за 100 000 строк C++ в декодере, пока Google Research не переписал его на Rust. Картинка узнаваема после первых килобайт, без потерь весит меньше AVIF и WebP, старые JPEG пережимаются без потери качества.
В нашем канале «Веб-страница» разобрали цифры по размерам и где формат уже можно попробовать.
Firefox объявил intent to ship, Chrome собирается включить формат, в Safari частичная поддержка с 2023-го. Пять лет формат держали за флагом из-за 100 000 строк C++ в декодере, пока Google Research не переписал его на Rust. Картинка узнаваема после первых килобайт, без потерь весит меньше AVIF и WebP, старые JPEG пережимаются без потери качества.
В нашем канале «Веб-страница» разобрали цифры по размерам и где формат уже можно попробовать.
🔥19👏4💊4🤯2❤1✍1😁1🤔1🎉1👌1🤝1
Достаточно слуха о баге, чтобы получить рабочий эксплойт
Анил Мадхавапедди сопровождает
До этого он натравил на код своего агента: Claude отказался из-за защит, DeepSeek V4 Pro нашёл несколько связанных дыр и собрал рабочий эксплойт против локального сервера меньше чем за минуту.
Цифры: агент на GPT-4 в работе Фана и соавторов эксплуатировал 87% бенчмарка из 15 уязвимостей, когда получал описание CVE, и 7% без него. Среднее время до эксплуатации, по VulnCheck, было 63 дня в 2018–2019 годах, сейчас — минус семь дней. У marimo от бюллетеня до первой попытки прошло 9 часов, у Langflow — 20.
Вывод Анила: эмбарго защищает уже не тех. Утекает направление поиска — вопрос в рассылке, странный коммит, — и агенту этого хватает. Разбор целиком.
#безопасность
Анил Мадхавапедди сопровождает
cohttp, HTTP-библиотеку для OCaml. Он открыл публичный PR с исправлением обхода каталога — и через десять минут в логах его собственного сервера пошли запросы ровно той формы, которую этот PR чинил.До этого он натравил на код своего агента: Claude отказался из-за защит, DeepSeek V4 Pro нашёл несколько связанных дыр и собрал рабочий эксплойт против локального сервера меньше чем за минуту.
Цифры: агент на GPT-4 в работе Фана и соавторов эксплуатировал 87% бенчмарка из 15 уязвимостей, когда получал описание CVE, и 7% без него. Среднее время до эксплуатации, по VulnCheck, было 63 дня в 2018–2019 годах, сейчас — минус семь дней. У marimo от бюллетеня до первой попытки прошло 9 часов, у Langflow — 20.
Вывод Анила: эмбарго защищает уже не тех. Утекает направление поиска — вопрос в рассылке, странный коммит, — и агенту этого хватает. Разбор целиком.
#безопасность
👏8🤔4❤3👍2🤩2👌2
PayPal перестал запускаться на защищённом Android и решил, что телефон взломан
Пользователи Pixel с GrapheneOS обновили PayPal до 10.10.0 и получили падение на старте:
Механика такая: защита от вскрытия в приложении сама подгружает код динамически, ужесточённая ОС это блокирует, и детектор делает вывод, что его пытаются вскрыть. Приложение оживает, если в настройках GrapheneOS для PayPal выключить Secure app spawning или разрешить динамическую загрузку кода.
Если вы пишете приложение с проверкой на root, это повод прогнать её на телефоне с защитой строже стоковой.
В нашем канале «Представляешь,» разобрали случай подробнее.
#безопасность
Пользователи Pixel с GrapheneOS обновили PayPal до 10.10.0 и получили падение на старте:
RootDetectionSecurityException: Security policy violation: s=root. Root на этих телефонах отсутствует — GrapheneOS его не поддерживает, а Play Services там настоящие. Детектор принял за взлом усиленную защиту самой операционной системы. Тред на Hacker News собрал 226 комментариев за 7 часов.Механика такая: защита от вскрытия в приложении сама подгружает код динамически, ужесточённая ОС это блокирует, и детектор делает вывод, что его пытаются вскрыть. Приложение оживает, если в настройках GrapheneOS для PayPal выключить Secure app spawning или разрешить динамическую загрузку кода.
Если вы пишете приложение с проверкой на root, это повод прогнать её на телефоне с защитой строже стоковой.
В нашем канале «Представляешь,» разобрали случай подробнее.
#безопасность
❤10👏7👍4💯3😁2🤝2🔥1😢1👌1😭1
ИИ-краулеры заняли пятую часть мощности git-серверов ядра Linux
Скрейперы, собирающие данные для ИИ, открывают через веб-интерфейс cgit миллиарды HTML-страниц коммитов, хотя любой репозиторий можно склонировать одной командой. На пяти нодах git․kernel․org рендеринг страниц для ботов постоянно занимает 14–16 из 90 ядер, при этом на живых людей, по щедрой оценке автора, приходится около 2% запросов.
Proof-of-work-защита Anubis отсекает две трети из примерно 6 млн запросов в день, но остальные проходят: боты научились решать её задачи и ходят с миллионов домашних и мобильных адресов — прокси-SDK встраивают в том числе в бытовую электронику, — поэтому по адресам их не отрежешь. Инфраструктура уже отключает дорогие веб-функции для анонимных посетителей.
Константин Рябицев, который сопровождает git․kernel․org, разобрал нагрузку в цифрах. Если держите публичный сайт с «дорогими» страницами, посчитайте их трафик отдельно: в общем числе запросов боты не видны.
Скрейперы, собирающие данные для ИИ, открывают через веб-интерфейс cgit миллиарды HTML-страниц коммитов, хотя любой репозиторий можно склонировать одной командой. На пяти нодах git․kernel․org рендеринг страниц для ботов постоянно занимает 14–16 из 90 ядер, при этом на живых людей, по щедрой оценке автора, приходится около 2% запросов.
Proof-of-work-защита Anubis отсекает две трети из примерно 6 млн запросов в день, но остальные проходят: боты научились решать её задачи и ходят с миллионов домашних и мобильных адресов — прокси-SDK встраивают в том числе в бытовую электронику, — поэтому по адресам их не отрежешь. Инфраструктура уже отключает дорогие веб-функции для анонимных посетителей.
Константин Рябицев, который сопровождает git․kernel․org, разобрал нагрузку в цифрах. Если держите публичный сайт с «дорогими» страницами, посчитайте их трафик отдельно: в общем числе запросов боты не видны.
👍9🔥5😱4😢2👌2👏1🤯1🫡1🙊1
Почему mold линкует Firefox за 0,89 секунды, а lld — за 4,44
Автор линкера mold Руи Уэяма опубликовал статью о его устройстве. Секрет в том, что весь конвейер держит занятыми все 32 ядра одновременно: разбор входных файлов, разрешение символов через compare-and-swap, слияние строк, запись результата. На больших проектах mold быстрее lld в 2,4–16 раз и до 112 раз быстрее GNU ld. Цена — свои эвристики: из 19 000 пакетов Gentoo не собрались два.
В «Сохранёнках программиста» разобрали статью подробнее.
Автор линкера mold Руи Уэяма опубликовал статью о его устройстве. Секрет в том, что весь конвейер держит занятыми все 32 ядра одновременно: разбор входных файлов, разрешение символов через compare-and-swap, слияние строк, запись результата. На больших проектах mold быстрее lld в 2,4–16 раз и до 112 раз быстрее GNU ld. Цена — свои эвристики: из 19 000 пакетов Gentoo не собрались два.
В «Сохранёнках программиста» разобрали статью подробнее.
Telegram
Сохранёнки программиста
Отладочная сборка Firefox линкуется у lld за 4,44 секунды, у mold — за 0,89. Разница видна на графике: mold почти всю линковку держит занятыми 32 ядра, а lld преимущественно работает на одном ядре, изредка выходя в многоядерные всплески.
Руи Уэяма, автор…
Руи Уэяма, автор…
🤔9🔥8👍1👏1🎉1🌚1🌭1💯1🍓1👨💻1
Есть один разработчик, который искренне верит, что отпуск случится сразу после релиза. Проблема в том, что релизы у него не заканчиваются никогда. 😅
Сам он с места не сдвинется, поэтому нужна ваша помощь. В новой мини-игре вам предстоит разгрести бардак, найти билет, собрать чемодан и приодеть программиста для отпуска. Заодно собирайте промо-коды от партнёров!
Играть
Сам он с места не сдвинется, поэтому нужна ваша помощь. В новой мини-игре вам предстоит разгрести бардак, найти билет, собрать чемодан и приодеть программиста для отпуска. Заодно собирайте промо-коды от партнёров!
Играть
😢7🔥3❤2👍2🎉1🤩1👌1💊1
47% кода профессиональные разработчики отдают агентам целиком
В мае–июле JetBrains спросила больше 15 000 профессиональных разработчиков: какую долю кода за последний месяц вы сгенерировали агентами полностью, какую написали с подсказками ИИ, а какую руками.
В среднем вышло 47% полностью агентского кода против 27% ручного. Больше половины пишут руками меньше 20% кода, каждый пятый не пишет ни строчки без ИИ. При этом группа, у которой агенты дают больше 80%, остаётся меньшинством в 22%.
По языкам разрыв заметный: у Go, JavaScript и TypeScript в среднем 54–55% агентского кода, у C и C++ — 33%, и именно они держат самую высокую долю ручного письма, 38%. Сеньоры отдают агентам больше джунов: у четверти сеньоров агентского кода за 80%.
По регионам ещё резче. В Китае, Японии и Южной Корее тех, у кого агенты пишут больше 80% кода, 32–35% против примерно 16% в Европе и Великобритании.
Полные разрезы — в отчёте.
#ии
В мае–июле JetBrains спросила больше 15 000 профессиональных разработчиков: какую долю кода за последний месяц вы сгенерировали агентами полностью, какую написали с подсказками ИИ, а какую руками.
В среднем вышло 47% полностью агентского кода против 27% ручного. Больше половины пишут руками меньше 20% кода, каждый пятый не пишет ни строчки без ИИ. При этом группа, у которой агенты дают больше 80%, остаётся меньшинством в 22%.
По языкам разрыв заметный: у Go, JavaScript и TypeScript в среднем 54–55% агентского кода, у C и C++ — 33%, и именно они держат самую высокую долю ручного письма, 38%. Сеньоры отдают агентам больше джунов: у четверти сеньоров агентского кода за 80%.
По регионам ещё резче. В Китае, Японии и Южной Корее тех, у кого агенты пишут больше 80% кода, 32–35% против примерно 16% в Европе и Великобритании.
Полные разрезы — в отчёте.
#ии
❤4👌4👍2🔥2👏1🎉1🤩1🦄1
Бинарник на musl оказался на 26% медленнее glibc даже с хорошим аллокатором
musl — лёгкая libc, на которой собраны Alpine-образы Docker и самодостаточные статические Linux-бинарники «один файл — и работает». Джонатан Эллис, сооснователь DataStax, много лет возглавлявший проект Apache Cassandra, замерил цену этого удобства на рабочей нагрузке своего Rust-инструмента.
Со штатным аллокатором musl проигрывает разгромно, причём не только под высокой конкурентностью, где его чаще всего ругают: замеры шли на обычных четырёхъядерных машинах EC2. Замена аллокатора на mimalloc убрала большую часть разрыва, но 26% остались — профилирование указало на базовые процедуры работы с памятью внутри самой libc.
Эллис оставил musl только маленьким утилитам, где важен размер файла, а из инструмента, чувствительного к скорости, убрал готовую musl-сборку. Если ваш сервис живёт в Alpine и упирается в процессор — сравните обе libc с одинаковым аллокатором на своей нагрузке.
musl — лёгкая libc, на которой собраны Alpine-образы Docker и самодостаточные статические Linux-бинарники «один файл — и работает». Джонатан Эллис, сооснователь DataStax, много лет возглавлявший проект Apache Cassandra, замерил цену этого удобства на рабочей нагрузке своего Rust-инструмента.
Со штатным аллокатором musl проигрывает разгромно, причём не только под высокой конкурентностью, где его чаще всего ругают: замеры шли на обычных четырёхъядерных машинах EC2. Замена аллокатора на mimalloc убрала большую часть разрыва, но 26% остались — профилирование указало на базовые процедуры работы с памятью внутри самой libc.
Эллис оставил musl только маленьким утилитам, где важен размер файла, а из инструмента, чувствительного к скорости, убрал готовую musl-сборку. Если ваш сервис живёт в Alpine и упирается в процессор — сравните обе libc с одинаковым аллокатором на своей нагрузке.
👀4🔥3👏2❤1✍1👍1🕊1💯1
Tailscale выложила netcat, которому не нужны ни аккаунт, ни root
Перекинуть поток данных или пробросить порт между двумя машинами за NAT обычно означает поднимать VPN или искать сторону с белым адресом. Tailscale открыла исходники Tailcat — утилиты, которая делает это как netcat, но с уже зашифрованным каналом.
Одна машина запускает сервер и печатает короткий токен, вторая подключается по этому токену, трафик идёт через WireGuard. Аккаунт Tailscale не нужен: утилита берёт сетевой слой продукта без его control plane. Root тоже не нужен — всё живёт в пространстве пользователя, без tun-интерфейса, правки маршрутов и настройки DNS.
Кроме передачи потока умеет пробрасывать локальный порт, поднимать встроенный SSH-сервер на Linux и macOS, когда системного sshd на той стороне нет, и работать прокси по SOCKS5.
В нашем канале «Инструменты программиста» разобрали подробнее, включая оговорку авторов про несовместимость будущих версий.
Перекинуть поток данных или пробросить порт между двумя машинами за NAT обычно означает поднимать VPN или искать сторону с белым адресом. Tailscale открыла исходники Tailcat — утилиты, которая делает это как netcat, но с уже зашифрованным каналом.
Одна машина запускает сервер и печатает короткий токен, вторая подключается по этому токену, трафик идёт через WireGuard. Аккаунт Tailscale не нужен: утилита берёт сетевой слой продукта без его control plane. Root тоже не нужен — всё живёт в пространстве пользователя, без tun-интерфейса, правки маршрутов и настройки DNS.
Кроме передачи потока умеет пробрасывать локальный порт, поднимать встроенный SSH-сервер на Linux и macOS, когда системного sshd на той стороне нет, и работать прокси по SOCKS5.
В нашем канале «Инструменты программиста» разобрали подробнее, включая оговорку авторов про несовместимость будущих версий.
👍18🔥9❤3👏2🎉1🤩1👌1😭1
Сегодня у нас в Нейроканале вышел свежий обзор новых опенсорс-моделей. Заходите, там много чего интересного публикуем для тех, кто кодит с нейронками. Помогаем понять что лучше сейчас использовать в работе, какие подписки брать, автор отслеживает рынок каждый день.
Telegram
Нейроканал
Топ трендов HuggingFace за неделю — что приехало в опенсорс
TL;DR
⡡⡑⠙⢠⢊⠔ ⡆⠙⠔⢡ ⡒⠃⣈⡒⠇⠚⡁ ⠴ ⢘⡨⠇⡁⡅⠖⠃⠑⠡⠰⠘⡆⢨⢈⡤ ⢊⡆⣠⢤⡂⠖⣠⠲⠌⠦⣐⡨⢌⢤ ⠓⢒⢃⠘⡁⣁ ⡡⠌⠙⢅⡁⠌⠍⢁⣈⡑⣈ ⢅⡤⣈⠢⢨ ⠎⡉⣁ ⠜⠒⢨⡑⠎⢄ ⠆⡄⠉⡊⢘⠜⢠⢰⠇⠸⠔⠖⠕⠋⠎⠬⢊⡊⡐ ⢅⢃⡉ ⡉⢒⠲⠱⢰⣁⠰ ⢈⡄ ⡘⠪⡤⢐⠍⠰⠒⢅ ⣐⠡⢘⠓⠬⡡ ⡠⠆⠩⢘⡨⡨⠒⠋ ⠇⣁ ⠍⢡⣀⢅⠬⡊ ⠣⡔⡆⠰⠜⠚ ⢌⠅⡂⢊ ⠢⠲⡁⠢⡐⠙ ⡌⡂⢃ ⠎⢰ ⢔⡂⡨⢁⠆⡆⡃⢊…
TL;DR
⡡⡑⠙⢠⢊⠔ ⡆⠙⠔⢡ ⡒⠃⣈⡒⠇⠚⡁ ⠴ ⢘⡨⠇⡁⡅⠖⠃⠑⠡⠰⠘⡆⢨⢈⡤ ⢊⡆⣠⢤⡂⠖⣠⠲⠌⠦⣐⡨⢌⢤ ⠓⢒⢃⠘⡁⣁ ⡡⠌⠙⢅⡁⠌⠍⢁⣈⡑⣈ ⢅⡤⣈⠢⢨ ⠎⡉⣁ ⠜⠒⢨⡑⠎⢄ ⠆⡄⠉⡊⢘⠜⢠⢰⠇⠸⠔⠖⠕⠋⠎⠬⢊⡊⡐ ⢅⢃⡉ ⡉⢒⠲⠱⢰⣁⠰ ⢈⡄ ⡘⠪⡤⢐⠍⠰⠒⢅ ⣐⠡⢘⠓⠬⡡ ⡠⠆⠩⢘⡨⡨⠒⠋ ⠇⣁ ⠍⢡⣀⢅⠬⡊ ⠣⡔⡆⠰⠜⠚ ⢌⠅⡂⢊ ⠢⠲⡁⠢⡐⠙ ⡌⡂⢃ ⠎⢰ ⢔⡂⡨⢁⠆⡆⡃⢊…
👍8❤4🔥2👏2💅2🤔1😢1🕊1😍1👨💻1🆒1
Наберите
Omarchy — готовая сборка Arch Linux от Давида Хайнемайера Ханссона, автора Ruby on Rails, одна из самых заметных за последний год. Исследователь, пишущий под ником 0xcc, разобрал настройки по умолчанию и показал, что любой процесс в пользовательской сессии мог получить root: без пароля, без
Механизм короткий. Установщик добавлял пользователя по умолчанию в группу
Дополнительные группы наследуются дочерними процессами, поэтому право доставалось всей сессии целиком: браузеру, редактору, npm-скриптам, агентам в терминале. Взлом любого обычного приложения сразу означал взлом машины. Затронуты версии до 4.0.1, включая ветку 3.x; членство в группе убрали из конфигурации по умолчанию 24 августа.
Про саму группу
Поэтому проверка полезна не только владельцам Omarchy. Наберите
#безопасность
id: если там есть группа docker, у всего, что вы запускаете, уже есть rootOmarchy — готовая сборка Arch Linux от Давида Хайнемайера Ханссона, автора Ruby on Rails, одна из самых заметных за последний год. Исследователь, пишущий под ником 0xcc, разобрал настройки по умолчанию и показал, что любой процесс в пользовательской сессии мог получить root: без пароля, без
sudo и без единого запроса на повышение прав.Механизм короткий. Установщик добавлял пользователя по умолчанию в группу
docker. Демон Docker в Arch работает от root и слушает сокет /var/run/docker.sock. Кто дотягивается до сокета, тот просит демона поднять контейнер от root, примонтировать в него любой кусок файловой системы хоста и делать с файлами что угодно. Одной команды хватает, чтобы прочитать то, что читать нельзя:docker run --rm -v /:/hostroot alpine cat /hostroot/etc/shadowДополнительные группы наследуются дочерними процессами, поэтому право доставалось всей сессии целиком: браузеру, редактору, npm-скриптам, агентам в терминале. Взлом любого обычного приложения сразу означал взлом машины. Затронуты версии до 4.0.1, включая ветку 3.x; членство в группе убрали из конфигурации по умолчанию 24 августа.
Про саму группу
docker документация Docker предупреждает прямо: членство в ней равносильно правам root. Проблема здесь в том, что решение приняли за пользователя и включили по умолчанию, а в документации сборки описали словами «нужные изменения групп, чтобы вы запускали Docker не от root» — читается ровно наоборот.Поэтому проверка полезна не только владельцам Omarchy. Наберите
id на рабочей машине и посмотрите, есть ли в списке docker.#безопасность
❤7👏5🌚4👍3😱1🎉1🐳1