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

Разработка

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

Лестница абстракций и где на ней стоять: изучать ли программирование сложным способом?

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

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

Читать далее

Назад в прошлое. Часть 5. От Dizzy, Amiga и C64 до GRID, GBA и N. DS. Интервью с композитором Аллистером Бримблом

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

Краткая справка об основных действующих лицах:

Alister Brimble — композитор, приложивший руку к огромному количеству как широко известных, так и не очень, наименований. Свой путь он начинал с различных проектов для Amiga, Commodore 64, Atari ST, ZX Spectrum и Amstrad CPC. Так, в частности, ему довелось поработать над несколькими частями культовых серий в лице Dizzy, Alien Breed, The Lost Vikings и Mortal Kombat, рядом некогда известных shoot 'em up тайтлов, в частности Agony, различными платформерами, включая Captain Dynamo, Troddlers, целым спектром работ иных жанров, от спортивных симуляторов до стратегий.

С середины 1990-х он переключился на 16-битные консоли и IBM PC, а с наступлением 2000-х и на портативные консоли, среди которых нашлось место Game Boy Color, Game Boy Advance и Nintendo DS. В более поздний период можно встретить наименования в диапазоне от RollerCoaster Tycoon и Glover, до Driver и нескольких портативных частей Need For Speed.

Читать далее

Введение пост-квантового шифрования в I2P

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

Сеть I2P (Invisible Internet Project) — один из немногих эталонов анонимности и приватности в современном интернете. В этой статье мы рассмотрим, как I2P интегрирует пост-квантовое шифрование, сохраняя обратную совместимость и обеспечивая высокий уровень безопасности с заделом на будущее.

Читать

Часть 5. Обзор техник оценки качества систем RAG

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

Продолжаю адаптированный перевод статьи китайских исследователей Retrieval-Augmented Generation for Large Language Models: A Survey (ссылка на первую часть — здесь, на вторую часть — здесь, третью часть — здесь, четвёртую часть — здесь). К некоторым терминам, как и в прошлых частях, добавлены переводы и пояснения для удобства начинающих ИТ-переводчиков.

В этой части мы поговорим про техники оценки качества систем RAG и соответствующие им наборы данных. Основная цель — понять и оптимизировать эффективность моделей RAG в различных прикладных сценариях.

Читать далее

Кодинг-интервью: без боли и литкода

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

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

Я развлекаюсь интервьюингом больше десяти лет, лет пять вёл SRE Interview Club для собратьев по пейджеру и набрал небольшую базу любимых вопросов — которые задаю по сиюминутному желанию, в зависимости от фазы луны: они все работают для любых ситуаций.

При этом неважно, на каком языке собирается кодить кандидат (да, видел даже перл от менеджера, кто уже десятилетие к тому моменту не брал в руки шашку), и неважно, на какой уровень его собеседовать.

В теории, все мои вопросы давно разобраны, и в гугле были внесены в список забаненных вопросов — но никогда претензий ко мне не поступало, так как сигнал ясный и чёткий — а ради этого всё затевалось. :)

Давайте рассмотрим один из моих любимых вопросов: доставайте свои вайтборды или блокнотики, начинаем кодить на доске!

Вращайте ~барабан~ дерево!

О методах автоматизации создания пост-релизов

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

Хочу рассказать о способах автоматизации части своей работы. Вчера я присутствовал на заседании научного клуба при МФТИ и выложил сегодня пост-релиз. Хотя я его выложил вечером, отправить его надо было утром, чтобы успеть согласовать все цитаты и правки, и выложить его хотя бы к вечеру на официальном сайте.

До появления современных средств автоматизации труда это потребовало бы бессонной ночи и заметных усилий. Сейчас же происходило следующим образом.

На самом заседании клуба я включил приложение «диктофон» на своем планшете, положил его на стол перед собой и делал ручкой пометки с тайм-кодами, кто говорит...

Читать далее

UPDATE: Разрешения MAX для Android. Cравниваем с Telegram и WhatsApp*

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

В своей первой статье «Разрешения MAX для Android. Cравниваем с Telegram и WhatsApp*» я сравнил резрешения, которые запрашивает приложение MAX для Android с разрешениями, которые запрашивают Telegram и WhatsApp.

18 сентября вышла новая версия MAX — 25.11.0 и вы знаете, произошло то, чего я не ожидал. MAX стал запрашивать 50 разрешений, вместо 59, т. е. на 9 меньше!

