вторник, сентября 18, 2007

Как доставляют почту в Туркменистане...

четверг, сентября 13, 2007

Технология длительных путешествий

Сергей Жаров, - интересный материал от путешесвуюшего

"Короче, в натуре, есть целый мир, про который мы ничего не знаем, — мир длительных путешествий. А там столько людей, и катаются по году и более без перерыва. Только русских нет. А почему их нет? Потому что они неправильно думают.

Они думают, типа, где деньги взять, через какую фирму визу получать, как ездить по стране, как там с границей. Время откуда, тоже думают. Вот с последним вопросом ничем не помогу — если времени нет, то его нет. Хотя бывают каникулы у студентов, а у нестудентов случается время “между работами”.

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

А какие проблемы есть? Две: что с собой брать и как не облажаться.

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

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

Короче, учитесь на ошибках других."

Читать дальше: http://www.zharov.com/tehno/index.html

среда, августа 15, 2007

Путушествие по северной африке




Tunisia



понедельник, июля 16, 2007

Записки сумашедшего

Такой вещи, как идеальный текст, не существует. Как не существует идеального отчаяния.
Харуки Мураками, «Слушай песню ветра»

Что такое хороший язык программирования и каким он должен быть? Всякое люди говорят – тут тебе и дуракоустойчивость (прошу прощение, «защита от новичка»), и Тьюринг-полнота, и формализуемость, и еще 1024 критерия. Ерунда. Все нижеследующее просьба рассматривать как эссе в вольном стиле, а не научную статью.

Бывают языки красивые, бывают строгие, бывают такие, которым легко обучиться, бывают такие, на которых легко писать. Их не используют.
Бывают такие, в которых черт ногу сломит – и на них пишет полмира(сноска: Программистского мира, естественно, раз уж мы о языках программирования.), но никто не любит.
Бывают языки сложные и неочевидные: чтобы писать на них хорошие программы, нужно учиться несколько лет и прочесть кучу книг. В них влюбляются, им посвящают стихи, о них спорят до хрипоты, визга и метания в собеседника банановой кожуры.
***
Я – программист. Я знаю пять языков – и верен одному. Я прочел два десятка книг только об этом языке – а хотел бы две сотни. Я могу математически доказать правильность своей программы – и скрещиваю пальцы на удачу, когда запускаю ее на компиляцию. Я могу переписать одну строку восьмью разными способами – но работает только девятый. Я безнадежен.
***
Один мой коллега (и все профессора в моем институте) верят, что главное – это научиться программированию. Мол, человек, умеющий программировать вообще, за пару недель освоит новый язык и будет писать на нем великолепные программы. Поэтому в университетских курсах огромное количество сухой(сноска: Ну, черт с ней, полусухой.) теории, а языки преподаются на уровне пресловутого «Хелло Ворлд». Но это все равно, что научить стихосложению вообще – а потом студент за пару недель осваивает финский или хинди и выдает первоклассные стихи, входит в историю поэзии и энциклопедический словарь. Вроде абсурд получился.
Каждый язык программирования – из тех, в которые влюбляются – порождает свою культуру. Совершенно так же, как человеческий язык. У него есть свой букварь(сноска: Кафедра Программного обеспечения, курс «Язык С++», 48 часов. (с) расписание 2-го курса.). Но это – только самое-самое начало. Есть лексика – и даже нецензурная(сноска: Скажите любому опытному С++-программисту магическое слово goto. Только с безопасного расстояния.) (как и в естественном языке, иногда она бывает к месту). Есть синтаксис. Это все вещи понятные, относительно легко изучаемые и относительно легко формализуемые. Именно поэтому можно автоматизировать проверку синтаксической и лексической правильности как программы, так и данной статьи.
Но и это все – лишь начало. Ни «Война и мир», ни «безбашенная» проза Харуки Мураками, ни «Linux» – не являются математически стройными системами. Их нельзя назвать написанными «правильно» или «неправильно». Более того, и то, и другое, и третье можно было написать несчетным(сноска: В математическом, а не поэтическом значении этого слова.) количеством различных способов – но написаны (и ценны) они именно такими.
Нельзя «научить» писать эпиграммы, сказки или статьи, которые нравятся редакторам «Компьютерры». Каждое такое произведение – это результат творческого переосмысления опыта предыдущих поколений + немножко вдохновения + владение языком + собственный стиль. Нельзя научить писать программы на C++ – это результат [см. выше].
***
У этого языка есть свои идиомы – краткие, но очень емкие конструкции. Есть традиции – и возможность плевать на них. Есть свобода выбора стиля. Есть возможность различными словами написать одну и ту же фразу. Есть классика – и есть классики: Бьярн Страуструп, Джефф Элджер, Герб Саттер, Николай Джосаттис. На этом языке можно сказать двусмысленность – и не получить линейкой по рукам от компилятора(сноска: …а трое суток искать, почему программа вылетает, когда i=17.). Здесь есть место творчеству – здесь есть место спорам – здесь есть место 48-часовым марафонам по отладке программ. Есть тонкости, доступные только снобам. Здесь нет только одного – места, где можно было бы остановиться и сказать: все, ничего нового для меня в этом мире не осталось.
***
Поймите меня правильно – пользователю, в общем-то, плевать, на каком языке написана программа и насколько освоился в этом языке ее автор. В отличие от написания текстов, в программировании конечный продукт очень слабо связан со стилем и культурой автора текста(сноска: Естественно, связан сильно, но совершенно неочевидно для конечного потребителя.). Тем не менее, программа, которой «еще жить и жить» от версии к версии, просто обязана быть красивой – а не то в следующей версии никто уже не поймет, куда там дописывать новый кусок и почему старый до сих пор работает и «черт побери, кто вообще это писал?!» Но я вам другое скажу – программа, написанная с любовью и вдохновением, все же немножко другая. Не такая, как вышедшая из-под клавиатуры человека, любимая фраза которого «Надо сидеть и педалить код».
***
Поймите меня правильно еще раз. С++, будучи изначально и по определению промышленным языком, является крайне неудачным выбором для промышленного производства. Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. Язык, который подразумевает только один вариант выражения мысли. Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код(сноска: Кстати, это уже шаг в сторону автоматической генерации программ или «Цель деятельности всех программистов – чтобы их деятельность стала не нужна».). Язык, в котором шаг влево, а равно и шаг вправо просто нельзя выразить средствами языка.
Язык, который никто и никогда не будет любить.
***
Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.


