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

Сказ про Путяту

Стало быть, жил у себя в усадьбе знатный боярин Мстислав Всеволодович, хорошо жил да горя не знал. И была у боярина дочь Велена, красавица да умница каких поискать. И вышло так, что гостил у Мстислава княжий гридень Путята, могучий воин не ведавший страха, одолевший в жестокой сече три сотни печенегов (сам-то я не видал — люди сказывали). Но так мила и пригожа была Велена, что стоило Путяте увидать ее, позабыл он обо всем на свете, так и застыл с разинутым ртом, аки истукан, слова путного вымолвить не мог. Уж и не ведаю, что Велена в нем отыскала, а приглянулся и ей славный Путята. Порешили они, стало быть, свадебку по осени сыграть, а чего ж тут думать долго.

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

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

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

Но не успели злодеи довершить свое черное дело — ступил на поляну славный Путята с другами своими хоробрыми. Увидал он, что лихие люди учинили, и ярость обуяла его. В безумии выхватил он меч и бросился на разбойничков, а други Путятины лишь немного от него отстали. Звон оружия, треск щитов, крики и проклятия раздавались со всех сторон. Путята прорубал дорогу к Велене не видя ничего вокруг. И не раз спасали его верные товарищи от лютой смерти. Насилу управились воины с могучим Давилой — повалили его наземь, стали ногами поколачивать. Коварный Морахес тем временем ловко рубил неприкрытые спины.

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

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

пятница, 15 апреля 2011 г.

Миротворцы. История гильдии

Сотворение

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

Шли годы, разрастался и хорошел Годвилль. Под возросшим влиянием юных пробудившихся богов, Демиурги постепенно забыли о самой первой гильдии, величественная цитадель которой, поражавшая своим великолепием, всё так же возвышалась в самом центре сотворённого мира. Опустели некогда пышные и шумные залы, где перворожденные герои дружелюбно махали друг перед другом впервые добытыми трофеями, а по вечерам удивляли собравшихся рассказами о невероятных приключениях, с выражением зачитывая выдержки из дневников, и лихо отплясывали на пиршественных столах под веселый треск трещоток и заунывное бубнение бубнов. Легенды гласят, что громадный замок был целиком сложен из золотых, 999-й пробы, блоков первыми миротворцами всего за одну ночь. И столь высоки были его башни, что невозможно было отыскать место, откуда их было бы не видать. Но терпеливое и беспощадное время любые, даже самые величественные сооружения, неспешно обращает в прах. Неприступные золотые стены и гордые башни по кирпичикам были растасканы жадными до всего яркого и блестящего невиданными доселе, жуткими тварями, наводнившими Годвилль, а ухоженные замковые холмы поросли соснами и столбами. Лишь скрытые до поры обширные подземные катакомбы остались в молчании хранить тайны далёкого прошлого.

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

Возрождение

Как-то раз, в один студёный февральский вечер, некий герой*, из последних сил продиравшийся сквозь густые сосновые заросли, решил укрыться от непогоды в случайно обнаруженной пещере. Разведя костёр и разложив на просушку нижнее обмундирование, он, к своему удивлению, обнаружил чугуниевую дверь, тускло блеснувшую в свете огня. А поскольку, как известно, всякому герою присуще нездоровое любопытство, наш приключенец решил, во что бы то ни стало разведать, что за этой дверью скрывается. И вот, наконец, массивная дверь уступила перед напором геройской любознательности, и, вдоволь заготовив из подручного мусора факелов и иных осветительных принадлежностей, он ступил в манящую неизвестность. Обнаружившаяся за дверью бесконечная, уходящая вниз, лестница, наконец, кончилась, и наш герой очутился в обширном подземном зале, тишину которого нарушало лишь беспокойное потрескивание факела. Высоченные стены зала украшали без сомнения древние, но прекрасно сохранившиеся гобелены, изображавшие сцены сотворения Годвилля.

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

Но вот, войдя в очередной величественный зал, герой с удивлением обнаружил нескольких незнакомых героев точно также удивлённо входящих в зал с разных сторон. Удивление быстро сменилось радостью от мысли, что теперь не придётся трапезничать в одиночестве. По внешнему виду незнакомцев было видно, что каждый из них точно так же случайно набрёл на пещеру, так же развёл костёр, разложив сушиться намокшее обмундирование, и каждый приметил таинственную чугуниевую дверь. Именно это историческое событие потом назовут первой встречей в неформальной обстановке (без галстуков) главных кардиналов гильдии «Миротворцы», которая возродится в эту ночь. Теперь же герои, собравшиеся за круглым столом в центре зала, просто радовались жизни, вкусной еде, обильной выпивке и обществу друг друга.

__________
* – По неподтверждённым слухам это мог быть Эрроурут Эрроуширский или любой другой герой.

