Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Требования к участию — не задавать очевидных вопросов «как сделать», — то есть хотя бы 2 года уверенного программирования с использованием Лары (Таргетинг L5.3+)
Если будет 2+ человека, то будет паблик на GitLab.com
Уже заложено в Проект (не реализовано):
— Готов каркас пакета, сервис провайдер, пустые модели, базовая архитектура (в голове) по принципу IPB.
— Индексная страница либо список форумов либо объективная статистика по форуму, включая последние регистрации, темы, рейтинги.
— Система прав Forum < Group <<< Permissions
— Подсистема «прочитано» / «новые темы» / «новые комментарии»
После запуска запланированного объёма:
— Upload файлов в сообщения / каменты / посты
— Download-архив
— Фото Галерея
— Личные Сообщения
— Нотификации
Затем:
— Кастомизация внешнего вида
— robots.txt / sitemap.xml для СЕО/
Совсем далеко:
— Массовые действия над пользователями
— Обсудим...
Повторяю, если Вы не уверены в своих силах, то будьте просто наблюдателем.
Жду отклика!
Не в сети
У меня тонна свободного времени до +_ февраля... в 2 лица оч даже успеем.
Оч. хотелось бы увидеть фронтэндщика, для проектирования шаблонов и написания js (vue/jquery)
Не в сети
Не в сети
Потом можно подумать и написать простеньки Project Management - то чего в народе не хватает...
Например многоуровневое ToDo
Или сразу замахнуться на Agile/Scrum.
Присоединяйтесь!
Не в сети
- — Система прав Forum < Group <<< Permissions
Не нужно разделение на форум > подфорум > темы, отдельная система ЛС. Более гибкая структура — когда есть сущности и сущность это и форум, и тема, и пост. Это даёт:
В Habravel подобная схема, любой коммент это тот же большой пост, только с выставленным parent, а не null. Он может иметь даже голосования, создание которых в интерфейсе выведено только для корневых статей.
Не в сети
У меня счас куча времени образовалась и думаю сделать полезный пакаж. Как станет релизом - переведу в абсолютный паблик и откажусь от него в пользу допиливания силами комьюнити. Как у совы стало. Я вроде не глубокий хоббист, но некоторые вещи - нужны в жизни.
С точки зрения "самописный не буду ставить". А другие бывают? Не вдаваясь в палемику - все проекты и "самописные" и "не самописные" - суть одно и то же. Внутренности разные, а оболочка одна - "для себя сделать так как надо по работе", "если бабла перепадёт - гуд", "если слава будет - шоколад с икрой и без хлеба".
С точки зрения советов прочёл, учту, но сделаю по своему - охватывающее максимальный рынок хотелок. Хочешь используешь функционал, нет - на нет и суда нет.
Про сущности, открою секрет
Частично соглашусь, на форуме есть две сущности - это пост и пользователь. Всё остальное - категории, обвязанные правами доступа ;-) пользователя.
Не в сети
- С точки зрения «самописный не буду ставить». А другие бывают? Не вдаваясь в палемику — все проекты и «самописные» и «не самописные» — суть одно и то же. Внутренности разные, а оболочка одна — «для себя сделать так как надо по работе», «если бабла перепадёт — гуд», «если слава будет — шоколад с икрой и без хлеба».
Я согласен, уже после того как отправил сообщение подумал, что «самописный» зря написал, только добавил путаницу.
Главная проблема, почему не хочу ставить ничего нового (написанное кем-то из нас или со стороны) — не уверен в качестве кода. FluxBB ужасный внутри, факт, но я его использовал не один раз и в общем-то испытал временем. Другие варианты (IPB, phpBB) отталкивают своей монструозностью, причём до FluxBB я пользовался именно phpBB.
Твой код я не видел, сказать ничего не могу.
- С точки зрения советов прочёл, учту, но сделаю по своему — охватывающее максимальный рынок хотелок. Хочешь используешь функционал, нет — на нет и суда нет.
Я писал не про функционал, а про структуру. «Пост и пользователь» — хорошо, на этом можно реализовать любые «хотелки». Главное не плодить сущностей на каждый случай.
Перенести тему в Laravel 5? Там больше людей.
Да, ещё насчёт фронтенда. Если действительно будет получаться что-то стоящее, то с фронтендом и дизайном я помогу, после НГ у меня будет кое-какое время. Только без Vua, просто jQuery (либо на моём движке).
Не в сети
Когда запощу первые каммиты, посмотришь и решишь. Я по большей степени для себя делаю (для себя-любимого самое лучшее), А там видно будет. Захочешь - окей, отлично. Нет, да Бог с тобой!
Я тебе в мыло писал уже - посмотри админку IPB у меня. Забудешь вообще о моддинге, ибо если чего не хватает внутри готового пакета - уже есть в маркете производителя. Там, понимаешь сообщество из нескольких сотен тысяч девелоперов клепают дополнения, шкурки итп...
Переноси тему.
По фронту. Я пока делаю с перезагрузкой страниц.
Посмотри сюда https://github.com/h-zone/lib-appjs демка тут https://showcase.h-zone.ru/lib-appjs/
Совмещая мой код жс и лару, я полностью вынес UI алертов, диалогов и Ajax конструктор запросов в отдельный _управляемый_ пакет.
По сути Ajax у меня выглядит вот так
var requestPresetGet = {
method: 'GET',
preloader: false,
headers : {
'X-CSRF-TOKEN': $( 'meta[name="csrf-token"]' ).attr( 'content' )
}
},
requestPresetPost = {
method: 'POST',
preloader: false,
headers : {
'X-CSRF-TOKEN': $( 'meta[name="csrf-token"]' ).attr( 'content' )
}
};
$(function ()
{
App.alert = new App.Alert();
App.requestGet = new App.Request( requestPresetGet ),
App.requestPost = new App.Request( requestPresetPost ),
});
Request перехватывает 3 уровня ошибок: сервера, запроса, и приложения и выплёвывает всё в App.alert
var callback = function( success, result )
{
if ( success )
{
// работаем в result, который структурирован в 2 вариантах
// 1. { success: true, data: { /*результат работы*/ } }
// 2. { success: true, html: '/*html string*/' }
}
},
sendData = { param: 1, another: 'value' }
;
App.requestPost.send( sendData, callback, 'URL' );
Согласись просто до нельзя, по сути работая с однострочным аякс-вызовом
Посмотришь на код заодно
а если надо сделать запрос аяксом без обработки ответа, то вообще полстроки
App.requestGet.send( {}, null, 'URL/vote/например' );
Изменено hzone (18.11.2016 12:32:22)
Не в сети
к чему этоя...
так вот...
как будет готово с перезагрузкой страниц, можно будет продублировать все респонзы от аякса и перегружать контент, практически основываясь на конфиге в ларе, так или эдак работать
Не в сети
По сущностям мы оба были не правы, Proger.
Уже сейчас вырисовывается следующий комплекс:
1. Пользователь
2. Форум
3. Группа
при этом группа несёт следующие свойства:
- View (войти в форум и увидеть список тем)
- Create (создавать темы/комменты)
- Edit (получить страницу редактирования темы/коммента)
- Save (механизм сохранения темы/коммента)
- Delete (удаление своих тем/комментов)
- Complaint (жалобы на темы/комменты)
- Like (лайки тем/комментов)
4. Тема (с привязкой к форуму)
5. Пост (с привязкой к теме)
6. Теги темы (с облаком тегов на индексе)
7. Жалобы (сохраняем IP и/или user_id чтобы не дублировали)
8. Лайки (сохраняем IP и/или user_id чтобы не спамили)
То есть обвязка Пользователь/Форум/Группа/Пост будет обрастать сервисными сущностями и механизмами управления контентом.
И я до сих пор в раздумьях между Web 2.0 и Админкой для форума.
Вот так. Хотелось простое и плоское решение, а будет комплексное и управляемое.
Изменено hzone (18.11.2016 13:53:56)
Не в сети
9. Рейтинги на основе активности пользователей в отношении тем. Просмотры, Повторные просмотры, Лайки, Входы извне сайта, Шаринг вовне
Изменено hzone (18.11.2016 13:54:02)
Не в сети
и скажу почему сущностей много и они делённые - потому что нагрузка на бд.
попробуй ка дёрнуть вот такую конструкцию при следующих условиях
$Companies = Commpaines::where('active', '=' true)->with('city')->get();
Где компаний тотальнго в таблице 4000
а городов тотально в таблице 2 700 000.
= Встанет по нехватке памяти. Я на этой почве говорил с производителями Совы. Да, признали проблему в сове. И всё. Ничего.
Так вот. Тут как раз деление информации на данные и оперирование данными для построения вариативной информации.
Почти нормализация данных.
Изменено hzone (18.11.2016 14:00:45)
Не в сети
hzone, хочешь написать что-то полезное, пиши что-то в духе форума на laracasts.com без оглядки на IPB, PHPBB и прочие. Современный форум должен быть простым и легким, с активным использованием AJAX.
Не в сети
hzone, хочешь написать что-то полезное, пиши что-то в духе форума на laracasts.com без оглядки на IPB, PHPBB и прочие. Современный форум должен быть простым и легким, с активным использованием AJAX.
Посмотрим.
Я никогда не оглядываюсь "как у других" и всем мозги на эту тему промываю.
Ибо получается именно "как у других". Не люблю клонировать ни морду ни жопу.
Сейчас пишу от теста (в одно лицо и тесты не нужны ) - есть задача показать список форумов - пишем, топиков форума - пишем.
Понемногу двигаюсь.
Думаю, как смогу отобразить полную цепочку от списка форумов до просмотра темы с постами, так и закомичу.
Вот если б кто взялся интегрировать в админку овла или вояжера, то цены б небыло человеку (целовать не буду!)... Ну или писать собственный интерфейс.
Не в сети
- По сущностям мы оба были не правы, Proger.
Зачем разделение-то? В чём польза?
Говорить о нагрузке на БД в данном ключе бесполезно, т.к., во-первых, все форумы интернета на твоем движке может никогда не наберут больше пары тысяч постов, а, во-вторых, решить проблему с БД легко более мощным железом. Это тебе не ORDER BY RAND, где один запрос может вешать систему, здесь вся система одинаково нагруженна.
Зато очень много теряется в гибкости. Мало чем отличается от «yet another forum», ещё один нонейм.
- И я до сих пор в раздумьях между Web 2.0 и Админкой для форума.
«Веб 2.0» делается просто: вначале суровый no-JS сайт, дальше вытаскивается наружу API и к нему вешается jQuery. В итоге получаешь и SEO-friendly ресурс, и вебдванольный. Из-за четкого разделения по областям работать легче, т.к. не надо оглядываться на фронтенд, он просто довесок.
Не в сети
пользу я описал - в разделении нагрузки на таблицы бд
Не в сети
Не в сети
Глупо начинать с оптимизации без предварительной нормализации.
Почему? Потому что оптимизированные модели (таблицы/данные) рефакторить катастрофически сложно.
Однако нормализованные данные легко подвергаются модифицированию без цепной реации развала всей бизнес-логики.
Не в сети
Ну, у тебя возможность спроектировать всю систему сразу, так как в создании форума нет ничего нового, R&D не нужно, риски минимальны. При таком раскладе что-либо изменять потребуется нескоро, если вообще.
Для форума, как и для CMS я не вижу проблем в использовании сущностей, запросы не будут сильно сложнее.
- 6. Теги темы (с облаком тегов на индексе)
Как в твоей схеме давать теги постам? Или группам?
Как добавлять рейтинг и темам, и отдельным постам (аналог SO)?
Как работают права? Отдельные категории для форумов, для постов, для галереи?
Все эти вопросы можно решить добавлением поля «тип», в дополнение к основному ID. Но тогда придётся прощаться с проверкой данных по FK, могут быть несоответствия (тип изменили, ID нет), работать сложнее, когда ID это не весь идентификатор.
Не в сети
Теги: многое ко многому. Возможно отдельным пакетом. Пока не до него.
Как давать - интересный вопрос Из разряда... Как пользоваться Экселем.
Рейтинг: я написал же, - расчитывается на основе активности пользователей.
Оба варианта реализовывать буду, на базе выбора от конфига.
1. в реальном времени пересчёт и сохранение
2. по крону в случае если нагрузка уже высокая.
Права я тоже отписал. Уточню:
По умолчанию всё запрещено.
Права несёт Пользователь посредством присвоения форумной Группы.
Права проверяются в Middleware на конкретное действие от роута (возможно пересмотрю).
И повторяю, что сейчас и возможно навсегда, - данные будут разложены по полочкам, нормализованы, и чем больше полочек будет, тем меньше вероятность получить locked table при чтении на высоких нагрузках.
Хочешь красивые таблицы - помогай, собирай View таблиц. Но сам пойми View только для чтения будет на 99.99%.
Предлагаю пока закрыть палемическую часть вопроса.
Сначала надо релизовать все простые виды и алгоритмы, и чтобы работало, всех устраивая.
Потом работа разделится на 2 части
а) админка
б) расширение функционала
в) фронтэнд
^ и это всё ближайшие 2 месяца, до конца января...
Не в сети
- чем больше полочек будет, тем меньше вероятность получить locked table при чтении на высоких нагрузках.
Теоретически так, а фактически чтение одной таблицы обычно тянет чтения связанных таблиц, так что либо дублирование данных в каждую таблицу (но ты же хочешь нормализации), либо разницы с одной таблицей никакой.
- Рейтинг: я написал же, — расчитывается на основе активности пользователей.
Я про рейтинг отдельных постов, а не пользователя. Как на SO: у вопроса есть рейтинг, у поста (как у нас, стрелки снизу), у пользователя. Аналогично у Хабра, три разных рейтинга.
- Права проверяются в Middleware на конкретное действие от роута (возможно пересмотрю).
Разные маршруты могут требовать одинаковых прав, а кроме того маршруты могут переименовываться.
- Предлагаю пока закрыть палемическую часть вопроса.
«Пока» закрыть этот вопрос нельзя, его можно закрыть только совсем, потому что настолько кардинально структура в дальнейшем меняться не будет.
Впрочем, если ты уже всё решил, то это дело твоё. Если даже я и буду помогать с фронтендом, то структура БД меня не будет волновать. Тебе сейчас главное сделать голый бекенд, без клиентских скриптов.
Не в сети
Я счас наоборот делаю - фронт. Фронт есть "тест", от которого проектируется бд.
Пока только списки вывести хочу, до роуты построить. Дальше буду посмотреть ))
Не в сети
Нужен совет. Комплексный. Без палемики. Попробую все варианты и выбиру наиболее масштабируемый.
Вопрос к изучению.
1. Оптимально вычислять и хранить (не) прочитанные темы.
2. Как будем считать просмотр темы? Просмотр темы влияет на рейтинг (от активности пользователей).
- Считать ли гостя? Засчитывать ли повторы от гостей?
- Считать ли поисковики? Если нет, то надо писать механизм определения поисковика.
- Предполагаю, что просмотр темы зарегистрированного пользовател считать с повторами.
Жду откликов. Обсуждать плюсы и минусы не будем, хорошо? Это отнимет время.
Изменено hzone (21.11.2016 12:59:08)
Не в сети
Условие: Для гостя все темы "прочитанны" либо все темы "новые".
Не в сети
Есть что показать.
https://github.com/h-zone/laravel-forums-engine
Там же инструкция по установке.
Изменено hzone (21.11.2016 21:55:01)
Не в сети