Thursday, February 22, 2007

LiveLib - сохраняем знания

Открылся для альфа-тестирования сайт LiveLib. Основная задача сайта - обмен информацией о книгах. Как записано в их блоге:

У каждого человека есть цели. Уникальные цели творят уникальные жизни. Но когда мы знаем что нам нужно, мы не всегда знаем, как это найти. Знание отвечает на этот вопрос. И пока есть поиск, существует потребность в знаниях.

Мы сохраняем знания. Для тебя.

Присоединяйся!

Людям всегда нужны знания. И уже много веков книга является основным хранилищем знаний. Мы развиваем LiveLib, чтобы ответить на вопрос, какие книги содержат жемчужины мысли и слова, а какие являются информационным мусором? А ещё, чтобы дать тебе возможность получать, сохранять, делиться новыми знаниями о книгах и общаться с единомышленниками.


Пока что сайт практически не работает, но мне нравится его идея и я с нетерпением буду ожидать запуска функциональной версии. Пожелаем авторам данного проекта удачи.

Technorati Tags: ,

Эффективная работа с vim

Попытался сделать перевод интересной статьи. Оригинал лежит здесь

"Для меня vi это Дзен.
Использование vi - это практика дзена.
Каждая команда является коаном.
Полный смысла для пользователя,
Бессмысленный для непосвященного.
Вы познаете истину каждый раз когда вы его используете."

--reddy@lion.austin.com

Этот учебник расскажет вам об азах работы с редактором vim, режиме вставки, режиме команд, загрузке и сохранении файлов и тп. Он предназначен помочь новичкам развить свои навыки, с помощью которых они смогут использовать vim более эффективно.

В этом учебном пособии <c-x> означает Ctrl-X, те удерживая клавишу Ctrl нажмите клавишу x. Вы можете получить информацию о большинстве команд, используемых здесь, набрав :help command в редакторе vim, где command - это команда по которой в хотите получить справку.

Эффективное перемещение

Опасайтесь режима вставки

В основном, вы должны тратить как можно меньше времени в режиме вставки, потому что этот режим дйствует как тупой редактор. Именно поэтому новички проводят так много времени в режиме вставки -- он делает использование vim проще. Но настоящая мощь vim скрыта в использовании командного режима! Вы поймете: чем вы лучше знаете vim, тем меньше времени вы будете проводить в режиме вставки.

Используйте h, j, k и l

Первым шагом к эффективному редактированию будет отвыкание от использования клавиш курсора. Одним из преимуществ модульного дизайна vim - это то что вам нет надобности перемещать свои руки назад-впред между клавишами курсора и обычными клавишами; когда в в режиме команд буквы h, j, k, l соответствуют направлениям влево, вниз, вверх и вправо. Конечно, необходимо некоторое время для практики, но вы увидите разницу в скорости как только попробуете.

Когда вы редактируете e-mail или иной текст форматированный абзацами, вы можете заметить что клавиши курсора пропускают больше линий чем вы ожидаете. Это происходит потому что абзацы для vim являются одной длинной линией. Для перемещения по одной экранной линии вместо целого абзаца перед нажатием клавиш h, j, k, l нажмите клавишу g.

Используйте комбинации для перемещения курсора в текущей строке

Большинство редакторов имеют только простые команды для перемещения курсора (влево, вправо, вверх, вниз, в начало линии и в ее конец, и тп). Vim имеет очень продвинутые команды для управления курсором; эти команды называются комбинациями(orig: "motions"). Когда курсор передвигается от одной точки текста в другой, текст между этими точками (включая их самих) считается "пропущенным"(orig: "moved over")(этот термин будет важен позже)

Вот несколько ииз наиболее полезных движений:

