Как стать автором
Поиск
Написать публикацию
Обновить
2
0

Инженер-программист

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

Как создавать красивые карты с помощью Python

Время на прочтение4 мин
Количество просмотров24K
Мне всегда нравились карты городов, и несколько недель назад я решил создать свою собственную, художественную версию. Немного погуглив, я обнаружил крутое руководство, написанное Фрэнком Себальосом. Оно увлекательно и полезно, но я предпочитаю более подробные/реалистичные карты-схемы. Из-за этого я решил создать свою собственную версию карт. Итак, давайте посмотрим, как мы можем создавать красивые карты с помощью Python и данных OpenStreetMap.

Приятного чтения!

Синхронные двигатели с постоянными магнитами на роторе: управление (синус и/или трапеция)

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

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

От теории к практике, наглядно, понятно и занимательно.

Читать далее

Почему теорию Максвелла так трудно понять?

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

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

Читать далее

Вспомнить всё. Разбираемся в полупроводниковой памяти

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

Когда я писал в начале года статью “Кто есть кто в мировой микроэлектронике”, меня удивило, что в десятке самых больших полупроводниковых компаний пять занимаются производством памяти, в том числе две – только производством памяти. Общий объем мирового рынка полупроводниковой памяти оценивается в 110 миллиардов долларов и является постоянной головной болью участников и инвесторов, потому что, несмотря на долгосрочный рост вместе со всей индустрией микроэлектроники, локально рынок памяти очень сильно лихорадит – 130 миллиардов в 2017 году, 163 в 2018, 110 в 2019 и 110 же ожидается по итогам 2020 года.

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

Поехали!

BPF для самых маленьких, часть вторая: разнообразие типов программ BPF

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

Продолжаем серию статей про BPF — универсальную виртуальную машину ядра Linux — и в этом выпуске расскажем о том, какие типы программ BPF существуют, и как они используются в реальном мире капиталистического чистогана. Кроме этого, в конце статьи приведено некоторое количество ссылок, в частности, на две с половиной существующие книжки про BPF.


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


Если вы хотите узнать, как именно BPF помогает эффективно решать задачи защиты от DDoS атак, распределения нагрузки на серверы, реализации сетевого стека kubernetes, защиты систем от нападения, эффективной трассировки систем 24x7 прямо в проде и многие другие, то добро пожаловать под кат.


image

Читать дальше →

Active Termination Drivers

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


The easiest way to build a driver with specified output impedance is to use an amplifier with high load compatibility and add a resistor to its output. The penalty is a voltage drop across this resistor, so there is power loss and we need a higher supply voltage. If our driver is able to deliver the same voltage and current to the same load, but the extra resistor will have a lower value, our device will be able to deliver the same output power at a lower supply voltage. Less power losses, less heat, and longer working time when a battery is used.
There is an idea how to solve this problem: active termination. We can synthesize the output impedance!

Now when we know what we want, go to design our drivers!
Read more →

Инженерный анализ схемы ускоренного переноса процессора Intel 8008

Время на прочтение12 мин
Количество просмотров11K
В 1972 году Intel представили свой первый 8-битный микропроцессор – 8008. Несмотря на свою примитивность в сравнении с современными стандартами, Intel 8008 важен исторически, потому что именно он положил начало микропроцессорной революции и является предком современного семейства процессоров x86. Я поизучал кремниевый кристалл этого процессора под микроскопом и произвел инженерный анализ его схемы.

На нижеприведенном фото кристалла показаны главные функциональные блоки 1, включая регистры, декодер команд и хранилище стека. 8-битное арифметико-логическое устройство (АЛУ) находится слева. Над ним расположен генератор ускоренного переноса, повышающий производительность путем упреждающего вычисления переносов суммирования до выполнения самого суммирования. Немного удивительно видеть реализацию ускоренного переноса в столь ранней модели процессора. Но раз она в нем есть, то есть и повод рассказать вам о способе ее технической реализации.


Кристалл Intel 8008 и его ключевые функциональные блоки.
Читать дальше →

