Обновить

Разработка

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

Типичные проблемы с Docker и как их решать

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

Docker прочно вошел в нашу жизнь, став стандартом де-факто для контейнеризации приложений. Он обещает среду «работает на моей машине — будет работать везде», и в большинстве случаев так и есть. Но рано или поздно каждый разработчик или DevOps-инженер сталкивается с ситуацией, когда эта магия дает сбой. Контейнер не запускается, приложение не видит друг друга, а диск сервера таинственным образом переполняется.

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

Читать далее

Docker для самых маленьких: упаковываем Python-бота за 10 минут

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

Хватит запускать ботов кнопкой Run в PyCharm! Пора осваивать промышленные стандарты.
В этом туториале я простым языком объясняю, как работает Docker и зачем он нужен Python-разработчику. Мы возьмем простого Telegram-бота, напишем для него конфиг, настроим .dockerignore и запустим в изолированном контейнере. Идеально для тех, кто давно хотел разобраться с Докером, но боялся сложных инструкций.

Читать далее

Как я сделал senior-стол за $1000

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

Я решил сделать стол из дубового слэба толщиной 10 см и весом 340 кг. С точки зрения сложности: это senior стол. Вот мои выводы, ошибки, инженерные решения и расходы.

Читать далее

Мод всему голова: случаи, когда фанатский игровой контент лег в основу официальных релизов

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

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

Читать далее

Что такое преобразование Фурье?

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

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

Математики лишь в 19 веке смогли освоить этот же расчёт.

В начале 19 века французский математик Жан-Батист Жозеф Фурье открыл способ разложения любой функции на набор основных волн, или частот. Сложив эти составляющие частоты, вы получите исходную функцию. Эта техника, сегодня называемая преобразованием Фурье, позволила математику, ранее бывшему ярым сторонником Французской революции, инициировать свою собственную, математическую революцию.

Читать далее

Как мы создаём HD-карты для автономного транспорта: устройство map-editor

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

Привет! Меня зовут Коля, я руковожу группой разработки геосервисов автономного транспорта. Одно из наших направлений деятельности — разработка инструментов картографии. Обычная дорожно‑уличная сеть подходит людям и приложениям вроде навигаторов, но роботам этого мало: им необходимы HD‑карты, способные описывать окружающий мир с десятками слоёв атрибутов и точностью до сантиметров. Такие карты кладут в основу алгоритмов локализации, навигации и поведения, и именно от их качества зависит безопасность и эффективность автономного транспорта.

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

В этой статье мы разберём, как устроен один из ключевых инструментов — map‑editor, обеспечивающий создание и развитие HD‑карт для роботов, какие технические вызовы встречаются по пути и как мы с ними справляемся. Среди наших технологий — FastAPI и C++ для серверной логики, PostgreSQL с PostGIS для работы с геометрией, интеграция с облачными хранилищами и распределёнными вычислениями, а также элементы автоматизации на базе ML.

Читать далее

Прекратите создавать интерфейсы

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

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

У этой заметки сложная судьба, мне загорелось написать ее еще летом, но совершенно не хотел говорить об очевидных вещах и писать миллион первую статью со ссылкой на гугловский go code review comments. Тема уже разобрана всеми кому не лень, на русском языке вот у  Николая @JustSkiv Тузова, есть замечательное видео на его ютуб канале, раскладывающее по полочкам, для чего это нужно.

Последний дисклеймер и перейду к сути: тема на самом деле очень обширна и я сознательно сконцентрировался на одном аспекте (неуместные определения интерфейсов). Буду рад, если продолжим общение в комментариях, очень не хватает Хабра начала 10-х годов, с живыми, а иногда и крайне горячими, инженерными дискуссиями.

Читать далее

Щёлк-щёлк — и поехали: как релейная автоматика стала прообразом IIoT. Часть 1

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

Если когда-нибудь у вас в руках было электромагнитное реле, то вы знаете этот приятный щелчок, когда оно срабатывает. За этим звуком — целая эпоха.

