0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Python</a><ul><li><a>slots в Python</a></li>
1
<ul><li><a>Python</a><ul><li><a>slots в Python</a></li>
2
<li><a>Как работают dict, slots и weakref в Python (и зачем это знать)</a></li>
2
<li><a>Как работают dict, slots и weakref в Python (и зачем это знать)</a></li>
3
<li><a>Joblib: максимум из параллельных вычислений в Python</a></li>
3
<li><a>Joblib: максимум из параллельных вычислений в Python</a></li>
4
<li><a>Отладка с sys._getframe в Python</a></li>
4
<li><a>Отладка с sys._getframe в Python</a></li>
5
<li><a>Аннотации типов в Python: коротко о главном</a></li>
5
<li><a>Аннотации типов в Python: коротко о главном</a></li>
6
<li><a>CPython C API: 5 вопросов на собеседовании</a></li>
6
<li><a>CPython C API: 5 вопросов на собеседовании</a></li>
7
<li><a>Сериализация в Python с Pickle</a></li>
7
<li><a>Сериализация в Python с Pickle</a></li>
8
</ul></li>
8
</ul></li>
9
<li><a>Java</a><ul><li><a>SOLID на котиках: коротко и по делу</a></li>
9
<li><a>Java</a><ul><li><a>SOLID на котиках: коротко и по делу</a></li>
10
<li><a>3 вопроса на собеседование о многопоточности в Java</a></li>
10
<li><a>3 вопроса на собеседование о многопоточности в Java</a></li>
11
<li><a>Как бросить исключение без throws в Java: технический разбор с примерами</a></li>
11
<li><a>Как бросить исключение без throws в Java: технический разбор с примерами</a></li>
12
</ul></li>
12
</ul></li>
13
<li><a>C++</a><ul><li><a>Линейная алгебра в C++ с Eigen</a></li>
13
<li><a>C++</a><ul><li><a>Линейная алгебра в C++ с Eigen</a></li>
14
<li><a>Range-v3 в C++</a></li>
14
<li><a>Range-v3 в C++</a></li>
15
</ul></li>
15
</ul></li>
16
<li><a>Golang</a><ul><li><a>Алгоритм Кнута-Морриса-Пратта для поиска подстрок на Go</a></li>
16
<li><a>Golang</a><ul><li><a>Алгоритм Кнута-Морриса-Пратта для поиска подстрок на Go</a></li>
17
<li><a>FissionGo: как запускать Go-функции в Kubernetes</a></li>
17
<li><a>FissionGo: как запускать Go-функции в Kubernetes</a></li>
18
<li><a>Интерактивный тур по Go 1.24</a></li>
18
<li><a>Интерактивный тур по Go 1.24</a></li>
19
<li><a>Реализация Paxos на Go: создаем алгоритм консенсуса без готовых решений</a></li>
19
<li><a>Реализация Paxos на Go: создаем алгоритм консенсуса без готовых решений</a></li>
20
</ul></li>
20
</ul></li>
21
</ul><h2>Python</h2>
21
</ul><h2>Python</h2>
22
<h2>slots в Python</h2>
22
<h2>slots в Python</h2>
23
<p>В этой статье рассматривается механизм slots в Python - незаменимый инструмент для тех, кто работает с большим количеством объектов. Вместо привычного хранения атрибутов в словаре dict, slots выделяет для каждого атрибута строго определенное место в памяти, что позволяет сократить использование ресурсов и ускорить работу программы. Однако, это накладывает определенные ограничения, например, нельзя добавлять новые атрибуты на лету. Примеры из практики показывают, как slots помогает экономить память в высоконагруженных системах и данных, таких как ML/ETL пайплайны и серверные приложения.</p>
23
<p>В этой статье рассматривается механизм slots в Python - незаменимый инструмент для тех, кто работает с большим количеством объектов. Вместо привычного хранения атрибутов в словаре dict, slots выделяет для каждого атрибута строго определенное место в памяти, что позволяет сократить использование ресурсов и ускорить работу программы. Однако, это накладывает определенные ограничения, например, нельзя добавлять новые атрибуты на лету. Примеры из практики показывают, как slots помогает экономить память в высоконагруженных системах и данных, таких как ML/ETL пайплайны и серверные приложения.</p>
24
<p><a>Читать далее</a></p>
24
<p><a>Читать далее</a></p>
25
<h2>Как работают dict, slots и weakref в Python (и зачем это знать)</h2>
25
<h2>Как работают dict, slots и weakref в Python (и зачем это знать)</h2>
26
<p>Разберем три ключевых механизма Python - dict, slots и weakref - и их роль в оптимизации работы с памятью, ускорении доступа к данным и предотвращении утечек. Рассмотрим, как стандартный dict может быть неэффективен при большом количестве объектов, а slots помогает снизить нагрузку, исключая лишние словари и фиксируя набор атрибутов. Также раскрывается, как слабые ссылки через weakref позволяют эффективно управлять памятью, не препятствуя удалению объектов сборщиком мусора. Примеры показывают, как комбинировать эти подходы для экономии памяти и гибкости работы с аттрибутами объектов.</p>
26
<p>Разберем три ключевых механизма Python - dict, slots и weakref - и их роль в оптимизации работы с памятью, ускорении доступа к данным и предотвращении утечек. Рассмотрим, как стандартный dict может быть неэффективен при большом количестве объектов, а slots помогает снизить нагрузку, исключая лишние словари и фиксируя набор атрибутов. Также раскрывается, как слабые ссылки через weakref позволяют эффективно управлять памятью, не препятствуя удалению объектов сборщиком мусора. Примеры показывают, как комбинировать эти подходы для экономии памяти и гибкости работы с аттрибутами объектов.</p>
27
<p><a>Продолжение</a></p>
27
<p><a>Продолжение</a></p>
28
<h2>Joblib: максимум из параллельных вычислений в Python</h2>
28
<h2>Joblib: максимум из параллельных вычислений в Python</h2>
29
<p>В этой статье объясняется, как библиотека Joblib ускоряет Python-код с помощью параллельных вычислений и кэширования. Рассматривается распараллеливание задач, таких как вычисления на больших данных, с использованием процессов и потоков. Также освещается работа с большими объемами данных через memory-mapped файлы и кэширование вычислений, чтобы избежать повторной работы. Joblib помогает ускорить выполнение задач, сокращая код и улучшая производительность.</p>
29
<p>В этой статье объясняется, как библиотека Joblib ускоряет Python-код с помощью параллельных вычислений и кэширования. Рассматривается распараллеливание задач, таких как вычисления на больших данных, с использованием процессов и потоков. Также освещается работа с большими объемами данных через memory-mapped файлы и кэширование вычислений, чтобы избежать повторной работы. Joblib помогает ускорить выполнение задач, сокращая код и улучшая производительность.</p>
30
<p><a>Читать далее</a></p>
30
<p><a>Читать далее</a></p>
31
<h2>Отладка с sys._getframe в Python</h2>
31
<h2>Отладка с sys._getframe в Python</h2>
32
<p>В коротком формате разберемся с тем, что же творится внутри CPython, когда функции вызывают друг друга: sys._getframe, f_back, f_globals, f_locals, а также создадим свои декораторы.</p>
32
<p>В коротком формате разберемся с тем, что же творится внутри CPython, когда функции вызывают друг друга: sys._getframe, f_back, f_globals, f_locals, а также создадим свои декораторы.</p>
33
<p><a>Читать полностью</a></p>
33
<p><a>Читать полностью</a></p>
34
<h2>Аннотации типов в Python: коротко о главном</h2>
34
<h2>Аннотации типов в Python: коротко о главном</h2>
35
<p>В этой статье рассмотрим, как Python, оставаясь динамически типизированным, может приближаться к строгой<a>типизации</a>. Всё дело в <strong>аннотациях типов</strong>, которые позволяют явно указывать, какие данные ожидаются в переменных, аргументах функций и возвращаемых значениях.</p>
35
<p>В этой статье рассмотрим, как Python, оставаясь динамически типизированным, может приближаться к строгой<a>типизации</a>. Всё дело в <strong>аннотациях типов</strong>, которые позволяют явно указывать, какие данные ожидаются в переменных, аргументах функций и возвращаемых значениях.</p>
36
<p><a>Читать далее</a></p>
36
<p><a>Читать далее</a></p>
37
<h2>CPython C API: 5 вопросов на собеседовании</h2>
37
<h2>CPython C API: 5 вопросов на собеседовании</h2>
38
<p>В статье рассматриваются важные вопросы по CPython и его C API, включая:</p>
38
<p>В статье рассматриваются важные вопросы по CPython и его C API, включая:</p>
39
<ol><li>Как Python взаимодействует с C через PyObject?</li>
39
<ol><li>Как Python взаимодействует с C через PyObject?</li>
40
<li>Роль Py_INCREF() и Py_DECREF() в C-расширениях.</li>
40
<li>Роль Py_INCREF() и Py_DECREF() в C-расширениях.</li>
41
<li>Минимальный модуль на C для сложения чисел.</li>
41
<li>Минимальный модуль на C для сложения чисел.</li>
42
<li>Как работает Buffer Protocol и memoryview?</li>
42
<li>Как работает Buffer Protocol и memoryview?</li>
43
<li>Почему нельзя просто вызвать free(ptr) в C-коде с объектами Python?</li>
43
<li>Почему нельзя просто вызвать free(ptr) в C-коде с объектами Python?</li>
44
</ol><p><a>Разобрать вопросы</a></p>
44
</ol><p><a>Разобрать вопросы</a></p>
45
<h2>Сериализация в Python с Pickle</h2>
45
<h2>Сериализация в Python с Pickle</h2>
46
<p>В этой статье мы поговорим о библиотеке pickle и её роли в<a>сериализации</a>объектов в Python. Вы узнаете, как эффективно сохранять и восстанавливать данные с помощью разных протоколов, а также как настроить кастомную сериализацию для своих классов. Мы также затронем важные аспекты работы с несериализуемыми атрибутами и рассмотрим, как защититься от угроз при использовании pickle. Примеры, такие как база данных котиков, помогут вам понять, как всё это работает на практике.</p>
46
<p>В этой статье мы поговорим о библиотеке pickle и её роли в<a>сериализации</a>объектов в Python. Вы узнаете, как эффективно сохранять и восстанавливать данные с помощью разных протоколов, а также как настроить кастомную сериализацию для своих классов. Мы также затронем важные аспекты работы с несериализуемыми атрибутами и рассмотрим, как защититься от угроз при использовании pickle. Примеры, такие как база данных котиков, помогут вам понять, как всё это работает на практике.</p>
47
<p><a>Читать далее</a></p>
47
<p><a>Читать далее</a></p>
48
<h2>Java</h2>
48
<h2>Java</h2>
49
<h2>SOLID на котиках: коротко и по делу</h2>
49
<h2>SOLID на котиках: коротко и по делу</h2>
50
<p>Каждый разработчик знает, каково это - увидеть код, который страшно трогать. В нём всё ломается, стоит добавить пару строк. Чтобы такого не было, мир придумал SOLID - набор из пяти принципов, которые делают ваш код понятным, надёжным и лёгким в поддержке.</p>
50
<p>Каждый разработчик знает, каково это - увидеть код, который страшно трогать. В нём всё ломается, стоит добавить пару строк. Чтобы такого не было, мир придумал SOLID - набор из пяти принципов, которые делают ваш код понятным, надёжным и лёгким в поддержке.</p>
51
<p>В этой статье рассмотрим, как внедрять эти принципы с умом, и да, будет немного котиков - куда без них.</p>
51
<p>В этой статье рассмотрим, как внедрять эти принципы с умом, и да, будет немного котиков - куда без них.</p>
52
<p><a>Продолжение</a></p>
52
<p><a>Продолжение</a></p>
53
<h2>3 вопроса на собеседование о многопоточности в Java</h2>
53
<h2>3 вопроса на собеседование о многопоточности в Java</h2>
54
<p>В этой статье мы рассмотрим три важнейших вопроса, которые могут возникнуть на собеседовании по многопоточности<a>в Java</a>. Проблемы, связанные с синхронизацией, правилами happens-before и особенностями работы с ConcurrentHashMap.computeIfAbsent(), обсудим всё это через примеры и практические рекомендации.</p>
54
<p>В этой статье мы рассмотрим три важнейших вопроса, которые могут возникнуть на собеседовании по многопоточности<a>в Java</a>. Проблемы, связанные с синхронизацией, правилами happens-before и особенностями работы с ConcurrentHashMap.computeIfAbsent(), обсудим всё это через примеры и практические рекомендации.</p>
55
<p><a>Читать далее</a></p>
55
<p><a>Читать далее</a></p>
56
<h2>Как бросить исключение без throws в Java: технический разбор с примерами</h2>
56
<h2>Как бросить исключение без throws в Java: технический разбор с примерами</h2>
57
<p>В Java существует старое, но всё ещё актуальное ограничение: если метод бросает checked‑исключение (например, IOException), он обязан явно объявить это с помощью throws. Это требование - не от JVM, а от компилятора. Компилятор жёстко следит за декларациями, но вот JVM - нет. Что создаёт любопытную лазейку: обойти компилятор, оставаясь при этом в рамках спецификации JVM.</p>
57
<p>В Java существует старое, но всё ещё актуальное ограничение: если метод бросает checked‑исключение (например, IOException), он обязан явно объявить это с помощью throws. Это требование - не от JVM, а от компилятора. Компилятор жёстко следит за декларациями, но вот JVM - нет. Что создаёт любопытную лазейку: обойти компилятор, оставаясь при этом в рамках спецификации JVM.</p>
58
<p>В этой статье разберёмся, как это сделать с помощью Unsafe.throwException(), почему это вообще работает, где это может пригодиться, и на что стоит обратить внимание при использовании Java 17, 21 и 24.</p>
58
<p>В этой статье разберёмся, как это сделать с помощью Unsafe.throwException(), почему это вообще работает, где это может пригодиться, и на что стоит обратить внимание при использовании Java 17, 21 и 24.</p>
59
<p><a>Продложение</a></p>
59
<p><a>Продложение</a></p>
60
<h2>C++</h2>
60
<h2>C++</h2>
61
<h2>Линейная алгебра в C++ с Eigen</h2>
61
<h2>Линейная алгебра в C++ с Eigen</h2>
62
<p>Кто хоть раз пытался работать с матрицами в C++, знает, что это удовольствие сродни написанию своего STL - возможно, но зачем? Eigen - это библиотека, которая избавит вас от ручного управления памятью, оптимизирует вычисления и позволит писать код, похожий на чистую математику. Поэтому в этой статье мы разберем эту прекрасную библиотеку.</p>
62
<p>Кто хоть раз пытался работать с матрицами в C++, знает, что это удовольствие сродни написанию своего STL - возможно, но зачем? Eigen - это библиотека, которая избавит вас от ручного управления памятью, оптимизирует вычисления и позволит писать код, похожий на чистую математику. Поэтому в этой статье мы разберем эту прекрасную библиотеку.</p>
63
<p><a>Перейти к статье</a></p>
63
<p><a>Перейти к статье</a></p>
64
<h2>Range-v3 в C++</h2>
64
<h2>Range-v3 в C++</h2>
65
<p>В этой статье рассмотрим Range-v3 - библиотеку, которая изменила подход к обработке последовательностей в C++ и стала основой для std::ranges в C++20. Это библиотека, расширяющая стандартную библиотеку C++ возможностью работать с диапазонами вместо begin()/end(). В основе идеи лежат три концепции:</p>
65
<p>В этой статье рассмотрим Range-v3 - библиотеку, которая изменила подход к обработке последовательностей в C++ и стала основой для std::ranges в C++20. Это библиотека, расширяющая стандартную библиотеку C++ возможностью работать с диапазонами вместо begin()/end(). В основе идеи лежат три концепции:</p>
66
<ol><li>Views - ленивые представления данных</li>
66
<ol><li>Views - ленивые представления данных</li>
67
<li>Actions - eager-операции над контейнерами</li>
67
<li>Actions - eager-операции над контейнерами</li>
68
<li>Pipeline (|) - декларативный синтаксис для обработки последовательностей</li>
68
<li>Pipeline (|) - декларативный синтаксис для обработки последовательностей</li>
69
</ol><p><a>Продолжение</a></p>
69
</ol><p><a>Продолжение</a></p>
70
<h2>Golang</h2>
70
<h2>Golang</h2>
71
<h2>Алгоритм Кнута-Морриса-Пратта для поиска подстрок на Go</h2>
71
<h2>Алгоритм Кнута-Морриса-Пратта для поиска подстрок на Go</h2>
72
<p>Поиск подстроки в строке - важная задачка в текстовой обработке. В Go стандартная библиотека имеет strings.Index, но он использует простой перебор символов, который работает с O(n × m) в худшем случае, где n - длина текста, m - длина подстроки.</p>
72
<p>Поиск подстроки в строке - важная задачка в текстовой обработке. В Go стандартная библиотека имеет strings.Index, но он использует простой перебор символов, который работает с O(n × m) в худшем случае, где n - длина текста, m - длина подстроки.</p>
73
<p>Алгоритм Кнута-Морриса-Пратта решает эту проблему, используя префикс-функцию, которая позволяет пропускать заведомо ненужные сравнения. В результате его сложность <strong>O(n + m)</strong>, что делает его подходящим для больших текстов и множественных поисковых запросов.</p>
73
<p>Алгоритм Кнута-Морриса-Пратта решает эту проблему, используя префикс-функцию, которая позволяет пропускать заведомо ненужные сравнения. В результате его сложность <strong>O(n + m)</strong>, что делает его подходящим для больших текстов и множественных поисковых запросов.</p>
74
<p><a>Продолжение</a></p>
74
<p><a>Продолжение</a></p>
75
<h2>FissionGo: как запускать Go-функции в Kubernetes</h2>
75
<h2>FissionGo: как запускать Go-функции в Kubernetes</h2>
76
<p>В этой статье мы разберём фреймворк FissionGo, который упрощает работу с серверлес-функциями в Kubernetes. С помощью FissionGo можно писать Go-функции, загружать их в Kubernetes, привязывать триггеры и запускать без необходимости работать с контейнерами или YAML-манифестами. Мы рассмотрим, как установить Fission, создать простые HTTP-функции и управлять их ресурсами, а также кэшировать данные с помощью Redis для улучшения производительности.</p>
76
<p>В этой статье мы разберём фреймворк FissionGo, который упрощает работу с серверлес-функциями в Kubernetes. С помощью FissionGo можно писать Go-функции, загружать их в Kubernetes, привязывать триггеры и запускать без необходимости работать с контейнерами или YAML-манифестами. Мы рассмотрим, как установить Fission, создать простые HTTP-функции и управлять их ресурсами, а также кэшировать данные с помощью Redis для улучшения производительности.</p>
77
<p><a>Перейти к статье</a></p>
77
<p><a>Перейти к статье</a></p>
78
<h2>Интерактивный тур по Go 1.24</h2>
78
<h2>Интерактивный тур по Go 1.24</h2>
79
<p>В Go 1.24 появилось множество полезных обновлений, включая обобщённые псевдонимы типов, улучшенные слабые указатели и финализаторы. Также значительно оптимизирована работа с map, что ускоряет операции с большими коллекциями. Были добавлены новые функции для тестирования и бенчмаркинга, улучшая работу с конкурентным кодом. К тому же, релиз включает поддержку SHA-3 и другие криптографические улучшения, повышающие производительность и удобство работы с языком.</p>
79
<p>В Go 1.24 появилось множество полезных обновлений, включая обобщённые псевдонимы типов, улучшенные слабые указатели и финализаторы. Также значительно оптимизирована работа с map, что ускоряет операции с большими коллекциями. Были добавлены новые функции для тестирования и бенчмаркинга, улучшая работу с конкурентным кодом. К тому же, релиз включает поддержку SHA-3 и другие криптографические улучшения, повышающие производительность и удобство работы с языком.</p>
80
<p><a>Читать полностью</a></p>
80
<p><a>Читать полностью</a></p>
81
<h2>Реализация Paxos на Go: создаем алгоритм консенсуса без готовых решений</h2>
81
<h2>Реализация Paxos на Go: создаем алгоритм консенсуса без готовых решений</h2>
82
<p>Paxos - это алгоритм, который позволяет нескольким узлам прийти к единому мнению, даже если не все из них работают идеально. Даже если один или два узла оказываются недоступными, Paxos всё равно помогает согласовать решение, а остальным - узнать о том, что вообще было принято.</p>
82
<p>Paxos - это алгоритм, который позволяет нескольким узлам прийти к единому мнению, даже если не все из них работают идеально. Даже если один или два узла оказываются недоступными, Paxos всё равно помогает согласовать решение, а остальным - узнать о том, что вообще было принято.</p>
83
<p>Вот такие вещи - согласование, отказоустойчивость, выбор лидера - по сути, и составляют ядро распределённых систем. Они позволяют избежать катастроф.</p>
83
<p>Вот такие вещи - согласование, отказоустойчивость, выбор лидера - по сути, и составляют ядро распределённых систем. Они позволяют избежать катастроф.</p>
84
<p><a>Читать далее</a></p>
84
<p><a>Читать далее</a></p>
85
<a></a>
85
<a></a>