01
LIP

Automatyczna naprawa i optymalizacja baz MySQL

Wpisane przez Michał Kowalski w kategoriach Bash, Debian, MySQL, SQL

Do szybkiej i codziennej naprawy i optymalizacji polecam narzędzie mysqlcheck.
Można w tym celu napisać prosty skrypt bashowy:

1
2
#!/bin/bash
mysqlcheck --host=localhost --user=root --password=haslo --all-databases --auto-repair --optimize --silent

08
GRU

Backup za pomocą lftp

Wpisane przez Michał Kowalski w kategoriach Bash, Debian, OS, OpenBSD, Programowanie, lftp

Poniższy skrypt bash’owy tworzy backup plików i baz MySQL w katalogu /home/backup, następnie za pomocą lftp kopiuje spakowane pliki backupu na zdalny serwer FTP.

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
#!/bin/bash
set -x

DATE=`date +%Y%m%d` #dzisiejsza data

# katalog w którym lokalnie przechowujemy backup, mozemy tutaj
# takze podac jakikolwiek udzial w sieci lokalnej np. //nas/BACKUP
BACKUP_DIR=/home/BACKUP

#backupy z ilu dni poprzednich maja byc tworzone
DNI_WSTECZ=`date --date '5 day ago' +%Y%m%d`

FTP_HOST='ftp.host.com'
FTP_LOGIN='user'
FTP_PASS='password'

#kasowanie katalogu starszego niz DNI_WSTECZ
rm -rf $BACKUP_DIR/$DNI_WSTECZ
echo "Skasowano $BACKUP_DIR/$DNI_WSTECZ"
mkdir $BACKUP_DIR/$DATE

#echo "/root"
tar cfz $BACKUP_DIR/$DATE/root-$DATE.tar.gz  --exclude /proc/kcore --exclude /tmp --exclude /home --exclude /usr --exclude /var  /

#echo "/usr"
tar cfz $BACKUP_DIR/$DATE/usr-$DATE.tar.gz /usr

#echo "/var"
tar cfz $BACKUP_DIR/$DATE/var-$DATE.tar.gz /var

#echo "/home"
tar cfz $BACKUP_DIR/$DATE/home-$DATE.tar.gz --exclude virtual --exclude BACKUP /home

#backup MySQLa
/usr/bin/mysqldump --password=haslo_do_mysql --user=root --opt --all-databases > $BACKUP_DIR/$DATE/mysql-$DATE.sql

lftp -u ${FTP_LOGIN},${FTP_PASS} ${FTP_HOST} < <EOF
cd backup
mrm -r ${DNI_WSTECZ}
mirror --reverse --verbose --only-newer ${BACKUP_DIR} /backup
quit
EOF

Na końcu lini 37 nie powinno być spacji pomiędzy znakami <

26
MAJ

jportal2joomla

Wpisane przez Michał Kowalski w kategoriach Joomla, Jportal, PHP, SQL

Poniżej SQLowy skrypt, pomagający przenieść dane z Jportal do Joomli.

Tabele obu CMSów muszą być w tej samej bazie danych. Przedrostek tabel Joomli w poniższym przykładzie to “jos_“. System komentarzy w Joomli do które przenoszone są komentarze, to AkoComment.

Przy przenoszeniu, trzeba zwrócić uwagę na ID autora wiadomości. Domyślnie można ustawić Administratora jako autora wszystkich newsów, poniżej jest to ID 62 (tabela jos_content).

Skrypt zamienia znaczniki BBCode na czysty HTML.

Uwaga. Skrypt napisałem ok. 1,5 roku na własny użytek, przeniosłem dane i już go nie modyfikowałem. Bardzo możliwe, że w nowych wersjach wymienionych CMSów, pozmieniała się struktura tabel lub nazwy pół w tabeli.
Przed uruchomieniem skryptu zaleca się wykonanie kopi zapasowej bazy danych.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TRUNCATE TABLE `jos_content`;

TRUNCATE TABLE `jos_content_frontpage`;