Давайте посмотрим, какие же разрешения убрали разработчики.

Читать далее

Что нового в Gradle 9.0.0?

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

В новом переводе от команды Spring АйО рассматривается новое крупное обновление Gradle, которое приносит с собой переход на Kotlin 2 и Groovy 4, а также делает кеш конфигурации рекомендуемым режимом сборки. В версии 9 улучшена система отчётности об ошибках, ускорена компиляция Kotlin DSL, добавлена интеграция с Jspecify, снижено потребление памяти и оптимизирована работа с IDE.

Читать далее

Как мы автоматизировали весь процесс поиска работы с командой джунов

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

Всем привет! Мы команда разработчиков, которые создали первого в РФ ии-ассистента для поиска работы, собрав команду из 7 джунов. 

В этом посте делимся нашим опытом продукт-разработки: расскажем о ключевых ошибках, неочевидных инсайтах и о том, как нам удалось дожить до релиза, несмотря на 3 переноса его даты :) 

Читать далее

Большой гайд как соответствовать ожиданиям работодателя в IT

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

Ты думаешь, что в IT достаточно быть сильным специалистом? Ошибаешься. Работодатели ждут от тебя гораздо большего, и часто об этом не говорят прямо.

Читать далее

Нормализация vs Денормализация: Mongo, Postgres и реальная жизнь

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

Нормализация vs Денормализация: Mongo, Postgres и реальная жизнь. Почему у нас вырастает 160 таблиц там, где мог быть один jsonb? И как понять, когда денормализация — это костыль, а когда осознанный выбор?

Если при слове «нормализация» у тебя начинается зевота, а менеджер с порога предлагает «спроектировать базу» — этот текст для тебя.

Читать далее

Расширяем базовый функционал n8n: от RAG до кастомного агента с MCP

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

Компании и энтузиасты стремятся автоматизировать процессы, но не каждый готов писать код с нуля. Поэтому в последние годы особую популярность набрала no-code платформа n8n. С её помощью можно быстро собирать пайплайны различной сложности: от простых чат-ботов до умных ассистентов, которые управляют календарем и напоминают о задачах.  Обычно в статьях про n8n затрагивают только готовые блоки, собирают из них пайплайны автоматизации, но в то же время упоминают об ограниченности использования этой платформы. Действительно, базовых блоков в n8n может не хватать, чтобы закрыть все потребности пользователя, но сегодня я покажу, как можно обойти эти ограничения и расширить базовый функционал n8n.

Привет, Хабр! Меня зовут Музафаров Данил, я Data Scientist в компании Raft. В этом туториале я шаг за шагом покажу: как локально развернуть n8n, как добавить кастомные API и создать полноценного AI-агента с MCP tools с расширенным функционалом. Придется немного писать код, но главное, что это позволит оставить архитектуру решения на n8n, дополнив его кастомными тулами.

Читать далее

Часть 2. Rsync — подробное руководство для админов

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

Привет, Хабр! В первой части я разобрал основы rsync: синтаксис, ключевые опции и работу по SSH. Эти аспекты позволяют эффективно пользоваться утилитой на базовом уровне. В этой статье заглянем «под капот» и научимся тонко контролировать весь процесс синхронизации и диагностировать проблемы с производительностью...

Что в статье:

— Фильтрация;
— Экономичные бэкапы;
— Диагностика и решение проблем.

Читать далее

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

Как DS-инженеры совершенствуют автогенерацию описаний и пополняют индекс объявлений Авито

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

Привет! Я Сергей Кляхандлер, техлид в команде LLM Авито. В 2024 году мы разработали и выпустили ML-модель, которая автоматически генерирует описания для объявлений из категории «Одежда, обувь, аксессуары». В этом году автогенерацию усовершенствовали, а подход переиспользовали — подробнее о том, как мы это сделали, расскажу в статье. Материал будет полезен DS-инженерам, которые работают с мультимодальными LLM-моделями.

Читать далее

HTTP/3 и QUIC: почему интернет обновляется, и что это даёт приложениям

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

Представьте, что дороги в вашем городе заменили за ночь: больше нет светофоров на каждом перекрёстке, машины едут быстрее, а пробки исчезают сами собой. 

