понеділок, 23 серпня 2010 р.

svn diff + vim

Ха, а ларчик просто открывался: очень легко можно настроить svn использовать vimdiff для отображения изменений в конкретном файле:

— Создать файлик (к примеру svnvimdiff) с содержимым:

#!/bin/sh
vimdiff "$6" "$7"


— Настроить svn (файлик ~/.subversion.config):

[helpers]
diff-cmd = svnvimdiff


Ну или
svn diff --diff-cmd svnvimdff file...


Содрано отсюда

Бобро поржаловать!


На севере французов нет! Там живут одни ржики! И говорят они на суржике! Француржики!


Очень душевный фильм, и (что очень важно!) очень качественный перевод.
Если вдруг попадётся фильм без дубляжа (одноголосье, закадровый или что-то ещё) - смело выбрасывайте. Ибо это надо приложить очень много знаний и умений, чтоб так качественно перевести и обыграть весь этот суржик.

Однозначно рекомендую, а себе в коллекцию запишу ;)

Ну и как обычно сошлюсь на Экслера

четвер, 19 серпня 2010 р.

Умка

Сейчас на Даньку колыбельные уже не действуют, но когда-то было дело, напевал вот это:

муз. Е.Крылатова
сл. Ю.Яковлева

Ложкой снег мешая,
Ночь идет большая,
Что же ты, глупышка, не спишь?
Спят твои соседи -
Белые медведи,
Спи скорей и ты, малыш.

Мы плывем на льдине,
Как на бригантине,
По седым, суровым морям.
И всю ночь соседи,
Звездные медведи
Светят дальним кораблям.

;)

PS: Кстати, автор сценария и текста песни — Юрий Яковлев, но это немножко другой Яковлев

How to Enable CTRL+V Paste in the Windows Command Prompt (+Far)

Некоторые исправляния к первоначальному скрипту: поломалась вставка из буфера обмена в Far.

Поэтому вначале скрипта объявляем группу (все cmd за исключением Far):
GroupAdd, cmd, ahk_class ConsoleWindowClass,,, Far


(обычно до первого определения клавиш, убедитесь в логе AutoHotKey, что группа объявлена)

А затем уже привязка к группе:

#IfWinActive, ahk_group Cmd
^V::
+Insert::
SendInput {Raw}%clipboard%
return
#IfWinActive

середа, 18 серпня 2010 р.

вівторок, 17 серпня 2010 р.

How to Enable CTRL+V Paste in the Windows Command Prompt

Ванятка нашёл, за что ему большое спасибо.
CMD я не так часто пользуюсь, всё равно Far намного удобнее ;)

И всё же, если есть удобный и простой способ сделать жизнь проще, почему бы и нет?
Вот он, этот скриптик, единственное — я добавил ещё и комбинацию Shift-Insert:

#IfWinActive ahk_class ConsoleWindowClass
^V::
+Insert::
SendInput {Raw}%clipboard%
return
#IfWinActive

четвер, 12 серпня 2010 р.

AutoHotKey

Ну буду разводить полемику на тему большего количества настроек интерфейса в X-ах по-сравнению с Windows, а расскажу об одной небольшой, но очень полезной программке, которая как раз и позволяет мне иметь дополнительные возможности в интерфейсе Windows.
Сия чудная програмка называется AutoHotKey.
При запуске она радостно прячется в трей и вообще не мешает, но реагирует на определённые события от мыши или клавиатуры и выполняет какие-либо действия.
Вот об этих событиях и действиях далее и пойдёт речь.

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

Итак, поехали!
Начало (в принципе тут ничего существенного: константы, мелкие настройки):


WS_EX_APPWINDOW = 0x40000
WS_EX_TOOLWINDOW = 0x80
GW_OWNER = 4

SetTitleMatchMode RegEx
DetectHiddenWindows, On
SetWinDelay,2


Далее идут события от клавиатуры, Win-Z минимизирует окно:


#z::PostMessage, 0x112, 0xF020,,,A ; 0x112 = WM_SYSCOMMAND, 0xF020 = SC_MINIMIZE


Win-X максимизирует окно:


#x::
WinGet MX, MinMax, A
If MX
WinRestore, A
Else
WinMaximize, A
return


Win-minus (-) закроет приложение:

#-::WinClose, A


Win-PgDown добавить прозрачности окну (заглянуть под окно), но я этой функцией не пользуюсь, да и под Win7, похоже, не совсем работает:

#PgDn::
WinGet, list, List
loop, %list%
{
wid := list%A_Index%
WinGet, es, ExStyle, ahk_id %wid%
if ( ( ! DllCall( "GetWindow", "uint", wid, "uint", GW_OWNER ) and ! ( es & WS_EX_TOOLWINDOW ) )
or ( es & WS_EX_APPWINDOW ) )
WinSet, Transparent, 10, ahk_id %wid%
}
return


Win-PgUp, соответственно, уберёт прозрачность:

