Sunday, December 30, 2012

Статья на Хабре

По просьбам трудящихся написал статью на Хабр о хакатоне и проекте нашей команды. Ссылка: http://habrahabr.ru/company/epam_systems/blog/164201/

Tuesday, December 11, 2012

Доклад на JUG KPI


В прошедшую субботу мы вместе с Олегом Тымчаком выступали на встрече Java User Group KPI с докладом о своем хакатон-проекте и делились полученным опытом веселого и полезного времяпрепровождения на таком мероприятии. Слайды презентации доступны по ссылке.

Среди прозвучавших докладов отдельно следует выделить захватывающую дух облачную платформу Jelastic, которую представлял Константин Александров. 

Сама встреча проходила в очень уютной атмосфере офиса компании EPAM, с печеньками и другими ништяками.

Wednesday, December 5, 2012

Unicode transformation format

Волей случая пришлось разобраться в том, где и когда применяются кодировки UTF-8 и UTF-16, и в чем же их отличия.

Привожу тезисно свои выводы:
1) Сначала было слово, и записывалось оно в кодировке ASCII – 256 символов (1 байт), предполагалось наличие латинского и одного регионального алфавита (семейство ASCII-совместимых кодировок, например, КОИ-8). Все еще применяется в критичных к размеру сообщений сервисах и в вебе, но морально устарела, полагаю что место этой кодировки – в музее
2) Кодировка UTF-8 содержит 2^16 = 65536 символов и обратно совместима с ASCII.
Каждый символ может кодироваться в 1-4 байта. Символы русского алфавита и некоторые другие алфавиты имеют длину 2 байта
3) Кому-то и такого количества символов показалось мало, и был введен стандарт UTF-16. Иногда пишут UTF-16LE или UTF-16BE (little-endian/big-endian) для указания порядка байтов.
Количество символов: 1112064. Каждый символ кодируется в 2 или 4 байта. Совместимость с UTF-8 и ASCII: нет
4) Для передачи данных по сети гораздо выгодней использовать UTF-8 (что в большинстве случаев и делается) – короче длина сообщений. Еще аргумент в пользу UTF-8 – при потере одного байта остальной текст может быть восстановлен, а вот для UFT-16 в таком случае возможно полное искажение текста
5) Есть еще кодировка UTF-32, которая кодирует символы только в 4 байта и используется в специфичных случаях
6) В Java все символы кодируются в UTF-16, вопрос применения кодировок в той или иной версии ОС – тема для отдельной дискуссии

Источники:
1) На удивление толковая статья в английской википедии 



Sunday, November 25, 2012

Всеукраинский хакатон


Пару недель назад очень интересно провел время на хакатоне, который проводило наше предприятие среди своих украинских офисов. 24-часовой программистский марафон закончился для моей команды третьим местом в общем зачете и призом за лучший стартап.
Важную роль в таком результате сыграла эффектная презентация (в которой я принял активное участие) и возможность пользователям дать что-то пощупать. Мы залили версию приложения для Android в сеть, что позволило к концу моего выступления уже услышать первый фидбек (пусть он и звучал как “а чего так тормозит..”), который повлёк за собой бурное обсуждение в зале.
  
Немного удивил факт того, что тема (“Green planet”) была оглашена заранее. Такой поворот событий позволил более-менее продумать идею и распределить задачи. 

Общий тренд по хакатону – применение геолокационных сервисов, не удержалась от такого соблазна и наша команда.

Friday, September 28, 2012

No passwords any more

Очень интересную концепцию беспарольной аутентификации описал блог IT-компании Xoxco. Суть идеи в том, что зарегистрированный пользователь вводит вместо связки логин+пароль или электронная_почта+пароль только свой адрес электронной почты. Письмо с генерируемой ссылкой, в которую, вероятно, входит ключ для аутентификации, высылается на этот адрес, пользователь через эту ссылку заходит в защищенную зону. Сеанс может длиться сколько угодно долго. Когда необходимо завершить сеанс - просто делаем логаут. И в следующий раз повторяем все сначала.

