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

Привет, Хабр!
Cегодня разберём экспериментальную фичу Kotlin 2.2 — контекстные параметры. C помощью контекстных параметров функции и свойства могут объявлять зависимости, которые неявно передаются при вызове.
Допустим, есть сервис логирования UserService, который нужно часто передавать во многие функции. Без контекстных параметров пришлось бы всюду писать fun outputMessage(users: UserService, msg: String). С параметрами контекста достаточно объявить функцию так:
Как не получить распределённый монолит

Микросервисный подход казался выбором по умолчанию в последнее десятилетие. «Делай микросервисы – и будет хорошо», – намекал опыт построения огромных программных систем. Вместе с тем в последнее время в сети всё чаще встречаются мнения, что «не нужны нам эти микросервисы», и тому есть причины.
Статья инспирирована переводом Распределенный монолит: тихий убийца мечты о микросервисах и некоторыми комментариями, отражающими, что тема описана не слишком подробно. Покажу видение данной темы немного с другой стороны.
Новый инерциальный MEMS-датчик LSM6DSV320X от ST c искусственным интеллектом для распознавания активности и ударов

Инерциальные модули (IMU, Inertial Measurement Unit) выполненные в виде MEMS-датчиков давно используются в смартфонах, игровых контроллерах, носимых устройствах, и т.д. В такой модуль входит акселерометр и гироскоп, вся обработка выполняется на основном процессоре смартфона или микроконтроллера. Для обработки поступающих данных от инерциального модуля, процессор должен быть постоянно в состояние активности. Например, для носимой электроники данный фактор не позволит отправить основной процессор в спящий режим. Вторая проблема заключается в большом лаге между наступлением события и реакции. Например, если необходимо обрабатывать события удара, пока ОС обработает поступающие данные и сделает вывод об ударе, времени на реакцию будет немного. Для решения указанных задач, и не только, компания STMicroelectronics разработала модуль LSM6DSV320X с искусственным интеллектом где вся обработка данных выполняется в самом модуле.
GitLab: Основы написания Pipeline 2/3

Всем привет!
В первой части мы в общих чертах посмотрели на различия GitHub Actions и GitLab, а также начали разбирать структуру файла .gitlab-ci.yml.
В этой части продолжим разбираться с параметрами и особенностями конфигурации: триггеры, job’ы, артефакты и многое другое.
Не понимаете, «что тут происходит»? Рекомендую начать с первой части:: по ссылке.
Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и практическими примерами из реальных проектов. А прямо сейчас у нас там ещё и проходит новогодний розыгрыш.
Операторы «case» и «switch» это не сахар

На страницах Хабра не раз встречались статьи, которые прямо (или косвенно) озвучивали утверждение, что операторы языков программирования "case" и "switch" являются "синтаксическим сахаром" т.е. являются более удобной и наглядной записью последовательности операторов "if". В комментариях, с моей стороны, отмечалось недоумение, по поводу таких заявлений. Для справки приведу общий вид оператора "case" из языка программирования Турбо Паскаль.
case <ключ выбора> of
значение_1: операторы; ... значение_N: операторы;
else операторы;
end;
Когда я учился в университете основам Турбо Паскаля, наш преподаватель сознательно делал акцент на том, что данная синтаксическая конструкция, после вычисления ключа выбора, переходит на соответствующие вычисленному ключу операторы. То есть, без перебора всех ключей, сразу. В этом особенность данного оператора и его принципиальное отличие от последовательности операторов "if" (функционально эквивалентных). Так меня учили.
Авторы статей, считающие иначе, проявили завидное упорство (в комментариях), отстаиваю свою позицию, что привело к желанию разобраться в этом вопросе. (Однажды был даже такой удивительный случай, когда, вероятно начинающий программист, написал статью приблизительно следующего содержания: «А что если ключей выбора очень много? Перебор всех вариантов это долго. А что если попытаться оптимизировать такой нерациональный оператор как „case“, „switch“.» И далее рецепты по оптимизации. После справедливых замечаний в комментариях автор статью удалил. Ну что же, с кем не бывает.)
Создание приложения для моделирования технологических схем с помощью компонента «СПДС» Платформы nanoCAD и API MultiCAD

