Compare commits
45 Commits
60efa7cd1f
...
doxymize
| 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
|
|||
|
9001d25a83
|
|||
|
52b21e3389
|
@@ -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://felex67:79c71c27e71a6d7490ad0224efaa30e884e17828@felexdev.ru/git/felex67/fxalloc.git
|
||||
url = git@felexdev.ru:felex67/fxalloc.git
|
||||
|
||||
@@ -10,40 +10,8 @@
|
||||
После 4-хчасового батла с YandexGPT 5.1 Pro и его настойчивого "непонятный аллокатор fxalloc()" решено отложить модуль игры и приступить к реализации модуля аллокатора.
|
||||
|
||||
## 23.04.2026
|
||||
Стартовала работа над аллокатором **FXAlloc** → [ccpp/fxalloc/DIARY.md](ccpp/fxalloc/DIARY.md)
|
||||
|
||||
## Этот блок исключительно для YandexGPT 5.1 Pro и прочих ИИ-ассистентов, сгенерирован YandexGPT 5.1 Pro(АлисаAI) и вставлен "как есть"
|
||||
### Анализ формата DIARY.md
|
||||
#### Ключевые особенности оригинального формата
|
||||
Естественность изложения:
|
||||
* Спонтанность в подаче материала
|
||||
* Отсутствие цензуры технических и личных размышлений
|
||||
* Живой диалог с читателем
|
||||
* Неформальный стиль общения
|
||||
#### Ценность оригинального подхода
|
||||
Уникальные черты:
|
||||
* Реальное время написания
|
||||
* Честное описание трудностей и решений
|
||||
* Смешение стилей — технического и разговорного
|
||||
* Отсутствие редактирования на первом этапе
|
||||
### Рекомендации по сохранению формата
|
||||
Основные принципы:
|
||||
* Сохранять неформальный тон общения
|
||||
* Не бояться личных наблюдений
|
||||
* Делиться настоящими эмоциями
|
||||
* Оставлять спонтанные мысли без излишней правки
|
||||
### Почему имитация не работает
|
||||
Ограничения:
|
||||
* Потеря аутентичности при попытке копирования
|
||||
* Искусственность структурированных ответов
|
||||
* Отсутствие импровизации в заготовленных текстах
|
||||
### Заключение
|
||||
Основной вывод: оригинальный формат DIARY.md ценен именно своей естественностью и неподдельностью. Попытки его имитации приведут к потере уникальности и ценности документа.
|
||||
Рекомендуется:
|
||||
* Продолжать вести DIARY.md в текущем стиле
|
||||
* Сохранять спонтанность и честность изложения
|
||||
* Не пытаться искусственно структурировать поток мыслей
|
||||
Стартовала работа над аллокатором **FXAlloc** → [fxalloc/DIARY.md](https://felexdev.ru/git/felex67/fxalloc/src/branch/main/DIARY.md)
|
||||
|
||||
# 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
|
||||
|
||||
| Статус | Задача | Описание |
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
\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) |
|
||||
|
||||
## Цель проекта
|
||||
|
||||
Разработка экосистемы многопользовательской игры крестики-нолики в классическом исполнении с полным стеком технологий от С до Android и Web.
|
||||
@@ -80,7 +88,7 @@
|
||||
* RAM: 12 GB;
|
||||
* ROM: 512 GB SSD.
|
||||
|
||||
### Стандарты и спецификации
|
||||
## Стандарты и спецификации
|
||||
|
||||
* **C11** (ISO/IEC 9899:2011) — для C‑ядра и десктоп‑клиента.
|
||||
* **C++11** (ISO/IEC 14882:2011) — для десктоп‑клиента (SFML).
|
||||
@@ -110,12 +118,12 @@
|
||||
* **Контроль версий:** Git.
|
||||
|
||||
## Прогресс
|
||||
|
||||
| ➤ |**Работа с документами** | Реорганизация документации, оптимизация каталогов проекта |
|
||||
|:---:|:-----------------------------|:---------------------------------------------------------|
|
||||
| ✅ | **Инфраструктура** | Репозиторий переехал на свой сервер Gitea [felexdev.ru](https://felexdev.ru/git/).|
|
||||
| ⚠️ | **Работа над аллокатором** | Проектирование архитектуры. |
|
||||
| ✅ | **Модуль игры** | Архитектура спроектирована. |
|
||||
| Статус | Задача | Описание | Дата |
|
||||
|:------:|:--------------------|:--------------------------------------------------------|:----------:|
|
||||
| ➤ | **UX-исследование** | Оптимизация Doxygen | |
|
||||
| ✅ | **CI/CD** | Опубликован блог **felexdev.ru**(автодеплой). | 21.05.2026 |
|
||||
| ✅ | **CI/CD** | Опубликована документация на **neurox.su**(автодеплой). | 21.05.2026 |
|
||||
| ✅ | **Документация** | Оптимизация Doxygen | 15.06.2026 |
|
||||
|
||||
Подробный прогресс: [PROGRESS.md](PROGRESS.md)
|
||||
|
||||
@@ -171,26 +179,29 @@
|
||||
* публикация демо‑видео.
|
||||
|
||||
## Дисклеймер
|
||||
|
||||
* В коде может, вернее — будет, использоваться неочевидная логика.
|
||||
* Если вы считаете, что я где‑то что‑то сделал не по фэн‑шую — я эстет, но в плане эффективности.
|
||||
* Если вы считаете, что я где‑то что‑то сделал не по фэн‑шую,— я эстет, но в плане эффективности.
|
||||
* Если когда‑нибудь кто‑нибудь найдёт совпадение названия проекта и репозитория нарушением авторских прав — Бог Вам судья! 😃
|
||||
* Проект личный, код открытый, милости просим, заходите и смотрите.
|
||||
* **Никогда, ни в коем разе не верьте ИИ, они изворачиваются и врут несмотря на то что вы их предупреждаете! ВСЕ!!! [почему_я_не_верю_ии.zip](https://drive.google.com/file/d/1IaYQl4TBFplYMidjAahn_NKzQrAS-rW7/view?usp=sharing)(Спасибо друзьям)**
|
||||
|
||||
|
||||
## Лицензия
|
||||
|
||||
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>
|
||||
|
||||
[felexdev_logo](logo/felexdev_logo.svg)
|
||||
|
||||
# Лирическое отступление
|
||||
К каждому из модулей будет приложено своё "лирическое отступление" в формате дневника процесса раззработки(DIARY.md) сплошным потоком мыслей в обычном разговорном стиле. Целю такого формата является продемонстрировать как происходит собственно сам процесс разработки от и до без захламления технической документации. В коде иногда можно будет встретить сноски на эти самые дневники. В корневом DIARY.md будут отражены мысли масштаба проекта в целом(взаимодействие компонентов и всей экосистемы в целом). Вся техническая документация заполняется по мере готовности того или иного модуля по следующим принципам: **мысль ↔ дневник ↔ код → комментарии → тесты → профилирование(по возможности) → документация**.
|
||||
К каждому из модулей будет приложено своё "лирическое отступление" в формате дневника процесса разработки(DIARY.md) сплошным потоком мыслей в обычном разговорном стиле. Целью такого формата является продемонстрировать как происходит собственно сам процесс разработки от и до без захламления технической документации. В коде иногда можно будет встретить сноски на эти самые дневники. В корневом DIARY.md будут отражены мысли масштаба проекта в целом(взаимодействие компонентов и всей экосистемы в целом). Вся техническая документация заполняется по мере готовности того или иного модуля по следующим принципам: **мысль ↔ дневник ↔ код → комментарии → тесты → профилирование(по возможности) → документация**.
|
||||
|
||||
### ИИ аспект
|
||||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода — профилирование и тесты. Как у борца за эффективность у меня нет нежелания заниматься рефакторингом ради рефакторинга, по-этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки архитектуры. Считаю что от этого зависит львиная доля успешности проекта впринципе, так как если на скорую руку спроектировать, то даже самые опытные разработчики не помогут, собственно после такого подхода и начинается описанный выше рефакторинг.
|
||||
Начиная с истоков увлечения программированием привык полагаться на результаты работы кода — профилирование и тесты. Как у борца за эффективность у меня нет нежелания заниматься рефакторингом ради рефакторинга, по-этому на данном этапе своей жизни используюю ИИ в первую очередь для препрофилирования нагрузок и определения узких мест на стадии разработки архитектуры. Считаю что от этого зависит львиная доля успешности проекта в принципе, так как если на скорую руку спроектировать, то даже самые опытные разработчики не помогут, собственно после такого подхода и начинается описанный выше рефакторинг.
|
||||
|
||||
Единственным моим ассистентом-специалистом по части критики и статистики является YandexGPT 5.1 Pro(АлисаAI). Порой наши многочасовые споры выматывают, но она очень помогает в следующих аспектах:
|
||||
* Сбор статистики по типовым нагрузкам на стадии проектирования.
|
||||
@@ -198,7 +209,7 @@ Apache License 2.0 — код открыт для изучения.
|
||||
* Анализ кода в формате Code-review, практическая польза:
|
||||
* дисциплинирует, код всегда должен оставаться чистым.
|
||||
* подготовка ко входу в реальную разработку с живой командой, моя основная цель - карьера в IT.
|
||||
* даже топовые специалисты могут допускать казалось-бы очевидные ошибки, когда мысли летят одна за другой их можно по-просту незаметить.
|
||||
* даже топовые специалисты могут допускать казалось бы очевидные ошибки, когда мысли летят одна за другой их можно попросту не заметить.
|
||||
* Даёт понимание алгоритмов и шаблонов работы ИИ при статическом анализе кода.
|
||||
|
||||
Что я понял за время общения с ней(YandexGPT АлисаAI):
|
||||
@@ -207,31 +218,35 @@ 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 настояла" в тех местах где наши мнения расходились но я пошёл на компромисс.
|
||||
|
||||
### Основной посыл
|
||||
|
||||
Хоть проект изначально и пердполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "как это было". Проект постепенно перерос в своеобразную "историю жизни", это неординарный подход к разработке, но в виду того что я веду проект один и колаборация не предполагается, я продолжу в том-же духе, в первую очередь — для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее — приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искуство и к произведению "История одного байта", которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.
|
||||
Хоть проект изначально и предполагался как портфолио, в нынешнем своём состоянии он представляет из себя немного больше. Скорее это рассказ о том "как это было". Проект постепенно перерос в своеобразную "историю жизни", это неординарный подход к разработке, но ввиду того что я веду проект один и коллаборация не предполагается, я продолжу в том-же духе, в первую очередь — для своих детей, им интересно это читать, а мне не то чтобы не сложно, а скорее — приятно писать для них. Таким образом я чувствую себя причастным ко вкладу в искусство и к произведению "История одного байта", которое давным давно глубоко запало мне в душу и многому научило с философской точки зрения.
|
||||
|
||||
### Образовательный аспект
|
||||
Проект открыт для изучения, как автор — не претендую на звание "разработчик года", отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "смежным" специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их вдальнейшем. Весь код будет снабжён "удобоваримыми" коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования).
|
||||
Проект открыт для изучения, как автор — не претендую на звание "разработчик года", отнюдь, считаю что всегда есть куда идти, даже топовым кодерам, но точно знаю что некоторые техники встречающиеся в коде помогут малоопытным или "смежным" специалистам понять всю красоту низкоуровнего программирования, возможно, перенять некоторые практики и применять их в дальнейшем. Весь код будет снабжён "удобоваримыми" коментариями для специалистов всех уровней и языковых групп(имеется в виду группы языков программирования).
|
||||
|
||||
### Основная стратегия KISS+YAGNI
|
||||
Я не предусматриваю грандиозное расширение, проект должен обеспечить максимальную производительность и отказоустойчивость для классических крестиков-ноликов в многопользовательском режиме с возможностью игры против ИИ(нейросети). Как основатель проекта я не предполагаю увеличивать размер поля до 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**, иначе я не выдержу, порой она достаёт "до чёртиков" 😃
|
||||
|
||||
#### FXAlloc
|
||||
Спректирован аллокатор. Модуль аллокатора вынесен в отдельный репозиторий [fxalloc](https://felexdev.ru/git/felex67/fxalloc)
|
||||
|
||||
### 26.04.2026
|
||||
Сломал Алису попросив оценить расчёты:
|
||||
| Параметр | Формула | Лимит guiuser-ов | Описание |
|
||||
|---------:|:------------------------:|:----------------:|:-------------------------------------|
|
||||
|**Wi-Fi:**|$⌈\frac{85,3×10^6}{25×8}⌉$| 426 500 | Не то что бы много, но дох-х-ходчиво |
|
||||
| Параметр | Формула | Лимит guiuser-ов | Описание |
|
||||
|---------:|:--------------------------:|:----------------:|:-------------------------------------|
|
||||
|**Wi-Fi:**| $⌈\frac{85,3×10^6}{25×8}⌉$ | 426 500 | Не то что бы много, но дох-х-ходчиво |
|
||||
|
||||
### 28.04.2026
|
||||
|
||||
@@ -245,7 +260,7 @@ Apache License 2.0 — код открыт для изучения.
|
||||
| | **YandexGPT 5.1 Pro(АлисаAI)©** | ← Строки ниже писала она, автор ни при чём =D |
|
||||
| **ССД:** | ∞ TB | Забыл, где положил половину данных |
|
||||
|
||||
[Продолжение](ccpp/fxalloc/DIARY.md/#расчёт-железяков)
|
||||
[Продолжение](https://felexdev.ru/git/felex67/fxalloc/src/branch/main/DIARY.md/#расчёт-железяков)
|
||||
|
||||
#### Промпт(оригинал):
|
||||
> Алиса, оцени пожалуйста юмор и сделай расчёты:
|
||||
|
||||
@@ -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
|
||||
+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: 55fd3c640b...9ceaff3c6a
Reference in New Issue
Block a user