четверг, 24 февраля 2011 г.

JavaScript: calculating date differences

/**
* The algorithm for calculating date differences
* MD , MV - arrays with days' count per month
* Output params: yb - the interval's begining year
* mb - the interval's begining month
* db - the interval's begining day
* yi - the interval's end year
* mi - the interval's end month
* di - the interval's end day
*/

var MD = [ 31 , 28 , 31 ,
30 , 31 , 30 ,
31 , 31 , 30 ,
31 , 30 , 31 ] ;

var MV = [ 31 , 29 , 31 ,
30 , 31 , 30 ,
31 , 31 , 30 ,
31 , 30 , 31 ] ;

var WS = WScript.CreateObject( "WScript.Shell" ) ;

function gage ( yb , mb , db , yi , mi , di )
{
var y , m , d , s , mm , bd , bm , by ;

y = m = d = bd = bm = by = 0 ;
s = "" ;

y = yi - yb ;
if ( di < db ) {
mm = mi ;
if ( mm == 1 ) mm = 12 ;
else mm-- ;

if (( yi % 4 == 0 ) && ( ( yi % 100 != 0 ) || ( yi % 400 == 0 ) ))
d = MV [ mm - 1 ] - db + di ;
else d = MD [ mm - 1 ] - db + di ;
bd = 1 ;
} else d = di - db ;

if ( mi < mb ) {
m = 12 - mb + mi - bd ;
bm = 1 ;
} else {
if (( mi == mb ) && bd ) m = 11 ;
else m = mi - mb - bd ;
}

if ( bd == 1 && bm == 1 ) by = 1 ;
else if ( bd == 0 && bm == 1 ) by = 1 ;
else if ( bd == 1 && ( mi == mb ) ) by = 1 ;
y = yi - yb - by ;

if ( y < 0 ) y = 0 ;
if ( m < 0 ) m = 0 ;
if ( d < 0 ) d = 0 ;

s = "years: " + y + " months: " + m + " days: " + d ;

return s ;
}

WS.Popup ( gage ( 2010 , 09 , 28 , 2011 , 01 , 12 ) ) ;

среда, 23 февраля 2011 г.

JavaScript: разность дат

Ниже приведен скрипт, вычисляющий разность дат.
Входные параметры: год, месяц и день начала интервала дат, год, месяц и день конца интервала дат.

var MD = [ 31 , 28 , 31 ,
30 , 31 , 30 ,
31 , 31 , 30 ,
31 , 30 , 31 ] ;

var MV = [ 31 , 29 , 31 ,
30 , 31 , 30 ,
31 , 31 , 30 ,
31 , 30 , 31 ] ;

var WS = WScript.CreateObject( "WScript.Shell" ) ;

function gage ( yb , mb , db , yi , mi , di )
{
var y , m , d , s , mm , bd , bm , by ;

y = m = d = bd = bm = by = 0 ;
s = "" ;

y = yi - yb ;
if ( di < db ) {
mm = mi ;
if ( mm == 1 ) mm = 12 ;
else mm-- ;

if (( yi % 4 == 0 ) && ( ( yi % 100 != 0 ) || ( yi % 400 == 0 ) ))
d = MV [ mm - 1 ] - db + di ;
else d = MD [ mm - 1 ] - db + di ;
bd = 1 ;
} else d = di - db ;

if ( mi < mb ) {
m = 12 - mb + mi - bd ;
bm = 1 ;
} else {
if (( mi == mb ) && bd ) m = 11 ;
else m = mi - mb - bd ;
}

if ( bd == 1 && bm == 1 ) by = 1 ;
else if ( bd == 0 && bm == 1 ) by = 1 ;
else if ( bd == 1 && ( mi == mb ) ) by = 1 ;
y = yi - yb - by ;

if ( y < 0 ) y = 0 ;
if ( m < 0 ) m = 0 ;
if ( d < 0 ) d = 0 ;

s = "лет: " + y + " месяцев: " + m + " дней: " + d ;

return s ;
}
WS.Popup ( gage ( 2010 , 09 , 28 , 2011 , 01 , 12 ) ) ;


P.S. Создание объекта типа WScript.Shell возможно только для ОС Windows.

вторник, 1 февраля 2011 г.

Волга-Дон 2009

Пролог
Начало сезона 2009 года прошло для меня без энтузиазма. На это повлияло несколько факторов: срыв поездки в Питер на марафон Вологда-Онега-Ладога в 2008 (из-за смены работы), навалившаяся куча работы, которая требовала дополнительного времени.

В связи с этим к лету у меня накат не превышал 3000 км. Самой большой поездкой был марафон до Анапы - примерно 500км, чудом удалось вырваться на выходные.

