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

Пользователь

Отправить сообщение

Запускаем PostgreSQL в Docker: от простого к сложному

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

О простых и продвинутых способах запуска PostgreSQL в Docker: добавляем healthcheck, ставим на мониторинг, настраиваем параметры.

Читать далее
Всего голосов 34: ↑32 и ↓2+35
Комментарии39

Зачем С++ в Такси? Доклад Яндекса

Время на прочтение21 мин
Количество просмотров17K
Бэкенд первой версии Яндекс.Такси, которая вышла в 2011 году, был написан на Python. Мы довольно долго не меняли основной язык, но постепенно пришли к идее о необходимости С++ в стеке технологий. Перед вами доклад о том, что мы переписали в первую очередь и почему, а также о трюках С++, которые помогают нам справляться с ростом.

— Добрый день. Меня зовут Александр Голубев, и сегодня я вам расскажу, зачем C++ появился в Такси.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+22
Комментарии18

Как устроена Единая биометрическая система

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

Единая биометрическая система (ЕБС) с 2018 года используется для идентификации человека по его биометрическим характеристикам: голосу и лицу.

Чтобы получать услуги по биометрии, пользователю необходимо зарегистрироваться в системе в одном из 13,1 тысяч отделений банков. Там операционист сделает его фотографию, запишет голос и отправит эти данные в систему. А для того чтобы компании могли оказывать по биометрии различные услуги, им необходимо провести интеграцию с ЕБС.

Оператором системы является «Ростелеком», а разработкой занимаемся мы – дочерняя компания РТЛабс .

Меня зовут Сергей Браун, я заместитель директора департамента цифровой идентичности в РТЛабс. Вместе с Артуром Душелюбовым, начальником отдела развития и разработки департамента цифровой идентичности, мы расскажем, как мы создавали платформу для любой биометрии, с какими проблемами встретились и как их решали.

Читать далее
Всего голосов 29: ↑18 и ↓11+15
Комментарии35

Легенды и мифы процессора Эльбрус в примерах

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

В ответ на мою статью про тупиковость развития линейки процессоров Эльбрус в качестве базовой платформы для отечественных general-purpose CPU, пользователь @alexanius (Алексей Маркин) написал свою статью-ответ, где привёл возражения моим тезисам. Дабы не превращать дискуссию в формат форумной перепалки, я попытаюсь структурировать изложенные возражения, максимально опустив малозначимые на мой взляд детали и не относящиеся к делу реплики. Также мы оставим на совести Алексея некорректные высказывания и переходы на личности. Это мишура, которая не поможет нам глубже понять суть проблемы.

Итак, если суммировать, то в моей статьей были приведены следующие недостатки Эльбруса:

Читать далее
Всего голосов 177: ↑156 и ↓21+185
Комментарии633

Инверсии зависимостей управления впрыском

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

Вступление


Наверняка первый вопрос, который возник у вас при взгляде на заголовок, был "Шта?". На самом деле я просто перевел фразу "Инверсия управления, внедрение зависимости" в Google Translate на китайский, а затем обратно. Зачем? Затем, что на мой взгляд, это хорошая иллюстрация того, что происходит на самом деле. Люди вокруг путают, коверкают и извращают эти понятия. По долгу службы я провожу много интервью, и 90% того, что я слышу, когда задаю вопрос про DI — честно говоря, откровенный бред. Я сделал поиск по Хабру и нашел несколько статей, которые пытаются раскрыть эту тему, но не могу сказать, что они мне сильно понравились (ладно, ладно, я проглядел только три первых страницы, каюсь). Здесь же на Хабре я встречал в комментариях такую расшифровку IoC, как Injection of Container. Кто-то всерьез предполагает, что есть некий механизм инъекции контейнеров, который сосуществует где-то рядом с DI, и, видимо, даже делает нечто похожее. Только с контейнерами. Мда. На самом деле понять внедрение зависимости очень просто, надо всего лишь…
Читать дальше →
Всего голосов 48: ↑41 и ↓7+34
Комментарии51

Эволюция Docker. Часть 1

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

20 марта 2013 года на конференции PyCon 2013, Соломон Хайкс (CEO компании dotCloud) выступил с пятиминутной презентацией The future of Linux Containers. В ней широкой общественности впервые была представлена внутренняя разработка компании dotCloud под названием Docker, а спустя несколько дней ее исходный код был выложен в открытый доступ. Хотя технологии LXC и Aufs, на которых была основана первая версия Docker существовали и активно использовались уже порядка пяти лет, но именно появление Docker послужило началом стремительного роста и эволюции систем контейнеризации, что кардинально преобразило многие процессы разработки и деплоймента программного обеспечения.

Этой статьей я собираюсь начать небольшой цикл посвященный изучению развития исходного кода Docker на протяжении нескольких лет. В первой части мы посмотрим на то, что представлял собой код на момент создания git репозитория датированного январем 2013 года. Тогда исходный код Docker (за исключением тестов) состоял всего из шести файлов общим объемом ~600 строк кода, написанных на языке Go. Это больше походило на библиотеку/api, функционал которой состоял лишь в создании, удалении, запуске и остановке контейнеров. Мы разберем принцип работы и даже сможем запустить с ее помощью подготовленный контейнер. 

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

