Monday, February 20, 2012

If brother has green ladder arrest brother

Blogspot тормозит желание делать новые посты.

Поковыряв marcus (блог Ивана Сагалаева http://softwaremaniacs.org/about/  (сколько же усилий надо потратить, чтобы не перепутать местами "г" и "л" в этой фамили) и насмотревшись на различные другие самодельные движки на Django мне тоже захотелось придумать свой велосипед, таким образом это, наверное, последняя запись в этом блоге. Всё более-менее адекватное я перенёс на http://cramur.me , сам код я держу на гитхабе https://github.com/cra/cramurme
Что-то мне захотелось совсем удариться в минимализм, поэтому пока это скорее совсем web-1.0. Наверное, это посттравматический синдром после прочтения "Вы не гаджет" даёт о себе знать :)

Хочу развернуть там open-id сервер, и вообще перенести туда всё, что я держу в различных текстовых файлах на разных серверах. Может, эти странные коллекции будет удобней держать.

Sunday, September 4, 2011

Yaourt: оболочка к pacman с доступом к AUR

AUR - Archlinux User Repository


У Arch Linux есть репозиторий с пакетами, которые поставляют сами пользователи, http://aur.archlinux.org, там часто можно найти всякие штучки, которые по тем или иным причинам не попадают в основной репозиторий дистрибутива (например, та же самая клавиатурная раскладка дворака для программистов или самый-самый-самый свежий firefox). Про сам репозиторий есть большая страница на wiki .

Для установки какого-то пакета из дистрибутива (или локально) используется pacman, однако пользовательские дистрибутивы в pacman отключены, а пакетов там навалом. По сути, пользовательский репозиторий - это набор пакетов с правилами их сборки, описываемых в специальных файлах с названием PKGBUILD, содержимое которого обычно указывает, что откуда скачать и что с этим сделать (например, скачать исходники, скачать патч, наложить патч, отредактировать настройки так, чтобы это работало в арче, и тому подобное). Например, это может выглядеть вот так:



