Category: животные

Пантера

- Смотри, как этот кот рычит. Прям, как пантера. Когда я был в латинской америке, я ухаживал за пантерой.
- Серьезно? Как это было?
- Пантера была в клетке, а я должен был в клетке убирать, и выводить ее гулять в джунгли. На веревке.
- Зачем?
- Ну, пантерам нужно было раз в день гулять. А джунгли - это такая штука, сам понимаешь. Там без мачете хрен проберешься вообще. И пантера убежит. Кошке то чо - она где хочешь пролезет. Поэтому, я ее привязывал веревкой, и каждый день вел гулять.
- Подожди, ты говоришь, что был привязан к пантере веревкой, и вел ее гулять в джунгли?
- Да.
- Но веревка подразумевает, что ты должен за нее иногда дергать? Иначе зачем она?
- Не, дергать за веревку нельзя, если конечно, ты хочешь остаться жив. Находясь в джунглях с пантерой, не стоит ее злить.
- Тогда я вообще ничего не понимаю. Нахрена тебе тогда веревка? А если пантера захочет рвануть в джунгли?
- Тогда ты просто стоишь. И она понимает, что дальше нельзя. Правда, иногда она залезет куда-нибудь, и веревка запутывается. Тогда приходится лезть, и распутывать, прямо перед ее мордой. Очково.
- Это ад, а не работа. И много тебе платили?
- Нет. На самом деле, это я заплатил 500 баксов, чтобы работать на этой работе. Это некоммерческая организация, они занимаются передержкой пантер, пострадавших от рук людей.

И было реально страшно. Нет, я не тот человек, которого легко напугать. В смысле, я много чего видел, когда в боевых частях пехоты служил. Но видишь ли, когда моя пантера в первый раз меня увидела, она укусила меня за бок. А потом, когда я ходил за ней в джунглях, и делал слишком много шума - например, наступал на ветку, то она оборачивалась, и громко на меня шипела. И я каждый раз думал - все, конец.

- Слушай, а какова смертность следящих за пантерами в этой организации?

- Никого. Иначе их бы закрыли. Но потом ничего, она ко мне привыкла, и я чесал ее за ухом.

- Есть большая разница с этим котом?

- Ну, знаешь, когда я вернулся домой - я так удивился. Какой мой кот все-таки маленький .

cartoon

Гибкий бункер

Замечательный фильм "Бункер". Он хорош. Там есть одна сцена, которая очень часто появляется в разных ютьюбах с подменой речи оригинала.

Сто раз видел, в разных позах, буквально. Одну и ту же сцену. С разным текстом.

И никогда не предполагал, что у меня возникнет желание подобное запостить в своем журнале. Я вообще чужой контент у себя не размещаю. Однако - наконец нашлась "озвучка", которая цепанула и меня :). Вот она. Have fun!

http://www.youtube.com/watch?v=l1wKO3rID9g&feature=player_embedded#!

Да, ссылка на видео найдена в Енотьем Журнале (raccoon). Спасибо Еноту.

P.S.: И все-таки, Бункер - это отличный фильм. С великолепной актерской игрой, что нам какбэ символизирует столь выдающийся "индекс цитирования". Рекомендую посмотреть его без "озвучки". Целиком.
cartoon

Сказка про инженера, менеджера, и медведя

 
*** Курилка корпорации CQG. 2004 год.

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

- Кстати, парни, мы вот с вами все обсудили, все детали, а осталась самая малость. А вы подумали о том, что мы с вами будем делать, если нам так не повезет, и мы все-таки убьем кабана?
-?! - говорим мы с Барахтяном.
- Вы знаете, сколько весит кабан?
- Сколько? - с подозрением спрашиваем мы.
- Здоровый кабан, на которого мы с вами собрались охотится, весит более 300 килограм. И как мы его будем тащить? А?
- Ерунда! - с энтузиазмом говорит Барахтян, - мы приедем на Ниве с лебедкой, зацепим его, и отвезем куда надо!
-  А вы знаете, что кабана сначала надо подвесить на дерево...
- Слыш, Борис, да он сцуко весит больше нас троих вместе взятых!
- ...и освежевать его, чтобы с него стекла кровь!
- Да-а-а... - задумались мы с Барахтяном.

- Слыш, Борис, а может ну его нах, кабана, и все-таки пойдем на зайца, а?
- И где мы возьмем собаку? Я читал - на зайца без собаки никак.  
- Не проблема. Я слышал, что собаку в охотхозяйстве выдают. В аренду возьмем.
- Да как бы нам, сцуко, не подстрелить случайно эту собаку, парни. Мы ж с вами охотники што песдец... - веско сказал Борис.

Все задумались...

*** В то же время, в офисе компании-разработчика ПО. Может быть, в вашей.

