Search
Write a publication
Pull to refresh
-4
Эдуард Зиганшин @e-zigread⁠-⁠only

Разработка электроники

Send message

Obsidian: Типы данных

Level of difficultyEasy
Reading time14 min
Views34K

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

Покажу интересные способы использования markdown заметок для решения разных задач.

Читать далее

Переключение между контекстами убивает эффективность разработчиков на корню

Reading time10 min
Views30K

Я программист. Меня всё время отвлекают, и я хочу об этом поговорить.

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

Каждое короткое сообщение, которое вы отправляете коллеге в Slack, отнимает у него 23 минуты продуктивной работы. И это далеко не всё.

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

Читать далее

Как работает Stable Diffusion: объяснение в картинках

Reading time9 min
Views102K
Генерация изображений при помощи ИИ — одна из самых новых возможностей искусственного интеллекта, поражающая людей (в том числе и меня). Способность создания потрясающих изображений на основании текстовых описаний похожа на магию; компьютер стал ближе к тому, как творит искусство человек. Выпуск Stable Diffusion стал важной вехой в этом развитии, поскольку высокопроизводительная модель оказалась доступной широкой публике (производительная с точки зрения качества изображения, скорости и относительно низких требований к ресурсам и памяти).

Поэкспериментировав в генерацией изображений, вы можете задаться вопросом, как же она работает.

В этой статье я вкратце расскажу, как функционирует Stable Diffusion.

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

Notion – это офисный плен! Объясняю, как выбраться с помощью Obsidian

Level of difficultyEasy
Reading time6 min
Views38K

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

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

Читать далее

Obsidian: все что нужно знать о Callout

Level of difficultyEasy
Reading time13 min
Views23K

В этой статье я подробно расскажу о возможностях использования Callout в Obsidian, покажу существующие решения, а также объясню, как создавать свои собственные, индивидуальные типы Callout-блоков.

Рассмотрим при чем здесь цитаты (Blackquotes).

Дополнительно поделюсь полезными надстройками и шаблонами

Читать далее

Как конфигурировать Git

Reading time13 min
Views15K

Какие настройки git config сейчас следует устанавливать по умолчанию? Ниже рассмотрены избранные настройки, менять которые не стесняются даже разработчики самого Git.

Несколько недель назад я написал о настройке Git help.autocorrect и поведал странную историю о том, как её значение стали задавать в децисекундах.  

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

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

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

Читать далее

Переключение контекста — главный убийца продуктивности разработчика

Level of difficultyEasy
Reading time11 min
Views19K

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

Читать далее

Использование технологий от Intel для передачи сетевого трафика из физического адаптера в виртуальный

Reading time3 min
Views7.5K
Всем привет! Я хочу поделиться анализом существующих технологий Intel, которые позволяют максимально быстро передать трафик из физической карты на виртуальную машину. В принципе, все способы опробованы в реальности на картах Intel XL710, поэтому я так же скажу об их плюсах и минусах. И поскольку наша компания занимается в том числе разработкой виртуального свитча, все это с точки зрения виртуального свитча.

Intel SR-IOV


Не совсем технология от Intel, но пощупать удалось только их реализацию. Вкратце, физический адаптер (PF) делится на несколько виртуальных (VF). Трафик внутри одного vlan по умолчанию не выходит за границы PF, и обеспечивает наиболее минимальные задержки по сравнению с виртуальными адаптерами на софтовых бриджах.

Драйверы
VF — это PCI устройство, прокидываемое в виртуальную машину. Виртуальная машина должна иметь драйвер i40e, иначе подцепить ее она не сможет. Правда в докеры можно тупо закинуть в netns.

С помощью использования Intel FlowDirector в принципе можно изменить поведение и указать правила по которым трафик должен ходить между VF или наружу из PF. Также можно сделать ручное распределение трафика по RX очередям или хардварный дроп трафика сразу при входе на карту. Поддержка конфигурации flow есть в драйверах, но отдельного api конкретно для Flow Director я не нашел. Кто хочет поиграться — можно покопаться в исходниках ethtool, либо использовать Intel DPDK, в нем API реализован, но карта отцепляется от kernel драйвера со всеми вытекающими.

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

Плюсы: работа как в VMWare, так и KVM. Везде быстрее софтовых бриджей как по задержкам, так и пропусной способности. И CPU не жрет.

Минусы: виртуальный свитч в данном кейсе — нужно превращать в реальный на отдельном железе, куда втыкаются PF от сервера с виртуальными машинами.
И 64 VF на один PF сейчас достаточно мало.
Читать дальше →

Использование DPDK для обеспечения высокой производительности прикладных решений (часть 0)

Reading time14 min
Views22K

Kernel is the root of all evil ⊙.☉


