Search
Write a publication
Pull to refresh
0
0
Eugene Chipachenko @echipachenko

User

Send message
В идеале поддержка не нужна, ибо и так всё работает
В этом плане да, балансер и реббелион дали немного другой подход, немного другую архитектуру в емуляторах ла2. Но это было во время хроник С4-С5… После того жизнь ла2 и эмуляторов достаточно долго продолжалась. Даже сейчас продолжается))) но, конечно, онлайн уже далеко не тот. Игроки выросли, а новое поколение игроков — перешли на мобильные игры и (или) другие ММО.
Тут возникло много споров по поводу того, нормально собирается или нет.
Так вот.
Hello-world проект на Spring Boot скачан со спрингового же репозитория с Java 9 не работает.
На 8-й всё шикарно. =)
Чую скоро будет боль. Много боли.
Потому что я и есть ALF =)
Я с помощью Lineage 2 в 17 лет за пол года заработал пол миллиона рублей. И благодаря ней же я выучил java и сейчас я уже несколько лет на позиции Senior Java Develop ;)
Так что да, игры могут дать огромный толчок =)
Очень часто неопытные программиста при работе с dao/repository делают repo.findAll().stream().sorted(..).findFirst(). То есть выгребают с БД всё, сортируют, и берут первый элемент… Что есть очень плохо, так как: во первых это можно сделать запросом к БД, а во вторых это может привести к ООМ. Советую всем проверять такие места :)
А, всё, понял. речь идёт непосредственно о SMTP протоколе… Тем ни менее в нём все равно есть авторизация. Это реально больше выглядит как баг…
П. С. Перед тем как минусовать, лучше объяснить, почему вы ставите тот же минус.
А почему бы не брать From из текущей сессии, из текущего авторизованного пользователя, и вообще не обрабатывать его через хидеры? Ибо он попросту не нужен будет? Или я что-то не понял?..
Я не создаю, потому что меня более чем устраивают другие библиотеки и фреймворки. Возможно, если будет время, я напишу пару хороших уроков, как можно писать веб приложения без спринга, и попытаюсь показать все плюсы и минусы.
Тоже самое что и в предыдущем коменте. Спринг давно мог бы это делать сам, в зависимости от типа возврвщаемого значения в контроллере.
Спасибо, я это и так знаю. И говорю о том, что спринг мог бы это делать сам. Ровно так же как он строит и другие запросы по имени метода в интерфейсе репорепозитория.
Я не хочу больше с вами холиварить. В этом нету никакого смысла. Пройдет время, и вы наберетесь опыта, и поймете о чем пишет и автор, и я, и много других людей. Как видите, я не одинок в своем взгляде на спринг.
Смотрите, за время нашей переписки, здесь было уже упомянуто 3 способа. И не стоит рассуждать о моих знаниях спринга исходя из переписки. 3 способа, какой из них лучше? И речь вообще не идет о том, статик файлы это или нет, вполне возможно что они генерируются на лету и отдаются только авторизированному юзеру и доступны в течении некоторого небольшого времени. А теперь представьте что у вас таких мест много. И у каждого, свой вариант. Как вы потом будете сапортить такой код? И опять таки, это самые безобидные примеры. Ну, повповторюсь, я не призываю кого либо отказываться от спринга и не говорю что он говно. Но некоторые вещи в нем плохие. И есть лучшая альтернатива.
А как у вас с уровнями изоляции транзакций?

Я надеюсь вы понимаете, что изоляцию транзакций и сами транзакции управляются исключительно базой данных. А команды для этого посылает jdbc драйвер. Спринг и хибернейт абсолютно ничего нового не делают с транзакциями, всё сводится в конце к jdbc драйверу и методам setTransactionIsolation()/setAutoCommit(false)/commit()/rollback() из java.sql.Connection.
Ну вот вы и вернулись к тому, о чем писал я.
В некотором смысле, спринг обязывает вас говнокодить. Код должен содержать бизнес логику, а не фабрики, интерфейсы, конверторы, дто и т д.

Почему, когда я подключаю такой огромный и мощний фрейморк, спринг, я не могу просто написать
@GetMapping("/")
public File get() {
    return new File(file);
}

У спринга есть все возможности для этого, и эту элементарную вещь они могли добавить лет так 7-8 назад. Почему спринг понимает, что POJO можно отдать в Json/XML, String — загрузить шаблон, а файл вызывает просто ужас у спринга? Я не хочу писать кучу конфигов, утилитарных методов, адаптеров и прочей чепухи, используя такой огромный фреймворк. Игры для андроида занимают 50 мегабайт, там куча 3д объектов, миллионы формул и вычислений, а я своём веб-аппе тяну спринг фреймворк весом в 50 мегабайт, который из коробки не понимает что если контроллер возвращает файл — то надо вернуть файл! И это я навел только 2 маленьких и безобидных примера.
Вы хотите сказать это краткий и лаконичный код?))))
Вот вам пример из Play-a

public Response getFile(String path){
File file = ....
return ok(file)
}
Да, я знаю о этом. Но это уже выглядит криво, не правда ли? Если есть такой крутой механизм, в чем была сложность добавить что-то вроде findAllWithLimitOffset(int limit, int offset)? И таких кейсов достаточно много.
Вот кстати ещё один из самых смешных кейсов. Спринг Controller не умеет возвращать файлы! Что бы вернуть файл с контроллера надо заинжектить HttpServletResponse и пробрасывать через оутпут-стрим и хидеры прокидывать. Неужели спринг со своей гибкостью не мог сделать поддержку контроллера с возвращаемым значением File? Или какой-то более компактный и лаконичный способ?
Если у вас есть реальная потребность в DI — есть много других библиотек, которые нормально справляются с этой задачей. Тот же Google Guice.
Уж лучше я в коде проверю кондишн и обращусь к нужной реализации, чем буду цеплять для этого спринг. Тем более что кондишены для получения реализации в рантайме там насколько ужасно и не очевидно сделаны, что приходится каждому новому разработчику объяснять как оно работает. А если это одноразовое изменение — это вообще не проблема. И ничего не надо переписывать, максимум — пару строчек кода. Да и за всё время таких случаев почти не было.
Опять же, ребят, я не пытаюсь вас убедить в том, что спринг полное говно и его нужно избегать. Нет. Я просто хочу донести до вас то, что жизнь без спринга существует, и иногда это даже намного лучше чем с ним. Конечно, всё очень индивидуально. Но! Просто перед тем как начинить новый проект, надо задать себе 3 вопроса:
1. Что будет делать у меня на проекте спринг.
2. Все ли сложные случаи он покроет, или надо будет писать костыли для него же.
3. Какая есть альтернатива для решения этих задач.
Посмотреть на эти альтернативы, возможно они намного лучше подойдут вам чем тот-же спринг.
1

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity