Обновить

Разработка

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

GitLab: Основы написания Pipeline 1/3

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

Всем привет!

Так вышло, что в месте, где я преподаю и занимаюсь менторством стажёров, начался переход с GitHub-репозиториев на GitLab, развёрнутый на собственных серверах. Пока что перенесли не все проекты, но даже этого оказалось достаточно, чтобы у стажёров возникло немало вопросов — особенно в части настройки CI/CD-процессов.

Формально CI/CD в GitHub и GitLab решают одну и ту же задачу, но на практике подходы, терминология и детали конфигурации отличаются. Из-за этого попытки «сделать как в GitHub Actions» часто приводят к путанице и ошибкам.

У меня уже есть статья про CI/CD и workflow, но она целиком посвящена GitHub Actions. Чтобы сократить количество вопросов, разночтений и бессонных ночей у стажёров, я решил написать отдельную статью про CI/CD именно в GitLab — с учётом его особенностей и типичных подводных камней.

Если вам интересны подобные материалы, подписывайтесь на Telegram-канал «Код на салфетке». Там я делюсь гайдами для новичков, полезными инструментами и практическими примерами из реальных проектов. А прямо сейчас у нас там ещё и проходит новогодний розыгрыш.

Читать далее

Теория и практика интеграции СХД с OpenStack

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели9.3K

Всем привет! Меня зовут Карина Кошева. Я тестирую совместимость СХД с системами виртуализации в YADRO. Мы проводим такое тестирование, потому что нам важно проверять, насколько успешно система будет работать в инфраструктуре заказчика.

Нам важно не только проверить базовую функциональность, но и убедиться, что СХД выдержит типичные и нетипичные сценарии заказчика: высокую нагрузку сотен и тысяч ресурсов, постоянные операции чтения и записи, работу со снапшотами и редкие, но критичные сценарии отказов компонентов. Именно это дает нам тестирование под нагрузкой. Как мы проводим такое тестирование, читайте под катом.

Читать далее

FTP‑сервер на Linux: настройка для домашнего проекта

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

Флешки постепенно уходят в прошлое, а облачные хранилища не всегда подходят для домашних проектов и экспериментов. Иногда хочется простого и предсказуемого способа обмена файлами — без подписок, лимитов и лишней инфраструктуры.

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

В этой статье вы найдёте пошаговый гайд по развёртыванию FTP-сервера на VPS UltraVDS под управлением Debian 12 с использованием vsftpd (Very Secure FTP Daemon).

Читать далее

Как я скрещиваю Arduino и Lego. Продолжение разработки и появление редактора КонтрБагКОД

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели13K

Продолжение статьи «Как я скрещивал Ардуино и лего».

Если вкратце, я столкнулся с проблемой выбора контроллера для обучения детей среднего школьного возраста (5-8 класс), мне не понравились готовые решения, и я решил разработать свой контроллер на базе Arduino Nano, со встроенными драйверами двигателей и закрытым корпусом, совместимым с Lego. Но по большому счету я это делал, потому что могу :)

С момента прошлой статьи прошло более полугода. За это время многое произошло. Я разработал новые и переработал старые корпуса для датчиков и контроллера. Собрал небольшую партию устройств. Запустил сайт и даже разработал свой блочный/кодовый редактор для контроллера ZERO и других Arduino подобных плат. Но обо всем по порядку...

Читать далее

Новое железо для ИИ. Вероятностные чипы Extropic

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

Если случится технологическая сингулярность, то её начало почти наверняка находится в начале 21 века. Сейчас именно тот период, когда начинается фундаментальный сдвиг в развитии человеческой цивилизации. И можно своими глазами наблюдать, как это происходит.

Никто не знает, какие именно признаки указывают на начало изменений. Это могут быть маленькие, на первый взгляд незначительные новости, события в сфере технологий, науки, бизнеса. Кто знает, может, именно в 2025 году изобрели микросхему, которая станет ключевой для «Скайнета» будущего?

Читать далее

От первой статьи на Хабр до книги за десять лет

Время на прочтение7 мин
Охват и читатели18K

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

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

Привет, Хабр! На связи Владимир Туров, разработчик в Selectel. В этой статье — о моем пути: как и зачем технарю писать тексты, чем создание публикации на Хабре отличается от работы над книгой. Также делюсь тем, что у меня получилось.

Читать далее

3 года Angie

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

Всем привет!

Нашему веб-серверу Angie исполнилось три года. Становится хорошей традицией, что к этой дате выходит текст, в котором мы — основатели Angie Software — описываем, как прожили последний год, немного говорим про состояние опенсорс проекта и его места в отрасли и мире. Надеемся, что и в этой простыне вы найдете для себя много чего интересного.