Подходит однажды менеджер к инженеру, и говорит:
- Пойдем охотиться на медведя.
- Ты что, с ума сошел? У нас в этом деле нет никакого опыта. Совсем-совсем. Ты когда-нибудь видел живого медведя? Я видел на фотографиях. У него зубы - во! Когти - во!! Я даже видел запись, где медведь своими когтями сносит незадачливому охотнику голову. Новый русский охотился на медведя с рогатиной. Его страховали двое парней с карабинами. Они не успели. Медведь движется сквозь лес на скорости до 40 км/час! Он снес парню башку просто взмахом своей лапы! 
- Спокойно. Я обо всем позаботился, - уверенно отвечает менеджер, отметая возражения взмахом руки, - будет обеспечено профессиональное оборудование, и профессиональная поддержка. Все будет на высочайшем профессиональном уровне! 
- Хм, точно? - неуверенно спрашивает инженер.
- Абсолютно! - уверяет менеджер.
- И когда приступим? - осторожно говорит инженер.
- Завтра. Встречаемся на большой поляне в лесу, в 10 утра.

***

Менеджер стоит на поляне в дорогом костюме, и держит в руке длинную палку. Он буквально излучает уверенность в себе, весь его вид говорит «я знаю, что я делаю, я делал это сотни раз».

- Ты же сказал, что будет профессиональное оборудование, поддержка?! Где профессионалы?! Где оборудование?! - спрашивает инженер.
- Спокойно! Все в порядке! Я обещал, что все будет на высшем профессиональном уровне? – говорит менеджер, легко подбрасывая палку и перехватывая ее движением фокусника.
- Да, - растерянно отвечает инженер.
- Вот. Так и будет, если мы будем следовать моему плану. Мы же команда, мы должны доверять друг другу. Пойдем.

Менеджер с достоинством подходит к берлоге, и со всей силы тычет в нору палкой. Тык. Тык. Из норы раздается рев, и оттуда выскакивает разъяренный медведь.

***

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

- Спокойно, все под контролем! – выдыхает менеджер, - Ты, наверное, думал, что мы бежим черти куда, не разбирая дороги?
- Да, примерно так я и думал!
- Нет. Все идет в соответствии с планом. Мы на графике.
- Профессионалы с оборудованием ждут нас в домике?
- Что-то вроде того. Говори поменьше, не надо сбивать дыхание. Тебе еще работать.

Менеджер забегает в домик, за ним инженер, за ними медведь. В то время, как в домик запрыгивает медведь, менеджер уже лезет на улицу в окно. Он аккуратно закрывает окно, и подпирает дверь снаружи палкой, которую все это время не выпускал из рук.

Из домика раздается рев бешеного медведя, перекрывающийся профессиональным отчаянным боевым криком инженера, который в принципе готов был бы отдать свою жизнь, но не просто так, а только за очень, очень большие деньги. Домик трясло. Очень больших денег у медведя не было, и в этом была проблема медведя.

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

*** Курилка корпорации CQG, 2004 год

- А что, Борис, может нам на медведя пойти?
- А вы, что, не знаете анекдот про медведя, парни? - смеется Борис, - что-то вспомнилось.
- Нет. Рассказывай!
- Ну, значит, спрашивает молодой охотник у бывалого, как правильно ходить на медведя. Тот, нервно дергаясь при слове "медведь", озирается по сторонам,  и отвечает...

***

- ...ты главное не бойся. Подходишь к берлоге, палку, палку длинную с собой берешь, палку не забудь.
- Палка то зачем?
- Ты, главное, не бойся. Палкой тычешь в берлогу. Сильно тычешь.
- И что?! Оттужа же медведь выскочит!
- Ты, главное, не бойся. Медведь выскочит, а ты ему дерьмо возьми, и на морду намазывай, намазывай.
- А дерьмо-то откуда брать? - опешил молодой охотник.
- ты, главное, не бойся, дерьмо - будет, - с уверенностью говорит бывалый, еще раз нервно дернувшись, - ты ему дерьмо на морду, на морду намазывай...

*** Постскриптум

Медведь медведем, а про кабана тоже не забывайте. Как-никак, 300 килограмм, сцуко, весит. Да и заяц тоже зверь, што песдец. Сложное дело - охота, в общем. Почти как управление проектами.
cartoon

Кто-нибудь хочет узнать новое про файберы?

2005 год. Программерский пост.
http://rsdn.ru/Forum/message/1140124.1.aspx
Здравствуйте, Cyberax, Вы писали:

C>Не рулят. Фибры — весьма глючны, непортабельны, давно не развиваются и
C>не дают много преимуществ.
C>http://blogs.msdn.com/larryosterman/archive/2005/01/05/347314.aspx

Файберы — рулят, ни разу не глючны, на портабельность плевать — будут проблемы и похуже при попытке портировать нечно с Win32 (хотя аналоги есть и в Unix под названием user-level threads), развиваться там нечему — все крайне просто (весь API — вызовов 6), и даже если бы не было файберов в API, их можно было бы написать ручками на asm-е.

И разумеется, файберы дают массу преимуществ при грамотном использовании. Применение файберов в рамках legacy-продуктов CQG позволило нам более чем вдвое удешевить разработку и рефакторинг некоторых подсистем клиента и сервера. Про глючность — выдумки, у нас уже три года сервера на файберах крутятся, и ни одной проблемы с ними не было.

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

