Программист-самоучка, музыкант-самоучка, поэт-само... а, ну да, у нас же нет поэтического образования.

Пишу на чем попало, сейчас в основном это Swift, Python или Java.
Интересуюсь матмоделированием, классической и рок музыкой. Играю на гитаре и блокфлейте, пытаюсь освоить пианино.

Долгое время имел целый один патч в OpenSource - для проекта реализующего привязку Gnuplot к Ruby. Но потом пришлось запилить еще несколько в разные проекты.

В узких кругах известен по прозвищу Номад. В других, не менее узких - TheKnight.
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (19)

Лучшие ответы пользователя

Все ответы (39)
  • В какой универ поступить на программиста после армии в СПб?

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

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

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

    Чем не устраивает стандартный try/catch?
    Если уж сильно хочется все повыносить - сделай банальный ExceptionHandler и скидывайв него пойманные и созданные исключения.
    Ответ написан
  • 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
    Программист
    Рекомендую Gradle. Преимущества:
    1) Менеджмент зависимостей.
    2) Возможность писать плагины на разных языках достаточно простым образом.
    3) Уже существующая неплохая инфраструктура плагинов.
    4) Если сильно надо - можно спокойно хачить билдскрипт так, как удобнее. Мавен это не позволяет. При этом основная часть сборки остается декларативной.
    Ответ написан