Конечно, такая схема подойдет не везде и не всегда. Но в большинстве случаев все гениальное просто, не правда ли?

Sunday, September 9, 2012

IT-индустрия через 10 лет


IT-специалисты и программисты в частности сейчас сильно востребованы на рынке труда стран СНГ. Да и на Западе за хорошего специалиста дорого готовы дать. Но как долго это будет продолжаться? Не является ли социальной несправедливостью факт того, что зарплата адекватного Java-разработчика может в 3-4 раза превышать средний уровень по стране? Имею некоторые соображения по этому поводу.

1)      Дефицит кадров в индустрии не может быть постоянным. Вот уже сейчас университеты круто меняют свои учебные программы в сторону увеличения числа выпускаемых технических специалистов. Но многие ли из этих будущих специалистов знают, что такое быть хорошим инженером или программистом? Поп-культура навязывает образ легкой жизни и быстрых подъемов без больших усилий, а такой поворот в IT вряд ли возможен. Потому полагаю, что после «расширенных» выпусков ВУЗами технарей число специалистов увеличится, зарплаты и конкурсы на вакансии могут снизиться на 15-20%, но взрыва рынка не произойдет.

2)      Информатизации во многих отраслях сейчас продолжает бурный рост, рано или поздно  должен начаться спад или хотя бы замедление. Что-то вроде перегрева дот-комов в начале 2000-х. Гарантированно останется поддержка и доработка под новые требования существующих решений. Хватит ли места для всех специалистов? Можно предположить возможность небольшого спада в индустрии, но учитывая ее гибкость и легкость миграции между технологиями (переход на другую платформу/язык программирования у хорошего спеца вряд ли займет больше 3 недель, хотя  возможны нюансы), сложно считать такой поворот событий большим риском.

3)      А не перехватит ли эстафету бурного развития какое-то другое направление в науке/технологиях? Эти вехи, кажется, повторяют вехи развития общества: индустриальное-постиндустриальное-информационное. А что последует дальше? Быть может, биотехнологии в интеграции с информатикой? То есть, эта биоинформационного общества, где изделия T-800 и T-1000 из культового голливудского фильма станут нормой жизни? Такое счастливое событие нам вряд ли грозит в ближайшие лет 10, а что уж будет дальше – это тема для футурологов.

4)      Как заметил в своей статье на Forbes.ua Андрей Колодюк, в IT основным инструментом производства являются люди. Т.е., абстрактно говоря, они во многом заменяют собой станки на фабриках, а финансовые потоки текут в гавань высококлассных специалистов и их менеджеров или инвесторов. 

Saturday, August 4, 2012

Четыре дня Одессы


В конце июля посчастливилось вырваться в краткосрочный отпуск и посетить Южную Пальмиру. 

Благодаря сухости климата жара почти не ощущалась. Мы даже сделали небольшой велопробег вдоль набережной, арендовать велосипед можно всего за $4.5 в час. 
Очень много дорогих машин, люди одеваются со вкусом, а вот некоторые учреждения не утруждают себя работой даже в рабочее время, или работают только до 16-00. Много отдыхающих из России. На двух экскурсиях, которые удалось посетить, численно преобладали именно они. 

Что больше всего удивило в городе:
1) Героическая история и бесстрашные люди. Герцог Ришелье в борьбе против чумы, «красный» Котовский, оборона Одессы в 1941 году, многочисленные подпольные группы во время оккупации.
2) Очень красивые девушки. В центре города они почти повсюду. Нигде еще такого не видел. 

И вот еще что. Город полностью русскоязычный, как современный город и гавань был основан русской императрицей, а известная политическая сила небезосновательно призывает с бигбордов (у нас в Киеве таких пока не видел): "Говори и думай на своём языке".

Friday, July 27, 2012

Simple Player 1.0


