Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Wednesday, May 23, 2007

Apache Web Services

Набрел на неплохую и достаточно объемную коллекцию ссылок по Apache Web Services.
Советую всем, кому интересна эта тема.
http://tssblog.techtarget.com/index.php/mini-guide-apache-web-services/

Sunday, March 25, 2007

Diceware Passphrase

Источник

Diceware Passphrase - это предельно простой алгоритм генерации
паролей. Насколько длинных - настолько простых к запоминанию.
Алгоритм строится на принципе "кидания 5 игральных костей N раз" и
определнию комбинаций из цифр с последующим сопоставлением этих цифр определенным словам.
По ссылке, указаной выше можно скачать такой файл соответствия.
Выглядит он следующим образом:
11126 abase
11131 abash
11132 abate

Принцип следующий:
Кидаем 5 костей первый раз, записываем получившееся 5-значное число.
Кидаем второй раз - опять записываем.
И так подряд столько раз, сколько необходимо.
Затем по файлу определяем слова соответствующие цифрам и производим конкатенацию.
В общем-то - это и есть весь алгоритм. Даже алгоритмом можно назвать
с достаточно сильной натяжкой.
Код (исключительно ознакомительный, как пример):

public class Diceware {

private SecureRandom secureRandom = new SecureRandom();
private Map wordlist = new HashMap();

public Diceware(String wordslistPath) throws IOException {
File file = new File(wordslistPath);
InputStream is = new FileInputStream(file);
Reader reader = new InputStreamReader(is);
BufferedReader bufferedReader = new BufferedReader(reader);

String pair[];
String line;
while ((line = bufferedReader.readLine()) != null) {
pair = line.split(",");
wordlist.put(pair[0], pair[1]);
}
bufferedReader.close();
reader.close();
is.close();
}

public String getPassphrase(int rolls) {
String passphrase = "";
String tmp = "";
for (int i = 0; i < rolls; i++) {
for (int j = 0; j < 5; j++) {
tmp += secureRandom.nextInt(6) + 1;
}
passphrase += wordlist.get(tmp);
tmp = "";
}
return passphrase;
}
}

PS: вопрос на засыпку: как можно лаконично перевести на русский слово passphrase в данном контексте:
"A passphrase is a bunch of words and characters that you type in to your computer to let it know for sure that the person typing is you. Most newer security programs allow you to enter a passphrase instead of just a short password for added protection against attackers."

Monday, February 19, 2007

Создание схемы базы данных из Ant

При установке/тестировании приложения достаточно часто приходится создавать/пересоздавать схему базы данных. Используя Ant - это достаточно просто.
Пример:
Первое, что сделаем - это создадим файл db.properties и занесем в него необходимые нам настройки:


db.driver=oracle.jdbc.driver.OracleDriver
db.username=login
db.password=password
db.url=jdbc:oracle:thin:@127.0.0.1:1526:testdb
db.source.file=data.sql


Здесь db.driver - класс драйвера для подключения к базе данных, db.url - полный урл для доступа к базе данных, db.source.file - файл, в котором расположены SQL Query.

Теперь, собственно, сам файл build.xml (т.к. это фрагмент - файл будет предельно прост):

<?xml version="1.0"?>
<project name="build_db" default="create-db" >

<property file="db.properties" />

<path id="classpath">
<fileset dir="/lib" includes="**/*.jar" />
</path>

<target name="create-db" description="create database scheme">
<sql driver = "${db.driver}"
url = "${db.url}"
userid = "${db.username}"
password = "${db.password}"
src = "${db.source.file}"
onerror = "continue"
classpathref = "classpath"
/>
</target>
</project>


В этом файле сначала подключаем файл db.properties (теперь можно использовать параметры, определенные в нем также, как если бы они были определны непосредственно в самом build-файле)

Далее указываем свойства url, userid, password и src (думаю, эти свойства в представлении не нуждаются).

Свойство onerror - отвечает за то, будет ли продолжаться выполнение в случае возникновения ошибки при работе с базой данны. В данном случае - выполнение будет продолжено.

classpathref - это ссылка на элемент path, в котором перечислены пути поиска библиотек (например - путь до драйвера базы данных).

Вот, в общем-то и все :)