fxпередвинуть курсор вперед (forward) к следующему вхождению символа x в текущей строке(конечо же x - может быть любым символом который вам нравится). Это безумно полезная команда. Вы можете напечатать ; для того что бы повторить последнюю команду f, которю вы ввели.
txтоже что и описанно выше, но при этом курсор устаналивается прямо перед символом, а не на сам символ. (Это также может оказаться реально полезным)
Fxпередвинуть курсор назад (backward) к спредыдущему вхождению символа x в текущей строке
wпередвинуть курсор вперед на одно слово
bпередвинуть курсор назад на одно слово
0передвинуть курсор на начало текущей строки
^передвинуть курсор на первый символ в текущей строке
$передвинуть курсор на конец текущей строки
(передвинуть курсор вперед к следующему предложению. (Полезно при редактировании e-mail и текстовых документов)
)передвинуть курсор назад на одно предложение.

Эффективно передвигаемся по файлу

Vim имеет множество команд, которые могут вас послать в любое место, которое вы захотите в вашем файле - очень редко возникает необходимость прокручивать вручную сквозь дебри текста. Нижеперечисленные сочетания клавиш не являются двиениями, потому что они перемещают вас по файлу, а не по строке.
<c-f>передвинуться вперед(forward) на один экран
<c-b>переместиться назад(backward) на один экран
Gпередвинуть курсор в конец файла
numGпередвинуть курсор на линию номер num( например, 10G передвинуть курсор на линию номер 10)
ggпереместить курсор в начало файла
Hпередвинуть курсор наверх экрана
Mпередвинуть курсор в центр экрана
LL - передвинуть курсор вниз экрана
*перейти в следующее упоминание текущего слова в файле(Например, если курсор указывает на слово "вася", то он переместится на следующее упоминание этого слова в вашем файле)
#тоже самое что и *, но передвигает на предыдущее упоминание
/textначиная от курсора ищет следующее упоминание строки text и переходит к ней. Для выполнения поиска необходимо нажать enter. Для повторного выполнения последнего поиска нажмите n (next)
?textтоже что и /text, но поиск идет в обратную сторону
maсоздать закладку с именем a, указывающую на текущую позицию курсора. Закладна может быть названа любой строчной буквой. Закладка - как суслик - вы ее не видите, а она есть.
`aперейти к закладке a. Обратите внимание: это обратная кавычка, а не одинарная. Она распположена в левой верхней части клавиатуры.
`.перейти к линии которую вы редактировали последней. Это очень полезно! Если вам необходимо просмотреть файл для поиска чего-либо вы можете вернуться на позицию в которой вы вносили последние изменения без установки закладок.

Печатаем эффективно

Используем автозавершение слов.

Vim имеет очеть хорошую систему автодополнения слов. Это означает что вы можете напечатать часть длинного слова, нажимаете клавишу и vim завершает слово за вас. Например если у вас есть переменная называющаяся iAmALongAndAwkwardVarName где-либо в вашем коде, вы вроятнее всего не очень захотите печатать целиком такое имя при каждом использовании.

Для использования автозавершения слов просто напечатайте несколько первых букв (например iAmAL) и нажмите <c-n&rt; либо <c-p&rt. Если vim не выдал вам необходимого варианта слова сразу, продолжайте попытки -- vim будет циклично пытаться подставить все окончания слов, которые могут подойти.

Эффективный переход в режим вставки

Большинство новых пользователей vim переходят в режим вставки с помощью нажатия клавиши i. Это работает, но часто довольно неэффективно, поэтому vim имеет несколько команд для перехода в режим вставки. Перечислим несколько самых популярных:
iвставить текст слева от текущего
Iвставить текст в начало строки
aвставить текст справа от текущего символа
Aвставить текст в конец текущей строки
oсоздать новую строку под текущей и вставить текст в новую строку
Oсоздать новую строку над текущей и вставить текст в новую строку
c{motion}удалить текст помеченый как "пропущенный" и вставить текст для замены. Например c$ удалит текст от позиции курсора до конца строки и перейдет в режим вставки. Удаленный текст перенесется в буфер обмена и в последствии может быть вставлен
d{motion}тоже что и c{motion}, но без перехода в режим вставки

Эффективно передвигаем блоки текста

Используйте визуальное выделение и подходящий режим выделения

В отличие от оригинального редакттора vi, vim позволяет вам выделять текст и производить операции с ним. Существуют три основных режима визуального выделения (режимы подсветки текста). Эти режимы активируются следующим образом:

