вторник, 25 марта 2014 г.
воскресенье, 23 марта 2014 г.
bash. Строку с двоичными кодами и преобразовать в base64.
bash. Строку с двоичными кодами и преобразовать в base64.
Сначала я стал искать hex-редакторы с возможностью преобразования данных в base64, но поскольку речь шла о небольшом объёме данных, которые мне нужно набирать на клавиатуре, то нашлось простое решение под linux в одну строчку:
printf "\x00alex-zaharow@yandex.ru\x00password" | base64
на выходе получаем:
AGFsZXgtemFoYXJvd0B5YW5kZXgucnUAcGFzc3dvcmQ=
Проверка для smtp сервера:
Проблема изначально была в том, что никак было не "написать" исходную строку в bash с двоичным символом null, но если сделать вывод в printf и через трубопровод передать в base64, то данные будут содержать нулевой код символа и преобразуются в base64.
понедельник, 10 марта 2014 г.
Использование cmd в консоли eclipse с правильной кодировкой
Использование cmd в консоли eclipse с правильной кодировкой
Довольно быстро нашёл перечень шрифтов, которые можно использовать в консоли:
Только в этой настройке ничего нет про кодировку dos866 (сколько лет прошло, а призрак MSDOS до сих пор преследует Windows), но как-то мне улыбнулась удача и я нашёл правильную кодировку для этой настройки, которую Eclipse нормально использует:
cp866
Странно, что используемая настройка нигде не запоминается и не предлагается.
Java split
Java split
И как я раньше не замечал такого свойства в Java, аналогичного split в JavaScript, чтобы разделить стрку на лексемы по паттерну регулярных выражений. Существует аж два метода:
Заодно обнаружил, что если нужно при выводе использовать паттерн форматированной строки вместо длинного оператора System.out.println("строка1 "+значение1+", строка2 "+значение2) или System.out.println( String.format("строка1 %s, строка2 %s", значение1, значение2) ), то можно сделать ещё быстрее:
System.out.printf("Строка1 %s, строка2 %s", значение1, значение2)
пятница, 21 февраля 2014 г.
JAVA. HOWTO. Как прочитать ресурс WAR-приложения как байтовый массив.
JAVA. HOWTO. Как прочитать ресурс WAR-приложения как байтовый массив.
Пример приведён для jsp. Файл "2070.cer" является ресурсом приложения. После сборки он будет находится в файле war/jar.
см. http://stackoverflow.com/questions/2639943/accessing-jar-resources
<%@page import="local.esphere.cert.DER2XML, java.io.*, org.apache.commons.io.*"%>
<html>
<body>
<h2>Hello World!</h2>
<%
String crtPath = "/2070.cer";
InputStream file = getClass().getResourceAsStream( crtPath );
byte[] bytesDER = IOUtils.toByteArray(file);
out.println("xml:<br/><pre>"+ DER2XML.convert( bytesDER )+"</pre>" );
out.println("ThumbPrint:"+ DER2XML.getThumbPrint( bytesDER ) );
%>
</body>
</html>
Примечание: поскольку getClass не является статическим методом, то вызвать его напрямую можно только у инстанциированных объектов, например:
InputStream file = crtPath.getClass().getResourceAsStream( crtPath );
среда, 23 октября 2013 г.
как выполнить deploy приложения maven на tomcat по протоколу https?
Как выполнить deploy приложения maven на tomcat по протоколу https?
Столкнулся с проблемой удалённой установки приложения на tomcat из-под maven, когда протоколом удалённого подключения является ssl (https). Тут несколько проблем наслаиваются друг на друга. Сначала надо решить вопрос удалённой установки в принципе.
Пару слов о конфигурации:
Среда разработки:Windows x64, jdk 1.7.0_45, Eclipse 4.2.2, maven 3.1.1
Среда сервера приложений: Oracle-Linux 6 x64 (без GUI), tomcat 7.0.42, доступ через putty по ssh.
Для освежения памяти, напомню, что tomcat не сам по себе позволяет выполнять удалённую установку приложений. Для этого у него есть приложение deploy, которое идёт в стандартной поставке (его можно отключить, если оно не нужно, тогда tomcat будет работать, а удалённый deploy - нет). Кроме того, политика пользователей в стандартной поставке такова, что по-умолчанию отключены все пользователи, поэтому сразу после установки tomcat нельзя запустить приложение manager, чтобы посмотреть всякую административную информацию о сервере. Кроме того, не стоит забывать, что сам процесс удалённой установки как правило содержит в себе ещё один важный шаг, который за очевидностью не всегда обращает на себя внимания - это шаг отправки приложения на удалённый сервер tomcat. Этот шаш может быть выполнен несколькими путями (я насчитал 4) - с помощью curl с исходной машины методом PUT протокола http(s), утилитой pscp из набора утилит putty с указанием пути к каталогу \webapp, с помощью manager-а tomcat ручным указанием файла приложения для установки (после настройки пользователей), с помощью maven-овского плагина tomcat7-maven-plugin.
Учитывая, что работа идёт в Eclipse, то наиболее предпочтительный вариант - это использование maven (поскольку он уже встроен в eclipse).
Учитывая эту информацию начнём постепенно настраивать удалённую установку приложения.
Самое правильно и простое настроить её по простому протоколу http, без шифрования (чтобы быть уверенным, что проблема именно в протоколе ssl, а не, скажем, в пароле подключения к tomcat-овскому компоненту deploy).
В сети много советов, когда предлагают настроить удалённую установку
приложения с использованием файла settings.xml, являющимся файлом
настроек maven, но есть и метод поинтереснее, когда все данные для
удалённой установки приложения можно указать в настройках плагина. Самое
первое, что надо сделать - правильно настроить пользователя tomcat,
который будет выполнять удалённую установку приложения:
Перезапустим сервер. Проверим, что указанный пользователь может зайти в manager:
Теперь нужно выполнить настройку плагина maven для выполнения remote-deploy. Все настройки можно указать в настройках плагина:
важно указать параметры url, чтобы maven знал куда делать deploy приложения, username/password, чтобы знать как подключиться к серверу. path - контекст приложения. Этих параметров вполне достаточно. Теперь надо выполнить команду:
mvn tomcat7:redeploy
или в настройках eclipse:
и нажать кнопку debug, то должна выполниться удалённая установка. Отлично, значит сама процедура удалённой установки настроена, осталось перевести её на рельсы https. Для этого надо в настройках приложения pom.xml поменять порт назначения и протокол:
Но это ещё не всё. Поскольку мы имеем дело с протоколом ssl, то он будет проверять сертификаты, которые присылает ему сервер. Проверка заключается в том, что он должен выявить наличие корневого узла, от которого идёт доверие к сертификатам, которые предоставляет ему сервер, на который выполняется удалённая установка. Поэтому строчка вызова maven должна выглядеть так:
Этот результат я и добивался. Теперь можно удалённо устанавливать приложения war на tomcat по ssl.
Перезапустим сервер. Проверим, что указанный пользователь может зайти в manager:
Теперь нужно выполнить настройку плагина maven для выполнения remote-deploy. Все настройки можно указать в настройках плагина:
важно указать параметры url, чтобы maven знал куда делать deploy приложения, username/password, чтобы знать как подключиться к серверу. path - контекст приложения. Этих параметров вполне достаточно. Теперь надо выполнить команду:
mvn tomcat7:redeploy
или в настройках eclipse:
и нажать кнопку debug, то должна выполниться удалённая установка. Отлично, значит сама процедура удалённой установки настроена, осталось перевести её на рельсы https. Для этого надо в настройках приложения pom.xml поменять порт назначения и протокол:
Но это ещё не всё. Поскольку мы имеем дело с протоколом ssl, то он будет проверять сертификаты, которые присылает ему сервер. Проверка заключается в том, что он должен выявить наличие корневого узла, от которого идёт доверие к сертификатам, которые предоставляет ему сервер, на который выполняется удалённая установка. Поэтому строчка вызова maven должна выглядеть так:
Этот результат я и добивался. Теперь можно удалённо устанавливать приложения war на tomcat по ssl.
понедельник, 14 октября 2013 г.
windows - linux копирование файлов и каталогов туда и обратно
windows - linux копирование файлов и каталогов туда и обратно
Давно работаю с linux (после windows) и сколько раз задавался вопросом:
- Как копировать файлы/каталоги не прибегая к побочным эффектам от использования таких мостров как samba или (не монстр, но-всё-таки) sftp или apache???
Чуть позже выяснилось, что есть ещё более простое средство: winscp. Выглядит как total-commander. И более того, можно открывать на редактирование файлы прямо на целевой linux-овой машине.
Оказалось, ЕСТЬ такое средство! Называется оно pscp.exe . Эта программа входит в состав утилит putty. Только я не сразу понял, что эта утилита работает в двух направлениях. Ей всё равно куда копировать по ssh - с источника на приёмник или с приёмника на источник. Кроме того, pscp может копировать и каталоги.
Рассмотрим примеры:
Копирование файла с windows на linux:
Теперь скопируем файл с linux на windows:
Теперь попробуем вытянуть целый каталог из linux в windows:
Теперь можно работать дальше без установки всякого дополнительного ПО на linux или windows. Всё просто.
В решении вопроса помог вопрос на форуме: http://www.linuxquestions.org/questions/linux-newbie-8/scp-copy-file-from-remote-linux-server-onto-a-windows-machine-316263/
Подписаться на:
Сообщения (Atom)