Читать далее
Всего голосов 18: ↑17 и ↓1+22
Комментарии5

Подходим к любительскому астрофото с научной стороны. Часть третья, синтетическая

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

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

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

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

И в качестве тизера — картинка из конца статьи. ​

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Nginx. О чем не хотелось писать

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

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

Наследование директив в nginx - это классная штука. Именно наследование позволяет писать простые и понятные конфиги. При слиянии конфигураций значение директивы и её функциональность переходит из вышестоящего контекста в текущий. Логично, что наследование не происходит от параллельных контекстов, например от соседнего location или if.

Вроде бы всё хорошо. Пока не возникают исключения.

N.B.: Здесь и далее описывается работа с nginx версии 1.21.1 (если не указано иное). Всё сказанное основывается лишь на опыте и ошибках автора. Вместе с тем автор не является разработчиком nginx и даже его маститым сварщиком, поэтому не стоит принимать слова автора как догму, а, наоборот, подвергать сомнению и самостоятельному тестированию.

Размышления простого админа
Всего голосов 20: ↑20 и ↓0+20
Комментарии9

Модули, монолиты и микросервисы

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

Прим. перев.: системный архитектор Avery Pennarun, создавший VPN-решение Tailscale на базе WireGuard, размышляет об отличиях монолитов с модулями от микросервисов. Он рассказывает об эволюции подхода к модульности вообще и о том, почему изоляция до сих пор далека от совершенства, а также делится своим мнением о том, когда проводить границы между сервисами рационально.

В последнее время меня часто спрашивают, в каких случаях переход на микросервисы — хорошая затея. В статье «Systems design explains the world» я размышляю о таких типичных проблемах, как эффект второй системы, дилемма инноваторов и других. Может ли проектирование систем дать ответ на вопрос о микросервисах? Да, хотя ответы могут вам не понравиться.

Читать далее
Всего голосов 39: ↑39 и ↓0+39
Комментарии1

Встроенный контроллер одного ноутбука и его наследство

Время на прочтение15 мин
Количество просмотров18K
В этом материале я хочу немного рассказать о том, что происходит во встроенном контроллере (Embedded Controller, EC) моего ноутбука. Речь идёт о мультиконтроллере IT8586E, основанном на Intel 8051. Он встроен в ноутбук Lenovo Ideapad 310-15IKB. Но, прежде чем переходить к деталям, полагаю, нелишним будет поговорить о том, что это вообще такое — встроенные контроллеры.


Читать дальше →
Всего голосов 39: ↑36 и ↓3+53
Комментарии8

Cам себе облако: установка ELK и TICK стеков в Kubernetes

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

Казалось бы простая задача - развернуть Kubernetes кластер и в нем запустить централизованный мониторинг TICK стек и логирование ELK стек. Но для меня она осложнилась тем, что с этим технологиями я столкнулся впервые. Чтобы понять, как все работает, хотел пройти простые Quick Start инструкции. К своему удивлению, не нашел детальных актуальных описаний - либо отдельные статьи со своей спецификой, либо многостраничные книги по Kubernetes. Пока собирал пазл из многочисленных материалов, решил написать статью, в которой рассмотреть общую концепцию развертывания TICK и ELK стеков в Kubernetes. 

Для чего, вообще, решать задачу централизованного мониторинга и логирования в Kubernetes? 

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии10

Введение в современную сетевую балансировку и проксирование

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

Недавно я осознал нехватку вводных обучающих материалов о современной сетевой балансировке и проксировании. Я подумал: «Почему так? Балансировка нагрузки — одна из ключевых концепций для построения надёжных распределённых систем. Ведь должна быть доступна качественная информация об этом?» Я поискал и обнаружил, что информации мало. Статьи в Википедии о балансировке и прокси-серверах содержат обзоры некоторых концепций, но не могут похвастаться последовательным описанием предмета, особенно в том, что касается современных микросервисных архитектур. Поиск в Google информации о балансировке в основном возвращает сайты вендоров, заполненные модными терминами и скупые на подробности.


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

Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии5

Android Camera2 API от чайника, часть 2, пишем видео

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


Продолжаем разбираться с CAMERA2 API Android.
В предыдущей статье мы осваивали работу камеры, чтобы делать фоточки, используя новое API. Теперь же займёмся съемкой видео. Вообще изначально, главной моей целью был стрим по сети живого видео с камеры Android при помощи Media Codec, но так уж вышло, что сначала на сцену вылез Media Recorder и захотел поделиться с почтеннейшей публикой тем, как хорошо он умеет записывать видосики. Поэтому стримингом мы займёмся в следующий раз, а пока разберёмся, как присобачить Media Recorder к новому API. Пост про него получился довольно банальным, поэтому под кат могут заглядывать только новички и совершеннейшие чайники.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии26

Механизмы контейнеризации: cgroups

Время на прочтение11 мин
Количество просмотров115K
механизмы контейнеризации