Последняя битва Героя

Случилось так, что славный рыцарь сэр Эрроурут Эрроуширский, по обыкновению спасая мирных жителей от ужасных созданий, вступил по геройской нужде своей в мрачные и зловонные земли Заброшенного Капища. Ядовитые испарения и дурные предзнаменования окутывали это черное место. С гниющих ветвей деревьев вместо листьев свисали во множестве полуистлевшие человеческие головы и иные бренные члены. Небо было затянуто непроглядной зеленой мглой, а из таинственных темных углов раздавались скрежет зубовный и прочие малоприятные звуки. Любой из героев давно повернул бы назад, но только не Эрроурут! Без тени страха и сомнения продвигался он вперед к своей цели.

Но вот земля содрогнулась под тяжкой поступью неведомого врага, а воздух наполнился отвратительными звуками и запахами. И через мгновение враг явил себя. Ростом он превосходил высочайшие из деревьев и, весь покрытый непробиваемой броней, был подобен черной горе. Четыре гигантские ноги его сотрясали землю, а множественные руки были вооружены острейшими ядовитыми когтями, подобными мечам и секирам. Из разинутой пасти врага виднелись черные клыки в пять локтей длиной, с которых стекала на землю кислота и щелочь. Гигантским своим хоботом он с легкостью выдирал из земли деревья, валуны и иные предметы, помещая их в свою бездонную глотку, откуда вырывались сполохи пламени и оглушительное рычание. Это был тот, о котором многие боятся даже помыслить, тот, чьим именем пугают непослушных детей: мифический демон древнего мира – Администратор Годвилля.

Отважный Эрроурут вспомнил, что излюбленной пищей демона являются молодые и неопытные герои. С жалостью подумал он о тех бедолагах, кто остался за его спиной, и для кого сегодняшний день мог стать последним. И славный рыцарь понял, что долг его – низвергнуть чудовище. Победить или пасть смертью героя! Крепче сжал он в руке оружие – свой верный боевой вантуз, и громогласно провозглашая боевой клич, отважно ринулся в бой. И так велика была его доблесть, что ужасный Администратор Годвилля, на мгновение дрогнув, попытался поджать свой чудовищный шипастый хвост. Но вот новой безумной злобой вспыхнули все восемь глаз демона, и издавая громовое рычание «СЕР-ВЕР», монстр обрушил свою колоссальную мощь на бесстрашного рыцаря…

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

Но милостив и справедлив Всемогущий! Отважный рыцарь ожил, чудесным образом очутившись в Храме, и новые славные подвиги ожидали его. Что же случилось с поверженным чудовищным демоном? Героическая гибель отважного рыцаря не была напрасной – ужасного Администратора Годвилля в тех местах боле никто не видел.

пятница, 23 июля 2010 г.

VB.Net. Сравнение быстродействия операций

Приблизительно оценить время выполнения той или иной операции можно следующим образом:

Dim t As DateTime = Now
'некоторая операция 
Console.WriteLine((Now - t).ToString)

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

Dim s As String = "a"
Dim t As DateTime

Console.WriteLine("s = ""a""")

t = Now
For i = 0 To 99999999
    If s = "" Then s.ToString()
Next
Console.WriteLine("If s = """" Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s = String.Empty Then s.ToString()
Next
Console.WriteLine("If s = String.Empty Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s.Length = 0 Then s.ToString()
Next
Console.WriteLine("If s.Length = 0 Then --> " & (Now - t).ToString)

s = ""
Console.WriteLine("s = """"")

t = Now
For i = 0 To 99999999
    If s = "" Then s.ToString()
Next
Console.WriteLine("If s = """" Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s = String.Empty Then s.ToString()
Next
Console.WriteLine("If s = String.Empty Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s.Length = 0 Then s.ToString()
Next
Console.WriteLine("If s.Length = 0 Then --> " & (Now - t).ToString)

А вот и результаты испытаний, выведенные в консоль:

s = "a"
If s = "" Then --> 00:00:02.2656250
If s = String.Empty Then --> 00:00:02.3125000
If s.Length = 0 Then --> 00:00:00.4062500
s = ""
If s = "" Then --> 00:00:00.7968750
If s = String.Empty Then --> 00:00:02.2187500
If s.Length = 0 Then --> 00:00:00.5000000


Как видим, в любом случае, целесообразнее обращаться к свойству Length. 

четверг, 22 июля 2010 г.

VB.Net. Пустая строка

И еще, к слову. Возможно, кто-то использует такую проверку пустой строки:

If s = "" Then...
или If s = String.Empty Then...

Так проверять не рекомендуется (не рационально). Лучше использовать свойство Length объектов типа String, т.е. делать так:

If s.Length = 0 Then...

Вот так красиво! :)

Го вверх!