При разработке бывают моменты, когда требуется загрузить архив приложения на сервер. Одним из вариантов для этого является "забрасывание" архива приложения в каталог на сервере, где его автоматически "подхватит" например tomcat или jboss
первым и "простым" способом для этого является задача scp для ant-скрипта.
scp file="${dir.build}/${file.war}" trust="true" password="${ssh.pwd}" todir="${ssh.user}@${ssh.host}:${tomcat.deploy}" /
но... через какое-то
время сталкиваешься с "полтергейстом", когда приложение загрузилось, а деплоиться "не желает".
небольшой экспресс-анализ показал, что сервер подхватывает архив раньше, чем он полностью "залился" на сервер.
для решения данной проблемы можно пойти обходным путём - сперва скопировать архив во временный каталог, или с другим расширением, а после уже локально переместить его в нужное место
target name="scp-copy"
scp file="${dir.build}/${file.war}" trust="true" password="${ssh.pwd}" todir="${ssh.user}@${ssh.host}:${tomcat.tmp.dir}" /
sshexec host="${ssh.host}" username="${ssh.user}" password="${ssh.pwd}" trust="true" command="mv ${tomcat.base}/${file.war} ${tomcat.base}/${tomcat.root}/ROOT.war"
/target
Преимущество подхода с промежуточным копированием так же в том, что если в процессе загрузки произойдёт сбой связи с сервером, то вы не потеряете текущее приложение, т.к. ранее загруженный архив не будет перезаписан.
вторник, февраля 9
понедельник, февраля 8
Удалённая перезагрузка Windows-машины из Linux
Для удалённой перезагрузки Windows-машины из Linux, понадобится установленный пакет samba-common
команда для выполнения:
net rpc shutdown -r -C "комментарий" -f -I "netname" -U "username" -t "N"
где параметры обозначают следующее:
-r или -reboot - перезагрузка компьютера вместо выключения
-f или -force - принудительное выполнение
-I - сетевое имя машины, или её IP адрес
-U - имя пользователя, имеющего соответствующие права на данной машине
-t или -timeout="N" - задержка до начала выключения/перезагрузки (по умолчанию равна 20 секундам)
-C или -comment="комментарий" - комментарий, показываемый в информационном окне
при выполнении команды, появится запрос пароля для пользователя username. Можно пароль указать сразу, введя имя пользователя в формате "username%password"
команда для выполнения:
net rpc shutdown -r -C "комментарий" -f -I "netname" -U "username" -t "N"
где параметры обозначают следующее:
-r или -reboot - перезагрузка компьютера вместо выключения
-f или -force - принудительное выполнение
-I - сетевое имя машины, или её IP адрес
-U - имя пользователя, имеющего соответствующие права на данной машине
-t или -timeout="N" - задержка до начала выключения/перезагрузки (по умолчанию равна 20 секундам)
-C или -comment="комментарий" - комментарий, показываемый в информационном окне
при выполнении команды, появится запрос пароля для пользователя username. Можно пароль указать сразу, введя имя пользователя в формате "username%password"
четверг, февраля 4
NetBeans+Maven+библиотеки
Использование Maven позволяет делать многое при разработке проекта. Об этом писалось уже не раз на просторах интернета. Я же напишу небольшую толику, чего я не нашел на русскоязычных просторах - про добавление своих JAR-библиотек в среде NetBeans IDE в Maven-проект.
Пример демонстрирует использование внешней библиотеки NCSO.jar для подключения к Lotus Domino через DIIOP. Проект создаём в NetBeans 6.8
итак, поехали
Создаём простой Maven-проект (для примера его будет достаточно :) )


Теперь добавляем в проект завимость на внешнюю библиотеку NCSO.jar. Так как этой библиотеки нет в репозитариях, то просто указываем сами группу, артифакт и версию библиотеки. В данном случае, я использую библиотеку, взятую с сервера Lotus Domino версии 8.5.1

Теперь можно загрузить сам jar-файл в локальный репозитарий. Для этого в контексном меню у зависимости выберем пункт "Manually install artifact" и укажем путь до библиотеки. По завершению инсталяции, данная библиотека будет добавлена в локальный репозитарий и может быть использована в последующих проектах без дополнительной инсталяции.