На прошлой неделе наконец выложил на Google Play своё первое приложение - Simple Player.
Простой музыкальный проигрыватель, навигация по трекам - согласно папкам с аудиофайлами. Абсолютно бесплатен.

Идея написать приложение возникла благодаря аудиокнигам, которые временами имеют кривые ID3-теги (исполнитель, название и т.д.) и потому слушать их стандартными плеерами очень неудобно.

Сам компонент плеера вынесен в отдельный сервис, который очень бережно относится к батареи телефона – в отличие от многих других проигрывателей, он находится в памяти только когда открыто его окно или идет воспроизведение в фоновом режиме.

Регистрация на Google Play заняла времени едва ли не больше, чем собственно разработка приложения – ждал 10 дней валидации документов и еще непонятно чего. Пока не начал слать приветы их техподдержке – дело с места не двинулось. Причиной, скорее всего, была неотлаженная работа платежной системы Google Checkout, которую пока никак нельзя обойти – все денежные переводы (и регистрационный взнос $25) делаются только через нее.

Tuesday, July 17, 2012

Брюс Эккель - Философия Java

Шлифуя свои знания по Java Core, недавно прочел (местами – пролистал) рекомендуемую многими книгу Брюса Эккеля «Философия Java» / Bruce Eckel - Thinking in Java. Объем материала большой, с монитора такое читать не хотелось, посему приобрел за $25 на книжном рынке наиболее актуальное, четвертое, издание, 2012 года.
Оригинальный текст был написан автором в 2005 году, и с тех пор успешно издается практически без изменений. Естественно, описана Java SE5. Не самая древняя версия, для глубокого понимания уровня Core вполне достаточно.

Мне очень понравилась первая половина книги – концепции ООП, их развитие и применение в Java. Именно здесь, пожалуй, и применим авторский «разговорный» жанр изложения.
А в целом материал вышел действительно философской. Как и труды Ницше, для понимания сути нужно перечитывать местами 2-3 раза. Отчасти это объясняется и тем, что здесь нет таблиц, а число диаграмм можно сосчитать на пальцах. 

Альтернативой этой книге может быть двухтомник Хорстмана – «Java 2. Библиотека профессионала».

UPDATE
Старшие товарищи подсказали, что купленное мной издание книги сильно урезано по сравнению с оригиналом - особенности "локализации" российского издателя. Некоторые главы и вовсе отсутствуют. 

Friday, July 13, 2012

Про стартапы

На Хабре опубликован перевод интереснейшей статьи Майкла Чёрча (Michael O.Church) с ёмким названием «Не тратьте своё время на дерьмовую работу в стартапе». Повествование о специфике работы в стартапе с точки зрения инженера с описанием некоторых финансовых/инвестиционных деталей. Имея опыт работы наёмным проджект-менеджером в производственном стартапе, полностью соглашаюсь с предложенной автором точкой зрения.

Переведенная статья на Habr: http://habrahabr.ru/post/147675/
Оригинальная статья на сайте автора: http://michaelochurch.wordpress.com/2012/07/08/dont-waste-your-time-in-crappy-startup-jobs/

Friday, July 6, 2012

В удивительной стране мы живем


Вот очередной фокус: 993,6 млн гривен на систему для записи и трансляции видео веб-камерами на парламентских выборах. Около 34 тысяч избирательных участков. На каждом по две веб-камеры.

Сделаем простые подсчеты:

- ДЛЯ КАЖДОГО УЧАТСКА:
ИТОГО ДЛЯ КАЖДОГО УЧАСТКА: 5250 грн.
ДЛЯ ВСЕХ УЧАСТКОВ: 34000 участков*5250 грн = 178,5 млн грн

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