Как-говорится - ничто не предвещало беды, как вдруг, в начале июля, мне позвонил Вадим (Кочевник) с предложением, подкупающим своей новизной. Он предложил на пару съездить в Волгоград, чтобы поучаствовать в марафоне. Согласился не сразу, немного думал, а внутри уже вовсю бушевало второе "Я" - велосипедное, которое требовало свободы, несмотря ни на какие доводы здравого смысла о нехватке подготовки. В итоге желание свободы победило все остальное.

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

В Волгограде были около 7-ми утра. Несмотря на то, что автобус был современный, поспать в нем все-равно не удалось. Быстро переодевшись в туалете на автовокзале напавляемся с Вадимом на поиски забронированной гостиницы. На самом деле, гостиница - это громко сказано. Это был спальный корпус детского спортивного лагеря, совдеповского типа. В гостинице мы увидели других участников предстоящего марафона. Долго мы там не задержались, быстро покидали вещи и поехали в поисках кафе, чтобы позавтракать.

Быстро перекусили и вот уже стрелка часов неминуемо приближается к цифре 9, а мы к площади "Павших героев" - место старта. На старте нас встратил Комочков, раздал карты и легенду маршрута, дал краткие комментарии. На старт подъехал легендарный Харис Сахипов, о котором я до этого много слышал от Вадима, но ни разу не встречался с ним. Вот так и познакомились. Потом подъехало местное телевидение,несколько интервью, фотографии на память и в 9.10 утра 9 июля мы стартовали. И было нас семеро.

Старт и первые потери

Из города мы выезжали в сопровождении ГАИ и ребят с волгоградского велоклуба. Солнце начинает припекать, несмотря на то, что только утро.
Проехав пару десятков километров, Вадим пробивает себе клесо. Останавливаюсь узнать нужна ли ему помощь, подождать ли. Говорит, что не надо. И я продолжаю ехать с группой. Поначалу едем небыстро, ждем, что Вадим нас догонит. Но этого не произошло. Начали немного ускоряться. Потом заметили, что нас едет уже пятеро. Впереди "Горбатый Мост", а заним поворот и смена направления движения. А со сменой направления начался
встречно-боковой ветер. Едем сменами. Через некоторое время наша группа потеряла еще одного марафонца и мы продолжаем путь вчетвером: Сахипов Харис, Певнев Валера, Березенков Игорь и я.

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

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

Сахипов не поддержал нашей идеи и поехал дальше сам. Попили воды, чуть отдышались и поехали дальше. Все время думали, как далеко он уехал от нас. Хариса догнали только на первом КП. Только мы туда приехали, как он уже уезжал. Но, режим питания нарушать нельзя. В кафе я обедаю борщем, попутно отзваниваюсь домой, что все в порядке. Пообедав, продолжаем путь все в тех же размышлениях - как далеко от нас Харис. В погоне психологические терзания отпустили, да и десятая часть дистанции была уже преодолена. Не доезжая до Октябрьского наша группа догоняет Сахипова, далее едем вчетвером.

К тому времени день в самом разгаре. Естественно, ни намека на тенек. Но в Октябрьском нам на пути попадается оазис в виде заправки. Оазисом был шланг с холодной водой, которым поливали клумбу. Мы не могли упустить такой шанс для охлажения. Облившись с ног до головы продолжаем путь. Высохли мы максимум минут через 10.

Часам к восьми вечера мы доехали до Котельников. Там хорошая придорожная столовая с хорошей окрошкой. Совершаю очередной сеанс связи с домом. На выходе из кафе видим Вадима, едущего по дороге. Он поворачивает на парковку кафе, и потихоньку едет к входу. В это же время с другого конца парковки медленно, но верно на Вадима едет минивэн. Все замерли. В районе заднего колеса Вадима, их траектории пересеклись под прямым углом.
Вадим не падает, велосипед просто разворачивается. Машина едет дальше. Все это происходит за какие-то секунды. Все застыли на изготовке. Но из-за руля припарковавшейся машина вылазит женщина, с возмущениями в сторону Вадима, что он не видит, что она едет... Ну что тут скажешь?

Обсудив данное событие стартуем вчетвером, пока выезжали из Котельников, сами чуть не поделил траекторию движения с транспортом. Только в нашем случае это был КамАЗ. Водитель начал выступать, но мы его в 4-ре горла быстро обложили русским народным.

Первая ночь

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

