Archive for the ‘Uncategorized’ Category

Irssi for Mac OS

Сентябрь 27, 2013

DMG is missing for Mac OS, but it is very easy to get things done.

  1. Download a client ($ wget http://www.irssi.org/files/irssi-0.8.16-rc1.tar.gz)
  2. Untar it ($ tar -xf irssi-0.8.16-rc1.tar.gz)
  3. $ cd irssi-0.8.16-rc1
  4. $ ./configure —prefix=/tmp/irssi/result (of course you must specify yours folder or even nothing at all)
  5. Make some patching ($ for f in $(grep -Rl «arch i386» *); do echo «Patching ${f}…»; sed -i -e «s/-arch i386//» $f; done
  6. make
  7. make install

Happy chatting!

Photo Title

Октябрь 22, 2012

Photo Title

Photo Caption

Обновил Fast Connect

Август 26, 2012

Как я уже писал раньше (хотя и не прямой речью), я делаю простую утилитку для Mac OS X, которая позволит быстро подключаться к разным серверам по ssh, что удобно, если их много, у них сложные и запутанные названия. В качестве идеала взял себе подобное поделие из GNOME и решил повторить своими силами.

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

https://github.com/xni/fast-connect

Утренняя демогогия

Июнь 12, 2012

Странная ситуация: с одной стороны аполитичность работодателя работает ему на пользу, позволяя малыми силами не заиметь врагов или даже заручиться поддержкой. А с другой — скоро выгонят всех людей за пределы РФ и некого будет хантить… Хотя не думаю, что компания что-то может сделать…

The post is brought to you by lekhonee v0.7

Emacs vs. Sumlime Text 2

Май 26, 2012

По рекомендации знакомых попробовал sublime text 2.
Знаете, очень понравился. И снова и снова начинается внутренняя Kampf в поисках того, нужно ли переходить на него или emacs ещё подойдёт…

Вообще PyCharm, похоже, вытеснит emacs как Python IDE. И ответа на вопрос «почему», я не имею. Наверное, потому что лень что-то настраивать и ковыряться.

The post is brought to you by lekhonee v0.7

Рассылки

Май 7, 2012

Мне кажется, что самая интересная рассылка. на которую я подписан — это рассылка бизнес-инкубатора ВШЭ.

Может быть ещё кто-то что-то посоветует?

The post is brought to you by lekhonee v0.7

Why am I russian

Апрель 29, 2012

image

Эмиграция

Апрель 24, 2012

А не мелочность ли говорить, что в Европе хорошо, потому что чисто, опрятно и продавцы вежливые? По-моему, мелочность.

Удивляет другое: в «Ведомостях» была врезка, где Шевченко (бывший министр здравоохранения, который сейчас разбирается в суде с Патриархом Кириллом) говорит, что пока на него наложена подписка о невыезде он не может поправить здоровье (ссылка). Как вам это? Т.е. в России априори больниц, видимо, нет, если министр здравоохранения открыто говорит, что ему нужно лечиться за границей. И он это подтвердил на 1 000 000 сограждан. Вот это расстраивает.

The post is brought to you by lekhonee v0.7

Еще одна причина любить PEP8 (One more reason to like PEP8)

Февраль 7, 2011

Исходники удобно печатать! Напечатанные, они выглядят так же, как и на экране.

Sources are printable! Being printed, they are the same like on screen.

Пару слов о генераторах в Python

Февраль 1, 2011

Генератором в python называется такая конструкция, возвращающая заместо коллекции итератор по этой коллекции.

def usual_function():
"""
обычная функция, возвращающая список
"""
return [2 * i for i in range(10)]

print "Usual function: {0}".format(usual_function())

Usual function: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

def usual_generator():
"""
обычный генератор
"""
for i in range(10):
yield 2 * i

g = usual_generator()
print "Usual generator: {0}".format(g)
print "Iterating usual generator:"
for j in g:
print j,
print

Usual generator:
Iterating usual generator:
0 2 4 6 8 10 12 14 16 18

Так же генераторы могут возвращать итераторы по бесконечным последовательностям

def endless_prime_generator():
"""
бесконечный генератор простых чисел (построенный на решете Эратосфена)
"""
used_primes = []
current_n = 2
while True:
is_prime = True
for p in used_primes:
if current_n % p == 0:
is_prime = False
break
if is_prime:
used_primes.append(current_n)
yield current_n
current_n += 1

primes = endless_prime_generator()
print "Iterating endless prime generator"
for i in range(10):
print primes.next(),
print

Iterating endless prime generator
2 3 5 7 11 13 17 19 23 29

Но совсем недавно я наткнулся на PEP-342, который вводит в генераторы новшество: теперь yield это не statement, а expression, то есть он может быть использован для присвоения значения какой-то переменной. Чтобы передать в генератор это значение используется метод send.

Простейший пример:

def coroutine():
data = "No data"
while True:
data = "data is {0}".format((yield data))
print "in generator: {0}".format(data)

g = coroutine()
print "First next(): {0}".format(g.next())
print "Then (yield) = None, because next() = send(None)"
for i in range(5):
print g.next()
print "We send Hello: this causes skipping one iteration. {0}".format(g.send("Hello"))
print "And one more example: {0}".format(g.send("Goodbye"))

First next(): No data
Then (yield) = None, because next() = send(None)
in generator: data is None
data is None
in generator: data is None
data is None
in generator: data is None
data is None
in generator: data is None
data is None
in generator: data is None
data is None
in generator: data is Hello
We send Hello: this causes skipping one iteration. data is Hello
in generator: data is Goodbye
And one more example: data is Goodbye

Первой выдачей генератора управлять нельзя. Поэтому первым возвращенным значением будет «No data». То есть выполнится конструкция (yield data). При следующем вызове next() (yield data) вернет None, (next() = send(None)). data станет равна data is None. При вызове send(«Hello») генератор «просыпается», yield data возвращает «Hello», data = «data is Hello», и в таком значении она и возвращается.