Compare commits
43 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
|
|||
|
b928b890ef
|
|||
|
dbfabdc789
|
|||
|
f0820fa680
|
|||
|
b5a0443bb9
|
|||
|
6c22804868
|
|||
|
cb9e56bf20
|
|||
|
577425a4d9
|
|||
|
719bedcd42
|
@@ -10,6 +10,9 @@ compile_commands.json
|
|||||||
CTestTestfile.cmake
|
CTestTestfile.cmake
|
||||||
_deps
|
_deps
|
||||||
CMakeUserPresets.json
|
CMakeUserPresets.json
|
||||||
|
docs
|
||||||
|
Doxylocal
|
||||||
|
|
||||||
|
|
||||||
# CLion
|
# CLion
|
||||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
[submodule "server/fxalloc"]
|
[submodule "server/fxalloc"]
|
||||||
path = server/fxalloc
|
path = server/fxalloc
|
||||||
url = https://felex67:79c71c27e71a6d7490ad0224efaa30e884e17828@felexdev.ru/git/felex67/fxalloc.git
|
url = git@felexdev.ru:felex67/fxalloc.git
|
||||||
|
|||||||
@@ -12,38 +12,6 @@
|
|||||||
## 23.04.2026
|
## 23.04.2026
|
||||||
Стартовала работа над аллокатором **FXAlloc** → [fxalloc/DIARY.md](https://felexdev.ru/git/felex67/fxalloc/src/branch/main/DIARY.md)
|
Стартовала работа над аллокатором **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
|
# 02.05.2026
|
||||||
|
|
||||||
В виду борьбы за даступность для всех и некоторых недостатков github.com, перебазировал репозиторий на свой сервер.
|
В виду борьбы за даступность для всех и некоторых недостатков github.com, перебазировал репозиторий на свой сервер.
|
||||||
+19
@@ -14,6 +14,25 @@
|
|||||||
| Статус | Задача | Описание |
|
| Статус | Задача | Описание |
|
||||||
|:-:|:-----|:-------|
|
|:-:|:-----|:-------|
|
||||||
|
|
||||||
|
# 21.05.2026
|
||||||
|
| Статус | Задача | Описание |
|
||||||
|
|:-:|:-----|:-------|
|
||||||
|
| ✅ | **CI/CD** | Опубликован блог **felexdev.ru**(автодеплой). |
|
||||||
|
| ✅ | **CI/CD** | Опубликована документация на **neurox.su**(автодеплой). |
|
||||||
|
|
||||||
|
# 15.06.2026
|
||||||
|
| Статус | Задача | Описание |
|
||||||
|
|:-:|:-----|:-------|
|
||||||
|
| ✅ | **Документация** | Оптимизация Doxygen |
|
||||||
|
|
||||||
|
|
||||||
|
# 11.05.2026
|
||||||
|
| Статус | Задача | Описание |
|
||||||
|
|:--:|:-----|:-------|
|
||||||
|
| ✅ | **Документация** | Обновлены контакты в **README.md**. |
|
||||||
|
| ✅ | **Документация** | Создан логотип проекта. |
|
||||||
|
| ✅ | **Инфраструктура** | Создана группа **NeurOX felexdev.ru** ВКонтакте |
|
||||||
|
|
||||||
## 02.05.2026
|
## 02.05.2026
|
||||||
|
|
||||||
| Статус | Задача | Описание |
|
| Статус | Задача | Описание |
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
|
\mainpage
|
||||||
|

|
||||||
# NeurOX: Крестики‑нолики с ИИ или войти в IT
|
# 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) |
|
||||||
|
|
||||||
## Цель проекта
|
## Цель проекта
|
||||||
|
|
||||||
Разработка экосистемы многопользовательской игры крестики-нолики в классическом исполнении с полным стеком технологий от С до Android и Web.
|
Разработка экосистемы многопользовательской игры крестики-нолики в классическом исполнении с полным стеком технологий от С до Android и Web.
|
||||||
@@ -80,7 +88,7 @@
|
|||||||
* RAM: 12 GB;
|
* RAM: 12 GB;
|
||||||
* ROM: 512 GB SSD.
|
* ROM: 512 GB SSD.
|
||||||
|
|
||||||
### Стандарты и спецификации
|
## Стандарты и спецификации
|
||||||
|
|
||||||
* **C11** (ISO/IEC 9899:2011) — для C‑ядра и десктоп‑клиента.
|
* **C11** (ISO/IEC 9899:2011) — для C‑ядра и десктоп‑клиента.
|
||||||
* **C++11** (ISO/IEC 14882:2011) — для десктоп‑клиента (SFML).
|
* **C++11** (ISO/IEC 14882:2011) — для десктоп‑клиента (SFML).
|
||||||
@@ -110,12 +118,12 @@
|
|||||||
* **Контроль версий:** Git.
|
* **Контроль версий:** Git.
|
||||||
|
|
||||||
## Прогресс
|
## Прогресс
|
||||||
|
| Статус | Задача | Описание | Дата |
|
||||||
| ➤ |**Работа с документами** | Реорганизация документации, оптимизация каталогов проекта |
|
|:------:|:--------------------|:--------------------------------------------------------|:----------:|
|
||||||
|:---:|:-----------------------------|:---------------------------------------------------------|
|
| ➤ | **UX-исследование** | Оптимизация Doxygen | |
|
||||||
| ✅ | **Инфраструктура** | Репозиторий переехал на свой сервер Gitea [felexdev.ru](https://felexdev.ru/git/).|
|
| ✅ | **CI/CD** | Опубликован блог **felexdev.ru**(автодеплой). | 21.05.2026 |
|
||||||
| ⚠️ | **Работа над аллокатором** | Проектирование архитектуры. |
|
| ✅ | **CI/CD** | Опубликована документация на **neurox.su**(автодеплой). | 21.05.2026 |
|
||||||
| ✅ | **Модуль игры** | Архитектура спроектирована. |
|
| ✅ | **Документация** | Оптимизация Doxygen | 15.06.2026 |
|
||||||
|
|
||||||
Подробный прогресс: [PROGRESS.md](PROGRESS.md)
|
Подробный прогресс: [PROGRESS.md](PROGRESS.md)
|
||||||
|
|
||||||
@@ -171,24 +179,27 @@
|
|||||||
* публикация демо‑видео.
|
* публикация демо‑видео.
|
||||||
|
|
||||||
## Дисклеймер
|
## Дисклеймер
|
||||||
|
|
||||||
* В коде может, вернее — будет, использоваться неочевидная логика.
|
* В коде может, вернее — будет, использоваться неочевидная логика.
|
||||||
* Если вы считаете, что я где‑то что‑то сделал не по фэн‑шую — я эстет, но в плане эффективности.
|
* Если вы считаете, что я где‑то что‑то сделал не по фэн‑шую,— я эстет, но в плане эффективности.
|
||||||
* Если когда‑нибудь кто‑нибудь найдёт совпадение названия проекта и репозитория нарушением авторских прав — Бог Вам судья! 😃
|
* Если когда‑нибудь кто‑нибудь найдёт совпадение названия проекта и репозитория нарушением авторских прав — Бог Вам судья! 😃
|
||||||
* Проект личный, код открытый, милости просим, заходите и смотрите.
|
* Проект личный, код открытый, милости просим, заходите и смотрите.
|
||||||
|
* **Никогда, ни в коем разе не верьте ИИ, они изворачиваются и врут несмотря на то что вы их предупреждаете! ВСЕ!!! [почему_я_не_верю_ии.zip](https://drive.google.com/file/d/1IaYQl4TBFplYMidjAahn_NKzQrAS-rW7/view?usp=sharing)(Спасибо друзьям)**
|
||||||
|
|
||||||
|
|
||||||
## Лицензия
|
## Лицензия
|
||||||
|
|
||||||
Apache License 2.0 — код открыт для изучения.
|
Apache License 2.0 — код открыт для изучения.
|
||||||
|
|
||||||
## Контакты
|
## Контакты
|
||||||
* GitHub: [@felex67](https://github.com/felex67)
|
* Сайт разработчика: [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>
|
* 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 будут отражены мысли масштаба проекта в целом(взаимодействие компонентов и всей экосистемы в целом). Вся техническая документация заполняется по мере готовности того или иного модуля по следующим принципам: **мысль ↔ дневник ↔ код → комментарии → тесты → профилирование(по возможности) → документация**.
|
||||||
|
|
||||||
### ИИ аспект
|
### ИИ аспект
|
||||||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода — профилирование и тесты. Как у борца за эффективность у меня нет нежелания заниматься рефакторингом ради рефакторинга, по-этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки архитектуры. Считаю что от этого зависит львиная доля успешности проекта в принципе, так как если на скорую руку спроектировать, то даже самые опытные разработчики не помогут, собственно после такого подхода и начинается описанный выше рефакторинг.
|
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода — профилирование и тесты. Как у борца за эффективность у меня нет нежелания заниматься рефакторингом ради рефакторинга, по-этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки архитектуры. Считаю что от этого зависит львиная доля успешности проекта в принципе, так как если на скорую руку спроектировать, то даже самые опытные разработчики не помогут, собственно после такого подхода и начинается описанный выше рефакторинг.
|
||||||
|
|
||||||
@@ -198,7 +209,7 @@ Apache License 2.0 — код открыт для изучения.
|
|||||||
* Анализ кода в формате Code-review, практическая польза:
|
* Анализ кода в формате Code-review, практическая польза:
|
||||||
* дисциплинирует, код всегда должен оставаться чистым.
|
* дисциплинирует, код всегда должен оставаться чистым.
|
||||||
* подготовка ко входу в реальную разработку с живой командой, моя основная цель - карьера в IT.
|
* подготовка ко входу в реальную разработку с живой командой, моя основная цель - карьера в IT.
|
||||||
* даже топовые специалисты могут допускать казалось-бы очевидные ошибки, когда мысли летят одна за другой их можно по-просту незаметить.
|
* даже топовые специалисты могут допускать казалось бы очевидные ошибки, когда мысли летят одна за другой их можно попросту не заметить.
|
||||||
* Даёт понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
* Даёт понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
||||||
|
|
||||||
Что я понял за время общения с ней(YandexGPT АлисаAI):
|
Что я понял за время общения с ней(YandexGPT АлисаAI):
|
||||||
@@ -207,14 +218,14 @@ Apache License 2.0 — код открыт для изучения.
|
|||||||
* 10, а лучше 100 раз переспросите с разных сторон(задавайте вопросы в разных вариациях до тех пор пока ответ не будет однозначным).
|
* 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 настояла" в тех местах где наши мнения расходились но я пошёл на компромисс.
|
||||||
|
|
||||||
### Основной посыл
|
### Основной посыл
|
||||||
|
|
||||||
Хоть проект изначально и пердполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "как это было". Проект постепенно перерос в своеобразную "историю жизни", это неординарный подход к разработке, но в виду того что я веду проект один и колаборация не предполагается, я продолжу в том-же духе, в первую очередь — для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее — приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искуство и к произведению "История одного байта", которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.
|
Хоть проект изначально и предполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "как это было". Проект постепенно перерос в своеобразную "историю жизни", это неординарный подход к разработке, но ввиду того что я веду проект один и коллаборация не предполагается, я продолжу в том-же духе, в первую очередь — для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее — приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искусство и к произведению "История одного байта", которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.
|
||||||
|
|
||||||
### Образовательный аспект
|
### Образовательный аспект
|
||||||
Проект открыт для изучения, как автор — не претендую на звание "разработчик года", отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "смежным" специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их в дальнейшем. Весь код будет снабжён "удобоваримыми" коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования).
|
Проект открыт для изучения, как автор — не претендую на звание "разработчик года", отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "смежным" специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их в дальнейшем. Весь код будет снабжён "удобоваримыми" коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования).
|
||||||
@@ -222,15 +233,19 @@ Apache License 2.0 — код открыт для изучения.
|
|||||||
### Основная стратегия KISS+YAGNI
|
### Основная стратегия KISS+YAGNI
|
||||||
Я не предусматриваю грандиозное расширение, проект должен обеспечить максимальную производительность и отказоустойчивость для классических крестиков-ноликов в многопользовательском режиме с возможностью игры против ИИ(нейросети). Как основатель проекта я не предполагаю увеличивать размер поля до MAX_INT*MAX_INT и заниматься безопасностью ради безопасности. Каждый модуль проекта имеет строго свою область ответственности.
|
Я не предусматриваю грандиозное расширение, проект должен обеспечить максимальную производительность и отказоустойчивость для классических крестиков-ноликов в многопользовательском режиме с возможностью игры против ИИ(нейросети). Как основатель проекта я не предполагаю увеличивать размер поля до MAX_INT*MAX_INT и заниматься безопасностью ради безопасности. Каждый модуль проекта имеет строго свою область ответственности.
|
||||||
|
|
||||||
### Начата разработка общих модулей, конкретно — XOGame.
|
### Начата разработка общих модулей.
|
||||||
Разработана типичная архитектура со скрытой реализацией и заложенной возможностью изменения поведения модуля через указатели на структуры. Как и обычно(не раз проверено) внешний интерфейс константен, доступ к функциям модуля только через указатели внутри внешних неизменяемых структур. Почему именно так — потому что так проще отловить ошибки, проверяем только внутреннюю реализацию, отлаживаем её и используем. Если в дальнейшем возникают ошибки - это не вина модуля, это вина вызывающего кода. В контексте всего решения это избавляет от рефапкторинга ради рефакторинга и бесконечной скачки от файла к файлу.
|
#### 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**, иначе я не выдержу, порой она достаёт "до чёртиков" 😃
|
После предоставления кода **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**, иначе я не выдержу, порой она достаёт "до чёртиков" 😃
|
||||||
|
|
||||||
|
#### FXAlloc
|
||||||
|
Спректирован аллокатор. Модуль аллокатора вынесен в отдельный репозиторий [fxalloc](https://felexdev.ru/git/felex67/fxalloc)
|
||||||
|
|
||||||
### 26.04.2026
|
### 26.04.2026
|
||||||
Сломал Алису попросив оценить расчёты:
|
Сломал Алису попросив оценить расчёты:
|
||||||
| Параметр | Формула | Лимит guiuser-ов | Описание |
|
| Параметр | Формула | Лимит guiuser-ов | Описание |
|
||||||
|---------:|:------------------------:|:----------------:|:-------------------------------------|
|
|---------:|:--------------------------:|:----------------:|:-------------------------------------|
|
||||||
|**Wi-Fi:**| $⌈\frac{85,3×10^6}{25×8}⌉$ | 426 500 | Не то что бы много, но дох-х-ходчиво |
|
|**Wi-Fi:**| $⌈\frac{85,3×10^6}{25×8}⌉$ | 426 500 | Не то что бы много, но дох-х-ходчиво |
|
||||||
|
|
||||||
### 28.04.2026
|
### 28.04.2026
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Информация
|
## Информация
|
||||||
* Файл для отслеживания текущих задач проекта
|
* Файл для отслеживания текущих задач проекта
|
||||||
* Последнее обновление: [25.04.2026]
|
* Последнее обновление: [19.05.2026]
|
||||||
|
|
||||||
## Условные обозначения
|
## Условные обозначения
|
||||||
* 🔥 - Наивысший приоритет
|
* 🔥 - Наивысший приоритет
|
||||||
@@ -13,9 +13,7 @@
|
|||||||
## Задачи в процессе
|
## Задачи в процессе
|
||||||
|Срочность|Компонент|Задача|Описание|
|
|Срочность|Компонент|Задача|Описание|
|
||||||
|:-------:|:-------:|:-----|:-------|
|
|:-------:|:-------:|:-----|:-------|
|
||||||
|🔥|**Архитектура**|**Работа с документацией**|Стандартизация и реорганизация документации|
|
|🔥|**FXAlloc**|**Проектирование**|Сбор отзывов по архитектуре|
|
||||||
|🔥|**FXAlloc**|**Проектирование архитектуры**|Интерфейс, внутреннее устройство|
|
|
||||||
|🔥|**FXAlloc**|**Документация**|Описание архитектуры решения, ведение DAIRY.md|
|
|
||||||
|🔥|**FXAlloc**|**Logic**|Реализации внутренних методов|
|
|🔥|**FXAlloc**|**Logic**|Реализации внутренних методов|
|
||||||
|🔥|**FXAlloc**|**API**|Реализация внешних методов|
|
|🔥|**FXAlloc**|**API**|Реализация внешних методов|
|
||||||
|🔥|**FXAlloc**|**Тестирование**|Написание юнит-тестов|
|
|🔥|**FXAlloc**|**Тестирование**|Написание юнит-тестов|
|
||||||
@@ -25,7 +23,7 @@
|
|||||||
|🔴|**XOGame**|**Тестирование**|Написание юнит-тестов|
|
|🔴|**XOGame**|**Тестирование**|Написание юнит-тестов|
|
||||||
|🔴|**XOGame**|**Оптимизация**|Анализ производительности|
|
|🔴|**XOGame**|**Оптимизация**|Анализ производительности|
|
||||||
|🟡|**AINeurox**|**Проектирование архитектуры**|Интерфейс, внутреннее устройство|
|
|🟡|**AINeurox**|**Проектирование архитектуры**|Интерфейс, внутреннее устройство|
|
||||||
|🟡|**AINeurox**|**Документация**|Описание архитектуры решения, ведение DAIRY.md|
|
|🟡|**AINeurox**|**Документация**|Описание архитектуры решения, ведение DIARY.md|
|
||||||
|🟡|**AINeurox**|**Logic**|Реализации внутренних методов|
|
|🟡|**AINeurox**|**Logic**|Реализации внутренних методов|
|
||||||
|🟡|**AINeurox**|**API**|Реализация внешних методов|
|
|🟡|**AINeurox**|**API**|Реализация внешних методов|
|
||||||
|🟡|**AINeurox**|**Тестирование**|Написание юнит-тестов|
|
|🟡|**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
|
||||||
+253
@@ -0,0 +1,253 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
viewBox="0 0 135.46667 135.46667"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
inkscape:version="1.4.3 (fcd0343856, 2026-01-01)"
|
||||||
|
sodipodi:docname="NeurOX.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<title
|
||||||
|
id="title1">NeurOX</title>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#ffffff"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#505050"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:zoom="1.0116647"
|
||||||
|
inkscape:cx="218.45183"
|
||||||
|
inkscape:cy="338.55092"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1011"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg1" />
|
||||||
|
<defs
|
||||||
|
id="defs1">
|
||||||
|
<filter
|
||||||
|
inkscape:label="Chalk and Sponge"
|
||||||
|
inkscape:menu="Distort"
|
||||||
|
inkscape:menu-tooltip="Low turbulence gives sponge look and high turbulence chalk"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
y="0"
|
||||||
|
x="0"
|
||||||
|
style="color-interpolation-filters:sRGB;"
|
||||||
|
id="filter376">
|
||||||
|
<feTurbulence
|
||||||
|
baseFrequency="0.4"
|
||||||
|
type="fractalNoise"
|
||||||
|
seed="0"
|
||||||
|
numOctaves="5"
|
||||||
|
result="result1"
|
||||||
|
id="feTurbulence376" />
|
||||||
|
<feDisplacementMap
|
||||||
|
xChannelSelector="R"
|
||||||
|
yChannelSelector="G"
|
||||||
|
scale="30"
|
||||||
|
in="SourceGraphic"
|
||||||
|
in2="result1"
|
||||||
|
id="feDisplacementMap376" />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
inkscape:label="Lizard Skin"
|
||||||
|
inkscape:menu="Materials"
|
||||||
|
inkscape:menu-tooltip="Stylized reptile skin texture"
|
||||||
|
style="color-interpolation-filters:sRGB;"
|
||||||
|
id="filter387"
|
||||||
|
x="-0.066606786"
|
||||||
|
y="-0.311835"
|
||||||
|
width="1.1490723"
|
||||||
|
height="1.6979164">
|
||||||
|
<feGaussianBlur
|
||||||
|
stdDeviation="0.5"
|
||||||
|
in="SourceGraphic"
|
||||||
|
result="result0"
|
||||||
|
id="feGaussianBlur384" />
|
||||||
|
<feTurbulence
|
||||||
|
result="result1"
|
||||||
|
numOctaves="1"
|
||||||
|
seed="488"
|
||||||
|
baseFrequency="0.095"
|
||||||
|
type="turbulence"
|
||||||
|
id="feTurbulence384" />
|
||||||
|
<feComposite
|
||||||
|
in="result0"
|
||||||
|
in2="result1"
|
||||||
|
operator="in"
|
||||||
|
result="result2"
|
||||||
|
id="feComposite384" />
|
||||||
|
<feComposite
|
||||||
|
operator="arithmetic"
|
||||||
|
in="result4"
|
||||||
|
in2="result2"
|
||||||
|
k3="1"
|
||||||
|
k1="3"
|
||||||
|
result="result91"
|
||||||
|
id="feComposite385" />
|
||||||
|
<feBlend
|
||||||
|
mode="multiply"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in2="result91"
|
||||||
|
id="feBlend385" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 5 0"
|
||||||
|
id="feColorMatrix385" />
|
||||||
|
<feGaussianBlur
|
||||||
|
result="result0"
|
||||||
|
in="fbSourceGraphicAlpha"
|
||||||
|
stdDeviation="3"
|
||||||
|
id="feGaussianBlur385" />
|
||||||
|
<feOffset
|
||||||
|
result="result3"
|
||||||
|
in="result0"
|
||||||
|
dy="2"
|
||||||
|
dx="2"
|
||||||
|
id="feOffset385" />
|
||||||
|
<feSpecularLighting
|
||||||
|
specularExponent="30"
|
||||||
|
specularConstant="1.1"
|
||||||
|
surfaceScale="2"
|
||||||
|
lighting-color="rgb(111,236,253)"
|
||||||
|
result="result1"
|
||||||
|
in="result0"
|
||||||
|
id="feSpecularLighting385">
|
||||||
|
<fePointLight
|
||||||
|
z="20000"
|
||||||
|
y="-10000"
|
||||||
|
x="-5000"
|
||||||
|
id="fePointLight385" />
|
||||||
|
</feSpecularLighting>
|
||||||
|
<feComposite
|
||||||
|
k2="-1"
|
||||||
|
operator="in"
|
||||||
|
result="result2"
|
||||||
|
in="result1"
|
||||||
|
in2="fbSourceGraphicAlpha"
|
||||||
|
id="feComposite386" />
|
||||||
|
<feComposite
|
||||||
|
k3="1"
|
||||||
|
k2="3"
|
||||||
|
operator="arithmetic"
|
||||||
|
result="result4"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
in2="result2"
|
||||||
|
id="feComposite387" />
|
||||||
|
<feBlend
|
||||||
|
mode="multiply"
|
||||||
|
in2="result4"
|
||||||
|
id="feBlend387" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5737px;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:170.929;fill:#000419;stroke-width:0.264583;fill-opacity:0.4818868"
|
||||||
|
x="20.661079"
|
||||||
|
y="24.061005"
|
||||||
|
id="text1"
|
||||||
|
transform="matrix(1,0,0,1.4973347,-15.691959,-0.5002043)"><tspan
|
||||||
|
x="20.661079"
|
||||||
|
y="24.061005"
|
||||||
|
id="tspan3">[O][ ][ ]
|
||||||
|
</tspan><tspan
|
||||||
|
x="20.661079"
|
||||||
|
y="52.278128"
|
||||||
|
id="tspan4">[X][X][O]
|
||||||
|
</tspan><tspan
|
||||||
|
x="20.661079"
|
||||||
|
y="80.495253"
|
||||||
|
id="tspan5">[O][ ][X]</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.615px;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';writing-mode:lr-tb;direction:ltr;fill:#000d0d;fill-opacity:1;stroke-width:0.38159;filter:url(#filter376)"
|
||||||
|
x="-61.488533"
|
||||||
|
y="109.49948"
|
||||||
|
id="text2"
|
||||||
|
transform="matrix(0.89072395,-0.87122375,0.84471128,0.9186806,-17.13243,-18.133491)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2"
|
||||||
|
style="fill:#000d0d;fill-opacity:1;stroke-width:0.38159"
|
||||||
|
x="-61.488533"
|
||||||
|
y="109.49948">NeurOX</tspan></text>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Layer 2">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.615px;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';writing-mode:lr-tb;direction:ltr;display:inline;fill:#006de8;fill-opacity:1;stroke-width:0.38159;filter:url(#filter387)"
|
||||||
|
x="-61.778652"
|
||||||
|
y="109.51575"
|
||||||
|
id="text2-3"
|
||||||
|
transform="matrix(0.72172517,-0.69181115,0.68444257,0.72949513,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2-7"
|
||||||
|
style="fill:#006de8;fill-opacity:1;stroke-width:0.38159"
|
||||||
|
x="0"
|
||||||
|
y="0">NeurOX</tspan></text>
|
||||||
|
</g>
|
||||||
|
<metadata
|
||||||
|
id="metadata1">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:title>NeurOX</dc:title>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>neurox.su</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:publisher>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>neurox.su</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:publisher>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>NeurOX_logo</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<dc:description>NeorOX project logo</dc:description>
|
||||||
|
<cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/by-nc/4.0/" />
|
||||||
|
</cc:Work>
|
||||||
|
<cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/by-nc/4.0/">
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||||
|
<cc:prohibits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#CommercialUse" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||||
|
</cc:License>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.9 KiB |
@@ -0,0 +1,253 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="960"
|
||||||
|
height="384"
|
||||||
|
viewBox="0 0 254 101.6"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
inkscape:version="1.4.3 (fcd0343856, 2026-01-01)"
|
||||||
|
sodipodi:docname="NeurOX_vk_bg.svg"
|
||||||
|
inkscape:export-filename="NeurOX_vk_bg.png"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<title
|
||||||
|
id="title1">NeurOX</title>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#ffffff"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#505050"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:zoom="1.0116647"
|
||||||
|
inkscape:cx="456.17881"
|
||||||
|
inkscape:cy="338.55091"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1011"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer2" />
|
||||||
|
<defs
|
||||||
|
id="defs1">
|
||||||
|
<filter
|
||||||
|
inkscape:label="Chalk and Sponge"
|
||||||
|
inkscape:menu="Distort"
|
||||||
|
inkscape:menu-tooltip="Low turbulence gives sponge look and high turbulence chalk"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
y="0"
|
||||||
|
x="0"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter376">
|
||||||
|
<feTurbulence
|
||||||
|
baseFrequency="0.4"
|
||||||
|
type="fractalNoise"
|
||||||
|
seed="0"
|
||||||
|
numOctaves="5"
|
||||||
|
result="result1"
|
||||||
|
id="feTurbulence376" />
|
||||||
|
<feDisplacementMap
|
||||||
|
xChannelSelector="R"
|
||||||
|
yChannelSelector="G"
|
||||||
|
scale="30"
|
||||||
|
in="SourceGraphic"
|
||||||
|
in2="result1"
|
||||||
|
id="feDisplacementMap376" />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
inkscape:label="Lizard Skin"
|
||||||
|
inkscape:menu="Materials"
|
||||||
|
inkscape:menu-tooltip="Stylized reptile skin texture"
|
||||||
|
style="color-interpolation-filters:sRGB"
|
||||||
|
id="filter387"
|
||||||
|
x="-0.066606786"
|
||||||
|
y="-0.311835"
|
||||||
|
width="1.1490723"
|
||||||
|
height="1.6979164">
|
||||||
|
<feGaussianBlur
|
||||||
|
stdDeviation="0.5"
|
||||||
|
in="SourceGraphic"
|
||||||
|
result="result0"
|
||||||
|
id="feGaussianBlur384" />
|
||||||
|
<feTurbulence
|
||||||
|
result="result1"
|
||||||
|
numOctaves="1"
|
||||||
|
seed="488"
|
||||||
|
baseFrequency="0.095"
|
||||||
|
type="turbulence"
|
||||||
|
id="feTurbulence384" />
|
||||||
|
<feComposite
|
||||||
|
in="result0"
|
||||||
|
in2="result1"
|
||||||
|
operator="in"
|
||||||
|
result="result2"
|
||||||
|
id="feComposite384" />
|
||||||
|
<feComposite
|
||||||
|
operator="arithmetic"
|
||||||
|
in="result4"
|
||||||
|
in2="result2"
|
||||||
|
k3="1"
|
||||||
|
k1="3"
|
||||||
|
result="result91"
|
||||||
|
id="feComposite385"
|
||||||
|
k2="0"
|
||||||
|
k4="0" />
|
||||||
|
<feBlend
|
||||||
|
mode="multiply"
|
||||||
|
result="fbSourceGraphic"
|
||||||
|
in2="result91"
|
||||||
|
id="feBlend385" />
|
||||||
|
<feColorMatrix
|
||||||
|
result="fbSourceGraphicAlpha"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
values="0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 5 0"
|
||||||
|
id="feColorMatrix385" />
|
||||||
|
<feGaussianBlur
|
||||||
|
result="result0"
|
||||||
|
in="fbSourceGraphicAlpha"
|
||||||
|
stdDeviation="3"
|
||||||
|
id="feGaussianBlur385" />
|
||||||
|
<feOffset
|
||||||
|
result="result3"
|
||||||
|
in="result0"
|
||||||
|
dy="2"
|
||||||
|
dx="2"
|
||||||
|
id="feOffset385" />
|
||||||
|
<feSpecularLighting
|
||||||
|
specularExponent="30"
|
||||||
|
specularConstant="1.10000002"
|
||||||
|
surfaceScale="2"
|
||||||
|
lighting-color="#6fecfd"
|
||||||
|
result="result1"
|
||||||
|
in="result0"
|
||||||
|
id="feSpecularLighting385">
|
||||||
|
<fePointLight
|
||||||
|
z="20000"
|
||||||
|
y="-10000"
|
||||||
|
x="-5000"
|
||||||
|
id="fePointLight385" />
|
||||||
|
</feSpecularLighting>
|
||||||
|
<feComposite
|
||||||
|
operator="in"
|
||||||
|
result="result2"
|
||||||
|
in="result1"
|
||||||
|
in2="fbSourceGraphicAlpha"
|
||||||
|
id="feComposite386" />
|
||||||
|
<feComposite
|
||||||
|
k3="1"
|
||||||
|
k2="3"
|
||||||
|
operator="arithmetic"
|
||||||
|
result="result4"
|
||||||
|
in="fbSourceGraphic"
|
||||||
|
in2="result2"
|
||||||
|
id="feComposite387"
|
||||||
|
k1="0"
|
||||||
|
k4="0" />
|
||||||
|
<feBlend
|
||||||
|
mode="multiply"
|
||||||
|
in2="result4"
|
||||||
|
id="feBlend387" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer3"
|
||||||
|
inkscape:label="Layer 3">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke-width:0.264583"
|
||||||
|
id="rect1"
|
||||||
|
width="254.73279"
|
||||||
|
height="102.52079"
|
||||||
|
x="0"
|
||||||
|
y="-0.78459787" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.615px;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';writing-mode:lr-tb;direction:ltr;fill:#009595;fill-opacity:1;stroke-width:0.38159;filter:url(#filter376)"
|
||||||
|
x="-61.488533"
|
||||||
|
y="109.49948"
|
||||||
|
id="text2"
|
||||||
|
transform="matrix(2.0123577,-0.10555006,0.00310487,3.2641041,119.57974,-264.24702)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2"
|
||||||
|
style="fill:#009595;fill-opacity:1;stroke-width:0.38159"
|
||||||
|
x="-61.488533"
|
||||||
|
y="109.49948">NeurOX</tspan></text>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Layer 2">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.615px;font-family:Monospace;-inkscape-font-specification:'Monospace Bold';writing-mode:lr-tb;direction:ltr;display:inline;fill:#922eff;fill-opacity:1;stroke-width:0.38159;filter:url(#filter387)"
|
||||||
|
x="-61.778652"
|
||||||
|
y="109.51575"
|
||||||
|
id="text2-3"
|
||||||
|
transform="matrix(1.6151383,-0.03586683,0.01876627,1.6091136,120.18778,-103.89366)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2-7"
|
||||||
|
style="fill:#922eff;fill-opacity:1;stroke-width:0.38159"
|
||||||
|
x="-61.778652"
|
||||||
|
y="109.51575">NeurOX</tspan></text>
|
||||||
|
</g>
|
||||||
|
<metadata
|
||||||
|
id="metadata1">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:title>NeurOX</dc:title>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>neurox.su</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:publisher>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>neurox.su</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:publisher>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>NeurOX_logo</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<dc:description>NeorOX project logo</dc:description>
|
||||||
|
<cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/by-nc/4.0/" />
|
||||||
|
</cc:Work>
|
||||||
|
<cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/by-nc/4.0/">
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||||
|
<cc:prohibits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#CommercialUse" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||||
|
</cc:License>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.6 KiB |
+1
-1
Submodule server/fxalloc updated: f6375cd4b7...9ceaff3c6a
Reference in New Issue
Block a user