0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Java Unsafe API для низкоуровневого манипулирования памятью</a></li>
1
<ul><li><a>Java Unsafe API для низкоуровневого манипулирования памятью</a></li>
2
<li><a>Кратчайший путь с одним источником во взвешенных графах, Алгоритм Дейкстры и Python</a></li>
2
<li><a>Кратчайший путь с одним источником во взвешенных графах, Алгоритм Дейкстры и Python</a></li>
3
<li><a>SQLx: raw SQL в Rust</a></li>
3
<li><a>SQLx: raw SQL в Rust</a></li>
4
<li><a>Какую библиотеку на Python выбрать для создания телеграм-бота?</a></li>
4
<li><a>Какую библиотеку на Python выбрать для создания телеграм-бота?</a></li>
5
<li><a>Как утереть нос NumPy с помощью двумерного БПФ</a></li>
5
<li><a>Как утереть нос NumPy с помощью двумерного БПФ</a></li>
6
<li><a>Масштабирование телеграм-ботов на примере aiogram</a></li>
6
<li><a>Масштабирование телеграм-ботов на примере aiogram</a></li>
7
<li><a>Разработка с помощью Yocto</a></li>
7
<li><a>Разработка с помощью Yocto</a></li>
8
<li><a>Концепция донглов в Embedded устройствах</a></li>
8
<li><a>Концепция донглов в Embedded устройствах</a></li>
9
<li><a>Как я ускорил QEMU в 10 раз с помощью небольшого фокуса</a></li>
9
<li><a>Как я ускорил QEMU в 10 раз с помощью небольшого фокуса</a></li>
10
<li><a>Garbage Collection и JVM</a></li>
10
<li><a>Garbage Collection и JVM</a></li>
11
<li><a>Концепция имплицитов в Scala</a></li>
11
<li><a>Концепция имплицитов в Scala</a></li>
12
<li><a>Концепция RAII (Resource Acquisition Is Initialization)</a></li>
12
<li><a>Концепция RAII (Resource Acquisition Is Initialization)</a></li>
13
</ul><h2>Java Unsafe API для низкоуровневого манипулирования памятью</h2>
13
</ul><h2>Java Unsafe API для низкоуровневого манипулирования памятью</h2>
14
<p>Иногда приходится сталкиваться с задачами, которые требуют выхода за рамки стандартных абстракций и безопасности Java. Мы ищем способы оптимизации, решения проблем производительности, или, возможно, просто хотим расширить свой кругозор в Java. Для таких случаев существует Java Unsafe API. Этот инструмент предоставляет нам низкоуровневый доступ к памяти и более широкие возможности для манипуляции данными.</p>
14
<p>Иногда приходится сталкиваться с задачами, которые требуют выхода за рамки стандартных абстракций и безопасности Java. Мы ищем способы оптимизации, решения проблем производительности, или, возможно, просто хотим расширить свой кругозор в Java. Для таких случаев существует Java Unsafe API. Этот инструмент предоставляет нам низкоуровневый доступ к памяти и более широкие возможности для манипуляции данными.</p>
15
<p><a>Читать далее</a></p>
15
<p><a>Читать далее</a></p>
16
<h2>Кратчайший путь с одним источником во взвешенных графах, Алгоритм Дейкстры и Python</h2>
16
<h2>Кратчайший путь с одним источником во взвешенных графах, Алгоритм Дейкстры и Python</h2>
17
<p>В данной статье мы погрузимся в мир алгоритмов, предназначенных для нахождения кратчайшего пути в графах, в которых каждое ребро имеет свой вес. Независимо от того, является ли целью нахождение кратчайшего пути в дорожной сети, оптимизация маршрутов в логистике или даже поиск кратчайшего пути в социальных сетях, алгоритмы нахождения кратчайшего пути предоставляют мощные инструменты для решения таких задач.</p>
17
<p>В данной статье мы погрузимся в мир алгоритмов, предназначенных для нахождения кратчайшего пути в графах, в которых каждое ребро имеет свой вес. Независимо от того, является ли целью нахождение кратчайшего пути в дорожной сети, оптимизация маршрутов в логистике или даже поиск кратчайшего пути в социальных сетях, алгоритмы нахождения кратчайшего пути предоставляют мощные инструменты для решения таких задач.</p>
18
<p><a>Читать далее</a></p>
18
<p><a>Читать далее</a></p>
19
<h2>SQLx: raw SQL в Rust</h2>
19
<h2>SQLx: raw SQL в Rust</h2>
20
<p>Когда речь заходит об использовании SQL, экосистеме Rust есть что нам предложить: к счастью, нам доступны несколько отличных готовых к использованию решений. SQLx - это чисто асинхронный, независящий от рантайма SQL-крейт, позволяющий использовать проверяемые во время компиляции запросы без какого-либо DSL. Являясь одним из наиболее популярных способов использования SQL в Rust, он обладает следующими преимуществами:</p>
20
<p>Когда речь заходит об использовании SQL, экосистеме Rust есть что нам предложить: к счастью, нам доступны несколько отличных готовых к использованию решений. SQLx - это чисто асинхронный, независящий от рантайма SQL-крейт, позволяющий использовать проверяемые во время компиляции запросы без какого-либо DSL. Являясь одним из наиболее популярных способов использования SQL в Rust, он обладает следующими преимуществами:</p>
21
<ul><li>Он совместим со всеми вашими любимыми разновидностями SQL (MySQL, SQLite, Postgres).</li>
21
<ul><li>Он совместим со всеми вашими любимыми разновидностями SQL (MySQL, SQLite, Postgres).</li>
22
<li>Проверка запросов во время компиляции обеспечивает корректность этих самых запросов и типов, которые в них задействованы.</li>
22
<li>Проверка запросов во время компиляции обеспечивает корректность этих самых запросов и типов, которые в них задействованы.</li>
23
<li>Поддержка дополнительных функций, таких как listen/notify из Postgres.</li>
23
<li>Поддержка дополнительных функций, таких как listen/notify из Postgres.</li>
24
<li>Множество различных способов построения и использования запросов.</li>
24
<li>Множество различных способов построения и использования запросов.</li>
25
<li>С помощью SQLx вы также можете создать свой собственный конструктор запросов!</li>
25
<li>С помощью SQLx вы также можете создать свой собственный конструктор запросов!</li>
26
</ul><p>Давайте же посмотрим на SQLx в действии!</p>
26
</ul><p>Давайте же посмотрим на SQLx в действии!</p>
27
<p><a>Читать далее</a></p>
27
<p><a>Читать далее</a></p>
28
<h2>Какую библиотеку на Python выбрать для создания телеграм-бота?</h2>
28
<h2>Какую библиотеку на Python выбрать для создания телеграм-бота?</h2>
29
<p>Создание телеграм-ботов может потребовать значительных усилий и ресурсов. Использование специализированных библиотек упрощает этот процесс и обеспечивает более эффективное взаимодействие с Telegram API. Эти библиотеки предоставляют разработчикам готовые инструменты и функции, которые ускоряют разработку и делают ее более надежной.</p>
29
<p>Создание телеграм-ботов может потребовать значительных усилий и ресурсов. Использование специализированных библиотек упрощает этот процесс и обеспечивает более эффективное взаимодействие с Telegram API. Эти библиотеки предоставляют разработчикам готовые инструменты и функции, которые ускоряют разработку и делают ее более надежной.</p>
30
<p>Этот обзор предназначен для людей, которые ищут лучший инструмент для создания телеграм-ботов. Важно понимать, что не все библиотеки одинаково хороши, и правильный выбор может существенно повлиять на успех вашего проекта.</p>
30
<p>Этот обзор предназначен для людей, которые ищут лучший инструмент для создания телеграм-ботов. Важно понимать, что не все библиотеки одинаково хороши, и правильный выбор может существенно повлиять на успех вашего проекта.</p>
31
<p>Этот обзор поможет вам сохранить время и ресурсы, а также создать более надежный и эффективный телеграм-бот на Python.</p>
31
<p>Этот обзор поможет вам сохранить время и ресурсы, а также создать более надежный и эффективный телеграм-бот на Python.</p>
32
<p><a>Читать далее</a></p>
32
<p><a>Читать далее</a></p>
33
<h2>Как утереть нос NumPy с помощью двумерного БПФ</h2>
33
<h2>Как утереть нос NumPy с помощью двумерного БПФ</h2>
34
<p>Двумерное преобразование Фурье - один из важнейших алгоритмов компьютерной науки этого столетия. Он нашел широкое применение в нашей повседневной жизни - от фильтров Instagram до обработки MP3-файлов.</p>
34
<p>Двумерное преобразование Фурье - один из важнейших алгоритмов компьютерной науки этого столетия. Он нашел широкое применение в нашей повседневной жизни - от фильтров Instagram до обработки MP3-файлов.</p>
35
<p>Наиболее частой реализацией, используемой рядовым пользователем, иногда даже неосознанно, является адаптация из NumPy. Однако, несмотря на популярность, их алгоритм не является самым эффективным. С помощью нескольких простых манипуляций и статьи 2015 года мы обошли алгоритм NumPy по производительности аж на 30-60%. Основная проблема этой реализации заключается в том, что она изначально основана на слабом с точки зрения производительности алгоритме.</p>
35
<p>Наиболее частой реализацией, используемой рядовым пользователем, иногда даже неосознанно, является адаптация из NumPy. Однако, несмотря на популярность, их алгоритм не является самым эффективным. С помощью нескольких простых манипуляций и статьи 2015 года мы обошли алгоритм NumPy по производительности аж на 30-60%. Основная проблема этой реализации заключается в том, что она изначально основана на слабом с точки зрения производительности алгоритме.</p>
36
<p><a>Читать далее</a></p>
36
<p><a>Читать далее</a></p>
37
<h2>Масштабирование телеграм-ботов на примере aiogram</h2>
37
<h2>Масштабирование телеграм-ботов на примере aiogram</h2>
38
<p>Масштабирование - это не просто увеличение мощности, это искусство эффективного управления ресурсами, чтобы удовлетворить растущие запросы пользователей без потери качества обслуживания. В телеграм-ботах, где количество пользователей может увеличиваться экспоненциально, способность вашего бота адаптироваться к растущей нагрузке становится ключом к его успеху.</p>
38
<p>Масштабирование - это не просто увеличение мощности, это искусство эффективного управления ресурсами, чтобы удовлетворить растущие запросы пользователей без потери качества обслуживания. В телеграм-ботах, где количество пользователей может увеличиваться экспоненциально, способность вашего бота адаптироваться к растущей нагрузке становится ключом к его успеху.</p>
39
<p><a>Читать далее</a></p>
39
<p><a>Читать далее</a></p>
40
<h2>Разработка с помощью Yocto</h2>
40
<h2>Разработка с помощью Yocto</h2>
41
<p>Недавно принял участие в достаточно интересном воркшопе и хотел бы поделиться приобретенными навыками. Микроконтроллерами я занимаюсь как хобби, так что основы и даже чуть больше понимаю, да я и сам своего рода Embedded Developer.</p>
41
<p>Недавно принял участие в достаточно интересном воркшопе и хотел бы поделиться приобретенными навыками. Микроконтроллерами я занимаюсь как хобби, так что основы и даже чуть больше понимаю, да я и сам своего рода Embedded Developer.</p>
42
<p><a>Читать далее</a></p>
42
<p><a>Читать далее</a></p>
43
<h2>Концепция донглов в Embedded устройствах</h2>
43
<h2>Концепция донглов в Embedded устройствах</h2>
44
<p>В этой статье мы рассмотрим не совсем типичный процесс взаимодействия с устройствами. Сразу замечу, что предлагаемая концепция применима преимущественно к мобильным устройствам, не привязанным к стационарному питанию. В качестве примера реализации мы будем использовать самую распространенную плату Arduino, но при необходимости подобные решения можно без труда реализовать и для микрокомпьютеров типа Raspberry и других макетных плат.</p>
44
<p>В этой статье мы рассмотрим не совсем типичный процесс взаимодействия с устройствами. Сразу замечу, что предлагаемая концепция применима преимущественно к мобильным устройствам, не привязанным к стационарному питанию. В качестве примера реализации мы будем использовать самую распространенную плату Arduino, но при необходимости подобные решения можно без труда реализовать и для микрокомпьютеров типа Raspberry и других макетных плат.</p>
45
<p><a>Читать далее</a></p>
45
<p><a>Читать далее</a></p>
46
<h2>Как я ускорил QEMU в 10 раз с помощью небольшого фокуса</h2>
46
<h2>Как я ускорил QEMU в 10 раз с помощью небольшого фокуса</h2>
47
<p>NixOS широко использует виртуальные машины на базе QEMU для запуска своего набора тестов. Чтобы не генерировать образ диска для каждого теста, тестовый драйвер обычно загружается с помощью ресурса Plan 9 File Protocol (9p) (сервер, реализованный QEMU) для Nix Store, который содержит все программы и конфиги, необходимые для теста.</p>
47
<p>NixOS широко использует виртуальные машины на базе QEMU для запуска своего набора тестов. Чтобы не генерировать образ диска для каждого теста, тестовый драйвер обычно загружается с помощью ресурса Plan 9 File Protocol (9p) (сервер, реализованный QEMU) для Nix Store, который содержит все программы и конфиги, необходимые для теста.</p>
48
<p>Я работал над тестом VM, который копировал довольно большой объем данных (~278 тыс. файлов общим объемом ~5,3 Гбайт) из Nix Store на 9p, и был потрясен тем, сколько времени заняло копирование этих данных. На NVMe-устройствах я ожидал бы, что это займет несколько секунд или минут, но в итоге тест занял более <em>2 часов</em>, большая часть которых ушла на копирование файлов с 9p. Поскольку для инкрементальной работы это непозволительно долго, я решил немного покопаться в этом вопросе и смог сократить продолжительность теста до всего 7 минут. В этой статье я опишу это небольшое приключение.</p>
48
<p>Я работал над тестом VM, который копировал довольно большой объем данных (~278 тыс. файлов общим объемом ~5,3 Гбайт) из Nix Store на 9p, и был потрясен тем, сколько времени заняло копирование этих данных. На NVMe-устройствах я ожидал бы, что это займет несколько секунд или минут, но в итоге тест занял более <em>2 часов</em>, большая часть которых ушла на копирование файлов с 9p. Поскольку для инкрементальной работы это непозволительно долго, я решил немного покопаться в этом вопросе и смог сократить продолжительность теста до всего 7 минут. В этой статье я опишу это небольшое приключение.</p>
49
<p><a>Читать далее</a></p>
49
<p><a>Читать далее</a></p>
50
<h2>Garbage Collection и JVM</h2>
50
<h2>Garbage Collection и JVM</h2>
51
<p>JVM работает как хорошо отлаженный механизм, автоматически распределяя и освобождая память. Это и есть суть Garbage Collection. Это процесс, который автоматически находит и удаляет объекты, которые больше не используются вашим приложением. Благодаря этому, разработчики могут сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.</p>
51
<p>JVM работает как хорошо отлаженный механизм, автоматически распределяя и освобождая память. Это и есть суть Garbage Collection. Это процесс, который автоматически находит и удаляет объекты, которые больше не используются вашим приложением. Благодаря этому, разработчики могут сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.</p>
52
<p>Знание того, как работает GC и JVM, необходимо каждому Java-разработчику. Правильное управление ресурсами напрямую влияет на производительность и стабильность приложений.</p>
52
<p>Знание того, как работает GC и JVM, необходимо каждому Java-разработчику. Правильное управление ресурсами напрямую влияет на производительность и стабильность приложений.</p>
53
<p><a>Читать далее</a></p>
53
<p><a>Читать далее</a></p>
54
<h2>Концепция имплицитов в Scala</h2>
54
<h2>Концепция имплицитов в Scala</h2>
55
<p>Концепция implicit в Scala представляет собой одну из наиболее уникальных и мощных особенностей этого языка программирования. Этот ключевой механизм позволяет разработчикам создавать более гибкий и чистый код, улучшая читаемость и расширяемость программ.</p>
55
<p>Концепция implicit в Scala представляет собой одну из наиболее уникальных и мощных особенностей этого языка программирования. Этот ключевой механизм позволяет разработчикам создавать более гибкий и чистый код, улучшая читаемость и расширяемость программ.</p>
56
<p>В этой статье мы погрузимся в мир implicit в Scala, исследуем его суть, применение и возможности. Мы рассмотрим, как implicit обеспечивает поддержку для реализации различных паттернов и шаблонов программирования, а также как его использование способствует созданию более элегантных и эффективных решений задач. Давайте углубимся в эту удивительную возможность Scala и узнаем, как использовать implicit для улучшения вашего кода.</p>
56
<p>В этой статье мы погрузимся в мир implicit в Scala, исследуем его суть, применение и возможности. Мы рассмотрим, как implicit обеспечивает поддержку для реализации различных паттернов и шаблонов программирования, а также как его использование способствует созданию более элегантных и эффективных решений задач. Давайте углубимся в эту удивительную возможность Scala и узнаем, как использовать implicit для улучшения вашего кода.</p>
57
<p><a>Читать далее</a></p>
57
<p><a>Читать далее</a></p>
58
<h2>Концепция RAII (Resource Acquisition Is Initialization)</h2>
58
<h2>Концепция RAII (Resource Acquisition Is Initialization)</h2>
59
<p>RAII (Resource Acquisition Is Initialization) - это важная концепция в C++. Она представляет собой парадигму управления ресурсами, которая способствует безопасности и эффективности кода. В основе RAII лежит идея связывания жизненного цикла ресурса (например, памяти, файлового дескриптора или других ресурсов) с жизненным циклом объекта в C++. Это означает, что ресурсы выделяются и освобождаются автоматически при создании и уничтожении объектов.</p>
59
<p>RAII (Resource Acquisition Is Initialization) - это важная концепция в C++. Она представляет собой парадигму управления ресурсами, которая способствует безопасности и эффективности кода. В основе RAII лежит идея связывания жизненного цикла ресурса (например, памяти, файлового дескриптора или других ресурсов) с жизненным циклом объекта в C++. Это означает, что ресурсы выделяются и освобождаются автоматически при создании и уничтожении объектов.</p>
60
<p>В C++ управление ресурсами, такими как динамическая память или открытые файлы, может быть источником множества проблем, таких как утечки памяти, неопределенное поведение и непредсказуемые ошибки. RAII призван решить эти проблемы, предоставляя надежный и безопасный механизм управления ресурсами.</p>
60
<p>В C++ управление ресурсами, такими как динамическая память или открытые файлы, может быть источником множества проблем, таких как утечки памяти, неопределенное поведение и непредсказуемые ошибки. RAII призван решить эти проблемы, предоставляя надежный и безопасный механизм управления ресурсами.</p>
61
<p><a>Читать далее</a></p>
61
<p><a>Читать далее</a></p>
62
<a></a>
62
<a></a>