В последний час 9-го июля проезжаем Дубовское и долетаем до Зимовников, где делаем небольшую остановку, чтобы пополнить запасы воды. Едем в полной темноте, а глаза слепят встречные машины. Едем не в колонну, а по парам. Беседуем. За всем этим начинаем терять скорость. Ночью вообще все меняется. Кажется, что едешь довольно быстро, показаний компьютера не видно. Когда видишь цифры на табло в свете проезжающей мимо машины становится грустно от цифры в 15-20 км/ч. Начинаю немного прибавлять. Мы опять выстраиваемся в колонну. Я впереди. В довольно быстром темпе въехали в Орловскую. Там купили мороженого и воды. Харис рассказывал заинтересовавшейся местной молодежи о марафоне и своем велосипеде. Немного отдыхаем и едем далее. Чувствую приближение первого спального КП. Он был организован в Пролетарском, на 410м километре дистанции. Потихоньку набираем скорость, едем сменами. Когда проезжали мимо какого-то строения с фонарем, посмотрел на обочину и увидел четыре вытянутых тени, чем-то похожих на пляшущих человечков. Хочу заметить, что встречный ветер не оставил нас и ночью. Единственная разница лишь в том, что не печет солнце.

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

По всем рассчетам КП уже должен быть, а его все нет и нет. Желание покорить его начинает сводить с ума. Тебе чего-то хочется и хочется поскорее, ты чувствуешь, что это уже где-то рядом, я его все нет. Это начинает бесить. Происходит нечто похожее на истерику, только вместо криков, слез и конвульсий начинаешь в беспамятстве жать на педали. Жмешь так, что скорость начинает доходить до 40км/ч. Вот уже и виден мост над дорогой - это своего рода ориентир на КП. Но его по-прежнему нет. И вдруг, справа в темноте начинает виднеться красный маячок. Наконец доехали. Треть дистанции пройдена. На часах начало четвертого утра 10-го июня.

Волонтеры радуются нам, приглашают за стол и в палатку поспать. Соглашаемся только на стол. Но для начала я смазываюсь подгузниковым кремом. Не важно, что ощущения, как-будто не успел до туалета добежать, зато не так все жжет и болит. Мы с Валерой едим и первое и второе, и компот. В это время, Харис, заправив свои бачки водой, отъезжает от КП со ловами "Поеду небыстро, догоните меня". В районе 4-х часов утра мы с Валерой покинули КП. Поблукали немного по Пролетарску, наконец выехали на пустынную ночную дорогу. Это даже не трасса, а дорога. связывающая вежду собой несколько поселков. Все время, что едем, размышляем, как далеко от нас уехал Харис и сможем ли мы его догнать. Приходим к общему мнению, что сможем, так как едем вдвоем и далее поедем сменами.

Дорога местами пролегает рядом с оросительными каналами, поэтому под утро в таких местах очень
влажно и туманно. Но, что самое неприятное - орды голодных комаров. Около 6-ти утра были в Сухом, а к 8-ми добрались до Большой Орловки. В это время там уже на посту, на лавочке, сидели бабульки. У них мы и спросили, не видали ли они дедушку на велосипеде. Они сказали, что он проехал примерно пол часа назад. Снова начинаем считать, как его догнать. Но в размышления начинает вмешиваться сон. Голова отупевает потихоньку. Дабы
немного взбодриться заходим в продуктовый ларек и просим сделать нам кофе - по три пакетика в стакан. Продавщица в недоумении выполняет нашу просьбу. Отъехав немного от ларька начинаю ощущать боль в правой ступне, в том месте, которое находится над осью педали. Еще раз останавливаемся, чтобы немного походить, Валера угощает смесью малышка, которую он развел перед стартом и везет с собой как питание. Далее едем сменами, в стопе то усиливается, то утихает, пока окончательно не проходит.

Экватор

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

Навстречу нам пролетает группа юных велосипедистов, за ними тренер едет на мотоцикле, они радостно машут нам и мы им отвечаем. Подумали с Валерой, что они даже не подозревают, что мы уже пол тысячи намотали. Так сменами и доехали сначала до Константиновска, а затем до шахтинской трассы. Едем, в ожидании моста через Северский Донец и КП. Экватор дистанции уже близок. А моста все нет. Начинаем сомневаться в правильности пути. Останавливаемся
и сверяемся по карте. Хочу заверить, что обычный бумажный атлас не менее удобен и информативен, чем GPS.

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

Половину дистанции мы осилили. Время - 14 часов, 10 июля. На КП быстро поели. За обедом узнали, что Харис проскочил этот КП и сейчас уже где-то в районе Синегорска. Легли спать. Проспали около часа. Сном это назвать трудно, скорее отключка. Подъем тоже дался тяжело. Нехотя берем велосипеды, идем к трассе. "И вновь продолжается бой..." сразу всплывает в памяти, как только сажусь на велосипед. Нам с Валерой пожелали счастливого пути и мы поехали.

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

