|
|
Life is joy, magic and adventure

| Jan. 1st, 2020 12:00 am Для спама Комментарии к этой записи я не читаю никогда, они скринятся и приходят без уведомлений. Leave a comment | |

| May. 31st, 2012 11:19 pm Интроверты Нас, интровертов, конечно, обосрали, нарисовав в этих уродских пурпурных шарах. Но всё-таки искусство. Надо запостить:
 5 comments - Leave a comment | |


| May. 29th, 2012 12:43 am Распознавание инсульта. Мне понравилась сама идея - тестировать близких людей на адекватность. Типа, улыбнись, скажи предложение, высунь язык :) Так что перепощиваю.
Originally posted by galka_vasina at Поделитесь со всеми ! Это ОЧЕНЬ ВАЖНО ЗНАТЬ КАЖДОМУ! Оригинал взят у bagira_rrв Поделитесь со всеми ! Это ОЧЕНЬ ВАЖНО ЗНАТЬ КАЖДОМУ! Во время пикника девушка споткнулась и упала. Ей предложили вызвать скорую помощь, но она заверила всех, что всё в порядке и что она споткнулась о камень всего лишь из-за новых туфель. Так как она выглядела немного бледной и дрожащей, ей помогли отряхнуться и принесли ей тарелку с едой. Остаток дня Инга провела весело и непринуждённо. Позже супруг той девушки позвонил всем и сообщил, что его жену увезли в больницу. В 23:00 она скончалась. На пикнике с ней случился инсульт (острое нарушение мозгового кровообращения – перев.). Если бы её друзья знали, как выглядят признаки инсульта, она могла бы сегодня жить.
Некоторые люди умирают не сразу. Часто они оказываются в ситуации, в которой им длительное время ещё можно помочь. У вас займёт всего одну минуту прочесть следующее ...Нейрохирурги говорят, что если они в течении 3 часов успевают к жертве инсульта, то последствия приступа могут быть устранены. Трюк состоит в том, чтобы распознать и диагностицировать инсульт и приступить к лечению в первые 3 часа – что, конечно, не просто. Распознай инсульт: Существуют 4 шага к распознанию инсульта.
- попроси человека улыбнуться (он не сможет этого сделать) - попроси сказать простое предложение (напр. «Сегодня хорошая погода») - попроси поднять обе руки (не сможет или только частично сможет поднять) - попроси высунуть язык (если язык искривлён, повёрнут – это тоже признак)
Если проблемы возникнут даже с одним из этих заданий – звони в неотложку и описывай симптомы по телефону.
Один кардиолог сказал, что, разослав это сообщение как минимум 10 адресатам, можно быть уверенным, что чья-нибудь жизнь – может быть и наша – будет спасена. Мы шлём каждый день столько «мусора» по свету, что может стоит разок пустить по проводам действительно что-то полезное и нужное. Leave a comment | |

| May. 29th, 2012 12:34 am Юзерпиковое - 2 Follow-up к посту: http://morfizm.livejournal.com/689315.html
Поздравляю всех с розыгрышем! :) Там был такой волшебный тэг <lj-userpic remote="remote">, генерирующий каждому читателю его юзерпик.
Например, вот этот - вполне неплох:
 ;)
Я сначала думал сделать в позитивном ключе, скажем, похвалить отдельно выбранный юзерпик за уточнённый дизайн, но потом подумал, что разочарование в отрицательную сторону оставит менее приятный осадок, чем если двигаться от негатива к позитиву :) 5 comments - Leave a comment | |

| May. 28th, 2012 02:28 am Приоритеты Интенсивность жизни можно измерять количеством уровней приоритетов.
Когда у меня всё нормально, у меня в Outlook'е есть категория "for follow-up" (чаще всего письма за последние пару недель, которые нужно разобрать, зафайлить, ответить или что-то по ним сделать), категория "postponed/sorting" (отложенное надолго, но там много "вкусного", на что я пишу ответ под настроение, иногда спустя годы), и категория "waiting for" - это дела, за которыми надо следить, но я сделать ничего не могу (половина из писем этой категории это ожидание онлайн покупок). Соответственно, для каждой категории у меня search folder.
Когда у меня жизнь насыщена, создаётся "for follow-up pri 2", чтобы отделить первоочередное от того, что может подождать.
Сейчас у меня как в личном аутлуке, так и в рабочем, гордо красуются все 4 приоритета (pri 0, pri 1, pri 2 и pri3). Привет трудоголикам =) Всё под контролем. А будет ещё сложнее - создам pri 4 =) (Но это временно, разумеется. Как немного рассосётся, удалю лишние приоритеты). 3 comments - Leave a comment | |

| May. 28th, 2012 01:58 am Астрономическое Народ, у нас тут грядёт ещё один масштабный астрономический event, так что не выбрасывайте пока солнечные фильтры, которые вы приобрели для того, чтобы смотреть недавнее затмение.
Transit of Venus (следующий будет через 100+ лет) http://en.wikipedia.org/wiki/Transit_of_Venus,_2012
А ближайший будет во вторник на следующей неделе (June 5). Вот здесь указано время для San Francisco: http://www.astrosociety.org/education/publications/tnl/78/78.html Leave a comment | |

| May. 28th, 2012 01:11 am Если бы кошки были шрифтами Originally posted by a_poli at Если бы кошки были шрифтами Все популярные шрифты уникальны в своём дизайне, но какой предпочитаете именно вы — беззаботный Comic Sans или строгий Helvetica? Часто используемые человеком шрифты, являются отражением его характера. А что если бы шрифты были кошками? Именно на такой забавный вопрос и решили ответить иллюстраторы с популярного сайта icanhascheezburger.com. ( + + + фото + + + )
3 comments - Leave a comment | |

| May. 28th, 2012 12:27 am Отлично! http://www.guardian.co.uk/world/2012/may/25/spain-doctor-failed-abortion
Короче, врач не сделал аборт, но соврал, что сделал. Тётка пошла судиться, отсудила $190K моральный ущерб плюс child support: $1260/мес в течение 25 лет. По-моему, круто! :) 2 comments - Leave a comment | |

| May. 25th, 2012 01:28 am Юзерпиковое Я когда-то обдумывал, не написать ли фичу, вроде локального прокси-сервера для юзерпиков, чтобы на каждый чей-то юзерпик я мог установить показывать какой-то другой, который выбрал я. Вот скажем, вот этот уже давно хочется override'нуть:
 38 comments - Leave a comment | |

