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

Динамическое удаление и добавление строк и столбцов в таблице

Когда начал писать скрипт для создания создания шаблонов для вышивки, я даже на знал как он будет выглядеть и что делать. Решив всё делать на JavaScript, начал искать как удалить строки из таблицы, и нашёл вполне вменяемый “мануал” http://sudoku.org.ua/rus/blog/2006/03/09/deltablerows1/ . Только там удалялись лишь строки и по id, для меня id были лишними т.к. удалял я строки снизу, и мне также нужно было не только удаление строк, но и удаление столбцов а так же их динамическое добавление. Вот что получилось: Читать полностью »

Скачать видео с Вконтакте.РУ

Наткнулся я тут вконтакте на довольно интересную группу:”Советские психоделические мультики”) ну и т.к. у меня анлим и надо что-то качать, решил качнуть все мультфильмы из группы)) Собственно начал думать как это сделать, есть онлайн сервисы, также есть плагин для Firefox и userjs для Opera, но есть одно большое но в любом из этих способов нужно качать по одному файлу, да и к тому же ручами заходить копировать и т.д и т.п.,
Читать полностью »

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 всё скушала и начала работать)

Гомер Симпсон на CSS

o
o
o
o
(
O
O
O
\
L
(
O
O
O
O
O
\
L
(
O
|
|
\
\
|
|
\
\
\
\
(
(
8
o
o
o
(
(
8
o
o
o
o
)
)
b
o
O
o
o
o
o
o
o
)
b
o
O
o
o
o
o
o
o
o
o
o
/
/
/
_
_
_
C
C
O
(

взято от сюда http://www.romancortes.com/blog/homer-css/, а тут анимация создания http://nedbatchelder.com/blog/200805/css_homer_animated.html
Кто не понял, это не картинка)

исходники freebsd под виндой

Понадобились тут исходники FreeBSD одной девушке. А где их взять, ясен пень на установочном диске. в папке src обнаружились файлы вида s*.?? открыв фал install.sh стало понятно что это архивы разбитые на части, судя по размеру, чтобы на дискетку влезали(всего то 90 дискеток надо (: ). На сколько я помнил, WinRar справляется с tar.gz, но консольный rar что-то отказался распаковывать что либо кроме rar, зато гуишный рар принимал данные из командной строки и прекрасно распаковывал. Оставалось только собрать разбитый архив воедино, и как ни странно copy справилась с этим без каких либо проблем в итоге был написан extract.bat, практически аналогичный install.sh:
Читать полностью »

search like opera

пока ждал ответа на форуме на мой вопрос решил побаловаться с расширениями для firefox а точнее сделать поиск как в опере)) т.е. ввёл y слово и поиск идёт по яндексу. Разбираться с устройством расширений было неохота, и поэтому решил немного подредактировать существующий, для этого подошёл url fixer в принципе он делает тоже самое меняет урл. пока сделал просто по топорному для проверки как оно, если будет желание мож расширение сделаю)
надо только в файле url-fixer.js изменить пару строк
после

1
var firstSlash = this.value.indexOf("/");

добавить

1
var firstYandex = this.value.indexOf("y");
1
if (firstSpace != -1 && firstSlash == -1 ) {

заменить на

1
if (firstSpace != -1 && firstSlash == -1 && firstYandex != 0) {

и куданибудь в var res = [
добавить

1
{find : "^y\\s(.*)", replace : "http://yandex.ru/yandsearch?text=$1"}

ох уж эта кроссбраузерность

Точнее даже не она, а подгонка разметки и стилей под IE6(т.к. им всё ещё пользуются), чтоб он тоже показывал так как этого хочется, ну или хотя бы приблизительно. Делаем, смотрим в опере – отлично, firefox – отлично, IE – бля…, и начинается подгонка. Вчера столкнулся с тем что IE не воспринимает :hover для всего кроме a, точнее я с этим столкнулся немного раньше, но решил что это мои корки, или IE, вобщем забил. Вчера я таки его победил, точнее не я, а Peter Nederlof и не вчера, а аж в 2005 году), это конечно костыли, но работает и хер с ним. Сегодня IE подсунул мне новую свинью. Всего то нужно было выровнять по центру табличку в div. Но было интересно то что как раз IE показал то что я ожидал увидеть, а опера и огнелис отказались ставить в центр табличку. А сделал я text-align:center для div. Выручил меня старый добрый center). И всё бы хорошо, но

The center element was deprecated in HTML 4.01.
The center element is not supported in XHTML 1.0 Strict DTD.

Так что было решено отказаться от такого подхода, начались поиски и оказалось, что text-align только для inline элементов коими не являются table и div(мне тут ещё и div запихать и отцентровать понадобилось), и в стандарте чёрным по белому написано:

Otherwise, if both ‘margin-left’ and ‘margin-right’ are ‘auto’, they will be set to equal values. This will center the element inside its parent.

что и было сделано. Opera и FireFox сделали всё как надо, а вот теперь настала очередь IE, он видимо этот стандарт видел впервые, и что бы заставить его повиноваться, пришлось в стиль div-родителя прописать text-align:center;
Чего интересного ждать от IE завтра?)

backup

Для вордпресса есть хороший плагин, который делает бэкап раз в час, день неделю, это уж как настроить, и есть возможность отсылки его на мыло. Решил сделать такое же для phpbb3, не плагин конечно, а так скриптик. Вот что получилось:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/acp/acp_database.' . $phpEx);
include($phpbb_root_path . 'includes/functions_install.' . $phpEx);

$time = time();
$filename = 'backup_' . $time . '_' . unique_id();
$mail = 'backup@mail.com';
$subj = 'backup';
$tables = get_tables($db);
$ext = new mysql_extractor(false, true, 'gzip', $filename, $time);
$ext->write_start($table_prefix);
foreach ($tables as $table_name){
    $ext->write_table($table_name);
    $ext->write_data($table_name);
}
$ext->write_end();

//send mail
$path = $phpbb_root_path . 'store/' . $filename . '.sql.gz';
$boundary = "==PHPBB-BY-VAMPIRUS-".md5(time());
$fp = fopen($path,"rb");
$file = fread($fp,filesize($path));
fclose($fp);
$data = chunk_split(base64_encode($file));
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary="$boundary"\n";
$headers .= 'From: vampirus@site.ru'. "\n";
$message = "blabla\nThis is a multi-part message in MIME format.\n\n" .
                    "--{$boundary}\n" .
                "Content-Type: text/plain; charset=koi8-r\n" .
                "Content-Transfer-Encoding: 8bit\n\n" .
                "backup\n\n";
$message .= "--{$boundary}\n" .
                "Content-Type: application/octet-stream;\n" .
                " name="{$filename}.sql.gz"\n" .
                "Content-Disposition: attachment;\n" .
                " filename="{$filename}.sql.gz"\n" .
                "Content-Transfer-Encoding: base64\n\n" .
                $data . "\n\n" .
                "--{$boundary}--\n";
mail($mail,$subj,$message,$headers);
unlink($path);
?>

естественно на хосте должно быть установлено расширение zlib для php.
Осталось теперь только в cron задание добавить. Бэкапы шлуются на мыло на гмэйле, помойму самый лучший вариант).