Ближайший намеченный пункт остановки - Белая Калитва. Но чувство голода уже начинает давать о себе знать. И запас бананов как назло начинает иссякать. Вот остался всего один. Надо потерпеть и постараться как можно дольше не есть его. Едем с Валерой сменами, обсуждаем где же сейчас Харис. И вдруг, перед небольшим серпантином на подъезде к Белой Калитве, слышу знакомый голос. Это был голос Хариса. Оказывается он попал под ты самую черную тучу, и ему пришлось переждать ливень на автобусной остановке. Теперь отдыхи на сменах стали больше. На рабостях проехали Белую Калитву без остановки. А за ней начались холмы. Не большой тягун и спуск. И так постоянно. На очередном подъеме доедаю последний банан, но чувствую, что долго не протяну на нем. Предлагаю остановиться и подкрепиться в придорожном кафе. Но Валера говорит, что знает в тех местах хорошее заведение, и предполагает, что оно будет за следующим холмом. Послушавшись его, мы преодолеваем холм, но за ним ничего. И за вторым, и за третьим. После нескольких холмов, все-таки остановились в первом попавшемся кафе.

Пройденное расстояние уже составляет 750км. Заказываю солянку и азу. Звоню домой, пытаюсь сделать голос пободрее, сообщаю где я нахожусь, что все хорошо. Перед выездом попросили у хозяйки воды, она взяла наши пустые бутылки и вернула их наполненными. Продолжаем путь, до Морозовска остается 50 км. Через несколько километров нас накрывает ливнем. Таким, что мало что можно рассмотреть впереди. Да и темнеть уже начало. Доезжаем до ближайшей остановки. Пока доехали промокли насквозь. То, что не смог промочить ливень, намочили волны от проезжающих мимо фур. На остановке ждем какое-то время, пока не закончится ливень. Валера и Харис достают из сумок штаны и куртки. У меня же с собой только джерси с длинным рукавом. Одеваю ее, но не сильно согравает - ноги все равно открыты. Как только мы выехали из остановки - меня начинает бить озноб, да такой, что я еле могу нормально педалировать. Длится все это несколько минут. Потом раскрутился и согрелся.

Вторая ночь и Волгодонск

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

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

В 23 часа 10 июля мы приехали в Морозовск. КП сделано в придорожном мотеле, в котором останавливаются дальнобойщики для отдыха. Отмечаемся у вахтера и неспеша идем в столовую. Пока ставили велосипеды возле столовой перекинулись парой слов с дальнобойщиками, которые сидели в беседке напротив входа в столовую. Узнав о том, что мы 800км проехали за 38 часов, они обалдели, сказали, что сами не проезжают столько за такое время.
Мы горды собой. В столовой заказываем ужин. Буквально за пару минут до того, как принесли поесть меня начинает бить озноб - зуб на зуб не попадает, все тело трясет. Углеводы покинули организм. Дрожащими руками с трудом открываю бутылку пепси, делаю несколько глотков и меня немного отпускает.

Съедаю солянку и поджарку, остальным было достаточно только второго. Надо заметить, что из всей группы я ел больше всех. Наверное это возрастное. Мы с Валерой собираемся немного поспать. Харис заявляет, что поедет потихоньку дальше. Мы же идем в вагончик. Природная лень и усталость заставили нас пройти мимо душа, подумали, что помоемся как проснемся. Вагончик довольно уютный, три или четыри кровати в нем. Спим пол часа.
Ужасный будильник, ужасная действительность и неохота вставать. В голове носятся мысли "Да ну все это... Работа в понедельник - нахрен работу". Я готов спать целую неделю. Но прием душа несколько освежил. Смыв с себя соляной комбенизон, чувствую себя заново родившимся. Крем, который я мазался в Пролетарске залечил полученные к тому времени раны и не дал образоваться новым. Поэтому смазываюсь снова, теперь уже на чистую кожу.

Выехали, на улице холодно и зябко. Асфальт еще мокрый от дождя. Опять гадаем, где Харис. Проезжаем поля укропа и базилика, или какой-то другой пахучей приправы. Попутно думаем, что нам повезло ехать поэтой пустынной трассе ночью, так как днем тут наверняка будет настоящая духовка. Километров через 30 видим впереди маячок Хариса. Так и догнали его. После этого группа не распадалась до самого финиша. Он рассказал нам, что через несколько километров от Морозовска он остановился на какой-то остановке и завалился там спать на какое-то время.

На рассвете подъезжаем к Цимлянску. К тому времени мозг находится в анабиозе. Самое тяжелое время, для того чтобы не спать - это где-то с четырех до семи утра, особенно, если это уже вторая ночь без сна заканчивается. Состояние такое, что не сам поймешь чего хочешь, реально хочется вывернуться наизнанку. В попавшейся кафешке опять пьем тройной кофе, сверху добавляю банку колы - никакого эффекта.

Утром были в Волгодонске. Уже 11 июля. Моя попа навсегда запомнит эти дороги. Даже с закрытими глазами узнаю их. Маршрут проходит мимо АЭС. Дорога представляет собой небольшой подъем, покрытый бетонными плитами, с щелями между ними в несколько пальцев, через каждые 3-4 метра. Именно тут, мой желудок дает сбой. Сказывается водичка, которую нам налили в кафе перед Морозовском. Она мне еще тогда показалась с привкусом известняка. Вот и сижу теперь в кустах.

Проехали АЭС двинулись на Дубовское. Солнце близится к зениту, а ветер все чаще поворачивается к нам в лицо. Перед Дубовским заканчивается провизия последние километры еду с чувством голода. В Дубовском были в районе 11 часов дня, 1000км пройдено. К этому времени Харис уже около 500км едет с поженными ногами (сунул ступни в ванночку с водой, чтобы охладить, а там оказалась какая-то гадость). Валера сильно отбил себе зад, и добил его на бетонке на подъеме перед АЭС. У меня же сильно обветрились губы - они черные от запекшейся крови. Поели, попили и легли на пол часа поспать.

Горячий полдень

Отъезжаем от КП. Температура около 45 градусов, ветер встречный, встречно-боковой, скорость 6-8 м/с. Едем сменами, но скорость колеблется от 15 до 20 км/ч. Смена - 1 км, мерием по километровым столбикам. Каждые три смены останавливаемся, передыхаем, опять кусты или просто обочина. Тетке видимо сильно икается в этот момент. И дальше продолжаем ехать. Едем от одного населенного пункта до другого. Так добрались до Котельниково. Пока Валера и Харис ходили в магазин, я распластался на бетоне. Затем заехали там же в кафе, с моей любимой окрошкой. На этот раз я съел две порции, про запас. Сначала ехать тяжело, потом раскатываюсь.

И снова смены, одна за другой. Солнце палит, ветер дует, ни тенька, ни облачка. На своей смене начинаю спускаться с холмика и вламываю зачем-то скорость под 30км/ч. Опять психика сбой дает. Хочется поскорее все закончить. Этот рывок не прошел даром. Через какое-то время становится нехорошо, кажется, что вот-вот и я рухну и останусь на обочине. Парни везут меня на колесе. Пропустив несколько смен я снова встаю в строй. Жду появления Октябрьского как манны небесной, но его все нет и нет.

Но вот и до него добрались. Еще на 50 км ближе к финишу. На заправке покупаем воду и немного отдыхаем. Есть чувство голода, но есть уже не могу. Поэтому покупаю две банки энергетика. Одну выпиваю сразу. Вторую оставляю про запас. Продолжаем путь. Ветер не стихает. Едем все также сменами. Скорость не превышает 15 км/ч. Периодически накрывает псих и начинаем орать на ветер. Через несколько километров от заправки, нас догоняет машина с КП в Нижнекундрюченской. Народ повыходил из машины, но поняли, что лучше нас не тормозить, так мы и поехали дальше.

В пути выпиваю еще одну банку энергетика. Легче не стало, но и хуже не становится. Километров за 20 до последнего КП ветер стих, был уже вечер. Начиаем ускоряться, еще и спуск к радости. Но все так гладко. Правый ахил начинает беспокоить. Такое ощущение, как-будто там какието шарики катаются. Но понимаю, что если отстану от Хариса и Валеры, то не догоню их уже, а сам ехать еще долго буду. Еду через боль, и через какое-то время она проходит.

Финиш

Отметившись на КП выходим на финишную прямую. Уже темнеет и начинается третья ночь. Долго едем и никак не можем доехать до "Горбатого Моста". На самом деле, волгоградские степи обладают какой-то аномалией. Расстояния кажутся близкими, а едешь невыносимо долго. Такое ощущение, что их 1км по степи - это наших 2. Едем в ночи, и видим огни большого города, но до них еще ехать и ехать. Увидев я снова начинаю ускоряться. Часто встаю из седла и еду стоя. Все это время Валера и Харис едут неспеша и о чем-то беседуют. Проехали "Горбатый Мост". Начинаются так называемые дачи. Уже пригород Волгограда. Я ускоряюсь, отрываюсь от Валеры с Харисом. Потом стою и жду их. Нервничаю от того, что хочу поскорее лечь спать. А им кажется все-равно, они никуда не торопятся.

