пятница, 29 марта 2013 г.

Новые планы на ближайшее время

Продолжая славную традицию личных около рабочих планов, начатую тут, решил написать новый список. Наученный опытом полученным от анализа предыдущих планов решил сразу увеличить срок выполнения для новых и установить их в районе года - полтора.  Опять разделим список на приоритетные задачи и менее важные. Итак приступим. Задачи в каждом списке в произвольном порядке.

Приоритетный список:

  1. Изучить язык Scala и написать проект на нем. Этот язык мне давно интересен и очень хочется его потрогать. Так как за прошедший год успел освоиться с jvm и стандартной библиотекой Java, то попробовать на jvm новый язык кажется очень логичным. Scala у нас уже кое-где используется в отделе в продакшене и вроде парни довольны. В качестве IDE конечно пойдет IntelliJ.
  2. Обновить HabraReader и сделать второе приложение для iOS. Обновление выпустить просто необходимо и оно уже под парами. Для второго приложения уже есть куча идей: думаю будет очень интересно.
  3. Поработать с big data и NoSQL хранилищами. За последнее время по работе плотно столкнулся с этими вопросам и знаете, мне понравилось. К сожалению сейчас процесс несколько приостановился, но надеюсь что будет продолжение. Это как сладкие жевательные медвежонки - чем больше ешь, тем больше хочется.

Список с задачами второго приоритета:
  1. Попробовать реанимировать изучение English - перед этим придется найти стимул для этого. Задача переехала из предыдущего списка.
  2. Попасть на конференцию по интересующим сейчас тематикам (C++, Java, high load computations, iOS). Продолжаем с предыдущего года. Думаю эта задача так и будет тянуться все время. Уже планирую идти на JPoint.
  3. Углубить Python. Тут по пунктам: дочитать большой справочник по python, получше изучить батарейки из комплекта python,  попробовать плотно PyCharm в качестве IDE (вместо Sublime Text 2 и Emacs).
  4. Попробовать C++x11. Кажется компиляторы уже почти готовы. Да и Страуструп уже на пороге с новой книгой. Осталось только найти нужный проект.

Список получился интересный. Даже не терпится погрузиться в это.

среда, 27 марта 2013 г.

Ревизия планов

Когда то давно (уже больше года назад) я составил для себя список личного, около рабочего, развития. Время пролетело не заметно и прошло явно больше намеченных 3-4 месяцев и я решил проверить что из запланированного мной реализовано, и наверное составить новый список на грядущий год-полтора. Итак приступим к осмотру.

1. Расширить свои теоретические познания в области data mining. В списке сейчас 3 книги:
- Web Data Mining от Bing Liu (прочитано 70%). Отличное введение в майнинг и поисковые технологии
- Программируем коллективный разум от Тоби Сегаран (прочитано 10%). Книга с практическим уклоном с периметрами на python.
- Введение в информационный поиск от Маннинга и компания. Чем то похоже на первую книгу - читать пока не начал.

Тут прочитаны первые 2 книги (вот их обзор: здесь и здесь). Третья книга пока только бегло просмотрена. Итого выполнено на 70%.

2. Написать свое первое приложение для iOS и выложить в стор. Кажется что это будет очень интересно - во всяком случае первые впечатления от документации Apple оставили очень принятые впечатления. Objective C пока кажется несколько странным, но посмотрим...
Приложение написано и даже написал о нем пост на хабре. Сейчас готовится обновление с исправлением ошибок и новым функционалом. Об этом планирую потом написать подробнее. Итого выполнено на 100%.

3. Углубить знания в области Python. Все скрип ты писать исключительно на нем (вместо Perl) и изучить недавно купленный справочник по сему очень интересному языку.

Все скрипты теперь в основном пишутся мною на python. Perl, shell и awk остались только для поддержки legacy и для быстрого написания однострочников в основном по анализу данных. Справочник по python так пока и не был прочитан. Итого выполнено на 50%.

Теперь по планам из во второй очереди по приоритетам.

4. Продолжать изучать Java.
- дочитать двухтомник Хортсманна Java 2 (первый прочитан на 80%)
- продолжить изучение IntellyJ IDE
- возможно достанется какой-то проект на нем что-бы по практиковаться
Двухтомник прочитан и даже прочитаны еще две очень полезные книги о Java.  IntellyJ IDE активно используется. И даже готов проект на java (по бронированию отелей) - он уже вышел для карт. Планируются и дальнейшие релизы. Итого выполнено я бы оценил на 120%.