| May. 24th, 2012 01:16 pm Papering Over the Problem ROFL :)
Originally posted by at Papering Over the Problem http://thedailywtf.com/Articles/Papering-Over-the-Problem.aspx There are certain baselines that telecom companies care about. If, for example, your company is responsible for a set of network devices at the local airport, detecting and correcting failures quickly was very important.
Miguel was the IT support for the team ulitmately accountable for those devices. His first major project for them sounded fairly simple: when an alert condition occurs, generate a printed report. He was given a generous budget and told to do whatever it took for delivery.
It wasn't the biggest problem he'd ever had stacked in front of him. The supervision system that actually did the monitory and raised alerts was designed to be easy to tap into. Once he understood the system, generating a series of printed reports was little more than a step-and-repeat process. It was easy, and he had a lot of time and budget left over. So Miguel did what most people do in those situations: he slacked off for a bit and splurged on hardware. They wanted a dedicated printer for these reports, so he bought them the newest, niftiest laser printer he could find. Its main selling points were speed and a long MTBF.
The work was done, even with his splurging, he was still on time and under budget, so Miguel grabbed the boss and setup a demo. Miguel rubbed off a fake alert, and a moment later the printer spit out a nice report announcing the error. Miguel smiled at his boss and started to explain how reliable the printer was, but his boss cut that thread short like a guillotine.
"This is completely useless," the boss said as he started to ream Miguel. "This isn't what I wanted at all!"
Miguel felt like a sucker; had he misunderstood the requirements so badly? "Detect alerts and print a report," wasn't the most complex thing, ever. "I'm not sure what the problem is?" Miguel asked.
The boss took a deep breath and tried to draw down. "The printer doesn't make any noise."
"And that's bad?"
"Of course it's bad! How are the technicians going to know to log into the superviser program and check the alerts if they can't hear the printer?" The boss sighed. "Well, this was your first project. We all make mistakes. I'll help you cover it, this time. There's an old dot-matrix printer in the supply closet. You're off-square now, but use that instead and everything will be square."


 2 comments - Leave a comment | |

| May. 23rd, 2012 09:31 pm Moving to another country Originally posted by die_monster at post have any of you moved, permanently, to another country? for marriage, especially? any real-talk advice or suggestions? if not, would you ever consider it?
Sounds like I am gonna write a longer comment to reply to this, why not making it a post.
I did move permanently to another country twice (first time when I was a child, wasn't really my choice). The other time was for work.
Moving to another country is a lot of stress.
We often think of ourselves as self-contained individuals, like... if you move yourself to another planet, you may be lonely and maybe you won't gain new skills, but you'll be *yourself*, and you'll preserve all the skills, knowledge, values, and so on, because they're in you. You'll live happily (with a reservation of extra loneliness) given you have everything you need, food, entertainment - maybe books, etc.
Moving to another country will make you understand that human being have a lot of their identity in their environment. Tools they use, habits they have, their friends, their job and their workplace, town they live in, and so on. Change all of it, and suddenly you're only 30% of what you were before. It's a tremendous feeling of loss. Also, big part of your knowledge is suddenly not applicable, obsolete - it's like you never knew it. It takes years to rebuild missing parts of identity, "find yourself" again in the new environment.
Back to more down-to-earth analysis. Drawbacks: ============= 1. Huge stress caused by identity crisis. Feeling lost and disoriented. Time and effort (energy) to recover. Probably some 2-5 years (I think was 4 years for me). It slowly goes downhill, then reaches its peak, and then goes uphill relatively quickly. 2. Often delay in career. For some people significant downshift. Your mileage may vary, but it may last anywhere from 1 year to 6 years (on the longer side if you need to learn language and get a new higher education). 3. Extra stress caused to adjusting to new environment, learning new household tricks, finding out all essentials. Just legal paperwork (driving license, credit history, bank accounts) can easily add several hours a week to the entire first year. Think of moving from one state to another, but multiply by 2 (only for p.3, but for p.1 you may multiply by 10...)
Benefits: ============= 1. After several years, when you recover, you gain deeper insights about all aspects of life and multi-cultural perspective, that can be advantageous both in relationships and in further career. 2. An opportunity to rethink yourself, your values, your direction in life, create better habits. If life was in stagnation before the move, then the move can be a significant boost of new perspectives. 3. Wider network. If you maintain connections with old friends and make new ones, here you go. Net benefit. 4. New language. Langauges develop brain in various ways. Extra points if you preserve your old languages (keep them afloat by speaking with your old friends, writing, etc). 5. First year, especially first 3-6 months, everything is new. Brain is actively processing a lot of information. You start seeing things that you didn't see before, because you were so accustomed to them. Talking about purely visual aspect. Like... trees. You see the same tree every day, and the brain learns to totally ignore it. You see just a tiny bit of it, and the rest of the picture comes from memory. After the move, everything is new: you see it all. This can give boost of energy, and may help to cope with drawbacks.
So... Depending on your health, on your luck, on your goals in life, on how different the other country is, this may end up being positive or negative. I know people whose life was totally ruined after permament move (they moved after 40 y.o. and it was their first serious move, out of necessity), I know more people whose life became better but over time. I think age is also important: the older you move, the harder it is, and with years until you see benefits, you may lose necessary health to be able to enjoy them.
Moving for marriage? It depends, but I guess, on average, it's bad idea, unless you already lived together, and/or you have other reasons to move and marriage is only one of them.
The worst case I can imagine is put all negative factors together: 1. You're 30+. 2. You never moved to another country, and you only know one language. 3. You have very specific career, that doesn't exist in another country - you'll need to get education again. 4. You never lived with the person you're marrying. 5. You're going to move as dependant. 6. (If you're a woman) he wants family and children (so you'll get all the stress plus a housewife's fate for years, until you get a chance to get a new education and job). 7. He isn't rich, so you won't be able to see your old friends and family often (travel is expensive). 8. A new country is significantly different in culture from the country you're moving from. 9. The climate is different (consider new illnesses, allergies etc).
Now everything will change: friends, family/person you live with, job, place/environment and language, and some aggravating factors on top of this (age, lack of experience learning new language, etc) - that's maximum risk.
If you can minimize numer of things you're changing, it can all go smoother.
RE "mail-order" brides (you date a girl from another country and bring her in to marry): I've heard plenty of real life stories of fail, and very few success sories. Too much change is risky for both sides, and dependants are expensive for the inviting side.4 comments - Leave a comment | |

| May. 21st, 2012 09:49 am Old-Timers Originally posted by at Old-Timers 1 comment - Leave a comment | |