TRUNCATE TABLE `jos_akocomment`;

INSERT INTO jos_content (`id`, `title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `created`, `created_by`, `publish_up`) SELECT `id`, `title`, `text`, `textcd`, '1', '1', '1', `date`, '62', `date` FROM portalnews WHERE portalnews.stat != 3;

INSERT INTO jos_content_frontpage (`content_id`, `ordering`) SELECT `id`, 2782-`id` FROM portalnews WHERE portalnews.stat != 3;

INSERT INTO jos_akocomment (`name`, `title`, `comment`, `date`, `published`, `contentid`) SELECT `name`, `title`, `text`, `date`, '1', `wid` FROM portalcomments WHERE portalcomments.what = 'news';

UPDATE jos_content SET `title`= REPLACE(`title`, '\\"', '"'),  `introtext`= REPLACE(`introtext`, '\\"', '"'),  `fulltext`= REPLACE(`fulltext`, '\\"', '"');

UPDATE jos_akocomment SET `title`= REPLACE(`title`, '\\"', '"'),  `comment`= REPLACE(`comment`, '\\"', '"');

UPDATE jos_content SET `introtext`= REPLACE(`introtext`, '[i]', '<i>'), `introtext`= REPLACE(`introtext`, '[/i]', '</i>'), `introtext`= REPLACE(`introtext`, '[u]', '<u>'), `introtext`= REPLACE(`introtext`, '[/u]', '</u>'), `introtext`= REPLACE(`introtext`, '[b]', '<b>'), `introtext`= REPLACE(`introtext`, '[/b]', '</b>'),  `fulltext`= REPLACE(`fulltext`, '[i]', '<i>'), `fulltext`= REPLACE(`fulltext`, '[/i]', '</i>'), `fulltext`= REPLACE(`fulltext`, '[u]', '<u>'), `fulltext`= REPLACE(`fulltext`, '[/u]', '</u>'),  `fulltext`= REPLACE(`fulltext`, '[b]', '<b>'), `fulltext`= REPLACE(`fulltext`, '[/b]', '</b>');

UPDATE jos_akocomment SET `comment`= REPLACE(`comment`, '[i]', '<i>'), `comment`= REPLACE(`comment`, '[/i]', '</i>'), `comment`= REPLACE(`comment`, '[u]', '<u>'), `comment`= REPLACE(`comment`, '[/u]', '</u>'), `comment`= REPLACE(`comment`, '[b]', '<b>'), `comment`= REPLACE(`comment`, '[/b]', '</b>');

30
KWI

Dokument XML – opis rodziny

Wpisane przez Michał Kowalski w kategoriach Studia, XML

Zadanie z przedmiotu Język opisu dokumentu

“Napisz dokument XML.
Dokument powinien opisywać rodzinę – dwoje rodziców, syna i córkę. Powinny sie w nim znaleźć informację o imionach i wieku wszystkich osób. Powinien również opisywać zajęcia tych osób, cechy szczególne, zainteresowania i wygląd. Możecie umieścić w nim również inne informacje. Możecie również opisać zwierzęta domowe tej rodziny (psa, kota, rybki …).
Opracujcie na potrzeby tego dokumenty odpowiednią strukturę znaczników i atrybutów.”

Dokument XML – opis rodziny

28
SIE

“Hipertekstowe wspomaganie pracy nauczyciela”

Wpisane przez Michał Kowalski w kategoriach PHP, SQL, Studia

“Hipertekstowe wspomaganie pracy nauczyciela” – taki tytuł będzie nosić moja praca inżynierska.
Mam ją zamiar napisać do końca tego tygodnia ;)
Będzie to aplikacja webowa napisana w PHP (AdoDB, Smarty, Pear) na bazie danych MySql.
Oczywiście zastosowanie AdoDB pozwalać będzie na prace na dowolnej bazie danych.
Być może tytuł pracy jest zagadkowy, ale to nic innego jak “Wirtualny Dziennik”.