Сейчас вряд ли кого-то удивить использованием epoll()/kqueue() в поллерах событий. Для решения проблемы C10K cуществует довольно много разнообразных решений (libevent/libev/libuv), с разной производительностью и довольно высокими накладными расходами. В статье рассматривается использование DPDK для решения задачи обработки 10 миллионов соединений (С10M), и достижение максимального прироста производительности при обработке сетевых запросов в распространённых прикладных решениях. Главной особенностью подобной задачи является делегирование ответственности обработки трафика с ядра ОС в пользовательское пространство (userspace), точный контроль обработки прерываний и каналов DMA, использование VFIO, и много других не очень понятных слов. В качестве целевого прикладного окружения было выбрано Java Netty с использованием Disruptor паттерна и offheap кэширования.



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

В статье очень детально рассмотрены вопросы установки, настройки, использования, отладки, профилирования и разворачивания DPDK для построения высокопроизводительных решений.

Welcome to the dark side!

С 500 мс до нуля, или история о том, как я написал Node.js C++ addon и ускорил скидочный сервис в 500 раз

Level of difficultyMedium
Reading time18 min
Views20K

Приветствую тебя! Меня зовут Дмитрий и я работаю в LAD.
Сегодня я поведаю историю о том, как эволюционировал скидочный сервис одного из наших проектов. Пройдя путь от всеми нелюбимого, "тормозящего" сервиса, до сервиса,
который имеет наилучшие показатели на недельных графиках SLA.

Читать далее

Путь пакета через ядро Linux

Level of difficultyMedium
Reading time13 min
Views11K

Аннотация - Сетевые стеки являются основой коммуникации и обмена информацией. В данной статье исследуется сетевой стек TCP/IPv4 и UDP/IPv4 в Linux, наиболее распространенной серверной ОС. Мы описываем трассировку наиболее важных сетевых функций ядра Linux 5.10.8. Хотя документация по сетевому коду Linux существует, она часто устарела или охватывает только отдельные аспекты, такие как уровень IP или TCP. Мы рассматриваем эту проблему комплексно, охватывая путь пакета на выходе и входе через сетевой стек Linux. Кроме того, мы освещаем тонкости реализации и показываем, как ядро Linux реализует сетевые протоколы. Наша статья может послужить основой для оптимизации производительности, анализа безопасности, наблюдения за сетью или отладки.

Читать далее

N-API: аддоны для Node.js

Level of difficultyEasy
Reading time7 min
Views1.9K

Привет, Хабр!

В этой статье рассмотрим то, как создаются нативные аддоны для Node.js на C++ с использованием N-API.

До появленияN‑API написание аддонов шло напрямую через V8 API, что влекло за собой жёсткую привязку к конкретной версии движка. Каждый апдейт Node.js требовал пересборки и правки кучи низкоуровневого кода. N‑API решает эту проблему, предоставляя стабильный ABI. Это позволяет писать универсальные, долговечные и, главное, поддерживаемые модули, не боясь, что обновление Node.js подбросит вам сюрприз в виде «segmentation fault».

Читать далее

Сайты для обучения программированию: Топ 100

Reading time28 min
Views305K
В наш век современных технологий появилось много онлайн-ресурсов, которые позволяют всем желающим обрести необходимые им знания по программированию.

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

Итак, сайты для обучения программированию онлайн, ТОП 100:
Читать дальше →

Временные ограничения и статический временной анализ FPGA на примере Microsemi SmartTime

Reading time14 min
Views49K
Ещё во время обучения в ВУЗе, проектируя различные тестовые безделушки и выполняя лабораторные работы по цифровой схемотехнике, я попадал в ситуации, когда вроде бы корректный несколько раз перепроверенный проект отказывается работать «в железе». В то время, на заре изучения программируемой логики, мне как-то очень редко доводилось добираться до последних пунктов Design Flow, в чем, вероятно, и крылась беда. Если я нечаянным щелчком мыши открывал Timing Analyzer, то после нескольких секунд беглого просмотра становилось скучно, и я возвращался к издевательствам над отладочной платой и сочинял новые безумства на VHDL.

Когда подошло время более-менее адекватных и серьёзных проектов, проблем стало больше, соответственно, я начал интенсивнее использовать гугл и искать ответы на свои вопросы. Тут мне всё чаще стали попадаться такие страшные словосочетания, как “timing analysis” и “design constraints”, когда я почитал и немного вникнул, пришло осознание того, что я упустил что-то очень важное. Сначала я панически боялся этих неведомых констрейнов, и ведь без них успешно работали первые проекты, благо частота там была не больше пары десятков МГц. Но когда речь зашла о более высоких частотах и более сложных проектах, здесь уже не обойтись без тщательного временного анализа и оптимизации.
Читать дальше →

Расчет временных ограничений для ПЛИС простым языком

