Замер времени (Java)

Иногда возникает потребность измерить время работы определенного фрагмента кода в вашем проекте. Можно, конечно, писать так: long start = System.currentTimeMillis(); //тут замеряемый код System.out.println(System.currentTimeMillis() — start);long start = System.currentTimeMillis(); //тут замеряемый код System.out.println(System.currentTimeMillis() — start); Но такой подход быстро надоедает. Я выделил замер времени в отдельный класс TimeMeter, теперь можно удобно останавливать несколько раз таймер
Читать далее…

$(…).size is not a function

Второй раз за последние месяцы прикручиваю тему Metronic и ловлю такую ошибку: $(…).size is not a function В первый раз я потратил достаточно времени, чтобы понять в чем причина, а во второй раз было дело техники. Всё дело в том, что Metronic использует 1-ю версию jQuery (v1.12.4), а в проекте bower брал последную 3-ю версию
Читать далее…

Запустил платное приложение Bilemin Cards в Google Play

Наконец-то, 31 октября 2016 я запустил своё первое платное приложение в Google Play под названием «Bilemin Cards». Вот ссылка на приложение: https://play.google.com/store/apps/details?id=kz.bilemin.cards. Стоимость приложения 3$, что составляет 990 тенге. Вообще, я настроен скептически, кажется, я вообще не заработаю денег на этом приложении, но посмотрим… В этой статье я буду через определенные промежутки времени писать о
Читать далее…

Подбор окончания в соответствии с количеством

Шлифуя очередную программу и вкладывая в нее души, хочется выводить не: «1 карточек», «2 карточек» и «5 карточек», а «1 карточка», «2 карточки» и 5 «карточек». Т.е. к слову, связанному с целым количественным числительным хочется подобрать правильное окончание. Можно заменить, что для целых количественных числительных максимально можно выделить три различных окончания. Эти рассуждения привели меня
Читать далее…

Парсинг DN (Distinguished Names)

В ЭЦП данные о её владельце и изготовителе хранятся в виде Distinguished Names (DN). Например: CN=БЛОГОВ БЛОГ,SURNAME=БЛОГОВ,SERIALNUMBER=IIN123456789012,C=KZ,L=АСТАНА,S=АСТАНА,G=БЛОГОВИЧ,O=ТОО \"Рога\, копыта 24\\7\",OU=BIN000111222333CN=БЛОГОВ БЛОГ,SURNAME=БЛОГОВ,SERIALNUMBER=IIN123456789012,C=KZ,L=АСТАНА,S=АСТАНА,G=БЛОГОВИЧ,O=ТОО \"Рога\, копыта 24\\7\",OU=BIN000111222333 Атрибуты отделяются между собой запятыми, каждый атрибут представляет из себя ключ и значение, разделенные символом равно (=). Так же некоторые символы экранируются, например: \" \, Предлагаю следующую функцию, которая принимает строку
Читать далее…

Интеграция Discourse с Keycloak

Статья подразумевает, что у вас уже установлены и настроены Discourse c Keycloak. Интегрировать Discourse с Keycloak будем через плагин discourse-oauth2-basic. Для этого нужно папку плагина discourse-oauth2-basic перенести в директорию plugins, которая находится в корневой папке Discourse. После запуска Discourse c новым плагином, который автоматически подтянется из директории plugins, в админке появятся новые поля настроек. Их
Читать далее…

Подключение MongoDB(+GridFS) к Play2 (Scala)

В нашем новом проекте в качестве файлового хранилища мы решили использовать GridFS. GridFS эффективен для файлов размером свыше 16 МБ, поэтому мы решили хранить файлы менее 16 МБ в виде байтов в MongoDB. К тому же GridFS — это всего лишь надстройка над MongoDB, и размер документа MongoDB ограничен как раз 16 мегабайтами. Для начала
Читать далее…

Тестовые ссылки с различными файлами

Часто бывает необходимо проверить какой-то функционал по получению файла через web. Мы либо ищем в интернете нужную ссылку, либо размещаем файлы где-то у себя на веб-сервере (который еще нужно поднять :-)). Сегодня пришла идея сделать страницу, на которой будут размешаться ссылки на тестовые файлы, причем файлы будут храниться на этом же домене, поэтому пока работает
Читать далее…

Конвертирование кортежа со списком в JSON (Scala)

Всем привет! Меня перевели на новый проект, решили делать его на Play2(Scala). Я джавист и тяжело с моим багажом перестраиваться, прежние подходы в разработке не работают. Долго бился на конвертированием структуры в виде кортежа со списком (List). В итоге пришел к такому варианту: implicit val questionReads = Json.reads[Question] implicit val questionWrites = Json.writes[Question] implicit val
Читать далее…

Встраивание атрибута Id в тег Body SOAP-запроса

С некоторой версии Java (примерно с 7u25 см. http://stackoverflow.com/questions/17331187/xml-dig-sig-error-after-upgrade-to-java7u25) начались проблемы со встаиванием атрибута Id в тег Body SOAP-запроса. Такое встраивание необходимо с целью подписания запроса ЭЦП. Пока я встретил две ошибки в зависимости каким путем идет встраивание атрибута Id: com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverFragment org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID … Чтобы решить проблему нужно специальным образом пометить
Читать далее…