Pull to refresh
10
0
Юрий Попов @DjPhoeniX

Hardcore IoT fullstack dev & CTO

Send message

Экстремальная настройка производительности HTTP: 1,2M API RPS на инстансе EC2 с 4 виртуальными процессорами (vCPU)

Reading time 54 min
Views 18K

Прим. перев.: автор данного исследования — Marc Richards, Solutions Architect и DevOps-инженер — продемонстрировал потрясающую настойчивость и тщательность в тотальной оптимизации производительности веб-приложения. Получившийся материал — кладезь полезных знаний для расширения своего кругозора в области оптимизации, особенностей сетевого стека в Linux и не только, даже вне зависимости от практической заинтересованности в конечном результате автора. Приготовьтесь к по-настоящему длинному техническому путешествию с обилием терминологии, увлекательных графиков и полезных ссылок.

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

KiCad: скругление дорожек и создание каплевидных падов

Reading time 11 min
Views 12K

KiCad с годами стал намного лучше, но при этом ему по-прежнему недостаёт возможности рисовать плавные, закруглённые дорожки с каплевидными падами (teardrops). И хоть многие находят этот функционал не особо нужным, в его пользу существует ряд аргументов, которые и привели к реализации данного проекта, а именно двух плагинов — для скругления дорожек и формирования каплевидных подводов.
Читать дальше →
Total votes 80: ↑79 and ↓1 +78
Comments 32

Петля обратной связи в импульсных источниках питания

Reading time 4 min
Views 11K

Для получения требуемого напряжения в схемотехнике, как правило, используются микросхемы импульсных  DC-DC преобразователей. Очень удобные микросхемы - высокий КПД, возможность как понизить, так и повысить напряжение, миниатюрные размеры… Но иногда они словно сходят с ума: выходное напряжение начинает плавать, скакать, они издают чётко слышимый ухом свист (на самом деле свист издаёт выходной дроссель), микросхемы начинают очень сильно нагреваться (вплоть до выхода из строя).. Причём, как правило, это наблюдается не на одном-двух экземплярах, а сразу на всех устройствах из партии, то есть, налицо какая-то схемотехническая ошибка.  Вопросу “почему это происходит, и как с этим бороться” и посвящена эта статья. 

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

Несеребряные пули или кратко про методы софтостроения

Reading time 9 min
Views 11K
Давайте пробежимся по способам софтостроения, придуманным примерно за 70 лет его существования. Их не так много, как может показаться. Но достаточно много, чтобы завести в тупик.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 8

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

Reading time 8 min
Views 142K
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

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

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

Итак, сегодня я покажу, как отрисовывать подобные картинки:


Читать дальше →
Total votes 241: ↑241 and ↓0 +241
Comments 124

Пишем простой Path Tracer на старом добром GLSL

Reading time 18 min
Views 17K

На волне ажиотажа вокруг новых карточек от Nvidia с поддержкой RTX, я, сканируя хабр в поисках интересных статей, с удивлением обнаружил, что такая тема, как трассировка путей, здесь практически не освящена. "Так дело не пойдет" - сказал я и решил, что неплохо бы запилить что-нибудь небольшое из этой темы, да и так, чтобы другим полезно было. Тут как кстати API собственного движка нужно было протестировать, поэтому решил - запилю-ка я свой простенький path-tracer прямо во фрагментном шейдере. Что из этого вышло, думаю вы уже догадались по превью к этой статье

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

Реверсим и улучшаем SATA контроллер

Reading time 14 min
Views 40K

Вы когда-нибудь задумывались, как много вокруг умной электроники? Куда ни глянь, натыкаешься на устройство, в котором есть микроконтроллер с собственной прошивкой. Фотоаппарат, микроволновка, фонарик... Да даже некоторые USB Type C кабели имеют прошивку! И всё это в теории можно перепрограммировать, переделать, доработать. Вот только как это сделать без документации и исходников? Конечно же реверс-инжинирингом! А давайте-ка подробно разберём этот самый процесс реверса, от самой идеи до конечного результата, на каком-нибудь небольшом, но интересном примере!

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

Оптическая иллюзия 2020

Reading time 1 min
Views 78K
image


Я просидел у монитора 15 минут с кусками бумаги, пытаясь разоблачить подвох. Интересно, а если вместо стрелочек использовать слова «влево», «вверх», «вниз» сохранится ли эффект?

Оптическую иллюзию выложили в Твиттер 25 ноября и она бомбанула. Тысячи человекочасов потеряны, сотни тысяч листиков приложено к экрану.

Для сомневающихся:
Total votes 173: ↑154 and ↓19 +135
Comments 67

О том, что происходит, когда в поиске Google используют слово «vs»