BIM давно зарекомендовал себя в гражданском и промышленном проектировании. А можно ли использовать информационное моделирование для технологических схем?Демид Сентемов, инженер-проектировщик технологических процессов, разработчик программных решений, ответил на этот вопрос утвердительно. С помощью компонента «СПДС» Платформы nanoCAD и среды API MultiCAD его команда разработала собственный продукт «Промпроектор», предназначенный для создания технологических схем по принципу BIM. Первым пользователем приложения стала компания «РИОС-Инжиниринг», которая уже опробовала новое решение при моделировании технологической схемы для установки реформинга бензина.
Внутри ядра Docker: что на самом деле происходит при запуске контейнера

Когда вы вводите в командную строку docker run nginx — кажется, что произошло какое-то волшебство: за считанные секунды появляется полностью изолированная среда. Но здесь нет никакой магии, а просто инженерия ядра Linux. Давайте подробнее разберём эту тему подробнее и изучим, что именно происходит внутри ядра, когда Docker создаёт контейнер.
MBZUAI – первый в мире университет по искусственному интеллекту

Доброго времени суток, коллеги!
Меня зовут Влад, и в этом году я поступил в университет MBZUAI (Mohamed bin Zayed University of Artificial Intelligence, Абу-Даби, ОАЭ) – первый в мире университет по искусственному интеллекту. Основанный в 2019 году, он уже успел занять лидирующие позиции среди ведущих лабораторий мира в области ИИ. Так, по данным рейтинга CSRankings на момент написания данной статьи университет занимает 10-е место в мире. Слышали про Сэма Альтмана, основателя OpenAI, компании, создавшей ChatGPT? 26 сентября этого года MBZUAI торжественно присвоил ему степень PhD.
Чему меня научила разработка C#-клиента для распределённой СУБД Яндекса

Привет, Хабр! Меня зовут Кирилл Курдюков, и мы с командой делаем YDB (СУБД Яндекса). Как и с языками программирования, популярность СУБД определяется не только их возможностями, но и экосистемой.
В предыдущей статье я рассказал о том, как разработать Java-клиент для распределённой СУБД и интегрировать его с популярными ORM. А из этой статьи вы узнаете, как под капотом работает ADO.NET, почему управление пулом сессий может сильно влиять на ваш код работы с базой данных и какой стратегии обработки ошибок можно придерживаться для разработки отказоустойчивых сервисов. Статья будет полезна тем, кто изучает особенности взаимодействия в распределённых системах или просто хочет научиться лучше писать клиентский код, работающий с современными распределёнными системами.
Вайбкодинг. Сопротивляться или возглавить?

Кто-то кайфует от новых возможностей и говорит, что теперь всё будет делаться с AI. Кто-то называет ерундой, говорит AI ничего не может, и придумывает таким разработчикам клички типа “Саша GPT”. Кто-то готовится к обороне кода как Егор Бугаенко (@yegor256) в своём видео “Как защитить код от AI”: https://www.youtube.com/watch?v=GPJ-LfRpxM4 (очень рекомендую посмотреть)
На какой стороне вы? Новаторов или староверов?
Делюсь своим видением происходящего, с какими плюсами и ограничениями столкнулся на практике.
Как налоговый юрист написал сервис для расчета пени по НДС с помощью LLM, не зная Python

Я налоговый юрист и автор телеграм-канала «Налоговый Инсайдер». В моей работе есть рутинные задачи, которые сложно автоматизировать стандартными средствами вроде Excel. Одна из таких задач — расчет пени по НДС при подаче уточненной налоговой декларации.
В этой статье я расскажу, как не написав самостоятельно ни строчки кода с помощью Gemini и ChatGPT я прошел путь от идеи до работающего приложения на Flask , и с какими неочевидными техническими проблемами (вроде устаревшего Python на хостинге и CGI-скриптов) столкнулся гуманитарий-юрист пытаясь запустить современную программу на обычном хостинге.
Создаём замыкания С из замыканий Lua
Когда я взялся полноценно портировать API Windows с C на Lua, одна из самых интересных и занимательных задач заключалась в том, как делать обратные вызовы к коду C из функций Lua. Без них значительная часть API — например, WNDPROC – осталась бы бесполезной.
Ближайшие события
Разбираем net/http на практике: пишем веб-сервис DeadDrop для безопасного обмена сообщениями

