Просто ссылки, выбираем на вкус и цвет.
1. Nautilus, http://live.gnome.org/Nautilus (desktop)
2. Dolphin, http://dolphin.kde.org/ (desktop)
3. Konqueror, http://www.konqueror.org/ (desktop)
4. Thunar, http://thunar.xfce.org/index.html (desktop)
5. PCManFM, http://pcmanfm.sourceforge.net/ (desktop)
6. Krusader, http://www.krusader.org/ (GUI)
7. Xfe, http://roland65.free.fr/xfe/ (GUI)
8. ROX-Filer, http://roscidus.com/desktop/ROX-Filer (desktop)
9. Midnight Commander, http://www.midnight-commander.org/ (console)
10. Vifm, http://vifm.sourceforge.net/ (GUI)
11. GNOME Commander, http://www.nongnu.org/gcmd/ (GUI)
12. emelFM2, http://emelfm2.net/ (GUI)
13. Tuxcommander, http://tuxcmd.sourceforge.net/ (GUI)
14. Double Commander, http://doublecmd.sourceforge.net/ (GUI)
15. FlyBird, http://fly-bird.org/ (GUI)
16. gentoo, http://obsession.se/gentoo/ (GUI)
17. Worker, http://www.boomerangsworld.de/worker/ (GUI)
18. lfm - Last File Manager, http://www.terra.es/personal7/inigoserna/lfm/
(console)
19. Filerunner, http://linux.maruhn.com/sec/filerunner.html (GUI)
20. BeeSoft Commander, http://www.beesoft.org/ (GUI)
21. Necromancer's DOS Navigator, http://ndn.muxe.com/ (console)
22. FileCommander, http://silk.apana.org.au/fc2development.html (console)
23. FDclone, http://hp.vector.co.jp/authors/VA012337/soft/fd/ (console)
24. FileRunner, http://www.cd.chalmers.se/~hch/filerunner.html (GUI)
25. Desktop File Manager, http://www.kaisersite.de/dfm/ (desktop)
26. TKDesk, http://tkdesk.sourceforge.net/ (desktop)
27. muCommander, http://www.mucommander.com/ (GUI)
28. XNC - X Northern Captain, http://www.xnc.dubna.su/ (GUI) (похоже, разработка прекращена)
Из двух-панельных я использовал mc (ставлю всегда), krusader (в KDE), gnome commander (в Gnome).
Кто знает еще какие?
19 мая 2009 г.
Управление модулями апача 2 в дебиане
Постоянно забываю утилиты для управления модулями apache2 в дебиане (ибо редко я его настраиваю). Сделаю заметку.
a2enmod: включить модуль апача (ничего особенного он не делает, создает ссылки на модуль .load и .conf файлы в папке mods-enabled).
Например, включить модуль rewrite:
#a2enmod rewrite
a2dismod: делает вещи обратные a2enmod
Например для отключения модуля:
#a2dismod rewrite
Эти утилиты без параметров выдают список модулей, которые можно активировать в случае a2enmod и список модулей, которые можно деактивировать в случае a2dismod.
a2enmod: включить модуль апача (ничего особенного он не делает, создает ссылки на модуль .load и .conf файлы в папке mods-enabled).
Например, включить модуль rewrite:
#a2enmod rewrite
a2dismod: делает вещи обратные a2enmod
Например для отключения модуля:
#a2dismod rewrite
Эти утилиты без параметров выдают список модулей, которые можно активировать в случае a2enmod и список модулей, которые можно деактивировать в случае a2dismod.
17 мая 2009 г.
Создание загрузочной флешки из img образа в windows
Утилитка, которая корректно залила образ *.img linux на флешку из под windows:
UNetbootin.
Рекомендую.
UNetbootin.
Рекомендую.
Ярлыки:
flash,
img,
linux,
UNetbootin
1 апреля 2009 г.
Байка
Задались мы тут семейством вопросом слова "байка". Мне казалось, что это сказка, полностью лишенная реальной подосновы. Начали спорить.
В итоге - википедия говорит, что
Я верю Ожегову. А вы?
В итоге - википедия говорит, что
Байка — юмористический рассказ, как правило, основанный на реальных событиях. Достоверность байки несколько выше, чем анекдота, но это не исключает литературных приёмов, с помощью которых рассказчик подаёт байку в желаемом виде., а вот словарь Ожегова, что
БАЙКА2, -и, ас. (разг.) Побасенка, выдумка, басня (во 2 знач.).Охотничьи байки. Что-то не похожа эта б. на правду.
Я верю Ожегову. А вы?
Ярлыки:
непонятнки,
толкования
15 марта 2009 г.
Архивирование системы или бекап в debian linux
Сделаю заметочку на будущее, чтобы в очередной раз не вспоминать скрипты :)
Скрипт переходит в директорию куда надо сохранить архив, и выполняет tar.
--exclude-from - берем список исключений из файла в корне (сам скрипт тоже в корне)
Последние две - мои директории.
dmpfile=backup.tar.bz2
srcdir=/
trgdir=/share
cd $trgdir && tar -cfj $dmpfile --exclude-from=/exclude_back $srcdir
Скрипт переходит в директорию куда надо сохранить архив, и выполняет tar.
--exclude-from - берем список исключений из файла в корне (сам скрипт тоже в корне)
# cat exclude_back
/proc
/mnt
/var/run
/dev
/sys
/home/repo
/share
Последние две - мои директории.
Ярлыки:
архивирование,
бекап,
debian,
linux,
tar
11 марта 2009 г.
Контекстные процессоры Django
Как пишет django book
То есть, собственно говоря, для чего на нужны контекстные процессоры?
Контекстный процессор принимает объект HttpRequest и возвращает словарь переменных для его последующего использования в контексте шаблона.
То есть, для поставленной перед собой задачи - вывод дополнительной информации в любых шаблонах он справляется.
В django книге описано, как создавать свои глобальные процессоры.
Есть еще варианты - http://softwaremaniacs.org/forum/django/1439/
Для обработки шаблона вам необходим контекст. Обычно это экземпляр django.template.Context, но в поставку Django также входит специальный подкласс — django.template.RequestContext, который работает немного иначе. Класс RequestContext по умолчанию добавляет группу переменных в контекст шаблона - такие как объект HttpRequest или информацию о текущем пользователе.
Класс RequestContext и контекстные процессоры были созданы для решения этой задачи. Контекстные процессоры позволяют вам указывать ряд переменных, которые будут устанавливаться автоматически для каждого контекста, без необходимости их указания в каждом вызове render_to_response(). Надо лишь использовать RequestContext вместо Context при обработке шаблона.
То есть, собственно говоря, для чего на нужны контекстные процессоры?
Контекстный процессор принимает объект HttpRequest и возвращает словарь переменных для его последующего использования в контексте шаблона.
То есть, для поставленной перед собой задачи - вывод дополнительной информации в любых шаблонах он справляется.
В django книге описано, как создавать свои глобальные процессоры.
Есть еще варианты - http://softwaremaniacs.org/forum/django/1439/
Ярлыки:
Context,
django,
RequestContext
3 марта 2009 г.
Django. Валидация формсетов. Часть вторая
При использовании двух формсетов в одном виде возникает следующая проблема валидации:
1. Валидация формсета проходит следующим образом:
а)Валидируются все формы, входящие в рамки:
self._total_form_count = self.management_form.cleaned_data[TOTAL_FORM_COUNT]
б)экстра-формы, в которых нет вообще никаких данных игнорируются.
2. В связи с синхронным использованием двух формсетов может возникнуть следующая проблема:
У одного формсета валидируются, например, 1,2 и 5 форма, а у другого только 1,2, в связи с тем что у второго формсета 5 форма пустая.
Вот эту проблему и попытаемся сегодня решить.
Начало функции, отвечающей за валидацию вормы (валидация формсетов - это просто валидация каждой формы в формсете)
Как написано в комментариях в коде - если форме разрешено быть пустой, прекращаем всякую валидацию. Значит, наша задача, привести свойство empty_permitted или метод has_changed() для каждой формы в каждом формсете к единому синхронному виду.
Переопределяем функцию has_changed(), в обоих классах, в котором мы описываем формы, использующиеся в формсетах:
Дальше ясно - создаем динамический новый атрибут для объекта формы в случае, если в формсетах две синхронные формы имеют разные зачения has_changed(), в итоге, они станут иметь одинаковые. Ес-но, это надо проделать до валидации формсетов.
1. Валидация формсета проходит следующим образом:
а)Валидируются все формы, входящие в рамки:
self._total_form_count = self.management_form.cleaned_data[TOTAL_FORM_COUNT]
б)экстра-формы, в которых нет вообще никаких данных игнорируются.
2. В связи с синхронным использованием двух формсетов может возникнуть следующая проблема:
У одного формсета валидируются, например, 1,2 и 5 форма, а у другого только 1,2, в связи с тем что у второго формсета 5 форма пустая.
Вот эту проблему и попытаемся сегодня решить.
Начало функции, отвечающей за валидацию вормы (валидация формсетов - это просто валидация каждой формы в формсете)
208 def full_clean(self):
209 """
210 Cleans all of self.data and populates self._errors and
211 self.cleaned_data.
212 """
213 self._errors = ErrorDict()
214 if not self.is_bound: # Stop further processing.
215 return
216 self.cleaned_data = {}
217 # If the form is permitted to be empty, and none of the form data has
218 # changed from the initial data, short circuit any validation.
219 if self.empty_permitted and not self.has_changed():
220 return
Как написано в комментариях в коде - если форме разрешено быть пустой, прекращаем всякую валидацию. Значит, наша задача, привести свойство empty_permitted или метод has_changed() для каждой формы в каждом формсете к единому синхронному виду.
Переопределяем функцию has_changed(), в обоих классах, в котором мы описываем формы, использующиеся в формсетах:
def has_changed(self):
"""
Returns True if data differs from initial.
"""
if hasattr(self, 'is_change'):#проверяем, если наш динамический атрибут is_change
return True
else:
return bool(self.changed_data)
Дальше ясно - создаем динамический новый атрибут для объекта формы в случае, если в формсетах две синхронные формы имеют разные зачения has_changed(), в итоге, они станут иметь одинаковые. Ес-но, это надо проделать до валидации формсетов.
Ярлыки:
django,
formset,
validation
Подписаться на:
Сообщения (Atom)