Введение в Android NDK

Время на прочтение9 мин
Количество просмотров243K
Для разработки приложений под ОС Android, Google предоставляет два пакета разработки: SDK и NDK. Про SDK существует много статей, книжек, а так же хорошие guidelines от Google. Но про NDK даже сам Google мало что пишет. А из стоящих книг я бы выделил только одну, Cinar O. — Pro Android C++ with the NDK – 2012.

Эта статья ориентирована на тех, кто ещё не знаком (или мало знаком) с Android NDK и хотел бы укрепить свои знания. Внимание я уделю JNI, так как мне кажется начинать нужно именно с этого интерфейса. Так же, в конце рассмотрим небольшой пример с двумя функциями записи и чтения файла. Кто не любит много текста, тот может посмотреть видео версию.
Читать дальше →

Как выкать в английском языке: градация слова «you»

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


В английском нет слова «ты». Вернее, оно есть, но используется только в литературе и религии.

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

Поэтому встает вопрос, как правильно использовать «you», чтобы избежать недоразумений.

Понятно, что во фразе «Hey you, motherf*cker!» уважительным обращением даже не пахнет. Но нюансов английского выканья все же хватает. О них сегодня и расскажем.
Читать дальше →

Что под капотом чипа DRAM, этапы развития технологии

Время на прочтение10 мин
Количество просмотров13K
“Всем знаком закон Мура, описывающий уменьшение размеров транзисторов в логических схемах. Для того, чтобы он продолжал работать, технологам приходится идти на все новые и новые ухищрения, однако их работу несколько усложняет то, что все чипы очень разные по структуре. А что было бы, если бы можно было оптимизировать технологию под конкретный дизайн микросхемы? Ответ на этот вопрос может дать динамическая память.”

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

Читать дальше →

BPF для самых маленьких, часть нулевая: classic BPF

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

Berkeley Packet Filters (BPF) — это технология ядра Linux, которая не сходит с первых полос англоязычных технических изданий вот уже несколько лет подряд. Конференции забиты докладами про использование и разработку BPF. David Miller, мантейнер сетевой подсистемы Linux, называет свой доклад на Linux Plumbers 2018 «This talk is not about XDP» (XDP – это один из вариантов использования BPF). Brendan Gregg читает доклады под названием Linux BPF Superpowers. Toke Høiland-Jørgensen смеется, что ядро это теперь microkernel. Thomas Graf рекламирует идею о том, что BPF — это javascript для ядра.


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


Разработка BPF контролируется сетевым сообществом Linux, основные существующие применения BPF связаны с сетями и поэтому, с позволения @eucariot, я назвал серию "BPF для самых маленьких", в честь великой серии "Сети для самых маленьких".

Читать дальше →

Трассировка лучей в реальном времени в 1 КБ кода

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

Долгий путь к рождению Chrome Revenge


PENTRACE


Всё началось в 1994 году, когда я прочитал в Dr. Dobbs Journal несколько интересных статей о FPU (математическом сопроцессоре) нового процессора Pentium. Я пришёл к пониманию того, что численная производительность Pentium очень чувствительна к использованию и порядку команд FPU, и что дополнительными командами FXCH можно значительно увеличить скорость выполнения.

В то время при необходимости трассировки сцены лучами для получения результата требовались часы или даже дни. Я решил написать трассировщик лучей, похожий на POV-Ray или BOB, только на языке ассемблера, чтобы код при этом был сильно оптимизирован под FPU процессора Pentium. Это был «Pentrace», мой дипломный проект в колледже.

Трехмерный движок в коде… ДНК

Время на прочтение40 мин
Количество просмотров23K
UPD 29 ноября: Репозиторий с кодом ДНК выложен на GitHub.
github.com/pallada-92/dna-3d-engine

UPD 30 ноября:
В англоязычном твиттере заметили проект
Новость попала в топ-10 на HackerNews!






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

