LINUXTALKS.CO

Перейдете ли вы на использование нового движка, если будет человек который им будет заниматься

 

L


0

1

Сабж. Домен и хостинг предлагаю так и оставить у сосича, что это не было каким-то перетягиванием аудитории и т.д. Предлагаю поднять его на субдомене, если вам понравится, дальше разговор к сосичу, если нет, то ладно, но хотел бы, чтобы вы попробовали.

Скриншот: https://imgur.com/a/avU1sv2

Что реализовал:

  1. Имена участников хешируются (8 символов из sha-1). Вы конечно быстро поймете кто есть кто, но в целом я не знаю, как объяснить эту фичу правильно. Это такая некоторая защита вас друг от друга, тут некоторые любят (особенно это остро ощущается на ЛОРе) обсирать по личным обидам, а не по контексту сообщения.

  2. Управление досками (подобно как здесь tdg, community, club)

  3. Приватность досок (подобно как здесь клуб)

  4. Регистрация по инвайтам (чтобы это было для своих, как тут)

  5. Треды и ответы в них (есть тред и ответы, не ветки, как здесь)

  6. Возможность удалять посты и редактировать их.

  7. Базовая разметка (курсив, жирный, цитирование, блок кода)

  8. Ссылки на соообщения вида >>123

  9. Предпросмотр при наведнении на такие ссылки

  10. Под постом на который сослались выводятся все такие сообщение, также с предпросмотром.

  11. Вордфильтр (на случай вайпа, например, можно банить и добавлять слова в ворд-фильтр)

Пока протестировал как смог, вроде минимально готово.

Чего нет:

  1. Аватарок (не нужно, детский сад), это часть пункта 0.
  2. Вставки всяких картинок, телеграмов и всего такого. Изначально думал взять полностью концепт имиджборды, но по сути картинку можно вставить обычной ссылкой, не вижу проблемы, как и ютуб, как и телегу. Но если все очень сильно скажут, что это нужно, то я сделаю.
  3. Нет какой-то страницы профиля, рейтинга, звезд, статистики пользователя и все такое. В целом это даже на ЛОРе неактуально, здесь темболее (у всех миллион звезд).

Что есть, но иначе:

  1. Страница новостей это по сути доска, которую можно читать, но в которую нельзя писать (одмены могут). Думаю в будущем там чуть напедалировать, чтобы можно было комментировать, предложка и все такое. В целом уже подготовил почву (роли), чтобы сделать корректоров и все такое.

То до:

  1. Ну вот это с новостями доделать
  2. Сделать возможность выбора способа просмотра (как на имиджбордах / как на форумах), пока только первое, но второе сделать нетрудно, просто хочу сделать это как настройку у пользователя.

