четверг, 23 марта 2017 г.

English Intermediate в skyeng (done)

    Долго я вымучивал английский. Ещё со школы. И в институте. И потом ещё несколько разных попыток с учителями и школами. Поэтому пусть пока небольшой уровень, но всё-же добытый потом и кровью для меня чертовски важен.
    Курс изучил, экзамен сдал (не так хорошо, как хотелось, но всё по честному:)), сертификат получил:


    Кстати, мне недавно попался отличный сервис в сети https://www.italki.com/i/AcAbaB (это инвайт - по нему каждый получит плюс 10$ в копилку), где можно беседовать и учиться (за денежку) с носителями языка. По скайпу, разумеется. Но в отличие от школы, во-первых, там можно очень динамично формировать график занятий, во-вторых, общаться с разными людьми, а вот в-третьих (что не очень хорошо с точки зрения учёбы) у каждого преподавателя своя программа, так что иногда сложно ориентироваться. Но как возможность поработать над speaking - великолепно.

   НО! Для реальной работы мой текущий уровень мал. И надо отдать должное, я это прекрасно понимаю сам. Поэтому изучение продолжается. Впереди upper.


среда, 22 февраля 2017 г.

Java 8 example: two String arrays to one Set with Streams


Just an example


@Test
public void testArraysToStream() {
    String[] s1 = null;
    String[] s2 = null;
    Set<String> res = Stream.of(s1, s2)
                .filter(Objects::nonNull)  // <-- Filter out null values
                .flatMap(Stream::of)
                .collect(Collectors.toSet());
    Assert.assertNotNull(res);
    Assert.assertEquals(0,res.size());


    s1 = new String[]{"1","2"};
    Set<String> res2 = Stream.of(s1, s2)
                .filter(Objects::nonNull)  // <-- Filter out null values
                .flatMap(Stream::of)       // two arrays to one stream
                .collect(Collectors.toSet());
    Assert.assertNotNull(res2);
    Assert.assertEquals(2,res2.size());
    s2 = new String[]{"3","4"};
    Set<String> res3 = Stream.of(s1, s2)
                .filter(Objects::nonNull)  // <-- Filter out null values
                .flatMap(Stream::of)       // two arrays to one stream
                .collect(Collectors.toSet());
    Assert.assertNotNull(res3);
    Assert.assertEquals(4,res3.size());
    Assert.assertNotNull(res3.iterator().next());
}

вторник, 7 февраля 2017 г.

Что такое стратегия использования SVN

    На днях коллега поинтересовался - какая стратегия SVN используется у нас при работе с хранилищем. Ответить было нечего, так как это понятие начисто стёрлось у меня из памяти. Хотя как выяснилось при дальнейшем поиске информации, я об этом когда-то читал.
    Смысл термина "стратегия использования SVN" в том, как именно в хранилище sVN именуются каталоги(branches и tags) проекта, а также когда и куда сливаются(merge) ветки.

    Описание типового шаблона из руководства svn: SVN.Ветвление и слияние.Типовые примеры
    Хорошее простое изложение с примерами можно посмотреть тут: Стратегии использования SVN

    Я для себя сформулировал смысл так:

    Простой случай (то, что используется у нас):
- для ошибок и фич создаётся branch, и потом эта ветка сливается в trunk;
- при фиксации, создаётся tag.

    Более сложный случай (как-раз описан в руководстве svn):
- для релиза создаётся branch (1.x-stable);
   -- здесь правятся ошибки этого релиза
   -- для каждой передачи всё фиксируется в tags (1.x.1, 1.x.2)
   -- всё сливается в trunk
- для новых фич создаётся новая ветка (1.(x+1))
   -- здесь ведётся разработка новой функциональности
   -- сюда сливается всё из trunk (чтобы попали исправления ошибок из релизов)
   -- в конце эта ветка сливается в trunk
   -- на основе trunk после этого создаётся новый tags/1.(x+1)
 
Для себя сделал ещё напоминающую табличку:


вторник, 10 января 2017 г.

Free books from O’Reilly. 2016

Отличная подборка бесплатных книг от издательства O’Reilly за 2016 год

https://lifehacker.ru/2017/01/09/free-oreilly-ebooks/  (ссылки на тематические подборки)

Прямая ссылка на раздел с книгами о разработке ПО

http://www.oreilly.com/programming/free/

Архив бесплатных книг за предыдущие годы

http://www.oreilly.com/data/free/archive.html

вторник, 25 октября 2016 г.

Формат даты-времени в параметрах функции, в mvc-контроллере spring

При получении параметра из query-строки в http-запросе, можно задать шаблон для даты-времени (по умолчанию это ISO).
Задаётся аннотацией org.springframework.format.annotation.DateTimeFormat с указанием шаблона.

Пример


@RequestMapping(path = "/test", method = RequestMethod.GET)
public List<MyObject> getTest(
  @RequestParam(name="in_baseDateTime") @DateTimeFormat(pattern="dd.MM.yyyy HH:mm:ss") LocalDateTime baseDateTime){...}

вторник, 18 октября 2016 г.

Тест junit с hamcrest с проверкой коллекции на содержание чего-либо

Часто, я первой проверкой на коллекции в unit-тесте, ставлю простое определение есть ли что-то там или нет.

Обычно (по ленивой привычке) я делал это примерно так:


@Test
public void testNotEmptyList(){
    List<String> list = Arrays.asList("item_1","item_2");
    Assert.assertNotNull(list);
    Assert.assertTrue(list.size() > 0);
}

Но тут решил попробовать Hamcrest matchers и почему-то не сразу понял как там сделать такого рода проверку с коллекциями. Без коллекций всё достаточно понятно, а вот именно с коллекциями как-то не сразу въехал. Но в результате получилось вот так:

...
import org.hamcrest.collection.IsEmptyCollection;
import static org.hamcrest.CoreMatchers.*;
...
@Test
public void testNotEmptyList(){
    List<String> list = Arrays.asList("item_1","item_2");
    Assert.assertThat(list, notNullValue());
    Assert.assertThat(list, not(IsEmptyCollection.emptyCollectionOf(String.class)));
}

Версия Hamcrest должна быть не меньше 1.3

пятница, 30 сентября 2016 г.

Сертификация OCA Java SE 8 Programmer (1Z0-808). Complete

Сегодня сдал Oracle Certified Associate, Java SE 8 Programmer I (1Z0-808) 
(Результат 90%)
С одной стороны хорошо, а с другой - это только часть экзамена :)
В любом случае, полезно.  Но в нём только базовые знания, более глубоко в части II. Посмотрим, может и до неё доберусь.

Готовился со средней интенсивностью около 3-х месяцев. Пользовался следующими вещами:
Книга: 
Тесты:
  - всё, что бесплатно нашёл в интернете
  - книжка "OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808" ( в ней, кстати, указано где тесты можно взять)
  - набор тестов http://enthuware.com/ (10$)

Этого, на мой взгляд вполне достаточно для успешной сдачи.