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

01
MAJ

Linki z nofollow w menu Joomla 1.x

Wpisane przez Michał Kowalski w kategoriach Joomla

W Joomla 1.x nie możemy określić które linki w menu (mod_mainmenu) mają posiadać rel=”nofollow”.

Najprościej jest w pliku /modules/mod_mainmenu.php zmienić linijkę numer 20.

Przed zmianą:

20
$txt = '<a href="'. $mitem->link .'" target="_blank" class="'. $menuclass .'" '. $id .'>'. $mitem->name .'</a>';

Po zmianie:

20
$txt = '<a href="'. $mitem->link .'" rel="nofollow" target="_blank" class="'. $menuclass .'" '. $id .'>'. $mitem->name .'</a>';

Od tej pory wszystkie linki wychodzące będą posiadały atrybut nofollow.

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 <

23
WRZ

Boatcamp #3 – 23 września 2008, start 19:00

Wpisane przez Michał Kowalski w kategoriach Boatcamp

boatcamp

Boatcamp to cykliczne, nieformalne i otwarte spotkania barcamp w Łodzi. Celem tych spotkań jest integracja lokalnej branży internetowej, wymiana doświadczeń, pomysłów oraz dobra zabawa.

Na Boatcampie poruszane są tematy nowych technologii, e-biznesu, open source, internetu czy marketingu. Każdy może przedstawić oraz przedyskutować swój pomysł. Każdy może również zostać prelegentem, wystarczy że ma coś ciekawego do przekazania. Spotkania mają otwarty charakter i tak na prawdę wszystko zależy od Was.

Boatcamp o okrągłym numerze “3″ odbędzie się 23′go września w klubie Bagdad Cafe. Jeśli pogoda nie zrobi nam na złość to część nieoficjalną przeniesiemy do ogródka przy grillu.

gdzie: Bagdad Cafe ul. Jaracza 45

kiedy: 23 września 2008, start 19:00

Agenda przedstawia się następująco:
1. “User Experience w praktyce” – Krzysztof Urbański ( 2ia)
2. “Skuteczne pozyskiwanie inwestora” – Zbigniew Krzewiński
( SpeedUp Group)
3. “Optymalizacja witryny – klucz do sukcesu w wyszukiwarkach” – Bartłomiej Juszczyk ( Adseo, Grupa Adweb)
4. “Startupy i finansowanie – miłość czy nienawiść?” – Krzysztof Kowalczyk ( UBIK BC)

01
WRZ

apache-top

Wpisane przez Michał Kowalski w kategoriach Apache

apache-top dostarcza w czasie rzeczywistym listę aktywnych procesów ze zdalnego/lokalnego serwera Apache. Wyświetla informacje podobne do linuksowego top-a.

apache-top pokazuje:

  • Aktywne procesy wraz z ich PIDami, czas życia procesu, obciążenie procesora, powiązane VirtualHosty, IP klientów (wywoływane pliki i używane protokoły (POST, GET))
  • Uptime serwera i ostatni restart
  • Ilość żądań na sekundę, Kb na sekundę
  • Liczbę aktywnych i nieaktywnych procesów
  • Wykres z aktywnymi i nieaktywnymi procesami wraz z ich statusem

Wymagania

Download

Przykłady

Aby zobaczyć statystyki dla serwera o IP 192.168.0.1:

apache-top -u http://192.168.0.1/server-status

Jeśli z jakiegokolwiek powodu nie mamy bezpośredniego dostępu do portu 80, możemy przetunelować połączenie:

ssh -L 8080:localhost:80 192.168.0.1

I wykonać polecenie na innym terminalu:

apache-top -u http://localhost:8080/server-status

Linki

Zrzut ekranu

apache-top

Licencja

apache-top używa GNU/GPL License.

29
SIE

Rozszerzenie SOBI2 dla ARTIO JoomSEF ze wsparciem dla języka polskiego

Wpisane przez Michał Kowalski w kategoriach ARTIO JoomSEF, Joomla, SOBI2