Ответ довольно неожиданный — lingua franca для моделирования сложных процессов в клетках является реакции вида
Эти реакции моделируются при помощи закона действующих масс, который одинаково работает и в химии, и в молекулярной биологии.

— Неужели при помощи этих примитивных реакций можно что-то программировать?
— Да, а то, что написано выше, вычисляет $B = \sqrt{A}$.

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

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

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

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

Как получить 9В/12В от зарядного с Quick Charge (на примере STM32)

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

Чем может быть полезна быстрая зарядка


С увеличением ёмкости аккумуляторов телефонов потребовалось увеличить и мощность зарядных устройств, чтобы достичь маленького времени зарядки, для чего и нужно было увеличивать выходную мощность: напряжение, ток. Таким образом зарядные с Quick Charge 3.0 кроме 5 В могут выдавать 9В/12В/20В +возможность регулировки с шагом 0.2 В (до 12 В).


image

Ввиду распространенности ЗУ с этой технологией появляется интерес использовать их для получения повышенного напряжения без дополнительных преобразователей.

Читать дальше →

Одна строка, которая ускорила клонирование в 100 раз

Время на прочтение2 мин
Количество просмотров17K
Наша группа по оптимизации производительности нашла маленькое изменение, которое оказало большое влияние на скорость сборки по всем конвейерам. Мы обнаружили, что установка параметра refspec во время git fetch ускоряет шаг клонирования в 100 раз.

Группа Engineering Productivity отвечает за поддержку инженеров, которые создают и развёртывают программное обеспечение в Pinterest. Наша команда поддерживает ряд инфраструктурных сервисов и часто работает над крупными проектами — перенос всего программного обеспечения на Bazel, создание платформы непрерывной доставки под названием Hermez. Они же поддерживают монорепозитории, куда ежедневно присылают по несколько сотен коммитов, и это ещё не все их задачи.
Читать дальше →

Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса. Часть 3: fixed-point

Время на прочтение5 мин
Количество просмотров3.7K
Продолжаем цикл лекций (часть 1 и часть 2). В части 2 мы посмотрели, что внутри у библиотеки libm и в данной работе попробуем немного переделать функцию do_sin, чтобы увеличить её точность и скорость работы. Приведу эту функцию ещё раз do_sin):

image

Как было показано в предыдущей статье часть 132-145. Выполняется для x в пределах [0.126, 0.855469]. Ну что. Попробуем написать функцию, которая в данных пределах будет точнее и, возможно, быстрее.
Читать дальше →

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

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

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

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

Гармонические колебания

Время на прочтение10 мин
Количество просмотров277K
На хабре было несколько статей по преобразованию Фурье и о всяких красивостях типа Цифровой Обработки Сигналов (ЦОС), но неискушённому пользователю совершенно не понятно, зачем всё это нужно и где, а главное как это применить.


АЧХ шума.

Лично мне после прочтения этих статей (например, этой ) не стало понятно, что это и зачем оно нужно в реальной жизни, хотя было интересно и красиво.
Хочется не просто поглядеть красивые картинки, а так сказать, ощутить нутром, что и как работает. И я приведу конкретный пример с генерацией и обработкой звуковых файлов. Можно будет и послушать звук, и поглядеть его спектр, и понять, почему это так.
Статья не будет интересна тем, кто владеет теорией функций комплексной переменной, ЦОС и прочими страшными темами. Она скорее для любопытствующих, школьников, студентов и им сочувствующих :).
Читать дальше →

Doom Boy ESP32. Вторая итерация

Время на прочтение7 мин
Количество просмотров15K
Так и не дождавшись DoomWatch платы сделал новый заказ с доставкой Fedex. В этот раз развел платы в KiCad. Как ни странна, Kicad понравился даже больше Eagle AutoDesk



Основная цель была попробовать распаять чип esp32d0wdq6. Не сам готовый модуль, а именно отдельно микросхемой с отдельным Flash и PSRAM. Как это сделано и работает, с видеодемками, читаете и смотрите дальше

Четыре способа получить аудио вк или «это не баг, а фича»

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

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

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность