Pull to refresh
6
0
Виктор @Borgius

User

Send message

Обзор микроволнового датчика присутствия Hi-Link LD2410

Level of difficulty Medium
Reading time 3 min
Views 16K

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

Мой выбор пал на DIY микроволновый датчик Hi-Link LD2410, расскажу почему.

Читать далее
Total votes 38: ↑38 and ↓0 +38
Comments 76

Как я победил хаос умных устройств, или Цифровая трансформация жилого пространства

Level of difficulty Easy
Reading time 9 min
Views 33K

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

Читать далее
Total votes 37: ↑37 and ↓0 +37
Comments 112

Как я сделал табличку, которая является готовой инвестиционной стратегией

Level of difficulty Easy
Reading time 8 min
Views 20K

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

Читать далее
Total votes 36: ↑30 and ↓6 +24
Comments 40

Пишем чистые тесты на JavaScript с использованием принципов BASIC

Reading time 16 min
Views 3.2K

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

Вы сталкивались с подобным?

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

Читать далее
Total votes 18: ↑16 and ↓2 +14
Comments 1

Как я создал свой дипфейк для презентации

Level of difficulty Easy
Reading time 3 min
Views 7.5K

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

В чем суть проблемы?

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

Проблема 1: Речь и звук

При записи моего голоса возникла проблема низкого качества звука и заметного акцента, что делало речь трудно разборчивой. Хотя звук можно улучшить с помощью обработки, вряд ли можно исправить неправильное произношение слов (однако есть идея и об этом ниже). Первым шагом стал синтез речи из текста с использованием голосового синтезатора, которого я обучил. Если вы заинтересованы в создании собственной модели на основе вашего голоса или другого голоса на английском без акцента, для вас подойдет видеоинструкция. Я интегрировал свою модель в Wunjo AI и потратил около 15-20 минут, чтобы превратить весь текст презентации в синтезированную речь. Обучение модели заняло у меня около суток, но так как она уже была обучена заранее, мне не потребовалось повторять этот процесс. Запись и обработка собственного голоса заняли бы гораздо больше времени, чем синтез речи.

Читать далее
Total votes 20: ↑19 and ↓1 +18
Comments 21

Ускоряем приложение: никаких фреймворков — только математика

Level of difficulty Medium
Reading time 9 min
Views 15K

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

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

Читать далее
Total votes 40: ↑36 and ↓4 +32
Comments 11

Алгоритмы балансировки нагрузок

Level of difficulty Medium
Reading time 8 min
Views 30K

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

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Total votes 107: ↑106 and ↓1 +105
Comments 16

Certified Kubernetes Security Specialist — мой опыт сдачи экзамена

Reading time 5 min
Views 4.5K

TL;DR

- отнеситесь серьезно к качеству интернет-соединения. Из РФ ВПН не нужен

- популярные курсы не охватывают экзамен полностью (есть смысл поискать старые дампы на github)

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

- за несколько дней пройдите killer.sh, получите выкладку ответов и после прохождения несколько раз пройдите у себя в домашней лабораторной

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

Читать далее
Total votes 16: ↑14 and ↓2 +12
Comments 6

Rush.js — как можно значительно ускорить сборку ваших проектов, используя кеширование

Reading time 6 min
Views 2.3K

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

Читать далее
Total votes 21: ↑20 and ↓1 +19
Comments 1

Как дизайнить приложения, если ты не дизайнер? Пошаговая инструкция

Reading time 4 min
Views 8.4K

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

Читать далее
Total votes 5: ↑3 and ↓2 +1
Comments 2

Немного о Fastify

Reading time 7 min
Views 6.6K

Почти 15 лет назад Райан Томайко (Ryan Tomayko) написал книгу "The Thing About Git" (Про Git). Это было время, когда SVN (Subversion - система управления версиями) все еще активно использовался. Мало кто понимал, почему Git такой особенный, и тогда я тоже не принадлежал к их числу. Статья Райана уловила суть Git'а и убедила меня перейти на него.

Уже было написано множество статей о том, почему и как следует принимать Fastify, но сейчас 2022 год, а Express - самый традиционный фреймворк веб-сервера для Node.js - по-прежнему имеет примерно в 49 раз больше еженедельных загрузок npm, чем Fastify:

Читать далее
Total votes 11: ↑9 and ↓2 +7
Comments 2

С днем рождения, Кевин Келли: еще 103 непрошенных совета

Reading time 12 min
Views 13K
image

Кевин Келли, создатель журнала WIRED, уже третий год подряд на свой день рождения дарит всем непрошенные советы (вот прошлый перевод на Хабре: 68 непрошеных советов (c ↑+78))

28 апреля ему исполнилось 70 лет и он выкатил еще 103 непрошенных совета (они просто взорвали HackerNews)

Хочется побыстрее поделиться этими премудростями от прикольного дядьки и поэтому выкладываю перевод «в реальном времени» (если хотите помочь с переводом — контрибьютьте тут)

  1. Примерно в 99% случаев подходящее время — прямо сейчас.
  2. Никто так не впечатлен вашим имуществом, как вы сами.
  3. Никогда не работайте на того, кем не хотите стать.
  4. Развивайте отношения с 12 людьми, которые вас любят, потому что они стоят более 12 миллионов человек, которым вы нравитесь.
  5. Не повторяйте одни и те же ошибки; попробуй сделать новые ошибки.

