
Пока вы это читаете, кто-то уже делает стартап за выходные с помощью AI, поднимает раунд и продаёт компанию самому себе. Всё это — в эпоху нейрошизы.
Искусство создания компьютерных программ
Пока вы это читаете, кто-то уже делает стартап за выходные с помощью AI, поднимает раунд и продаёт компанию самому себе. Всё это — в эпоху нейрошизы.
Привет, Хабр. Меня зовут Антон, я работаю в группе нагрузочного тестирования ЮMoney и занимаюсь исследованием производительности. В статье расскажу про xk6-browser — что у нас было до него, какие у этого решения преимущества и метрики.
Продолжим серию статей про ПАК «Рудирон» и его программирование. Сегодня мы осветим тему использования библиотек при создании своего программного обеспечения.
Библиотеки являются мощным инструментом при работе с проектами. Особенно когда используются внешние модули, подключенные к Рудирону. Библиотека – файл или набор файлов, к котором используется такой же код по синтаксису, как и в основном тексте программы. Можно подключить библиотеку в свой код и использовать тот функционал, который она нам в этом случае предоставляет, а вариантов там может быть очень много: готовые функции высокого уровня для работы с внешними датчиками, различными модулями, экранами и т.п., для работы с внутренней периферией микроконтроллера (часы, таймеры, АЦП), библиотеки различных математических функций и многое другое, всего и не перечислить. Для опытного программиста это способ сократить время разработки программы, а для начинающего – готовые рабочие примеры работы с внешней периферией.
Преимущество работы с библиотекой заключается в том, что нам необязательно знать, как функционирует устройство на низком уровне и как работает код, который обеспечивает эти функции, мы просто пользуемся готовыми функциями, которые предоставляет разработчик этой библиотеки. Ко многим библиотекам есть описание/документация и примеры использования, на базе которых можно понять, как использовать данную библиотеку.
Шаблоны и примеры проектов ПАК Рудирон размещены в репозитории: https://gitflic.ru/project/akvarius-rudiron/rudiron-projects
Команда Spring АйО перевела статью про новую версию AOT-репозиториев, которые позволяют генерировать реализацию методов запросов на этапе сборки. Это ускоряет запуск приложений, снижает потребление памяти и делает поведение репозиториев более прозрачным для разработчиков.
Однажды моя девушка проходила курс по основам python. Она показала мне небольшую задачку на использование if-else: "по номеру кармана (ячейки) на рулетке определите его цвет".
Казалось бы, все довольно просто — используем условные операторы и не знаем проблем! Но можно ли вывести математическую формулу которая будет работать для всех ячеек? В этой статье я описал поиски такой формулы!
Привет, Хабр (и просто случайные читатели, зашедшие сюда в поисках истины или интересной статейки на пару минут)!
Сегодня я расскажу вам историю о том, как я провёл полгода в тесных объятиях «1С: Кабинет сотрудника» на новой технологии 1С:Элемент — системы, которая обещала сделать кадровый документооборот простым, как бутерброд с колбасой. Но, как выяснилось, бутерброд этот оказался с сюрпризом… то ли огурцом, то ли гвоздём.
Два варианта абстрактного синтаксического дерева (AST) для выражения a * b + c.
Арены, также называемые регионами, повсюду встречаются в современных языках программирования. Есть такая разновидность арен, которая одновременно супер-проста и удивительно эффективна при работе с компиляторами и тому подобными инструментами. Может быть, именно по причине такой простоты эта элементарная техника не попадалась мне во многих курсах по компиляторам — и вообще в теоретическом минимуме по информатике, если уж на то пошло. В этом посте я познакомлю вас с этой идеей, а также с её многочисленными достоинствами.
Многие по-разному понимают, что такое арены или регионы, поэтому здесь я собираюсь называть интересующую меня разновидность этих структур данных «выровненной», а сам процесс — «выравниванием» (flattening). Выровненная арена содержит всего один тип, то есть, в сущности, это обычный массив. В таком массиве можно обойтись индексами, тогда как обычно для работы с массивом требуются указатели. Здесь мы поговорим прежде всего о выравнивании абстрактных синтаксических деревьев (AST), но вообще описанная идея применима с любой структурой данных, отягощённой указателями.
Чтобы изучить выравнивание, мы дважды напишем простейший интерпретатор: сначала как обычно, а затем с применением выравнивания. Логика поста прослеживается по коду из этого репозитория, где можно сравнить две ветки. Здесь важнее всего отметить, что изменения минимальны, но при этом микробенчмарки показывают, что после выравнивания код работает в 2,4 раза быстрее. Благодаря выравниванию не только повышается производительность, но и сам код становится эргономичнее, на чём я также остановлюсь.
С чего можно начать мыслить о создании цифрового интеллекта, даже если он будет очень простым. Несколько идей, которые должны показать, как можно мыслить о ИИ по-другому, какими основными свойствами должна обладать программа и с чего можно начать мыслить в направлении создания цифрового интеллекта.
Рассмотрим небольшую программу на основе некой обобщённой логики, с помощью которой можно изменять логику работы программы динамически, не изменяя её кода. Оригинальный взгляд на программирование.
Годами люди писали программу «Hello world!» на языке Unary, но сегодняшнего дня появился новый односимвольный язык программирования! Односимвольный? Достойная замена Unary? Конечно! Представляю вам Single.
¹ …просто потому, что другого варианта добиться необходимого результата тупо не существует.
² и да, довольно-таки глубоко.
³ нет, серьёзно!
Давайте рассмотрим следующий бизнесовый кейс.
Дано: реально большие данные. Очень много датасетов по много терабайтов каждый, — в сумме объём тянет на петабайты. Лежат в облаке, но это не важно. Важно, что мы эти данные покупаем в «сыром» виде, каким-то образом «готовим», а потом перепродаём конечному потребителю.
Требуется: при подготовке каждого из датасетов разделить его согласно значениям одного или нескольких полей, составляющих его записи, на несколько. И это одна из особенно часто встречающихся в нашем процессе операций.
Довольно-таки сложный, продвинутый ETL у нас. Поясню на типичном примере.
Я,как и многие здесь на Хабре, с удивлением узнал о закрытии разработки браузера Arc. Полез разобраться, и — наткнулся на текстовку, поясняющую ситуацию. Привожу перевод, потому что, пожалуй, здесь и правда есть, что почерпнуть и что обсудить.
О проекте Arc, его будущем и появлении AI‑браузеров — момент ответить на самые масштабные вопросы, которые вы задавали нам в прошлом году.
Привет, Хабр!
Сегодня разбираемся, когда, как и зачем рантайм вызывает обратный вызов operator delete
, откуда берётся sized delete, почему компилятор подсовывает placement-delete, и когда стоит выкинуть всю эту ручную экзотику, заменив коллбэки на std::function_ref
или шаблонные параметры.
Я — fullstack‑разработчик с более чем четырьмя годами коммерческого опыта. Сейчас работаю в BPA Solutions, где проектирую и развиваю микросервисные backend‑решения на Node.js/NestJS, а также отвечаю за frontend‑приложения на React/Vue. Автоматизирую рутину и выстраиваю гибкие, легко масштабируемые архитектуры.
Команда Spring АйО перевела статью эксперта Михаила Поливахи о том, почему правило о единственном assert'е на тест иногда можно и нужно нарушать.
После прочтения этой статьи вы хорошо поймете следующее:
Понять, как JS работает "под капотом" в браузере (см. эту короткую 15-минутную статью), проще, чем понять устройство Node.js. В браузере нет сложных фаз и многослойных механизмов, как в Node.js.
Но почему в Node.js все устроено сложнее? Зачем столько фаз, которые так непросто понять?
Тема выгорания на Хабре не нова, но никогда не потеряет актуальность. Многие разработчики замечают, что со временем их мотивация падает, привычные задачи и митинги команды вызывают раздражение, а после работы не остается желания читать профессиональные статьи, как это было раньше. Обычная усталость? Вряд ли — речь может идти о профессиональном выгорании, — состоянии, которое способно не только повлиять на качество кода, но и серьезно подорвать здоровье. А есть ли волшебные пилюли от этого?
В апреле я съездил на HolyJS. Еще до поездки в расписании конференции моё внимание привлек доклад Виктора Хомякова «Удаление мертвого кода в проекте: практическое руководство». Послушав его, я понял, что могу использовать полученные знания в своем текущем проекте, при этом не затрачивая много усилий. В этой статье я расскажу, что у меня получилось.
С выходом .NET 9 пакет Swashbuckle.AspNetCore выпилили из шаблона Web API. Это означает, что при создании нового приложения ASP.NET Core Web API у нас больше нет привычного зеленого пользовательского интерфейса Swagger для тестирования endpoint-ов. В статье — краткий разбор, почему это произошло, и обзор альтернативы Scalar.
Инквизиторы нового времени
Или размышления на тему LLM и тех, кто их не читает, но осуждает
Вчера вечером, листая ленту, наткнулся на статью. Из тех, что нынче зовутся «LLM-порождениями». Написана складно, по делу. Местами даже с огоньком. И вдруг — комментарий под ней, строгий и важный, как проверяющий с утра:
«Опять этот LLM-мусор…»
«Как же надоели эти LLM-статьи…»
И всё бы ничего. Да не в первый раз я вижу этого комментатора. Он вечно появляется. Он — вечный. Он — инквизитор нейросетей.
Кто вы, судари?