Rozszerzenie do ARTIO JoomSEF (wersja 2.2.4 i wyżej) pozwalające komponentowi SOBI2 dla Joomli wyświetlać przyjazne linki.

Testowane na poniższych wersjach oprogramowania:

  • Joomla! 1.0.15
  • SOBI2 RC 2.8.7.2
  • ARTIO JoomSEF v2.3.0

Rozszerzenie SOBI2 dla ARTIO JoomSEF ze wsparciem dla języka polskiego

Przykład działania można obejrzeć na http://www.ozorkow.net/firmy/index.html

06
SIE

projekt 888

Wpisane przez Michał Kowalski w kategoriach Fotografia

Na digart.pl powstał projekt 888. Polega on na zrobieniu zdjęcia w dowolnym miejscu i dowolnej rzeczy. Jednak ważna jest data i czas wykonania.
Fotografia musi być zrobiona 8 sierpnia 2008 roku o godzinie 8:08.

Z zebranego w ten sposób materiału dokumentującego tą jedną, niepowtarzalną chwilę powstanie wystawa która odwiedzi 8 największych polskich miast.

W tym dniu akurat czeka mnie weekendowy wyjazd do Kazimierza Dolnego nad Wisłą, więc zdjęcie będzie przedstawiać prawdopodobnie krajobraz łódzkich nizin.

projekt 888

06

Popieram Kodeks Współpracy z Blogerami

Wpisane przez Michał Kowalski w kategoriach Inne

Wiarygodność blogów jest ich najważniejszą cechą. Czytelnicy oczekują, że czytając wpisy na danym blogu, nie są wprowadzani w błąd, a jeśli bloger otrzymał za publikację wynagrodzenie – zostaną o tym jasno i wyraźnie poinformowani. Również czytając komentarze nie zakładają, że pisały je anonimowe osoby, zatrudnione przez firmę, której wpis dotyczy.

Podczas pisania blogów często spotykamy się z sytuacjami, w których pracownicy różnych firm, w nieetyczny sposób próbują promować swoje produkty i usługi. Czy to wysyłając informacje anonimowo, czy udając niezależnych Czytelników w komentarzach, czy proponując nam wpisy sponsorowane, prosząc jednocześnie o niepodawanie źródła informacji. Odmawiając czy piętnując takie sytuacje wiemy jednocześnie, że mogą zdarzyć się przypadki, że ktoś inny zgodzi się na taką propozycję. A to w naszej opinii źle służy całej blogosferze.

Wiemy również, że nieetyczne zachowania firm, agencji reklamowych czy specjalistów od marketingu szeptanego szybko są w blogosferze rozpoznawane i piętnowane. To skutkuje konfliktami firm ze społecznościami internetowymi i utratą dobrego imienia przedsiębiorstw. Zależy nam na tym, żeby dostrzeżony już potencjał blogów został wykorzystany z korzyścią dla wszystkich stron – blogerów, ich Czytelników i firm, które chcą promować swoje produkty. Dlatego powstał Kodeks Współpracy z Blogerami – zbiór dobrych zasad, które pozwolą firmom etycznie i skutecznie z nami współpracować, a naszym Czytelnikom dadzą pewność, że wiarygodność blogów nie jest zagrożona.

Kodeks można przeczytać w moim blogu lub na stronie inicjatywy KODEKS WSPÓŁPRACY Z BLOGERAMI.

15
LIP

WordPress 2.6

Wpisane przez Michał Kowalski w kategoriach Wordpress

Dziś została udostępniona nowa wersja WordPressa 2.6, prawie miesiąc przed zapowiadaną wcześniej datą premiery. Wersja 2.6 “Tyner” (od nazwiska pianisty jazzowego Tyner McCoy).

Poniżej krótki screencast z demonstracją nowych funkcji WordPressa 2.6.

Więcej o nowej wersji na http://wordpress.org/development/2008/07/wordpress-26-tyner

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>');