| May. 18th, 2012 06:56 pm Малосольный лосось Берёшь лосось, и мало солишь. Получается малосольный лосось. Солишь нормально - будет просто солёный.
Меня всегда поражало, почему простейшая, казалось бы, вещь - взять разрезанную сырую рыбу, добавить в неё соль, и оставить на некоторое время - считается достаточной причиной поднимать, как минимум, вдвое цену за кг.(lb). Соль это очень дешёвый продукт. Исполнение тривиально.
Ещё - всегда не было понятно, почему солёную рыбу называют копчёной, или зачем солёную копят, когда для получения желаемого результата достаточно просто посолить.
Раньше я думал, что это по незнанию. Может, люди думают, что вкусная солёная рыбка обязательно делается где-то на заводе, с кучей ингредиентов, ритуалов и технологических процессов, закатывается в дубовые бочки и выдерживается 20 лет как хороший коньяк... ну, судя по цене, именно это и должно происходить.
Сейчас я, из любопытства, погуглил, и увидел настоящую причину стоимости солёной рыбы. Куда ни глянь, дотошные рецепты - как "нарубить", куда положить соль, сахар (надо же!), какие-то специи, травку нарезать, оставить при комнатной температуре, нет, не оставлять при комнатной температуре, а вот самым настоящим способом делают у нас на Камчатке, вы все не умеете, рыба должна быть не мороженная, нет, свежая, нет, живая, нет, песни петь. Чем-то мне это напоминает код на Java, ей богу.
Настоящая причина дороговизны и сложности солёной рыбы в том, что люди страдают от скуки и безделья, у них просто слишком много времени на готовку и на придумывание сложных рецептов.
Короче, даю ленивый программерский рецепт. 36 секунд (!) работы и сутки ожидания.
1. Берётся кусок лосося (прямо так, как он продаётся в магазине). 2. Отрезается кусок, влезающий на небольшое блюдце (10 секунд). Шкурой вниз, (оголённым) пузом к верху. 3. Сверху сыпем соль (10 секунд). Для первого раза - одну-две столовых ложки, равномерно рассыпанные по поверхности этого небольшого куска. В следующий раз - по вкусу. 4. Открываем холодильник (3 секунды). 5. Кладём блюдце в холодильник (10 секунд). 6. Закрываем холодильник (3 секунды). 7. Через сутки достаём и режем на бутерброды.
Сюда же, чтобы два раза не вставать, диетическая рыба на ужин. 40 секунд работы и 7 минут ожидания.
1. Берётся кусок рыбы из морозильника. Кладётся на блюдце и в микроволновку на 2 минуты на high (10 секунд). Этого времени достаточно, чтобы разморозить, но не достаточно, чтобы приготовить. 2. Достаём блюдце, сливаем воду (5 секунд), достаём специи и посыпаем рыбу специями (10 секунд), кладём обратно в микроволновку на 5 минут (10 секунд). 3. Достаём и сразу перекладываем в другое блюдце, потому что первое горячее (5 секунд). Из этого другого блюдца уже можно есть.
Примечание 1: если вы захотите сэкономить 10 секунд, и сразу ставить на 7 минут, минуя п.1., то специи "съедут" (стекут?) с рыбы, вместе с водой после разморозки. Примечание 2: специи можно брать любые, ваши любимые,.. я использую какой-то микс "для стейка", в котором есть соль, перец, и ещё что-то. Главное условие: баночка со специями должна быть одна. Каждая дополнительная баночка прибавляет 10 секунд работы, и снижает ROI процесса.
Рыба будет по вкусу где-то между варёной и жареной, но приготовленная без капли масла, что отлично для здоровья. 20 comments - Leave a comment | |

| May. 18th, 2012 06:21 pm Нравятся Originally posted by birdwatcher at Нравятся Фотографии Марса, которые американское правительство сорок лет скрывает от своего народа. http://www.3dnews.ru/offsyanka/620405(рекомендовал glocka) 3 comments - Leave a comment | |

| May. 17th, 2012 04:06 pm Пароли Хочешь как лучше, а получается ... Я начал использовать генератор паролей в RoboForm, ну и выставил на 16 символов, микс из lower & upper case + digits.
Из 4 сайтов, накоторых я недавно регистрировался, 3 (!) не смогли меня залогинить после регистрации. На первых двух после нажатия "восстнаовить пароль", мне на e-mail пришли первые 15 символов моего пароля. На третьем (сайт моей медицинской страховки) я, уже наученный опытом, попробовал сами ввести первые 15 букв. Они не прошли, и сайт оказался locked out. Мне пришлось звонить в customer support, чтобы сняли лок. Там мне поменяли пароль, и я, не вешая трубуку, сделал себе новый и проверил его. Я спросил оператора, какие есть ограничения на длину или содержания пароля. Она сказала, что точно не знает, но она бы на моём месте ничего длиннее 9-10 символов не пробовала бы. 5 comments - Leave a comment | |

| May. 15th, 2012 11:45 am Ценность идеи Ломаем стереотипы: идеи сами по себе ничего не стоят. По-моему, многие этого не понимают всё ещё.
Originally posted by idealmachine at Ценность идеи Часто в среде стартапов обсуждают ценность идей. Задают вопросы, можно ли заниматься продажей идей, или что делать, если украдут идею.
Приведу несколько свежих примеров. Один человек спросил, сколько стоит идея. Можно ли их продавать в России? Вероятно, что самостоятельно реализовывать идеи дело не самое простое. Тем более, чтобы получить инвестиции стоит постараться написать убедительный бизнес-план. А для этого нужен опыт, консультации специалистов. Но зато, в итоге может получиться успешный проект. И он сможет окупить все затраты, понесенные на первом этапе. Если инвестиции не получены - то все равно опыт приобретается хороший. А комментарии экспертов будут полезным багажом.
Производить идеи ничего не стоит. Значит и рыночная стоимость у них весьма невысока.
Другой человек за пару часов рассказал в подробностях несколько идей для мобильных приложений. Часть из них уже написана, но не запущена, часть разрабатывается. Но при этом автор совершенно спокойно относится к тому, что рассказывает о своих идеях, не боясь, что кто-то с его идеей выйдет на рынок. Относится он к обозначенной проблеме философски - все в мире меняется и улучшается. Победил не тот, кто стал первым, а тот, кто стал более эффективным и интересным. Даже Skype (который ввел плату на некоторые услуги) в ближайшее время кто-то сможет обойти, предоставив более дешевый и альтернативный сервис.
А в конце о том, что исключительных и революционных идей очень мало. Каждый день к нам в стартап-акселератор iDealMachine поступают заявки от потенциальных резидентов, в которых они презентуют свои идеи (так как бизнес план мы не требуем). Один был назван "идееметателем". Около 10 его проектов, либо клоны, либо построенных по схожим схемам с существующими на рынке. Ничего необычного, разве что где-то область новая, где-то аудитория. Немного изменил идею - и вот новый проект. Стоит ли считать его идеи исключительно новыми? Имеют ли они рыночную ценность? Определенно имеют, если они будут реализованы, станут интересны аудитории и принесут прибыль.
10 comments - Leave a comment | |

| May. 14th, 2012 09:01 pm Google AdSense Я тут играюсь с Google AdSense - это возможность зарабатывать на рекламе (как через ютуб и на других сайтах). Мне ещё все не заапрувили, но когда заапрувят, на видеороликах может появляться реклама. Я настроил, чтобы не было рекламы, которая в начале ролика на весь экран, т.к. это тотальное зло IMHO. Ещё, кстати, LiveJournal позволяет использовать AdSense, но я его буду использовать только если во friends-only реклама не видна, иначе разнесу журнал на публичный и friends-only отдельно.
Короче, теперь главная мысль. Где бы ни была видна моя реклама, на неё *ни в коем случае нельзя кликать*, если вы есть у меня во френдах. Даже вы хотите на неё кликнуть, потому что реклама интересна, а не чтобы мне "помочь" - всё равно, пожалуйста, не кликайте. Потому что Гугл знает IP-шники и печеньки моих друзей (через Google+, и другими способами), и сочтёт это нарушением правил, за это мне могут отключить AdSense, и я потеряю много интересных возможностей по пассивному заработку.
Poll #1840353
Open to: All, detailed results viewable to: All, participants: 16
Подтверждение:
View Answers
| Дима, мне всё понятно, постараюсь ни в коем случае не кликать на твою рекламу. |
  16 (100.0%) |
13 comments - Leave a comment | |

| May. 12th, 2012 10:47 am Igudesman and Joo Для друзей из Чикаго. Я не буду показывать пальцем ;) Но знаю, по крайней мере, двоих.
http://cso.org/TicketsAndEvents/EventDetails.aspx?eid=4358
Это музыкальное (по классической музыке!) развлекательное шоу, я ходил на них когда они приезжали в Silicon Valley. Шоу состоит из кучи миниатюр, идущих подряд. Одна из них, довольно известная (я удивлюсь, если они её не включат в программу, хоть они обычно и немного варьируют набор) - Rachmaninov Had Big Hands:
3 comments - Leave a comment | |


| May. 7th, 2012 01:04 am Йога У меня был, наверное, первый более-менее положительный экспериенс занятия йогой в группе. Вот здесь: http://oldmoonyoga.com/schedule.html (Vinyasa flow yoga).
Надо будет попробовать ещё. 4 comments - Leave a comment | |

| May. 5th, 2012 09:22 pm Это мелодия из фильма "Крёстный отец". Очередное вещичко.
P.S. Вы там это, если нравится, ставьте лайк, а если не нравится, то дислайк. А то у меня весь фидбек идёт от совершенно случайных посетителей, при том, что основной трафик просмотров идёт из ЖЖ. 2 comments - Leave a comment | |

| May. 5th, 2012 04:29 pm Рабочее Сразу несколько интересных ресурсов, по ссылкам из кружочков:
1. Почему bell curve это плохо в качестве модели поощрения работников интеллектуального труда: http://www.kraynov.com/2012/05/05/people-work/
2. "Картошка и инновации", или в чём слабость российского бизнеса: http://lionet.livejournal.com/109793.html
В качестве основных поднимаются две темы - бюрократия и неэффективность инфраструктуры, как следствие - куча времени плюс обсуждений на каждый бытовой чих, второе - где-то глубоко в культуре непонимание приоритетов (картошка даче и в ущерб работе, два дня на которой может оплатить весь годовой урожай этой несчастной картошки).
Маленький related post: http://sinhas-chandr.livejournal.com/41916.html
Ещё один related post на английском - те же мысли, но с уклоном во взгляд западного инвестора: http://www.businessweek.com/globalbiz/content/may2009/gb2009058_530398.htm 17 comments - Leave a comment | |


| May. 3rd, 2012 09:58 pm ClosedCircles - онлайн чат Раз уж Семён написал публично, кросспостну. ClosedCircles - это очень любопытный проект. В нём можно общаться по темам, но в кругу своих друзей. Т.е. в отличие от IRC, не будет навязчивого оффтопика от полных незнакомцев.
Проект может выглядеть сыроватым для полутора лет девелопмента в группе, но это лишь поверхностное впечатление. Куча работы была вложена в те маленькие детали функциональности, которые нужны, чтобы тусоваться там было комфортно. В частности, я как один из наиболее picky customers, вываливал много фидбека, и группа терпеливо имплементировала многое из того, что нужно мне, причём, вероятно, без уверенности, что это пригодится и для других.
Туда сложно попасть совсем со стороны, задумано, что должен быть приглашающий изнутри, но если мои ЖЖ читатели есть в фейсбуке или гугл-плюсе, то, во-первых, вы можете добавить меня, а во-вторых, вы будете видеть общих друзей. В третьих, я могу сделать intro thread в целях знакомства.
Одна из нерешённых на сегодня проблем - это динамическое создание новых топиков (называемых "кружочками"). Из известных мне, есть: * #Friends (это просто для общения с друзьями), * #Meta (для багрепортов), * #Guitar, * #politics, * #programming, * #gamedeff. (идя по этим линкам, вы сразу добавитесь в мои друзья... если я вас совсем не знаю, то боюсь, мне придётся удалить :))
Наверное, есть ещё, но это к Семёну. Если хочется завести свой кружочек, это тоже к Семёну. Далее - кросс-пост:
Originally posted by sim0nsays at #gamedeff going social - ClosedCircles У нас случается следующий виток эволюции gamedeff-тусовки - как нынче модно, с уклоном в social. Чтобы было понятней, давайте я вкратце расскажу с чего все начиналось.Как запечатлено в немногословной, но яркой хронике, gamedeff появился в 2004 году (страшно подумать, 8 лет скоро) после того, как на IRC-канале #gamedev сайта gamedev.ru стало слишком много шума. Доступ был исключительно закрытым, новые люди исключительно по приглашениям и рекомендациям, жило это все на приватном IRC-канале #gamedeff. Оказалось, что это совершенно офигенный формат общения, народ стал подтягивать вменяемых знакомых и логи #ff читались до утренней почты и ЖЖ-ленты. В 2007 году мы стали писать http://blog.gamedeff.com и достаточно активно писали до 2011. В разное время размер тусовки менялся от, наверное, человек 7 до 30, с несколькими закатами и рассветами. Главные мои наблюдения за 8 лет такие - во-первых, закрытая тусовка дружбанов это бесконечно круто, потому что это очень продуктивный метод общаться в онлайне, и, во-вторых, что поддерживать ее живой требует много усилий. ( TL;DR: Зацените мой новый pet project )Это канальчик про разработку игр: http://closedcircles.com/?invite=5283f620e93090c04650f50c58b225799b6d0755Это про программирование вообще: http://closedcircles.com/?invite=40830ab442b74e72f4f8dd795829490ef04a599eЛогиниться лучше через Фейсбук, чтобы оттуда сразу добавились контакты. Не беспокойтесь, Фейсбук только для логина, мы никогда ничего туда не постим. Имейте ввиду, все в режиме раннего прототипа, поэтому подразумевается терпение и, что называется, early adopter mindset. 3 comments - Leave a comment | |

