Home

Блог Ивана Комарова

Июл. 9, 2009

21:36 - Гонка за ревизиями

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

Собственно, две основные причины, которые меня останавливают от перехода с SVN на какую-нибудь DVCS:

1. Отсутствие аналога связки TortoiseSVN + VisualSVN.
2. За SHA1-хешами гоняться скучно. ;)

Июн. 28, 2009

18:53 - ICFPC-2009

Заканчиваю своё участие в нём. Задачки чисто физико-математические (управление спутником в двухмерном космосе), и толку от меня никакого (сегодня полдня провёл, пытаясь нарисовать эллиптическую орбиту по положению и скорости, и так и не нарисовал). Обидно.

Июн. 27, 2009

02:30

Определённо, флэшмоб про «выберите 30 случайных песен в своём плеере, выпишите первые строчки каждой из них, попросите френдов угадать названия» проектировал не программист. Слишком много неявных допущений. Что мне, например, делать, если среди 30 случайных треков не нашлось ни одного со словами? ;)

Июн. 24, 2009

23:56 - omegle.com

Попробовал. Результат — 12 мудаков, одна офигенная 18-летняя девушка по имени Lou из Англии и циркач-итальянец. Тезис про 95%, кажется, подтверждается на практике.

08:58

Закомментированная часть моего сегодняшнего решения по Div 1 300 наглядно даёт понять, как я отчаялся добиться правильного ответа на последнем семпле. :) К счастью, в конце концов решение прошло.

Июн. 20, 2009

22:45

Скоро выходят третьи издания двух потрясающих книжек:

1. Introduction to Algorithms (aka CLRS). Самый лучший и понятный учебник по алгоритмам. В каком-то смысле библия «олимпиадных программистов». :)

2. CLR via C#. Самая лучшая книга по .NET. Многопоточность, сборка мусора, CLR internals, JIT-компиляция и другие вкусные вещи в изложении известного лётчика.

Как обычно, в обоих случаях намечаются не просто косметические изменения, а весьма серьёзные добавления и исправления. Будет круто. :)

Июн. 19, 2009

18:24 - Purchase VisualSVN now!



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

Кажется, я где-то слышал про то, что авторы VisualSVN — русские, но гугл вообще никакой информации о них не находит. Шифруются?

Июн. 16, 2009

23:24

Решил устроить себе локальную Bike-To-Work Week, при этом ездить, как предписывают ПДД в отсутствие велосипедных дорожек, по крайней правой полосе проезжей части по возможности правее. В выходные немного потренировался, купил себе КАСКО, велоперчатки, новый насос и в понедельник выдвинулся в адрес Ульяновская, 13а от своего дома через проспект Космонавтов.

В общем, ездить, не нарушая ПДД, довольно страшно. Как оказалось, ехать на большой скорости в довольно плотном потоке машин более или менее безопасно — в правой полосе обычно достаточно места, чтобы никому не мешать, и передвигаться можно равномерно и прямолинейно. Проблемы начинаются при объезде припаркованных машин и на перекрёстках. С первым всё понятно — нужно внимательно следить, чтобы шустрый водитель не решил внезапно выйти погулять или тронуться с места; при этом нельзя резко сворачивать влево, дабы не подставиться под чьи-то колеса. Со вторым сложнее. Есть много случаев, когда водитель обязан пропустить велосипедиста (например, при повороте налево со встречной полосы), но полагаться на это, судя по всему, крайне опасно. Есть мудаки, которые не знают правил, но чаще всего велосипедиста тупо не замечают. Либо по невнимательности, либо из-за ограниченного угла обзора — конечный результат всегда один, очень плачевный для догадайтесь кого. Особенно незабываемые ощущения получаются, когда тебе надо ехать прямо, в то время как машина рядом с тобой хочет повернуть направо. Теперь я в таких ситуациях нагло сдвигаюсь чуть влево и вклиниваюсь в основной поток, чтобы не оказаться справа от подобной машины и чтобы ни у кого не возникло иллюзии, что я хочу повернуть направо. Да, нарушаю, но так получается безопаснее.

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

P.S. Сегодня купил ещё один мегадевайс — зеркало заднего вида. Теперь я в полной боеготовности. :)

23:02 - Супермегаохуенный трек — 2

The Kingdom Of Music сдал пост, который незамедлительно принял трек Vibe Tribe — Zimba.

Июн. 15, 2009

00:44

Базовый метод или метод базового класса является внутренним вызовом, PInvoke или определен в классе импорта COM.


Вот такое исключение (TypeLoadException) бросает CLR при попытке загрузить запустить программу, использующую P/Invoke. Вопрос на сообразительность: что такое «базовый метод или метод базового класса»? Локализаторам сообщений об ошибках за такой перевод, конечно, надо вставить паяльник известно куда и провернуть несколько раз.

Июн. 11, 2009

19:21 - Дела настольные — фотоотчёт

Под катом — фотографии с чемпионата по настольному теннису.

Много картинок )

03:10 - Лытдыбр

Сходил сегодня в паб на матч Финляндия — Россия. Офигенно понравилось. Красивая игра, вкусная еда, правильный счёт и огромное количество свистящих, бибикающих, размахивающих флагами, радующихся жизни людей после матча на улицах (я несколько удивился даже — всё-таки это был не финал, а одна из отборочных игр). Раздражающий момент был только один: при каждой острой атаке на ворота Финляндии соседний столик разражался истерическим визгом «ГО-О-О-О-О-Л!!!!!111». Если судить по этим воплям, матч мы выиграли со счётом где-то 17:0. :)

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

Июн. 10, 2009

02:27 - [info]sharpc посвящается

