вторник, февраля 9

Ant-скрипт для деплоинга приложений на сервер приложений

При разработке бывают моменты, когда требуется загрузить архив приложения на сервер. Одним из вариантов для этого является "забрасывание" архива приложения в каталог на сервере, где его автоматически "подхватит" например 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

Преимущество подхода с промежуточным копированием так же в том, что если в процессе загрузки произойдёт сбой связи с сервером, то вы не потеряете текущее приложение, т.к. ранее загруженный архив не будет перезаписан.

понедельник, февраля 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"

четверг, февраля 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

воскресенье, января 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


(с)тырил в инете

понедельник, декабря 21

Linux & Windows

Чем дольше "сижу" в линухе, тем больше понимаю что винда фигня... не... не совсем конечно фигня... для "начинающих" самый то... но...

Чем больше читаешь статей в инете про сравнения на всякого рода "хороших" и "умных" онлайн-журналах, тем больше понимаешь, что ЗАКАЗУХА...

вот например последняя статья с 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.


Исходный код библиотеки:
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

линукс и принтеры...

Но вот раскопал ресурс (да, позор - ресурс лежал на поверхности, а я его не видел), в котором есть "справка" по установке в линуксе практически любого принтера...
Нашлись там и те принтеры, с которыми я сталкивался...

Последовательность поиска очень простая:

  • Переходим в раздел 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