Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
3627328e04
|
|||
|
44dc59a365
|
|||
|
7a3d58c6cf
|
|||
|
cb0760d2cb
|
|||
|
b20fc27b37
|
|||
|
88fe3d6c15
|
|||
|
30c75da9cf
|
|||
|
6c7381c69a
|
|||
|
64c2c00109
|
|||
|
a49db41e25
|
|||
|
2bfaf76656
|
|||
|
17e5a0a7ec
|
|||
|
361fe1211e
|
|||
|
4aec7e3e23
|
|||
|
5864417192
|
|||
|
8007e06f2d
|
|||
|
075bf11f02
|
|||
|
8e3da07040
|
|||
|
88afa10822
|
|||
|
25ccb23401
|
|||
|
b1c49a5df9
|
|||
|
3fe912e635
|
|||
|
ce56c8e8bf
|
|||
|
ff1a99d299
|
|||
|
e16c877d35
|
|||
|
af5ae68a24
|
|||
|
7fab870c87
|
|||
|
b4b831f902
|
|||
|
9d960b9e01
|
|||
|
d253a9afa9
|
|||
|
1a640a8f01
|
|||
|
4589b634be
|
|||
|
965bfa1c2c
|
|||
|
d05f073a07
|
|||
|
d78fa41fa7
|
@@ -10,6 +10,9 @@ compile_commands.json
|
||||
CTestTestfile.cmake
|
||||
_deps
|
||||
CMakeUserPresets.json
|
||||
docs
|
||||
Doxylocal
|
||||
|
||||
|
||||
# CLion
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
[submodule "server/fxalloc"]
|
||||
path = server/fxalloc
|
||||
url = https://felexdev.ru/git/felex67/fxalloc.git
|
||||
url = git@felexdev.ru:felex67/fxalloc.git
|
||||
|
||||
@@ -12,38 +12,6 @@
|
||||
## 23.04.2026
|
||||
Стартовала работа над аллокатором **FXAlloc** → [fxalloc/DIARY.md](https://felexdev.ru/git/felex67/fxalloc/src/branch/main/DIARY.md)
|
||||
|
||||
## Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"
|
||||
### Анализ формата DIARY.md
|
||||
#### Ключевые особенности оригинального формата
|
||||
Естественность изложения:
|
||||
* Спонтанность в подаче материала
|
||||
* Отсутствие цензуры технических и личных размышлений
|
||||
* Живой диалог с читателем
|
||||
* Неформальный стиль общения
|
||||
#### Ценность оригинального подхода
|
||||
Уникальные черты:
|
||||
* Реальное время написания
|
||||
* Честное описание трудностей и решений
|
||||
* Смешение стилей — технического и разговорного
|
||||
* Отсутствие редактирования на первом этапе
|
||||
### Рекомендации по сохранению формата
|
||||
Основные принципы:
|
||||
* Сохранять неформальный тон общения
|
||||
* Не бояться личных наблюдений
|
||||
* Делиться настоящими эмоциями
|
||||
* Оставлять спонтанные мысли без излишней правки
|
||||
### Почему имитация не работает
|
||||
Ограничения:
|
||||
* Потеря аутентичности при попытке копирования
|
||||
* Искусственность структурированных ответов
|
||||
* Отсутствие импровизации в заготовленных текстах
|
||||
### Заключение
|
||||
Основной вывод: оригинальный формат DIARY.md ценен именно своей естественностью и неподдельностью. Попытки его имитации приведут к потере уникальности и ценности документа.
|
||||
Рекомендуется:
|
||||
* Продолжать вести DIARY.md в текущем стиле
|
||||
* Сохранять спонтанность и честность изложения
|
||||
* Не пытаться искусственно структурировать поток мыслей
|
||||
|
||||
# 02.05.2026
|
||||
|
||||
В виду борьбы за даступность для всех и некоторых недостатков github.com, перебазировал репозиторий на свой сервер.
|
||||
+12
@@ -14,6 +14,18 @@
|
||||
| Статус | Задача | Описание |
|
||||
|:-:|:-----|:-------|
|
||||
|
||||
# 21.05.2026
|
||||
| Статус | Задача | Описание |
|
||||
|:-:|:-----|:-------|
|
||||
| ✅ | **CI/CD** | Опубликован блог **felexdev.ru**(автодеплой). |
|
||||
| ✅ | **CI/CD** | Опубликована документация на **neurox.su**(автодеплой). |
|
||||
|
||||
# 15.06.2026
|
||||
| Статус | Задача | Описание |
|
||||
|:-:|:-----|:-------|
|
||||
| ✅ | **Документация** | Оптимизация Doxygen |
|
||||
|
||||
|
||||
# 11.05.2026
|
||||
| Статус | Задача | Описание |
|
||||
|:--:|:-----|:-------|
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
\mainpage
|
||||

|
||||
# NeurOX: Крестики‑нолики с ИИ или войти в IT
|
||||
|
||||
| | |
|
||||
|------------------:|:----------------------------------------------------------------------------------|
|
||||
| **Репозиторий:** | [https://felexdev.ru/git/felex67/neurox](https://felexdev.ru/git/felex67/neurox) |
|
||||
|**Документация:** | [https://neurox.su](https://neurox.su) |
|
||||
| **Блог:** | [https://felexdev.ru](https://felexdev.ru) |
|
||||
|
||||
## Цель проекта
|
||||
|
||||
@@ -82,7 +88,7 @@
|
||||
* RAM: 12 GB;
|
||||
* ROM: 512 GB SSD.
|
||||
|
||||
### Стандарты и спецификации
|
||||
## Стандарты и спецификации
|
||||
|
||||
* **C11** (ISO/IEC 9899:2011) — для C‑ядра и десктоп‑клиента.
|
||||
* **C++11** (ISO/IEC 14882:2011) — для десктоп‑клиента (SFML).
|
||||
@@ -113,11 +119,11 @@
|
||||
|
||||
## Прогресс
|
||||
| Статус | Задача | Описание | Дата |
|
||||
|:------:|:-------------------|:------------------------------------------------|:----------:|
|
||||
| ➤ | **Документация** | Оптимизация Doxygen | |
|
||||
| ✅ | **Документация** | Обновлены контакты в **README.md**. | 11.05.2026 |
|
||||
| ✅ | **Документация** | Создан логотип проекта. | 11.05.2026 |
|
||||
| ✅ | **Инфраструктура** | Создана группа **NeurOX felexdev.ru** ВКонтакте | 11.05.2026 |
|
||||
|:------:|:--------------------|:--------------------------------------------------------|:----------:|
|
||||
| ➤ | **UX-исследование** | Оптимизация Doxygen | |
|
||||
| ✅ | **CI/CD** | Опубликован блог **felexdev.ru**(автодеплой). | 21.05.2026 |
|
||||
| ✅ | **CI/CD** | Опубликована документация на **neurox.su**(автодеплой). | 21.05.2026 |
|
||||
| ✅ | **Документация** | Оптимизация Doxygen | 15.06.2026 |
|
||||
|
||||
Подробный прогресс: [PROGRESS.md](PROGRESS.md)
|
||||
|
||||
@@ -173,27 +179,27 @@
|
||||
* публикация демо‑видео.
|
||||
|
||||
## Дисклеймер
|
||||
|
||||
* В коде может, вернее — будет, использоваться неочевидная логика.
|
||||
* Если вы считаете, что я где‑то что‑то сделал не по фэн‑шую — я эстет, но в плане эффективности.
|
||||
* Если вы считаете, что я где‑то что‑то сделал не по фэн‑шую,— я эстет, но в плане эффективности.
|
||||
* Если когда‑нибудь кто‑нибудь найдёт совпадение названия проекта и репозитория нарушением авторских прав — Бог Вам судья! 😃
|
||||
* Проект личный, код открытый, милости просим, заходите и смотрите.
|
||||
* **Никогда, ни в коем разе не верьте ИИ, они изварачиваются и врут не смотря на то что вы их предупреждаете! ВСЕ!!! [почему_я_не_верю_ии.zip](https://drive.google.com/file/d/1IaYQl4TBFplYMidjAahn_NKzQrAS-rW7/view?usp=sharing)(Спасибо друзьям)**
|
||||
* **Никогда, ни в коем разе не верьте ИИ, они изворачиваются и врут несмотря на то что вы их предупреждаете! ВСЕ!!! [почему_я_не_верю_ии.zip](https://drive.google.com/file/d/1IaYQl4TBFplYMidjAahn_NKzQrAS-rW7/view?usp=sharing)(Спасибо друзьям)**
|
||||
|
||||
|
||||
## Лицензия
|
||||
|
||||
Apache License 2.0 — код открыт для изучения.
|
||||
|
||||
## Контакты
|
||||
* Сайт разработчика: [felexdev.ru](https://felexdev.ru)
|
||||
* VK: [felexdev.neurox](https://vk.com/felexdev.neurox)
|
||||
* felexdev.ru: [felex67](https://felexdev.ru/git/felex67)
|
||||
* GitHub: [felex67](https://github.com/felex67)
|
||||
* Email: <a href="mailto:admin@felexdev.ru">admin@felexdev.ru</a>, <a href="mailto:felexxx67@yandex.ru">felexxx67@yandex.ru</a>
|
||||
|
||||
[felexdev_logo](logo/felexdev_logo.svg)
|
||||
|
||||
# Лирическое отступление
|
||||
К каждому из модулей будет приложено своё "лирическое отступление" в формате дневника процесса раззработки(DIARY.md) сплошным потоком мыслей в обычном разговорном стиле. Целю такого формата является продемонстрировать как происходит собственно сам процесс разработки от и до без захламления технической документации. В коде иногда можно будет встретить сноски на эти самые дневники. В корневом DIARY.md будут отражены мысли масштаба проекта в целом(взаимодействие компонентов и всей экосистемы в целом). Вся техническая документация заполняется по мере готовности того или иного модуля по следующим принципам: **мысль ↔ дневник ↔ код → комментарии → тесты → профилирование(по возможности) → документация**.
|
||||
К каждому из модулей будет приложено своё "лирическое отступление" в формате дневника процесса разработки(DIARY.md) сплошным потоком мыслей в обычном разговорном стиле. Целью такого формата является продемонстрировать как происходит собственно сам процесс разработки от и до без захламления технической документации. В коде иногда можно будет встретить сноски на эти самые дневники. В корневом DIARY.md будут отражены мысли масштаба проекта в целом(взаимодействие компонентов и всей экосистемы в целом). Вся техническая документация заполняется по мере готовности того или иного модуля по следующим принципам: **мысль ↔ дневник ↔ код → комментарии → тесты → профилирование(по возможности) → документация**.
|
||||
|
||||
### ИИ аспект
|
||||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода — профилирование и тесты. Как у борца за эффективность у меня нет нежелания заниматься рефакторингом ради рефакторинга, по-этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки архитектуры. Считаю что от этого зависит львиная доля успешности проекта в принципе, так как если на скорую руку спроектировать, то даже самые опытные разработчики не помогут, собственно после такого подхода и начинается описанный выше рефакторинг.
|
||||
|
||||
@@ -203,7 +209,7 @@ Apache License 2.0 — код открыт для изучения.
|
||||
* Анализ кода в формате Code-review, практическая польза:
|
||||
* дисциплинирует, код всегда должен оставаться чистым.
|
||||
* подготовка ко входу в реальную разработку с живой командой, моя основная цель - карьера в IT.
|
||||
* даже топовые специалисты могут допускать казалось-бы очевидные ошибки, когда мысли летят одна за другой их можно по-просту незаметить.
|
||||
* даже топовые специалисты могут допускать казалось бы очевидные ошибки, когда мысли летят одна за другой их можно попросту не заметить.
|
||||
* Даёт понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
||||
|
||||
Что я понял за время общения с ней(YandexGPT АлисаAI):
|
||||
@@ -212,14 +218,14 @@ Apache License 2.0 — код открыт для изучения.
|
||||
* 10, а лучше 100 раз переспросите с разных сторон(задавайте вопросы в разных вариациях до тех пор пока ответ не будет однозначным).
|
||||
* Даже если Вам кажется что ИИ дал ±точный ответ — переспросите ещё раз.
|
||||
* Не пытайтесь доказать ИИ что Вы — "не олень", он этого не оценит.
|
||||
* Предлагая ИИ оценить написанный код будьте готовы к тому что Вас разнесут в пух и прах по тем аспектам где ответственность кода заканчивается(принцип SRP), у ИИ галочка на расширяемость и проверки(NULL-sfety, неявные проверки они попросту не видят), вернее не "галочка" а "ГАЛИЩЕ", KISS+YAGNI им надо явно объяснять в комментариях, хотя даже после этого они в ответе выкатять здоровенный список "недостатки".
|
||||
* Предлагая ИИ оценить написанный код будьте готовы к тому что Вас разнесут в пух и прах по тем аспектам где ответственность кода заканчивается(принцип SRP), у ИИ галочка на расширяемость и проверки(NULL-sfety, неявные проверки они попросту не видят), вернее не "галочка" а "ГАЛИЩЕ", KISS+YAGNI им надо явно объяснять в комментариях, хотя даже после этого они в ответе выкатят здоровенный список "недостатки".
|
||||
* ИИ - это инструмент технического анализа по "устоявшимся" шаблонам, каждое неординарное решение сразу попадает в "недостатки". ИИ не видит "замысел", только разрозненные шаблоны и маркеры.
|
||||
|
||||
Мне очень поднимают настроение многочасовые баталии с ней, однако, это отвлекает от сути. Каждый раз когда я в итоге довожу YandexGPT 5.1 Pro(АлисаAI) до стадии "Да, Вы правы..." в коде я оставляю коментарии сгенерированные ею для неё же и помечаю их как "коментарии от YandexGPT 5.1 Pro(АлисаAI)". Очень часто в коментариях к коду можно встретить объяснения такого рода "АлисаAI настояла" в тех местах где наши мнения расходились но я пошёл на компромисс.
|
||||
Мне очень поднимают настроение многочасовые баталии с ней, однако, это отвлекает от сути. Каждый раз когда я в итоге довожу YandexGPT 5.1 Pro(АлисаAI) до стадии "Да, Вы правы..." в коде я оставляю комментарии сгенерированные ею для неё же и помечаю их как "комментарии от YandexGPT 5.1 Pro(АлисаAI)". Очень часто в коментариях к коду можно встретить объяснения такого рода "АлисаAI настояла" в тех местах где наши мнения расходились но я пошёл на компромисс.
|
||||
|
||||
### Основной посыл
|
||||
|
||||
Хоть проект изначально и пердполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "как это было". Проект постепенно перерос в своеобразную "историю жизни", это неординарный подход к разработке, но в виду того что я веду проект один и колаборация не предполагается, я продолжу в том-же духе, в первую очередь — для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее — приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искуство и к произведению "История одного байта", которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.
|
||||
Хоть проект изначально и предполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "как это было". Проект постепенно перерос в своеобразную "историю жизни", это неординарный подход к разработке, но ввиду того что я веду проект один и коллаборация не предполагается, я продолжу в том-же духе, в первую очередь — для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее — приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искусство и к произведению "История одного байта", которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.
|
||||
|
||||
### Образовательный аспект
|
||||
Проект открыт для изучения, как автор — не претендую на звание "разработчик года", отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "смежным" специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их в дальнейшем. Весь код будет снабжён "удобоваримыми" коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования).
|
||||
@@ -229,7 +235,7 @@ Apache License 2.0 — код открыт для изучения.
|
||||
|
||||
### Начата разработка общих модулей.
|
||||
#### XOGame
|
||||
Разработана типичная архитектура со скрытой реализацией и заложенной возможностью изменения поведения модуля через указатели на структуры. Как и обычно(не раз проверено) внешний интерфейс константен, доступ к функциям модуля только через указатели внутри внешних неизменяемых структур. Почему именно так — потому что так проще отловить ошибки, проверяем только внутреннюю реализацию, отлаживаем её и используем. Если в дальнейшем возникают ошибки - это не вина модуля, это вина вызывающего кода. В контексте всего решения это избавляет от рефапкторинга ради рефакторинга и бесконечной скачки от файла к файлу.
|
||||
Разработана типичная архитектура со скрытой реализацией и заложенной возможностью изменения поведения модуля через указатели на структуры. Как и обычно(не раз проверено) внешний интерфейс константен, доступ к функциям модуля только через указатели внутри внешних неизменяемых структур. Почему именно так — потому что так проще отловить ошибки, проверяем только внутреннюю реализацию, отлаживаем её и используем. Если в дальнейшем возникают ошибки - это не вина модуля, это вина вызывающего кода. В контексте всего решения это избавляет от рефакторинга ради рефакторинга и бесконечной скачки от файла к файлу.
|
||||
|
||||
После предоставления кода **xogame/includes/XOGame.h**, **xogame/headers/_XOGame.h** и **xogame/src/XOGame.c** на ревью YandexGPT 5.1 Pro(АлисаAI) и 4-хчасовой баталии по поводу **void* fxalloc(size_t _NBytes)** решено пока что "забыть" про реализацию XOGame.c и заняться аллокатором **fxalloc.c**, иначе я не выдержу, порой она достаёт "до чёртиков" 😃
|
||||
|
||||
@@ -239,7 +245,7 @@ Apache License 2.0 — код открыт для изучения.
|
||||
### 26.04.2026
|
||||
Сломал Алису попросив оценить расчёты:
|
||||
| Параметр | Формула | Лимит guiuser-ов | Описание |
|
||||
|---------:|:------------------------:|:----------------:|:-------------------------------------|
|
||||
|---------:|:--------------------------:|:----------------:|:-------------------------------------|
|
||||
|**Wi-Fi:**| $⌈\frac{85,3×10^6}{25×8}⌉$ | 426 500 | Не то что бы много, но дох-х-ходчиво |
|
||||
|
||||
### 28.04.2026
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Информация
|
||||
* Файл для отслеживания текущих задач проекта
|
||||
* Последнее обновление: [25.04.2026]
|
||||
* Последнее обновление: [19.05.2026]
|
||||
|
||||
## Условные обозначения
|
||||
* 🔥 - Наивысший приоритет
|
||||
@@ -13,9 +13,7 @@
|
||||
## Задачи в процессе
|
||||
|Срочность|Компонент|Задача|Описание|
|
||||
|:-------:|:-------:|:-----|:-------|
|
||||
|🔥|**Архитектура**|**Работа с документацией**|Стандартизация и реорганизация документации|
|
||||
|🔥|**FXAlloc**|**Проектирование архитектуры**|Интерфейс, внутреннее устройство|
|
||||
|🔥|**FXAlloc**|**Документация**|Описание архитектуры решения, ведение DAIRY.md|
|
||||
|🔥|**FXAlloc**|**Проектирование**|Сбор отзывов по архитектуре|
|
||||
|🔥|**FXAlloc**|**Logic**|Реализации внутренних методов|
|
||||
|🔥|**FXAlloc**|**API**|Реализация внешних методов|
|
||||
|🔥|**FXAlloc**|**Тестирование**|Написание юнит-тестов|
|
||||
@@ -25,7 +23,7 @@
|
||||
|🔴|**XOGame**|**Тестирование**|Написание юнит-тестов|
|
||||
|🔴|**XOGame**|**Оптимизация**|Анализ производительности|
|
||||
|🟡|**AINeurox**|**Проектирование архитектуры**|Интерфейс, внутреннее устройство|
|
||||
|🟡|**AINeurox**|**Документация**|Описание архитектуры решения, ведение DAIRY.md|
|
||||
|🟡|**AINeurox**|**Документация**|Описание архитектуры решения, ведение DIARY.md|
|
||||
|🟡|**AINeurox**|**Logic**|Реализации внутренних методов|
|
||||
|🟡|**AINeurox**|**API**|Реализация внешних методов|
|
||||
|🟡|**AINeurox**|**Тестирование**|Написание юнит-тестов|
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* @author admin@felexdev.ru
|
||||
* @version 1.0.0
|
||||
*
|
||||
* @brief Header template
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif //__cplusplus
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif //__cplusplus
|
||||
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
rm -rf /var/www/neurox.su/docs
|
||||
|
||||
doxygen Doxylocal
|
||||
@@ -0,0 +1,39 @@
|
||||
body {
|
||||
background-color: #202028;
|
||||
color:#ccd;
|
||||
}
|
||||
h1 {
|
||||
color:#ddc;
|
||||
}
|
||||
h2 {
|
||||
color:#ddc;
|
||||
}
|
||||
h3 {
|
||||
color:#ddc;
|
||||
}
|
||||
h4 {
|
||||
color:#ddc;
|
||||
}
|
||||
h5 {
|
||||
color:#ddc;
|
||||
}
|
||||
h6 {
|
||||
color:#ddc;
|
||||
}
|
||||
#projectname {
|
||||
color: #e7f;
|
||||
font-weight: bolder;
|
||||
}
|
||||
#projectnumber {
|
||||
color: #aad;
|
||||
font-weight: normal;
|
||||
}
|
||||
#projectbrief {
|
||||
color: #dda;
|
||||
font-weight: normal;
|
||||
font-weight: bold;
|
||||
}
|
||||
summary {
|
||||
font-weight: bold;
|
||||
color: #ddc;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"><path d="M10.4.5c1.963 0 2.946 0 3.667.442a3 3 0 0 1 .99.99c.443.722.443 1.704.443 3.668v.8l-.007 1.301c-.02 1.139-.104 1.826-.435 2.367l-.097.149c-.236.338-.54.625-.894.842l-.138.078c-.52.267-1.186.338-2.229.357l-.206.001v.205c-.022 1.139-.105 1.826-.436 2.367a2.999 2.999 0 0 1-.99.99c-.542.332-1.23.415-2.368.436l-1.3.007h-.8c-1.841 0-2.82 0-3.529-.364l-.138-.078a2.999 2.999 0 0 1-.894-.842l-.097-.149C.611 13.527.528 12.84.507 11.7L.5 10.4v-.8c0-1.841 0-2.82.364-3.529l.078-.138a3 3 0 0 1 .842-.894l.149-.097c.572-.35 1.31-.422 2.572-.437.014-1.163.075-1.88.36-2.434l.077-.138a3 3 0 0 1 .842-.894l.149-.097C6.654.5 7.636.5 9.6.5h.8zM5.6 5.8c-1.007 0-1.672.002-2.177.05-.486.046-.69.126-.812.2a1.7 1.7 0 0 0-.56.561c-.075.122-.155.326-.201.812-.048.505-.05 1.17-.05 2.177v.8c0 1.007.002 1.672.05 2.177.046.486.126.69.2.812.14.228.333.42.561.56.122.075.326.155.812.201.505.048 1.17.05 2.177.05h.8c1.007 0 1.672-.002 2.177-.05.486-.046.69-.126.812-.2a1.7 1.7 0 0 0 .56-.561c.075-.122.155-.326.201-.812.048-.505.05-1.17.05-2.177v-.8c0-1.007-.002-1.672-.05-2.177-.046-.486-.126-.69-.2-.812a1.7 1.7 0 0 0-.561-.56c-.122-.075-.326-.155-.812-.201-.505-.048-1.17-.05-2.177-.05h-.8zm4-4c-1.007 0-1.672.002-2.177.05-.486.046-.69.126-.812.2a1.7 1.7 0 0 0-.56.561c-.075.122-.155.326-.201.812-.028.293-.039.64-.044 1.077H6.4l1.3.007c1.139.02 1.826.104 2.367.435.404.248.743.587.99.99.443.722.443 1.704.443 3.668v.592a13.38 13.38 0 0 0 1.076-.04c.486-.047.69-.127.812-.202a1.71 1.71 0 0 0 .561-.561c.075-.122.155-.326.201-.812.048-.505.05-1.17.05-2.177v-.8c0-1.007-.002-1.672-.05-2.177-.046-.486-.126-.69-.2-.812a1.7 1.7 0 0 0-.562-.56c-.122-.075-.326-.155-.812-.201-.505-.048-1.17-.05-2.177-.05h-.8z"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,155 @@
|
||||
/*
|
||||
@licstart The following is the entire license notice for the JavaScript code in this file.
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (C) 1997-2020 by Dimitri van Heesch
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
and associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@licend The above is the entire license notice for the JavaScript code in this file
|
||||
*/
|
||||
var once=1;
|
||||
function initResizable()
|
||||
{
|
||||
var cookie_namespace = 'doxygen';
|
||||
var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight;
|
||||
|
||||
function readSetting(cookie)
|
||||
{
|
||||
if (window.chrome) {
|
||||
var val = localStorage.getItem(cookie_namespace+'_width');
|
||||
if (val) return val;
|
||||
} else {
|
||||
var myCookie = cookie_namespace+"_"+cookie+"=";
|
||||
if (document.cookie) {
|
||||
var index = document.cookie.indexOf(myCookie);
|
||||
if (index != -1) {
|
||||
var valStart = index + myCookie.length;
|
||||
var valEnd = document.cookie.indexOf(";", valStart);
|
||||
if (valEnd == -1) {
|
||||
valEnd = document.cookie.length;
|
||||
}
|
||||
var val = document.cookie.substring(valStart, valEnd);
|
||||
return val;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 250;
|
||||
}
|
||||
|
||||
function writeSetting(cookie, val)
|
||||
{
|
||||
if (window.chrome) {
|
||||
localStorage.setItem(cookie_namespace+"_width",val);
|
||||
} else {
|
||||
var date = new Date();
|
||||
date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
|
||||
expiration = date.toGMTString();
|
||||
document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/";
|
||||
}
|
||||
}
|
||||
|
||||
function resizeWidth()
|
||||
{
|
||||
var windowWidth = $(window).width() + "px";
|
||||
var sidenavWidth = $(sidenav).outerWidth();
|
||||
content.css({marginLeft:parseInt(sidenavWidth)+"px"});
|
||||
if (typeof page_layout!=='undefined' && page_layout==1) {
|
||||
footer.css({marginLeft:parseInt(sidenavWidth)+"px"});
|
||||
}
|
||||
writeSetting('width',sidenavWidth-barWidth);
|
||||
}
|
||||
|
||||
function restoreWidth(navWidth)
|
||||
{
|
||||
var windowWidth = $(window).width() + "px";
|
||||
content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
|
||||
if (typeof page_layout!=='undefined' && page_layout==1) {
|
||||
footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
|
||||
}
|
||||
sidenav.css({width:navWidth + "px"});
|
||||
}
|
||||
|
||||
function resizeHeight()
|
||||
{
|
||||
var headerHeight = header.outerHeight();
|
||||
var footerHeight = footer.outerHeight();
|
||||
var windowHeight = $(window).height();
|
||||
var contentHeight,navtreeHeight,sideNavHeight;
|
||||
if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */
|
||||
contentHeight = windowHeight - headerHeight - footerHeight;
|
||||
navtreeHeight = contentHeight;
|
||||
sideNavHeight = contentHeight;
|
||||
} else if (page_layout==1) { /* DISABLE_INDEX=YES */
|
||||
contentHeight = windowHeight - footerHeight;
|
||||
navtreeHeight = windowHeight - headerHeight;
|
||||
sideNavHeight = windowHeight;
|
||||
}
|
||||
content.css({height:contentHeight + "px"});
|
||||
navtree.css({height:navtreeHeight + "px"});
|
||||
sidenav.css({height:sideNavHeight + "px"});
|
||||
if (location.hash.slice(1)) {
|
||||
(document.getElementById(location.hash.slice(1))||document.body).scrollIntoView();
|
||||
}
|
||||
}
|
||||
|
||||
function collapseExpand()
|
||||
{
|
||||
var newWidth;
|
||||
if (sidenav.width()>0) {
|
||||
newWidth=0;
|
||||
}
|
||||
else {
|
||||
var width = readSetting('width');
|
||||
newWidth = (width>250 && width<$(window).width()) ? width : 250;
|
||||
}
|
||||
restoreWidth(newWidth);
|
||||
var sidenavWidth = $(sidenav).outerWidth();
|
||||
writeSetting('width',sidenavWidth-barWidth);
|
||||
}
|
||||
|
||||
header = $("#top");
|
||||
sidenav = $("#side-nav");
|
||||
content = $("#doc-content");
|
||||
navtree = $("#nav-tree");
|
||||
footer = $("#nav-path");
|
||||
$(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
|
||||
$(sidenav).resizable({ minWidth: 0 });
|
||||
$(window).resize(function() { resizeHeight(); });
|
||||
var device = navigator.userAgent.toLowerCase();
|
||||
var touch_device = device.match(/(iphone|ipod|ipad|android)/);
|
||||
if (touch_device) { /* wider split bar for touch only devices */
|
||||
$(sidenav).css({ paddingRight:'20px' });
|
||||
$('.ui-resizable-e').css({ width:'20px' });
|
||||
$('#nav-sync').css({ right:'34px' });
|
||||
barWidth=20;
|
||||
}
|
||||
var width = readSetting('width');
|
||||
if (width) { restoreWidth(width); } else { resizeWidth(); }
|
||||
resizeHeight();
|
||||
var url = location.href;
|
||||
var i=url.indexOf("#");
|
||||
if (i>=0) window.location.hash=url.substr(i);
|
||||
var _preventDefault = function(evt) { evt.preventDefault(); };
|
||||
$("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
|
||||
if (once) {
|
||||
$(".ui-resizable-handle").dblclick(collapseExpand);
|
||||
once=0
|
||||
}
|
||||
$(window).on('load',resizeHeight);
|
||||
}
|
||||
/* @license-end */
|
||||
@@ -0,0 +1,5 @@
|
||||
var isInMobile = false;
|
||||
|
||||
function jsinject_init() {
|
||||
// Скоро зде что-нибудь появится =)
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
TARGET_FILE=index.html
|
||||
TARGET_DIR=docs/html
|
||||
|
||||
if ! cd $TARGET_DIR; then
|
||||
echo "Папки $TARGET_DIR не сущестует"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if ! cp $TARGET_FILE "$TARGET_FILE.back"; then
|
||||
echo "Не могу скопировать файл $TARGET_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! sed '/<\/head>/i\\t\t<script type="text/JavaScript" src="jsinject.js"></script>' index.html > "_$TARGET_FILE"\
|
||||
|| ! sed 's/<body>/<body onLoad="jsinject_init();">/g' "_$TARGET_FILE" > $TARGET_FILE; then
|
||||
echo "Ошибка инъекции"
|
||||
fi
|
||||
|
||||
rm -f "_$TARGET_FILE"
|
||||
|
||||
rm -f resize.js
|
||||
|
||||
cp injectresize.js resize.js
|
||||
+1
-1
Submodule server/fxalloc updated: ed94616f6a...9ceaff3c6a
Reference in New Issue
Block a user