About

Показаны сообщения с ярлыком java. Показать все сообщения
Показаны сообщения с ярлыком java. Показать все сообщения

29 янв. 2023 г.

Запуск Apache Ignite ML: мой опыт


Вам захотелось поковыряться в machine learning, но вы не питонист. Что делать?! Нет, не изучать питон, когда есть много интересного и в любимом языке. 

А т.к. меня особо привлекают малоизвестные проекты, наткнувшить на статью на хабре про ml библиотеку Apache Ignite ML, которая не на слуху, не мог пройти мимо. Вообще библиотека Apache Ignite ML одна из многих частей Apache Ignite - кластера для распределенных вычислений.

Итак, на старте. Интерес к ml и желание написать свой пример классификации и поэкспериментировать с точнотью распознавания. В качестве датасета тот самый банальный MNIST dataset, который несложно найти уже конвертированным в csv. В качестве основы пример из оф.репозитрия Apache Ignite классификации OneVsRestClassification алгоритмом SVM. Запускаю на одном своем компе, у которого 16г оперативки. Получившийся код на гитхабе.

30 мая 2012 г.

Spring + JPA : минимальная конфигурация.


Задача : Сконфигурировать и запустить проект Spring + JPA. Интересуют в первую очередь связка через JPA , настройки и общий принцип работы.
Исходные данные.
Java 6, Spring,
Среда : Netbeans
Сервер : Glassfish 3.1
ORM : EclipseLink
Веб : JSF2, Facelets
бд : MySql
Сборка : Maven2

3 окт. 2011 г.

DDL : генерация из JPA проекта кода sql


Случилось несчастье и потерян бекап бд, окончательно и бесповоротно. Но это не значит что придется писать бесконечные create table , ведь есть сам проект с энтити классами, из которых можно извлечь все необходимое для создания sql кода, DDL (data definition language).

Исходные данные : веб проект (JSF, JPA(Hibernate), maven2), запускается на Glassfish.
Задача : нет бд, создать исходники sql.

17 авг. 2011 г.

phpbb3 и Java


Форум на сайте вещь несомненно хорошая, нужная, и полезная. А бывает еще и крайне необходимая, когда про форум написано в тз.
А теперь от лирики к делу. Есть сайт на JSF2.0, запущенный на Glassfish, нужен форум. Поначалу выбор пал на JForum, помучившись довольно долго все же удалось запустить его с собственной авторизацией. Впоследствии проанализировав все плюсы и минусы было решено заюзать более новый и активно развивающийся phpbb. JForum кажется совсем заброшенным. Кстати очень понравился этот каталог форумов.

Код php на Glassfish.
И все бы хорошо, но как запустить пхпшный форум на контейнере сервлетов.
Оказывается есть такая замечательная штука Quercus, предназначенная как раз для этого - запуска кода пхп на явовском серваке. Используется элементарно - задеплоить варник и все, пхп код можно копировать в папку с кверкусом, код будет выполняться.

Phpbb3
Далее исходники phpbb копируются в папку куда задеплоен кверкус. Все успешно открывается , при установке указываются параметры соединения с бд, остальное можно по умолчанию. Бд должна существовать , и быть пустой, все таблички там создадутся автоматически.
Готово, форум в работе.

Авторизация
Следующий этап это собственная авторизация. Тоже как выяснилось ничего сложного. Принцип таков - с основного сайта в куки пишутся данные, форум читает куки, авторизует юзера, или если его нет то добавляет в бд и авторизует.
Для того чтобы написать собственную авторизацию нужно создать файлик auth_ваша_авторизация.php в папке ./includes/auth/  У меня он назывался auth_str2.php.
В нем могут быть методы (методы всегда заканчиваются на названии модуля, это обязательно):
function login_str2(&$username, &$password)
- функция залигонивания, вызывается при нажатии кнопки вход.
function init_str2()
- инициализация.
function autologin_str2()
- вызывается если новая сессия.

Автологин то что понадобится.
1. Берем куки и парсим.
2. Есть ли в бд
3. Добавляем если нет.
// выковиривание значений из куки
$cookie = $_COOKIE["userInfo"];
list($role,$username,$password) = split(' ',$cookie);

// не пустые ли значения
if (!$password || !$username)
{
return array();
}
// ищем юзера
$sql = 'SELECT *
FROM ' . USERS_TABLE . "
WHERE username_clean = '" . $db->sql_escape($username) . "'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);


// юзер найден
if ($row)
{
return ($row['user_type'] == USER_INACTIVE || $row['user_type'] == USER_IGNORE) ? array() : $row;
}

// юзер не найден
else {
...
}

Следующий этап вероятно будет шифрование.
Главное не забыть чистить куки когда юзер выходит из админки.
И в админке форума необходимо указать какой модуль юзать, это в общие->средства связи->аутентификация.