ЗЫ: посмотреть все скриншоты можно в альбоме "Blogspot:002", а скачать архив проекта на iFolder
Пример демонстрирует использование внешней библиотеки NCSO.jar для подключения к Lotus Domino через DIIOP. Проект создаём в NetBeans 6.8
итак, поехали
Создаём простой Maven-проект (для примера его будет достаточно :) )
Теперь добавляем в проект завимость на внешнюю библиотеку NCSO.jar. Так как этой библиотеки нет в репозитариях, то просто указываем сами группу, артифакт и версию библиотеки. В данном случае, я использую библиотеку, взятую с сервера Lotus Domino версии 8.5.1
Теперь можно загрузить сам jar-файл в локальный репозитарий. Для этого в контексном меню у зависимости выберем пункт "Manually install artifact" и укажем путь до библиотеки. По завершению инсталяции, данная библиотека будет добавлена в локальный репозитарий и может быть использована в последующих проектах без дополнительной инсталяции.


ЗЫ: посмотреть все скриншоты можно в альбоме "Blogspot:002", а скачать архив проекта на iFolder
воскресенье, января 24
Работа с FLAC (Часть 2. Переименование файлов по тегам)
Для переименования файлов flac в текущем каталоге, можно воспользоваться скриптом ниже
(с)тырил в инете
#!/bin/bash
for a in *.flac; do
ARTIST=`metaflac "$a" --show-tag=ARTIST | sed s/.*=//g`
TITLE=`metaflac "$a" --show-tag=TITLE | sed s/.*=//g`
TRACKNUMBER=`metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g`
mv "$a" "`printf %02g $TRACKNUMBER` - $ARTIST - $TITLE.flac"
done
(с)тырил в инете
пятница, января 1
понедельник, декабря 21
Linux & Windows
Чем дольше "сижу" в линухе, тем больше понимаю что винда фигня... не... не совсем конечно фигня... для "начинающих" самый то... но...
Чем больше читаешь статей в инете про сравнения на всякого рода "хороших" и "умных" онлайн-журналах, тем больше понимаешь, что ЗАКАЗУХА...
вот например последняя статья с PCWeek отдаёт такой желтизной и заказухой...
вот например вырезка:
"Возвращение Microsoft к использованию командной строки с помощью PowerShell не имеет прямого аналога в мире Linux."
или
"Problem Steps Recorder представляет собой неплохой инструмент для выявления неисправностей, входящий в состав Windows 7. Если и существует что-то подобное для Linux, то нам не удалось его найти."
абидна
Чем больше читаешь статей в инете про сравнения на всякого рода "хороших" и "умных" онлайн-журналах, тем больше понимаешь, что ЗАКАЗУХА...
вот например последняя статья с PCWeek отдаёт такой желтизной и заказухой...
вот например вырезка:
"Возвращение Microsoft к использованию командной строки с помощью PowerShell не имеет прямого аналога в мире Linux."
или
"Problem Steps Recorder представляет собой неплохой инструмент для выявления неисправностей, входящий в состав Windows 7. Если и существует что-то подобное для Linux, то нам не удалось его найти."
абидна
четверг, декабря 17
Подключение по JDBC к DB2 из Java-агента Lotus Domino
Для Universal JDBC доступа к DB2 серверу из Java-агента Lotus Domino понадобится:
Скопировать на сервер библиотеки драйвера:
Копируем в каталог "%DOMINO_DIR%/jvm/lib/ext" файлы db2jcc.jar и db2jcc_license_cu.jar. Взять их можно с самого сервера DB2 из каталога "%DB2%\SQLLIB\java"
Перезагружаем сервер Lotus Domino, дабы JRE оного сервера "подхватила" новые библиотеки
написать Java-библиотеку DBFactory:
Создаём Java Library для класса DBFactory. Я не буду здесь расписывать вариант с несколькими подключениями и пропишу "жесткие" параметры подключения через private-аттрибуты url, user и password.
Исходный код библиотеки:
произвести само подключение, используя DBFactory:
Создаём Java-агента с Security="Allow restricted operations", к которому подключаем нашу библиотеку DBFactory

