пятница, 8 июля 2011 г.

Funny results on programming languages performance stub test

I've just wrote a stub performance test for different programming languages and I've got fun results.

The stub summarizes all numbers from 1 to 100,000,000. The results below:

Test: C
Result (seconds): 0.29

Test: Java
Result (seconds): 0.20

Test: Perl
Result (seconds): 20.00

Test: PHP
Result (seconds): 8.06

Test: Python
Result (seconds): 27.29

Test: Ruby
Result (seconds): 83.67

Java faster than C. PHP faster than Python (why does Python have compiled files??). PHP hits Perl.
Ruby sucks as always.

Sources of the test are here

Pic unrelated

четверг, 7 июля 2011 г.

Вредная еда в США: Олестра

Заменитель жира Olestra, это такой жир, который не усваивается организмом, при этом обладает вкусом обычной жирной пищи. Поскольку организмом он не усваивается, на продуктах пишут что это Fat Free продукты. Обычно с ним делают всякие "легкие" чипсы. Предотвращает усваивание витаминов A, D, E, K и некоторые питательных веществ. До 2003 года об этом писали предупреждение на этикетках. Цитирую википедию:
"В 2003 году предупреждение было разрешено убрать, поскольку исследования показали, что потребители в курсе возможных последствий, а данное предупреждение многих вводит в заблужение. Вместо предупреждения было решено на этикетке при перечислении добавленных витаминов ставить звёздочку."
Олестра запрещена для изготовления пищи в Канаде и Европе, но разрешена в США.

вторник, 28 июня 2011 г.

Как выбрать дешевые авиабилеты?

У меня тут в связи с покупкой авиабилетов образовалась горстка опыта, которым я бы поделился с каждым интересующимся темой.

1. Лучшего способа найти дешевые билеты нет - ищите везде, используйте разные системы, разные фильтры.
В принципе все доступно на expedia, да и на других аналогичных сайтах думаю также, но они периодически "глючат" (возможно специально?) и не показывают дешевые билеты. Так что лучше пользоваться несколькими. Мой рецепт:
www.kayak.com, mmd.ru.momondo.com, www.anywayanyday.com - на этих сайтах удобно смотреть распределение цен по датам, найти дату с самыми дешевыми билетами;
expedia.com, orbitz.com - на них удобно заказывать, орбитзом давно пользовался и не помню, но у экспедии сейчас нет комиссии.

2. Выждите недельку и определитесь с ценами, каждый день проверяя их. Цены "скачут", следует поймать их минимум и заказывать. Чем ближе дата отлета, еще не значит, что дороже билет. Вчера я уже собирался покупать подорожавшие вдруг билеты НЙ-СФ за 220, но выждал и сегодня они были по 180 (и рейсы были удобнее, а не прилет ночью). Конечно, совет для тех кто ищет заранее, месяца за 3.

3. Пробейте скидки в авиакомпания. Бывает везет.
Мой чеклист:
http://www.ozon.travel/offers/
http://www.aeroflot.ru/cms/special_offers

4. Почитайте форумы, поспрашивайте друзей чего там нового для любителей дешевых билетов. Сфера динамично развивается, появляются новые проекты, которые могут быть полезными.

понедельник, 27 июня 2011 г.

Самолет из Москвы в Нью-Йорк: про идиотизм

Обнаружил забавную вещь. Рейсы из Москвы в Нью-Йорк стоят дешевле с пересадкой в Киеве. При этом, этот же рейс Киев-Нью-Йорк стоит уже дороже, и из Киева лететь дешевле Киев-Москва-Нью-Йорк.

Таким образом из Москвы дешевле лететь через Киев, а из Киева через Москву.
Какая логистика, какая теория графов? Маркетинг rules. Если у тебя дети, то ты и в два раза больше заплатишь, чтобы не таскаться с пересадками.
Или я не прав и что-то не понимаю?

Доказательства ниже.




вторник, 17 мая 2011 г.

How do I disable caching in python gettext and django gettext?

For disabling cache in python-gettext module you are to edit gettext module.

Execute the command below to get known where you're python-gettext module is:
$ python -c "import gettext; print gettext.__file__"
/usr/lib/python2.6/gettext.py


Then open that file and find lines in translation() function:
for mofile in mofiles:
    key = os.path.abspath(mofile)
    t = _translations.get(key)
    if t is None:
        t = _translations.setdefault(key, class_(open(mofile, 'rb')))


Replace it with:
for mofile in mofiles:
    key = os.path.abspath(mofile)
    t = _translations.get(key)
    t = None # new line
    if t is None:
        t = _translations.setdefault(key, class_(open(mofile, 'rb')))


It will simply disable gettext's cache for your debugging purposes. I wouldn't recomend this patch to use in production.

However if you use django framework it won't solve your caching problems. I wonder to know why but django uses its own gettext caching layer. To disable it simply replace in file utils/translation/trans_real.py:
def translation(language):
    """
    Returns a translation object.

    This translation object will be constructed out of multiple GNUTranslations
    objects by merging their catalogs. It will construct a object for the
    requested language and add a fallback to the default language, if it's
    different from the requested language.
    """
    global _translations

    t = _translations.get(language, None)
    if t is not None:
        return t


with:
def translation(language):
    """
    Returns a translation object.

    This translation object will be constructed out of multiple GNUTranslations
    objects by merging their catalogs. It will construct a object for the
    requested language and add a fallback to the default language, if it's
    different from the requested language.
    """
    global _translations

    t = _translations.get(language, None)
    t = None # new line
    if t is not None:
        return t

Patches available here: for gettext.py and for trans_real.py

вторник, 5 апреля 2011 г.

Feed for English Cafe only (from ESLPod.com)

Below is an RSS feed that contains only "English Cafe" episodes from www.eslpod.com podcast for english learning.
Original ESLPod feed has two types of episodes, regular ones and "English cafe". If you prefer to listen only the last ones then the feed below is for you.

Drop it to your iTunes and enjoy!

http://pipes.yahoo.com/pipes/pipe.run?_id=7909dfadbf01c54a83746ebe97ea6189&_render=rss

понедельник, 24 января 2011 г.

Эволюция компьютерной графики

Эволюция компьютерной графики.
1970-ые: координаты начинаются с левого верхнего угла. plot(x,y) - машина нарисует точку;
1980-ые: перемножим эти две матрицы, чтобы понять, какую линию не видно;
1990-ые: задаем координаты полигона, фиксируем камеру - вуаля - машина просчитала даже освещение;
2000-ые: пусть эта тачка весит тонну, а этот чувак 80 кг, а сейчас комп покажет как эта тачка собъет нахрен этого чувака;
2010-ые: HTML 5 новинка canvas позволяет рисовать прямо в браузере!