Автор: vit

  • Жизнь в Coworking-e

    фотография с сайта http://placeplaceplace.ru
    Прошел где-то месяц, с того момента как я переехал работать в коворкинг. В связи с этим хотел поделиться некоторыми итогами и своими впечатлениями.

    В первую очередь, хотел ответить на вопрос, который задают в первую очередь: “Сколько стоит?”.
    Стоимость аренды около 10 тысяч рублей в месяц. Комментировать цену не хочу.
    Подробнее можно прочитать на сайте: http://www.flacon.su/space/coworking/

    Расположение.
    Коворкинг на территории дизайн-завода “Флакон” (ул. Б. Новодмитровская, д. 36). Ближайшее метро – Дмитровская. (далее…)

  • Java EE Architect

    “Архитектор знает немного обо всем. Инженер знает все об одном.”
    Мэтью Фредерик, из книги “101 полезная идея для архитекторов”.

    Сейчас получить сертификат Java EE Architect (в прошлом SCEA) немного сложнее, чем до покупки Oracle компании Sun Microsystems.
    Необходимо пройти курс обучения от Oracle. Это дополнительное время и самое главное дополнительные немалые деньги.

    Я сдавал когда еще можно было пройти без этой процедуры.

    По моим личным наблюдениям реакция людей на наличие SCEA сертификата (Sun Certified Enterprise Architect for Java EE) может сильно отличаться. (далее…)

  • Встречи Scala программистов в Москве

    Для меня Scala не “абстрактный сферический конь в вакууме”, а язык, который я использовал в нескольких реальных проектах в течение последних трех лет. Хочу сразу отметить, что мы не использовали никаких скала-фреймворков – лифт, скалаторы и прочее. Во-первых не было необходимости, во-вторых можно без особых усилий писать на scala и использовать только обычные java-фреймворки.

    Кроме программирования на Scala в 2010-2011 я вел курс по выбору в МФТИ “Практикум по программированию на Java и Scala”. В результате у меня наработался некоторый объём дидактического материала.

    В итоге летом 2011 года мы с друзьями решили организовать в Москве независимые регулярные встречи Scala программистов.
    Под “независимыми” имеется в виду – без патронажа каких либо коммерческих организаций жадных до денег или мозгов программистов.
    Регулярные – старались встречаться каждую неделю, но естественно были перерывы.
    Формат встреч самый простой – собираемся и решаем небольшие задачки на Scala.

    Место встречи – различные кофейни и другие либеральные заведения общественного питания, в которых есть wi-fi.
    Как правило встречи проводились после рабочего дня, поэтому кто-то в процессе обучения пил кофе и ел пирожные, кому-то было интересней пиво или сытный ужин.

    Один человек притаскивал ноутбук (как правило это был я со своим 17” HP).
    Выбирали одну задачку на всех, она разбивалась на несколько кусочков.
    Главное условие – каждый должен был написать хотя бы несколько строк кода.
    Если не успеваем решить – переносим на следующую встречу.

    Также кто-то на встречах рассказывал про свой опыт использования Scala у себя на работе или какие-то интересные аспекты языка.
    В качестве источника информации использовали в основном стандартную документацию по API, мои презентации к физтеховским семинарам,
    и книжку Мартина Одерского “Programming in Scala”, которую мне подарил Коля Матюшев (книжка на английском, он ее купил когда работал в Лондоне).

    Некоторые задачки которые мы решали на наших “семинарах”:

    • Рисовалка Мандельброта
    • Разные фракталы на L-System-е
    • Игра жизнь
    • Решалка судоку

    Места в которых проводил занятия (в хронологическом порядке):

    • КофеИн
    • Шоколадница
    • Кофе-Хаус
    • Му-Му

    Думаю станет чуть потеплее и мы продолжим (а может и раньше).
    Кто был на встречах: Валерия Ива Виннер, Серж, Артур, Ник, Миха, Вит.
    Прошу прощения если кого-то забыл. Буду рад новым встречам!

  • Другой способ защиты

    На этой неделе друг со старой работы написал про свой способ защиты java проектов.
    Около полугода назад я писал про то, как прятать строки в properties-файлах с помощью jasypt (EncryptableProperties и защита от дурака).
    На самом деле, все понимают, что это всего-лишь защита от самого простого случая. Например, чтобы любопытный админ заглянув в файлик, не увидел там то, что не должен знать.
    Тем не менее, если есть доступ к классам, то можно jad-ом отдекомпилировать исходники и получить доступ к “запретной” информации (например оригинальный пароль, которым шифруются properties разработчиком-оптимистом).

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

    Так вот, российскими программистами сделан специальный продукт для защиты java-проектов.
    Ключевое в нем – AES-шифровка строк. Кроме этого он делает динамические инъекции и использует специальные механизмы, которые мешают поломать приложение через рефлекшн.
    Данное решение является коммерческим продуктом.

    Подробнее здесь.

  • Tomcat и jdbc connection pool

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

    В общих чертах что такое пул.
    Пул (pool) – это такой “бассейн” или “резервуар” из которого можно брать “живые” объекты для дальнейшего их использования.
    В данной статье будут рассматриваться только пулы подключений к БД, но в жизни программиста могут повстречаться пулы разных объектов, например многим знаком Thread Pool.
    В общем случае, пул “каких-то объектов” – это шаблонный способ решения проблемы хранения и раздачи объектов (и самое главное поддержания их в нормально рабочем состоянии).

    По аналогии с бассейном, в нормальных пулах постоянно протекают некоторые процессы. Например осуществляется проверка не “протухли” ли объекты. Нужно ли создать новые? Сколько времени объекты находятся в пуле? Во многих пулах есть своя “ватерлиния” (high water mark), которая указывает на максимальный “объем” пула.

    В этой статье будет кратко описан JDBC Connection Pool.
    (далее…)

  • Про интерфейс: Map<K,V>

    Недавно от товарища пришел вопрос на засыпку: “Почему в интерфейсe java.util.Map метод get в качестве ключа принимает Object, а метод put использует женерики?”

     
        V get(Object key);
        V put(K key, V value);
    

    Сходу ответить не смог, пришлось разбираться. (далее…)

  • Android, RTSP и 10 секунд

    Работа с мультимедийными данными в Android-е проработана довольно не плохо, но к сожалению существуют ряд определенных сложностей.
    Например, для проигрывания потокового видео можно использовать VideoView или использовать напрямую низкоуровневый класс MediaPlayer.
    Естественно, VideoView внутри использует тот же MediaPlayer.
    Примеры работы с VideoView и MediaPlayer есть в стандартной поставке: ApiDemos
    Примеры вполне пригодные для самообучения и достаточно подробные. Самое интересное возникает при работе в реальной жизни.

    Например, при начале трансляции по протоколу RTSP может возникнуть более чем ~10 секундная задержка. (далее…)

  • Java Zip + русские буквы в названиях файлов

    Баг №4244499

    Этот баг был зарегистрирован еще в 1999г.
    Проблема была не только с русскими файлами, а например с французскими (как в примере).
    Корни довольно глубокие и существовали серьезные (надеюсь) причины, по которым эту ошибку долгое время не исправляли. В итоге, много-много лет в Java нельзя было сделать простыми штатными средствами zip-архив, который бы содержал файлы с именами не на латинице.

    К сожалению, жизнь такова, что все это время некоторых java-программистов заставляли делать такие zip-архивы. Приходилось использовать например apache-вский commons-compress.

    Использовать очень просто. Алгоритм буквально в два шага: (далее…)

  • Работа с Maven + Tomcat

    Maven и Tomcat


    Ни для кого не секрет, что maven-ом можно деплоить проекты в Apache Tomcat.
    Правда многие разработчики все-таки используют функции, встроенные в среду разработки (в Netbeans – из коробки, в Eclipse – ставим плагин).
    Это удобно и просто, но к сожалению, мне приходится часто “перескакивать” с разных IDE и поэтому в некоторых своих проектах я предпочитаю сразу настроить tomcat:deploy.
    (далее…)

  • Немного об OAuth, Android и Facebook

    OAuth авторизация

    OAuth – по определению означает Open Authorization. Поскольку в английском языке слова аутентификация (authentication) и авторизация (authorization) имеют одинаковое начало auth, то сокращение oauth очень неоднозначное. Эти понятия (авторизацию и аутентифакцию) очень часто путают друг с другом.
    Например OpenID – это система для аутентификации.

    Очень кратко про аутентификацию и авторизацию (т.к. это простые и занудные понятия).
    (далее…)