Как стать автором
Обновить
-14
0

Инженер

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

Вы должны перестать вручную писать Dockerfile'ы

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

Вы тоже устали вручную заполнять Dockerfile и docker-compose.yaml под каждый новый проект?

Я всегда задумывался, применяю ли я известные best practices, когда пишу конфиг для Docker, и не занесу ли я случайно какие-нибудь уязвимости, вручную заполняя конфиг-файлы.

Что же, теперь мне больше не придется беспокоиться об этом, благодаря добрым людям из Docker, которые недавно реализовали инструмент для этого - docker init .

Интересно, как экономить время и быстро генерировать конфиги, даже если вы не профи в Docker? Прошу под кат.

Читать далее
Всего голосов 70: ↑71 и ↓-1+72
Комментарии63

Быстрое умножение многочленов при помощи преобразования Фурье — это просто

Время на прочтение9 мин
Количество просмотров78K
Добрый вечер.
Этот пост посвящён быстрому преобразованию Фурье. Будут рассмотрены прямое и обратное преобразования (в комплексных числах). В следующей части я планирую рассмотреть их применения в некоторых задачах олимпиадного программирования (в частности, одна задача про «похожесть» строк), а также рассказать про реализацию преобразования в целых числах.
БПФ — это алгоритм, вычисляющий значения многочлена степени n=2k в некоторых n точках за время O(n⋅logn) («наивный» метод выполняет ту же задачу за время O(n2)). За то же время можно выполнить и обратное преобразование. Так как складывать, вычитать и умножать массивы чисел гораздо легче, чем многочлены (особенно умножать), БПФ часто применяется для ускорения вычислений с многочленами и длинными числами.
Читать дальше →
Всего голосов 112: ↑105 и ↓7+98
Комментарии38

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

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

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, десять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого.

Читать далее
Всего голосов 506: ↑498 и ↓8+490
Комментарии351

Корутины C++ для чайников: пишем асинхронный веб-клиент

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

Написать этот материал меня побудило... отсутствие хороших статей по корутинам в C++ в русскоязычном интернете, как бы странно это не звучало. Ну серьезно, C++20 существует уже несколько лет как, но до сих пор почти все статьи про корутины, что встречаются в рунете, относятся к одному из двух типов. Или обзор начинается с самых глубин и мелочей, пересказывая cppreference, а потом автор выдыхается и все сводится к "ну а дальше все понятно, возьмите и примените это в своем коде", что напоминает известную картинку с совой. Либо иногда в статьях рассматривается применение корутин на примере генераторов, и этим все и ограничивается. Но, давайте будем честны, генераторы — это замечательно, но за все время моей многолетней карьеры разработчика я, вероятно, делал что‑то подобное генераторам разве что разок, в то время как асинхронный ввод‑вывод приходится использовать почти в каждом проекте. И поэтому меня гораздо больше интересует реализация асинхронного ввода‑вывода с использованием корутин, а не генераторы. Поэтому пришлось разбираться во всем самому.

Читать далее
Всего голосов 68: ↑66 и ↓2+64
Комментарии34

Итак, вы унаследовали старую кодовую базу на C++. Что дальше?

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

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

Теперь вы отвечаете за кодовую базу на C++. Она большая, сложная и своеобразная; достаточно слишком долго на неё посмотреть, как она начинает разваливаться разными интересными способами. Иными словами, это легаси.

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

И что делать теперь?

Не волнуйтесь, у меня такое случалось очень много раз и в разных компаниях (кто-то язвительный может спросить: а разве кодовые базы на C++ бывают какими-то другими?), выход есть, он не особо сложен и поможет вам действительно устранять баги, добавлять фичи, а то и когда-нибудь переписать её.

В этой статье я расскажу о том, что оказалось полезным для меня, и о том, чего стоит всячески избегать.
Читать дальше →
Всего голосов 71: ↑70 и ↓1+69
Комментарии26

Загадки быстрого преобразования Фурье

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

• Метод фазово-амплитудной интерполяции (ФАИ)

• Точное определение частоты, амплитуды и фазы гармоник сигнала

• Выявление резонансов

Алгоритм быстрого преобразования Фурье (БПФ) - важный инструмент для анализа и обработки сигналов различной природы.

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

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

В статье представлен действенный способ преодоления таких "неудобных" особенностей алгоритма.

Читать на английском

Читать на русском
Всего голосов 14: ↑13 и ↓1+12
Комментарии94

Простыми словами о преобразовании Фурье

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?
Всего голосов 203: ↑192 и ↓11+181
Комментарии188

Понимание алгоритма БПФ

Время на прочтение7 мин
Количество просмотров99K
Здравствуйте, друзья. Уже завтра стартует курс «Алгоритмы для разработчиков», а у нас остался один неопубликованный перевод. Собственно исправляемся и делимся с вами материалом. Поехали.

Быстрое преобразование Фурье (БПФ — англ. FFT) является одним из важнейших алгоритмов обработки сигналов и анализа данных. Я пользовался им годами, не имея формальных знаний в области компьютерных наук. Но на этой неделе мне пришло в голову, что я никогда не задавался вопросом, как БПФ так быстро вычисляет дискретное преобразование Фурье. Я стряхнул пыль со старой книги по алгоритмам, открыл ее, и с удовольствием прочитал об обманчиво простой вычислительной уловке, которую Дж. В. Кули и Джон Тьюки описали в своей классической работе 1965 года, посвященной этой теме.



Цель этого поста — окунуться в алгоритм БПФ Кули-Тьюки, объясняя симметрии, которые к нему приводят, и показать несколько простых реализаций на Python, применяющих теорию на практике. Я надеюсь, что это исследование даст специалистам по анализу данных, таким как я, более полную картину того, что происходит под капотом используемых нами алгоритмов.
Читать дальше →
Всего голосов 21: ↑16 и ↓5+11
Комментарии6

Самое понятное объяснение Специальной теории относительности

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

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

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

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

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

SPI-NOR Flash на примере MX25R6435F

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

Обзор Off-Chip SPI-NOR Flash памяти на примере микросхемы MX25R6435FZNI.

Число хранилище для электронных плат. Если расшифровывать маркировку, то внутри 8MByte NOR-Flash память с SPI интерфейсом, питанием 1.65V-3.6V, в корпусе 8-WSON и индустриальном диапазоне переносимых температур (-40°C to 85°C).

Читать далее
Всего голосов 16: ↑8 и ↓80
Комментарии9

Основы CI/CD. Знакомство с Jenkins

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

В новой статье рассмотрим основы CI/CD и познакомимся Jenkins. Вы узнаете, где применяется Jenkins и какие проблемы помогает решить, поймёте логику архитектурных решений и особенности структуры каталогов. А ещё научитесь устанавливать Jenkins и производить базовую конфигурацию.

За основу статьи взят первый урок нашего практического курса «CI/CD с Jenkins».

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

Руководство по Docker Compose для начинающих

Время на прочтение9 мин
Количество просмотров773K
Автор статьи, перевод которой мы сегодня публикуем, говорит, что она предназначена для тех разработчиков, которые хотят изучить Docker Compose и идут к тому, чтобы создать своё первое клиент-серверное приложение с использованием Docker. Предполагается, что читатель этого материала знаком с основами Docker. Если это не так — можете взглянуть на эту серию материалов, на эту публикацию, где основы Docker рассмотрены вместе с основами Kubernetes, и на эту статью для начинающих.

image
Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии14

Как россиянину открыть ИП и ООО в Киргизии?

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

Кыргызстан — государство с достаточно лояльными условиями регистрации и ведения бизнеса. Кроме того, здесь русский язык имеет статус официального, что упрощает ведение документооборота. Наиболее удобными для ведения мелкого и среднего бизнеса в Кыргызстане являются две формы — ИП, индивидуальный предприниматель и ОсОО (Аналог ООО в РФ).

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

Литье пластика в силиконовую форму. Первый опыт

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

