Строим стены в SCAD++ в турбо режиме

В этой статье мы немного оживим SCAD++ и немного сэкономим времени на чай :-) Конструктора, проектировщики милости просим.

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

В этой статье мы немного оживим SCAD++ и немного сэкономим времени на чай :-) Конструктора, проектировщики милости просим.

Учебный графический исполнитель (ГРИС) — это компьютерная модель, имитирующая работу чертёжного узла в режимах непосредственного и программного управления. ГРИС используют при изучении основ алгоритмизации для демонстрации принципов структурного программирования. Существует множество различных реализаций ГРИС, которые отличаются целевыми компьютерными платформами, наборами команд и возможностями исполнителей. Ярким и запоминающимся примером может служить среда ГРИС «Кенгурёнок», созданная в начале 1990-х годов авторским коллективом из Свердловска.

Я собрал будильник, который каждое утро печатает мне чек. Рядом с кроватью стоит матричный Star SP700, а за ним — старый Mac mini, сервер, несколько небольших сервисов и приложение для установки времени подъёма.
В назначенный момент принтер с характерным треском выдаёт первый чек и заодно будит меня. Немного позже появляется второй — уже с финальными данными о сне и восстановлении с фитнес-браслета.
Всё это началось с попытки перестать брать телефон сразу после пробуждения. Расскажу, как простая идея превратилась в маленькую домашнюю систему и что пришлось решить, чтобы она действительно работала каждое утро.

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

Aquilum — быстрый local-first заметочник на Rust для Windows с потреблением около 27 МБ ОЗУ и установщиком размером 11 МБ. В нём есть граф знаний, обратные ссылки, live preview Markdown, несколько баз знаний, расширенные таблицы, книги и читалка, Dataview-подобный анализ данных, быстрый поиск, история изменений и интеграция с MCP-агентами. Подробный обзор функций и архитектуры — в статье.

ИИ хорошо справляется с такими задачами как добавить колонку в печатную форму ERP или параметр в отчет. И возникает резонный вопрос «а зачем покупать чужой софт, если я могу навайбкодить свой?». Если и вы уже вкусили сладкий плод вайбкодинга, прочитайте мой разбор этой идеи с некоторыми граблями из 15 лет опыта.

Ещё в начале 2025 года я начал замечать, как люди при использовании ИИ переводят мозг в пассивный режим.1 Они просят ИИ выполнить какую-то задачу (обобщить текст, написать код и т.д.), принимая результат за чистую монету.2 В то время такой подход работал очень плохо, и результаты зачастую оказывались несуразными.
Но искусственный интеллект развивался, и я стал замечать такое поведение всё чаще. Иногда люди просто просят ИИ написать им код, который безоговорочно принимают как рабочий.3 В других случаях в цикле присутствует человек, который контролирует результат и в случае проблем с кодом просит ИИ устранить проблему. Никлас Грюн даже придумал таким людям название — кожаный передатчик (meat proxy).4

«Срок гарантии — 18 месяцев». Красивый ответ. А если в договоре написано 12? Или число 18 стоит в разделе о хранении, а модель просто зацепилась за него?
В чате такие ошибки прячутся за гладкой фразой. Я хотел иной маршрут: задать вопрос к PDF, получить ответ и одним нажатием открыть физическую страницу исходного файла, на которую ссылается модель. Так появился PDF Desk — небольшое приложение на Python, Streamlit, PageIndex и PDFium. Один активный документ. Никакой базы пользователей. Индекс и исходный PDF остаются на компьютере; при использовании внешней модели текст документа всё равно уходит её провайдеру.
Дальше — где проходит граница между SDK и приложением. Почему голый /models не годится для проверки подключения. Из чего собран идентификатор индекса. И почему ссылка на существующую страницу ещё не значит, что ответ доказан. В конце живой прогон DeepSeek, включая браузер, и сценарии, для которых этого прогона мало.

Как каждая из них организует код, где они пересекаются и что учитывать при выборе.
Большинство .NET-разработчиков знакомятся с этими тремя архитектурами в одном и том же порядке: N-tier — в первых проектах, Clean Architecture — когда её приносит команда или шаблон, и Vertical Slice — когда о ней упоминают на код-ревью или в докладе на конференции. Каждую из них подают как улучшение предыдущей. На практике они отвечают на несколько разные вопросы, и правильный выбор зависит скорее от проекта, чем от того, какая из них новее.

