1. Сервер я представляю как бэкенд разработку.Это она и есть в чистом виде.
Метаюсь между JS (node.js), GO, и Java.Странные метания, языки не сказать чтобы были сопоставимы. ИМХО:
имею поверхностные знания по написанию кода на C, C++,Тогда можно еще глянуть в сторону RUST, но опять же, оно молодое и дороговатое.
3. Стоит ли разбивать подобные проекты на микросервисы? То есть использовать брокер сообщений, который будет раскидывать сообщения от клиентов разным сервисам.Зависит, для микросервисов архитектура создает еще один дополнительный уровень сложности, а при предполагаемом небольшом (до сотен тысяч) клиентов особой нагрузки вроде быть не должно. Проще построить монолит и, если возникает нагрузка на определенный внутренний функционал, выносить его в сервис, там есть нюансы и порог с которого все это имеет смысл, так что начинать достаточно типовой проект стоит с монолита в любом случае.
в куках храню токен и вот задался я таким вопросом, а как запретить использовать этот токен на других устройствах? То есть, что я имею ввиду. Вот есть скажем 2 пк, на одном Вы авторизовались, открыли cookies, скопировали токен и на другом пк его вставили и таким образом вы зашли в аккаунт без авторизации.В чем проблема? Так работает вся система куки-зависимых данных (например сессии). Так как куки является приватной информацией в рамках сессии, данные в ней так же считаются приватными и по умолчанию недоступными третьим лицам. По этому все страдания на тему "ой, можно же что-то вытащить и вставить это не безопасно" и прочие страдания юных специалистов по безопасности можно смело взять и выкинуть в психологическую мусорку.
В этом куске кода критическая переменная это tokens. При нажатии на кнопку start со стороны клиента у пользователя отнимается один токен и кол-во общих токенов отправляется в бдНе надо тупить. Раз токен это критичные данные, то никаких "со стороны клиента" быть не должно. Нажат старт - на сервер отправилось "старт пошел", из данных в бд вычитается/прибавляется значение, обратно отсылается что в итоге получилось. С остальным так же - на сервер отправляется событие, а сервер считает чего куда прибавлять и возвращает результат на фронт.
по итогу генерируется фото футболки с теми параметрами, которые он выбрал?Называется "влажные фантазии". Обычно на маркетплейсах за подобный функционал отвечает фильтрация, а не меню. Никакой генерации обычно не используется, просто фото всех доступных вариантов есть в виде картинок, а параметры перечислены в бд.
Проблема в том, что времени на разработку сайта с нуля нет, поэтому нужны шаблоны или готовые решения, которые я мог бы в дальнейшем переделать под свои (учебные) нужды.Готовые решения сложнее модифицировать под свои нужды, нежели писать что-то с нуля. Кроме того, писать "с нуля" сегодня практически исчезающая практика. Все пользуются фреймворками, функционал которых "из коробки" уже достаточно широк, а за счет модулей предоставляет почти любой функционал.
Мне сказали, что можно использовать готовые отечественные (или другие, но с открытым кодом) CMS- или CRM-решения, но опыта в этой сфере у меня почти нет, поэтому в том, что выбирать и как подключать, возникли проблемы.Самые примитивные в плане настройки - 1С битрикс ("отечественная") и Вордпресс, если уж с их установкой и настройкой будут проблемы, то лучше сразу переориентироваться в сторону работы кайлом и кувалдой...
1. Реально ли это сделать на HTML/CSS и JS?Без бэкенда не получится организовать общий сбор и обработку данных, так что если бэкенд делать на нодеЖС - то да, если же речь чисто о фронтенде - нет.
2. Можно ли обойтись без WP?Здесь он вам не понадобится
3. Куда будут сохраняться данные?Зависит. Если общая статистика не нужна, то на такой примитив вполне хватит просто записи в редис/мемкеш, ну или в самом банальном случае в файл. В противном случае нужна бд. Данные для вывода на экран просто вытаскиваются по крону, скажем, каждые 5-10 секунд.
4. Можно ли сделать что бы у оператора была своя статистика своего рабочего места?Можно, но для этого уже нужны минимальные заморочки с аккаунтами и тут уже без базы будет как минимум сложно и странно.
5. Есть ли уже готовые решения?Если и есть, то они вряд ли где-то выложены в публичный доступ, слишком специфичная задача. Не сложная, но не сказать чтобы распространенная.
1. Я так понимаю что у каждого оператора будет своя страница, как то же программа должна понимать что эти данные пришли от пользователя 1.Да, это желательно, но не обязательно, если статистика не особо нужна.
или можно просто с эти не заморачиваться и не делать отдельные учетки. но тогда если все одновременно нажмут отправить данные что в итоге отобразиться?Во первых не бывает "одновременно", все равно будут задержки на клик, на сеть, на реакцию браузера и т.д., мало вероятно но более реально что на сервер придут данные одновременно, но для этого существует очередь обработки. Если запись будет вестись в бд, то все запишется по порядку обработки. Впрочем, с другими хранилищами тоже проблем не должно быть.
У нас есть дизайн сайта в фигме. Это корпоративный сайт.Так все таки сайт или дизайн в фигме?
Помимо самого сайта, у нас будет также самописная cms — для того, чтобы добавлять статьи, проекты и редактировать некоторый контент на сайте.А кто будет самописать? И почему готовые системы не подходят?
Дизайн cms тоже готов.Серьезный подход.
сделали даже визуализацию БД через mind map.Оу, у вас нет разработчика, но зато нашелся датабэйс архитект, прикольно...
Соответственно, у нас почти весь контент на сайте создается через cms (под контентом мы имеем в виду фотографии/обложки кейсов и статей).Из текста создается впечатление что ваш проект уже что-то делает, кроме как рисует фигмовые формочки... Это вводит в заблуждение.
1. С чего нам начинать разработку сайта, если большая часть контента создается через cms? С бэкенда или фронтенда?Хинт: 99% сайтов создают практически весь контент из админки. Любой готовый цмс движок (вордпресс, октобер, да даже друпал) скорее всего полностью покроет ваши требования, кроме разве что дизайна админки (я хз можно ли там что-то кастомизировать малой кровью).
2. Какой стек технологий лучше использовать под нашу ситуацию для фронтенда?Встречный вопрос - какие требования кроме хтмл и пары сладеров к форнтенду? Если особо никаких - подойдет все что отображает хтмл, то есть любой цмс движок.
3. Какой стек технологий лучше использовать под нашу ситуацию для бэкенда?Ситуация конечно сложная (наверное, хотя вы ее не описали), но не безнадежная. Ответ тот же - подойдет любой готовый продукт из известных цмс.
class Timer {
static $start;
static $end;
static $marks = [];
static $formats = [1=>''];
static function init(){
if(empty(self::$start)) self::$start = microtime(true);
}
static function setMark($markName = ''){
$time = microtime(true);
if($markName == '')$markName = $time;
$data['name'] = $markName;
$data['time'] = $time;
$res['time'] = $time;
if(count(self::$marks) > 1)$res['diff'] = $time - self::$marks[count(self::$marks)-2]['time'];
else $res['diff'] = 0;
$data['diff'] = $res['diff'];
self::$marks[] = $data;
return $res;
}
static function timeFormat($number,$format = ''){
if(empty($format)) $format = 3;
return number_format ($number,$format,'.','');
}
static function report(){
self::$end = microtime(true);
self::$marks['start'] = self::$start;
self::$marks['end'] = self::$end;
self::$marks['all_time'] = self::$end - self::$start;
if(!empty(self::$marks)) return self::$marks;
}
}
\Timer::init()
//some code block 1
\Timer::setMark('after block 1');
//some code block 2
\Timer::setMark('after block 2');
...
//some code block n
\Timer::setMark('after block n');
//near end of code
\Timer::setMark('end');
var_dump(\Timer::report());
exit;
Что нужно сделать обязательно кроме тестов и как тогда лучше спрашивать с разработчиков, если они предлагают размытые предложения? Хочется понять в какую сторону копатьБить палкой не вариант? Тогда берите других, эти испортились. Если разработчик не знает как выявить узкие места кода - нахрена он нужен? Код написать сегодня любой чат может... Ну, на крайняк дайте им вышеприведенный вариант решения проблемы...
достаточно 2000-4000 человек, заходящих в течение 20 минут на сайтэто равномерные 3-4 рпс, ну или пусть в пике 50 рпс, должно держать даже на несложной конфигурации... Копайте код.
• регистрация/авторизация пользователей;практически все что перечислено в качестве инструментов - хватает или избыточно.
• добавление/удаление записей;
• формирование отчета в формате docx.
1) Нужна ли асинхронность, исходя из функций приложения?Нет, тем более для подхода через REST API.
2) Что лучше выбрать из перечисленного стека, если необходимо представить приложение в короткие сроки?Как самый простой вариант смотрится лара + 4 готовых модуля, 2 из которых вроде даже идут из коробки, остальные добиваются 1 командой композер инсталл %пакетнейм%.
3) Исходя из функций приложения, это будет SPA (одностраничное приложение) или PWA (многостраничное приложение)?Это не противопоставление, это вообще не взаимосопоставимые технологии. PWA может быть SPA, может не быть... PWA это вообще не про "многостраничность".
Важно, что бы это была статистика за день/месяц/год/всё время.Первое что нужно - определитесь с минимальной статистической единицей, если это день - значит храните сумму за день, табличка соответственно будет что-то типа: