Why am I russian

Апрель 29, 2012

image

Реклама

Эмиграция

Апрель 24, 2012

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

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

The post is brought to you by lekhonee v0.7

Ипотека

Апрель 21, 2012

Я, конечно, слышал нелестные отзывы об ипотеке, но стоимость кредита в 200%, это воровство!

Вот смотрите:
3 000 т.р. на 20 лет
с ипотекой: ежемесячный платёж 25 т.р.: итого полная стоимость 6 000 т.р..
сбережениями: 12,5 т.р. в месяц.

Во втором случае мне нужно так же отдавать деньги за съёмную квартиру, конечно.
В первом случае есть какие-то гарантии. Но в целом, если я смогу откладывать около 30 т.р. в месяц, а это представляется реальным, то через 10 лет как-то без суеты приобрету дом и сдам его в аренду 🙂

+ не забываем, что деньги можно хранить в быстрорастущих акциях моего любиминого Я.

The post is brought to you by lekhonee v0.7

+1 полезное приложение для Android

Апрель 15, 2012

Кто меня знает слышали, как я ною от того, что приложения для смартфонов на 99,9% бессмысленные.

Нашёл ещё одно полезное, помимо CoolReader: читалка для текущих версий журналов дома «Коммерсантъ»: «Коммерсантъ», «Огонёк», «Деньги» (и ещё какие-то, пока не просматривал).

Мне очень удобно!

The post is brought to you by lekhonee v0.7

rekonq 0.9.4 for gnome (Ubuntu)

Апрель 4, 2012

Если вы хотите узнать как я это сделал, отпишитесь в комментариях.
If you want to get build & install instruction, please, leave a comment (It’s large enougth, so I don’t want to spam my blog)

Как можно видеть из названия, это продолжение konqueror.

После 3 дней пинания херни и скачивания всё новых и новых библиотек, я его собрал под Gnome. Я думаю, что скоро смогу выложить инструкцию!

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

Всё, я счастлив, иду работать 🙂

The post is brought to you by lekhonee v0.7

F# 3.0

Март 31, 2012

Мне тут предложили вакансию тестировщика F# софта.
Посмотрел, что нового на fsharp.net, и удивился: ещё 4 года назад я учился по стандарту F# 1.0, а сейчас 3.0. Страшно, когда так всё меняется быстро. Надеюсь, что хотя бы совсестимо.

The post is brought to you by lekhonee v0.7

Броузеры

Март 31, 2012

А я вот что-то не хочу привязываться к какому-то одному броузеру, поэтому у меня установлены такие приложения как

  • Midori
  • Rekonq
  • Epipathy-browser
  • Elinkd

И вот что странно, сами создатели сайтов прогибаются как-то под main stream: FF, Opera, IE, и совсем забивают на вот этих, в принципе, соблюдающих стандарты, бедолаг. И вижу я такие лаги повсюду, что мерзко.

Я думаю, что лет через 5 всё изменится.

The post is brought to you by lekhonee v0.7

Идея

Март 24, 2012

Вчера за обедом обсуждали, возможны ли теоретически путешествия во времени.

Выявили, что в современной фантастике есть 2 подхода:
* в момент путешествия в плошлое история переписывается. Решили что это странно: полетел вон сейчас Иван Кузьмич в прошлое, а я сижу и ВНЕЗАПНО у меня вместо монитора Samsung появится монитор Sony. Природа не любит таких ВНЕЗАПНО. Поэтому не должна такого разрешить!
* в момент путешествия в прошлое история расщепляется. Поэтому при возвращении в будущее человек попадает в уже параллельный мир, выбывая из того, откуда он улетел. Это логично. Вполне может решиться существованием 5-го измерения, в котором эти расщепления и будут храниться.

И тут я придумал ещё одно: Вселенная, как известно, состоит из 10^{80} атомов. Каждый атом занимает какую-то позицию в ней, координату ну и какое-то состояние (возбужденное, не возбуждённое). Поэтому вообще говоря, число состояний Вселенной конечно! Не счётно, не континуум. Конечное такое число. Огромное. Но конечное. Тогда получается, что время вообще не нужно, а по сути мы просто перемещаемся между различными состояниями Вселенной. Очень мне эта теория понравилась.

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