vпосимвольный режим выделения. Этот режим используется большинством людей, поэтому попробуйте попрактиковаться перед тем как пробовать остальные.
Vпострочный режим выделения. В этом режиме выделяются всегда целые линии. Это намного удобнее в случае если вы хотите выделить несколько линий
<c-v>блочный режим выдделения. Безумно мощное средство, доступное в небольшом количестве редакторов. Вы можете выделить прямоугольный блок с любым текстом внутри и он будет подсвечен.

Все обычные команды управления курсором также работают. Например команда vwww -- переведет vim в режим посимвольного визуального редактирования и выделит следующие три слова. Команда Vjj -- переведет vim в режим посимвольного визуального редактирования и выделит текущую строку и две строки под ней.

Вырезание и вставка из режима визуального выделения

Вероятно, после того как вы выделите какой-то участок текста, у вас возникнет желание что-либо с ним сделать, иначе зачем бы вам понадобилось его выделять? Вот несколько полезных команд которые можно использовать над выделенным участком текста:

dвырезать(удалить) выделенный текст и поместить его в буфер обмена
yскопировать (yank) помеченный текст в буфер обмена
cвырезать помеченный текст и поместить его в буфер обмена. Эта команда действует аналогично команде d, но оставляет редактор в режиме вставки

Вырезание и вставка из режима невизуального выделения

Если вы знаете что вам необходимо вырезать или скопировать, то вы можете совершить данные операции без перехода в режим визуального выделения. Это сбережет ваше время

dd{motion} - вырезать текст помеченный как "пропущенный" и поместить его в буфер обмена. Например команда dw вырежет слово, а команда dfS вырежет текст начиная с позиции курсора и заканчивая следующим символом S, который встретится в текущей строке, включая сам символ S
y{motion}скопировать "пропущенный" текст
c{motion}вырежет "пропущенный" текст и оставит редактор в режиме вставки
ddвырежет текущую строку
yyскопиует текущую строку
ccвырежет текущую строку и оставит редактор в режиме вставки
Dвырежет текст от позиции курсора и до конца текущей строки
YY - скопировать весь текст, подобно yy. (Это конечно нестандартно, вы можете использовать y$ для действияя которое вы могли ожидать от команды Y)
Cвырезать текст от курсора до конца строки и оставить редактор в режиме вставки
xвырезать текущий символ (действует подобно backspaсe)
sвырезать текущий символ и оставить редактор в режиме вставки

Вставка

Вставка - это просто. Поместите курсор в место куда вы хотите вставить текст и нажмите на клавишу p

Использования нескольких буферов обмена

Большинство из редакторов меют только один буфер обмена. У vim их же намноо больше. Буферы обмена вв vim называются регистрами(registers). Вы можете получить список всех зарегистрированых буферов обмена и их содержимое ввев команду :reg. Обычно вы будете использовать регистры в строчном формате; регистры в прописном формате используются для внутренних нужд vim и могут быть иногда полезными.