Опубликовано КТ №22

пятница, июля 13, 2007

воскресенье, мая 20, 2007

Какой подарок можно подарить на день рождения?...


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

Вот как все было:
Воскресенье 20-го мая, где-то в начале дня. Мы едем от станции метро пр. Просвещения на какой-то специально подготовленной маршрутке по направлению к городу Выборг. Перед нами открываются замечательные виды на финский залив, леса и просторы ленинградской области.
В этот момент я еще не в курсе того куда и зачем мы едем, знаю только о том, что это должен быть сюрприз. Когда я увидел табличку г. Выборг, было, подумал что это будет экскурсия по славному городу, но не тут-то было.
Извиваясь и петляя по каким-то полупроселочным дорогам, мы попадаем на небольшой полувоенный аэродром. Экскурсии по аэродрому - это как-то странно подумал я. Круг догадок постепенно сужался... Окончательно все стало ясно, когда специальный человек в камуфляжной форме, из тех, что работали на аэродроме, начал объяснять мне основы управления самолетом, одним из тех, что стоял неподалеку. Не могу вспомнить название самолета, эта машина какого-то Литовского производства. Специальный человек, он же - инструктор, рассказывал про виды скоростей - воздушную и земную, еще что-то... Смущало только то, что он постоянно повторял о том, что якобы 80% полета должен буду управлять самолетом я сам. Честно признаюсь, что был немного не готов к таким развлечениям, да и в кабине пилота никогда не сидел.
После краткого инструктажа, садимся в аппарат. Инструктор объясняет - что можно нажимать, а что нельзя, как рулить влево, вправо, вниз, вверх... вообщем, на первый взгляд, ничего сложного. К счастью, взлетом и посадкой инструктор пообещал заняться сам :)
Взлетели быстро и плавно, немного полетали над финским заливом неподалеку от Кронштадта. Сверху открывается потрясающий вид. Рулить самолетом оказалось несложно, инструктор давал точные команды - когда нужно поворачивать, набирать или снижать высоту, объяснил как пользоваться приборами. Хотя поначалу, штурвал показался мне слишком чувствительным - чуть тронешь, как самолет начинает заваливаться набок, но спустя всего пару минут к этому привыкаешь.
В самом конце полета инструктор спросил где находится аэродром, пришлось немного подумать и прикинуть, но вроде я указал в правильную сторону :)
Приземлились достаточно мягко, летчик видимо опытный.
Ощущения - отличные! Солнышко светит, птички поют, радости полные штаны :)




