Как стать автором
Обновить
1082.15

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

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

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

Разработка языков программирования в эру больших языковых моделей: ренессанс посредственности?

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

В исследовании языков программирования меня всегда наиболее привлекала их разработка.

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

Читать далее

Оптимизация индексов базы данных: проблемы, решения, практические рекомендации

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

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

Индекс — это как указатель в толстенном справочнике. Без него, чтобы найти нужный термин, вы обречены листать страницу за страницей. С ним — вы мгновенно открываете нужный раздел. Но что, если указатель сам размером с полкниги? Или ведет не туда? Такой помощник только вредит. С индексами в БД всё то же самое. Грамотная стратегия индексирования — это полет. Ошибочная — это бег в мешках по болоту.

Читать далее

Короткий обзор Pest — неплохой PHP-фреймворк для тестов

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

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

Сегодня рассмотрим Pest — минималистичный, но выразительный тестовый фреймворк для PHP. Он построен поверх PHPUnit и переосмысляет подход к написанию тестов: делает их лаконичнее, читаемее и проще в поддержке.

Pest — не альтернатива PHPUnit, а надстройка над ним. Он предоставляет декларативный DSL, сохраняя все фичи PHPUnit. Это позволяет использовать существующие PHPUnit-фичи, включая assertions, мок-объекты, аннотации, и при этом писать тесты в более компактной форме.

Читать далее

Как выжить в мире сложных интерфейсов в 2025-м: 7 работающих рецептов от React и CSS до дизайн-систем

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

Как говорил дядя Бен, большие продукты — это большая ответственность. И без сложных интерфейсов тут никуда: а с ними и исследования становятся труднее, и встречается больше препятствий на этапе кода — от нюансов реактивного программирования до риска утонуть в разнообразии CSS-спецификаций.

Для МойОфис как мультипродуктовой экосистемы со сквозными сценариями — все эти вопросы очень актуальны! Поэтому на прошлой неделе JS-еры, дизайнеры и UX-исследователи нашей и других компаний собрались на митапе под названием Frontend&UX Talks, чтобы обсудить эти и другие проблемы современного веба. Получилось интересно, драйвово и даже сказочно! (и я в прямом смысле этого слова :-))

Под катом расскажем в 7 тезисах, к каким выводам пришли и как именно: поехали!

О фронтенде в 2025-м году мы поняли, что...

Понятный и простой код — куда важнее, чем кажется

Примитивы это сказка! (причем буквально...)

Реактивное программирование актуальное и удобное! Но не для всех...

Следить за CSS обновлениями каждый квартал – базовый минимум

Темизация это нелегко, но есть лазейки!

Редизайны продуктов – это не страшно! (ну почти...)

За сложными интерфейсами – глаз да глаз...

Читать далее

Domain-Driven Design: чистый подход к проектированию бизнес-логики

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

Недавно наша команда столкнулась с новым проектом — крупной backend-системой, которую руководство решило реализовать в формате монорепозитория. Масштаб бизнес-логики оказался огромным, и быстро стало понятно, что без четкой архитектурной дисциплины невозможно поддерживать читаемость, изолировать бизнес-логику и эффективно управлять сложностью. Поэтому мы выбрали подход Domain-Driven Design (DDD), при котором домен описывает бизнес-правила, а оркестратор и инфраструктура вынесены в отдельные слои. Меня зовут Рамиль Куватов, я разработчик в VK Tech, и эта статья — попытка описать и систематизировать принципы, которые помогают нам сохранять архитектуру чистой, а систему — устойчивой к изменениям.

Читать далее

Кросс-платформенный Rust от и до: GUI + CLI + CI + Docker Реальный опыт доставки DotPlus на Linux и ARM

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

Кросс-платформенный Rust от и до: GUI + CLI + CI + Docker Реальный опыт доставки DotPlus на Linux и ARM

Читать далее

Гайд на полиморфизм. Что там под капотом?

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

В прошлой статье мы рассмотрели теоретическую основу такого понятия как полиморфизм. Теперь же перейдем к рассмотрению что там «под капотом».

Читать далее

Как написать торгового робота для API Т-Инвестиций на Java

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

Привет! Я Алексей Кабанов, младший разработчик в команде публичного API Т-Инвестиций. Занимаюсь разработкой и поддержкой Java SDK и внутренних сервисов. Изучаю анализ рыночных закономерностей и программную реализацию алгоритмов торговли, построенную на них.

Расскажу о Java SDK для работы с API Т-Инвестиций и покажу, как использовать его для создания торгового робота. Мы сосредоточимся на стратегии, основанной на технических индикаторах, и продемонстрируем, как ее реализовать с помощью новых возможностей SDK.

Современная алгоритмическая торговля предлагает множество инструментов и стратегий, которые могут значительно повысить эффективность торговли на финансовых рынках. В статье покажу, как использовать обновленный Java SDK для создания робота, который будет торговать по стратегии, основанной на технических индикаторах. А еще подробно рассмотрим, как с его помощью можно настроить и протестировать робота, чтобы запустить его на реальном рынке.

Читать далее

Создаём конвейер обработки запросов в платформе Serverless

Время на прочтение13 мин
Количество просмотров845

