Как стать автором
Обновить
7
0
Gennady Kozlenko @gkozlenko

Senior Software Engineer ☕

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

Симулятор электронных схем Qucs-S снова жив

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

Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux, Windows и FreeBSD), написан на С++ с использованием набора библиотек Qt и разрабатывается полностью в частном порядке (в отличие, например от KiCAD, который имеет спонсора в лице CERN). В феврале этого года проект восстал из мёртвых и вышел релиз 0.0.23. Главным новшеством версии 0.0.23 было то, что программа теперь портирована на Qt5, чем обеспечена собираемость на современных дистрибутивах Linux. Актуальным релизом на текущий момент является 0.0.24 https://github.com/ra3xdh/qucs_s/releases/tag/0.0.24, в котором добавлено несколько новых видов моделирования. Далее будут рассмотрены основные возможности программы и показано как в Qucs-S смоделировать схему.


Читать дальше →
Всего голосов 74: ↑74 и ↓0+74
Комментарии33

Эмиттерный повторитель — ключ к пониманию работы транзисторных каскадов

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


Привет, эту публикацию я хочу посвятить людям, кто, как и я, любил в детстве читать журнал «Радио» и книги по электронике, но не смог сам разобраться в принципах работы усилителей на биполярных транзисторах. Тема полупроводников непроста и требует понимания многих чуждых для нашей повседневной интуиции физических процессов. Я помню момент озарения, когда я понял принцип схемотехнического решения эмиттерного повторителя, и именно с него пошло постепенное понимание, как функционируют и другие типы транзисторных каскадов. И я предполагаю, что эта тема может стать точкой входа в аналоговую электронику не только для меня.
Читать и смотреть схемы
Всего голосов 149: ↑147 и ↓2+187
Комментарии117

Создание процессора с нуля для чайников

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

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

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

В данной статьей мы пройдем путь создания процессора от единичного транзистора до работающего 8-битного процессора, и напишем свой ассемблер для него.

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

Рисуем фракталы на Rust и CUDA

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

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

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

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

Сложно ли генерировать 1024-битные простые числа?

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

Простые числа удивительны!

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

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

Вызов

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

Генерировать простые числа, способные генерировать ключи для алгоритма RSA

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

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

Многопоточный Python на примерах: токены отмены

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

В этой статье мы обсудим паттерн "Cancellation Token", популярный в некоторых других языках, но почему-то обойденный вниманием в Python-сообществе. Он о том, как безопасно и красиво завершать работу функции, треда или корутины.

keep_on()
Всего голосов 44: ↑39 и ↓5+49
Комментарии10

Вкатываемся в Machine Learning с нуля за ноль рублей: что, где, в какой последовательности изучить

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

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

Читать далее
Всего голосов 129: ↑127 и ↓2+155
Комментарии51

Как департамент утилизации CPU превратился в департамент экономии железа, выдерживающий нагрузку в 1 млн RPS

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

Привет, меня зовут Мария, когда-то я работала на шахте, потом на заводе, а 3.5 года назад пришла в Ozon Tech. Сейчас я старший Golang-разработчик в команде product-facade. Это самый высоконагруженный сервис маркетплейса, но так было не всегда.

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

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

Что под капотом у цифрового фото и видео: субдискретизация

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

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

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

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

Что же там?
Всего голосов 33: ↑33 и ↓0+33
Комментарии64

Java Unsafe API для низкоуровневого манипулирования памятью

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

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

Иногда приходится сталкиваться с задачами, которые требуют выхода за рамки стандартных абстракций и безопасности Java. Мы ищем способы оптимизации, решения проблем производительности, или, возможно, просто хотим расширить свой кругозор в Java. Для таких случаев существует Java Unsafe API. Этот инструмент предоставляет нам низкоуровневый доступ к памяти и более широкие возможности для манипуляции данными.

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

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

Читать далее
Всего голосов 13: ↑9 и ↓4+7
Комментарии3

Python, Go или… готовим сырой видеопоток с полсотни камер

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

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

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

Читать далее
Всего голосов 20: ↑19 и ↓1+20
Комментарии22

10 интересных научно-фантастических книг 2023 года

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

К 1 сентября мы подготовили подборку из 10 НФ произведений, вышедших или планирующихся к выходу в этом году в России и которые, как нам кажется, будут интересны любителям жанра. Ведь не только же перечитывать старых добрых Брэдбери, Херберта, Стругацких или Лукьяненко? (спойлер — он тоже есть в подборке).

Сразу оговоримся — никакие рейтинги присваиваться не будут.  
1. В подборке представлены не только зарубежные, но и отечественные авторы, некоторые из них пока мало кому известны.
2. Некоторые книги могли быть написаны раньше, но в список они попали, потому что были изданы в 2023 году на русском языке (!) — это очень важный критерий. 
3. В подборку вошли только научно-фантастические книги — про классное фэнтези сделаем отдельную статью, если вам понравится формат.
4. Мы не одобряем пиратства, за исключением самиздата, если автор сам распространяет книгу бесплатно. Поэтому приводим ссылки на фрагменты книг для ознакомления, чтобы вы могли решить, нравится ли стиль автора и завязка сюжета.

