Знаете ли вы, что VIM из коробки умеет шифровать файлы?
Не верите? Напишите :X в VIM, введите пароль. Когда вы сохраните файл, он будет выглядеть как непонятный набор символов.
А когда вы откроете этот файл с помощью VIM, он спросит пароль.
Знаете ли вы, что VIM из коробки умеет шифровать файлы?
Не верите? Напишите :X в VIM, введите пароль. Когда вы сохраните файл, он будет выглядеть как непонятный набор символов.
А когда вы откроете этот файл с помощью VIM, он спросит пароль.
Вообще, и ослу ясно, что использовать лучше sudo, а su – забросить в черный ящик.
Вкратце преимущество sudo:
поэтому настраиваем sudo командами visudo и man sudoers и пользуемся им.
Ещё полезная шняга
sudo -s
запускает ваш шелл под рутом.
А ещё, когда я вижу строку ssh root@host.com, меня выворачивает наизнанку. Не показывайте мне это, пожалуйста)
Решил разобраться получше с vim и ctags. Для справки: ctags – это команда, которая сканирует ваш проект и собирает информацию о классах, методах, функциях и переменных, после чего вы можете перейти на нужную вам функцию.
В vim это делается так. В корне проекта пишем:
ctags -R vim -t MyClassName
и попадаем на определение класса. Удобно?
Сейчас если мы поставим указатель на вызов функции или создание экземпляра класса и нажмем Ctrl+] (для виндузятников это Ctrl+мышка), то перейдем на определение класса.
А комбинация Ctrl+T вернет нас назад.
Авторы ctags с детства не любят питон, поэтому в ~/.ctags питонюки пишут:
--python-kinds=-i
Зачем? Так надо.
Я больше трех месяцев в пассивном режиме пытался настроить правильное разрешение на моём RoverBook Neo U800. Правильное — это 800×480.
Сейчас нехуевенько так погуглил и нашёл решение:
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Generic monitor"
HorizSync 25 - 50
VertRefresh 50.0 - 75.0
Modeline "800x480" 33.45 800 840 968 1056 480 490 492 525 -hsync -vsync
Option "dpms"
EndSection
Section "Device"
Identifier "Videocard0"
VendorName "Videocard vendor"
BoardName "AMD Geode LX Video"
Driver "geode"
BusID "PCI:0:1:1"
# Specify Panel size for Geode LX, corresponds with ModeLine above:
Option "PanelMode" "33450 800 840 968 1056 480 490 492 525"
EndSection
Section "Screen"
Identifier "screen1"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "800x480"
Viewport 0 0
EndSubsection
EndSection
Я ниибацца щаслив
Пару шорткатов:
vim file.txt +e++enc=koi8-r
vim file.txt +1245
ctags -R . #в корне проекта vim -t get_something
Купил я, товарищи, себе ноутбук. С ноутбуком поставлялась прикольная утилитка для установки операционной системы — Windows XP.
Скачал Ubuntu, увидел интересную виндовую программу wubi.exe. Оказалось, это установщик Linux из-под винды. Андрей обрадовался, установил себе Linux, загрузился, все как бы работает.
Но что-то не давал мне покоя процесс ntfs-3g. Дебилы, видимо, писали эту FS, подумал Андрей. И решил отформатировать нахуй этот NTFS.
Каково же было его удивление, когда он увидел на NTFS-ном разделе два файлика – swap и root, в которых лежала вся линуксовая файловая система.
И мне стало очень интересно, что курили создатели Wubi и как они теперь с этим живут?
Иногда нам приходится собирать приложения из исходников. Причин для этого море – старая версия в репозитории, это приложение в репозиторий не попало, или нам нужно его пропатчить. Не важно…
У сборки из исходников есть один очевидный минус – удалить приложение практически нереально. В некоторых мы можем написать make uninstall, но таких приложений не так уж много.
В linux для этого существует утилита checkinstall — она создаёт пакет из архива с исходниками, который корректно ставится и удаляется. И работает она очень просто:
Continue reading »
Для начала расскажу, как обычно работают сервера:
nginx и lighttpd использует вместо accept функции select/kevent/epoll, которые позволяют работать со многими клиентами одновременно, но это уже отдельная история (к асинхронным веб-серверам accept-фильтры применимяются точно так же)
Accept-фильтры – это модули ядра FreeBSD, которые не говорят, что сокет готов до тех пор, пока не выполнится какое-то условие. Я нашёл только два фильтра:
Буферизирует он только GET и HEAD запросы, так как в POST/PUT может прийти 600мегабайтный порнофильм.
Итак, подключаем модуль accf_http:
kldload accf_http
echo 'accf_http_load=”YES”' >> /boot/loader.confДалее нужно изменить работу с сокетом — установить опцию httpready:
struct accept_filter_arg afa; bzero(&afa, sizeof(afa)); strcpy(afa.af_name, "httpready"); setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
Так как существует мнение, что accept-фильтры бесполезны, мы решили провести тестирование. Веб-сервер был выбран AnyEvent::HTTPD, клиент – ab. Итак, результаты:
В боевых условиях, при наличии GPRS, 256k и прочего позора цивилизации, скорость ещё увеличится.
В apache 1.3+ и nginx accept-фильтры поддерживаются.
Apache под FreeBSD изначально содержит такую конфигурацию:
AcceptFilter http httpready AcceptFilter https dataready
и менять её не стоит.
А вот в настройках сервера nginx стоит добавить опцию
accept_filter "httpready";
По-перше – обновил себе Ubuntu до 9.04. Абсолютно юзабельна, удобна и красива. Не смотря на то, что бета. Пока ни одного бага не заметил

Поставил себе нативный Google Chrome. Это сообщение пишу из него, рискуя тем, что он вылетит к чертям. Он падает в кору, если что-то вставить из буфера обмена, или если попадёшь на автодополнения. Ни вкладки, ни настройки не работают. Но для демонстрации фич он отлично подходит. Всё работает очень-очень быстро.
Он написан на Gtk (придурки IMHO) и похож на свою виндовую версию.
Сегодня вечером поставлю и расскажу что и как
Пакет под Debian лежит здесь:
https://launchpad.net/~chromium-daily/+archive/ppa