За 10 лет, что существует Serverless‑подход, бессерверные функции стали для многих разработчиков чем‑то привычным и удобным. С их помощью можно быстро написать несколько строк кода для реализации конкретной бизнес‑логики и задеплоить, не думая о развёртывании, настройке и обслуживании инфраструктуры. Нужный код запустится автоматически при срабатывании триггера, как это принято в событийно‑ориентированной архитектуре. Но если таких функций в приложении потребуется очень много — что поможет сохранить нужную скорость работы и другие преимущества Serverless?

Меня зовут Сергей Ненашев, последний год я разрабатываю в Yandex Cloud сервис бессерверных функций Cloud Functions. В нашем облаке с ним можно запускать код в виде функции без создания и обслуживания виртуальных машин.

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

Читать далее

Как хранить деньги в базах данных и почему это не так просто, как кажется

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

Хранение денежных сумм в базах данных и API: анализ подходов платежных систем

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

Разбираем, как решают эти проблемы Stripe, PayPal, Google Wallet и другие платежные системы. Сравниваем три основных подхода: Integer minor units, Decimal base units и String base units.

Читать далее

Лучшие алгоритмы 20 века по версии SIAM

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

На рубеже веков SIAM опубликовали список из 10 алгоритмов, оказавших наибольшее влияние на науку и индустрию в 20 веке (по мнению редакции), четверть века спустя по меньшей половина из этого списка до сих пор используется повсеместно. В статье вспомним что это за алгоритмы и за что они получили такое признание. Обсудим и алгоритмы, которые в этот список не вошли, но вполне могли бы, о чем читатели хабра написали в комментариях к статье "10 лучших алгоритмов 20 века". В конце статьи опрос, пожалуйста, не проходите мимо и отметьте или напишите в комментариях, какие алгоритмы на ваш взгляд должны были оказаться в этом списке!

Читать далее

Telegram Bot API 9.1 — чеклисты, подарки и другое

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

Telegram продолжает расширять возможности своего мессенджера — в свежем обновлении Bot API 9.1 разработчикам стали доступны удобные инструменты для работы с чек-листами, подарками и рядом других функций.

Рассмотрим их подробнее.

Читать далее

Магия ClientOnly: повышаем производительность и безопасность в Nuxt-приложениях

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

ClientOnly в Nuxt - это не просто костыль для исправления SSR-ошибок, а многофункциональный инструмент с неожиданными преимуществами. Разбираемся, как этот компонент может ускорить загрузку приложения, улучшить пользовательский опыт и даже создать дополнительный уровень защиты от ботов.

Серьёзно о несерьёзном и с юмором о технологиях — обо всех секретных суперспособностях вашего любимого компонента-невидимки.

...Loading

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

Всё, что нужно знать о своих планах, случайностях и стохастическом программировании

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров3K
Все мы прекрасно знаем, что очень часто наши планы идут не по плану именно из-за случайностей. В такие моменты очень трудно обойтись без жаргонизмов, нецензурной брани и отборного трехэтажного. Но все же есть способ сделать наши планы более устойчивыми и состоятельными — это стохастическое программирование (далее SP — stochastic programming).


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

Бот для написания постов в Телеграм. Создание и запуск

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

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

И сегодня мы попробуем не просто использовать такой сервис, а написать свой, который сможем улучшать под собственные требования и полностью контролировать его работу. В этой статье мы напишем и развернем на удаленном сервере Telegram бота, который обладает обратной связью и помогает выкладывать посты.

Читать далее

Разбираемся со Spring Boot с помощью Spring Debugger

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

Команда Spring АйО перевела статью о работе со Spring Debugger и о том, как его применение существенно облегчает отладку приложений, написанных с использованием Spring Boot. На момент написания статьи фича доступна только в Ultimate версии IntelliJ IDEA.

Читать далее

Vue Teleport: как работает

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

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

Сегодня разберём один из недооценённых, но крайне полезных инструментов во Vue 3 — <Teleport>. Это встроенный механизм, который позволяет рендерить часть шаблона вне текущего DOM‑контекста. Он нужен при реализации модалок, тултипов и других компонентов, которые должны «выпрыгивать» из дерева компонентов, но при этом сохранять реактивность, фокус и доступность. Без этих костылей, z-index: 9999 и appendChild.

Читать далее

Нейросеть приближается к опыту профессионального дерматолога

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

Наконец наступило лето, а с ним и пора отпусков. Уезжая на южные моря, не забывайте: большинство из нас имеет типичную для северянина кожу с пониженным содержанием меланина — пигмента, отвечающего за защиту от ультрафиолета. Если кожа отреагировала непонятным новообразованием, вызывающим опасения, теперь можно проконсультироваться с искусственным интеллектом. Он предварительно осмотрит кожу и посоветует, бежать ли ко врачу, за которым, конечно, всегда последнее слово. К слову, данная медицинская ИИ-технология, как и публикация, не является медицинской рекомендацией: диагноз ставит лечащий врач.

Читать далее

DevOps в 2025 году: отдельные дисциплины, машинное обучение и прогноз на будущее

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

Привет! Меня зовут Константин Полуэктов, я solution architect в Yandex Cloud и технический эксперт в онлайн-магистратуре от Яндекса и ИТМО «DevOps-инженер облачных сервисов». В этой статье я расскажу о сфере DevOps: что изменилось за последние годы и чего ждать в будущем.

Читать далее

Когда «ускорить разработку» — значит всё сломать

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

Когда «ускорить разработку» — значит всё сломать

Почему скорость команды — это не всегда про людей, а про инфраструктуру

Читать далее

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