Все потоки
Поиск
Написать публикацию
Обновить
1004.8

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Мандельброта с анимации gif и сделанные fasm, Delphi, ffmpeg

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.3K
У нас есть много программ для рисования множество Мандельброта. Но сделать гиф с анимации — такового нет. Значит сделаем! )



Это гиф!
https://commons.wikimedia.org/wiki/File:Mandelbrot_Set_Color_Cycling_Animation_600px_3.gif
600 × 600 пкс, размер файла: 58,54 МБ, MIME-тип: image/gif, закольцованный
Читать дальше →

Как одной математической формулой определить цвет ячейки на рулетке?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.5K

Однажды моя девушка проходила курс по основам python. Она показала мне небольшую задачку на использование if-else: "по номеру кармана (ячейки) на рулетке определите его цвет".

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

Читать далее

1С: Кабинет сотрудника: Как мы чинили то, что называлось «готовым продуктом»

Время на прочтение7 мин
Количество просмотров7.3K

Привет, Хабр (и просто случайные читатели, зашедшие сюда в поисках истины или интересной статейки на пару минут)!

Сегодня я расскажу вам историю о том, как я провёл полгода в тесных объятиях «1С: Кабинет сотрудника» на новой технологии 1С:Элемент — системы, которая обещала сделать кадровый документооборот простым, как бутерброд с колбасой. Но, как выяснилось, бутерброд этот оказался с сюрпризом… то ли огурцом, то ли гвоздём.

Читать далее

Выравнивание AST (и других структур данных, используемых при работе с компилятором)

Время на прочтение15 мин
Количество просмотров3.3K

Два варианта абстрактного синтаксического дерева (AST) для выражения a * b + c.

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

Многие по-разному понимают, что такое арены или регионы, поэтому здесь я собираюсь называть интересующую меня разновидность этих структур данных «выровненной», а сам процесс — «выравниванием» (flattening). Выровненная арена содержит всего один тип, то есть, в сущности, это обычный массив. В таком массиве можно обойтись индексами, тогда как обычно для работы с массивом требуются указатели. Здесь мы поговорим прежде всего о выравнивании абстрактных синтаксических деревьев (AST), но вообще описанная идея применима с любой структурой данных, отягощённой указателями.

Чтобы изучить выравнивание, мы дважды напишем простейший интерпретатор: сначала как обычно, а затем с применением выравнивания. Логика поста прослеживается по коду из этого репозитория, где можно сравнить две ветки. Здесь важнее всего отметить, что изменения минимальны, но при этом микробенчмарки показывают, что после выравнивания код работает в 2,4 раза быстрее. Благодаря выравниванию не только повышается производительность, но и сам код становится эргономичнее, на чём я также остановлюсь.

Читать далее

Один за всех, и этого достаточно: мой эзотерический язык программирования Single

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2K

Годами люди писали программу «Hello world!» на языке Unary, но сегодняшнего дня появился новый односимвольный язык программирования! Односимвольный? Достойная замена Unary? Конечно! Представляю вам Single.

Читать далее

Иногда приходится¹ копаться² в кишках³ Apache Spark

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.1K

¹ …просто потому, что другого варианта добиться необходимого результата тупо не существует.
² и да, довольно-таки глубоко.
³ нет, серьёзно!



Давайте рассмотрим следующий бизнесовый кейс.


Дано: реально большие данные. Очень много датасетов по много терабайтов каждый, — в сумме объём тянет на петабайты. Лежат в облаке, но это не важно. Важно, что мы эти данные покупаем в «сыром» виде, каким-то образом «готовим», а потом перепродаём конечному потребителю.


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


Довольно-таки сложный, продвинутый ETL у нас. Поясню на типичном примере.

Читать дальше →

Письмо участникам Arc, 2025 год

Время на прочтение10 мин
Количество просмотров4.6K

Я,как и многие здесь на Хабре, с удивлением узнал о закрытии разработки браузера Arc. Полез разобраться, и — наткнулся на текстовку, поясняющую ситуацию. Привожу перевод, потому что, пожалуй, здесь и правда есть, что почерпнуть и что обсудить.

О проекте Arc, его будущем и появлении AI‑браузеров — момент ответить на самые масштабные вопросы, которые вы задавали нам в прошлом году.

Читать далее

Обратный вызов operator delete: когда, как и зачем он вызывается

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.5K

Привет, Хабр!

Сегодня разбираемся, когда, как и зачем рантайм вызывает обратный вызов operator delete, откуда берётся sized delete, почему компилятор подсовывает placement-delete, и когда стоит выкинуть всю эту ручную экзотику, заменив коллбэки на std::function_ref или шаблонные параметры.

Читать далее

ИИ vs Программист: кто кого? Начало эры «одиночных» стартапов

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.8K

Я — fullstack‑разработчик с более чем четырьмя годами коммерческого опыта. Сейчас работаю в BPA Solutions, где проектирую и развиваю микросервисные backend‑решения на Node.js/NestJS, а также отвечаю за frontend‑приложения на React/Vue. Автоматизирую рутину и выстраиваю гибкие, легко масштабируемые архитектуры.

Заменит ли ИИ программистов?

Один assert на тест. А может быть, нет?

Время на прочтение4 мин
Количество просмотров2.9K

Команда Spring АйО перевела статью эксперта Михаила Поливахи о том, почему правило о единственном assert'е на тест иногда можно и нужно нарушать.

Читать далее

Как работает Node.js

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров17K