Так же внезапно (и не так уж безболезненно) интернет получил новую «дорожно-транспортную» логику: QUIC и HTTP/3. В этой статье разберём, что конкретно дают HTTP/3/QUIC веб- и мобильным приложениям, где эффект заметен сразу, а где — только после тщательного теста. Детали под катом.

Читать далее

Пишем с нуля ядро операционной системы

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

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

Это новый подход к упражнению, которое я выполнил на моём студенческом курсе по операционным системам; функционально он должен напоминать типичный проект по ОС. Однако в этом эксперименте сделан упор на современный инструментарий, а также на современную архитектуру RISC-V. RISC-V — это потрясающая технология, в которой проще разобраться быстрее, чем в других архитектурах CPU; в то же время она остаётся популярным выбором для многих новых систем, а не только архитектурой для обучения.

Отличия от моего предыдущего проекта заключаются в том, что я реализовал это упражнение на Zig вместо традиционного C. Это не просто интересный эксперимент: я считаю, что Zig повышает возможность его воссоздания на вашей машине, потому что его очень легко настроить и он не требует установки.

Читать далее

Как научить ИИ-агентов работать с инструментами без ручной разметки

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

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

Читать далее

Ваш смартфон вам не принадлежит. И вот как я в этом убедился…

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

Мы платим немалые деньги за мощные карманные компьютеры, но реальный контроль над устройством часто остается мифом. Личный эксперимент с «неубиваемыми» приложениями и скрытой слежкой.

Вы купили телефон. Он лежит у вас в кармане. Вы за него заплатили. Казалось бы, он ваш. Но так ли это на самом деле? Моя недавняя история заставила меня усомниться в этом фундаментальном, казалось бы, факте.

Все началось с батареи. Мой телефон стал разряжаться подозрительно быстро. Будучи технически подкованным пользователем, я решил копнуть глубже. Без рут‑прав, но с помощью Android Debug Bridge (ADB) и команды ps, я начал изучать запущенные процессы. На первый взгляд — все чисто, только системные службы. Ничего криминального.

Потом случился инцидент с обновлением приложения Альфа‑Банка. Оно запросило доступ к «Неизвестным источникам» (разрешение на установку приложений). Я разрешил, обновил и... благополучно забыл об этом. Но позже вспомнил: держать приложение в списке источников — серьезный риск! Это как выдать кому‑то ключ от вашей крепости — оно может устанавливать другие приложения без вашего ведома. Я всегда строго контролирую этот список, оставляя там только абсолютно доверенные программы.

Каково же было мое изумление, когда, заглянув в настройки безопасности (Настройки > Безопасность > Установка неизвестных приложений), я обнаружил там несколько программ, которых точно не добавлял! Среди них было какое‑то безликое «Обратная связь» и загадочный «oms‑core».

«Ладно, — подумал я, — Сейчас исправим». Я спокойно снял галочки напротив этих приложений, лишив их статуса источника установки. Чувство выполненного долга длилось недолго. Какое‑то сомнение грызло меня. Я вернулся в настройки буквально через минуту... и обомлел. Галочки стояли на месте! Я проделал операцию еще раз — результат был тот же. Отключить эту функцию у этих приложений оказалось невозможно.

Читать далее

Логирование и мониторинг WG

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

Всех приветствую! Послушал обзор курса «Мониторинг высоконагруженных систем» от OTUS, в котором упоминалось, что используется асинхронный подход в мониторинге и решил реализовать его в установленном WG. Готового легковесного в интернете ранее не нашел, а вопрос назрел в ввиду оперативного понимания, кто забивает канал, да и логи хотелось бы увидеть о событиях. Если читатель надеется, что тут я опишу изменение исходника, не тратьте время, будем обрабатывать вывод команды wg в консоли Python-ом, который уже есть в ubuntu 20.04 и содержит asincio. Можете по

Читать далее

Запускаю Doom на домофоне через уязвимость

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

Привет! Меня зовут Владимир, и я работаю реверс-инженером в BI.ZONE Hardware Lab или просто — в «Лабе». Когда в моём подъезде появился продвинутый видеодомофон, я не удержался и разобрал его. Внутри оказалось не только любопытное устройство, но и уязвимость, позволяющая получить полный контроль над ним. В этой статье — история о том, как я искал ответ на вопрос «могут ли меня подслушивать?», взломал механизм обновления и в итоге... запустил на домофоне DOOM II.

Читать далее