1 # Author: Julien MISCHKOWITZ <wain@archlinux.fr>
2 # Author: tuxce <tuxce.net@gmail.com>
3
4 pkgname=yaourt
5 pkgver=0.10.1
6 pkgrel=2
7 pkgdesc="A pacman wrapper with extended features and AUR support"
8 arch=('any')
9 url="http://www.archlinux.fr/yaourt-en/"
10 license=(GPL)
11 depends=('diffutils' 'pacman>=3.5' 'package-query>=0.7' 'gettext')
12 optdepends=('aurvote: vote for favorite packages from AUR for inclusion in [community]'
13 'customizepkg: automatically modify PKGBUILD during install/upgrade'
14 'rsync: retrieve PKGBUILD from official repositories'
15 'pacman-color: fully colorized output')
16 backup=('etc/yaourtrc')
17 source=(http://mir.archlinux.fr/~tuxce/releases/$pkgname/$pkgname-$pkgver.tar.gz)
18
19 build() {
20 cd $srcdir/$pkgname-$pkgver/
21 make PREFIX=/usr sysconfdir=/etc localstatedir=/var
22 }
23
24 package() {
25 cd $srcdir/$pkgname-$pkgver/
26 make PREFIX=/usr sysconfdir=/etc localstatedir=/var DESTDIR=$pkgdir install
27 }
28
29 # vim:set ts=2 sw=2 et:
30
31
32 md5sums=('b7c471bc0e763e587a965616540b1a7d')


В целом, если внимательно посмотреть, никакой чёрной магии там нет. Пример взят из утилиты yaourt (). На странице утилиты в AUR описано, какие файлы входят в tarball с PKGBUILDом, ну и можно поругаться со всеми желающими в комментариях (сначала надо зарегестрироваться).
Чтобы установить пакет из пользовательского дистрибутива, надо скачать tarball, при желании посмотреть/поправить содержимое PKGBUILD и сделать пакет:


$ tar xzvf yaourt.tar.gz
yaourt/
yaourt/PKGBUILD
$ cd ./yaourt
$ makepkg


Далее можно лицезреть всяческие радостные сообщения из серии "я скачал пакет оттуда-то, проверил чексумму, вроде совпадает, проверил зависимости, всё на месте, зажигай!". Если зависимости не будут удовлетворены, следует найти нужный пакет в AUR и поставить сначала его (список пакетов-зависимостей можно посмотреть на странице пакета или в самом PKGBUILD). После решения всех этих квестов, на выходе появится фраза в стиле "Finished making: yaourt 0.10.1-2....". После этого в папке появится пакет, который уже можно устанавливать через pacman:

$ ls
pkg PKGBUILD src yaourt-0.10.1-2-any.pkg.tar.xz yaourt-0.10.1.tar.gz
$ pacman -U yaourt-0.10.1-2-any.pkg.tar.xz


YAOURT как панацея от рутины


Понятно, что пять-шесть раз выполнив такую процедуру, слегка устаёшь скачивать пакетики и их распаковывать. Посему на помощь приходят всякие утилиты-автоматизаторы этих манипуляций, одна из наиболее популярных - yaourt. Его надо будет установить именно так, "муторно", скачав все зависимости (если они ещё не удовлетворены) и вручную запустив makepkg и прочее. Зато потом это окупается и остальные пакеты можно ставить прямо из командной строки. Преимущество yaourt в том, что он работает ну совсем как pacman, даже многие ключи те же (поиск -Ss, апгрейд всех пакетов -Syu, к тому же позволяющий выбрать, какие пакеты ставить в массовой закачке, а какие нет). Ну и, конечно, есть всякие плюшечки типа раскраски вывода и интерактивного поиска. Типичный вывод yaourt:

$ yaourt -Ss notion
community/notion 20110823-1 [1.10 M] [installed]
Tabbed tiling, window manager. Fork of Ion3
aur/libtu-git 20101217-1 (2)
Utility library for notion
aur/notion-styles-thinviolet 0.1-1 (0)
modified Notion style without window border
aur/notion-xft 20110827-1 (0)
Tabbed tiling, window manager. Fork of Ion3, with XFT patch


Сначала выводятся "оффициальные репозитории", на которые настроен pacman, а потом уже aur. При установке будут сначала показаны последние комментарии, а потом будет предложено отредактировать PKGBUILD и, если есть, правила установки. Зависимости будут ставиться автоматически (если они есть только в AUR, дадут возможность поправить PKGBUILD и им). Помимо этого, к нему есть куча приятных штучек, например, тулза aurvote, позволяющая проголосовать за включение пакета в основной репозиторий "не отходя от кассы".

Конфигурационный файл yaourt находится в /etc/yaourtrc, и представляет из себя типичный формат "все значения по умолчанию прописаны как есть, но закомментированы". Вот его стандартное содержание:


1 # yaourtrc - Configuration for yaourt
2 #
3 # See yaourtrc(5) for more information
4 #
5 #
6
7 # ABS_REPO list repositories available on archlinux rsync server
8 ABS_REPO=(testing core extra community-testing community gnome-unstable kde-unstable)
9
10 # General
11 #AUTOSAVEBACKUPFILE=0
12 #DEVELBUILDDIR="/var/abs/local/yaourtbuild"
13 #DEVEL=0
14 #EDITOR="$EDITOR"
15 #FORCEENGLISH=0
16 #FORCE=0
17 #TMPDIR="/tmp"
18 #SUDONOVERIF=0 # Avoid multiple sudo checks when timestamp_timeout=0
19
20 # AUR
21 #AURCOMMENT=5
22 #AURDEVELONLY=0
23 #AURSEARCH=1
24 #AURUPGRADE=0
25 #AURVOTE=1
26
27 # Build
28 #EXPORT=0 # Export to 1: EXPORTDIR or PKGDEST
29 # 2: pacman cache (as root)
30 #EXPORTSRC=0 # Need EXPORT>0 to be used
31 #EXPORTDIR="" # If empty, use makepkg's connfiguration (see makepkg.conf)
32
33 # Prompt
34 #NOCONFIRM=0
35 #UP_NOCONFIRM=0 # No prompt while build upgrades (including -Sbu)
36 #BUILD_NOCONFIRM=0 # Only prompt for editing files
37 #EDITFILES=1
38 #NOENTER=1
39
40 # Output
41 #USECOLOR=1
42 #DETAILUPGRADE=1
43 #SHOWORPHANS=1
44 #TERMINALTITLE=1
45
46 # Command
47 #PACMAN="pacman"
48 #DIFFEDITCMD="vimdiff"


К полезным параметрам я бы отнёс TMPDIR - можно задать папку для временных файлов и директорий, FORCEENGLISH - обязательное использование стандартной англоязычно локали и AURCOMMENT, указывающий число комментариев для отображения.

Подводя итоги, yaourt очень сильно облегчает использование AUR (кстати, название так и расшифровывается: Yet AnOther User Repository Tool), при этом сохраняя общий дух простоты использования KISS и позволяющий плавно использовать его вместо pacman.

Wednesday, August 3, 2011

bash history: args

Я постоянно забываю, как работают внутренние переменные для работы с историей баша. Вот на днях я потянул руку и тепер на ней на неделю гипс, поэтому всякие мелкие фишечки сокращающие лишние клавиатурные комбинации особенно актуальны. Кстати, ионовские биндинги тоже поменялись, но пока непонятно, как они покажут себя в бою, т.к. пока что идёт "обкатка".

[igor@nastya 10:38:50 ~]
$ gqview /tmp/screenshot-2011-08-03-10\:06.png
[igor@nastya 10:49:13 ~]
$ ^gqview^mv Dropbox/Public/music.png
mv Dropbox/Public/music.png /tmp/screenshot-2011-08-03-10\:06.png
mv: cannot stat `Dropbox/Public/music.png': No such file or directory
[igor@nastya 11:19:44 ~]
$ mv !!:2 !!:1
mv /tmp/screenshot-2011-08-03-10\:06.png Dropbox/Public/music.png

(кстати, да - полчаса это я столько искал и читал гайд по башу %)

Во-первых, баш, как нормальная (читать "не-awk") утилита, нумерует аргументы с нуля. !! - предыдущая команда (sudo !! является, пожалуй, наиболее частым моим применением этой функции. !abracadabra - последняя команда, в которой был текст abracadabra.

Пользуясь случаем, йцукенг - редкостное говно, а dvorak-r почти так же охрененен, как programmer's dvorak

Saturday, February 13, 2010

dubuzzing


fuck yeah!

И на всякий случай unfollow и block, unfollow и block, unfollow и block.. (блиа, нельзя было сделать прямо в том окошке множественный выбор? И вообще зачем сразу добавлять всех-то?).

Ну и спрятать этот феерический ёбнутый логотип можно drag-n-drop'ом его в "More", чтобы не портил картинку.

btw, mutt rulez:

1 set sendmail="/usr/bin/msmtp -a cra"
2 set use_from=yes
3 set realname="Spaceship Monkey"
4 set from="mailmonkey-of-spaceship-monkey@mail.ru"
5 set envelope_from=yes
6
7 mailboxes ='[Gmail]/Label1' ='[Gmail]/Label2'
8
9 set imap_user="ACC@gmail.com"
10 set imap_pass="PASS"
11 unset imap_passive
12 set imap_keepalive=300
13
14 set smtp_url="smtps://ACC:PASS@smtp.gmail.com:465/"
15 set from="ACC@gmail.com"
16
17 set folder="imaps://ACC@imap.gmail.com:993"
18 set spoolfile="+INBOX"
19 set postponed="+[Gmail]/Drafts"
20 set message_cachedir=~/.mutt/cache/bodies
21 set certificate_file=~/.mutt/cache/certificates
21
22 set sort='threads'
23 set sort_aux='last-date-received'
24 set imap_check_subscribed
25
26 color indicator yellow default
27 color message white default
28 color normal white default
29 color quoted brightblue default
30 color signature green default
31 color underline green blue
32 color status white blue
33 color header yellow default "^from"
34 color header green default "^from:"
35 color header green default "^to:"
36 color header green default "^cc:"
37 color header green default "^date:"
38 color header yellow default "^newsgroups:"
39 color header yellow default "^reply-to:"
40 color header brightcyan default "^subject:"
41 color header red default "^x-spam-rule:"
42 color header yellow default "^x-mailer:"
43 color header yellow default "^message-id:"
44 color header yellow default "^Organization:"
45 color header yellow default "^Organisation:"
46 color header yellow default "^User-Agent:"
47 color header yellow default "^message-id: .*pine"
48 color header yellow default "^X-Fnord:"
49 color header red default "^X-WebTV-Stationery:"
50 color header yellow default "^X-Message-Flag:"
51 color header yellow default "^X-Spam-Status:"
52 color header yellow default "^X-SpamProbe:"
53 color header red default "^X-SpamProbe: SPAM"
54 color tree green default
55

Tuesday, February 9, 2010

Вся правда об интервью (перевод)

Это мой любительский перевод статьи Стива Йегги об интервьюировании с закосом на художественность. Хотя он не только об интервью, имхо. Многие вещи тут можно отнести к другим областям налаживания контакта, обучению, работе.

Внимание: заголовок этой заметки очень неточен. По правде говоря, заметку стоило бы озаглавить так: "Частичная (В Лучшем Случае) и В Любом Случае Чрезвычайно Предвзятая Так Называемая 'Правда' О Некоторых Ограниченных Видах Технических Собеседований от Полностью Фанатичного Сноба-Задрота, Который Даже Не Знает, О Чём Он Говорит Потому Что ПэХаПЭ рУЛиТ И Вам Не Надо Знать Ничего Больше!!!"

Правда, он получился немного длинноватым, так что мне пришлось сократить его. Но считайте, что я Вас предупредил. (И да, длинный вариант названия статьи мне тоже нравится больше!)

Лана..

Какой-то анонимный трус оставил коментарий в одном из моих блогов:

Отсносительно хроник собеседований о том, как кто-то завалился или, наоборот, проскочил в процессе собеседовании о приёме на работу. Я бы хател заметить, что ты вообще-то сноб, не? Однозначно определя , я думаю, ты один из тех интервьюверов, кто стремится обтесать людей, работающих под его руководством в его небольших клонов. "Вы должны знать то-то и то-то, чтобы я рассматривал Вас как "настоящего программиста", иначе - пинками за дверь выгоню." Я думаю, это очень узколобо и вообще мне кажется удивительным, почему всё больше людей не идут работать по техническим направлениям, учитывая то, кто там сейчас правит балом. Вы все - игоисты и снобы, даже если и заслуженно.

<сатира>

Отлично сказано! Ну, за исключением последнего предложения, где пропущен глагол, не говоря уже о каком-либо подобии интеллегентности во всём предложении и пары ошибок. Ну, если это обросить, думаю, этому комментатору запросто можно дать должность главного редактора в каких-нибудь New York Times.

И как только это произойдёт, - да я всегда был на его стороне! Нет, правда!

Видите ли, я всегда думал, что было бы круто быть пилотом большого самолёта. Я пошёл на собеседование, но эти чёртовы снобы хотели, чтобы я был миниатюрным клоном их глоабльной идее-фикс "идеальный пилот аэролайнера." Они ожидали, что я буду знать всю эту херь о метеорологии, принципах электрических схем и всякую другую чушь одназначно не имеющую ничего общего стем, чтобы летать на самолёте. К тому же мне надо было принести им доказательство того, что я действительно налетал столько часов, видите ли, они иначе мне не верят, что я подхожу их требованиям. Это однозначно были "ребята старой школы", пытающиеся удержаться в седле как можно дольше, не давая проходу таким славным парням, как я. Да я вообще удивлён, что кто-то вообще попадает новенький к ним!

Ну, тогда я подумал - а может, мне стать нейрохирургом? Но они даже не допустили меня до собеседования! Полным снобизма голосом, они сказали мне, что я должен знать гораздо больше о мозгах, хирургии и прочем барахле. А у меня, между прочим, в институте биология была! И я там лягушку препарировал. Ну и вооще, я довольно аккуратный парень. Я смышлёный и руки у меня не трясутся, и я вообще могу на ходу сообразить кучу всего, если потребуется. И я реально мотивирован к тому, чтобы заниматься нейрохирургией! Но они не рассматривают мои мозги, похоже, даже как полноценный материал для изучения. Во имя святого Нерва, ну как так можно?! Я думаю, эти хирурги-интервьюверы просто хладнокровные снобы. Они не ценят мои настоящие таланты. Они просто хотят жалких маленьких клонов для уже нанятых нейрохирургов.

Но вообще, эти управляющие госпиталями и аэропортами... Это не все снобы, которые могут попасться на пути такого парня, как я, судя по моему же опыту. Знаете, я могу довольно неплохо жонглировать пятью шарами (у меня даже где-то есть видео, где я это делаю), и всё равно, каждый раз, когда я подаю заявку на вакансию жонглёра в Cirque de Soleil, мне даже не присылают ответа! Снобы! Ни строчки в ответ не пишут! Что не так с моим жонгрированием? Да ничего! Они просто хотят маленьких милых клонов Виктора Ки. Однозначно, они собираются платить этим жонглёром много денег за хорошую работу, но я думаю, они поступают довольно узколобо из-за того, что не рассматривают меня как кандидата.

Тогда я написал кипу писем в Голливудские киностудии, позиционируя себя как дрессировщика животных, так как дома у меня живёт Ши-тцу по имени Чино, и иногда могу заставить его сидеть. В смысле, это заняло столько работы! Эта мелкая шавка почти совсем меня не слушает. Так что я довольно неплохо подхожу на вакансию дрессировщика. Конечно, я никогда не работал напрямую с медведем или тигром, но не может же это сильно отличаться. Надо просто кричать СИДЕТЬ! и потом скормить им печеньку, когда они наконец сделают это, так? Типа, специальную печеньку для тигра или специальную печеньку для медведя вместо собачей косточки. Но в целом-то, всё то же самое, уж я-то знаю. Но эти эгоисты-дрессировщиками пинками выталкали меня за дверь.

Так что я пораскинул мозгами и понял: чувак, нет смысла работать с эгоистичными пилотами, нейрохирургами, циркачами и дрессировщиками. Они просто пытаются сделать побольше маленьких идеально скопированных клонов самих себя. Да ну нах!

И я отомстил! Я оставил комментарий во всех их блогах, анонимно, конечно. Это задаст им жару! Я чувствую себя гораздо лучше после того, как я сказал им о том, какие они стая придурков, эти все нейродрессировщики летающих хирургов. Я даже пропустил пару глаголов, чтобы ещё больше их раздразнить. Они это заслужили, чёртовы дрочеры.

Так что да, господин Комментатор. В яблочко просто! Кругом одни снобы!

</сатира>

Небольшое(но популярное) недоразумение.

Прежде, чем я начну нестоящую запись в блоге, давайте развеем все сомнения: менеджеры - не единственные, кто вас собеседуют. Многие уровни собеседования проводятся специалистами, кто будет работать в той же команде, что и Вы. Никто не работает на меня, но моя компания всё равно время от времени приглашает меня на собеседования с потенциальными работниками.

Так что мы не хотим кучу маленьких клонов, которые будут работать на нас. Мы хотим, чтобы они работали с нами </вот-теперь-правда-конец-сатиры>

Грубая Реальность.

Если вы хотите работать в комании типа Microsoft, Yahoo!, Apple или Amazon.com, у них будут высокие стандарты. То, что Вы "знаете, как программировать", в общем-то, неважно. Вот краткий перечень Ваших умений, которые они будут проверять: сложность алгоритмов, хитрые структуры данных, проектирование алгоритмов, поиск, сортировка, проблемы локализации, сетевые протоколы, механизмы манипулирования памятью на уровне операционной системы, семантический анализ строк, рекурсия, математическая индукция, теория графов, комбинаторика, теория реализации языков программирования, машинные архитектуры, дискретная математика и логика, графические и оконные системы, шрифты и типография, визуализация данных, базы данных и языки запросов, файловые системы и хранение данных, встраиваемые системы, протоколы сотовой и беспроводной связи и интернет-стандарты и технологии.

Если повезёт, это всё.

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

Вам интересно, почему они спрашивают о всё этом барахле? Да потому что они используют это каждый день. Они пытались нанимать людей, кто не знает всего этого. Поверьте, они пытаются постоянно. Они хотят нанимать больше программеров, и они всегда ищут свежее мясо. Но когда они понижают их стандарты, они прогорают. Боинги падают, пациенты умирают, жонглёр роняет кеглю кому-нибудь на голову, а тигр разрывает кому-нибудь глотку. Говоря компьютерным языком: сервис недоступен несколько дней, они теряют миллионы; проект откладывается или вообще не завершается, они теряют контракты и клиентов; они теряют в схватке с теми бизнес-соперниками, кто нанимал более квалифицированных специалистов.

Создать сайт на Ruby on Rails довольно просто. Научиться программировать тоже довольно просто. Многие люди пытаются и сдаются, не достигнув хотя бы этого. Но это жонглирование трёмя или пятью шарами. Этого недостаточно, чтобы попасть в Cirque du Soleils и в частные госпитали компьютерной индустрии. Я уверен, вы хотите быть гонщиком, инструктором по дельтапланеризму, корпоративным юристом, звукорежиссёром кинофильмов или инженером-аэромехаником. Но Вы знаете, что у вас недостаточно навыков или опыта. Почему же Вы считаете, что поверхностное знание (да, в общем-то, даже не только поверхностное) программирования автоматически квалифицирует Вас как потенциального рекрута в Microsoft?

ИТ-компании обладают невероятно высокими стандартными, как и в любой другой професси. Кто убил, тот и съел. Если тебя убили и съели - сам виноват.

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

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

Хотя в общем-то, это не совсем правда, кое-что можно я могу сделать: я могу говорить об этом. Я открыт к обсуждениям, и иногда пишу об этом в моём блоге. Я предпологая, что мой стиль собеседования не сильно отличается от стиля тысячи других людей в сотне схожих хайтек-компаний.

Как бы то ни было, я более приятный, потому что я учитываю мотивацию (в смысле желания улучшить самого себя) выше, чем любой другой фактор в интервью. Это способ, с помощью которого, в большинстве случаев, я смог попасть в компанию, куда собеседовался: моего энтузиузма было достаточно, чтобы закрыть некоторые мои ошибки. Так что я гораздо лучше отношусь к кандидатам, которые приходят ко мне на подъёме, в отличие от браздно шатающихся из конторы в контору.

Но не все интервьюверы приятны, и я знаю много много других людей, проводящих собеседование, которые решили, что они могут точно оценить Вас на основании решения некоторых задач выпуклового анализа (или поиска в графе, или логических задач, или чем там является их главный их любимая тема), и они спрашивают каждого канидата этот вопрос вне зависимости от опыта или предыдущих мест работы. Я бы сказал, около 10% всех технических интервьюверов спрашивают один и тот же вопрос, год за годом, и ответ на этот вопрос может их интересовать гораздо больше Вашего предыдущего опыта.

Вам повезло, вообще, что я об этом говорю, многие компании хранят их стратегии собеседований как коммерческую тайну, и довольно трудно получить какую-нибудь информацию об этом, если не походить по разным интервью.

Подсказка таким компаниям: вы все делаете это одинаково. Хватить, чёрт побери, хранить это за семью печатями.

Причина, по которой я пишу об этому, потому что я заинтересован во всём процессе:
Я хочу улучшить свои навыки брать интервью.
Я хочу улучшить процесс в целом, так как сейчас он далёк от идеального.
Я хочу помочь кандидатам подготовиться к их собеседованиям.

Как бы то ни было, если говорить об этом открыто, люди, к моему удивлению, расстраиваются. Правда, многие, похоже, не умеют внимательно слушать.

С одной стороны, люди хотят работать, и любой намёк на то, что кто-то где-то может спросить вопросы, на которые они не знают ответа, заставляет их плеваться слюной от ярости. Странно, но они не учитывают при этом, что они не могут получить работу нейрохирурга или дрессировщика в цирке. Но при этом они думают, что небольшое представление о программировании означает, что они могут подавать резюме в любую технически ориентированную компанию на планете и любой, кто спросит их о чём-то, что они не знают, просто большой жестокий дрочер! (Я случайно обнаружил эту милую сентиментальность после моей недавней заметки в O'Relly Ruby Blog, так что наш Анонимный Трус не одинок в своём мнении.)

Дружественная заметка плюющимся: не все области разработки программного обеспечения одинаковы. Подумайте об этом секундочку. Вы можете быть довольно неплохим веб-разработчиком, но это практически однозначно не даёт вам навыки работы на ядром ОС. Или вы можете быть действительно хорошим специалистом в ядрах ОС, но это практически однозначно не говорит о Вас как о хорошем веб-разработчике.

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

Другая группа людей, обижается на тех, кто их собеседует из-за стиля, который ими используется. Не существует однозначных методик взятия интервью и я вообще считаю, что это лоттерея. Но большинство людей, которые имеют некоторый опыт во взятии интервью, думают, что у них есть "свой метод", и они думают, что, когда я говорю о моём стиле, я пытаюсь уговорить их изменить свой. И они тоже очень много плюются.

Ну же, просыпайтесь, злые люди! Существует сотни компаний, проводящих технические интервью. Они делают это для разных родов деятельности, включая администраторов баз данных, сисадминов, веб-разработчиков, программистов unix, программистов windows, программистов на java, программистов для мобильных телефонов и многие другие. Какую бы область не взять, все делают это одинаковым способом. Так что это не только я такой. Вообще, все эти люди, берущие интервью - ВЫ, как только Вы получаете эту работу.

Так что, если Вы не можете получить работу, которую хочется, будь это разработчкик в Boeing, или пилот в American, не говорите мне об этом. Нытьё не изменит реальность в нашей области. Просто идите и освойте всё то, что они хотят, чтобы Вы знали.

В поисках работы получше.

После всего сказанного, Вы можете поинтересоваться, хотите ли Вы вообще работать в большой компании-разработчике. Стоит тщательно обдумать природу Вашей мотивации.

Если Вы просто хотите делать деньги, можно с большой вероятностью найти работу, которая требует гораздо меньше технических навыков (или требует других технических навыков), чем работа в компаниях типа Microsoft. Приведу один пример из этих тысяч тысячей возможностей: можно набраться немного знаний по PHP и MySQL для разработки сайтов, и пойти найти какую-нибудь больниццу или страховую компанию или школу, которой нужно присутствие в сети, и они без сомнений будут платить Вам так же хорошо, как Microsoft.

Если деньги это не всё, то Вам точно не нужно университетское образование в области информатики. Наша индустрия отчаянно нуждается в программистах, которые могут писать код на C#, Java, PHP, Perl, C++ и других популярных языках. Если Вы выучите один или два таких языка, Вы скорее всего сможете получить работу в довольно большом числе компаний.

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

Такова реальность - поставлять хороший софт всё сложнее и сложнее, так как ожидания заказчика постоянно растут. Вот почему компаниям приходится быть такими разборчивыми в процессе собеседования. Большие компании сталкиваются с серьёзными задачами, которые не встречаются в небольших конторах, включая комбинаторные взрывы связей и зависимостей, необходимость поддержки большой кодовой базы, социально-культурные проблемы, возникающие по мере роста компании, и необходимость искать абсолютно новые вложения в результате давления с Wall Street.

Так что большинство компаний ищут комбинацию навыков: им нужна смесь из "юнцов", которые будут поддерживать их дело живым и "старичков", которые будут помогать им обходить те ямы, в которые они могут сами себя закопать по мере быстрого роста.

Ничего гламурного, не правда ли? На практике, стартапы гораздо более гламурны. Вы двигаетесь быстро; вы работаете в бурно развивающейся области, с новыми идеями, Вы выжимаете из команды все соки, чтобы обогнать конкурентов и влезть в сроки, поставленные инвестором. Вы можете заставить работать гениальные вещи и беспокоитаться по поводу масштабирования и их совершенствования потом. Все самые интересные вещи происходят в момент становления компании.

Ложка дёгтя состоит в том, что вам приходится иметь дело с гораздо большим риском. В большой компании есть стабильность, а это чего-то да стоит. Несколько провалившихся стартапов быстро снизит потребность в риске, по крайней мере, не некоторое время.

Так что Вам надо решить, чего же Вам хочется. Но нравится Вам это или нет, если Вы хотите работать разработчиком ПО в большой знаменитой компании высшего звена, там будут собеседования, которые могут быть просто адом. Даже если Вы действительно неплохой разработчки, есть шанс, что Вы не пройдёте.

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

Как вы можете принять участие в изменениях? Ну, для начала проведите некоторое расследование. Довольно просто выяснить, для каких целей компания проводит интервью, и что это за интервью, как они проходят и какие требования предъявляются. Просто прочитайте описание вакансий на их вебсайте. Они обычно довольно честно написаны, что-нибудь в духе "Бакалаврская степень в прикладной математике или эквивалентной области", или же там прямо написано, какими методами и технологиями необходимо хорошо владеть, чтобы попасть к ним. Если Вы рассматриваете какую-то конкретную компанию, до прохождения интервью имеет смысл спросить у человека, рекрутирующего Вас, какого рода вопросы можно ожидать на собеседовании.

Если компания собирается спрашивать Вас вопросы, которые, по Вашему мнению, не особо важны - не работайте в этой компании! Если Вы правы, они выйдут из бизнеса, рано или поздно. Ну или как минимум, Вы можете податься в компанию, в которой, по Вашему мнению, приоритеты совпадают с Вашими собственными. Не любишь - не целуй!

Как только Вы начнёте работать где-то, Вы рано или поздно будете проводить собеседования с принимающей стороны. Если Вам не нравится существующей подход к собеседованиям, закатите скандал об этом, и, может быть, Вас послушают. Компании не хотят получать случайно проскочивших работников или отшивать хороших претендентов, так же, как и Вы. Если у Вас есть хорошая идея о том, как улучшить процесс, дайте им знать. Существуют куча способов маленьких изменений, которые можно попробовать. Или, может быть, они согласятся провести эксперимент с кардинально новым способом собеседований и посмотреть на результаты.

А я всё равно попридираюсь!

Вперёд - комментируйте. Именно поэтому я открыл этот блог для анонимных комментариев. До текущего момента, во всяком случае. Но вообще, комментарии в блоге не несут больших перемен.

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

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

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

Sunday, February 7, 2010

Urxvt links parsing

Когда меня наконец-то задолбало постоянно кликать третьей кнопкой мыши в тонкой адресной строке моего браузера, перед этим тщательно выделяя ссылки в mcabber, снабжённые вялыми описаниями моих друзей "ZOMG! INVISIBLE SANDWICH!", я решил посмотреть, что же можно с этим сделать. Оказалось практически как с метрономами и тюнерами фирмы KORG: батарейки входят в комплект, но с неожиданной стороны коробки.
Добавляем следующие строчки в наш .Xresources:
1 URxvt*perl-ext-common: default,matcher
2 URxvt*keysym.C-g: perl:matcher
3 URxvt*urlLauncher: firefox
4 URxvt*colorUL: #86a2be

И по нажатию ctrl-g у нас будет открываться в firefox последний url-match.
Можно ещё мышкой кликать (по умолчанию - средняя кнопка, но можно настроить через URxvt*matcher.button). И вообще, в man 3 urxvtperl много чего любопытного написано, оказывается.

Thursday, February 4, 2010

Проблема российской музыки

Студийное качество ещё хоть более-менее умеют "подтягивать", не смотря на то, что в, условно, даже 10-милионном городе находится только 1 композитор.
Виагра - бриллианты
Нет, я не спорю, отличная партия ритм-секции и вокал даже пытается как-то соответствовать.
А теперь слушаем live-версию этого трешака

И сравнить примерно того же время выхода клип katty perry - i kissed a girl и unplugged-версию этой же песни (у нас в эстраде свинговать-то даже на записи боятся.) тут

Копнём полуандеграунд и без вокала? Пожалуйста. Battles, например. Пример
У нас есть что-то подобное? Everything is made in china? Один из их крайних треков
Я слышал их на разогреве 65daysofstatic. Пятьдесят минут, пятнадцать примочек и ни одной запоминающейся мелодии.
В прочем, разогревы это вообще ужас.
На разогрев Riverside вышла какая-то сумашедшая команда dark heaven. Барабанщик постоянно сбивался, когда переходил на кардан, а вокалистка мазала мимо нот. Все в масках, кроме вокалистки. Тут я даже пожалел, что я отлично вижу с такого расстояния - лучше бы и она была в маске.

В тоже время в музыкальном колледже я постоянно слышу и вижу отличных вокалисток, владение голосом которых заставляет меня чуть ли не яростно онанировать прямо там, гитаристов, которые понимают, что лучшее соло Джона Петруччи - это то, что он сыграл в Hollow Years на бутлеге Budokan, причём шред там совершенно был лишним и басистов, которые умеют слушать барабанщика и не пытаются в каждую паузу напихать побольше кривого слэпа.
Куда они все деваются, блин?

Tuesday, February 2, 2010

latex2html

I do think it's good. No matter, how hardly I study it, no matter how I take it apart..

Я настолько свыкся с техом, что мне уже непривычно набирать объёмные структурированные документы в чём-то другом. Однако, до сих пор встречаются люди, недолюбливающие pdf, но на вопрос "Хорошо, а если это будет html?" уверенно отвечающие "да не вопрос!"

Специально для таких есть вариант простой конвертации одного в другое, и этому perl-скрипту даже посвещена довольно куцая страница на википедии.

Пример вызова:
$ latex2html -show_section_numbers -t "Для Служебного Пользования" -noinfo -nonavigation -split 0 filename.tex


Параметры:
-noinfo уберёт раздел "Об этом документе..."
-split 0 не будет разбивать документ на кусочки
-t "BLABLABLA" заголовок страницы
-show_section_numbers показывать номера в разделах, номера берутся из filename.aux

Пример документа для данной штуки (крайне куц, тоже):
\documentclass[12pt,a4paper,oneside]{article}
\usepackage[russian]{babel}
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{2}

\begin{document}
\tableofcontents
\input{main-koi}

\end{document}


где main-koi содержит обычную теховскую стрктуру --- section, subsection, etc

И да, эта дура не очень любит не-английские тексты (и юникод, похоже, тоже), поэтому потом придётся вскрыть выходной файлик и прописать ручками в соответствующем meta-тэге content-type = text/css; charset = koi8-r, а то несчастные хомячки опять будут вопить о том, что "у тебя там кракозяблики"

А на дворе стояло начало второй декады двадцать первого века..

Thursday, October 22, 2009

Microsoft Visual Studio 2005 + qt 2009.4 integration

По горячим следам пишу пляски с бубном по установке йобаного qt-integration в microsoft visual studio 2005

В моём случае использовалось:
  • ArchLinux + VirtualBox 3.0.8 + WinXP в нём
  • Microsoft Visual Studio 2005
  • Qt 4.5.0 (2009.04)
  • Qt visual studio integration add-in 1.1.0
  • 4 часа времени (умножить на число неудачных попыток собрать с другими параметрами)
  • 2 кружки чая

    Вкратце: чтобы всё заработало с минимумом плясок в будущем, надо пересобрать qt компилятором от msvs. Здесь описывается success story этих свистоплясок


    Процедура манипуляций:
    0x0) поставить Arch, VirtualBox, WinXP
    0x1) туда влепить MSVS 2005 (я вырезал всё, кроме Visual C++) - примерно 1.1 Gb
    0x2) ставить qt-sdk-win-opensource-2009.04.exe
    0x3) она поставится ну, пусть в C:\Qt\2009.04. Делаем там же копию, допустим, в C:\Qt\2009.04vc
    0x4) достать бубен, стряхнуть пыль. Распечатать соответствующие man-тры
    0x5) открыть MS Visual Studio Command Prompt (из MSVS -> Tools), можно в принципе, просто запустить нужный батник vcvarsall.bat, который пропишет все переменные, перейти в созданную нами папку
    0x6) конфигуем сборку. Единственный вариант ключей к configure, который потом у меня удачно собрался, был этот:
    configure.exe -platform win32-msvc2005-no-sql-sqlite-no-qt3support-no-dbus -no-phonon -no-phonon-backend -no-webkit

    Даже несмотря на поставленный psql, варианты типа -plugin-sql-psql не срабатывали, так как не могли найтись нужные библиотечные файлы (естественно, в системе присутствовавшие). Поэтому я решил, что стоит сначала собрать всё, как есть, а потом, если что, доставить (ибо процедурка сборки довольно длительная)
    0x7) запускаем nmake и можно откинуться на спинку кресла идти курить бамбук - оно ещё долго не будет от нас ожидать каких-то действий.
    Сборка заняла на моей виртуальной машине (WinXP, ~1.5Gb ram) около 3 часов. Это самое противное, потому что, примерно столько же по времени занимали опыты с, как выяснилось, неудачными параметрами сборки.
    0x8) ставим qt-vs-addin-1.1.0, запускаем msvs 2005. Если всё хорошо - переход к пункту 13.
    0x9) студия сказала - иди ты, не буду никаких плагинов брать или что-то в этом духе. Никаких дополнительных меню не появилось. Расстроенное перелогиниваемся перезагружаемся.
    0xA) открываем студию снова, видим, что появилось новое меню Qt. Если в qt options показывается поставленная (собранная нами) версия qt - переход к пункту 13.
    0xB) громко матерясь, попробовать добавить версию qt самостоятельно. Если добавилась (надо указать правильный путь. В нашем случае это c:\Qt\2009.04vc) - переход к пункту 13.
    0xC) прописать в переменные среды (My Computer -> Advanced -> Environment Variables. лучше в глобальные) QTDIR=c:\Qt\2009.04vc. Перелогиниться перегрузиться.
    0xD) если теперь правильная версия не подцепилась - подключить вручную.
    0xE) открыть какой-нибудь Qt project (из соответствующего пункта меню Qt -> open .pro), убедиться в работоспособности...
    0xF) ...
    0x10) PROFIT!

    В итоге из Microsoft Visual Studio - About Microsoft Visual Studio примерно следующая информация:

    Microsoft Visual Studio 2005
    Version 8.0.50727.42 (RTM.050727-4200)
    Microsoft .NET Framework
    Version 2.0.50727 SP1

    Installed Edition: Professional

    Microsoft Visual C++ 2005 77626-009-0000007-41572
    Microsoft Visual C++ 2005

    Qt4 Add-in 1.1.0
    For more information about the Qt 4 Add-in, see
    http://qt.nokia.com
    Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies)


    Инджой.
  • Friday, September 25, 2009

    Отличный пример для объяснения импликации

    Существует логическая операция, называемая импликацией [1] (обозначается стрелочкой)
    Обычно она объясняется как "посылка -> следствие"
    Стандартно у преподавателя возникает небольшая заминка с тем, какой пример выбрать для иллюстрации таблицы итинности данной операции. Наиболее удачное из того, что я слышал: x={"Студент сдаст хорошо сессию"} y={"Папа купит ему машину"}. Однако, это не совсем удачная иллюстрация, потому что как-то не очень близка к действительности. Напомню, что x->y == 0 только в том случае, если студент действительно хорошо сдал сессию, а папа машину ему не купил (наоборот, если студент сдал плохо, а папа купил ему машину, то папу лжецом уж точно не назовёшь).

    Внезапно однажды на занятии у меня родилась шикарная идея, какие два события лучше подходят для описания: x={"Девушка забеременела"}, y={"Её мальчик на ней женился"}. Тогда x->y = {"Если девушка забеременела, мальчик на ней женился"}. Действительно, если девушка не забеременела, а мальчик не женился, никакого обмана не произошло, и x->y истинно, если девушка не забеременела, а мальчик, тем не менее, женился, то он, бесспорно, благородный дон и высказывание x->y всё равно истинно (никто никого не обманул). Если же девушка забеременела и парень женился, то всё опять же истинно (мужик сказал - мужик сделал!). Однако, если же девушка забеременела, а парень на ней не женился, он, конечно же, козёл. И в этом месте даже самые отстающие школьники понимают, что информатика гораздо ближе к жизни и радостно поддакивают своими милыми мордашками "козёл, конечно!".

    ---

    [1] http://ru.wikipedia.org/wiki/Импликация

    Saturday, September 12, 2009

    Zenwalk 6.2: epic fail.



    Всё, пришло время менять дистрибутив.
    Я два с половиной года сижу на Zenwalk, недавно они выпустили следующую версию - 6.2. На моём ноутбуке сидит 6.0, я практически не пользуюсь иксовым софтом, поставляемым от дистрибутива (zenpanel, xfce, totem, geany). До недавнего времени всё работало, но я прозевал смену версии и не успел поставить какие-то пакеты из репозитория (эта политика закрытия старых репозиторий в основанных на версиях дистрибутивах меня безумно раздражает). Я понимаю, что если я опять скачаю инсталяционный диск, запишу его на болванку и поставлю систему "с нуля", то всё будет работать, а у меня в uname будет написано 6.2 вместо 6.0, но что-то внутри против такого решения.
    Соответственно, после выполнения ритуальных netpkg update, слетели иксы, запустить которые быстро не удалось (как уже потом стало ясно, вопрос пакетного менеджера "upgrade whole system?" не подразумевает установку дополнительных пакетов, необходимых для нормального функционирования системы). В общем, третий раз подряд апдейт провалился. Кажется, нормально проапгрейдить систему у меня получилось только один раз - с Zenwal 4.0 до Zenwalk 4.2. Сурово поматерясь и потратя полчаса на поиски болванки в общаге, в итоге был закачан archlinux и после двух-трёх часов конфигурации, я снова влюбился :) Да, почти голая система после установки, зато нет ничего лишнего и всё предельно просто, без излишних упрощений. В общем, философия Arch (The Arch Way) мне кажется более сохранённой, чем философия Zenwalk ("unix way - one task, one program." - Сильно ломается в последнее время, в связи с уходом одно с небольшим скандалом из постоянных контрибьюторов товарища gapan и в след за ним уходом ещё некоторого количества достаточно влиятельных людей).
    Короче, я доволен Archlinux, пока не всё настроил, но высокая степень прозрачности системы очевидна. Любимый оконный менеджер ion3 встал легко и непринуждённо, хотя с настройкой клавы и пришлось немножко повозиться.
    А самое главное! Тут нет погони за версиями. Просто rolling releases, которые регулярно отображаются в виде "а вот исошник тут - дамп основных пакетов из репозитория. Бери, коль инета нет".
    Так что, два с половиной года с Zenwalk было весело, но пора уже и честь знать. Судя по всему, с Archlinux повеселее будет :)

    Wednesday, September 9, 2009

    MIDI keyboard under linux (как подружить usb midi keyboard, fluidsynth и jack)

    Вчера наконец-то заставил работать под линуксом миди-клавиатуру (честно говоря, не совсем наконец-то, всего второй раз пробовал)

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

    Общая схема подключения оказалась такой:
    0. втыкаем клаву
    1. запускаем демон jackd с нужными параметрами (см. ниже)
    2. стартуем fluidsynth указывая, что надо использовать jack и определённый soundfont (без него ничего не получится)
    3. связываем средствами ALSA ввод с миди с выходом fluidsynth
    4. связываем jack-ом выход fluidsynth с системным выходом.
    5. ?????????
    6. PROFIT

    скриптец с раскраской, требует допиливания, чтобы заработало

    Если говорить в терминах команд, то получаем следующее:
    Запускаем джек:
    jackd -dalsa -dhw:0,0 -r44100 -p512 -n4 &

    Теперь запустим синтезатор, скормив ему звуковой шрифт:
    fluidsynth -ajack /home/cra/Unison.SF2

    Кстати, откроется шелл, в котором можно регулировать gain командой gain X, где X - число от 1 до 5. Остальные команды, в общем-то, не столь важны.

    Далее, смотрим, какие порты у нас открыты по выводу команды
    aconnect -o

    И подключаем вывод клавиатуры к входу синтезатора: что-то в духе
    aconnect 128:0 20:0

    Ну а теперь надо подцепить выход синтезатора джэком к системному выводу звука:
    jack_connect fluidsynth:left system:playback_1
    jack_connect fluidsynth:right system:playback_2

    Всё, из колонок должны доноситься звуки.

    Wednesday, April 29, 2009

    screen splitting

    Есть очень удобная тулза, gnu screen, которую я использую в связке сервер - скрин - приложения.
    По сути, это тот же концепт, что и виртуальные рабочие столы, только для консоли. Основное преимущество в том, что при разрыве коннекта мы можем подключиться потом к серверу и вернутся в тот же экран, где всё как раз на том же месте и осталось.
    Собственно, это делается командой screen -dAR - в такой комбинации параметров, если скрина не было, создаётся новый, а если был, то он дополнительно ресайзится в окно, в котором запущен.

    ctrl-A x - lock screen
    ctrl-A h - hardcopy current view. Очень удобная команда, делает ascii-скриншот того, что видно
    ctrl-A S - split screen - разбивает область со скринами на две, так, что можно в одной открыть tail -f какого-то лога, а в другой собственно проводить манипуляции с серваком.
    ctrl-A :resize +-N - изменить размер текущего фрейма. Такой консольный ion3 получается :)

    Friday, March 27, 2009

    bash wrapper scripting - parameters

    краткий ответ: $@

    сам пост:
    Допустим, есть какая-то уже налаженная схема запуска чего-либо, где всё настроено и работает, но хочется чуть-чуть изменить процесс, причём где-то в середине и без особого гемороя. Легко и просто - заменяем исполняемую команду на скриптег, который делает наши действия и потом вызывает саму настоящую программу. Бида, бида нас ждёт, если сделать всё в лоб!
    [cra@server 10:37 ~]
    $ cat /usr/bin/svnserve
    #!/bin/bash

    umask 002
    /usr/bin/svnserve_real

    даст, например, неудачный резальтат

    [cra@zenwalk 10:38:53 /tmp]
    $ svn checkout svn+ssh://servak_inet/repos/gui/trunk
    You must specify exactly one of -d, -i, -t or -X.
    Type '/usr/bin/svnserve_real --help' for usage.
    svn: Connection closed unexpectedly


    Решение тривиально, надо чуть-чуть изменить исходный скрипт
    [cra@server 10:45 ~]
    $ cat /usr/bin/svnserve
    #!/bin/bash

    umask 002
    /usr/bin/svnserve_real $@


    Вот так, а я и не знал, однако :)

    Friday, March 6, 2009

    Dream Theater в Москве 10 июня!



    Кстати, скриншоты в линуксе делаются командой, указанной на скриншоте :) import -window root filename.png %)

    UPD: that was awesome, но за такие деньги я на них больше не пойду.

    Wednesday, March 4, 2009

    Digitizers & awk helps a lot

    Понадобилось перевести картинку в набор точек. Оказалось, существует целый набор подобных программ, назваются Дигитайзеры. Я использовал Engauge Digitzer: ( например, тут можно его скачать http://linux.softpedia.com/progDownload/Engauge-Digitizer-Download-1240.html )

    Использование этой штуки крайне интуитивно, просто расставляются точки, устанавливаются опорные точки, и вуаля - на выходе csv готово. Засунуть в код можно простым и грубым способом через awk:
    awk {print "points[" NR-1 "].set(" $1 "," $2 ");"} Armko.csv

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

    Friday, February 20, 2009

    Pidgin migration pretty simple

    Мигрировал со старого компа на новый и переносил настройки пиджина..
    scp -r bigbro:.purple .
    "Ё-моё, и всего-то!" - промелькнуло у меня в голове :)

    P.s: bigbro прописан в .ssh/config, конечно же ;)

    Tuesday, February 17, 2009

    7z backup script

    Скрипт для удобного бэкапирования

    #!/bin/bash

    ARCHNAME=server-shares
    DIRS="/home/shares/work /home/shares/iso"
    BACKUPDIR=/backups

    NOW=`date +%d-%b`
    /usr/bin/tar -cf - $DIRS | 7za a -si $BACKUPDIR/$ARCHNAME-$NOW.tar.7z


    Потом кинуть куда-нибудь типа /etc/cron.monthly и радоваться :)

    Thursday, February 12, 2009

    Теория относительности на пальцах

    45 минут как школьник - нереально длинный промежуток времени
    45 минут как учитель - "Блин!! ВСЕГО 45???"

    Tuesday, February 10, 2009

    nice time

    $ date -d@1234567890
    Sat Feb 14 02:31:30 MSK 2009

    В это время мы с другом играли в battle for wesnoth :) Славная была битва