Revisit the English version (#1885)

* Update giscus scroller.

* Refine English docs and landing page

* Sync the headings.

* Update landing pages.

* Update the avatar

* Update Acknowledgements

* Update landing pages.

* Update contributors.

* Update

* Fix the formula formatting.

* Fix the glossary.

* Chapter 6. Hashing

* Remove Chinese chars.

* Fix headings.

* Update giscus themes.

* fallback to default giscus theme to solve 429 many requests error.

* Add borders for callouts.

* docs: sync character encoding translations

* Update landing page media layout and i18n
This commit is contained in:
Yudong Jin
2026-04-10 23:03:03 +08:00
committed by GitHub
parent ae03a167a4
commit b01036b09e
132 changed files with 1702 additions and 1508 deletions
+130 -133
View File
@@ -1,139 +1,136 @@
# Глоссарий
В таблице ниже приведены важные термины, встречающиеся в книге. Обратите внимание на следующие моменты.
- Рекомендуем запомнить английские названия терминов, чтобы легче читать англоязычные материалы.
- В русской версии для каждого термина приводится единый рекомендуемый перевод.
В таблице ниже приведены важные термины, встречающиеся в книге. Рекомендуем запомнить английские названия терминов, чтобы легче читать англоязычные материалы.
<p align="center"> Таблица <id> &nbsp; Важные термины по структурам данных и алгоритмам </p>
| English | Русский |
| ------------------------------ | ------------------------------ |
| algorithm | алгоритм |
| data structure | структура данных |
| code | код |
| file | файл |
| function | функция |
| method | метод |
| variable | переменная |
| asymptotic complexity analysis | асимптотический анализ сложности |
| time complexity | временная сложность |
| space complexity | пространственная сложность |
| loop | цикл |
| iteration | итерация |
| recursion | рекурсия |
| tail recursion | хвостовая рекурсия |
| recursion tree | дерево рекурсии |
| big-$O$ notation | нотация big-$O$ |
| asymptotic upper bound | асимптотическая верхняя граница |
| sign-magnitude | прямой код |
| 1s complement | обратный код |
| 2s complement | дополнительный код |
| array | массив |
| index | индекс |
| linked list | связный список |
| linked list node, list node | узел связного списка |
| head node | головной узел |
| tail node | хвостовой узел |
| list | список |
| dynamic array | динамический массив |
| hard disk | жесткий диск |
| random-access memory (RAM) | оперативная память |
| cache memory | кеш-память |
| cache miss | промах кеша |
| cache hit rate | коэффициент попадания в кеш |
| stack | стек |
| top of the stack | вершина стека |
| bottom of the stack | основание стека |
| queue | очередь |
| double-ended queue | двусторонняя очередь |
| front of the queue | голова очереди |
| rear of the queue | хвост очереди |
| hash table | хеш-таблица |
| hash set | хеш-набор |
| bucket | бакет |
| hash function | хеш-функция |
| hash collision | хеш-коллизия |
| load factor | коэффициент заполнения |
| separate chaining | цепная адресация |
| open addressing | открытая адресация |
| linear probing | линейное зондирование |
| lazy deletion | ленивое удаление |
| binary tree | двоичное дерево |
| tree node | узел дерева |
| left-child node | левый дочерний узел |
| right-child node | правый дочерний узел |
| parent node | родительский узел |
| left subtree | левое поддерево |
| right subtree | правое поддерево |
| root node | корневой узел |
| leaf node | листовой узел |
| edge | ребро |
| level | уровень |
| degree | степень |
| height | высота |
| depth | глубина |
| perfect binary tree | идеальное двоичное дерево |
| complete binary tree | полное двоичное дерево |
| full binary tree | строгое двоичное дерево |
| balanced binary tree | сбалансированное двоичное дерево |
| binary search tree | двоичное дерево поиска |
| AVL tree | АВЛ-дерево |
| red-black tree | красно-черное дерево |
| level-order traversal | обход по уровням |
| breadth-first traversal | обход в ширину |
| depth-first traversal | обход в глубину |
| pre-order traversal | прямой обход |
| in-order traversal | симметричный обход |
| post-order traversal | обратный обход |
| English | Русский |
| ------------------------------ | --------------------------------------- |
| algorithm | алгоритм |
| data structure | структура данных |
| code | код |
| file | файл |
| function | функция |
| method | метод |
| variable | переменная |
| asymptotic complexity analysis | асимптотический анализ сложности |
| time complexity | временная сложность |
| space complexity | пространственная сложность |
| loop | цикл |
| iteration | итерация |
| recursion | рекурсия |
| tail recursion | хвостовая рекурсия |
| recursion tree | дерево рекурсии |
| big-$O$ notation | нотация big-$O$ |
| asymptotic upper bound | асимптотическая верхняя граница |
| sign-magnitude | прямой код |
| 1s complement | обратный код |
| 2s complement | дополнительный код |
| array | массив |
| index | индекс |
| linked list | связный список |
| linked list node, list node | узел связного списка |
| head node | головной узел |
| tail node | хвостовой узел |
| list | список |
| dynamic array | динамический массив |
| hard disk | жесткий диск |
| random-access memory (RAM) | оперативная память |
| cache memory | кеш-память |
| cache miss | промах кеша |
| cache hit rate | коэффициент попадания в кеш |
| stack | стек |
| top of the stack | вершина стека |
| bottom of the stack | основание стека |
| queue | очередь |
| double-ended queue | двусторонняя очередь |
| front of the queue | голова очереди |
| rear of the queue | хвост очереди |
| hash table | хеш-таблица |
| hash set | хеш-набор |
| bucket | бакет |
| hash function | хеш-функция |
| hash collision | хеш-коллизия |
| load factor | коэффициент заполнения |
| separate chaining | цепная адресация |
| open addressing | открытая адресация |
| linear probing | линейное зондирование |
| lazy deletion | ленивое удаление |
| binary tree | двоичное дерево |
| tree node | узел дерева |
| left-child node | левый дочерний узел |
| right-child node | правый дочерний узел |
| parent node | родительский узел |
| left subtree | левое поддерево |
| right subtree | правое поддерево |
| root node | корневой узел |
| leaf node | листовой узел |
| edge | ребро |
| level | уровень |
| degree | степень |
| height | высота |
| depth | глубина |
| perfect binary tree | идеальное двоичное дерево |
| complete binary tree | полное двоичное дерево |
| full binary tree | строгое двоичное дерево |
| balanced binary tree | сбалансированное двоичное дерево |
| binary search tree | двоичное дерево поиска |
| AVL tree | АВЛ-дерево |
| red-black tree | красно-черное дерево |
| level-order traversal | обход по уровням |
| breadth-first traversal | обход в ширину |
| depth-first traversal | обход в глубину |
| pre-order traversal | прямой обход |
| in-order traversal | симметричный обход |
| post-order traversal | обратный обход |
| balanced binary search tree | сбалансированное двоичное дерево поиска |
| balance factor | фактор баланса |
| heap | куча |
| max heap | максимальная куча |
| min heap | минимальная куча |
| priority queue | приоритетная очередь |
| heapify | упорядочивание кучи |
| top-$k$ problem | поиск $k$ наибольших элементов |
| graph | граф |
| vertex | вершина |
| undirected graph | неориентированный граф |
| directed graph | ориентированный граф |
| connected graph | связный граф |
| disconnected graph | несвязный граф |
| weighted graph | взвешенный граф |
| adjacency | смежность |
| path | путь |
| in-degree | входящая степень |
| out-degree | исходящая степень |
| adjacency matrix | матрица смежности |
| adjacency list | список смежности |
| breadth-first search | поиск в ширину |
| depth-first search | поиск в глубину |
| binary search | двоичный поиск |
| searching algorithm | алгоритм поиска |
| sorting algorithm | алгоритм сортировки |
| selection sort | сортировка выбором |
| bubble sort | сортировка пузырьком |
| insertion sort | сортировка вставкой |
| quick sort | быстрая сортировка |
| merge sort | сортировка слиянием |
| heap sort | пирамидальная сортировка |
| bucket sort | блочная сортировка |
| counting sort | сортировка подсчетом |
| radix sort | поразрядная сортировка |
| divide and conquer | разделяй и властвуй |
| hanota problem | задача о Ханойской башне |
| backtracking algorithm | алгоритм поиска с возвратом |
| constraint | ограничение |
| solution | решение |
| state | состояние |
| pruning | отсечение |
| permutations problem | задача о перестановках |
| subset-sum problem | задача о сумме подмножеств |
| $n$-queens problem | задача о $n$ ферзях |
| dynamic programming | динамическое программирование |
| initial state | начальное состояние |
| state-transition equation | уравнение перехода состояния |
| knapsack problem | задача о рюкзаке |
| edit distance problem | задача о расстоянии редактирования |
| greedy algorithm | жадный алгоритм |
| balance factor | фактор баланса |
| heap | куча |
| max heap | максимальная куча |
| min heap | минимальная куча |
| priority queue | приоритетная очередь |
| heapify | упорядочивание кучи |
| top-$k$ problem | поиск $k$ наибольших элементов |
| graph | граф |
| vertex | вершина |
| undirected graph | неориентированный граф |
| directed graph | ориентированный граф |
| connected graph | связный граф |
| disconnected graph | несвязный граф |
| weighted graph | взвешенный граф |
| adjacency | смежность |
| path | путь |
| in-degree | входящая степень |
| out-degree | исходящая степень |
| adjacency matrix | матрица смежности |
| adjacency list | список смежности |
| breadth-first search | поиск в ширину |
| depth-first search | поиск в глубину |
| binary search | двоичный поиск |
| searching algorithm | алгоритм поиска |
| sorting algorithm | алгоритм сортировки |
| selection sort | сортировка выбором |
| bubble sort | сортировка пузырьком |
| insertion sort | сортировка вставкой |
| quick sort | быстрая сортировка |
| merge sort | сортировка слиянием |
| heap sort | пирамидальная сортировка |
| bucket sort | блочная сортировка |
| counting sort | сортировка подсчетом |
| radix sort | поразрядная сортировка |
| divide and conquer | разделяй и властвуй |
| hanota problem | задача о Ханойской башне |
| backtracking algorithm | алгоритм поиска с возвратом |
| constraint | ограничение |
| solution | решение |
| state | состояние |
| pruning | отсечение |
| permutations problem | задача о перестановках |
| subset-sum problem | задача о сумме подмножеств |
| $n$-queens problem | задача о $n$ ферзях |
| dynamic programming | динамическое программирование |
| initial state | начальное состояние |
| state-transition equation | уравнение перехода состояния |
| knapsack problem | задача о рюкзаке |
| edit distance problem | задача о расстоянии редактирования |
| greedy algorithm | жадный алгоритм |
@@ -806,8 +806,8 @@
$$
\begin{aligned}
O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
\text{Постоянная} < \text{Логарифмическая} < \text{Линейная} < \text{Квадратичная} < \text{Экспоненциальная}
& O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
& \text{Постоянная} < \text{Логарифмическая} < \text{Линейная} < \text{Квадратичная} < \text{Экспоненциальная}
\end{aligned}
$$
@@ -992,8 +992,8 @@ $$
$$
\begin{aligned}
O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!) \newline
\text{Постоянная} < \text{Логарифмическая} < \text{Линейная} < \text{Линейно-логарифмическая} < \text{Квадратичная} < \text{Экспоненциальная} < \text{Факториальная}
& O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!) \newline
& \text{Постоянная} < \text{Логарифмическая} < \text{Линейная} < \text{Линейно-логарифмическая} < \text{Квадратичная} < \text{Экспоненциальная} < \text{Факториальная}
\end{aligned}
$$
@@ -24,11 +24,9 @@
Исследователи той эпохи задумались: **если создать достаточно полную таблицу символов, которая включит все языки и знаки мира, разве это не решит проблемы многоязычной среды и искаженного текста**? Под влиянием этой идеи и появилась большая и всеобъемлющая таблица символов Unicode.
<u>Unicode</u> по-китайски называется "единый код" и теоретически способен вместить более миллиона символов. Его цель - собрать символы со всего мира в единую таблицу символов, предоставить универсальный стандарт для обработки и отображения текстов на разных языках и уменьшить количество проблем с искажением текста, вызванных различиями стандартов кодирования.
<u>Unicode</u> по-китайски называется "единый код" и теоретически способен вместить более миллиона символов. Его цель - собрать символы со всего мира в единую таблицу символов, предоставить универсальный стандарт для обработки и отображения текстов на разных языках и уменьшить количество проблем с искажением текста, вызванных различиями стандартов кодирования. С момента публикации в 1991 году Unicode непрерывно расширялся, добавляя новые языки и символы. По состоянию на сентябрь 2022 года Unicode уже включал 149186 символов, в том числе буквы разных языков, знаки, а также эмодзи.
С момента публикации в 1991 году Unicode непрерывно расширялся, добавляя новые языки и символы. По состоянию на сентябрь 2022 года Unicode уже включал 149186 символов, в том числе буквы разных языков, знаки, а также эмодзи. Unicode сопоставляет каждому символу кодовую точку (числовой идентификатор символа), диапазон значений которой составляет от 0 до 1114111 (то есть от U+0000 до U+10FFFF), образуя единое пространство нумерации символов.
Unicode - это универсальный набор символов, который по сути просто присваивает каждому символу номер (так называемую "кодовую точку"), **но не определяет, как именно хранить эти кодовые точки в компьютере**. Тут неизбежно возникает вопрос: если в одном тексте одновременно встречаются кодовые точки Unicode разной длины, как система должна разбирать символы? Например, если дан код длиной 2 байта, как понять, является ли это одним 2-байтовым символом или двумя 1-байтовыми?
Как универсальный набор символов, Unicode по сути присваивает каждому символу уникальную "кодовую точку" (числовой идентификатор символа), диапазон которой составляет от U+0000 до U+10FFFF, образуя единое пространство нумерации символов. Однако **Unicode не определяет, как именно хранить эти кодовые точки в компьютере**. Тут неизбежно возникает вопрос: если в одном тексте одновременно встречаются кодовые точки Unicode разной длины, как система должна разбирать символы? Например, если дан код длиной 2 байта, как понять, является ли это одним 2-байтовым символом или двумя 1-байтовыми?
Для этой проблемы **прямолинейное решение состоит в том, чтобы хранить все символы в кодировке одинаковой длины**. Как показано на рисунке ниже, каждый символ в "Hello" занимает 1 байт, а каждый символ в "алгоритм" занимает 2 байта. Мы можем дополнить старшие биты нулями и закодировать все символы в "Hello алгоритм" в виде 2-байтовых единиц. Тогда система сможет считывать по одному символу каждые 2 байта и восстановить эту фразу.
+4 -4
View File
@@ -30,13 +30,13 @@
## Благодарности
Эта книга постоянно совершенствуется благодаря совместным усилиям множества участников открытого сообщества. Благодарим каждого автора, вложившего свое время и силы; их имена перечислены в порядке, автоматически сгенерированном GitHub: krahets, coderonion, Gonglja, nuomi1, Reanon, justin-tse, hpstory, danielsss, curtishd, night-cruise, S-N-O-R-L-A-X, rongyi, msk397, gvenusleo, khoaxuantu, rivertwilight, K3v123, gyt95, zhuoqinyue, yuelinxin, Zuoxun, mingXta, Phoenix0415, FangYuan33, GN-Yu, longsizhuo, IsChristina, xBLACKICEx, guowei-gong, Cathay-Chen, pengchzn, QiLOL, magentaqin, hello-ikun, JoseHung, qualifier1024, thomasq0, sunshinesDL, L-Super, Guanngxu, Transmigration-zhou, WSL0809, Slone123c, lhxsm, yuan0221, what-is-me, Shyam-Chen, theNefelibatas, longranger2, codeberg-user, xiongsp, JeffersonHuang, prinpal, seven1240, Wonderdch, malone6, xiaomiusa87, gaofer, bluebean-cloud, a16su, SamJin98, hongyun-robot, nanlei, XiaChuerwu, yd-j, iron-irax, mgisr, steventimes, junminhong, heshuyue, danny900714, MolDuM, Nigh, Dr-XYZ, XC-Zero, reeswell, PXG-XPG, NI-SW, Horbin-Magician, Enlightenus, YangXuanyi, beatrix-chan, DullSword, xjr7670, jiaxianhua, qq909244296, iStig, boloboloda, hts0000, gledfish, wenjianmin, keshida, kilikilikid, lclc6, lwbaptx, linyejoe2, liuxjerry, llql1211, fbigm, echo1937, szu17dmy, dshlstarr, Yucao-cy, coderlef, czruby, bongbongbakudan, beintentional, ZongYangL, ZhongYuuu, ZhongGuanbin, hezhizhen, linzeyan, ZJKung, luluxia, xb534, ztkuaikuai, yw-1021, ElaBosak233, baagod, zhouLion, yishangzhang, yi427, yanedie, yabo083, weibk, wangwang105, th1nk3r-ing, tao363, 4yDX3906, syd168, sslmj2020, smilelsb, siqyka, selear, sdshaoda, Xi-Row, popozhu, nuquist19, noobcodemaker, XiaoK29, chadyi, lyl625760, lucaswangdev, 0130w, shanghai-Jerry, EJackYang, Javesun99, eltociear, lipusheng, KNChiu, BlindTerran, ShiMaRing, lovelock, FreddieLi, FloranceYeh, fanchenggang, gltianwen, goerll, nedchu, curly210102, CuB3y0nd, KraHsu, CarrotDLaw, youshaoXG, bubble9um, Asashishi, Asa0oo0o0o, fanenr, eagleanurag, akshiterate, 52coder, foursevenlove, KorsChen, GaochaoZhu, hopkings2008, yang-le, realwujing, Evilrabbit520, Umer-Jahangir, Turing-1024-Lee, Suremotoo, paoxiaomooo, Chieko-Seren, Allen-Scai, ymmmas, Risuntsy, Richard-Zhang1019, RafaelCaso, qingpeng9802, primexiao, Urbaner3, zhongfq, nidhoggfgg, MwumLi, CreatorMetaSky, martinx, ZnYang2018, hugtyftg, logan-qiu, psychelzh, Keynman, KeiichiKasai и KawaiiAsh.
Эта книга постоянно совершенствуется благодаря совместным усилиям множества участников открытого сообщества. Благодарим каждого автора, вложившего свое время и силы; их имена перечислены в порядке, автоматически сгенерированном GitHub: krahets, coderonion, Gonglja, nuomi1, Reanon, justin-tse, hpstory, danielsss, curtishd, night-cruise, S-N-O-R-L-A-X, rongyi, msk397, gvenusleo, khoaxuantu, rivertwilight, K3v123, gyt95, zhuoqinyue, yuelinxin, Zuoxun, mingXta, Phoenix0415, FangYuan33, GN-Yu, longsizhuo, pengchzn, QiLOL, Cathay-Chen, guowei-gong, xBLACKICEx, IsChristina, JoseHung, qualifier1024, hello-ikun, magentaqin, Guanngxu, thomasq0, sunshinesDL, L-Super, Transmigration-zhou, WSL0809, Slone123c, lhxsm, yuan0221, what-is-me, theNefelibatas, Shyam-Chen, sangxiaai, longranger2, codeberg-user, xiongsp, JeffersonHuang, prinpal, seven1240, Wonderdch, malone6, xiaomiusa87, gaofer, bluebean-cloud, a16su, SamJin98, hongyun-robot, nanlei, XiaChuerwu, yd-j, iron-irax, mgisr, steventimes, junminhong, heshuyue, danny900714, Nigh, Dr-XYZ, MolDuM, XC-Zero, reeswell, PXG-XPG, NI-SW, Horbin-Magician, Enlightenus, YangXuanyi, xjr7670, beatrix-chan, DullSword, qq909244296, iStig, boloboloda, hts0000, gledfish, fbigm, echo1937, jiaxianhua, wenjianmin, keshida, kilikilikid, lclc6, lwbaptx, linyejoe2, liuxjerry, szu17dmy, dshlstarr, Yucao-cy, coderlef, czruby, bongbongbakudan, beintentional, ZongYangL, ZhongYuuu, ZhongGuanbin, hezhizhen, linzeyan, ZJKung, JTCPOWI, KawaiiAsh, luluxia, xb534, ztkuaikuai, yw-1021, ElaBosak233, baagod, zhouLion, yishangzhang, yi427, yanedie, yabo083, weibk, wangwang105, th1nk3r-ing, tao363, 4yDX3906, syd168, sslmj2020, smilelsb, siqyka, selear, sdshaoda, Xi-Row, popozhu, nuquist19, noobcodemaker, XiaoK29, chadyi, lyl625760, lucaswangdev, llql1211, 0130w, shanghai-Jerry, EJackYang, Javesun99, eltociear, lipusheng, KNChiu, BlindTerran, ShiMaRing, lovelock, FreddieLi, FloranceYeh, fanchenggang, gltianwen, goerll, nedchu, curly210102, CuB3y0nd, KraHsu, CarrotDLaw, youshaoXG, bubble9um, Asashishi, Asa0oo0o0o, fanenr, eagleanurag, akshiterate, 52coder, foursevenlove, KorsChen, hopkings2008, yang-le, realwujing, Evilrabbit520, Umer-Jahangir, Turing-1024-Lee, Suremotoo, paoxiaomooo, Chieko-Seren, Senrian, Allen-Scai, 19santosh99, ymmmas, Risuntsy, Richard-Zhang1019, RafaelCaso, qingpeng9802, primexiao, Urbaner3, codetypess, nidhoggfgg, MwumLi, CreatorMetaSky, martinx, ZnYang2018, hugtyftg, logan-qiu, psychelzh, Kunchen-Luo, Keynman и KeiichiKasai.
Рецензирование кода книги выполнили coderonion, curtishd, Gonglja, gvenusleo, hpstory, justin-tse, khoaxuantu, krahets, night-cruise, nuomi1, Reanon и rongyi (в алфавитном порядке). Благодарим их за потраченное время и силы, которые обеспечили стандартизацию и единообразие кода на различных языках.
Традиционную китайскую версию книги вычитали Shyam-Chen и Dr-XYZ, английскую версию - yuelinxin, K3v123, QiLOL, Phoenix0415, SamJin98, yanedie, RafaelCaso, pengchzn, thomasq0 и magentaqin, а японскую версию - eltociear. Именно благодаря их постоянному вкладу эта книга может служить более широкому кругу читателей, и мы искренне благодарим их.
Английскую версию книги вычитали yuelinxin, K3v123, magentaqin, QiLOL, Phoenix0415, SamJin98, yanedie, RafaelCaso, pengchzn и thomasq0; японскую версию - eltociear; русскую версию - И. А. Шевкун и Yuyan Huang; традиционную китайскую версию - Shyam-Chen и Dr-XYZ. Именно благодаря их вкладу эта книга может служить более широкому кругу читателей, и мы искренне благодарим их.
Инструмент генерации ePub-версии этой книги разработал zhongfq. Благодарим его за вклад, который дал читателям более свободный способ чтения.
Инструмент генерации ePub-версии этой книги разработал zhongfq. Благодарим его за вклад, который дал читателям более гибкий способ чтения.
В процессе создания этой книги мне помогало много людей.
@@ -45,7 +45,7 @@
- Благодарю Tengbao, Qibao и Feibao за креативное название книги, которое навевает приятные воспоминания о первой строке кода "Hello World!";
- Благодарю Xiaoquan за профессиональную помощь в вопросах интеллектуальной собственности, что сыграло важную роль в совершенствовании этой открытой книги;
- Благодарю Sutong за дизайн обложки и логотипа книги, а также за терпение при многочисленных исправлениях по моим просьбам;
- Благодарю @squidfunk за советы по оформлению и за разработку открытой темы документации [Material-for-MkDocs](https://github.com/squidfunk/mkdocs-material/tree/master).
- Благодарю @squidfunk за советы по оформлению и за разработку открытой темы документации [Material-for-MkDocs](https://github.com/squidfunk/mkdocs-material).
В процессе написания книги я ознакомился с множеством учебников и статей по структурам данных и алгоритмам. Эти работы послужили отличным образцом для этой книги, обеспечив ее точность и качество. Я искренне благодарю всех преподавателей и предшественников за их выдающийся вклад!
+2 -2
View File
@@ -243,7 +243,7 @@
<p>Русская печатная версия была переведена И. А. Шевкун, а русская онлайн-версия была вычитана Yuyan Huang. Благодарим их за вклад!</p>
<div class="profile-div translator-profile-div">
<div class="profile-cell translator-profile-cell">
<img class="profile-img" src="../assets/avatar/avatar_xxx.jpg" alt="Translator: shevkun" />
<img class="profile-img" src="../assets/avatar/avatar_shevkun.jpg" alt="Translator: shevkun" />
<br><b>И. А. Шевкун</b>
</div>
<div class="profile-cell translator-profile-cell">
@@ -257,7 +257,7 @@
<!-- code reviewers -->
<div style="margin: 2em auto;">
<h3>Переводчики кода</h3>
<h3>Ревьюеры кода</h3>
<p>Многоязычные версии кода в этой книге были подготовлены при участии следующих разработчиков. Благодарим их за время и вклад!</p>
<div class="profile-div">
<div class="profile-cell">