Flat |
Отправлено: 13 февраля 2019 — 08:05
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Здравствуйте все заинтересованные товарищи, которым важно дальнейшее развитие движка EXBB!
В этой теме хотелось бы обсуждать развитие нового движка (не версии) на базе EXBB FM 1.0 RC 1, который подвергся некоторой конверсии.
В частности, движок подвергся очистке от практически всех следов ООП, что сделало код движка гораздо более понятным, читабельным и быстрым.
На данном этапе переделанный движок находится в работоспособном состоянии.
Вкратце, обрисую то, что уже сделано, и то, над чем предстоит ещё поработать и ради чего всё затевалось.
Сделано:
1) как уже указывалось, движок очищен от следов ооп. На это есть определённые причины. Не буду здесь спорить о концепциях, так как эта тема большая и для другого разговора, просто ограничусь указанием на то, что изначально движок был гораздо проще и поэтому стал таким популярным. Это привело к созданию множества форумов, как поддержки, так и других. Всё начало затихать и чахнуть когда движок подвергся переделке. Код стал намного более запутанным и интуитивно не ясным. То есть произошла революция, а не эволюция. А все революции, как известно "начинают пожирать своих сынов"..
Лечиться всегда больно, неприятно, горько, но лечиться надо. А чтобы вылечиться надо немного умерить свой пыл и сдать назад..
Это позволит легко продолжать развитие движка в эволюционном ключе. Я всё сказал по этому поводу и больше повторяться не буду. Не нравится - проходите мимо и ставьте EXBB 2.0..
2) все функции движка получили префикс exbb_. Это позволит уменьшить возможные кофликты разных кусков кода в дальнейшем.
На пример, было:
стало:
3) все пути в скриптах сделаны от корня сервера.
Например было:
CODE:
include('./templates/'.DEF_SKIN.'/preview.php');
стало:
CODE:
include(TEMPLATE_DIR.DEF_SKIN.'/preview.php');
В common.php прописано:
CODE:
$RootPath=dirname(__FILE__).'/';
а в файле defines.php прописано:
CODE:
define('TEMPLATE_DIR', $RootPath.'templates/');
а те ссылки которые отправляются юзеру формируются так.
Было:
CODE:
'src="./javascript/board.js"'
стало:
CODE:
'src="./'.exbb_dir(JAVASCRIPT_DIR).'board.js"'
Это позволит усилить безопасность скрипта и формировать все пути из одной точки. Как видно работа проведена большая.
3) изменён темплейт админ центра. Исправлена некоторая неряшливость в отображении.
Темплейты ещё будут переделываться.
4) переход по форумам внизу страницы сделан не через java скрипт, а через кнопку. Считаю, что движок сильно засорён множеством java скриптов. например в FlaxBB их вообще нет. Я не являюсь их противником, например в форме ответа они необходимы, но пихать их даже в такие вещи как навигация по форуму, извините меня но это сильный бред. Многие юзеры и я в том числе отключают джава скрипты в своих браузерах для безопасного сёрфинга по и-нету. А тут их как блох на каждом шагу.. Многое можно сделать чисто html и php скриптами.
Зачем всё так усложнять? не понимаю..
Вот то, что уже сделано. Главное что форум работает.
Теперь о том, что нужно сделать и что требует обсуждения.
1) вход в скрипты через одну точку входа. Это не обсуждается. Так будет сделано сразу, следующим шагом. В этом случае можно безопасно контролировать подключение скриптов через их список. К тому же можно распределить подключаемые модули по папкам в одной папке: категориям отдельная папка, темам отдельная, форумам отдельная. Проще будет найти какой-то форум, тему или файл. А сейчас все лежит в корне сайта.. Это просто некрасиво.
2) сейчас если тема превышает некоторый порог по весу, то приходится создавать её продолжение. Это некрасиво, трудоёмко, юзерам приходится искать все эти части отдельной темы, и т.д. Всё потому, что при заходе в тему, например на последнюю страницу, грузится вся тема целиком в ОЗУ сервера. Получается, что человек просматривает 15 сообщений а загрузилось все 100, что там в этой теме были.. Опять некрасиво, и расходует ресурсы сервера. А если юзеров будет 100 и все они сразу загрузят эту тему? Сайт повиснет.. Рукотворный ddos, который мы создали сами. не забывайте, что на сервере, кроме вашего сайта находятся тысячи других. И они тоже повиснут..
Что предлагаю.
На одном форуме обсуждалось сколько сообщений оптимально выводить на одну страницу. Согласились, что меньше 30 крайне неудобно, но нужно ограничить вес одного сообщения. Меньше 30 юзерам приходится чаще жать на кнопку перехода это ужасно утомляет. Предлагаю в настройках удалить функцию выбора пользователем количества выводимых на одну страницу сообщений. Это позволит стандартизировать их вывод и иметь жёсткие ссылки на одну какую-то страницу. Также это позволит разгрузить сервер и грузить только ту страницу, которую затребовал пользователь. Также это позволит не делить темы на много частей если они большие по обьёму. Это значит, что тема может быть сколько угодно большой и не приведёт к падению сервера и скорости. По-моему плюсов значительно больше, чем минусов в смысле запрета на количество страниц..
Если кто боится, что станет слишком много файлов, то давайте посчитаем и сравним. Всё зависит от обьема тем. На этом форуме к примеру, 1795 тем. Стало быть файлов этих тем тоже 1795. Сообщений ~32422. Если все темы пропорциональны по сообщениям и сообщений = 30 на страницу, то получим 32422/30 = ~1080 файлов. Выходит даже, что файлов стало меньше, чем сейчас. Конечно в реальности их может стать и больше и меньше, но оно будет варьироваться в пределах средних значений.
3) изменить алгоритм сохранения информации о категориях, форумах и темах. Предлагаю отображать в файл реальную картину, к примеру, их взаимного расположения. Это значит, что в файле со списком категорий категории расположены в том порядке, в котором они выводятся. Также и форумы, и темы. Это упростит скрипты. Сейчас там всё запутано. Например, удаляем форум, а номер его теряется. опять некрасиво, неряшливо. И таких неряшливостей полно..
К примеру есть проблема с описанием категорий и форумов.(описаний категорий вообще нет). Ещё есть проблема когда удаляем первое сообщение в категории, форуме или теме, то удаляется эта категория, тема или форум. Но такая логика неправильна, согласитесь.
4) изменить способ сохранения-загрузки файлов. Базу сделать более читабельной.
5) При удалении сообщения, не удалять всю таблицу, которая отображается, а писать в ней например "удалено модератором/админом". Чтобы пользователи, которые читают тему понимали что здесь было сообщение, если есть на него ссылки или были цитаты из него, или на него ссылались в тексте других сообщений. Думаю внятно объяснил. Это также позволит не рвать ссылки на отдельные ссобщения и страницы.
Это основное.(Отредактировано автором: 13 февраля 2019 — 08:24) |
|
|
Sigurni |
Отправлено: 13 февраля 2019 — 13:05
|
Newbie
Покинул форум
Сообщений всего: 11
Дата рег-ции: Окт. 2018
Репутация: -3
|
Flat пишет:На данном этапе переделанный движок находится в работоспособном состоянии.
Где?
Flat пишет:что сделало код движка гораздо более понятным, читабельным
По мнению кого?
Это результаты бенчмарков? Где с ними можно ознакомиться? Каким инструментом тестировали? Под какой нагрузкой проверяли?
Или это снова ничем не подкреплённые слова?
Flat пишет:все функции движка получили префикс exbb_. Это позволит уменьшить возможные кофликты разных кусков кода в дальнейшем.
PHP последние 10 лет развивается (и успешно, между прочим) в сторону пространств имён и правильной организации кода, как раз чтобы уйти от глобального пространства имён и костылей, связанных с их решением (читай, префиксов). Но... Как в анекдоте: мыши плакали, кололись, но продолжали пожирать кактус. Так и тут с префиксами. Добро пожаловать в 2004 и PHP4 обратно.
Flat пишет:CODE:$RootPath=dirname(__FILE__).'/';
А dirname тут зачем? Есть же сразу __DIR__. Про то, что глобальные переменные это просто ужос, уже ранее говорил, повторяться не стану. В PHP нет константных переменных (только сами константы), соответственно, достаточно любому моду что-либо сделать с глобальной переменной (случайно или специально), и весь форум перестанет работать. Более того, рано или поздно столкнётесь с тем, что и к таким переменным будете префиксы прикручивать, чтобы "уменьшить кофликты разных кусков кода".
Flat пишет:Многие юзеры и я в том числе отключают джава скрипты в своих браузерах для безопасного сёрфинга по и-нету.
Кто эти многие? Приведите пример или ссылку на исследование. Или снова пустые слова?
Вот статистика от компании, занимающейся метрикой в вебе: https://blockmetry.com/blog/javascript-disabled
В 4-м квартале 2016 г. таких пользователей было аж целых 0.2%, из них большая часть - это пользователи Tor, что вполне объяснимо.
Если у вас есть другая статистика, или приведите здесь ссылку, или просто перестаньте подменять актуальное положение дел своим мнением, выдавая его за всеобщее.
Вы хоть раз сами пробовали отключить JS и зайти хотя бы даже в почту или поисковик, не говоря уже о социальных сетях, сайтах Интернет-магазинов и т.п.
Flat пишет:Многое можно сделать чисто html и php скриптами.
Зачем всё так усложнять? не понимаю..
Вперёд: возьмите редактор сообщений на этом форуме и сделайте его "чисто html и php скриптами". Уж очень хочется на это посмотреть, как вы frontend-часть будете реализовывать на языке разметки и на сервере.
Остальное комментировать даже лень. Взять движок 10-летней давности, поменять пути (старые, к слову, прекрасно работают), дописать префиксы в функции, что-то там сделать с дизайном админки (негде даже на это посмотреть) и заменить 2-строчный JS в быстром переходе по разделам - это определённо сильно, тянет даже не на Gold, давайте сразу Platinum. (Отредактировано автором: 13 февраля 2019 — 13:15) |
|
|
Flat |
Отправлено: 13 февраля 2019 — 13:59
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Sigurni ,
хотите затроллить тему?..
На локальном сервере.
Sigurni пишет:По мнению кого?
Меня.
Sigurni пишет:Это результаты бенчмарков? Где с ними можно ознакомиться? Каким инструментом тестировали? Под какой нагрузкой проверяли?
Быстрым потому, что здесь не надо создавать классы и вызывать конструкторы. Будут вам бечмарки, если хотите сами и проверите.
Sigurni пишет:PHP последние 10 лет развивается (и успешно, между прочим) в сторону пространств имён и правильной организации кода, как раз чтобы уйти от глобального пространства имён и костылей, связанных с их решением (читай, префиксов).
А нам нужен вариант, который одинаково подходил бы под разные версии интерпретаторов, в том числе и 4-х.
Глобальное пространство имён(к слову глобальных переменных тут мало) позволяет в разы упростить скрипты. Мы же не навороченный гугл-сервиз делаем, а простой и понятный форумный движок. настолько простой, чтобы его поддержкой могли заниматься те, кто хоть в общих чертах знакомы с php.
Sigurni пишет:А dirname тут зачем? Есть же сразу __DIR__.
Да я в курсе, что есть.
dirname(__FILE__) поддерживается более ранними версиями PHP, чем __DIR__, к слову. Поэтому более приемлемо.
Sigurni пишет:Кто эти многие? Приведите пример или ссылку на исследование. Или снова пустые слова?
Многие из продвинутых пользователей, особенно среди хакеров. Рекомендую.
Гуглите.
Sigurni пишет:Вы хоть раз сами пробовали отключить JS и зайти хотя бы даже в почту или поисковик, не говоря уже о социальных сетях, сайтах Интернет-магазинов и т.п.
Я не потому против засилья js, что многие отключают, а потому, что это усложняет поддержку движка.
Sigurni пишет:Остальное комментировать даже лень. Взять движок 10-летней давности, поменять пути (старые, к слову, прекрасно работают), дописать префиксы в функции, что-то там сделать с дизайном админки (негде даже на это посмотреть)
Во-первых, посмотреть можно будет, когда доделаю. Во-вторых, это будет практически новый двиг с включением старого кода. это чтобы не годами заниматься. Просто я делаю так, как считаю правильным. Потому что в коде движка много запутанности, отсутствует строгая логическая ясность. привожу всё к должному виду. Не нравится? Идите лесом, или полем..(Отредактировано автором: 13 февраля 2019 — 14:01) |
|
|
Sigurni |
Отправлено: 13 февраля 2019 — 14:48
|
Newbie
Покинул форум
Сообщений всего: 11
Дата рег-ции: Окт. 2018
Репутация: -3
|
Flat пишет:А нам нужен вариант, который одинаково подходил бы под разные версии интерпретаторов, в том числе и 4-х.
И костыли для исправления ошибок (в том числе уязвимостей) PHP 15-летней давности, который уже сами разработчики давно не поддерживают, тоже в код вставлять будете? Да уж, тут действительно GE (Goldvno Edition) намечается.
Flat пишет:Многие из продвинутых пользователей, особенно среди хакеров. Рекомендую.
Гуглите.
Вы разрабатываете форум для какеров, ой, простите, хакеров?
Flat пишет:Я не потому против засилья js, что многие отключают, а потому, что это усложняет поддержку движка.
JavaScript - самый популярный язык программирования по статистике коммитов на сервисе GitHub за последние 5 лет. И взлёту его применения способствует именно простота. Многие проекты даже переезжают с PHP на NodeJS. Миллионы разработчиков не могут ошибаться: _https://octoverse.github.com/projects#languages. Но вы у нас уникум, вам это почему-то сложно.
Flat пишет:Во-первых, посмотреть можно будет, когда доделаю. Во-вторых, это будет практически новый двиг с включением старого кода. это чтобы не годами заниматься. Просто я делаю так, как считаю правильным. Потому что в коде движка много запутанности, отсутствует строгая логическая ясность. привожу всё к должному виду. Не нравится? Идите лесом, или полем..
Опять 25. У вас то модификация, то новый двиг, то опять модификация, то снова новый двиг.
Мне осталось только пожелать вам удачи в изобретении велосипедов! Они всегда идут так сложно, через смену направления работы по 100500 раз.
P.S. Больше в ваши темы заходить не буду.(Отредактировано автором: 13 февраля 2019 — 14:49) |
|
|
Flat |
Отправлено: 14 февраля 2019 — 03:18
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Parapsixolog пишет:то хорошо было бы увидеть вашу разработку на практике. Пусть она не доделанная. WebMaster опубликовывал свои наработки, даже если они были сырые. И это правильный подход.
именно сейчас ещё рано выкладывать, - как я уже говорил сначала нужно через одну точку сделать, вчера пол-дня сидел над этим; наладить работу с файловой базой. В пределах месяца, думаю, если всё пойдет нормально, выложу. Хоть сейчас движок работает, но он в прежнем виде, хотя и без ооп и с новыми путями. Да ещё инсталлятор без новых путей. Не протестированы некоторые моды. А так вроде всё работает.
Не спешите, подождите немного - я полностью работаю, забросив всё остальное, как я уже говорил по 5-8 часов в день. То есть сажусь примерно в 13-15 часов, и до 24 - 1 ночи, с перерывами на естественные потребности. Думаю, что с такой отдачей может что-то получиться. |
|
|
Flat |
Отправлено: 14 февраля 2019 — 07:24
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
По ходу пьесы ещё одно предложение нарисовалось..
По поводу репутации пользователя. Интересно, вчера пользователь Sigurni поставил мне отрицательную отметку. У меня было 7 баллов, стало 6 баллов. Мне-то это по барабану - пусть хоть минус тысяча будет, но дело в том, что при такой системе, получается что вычитая из положительных баллов отрицательные, мы тем самым своими руками отбираем те благодарности, которые были поставлены другими пользователями от чистого сердца. К примеру, было у меня 100 баллов репы, но вдруг было снято эти же 100 баллов отрицательными отметками. Получается, что репутации = 0, но положительные баллы вместе с комментами остались.. Не кажется ли вам, что это несколько несправедливо по отношению к тем, кто ставил положительные или отрицательные баллы?
Не лучше ли и справедливее сделать две суммы - одну положительных баллов, а другую отрицательных? В этом случае сразу будет видно сколько людей поставило положительную репу, а сколько отрицательную. Сейчас это вообще трудно уловимо.(Отредактировано автором: 14 февраля 2019 — 07:24) |
|
|
Parapsixolog |
Отправлено: 14 февраля 2019 — 12:43
|
Advanced Member
Покинул форум
Сообщений всего: 487
Дата рег-ции: Сент. 2011
Репутация: 14
|
Flat пишет:К примеру, было у меня 100 баллов репы, но вдруг было снято эти же 100 баллов отрицательными отметками. Получается, что репутации = 0, но положительные баллы вместе с комментами остались.. Не кажется ли вам, что это несколько несправедливо по отношению к тем, кто ставил положительные или отрицательные баллы?
Можно конечно так сделать, но не обязательно. Так как кроме выставления самих балов репы сохраняется причина её изменения, и всегда можно посмотреть, кто, сколько и за что поставил. |
|
|
Flat |
Отправлено: 14 февраля 2019 — 16:50
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Parapsixolog пишет:Так как кроме выставления самих балов репы сохраняется причина её изменения, и всегда можно посмотреть, кто, сколько и за что поставил.
Если в результате пертурбаций произойдёт её обнуление, то мало кто захочет лезть на страницу репутации. Репа это по сути те же лайки и дизлайки. Так почему бы не сделать как и полагается? Пусть все видят сколько поставлено лайков и дизлайков.
Кстати ещё вырисовалась проблема: накрутка репы, как в положительную, так и в отрицательную сторону. Товарищ(тамбовский волк ему товарищ) Sigurni , уже второй раз за день! ставит мне отрицательную репу. Мне-то всё равно, но я ему тоже влепил за день два балла в отместку. Налицо война не на жизнь а на смерть, жаль видимо что далеко друг от друга находимся, а то намяли бы бока))) Ух какие мы грозные))) Но я ещё терпеливее..
А если серьёзно, то налицо ещё одна проблема - накрутка репы. Я у себя обязательно решу эту проблему, а вы даже не знаю как с этим живёте.. (Отредактировано автором: 14 февраля 2019 — 16:59) |
|
|
|