Сабж. Домен и хостинг предлагаю так и оставить у сосича, что это не было каким-то перетягиванием аудитории и т.д. Предлагаю поднять его на субдомене, если вам понравится, дальше разговор к сосичу, если нет, то ладно, но хотел бы, чтобы вы попробовали.
Скриншот: https://imgur.com/a/avU1sv2
Что реализовал:
-
Имена участников хешируются (8 символов из sha-1). Вы конечно быстро поймете кто есть кто, но в целом я не знаю, как объяснить эту фичу правильно. Это такая некоторая защита вас друг от друга, тут некоторые любят (особенно это остро ощущается на ЛОРе) обсирать по личным обидам, а не по контексту сообщения.
-
Управление досками (подобно как здесь tdg, community, club)
-
Приватность досок (подобно как здесь клуб)
-
Регистрация по инвайтам (чтобы это было для своих, как тут)
-
Треды и ответы в них (есть тред и ответы, не ветки, как здесь)
-
Возможность удалять посты и редактировать их.
-
Базовая разметка (курсив, жирный, цитирование, блок кода)
-
Ссылки на соообщения вида >>123
-
Предпросмотр при наведнении на такие ссылки
-
Под постом на который сослались выводятся все такие сообщение, также с предпросмотром.
-
Вордфильтр (на случай вайпа, например, можно банить и добавлять слова в ворд-фильтр)
Пока протестировал как смог, вроде минимально готово.
Чего нет:
- Аватарок (не нужно, детский сад), это часть пункта 0.
- Вставки всяких картинок, телеграмов и всего такого. Изначально думал взять полностью концепт имиджборды, но по сути картинку можно вставить обычной ссылкой, не вижу проблемы, как и ютуб, как и телегу. Но если все очень сильно скажут, что это нужно, то я сделаю.
- Нет какой-то страницы профиля, рейтинга, звезд, статистики пользователя и все такое. В целом это даже на ЛОРе неактуально, здесь темболее (у всех миллион звезд).
Что есть, но иначе:
- Страница новостей это по сути доска, которую можно читать, но в которую нельзя писать (одмены могут). Думаю в будущем там чуть напедалировать, чтобы можно было комментировать, предложка и все такое. В целом уже подготовил почву (роли), чтобы сделать корректоров и все такое.
То до:
- Ну вот это с новостями доделать
- Сделать возможность выбора способа просмотра (как на имиджбордах / как на форумах), пока только первое, но второе сделать нетрудно, просто хочу сделать это как настройку у пользователя.
Код написан на пыхпыхе (скорее всего он крайне кривой, я не программист), планирую потом причесать и выложить на гитхаб или аналог.

