2010
12.19
helium:/var/torrent☠ xfs_db -r /dev/mapper/rootvg-tor
xfs_db> frag
actual 2649152, ideal 1136, fragmentation factor 99,96%

dla porównania /home:

hydra:~☠ xfs_db -r /dev/mapper/rootvg-home
xfs_db> frag
actual 217039, ideal 213275, fragmentation factor 1,73%

Chociaz jak ktoś się uprze to można po nocach odpalać xfs_fsr (xfsowy defrag)

2010
12.13

Klepię sobie ostatnio mały projekcik i używam mojego domowego serwera jako testserwera dla niego (dlatego że jest w miarę “czysty” więc jak zapomnę dodać jakiegoś liba do zależności bo już mam go na swoim desktopie to wyłapie to przy deployu na serwer). Jak na razie deploy sprowadzał się do wejściu na serwer, zrobieniu pulla i restart aplikacji, ale nie było to zbyt wygodne. Postanowiłem to uprościć (lenistwo przyjacielem automatyzacji;] )

(more…)

2010
11.24

Jeżeli z jakiegokolwiek (przypadkowy UPDATE/INSERT, test query na slave przed wrzuceniem na mastera, “karmienie” nowego slave’a) powodu slave Ci się rozjechał:

Na Masterze (Debian, w innych pewnie będziesz musiał zamiast --defaults-file podać --user=user_name --password=password)

mysqldump --defaults-file=/etc/mysql/debian.cnf -A --master-data >dump.sql
scp dump.sql gdzies:/dump.sql

Na slave: (znowu, w zależności od konfiguracji będziesz musiał klepnąć passworda)

# mysql --defaults-file=/etc/mysql/debian.cnf -e "STOP SLAVE; source dump.sql; START SLAVE"

Uprzedzając:

  • Tak, można też skopiować wszystkie pliki z danymi “na chama”
  • Tak, najlepiej mieć slave w trybie read-only, ale jak ktoś ma superusera w bazie to i tak może robić zmiany więc nie chroni to całkowicie przed psuciem.

Warto też spojrzeć na http://www.maatkit.org/doc/mk-table-sync.html (jest w Debianie jako paczka maatkit) dla trochę “mądrzejszego” synca

2010
11.04

Tasker

Jest to app który pozwala na w miarę proste “skryptowanie” akcji na telefonie. W skrócie, bierzemy “zdarzenie” (wszystko od określonego przedziału czasowego przez lokację do eventów typu “ekran włączony” lub “ładowanie baterii” i przypisujemy im akcję. Np. ja mam ustawioną jeden task który włącza “tryb lotniczy” w nocy, i inny który wyłącza go przy włączonym ekranie. Dzięki temu WiFi/GPRS/3G nie żre mi baterii przez całą noc ale jak zachcę mi się przeglądać RSSy w nocy to wystaczy że włączę ekran i bez żadnego dodatkowego klikania włącza mi się WiFi. A to tylko niewielki procent możliwości.

Tasker jest podobny pod tym względem do Locale ale jest tańszy, ma większe możliwości (chociaż trochę trudniejszy w obsłudze) i posiada support dla pluginów Locale. A Locale nie lubię z tego powodu że dali free betę a potem płatną full wersję gdy jeszcze market nie umożliwiał kupna co mnie poirytowało (bo się od tej funkcjonalności uzależniłem) ;]. Niby chyba można było kupić przez PayPala, ale olałem to wtedy, i słusznie zresztą, Tasker lepszy ;].

(more…)

2010
08.29

W pracy admina po jakimś czasie chyba każdy zbiera sobie kolekcję skryptów i programów które używa do debugowania błędów, czy do automatyzacji czynności. Od tooli typu nmap, socat czy tcpdump które są niesamowicie użyteczne ale nie są instalowane w domyślnej instalacji, po własne skrypty automatyzujące niektóre czynności, czy służące np. do wyciągania statów z monitoringu.

I o ile gdy się ma jeden serwer panowanie na tym nie stanowi wielkiego problemu (zainstalować to co potrzeba, a skrypty wrzucić do /usr/local/bin) to już przy dwóch zaczyna się “aaa mam nową wersję tego skryptu na innym serwerze” a przy większej ilości zwykle kończy się na instalowaniu tooli “kiedy są potrzebne” czyli za każdym razem tracimy czas, a w przypadku własnych skryptów kończy się to tym że na serwerach jest 6 różnych wersji tego samego skryptu.