Статья эта — отстой полный.
They're also HARD to deal with — you essentially have to write your own scheduler.

Ай-ай-ай. Как раз поэтому файберы и хороши, что можно (но совсем не обязательно) писать свой шедулер. Наш шедулер занимает 468 строк на С++. Пишется за пару недель. И он очень хорош, просто великолепен. Управляется с приоритетами так, как нужно нам, а не оперсистеме, и работает нормально на том количестве параллельных активностей, которая удобна нам, а не разработчикам ядра. Нам, например, удобно, чтобы их было порядка 10К, а не идиотская сотня с идиотскими пулами.

Далее, я написал очень много файберного кода, и как врач говорю, что в нем существенно реже возникают проблемы синхронизации даже при использовании той же самой модели разделяемых данных. Файбер не может прерваться в любой момент, вы сами говорите ему — где, что сильно уменьшает как количество примитивов синхронизации в вашей программе, так и упрощает доказательство корректности программ. Файберный код — более надежен, чем потоковый, его проще писать, и его проще отлаживать.

Второй момент — на файберах удобно реализовывать сопрограммы и continuations. Что не требует планировщика — автор очевидно этот случай вообще не рассматривает. Афтарлох, короче.

The other reason that fibers have remained obscure is more fundamental. It has to do with Moore's law (there's a reason for the posts yesterday and the day before).

Ну-ну. Закон Мура что-то не помогает виндам чувствовать себя нормально хотя-бы с 1К потоков на процесс — я уже не говорю о большом количестве активно взаимодействующих потоков, которые часто переключаются и жрут мало CPU на обработку одной мессаги. То есть в том сценарии, когда мы в процентах много теряем на переключение контекста — мы продолжим терять столько же. И закон Мура ровным счетом никак не помогает.
cartoon

Альтернатива MS Project - лучший в мире планировщик

Отдыхая между работами (работу поменял, взял две недели отдыха), в очередной раз рассмотрел вопрос тулзов для планирования. И нашел замечательный планировщик, который меня почти полностью устраивает.

1) Он прост и интуитивен в использовании - манулы не нужны.
2) Он красив и приятен в работе.
3) Он поддерживает группы ресурсов. Да, вы можете отразить в ресурсах вашу оргструктуру точно, в древовидном виде.
4) Вы скажете - ну и что? А то, что вы можете назначать на задачи группы исполнителей. И система сама расшедулит детали.
5) Разумеется, вы можете назначать группы ресурсов на групповые задачи. Все это с произвольной деревянностью и вложенностью.
6) И самое главное - при этом работает автоматический levelling ресурсов.

Другими словами, это единственный известный мне планировщик, который позволяет шедулить сложные проекты с произвольным уровнем детальности. Причем - учитывая совершенно волшебное юзабилити продукта - это делается легко.

Эта волшебная программа называется OmniPlan. Качайте, пробуйте.
http://www.omnigroup.com/applications/omniplan/
И, забыл сказать, она есть только под Мак. :)

Необходимо пояснение. Почему я сказал "почти". Потому, что эта штука реализует хорошо только необходимый минимум функций. И ни одна из известных мне систем не реализует моих требований в существенной степени. Требования проистекают из простого факта, что сложный и подробный план - он реально сложен, как программа, и он может содержать ошибки. Для того, чтобы управляться с ним, необходимы простые меры борьбы со сложностью - как это принято в современных языках программирования. А именно:
1) Полноценная поддержка модульности, компонентности, и импорта. Это совершенно необходимо для групповой работы над планами.
2) Поддержка абстракций - шаблонов сложных задач. Сложные задачи часто имеют "внешние интерфейсы", и типовую внутреннюю структуру - это по духу примерно как "классы". Сейчас "внешние интерфейсы", за которые цепляются зависимости, приходится моделировать майлстонами.
3) Нормальная деревянная структура ресурсов. Причем группа ресурсов должна вести себя как first class object - она должна быть использована во всех местах, где используется отдельный ресурс. Это есть в OmniPlan, больше нет нигде.
4) Автоматическое назначение исполнителей с учетом заданных ограничений. Есть в ограниченном виде в OmniPlan, больше нет нигде.
5) Тэги ресурсов и задач, которые учитываются при автоматическом assignment-е ресурсов. Зачем надо - я ввожу свою классификацию инженеров по темам, что они знают и умеют, и указываю для каждой задачи ее тип в терминах этой классификации. После этого назначение ресурсов на задачи можно автоматизировать, с последующей ручной правкой, и можно понять, специалистов какого типа у нас не хватает и они держат проект. И кого надо нанять. И вообще - много интересного можно из этого вывести. Сложно сделать? Несложно. Нигде нет, блин, даже намека на это.
6) Описание плана должно быть в читабельном текстовом виде, допускать ручные правки, чтобы лежать в системе контроля версий.
7) И все это должно быть интегрировано с таск-трекером.

Примерно все, на вскидку. Нихрена никто близко этого не умеет. Только Omni Plan немножечко продвинулся вперед - правда, по самому критичному направлению, с которым у MS Project просто жопа какая-то. А так- все плохо.