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
  1. Ако сте използвали -b или --backup. Тогава rsync не трие нищо от destination. За да модифицирате това поведение, вижте описанието на --backup в man rsync.
  2. Ако ползвате --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.

, , , ,

No Comments

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-тест, вижте пълния текст на този пост.

Read the rest of this entry »

, , , , ,

No Comments

Чакалене на 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, която да прави каквото се очаква :) Може да бъде заменена и с нещо друго, разбира се. Чувствайте се свободни да ползвате това парче “код” както искате.

, , , ,

No Comments

Виртуално отношение

Много интересна идея за изразяване на отношение към нашите любими управляващи може да се види, като потърсите в Google за “провал”. На първо място излиза сайтът на българското правителство. Честито! Тук (а и на доста други места) може да прочетете повече за инициативата.

Ето това е на първо място за мен: корупция

failure

No Comments

Операции с множества на ниво shell

Наскоро ми се наложи да правя такива магии, основно разлики между множества от числа. Бърз и ефективен начин това да стане, е да използвате вече налични във вашата операционна система* команди/програмки от типа на grep, sort, uniq, comm — кой с каквото разполага и каквото предпочита. В ето този сайт [1] може да видите как можете да прилагате основните операции с множества чрез горепосочените команди, при това по доста интересни начини. Има по няколко варианта за всяка операция и човек разполага с възможност за избор, което винаги е хубаво.

[1] http://www.catonmat.net/blog/set-operations-in-unix-shell/
_______
* Говорим си само за истинските операционни системи.

No Comments

Обновихме се

Вече се задвижваме от чисто-новия Wordpress 2.7 “Колтрейн” — трябва да отбележа, че административния интерфейс изглежда доста добре. WordPress винаги са били един пример за добре движен open-source проект за мен. Ако ползвате други услуги, например Blogger :) можете да се замислите за прехвърляне :)

No Comments

booklamp.org – технологията

Един много интересен проект — booklamp.org, имащ за цел да ви предложи книги, които бихте харесали, базирайки се на книгите, които до момента сте чели и са ви харесали. Видеото с разяснения на концепцията и за това как точно се взимат решения, е много интересно и го препоръчвам.

No Comments

Pygments

Pygments е Python-пакет, който ви дава удобен интерфейс (под формата на библиотека или на command-line инструмент) да оцветявате парчета код (всъщност не само код), като изходът може да бъде в HTML, RTF, LaTeX и други формати. Вижте страничката с примери. Дори Brainf*ck не успява да избяга.

1 Comment

FreeBSD 7.0-RELEASE

Обявена е вече стабилната версия 7.0 на FreeBSD, подходяща за production use. Някои от новостите:

  • Много голям процент подобрение на производителността при многоядрените/многопроцесорни системи
  • Експериментална поддръжка на файловата система ZFS
  • Нов метод за заделяне на памет в User-space – jemalloc
  • freebsd-update и много, много други.

No Comments

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

No Comments