Ответы пользователя по тегу Java
  • Java или Scala - как второй язык для ML инженера?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Scala -> для питониста будет много общего. Плюс типы выводятся из операций, не нужно будет постоянно их описывать, как в джаве.
    Ответ написан
    Комментировать
  • Нужно ли проверять все аргументы метода/функции?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    мой взгляд -> проверять входящие аргументы желательно вообще на ВСЕХ функциях (особенно на критически важных), другое дело что я бы не бросал исключения (мысль такая, что если ты что-то обработал, то это уже не исключительная ситуация), я бы просто их логировал - и исправлял ошибки на возможно корректные или значения по умолчанию (заглушку).
    Ответ написан
    Комментировать
  • Как деплоить jar с помощью docker?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну обычная схема CI/CD - какой-нибудь сборщик (для гитхаба это обычно https://travis-ci.org/) - компилирует твой джарник.
    потом он же потом копирует этот джарник докер имидж.
    потом отправляет этот докер имидж в репозиторий, например на докерХабе, оттуда ты уже можешь скачивать и запускать контейнер там где тебе надо.
    Ответ написан
    Комментировать
  • Как генерировать последовательность случайных не повторяющихся чисел?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    тебе сначала нужно сгенерировать колоду, а потом из нее вынимать (с удалением) случайную карту,
    пока колода не пуста, вынимать случайную карту и добавлять ее в раздачу.
    Ответ написан
    2 комментария
  • Зачем учить jvm языки кроме Java?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    время идет, мир меняется, а в месте с этим и потребности к продуктам, например сейчас сильно увеличилось количество фреймворков/инструментов требуемых для среднего разработчика, железо также сильно изменилось с тех времен когда разрабатывалась джава, стали массового распространены многоядерные системы, в обыденность вошли продукты которые работают на кластерах и тд. Scala - разработан чтоб упростить нарастающую сложность.
    при этом Scala - это не better java, это не про ООП или ФП, это язык практикующий в первую очередь практичный/прагматичный подход, стремящийся упростить работу с фреймворками, многоядерными системами, кластерами, различными платформами (компилироваться в js, нативно компилироваться и работать без jvm, работа с видеокартами и тд).
    И как любой прагматичный язык, он позволяют работать с ним таким образом, как кто-то уже привык работать, например работать как с Java.
    один из примеров упрощения : типы в скала, автоматически выводятся, их не обязательно указывать, из-за чего легко можно эксперементировать с кодом и его рефакторить, все зависимости по типам будут автоматически выводится сами.
    Например зная интерфейсы Scala коллекций ты автоматически знаешь интерфейсы подавляющей части существующих в экосистеме фреймворков (общие интерфейсы).
    Также ты можешь код разработанный как однопоточный, перенести на многопоточную среду, а затем и на кластер, и тд.
    Есть простые схемы для создания собственных элегантных домен специфичных языков (используя перегрузку операторов, неявные параметры, неявные функции, автоматическую конвертацию типов).
    Ответ написан
    Комментировать
  • Как отфильтровать данные за определенный период в Spark?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    можно просто попытаться как вы пишете отфильтровать, для этого в начале получить определенную структуру и тип данных:

    источникДанных
      .мап(созданиеСтруктуры)
      .фильтр(текущаяЗапись => СписокТребуемыхНомеров.содержит(текущаяЗапись.телефон) 
        && текущаяЗапись.дата<>требуемыйИнтервал)


    так будет работать, но очень долго, медленно и сожрет кучу ресурсов на одной машине - это не то ради чего спарк используют, спарк - это движек для распределенных вычислений. А чтоб запустить распределенные вычисления, нужно в начале создать пару "ключ"->"значение" (где ключ номер телефона, а значение все остальные данные), эти пары распределятся по узлам, где будут параллельно обрабатываться, а потом результат паралельной обработки агрегировать в один общий результат, и для этого не фильтр использовать а reduceByKey с aggregate, для паралельного сбора ключей и значений для этих ключей.
    Ответ написан
    1 комментарий
  • Какую архитектуру и фрейморк выбрать для реактивного приложения на джаве?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    1. Для реактивного подхода да важно.
    У вас нет зависимого состояния в случае отдельного сбоя в отдельном узле, можете легко восстановить работу узла, без особых заморочек, это часть подхода.
    2. Для производительности на отдельный запрос - асинхронные вызовы всегда хуже. Мы делаем запросы асинхронными не для того чтоб выжать максимум из одного запроса. Асинхронность открывает путь к параллелизации (раз нет зависимости, запросы могут быть выполнены в любом порядке, в том числе и параллельно), такие запросы повышают отзывчивость системы (интерфейса), лучше распределяют нагрузку.
    3. Работа с коллбэками - всегда было то еще удовольствие, композиция функций конечно более предпочтительна.
    ----------
    для создания реактивной архитектуры традиционно - akka, play, kafka (все это с джавой работает в том числе)
    Ответ написан
    4 комментария
  • Сколько часов в день нужно уделять, чтобы стать Java Middle?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    за 4 года думаю вполне реально, если стараться. Но вы все равно работы не найдете, тк на рынке давно стагнация при этом полно очень высокого качества специалистов с которыми вы никогда не сможете конкурировать банально изза того что они тоже обучаются и растут + уже имеют за плечами уровень синиора или мидла
    советую куда-нибудь в JS экосистему вкатиться, в айос разработку.
    Ответ написан
  • Apache Spark on Kubernetes - deploy process. Как деплоите господа?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    fabric8.io
    и никаких забот по выстраиванию пайплайнов
    Ответ написан
    Комментировать
  • Можно ли создать искусственный интеллект на java?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ЛИЧНОЕ МНЕНИЕ:
    ну если вы собираетесь писать под айос, возьмите нативный для этой платформы язык (swift например), это будет в 100 раз лучше чем колхозить то что не предназначено под платформу (в любом варианте вы будете изучать язык с нуля), по поводу платформы джава наверно не лучшее решение для всяких там ИИ, но в целом тоже потянет, но я бы на вашем месте не на языке сосредотачивался а на экосистеме, для ИИ очень много на питоне но это тоже не лучшее решение, ну вобщем пробуйте хуже не будет)
    только то что вы описали это рекомендательная система а не искусственный интеллект. в целом уже полно таких реализованных решений, но для пробы конечно стоит пробовать самому.
    Ответ написан
  • Какие технологии выбрать для максимально быстрого создания элементарного сервера для мобильного приложения?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    heroku.com иногда использую чтоб что-то быстро залить и показать как работает.
    заливать код можно одной строчкой через "гит пуш", сервис автоматически подбирает по коду какое окружение нужно создать чтоб этот код работал, удобно и есть бесплатный "хобби" тариф
    Ответ написан
    Комментировать
  • Вычисления с помощью Apachee Spark. Мощный сервер или такой же по мощности - кластер?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    памяти всегда чем больше тем лучше, но это не критично, тк в спарке любую большую задачу можно и нужно делить на серию маленьких которые выполняются в памяти.
    По поводу разницы между кластером и одним мощным сервером, мощный сервер будет быстрее, из-за более высокой скорости в выполнении "синхронизации" между "воркерами".
    Но при грамотно составленных задачах расходы на синхронизацию будут чрезвычайно малы и могут выполнятся параллельно выполнению самой задачи, что вобщем особо не будет влиять на производительность.
    В любом случае масштабировать свой сервис через повышение мощности одного сервера - это тупиковый путь. Так что я бы даже не замарачивался по поводу одного очень очень мощного и супер дорогого сервера.
    Ответ написан
    Комментировать
  • Куда можно пойти на стажировку?Где взять опыт?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Зачем вам стажировка, у вас же там был "свой проект", под руководством наставников и тд, разве не?
    Вот теперь пора идти устраиваться - к томуже гигБрейнс в рекламе свой заявляют, что устраивают на работу (гарантированно), так что вы считай уже успешно вкатились.
    Ответ написан
    1 комментарий
  • Как правильно организовать регистрацию и авторизацию пользователей сайта (Java)?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    1. Верно (но это подходы из 90х)
    2. зачем шифровать случайную строку? шифруют данные, токен может как иметь какие-то данные (которые тогда обязательно шифруются), либо не иметь никаких данных, тогда шифровать не надо, и такие "токены" обычно в виде сессий передаются пользователям.
    3. шифрованные токены, обычно содержать в себе все что необходимо, смысл в том чтоб ты после получения токена расшифровывал его и получал все необходимые данные для авторизации из самого токена, а не искал что-то в базе.
    браузер может сохранять данные через кукисы, а также в локалСторейдж (ну есть еще экзотические варианты)
    4. немного сумбурно, и перепутанно, OAuth - всего лишь определяет набор правил по которому осуществляется безопасная авторизация, jwt - формат передачи данных, шифрованный json (можно применять как разные форматы при передаче данных, так и разные правила при авторизации).
    Ответ написан
    Комментировать
  • Насколько полезен Hibernate? Сильно ли он упрощает работу?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    филосовский вопрос прям)
    нет никаких проблем написать свои байдинги, и как вы говорите через сетеры например обновлять данные в таблицах БД (я так и делаю, расширяя стандартные коллекций типов данных).
    С другой стороны нам постоянно говорят не надо велисипедить, типа вот умные люди уже сделали все дела, типа мол другие разработчики привыкли вот к хибернейт, уже чего-нибудь другого не воспримут, в команде тяжело работать будет, это подход корпоратива.
    В своих проектах, или в передовых командах, нормально писать альтернативные реализации байдингов и других концепции.
    Ответ написан
    Комментировать
  • Инкапсуляция, отсутствие её - проблема?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    инкапсуляция - "сокрытие реализации", не знаю что там от вас на собеседовании ожидали, обычно сложно угадать что там человек себе понапридумывал, что хочет услышать, я не обращаю на это внимание тк это не представляет никакого интереса.
    хотя, я бы может сказал что-то типа такого:
    если не скрывать реализацию - может быть проблема при изменении этой реализации, например на более эффективную, и тогда прийдётся переписывать много кода, тем кто использует вашу библиотеку, им это доставит адскую боль. никто же не хочет переписывать свой код при обновлении вашего фреймворка)
    но реальность конечно куда сложнее, и код рано или поздно всё равно приходится переписывать)))))
    Ответ написан
    Комментировать
  • Что происходит с кодировкой при конкатенации строк Java?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    лучше сразу отказаться от использования windows и их консоли в частности, раз и навсегда, если конечно вы не хотите познать этот прекрасный мир виндовс костылирования.
    Ответ написан
    Комментировать
  • Как решить задачу без массивов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну поскольку хэши и таблицы нельзя использовать, вам остаётся наверно только графовые структуры данных.
    Ответ написан
    Комментировать
  • Как проверить путое ли изображение средствами java?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    предположу что нужно проверить однотонность фона, тоесть если все цвета точек имеют один и тотже код значит ничего не нарисовано)
    Ответ написан
    Комментировать
  • Java, как парсить сообщения VK?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Парсить? -> никак, ленты диалога нет даже у пользователя, он этот диалог сам видит только через свой ХТЛМ клиент, на лету загружая каждую строчку через зашифрованный канал, и нигде это не сохраняется.
    так что если вы не можете без ведома пользователя читать его зашифрованный канал, то вы не можете без его ведома читать сообщения.
    Ответ написан
    Комментировать