Rozwiązanie jest proste, albo trzymać wszystkie skrypty na NFSie ( ale to raczej obejście problemu ), albo zapaczkować je i dodać repo z paczkami do /etc/apt/sources.list. Na szczęście samo tworzenie prostych paczek (bez rzeczy wymaganych  żeby paczka była zaakceptowana do “oficjalnego” repo Debiana/Ubuntu) jest dosyć proste. Ale po kolei.

(more…)

2010
07.29

Prosty trick do “inkrementacyjnego” backupu MySQLa. Nie nadaje się raczej na produkcję z racji tego że nie da się sensownie usuwać starych backupów, oraz przy dużych bazach będzie raczej wolne (wymagany dump i potem diff ze starą bazą po każdym dumpie), ale na serwerach developerskich może być całkiem przydatne z racji tego że daje ładny changelog zmian w bazie więc można popatrzeć co zmienił np. update aplikacji. Powinno się też nadawać do mało zmieniających się stron np. blog (no chyba że ktoś używa modułu do statów, wtedy może się szybko zapchać).

Tworzymy repo:

# mkdir ~/mysql_backup
# cd ~/mysql_backup
# git init

Tworzymy skrypt backupujący o treści:

#!/bin/sh
cd ~/mysql_backup
mysqldump --defaults-file=/etc/mysql/debian.cnf --lock-tables --all-databases --skip-extended-insert --skip-comments    >db.sql
DATE=$(date +%F_%X)
git commit -a -m"$DATE"
git gc

i dorzucamy go do crona, można codzień, można co minutę. git gc można odpalać rzadziej, ale chociaż raz na jakiś czas jest zalecane żeby repo nie rosło zbytnio

2010
06.16

Spotkałem się już setki razy z pytaniami typu “czy warto jest wirtualizować” albo “co to właściwie daje” czy “a czemu po prostu nie odpalić paru usług na jednej maszynie”. To tak w skrócie:

(more…)

2010
06.07

http://www.daskeyboard.com/ – Klawiatura z mechanicznymi klawiszami, dla niektórych szczyt marzeń jeżeli chodzi o klawiatury, inni natomiast widza ja w kategorii “oo fajne,  brak nadruku, hackish!” (w wersji “ultimate”)  ;]. Zaciekawiło mnie jak by się na takiej klawaiturze pisało, przegrzebałem graty i znalazłem klawiaturę i farbę w sprayu czarny mat. Oto efekt:

Wyjąłem klawisze (wymagały umycia, farba nie trzyma sie brudu ;]), wyczyściłem, rozłożyłem, potem 5 cienkich warstw (warto poczekać parę minut aż wyschnie) i voila, “Das Keyboard Lite” ;].

Przy bliższym spojrzeniu ciężko byłoby poznać że malowana gdyby nie “wypukłe” ślady literek. Swoją drogą szkoda że nie robią Das Keyboard bez części numerycznej…

2010
05.31

Widziałem w życiu kod wielu aplikacji, deployowałem jeszcze więcej, sporo “debugowałem” (tzn. szukanie czemu to %&*# nie działa mimo że gdzie indziej na “prawie” takiej samej konfiguracji działa), parę napisałem i jest parę rzeczy które wkurzają mnie jako admina, nie mówiąc już o zmarnowanym czasie.

Nie jestem ekspertem jezeli chodzi o pisanie aplikacji (“ekspertowanie się” jest niestety popularne w internecie “pisałem 5 lat koszmarne aplikacje to zaczne blogowac jakim to jestem awsom ekspertem  w PHPie i uczyć ludzi pisać jeszcze gorsze aplikacje”), ale koszmaryzm deployowania i zarządzania niektórymi appami doprowadził do tej listy ;]

(more…)

2010
05.31

Tak wiem, geeki (geecy, geekowie ?) wiedzą to od dawna, ale sam filmik jest nieźle zrobiony, każdy manager IT powinien go zobaczyć ;]