Летное воскресенье



воскресенье, января 28, 2007

Пострелушки "Бекас-М"



суббота, января 27, 2007

Я давно его хотел



D is an object-oriented, imperative, multiparadigm system programming language by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is predominantly influenced by that language, it is not a variant of C++. D has redesigned some C++ features and has been influenced by concepts used in other programming languages, such as Java, C# and Eiffel. A stable version, 1.0, was released on January 2, 2007.

D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability.

D is statically typed, and compiles direct to native code. It's multiparadigm: supporting imperative, object oriented, and template metaprogramming styles. It's a member of the C syntax family, and its look and feel is very close to C++'s. For a quick feature comparison, see this comparison of D with C, C++, C# and Java.


// Simple sample: how to use delegates within objects

import std.c.stdio;

// DelegateClass: a class with declared delegate function "printText"
class DelegateClass
{
public void delegate(char[] ) printText;
}

int main()
{
// Function print
void print(char[] text) { printf(text); }

// Initialize a DelegateClass
DelegateClass delclass = new DelegateClass();

// Assign the delegate "printText" to function "print"
delclass.printText = &print;

// Call printText to test

delclass.printText("HELLO\n");

return 0;
}
D perfomance:
http://www.functionalfuture.com/d/

Other links:
http://www.digitalmars.com/d/
http://en.wikipedia.org/wiki/D_language

среда, января 03, 2007

Путешествие по странам Cкандинавии





Празднование нового года на пароме Silja Line по пути из Хельсинки в Стокгольм


четверг, августа 10, 2006

338 часов в Италии


Этот отзыв не о том какая замечательная или какая ужасная страна Италия и как там хорошо или плохо отдыхать, не о том, какой был «отель шЫкарный, пляж Атличный, Икскурссии замИчательные». Каждый побывавший там, сам для себя сделает выводы. В общем, хочу рассказать, как выглядит отдых в Италии изнутри.

Приступим-с :-)

Ура! Самолет мягко приземлился на итальянскую землю. Температура за бортом +33 градуса. Местное время 21 час. Наконец то можно отдохнуть от тяжелых трудовых будней, валяясь на пляже под солнцем и слушать шум моря.
Только это все банальности :)

Перед тем как покупать путевки очень советую не полениться и почитать отзывы об отеле, в котором вы планируете жить. Именно так мы и сделали и вполне были довольны своим отелем. По крайней мере, без не приятных сюрпризов.
Жили мы в отеле Audi (*** + sup) в Римини. Небольшие, уютные номера. Душевая кабинка (пр. в соседнем отеле Diplomat **** в номерах не было душевых кабинок), фен, телевизор, кондиционер и сейф (за отдельную плату), вид на море. Хорошее обслуживание.
С 8-10 завтрак – шведский стол: больший выбор всяких булочек, несколько видов мюсли, вода, молоко, сыр, ветчина, колбаса, консервированные фрукты, чай, кофе (от кофе остался только вкус), соки (видимо «слегка» разбавленные водой). В принципе неплохо.
Днем на reception русскоговорящая девушка, приветливая, всегда поможет и подскажет. Вечером и ночью - «итальяноговорящий» мужчина, знающий пару слов на английском языке и не очень приветливый.
Единственный неприятный инцидент, с которым мы столкнулись в отеле – это потеря карточки от нашего номера, как раз таки этим «итальяноговорящий» мужчиной.
Мы ездили в Рим. Поезд у нас был в 5:40. Чтобы выйти из отеля и отдать карточку от номера, нам необходимо было разбудить этого сторожа. Разбудив его в 5 часов утра, мы прослушали длинную речь на итальянском языке. По его выражению лица мы поняли, что он был, не очень рад, что мы потревожили его сон. Он «любезно» открыл нам двери отеля и забрал карточку (естественно мы назвали номер нашей «комнаты», но видимо он не понял по англиийски). Вернулись мы в 2 часа ночи. И опять мы застали его спящим, и нам вновь пришлось его будить. На этот раз он многозначительно молчал, пытаясь найти карточку от нашего номера, но, как выяснилось, карточка была потеряна. Он запустил нас в номер по своей «уникарте» и ушел (а если, открыв дверь карточкой вы не вставили ее в номере, то электричество отключается автоматически через 10 секунд). Все наши вопросы «как мы будем жить без электричества?» улетели в след уходящему сторожу и остались без ответа.
Утром мы рассказали всю ситуацию русскоговорящей девушке, и она обещала, что найдет карточку. Ближе к вечеру карточка нашлась. В итоге мы почти сутки были без электричества (в номер самим не попасть, света нет, сотовый телефон и фотоаппарат не зарядить, жалюзи не поднять, кондиционер не работает).

