HTML Diff
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>