#PgUp::
WinGet, list, List
loop, %list%
{
wid := list%A_Index%
WinGet, es, ExStyle, ahk_id %wid%
if ( ( ! DllCall( "GetWindow", "uint", wid, "uint", GW_OWNER ) and ! ( es & WS_EX_TOOLWINDOW ) )
or ( es & WS_EX_APPWINDOW ) )
WinSet, Transparent, 255, ahk_id %wid%
}
return


Объявляем пару функций:

WMove(dx, dy) {
WinGetPos, X, Y, , , A
WinMove, A, , (X + dx), (Y + dy)
}

WResize(dw, dh) {
WinGetPos, , , W, H, A
WinMove, A, , , , (W + dw), (H + dh)
}


Следующие сочетания клавиш перемещают или изменяют размер окна, к примеру Win-Up подвинет окно вверх на 50 пикселей, Shift-Right увеличит ширину на 50 пикселей (модификаторы: # — Win, + &mdash Shift, ^ — Control), не работает с putty (но с ним ничего не работает — он полностью сам управляет окном и перекрывает системные события):

+^#Up::WResize(0, -10)
+^#Down::WResize(0, 10)
+^#Left::WResize(-10, 0)
+^#Right::WResize(10, 0)
+#Up::WResize(0, -50)
+#Down::WResize(0, 50)
+#Left::WResize(-50, 0)
+#Right::WResize(50, 0)
^#Up::WMove(0, -10)
^#Down::WMove(0, 10)
^#Left::WMove(-10, 0)
^#Right::WMove(10, 0)
#Up::WMove(0, -50)
#Down::WMove(0, 50)
#Left::WMove(-50, 0)
#Right::WMove(50, 0)


Как оказалось для меня, управление окнами с клавиатуры — очень полезная вещь!

Далее запуск приложений: Win-S — Far Manager и т.д.

#s::Run, "C:\home\share\quicklaunch\FAR manager.lnk"
#v::Run, gvim.exe
#j::Run, c:\home\bin\eject.exe
#c::Run, c:\windows\system32\calc.exe


В давние времена я пользовался Thunderbird:

#m::
SetTitleMatchMode, 2
Process, Exist, Thunderbird.exe
if %ErrorLevel% = 0
{
Run, c:\usr\thunderbird\thunderbird.exe
WinWait, Thunderbird
WinShow, Thunderbird
}
;#WinActivateForce
IfWinNotActive, Thunderbird
{
WinActivate, Thunderbird,
;WinWaitActive, Thunderbird,
;WinActivateBottom, Thunderbird
;WinWaitActive, .* - Thunderbird
}
return


.. и Оперой:

#w::
IfWinExist, Opera
WinActivate
else
Run, c:\Program Files\Opera\opera.exe
return


Запуск Outlook (или из трея вытащить), плюс Win-Ctrl-t покажет окно для ввода новой задачи:

#o::
IfWinExist, .* - Microsoft Outlook
WinActivate
else
Run, "C:\Program Files\Microsoft Office\Office12\OUTLOOK.EXE"
return
^#t::Run, "C:\Program Files\Microsoft Office\Office12\OUTLOOK.EXE" -c ipm.task


Win-y запустит (или вытащит — грубо, но работает) Skype из трея (хотя сам Skype клавиатурой практически не управляется):

#y::Run, C:\Program Files\Skype\Phone\Skype.exe


Для размонтирования флешек или внешних винтов использую USB Disk Eject (Win-u)

#u::
Process, Exist, USB_Disk_Eject.exe
if %ErrorLevel% = 0
{
Run, C:\usr\USB-disk-eject\USB_Disk_Eject.exe
WinWait, Safely Remove USB Disks
WinShow, Safely Remove USB Disks
}
IfWinNotActive, Safely Remove USB Disks
{
WinActivate, Safely Remove USB Disks
}
return


Который теперь спокойно закрывается по Escape (а не Alt-F4):

~Escape::
IfWinActive, Safely Remove USB Disks
WinClose
return


Работа в X-Window быстро меня приучила к использованию Caps-Lock для переключения раскладок, и стандартные Alt-Shift или Ctrl-Shift в Windows меня абсолютно не привлекают. Далее код, который переключает состояние Caps Lock по нажатию Shift-CapsLock, а раскладки переключает просто по CapsLock:

;; Toggle CapsLock state on Shift-CapsLock
+CapsLock::
state := GetKeyState("Capslock", "T")
if state
SetCapsLockState, Off
else
SetCapsLockState, On
return

;; Switch language on CapsLock
CapsLock::
SetStoreCapslockMode, Off
Send {LAlt down}{Shift}{LAlt up}
return


Опять же, работа в X-Window также приучила к тому, что намного быстрее перетащить окно, если зажать Alt, а затем левую кнопку мыши, если курсор внутри этого окна, чем пытаться навести курсор мыши на заголовок окна, а также Alt плюс правая кнопка мыши будет менять размер этого окна:

; http://www.autohotkey.com/docs/scripts/EasyWindowDrag_(KDE).htm

CoordMode,Mouse
return

!LButton::
CoordMode, Mouse ; Switch to screen/absolute coordinates.
MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin
WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin%
SetTimer, EWD_WatchMouse, 10 ; Track the mouse as the user drags it.
return

EWD_WatchMouse:
GetKeyState, EWD_LButtonState, LButton, P
if EWD_LButtonState = U ; Button has been released, so drag is complete.
{
SetTimer, EWD_WatchMouse, off
return
}
GetKeyState, EWD_EscapeState, Escape, P
if EWD_EscapeState = D ; Escape has been pressed, so drag is cancelled.
{
SetTimer, EWD_WatchMouse, off
WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY%
return
}
; Otherwise, reposition the window to match the change in mouse coordinates
; caused by the user having dragged the mouse:
CoordMode, Mouse
MouseGetPos, EWD_MouseX, EWD_MouseY
WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin%
SetWinDelay, -1 ; Makes the below move faster/smoother.
WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY
EWD_MouseStartX := EWD_MouseX ; Update for the next timer-call to this subroutine.
EWD_MouseStartY := EWD_MouseY
return

!RButton::
CoordMode, Mouse
MouseGetPos, Resize_PrevX, Resize_PrevY, Resize_Win
WinGetPos, Resize_OrigX, Resize_OrigY, Resize_OrigW, Resize_OrigH, ahk_id %Resize_Win%
SetTimer, Resize_Watch, 10
return

Resize_Watch:
GetKeyState, Resize_RB, RButton, P
if Resize_RB = U
{
SetTimer, Resize_Watch, off
return
}
GetKeyState, Resize_Esc, Escape, P
if Resize_Esc = D
{
SetTimer, Resize_Watch, off
WinMove, ahk_id %Resize_Win%,, %Resize_OrigX%, %Resize_OrigY%, %Resize_OrigW%, %Resize_OrigH%
return
}
CoordMode, Mouse
MouseGetPos, Resize_MouseX, Resize_MouseY
WinGetPos, ,, Resize_WinW, Resize_WinH, ahk_id %Resize_Win%
SetWinDelay, -1
WinMove, ahk_id %Resize_Win%,, Resize_OrigX, Resize_OrigY, Resize_WinW + Resize_MouseX - Resize_PrevX, Resize_WinH + Resize_MouseY - Resize_PrevY
Resize_PrevX := Resize_MouseX
Resize_PrevY := Resize_MouseY
return


Вот собственно и всё ;)
Очень много полезных скриптов можно найти в интернете — дерзайте!