Вы пишете приложение на Flutter. Модели уже описаны, бизнес-правила продуманы. Осталась небольшая деталь: сервер, который будет принимать запросы и работать с данными.
И здесь обычно начинается второй сезон сериала. Другой язык, другой менеджер пакетов, ещё один набор моделей. Поле переименовали на клиенте, забыли на сервере — поздравляем, у нас распределённая опечатка.
Dart позволяет написать обе стороны приложения. А Fletch предлагает довольно понятный способ сделать серверную: знакомые по Express маршруты, middleware, обработчики запросов и немного инфраструктуры, которую не хочется каждый раз собирать вручную.
Разберёмся, как это выглядит в коде, откуда берётся скорость и какие мелочи стоит заметить до первого деплоя.

Привет, Хабр! Я бы хотел рассказать о том, как я создал программу для составления расписаний для учебных заведений - СуперЗавуч.
СуперЗавуч - современная программа для составления расписаний уроков для школ, лицеев и колледжей. Программа позволяет создать расписание за несколько минут и имеет много параметров для конфигураций.

За последнее время я прочитал множество репозиториев, где в Pyhton пользуются типизацией и почти везде синтаксис не новее 3.11: Optional, TypeVar на уровне модуля, Generic[T], кавычки вокруг опережающих ссылок. При этом у Python 3.10 поддержка закончилась, и разработчики языка дали нам новых удобных инструментов и чтобы ими пользоваться не всегда нужно обновляться до последней версии. В этой статье расскажу, какие основные фишки появились за последние несколько лет и как ими пользоваться даже в проектах на старых версиях.

Создатель языка Elixir Жозе Валим (José Valim) размышляет об изменении языков программирования: изменился разработчик — должны измениться и языки.
Привет, Хабр! На связи Хекслет. Весь материальный мир — от дверных ручек до архитектуры заводов — построен под пропорции и ограничения человека. И гораздо выгоднее делать роботов антропоморфными: пусть у них будут руки, ноги и пальцы — тогда они смогут пользоваться нашей инфраструктурой.
То же и софтом, синтаксисом и IDE: эта инфраструктура оптимизирована под человеческое восприятие. Должны ли мы сохранять эту эргономичность для ИИ-агентов?
Валим считает, что нужно адаптировать языки программирования под агентов, а не наоборот. В отличие от заводов и автомобилей, перестроить цифровую среду под новые сущности можно быстро и дёшево. Вместо того, чтобы заставлять ИИ-агентов пользоваться «человеческими дверными ручками» вроде синтаксического сахара или протоколов LSP, следует создать для них принципиально иную среду обитания. Ниже — перевод его размышлений о том, как должны измениться инструменты и языки программирования в агентную эпоху.

Иногда от модели нужен не красивый ответ, а быстрое решение. Пропустить запрос или заблокировать, выбрать маршрут, оценить результат, отфильтровать документы для RAG.
Для этого появился Spring AI TypeSafe. Проект интегрирует Jev API, который отвечает на типизированные вопросы числовыми значениями и не генерирует текст.
Команда Rust рада сообщить о новой версии языка — 1.99.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.99.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску 1.99.0.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках!

Представьте: два часа ночи, вы деплоите фикс — а сервис не поднимается: Address already in use. Гуглите, находите PID, делаете kill -9. Помогает. Но утром та же ошибка на том же порту.
Всё потому, что «порт занят» — это на самом деле два разных диагноза с разными решениями, а на форумах их валят в кучу. В одном случае порт держит живой процесс, и kill действительно помогает. В другом процесс давно мёртв, а порт висит в TIME_WAIT — и тут kill бесполезен, лечится одной строкой в коде.
Разбираем оба случая: быстрый фикс под Linux, macOS, Windows и Docker — и что на самом деле происходит с портом, когда процесса уже нет.

