• Как лучше оформить java code?

    @guras256
    Прокачанный восьмой джавой вариант предыдущего оратора =)

    Ну само собой, лямбы можно класть любые и обрабатывать ситуации как угодно, а методы разнести по классам, тут самый простой пример.

    Ну и лучше особо восьмой джавой не увлекаться, даже этот пример сквозит стримозом головного мозга и порождает кучу лишних объектов =)

    public class App {
    
        private static Map<String, Runnable> actionMap = new HashMap<>();
        private static Runnable defaultAction = App::defaultActionMethod;
        static {
            actionMap.put("Выбор", App::choice);
            actionMap.put("МультиВыбор", App::multipleChoice);
            actionMap.put("yetanotherSubString", App::yetAnotherSubString);
        }
    
        private static void choice() {
            System.out.println("doSomething");
        }
    
        private static void multipleChoice() {
            System.out.println("doThisOrThat");
        }
    
        private static void yetAnotherSubString() {
            System.out.println("doYetAnotherSomething");
        }
    
        private static void defaultActionMethod() {
            System.out.println("Action not found.");
        }
    
        public static void main(String[] args) {
            String[] cases = {"Выбор", "МультиВыбор", "yetanotherSubString", "йуцйцуйцу"};
            Stream.of(cases)
                    .map(actionMap::get)
                    .map(Optional::ofNullable)
                    .forEach(runnable -> runnable.orElse(defaultAction).run());
        }
    }

    doSomething
    doThisOrThat
    doYetAnotherSomething
    Action not found.
    Ответ написан
    Комментировать
  • Java. Отправка письма через gmail host c аутентификацией proxy по логину и паролю?

    stas_agarkov
    @stas_agarkov
    Я программист
    public static void sendMail0(String smtpServer, String smtpPort, final String smtpLogin, final String smtpPassword, String emailRecipients, String emailSubject, MessageSetter messageSetter) {
    try {
    Properties properties = System.getProperties();
    properties.setProperty("mail.smtp.host", smtpServer);
    properties.setProperty("mail.smtp.port", smtpPort);
    properties.setProperty("mail.smtp.socketFactory.port", smtpPort);
    properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    properties.setProperty("mail.smtp.socketFactory.fallback", "false");
    properties.setProperty("mail.smtp.auth", "true");
    Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(smtpLogin, smtpPassword);
    }
    });
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(smtpLogin));
    for (String recipient : StringUtils.split(emailRecipients, ",")) {
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
    }
    message.setSubject(emailSubject, "UTF-8");
    messageSetter.set(message);
    Transport.send(message);
    log.debug("Письмо успешно отправлено по адресам: " + emailRecipients);
    } catch (MessagingException e) {
    log.debug("MessagingException", e);
    }
    }

    new MessageSetter() {
    @Override
    public void set(MimeMessage mimeMessage) throws MessagingException {
    mimeMessage.setContent(emailHtmlText, "text/html; charset=UTF-8");
    }
    }

    У меня работает этот код.
    Ответ написан
    Комментировать
  • Можно ли упростить данный код на Java (работа со строкой)?

    EugeneP2
    @EugeneP2
    Java Dev
    1. условия заменить на конструкции if/else;
    2. вынести этот код в отдельный метод;
    3. назвать метод так, чтоб можно было понять что он делает;


    И будит ОК
    Ответ написан
    Комментировать
  • Можно ли упростить данный код на Java (работа со строкой)?

    @Beltoev
    Живу в своё удовольствие
    String JobPlace = start.JobPlace.length > 1 ? start.JobPlace[cc] : start.JobPlace[0];
    if (JobPlace != null)
        JobPlace = new String(JobPlace.getBytes(), StandardCharsets.UTF_8);
    Ответ написан
    Комментировать
  • Как вы повышаете собственную продуктивность?

    stasparshin
    @stasparshin
    не забывайте помечать ответы. дрочу на статистику
    + Вести список дел
    + Вести список проектов
    + Выбирать главное и стараться уменьшать первые два
    + Стараться каждый день сделать один MIT (most important task)
    + Записывать все идеи в инбокс и только потом переносить в списки
    + Найти подходящее для этого всего приложение
    + Прочесть GTD Девида Аллена
    + Заводить помидор, когда работаешь. Техника Помодоро.
    + Выключить звук на телефоне.
    + Бороться с остальными поглащателями времени.

    Но это все возможно только после принятия тезиса о том, что нет такой проблемы как "нехватка времени". Времени у всех одинаково. Успешные люди — это те, кто находят время для важных вещей.
    Ответ написан
    7 комментариев
  • Сайты, на которых может подзаработать тестировщик?

    @azShoo
    odesk и только.
    Забудьте про русский язык и русских заказчиков вообще.
    Ответ написан
    2 комментария
  • Как тестировать на web-приложение на безопасность?

    @Qudu
    Думаю очень полезен будет вот этот материал

    Как новичку Вам все же стоит воспользоваться сканерами безопасности: Acunetix, Netsparker, w3af
    Для отправки запросов вы можете использовать как CURL, так и Burp, в том числе Acunetix обладает таким функционалом.
    Чтобы понять как воровать куки, необходимо разобраться с XSS и сценарии атак на Cookie.

    Все это подходит для BlackBox тестирования, если у Вас есть код то проверьте его на лучшие практики.
    Описанное покрывает Вашу задачу. Для более детального анализа обращайтесь к специалистам. ;-)
    Ответ написан
    Комментировать
  • Как можно улучшить процесс тестирования сайта?

    @azShoo
    Все зависит от того, что хотите улучшать.
    В отрыве от существующих проблем есть, фактически, следующие направления:
    1) Оптимизация и распаралелливание выполнения тестов.
    Цель - делать тестовые прогоны быстрее.
    Способ - рефакторинг, параллельные запуски, оптимизация с точки зрения тест-дизайна.

    2) Оптимизация тестового набора: или в ширь (увеличение тестового покрытия) или в глубь (большее количество тестовых данных и тестовых сценариев)
    Цель - ловить больше дефектов.
    Способ - оптимизация тест-дизайна, генерация новых тестовых данных.

    3) Стабильность и поддерживаемость. Опять же рефакторинг и оптимизация.

    4) Юзабилити. Прикручивание автотестов к билдпланам, генерация отчетов об их прохождении, генерация дефектов в багтрекере при падениях и прочее.
    В общем более плотная интеграция с остальной тестовой инфраструктурой.

    Это так, на вскидку.
    В целом что бы сказать "куда развивать" нужно понимать, чего нехватает.
    Тесты не стабильны (псевдо-падения) -> рефакторить, пропускается много багов по покрытыму функционалу - > допиливать тестовый набор\тестовые данные, много времени тратите на анализ результатов прогона и заведение багов - оптимизировать генерацию отчета о тестировании, делать авто-репорт в багтрекер.
    Опять же, если на проекте часто актуальны баги типа "правили в одном месте - отвалилось в другом" - нужно максимально актуализировать скорость прогона и прикручивать к билдплану проекта. Запушили изменения - запустились тесты.
    Ответ написан
    Комментировать