И вот, настает тот самый момент - Волгоград, 1200км. Но где же финиш. Валера говорит, что до финиша надо еще примерно 30 км по городу проехать. И тут меня разрывает на части. Мы едем по самой длинной Улице города. С остановки в нашу сторону с лаем стартовала немаленькая псина, но я усаживаю ее в буквальном смысле слова своим гавком. Еду, а рот не закрывается постоянно чем-то возмущаюсь. Как же так, 1200 же а тут на тебе, еще 30км. Валера пытается успокоить меня, но уже все. Остапа понесло. Успокоить меня смог только первый из трех финальных подъемов перед местом финиша. На нем выложился так, что ноги чуть не отвалились. И мозг просветлел.

Попросил прощения за свой срыв у Валеры и Хариса. 3 часа 10 минут, 12 июля. Спускаемся в подвальчик веломагазина, где находится финиш. Нас встречают двое парней, предлагают еду, мороженое и йогурты. Просят попозировать для фотоснимка. Фотография над сказать "удалась". Вот он финиш всего, чем я жил почти трое суток. То, что совсем недавно так хотелось покорить теперь ставит тебя в тупик. "А что делать дальше?" - вопрос который терзает меня.

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

Эпилог

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

За время марафона на сон ушло порядка 2-х часов из 66 и 10 минут общего времени. От общения с Валерой появился Волжский говор, который быстро прошел в Ростове. Болели шея, плечи, руки и ладони. Ладони сильно отбились, и дискомфорт оставался в них на протяжении полутора месяцев после марафона.

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

Воспоминания о пробеге Ростов-Туапсе (2010.05.20)