середа, 11 серпня 2010 р.

Шаманство

Каждые выходные шаманил, заклинал: машину мыл!
Не зря — наконец-то грозааааааа! ;)

Имбирный эль

Где-то у vovas-а вроде пробегала эта информация, но что-то найти оригинала не могу. Ну ок, выкладываю рецепт так, как он у меня записался:


Для страдающих от жары предлагаю рецепт имбирного эля. Делаю регулярно - освежает отлично. И никакой химии.
1. Берем 2-х литровую бутылку из-под сильногазированных напитков (типа колы).
2. Насыпаем в неё стакан сахару. Лучше через воронку, а то много отходов будет :)
3. Насыпаем туда четверть чайной ложки сухих дрожжей. Я купил в магазине первые попавшиеся.
4. Все это дело хорошенько встряхиваем чтобы смешались дрожжи с сахаром.
5. Натираем на тёрке имбирь. Тёрка нужна как можно мельче, а имбирь как можно свежее :) Натертого имбиря должно получиться на две столовые ложки.
6. Выжимаем один лимон прямо в имбирь.
7. Смешиваем имбирь с лимонным соком чтобы получилась кашица.
8. Выливаем имбирь с лимоном в бутылку. Тоже через воронку.
9. Заливаем все это водой комнатной температуры. Желательно кипячёной, но кто как любит :) Воды должно быть почти по горлышко (1,5-2 см не доходя до верха).
10. Закручиваем крышкой и трясём, пока сахар не растворится. Оставляем в комнате на 1-2 дня. У меня обычно готово через 1,5 дня.
11. Готовность контролируем нажатием на бутылку. Как только бутылка перестанет прожиматься пальцем - суём в холодильник. Не упустите момент, а то придётся отмывать кухню.

Как остынет - можно пить, но лучше еще день подождать - ядрёней будет. Содержание спирта - как в квасе.

Будьте внимательны, никогда не используйте стеклянную посуду!



Замечательная вещь - рекомендую, хотя я не сильно поклонник имбиря.

пʼятниця, 6 серпня 2010 р.

Трёхколёсный... мотоцикл

Смотрели тут давеча кино "Удар бутылкой" (Bottle Shock), и в ходе фильма замечаю, что Густаво ездит на трёхколёсном мотоцикле. И стало мне интересно — а неужели в штатах такие мотоциклы вообще были в ходу? Не знаю, но помню, как было весело, когда в одном из кадров на мотоцикле заметил табличку "Ural" ;)

А фильм, кстати, очень приятный, рекомендую.
И Экслер вроде хвалил.