Профиль пользователя заблокирован сроком с 24 марта 2024 г. и навсегда по причине: систематические нарушения пункта 5.2 правил сервиса
  • Как избежать Out Of Memory Error?

    @My1Name
    Я с такими проблемами ещё не сталкивался, но если бы решал такую задачу, то делал бы через ByteBuffer. Делил бы файл на части и делал бы очередь.

    какое-то время весь файл находится в хипе

    В вашем случае и делить файл не нужно... Просто очередь (multithreading pool). Считаете максимально допустимое количество файлов в памяти и делаете пулл запросов.
    Написано
  • Как правильно сгенерировать Html форму в ajax?

    @My1Name Автор вопроса
    Крайне не поддерживаю вариант с генерацией формы на стороне сервера

    Хочу так же добавить, что на стороне сервера неудобно работать с булевыми html полями, такими как checkbox и radiobutton. Однако, в моём варианте получилась форма типа JSON с указателями checked и selected.
    Написано
  • Как правильно сгенерировать Html форму в ajax?

    @My1Name Автор вопроса
    генерировать json и полученные данные сеттить в имеющуюся форму

    Хорошо. Но где шаблон (форму) загружать? Получается, что нужно добавлять на страницу/ы html разметку "на всякий случай"...

    В любом случае, нужно где-то держать шаблон, и работать с ним в случае вызова функции.
    Написано
  • Как отправить http post запрос в теле которого будет sql запрос?

    @My1Name
    UID_B Nintendo, вы пишите API, а ваш скрипт (SQL), который запрашивает данные с БД, приходит на сервер в теле запроса:
    После чего мне выдает результат html с бд.

    Очевидно, у сервера свой интерпретатор запросов. Он обрабатывает ваш request (парсит его) и строит по шаблону html ответ.

    за счет веб доступа я примерно представляю как выглядит в целом бд

    Ключевое слово примерно. Поэтому пишите свою интерпретацию. По другому - никак.
    Написано
  • Как правильно сгенерировать Html форму в ajax?

    @My1Name Автор вопроса
    Я так понимаю, нет никаких правил. Чем быстрей будет построена форма - тем лучше. А вообще, всё зависит от команды разработчиков и распределения труда: frontend vs backend. В целом, нужно делать так, чтоб форму можно было легко редактировать.
    Написано
  • Как работает HashMap с многопоточностью?

    @My1Name Автор вопроса
    Сергей Горностаев, спасибо, думаю нашёл решение, перенеся метод put(id, ""); в spin. Он у меня был немного ниже нужной последовательности: Сразу после отправки, а не после изъятия данных.
    Написано
  • Как работает HashMap с многопоточностью?

    @My1Name Автор вопроса
    Сергей Горностаев,
    Есть уверенность, что это именно из-за map'ы?

    Уверен на 99% Я использую SseEmitter и, думаю что данные не успели перезаписаться... Любое новое сообщение put - делает перезапись. После извлечения, за методом get - следует put(id, ""); Я не делаю remove до тех пор, пока связь не будет разорвана...
    Написано
  • Как работает HashMap с многопоточностью?

    @My1Name Автор вопроса
    Сергей Горностаев, Однако, несмотря на то, что все операции являются потокобезопасными, операции извлечения не влекут за собой блокировку...

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

    Сижу "ломаю голову" - как такое могло получиться?
    Написано
  • Как работает HashMap с многопоточностью?

    @My1Name Автор вопроса
    Как обеспечить атомарность операции с одним элементом зависящего от двух потоков? Каждый элемент карты, грубо говоря "точка связи" разных пар...

    ConcurrentHashMap создаёт копию карты и, если какой-то поток начал свою работу, это может создать дубликат данных и неразбериху...
    Написано
  • Как сделать чат без БД?

    @My1Name Автор вопроса
    Odissey Nemo,
    правильный и полезный, особенно для саморазвития
    Хабр - моя шпаргалка! :) В том смысле, что я в последнее время отвечаю сам на свои вопросы... А ответы и комментарии под другими вопросами, действительно для саморазвития.

    резонно. Но не современно))
    Ну, это смотря как посмотреть... Я вообще писал чат как "фишку" для "малой соц.сети" (pet-project), а теперь думаю, что нужно делать отдельным проектом. Думаю он соответствует времени:

    Сегодня ты пристёгиваешь библиотеку с нужной тебе функцией
    и занимаешься тем, что умеешь :)

    Не нужно переходить в сторонние мессенджеры и приложения... Добавил скрипт на сайт и, твои пользователи могут общаться (в приватном чате на твоём сайте) через мой сервер. Соединение можно держать часами. Правда это всё пока что на локальном сервере))

    Никогда не разворачивал проекты подобного рода. Это безусловно интересный опыт. Было бы здорово развернуть такой сервис под эгидой Yandex или Google.

    657f52cac006d140610518.jpeg
    Screenshot уже немного не актуальный, но в целом, внешний вид особо не менялся... Проект на трёх языках (ru, en, he) поэтому отображается три кнопки переводчика. Но по факту - одна, в зависимости от языковых настроек пользователя. Бесплатный онлайн-чат для сайта
    Написано
  • Почему возникает IllegalAccessException в J2ME при попытке запуска приложения?

    @My1Name
    QWERTYUIOPas,
    преверификатор
    - это однозначно выше моих знаний)) Я не знаю J2ME; заглянул из любопытства.
    Написано
  • Начинка для мессенджера?

    @My1Name
    Управление этими сервер сокетами(создание, удаление, хранение) происходит удалённо .... остаётся риск, что при высоких нагрузках, порты на стороне сервера могут тупо закончится.

    Если вы не планируете видео-трансляции в своём мессенджере, возможно имеет смысл использовать UDP протокол. То есть, отправил сообщение и сразу закрыл/освободил порт. А для звонков и видео использовать TCP. Так вы сможете экономить ресурсы.

    Безусловно, всё это зависит от того, какие задачи должно решать ваше приложение: передача текстовых сообщений, файлов, видео, звонки. Всё это влияет на архитектуру приложения, его скорость и качество.

    А вообще, прежде чем писать мессенджер, рекомендую прочесть эту статью на Хабр "Миллион одновременных соединений"

    Лично я когда-то писал поискового робота (примитивный аналог Google, Yandex и др.) и могу сказать, что ограничение TCP/IP в ~65 тысяч клиентских соединений тесно связано с оборудованием и операционной системой. Это актуально в том случае, если вы создаёте каждый раз новый канал (например, если вы подключаетесь каждую секунду к 100 разным сайтам). В вашем случае, это должны быть комнаты чата. И если всё правильно написано, то достигнуть лимита даже в 65К будет сложно.

    Если конкретно, то у нас есть сущность - комната чата, к каждому чату присвоен свой Server Socket, к которому подключено определённое число соединений(клиентов).

    Вам не нужен сокет на каждого клиента, если он в данный момент времени не активен. Основная нагрузка - (видео) звонки и передача файлов. А текстовые сообщения - это одноразовые события. Для них не нужно создавать постоянное TCP/IP соединение.
    Написано
  • Как организовать архитектуру приложения?

    @My1Name
    добавил секьюрити конфиг и фильтры на роли, всё работает

    Заглянул на гитхаб и хочу сказать, что это не совсем секьюрити с вот этим
    .csrf().disable()
    .cors().disable()
    И если вы собрались работать с видео, то наверно лучше всего работать с фреймами, а у вас в настройках даже нет пункта frameOptions()

    через какие доп фреймворки и апи можно сделать такое приложение, если не сложно, скинте гайд

    Спринга вполне достаточно. Даже наверно чтоб YouTube написать... А вот что касается гайдов, то тут навряд ли кто-то вам поможет. Это как у владельцев YouTube просить исходный код и инструкцию :)
    Написано
  • Почему возникает IllegalAccessException в J2ME при попытке запуска приложения?

    @My1Name
    Тут пишут, что IllegalAccessException обычно происходит тогда, когда предпринята попытка создать экземпляр класса и нет доступа к его конструктору... У вас класс MyCanvas без модификатора доступа. И нет явно объявленного public конструктора. Должно быть в этом причина.
    Написано
  • Как обработать запрос ajax jQuery в Spring?

    @My1Name
    ИМХО. Это тот случай, как писать не надо... Очень интересно, но ничего непонятно. Для таких задач, на Хабр нужно создать ещё один раздел "разминка для мозга".

    Если вы используете HttpSession для работы с объектом, то наверно нужно возвращать не стринг в виде переадресации, а ModelAndView ("redirect:/product/basket"); Или добавить @ResponseBody к методу, коль вы работаете с ajax.
    Написано
  • Как сделать чат без БД?

    @My1Name Автор вопроса
    Odissey Nemo, тоже верно. Я хотел подчеркнуть, что с EventSource гораздо проще и, думаю безопасней. В отличие от постоянного сокет соединения, которое осуществляется один раз после обмена headers (после так называемого "рукопожатия"), EventSource разрывает связь через некоторый промежуток времени и требует заново представиться. Таким образом разработчику и клиенту не нужно переживать о незакрытых сокетах.
    Написано
  • Как обработать запрос ajax jQuery в Spring?

    @My1Name
    ThunderCat, если со скриптом всё в порядке, то в контроллере не видно кто такой repo? Где в него положили product чтоб добавлять его в корзину?productsInBasket.add(repo.getProduct(productId)); Если есть ошибка, то надо бы лог ошибки добавлять к вопросу.
    Написано
  • Как обработать запрос ajax jQuery в Spring?

    @My1Name
    ThunderCat, через знак доллара в jQuery ссылаются на методы и функции. Переменные со знаком доллара в имени - просто сбивают с толку.
    Написано
  • Как обработать запрос ajax jQuery в Spring?

    @My1Name
    ThunderCat, действительно, проверил, оказывается имя переменных может состоять из букв, цифр и двух символов «$» «_». Однако, кто пишет на jQuery и использует «$» в имени переменных, тот извращенец.
    Написано
  • Насколько Spring Security хорошо защищает твой бакэнд?

    @My1Name
    Простыми словами: Если речь идёт о банковском приложении, то такие программы даже не имеют функций "получить список пользователей" по какому-то параметру. В отличие от социальных сетей, там нет друзей или связных контактов... Даже банковские сотрудники навряд ли имеют возможность получать списки пользователей.

    Такие функции могут существовать локально (без доступа к интернету). То есть, нужен прямой доступ к БД. И чтоб получить список с логинами и паролями, вероятнее всего - придётся физически украсть сервер :D

    На уровне доступа к одному аккаунту, существует механизм межсайтового общения CORS (в теории возможно копировать запрос пользователя, выдавая себя за него) который в свою очередь блокируется или настраивается в рамках Spring Security. И если всё правильно настроено, получить несанкционированный доступ даже к одному аккаунту - нельзя.

    В Spring Security другая проблема: защитить приложение, отключая параметры безопасности. Ведь не все приложения ориентированы на банкинг. А фильтры спринга, блокируют разного рода web функции. Например - воспроизведение видео-фреймов с YouTube.
    Написано