Желание добраться до моря своим ходом давно не давало покоя. Испытания всегда интересны, и чем труднее дорога, тем приятнее финишировать. Такого же мнения придерживаются еще несколько моих друзей.
Я живу в городе Ростов-на-Дону, его еще называют воротами северного Кавказа, портом пяти морей. Расстояние до черного моря порядка 500км. В прошлом году была сделана разведка, и мы проехали до Анапы. Расстояние было около 400км, а на дорогу ушло около 20-ти часов. Но это не то, в Анапе нет гор, а душа требовала новых покорений. И вот, случилось, написано заявление на отпуск, а наши друзья из Туапсе (город на берегу черного моря) пригласили принять участие в марафоне, который они организовали.
Так как марафон был запланирован на субботу, выезжать решили в четверг, чтобы добраться до места назначения за сутки, отдохнуть денек на море, а потом со свежими силами побороться на марафоне. Из Ростова стартовали в 4 часа утра в четверг, нас было трое: Максим, Вадим (он же Кочевник) и я. В 4 часа было темно, поэтому ехали неспешно, так как по темноте по российским дорогам быстро не поедешь. Темп выше среднего, отлично работаем сменами, а ветер уже начинает строить нам козни. Не успело рассвести, как мы уже проехали около 90 км, а ветер назойливо пытался помешать нам.
8 утра, время завтрака, я с Максимом солидарен в том, что необходимо перекусить, а вот Вадим уезжает от нас. И вот, продолжаем нашу поездку уже вдвоем. Ветер немного усиливается, а отдыхи на сменах стали короче. Чтобы отвлечься и не думать постоянно о ветре и оставшихся километрах, мы начинаем играть в одну интересную игру – один загадывает предмет, а второй пытается угадать что это, задавая вопросы о предмете, и получая на них ответы. Так пролетело еще несколько часов поездки. Наши умственные изыскания варварски прервал ливень, который нагнало очередным порывом ветра. Нас полоскало как из ведра примерно час, зато сразу нашли чем отвлечься от раздумий о километрах. Неудобство дополнительно доставляли и проезжающие мимо фуры, нещадно окатывающие нас водой с ног до головы.
Из ливня выбрались где-то к полудню, и снова желудок поет о том, что его необходимо заправить. Удовлетворяем жизненные потребности в придорожной столовой и снова продолжаем путь. Несмотря на то, что мы с Максимом едем вдвоем – никак не можем нагнать Вадима. Теряемся в догадка, как далеко он мог от нас уехать. Так проезжаем несколько крупных городов. Дождя уже нет, но местами на дороге попадаются лужи, которые не дают нам высохнуть. Я делаю предположение, что по закону подлости скоро должно выйти солнце и начать палить нас своими лучами, выжигая влагу с дороги. Так и случилось. Как раз в тот момент, когда мы не рискнули ехать через очередной крупный город, попавшийся нам на пути, дабы не заблудиться в нем. Объездная дорога сначала понравилась нам, тем более что ветер повернул нам в спину. Но счастье длилось недолго. Так как дорога объездная – она огибает город и вскоре мы уже ехали против ветра и под лучиками солнца. Стиснув зубы, выезжаем за пределы города, а на просторе ветер еще сильнее. В голове начинают мелькать расчеты, о том, за сколько мы теперь, с учетом ветра можем проехать оставшиеся километры. А осталось чуть меньше половины. Но в этот раз нам помогла сама дорога, она плавно начала поворачивать, таким образом, что ветер нам дул в бок, а деревья на обочине дороги и вовсе прикрыли нас от ветра.
К пяти часам вечера на подъезде к областному центру встречаем дальнобойщика, который сказал нам, что видел велосипедиста около 15 минут назад. Наконец мы узнали где Вадим. В пять вечера мы въехали в Краснодар, на цепи уже 300 км из 500. Быстро ужинаем и продолжаем путь.
Потратив час на то, чтобы выехать из города становимся изрядно злыми. Но трасса встретила нас пробкой. Долго не можем понять в чем дело, пока не увидели причину аварии. Часть эстакады, которая проходила над дорогой, обрушился прямо на проезжую часть, тем самым практически парализовав движение в обе стороны…
Солнце потихоньку начинает готовиться ко сну, а на горизонте медленно и ленно начинают появляться замысловатые силуэты гор. Если мы только знали, какой прием они приготовили для нас. К семи часам вечера нагоняем Вадима. Он стоит рядом с магазином, на автомобильной заправке, жадно ест мороженое. Начинает говорить о том, что собирает где-нибудь заночевать и продолжить путь на следующий день. Максима тоже начинают посещать подобные мысли. Одному мне хотелось покорить дорогу к морю в пределах суток. За плечами уже 350 км – немаленькая дистанция, хороший марафон. А впереди 150 км, но каких – сплошные подъемы и спуски, да серпантины. В горах каждый километр можно считать за три. И вот, немного отъехав от заправки, мы обгоняем Вадима и снова остаемся вдвоем. Горы становятся все отчетливее, а дорога радует спусками. Но это только подготовка и ловушка. Не верьте, если вам скажут – что горы это чепуха, что там классные спуски. Да они есть, но чтобы спуститься – нужно сначала подняться.
Около 9-ти часов тормозим на стоянке, где-то между двумя горами, чтобы одеть что-то теплое. Максим останавливается на обочине и не успевает выстегнуть «контакты» и падает на припаркованную машину. Начинает сказываться усталость.
Наслаждение пейзажами прерывается окончательным заходом солнца и наступлением ночи. Первый перевал штурмуем в сумраке. Перед началом стоит табличка – градиент 12%, долгота 7км. Это означает – 3.5 км вверх и 3.5 км вниз. Для ровных и плоских как стол степей – такие подъемы это что-то нереальное. Ноги начинают гореть… Новички сгорают быстро и продолжают подъем уже пешком. Но нам удается усмирить свой пыл. Медленно начинаем подниматься, потихоньку втягиваясь в горку. Ищу глазами дорожные знаки и столбы. При таких подъемах главное не опускать голову, а придорожная инфраструктура помогает в этом. Я как-будто помогаю себе взглядом, умственно цепляясь за очередной столбик и подтягивая себя к нему. Как-то я увлекся подъемом и потерял где-то позади Максима. Не помню сколько времени потребовалось, чтобы одолеть перевал и достичь его верхней точки. Меня обуревает радость и гордость за себя, что сумел преодолеть сию преграду. Впереди ждал спуск. Даже не знаю, что страшнее подъем или спуск… Представьте – вы едете почти с закрытыми глазами, в которые нещадно светят фарами встречные машины, с горы. Скорость достигает 60км, а то и больше. Поворотов не видно, а тело наполняется адреналином. На очередном повороте начинаю притормаживать и слышу дикий визг тормозов у себя за спиной. Это длилось какие-то секунды, но за это время я успел приготовиться и настроиться на толчок сзади, подумать о том, что накрылось мое участие в марафоне. Начинает срабатывать чувство собственного самосохранения и пальцы невольно тянутся к тормозам. Но тут мозг, дает четкую и быструю команду, одновременно ногам и рука – «Не тормози, ускоряйся!!!». Повинуюсь приказу, на какое-то время оборачиваюсь назад и вижу едущую юзом легковую машину. Все обошлось. Оставшийся путь вниз проходит без подобных эксцессов, зато я успеваю «поймать» пару немаленьких ямок. Слышно даже как металл ударяется о землю. Вот спуск и закончился останавливаюсь чтобы подождать Максима и заодно подкачать колеса. Ждать пришлось недолго. Остановившись, он сообщил мне, что намерен остановиться в ближайшей населенном пункте, так как уже начинает терять координацию.
Чем ближе к морю – тем круче подъемы. Каждый населенный пункт – взятие крепости. Горки такие, что даже слов не находится их описать. Из горла порой вылетают только крики. И вот Максим, как и говорил оставил меня в очередном поселке. Я продолжил путь сам. Включил плеер, а в голове бьется мысль – «Может тоже остановиться, может не надо». Но нет, никаких слабостей, я сделаю это за сутки. И я продолжал ехать.
Скорость на спусках не намного превышала скорость на подъемах, так как я был постоянно ослеплен светом встречных машин и практически останавливался, когда они проезжали мимо. Я уже еле различал пятно света своего фонаря на дороге, от всего остального. Да и батарейки уже почти сели. Так протянулись еще пару часов.
Скрип каретки оживлял всех местных собак, как только я въезжал в очередной поселок. Я представлял, как меня ругают местные, за то, что не даю им спать. Уже пару раз видел море. Луна полная, а на воде серебряная дорожка, и я все еще могу воспринимать эту красоту. Въезжаю в достаточно крупный населенный пункт, на автостанции нахожу терминал для пополнения счета телефона. Отвечаю на сообщение, которое прислал мне друг, оставшийся в Ростове и, к сожалению, не смог поехать вместе с нами. Быстро смотрю в легенду, до финиша остается около 30км. Прикидываю, что до финиша днем я бы доехал за час, но сейчас ночь, за спиной более 400 км. Делаю глоток воды и еду дальше.
В ушах отбивает ритм музыка и ноги в такт ей повинуются и крутят в очередную горку. На очередном спуске еще раз налетаю на ямку. Останавливаюсь внизу, чтобы подкачать колесо. С обеих сторон дороги кафе, из которых слышится громкая музыка и звуки караоке. Кому-то там хорошо… Те кто выходил из кафе покурить смотрели на меня как на пришельца с другой планеты. Дождевик кислотно-зеленого цвета, одетый на меня дополнял картину. Не обращаю ни на кого внимания, да и глаза уже замылились из-за постоянного ослепления встречными машинами.
Минуты тянутся и вытягиваются в струны часов, время уже давно перевалило за полночь. Поток машин стих, теперь трасса почти пустая. Таблички с названиями населенных пунктов появляются все чаще и чаще. Но того самого заветного названия я пока не вижу на них, да и названий отмеченных мною в легенде тоже не могу встретить.
В начале второго часа ночи въезжаю в поселок, мучает жажда и желание что-нибудь пожевать. Орехи, которые вез с собой, уже давно приелись и не могли утолить голод. Купил в магазинчике шоколадный батончик, бутылку пепси и йогурт. Как только вышел на улицу, чтобы употребить все это – начинает бить озноб, вызванный очередным порывом ветра и низким уровнем углеводов в организме. Примерно те же ощущения я испытал в прошлом году, когда ехал марафон в 1200 км, на отметке в 800км. Правда, тогда я не мог даже поднять ложку с едой, так сильно меня трясло. Быстро перекусываю и еду, первые несколько сотен метров только согреваюсь. Ночи в горах очень зябкие, а повышенная влажность позволяет холоду пробраться даже в самые утепленные места.
И вот оно – чудо. Табличка с километражем. До следующего поселка 2 км, до финиша 9км. Я на радостях начинаю праздновать, ноги сами быстрее едут, или мне так кажется. Въезжаю в поселок, в голове срабатывает счетчик – до финиша 7 км. Это же 15 минут, думаю я, но 15 минут по равнине, а тут… На выезде из населенного пункта снова срабатывает счетчик – осталось примерно 5 – 6 км. Уже совсем весело. Через какое-то время вижу знак «извилистая дорога» и под ней километраж в 5 км. Это было начало серпантина. 5км означало – 2.5 вверх и 2.5 вниз. Но градиент… Это была стена.
Слыша за своей спиной натужный гул движка. Это грузовик пытается обогнать меня. В свете его фар кидаю взгляд на спидометр. Цифры показывают жалкие 10км/ч. Грузовику с трудом удается обогнать меня. Он медленно удалялся от меня, а потом резко исчез из виду. В голове мелькнула мысль – спуск, ура! Но это был всего лишь поворот. Так называемый «тещин язык», на котором машины разворачиваются на все 180 градусов, а то и больше. И снова стена. Таких обманных спусков было несколько десятков. Я уже не садился на седло. Вкручивал все время стоя. Крича и проклиная эти повороты и этот подъем. Те 2.5 км подъема перед самым финишем стоили всей остальной дистанции. Первый перевал и все, что было до этого не шло с ним в сравнение. Это было настоящее испытание на силу, в первую очередь на силу духа.
Ровно в 2 часа ночи я завершил свой спуск и остановился рядом с табличкой с надписью Туапсе. Я сделал это, 500 км за 22 часа – отправил я сообщение домой и своему другу. Вот он вкус настоящего марафона – кровь, пот, боль и эйфория. Ну вот, теперь можно и 200км по горам покататься в субботу, подумал я и поехал искать ночлег.

среда, 30 июня 2010 г.

Android: dynamic table layout


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


Ссылка на проект