после чего в агенте можно создать подключение к серверу:
теперь нам доступен объект Statement, позволяющий организовывать SQL запросы к серверу.
Скопировать на сервер библиотеки драйвера:
Копируем в каталог "%DOMINO_DIR%/jvm/lib/ext" файлы db2jcc.jar и db2jcc_license_cu.jar. Взять их можно с самого сервера DB2 из каталога "%DB2%\SQLLIB\java"
Перезагружаем сервер Lotus Domino, дабы JRE оного сервера "подхватила" новые библиотеки
написать Java-библиотеку DBFactory:
Создаём Java Library для класса DBFactory. Я не буду здесь расписывать вариант с несколькими подключениями и пропишу "жесткие" параметры подключения через private-аттрибуты url, user и password.
Исходный код библиотеки:
public class DBFactory {
private static final String url = "jdbc:db2://SERVER_NAME:SERVER_PORT/DATABASE";
private static final String user = "USERNAME";
private static final String password = "PASSWORD";
private Connection con;
private Statement stmt;
public DBFactory() {
try{
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
con = DriverManager.getConnection(url, user, password);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Statement getStatement(){
return stmt;
}
}
произвести само подключение, используя DBFactory:
Создаём Java-агента с Security="Allow restricted operations", к которому подключаем нашу библиотеку DBFactory
после чего в агенте можно создать подключение к серверу:
Statement stmt = (new DBFactory()).getStatement();
теперь нам доступен объект Statement, позволяющий организовывать SQL запросы к серверу.
понедельник, декабря 14
линукс и принтеры...
Но вот раскопал ресурс (да, позор - ресурс лежал на поверхности, а я его не видел), в котором есть "справка" по установке в линуксе практически любого принтера...
Нашлись там и те принтеры, с которыми я сталкивался...
Последовательность поиска очень простая:
ЗЫ: Для openSUSE потребуется предварительно установить пакет lsb
Нашлись там и те принтеры, с которыми я сталкивался...
Последовательность поиска очень простая:
- Переходим в раздел Printers
- в первой строке выбираем производителя принтера (ВНИМАНИЕ - НЕ НАЖИМАЙТЕ СРАЗУ кнопку "Show")
- В списке правее выбираем модель принтера
- вот теперь можно нажимать на кнопку "Show", что в первой строке. (Для принтера Xerox WorkCentre M128, что у меня настраивался, это будет вот эта страница)
- переводим, читаем, вникаем и устанавливаем
ЗЫ: Для openSUSE потребуется предварительно установить пакет lsb
суббота, декабря 12
понедельник, декабря 7
Работа с FLAC (Часть 1. Разбивка на треки)
Понадобилось мне тут "порезать" большой flac на "множество треков...
Происки по инету дали следующие результаты:
1) треба использовать утилиты из пакетов cuetools и shntools
2) для openSUSE требуется подключить доп. репозитарии, дабы не ставить "ручками" и иметь возможность автоматического обновления
Посему, себе на память и ищущим для облегчения:
процедура раз (установка требуемого ПО):
1) в openSUSE требуется добавить репозитарии "Multimedia:Apps" и "Multimedia:Libs" для своей версии ОС
2) установить озвученные пакеты (из командной строки): sudo zypper in cuetools shntool (прим.: в openSUSE пакет shntools "сокращён" до shntool)
Процедура два (собственно, процесс разбиения flac на треки):
1) (опционально) Перекодирование русских названий треков в треклисте из Windows-кодировки: iconv --from-code=CP1251 --to-code=UTF-8 --output=CDImageUTF8.cue CDImage.cue
2) разбиение на треки: cuebreakpoints CDImage.cue | shnsplit -o flac CDImage.flac (прим.: если выполнялся пункт (1), то CDImage.cue заменить на CDImageUTF8.cue)
3) Заполнение тегами: cuetag CDImage.cue split-track*.flac
Происки по инету дали следующие результаты:
1) треба использовать утилиты из пакетов cuetools и shntools
2) для openSUSE требуется подключить доп. репозитарии, дабы не ставить "ручками" и иметь возможность автоматического обновления
Посему, себе на память и ищущим для облегчения:
процедура раз (установка требуемого ПО):
1) в openSUSE требуется добавить репозитарии "Multimedia:Apps" и "Multimedia:Libs" для своей версии ОС
2) установить озвученные пакеты (из командной строки): sudo zypper in cuetools shntool (прим.: в openSUSE пакет shntools "сокращён" до shntool)
Процедура два (собственно, процесс разбиения flac на треки):
1) (опционально) Перекодирование русских названий треков в треклисте из Windows-кодировки: iconv --from-code=CP1251 --to-code=UTF-8 --output=CDImageUTF8.cue CDImage.cue
2) разбиение на треки: cuebreakpoints CDImage.cue | shnsplit -o flac CDImage.flac (прим.: если выполнялся пункт (1), то CDImage.cue заменить на CDImageUTF8.cue)
3) Заполнение тегами: cuetag CDImage.cue split-track*.flac
Подписаться на:
Сообщения (Atom)