В визуал студии есть сишка, она изначально для сей и была предназначена, потом туда всякие шарпы пихать начали же))
У меня где-то был репо, где я игрался со шлангом. А вот же:
https://github.com/username1565/cyclopСтолько вкладок в браузере открыл, чтобы гуглить этот синтаксис...
Компилировал gcc, из под командной строки, вроде.
Ещё TOX компилировал, помню через всякое вот такое вот (коммент)
https://github.com/username1565/uTox_winXP/commit/cd23deef631183178d113cbac2dd1812f547fd85#commentsНе знал что Си можно с визуал-студио компилировать.
Но не хотелось бы начинать наноборду, с нуля, тем более - на незнакомом языке.
Я бы может и покопался в этой борде если бы она на сях была.
Одно только упоминание шарпа у меня рвотный рефлекс вызывает уже лет двадцать...
Потому что шарп это дотнет, значит привязка к виндам. Моно - это костыль и ебатня.
Да там всё просто, только написано свиду непонятно.
Можешь качнуть бинарник и попытаться запустить, и там потыкаешь уже.
Если простыми словами описать всё это дело, то работает наноборда эта - вот так:
1. PostMessage - исходный текст поста. Лимит 65535 байт, чтобы не засирать борду.
2. PostHash = sha256(PostMessage).substring(0,32) - половина sha256-хэша - это хэш-код.
Это уже позволяет хранить данные в хэш-таблице вида:
{"PostHash1": "PostMessage1", "PostHash2": "PostMessage2", ...}
3. Дальше уже PostMessage = ReplyToHash + PostMessage; где ReplyToHash - хэш-код поста, к которому пишется ответ PostMessage.
Следовательно, PostHash = sha256(ReplyToHash+PostMessage).substring(0,32),
и хэш-таблица вида:
{"PostHash1": "ReplyToHash1+PostMessage1", "PostHash2": "ReplyToHash2+PostMessage2", ...}
Такая хэш-таблиц может быть преобразована в таблицу базы данных:
|PostHash|ReplyToHash|PostMessage|
и эта таблица уже являет собой - бесконечно-ветвящееся дерево тредов, постов,
и ответов на них, как на любой другой анонимной имиджборде.
4. Если все данные хранить в хэш-таблице, то хэш-таблицу вида:
{"PostHash1": "ReplyToHash1+PostMessage1", "PostHash2": "ReplyToHash2+PostMessage2", ...}
можно попросту засрать спамом, тупо постя туда бредятину всякую, какими-то прогами.
Поэтому было добавлено POW в теге [pow=значение] и Captcha в теге [sign=значение], это было сделано в отдельных двух тегах,
и в PostMessage были добавлены всякие другие теги.
Итак, PostMessage = PostMessage + [другие теги всякие] + [pow=значение] + [sign=значение].
Чтобы работать с каптчей, подключена dll-ка Chaos.NaCl.dll - исходный код которой - имеется.
5. Из хэш-таблицы, нанопосты и их цепочки (треды) - извлекаются по хэш-кодам,
возвращаются в браузер, в виде JSON, содержащем PostMessage,
и дальше парсятся JavaScript'ом - на стороне клиента, выдавая распарсенные нанопосты в браузер.
Чтобы работать с JSON'ом, подключена dll-ка Newtonsoft.Json.dll, исходный код которой - имеется.
6. Наноборда, изначально - не имеет сервера (чтобы их не ддосили тупо).
Инфа хранится в раличных местах, которые можно менять, в процессе нанонимной координации.
Сервера - локальные, и хэш-таблица диверсифицирована по различным локальным хранилищам.
Именно диверсификация хэш-таблицы и её контента, гарантирует принципиальную немочерируемость наноборды,
так как контейнеры можно сгенерить в любом месте, и повесить в любое место, а потом спарсить их оттуда.
Сама же хэш-таблица, хранится в виде обычного двоичного файла и самописного индекса для него.
7. Я сделал lite-server, отдельный облегчённый сервер (без админских функций локального сервера),
чтобы повесить его на другой порт, и прокинуть порт в сеть.
Таким образом, наноборда обрела воможность иметь сервера, которые можно запускать на разных айпишниках, и доменах.
Но в клирнете хостить сервер - значит палить IP, и по IP'у сервер могут тупо заддосить.
Или тупо определить координаты, и въебать калибром, если на наноборде наноны постить,
пруфы военных преступлений хуйла, или горелых пидорашек, и всякую расчленёнку, скажем.
Поэтому хостить можно в TOR'e, и я раньше поднимал наноборду в торе, на onion_v2 домене,
пока его не выпилили после какого-то обновления тора. Сейчас нихуа не пашет.
8. Дальнейшая обмазка, по коду - это уже не особо существенно,
работа с конфигами, закачка картинок и парсинг их, HTTP-API в DbApiHandler.cs, TcpServer.cs,
и прочее всякое - это уже как-бы, просто детали реализации.
Клиентская сторона тупо на JavaScript работает и парсит всё это дело.
Скрипты выгружаются с локального сервера в браузер, а дальше уже исполняются в нём.
Это надо, чтобы показать сами посты в html, треды из них, саму борду, и собственно систему систему управления ею.
9. Всё это пиздец как неоптимизированно, нигде не поднято, и заброшено с 2016-го года.
Мой пердолинг - никому не интересен, и доебал уже меня самого.
Аноны просто стебутся и идут срать на мочераторский двач.
Хотя идея немочерируемой, кроссплатформенной, легкоподнимаемой в локалках,
портативной анонимной борды с открытым кодом - довольно годная,
особенно щас, когда кругом - пидорашья мочерня.
Сейчас все повально на электроне десктопные приложения писать насобачились.
Тоже не айс в плане итогового размера экзешника конечно,
но зато минимальный порог входа и максимальная переносимость.
А такой екзешник реально портабельный, его можно с флешки запустить на разных компах?
И да, если ты пишешь п2п, то ты пишешь и серверную часть тоже))
Ну, если с нуля переписывать на другом языке, то да.
А так-то, там уже есть серверная часть в файле TcpServer.cs
Но как сделать пира из него - я не знаю.
И вообще, пиры вроде на UDP работают, а не держут открытыми TCP-соединения.
Чтобы сделать пира, надо вписать туда клиент тоже, чтобы клиент подключался к другим серверам.
А к каким? Либо сделать что-то вроде "addnode=" как в криптовалютах, либо "seednode" захардкоженные (но их надо хостить тогда),
либо искать пиров мультикаст-запросами в локальной сети, как TOX делает.
Как только его запускешь, он поднимает полную ноду, и находит другие ноды - даже в локалке, без Интернета,
и сразу соединяется с ними, и можно общаться через роутер, например.
Но как это всё вкодить в нанобороду, на шарпеге, это я уже - вообще не ебу.
Баз данных с открытым кодом овер дохуя, самая переносимая - это склайт,
всё в одном файле и исходник - один файл вроде.
Я так и не понял, где код либы Mono.SQLite.dll, и как скомпилировать его в dll-ку, чтобы оно и на Windows и в linux с mono работало.
Поэтому, приходится оставлять скомпилированную dll-ку, в виде бинарного файла, а хотелось бы исходник полный добавить туда.