• В какие игры вы играете на Linux?

    TheKnight
    @TheKnight
    Программист
    Нативные: Sword coast Legend, Bioshock Infinite, Trine 2, Amnesia, Neverwinter Nights. Мечтаю о портировании Ori.
    Ответ написан
    Комментировать
  • Как тестировать модуль, который получает данные от внешних сервисов?

    TheKnight
    @TheKnight
    Программист
    Как обычно - придумать тестовые данные, после чего работать с ними. Зависимости, которые не имеют отношения к тестируемой логике напрямую можно замокать (в Java я использую Mockito, для вашего случая думаю тоже есть что то, упрощающее жизнь). В приведенном ниже примере возможно найдется что то полезное для вас.
    import org.junit.Assert;
    
    class Test {
    
        public static void main(String[] args) {
    
            String message = "Hello, World!\nCheck this message.";
    
            ExternalController external = job -> {
                System.out.println(job);
                return job.toUpperCase();
            };
    
            InternalController tested = new InternalController(external);
            String results = tested.processRequest(message);
            Assert.assertEquals("HELLO, WORLD!\nCHECK THIS MESSAGE.\n", results);
        }
    }
    
    class InternalController {
        private ExternalController external;
    
        InternalController(ExternalController external) {
            this.external = external;
        }
    
        String processRequest(String message) {
            String[] jobs = message.split("\n");
            StringBuilder results = new StringBuilder();
            for (String job : jobs) {
                String result = external.doWork(job);
                results.append(result).append("\n");
            }
            return results.toString();
        }
    }
    
    interface ExternalController {
        String doWork(String job);
    }
    Ответ написан
  • Java. Как отпимизировать работу программы?

    TheKnight
    @TheKnight
    Программист
    Во первых - вам нет необходимости хранить все перестановки в памяти компьютера. Их можно скидывать на диск, сразу после генерации. Но не факт.
    Во вторых - возможно, вам нужен алгоритм Нарайны.
    В третьих - далеко не везде нужен ArrayList. Во многих ситуациях вы можете обойтись массивом фиксированной длины. Например, для хранения текущей перестановки.
    В четвертых - если у вас так много генерируется перестановок - есть шанс, что они и в хэшсет не влезут. Думается мне, вам стоит задуматься о сортировке и фильтрации во внешней памяти.
    В пятых - существуют ли ограничения по используемой памяти и общему времени работы?
    В шестых - если вы воспользуетесь алгоритмом Нарайны - вы сможете сэкономить память на хранение результата в некоторых случаях. Подсказка - посмотрите на мультимножество вида {1^10, 2^1} с 11 неуникальными и двумя уникальными перестановками и предположите, сколько из этих перестановок будут храниться в HashSet.

    P.S.: А язык вывода у вас украинский или белорусский? Слово "мультимножина" стоит запомнить. Кроме того, вам нет необходимости использовать printf, там, где достаточно написать println(s). А вот там, где printf пригодился бы - вы используете println. Сравните со своим кодом.
    String s = "----------------------------------------";
    System.out.println(s);
    System.out.printf("Всього можливих комбінацій: %d ",count);
    System.out.println(s);
    long timeSpent = System.currentTimeMillis() - startTime;
    System.out.printf("програма виконувадась %f секунд", (timeSpent*10e-6));
    Ответ написан
    Комментировать
  • Как ускорить обработку??

    TheKnight
    @TheKnight
    Программист
    TreeSet вместо ArrayList с кастомным компаратором? Но это в случае если нет завязок на порядок вставки. Для многопоточного случая есть аналогичные структуры данных.
    Ответ написан
  • Как лучше организовать очередь отложенной обработки изображений?

    TheKnight
    @TheKnight
    Программист
    1) RabbtiMQ|Kafka|ActiveMQ|whatever. Кладем в очередь сообщения на обработку, помним про ограничения на размер сообщения.
    2) Самописное решение на костылях и скотче, с использованием БД.
    3) Сделать развязку в виде сервиса хранения данных и рест интерфейса. PHP принимает изображение, сохраняет, посылает рест запрос на обработку сообщения лежащего на сервере. ЛБ динамически распределяет запросы по молотилкам.
    4) Any variants.

    Но на самом деле есть вопрос. А много ли тех изображений? Может и не стоит заморачиваться-то?
    Ответ написан
    2 комментария
  • Как в Jmeter сравнить значение переменной с каким-то эталонным?

    TheKnight
    @TheKnight
    Программист
    Assertion пробовали?
    Возможно это вам поможет.
    Ответ написан
    Комментировать
  • Не порекомендуете англоязычный художественный материал для перевода?

    TheKnight
    @TheKnight
    Программист
    Я бы на вашем месте попробовал бы Артура Конан Дойля. Конечно, Шерлок Холмс это не фантастика, но все же отвечает требованию коротких рассказов. Да и весьма захватывающе.

    Если снять ограничения размера - Джером К. Джером.
    Ответ написан
    2 комментария
  • Как быстро парсить текст на JAVA?

    TheKnight
    @TheKnight
    Программист
    Задача плохо формализована.
    Вопросы:
    1) Какие требования по производительности? Размер строк, количество строк в секунду, etc. Если требования не очень высоки - возможно вас устроит и обычные регулярные выражения.
    2) Насколько часто меняются требования к проверке? Если редко - есть смысл написать некоторое количество классов, каждый из которых будет специфицирован под конкретную задачу.
    3) Если требования меняются часто, но при этом только добавляются, оставляя предыдущие требования необходимыми для исполнения - чем не устраивает решение с генерацией кода проверки на лету?

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

    TheKnight
    @TheKnight
    Программист
    https://examples.javacodegeeks.com/core-java/util/...
    Может быть эта статья вам поможет?
    Ответ написан
    Комментировать
  • Как реализовать мои маленькие мысли?

    TheKnight
    @TheKnight
    Программист
    InetAddress address = InetAddress.getByName("www.example.com"); 
    System.out.println(address.getHostAddress());

    stackoverflow.com/a/15788605

    Это что касается получения IP по имени.
    Что же касается кода - какой нафиг флоат? Зачем дабл? Какого черта используется неявное приведение Float к Double? Что происходит вообще?
    Ответ написан
    4 комментария
  • Какую систему сборки использовать?

    TheKnight
    @TheKnight
    Программист
    Рекомендую Gradle. Преимущества:
    1) Менеджмент зависимостей.
    2) Возможность писать плагины на разных языках достаточно простым образом.
    3) Уже существующая неплохая инфраструктура плагинов.
    4) Если сильно надо - можно спокойно хачить билдскрипт так, как удобнее. Мавен это не позволяет. При этом основная часть сборки остается декларативной.
    Ответ написан
    Комментировать
  • В какой универ поступить на программиста после армии в СПб?

    TheKnight
    @TheKnight
    Программист
    Если мне не изменяет память, то среднее специальное не мешает учиться на бюджете на вышке.
    Что же касается поступления - поговори с непосредственным командиром или замполитом. Глядишь и посоветуют куда, и рекомендацию напишут хорошую - будет плюс при поступлении. Но для этого разумеется надобыть на хорошем счету.
    Если нет 22 - можешь попробовать поступить в высшее военное, при наличии желания.

    P.S.: Как человек без высшего образования в области IT заявляю ответственно - иди учись. Это полезно и нужно.
    Ответ написан
    1 комментарий
  • Почему для static-метода нельзя опустить имя класса?

    TheKnight
    @TheKnight
    Программист
    Рекомендую прочитать про static import. Думается мне, это вам поможет для конкретно вашей задачи.

    Если по существу - для имплементации вашей хотелки необходимо при компиляции обойти все классы в classpath и проверить наличие там данной функции и только после этого записать в байт-код вызов конкретной функции.
    Кроме того, непонятно, как работать с коллизиями.
    Ответ написан
  • Протестировать Java приложение с входящими параметрами?

    TheKnight
    @TheKnight
    Программист
    Параметры как то между собой связаны? Возможно ли при помощи четырех вложенных циклов перебрать все возможные значения? Если да, то банальный sh(bat, powershell) скрипт который будет запускать приложение с разными параметрами.

    Есть подозрение, что вы что то делаете или объясняете не так и вам на самом деле нужны модульные тесты(они же юнит тесты). Для такой задачи хорошо подходит JUnit.
    Ответ написан
    1 комментарий
  • Как улучшить архитектуру приложения?

    TheKnight
    @TheKnight
    Программист
    1) А что мешает сразу на месте залоггировать ошибку без выброса эксепшена? Так ли он нужен там?
    3) Не логгируй из конструктора исключения. Не все смогут догадаться найти вызов логгера там.
    2) Для сообщений есть хорошая такая штука - Resource Bundle. Позволяют заодно и интернациализацию сделать не так сложно как могло бы быть.

    Чем не устраивает стандартный try/catch?
    Если уж сильно хочется все повыносить - сделай банальный ExceptionHandler и скидывайв него пойманные и созданные исключения.
    Ответ написан
    1 комментарий
  • Стоит ли смотреть чужой код, разбирать и затем воспроизводить его самому на память для учебы?

    TheKnight
    @TheKnight
    Программист
    Сделай по другому. Напиши некий набор тестов, которые проверяют выполнение задачи, решенный тем кодом, который ты хочешь "заучить". Потом напиши кондовое, костыльное, но свое решение этой задачи проходящее набор написанных на предыдущем этапе тестов. Сравни эти два решения. Попробуй понять, почему автор сделал так а не иначе. Чем твое решение хуже или лучше. Сделай выводы разнице и сходстве.
    В чем плюс - ты учишься придумывать свое решение для задачи. К сожалению не все и не всегда придумано за нас и гугл не всегда всемогущ. В чем минусы - ты можешь писать отвратительные тесты по своей лени и можешь писать не менее отвратительный код, расчитанный только на прохождение этих тестов. К примеру захордкодить входные данные и ответы на них. Правда как по мне во многих простых задачах проще написать нормальное решение чем хардкодить данные.
    Если речь идето стиле кода - тогда надо не переписывать код по памяти, а просто учавствовать в жизни соответствующего проекта. Тебе по пальцам настучат за кривую стилистику, не переживай.
    Ответ написан
    Комментировать
  • Структура, архитектура JVM(внутреннее устройство), от .java до .jar?

    TheKnight
    @TheKnight
    Программист
    Не факт, что я прав, но возможно вам поможет информация из книг The Java language Specification и The Java Virtual Machine Specification. Они доступны на сайте оракла. Ссылка тыц

    Кроме того рекомендую посмотреть доклады с JavaPoint и других русскоязычных конференций. К примеру интересный для вас доклады могут быть у Романа Елизарова, Алексея Шипилева.
    Ответ написан
  • Как правильно дать права на папку tomcat7 для пользователя tomcat в ubuntu?

    TheKnight
    @TheKnight
    Программист
    Я бы не стал бы ставить томкат через apt-get а ставил бы его домашнюю директорию отдельно созданного пользователя. Прям распаковкой архива.
    Ответ написан
  • Зачем вы пошли в разработчики?

    TheKnight
    @TheKnight
    Программист
    1) Мечта. С 8 лет мечтал стать програмиистом.
    2) Доволен.
    3) Это их право и их выбор.
    4) Жизнь покажет.
    5) Не вижу смысла менять ее во многих мелочах и не вижу возможностей изменить ее действительно кардинально.
    Ответ написан
    Комментировать