Первая часть цикла «Разбираем net/http на практике»: создаём с нуля сервис DeadDrop — аналог Privnote для безопасной передачи самоуничтожающихся сообщений и файлов.
На чистой стандартной библиотеке net/http разбираем основы:
• запуск HTTP-сервера
• маршрутизация в ServeMux
• написание middleware (логирование и recovery от panic)
• работа с HTML-шаблонами и layout’ами
• подключение статики через http.FileServer и embed.FS
В итоге получаем работающий сервер с красивой главной страницей, формой создания «ячейки» и базовой архитектурой проекта — всё без внешних зависимостей.
Идеально для начинающих и тех, кто хочет глубоко понять внутренности популярных фреймворков вроде Gin и Echo. Пишем код вместе!
Связь паттернов микросервисной архитектуры

В этой статье я хотел бы рассмотреть микросервисные паттерны под другим углом. Когда я начинал изучение микросервисных паттернов, у меня постоянно был вопрос: Так это же было в другом паттерне. Я решил немного структурировать их: объединить по похожим элементам. Кластеризировать микросервисные паттерны достаточно тяжело так как каждый паттерн по‑своему уникален, однако для запоминания на собеседованиях или для себя это сделать можно. Основной контент статьи — картинка, далее идёт описание, чтобы всё было в одном месте.
Эта статья предназначена для более быстрого запоминания/повторения паттернов микросервисов. Кое‑где я приводил кейсы, которые могут быть непонятны новичкам. Здесь нет подробных кейсов применения каждого паттерна так как иначе статья получилась бы на другую тему. Для удобства я приложил ссылки — чтобы избежать дублей.
Один микросервис — один контейнер. День 1

Это первая статья о том, как идея проходит путь от прототипа до полноценного продукта — с участием архитектуры на каждом шагу. Формат — ADR (Architecture Decision Records): каждое решение зафиксировано по дням, чтобы показать реальную эволюцию проекта. Продукт вымышленный, проблемы — настоящие. Те самые, с которыми сталкиваются архитекторы и команды. Документация и код — в открытом доступе на GitHub.
Соотношение свободы и приватности с безопасностью

Данная статья была написана и впервые опубликована осенью 2023 года. В ней разбираются мифы о свободном программном обеспечении и критикуются аргументы любителей проприетарного ПО. За прошедшее время статья нисколько не потеряла своей актуальности. Наоборот, представления о большей безопасности проприетарного ПО по сравнению со свободным становятся все более популярными. Потому разбор этих представлений — выяснение того, состоятельны ли они или носят спекулятивный характер — весьма важен. Хотя статья посвящена главным образом программному обеспечению, серьезное внимание уделено тем социально-экономическим факторам, которые способствуют распространению разбираемых в ней мифов. Вторая половина статьи рассматривает социальные вопросы, показывает, что современная система привела не только к засилью несвободного ПО, но и к репрессивному виду авторского права, нищете, голоду, усугублению экологической обстановки. Хотя в ней нет указаний по исправлению ситуации, но представлены возможные решения по противодействию насаждению угнетения в сфере программного обеспечения и публикаций. Текст статьи остался без изменений, однако ссылки на источники были исправлены — некоторые заменены на более удобные, недоступные ныне ссылки на рабочие.
Что такое MCP-сервер, и зачем он нужен

Привет, Хабр! Меня зовут Андрей Слесаренко — frontend‑разработчик с опытом работы более 8 лет. Прошёл путь от джуна до тимлида, работал над разными высоко‑нагруженными проектами. В начале этого года начал активно использовать LLM‑агентов в повседневной работе — и за это время набил немало шишек.
В этой статье хочу поделиться своим опытом, где мои ожидания разошлись с результатом, а также рассказать об основных «шишках», которые я набил при работе с агентами.
AI без интернета (офлайн) на своем компьютере

Зачем это обывателю?
Кейсов на самом деле не мало, как минимум это бесплатно и дает возможность запускать AI без облака, чтобы ничего не отправлялось в интернет (приватность, скорость),
ну и на случай если упадет интернет как например у нас было в Испании когда все электричество пропало, хорошо бы иметь умного ИИ с которым можно будет пообщаться)
Еще можно использовать как офлайн переводчик или объяснялку без интернета, помощника по учебе и изучения чего либо.
PostgreSQL. Интервальный тип данных. Интеграция с Spring Data JPA

В своей практике мы можем сталкиваться с хранением и поиском информации задаваемой в интревальном формате. Например: срок действия акций, тарифы на доставку и прочее. В статье мы подружим Spring JPA и Range Types.
Вклад авторов
alizar 4508.2ru_vds 4382.8badcasedaily1 3960.0olegchir 3644.4haqreu 3111.0Bright_Translate 2871.9dalerank 2694.0tangro 2672.2nmivan 2585.0kesn 2578.0