Reading time12 min
Views14K
Здравствуйте. Эта статья написана для самых-самых новичков в мире ПЛИС, которые пока что совсем не знают что такое STA (static timing analysis). В ней я попытаюсь максимально просто и наглядно рассказать что такое временны́е ограничения (timing constraints), накладываемые на проекты под ПЛИС.

Статья создана на основе собственного опыта попыток объяснить самому себе, студентам-практикантам и любопытным коллегам эту тему так, чтобы не погружаться в заумные академические дебри, а максимально просто и прозрачно, бытовым языком. Я учился работать с ПЛИС без учебы и подготовки по этой теме и знаю по своему опыту насколько трудно что-то понять не имея теоретического базиса в этой теме и в схемотехнике. Для опытного плисовода описанное — элементарно. Но для какого-нибудь студента четвертого курса статья будет полезной и поможет разобраться во всех этих слэках, сетапах и холдах.
Читать дальше →

Цифровой архив с полнотекстовым поиском, в том числе по PDF и картинкам

Reading time3 min
Views7.8K


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

Опенсорсная программа Paperless-ngx позиционируется как оптимальное решение для создания цифрового архива. Со встроенной системой распознавание символов (OCR) и обучением на основе ранее отсканированных документов она создаёт хранилище с поиском, где можно быстро найти любой документ. Всем документам присваиваются теги, так что они могут присутствовать в разных тематических категориях, это удобнее распределения по папкам.

Paperless-ngx можно установить на домашний сервер и загружать документы через браузер с любого устройства.
Читать дальше →

Как работают квантовые компьютеры. Собираем паззл

Reading time33 min
Views276K


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


А недавно ко мне подошли коллеги и спросили “Ты понимаешь как работает квантовый компьютер? Можешь нам рассказать?” И тут я понял, что проблема со складыванием в голове целостной картинки есть не только у меня.


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

Получилось или нет - решать, как обычно, вам.

База, которую нужно знать про JSON Schema

Level of difficultyEasy
Reading time7 min
Views38K

Привет, Хабр!

Сегодня мы рассмотрим одну из тем, которая, как ни странно, остаётся недооценённой — JSON Schema. Если ты аналитик (или хочешь им быть) и в твоей работе часто мелькают JSON-файлы, то наверняка знаешь, как сложно порой бывает держать всё это под контролем. В этой статье мы разберём всё, что тебе нужно знать про JSON Schema.

Читать далее

Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv (ч. 2)

Level of difficultyHard
Reading time118 min
Views4.7K

Это вторая и заключительная часть большой статьи. Ознакомиться с первой частью можно по ссылке.

Основная прелесть использования ПЛИС, на мой взгляд, состоит в том, что разработка аппаратуры превращается в программирование со всеми его свойствами: написание и отладка кода как текста на специализированных языках описания аппаратуры (HDL); код распространяется в виде параметризованных модулей (IP-блоков), что позволяет его легко переиспользовать в других проектах; распределенная разработка обширным коллективом разработчиков с системой контроля версий, такой же, как у программистов (Git); и, как и в программировании, ничтожно низкая стоимость ошибки.

Последнее очень важно, так как если при разработке устройства классическим методом разработчик несет вполне существенные затраты на сборку и производство изделия, и любая схемотехническая ошибка или ошибка трассировки печатной платы — это всегда выход на очередную итерацию и попадание на деньги, то при работе с ПЛИС ошибки ничтожны по своей стоимости и легко устранимы. И даже если в серийном изделии обнаруживается ошибка, то её во многих случаях можно устранить очередным апгрейдом прошивки «в поле» без замены изделия. Короче, с приходом ПЛИС разработка цифровой аппаратуры все больше и больше выглядит как программирование, а это, помимо всего прочего, существенно понижает порог вхождения в тему, и все больше программистов становятся разработчиками «железа». А новые люди, в свою очередь, приносят с собой в индустрию новые подходы и принципы.

В этой статье я хочу поделиться своим небольшим опытом «программирования» микросхем ПЛИС и тем, как я постепенно погружался в тему ПЛИСоводства. Изначально я собирался написать небольшую заметку про открытый тулчейн для синтеза Yosys. Потом — про язык SpinalHDL и синтезируемое микропроцессорное ядро VexRiscv, на нём написанное. Потом — про замену микроконтроллеров микросхемами ПЛИС на примере моей отладочной платы «Карно». Но в процессе я погрузился в историю появления Hardware Description Languages (HDL), и когда я начал писать, Остапа, как это часто бывает, понесло... В общем, получилось то, что получилось.

Продолжить погружение

Information

Rating
Does not participate
Location
Мытищи, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

System Software Engineer, Hardware Engineer
Senior
From 225,000 ₽
C++
Qt
Verilog HDL
VHDL
C
Git
Linux