Задолго до того как умный чайник получил Wi-Fi, а на заводах развернули первые SCADA, инженеры XX века строили умные системы на реле, шаговых искателях и Булевой алгебре. 

Без микропроцессоров, без языков верхнего уровня, без OTA-обновлений. Только электромеханика.

Щёлк-щёлк и ехали поезда, крутились турбины, говорили абоненты. Давайте посмотрим, какой была автоматизация до появления ПЛК. И оценим вклад в историю прогресса одной из ключевых промышленных технологий - релейной автоматики.

Читать далее

Я устроился джуном в open source проект. Вот что получилось

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

Всем привет!

Не так давно вышла статья о том, как Валентин Ульянов aka @misterzsm нанял джуна в свой open source проект. Я и есть тот самый джун Рома (на самом деле я Рамазан).

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

Читать далее

Гипотеза о роли скрытого описательного языка в механизмах мышления и о том, как у этого языка появляется смысл

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

 Я знаю, это будет звучать громко и самонадеянно, но все-таки я это скажу: мне кажется, я нашел ключик к проблеме объяснения и конструирования мышления. Нет, это еще не решение всей проблемы, но многообещающая возможность к нему приблизиться. Полгода назад у меня возникла идея, что в основе феномена мышления (даже у «низкоразвитых» животных вроде крабов или мышей) может лежать оперирование особого класса описательной языкоподобной структурой. Я попытался развить этот подход и обнаружил, что он как будто бы позволяет сформулировать много важных философских проблем о мышлении в виде точных математических вопросов. С тех пор мне удалось продвинутся в решении некоторых из них и получить несколько интересных, на мой взгляд, результатов на стыке логики и психологии. Я собираюсь написать серию статей, чтобы поделиться своими находками и привлечь энтузиастов вместе исследовать возможности, которые они открывают. Перед вами первая статья из этой серии.

Познакомиться с исследованием

Как мы разработали решение, чтобы ловить сбои в логировании

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

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

Читать далее

Koda CLI: AI-помощник прямо в терминале – бесплатно, без VPN, с топовыми моделями

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

Мы в Koda верим, что современные инструменты должны быть доступны каждому разработчику, независимо от инфраструктурных ограничений, VPN или способов оплаты. Поэтому после релиза Koda для VS Code мы сделали следующий шаг – представляем Koda CLI.

Это полноценный AI-помощник в терминале, который работает без VPN, мгновенно отвечает, понимает русский язык и предоставляет лучшие модели – прямо там, где вы кодите каждый день.

Что умеет Koda CLI?

Читать далее

Облачное зеркало на VPS: бэкапы, снапшоты и образ диска

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

Как известно, все пользователи делятся на два типа: кто ещё не делает бэкапы и кто уже делает. Из первой категории опечаленные люди переходят во вторую, но и первая бесконечно пополняется новичками.

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

Читать далее

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

В кэше — фотка, в ней payload: новый метод скрытой доставки зловредов

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

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

В типичных сценариях злоумышленники пытаются заставить жертву скачать исполняемый файл из сети — но тут всё хитрее. Страница прячет в кэше браузера вредоносный файл, замаскированный под изображение, а затем просит жертву выполнить «безобидную» команду, которая извлекает payload из кэша. В результате получаем локальный запуск кода, который не фиксируется средствами сетевого мониторинга. 

По сути, атака умело сочетает две техники: принуждение к локальному исполнению (ClickFix/FileFix) и контрабанду кэша (Cache Smuggling). В статье я подробно разберу каждый из этих приемов и покажу, как можно сделать доставку полезной нагрузки еще более незаметной.

Читать далее

Мои любимые CSS-трюки, которые вы могли упустить

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

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

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

Ничего против них не имею. Просто хочу рассказать о нескольких приёмах, которые вы могли упустить. Они помогут вам в разных ситуациях.

Давайте посмотрим, что я вам подготовил.

Читать далее

Специфика перехода к сервисной архитектуре в финтех-проектах: кейс команды разработки финтеха ВКонтакте

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

Рефакторинг исторического кода с переходом на сервисную архитектуру напоминает игру в дженгу — надо аккуратно перестроить существующий проект и не сломать его. Но если вы меняете архитектуру с учётом жёстких требований PCI DSS в финтех-проекте, то одновременно с игрой в дженгу вам нужно балансировать на шаре и решать сложные уравнения. В этом мы убедились на собственном опыте.

Меня зовут Анатолий Яшкир. Я руководитель разработки финтеха ВКонтакте. В этой статье расскажу о специфике финтеха и нашем кейсе рефакторинга исторического кода с переходом на сервисную архитектуру. 

Читать далее

Система мониторинга и подсчета перелетных птиц

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

Идея проекта возникла этой весной, когда в наши края приезжал вице-президент Союза охраны птиц России Алексей Леонович Эбель, для учёта гуменника, мигрирующего через Алтайский край.

Проблема в том, что гусь летит 5-6 недель и неравномерно (насколько неравномерно - это базовый вопрос). И ещё нерешённая задача: гусь может лететь ночами.

Алексей Леонович вычислил место, где гуменника во время весенней миграции учитывать оптимальнее всего. Эта точка оказалась недалеко от меня. За 2 плюс один неполный световых дня в коридоре 7-8 км он насчитал почти 15.000 пролётных особей, а мы с друзьями ему в этом немного помогали.

Понятно, что посчитать это вручную более-менее точно не получится, поэтому я сразу подумал о том, чтобы автоматизировать задачу.

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

Читать далее

Что происходит, когда вы добавляете строку в PostgreSQL

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

Привет, Хабр! Меня зовут Александр Гришин, я руководитель по развитию продуктов хранения данных в Selectel. Сегодня я предлагаю продолжить разбираться с PostgreSQL и заглянуть еще глубже в эту кроличью нору. Посмотрим, что происходит под капотом СУБД во время записи строк, поверхностно разберем, как устроены страницы памяти, что такое tuple, tuple chain, fillfactor, VM и FSM. Эти знания помогут разработчикам не только понимать, как работает база данных, но и эффективно управлять ее производительностью в продакшене.

Если вы начинающий DBA, разработчик, инженер или архитектор облачной инфраструктуры, эта статья для вас. Погнали?

Погнали!

Закрепи меня покрепче: Pin, самоссылки и почему всё падает

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

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

Сегодня я хочу поделиться своим опытом и знаниями о pinning в Rust, замечательной конструкции Pin, которая поначалу вызывает вопросы, зачем нужен какой-то пин, если и без него всё работало?

Но вот незадача, без Pin не реализовать безопасно ни одну хитрую программку, самоссылающиеся структуры и связанные с ними асинхронные генераторы. В этой статье я расскажу, почему вообще появился Pin/Unpin, как он спасает от падений программы, и как правильно его применять на практике.

Закрепиться

Открывашка из трубки домофона

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

Всем привет! Я Андрей, в Яндексе работаю над IoT‑железками в Городских сервисах. Но сегодня речь пойдёт не о них. Эта история началась с неожиданной находки в новой квартире — с обычной, на первый взгляд, трубки домофона. Кажется: ну трубка и трубка. Но вот что бросилось в глаза: она была подключена по Ethernet. А если есть Ethernet, значит, внутри что‑то с TCP/IP, то есть уже маленький компьютер.

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

Я давно увлекаюсь железками и автоматизацией дома — эдакий «полу‑умный» дом, который вроде бы и работает сам, но иногда всё же требует вмешательства человека. Поэтому, обнаружив Ethernet‑домофон, я и решил разобраться в нём. 

Основная цель эксперимента — научить трубку открывать дверь по решению автоматизации в Home Assistant. Побочная — внести вклад в сообщество и, возможно, помочь самому вендору, если в процессе вскроются любопытные особенности или проблемы. 

Открыть дверь