Первое издание Unix Programmer's Manual датировано 3 ноября 1971 года, и на странице про системный вызов time в нем написано, что система хранит время в шестидесятых долях секунды, прошедших с полуночи 1 января 1971 года. Я наткнулась на эту строчку, когда пыталась ответить себе на вопрос, который, по-моему, хоть раз возникал у каждого, кто видел в логах загадочное 1 января 1970 года: почему именно этот день. Выяснилось, что поначалу Unix собирался считать время с другого года и в других единицах, а тикали его часы от электрической розетки.
Вторая половина истории про будущее. Во вторник, 19 января 2038 года, в 06:14:07 по Москве закончится 32-битный счетчик секунд, и программы, которые на него полагаются, проснутся в пятнице, 13 декабря 1901 года. Я проверила это на C, на JavaScript и на ext4, где файл, датированный 2040 годом, у меня уехал в 1903-й, а заодно выяснила, что кое-где 2038 год наступил уже двадцать лет назад.

Есть вещи, которые со временем меняются настолько незаметно, что ты замечаешь это, только оглянувшись назад. Меняются технологии, инструменты, языки программирования, способы организации работы, а вместе с ними меняемся и мы сами, постепенно привыкая к тому, что ещё вчера казалось странным и, вспоминая какие-то события двадцатипятилетней давности, вдруг понимаешь, что изменилось нечто гораздо более важное, чем очередная технология или процесс.
Я не уверен, что раньше люди принимали решения лучше, а интуиция опытного руководителя есть магическая способность безошибочно распознавать таланты, но я хорошо помню несколько моментов, когда кто-то был готов рискнуть, потому что видел во мне не то, кем я уже успел стать, а то, кем я потенциально мог стать. И такие моменты определили мою карьеру гораздо сильнее, чем строчки в резюме. Расскажу о трёх случаях, которые запомнил лучше других: они произошли в разные годы, в разных компаниях и на совершенно разных этапах моей жизни, но каждый раз всё начиналось с одного простого решения, когда мне давали шанс.
Расскажу, как я получил свою первую работу программиста 25 лет назад. Потому что мне кажется, именно в этой истории ответ на вопрос, почему сейчас такой трэш на рынке труда в IT. Компания “HBM”, известная тогда игровая контора набирала людей для нового проекта под “Буку”, в качестве тестового задания надо было за месяц сделать простую РТС на чем угодно, но с работой по сети. Я тогда студент второго курса, без портфолио, без опыта, без вот этого всего. Взял задание и вечерами на кафедре, потому что своего компа еще не было, а папин был за 200 км и особо не наездишься, наклепал стратежку с видом сверху про пакманов и призраков, которые собирают точки и стреляют друг в друга. Я не знаю как она работала, потому что там было столько косяков, что работать он в принципе не могла, а если слишком быстро перемещать курсор, то крашилась, и поэтому некоторые пакманы начинали стрелять в курсор и стопать его, если скорость была выше положеной.

Если вы меня читаете, то знаете, что где-то полгода назад я проектировала, обучала и, в общем, создавала своего агента для проверки ТЗ. А сейчас у меня появилась новая идея по захвату мира: протестировать ML. И да, я не Data Scientist, но когда это меня останавливало?
В итоге вместо пары экспериментов получился отдельный QA framework, который берёт готовую ML-модель, собирает её контракт и сам решает, какие проверки можно запустить и почему результат должен считаться PASS, FAIL, WARN или SKIP.

Как и ожидалось, после августовского затишья ИИ-лаборатории устроили нам целый хит-парад релизов. Глаза разбегаются от обилия версий, цифр и апдейтов, которыми компании пытаются перебить инфоповоды друг друга. От OpenAI мы получили разрывающую бенчмарки GPT-6 Astra, Sol аж в двух версиях и целую пачку обновлений с прошедшего DevDay. Anthropic выставили в ответ тяжелую артиллерию в лице Claude Fable 5.1 и семейства Claude 5.5 в неполном составе. Google же продолжают штамповать Flash-версии Gemini и, видимо, копят ульту под какой-то мощный будущий релиз.
За пределами релизов развернулись сюжеты не менее интересные. OpenAI торжественно объявили о решении задачи Навье-Стокса силами своих агентов, но вместо оваций получили обвинения в краже данных и гнев научного сообщества. Лидер Anthropic тоже получил свою долю хейта, только уже от политиков, за призывы замедлить ИИ-гонку. Дженсен Хуанг тем временем продолжает укреплять свою монополию, на этот раз через покупку Hugging Face.
В конце выпуска вас ждет наша традиционная сводка полезных инструментов и выжимка свежих научных исследований. Присоединяйтесь, впереди много интересного!