Для того что бы использовать определенный регистр для операций копирования/вставки, просто введите "a перед командой копирования/вставки, где a - имя регистра который вы хотите использовать. Например для того что бы скопировать текущую строку в регистр k, вы должны ввести команду "kyy (второй вариант v"ky. Кто знает почему это работает? Эта строка останется в регистре k пока вы не скопируете что-либо другое в регистр k. Для вставки текста из регистра k, вы должны ввести "kp.

Избегайте повторения своих дейcтвий

Удивительная команда .

В vim, нажатие . (точка) будет вызывать повторение последней введенной команды. Например, если последняя команда была dw(удалить слово), после нажатия . в режиме команд vim удалит еще одно слово.

Использование счетчиков

Счетчики - это очередной мощный и сохраняющий ваше время инструмент. Любые команды могут быть предварены числом. Это число указывает сколько раз необходимо повторить команду. Вот несколько примеров:
3jпереведет курсор на 3 строки вниз
10ddудалить 10 строк
y3f&qoute;скопирует текст от курсора до третьей кавычки после курсора на текущей строке.

Также счетчики полезны для расширения границ "пропусков" (motion).

Запись макросов

Иногда вы можете заметить что вы выполняете одни и теже действия над блоками текста. Vim позволяет вам записать макрос для выполнения операций.
qregisterначать запись макроса в именованный регистр. Например, qa начинает запись и сохраняет макрос в регистр a
qзакончить запись макроса
@registerвыполнить макрос сохраненный в именованном регистре. Например @a выполнит макрос записанный в регистре a.

Помните что макрос всего-лишь записывает ваши команды и проигрывает их. Это не магия. Запись макросов - это почти искуство, потому что существует множество команд которые выполняют определенные задачи в vim, и вы должны аккуратно выбирать команды которые будете использовать при записи макроса для того что бы они работали в тех местах, где вы планируете выполнять макросы.

Написание програмного кода в vim

Vim - прекрасный редактор для програмного кода потому что в нем присутствует множество специальных команд, которые предназначены специально для облегчения жизни программистов. Вот несколько полезных из них:
]pподобно p, но автоматически подбирает отступ для вставки кода. Испытайте эту команду!
%переместите курсор на скобку, квадратную скобку или фигурную скобку и нажатие на % переместит курсор на соответствующую парную скобку. Прекрасное средство для исправления проблем, при разборе кода, связанных с большими блоками кода или логики
>>сдвинуть вправо выделенный текст (сделать отступ). Если текст не выделен то сдвинется вся строка
<< - тоже самое что и >>, но сдвиг происходит влево
gdперейти к обьявлению функции или переменной на которой в данный момент стоит курсор
Kперейти к man-странице слова под курсором. (Например если курсор у вас стоит на слове sleep, то вы увидете man-страницу для sleep)

Technorati Tags: , ,

Tuesday, February 20, 2007

Tomcat+Log4j

Решил поковырять для себя log4j, и обнаружил что свежеустановленный томкат при старте кидает вот такую вот бяку:

log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.


Оказалось что способ лечения прост. Достаточно поместить конфигурацию log4j в папку $TOMCAT_HOME/common/classes.
Мой пример конфигурации:

log4j.rootCategory=INFO, Console
### The console appender
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Threshold=INFO
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p,%c{1}] %m%n

Technorati Tags: ,

Tuesday, February 06, 2007

Ferrari устроит австралийцам праздник

Организаторы ГП Австралии и Ferrari сообщили о решении провести в Мельбурне в начале марта фестиваль Ferrari. 3 марта, за две недели до старта первого этапа сезона-2007, по улицам гоночной столицы Австралии проедут автомобили знаменитой марки, а центральным событием станут демонстрационные заезды на машинах Формулы 1. Это шоу станет одним из первых в череде праздников, посвященных 60-летию марки Ferrari, и даст обратный отсчет времени, остающегося до ГП Австралии.
Источник: f1news.ru

Ну почему я живу не в Австралии?
Technorati Tags: , , ,

Monday, February 05, 2007

Отучение котенка от проводов

В прошлом посте я писал про возникшую у меня проблему с любимым животным. Разные люди давали советы, но суть сводилась к тому что кошки не любят сильных и резких запахов. Также на одном из форумов я нашел дикий совет намазать провода горчицей. Последний вариант я сразу откинул как неприемлемый из-за огромного числа проводов у меня дома и отсутствия горчицы в таких количествах.
Первым способом, опробованным мной были лимоны. Большинство людей посоветовало их. Я тихо радуюсь что вначале решил опробовать их просто на куске ненужного провода, потомучто он был сгрызен в течении получаса. Да и по сей день этот провод является одной из любимых игрушек Белой бестии. На самом деле я ожидал подобного результата, тк заметил что она безумно любит грейпфруты.
Следующим по списку был запах резких духов, но тк я предпочитаю мягкие холодные запахи, то никакой ответной реакции не дождался. Попытался найти что-то из остатков парфюмов сестры, но нашел только странные духи с ароматом цитрусовых. Последним и, как оказалось, самым надежным способом был поход в зоомагазин. Там девочка-продавщица долго не хотела мне верить что кошка любит лимоны и грейпфруты, но в итоге выдала отпугивающий аэрозоль для собак. Как ни странно, но он подействовал.
Всем спасибо за советы

Technorati Tags: