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», и в таком значении она и возвращается.