/var/log/life.log
Блог программиста из солнечной Бурятии

функция eval в java своими руками

Функция eval присуща скриптовым языкам, не смотря на то, что Java не является скриптовым языком и такого метода там нет, существует возможность реализовать её самим, Java предоставляет для этого инструменты. Определимся, что для этого нужно:
1) генерация кода для компиляции
2) компилирование в байт-код
3) загрузка байт-кода и его исполнение
Читать полностью »

ODBC, MSAccess и прочая нечисть

Под FreeBSD я что-то не решился этим заниматься, ну тат вроде как замена винде и делать пришлось. Задача такова: есть прога на java, которая через ODBC общается с MSAccess базой, вот это извращение нужно было заставить работать под ubuntu. Для начала были установлены unixodbc и mdbtools. Поле их установки никаких ярлыков в меню не появилось, команды аля unixodbc mdbtools не прокатили, через поиск надыбыл /usr/share/menu/unixodbc-bin а то туда уже ODBCConfig, надо сказать толку от этой гуишной оболочки не много, так и не разобрался как нормально что там сделать, всё ошибки выдавал, опытным путём и гуглом было выяснено, что все что надо находится в /etc/odbc.ini и /etc/odbcinst.ini. В odbcinst.ini находились настройки драйвера MSAccess которые мне всётаки удалось запихнуть. а в odbc.ini настройки System DNS где собственно и должно находится описалово конекта к базе, ничего сложного там не было

1
2
3
4
5
6
7
8
[myConnection]
Description = Microsoft AccessTS
Driver = MDB1
Database = /home/vampirus/db1.mdb
Servername = localhost
UserName =
Password =
Port = 5432

помойму только Driver,Database тут нужны но раз работает и так то оставил)
проверил работу

1
2
isql -v myConnection
 select * from Realtion

работает, ну думаю зашибись, так просто, вечером проверю, как там java с этим подружится, и пошёл на работу.
Вечером.
про попытке запуска прога выпадала с исключением, ещё бы ведь я почему-то решил что будет лучше если поставить Open-jdk вмето sun'овского. Ладно поставил сановкий jdk. И тут меня ждал сюрприз, видимо драйвер корявый или что, но при любом раскладе было Result Set Type is not supported. Получается от MSAccess надо было отказыватся, ничего лучше mysql я не придумал. Надо сказать ставить mysql php apache я не хотел, т.к. для этих целей я хотел поставить FreeBSD на старый комп. Ну ладно думаю пригодится mysql ещё для чего-нибудь. т.к. php ставить не хотелось, решил ну попробую через perl не сложно должно быть, но модуля(или как он там?) DBD:ODBC не оказалось, про попытке его доставить Makefile.pl выдал какие то ошибки, разбираться в которых небыло никакого желания. потом для импорта, решил поробовать mdbtools, не зря же ставил, но на сколько я смог понять импорт шёл только в csv, ну думаю тут на python попробую, благо с csv я на нём уже работал, но тут меня ждала подлянка, для работы с mysql надо было что-то доставить, а было уже лень. Последней попыткой была kexi под FreeBSD она вроде в mysql мне перекинула(или нет, непомню), но тут она отказывалась это делать и падала.
Уторо вечера мудренее.
Надо было сразу поставить php и не выпендриваться, ах да ещё пришлось качнуть драйвер odbcmysql и настроить, но это мелочи. скриптик простой ничего сложного

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$r = odbc_connect("myConnection","","");
$q = odbc_exec($r,"select * from Relation");
$conn = mysql_connect("localhost","root","password");
mysql_selectdb("db1");
while(odbc_fetch_row($q)){
    $PS=odbc_result($q,"PS");
    $Parg = odbc_result($q,"Parg");
    $X = odbc_result($q,"X");
    $R = odbc_result($q,"relation");
    $Y = odbc_result($q,"Y");
    mysql_query("INSERT INTO Relation (PS,Parg,X,relation,Y) VALUE ('$PS','$Parg','$X','$R','$Y')");
}
?>

и вот я с надежной запускаю прогу, а она мне идите лесом, таблицы RELATION нету, как так? есть она говорю(ну не привык я ещё что регистр имеет значение), ладно переименовываю таблицу в RELATION, а она мне нету таблицы Relation, ах ты су... @= во что значит делат прогу в винде группе человек. Переведя всё к единому регистру, java всё скушала и начала работать)

интересный кусок кода

1
2
3
4
5
6
7
8
public  void run() {
            while (!stopped) {
                Object msg = queue.pull();
                if (!stopped) {
                    processor.processMessage(msg);
                }
            }
        }

Вот такой интересный кусочек кода нашёлся при просмотре кода Unimd'a, т.е. queue.pull() не изменяет stopped, я так полагаю эта проверка возникла из за того, что это чудо моногопоточное, но даже в этом случае от этой проверки на мой взгляд толку не очень много. А нам в этой хернёй приходится работать, и собственно вылазят ошибки, походу будем переписывать это чудо, хз только будет толк ли нет.

upd:толка от наших изменений никакого(

opera+java+mail.ru

Странное сочетание, 3 этих элементов даёт непонятный результат, т.е. при чтении писем оперой на мэйл ру она падает перед этим записав на жёсткий opera.core и лог ява машины, до этого я грешил на яву точнее на како то там diablo т.к. он фигурировал в логе да и eclipse с аналогичными признаками падал, но теперь то эклипс работает, а в логе фигурирует уже Java VM: Java HotSpot(TM) Client VM (1.5.0_13-p7-oper_16_jan_2008_22_08 mixed mode), видими всётани это что то с оперой не так, ведь firefox не падает, хотя 1 раз на каком то сайте он упал.

Установка софта

выбирал icq клиент, centericq чёт не качалась, поставил kopete, там траблы с принимаемыми сообщениями, поставил SIM вроде устраивает, файлы правда нельзя передавать(или можно?), может что другое потом найду.
Установка java это целая эпопея, пытаешься поставть jdk она вываливается с еррором, мол по лицензии качайте сами, качаешь кажись штук 6 файлов, 1 раз нужно зарегатся, ну ладоно, начинаешь ставть, так она посередине опять вываливается и говорит мол качните мне ещё 1 файлик, ну ладно, качнул поставил, хз норм работает или нет, негде проверить.
Начал ставить eclipse качался вообще с какогото бразильского сервера, меееедленноооо оставил на ночь к утру поставится, ага сейчас) утром встал смотрю а он ждёт пока я опции выбиру, вот сволочь, ладно выбрал, так он опять пошёл что то качать, потом началась сборка, ппц столько варнингов я ещё никогда не видел, вообще корки эти созлатели иклипса( или библиотек?), src.zip ещё каких то нехватало, ладно с горем пополам сборка запершилась, ну думаю запущу, так эта сволось выдала еррор какойто и осталась висеть эмблемка эклипса, вообщем неудачно.
Странно почему в кде набыло сразу хрени которая показывает заряд батареи, поставил klaptobat или как то так называется.
Теперь ищю нормальный менеджер закачек гуишный и плеер, ненайду буду наверное wget ом пользоваться