Пляж - через дорогу. Лежак стоит 3 евро за день. Можно прийти на пляж вашего отеля, сказать его название и вы получите за 6 евро два лежака и зонт. А если придете на пляж после 16.00, есть вероятность того, что позагораете на лежаке бесплатно. Просто ложитесь и загорайте, надеясь на русское «авось». Авось не подойдет загорелый мужчина в шортах и не попросит у вас 3 евро. :-)

Море (Адриатическое) соленое, иногда прозрачное, чтобы ваши плечи скрыло водой, нужно достаточно далеко зайти. Песок горячий.

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

Согласитесь, как романтично вечером прогуляться по пляжу, пройтись босиком по кромке моря, понаблюдать за закатом солнца. Но будьте готовы к тому, что практически через каждые 20 метров влюбленные парочки «покажут» вам чудеса «Кама сутры» на лежаках, катамаранах и лодках, стоящих на пляже. Мы бы и сами не прочь были, но не нашли свободного места. :)

Если вы решите пойти ночью искупаться в море, то мой вам совет – возьмите только полотенце, а то ваши ценные и не очень ценные вещи могут «сделать ноги». Например, пока мы вечером барахтались в море, наш фотоаппарат (с фотографиями из Венеции) и мобильный телефон «ушли», хотя мы постоянно посматривали за вещами. Вор нам попался «справедливый», он не взял деньги - 35 евро центов.

Заходишь в любой магазинчик, и тебе приветливо говорят Chaio.
А потом выясняется, что даже если вы хорошо знаете английский язык – это совсем не значит, что вам будет легко общаться, так как большинство итальянцев, скорее всего учили английский в начальной школе и мало что помнят из школьной программы. Вывески все тоже только на итальянском (расписание поездов, автобусов, короче все), поэтому учите итальянский язык или ходите с разговорником. :)

Хотите сэкономить деньги? Если вам нужно купить продукты питания, то достаточно свернуть с главной улицы, либо делать покупки в крупных магазинах «типа «Пятерочка». Здесь, как правило, все дешевле почти в два раза.

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

Если будете ездить на местном общественном транспорте (автобусы, троллейбусы), не забывайте заранее приобретать билеты. Их можно купить в табачных лавках Tabacchio (и как выяснилось позже, можно приобрести билеты у водителя автобуса). Билет на 90 минут стоит 1 евро. Заходите в автобус и пробиваете его в специальном желтом ящичке. Кондукторы в транспорте появляются неожиданно, и пока он проверяет у всех наличие билетов, в автобусе работает только одна дверь на вход/выход (убежать не удастся). Так что лучше не рисковать и покупать билеты. Штраф за безбилетный проезд 40 евро с человека, вдобавок могут еще отвести в полицию. Но если с кондуктором провести переговоры, то можно и избежать штрафа. :)

Экскурсии. Если вы молоды, активны, любите активный отдых и не боитесь приключений, то можно сэкономить на экскурсиях достаточно приличную сумму, да и увидеть больше, чем показывают на экскурсиях, организованных тур-фирмами. Путешествовать можно на поездах и специальных автобусах Bonelly Bus.
Еще можно путешествовать по Италии с частниками. Они набирают группы из 8-10 человек. Перевозят на микроавтобусах с кондиционером. По дороге расскажут вам минимум информации о достопримечательностях. Но ездите только с проверенными частниками, а то можете зря потерять время и деньги

