Задать вопрос
  • Как вносить изменения в шаблон страницы без перезагрузки томкат?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Тут говорят, что можно включить hot reload для Thymeleaf. Это позволит автоматически обновлять страницу при изменении шаблона без необходимости перезапуска сервера. Для этого нужно добавить следующие строки в файл application.properties:

    spring.thymeleaf.cache=false
    spring.thymeleaf.enabled=true

    После этого, при изменении шаблона, он должен автоматически перезагружаться и отображаться на странице.
    Ответ написан
    Комментировать
  • Можно ли настроить сеть от одного абонента к другому посредством wi fi направленных антенн?

    @TheBigBear
    СтарОдмины мы
    Если прямая видимость - без проблем можно до 500 Мбит до 11 км вытянуть используя диапазон 5 ГГц и спецоборудование, например Микротик. Всё утыкается в бюджет
    Вопрос другой - а зачем?
    Что мешает на роутере правильно QoS настроить? Тогда ничего лагать не будет - роутер сам будет приоритеты трафика разруливать
    На компе, что торренты качает - с самом торренте ограничение на 50 Мбит поставь - хватит выше крыши
    По секрету скажу, FullHD трансляция - это около 5 Мбит
    4K При частоте 24 – 30 кадров в секунду – порядка 35 – 45 Мб/с.
    4K При частоте 40 – 60 кадров, битрейт составляет 58 – 65 Мб/с.
    У меня на работе полсотни человек сидит на 100Мбитном канале. Если верить Zabbix - средняя нагрузка Интернет канала - 22 Мбит в рабочее время с редкими скачками
    Ответ написан
    4 комментария
  • В чем минусы событийно ориентированного подхода?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ну да, Вы перепутали сообщение и событие. Вызов метода объекта в ООП можно интерпретировать как сообщение этому объекту из конкретного места и контекста в выполняющемся коде.
    Это не то же самое, что события. Нет никакой шины или очереди событий.
    Для событийного программирования существуют Pub\Sub механизмы, в рамках которых есть паблишеры, которые формируют событие в любом месте и контексте кодовой базы, а есть подписчики, которые реагируют на конкретные типы событий, обрабатывают и передают их дальше или терминируют.
    Этот подход иногда полезен, но часто он рубит распыляет логику по куче обработчиков. Такие системы очень сложно отлаживать, трудно тестировать, практически невозможно доказывать корректность программы для любой допустимой входной последовательности событий. Антипаттерн это потому, что после некоторого порога сложности начинает накапливаться много формальных событий и неочевидных состояний системы. Эта мешанина трудно воспринимается и анализируется человеком
    Ответ написан
    7 комментариев
  • В чем минусы событийно ориентированного подхода?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не претендую на правду. Просто несколько мыслей.

    В чем минусы событийно ориентированного подхода?
    Насколько я понимаю, Алан Кей (тот кто придумал термин Объекто-ориентированный) старался придерживаться именно этого подхода. т.е. кто-то отправляет сообщение, а объекты в системе на него реагируют, каждый по-своему.
    По сути у нас есть message bus, в который добавляется сообщение, а объекты системы слушают этот самый message bus.

    Мысль первая. Наследие.

    Когда мы говорим о наследии Алана Кея - надо просто глянуть что он создал практически.
    А создал он язык Smalltalk. Поэтому логично изучать минусы событийного подхода на
    примере софта который написан с использованием Smalltalk. Кто из коллег в топике
    знает примеры такого софта? Я - к сожалению не знаю.

    По ссылкам википедии https://en.wikipedia.org/wiki/Smalltalk можно видеть в категории
    influenced мы просто видим что Smalltalk
    влиял на Java, Go, Swift. Но я здесь не согласен потому что мы не можем измерить глубину
    этого влияния. Это все равно что сказать что Сталин влиял на Черчилля. Как влиял? На 10%?
    Или более чем половину? Сложно. Насчет Java я тут сказал-бы что сомнительно. ООП? Может быть.
    Акторы? Нет. В Java изначально нет акторов. Они существуют позже в виде фреймворков но
    языком не поддерживаются.

    По поводу MessageBus. Если брать технологию акторов которая используется в Erlang.
    то там скорее не message bus а очереди сообщений между потоками-акторами.
    Если про Smalltalk сказать нечего то про Erlang я могу сказать что на нем написаны
    две единицы софта такие как RabbitMq (очень надежная и неубиваемая система MQ).
    Может не супер-производительная. И CouchDb которая выделяется своей
    устойчивостью ко всяким сетевым сбоям. Реклама говорит что Кауч работает
    практически при мигающей сети, при обрывах и т.п. лучше чем аналогичый TCP-IP совт.

    Мысль вторая. Что Кей говорил про ООП.

    У меня есть цитатник. Я туда собираю некоторые слова на лытни. И иногда слова Кнута, Дейкстры
    и прочих it-академиков. Вот из цитатника Кея:

    I made up the term "object-oriented," and I can tell you
    I did not have C++ in mind.

    Что в этой прямой речи можно понять. Что господин Кей открещивается от современного ООП.
    А фактически все современное ООП зеркалит то что есть в С++. Здесь вы можете со мной спорить
    о первенстве (я не буду спорить я не знаю). Но абсолютно очевиден факт что мир пошел по пути
    жесткой синхронщины в 80х. И пока все еще идет. Будут ли примитивные типы int/double обьектами
    не суть важно. Тут важно что Кей постулирует среду в которой двигаются сообщения. Как сеть в миниатюре.
    А классическое ООП С++ - лишает нас этой среды и заменяет ее вызовом метода. Никакого сообщения
    в С++ нет и быть не может потому что сообщение НЕ существует в отрыве от основного потока который
    инициировал вычисления. Умрет поток - развалится весь стек и параметры и все. В противоположность
    в языке Erlang поток (процесс) приёмник может дохнуть много раз но стек сохраняет свою живучесть
    просто повторяя вычисления заново. И здесь мне кажется и идет развилка путей.

    И здесь как-раз мы может говорить о недостатках. Очевидно что у нас появляется лаг приемки-передачи
    сообщения. У нас появляются мягкие гарантии времени обработки. И многое другое.

    Интересно почему в 80х Алан Кей проигрывал. Я думаю что победил прагматизм. В те далекие 80-е
    комьютеры были еще слабыми. Частота мерялась сотнями килогерц и мегагерцами. И в расчетах
    каждый такт был важен. И красивые и академические языки такие как Lisp, Prolog, Smalltalk
    просто проигрывали языку С в силу оверинжинеринга. А поскольку С++ был вначале действительно
    ООП-надстройкой над С - то он предлагал и ООП-подход и скорость портабельного ассемблера.
    И хотя я лично не люблю С++ (я считаю его перегруженным техническими долгами прошлого)
    я признаю что бизнес выбирая С++ выбирал просто скорость вычислений. Академизм и красивые
    доказательства правоты программ были тогда не нужны. Нужно чтоб банковское приложение
    быстро считало кредиты и выдавало зарплаты и пенсии.

    Сегодня, когда мы нежемся в сладкой неге мощных процессоров и даже (!) облаков - мы можем
    себе позволить любого уровня парадигмы и абстракции. Цена 1 абстракции стала настолько дешево
    стоить что нам дешевле в банках запускать Java/Net приложения и на ходу фиксить ошибки
    чем долго разрабатывать на С++ и иметь неопредленнное поведение и тяжелый анализ
    в случае падения. Даже такой уродец как Python взлетел как язык интеграции а не разработки.

    Мысль третья. Нестандартные и асинхронные архитектуры реализованные в железе.

    Недавно смотрел анонс нового процессора от Чака Мура (это тот самый Мур который создал закон имени себя).
    Мне кажется это пример той самой асинхронной клетки о которой мечтал Алан Кей.

    Мысль четвертая. На кого похож Алан Кей?

    Не знаю как вам. :) А мне он уж очень напоминает Боливара Траска из Люди Икс Дни Минувшего будущего.

    Мысль 5. Что делает Алан Кей на фото?

    Бренчит на музыкальных инструментах. Наверное блюз. Блюз потерянных архитектур :)
    Ответ написан
    Комментировать
  • Как оценить количество ресурсов, необходимых для работы микросервиса?

    @vitaly_il1
    DevOps Consulting
    Как уже сказали - для сферического сервиса в ваккуме - ответа нет.
    В K8S есть свои нюансы с конфигурацией pods, но в целом все как всегда:
    - написать бета версию
    - запустить load test
    - проанализировать и прикинуть, где надо увеличить систему (sizing) а где оптимизировать
    - починить код, базу данных и т.п.
    - все повторить - load test и т.п.
    Ответ написан
    Комментировать
  • Как оценить количество ресурсов, необходимых для работы микросервиса?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Я могу двум разработчикам из моей команды дать написать микросервис по одному ТЗ и на одних технологиях, а на выходе получаться сервисы с разной производительностью и разным потреблением ресурсов. Как раз для сферических в вакууме случаев невозможна даже приблизительная оценка. При достаточно профессиональной команде и полной свободе выбора технологических решений можно идти от обратного - определить в ТЗ границы доступных ресурсов.
    Ответ написан
    Комментировать
  • Как оценить количество ресурсов, необходимых для работы микросервиса?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Нагрузочным тестированием.
    Для примера, предположим, что есть (сферический в вакууме) CRUD сервис ... Предположим, что точная оценка не требуется. Даже погрешность в несколько раз будет приемлемой.
    Сервисов в вакууме не бывает, разный код и внешние зависимости будут влиять по-разному на использование ресурсов с разбегом в несколько порядков.
    Например, для оценки latency существуют подобные таблицы
    Путаете физику с лирикой. В приведённой вами таблице значения вырастают из физических и технических ограничений.
    Ответ написан
    Комментировать
  • Как открывать заблокированный в рф сайт по своему домену?

    kawabanga
    @kawabanga
    https://docs.nginx.com/nginx/admin-guide/web-serve...
    Должен сработать по идее, если нюансов особых нет. Vps самую дешевую покупаете и настраиваете nginx.
    Ответ написан
    Комментировать
  • Как удалить ненужные версии JDK?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Не знаю откуда вы сформировали такой отчет.

    С точки зрения современной ОС вы можете хранить много конфигураций JDK/JRE и перключаться между ними просто изменяя PATH/CLASSPATH. Это работает для Linux в основном. Для Windows мне это не удавалось. По крайней мере был еще один способ конфигурирования путей доступа к библиотекам который я на тот момент не знал. Возможно через реестр.

    Чтобы удалить ненужный - нужно знать какие вам нужны. Я-бы оставил только 17 поскольку она LTS (Long Term Support) а все остальные бы удалил если нет других требований.

    Из оставшихся двух версия corretto - разрабатывается и поставляется амазоном на его виртуалки. Поэтому если хостинг покупаете в амазоне то имеет смыл и ее использовать. Но я не вижу JDK это или JRE. Для процесса разработки софта (компилляции) нужна только JDK.
    Ответ написан
    2 комментария
  • Как удалить ненужные версии JDK?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Вообще не должны мешать. Но и держать без необходимости кучу версий не стоит.
    Джава живет себе спокойно в одной папке, а все, что в системе о ней известно - путь в path и переменная JAVA_HOME.

    На маке лучший способ управлять Java SDK - использовать https://sdkman.io/
    Ответ написан
    1 комментарий
  • Почему в Kotlin (а может и в Java) так много методов?

    Jacen11
    @Jacen11
    Зачем так много?
    то есть по вашему лучше когда в проекте велосипеды, так еще они и постоянно повторяются, потому что названия разные и один разраб просто не знал что уже другой сделал простой метод в проекте. Плюс частенько реализация лучше и продуманее своей, нормальный человек не будет тратить много времени на велосипед. Требуется решать задачи бизнеса, а не думать как обрезать строку после определенного символа.
    ИМХО в котлине эти методы скорее наделаны скорее показать преимущество котлина с их эксеншенами, в джаве с этим сложнее было.
    Ответ написан
    8 комментариев
  • Как убедиться что сжатые изображения является продуктами исходного?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну... сжатая картинка сохраняет стационоарными некоторые свойства. Например палитра. Цветовые кривые.
    Если не сильно сжимать то и некоторые частотыне свойства сохраняются. Вот. Персептуальный хеш.
    Это такое 8х8 черно белая матрица. Тоже идентичная для оригинала и для скейлинга. На habr.com была
    хорошая статья про эти виды хешей.

    Но честно я-бы такое вообще не делал. Больше
    холивара чем практической пользы.
    Ответ написан
    3 комментария
  • Как удалить идентифицирующую покупателя информацию из PDF?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На бумаге могут стоять водяные знаки в виде мелкой сетки желтых точек.
    Глазами не видно. Но софт распознает как watermark. Технология такая есть.
    Чтоб документы не тырили. Из секретных ведомств.

    Зачем я это говорю. Просто поддерживаю автора в его параноидальных мыслях.
    Ну а если-б не говорил было-б лучше? Предупрежден - вооружен!
    Ответ написан
    3 комментария
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В таких случаех все решается деньгами.

    Выкладки начальству о стоимости поддержки старой версии, включая совместимость современных ОС/платформ и уязвимостей.

    Выкладки начальству по поводу рисков, например о возможности легко найти людей которые готовы ковыряться и поддерживать старые платформы, если вдруг вы, например, решите уйти, или если старая платформа сдохнет, а завести ее сложно, гемор с виртуалками и уязвимостями

    Сроки на нормальную (в штатном режиме, а не аврале) разработке новой версии, грамотный выбор новой платформы, версии, стоимость.

    Собственно как эту инфу соберешь, сам поймешь имеет ли смысл переходить
    Ответ написан
    1 комментарий
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    @mletov
    За бесплатно на энтузиазме - однозначно нет. Потому что если в переписанной системе будут баги, которых не было в старой, то в это обязательно ткнут пальцем.

    Либо должен быть переходный период, во время которого будут существовать 2 системы. И вторую будут тыркать аналитики, тестировщики, заказчик и т д. Т е им тоже надо будет тратить свое время, аналитики и тестировщики не захотят делать это бесплатно, а у заказчика возникнут закономерные вопросы, с чего вообще решили переписывать, и так работает.

    Сталкивался с переписыванием системы с PHP на .NET, но это согласовывалось с самого верха и, разумеется, не бесплатно, а в штатном режиме.
    Ответ написан
    8 комментариев
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    DollyPapper
    @DollyPapper
    Чистая архитектура это не серебряная пуля, в чем профит то? Какие ваши проблемы она решит? Выглядит так, что вы устали работать с легаси говнищем и хотете на текущее место работы привнести новые технологии. Если это так, то это не работает. Поверьте, я проверял. Лучше смените проект.
    Ради опыта напишите полезный пет проект, или опять же - смените место работы. Загнивание на работе с технологиями которые вам не нравятся это путь в выгорание. Опять же поверьте, я проверял.
    Ответ написан
    2 комментария
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Бизнес должен понимать что вы ему предлагаете. По сути эту идею можно продвинуть только под соусом разработки новой фичи. В противном случае у вас будет сильное непонимание. Все что вы предлагаете - это NFR. Не-функциональные требования. Шестая версия дотнет. Асинки. Обжекты. Бизнес не понимает как ему это дальше продавать.

    Я-бы сказал что просто так взять всё и переписать - это гиблое дело. Пойдут баги и бизнес попросит либо срочно исправлять либо откатить это назад до старой версии. Это - фиаско. Очень часто бывает так что старый и плохой код завязывается на какое-то странное поведение API которое плохо документировано и чёрт-пойми-как-работает. Но работает. Я много таких аномалий видел. И ты его исправляешь по фень-шую как должно быть и становится ... (!) еще хуже. Особенно большая беда с мультипоточкой и интеграцией например с операционкой или сторонними нативными либами.

    Если вы имеете силы и смелость - то пишите план (желательно на пол-года) на рефакторинг. Шаг-за шагом. Сначала - покрытие всего тестами. Потом миграция версий тоже мелкими шажками. И все это (!) параллельно с разработкой новой фичи которую бизнес одобрит. Только так.
    Ответ написан
    Комментировать
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Нет, оно того не стоит. Любая работа должна быть оплачена. Ибо сейчас напишешь за свой счет, а потом начальника скажет "о, отлично, молодец, можем теперь сэкономить на программистах и поддержке, у меня как раз знакомый ищет, ща его поставлю, а ты можешь быть свободен, заодно выпишу себе премию, во какой я молодец". Этот код решает задачи бизнеса. Если бизнес готов тратить на его поддержку и сопровождение деньги - то это проблемы этого бизнеса. Почему это наемный работник должен решать проблемы бизнеса за свой счет? Правильно сделать так: оформить все в виде какого-то документа с конкретными аргументами, цифрами, графиками и т.п. и выдать его начальству. Типа сейчас поддержка проекта стоит столько-то, приносит такие-то проблемы, переписать будет стоить столько-то, сопровождение нового будет столько-то, оно решает такие-то проблемы. И выдаете данный документ начальству. Можно даже в бумажном виде в нескольких экземплярах. А далее пусть у начальства голова болит.
    Ответ написан
    3 комментария
  • Не работает программа вычисления факториала. Что делать?

    @kisaa
    Видимо, ваш long int - всего 32-битный. Понятно, что для 13! = 6.2е9 происходит переполнение. Попробуйте unsigned long long int
    Ответ написан
    Комментировать
  • Почему иногда выходит ошибка java.awt.HeadlessException: null?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Headless - это специальный релиз Java который ставится на сервера где никогда не будет подключенного
    монитора. Виртуалки. Фиксится это наверное установкой правильног десктопного релиза на десктоп
    где все графические библитеки в наличии.

    Почему у тебя что-то рандомно выскакивает - это вопрос.
    Ответ написан
    1 комментарий