Reading time 7 min
Views 20K
Случалось у вас такое: ищете что-нибудь в Google и вводите после искомого слова «vs», надеясь на то, что поисковик автоматически предложит вам что-то, немного похожее на то, что вам нужно?


Ввод «vs» после искомого слова

Со мной такое бывало.

Как оказалось, это — большое дело. Это — приём, который, при поиске альтернативы чему-либо, способен сэкономить массу времени.
Читать дальше →
Total votes 55: ↑53 and ↓2 +51
Comments 15

В поисках LD_PRELOAD

Reading time 12 min
Views 23K
Эта заметка была написана в 2014-м году, но я как раз попал под репрессии на хабре и она не увидела свет. За время бана я про неё забыл, а сейчас нашёл в черновиках. Думал было удалить, но авось кому пригодится.



В общем, небольшое пятничное админское чтиво на тему поиска «включенного» LD_PRELOAD.
Читать дальше →
Total votes 67: ↑67 and ↓0 +67
Comments 9

Как перетасовать песни?

Reading time 4 min
Views 14K
Мы здесь в Spotify серьёзно относимся к фидбеку от пользователей. Какое-то время назад мы заметили, что пользователи жалуются на то, что при включенном режиме случайного перемешивания плейлиста порядок песен на самом деле не случаен — например, несколько песен одного и того же исполнителя могут быть воспроизведены одна за другой, при том, что в плейлисте множество песен разных исполнителей. Пользователи спрашивали неужели мы не способны сделать такую простую вещь, как случайный порядок воспроизведения треков? Мы отвечали «Он правда-правда случаен! Мы проверяли!»

Так кто же был прав — мы или пользователи? Как оказалось — и мы, и они. Ну и вообще дело обстояло значительно серьёзнее, чем казалось на первый взгляд.

Наш точка зрения


Ещё в самом первом релизе нашего плеера в нём была функция случайного перемешивания плейлиста. Мы использовали для этого алгоритм Фишера-Йетса — и он давал идеально случайное перемешивание. Но что такое «идеально случайное»? Это значит, например, что мы можем получить один из двух нижеуказанных порядков песен с одинаковой вероятностью (разные цвета означают треки разных исполнителей):

image
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 52

Архитектура и алгоритмы индексации аудиозаписей ВКонтакте

Reading time 8 min
Views 38K


Расскажем о том, как устроен поиск похожих треков среди всех аудиозаписей ВКонтакте.

Зачем всё это надо?


У нас действительно много музыки. Много — это больше 400 миллионов треков, которые весят примерно 4 ПБ. Если загрузить всю музыку из ВКонтакте на 64 ГБ айфоны, и положить их друг на друга, получится башня выше Эйфелевой. Каждый день в эту стопку нужно добавлять еще 25 айфонов — или 150 тысяч новых аудиозаписей объёмом 1.5 ТБ.

Конечно, далеко не все эти файлы уникальны. У каждого аудио есть данные об исполнителе и названии (опционально — текст и жанр), которые пользователь заполняет при загрузке песни на сайт. Премодерации нет. В результате мы получаем одинаковые песни под разными названиями, ремиксы, концертные и студийные записи одних и тех же композиций, и, конечно, совсем неверно названные треки.

Если научиться достаточно точно находить одинаковые (или очень похожие) аудиозаписи, можно применять это с пользой, например:

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

Читать дальше →
Total votes 90: ↑88 and ↓2 +86
Comments 87

Автомонтирование файловых систем с systemd

Reading time 2 min
Views 50K
Среди множества функций, которые предоставляет systemd, есть одна, которую несправедливо забыли. Это функция автомонтирования. При настройке автомонтирования указанный каталог будет подмонтирован только после первого обращения к нему (точнее, прямо во время).

NFS over VPN


Конкретный пример: у меня есть удалённый сервер, на котором есть интересующий меня каталог. Я хочу иметь этот каталог локально на своей машине. Протокол доступа — nfs. Т.к. он не имеет шифрования, то разумным решением выглядит использование vpn-канала до сервера.

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

Как оно устроено


Systemd имеет специальный вид automount-юнитов, которые позволяют автоматически монтировать указанный каталог.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Comments 29

Хочу отказаться от услуг РосКомНадзора по защите меня от информации (в сети). Как это сделать?

Reading time 3 min
Views 94K

"Какая форма заявления должна быть? Куда подавать?"


Я задал (кеш гугла) такой вопрос на Тостере. Его удалили через некоторое время, так как он "вне тематики ресурса". Далее я попросил у модератора разъяснить поподробней и он ответил: "Это вопрос дискуссионный и на него не существует однозначного ответа".


За время пока вопрос существовал я получил несколько ответов:


1 Обратиться в Конституционный суд.
2 Оформить визу и выехать из юрисдикции полномочий РосКомНадзора.


Задав такой же вопрос интернету, оказалось, что не я один задался этим вопросом. Пользователь zakabum сайта RuTracker.org выложил на форуме образец заявления (зеркало) которое необходимо подать провайдеру. А также выкладывает новые свои заявления в ходе переписки со своим провайдером.

Читать дальше →
Total votes 168: ↑126 and ↓42 +84
Comments 686

Tabris.js — быстро знакомимся и пишем Hello World

Reading time 9 min
Views 19K

Tabris.js — еще один кросс-платформенный (Android, IOS) мобильный фреймворк. От подавляющего большинства подобных инструментов он отличается тем, что это не обертка над стандартным или Chrome-based WebView. Tabris предоставляет собой набор нативных компонентов, доступный из javascript. Ближайшие аналоги из мне известных это: Telerik Native Script, Appcelerator и React Native.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 13

Подготовка приложения для iOS 9

Reading time 3 min
Views 30K
9 сентября выйдет новый релиз iOS и OS X. Времени остается все меньше, и многие разработчики уже оптимизировали свои приложения для работы на новых ОС. Тем, кто этого ещё не сделал, предлагаю коротко рассмотреть, что необходимо для поддержки iOS 9.


Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 20

Программируем Raspberry Pi на голом железе

Reading time 2 min
Views 99K
До сих пор Raspberry Pi остается одним из самых популярных технологических гаджетов.На эту плату Вы можете установить практически любую операционную систему. Но сегодня мы поговорим о том, как писать программы для этой платы без операционной системе, пользуясь лишь аппаратными средствами.

В чем подвох?


На первый взгляд задача кажется тривиальной: скачиваем keil, создаем проект… Но все не так просто. Все среды программирования(keil, IAR, Atolic) поддерживают максимум ARM9.У нас же ARM11. Это связано с негласным правилом, что на голом железе пишут до ARM9, а после на Линуксе. Но все-таки есть одна лазейка: arm-none-eabi-gcc поддерживает любой ARM.
Вторая проблема заключается в том, что под данный процессор(BCM2835) нет никаких конфигурационных файлов, header'ов и т.д. Здесь нам на помощь придет загрузчик Raspberry Pi. И ничего, что он пропритетарный. Он выполняет две функции: инициализирует процессор и его периферию, а также передает управление ядру kernel.img. Мы просто замаскируем свою программу под ядро и загрузчик её запустит.
Читать дальше →
Total votes 70: ↑67 and ↓3 +64
Comments 62

Worker-ы и shared worker-ы

Reading time 5 min
Views 54K
Во всех популярных языках есть потоки (threads). В браузерном javascript для параллельной обработки используются worker-ы.
Под катом рассказ о том, как ими пользоваться, какие ограничения есть в воркерах и об особенностях взаимодействия с ними в разных браузерах.

Читать дальше →
Total votes 40: ↑39 and ↓1 +38
Comments 5

Favicons, Touch Icons, Tile Icons и т. д. Что выбрать?

Reading time 6 min
Views 153K
От переводчика.
Это перевод статьи Филипа Бернарда с сайта css-tricks.com. Часть статьи, содержащую описание работы с созданным им сервисом, я позволил себе опустить. Если вы найдете ошибки, просьба сообщить о них в личном сообщении.

Статья содержит результаты проведенного им исследования, каким должен быть фавикон (и то что его заменяет), чтобы хорошо отображаться в различных случаях.


Фавикон был представлен в 1999 году, в Internet Explorer 5 (источник) и стандартизирован W3C несколько месяцев спустя. Это была маленькая иконка, представляющая сайт.



С тех пор большинство настольных браузеров следуют тенденции и используют фавикон тем или иным способом. Это очень просто, не так ли? Создать маленькую картинку и добавить в любой интернет-проект, чтобы сделать его «завершённым». Ничего сложного.
Или нет?
Total votes 73: ↑71 and ↓2 +69
Comments 44

Настоящие ассоциативные массивы в JavaScript

Reading time 4 min
Views 58K
Использование литерала объекта, как простого средства для хранения пар ключ-значение давно стало обычным делом в JavaScript. Тем не менее, литерал объекта всё же не является настоящим ассоциативным массивом и по этому, в некоторых ситуациях, его использование может привести к неожиданным результатам. Пока JS не предоставляет нативную реализацию ассоциативных массивов (не во всех браузерах, по крайней мере), существует отличная альтернатива объектам, с нужной функциональностью и без подводных камней.
Читать дальше →
Total votes 57: ↑51 and ↓6 +45
Comments 38

Information

Rating
Does not participate
Location
Пушкин, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity