rsync: cannot delete non-empty directory
A p (modifier) indicates that an (include/exclude/...) rule is perishable, meaning that it is ignored in directories that are being deleted. (из man rsync)
Има няколко причини, поради които rsync може да ви върне следната грешка:
cannot delete non-empty directory: some_dir_name
- Ако сте използвали
-bили--backup. Тогаваrsyncне трие нищо отdestination. За да модифицирате това поведение, вижте описанието на--backupвman rsync. - Ако ползвате
--excludeправила. Тези правила “предпазват” файлове вdestinationот изтриване, от което следва, че папка, изтрита вsourceняма да може да бъде изтрита вdestination, ако съдържа “предпазени” от правилата файлове, дори да сте задали--delete --force. Решението е да дефиниратеexclude-правилото като perishable.Например, ако синхронизирате директориите
sourceиdestination, които са подsubversion-контрол сrsync, можете да ползвате следната команда:rsync -rv --delete --force --filter 'exclude,p .svn' 'source' 'destination'
В случя избягваме синхронизирането на системните за
subversionдиректории.svn, като въпреки това твърдим, че правилото, “защитаващо”.svn-директориите от прехвърляне, не важи в директории, които подлежат на изтриване (т.е. правилото е perishable).
За повече информация, вижте секцията FILTER RULES и потърсете вътре за “perishable” в man rsync.
PHP-функции any() и all()
Потрябва ми удобството на тези две хубави функции, all() и any(), каквито например ги има в Пайтън. Въпреки богатата база от функции в PHP, бързото ми търсене не показа нищо подобно, което да е вградено, затова:
function all() {
$args = func_get_args();
if (count($args) == 1 && is_array($args[0])) {
return call_user_func_array(__FUNCTION__, $args[0]);
}
foreach ($args as $value) {
if (!$value) {
return false;
}
}
return count($args) > 0;
}
Функцията any() е почти аналогична. Ако ви интересува и нейната пълна реализация, както и нещо като unit-тест, вижте пълния текст на този пост.
Чакалене на IP/host за наличие на пинг
Съвсем скоро (да кажем, преди 10 минути) ми се наложи да чакам да се появи пинг към дадено IP. За целта си написах shell-скриптчето, показано по-долу, което да ми “каже” нещо, в момента, в който се появи ping към съответното IP. Някой може да го намери за полезно:
dimitardimitrov@Midori:~$ cat monitor-host.sh #!/bin/bash if [ "$#" -lt 1 ] then echo "Usage: $0 host.to.monitor" exit 1 fi host="$1" while true do ping -c 1 $host if [ "$?" -eq "0" ] then say The host is now online! I repeat: "The host is now online!". exit fi sleep 1 done
За да работи, е необходимо да имате команда say, която да прави каквото се очаква :) Може да бъде заменена и с нещо друго, разбира се. Чувствайте се свободни да ползвате това парче “код” както искате.
Виртуално отношение
Много интересна идея за изразяване на отношение към нашите любими управляващи може да се види, като потърсите в Google за “провал”. На първо място излиза сайтът на българското правителство. Честито! Тук (а и на доста други места) може да прочетете повече за инициативата.
Ето това е на първо място за мен: корупция
Операции с множества на ниво shell
Наскоро ми се наложи да правя такива магии, основно разлики между множества от числа. Бърз и ефективен начин това да стане, е да използвате вече налични във вашата операционна система* команди/програмки от типа на grep, sort, uniq, comm — кой с каквото разполага и каквото предпочита. В ето този сайт [1] може да видите как можете да прилагате основните операции с множества чрез горепосочените команди, при това по доста интересни начини. Има по няколко варианта за всяка операция и човек разполага с възможност за избор, което винаги е хубаво.
[1] http://www.catonmat.net/blog/set-operations-in-unix-shell/
_______
* Говорим си само за истинските операционни системи.
Обновихме се
Вече се задвижваме от чисто-новия Wordpress 2.7 “Колтрейн” — трябва да отбележа, че административния интерфейс изглежда доста добре. WordPress винаги са били един пример за добре движен open-source проект за мен. Ако ползвате други услуги, например Blogger :) можете да се замислите за прехвърляне :)
booklamp.org – технологията
Един много интересен проект — booklamp.org, имащ за цел да ви предложи книги, които бихте харесали, базирайки се на книгите, които до момента сте чели и са ви харесали. Видеото с разяснения на концепцията и за това как точно се взимат решения, е много интересно и го препоръчвам.
Pygments
Pygments е Python-пакет, който ви дава удобен интерфейс (под формата на библиотека или на command-line инструмент) да оцветявате парчета код (всъщност не само код), като изходът може да бъде в HTML, RTF, LaTeX и други формати. Вижте страничката с примери. Дори Brainf*ck не успява да избяга.
FreeBSD 7.0-RELEASE
Обявена е вече стабилната версия 7.0 на FreeBSD, подходяща за production use. Някои от новостите:
- Много голям процент подобрение на производителността при многоядрените/многопроцесорни системи
- Експериментална поддръжка на файловата система ZFS
- Нов метод за заделяне на памет в User-space – jemalloc
- freebsd-update и много, много други.
Citations
“A language that doesn’t affect the way you think about programming, is not worth knowing.” [1]
“Real efficiency comes from elegant solutions, not optimized programs.” [2]
“Синтактична сол” [3] (текстът е интересен)
Референции:
[1] http://www.cs.yale.edu/quotes.html
[2] http://www.cs.indiana.edu/~jsobel/c455-c511.updated.txt
[3] http://en.wikipedia.org/wiki/Syntactic_sugar