alexq2, Честно сказать, не знаю, зачем я упомянул закрытость исходного кода :) У меня на втором рабочем ноуте макось и у меня с этим нет никаких проблем. Наверно потому, что майки сильно перегнули со всякой телеметрией и прочими нехорошими вещами на 10-ке, которые они бессовестно собирают фактически без ведома юзера. Остаётся только гадать, сколько там может быть бэкдоров (хотя я подвержен паранойе в гораздо меньшей степени)
По поводу сетевого стэка - из того, что помню и с чем столкнулся лично я. SO_REUSEADDR https://docs.microsoft.com/en-us/windows/desktop/W...
Если пошерстить, найдутся ещё несоответствия и доп. ограничения со стороны винды.
Алексей Николаев, Я не могу сказать, что я её прям любил - пока оно работало, ну норм. Я с винды свалил на 7-ой версии. Я видел 8-ую и 10-ку, но у меня на компе (ах) их ни разу не было)) Может когда-нибудь установлю посмотреть, а так никакого интереса вообще.
Некоторые языки программирования на винде работают просто ужасно или не работают впринципе.
И да, когда я нормально изучил линукс, мне перестало житься нормально в винде - я полностью перешёл на линукс на своём ноутбуке (с которого сейчас пишу сей ответ). Как конструкт винда довольно убогое и неоднородное создание. Кроме этого, оно полностью проприетарное с закрытым исходним кодом и некастомизируемое. Есть нелепости в сетевом стеке и т.д и т.п. Если ковырнуть, вылезет вся уродливость винды как машины для разработчика.
Первое, что приходит на ум - Play Framework ( https://www.playframework.com/ )
Но он лучше дружит со Scala, а не с Java.
Получаем stateless web tier, обёрнутый во Future монаду для того, чтобы получить non-blocking IO, и всё это скармливается серверу Netty.
Для каких-то дополнительных реактивных примитивов есть Rx, RxScala в данном случае.
В сам фреймворк уже впилена Akka.
В рельсах, а точнее, в ActiveRecord, поле с именем "type" является зарезервированным и зарезервированно оно для такой вещи, как Single Table Inheritance (STI).
Эта штука даёт возможность для работы дочерних классов (моделей) в пределах одной БД таблицы.
В Вашем случае, вы пробуете сохранить type="123", но такой модели (модель с таким именем), которая бы унаследовалсь от модели "project" у Вас нет. Вот он и ругается.
Вполне возможно, Вам эта фича не нужна, и тогда надо будет просто переименовать поле, например в "project_type".
Смысл Event Sourcing-га вообще говоря не в эвентах как таковых, а в том, что в базу данных записываются дельты изменений некоторой сущности. Т.е на уровне базы данных отсутствуют операции удаления (D) и обновления (U). Есть только запись и чтение (CR). Если склероз не изменяет, это одна из частей DDD.
Что изучить? Сетевой стек и всё около-сетевое - как линукс работает с сетью.
netstat, ping, ssh, ufw, ifconfig и т.д
Для бэкенд разработчика это важно.
Предположу, что на чистом сиквеле это будет примерно как-то так:
SELECT SUM(total_price) AS sum, created_at FROM orders WHERE store_id=... GROUP BY DATE(created_at)
Могу ошибаться с какими-то конкретными деталями, но идея примерно такая ))
Богдан, К сожалению у меня нет особого опыта работы с JWT. Но поинт в любом случае не в этом, а в том, что сам токен, внезависимости от его происхождения, сохраняется на клиенте не через куку или сессию.
Богдан, API должен быть stateless, поэтому сохранять куку или сессию - это не очень хорошее решение. Их не просто так отключают. Генерируйте токен и сохраняйте на клиенте.
Я правильно понимаю, и работников и помощников вы моделируете как работников (Worker) и храните в одной и той же таблице? Как у вас модель данных организована?
Есть один прикол с autoloading - я сам на эти грабли напал. Если внутри треда начнётся процесс автолоадинга чего-либо, то это всё дело может (не обязательно, но может) повиснуть навсегда )) Решение: require того, что может быть нужно внутри треда. Проблема более актуальна для development окружения, потому что в проде работает eager loading, но всё равно. Довольно неочевидная вещь, на дебаггинг и гуглинг которой я потратил кучу времени.
П.С Как по мне так лучше юзать сервис фоновых задач (activejob)