5. Попасть на конференцию по интересующим сейчас тематикам (C++, mining, high load computations, iOS).

В прошлом году был на двух интересных конференциях: HighLoad++ и Application Developer Days. В ближайшее время планирую посетить JPoint. Итого выполнено на 100%.
6. Попробовать реанимировать изучение English - перед этим придется найти стимул для этого.
Стимул за этот год фактически так и не был найден. Итог заслуженные 0%.

7. Дождаться ту пару книжек по boost которые я заказал и прочитать их.
Обе книги прочитал. Остался разочарован - уровень не самый высокий. Но все-таки выполнено на 100%.

Подведем итоги:
( 70 + 100 + 50 + 120 + 100 + 0 + 100) / 7 = 77%
В общем за срок ~ в 4 раза превышающий запланированный выполнено чуть больше чем на 3/4. Да конечно, было сделано и еще много всего не вошедшего в этот список, но вообще тенденция показательна. Скоро напишу про планы на ближайший год: возможно удастся их выполнить за пятилетку.

воскресенье, 24 марта 2013 г.

Погружаясь в мир Java

Продолжая изучать Java, прочитал еще две знаковые в этой области книги. Прежде всего это очень известная книга Брюса Эккеля "Философия Java". Как ни странно она по аналогии с "Core Java" так же зачастую делает ссылки на С++. По духу книга очень близка к уже упомянутому двухтомнику Хортсманна и Корнелла, но зачастую делает акценты в других местах. Именно сравнить эти две книги и хотелось бы дальше.

Эккель в начале дает описание ООП, основ Java, его синтаксиса, затем идет описание коллекций объектов, RTTI, шаблонов, массивов, io и завершает все глава про параллельное выполнение.

Автор придумал хитрую систему примеров: в начале дается полный исходный код, а затем в комментарии приводится формализованный вывод этого кода на консоль. Благодаря паре скриптов, написанных им, пример вывода в комментарии никогда не расходится с исходным кодом (что зачастую можно видеть у других авторов).

В книге очень хорошо описана реализация внутренних классов: тема достаточно нетривиальная, с подводными камнями. Ставим здесь плюс Эккелю. Так же очень хорошо описана параметризация и RTTI. Одна из самых сложных тем в Java - использование системы ввода/вывода (в основном за счет активного использования шаблона декоратор) тут описано намного понятнее чем в Core Java, в том числе и за счет исторического экскурса.

С другой стороны в Core Java имеются свои неоспоримые преимущества: к примеру, есть не мало тем, которых Эккель вообще не касается, но они очень важны для практического применения Java.  В целом "Философия Java" написана живо и интересно. Автор не боится при случае указать на недостатки в проектировании Java и книга выглядит достаточно объективно. В целом обе книги не плохо дополняют друг друга: разве что первые несколько глав Философии можно просто пробежать глазами после Core Java.

Так же хотелось бы написать про книгу Джошуа Блоха "Java. Эффективное программирование". Книга абсолютно не похожа на две предыдущие. Оформлена она в том же стиле как книги, например, Скотта Мейерас о С++: т.е. набор практических советов (один совет - одна глава) по различным областям программирования на Java.

Основные вопросы, затрагиваемые в книги это:

  • создание и уничтожение объектов
  • методы
  • классы и интерфейсы
  • замена конструкций из С
  • исключения
  • потоки
  • сериализация

В целом почти все разделы очень полезны. Информация сжата и советы конкретны. Проблемы выявлены очень четко. Например тут описана модель памяти Java, что я не нашел в предыдущих двух книгах. В целом не советую кому-либо садиться за написание крупного проекта без тщательного штудирования труда Блоха. Т.е. как и в мире С++ книга этого типа является must read для любого уважающего себя программиста на Java.



p.s.
В релиз на maps.yandex.ru уже вышел продукт он-лайн бронирования отелей (см. скриншот рядом).

Весь бэкэнд написан на Java и ходит он-лайн (т.е. сразу когда пользователь задает запрос в сервисе) к нашим партнерам за данными по бронированию отелей.