Теперь можно взять весь этот бардак: застывшие остатки пластика, силиконовые формы, трубки и подложки, клей, спрей, старые газеты, наждачную бумагу… и выбросить в мусорку. На все было потрачено несколько выходных и около двух тысяч рублей в пересчете на истраченный объем. Получилась она застывшая воронка, деталь с пузырями, вздутая подложка и пара дефектных силиконовых форм. Из расходников можно вспомнить два кислых чупа-чупса под литники, которые оказались без жвачки. Да, теперь все стало понятно, можно искать исполнителя.

- Сможете изготовить такую деталь?
- Да, но скругления нужно заменить на фаски.

Далее много фотографий
Всего голосов 48: ↑48 и ↓0+48
Комментарии52

Исследование звука: удаление шумов

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

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

Алгоритмы динамической обработки звука работают с потоковым аудио, когда статически обрабатывают уже готовую звуковую дорожку.

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

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

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

Цель данной работы – исследовать алгоритмы удаления посторонних шумов из аудио дорожки.

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

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

STM32. Процесс компиляции и сборки прошивки

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров19K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?

Всем кому интересно — добро пожаловать под кат! 🙂

Читать дальше →
Всего голосов 124: ↑123 и ↓1+122
Комментарии67

Как работает сеть в контейнерах: Docker Bridge с нуля

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

В этой статье мы собираемся разобраться со следующими вопросами:

* Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у них есть отдельные сетевые среды?

* Как превратить контейнеры в дружелюбных соседей и научить общаться друг с другом?

* Как выйти во внешний мир (например, в Интернет) изнутри контейнера?

* Как связаться с контейнерами, работающими на хосте Linux, из внешнего мира?

* Как реализовать публикацию портов, подобную Docker?

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

Как я устроился в Амазон и перестал переживать за свой английский

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

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

Меня зовут Андрей Столбовский, последние 5 лет я работал в Яндексе, а в прошлом году перешёл в Амазон и теперь работаю Software Development Manager в AWS Redshift – это мой первый полноценный опыт работы в международной компании. 

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

Итак, поехали. 

Поехали!
Всего голосов 282: ↑279 и ↓3+276
Комментарии160

Как стать VPN провайдером за один вечер

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

Рассказываю о своём опыте использования Xray (с протоколом VLESS-Reality) - одного из лучших решений для преодоления интернет-цензуры на сегодняшний день. Я потратил много времени на то, чтобы разобраться с ним - теперь вам достаточно одного вечера, чтобы поднять свой сервер на несколько десятков пользователей, c xray на борту!

скрипт ex.sh для простой настройки и установки; есть поддержка Docker

легко добавлять пользователей; клиентские конфиги в форме url-ссылок

правильные конфиги: скрытность + удобство

трафик популярных российских сайтов идёт напрямую, a не через сервер

для xray есть приложения под все популярные ОС - делюсь инструкциями

только https, нет udp; торренты через сервер блокируются по возможности

мой проект на гитхабе: easy-xray

Интересны детали? Добро пожаловать под кат
Всего голосов 71: ↑70 и ↓1+69
Комментарии142

Утечки памяти, которые не утечки

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

Что случилось? Авария, ужас-ужас

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

В один прекрасный день боевое сопровождение приходит с ужасной проблемой — память в контейнерах Node.js течёт, сервисы падают с OOM каждый день, все пропало!

Да, картинка действительно удручающая. Всё время, когда есть нагрузка, память в контейнере прирастает и почти не очищается при снятии нагрузки. Все остальные метрики, которые мы собирали были в норме: event loop lag, использование CPU, active request, open handles. Прирастала только используемая память и незначительно увеличивалось время отклика сервиса.

Что-ж, выглядит как классическая утечка, надо искать источник.

Читать далее
Всего голосов 108: ↑107 и ↓1+106
Комментарии15
1
23 ...

Информация

В рейтинге
5 128-й
Откуда
Санкт-Петербург и область, Россия
Зарегистрирован
Активность