Интеграция 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 … Чтобы решить проблему нужно специальным образом пометить
Читать далее…

Бэкапирование

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

Нахождение медианы в массиве (MySQL)

Нахождение медианы в массиве для MySQL я решил способом ниже. Кто знает более лучшие варианты скидывайте :). Но, желательно, без использования стандартных функций СУБД для нахождения медианы. set @a := 0; set @cnt := (select count(*) from t_table);   select (sum(case when num = ceil(@cnt / 2) then c_value else null end) + sum(case when
Читать далее…

Как искать ошибку в программе?

Список подсказок, как найти ошибку: Проверить, там ли вы ищите/смотрите ошибку. Например, вы могли подключиться не к тому серверу или базе. Вспомнить и посмотреть, что недавно менялось. Попросить коллегу посмотреть на проблему незамыленным взглядом Отстраниться от проблемы. Например, переключиться на другую сферу деятельности, проблему или просто отдохнуть Внимательно посмотреть сообщение об ошибке, может там уже
Читать далее…

Циклический сдвиг по кругу

Рассмотрим, линейный массив: По нему мы можем передвигаться вперед и назад, но не выходя за левую и правую границы. Данный массив можно закольцевать. Допустим, у нас есть массив, состоящий из элементов пронумерованных следующим образом: 0 1 2 3 4, мы находимся в позиции с индексом 3 и нам нужно сместиться на три позиции вправо. Наши
Читать далее…

Подписание SOAP-сообщения KALKAN-апплетом

Стандартный Калкан-апплет не позволяет подписывать SOAP-сообщения. Допустим, перед вами все-таки встала такая или подобная задача… Теоретически можно расширить апплет, добавив свой метод, но для этого нужно убрать родную подпись апплета и установить свою. Важно! Самоподписанный сертификат для подписания апплета не подойдет, нужен легально подписанный сертификат. Дальшейшая практическая инструкция подразумевает, что у вас есть легальный сертификат
Читать далее…