Добротная статья про перевод футурамы. У автора местами тоже не очень хорошо с русским языком, но в целом злополучный перевод разобран очень и очень качественно. Всем смотревшим мегамультик по РЕН-ТВ — пламенный привет.

Июн. 7, 2009

19:51 - The Gimli Glider

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

UPD: статьи по теме: раз, два. Там ещё интереснее.

Июн. 6, 2009

01:31 - Book review

Книгу Linux Kernel Development за авторством Роберта Лава я купил довольно давно и несколько раз порывался прочитать, но как-то не шло. Теперь я понимаю, что это было просто из-за недостатка базовых знаний. Книжка — атомная.

Много букв )

Июн. 5, 2009

21:11 - Стадное чувство

Мои результаты ЕГЭ
Математика5
Русский язык5
Физика4
Химия2
География3
Биология2
История5
Обществознание2
Мои результаты ЕГЭ


Пока что это худший результат по моей френдленте. Да, я неуч. ;)

Июн. 4, 2009

19:40 - Powerball

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

Зачитать обзор )

Всем брать по две, короче. Я себе уже заказал. :)

Июн. 1, 2009

23:09

К вопросу об оффлайн-джаббер-сообщениях.



Пиджин впервые показал ошибку при попытке доставить сообщение собеседнику не в сети. Попытки воспроизвести эффект результатов не дали. Интересно, что это было?

20:42 - Дела настольные

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

Изначально в турнире было 32 человека. Из группы я вышел без особых проблем, не проиграв ни одной партии и заняв первое место. Дальше уже пошла серьёзная битва между оставшимися 16 игроками по системе, напоминающей double elimination — с тем лишь отличием, что единожды оступившийся теннисист может рассчитывать максимум на 3-е место.

Играли мы в два захода. Сначала (пару недель назад) определились 8 лучших. У меня были реальные шансы в эту восьмёрку не попасть; первую партию я выиграл 3:1, но во второй меня в упорной борьбе победили 3:2 (что самое грустное, в процессе я вёл 2:1). Я опустился в нижнюю половину и мог бы выбыть вообще, но, к счастью, собрался и одолел соперника со счётом 3:1.

Сегодня были сыграны решающие матчи. Чтобы выйти на 3-е место, мне нужно было победить в трёх партиях. Первую я выиграл 3:0, а на вторую мой партнёр не явился; ему записали техническое поражение (он опоздал и явился только когда я уже сыграл всё; сразился с моим обидчиком и победил его, получив неплохое 5-е место). Я автоматически вышел в матч за 3-е место.

Игра получилась совершенно нереальной, после неё меня можно было выжимать, как губку. Начал я с того, что незамедлительно проиграл первые две партии (одну на больше/меньше, другую 11:6, кажется). Это очень сильно укрепило мой боевой дух и дало мне чувство морального превосходства над соперником. Не знаю как, но после этого я нашёл в себе силы собраться и вытащить одну за другой три партии подряд. Если я ничего не напутал, в них было несколько матч-поинтов — не в мою пользу, естественно. После финальной зарубки на больше/меньше я несколько секунд не мог поверить в то, что произошло. :)

Теперь у меня есть диплом, ноутбучная микромышка в оранжевом меховом мешочке и подарочная карточка магазина «Спортмастер» (карточки давали только первым трём местам). Приятно. :)

Май. 24, 2009

04:16 - Haskell + DP

Написали сегодня с [info]mrybak KRSU Open Contest 2009. В правилах у них написано, что «The contests are held in open form, i.e. any individual or a team can take part», но в профиле почему-то дают указать только имя и фамилию, причём и то, и другое требуют указывать исключительно в виде [a-zA-Z0-9]+. Так что на первом месте с 6 задачами из 6 гордо расположился товарищ с психоделическим ФИО — рыбак комаров. :)

Мне давно было интересно, как работает динамическое программирование на Haskell'е. Было абсолютно непонятно, как можно на языке без побочных эффектов эффективно осуществлять мемоизацию. Какое же уважающее себя ДП обходится без мемоизации? А KRSU — это, по-моему, единственный Online Judge (не считая, конечно, SPOJ), на котором можно сдавать задачки на хаскелле, так что на дорешивании как раз подвернулся отличный шанс разобраться. В качестве подопытного кролика была выбрана задача F. Придумав несложную динамику, я полез в статью на HaskellWiki…

…через два часа вдумичивого чтения, написания кода, ошибок компиляции, ошибок выполнения и отладки «на глаз» задача была сдана. Исходник получился небольшой, а с мемоизацией всё оказалось довольно просто — достаточно запихнуть все вычисляемые значения в ленивый массив, и тогда каждое из них будет вычисляться ровно один раз. С первого взгляда совершенно неочевидно, почему это так. Окончательно разобраться в вопросе помогли две хорошие статьи: Dynamic programming in Haskell и Monadic Memoization Mixins. Если что, не повторяйте моих ошибок, не пытайтесь разобраться в чём бы то ни было по постам в рассылке #haskell-cafe — это решительно невозможно.

В процессе меня подстерегали ещё два сюрприза: хороший и плохой. Хороший — под Windows неожиданно нашлась суперкрутая IDE для хаскелля, называется Vim x64 + haskell-mode. Умеет показывать тип выражения под курсором, лезть в документацию, автодополнять идентификаторы, переходить к нужной функции и всякое такое. Плохой — моё наивное убеждение в том, что если программа на хаскелле скомпилировалась, то, скорее всего, она сразу же заработает правильно, наткнулось на суровую реальность, в которой это совсем не так. Последним гвоздём в крышке гроба стала тупая опечатка, которую GHC со всей своей статической типизацией отловить был бессилен, и которую я не мог отловить добрых минут пятнадцать.

Navigate: (Previous 20 Entries)