Там там строку кода удалить (хеширование) и будет обычный никнейм, можно и так конечно.
Тогда это будет именно что дващ (имиджборд в полном понимании). Но я лично считаю, что нет смысла всирать дисковое пространство. У ЛОРа нет такой фичи и на ЛТ нет и всем норм (кроме раздела скриншотов).
Я не знаю, какая там структура и все такое. Я свою сделал и на sqlite3, тут на ЛТ потолок 10 человек общается, sqlite должно хватить за глаза.
Энивей, смотрю за “не нужно” тыкнуло больше, всего уже больше 10 голосов, это значит, что плюс минус все уже проголосовали.
Жаль :((
Этот дурачок кстати меня в игноре держит.
Еще раз повторю: конкретно для нас здесь, для ЛТ, это минус. Но не для движка. Я сам готов назвать форумы, где эта фича зашла бы на ура. Так что норм.
Да не норм, просто всем лень это реализовывать. Из всех живых пользователей здесь буквально каждый хоть раз что-то сказал по этому поводу. Просто сейчас ты тупо делаешь лишние действия - идешь на хостинг картинок, получаешь ссулку для маркдауна, несешь ее сюда. Но это никак не ограничивает. Просто лишнее неудобство. Никакой опасности конкретно для ЛОРа/ЛТ картинки не несут, ну не принято у нас ими срать как на дваче. Так что сравнение мимо. Да и никто не мешает удаляя ветку в архив оставить только тамбнейлы, которые весят меньше текста.
Лучшее решение тогда взять движок tinyib, потому что моя поделка буквально пытается переизобрести его, а там это “нативная” фича, можно сказать. Я еще давно говорил, что движок имиджборды здесь идеально бы зашел, как человек который держал две относительно популярные когда-то параши говорю, здесь даже атмосфера примерно такая-же, разве что тогда было модно срать аниме картинками, сейчас большинство это переросло (хотя на ЛОРе всякие понидрочеры до сих пор есть).
Что касается этой поделки, что я наколякал: сегодня проверил еще раз все функции движка, чтобы они работали, исправил ошибки, вечером вброшу на гит. Если тут есть люди, кто разбирается в пыхпых стеке, было бы интересно послушать мнение (ревью кода?), хотя я и так знаю, что скорее всего там кал, т.к. почти все написано с применением помощи нейронок (свой 1% навыка использовал для того, чтобы соединять в кучу, дебажить и переделывать нейронке запрос, пока она не выдаст то, что мне нужно).
Вышло что-то около 1500 строк кода (все в одном файле, это буквально была моя хотелка, хотя знаю, что это моветон лютый), это вместе с жс и стилями, а также в это число входит код который инициализирует файл базы данных (по хорошему его вообще в какой-то файл install.php выкинуть и удалить после установки), но мне дико нравится идея, что буквально кинул файл в корень и все работает.
Не знаю, смогу ли развивать это сильно дальше, какие-то фичи прикрутить еще реально, но прям сложное что-то не уверен в силу того, что у кода нет какой-то правильной “основы”, я думаю. Человек который шарит в написании полюбому сначала делает какой-то каркас, который потом обрастает функциями и все там структурировано и по полочкам. Гопатыч в такое не умеет совсем кстати, я заметил, он вообще любит хуярить портянки где echo в столбик или ifthen конструкции лапшой сотнями строк, пиздос в общем.
https://github.com/sadclaire/textboard
Бегло прочитал:
$user = $db->querySingle('SELECT * FROM users WHERE id = ' . intval($_SESSION['user_id']), true);- во-первых это шизофазия, во-вторых просто небезопасно. Это везде насквозь по всей простыне.if (isset($_GET['admin']) && $_GET['admin'] == 1) {=== “1” либо ебаный intvalfunction formatTime($timestamp) {- шиза. https://www.php.net/manual/ru/class.intldateformatter.phpВ целом заебок, но все надо переписать)))
Что это означает? И вообще, я бы хотел добавить, что БД надо делать из директорий и текстовый файлов в них (например,
password.txt), каждый из которых содержит по одному параметру, а булевые параметры надо делать в виде файлов капсом, как, например, реализовано в Nocord: при наличии файлаANONYMOUSNocord понимает, что на сервере разрешен анонимный постинг.Я и про это.
Этот код берет строковую переменную, кастует ее к int, после чего конкатенирует ее к строке, кастуя ее обратно к строке. Это шизофрения чистейшая. Если уж работать трактористом, то вот чистый код:
$user = $db->querySingle("SELECT * FROM users WHERE id = {$_SESSION['user_id']}");И да, так делать не стоит уже по соображениям безопасности. Для этого у каждой dsl библиотеки есть соответствующий api в виде bind/prepare с проверкой на инъекции.
Понятно.
Ну и там по простыне такого много, при этом есть и правильное использование, видно, что не человек писал:
$ip = $_GET['ip']; $db->exec("DELETE FROM bans WHERE ip = '" . SQLite3::escapeString($ip) . "'");Вместо:
// prepare/bindValue _уже_ включает SQLite3::escapeString // Зачем лишнее выделение памяти и ненужное копирование $ip? $stmt = $db->prepare("DELETE FROM bans WHERE ip = :ip"); $stmt->bindValue(":ip", $_GET['ip'], SQLITE3_TEXT); $res = $stmt->execute();$parentIdDefault = isset($_GET['thread']) ? intval($_GET['thread']) : '';Тоже шиза, квантовое состояние переменной - хочешь знаковый инт, хочешь строка, и если строка, то набигают проверки на пустое значение root (ну что с головой-то), можно грабить корованы.
Какую нейронку насиловал?
function getReplies($db, $parentId, $limit = 3) {Ты уж определись, $db, начиная с 22 строки имеет глобальную видимость.
Квантование никак не срастается, теперь еще и булево:
$editId = isset($_GET['editmsg']) ? intval($_GET['editmsg']) : null;if ($parentCheck && $parentCheck != 0) {Ну это уже, видимо, автор дунул. Нейронка не может выдать такое совсем.
а в чем собственно шизофазия? да вообще то рекомендуется prepare
в следующем посте написано)
понял) вопросов больше нет
Бжлад, ну у меня были сильные подозрения, что гопатыч мне хуй за щеку вместе с кодом дает, но я смотрю мол, вроде работает и задачи выполняет, ну в целом это ожидаемо было, я и не скрывал :)
В общем парни, хочу сказать, что айтишники без работы точно не остануться тогда, ближайшие лет 20 судя по всему, как минимум. У гопатыча есть еще одна проблема: пока размер всего кода укладывается в максимум пару сотен строк, он еще как-то пытается думать и т.д., потом у него просто окно контекста схлопывается. Чтобы работать с этим кодом я использовал супер-дупер-новомодную идешку cursor-ai (в арче можно ебануть прямо из аура пакетом cursor-bin). Там есть режим агента, где гопатыч интегрирован в этот нотепад и там сильно проще давать контекст (выделил строки и сказал че хочешь, если ему надо, он шарится по всему проекту). Через обычный онлайн чат даже такого говна не добиться, он через пару сообщений забывает о чем ты с ним говорил, лол.
Нормуль, это называется vibe-driven кодинг. Типа, мамка, смотри, я заебательский кодер! бип-бип)))) Оно ж работает по факту)
Завязывай с вайб-кодингом, пока не поздно.
Хуйня этот ваш вайб кодинг, уже завязал, но опыт необычный, что интересно: движок то получился в итоге, лол.
Этот движок написан нейронкой?