Читать дальше →
Total votes 22: ↑16 and ↓6 +10
Comments 7

Наедине с микросервисом — как забороть тревожность

Reading time 9 min
Views 6.3K

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

Поэтому я люблю метрики — они помогают убедиться в том, что все идет хорошо. О метриках отношений микросервисов и будет этот пост. Меня зовут Алексей Лашнев, я продуктовый разработчик в QIWI.

Читать далее
Total votes 22: ↑22 and ↓0 +22
Comments 15

Проверки работоспособности в Kubernetes

Reading time 4 min
Views 14K

В Kubernetes есть механизм проверки работоспособности, с помощью которого можно узнать, работает контейнер в pod’е или нет. В этой статье поговорим про 3 вида проверок работоспособности kubelet: пробу запуска (startup),пробу работоспособности (liveness) и пробу готовности (readiness).

Читать далее
Total votes 13: ↑12 and ↓1 +11
Comments 3

Основное про API-шлюз в Kubernetes

Reading time 6 min
Views 9.3K

Существует множество альтернатив для доступа к модулю извне кластера. Шлюз API - это определенно новинка этой области, и потому выбран темой этой статьи.

Ранее мы описывали несколько способов доступа к модулям Kubernetes. Так, например, доступ к модулю pods можно получить через его IP-адрес, но важно учитывать, что поды по своей сути являются временными. Штатный способ - настроить Service: в этом случае IP-адрес стабилен, а задача Kubernetes - обеспечивать мапироание между Service и соответствующими ей подами. В настоящий момент доступны различные виды сервисов: только внутренние, NodePort, позволяющий открыть доступа извне кластера, и LoadBalancer, который полагается на сторонний компонент - обычно это на облачный провайдер. Не будем забывать и об Ingress, обеспечивающем маршрутизацию.

Ну а API-шлюз, как новинку в этой области, мы оставили на десерт, решив посвятить ему целый пост.

Читать далее
Total votes 10: ↑9 and ↓1 +8
Comments 0

Стратегии тестирования микросервисов

Reading time 11 min
Views 31K

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

Читать далее
Total votes 15: ↑14 and ↓1 +13
Comments 4

Как внести Хаос в свой кластер k8s, и почему гении властвуют над Хаосом?

Reading time 8 min
Views 3K

Кто-нибудь из вас когда-нибудь слышал о теории “Чёрный лебедь”? Если говорить вкратце, то данная теория рассматривает труднопрогнозируемые события, которые несут за собой огромные последствия для всей системы. К примеру, ваш кластер k8s располагается в ДЦ в конкретно взятом регионе. Всё было прекрасно, но с берега пришло цунами и его затопило, вследствие чего все сервера стали недоступны и ваше приложение не работает. Так кто же в этом будет виноват? Карма? Подводные землетрясения? Ответ прост - вы сами.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 0

Блокировки MySQL: виды, проблемы и способы обнаружения

Reading time 27 min
Views 43K

Рано или поздно любой разработчик или администратор СУБД, имеющий дело с MySQL, сталкивается с проблемой блокировок. Всё дело в природе MySQL как системы с конкурентным доступом на чтение/запись. Я расскажу о видах блокировок в MySQL, их преимуществах и недостатках, о проблемах, которые они вызывают, а также дам полезные советы по обнаружению и способам борьбы с блокировками.

Читать далее
Total votes 18: ↑17 and ↓1 +16
Comments 2

Шаблонизация в CLI может быть простой

Level of difficulty Easy
Reading time 6 min
Views 3.6K

кдпв


Однажды я был маленьким, и задавался вопросом — вот если Unix way это (упрощенно) небольшие, довольно простые утилиты и библиотеки, которые делают одну вещь, но делают её хорошо (Peter H. Salus: "...that do one thing and do it well"), то… Где тогда утилита, которая занимается шаблонизацией и не хватает звёзд с неба? Вот есть у тебя некоторый шаблон, и есть некоторые данные, которые ты имеешь желание в этот шаблон подставить. Брать для этого Jinja2? Писать что-то своё используя sed + awk? Или тащить %tool_name% на несколько мегабайт ради столь тривиальной задачи?


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


  • Статическая линковка — один бинарный файл без каких-либо зависимостей (он мне понадобится в docker scratch)
  • Итоговый размер должен быть минимально возможным (постараться уместиться в 100Кб без upx)

На чем писать, если хочется боли компактного результата и быстрого выполнения — естественно, берём C. Какой шаблонизатор использовать, если хочется минимализма? Под такую задачу хорошо подойдет mustache. И вот, спустя некоторое время появляется утилита под кодовым именем mustpl (must — mustache, tpl — template).

Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 12

Как сделать много форм, не сделав ни одной

Reading time 8 min
Views 9.9K

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

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

На самом деле есть другое решение.

Читать далее
Total votes 6: ↑5 and ↓1 +4
Comments 17

Information

Rating
Does not participate
Location
San Francisco, California, США
Date of birth
Registered
Activity