Чтобы купить билет на поезд, подходите на вокзале в Information, пишете на бумажке, откуда, куда вы хотите поехать и когда. Вам делают распечатку, и с ней вы проходите на кассу и покупаете билет (ездите 2 классом - дешевле). Но! Старайтесь покупать билеты без пересадок. А то вам придется поиграть в игру «найди нужную платформу и нужный поезд за 5 минут», да и заплатите больше за билеты.
Поезда в Италии лучше, чем наши электрички. Работают кондиционеры, иногда на столько сильно, что всю дорого сидишь и трясешься от холода.

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

Решили позвонить в Россию родственникам? Если не подключили роуминг для сотового телефона, можно купить карточку для международных звонков (3, 5 евро). Телефонных будок понаставлено много. Вот только за 3 евро вы успеете поговорить минут пять. И вообще телефоны там странно себя иногда ведут. Вставляешь карту, набираешь номер, в трубке тишина, а деньги постепенно исчезают на ваших глазах. Так что, ищите ближайшее интернет кафе и общайтесь по интернету – это гораздо выгоднее. Единственное вас попросят предъявить identification - загранпаспорт или права (также могут попросить документы например в аквапарке, чтобы воспользоваться шкафчиком для вещей).

Знайте, что Fabilandia - это парк развлечений для детей до 10 лет. Остальным там вряд ли будет интересно.

Поедите в Рим - посетите Колизей (Colosseo). Если у вас есть лишние 4 часа, то можете честно отстоять очередь за билетами, а можете сделать вид, что вы стоите уже давно в начале очереди, вон за тем дядечкой :). Вход стоит 11 евро.

Побывав в римском метрополитене, мы поняли, что наше питерское метро – это произведение искусства!
Заблудиться там сложно, всего пару веток. Для того чтобы войти в метро покупаете специальную карточку (в табачном киоске либо в специальных автоматах). На один раз карточка стоит 1 евро, на целый день – 4 евро. Для того чтобы поездить по Риму можно смело взять карточку на весь день (4 евро), будет выгоднее.

Aquafun. Не самый лучший аквапарк, который мы видели. Вход стоит 21 евро на целый день. Различные горки, бассейн с искусственной волной и длинные очереди везде.

Italia in Miniatura. Все достопримечательности Италии в миниатюрном варианте. Любопытно посетить и не займет много времени (часа 2-3). Стоимость входа 21 евро на целый день.

Город Пиза. На то, чтобы посмотреть местные достопримечательности («Пизанская башня») и купить сувениров, вам понадобиться часа два с дорогой от вокзала и обратно.

Mirabilandia. Парк развлечений. Просто супер! Советую доехать туда самим (лучше приехать пораньше, чтобы все успеть), сразу же продумайте, как вы будете добираться обратно. Мы вот ехали туда на поезде (сразу же купили билеты и обратно). Там от вокзала прямо до Mirabilandia ездит бесплатный автобус. А с обратной дорогой вышла неувязка. Бесплатные автобусы ездят до вокзала до 23:50, а последний поезд в Римини отправляется в 21:30 (только мы узнали об этом слишком поздно). Доехали до отеля на Bonelly Bus (8,50 евро «с носа»), и то нам повезло, что в автобусе были свободные места, так как остальные пассажиры приехали на этом Bonelly Bus и приобретали билеты заранее в специальных кассах.
Билет в парк стоит 23,50 евро, также советую купить билет в Mirabilandia beach (белый песочек, водные горки, бассейн, лежаки) – 7 евро на целый день (все находится рядом).
Огромное количество аттракционов для всех. В течение дня проводятся различные шоу. Мы были там с 11 до 22 часов и только на одном аттракционе успели прокатиться два раза (естественно мы не катались на детских аттракционах).

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

И напоследок…

Когда мы улетали домой, в Питер, в аэропорту в Римини, в зале ожидания 3 табло, которые показывали время. На первом – 22:26, на втором – 22:46, на третьем – 21:18. Правильным оказалось второе табло. :-/


Italy

понедельник, января 02, 2006

понедельник, декабря 05, 2005

Командная работа.
Самая лучшая зима в Санкт-Петербурге

понедельник, октября 24, 2005