Код написан на пыхпыхе (скорее всего он крайне кривой, я не программист), планирую потом причесать и выложить на гитхаб или аналог.

  1. Не нужно!10 (71%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Нужно!4 (29%)

    ********************************************************************************************************************************

Всего голосов: 14

>>> Проголосовать

★★★★★★

Проверено: cocucka ()

Минималистичненько

cocucka    
★★★★★★★★★★★★
Mac OS / Firefox (NL)

Вырвиглазненько. Одобряю!

Это такая некоторая защита вас друг от друга, тут некоторые любят (особенно это остро ощущается на ЛОРе) обсирать по личным обидам, а не по контексту сообщения.

С точки зрения движка фича прикольная. Конкретно нам оно не надо, потому что у нас тут не совсем форум, тут курилка для своих. Кто-то приживается, а кто-то охеревает от происходящего. Но потестим, чо нет-то?

Базовая разметка (курсив, жирный, цитирование, блок кода)

Маркдаун или чо другое?

Ссылки на соообщения вида >>123

По номерам как на дваче штоль?

Под постом на который сослались выводятся все такие сообщение, также с предпросмотром.

Это ж каша на экране будет, не?

картинку можно вставить обычной ссылкой

Люди ленивые. Да и вставка всяких телег есть, а почему нельзя тупо картинку со своего компа напрямую без всяких хостингов картинок вставить - это странненько. Запилите уже наконец кто-нибудь.

А прикрутить параллельно реально? @cocucka

Короче, я за то, чтоб потестить, опенсурс хули, надо поддержать. Но конкретно в нашем случае фича 0 - это скорее минус. Поэтому на постоянку переезжать на такой движок нам не стоит, ИМХО.

Oberstserj    
★★★★★★
Ubuntu / Firefox (NL)
Ответ на: комментарий от Oberstserj

А прикрутить параллельно реально?

Почему нет, если тупо в ЛТшной базе сообщения хранить, то будет параллельно

cocucka    
★★★★★★★★★★★★
Mac OS / Firefox (NL)
Ответ на: комментарий от cocucka

А систему досок с нашими тредами между собой увязать реально? Если @torvn77 принесет очередную ссылку на ютупчик, в новом движке оно как отдельная доска появится?

Oberstserj    
★★★★★★
Ubuntu / Firefox (NL)
Ответ на: комментарий от Oberstserj

Раздел ЛТ == доска. Т.е. у нас тут по сути несколько досок: новости, галерея, опросы, техраздел, толксы, клуб и блоги.

cocucka    
★★★★★★★★★★★★
Mac OS / Firefox (NL)
Ответ на: комментарий от Oberstserj

Так каждый долбоёб в своей жизни хоть раз писал форумный движок. Каждому теперь что ли свои поделки тестировать?

Вот мой был: http://web.archive.org/web/20180315115236/https://russiancoders.ru/

Тоже на пэхэпэ.

kevlarbeaver    
★★
Windows / Chrome (DE)

У нас форум, а не борда. Сегодня Nocord встанет, в нем может быть официальный чат ЛТ. И зачем делать оформление, как на Дваче?

MrSugoma    
★★★
Linux / Firefox (FI)
Ответ на: комментарий от Oberstserj

Принеси, предложи, адаптируй, может тоже потестим. Но ты же не предлагаешь даже.

Не хочу травмировать людей своим говнокодом, написаннім за две недели на новогодних праздниках.

Это была разовая акция с целью подгадить форуму gamedev.ru, переманить к себе с него пользователей. Акция провалилась.

kevlarbeaver    
★★
Windows / Chrome (DE)
Ответ на: комментарий от MrSugoma

В Чебурнете сервера Сосиски не будет.

Так в чебурнете и меня с сосиской (и многими другими местными) не будет. Для нас ничего не изменится так-то.

Oberstserj    
★★★★★★
Ubuntu / Firefox (NL)
Ответ на: комментарий от kevlarbeaver

Не хочу травмировать людей своим говнокодом, написаннім за две недели на новогодних праздниках.

Мы ж тут за опенсурс. Мы видели некоторое дерьмо. Напугал ежа голой жопой.

Акция провалилась.

Это потому, что слонов ты продавать не умеешь.

Oberstserj    
★★★★★★
Ubuntu / Firefox (NL)
Ответ на: комментарий от Oberstserj

0 - это скорее минус

Там там строку кода удалить (хеширование) и будет обычный никнейм, можно и так конечно.

нельзя тупо картинку со своего компа напрямую

Тогда это будет именно что дващ (имиджборд в полном понимании). Но я лично считаю, что нет смысла всирать дисковое пространство. У ЛОРа нет такой фичи и на ЛТ нет и всем норм (кроме раздела скриншотов).

Почему нет, если тупо в ЛТшной базе сообщения хранить, то будет параллельно

Я не знаю, какая там структура и все такое. Я свою сделал и на sqlite3, тут на ЛТ потолок 10 человек общается, sqlite должно хватить за глаза.

shikata_ga_nai    
★★★★★★
Linux / Chrome (MD)
Ответ на: комментарий от shikata_ga_nai

Энивей, смотрю за «не нужно» тыкнуло больше, всего уже больше 10 голосов, это значит, что плюс минус все уже проголосовали.

Жаль :((

shikata_ga_nai    
★★★★★★
Linux / Chrome (MD)
Ответ на: комментарий от shikata_ga_nai

Этот дурачок кстати меня в игноре держит.

kevlarbeaver    
★★
Windows / Chrome (DE)
Ответ на: комментарий от shikata_ga_nai

Там там строку кода удалить (хеширование) и будет обычный никнейм, можно и так конечно.

Еще раз повторю: конкретно для нас здесь, для ЛТ, это минус. Но не для движка. Я сам готов назвать форумы, где эта фича зашла бы на ура. Так что норм.

У ЛОРа нет такой фичи и на ЛТ нет и всем норм

Да не норм, просто всем лень это реализовывать. Из всех живых пользователей здесь буквально каждый хоть раз что-то сказал по этому поводу. Просто сейчас ты тупо делаешь лишние действия - идешь на хостинг картинок, получаешь ссулку для маркдауна, несешь ее сюда. Но это никак не ограничивает. Просто лишнее неудобство. Никакой опасности конкретно для ЛОРа/ЛТ картинки не несут, ну не принято у нас ими срать как на дваче. Так что сравнение мимо. Да и никто не мешает удаляя ветку в архив оставить только тамбнейлы, которые весят меньше текста.

Oberstserj    
★★★★★★
Ubuntu / Firefox (NL)
Ответ на: комментарий от Oberstserj

Лучшее решение тогда взять движок tinyib, потому что моя поделка буквально пытается переизобрести его, а там это «нативная» фича, можно сказать. Я еще давно говорил, что движок имиджборды здесь идеально бы зашел, как человек который держал две относительно популярные когда-то параши говорю, здесь даже атмосфера примерно такая-же, разве что тогда было модно срать аниме картинками, сейчас большинство это переросло (хотя на ЛОРе всякие понидрочеры до сих пор есть).

Что касается этой поделки, что я наколякал: сегодня проверил еще раз все функции движка, чтобы они работали, исправил ошибки, вечером вброшу на гит. Если тут есть люди, кто разбирается в пыхпых стеке, было бы интересно послушать мнение (ревью кода?), хотя я и так знаю, что скорее всего там кал, т.к. почти все написано с применением помощи нейронок (свой 1% навыка использовал для того, чтобы соединять в кучу, дебажить и переделывать нейронке запрос, пока она не выдаст то, что мне нужно).

Вышло что-то около 1500 строк кода (все в одном файле, это буквально была моя хотелка, хотя знаю, что это моветон лютый), это вместе с жс и стилями, а также в это число входит код который инициализирует файл базы данных (по хорошему его вообще в какой-то файл install.php выкинуть и удалить после установки), но мне дико нравится идея, что буквально кинул файл в корень и все работает.

Не знаю, смогу ли развивать это сильно дальше, какие-то фичи прикрутить еще реально, но прям сложное что-то не уверен в силу того, что у кода нет какой-то правильной «основы», я думаю. Человек который шарит в написании полюбому сначала делает какой-то каркас, который потом обрастает функциями и все там структурировано и по полочкам. Гопатыч в такое не умеет совсем кстати, я заметил, он вообще любит хуярить портянки где echo в столбик или ifthen конструкции лапшой сотнями строк, пиздос в общем.

shikata_ga_nai    
★★★★★★
Linux / Chrome (MD)
Ответ на: комментарий от shikata_ga_nai

Бегло прочитал:

  1. Никогда не пхай куки без надобности, это просто неэтично.
  2. $user = $db->querySingle('SELECT * FROM users WHERE id = ' . intval($_SESSION['user_id']), true); - во-первых это шизофазия, во-вторых просто небезопасно. Это везде насквозь по всей простыне.
  3. Один запрос на топологию\конфигурацию для борды, а не 100500 функций для 100500 запросов на один чих. Зачем тебе sql? O_o
  4. if (isset($_GET['admin']) && $_GET['admin'] == 1) { === «1» либо ебаный intval
  5. function formatTime($timestamp) { - шиза. https://www.php.net/manual/ru/class.intldateformatter.php

В целом заебок, но все надо переписать)))

Anoxemian    
★★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian

шизофазия

Что это означает? И вообще, я бы хотел добавить, что БД надо делать из директорий и текстовый файлов в них (например, password.txt), каждый из которых содержит по одному параметру, а булевые параметры надо делать в виде файлов капсом, как, например, реализовано в Nocord: при наличии файла ANONYMOUS Nocord понимает, что на сервере разрешен анонимный постинг.

Зачем тебе sql?

Я и про это.

MrSugoma    
★★★
Последнее исправление: MrSugoma (всего исправлений: 2)

Linux / Firefox (FI)
Ответ на: комментарий от MrSugoma

Этот код берет строковую переменную, кастует ее к int, после чего конкатенирует ее к строке, кастуя ее обратно к строке. Это шизофрения чистейшая. Если уж работать трактористом, то вот чистый код:

$user = $db->querySingle("SELECT * FROM users WHERE id = {$_SESSION['user_id']}");

И да, так делать не стоит уже по соображениям безопасности. Для этого у каждой dsl библиотеки есть соответствующий api в виде bind/prepare с проверкой на инъекции.

Anoxemian    
★★★
Последнее исправление: Anoxemian (всего исправлений: 1)

Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian

Ну и там по простыне такого много, при этом есть и правильное использование, видно, что не человек писал:

$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();
Anoxemian    
★★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian
$parentIdDefault = isset($_GET['thread']) ? intval($_GET['thread']) : '';

Тоже шиза, квантовое состояние переменной - хочешь знаковый инт, хочешь строка, и если строка, то набигают проверки на пустое значение root (ну что с головой-то), можно грабить корованы.

Какую нейронку насиловал?

Anoxemian    
★★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian
function getReplies($db, $parentId, $limit = 3) {

Ты уж определись, $db, начиная с 22 строки имеет глобальную видимость.

Anoxemian    
★★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian

Квантование никак не срастается, теперь еще и булево:

$editId = isset($_GET['editmsg']) ? intval($_GET['editmsg']) : null;
Anoxemian    
★★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian
if ($parentCheck && $parentCheck != 0) {

Ну это уже, видимо, автор дунул. Нейронка не может выдать такое совсем.

Anoxemian    
★★★
Anonymous / Unknown (EE)

О, нашел дырищу, никогда так не делай:

function getUserIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
    } else {
        return $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
    }
}

Это бесполезный код чуть более чем полностью. Клиент может прислать любой заголовок с любым значением. Это flowless wipe твердо и четко.

Anoxemian    
★★★
Anonymous / Unknown (EE)

Кстати, Nocord встал, работает под Alpine 3.22 с ядром 2.6.37 из Slackware 13.37, работает под новейшим Apache и почти новейшим PHP 8.3 (он стабильнее 8.4 пока что), а его железом является виртуалка QEMU без KVM с архитектурой i686 на RPi 4B, лагов нет.

MrSugoma    
★★★
Linux / Firefox (FI)
Ответ на: комментарий от Anoxemian

Треды и ответы в них (есть тред и ответы, не ветки, как здесь)

    function getThreadReplies($db, $parentId) {
        $stmt = $db->prepare('SELECT * FROM messages WHERE parent = :parent ORDER BY timestamp ASC');
        $stmt->bindValue(':parent', $parentId, SQLITE3_INTEGER);
        $result = $stmt->execute();
        $replies = [];
        while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
            $row['children'] = getThreadReplies($db, $row['id']);
            $replies[] = $row;
        }
        return $replies;
    }

Это называется «ебать sqlite3, ебать». Такое в прод нельзя, если глубина вложенности не ограничена, то добиться DOS можно даже не имея злого умысла. Рекурсия коряво ложится на sql, но для этого десятилетиями существуют решения уровня О(const). Nested set, например, загугли.

Anoxemian    
★★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian

Малинка — это ARM. И 32 бита эмулируются быстрее 64. Кроме того, SMP будет всё только тормозить в QEMU без KVM, поэтому я выбрал ядро без SMP.

MrSugoma    
★★★
Linux / Firefox (SE)
Ответ на: комментарий от MrSugoma

Nocord сейчас снова оффлайн, так как из-за майнеров (а из-за кого ещё?) каждый час перебои света во всем населенном пункте, даже фонари потухают.

MrSugoma    
★★★
Android / Firefox (FI)
Ответ на: комментарий от MrSugoma

Это подстанция чует нокорд и выключается от стыда.

Anoxemian    
★★★
Anonymous / Unknown (EE)
Ответ на: комментарий от Anoxemian

$user = $db->querySingle(’SELECT * FROM users WHERE id = ’ . intval($_SESSION[‘user_id’]), true); - во-первых это шизофазия, во-вторых просто небезопасно. Это везде насквозь по всей простыне.

а в чем собственно шизофазия?
да вообще то рекомендуется prepare

Holger    

Linux / Chrome (DK)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)