Продолжаем цикл статей о механизмах контейнеризации. В прошлый раз мы говорили об изоляции процессов с помощью механизма «пространств имён» (namespaces). Но для контейнеризации одной лишь изоляции ресурсов недостаточно. Если мы запускаем какое-либо приложение в изолированном окружении, мы должны быть уверены в том, что этому приложению выделено достаточно ресурсов и что оно не будет потреблять лишние ресурсы, нарушая тем самым работу остальной системы. Для решения этой задачи в ядре Linux имеется специальный механизм — cgroups (сокращение от control groups, контрольные группы). О нём мы расскажем в сегодняшней статье.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии4

Доступно о кватернионах и их преимуществах

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

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

Концепция кватернионов была придумана ирландским математиком сэром Уильямом Роуэном Гамильтоном в понедельник 16 октября 1843 года в Дублине, Ирландия. Гамильтон со своей женой шёл в Ирландскую королевскую академию, и переходя через Королевский канал по мосту Брум Бридж, он сделал потрясающее открытие, которое сразу же нацарапал на камне моста.

$i^2=j^2=k^2=ijk=-1$




Памятная табличка на мосту Брум Бридж через Королевский канал в честь открытия фундаментальной формулы умножения кватернионов.

В этой статье я постараюсь объяснить концепцию кватернионов простым для понимания образом. Я объясню, как можно визуализировать кватернион, а также расскажу о разных операциях, которые можно выполнять с кватернионами. Кроме того, я сравню использование матриц, углов Эйлера и кватернионов, а затем попытаюсь объяснить, когда стоит использовать кватернионы вместо углов Эйлера или матриц, а когда этого делать не нужно.
Читать дальше →
Всего голосов 83: ↑83 и ↓0+83
Комментарии54

Заметки о вращении вектора кватернионом

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

Структура публикации


  • Получение кватерниона из вектора и величины угла разворота
  • Обратный кватернион
  • Умножение кватернионов
  • Поворот вектора
  • Рысканье, тангаж, крен
  • Серия поворотов


Получение кватерниона из вектора и величины угла разворота


Ещё раз – что такое кватернион? Для разработчика – это прежде всего инструмент, описывающий действие – поворот вокруг оси на заданный угол:

(w, vx, vy, vz),

где v – ось, выраженная вектором;
w – компонента, описывающая поворот (косинус половины угла).
Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии23

Spring boot: маленькое приложение для самых маленьких

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

Всем привет! Меня зовут Варвара и я Java Developer в компании “Цифровые привычки”. Я прошла их курс по Java-разработке и по окончании получила  оффер от компании. Сейчас я хочу поделиться материалом с одного из воркшопов, который нам проводил один из лекторов - Алексей Романов, Software Architect и преподаватель Бауманки.

В этой статье мы научимся создавать простые REST приложения. Напишем свое приложение с использованием SpringBoot, создадим свои контроллеры, воспользуемся JPA, подключим PostgreSQL.

Мы будем разрабатывать приложение в 3 этапа.

Читать далее
Всего голосов 7: ↑3 и ↓4+1
Комментарии6

Serverless глазами инженера: “используешь, перестаешь программировать, становишься оператором Амазона”

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

Обсудили с  автором телеграм-канала Так говорил 2Pizza  разработчиком Кирой 2Pizza идею и реальное применение Serverless. Технологические новинки часто используют просто потому, что это модно. По мнению Киры, хайп вокруг Serverless приведет к тому, что мы окажемся в добровольном рабстве у Амазона и Гугла. Компании будут забирать всю прибыль, а инженеры — сидеть на цепи без единой возможности сбежать.

Кира работает на американском рынке: помогает компаниям и стартапам, которые ищут лекарство от рака. В индустрии больше 10 лет, успел поработать на бекенде, фулстеке, был тимлидом.

Читать далее
Всего голосов 31: ↑29 и ↓2+39
Комментарии42

Еще раз про разбор выражений методом рекурсивного спуска

Время на прочтение4 мин
Количество просмотров19K
Я был еще школьником, когда мне в руки попала книжка «Начальный курс C и С++» от издательства Диалог МИФИ. Именно из этой книжки я узнал об основах объектно ориентированного программирования, и она же поставила передо мной проблему, которую я довольно долго не мог разрешить. В конце её было приложение с листингом программ одна из которых называлась рекурсивный калькулятор. Это и была моя первая встреча с разбором арифметических выражений методом рекурсивного спуска. До сих пор помню те долгие часы, которые были потрачены на попытки хоть что-то понять в этом коде.

Статья предназначена прежде всего для тех, кто первый раз сталкивается с задачей разбора выражений.
Читать дальше →
Всего голосов 6: ↑4 и ↓2+5
Комментарии12

Пишем комикс-приключение на Kotlin

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

Всем привет! Сегодня вас ждет легкая статья, которая расскажет как написать простую мобильную игру-викторину на Kotlin. Здесь я расскажу и наглядно покажу как выглядит Kotlin для мобильной разработки и предложу свои идеи о том, как можно структурировать подобный проект. Что же, не буду томить вас графоманией, вперед! 

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

Читать далее
Всего голосов 7: ↑6 и ↓1+7
Комментарии2

Информация

В рейтинге
3 150-й
Зарегистрирован
Активность