Zalety:
- możliwość wznowienia
- możliwość prostej kompresji strumienia
- możliwość wykorzystania dowolnego protokołu
- powszechna dostępność pod Linuksem
- brak wad
rsync -arvz -e ssh user@some-host:~/remote-direcotory ~/local-directory
rsync -arvz -e ssh user@some-host:~/remote-direcotory ~/local-directory
tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/home /
Utworzony zostanie plik backup.tar.bz2, z którego możemy w każdej chwili przywrócić działający system z (np. dystrybucji live bądź płyty ratunkowej) poleceniem:
tar xvpfj backup.tar.bz2 -C /
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
mkdir home
W przypadku gdy przenosimy system na inny dysk, należy ustawić:
/etc/yum/pluginconf.d/refresh-packagekit.conf
zmieniając:
enalbled=1
na
enabled=0
pkg-prefs
i wprowadzamy stosowne poprawki.yum remove PackageKit-yum-plugin
./configure
make
ale w trkacie kompilacji wychodzi, że brakuje nam pliku stropts.h. Krótkie poszukiwania:
yum whatprovides */stropts.h
i już wiemy, że gdzieś coś takiego jest i dalej zmierzamy już prosto do działającego programu:
yum install gcc-c++ arm-gp2x-linux-glibc
ln -s /usr/arm-gp2x-linux/include/stropts.h /usr/include/bits/
ln -s /usr/arm-gp2x-linux/include/stropts.h /usr/include/
ln -s /usr/arm-gp2x-linux/include/bits/xtitypes.h /usr/include/bits/
:set noswapfile
jednak po co tak robić, jeśli dopisując kilka wierszy w vimrc jesteśmy w stanie zachować "czystość" katalogu roboczego i kopie tymczasowe edytowanych plików:
"ustaw katalog swap dla plików tymczasowych
if has("win32") || has("win64")
set directory=$TMP
else
set directory=/tmp
end
Oczywiście katalog /tmp można wymienić na dowolny katalog, np. $HOME/.vim_tmp, itp.
mysql "bazaDanych" --user="login" --password="hasło" < plik.sql
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS tabela1, tabela2, ..., tabelaN;
firstboot
reboot
telnet 192.168.1.1
login: roottftp -l -m octet 192.168.1.1 -c put openwrt-wrt54g3gv2-vf-squashfs.bin
telnet 192.168.1.1
użytkownik: rootpasswd
Jako, że ostatnimi czasy Firefox zaczął przechodzić drastyczne zmiany, a jego numery wersji rosną szybciej niż ilość wolnego czasu w rękach developerów, zaszła konieczność porzucenia Selenium IDE, które ostatnią stabilną wersję widziało gdzieś w okolicach Firefox 3.5. Niestety nie poruszę w tym wpisie żadnych technicznych kwestii, gdyż moje doświadczenie tym programem nie jest wystarczające, aby zamieścić jakieś pożyteczne informacje. Będzie to bardziej porównanie jabłka z pomarańczą.
Na tak drastyczny krok nie zdecydowałbym się gdyby nie Windmill, projekt mający na celu przeprowadzenie testów funkcjonalnych aplikacji webowych. Jego niekwestionowanym atutem jest fakt, że jest niezależny od platformy i wspiera wiele przeglądarek (tj. Chrome, Firefox oraz IE). Aby skorzystać z dobrodziejstw tego programu wystarczy posłużyć się informacjami zawartymi na stronie pod linkiem zamieszczonym powyżej.
W trakcie moich prac nad programami, stwierdziłem, że jest to zdecydowaniem bardziej elastyczne rozwiązanie niż wspomniane Selenium IDE. Rzeczą jaka najbardziej rzuca się w oczy to możliwość uruchomienia testów z wiersza poleceń (gdyby to miało kogoś odstraszyć to można również to zrobić z pomocą interfejsu graficznego). Umożliwia to wykonanie testowego wdrożenia (deployment) oraz testów wraz z wprowadzeniem przykładowych danych do naszej aplikacji w jednym zadaniu.
Jako, że nie ma róży bez kolców, opiszę również osobliwości... trudnością jaką napotkałem jest konieczność edycji (zamiany kolejnością poszczególnych czynności) testów przez edytor tekstu, co nie jest aż tak wizualne, ale dla kogoś kto rozwija kod aplikacji nie powinno stanowić to przeszkody.
SELECT
RAND() liczba_losowa_zmiennoprzecinkowa,
CAST( RAND()*10000 AS UNSIGNED ) liczba_losowa_calakowita
FROM
information_schema.columns
inner join information_schema.columns inf ON 1 = 1
Wynikiem powyższego zapytania, będą 2 kolumny z liczbami pseudolosowymi:
g!/wzorzec/d
1,5s/szukaj/zastąp/g
^R p (ctrl+r p)