После прочтения этой статьи вы хорошо поймете следующее:


  • как работает цикл событий (event loop) в Node.js, включая все его фазы
  • как Node.js выполняет JavaScript в одном потоке (single thread)
  • как Node.js использует библиотеку libuv и внутренние API для обработки асинхронных операций
  • почему знание работы цикла событий так важно для написания эффективного серверного кода

Понять, как JS работает "под капотом" в браузере (см. эту короткую 15-минутную статью), проще, чем понять устройство Node.js. В браузере нет сложных фаз и многослойных механизмов, как в Node.js.


Но почему в Node.js все устроено сложнее? Зачем столько фаз, которые так непросто понять?

Читать дальше →

Как распознать выгорание у разработчика? Советы по восстановлению и мнение HR-эксперта

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров4.5K

Тема выгорания на Хабре не нова, но никогда не потеряет актуальность. Многие разработчики замечают, что со временем их мотивация падает, привычные задачи и митинги команды вызывают раздражение, а после работы не остается желания читать профессиональные статьи, как это было раньше. Обычная усталость? Вряд ли — речь может идти о профессиональном выгорании, — состоянии, которое способно не только повлиять на качество кода, но и серьезно подорвать здоровье. А есть ли волшебные пилюли от этого?

Читать далее

Как мы мертвый код убивали

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3K

В апреле я съездил на HolyJS. Еще до поездки в расписании конференции моё внимание привлек доклад Виктора Хомякова «Удаление мертвого кода в проекте: практическое руководство». Послушав его, я понял, что могу использовать полученные знания в своем текущем проекте, при этом не затрачивая много усилий. В этой статье я расскажу, что у меня получилось.

Читать далее

Ближайшие события

Scalar вместо Swagger UI. Надо ли оно нам?

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров8.2K

С выходом .NET 9 пакет Swashbuckle.AspNetCore выпилили из шаблона Web API. Это означает, что при создании нового приложения ASP.NET Core Web API у нас больше нет привычного зеленого пользовательского интерфейса Swagger для тестирования endpoint-ов. В статье — краткий разбор, почему это произошло, и обзор альтернативы Scalar.

Хочу разобраться

Вы не любите LLM — вы в просто не умеете их готовить

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров3.6K


Инквизиторы нового времени

Или размышления на тему LLM и тех, кто их не читает, но осуждает

Вчера вечером, листая ленту, наткнулся на статью. Из тех, что нынче зовутся «LLM-порождениями». Написана складно, по делу. Местами даже с огоньком. И вдруг — комментарий под ней, строгий и важный, как проверяющий с утра:

«Опять этот LLM-мусор…»

«Как же надоели эти LLM-статьи…»

И всё бы ничего. Да не в первый раз я вижу этого комментатора. Он вечно появляется. Он — вечный. Он — инквизитор нейросетей.

Кто вы, судари?

Читать далее

Как я открыл WebSocket для Сомников из Чёрного Зеркала, а они начали водить хороводы

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров10K

С приходом популярности генеративных нейросетей, другие виды искусственного интеллекта тоже получили своё место под солнцем. Однако, ещё до этого уже существовали проекты, где искусственный интеллект играет в различные игры, получает очки за достижение целей и обучается на основе своих результатов. При этом, у каждого игрового ИИ есть свой массив доступных ему действий, который может быть постоянным или изменяемым согласно правилам. Я решил собрать небольшой проект, описать механизм взаимодействия ИИ с игровым пространством, а уже потом наполнить игру правилами и смыслом.

Читать далее

Метаклассы Python. Подробное руководство

Уровень сложностиСложный
Время на прочтение24 мин
Количество просмотров8.1K

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

Данная статья скорее нацелена на начинающих авторов библиотек или любопытных читателей, которые просто хотят узнать что-то новое о Python.

Читать далее

Не пытайтесь угадать мой язык

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров16K

Если вы всё ещё используете IP-геолокацию для выбора отображаемого языка, то хватит заниматься ерундой. Это ошибочное допущение, замаскированное под фичу.

IP сообщает, откуда пришёл запрос, и на этом всё. Он не сообщает, какой язык нужен пользователю, на каком языке он говорит и какой язык понимает. Подобная система постоянно ломается — VPN, путешествия, эмиграция, страны с несколькими официальными языками. Это не умное, а раздражающее решение.

Читать далее

Первый год free-threaded Python

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.7K

На прошлой неделе разработчики CPython выпустили CPython 3.14.0b1. А на этой неделе в Питтсбурге, штат Пенсильвания, начинается конференция PyCon 2025. Оба эти события знаменуют собой важную веху в делах, связанных с разработкой, выпуском и доведением до стабильного состояния релизов free-threaded Python (Python с поддержкой свободной многопоточности — с отключённым механизмом GIL).

Перед вами рассказ о первом годе развития этого проекта, и о той роли, которую мы, сотрудники Quansight, в нём сыграли. А именно, речь идёт о том, что мы обеспечили возможность экспериментального использования сборок Python с поддержкой свободной многопоточности. Применялись они в реальных продакшн-системах, поддерживая процессы, которые основаны на сложных наборах зависимостей.

Читать далее

Как не слить бюджет в CPA-сетях? Интеграция с ADMITAD через Postback — формируем отчет для сверки

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров582

Всем привет! Я Роман, тимлид e-commerce агентства KISLOROD. 

Любой бизнес в сети зависит от привлечения трафика и один из важнейших каналов — это CPA-сети. Однако при работе с любыми каналами важно правильно оценивать качество посетителей, поскольку иначе весь бюджет просто будет слит впустую.

На одном из проектов мы внедрили интеграцию с Admitad, с помощью которой можно получить отчет для сверки. Рассказываем о том, как это работает и реализовано.

Читать далее

Вклад авторов