Темы
Тем для phpbb предостаточно, например этот каталог. Радует функция подбора цвета. Чтобы установить тему, ее нужно распаковать в ./styles, установить на вкладке стили, и после этого она будет доступна, тема по умолчанию указывается в  : общие->конфигурация->настройка форума->стить по умолчанию.

Язык
С языком аналогично как и с темами, скачать пакет, распаковать в ./languages , установить на вкладке система->языковые пакеты. После этого язык будет доступен в общие->конфигурация->настройка форума.
 Один нюанс - после проделанных манипуляций хотя и указан язык по умолчанию для всего форума, он перекрывается настройкой языка для конкретного юзера , юзер сам должен изменить язык в центре пользователя. Это неудобно, зачем же их так гонять. Версия phpbb 3.0.8. Из источников в сети была почерпнута информация что и правда есть такой глюк или "особенность",называйте как хотите. И если ставить phpbb с уже закаченным в ./languages русификатором то все ok. Раз уж все равно суждено его переставить то во избежания непредвиденного была скачана русифицированная версия 3.0.9 и установлена. Нареканий нет.

БД
Проблема : у меня уже есть бд и не нужно ничего создавать. Как сделать чтобы phpbb ee подцепил ?
 Так же все элементарно, в корне есть файл config.php , в нем хранятся настройки бд. Если перед установкой записать туда параметры то бд не будет создаваться , а использоваться указанная.
config.php
// phpBB 3.0.x auto-generated configuration file
    // Do not change anything in this file!
    $dbms = 'mysql'; //database type it may not be mysql
    $dbhost = 'localhost';
    $dbport = '3306';
    $dbname = 'myforum_phpbb';
    $dbuser = 'root';
    $dbpasswd = '******';

    $table_prefix = 'phpbb_';
    $acm_type = 'file';
    $load_extensions = '';

    @define('PHPBB_INSTALLED', true);
    //@define('DEBUG', true);
    //@define('DEBUG_EXTRA', true);   

11 июл. 2011 г.

Ant в Maven. Как и зачем.


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

Общий краткий план действий,
что нужно делать чтобы из ант проекта сделать мавен :
1. добавить jar-ник (war-ник) в репозиторий m2
2. сгенерировать пустой мавен проект
3. добавить в этот пустой проект в библиотечки ваш jar-ник из мавеновского m2
4. для проверки - билдим , должен получиться корректный jar-ник (war-ник)
5. в этот пустой проект можем добавлять произвольные файлы из исходников ант проекта (с сохранением путей естественно) и спокойно их править как душа пожелает. В результате в сбилдинном проекте будут "наши" файлы а не исходные.

How to или подробные формальности.
(На примере jforum честно скопипащеной с вышеупомянутой статьи)
1. Запускаем в консоли, из папки где непосредственно лежит war-ник (или пишем к нему путь).
$ mvn install:install-file -DartifactId=jforum -Dversion=2.1.8 
-Dfile=jforum-2.1.8.war -DgroupId=net.jforum -DgeneratePom=true -Dpackaging=war
2. Пустой мавен проект
$ mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
-DgroupId=com.company.jforum -DartifactId=jforum -Dversion=2.1.8

Удаляем из него лишнее (можно и не с консоли)
$ rm  src/main/webapp/WEB-INF/web.xml
$ rm src/main/webapp/index.jsp

Версионный контроль
$ git init
$ echo "target" 
$ git add pom.xml src 
$ git commit -m "Initial code import"
3. Добавить зависимости в pom.xml. И удалить лишний junit.

   net.jforum
   jforum
   2.1.8
   war
 

4. Можно билдить! С консоли mvn package , или средствами IDE.

5. Собственные изменения.
Для примера надо изменить страничку в шаблонах. Можно с консоли или средствами IDE.
$ mkdir -p src/main/webapp/templates
$ cp target/war/work/net.jforum/jforum/templates/default src/main/webapp/templates/default
Если необходимо изменить ява код то воспользуемся тем же приемом для jar-ника.
Сбилдим джарник ант проекта, изменив и добавив если нет дефаулт задачу в buil.xml исходников такого вида :

     

Потом с консоли :
$ ant clean jar

Получится jar-ник в папке /build. Его аналогичным образом помещаем в локальный репозиторий мавена.
$ mvn install:install-file -Dpackaging=jar -DartifactId=jforum -Dversion=2.1.8
-Dfile=jforum-2.1.8.jar -DgroupId=net.jforum -DgeneratePom=true -Dpackaging=jar
Так же добавляем зависимость в pom.xml и можно править.

P.S. В результате дальнейшей деятельности и объективной оценки плюсов и минусов различных решений для форума , было отдано предпочтение в пользу phpbb.