| Apr. 30th, 2012 08:16 pm Antipatterns Originally posted by at CodeSOD: Self Documenting http://thedailywtf.com/Articles/Self-Documenting.aspx "A little while back, someone introduced the concept of 'self-documenting' code to our team," writes Ryan L. "It was certainly a step forward, but it's somehow taken us two steps backwards. Consider, for example, the following code from an MVC controller."
if (TheFormIsInvalid()) return View("Index", form);
... snip ...
private bool TheFormIsInvalid()
{
return ModelState.IsValid == false;
}
"Is it really that much easier to follow than if (!ModelState.IsValid)? I'll set that question aside for the moment to instead present some other code from the same class that handles online registrations for events:
public bool IsEligibleToSeeThisEvent(EventRegistrationInformation eventRegistrationInformation)
{
if (ThisEventDoesNotRestrictRegistrantsBasedUponActivityType(eventRegistrationInformation))
return TrueBecauseThisEventDoesNotRegistrictBasedUponActivityType();
var activityTypes = GetTheActivityTypesAttachedToThisEvent(eventRegistrationInformation);
if (NoActivityTypesAreAttachedToThisEvent(activityTypes))
return TrueBecauseThereAreNoActivityTypesToFilterOnThisEvent();
if (TheUserIsNotLoggedIn(eventRegistrationInformation))
return FalseBecauseNoActivityTypesAreAvailableForUsersWhoAreNotLoggedIn();
return ThereIsAtLeastOneSharedActivityTypeBetweenTheEventAndCurrentUser(
eventRegistrationInformation,
activityTypes);
}
private static bool TrueBecauseThisEventDoesNotRegistrictBasedUponActivityType()
{
return true;
}
private bool ThisEventDoesNotRestrictRegistrantsBasedUponActivityType(
EventRegistrationInformation eventRegistrationInformation)
{
return eventActivityTypeFilterRetriever
.DoesThisEventHaveARestrictionBasedOnActivityTypes(
eventRegistrationInformation.EventId) == false;
}
private bool ThereIsAtLeastOneSharedActivityTypeBetweenTheEventAndCurrentUser(
EventRegistrationInformation eventRegistrationInformation,
IEnumerable<ActivityType> activityTypes)
{
var currentActivities = registrantActivityRetriever
.GetRegistrantActivityProductCode(eventRegistrationInformation.AccountId);
return activityTypes.Any(x => currentActivities.Any(y => y.Id == x.Id));
}
private static bool FalseBecauseNoActivityTypesAreAvailableForUsersWhoAreNotLoggedIn()
{
return false;
}
private static bool TheUserIsNotLoggedIn(EventRegistrationInformation eventRegistrationInformation)
{
return eventRegistrationInformation.IsLoggedIn == false;
}
private static bool TrueBecauseThereAreNoActivityTypesToFilterOnThisEvent()
{
return true;
}
private static bool NoActivityTypesAreAttachedToThisEvent(IEnumerable<ActivityType> activityTypes)
{
return activityTypes.Any() == false;
}
private IEnumerable<ActivityType> GetTheActivityTypesAttachedToThisEvent(
EventRegistrationInformation eventRegistrationInformation)
{
return eventActivityTypeFilterRetriever.GetAll(eventRegistrationInformation.EventId);
}


  Leave a comment | |

| Apr. 26th, 2012 12:14 pm SepiaLeave a comment | |


| Apr. 24th, 2012 10:51 am CodeSOD: The Enterprise User Agent lol'd
Originally posted by at CodeSOD: The Enterprise User Agent http://thedailywtf.com/Articles/The-Enterprise-User-Agent.aspx "When the job ad specified that an 'enterprise' Senior Java Developer was needed, I knew I'd be in a treat for some enterprisey goodness," writes Chris B, "but what I didn't expect was the User Agent Detection Generation Framework. Here's what the API for this framework looks like."

"It's apparently designed to put an end to the extreme challenge of parsing user agent strings sent by various web browsers and devices. Here's what the UserAgent implementation looks like. I mean, an implementation; this is, naturally, extensible enough to handle any user agent parsing factory implementation." 
"Based on the commit history, it took several months to create this masterpiece. There are more than forty Java classes, eight interfaces, and several hundred lines of XML configuration. Speaking of which, here's the configuration XML for Firefox:"
<!-- ============================================================================================================== -->
<!-- Firefox -->
<!-- ============================================================================================================== -->
<!-- Firefox -->
<ua:UserAgent ua:id="Mozilla Firefox" ua:browser="Firefox" ua:version="$6" ua:platform="$1">
<ua:Element ua:id="mobile" ua:type="boolean" ua:value="false" />
<ua:Element ua:id="osName" ua:type="string" ua:value="$2" />
<ua:Element ua:id="osVersion" ua:type="number" ua:value="$3" />
<ua:Element ua:id="engineName" ua:type="string" ua:value="Gecko" />
<ua:Element ua:id="engineVersion" ua:type="number" ua:value="$4" />
<ua:Detection>
<!--
Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.5) Gecko/20041202 Firefox/1.0
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a5pre) Gecko/20100418 Minefield/3.7a5pre
Mozilla/5.0 (Windows NT 5.1; rv:2.0b6) Gecko/20100101 Firefox/4.0b6
-->
<ua:RegExp>Mozilla/5.0 \((Windows).*(Windows NT) (\d+\.\d+).*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Firefox/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \(.*(Windows) (NT) (\d+\.\d+).*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Firefox/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \((Windows).*(Windows NT) (\d+\.\d+).*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Minefield/(\d+\.\d+).*</ua:RegExp>
<!--
Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.9) Gecko/20050711 Firefox/1.0.5
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060808 Fedora/1.5.0.6-2.fc5 Firefox/1.5.0.6 pango-text
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1) Gecko/20060601 Firefox/2.0 (Ubuntu-edgy)
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070220 Firefox/2.0.0.2
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.2) Gecko/20070221 SUSE/2.0.0.2-6.1 Firefox/2.0.0.2
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:2.0a1pre) Gecko/2008060602 Minefield/4.0a1pre
Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
-->
<ua:RegExp>Mozilla/5.0 \((X11); U; (\w+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Firefox/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \((X11); (\w+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Firefox/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \((X11); U; (\w+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Minefield/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \((X11); (\w+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Minefield/(\d+\.\d+).*</ua:RegExp>
<!--
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:5.0) Gecko/20100101 Firefox/5.0
-->
<ua:RegExp>Mozilla/5.0 \((Macintosh); U; ([^;]+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Firefox/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \((Macintosh); ([^;]+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Firefox/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \((Macintosh); U; ([^;]+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Minefield/(\d+\.\d+).*</ua:RegExp>
<ua:RegExp>Mozilla/5.0 \((Macintosh); ([^;]+)().*rv:(\d+\.\d+).*\).*Gecko/(\d+).*Minefield/(\d+\.\d+).*</ua:RegExp>
</ua:Detection>
</ua:UserAgent>


  Leave a comment | |

| Apr. 23rd, 2012 10:41 pm Knuth A review of the gift set of Knuth:
"Since reviews of the book content can be found elsewhere, I thought I'd review the actual collection that I bought - these four books and the box that they came in.
They are beautiful, the off-white coloured dust jackets make a pleasing change to the other pure white books that I have on my desk, and the box sets the set apart from everything else.
Also, since purchasing this set, the following things have happened.
1) My IQ increased by 1 point as soon as I placed the box on my bookshelf 2) The Women in my IT department increased their rating of me by 1.5. Apparently I'm now an 8 (9 if I take my glasses off) my colleagues report that this is a 0.5 increase in rating over a non-boxed collection of these books. 3) I have found that taking one book out, opening to a random page and inhaling deeply, when combined with a double-shot coffee, will ensure good spirits and coding karma for at least the next 4 hours.
My only complaint about this set is the fact that they are fairly snugly fit in the box. this requires actually tipping the box forward to select a book, you cannot fit your finger over the top of any one book to pull it out. The exaggerated action of doing this, however invokes jealous looks and dreamy eyes from my male and female/gay colleagues respectively so is worth it.
in short: buy this set!" Leave a comment | |

| Apr. 22nd, 2012 11:00 pm Гитарное
Какие звуки!
Понятно, что он лучше меня играет, но факт звукозаписывающего equipment'а на штуку+ баксов тоже очевиден. Хочу! Дима, обойдёшься. 8 comments - Leave a comment | |

| Apr. 20th, 2012 10:24 pm Моё художество История: у друга дома была повешена на стену фоторамка, просто чтобы прикрыть некрасивую дырку в стене. Причём в фоторамке был заводской вкладыш с каким-то текстом, типа, какого она размера, кем сделана и т.п. На меня снизошло вдохновение, позволившее мне в считанные минуты заменить некрасивый вкладыш на искусство: (нарисовано на обратной стороне этого вкладыша)

Могу рисовать на заказ в таком же стиле ;) 10 comments - Leave a comment | |

| Apr. 19th, 2012 09:11 pm John Dowland - What If a Day or a Month or a Year Не могу научиться писать его имя без ошибок. Раньше вообще пальцы набирали Download. Потом как-то всё сконвергировало в компромиссный вариант: Downland. Вот. Всё время приходится исправлять.
Leave a comment | |

| Apr. 19th, 2012 01:51 am The Core Launcher Офигенно. Мораль сей басни - как минимум, не называйте файлы program*.exe :)
Originally posted by at The Core Launcher http://thedailywtf.com/Articles/The-Core-Launcher.aspx “You R haccking files on my computer~!!!” Charles Carmichael read in a newly-submitted support ticket, “this is illigle and I will sue your whoal compiny. But first I will tell every1 nevar to buy youre stupid game agin.” The bizarre spelling and vague threats were par for the course. After all, when you market and sell a game to the general public, you can expect a certain percentage of bizarre and vague customer communications. When that game is a popular MMPORG (no, not that one), that percentage tends to hover around the majority. It took a few days to see the pattern, but the string of emails started to make sense. “Uh, when did your game become spyware?” said one email. “Are you doing this just to force us to play more often?” another customer asked. “I know you have a lot of AI and whatnot, so I think it leaked out. Because now my whole computer wants me to play all the time… like my dog bringing me his chew toy.” As it turned out, the problem started happening a few days after an update to the core launcher was published. The core launcher was one of those terrifically handy executables that could download all of the assets for any single game that was published, scan them for completeness, replace bad or missing files, and then launch the game itself after the user signed in. It’s a must-have for any modern multiplayer online game. This core launcher could also patch itself. Updates to this executable were fairly rare, but had to be made whenever a new title launched, as was recently the case. Obviously, a large battery of automated and manual testing is done to ensure that there are no problems after publishing, yet something seemed to have slipped through the cracks… at least for some customers. After a whole lot of back and forth with customers, Chris was able to compile dozens of detailed process lists, startup program launches, newly installed applications, and firewall usage rules. As he pored over the collected information, one program was always there. It was Interfersoft’s fairly popular anti-virus suite. It took a solid two days of research, but Chris was finally able to uncover the new “feature” in Interfersoft’s Advanced Firewall Protector that was causing the problems. Like many similar anti-virus suites, when a program wanted to use network services, Interfersoft would pop-up a dialog confirming that the program’s operation was authorized. Behind the scenes, if the user allowed the program, Interfersoft would make a hash of that executable file, and would allow it’s communications to pass through the firewall every time thereafter. Users who had this antivirus solution installed had, at one time, allowed the launcher through their firewall. The first time they connected to the game server after the launcher patch was released, their executable would download its patch, apply it to itself, and restart itself. But then of course, the executable hash didn’t match any more, and the program was no longer able to go through the firewall. Rather than asking users if they wanted to allow the program to connect to the internet, in the new version of Interfersoft’s suite, the anti-virus system would rename the executable and move it. The logic being that, if it was changed after connecting to the internet, it was probably malware. But what did they name the file? Program.exe. Unless that was already taken, then they would name it Progra~1.exe or Progra~2.exe and so forth. And where did they place this file? Well, in the root directory of C of course! This naming convention, as it turned out, was a bad idea. Back in the very old, Windows 3 days, Windows did not support long file names. It wasn’t until Windows NT 3.5.1 (and then Windows 95 later) that long file names were supported. Prior to this, there were a lot of limitations on what characters could be part of a filename or directory, one of those being a space. In fact, any space in a shell command execution was seen to be an argument. This made sense at the time so you could issue a command like this:
C:\DOOM\doom.exe -episode 3
That, of course, would start Doom at episode 3. However, when Microsoft switched to Long File Names, it still had to support this type of invocation. So, the way the windows cmd.exe shell works is simple. You pass it a string like this:
C:\Program Files\id Software\Doom\Doom.exe -nomusic
And it will try to execute “C:\Program” as a file, passing it “Files\id Software\Doom\Doom.exe -nomusic” as argument to that executable. Of course, this program doesn’t exist, so it will then try to execute “C:\Program Files\id”, passing it “Software\Doom\Doom.exe -nomusic” as argument. If this doesn’t exist, it will try to execute “C:\Program Files\id Software\Doom\Doom.exe” passing in “-nomusic” as an argument. It would continue this way until a program existed and started, or until the path was depleted and no program was to be found. And on top of all this, desktop shortcuts on Windows are mostly just invocations of the shell, with the actual location of the executable you want to start (the path) stored in text inside the shortcut. When you click it, it reads this path, and passes it to the shell to start up the program. And this is why Intersoft’s process of moving files to the root directory was the worst decision they could have made. Most of the programs installed in Windows at this time were installed to the “Program Files” directory by default. This was a folder in the root (C:\) directory. So when you wanted to launch, for instance, Microsoft Word, the shortcut on your Desktop pointed to “C:\Program Files\Microsoft\Office\Word.exe” or Firefox, which was in “C:\Program Files\Mozilla\Firefox\”. But thanks to Program.exe in the root directory, you ended up doing this:
C:\Program.exe “Files\Microsoft\Office\Word.exe”
and
C:\Program.exe “Files\Mozilla\Firefox\”
So, when users were trying to launch their application – applications which resided in the Program Files directory on their C drive – they were getting the launcher instead. Chris explained all of this in great detail to Interfersoft, all the while explaining to customers how to fix the problem with the firewall. It helped some, but several hundred customers ended up closing their accounts a direct result of the “hacking”. A few weeks later, Interfersoft started responding to the issues with their customers. Fortunately (for them), they decided to not use their own auto-update process to deliver a new version of the firewall. 

 Leave a comment | |

| Apr. 18th, 2012 05:24 pm Microsoft
Upd.: view count на моих глазах поднялся с 4K до 18K. Короче, she went viral! :) 20 comments - Leave a comment | |

| Apr. 17th, 2012 11:37 am Счастье Originally posted by birdwatcher at Счастье 1 comment - Leave a comment | |

| Apr. 12th, 2012 01:11 am Cloud Search From: Amazon Web Services [mailto:no-reply-aws@amazon.com] Sent: Thursday, April 12, 2012 1:06 AM To: ... Subject: Amazon CloudSearch Announcement
Dear Amazon Web Services Customer,
We are excited to announce the immediate availability of Amazon CloudSearch, a fully-managed search service in the cloud that allows customers to easily integrate fast and highly scalable search functionality into their applications.
Amazon CloudSearch adds search capabilities for your website or application without the administrative burdens of operating and scaling a search platform. Amazon CloudSearch seamlessly scales as the amount of searchable data increases or as the query rate changes, and developers can change search parameters, fine tune search relevance and apply new settings at any time without having to upload the data again.
Built for high throughput and low latency, Amazon CloudSearch supports a rich set of features including free text search, faceted search, customizable relevance ranking, configurable search fields, text processing options, and near real-time indexing. Amazon CloudSearch offers low, pay-as-you-go pricing with no up-front expenses or long-term commitments.
With Amazon CloudSearch, you get: • Rich Search Features • Automatic Scaling for Data & Traffic • Low Latency, High Throughput • Easy Administration • Low Costs
To learn more about Amazon CloudSearch, you can read this blog post by AWS Lead Evangelist Jeff Barr.
In addition please join us for an Amazon CloudSearch webinar on May 10: https://aws.amazon.com/cloudsearch/webinar.
To get started using Amazon CloudSearch, please visit our overview page at: http://aws.amazon.com/cloudsearch.
Sincerely, The Amazon Web Services Team Leave a comment | |

| Apr. 4th, 2012 10:53 pm Windows 7 tricks In Windows 7 you can create symbolic link to a network share: mklink name \\computer\share\name /d
http://www.networknet.nl/apps/wp/archives/957
Very cool! 3 comments - Leave a comment | |

| Apr. 3rd, 2012 01:53 am Распределение монеток Я откладывал quarters на laundry, а остальную мелочь в копилку. Сходил сегодня окэшил целую горсть.
Получилось любопытное распределение.

dimes = 29.17% nickels = 17.59% pennies = 53.24%
Если взять все числа от 1 до 99 и разложить на монетки жадным алгоритмом (заполняем всё quarter'ами, всё, что осталось dime'ами, потом nickels, потом pennies), получается чуть иное распределение:
dimes = 25.00% nickels = 12.50% pennies = 62.50%
Короче говоря, в реальности вышло непропорционально много никелей. Это настораживает. 7 comments - Leave a comment | |

| Mar. 26th, 2012 01:39 am HTML5 На ютубе можно за-opt-in'иться в эксперимент, чтобы показывать видео через HTML5 вместо флеша. http://www.youtube.com/html5
Я попробовал, и первое же видео было без звука, и даже без ручки его регулировки. Но изображение работало! К сожалению, пришлось покинуть эксперимент. 1 comment - Leave a comment | |

| Mar. 24th, 2012 04:57 pm Обучалка для гитары Любопытно, что год назад мы это обсуждали как потенциальный проект. Пока ты обсуждаешь, другие люди делают: http://www.ohgizmo.com/2012/03/23/tabber-guitar-sleeve-promises-to-help-you-learn/
(thanks mrumka for link!) 2 comments - Leave a comment | |

| Mar. 23rd, 2012 02:01 am Специально для идиотов... ...таких как я.
http://www.explainxkcd.com/
Офигенная идея :) Объясняют комиксы!!! :) Leave a comment | |

| Mar. 22nd, 2012 04:34 pm Рост бизнеса от 10 до 100 человек: практический опыт По-моему, отличная презентация. Взято отсюда: http://webman.kiev.ua/news/163.html
"Сергей Рыжиков: 'Мне кажется, что мы очень часто попадаем в ловушку маркетинговых докладов представителей больших компаний. Большинство представителей таких компаний никогда не строили бизнес, пришли в готовый работающий бизнес компании численность в тысячи человек. Но они уверены, что их советы могут быть применены для компании в 10-50 человек. Но это не так. И более того, такие советы очень часто приводят к тяжелым последствиям для небольших компаний, потому как методики работающие с тысячами сотрудников, вообще неприменимы к 10 сотрудникам.'"
У кого есть рекомендации материалов (лекций, презентаций) на похожую тему, welcome шарить линки! 2 comments - Leave a comment | |

| Mar. 21st, 2012 12:31 pm Quicksort vs Mergesort Quicksort и Mergesort - два интересных алгоритма сортировки. В первом выбирается "барьер", и данные раскидываются на два куска, в одном всё меньше барьера, в другом больше либо равно. Эти куски сортируются рекурсивно, после чего их можно просто "склеить", т.к. наибольший элемент из первого куска будет меньше либо равен наименьшему из второго. Если разделение происходит в внутри одного массива, то "склеивать" вообще ничего не надо - данные в большом массиве будут уже автоматически отсортированы. Идеальный барьер можно выбрать за линейное время, но на практике барьер выбирают за константное время - скажем, первый элемент или средний элемент, и это не идеальный выбор (массив может разделиться совсем не пополам), но в большинстве случаев (и в с реднем случае) это даёт ту же асимптотическую сложность.
Mergesort - это антипод Quicksort'а: во время разбиения на части мы не смотрим на ключи, делим совершенно произвольно на две примерно одинаковые части, сортируем их рекурсивно, а потом нужна процедура слияния - два отсортированных массива (множества элементов которых могут крепко пересекаться) нужно "слить" в один. Это линейная операция. Суммарно тот же O(n log n).
Раньше, сравнивая Quicksort и Mergesort, я считал, что они асимптотически одинаковы для среднего случая (O(n log n)), Mergesort лучше в худшем случае (всё ещё O(n log n) vs O(n^2)), а Quicksort лучше на практике из-за хорошей локальности на нижних уровнях рекурсии.
Но мне никогда не приходило в голову, что Quicksort может быть именно асимптотически, фундаментально лучше Mergesort. Оказывается, может. Если сортировать большие объёмы данных на hadoop кластере из K машин, то с K-way Quicksort'ом можно получить время O(n/K log n/K). Если выбирать барьеры для сегментов при помощи случайной выборки, то ни на одном этапе не нужен будет линейный проход массива. Mergesort approach, как ни крути, потребует в самом конце reducer, который всё "сольёт", т.е. на одном хосте прочешет весь массив. Получаем плохой O(n), вне зависимости от K.
Однако. 5 comments - Leave a comment | |

| Mar. 20th, 2012 10:59 pm Турнир по ренздю Итак, я дозрел до организации турнира по искусственному интеллекту для игры в рендзю (после общения с raindog_2 сегодня! :)).
Предлагаются следующие правила. 1. Размер поля 15x15 (индексируем байтом, woo-hoo!) 2. Обозначения на игровом поле: пустая клетка "0", фишка первого игрока "1", второго "2". 3. На вход (stdin) даётся указание, чей сейчас ход (строка с цифрой 1 или 2), а также текущее содержание игрового поля (15 строк, по 15 символов в каждой). Все строки заканчиваются \n (символ с кодом 0xA). Рекомендуется использовать стандартные платформо-зависимые APIs для чтения строк из входного потока. 4. Начинает игру первый игрок (1), и он всегда ходит в центр. Программировать это не надо, программа, управляющая турниром, сделает этот ход автоматически. 5. Второй ход первого игрока должен быть на расстоянии 3 или больше от центра (другими словами, если нумеровать клетки от 0 до 14, то для координат второго хода первого игрока должно исполняться условие: |x-7|>=3 or |y-7|>=3). Это единственное ограничение, ослабляющее первого игрока, других ограничений нет. 6. На выход (stdout) следует выдать поле, в котором сделан ход: 15 строк по 15 символов, в конце каждой строки \n. 7. Можно сдаться, для этого вместо выдачи поля, следует напечатать одну строку с числом 0 и символом \n. 8. Нельзя пропускать ход. 9. Управляющая программа гарантирует, что ход сделать можно (т.е. состояние исходного игрового поля не является "концом игры", имеется хоть одна свободная клетка, входные данные подаются всегда корректно). 10. Варианты "конца игры": 10.1. Выигрыш - в случае построения 5 фишек в ряд по горизонтали, вертикали или диагонали. 10.2. Заполнение всего поля ("ничья"), без наличия выигрышной ситуации из предыдущего пункта. 10.3. Выигрыш - в случае некорректного хода или time out'а соперника.
Возможно, предложенные правила не на 100% кошерные, но зато очень "дружественные" к программным реализациям.
Я потом отдельно напишу более формальные правила, с примерами и переведу их на английский. Также, создам mailing list и форму для закачивания программ. Пока - наброски: *) Ориентировочная дата турнира через 2 месяца (скажем, 26 мая). За прогрессом можно будет наблюдать онлайн. Возможно, будет ещё один турнир, если после первого сделать раунд какого-то обмена идеями и т.п. *) Для участия необходимо закачать на тестовый сервер исходный код. Вы мне доверяете, что я не буду в него смотреть и не буду "играть" в ваши игры без разрешения (предполагаемое использование - для тестового запуска чтобы проверить корректное чтение ввода, и, собственно, сам турнир), а я, в свою очередь, доверяю, что вы не будете делать всякие гадости и хитрости (кстати, делитесь идеями, как от этого легко защититься на Linux'е). *) Я подумаю над конкретными ограничениями. Для начала считайте, что есть 2 cores и 400 MB RAM. Потом, возможно, ресурсы будут увеличены. Я думаю, что для турнира буду использовать один или несколько EC2 хостов (http://aws.amazon.com/ec2/#instance) либо "Small Instance", либо "High CPU Medium". До турнира (тестовый запуск и учёт участников) используется Micro Instance. *) Писать на диск (временные файлы и т.п.) нельзя, запускать процессы нельзя, обращаться по сети нельзя, размер исходника ограничен. Пока - условно 100KB, потом, если надо, можно будет подкрутить, но общая идея ограничений: нельзя precompute очень большую матрицу дебютов. *) Заранее не известно, target platform будет 32 bit или 64 bit (вероятно, 64 bit). *) На каждый ход будет ограничение по времени - я пока не решил, какое. Думаю, секунд 10, не больше. *) Языки программирования: C, C++ (gcc), Python 2.6, вероятно, добавлю Java. Нестандартных библиотек не будет. Опции компилятора будут выложены потом, кроме того, будет возможность заранее проверить, компилируется ли исходный текст, и запустить тесты. Кто хочет поддержку других языков (помимо перечисленных), тот рассказывает мне, как это легко настроить. *) Кто хочет побыть спонсором - обращайтесь. Призы - это интересно. Кроме того, если участников будет очень много, то будет приятно, если спонсор заплатит за EC2 host time на время турнира (в случае если оно перевалит за какие-то разумные $50). При разумном количестве участников, турнир будет проводиться так: играет каждый с каждым, каждая пара играет по две игры, начиная поочерёдно. Ranking по количеству побед. Если я чего не учёл - говорите. Всё будет учтено. Если кто найдёт в интернете Renju/Gomoku в точности с описанными выше правилами - выкладывайте ссылки, думаю, это полезно будет для тренировки :) Ну и вообще, играйте, практикуйтесь! И пишите AI! Good luck & stay tuned.
Потенциальные участники - прошу как-то отметиться (комментом или письмом мне), чтобы я своевременно слал все апдейты. 9 comments - Leave a comment | |

| Mar. 19th, 2012 07:13 pm Ferdinando Carulli - Siciliana (Allergo) Записал ещё одну красивую грустную вещичку.
К её разучиванию подтолкнула вот эта запись:
Я её специально не переслушивал в процессе работы, чтобы у меня вышло по-другому. 2 comments - Leave a comment | |

| Mar. 18th, 2012 07:07 pm HDD speed Протестировал несколько винчей разных размеров на скорость доступа (через утилиту Atto). Получились следующие числа на блоках примерно 16-32KB и выше (примерно одинаково для чтения и записи):
250 GB - 63 MB/sec 500 GB - 60 MB/sec 750 GB - 93 MB/sec 2 TB - 110 MB/sec
Больший размер харда, выше плотность записи, выше throughput. Маленькое напоминание для тех, кто экспериментирует со старыми винчами, но в интересных конфигурациях (типа RAID-0). Все винчи - 3.5", 7200 rpm, но разных моделей, тестировались на примерно одинаковом железе. 28 comments - Leave a comment | |

| Mar. 13th, 2012 01:36 pm Night Sky Всем рекомендую Night Sky. Программка, показывающая звёзды, созвездия и планеты с названиями, когда смотришь на небо через айфон. Я думаю, она работает не от камеры, а от GPS + датчиков компаса и положения айфона в пространстве. Пишут, что её можно откалибровать, чтобы хорошо сходилось. Теперь больше не придётся спорить, Марс это, Венера или Юпитер. 1 comment - Leave a comment | |

| Mar. 12th, 2012 07:15 pm Facebook Некоторое время назад интерфейс фейсбука изменился, и в новом я до сих пор не нашёл, как выйти на фотоальбомы. Я вижу только недавно закаченные фотки, да и то только иногда, т.к. теперь фейсбук как-то выборочно показывает обновления.
Можно ли как-то вернуть старый интерфейс, в котором всё было по-человечески? 13 comments - Leave a comment | |

| Mar. 11th, 2012 12:09 pm Домашнее Вчера забыл в стиральной машине вещи. Сегодня, вместо того, чтобы переложить их в сушку, запустил их стираться по второму кругу (с добавлением моющего средства). Мысль была такая: наверное, за ночь в сыром окружении могли расплодиться микробы, и если я просто просушу, я могу не всех убить, лучше постирать заново. Интересно, насколько рационально обоснован этот шаг? Стоило ли стирать заново?
На второй чаше весов $1.75 за пользование общей стиральной машиной, порядка $0.20 за моющее средство, загрязнение окружающей среды по объёму воды, спущенной в канализацию, а также какие-то копейки как часть счёта за воду, и уменьшение долговечности вещей (вещи "умирают" за какое-то количество стирок). Если стираемые вещи стоят $200, и амортизируются за 2 года при стирках раз в 2 недели, то каждая стирка "стоит" примерно $4 плюс 50% издержки на то, чтобы выбрать вещи, съездить и купить, вернуть, если не подошло, и т.п. - это $6. Суммарно уже порядка $8. 7 comments - Leave a comment | |

Back a Page
|
|