Читать далее
Всего голосов 27: ↑24 и ↓3+27
Комментарии17

Как легко перейти с Java на Rust: Особенности и советы

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

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

Кроме того, я создал три open source библиотеки на Rust, которые публиковал на GitHub. Это позволило мне лучше изучить идиоматичный Rust, работу с асинхронностью и т. д.

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

Читать далее
Всего голосов 22: ↑19 и ↓3+20
Комментарии23

Лучшая фантастика последних трех лет по версии Goodreads

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

GoodrGoodreads — пожалуй, главный книжный сайт англоязычного интернета. Недавно он составил список самых популярных фантастических книг за 2020-2023 годы, опираясь на мнение пользователей. К сожалению, на русский язык переведено далеко не все, однако даже те книги, которые уже можно прочитать в переводе, составляют внушительный список. Вот он.

Читать далее
Всего голосов 50: ↑46 и ↓4+54
Комментарии186

Обкафкился по полной: 3 фейла с Apache Kafka

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

Недавно мы проводили вебинар «Обкафкился по полной. Фейлы с Apache Kafka». На нём спикер Всеволод Севостьянов, Engineering Manager в HelloFresh, поделился фейлами из личной практики, а ещё рассказал, как мастерски ходить по тонкому льду Kafka и прокачать свой бэкенд. Для тех, кто пропустил или предпочитает читать, а не смотреть, подготовили текстовый вариант.

Читать далее
Всего голосов 28: ↑26 и ↓2+27
Комментарии27

Неочевидные проблемы с UUID ключами в PostgreSQL

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

Существует множество причин использования универсального уникального идентификатора (UUID) в качестве первичного ключа таблиц баз данных. Например:

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

Читать далее
Всего голосов 23: ↑22 и ↓1+24
Комментарии68

UUID версии 7, или как не потеряться во времени при создании идентификатора

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

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

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

Добро пожаловать в мир сортированых UUID
Всего голосов 30: ↑29 и ↓1+36
Комментарии176

Docker: заметки веб-разработчика. Итерация первая

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


Привет, друзья!


Хочу поделиться с вами заметками о Docker.


Заметки состоят из 4 частей: 2 теоретических и 2 практических.


Если быть более конкретным:


  • эта часть посвящена самому Docker, Docker CLI и Dockerfile;
  • в второй части рассказывается о Docker Compose;
  • в третьей части мы разработаем приложение, состоящее из 3 сервисов (клиента, админки и API) и базы данных (PostgreSQL);
  • в четвертой части мы это приложение "контейнеризуем".

Если вам это интересно, прошу под кат.

Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии8

Дядя Фёдор и методы рационального мышления

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

Несколько лет назад я с удовольствием прочитал фанфик «Гарри Потер и методы рационального мышления»  Элиезера Юдковского. Несмотря на подростковую направленность книжки, она получилась интересной. И умопомрачительно смешной – особенно на контрасте с оригинальным произведением.

К сожалению, написав эту книгу, Элиезер запер избушку на клюшку – переключившись с юмористических фанфиков на серьёзные философские статьи. Которые и вполовину не так хороши, как его литературное творчество. Ну, разве что, кроме последней, в которой он предлагает бомбить дата-центры ГПТ-подобных нейронных сетей, чтоб избежать наступления апокалипсиса.

Мне очень понравился формат книги Элиезера – в которой он объяснял серьезные научные концепции на примере знакомых с детства персонажей. Читая, я задавал себе вопрос: Какими бы получились «Гарри Потер и Методы», если бы Элиезер жил в России? Какую книгу он выбрал бы для основы? Приключения Буратино заняты покойным Константином Крыловым, так что остается только Незнайка и дядя Фёдор.  При этом дядя выглядит тут предпочтительнее – Незнайка слишком оторван от окружающей нас реальности, которая требует осмысления.

Взявшись писать, я решил немного осовременить исходную книгу. Мне не нравится, что современные писатели-фантасты, вместо того чтоб отвечать на заданные социумом вопросы, попрятались в виртуальные миры и носа не кажут наружу. Поэтому моему Дяде будет четырнадцать. Это интеллигентный московский подросток из хорошей семьи, который бежит в деревню – где погружается в лютую русскую хтонь…

Читать первую главу:
Всего голосов 154: ↑119 и ↓35+111
Комментарии153

GUI на Golang: GTK+ 3

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

Решил я написать одно кроссплатформенное десктопное приложение на Go. Сделал CLI-версию, всё работает отлично. Да ещё и кросскомпиляция в Go поддерживается. Всё в общем отлично. Но понадобилась также и GUI-версия. И тут началось...


Golang gotk3

Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Комментарии58
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Almere-Stad, Flevoland, Нидерланды
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Senior