Ознакомьтесь с нашей политикой обработки персональных данных
  • ↓
  • ↑
  • ⇑
 
23:36 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Предыдущий пост чрезмерно эмоционален. Второй пайтон был хорош (и продолжает оставаться неплох там, где более нового нет — на JVM, скажем).

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

@темы: root@глупыйпингвин:~#

14:47 

Brötchen mit Käse

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

Вот, скажем, обычное третьепайтоновское 'Brötchen mit {}'.format('Käse'), которое возвращает 'Brötchen mit Käse'. Что ему соответствует во втором? А во втором было два типа строк и, соответственно, четыре комбинации, и все делают не совсем то:

u'Brötchen mit {}'.format('Käse') кинет UnicodeDecodeError.
'Brötchen mit {}'.format(u'Käse') кинет UnicodeEncodeError.
'Brötchen mit {}'.format('Käse') вернёт 'Br\xc3\xb6tchen mit K\xc3\xa4se'.
u'Brötchen mit {}'.format(u'Käse') вернёт u'Br\xf6tchen mit K\xe4se'.

(если последние две строки напечатать при помощи print, выглядят они одинаково, Brötchen mit Käse. Это чтобы люди легче путались. Вести себя они, однако, будут по-разному)

Оператор % ведёт себя в этом плане похоже на .format, но всё же чуть иначе: 'Brötchen mit %s' % u'Käse' кинет не UnicodeEncodeError, но UnicodeDecodeError.

Всё это я заметил благодаря Флориану, который держит рабочие файлы в каталоге по имени Arbeitsfläche.

@темы: root@глупыйпингвин:~#

22:13 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
заболекарь + благодать = жавло

17:34 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
изображение

12:11 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Если бы сейчас не поддержка Благодати, я не знаю, как бы я вообще.

URL
21:51 

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

Examples:
right now,
the moment at which a finger is detached in an industrial accident,
the moment at which a child is born,
the moment of death.

@темы: root@глупыйпингвин:~#, эх, дубинушка, ухнем

16:40 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Я є здоров і менї веде ся добре.
На сїй картцї не вільно нїчо більш повідомляти.

(@@@)

@темы: ї

07:34 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Сонная сортировка (sleep sort) — шуточный алгоритм сортировки. Суть его в следующем: для каждого элемента списка мы запускаем процесс, который спит тем дольше, чем больше элемент, а затем просыпается, печатает этот элемент и завершается.

Примеры:

; Clojure
user> (dorun (pmap (fn [n] (Thread/sleep n) (println n)) [5 3 8 7 1]))
1
3
5
7
8
nil

% Erlang
1> [spawn(fun() -> receive after X -> io:format("~p~n", [X]) end end) || X <- [5, 3, 8, 7, 1]].
1
3
5
7
8
[<0.34.0>,<0.35.0>,<0.36.0>,<0.37.0>,<0.38.0>]

// Javasсript
> [5, 3, 8, 7, 1].forEach(function (n) { setTimeout(function() { console.log(n) }, n) })
undefined
1
3
5
7
8

Ну или можно не печатать, а прямо возвращать отсортированный список, это не принципиально:

; Clojure
(let [a (atom [])] (dorun (pmap (fn [n] (Thread/sleep n) (swap! a conj n)) [5 3 8 7 1])) @a)

% Erlang
[receive X -> X end || _ <- [spawn_link(fun() -> receive after X -> Parent ! X end end) || Parent <- [self()], X <- [5, 3, 8, 7, 1]]].

@темы: root@глупыйпингвин:~#

15:50 

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

a = 'a = %r; print a %% a'; print a % a

Стало:

s = 's = {!r}; print(s.format(s))'; print(s.format(s))

@темы: root@глупыйпингвин:~#

18:42 

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

@темы: по всей Германии wetter

22:31 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Переписывать что-то с пайтона 3.4 на пайтон 2.7 — печальное занятие. Мелкие, но злые различия между ними вылезают из самых неожиданных мест. Сколько за эти годы всего поправили — это ж умом не объять. Ну вот, скажем, знали ли вы, что во втором пайтоне попытка красиво напечатать множество, содержащее больше одного числа, хотя бы одно из которых комплексное — это TypeError? Проверьте сами:

>>> from pprint import pprint
>>> pprint({1j, 0})
set([Traceback (most recent call last):
File "", line 1, in
File "pprint.pyc", line 59, in pprint
File "pprint.pyc", line 117, in pprint
File "pprint.pyc", line 199, in _format
File "pprint.pyc", line 82, in _sorted

TypeError: no ordering relation is defined for complex numbers

Насколько я понимаю, версия pprint из 2.7 пытается это множество упорядочить по возрастанию. Она вполне закономерно терпит неудачу: про два комплексных числа нельзя сказать, какое из них больше. Почему же она вообще пытается? Почему никто так долго не замечал, что этот подход приводит к проблемам? Потому что во втором пайтоне можно было упорядочивать хоть список из черта лысого и дьявола морского. Всякие 1 < "a" или {} < [] там не ошибки, а просто тихонько выдают бессмысленный результат. И даже 1j < '' < 2j там не ошибка. И только если напрямую сравнить комплексные числа (скажем, 1j < 2j) или на крайняк комплексное с обычным интом или флоутом, вот тогда это будет ошибкой.

И вот таких мелочей, которые тогда были, а сейчас исправлены, очень много.

@темы: root@глупыйпингвин:~#

09:27 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Видел вчера с моста лысуху. Чёрную и с белой блямбой на лбу. Только одну, и она молчала, не пыталась нырнуть и вообще ничего интересного не делала — но я вообще не знал, что они есть и в Гёттингене.

@темы: мамонты и кузнечики

12:47 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Мне очень нравится, как Благодать безудержно хохотает. А также как она ликовает и проявляет васторх, подпрыгивая и дробно плеща в ладоши. И как то и другое одновременно.

00:43 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
ОХРОНА ДВОРЦА — вот что написано на униформе человека, только что выгнавшего меня с вокзала.

@музыка: Ох, раааанооо

14:01 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
(в комментариях указывайте регион, особенно кто выбрал 3 и 4)

Вопрос: Как вы произносите?
1. сем, восем, пятнадцать, не тяни  6  (3.9%)
2. семь, восемь, питнадцать, ни тини  82  (53.25%)
3. сем, восем, питнадцать, ни тини  6  (3.9%)
4. семь, восемь, пятнадцать, не тяни  55  (35.71%)
5. как-то ещё  5  (3.25%)
Всего: 154

@темы: превед, языковед

19:35 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
Ругаемся в последние пару дней возгласами «ах ты сучья кедра!», «ах ты сучья дуба!» и «ах ты сучья бука!».

19:30 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
— Ложиться до полуночи — это Закон. Разве мы не жаворонки?

17:46 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
И о языковой ситуации в Минске.

Указатель в парке: пр-т Пераможцаў, а под ним — Pobediteley Avenue.

На вокзале объявляют по-белорусски про город Брэст и по-английски про город Брест с хорошим таким рь.

@темы: превед, языковед

04:52 

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

Тортик

@темы: зарисовки и рассказы

16:37 

Мегакрендель: заколебарь, жаболекарь, зомболекарь, лежебокарь
В третий раз закинул он невод — пришел невод с одною репкой. Выросла репка большая-пребольшая. Дед бил-бил, не разбил. Баба била-била, не разбила. Мышка бежала, хвостиком махнула и закричала толстым голосом:

— Корешочечки, черешочечки! Потушитеся, отваритеся! Ваша мать пришла — молока принесла!

Отвечает ей репка:

— Я корнеплод, корнеплод,
Я со дна поднят,
Из моря вынут,
В дом притащен,
От соли вымыт!
Меня дед бил-бил, не разбил,
Баба била-била, не разбила,
А ты, мышка, и подавно не разобьёшь!

Распорола мышке брюхо, и оттуда вышла брюква, а за ней и кольраби — обе целые и невредимые.

@темы: зарисовки и рассказы

Эх, разум, да ещё разум

главная