- ДЛЯ ЦЕНТРАЛЬНОГО ПУНКТА: задача обеспечения трансляции с такого количества веб-камер далеко нетривиальная, разработка программного обеспечения потребует немало сил. Потому считаем приблизительно и округляем в бОльшую сторону:
  • Разработка серверной стороны системы + веб-сервера (должно получиться что-то вроде упрощенного YouTube) = 19.5 млн гривен
  • Разработка клиентского ПО + установка образов на всех нетбуках = 0.5 млн гривен
  • Оборудование для дата-центра, коммуникационные услуги (здесь посчитать очень сложно, берем по максимуму, хотя ведь можно использовать и часть имеющихся ресурсов) = 80 млн грн
  • Обустройство офиса, офисная техника, комната для прессы = 10 млн грн
  • Аренда ресурсов для хранения всех видеозаписей в сжатом формате в течение года (тоже очень приблизительно) = 0.25 млн грн
ИТОГО ДЛЯ ЦЕНТРАЛЬНОГО ПУНКТА: 110.25 миллионов гривен.



- Дополнительные расходы:
  • Обучение сотрудников избирательных участков (брошюра + лекция), что может обойтись в 200 грн на каждый из 34000 участков = 6.8 млн грн.
  • Транспортировка техники к каждому участку, прикручивание веб-камер к потолку и прокладывание шнуров – вот это я не берусь оценивать, но прикинем что обойдется сие действие тоже в 200 грн на каждый из 34000 участков = 6.8 млн грн.

Подводим смету: 110.25 млн грн + 178,5 млн грн + 13.6 млн грн  = 302.35 млн гривен. И это по розничным ценам при самом грубом подсчете. Вывод: около 70% выделяемой суммы можно сэкономить.

А вспоминая выборы президента России в марте этого года с веб-камерами на 90% избирательных участков, возникают очень большие сомнения в необходимости этих веб-камер на выборах вообще :)

Sunday, July 1, 2012

Блог Insight IT


Очень познавательный блог Ивана Блинкова Insight IT об архитектуре больших высоконагруженных систем. Рассмотрены компоненты таких гигантов, как Facebook, Вконтакте, Stack Overflow и Instagram.
В последних своих постах автор развивает еще одну интересную тему – интерактивные сайты. Стиль изложения и глубина понимания Иваном предметной области приятно удивляют, выделяя его проект среди сотен похожих ресурсов.

Tuesday, June 26, 2012

Бесконтактные измерения

Группа ученых из MIT и Quanta Research Cambridge опубликовали занятнейшую статью, где представили схему фильтра для выделения мелких скачков в видеопотоке. Основная идея заключается в усилении малейших перепадов цвета и крошечных перемещений на входной серии изображений. При подстройке под определенную точку на теле человека этот фильтр может быть применим для измерения частоты сердечных сокращений и дыхания. Такое решение сулит большой шаг вперед для массовой медицины, компетентных органов и игроков в покер :)
В сети материалы и матмодели стали доступны больше месяца назад. Исходные коды обработчика обещают открыть в ближайшее время.


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

Friday, June 22, 2012

Java EE 6 Tutorial


Осваивая JavaEE-программирование, столкнулся с большим количеством статей и записей в блогах о частных случаях использования тех или иных технологий. Картину «в целом» собрать оказалось сложно. Не слишком эффективны и официальные мануалы к той или иной технологии (напр., JPA или EJB3) из-за акцентирования внимания в них именно на свои продукты.
Спасибо Гуглу, который привел меня на блог австрийского разработчика по имени Andreas Manessinger. Вот здесь http://programming.manessinger.com/tutorials/an-eclipse-glassfish-java-ee-6-tutorial/ он приводит очень подробный учебный курс по Eclipse / GlassFish / Java EE 6. Размах проекта впечатляет, автор не поленился добавить работу с протоколом REST и СУБД PostgreSQL.


Thursday, June 21, 2012

Hello, world!

Запускаю этот блог как удобное средство для хранения технической информации, идей и впечатлений.


Буду скромен и скажу, что я пока не эксперт в сфере своей профессиональной деятельности – разработке программного обеспечения. Отлично понимая это, хочу постоянно повышать свою квалификацию, осваивать новые технологии и делиться некоторыми своими находками на этих страницах.