В прошлом году текст «Два года Angie», кажется, вам понравился. В нем мы более-менее подробно писали о том, как именно создавалась компания Angie Software, почему вообще мы стартовали с опенсорса, какую роль в появлении Angie сыграли китайские товарищи, и как мы, сообразив, что заработать на опенсорс проекте мы не можем, стремительно переобулись в сторону производства целой линейки продуктов. Ну и еще немного плевались в сторону F5, которая вымарала наших коллег из истории Ngnix. Кому интересно, как все начиналось, почитайте.

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

Устраивайтесь поудобнее, приятного чтения.

Leetcode. С нуля до 500+ задач. Сможешь и ты

Время на прочтение6 мин
Охват и читатели27K

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

Сегодня я расскажу вам про мой путь от 0 до 500+ задач на Leetcode. Сначала, пару слов о себе: достаточно слабое образование, завалил кучу собеседований на алгоритмы (например, в Авито где-то в 2020 году), никогда не умел решать задачи, и не любил. Долгое время узнав о секции алгоритмов просто отказывался от собеседований. Сейчас не боюсь и могу. Даже в Бигтех эту секцию проходил несколько раз.

Я делал всякий фронтенд, потом стал делать бекенд (на NodeJS), но алгоритмы никогда не получались.

И вот, засучив рукава, я решил разделаться с этим безобразием раз и навсегда. Мой профиль на LeetCode на сегодняшний день выглядит так:

Решать задачи круче

Индикация раскладки клавиатуры подсветкой — решение для GNOME

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели18K

Несмотря на весь технический прогресс IT, мне за всё время так и не удалось повстречать убедительное решение проблемы ввода «ghbdtn» вместо «привет» или «lf» вместо «да» — путаницы с раскладкой клавиатуры при наборе текста.

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

Я опишу реализацию решения для среды рабочего стола GNOME, проверенное на дистрибутивах Fedora 43 и Ubuntu 24.04.

Читать далее

Как поменять антивирусный движок и не дать ему съесть всю память

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

Привет, Хабр! Меня зовут Максим Галаганов, я ведущий разработчик систем доставки почты в Mail. Занимаюсь в основном почтовым сервером, но сегодня расскажу о другой задаче — как мы меняли вендора антивирусного решения. API нового решения кардинально отличался от старого, и пришлось изрядно поизобретать, чтобы всё заработало.

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

Читать далее

Ёлочная игрушка, на которой запустили Doom

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

Близятся Новый год и Рождество, а значит, ёлки и всё связанное с ними: гирлянды, украшения и, разумеется, игрушки. Праздник слишком уж весёлый, и я решил, что ему не хватает мрачной игры, поэтому напечатал маленькую ёлочную игрушку в виде модели IBM PC, засунул в неё самый маленький ЖК-дисплей, который смог найти, добавил туда процессор и логику, а также аккумулятор. Это устройство может висеть на ёлке и показывать демонстрационный режим Doom со звуком и музыкой. Но и это ещё не всё: если подключить ней любую BLE-клавиатуру или джойстик, то можно будет самому убивать миллиметровых зомби, какодемонов и импов.

Читать далее

Пишем на С++ 23 под Windows 95, не вызывая подозрение у санитаров

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

Что, если я скажу вам, что можно писать код на свежайшем C++23 с модулями, лямбдами и constexpr, а потом запустить его на Pentium с 16 МБ ОЗУ под Windows 95? Звучит как магия или безумие, но это работает.

В этой статье я покажу, как:

Настроить компиляцию в Visual Studio 2022 под 32-битный x86 без исключений и стандартной библиотеки. Создать минимальную реализацию std::string и аллокаторов для работы на чистом WinAPI. Собрать проект линкером 1998 года и запустить его на Windows 95. Сохранить единый код для современных и ретро-систем, используя возможности C++23.

Читать далее

Инструкция: настройка дополнительного публичного IP-адреса на облачном сервере в Linux

Время на прочтение6 мин
Охват и читатели12K

Итак, вы назначили на сервер оба IP-адреса, корректно прописали настройки сети, но работает только один канал связи. Запросы уходят через один интернет-канал, хотя активны оба. 

Дело в том, что в Linux-системах может быть только один маршрут по умолчанию (default gateway). Если у сервера несколько внешних интерфейсов с разными подсетями, то ответы на запросы, пришедшие через второй интерфейс, сервер попытается отправить через основной шлюз таблицы маршрутов. Это приведет к асимметричной маршрутизации и отбрасыванию пакетов. 

Привет, Хабр! Меня зовут Саломея Яковлева, я специалист продуктовой поддержки в Selectel. В этой статье мы разберемся, как избежать такой проблемы с помощью механизма policy-based routing (PBR) на базе iproute2: создадим отдельные таблицы маршрутов и правила, направляющие трафик через правильный шлюз. 

Читать далее

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

Eventually-consistent СУБД — всё?

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

В начале 2010-х в профессиональном сообществе разработчиков и архитекторов распределенных систем широко обсуждалась идея, что мир баз данных вступает в новую эру. На фоне успехов крупных интернет-сервисов термин BASE начал использоваться как противопоставление классическому ACID. Хайп вокруг NoSQL, CAP-теоремы и масштабируемых систем породил лозунги вроде «SQL умер», «ACID — для банков, а мы делаем веб», «eventual consistency — это нормально».

Однако спустя полтора десятилетия крупные облачные и корпоративные платформы по-прежнему говорят языком транзакций, изолированных операций и строгой согласованности. 

Что же произошло? Была ли «битва ACID и BASE» реальным технологическим разломом или лишь отражала ограничения своего времени? 

В этой статье мы разберём, как возникли ACID и BASE, почему BASE быстро стал популярен и что на самом деле означает тезис «победил ACID» в 2020-е годы.

Читать далее

Google скрывает правду? Почему ИИ запрещает рисовать Винни-Пуха

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

Недавно я опубликовал исследование: генератор изображений Google Nano Banana показывал почти любой момент мировой истории, если дать GPS-координаты и дату - кроме «Человека с танком» 5 июня 1989 года в Пекине, на следующий день после бойни на площади Тяньаньмэнь.

Пропуск бросался в глаза, потому что Nano Banana без проблем генерировал другие политически острые и шокирующие моменты: от президентских убийств (да, он покажет, как стреляют в JFK, и даже из прицела винтовки) до терактов и стихийных бедствий. Цензурировались только события, критичные к Компартии Китая.

Кто-то недоумевал: «Неужели Google цензурирует весь мир из-за законов Китая?», другие, включая китайских академиков, писали мне приватно: «Нашли ещё более жёсткие пробелы».

Читать далее

«Чернобыль» на диске: как вирус CIH поселился в Half-Life

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

Здравствуйте, уважаемые читатели!

Ох, не подумал бы, что буду устанавливать операционную систему Windows 95 в 2025 году, спустя 30 лет с момента её выхода. Но наступило время чудовищных экспериментов, разящих «железку» наповал! Сегодня мы будем мутировать в учебных целях. В качестве мутанта выступит вирус CIH.1003, навеки прожжённый на компакт-диске с игрой — и не вылечить его оттуда, ну вот никак. Мы наглядно увидим запуск заражённой игры, момент заражения, «окирпичивание» материнской платы, последствия и процедуру «лечения».

Данный эксперимент проводится исключительно в познавательных целях — на своём железе, на своём софте, в изолированной от сети среде — и преследует цель показать, как мы выживали в пререлизной заражённой среде «Half-Life: Day One».


Кто здесь Гордон Фримен?

Ассемблер для гоферов. Стек. Особенности amd64, arm64 и arm. Часть 3

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

В этой части мы научимся создавать и использовать локальные переменные на стеке в наших ассемблерных функциях, а также поговорим о различиях процессорных архитектур и о том, как их использовать в Go-ассемблере.

Читать далее

Теги структур — худшее что есть в go

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

Всем доброе время суток. Я пишу всякое на Go в Ви.Tech (IT-дочка ВсеИнструменты.ру) и, честно говоря, обожаю этот язык. Когда говорят о проблемах Go, обычно вспоминают отсутствие наследования или своеобразную обработку ошибок. Гораздо реже речь заходит о том, что, на мой взгляд, действительно можно отнести к проблемам.

Читать далее

Ловушка профилирования

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели12K

Оптимизация и профилирование C++: branchless-код проиграл обычному if-else. Что пошло не так? Разбираемся вместе.

Читать далее

Обновление T-Pro 2.1: как мы улучшили Instruction Following и Tool Calling

Уровень сложностиСложный
Время на прочтение14 мин
Охват и читатели9.4K

Всем привет! На связи Толя Потапов и команда ML Т-Банка. Этим летом мы выпустили большую языковую модель T-pro-2.0 — эффективную русскоязычную модель с гибридным подходом к reasoning. Сегодня выпускаем обновление T-pro-2.1, в котором закрываем два самых заметных слабых места 2.0: следование инструкциям и tool calling.

Заодно мы обновили и T-lite-2.1. Лайт-линейка долго оставалась на версии 1.0, хотя именно ее чаще всего берут энтузиасты и команды, которым важны скорость и простота развертывания. В 2.1 мы приводим T-lite в актуальное состояние — без потери легкости, но с более современным качеством и поведением.

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

T-lite-2.1 и T-pro 2.1 — небольшое, но точечное обновление 2.0: меньше промахов в инструкциях, точнее вызов инструментов и более выверенный рецепт обучения.

Читать далее