Задать вопрос
  • Какую книгу взять новичку в разработке микросервисов на Spring Framework?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Я не понимаю зачем такое ограничение в названии топика?
    Микросервисы и Spring - это как езда на лошади только галопом.
    Или рыбалка только для пресноводных рыб.
    Ответ написан
    Комментировать
  • Как работать с большими числами в C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В науке и технике такие форматы как double / long double / extended применяются уже давно и их
    возможности полностью закрывают все мыслимые вопросы.

    Например мы можем посчитать соотношение самой большой длины (диаметр вселенной) на
    самую мелкую длину (переменная Планка) и это будет вполне себе число которое ляжет в эти
    форматы.

    Преподаватель вас заставил считать факториал 250? Это наверное троллинг. Зачем.
    Для приближенного подсчета факториала есть например формула Стирлинга. Ее достаточно
    чтоб получить порядок числа и первые значимые разряды.

    А bigint и арифметикой можно и никогда не закончить вычисления. Это - как в криптографии.
    Длину ключа увеличили всего в 2 раза. А всех дата-центров планеты Земля уже не хватает
    чтобы в цикле прокрутить просто все значения этого длинного целого.
    Ответ написан
    Комментировать
  • Как в респонсе на ходу создавать объект?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тут описана проблема которая принципиально в Rest-сервисах не решена до сих пор.

    Ее коробочное решение было реализовано в GraphQL. Но GraphQL - это не Rest. Это более
    сложный и более умный протокол и он позволяет выбирать из entity ровно те поля
    которые нужны для responce.

    А в твоем случае надо просто в контроллере создать еще один метод. Типа getUserByIdShort
    Ответ написан
    Комментировать
  • Как решить проблему слепой печати?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какая у тебя клавиатура? Я не советую ничего учить на ноутбуке. Ноут - всегда был походным вариантом десктопа со всеми вытекающими. Ход клавиши плохой. Нет характерного щелчка при нажатии. И вообще набирать неудобно из-за того что сухожилия пальцев напряжены постоянно. Вы боитесь нажать чуть сильнее чтоб не дай бох не сломать чего в своем любимом Apple M1.

    Вобщем купите геймерскую клавиатуру. Или какой-нибудь эксклюзив со щелчком для печати документов. Такие есть. На нем и учится слепой печати удобно. И безопасно для здоровья.

    Я знаю что щас в топик набегут сторонники ноутбуков но послушайте программиста-электронщика-и-связиста. Я печатал на технике которую вы даже не знаете. На телеграфных аппаратах РТА-80. И все они по дизайну были продуманы для работы человека пальцами с учетом охраны трудна. Они все были удобнее чем самые лучшие клавиатуры ноутов. Подумайте о том что мировой опыт печатающей техники никтогда не тяготел к плоской
    поверхности и малому ходу клавиш.

    Хорошая клавиатура для человека - это например клавиатура фортепиано. Вот там и ход клавиш добротный.
    И вы не боитесь раздолбать ничего. Рука - расслаблена. Можно печатать быстро и без оглядки.
    Ответ написан
    1 комментарий
  • В чём безопасность DNS over HTTPS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Существует атака когда человек посередине канала (man in the middle) подсовывает свой dns и вы,
    заходя в свой банковский кабинет попадаете на сайт-обманку. Дальше могут быть разные сценарии
    но в целом доверие к доменному имени базируется просто на предположении что вы точно-точно
    знаете что зашли в СВОЙ банк а не в фейковый.

    Возможно DNS over https решает эту проблему ведь человек посередине уже не может вклиниться в
    https соединение. Хотя и здесь тоже можно рассуждать на тему браузера и того какие сертификаты
    изначально там установлены. Кто вам устанавливал браузер и сами сертификаты. Короче вопрос
    нулевого доверия на каком-то этапе остается. Криптография кажется его никак не решает.
    Ответ написан
    Комментировать
  • Как правильно распределять ответственность между классами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поскольку топик тегирован PHP то я-бы предложил взять PHP фреймворки и смотреть как они видят себе реализацию шаблона например репозиторий. Я-бы мог рассказать о Spring Data Repository но боюсь что для PHP будут отличия и автор просто запутается.

    Банда Четырех (юбилейное издание) описывает шаблоны проектирования .... эээ кажется на SmallTalk и С++. По крайней мере во Введении книги они об этом писали. Поэтому читая код надо уметь читать глазами сущности этого мира и не пугаться.

    Что такое шаблон Store - я не знаю. Опять-же это специфика PHP скорее всего.

    Что такое шаблон Сервис. Ну я вообще не рискнул бы его никак определять. Это КМК слишком размытое понятие и его надо срочно сузить. Хотя-бы до уровня техно-стека. Может сервис в терминологии SOAP это одно. Облачный сервис - может быть вообще другое. Короче архитекторы этих технологий будут бить друг друга здесь как епископы разных церквей друг друга за ереси.

    Сервис для ООП - вообще седьмая вода на киселе. Вообще ООП надо начать и закончить на его полиморфизмах и наследованиях и поставить точку. Дальше - нет ООП. Дальше идет хаос и новые виды абстракций от вендора языка. Аннотации и аспекты и рефлексия и прочий бред.
    Ответ написан
    1 комментарий
  • Что эффективней, чтение из файла или массив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос не глупый а вполне себе хороший.

    Его плавное развитие приводит к концепции баз данных. Самое главное что можно сказать тезисно это
    1) Пока памяти хватает (массив) - используй смело память
    2) Диск - больше и дешевле памяти
    3) С памятью работать легко. С диском - очень неудобно и надо обрабатывать IOExceptions почти всегда.
    Диски внезапно полны сюрпризов. Могут быть сетевыми дисками.
    4) Разные диски имеют скорость на порядки разную.
    5) Диски ведут себя очень плохо на random access. От этого даже метрика IOPS появилась.
    Ее очень любят обсуждать админы баз данных.
    6) Существуют структуры данных которые спецом создавались только для дисков (B+Tree)
    7) Диск - переживает выключение питания.
    8) Самые разумные решения - сочетают в себе и диск и память в тех частях кода где это нужно.
    9) Есть интерфейсы программирования которые виртуализирут диск как память. Этим пользуется
    SQLite например.
    10) Диск может достигать очень высокой последовательной скорости чтения или записи в файл
    при условии отсутствия конкурирующих записей в данный момент. Этим пользуются в БД
    для журналирования событий.

    В принципе если современный программист просто будет использовать только оперативную память
    то никто ему не сможет ударить по рукам или подойти с какой-то метрикой и чего-то там измерив
    сказать что он неправ. Тут уж только падения по OOM и потери информации и performance issues
    могут быть каким-то значимым аргументом.
    Ответ написан
    3 комментария
  • Как узнать об изменении в сторонней БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В классический реляционных БД - никак. БД проектировались исключительно как сервер который "отвечает на вопросы". И при этом сам ничего не уведомляет.

    Если нужно ловить события в той точке где они возникают - то лучшее место не БД а именно сервер приложений. И для хранения событий использовать топики Kafka или RabbitMQ.

    Если этого всего нет - то тогда дергай запросы 1 раз в час. Другого выхода нет.
    Ответ написан
    Комментировать
  • Куда расти дальше?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не специалист по C# поэтому по качеству кода не смогу ничего сказать. Но могу сказать по другой части.

    Проект создан в 2 коммита. Это обман. Так не бывает. Программисты не делают проект в 2 шага. Обычно
    идет некий итерационный процесс когда в течение дня. Либо в течение итерации разработки какой-то
    фичи делается бранч. И вмерживается в мастер. Или делается отдельный коммит в мастер с описаием что делалось.
    И тогда проект приобретает ИСТОРИЮ изменений. По истории видно как авторы работали. Что изменяли.

    У проекта нет документации. Надо описать что это для чего и так далее. Нет инструкции по сборке.
    Каждый разработчик должен иметь возможность собрать любой проект с гитхаба прочитав инструкцию.
    Сборка - это не программирование. Это отдельный скилл. Почитай что такое сборщики. И это не среда
    разработки. Это отдельный продукт. Обычно в консоли работает. Чтоб на сервере собирать проекты
    в режиме автономного процесса без участия человека.

    У проекта нет модульных тестов. Это говорит о том что нет возможности бытро проверить не сломалась
    ли логика после изменений. Тесты надо добавить.

    Нет внешних метрик здоровья проекта. Непонятно в каком состоянии щас он находится. Компилируется ли вообще? Посмотри как другие проекты в гитхабе выглядят.

    В исходники нужно вставить текст лицензии. Подойдет любая из опен-сорцных.
    Ответ написан
    Комментировать
  • Можно ли идентифицировать человека по измененному голосу?

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

    Вообще во всех задачах распознавания нужно брать как можно более широкий вектор параметров.
    Ответ написан
    Комментировать
  • "прикладной код Java" - это что?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В тексте вопроса написано много чепухи. Java может использовать внешнюю память. Кажется еще
    в Java 8 для Apache Ignite (и других NoSQL систем) были попытки использовать неуправлямую
    память через ByteBuffer. История где-то об этом сохранилась я думаю.

    Начиная с JDK-14 (могу ошибаться) завезли Foreign Memory API который оперирует с памятью
    более продвинуто.

    По поводу
    в Java не надо следить за памятью

    - неправда. Следить за памятью надо всегда. Иногда это делает разработчик (для С/C++)
    а иногда это делает GC или умные механизмы borrow-checker (Rust).
    Если не следить то долго работающие процессы пожирают всю память ОС
    до тех пор пока не будут убиты через ОС OOM killer. Возможно под слежением
    имелись в виду накладные расходы на работу GC? Но эта проблема специфична
    только для приложений которые активно делают new и переживают хотя-бы одну
    эпоху. Кроме того в Java есть несколько разных GC которые просто обнуляют
    все тезисы например 2000х годов и обсуждать их надо уже совсем как другие
    алгоритмы которые имеют другие свойства. Грубо говоря знания по GC очень
    сильно устарели после G1, Shennandoh e.t.c. Нужно учить заново всё.

    прикладной код Java - заменить на “прикладной код движка Java”

    Это вообще невозможно прокомментировать т.к. идет жонглирование терминами без
    определений. Что такое движок в данном случае - непонятно?

    В любом случае тебе надо звать в студию этого загадочного Романа и не плодить свои домыслы.
    Ответ написан
    2 комментария
  • Как настроить resolv.conf?

    @BurundukBurundukov
    Для NetworkManager в rpm/rhel based дистрибутивах воспользуйтесь конфигурацией ipv4.dns-options Пример: nmcli con mod CON_NAME ipv4.dns-options “timeout:1 rotate”. После перезагрузки можете проверить что в resolv.conf будут вноситься нужные параметры
    Ответ написан
    Комментировать
  • Bitbucket фсе, блокирует российские IP?

    @Nikita44
    Лайфхак - на битбакет можно зайти с www

    на здоровье
    Ответ написан
    2 комментария
  • Уже наступили реали, когда можно спокойно сменить прошивку телевизора?

    @tukreb
    Нет и вряд ли когда либо наступят.
    Единственное правильное решение, покупать "тупой" телевизор, а к ней приставку на Андроиде, и самое главное это вам обойдётся чуть ли не в 2 раза дешевле.
    Ответ написан
    1 комментарий
  • В чем причина низкой производительности IPSec на Mikrotik RB952UI-5AC2ND-TC?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Нет аппаратного шифрования, следовательно шифрование нагружает процессор микротика. Когда рассчитвают именно на туннели по IPSec, обычно берут модели с аппаратным шифрованием. Можно попробовать установить со стороны микротика шифрование попроще - aes128-cbc и PFS modp1024, но особо прорывного действия я не оиждаю.
    Прорывным действием будет только замена на модель с аппаратным шифрованием.
    Ответ написан
    Комментировать
  • Как перенаправлять авторизованных пользователей на домашнюю страницу?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Давно писал вот, такой код.
    Должен сработать.

    @GetMapping("/")
      public String homepage(Model model) {
    
        // Проверяем авторизован ли пользователь и если авторизован, то редиректим его в /dashboard
        if (SecurityContextHolder.getContext().getAuthentication() != null
            && SecurityContextHolder.getContext().getAuthentication().isAuthenticated()
            && !(SecurityContextHolder.getContext().getAuthentication()
                instanceof AnonymousAuthenticationToken)) {
    
          return "redirect:/dashboard";
        }
    
        return "index";
      }
    Ответ написан
    2 комментария
  • Нужно ли переносить центр с L3 на маршрутизатор?

    @SunTechnik
    Зависит от того, какие роли вы планируете возложить на pfSense.
    Если планруется, что он будет иметь доступ ко всем vlan и рулить доступом между vlan - то, возможно, придется перенести.
    Если же pfSense отвечает тоолько за выход в internet или vpn, то пусть Aruba остается в своей роли. Надо только на ней default (или необходимые) маршруты добавить..
    Ответ написан
    Комментировать
  • Критика кода возможна?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тут вместо цепочки if можно switch-case использовать.

    @Override
        public void notification(Event event) {
            if (event.type() == EventType.REDRAW_REQUEST) {
                printField(event.field());
                return;
            }
    
            if (event.type() == EventType.BOMB_OPENED) {
                System.out.println("You opened bomb. Game failed");
                printField(event.field());
            }

    И в других местах - похожие косяки.
    Ответ написан
    Комментировать
  • Можно ли роутер и коммутатор соединить двумя и более проводами, для увеличения скорости?

    @TheBigBear
    СтарОдмины мы
    Можно
    И Микротик, и этот D-Link умеют LACP
    А не хотите купить кабель прямого подключения SFP/SFP+ MikroTik XS+DA0001 и получить 10 Gbit? (или подобный совместимый)
    В обоих железках я так понимаю SFP порты простаивают
    Ответ написан
    1 комментарий