Рубрика: 1. Языки программирования

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

    На этой неделе друг со старой работы написал про свой способ защиты 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 – это система для аутентификации.

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

  • Поездка в Санкт-Петербург

    Прошло уже больше месяца, с тех пор как я обещал друзьям написать про свою поездку в Питер. Было очень много разных дел по работе, в итоге только сейчас смог дописать.
    (далее…)

  • OrderBy или OrderColumn

    Между JPA аннотациями OrderBy и OrderColumn существует огромная разница. (далее…)

  • Java 7. Завершение обзора проекта “Монета”.

    В двух постах до этого описал некоторые новшества из Project Coin – Java 7, а именно:

    1) Дельфин, монета и бриллиантовый оператор.
    – Improved type inference for generic instance creation (diamond)
    – try-with-resources statement

    2) Java 7. Строки в переключателе
    – Strings in switch

    Сейчас хотел описать три оставшихся нововведения:

    – Целые числа в двоичном представлении и подчеркивание (Binary integral literals and underscores in numeric literals).
    – Возможность ловить несколько разных исключений и более точная переброска (Multi-catch and more precise rethrow).
    – Упрощенный вызов методов с переменным количеством аргументов (Simplified varargs method invocation).

    1. Целые числа в двоичном представлении и подчеркивание.

    (далее…)