<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9218528766556826375</id><updated>2011-09-17T17:32:14.984+06:00</updated><category term='Веб поиск'/><category term='Resharper'/><category term='Visual Studio'/><category term='МТС'/><category term='Microsoft'/><category term='MSWord'/><category term='Юмор'/><category term='BuddyWay'/><category term='xplat'/><category term='Netvibes'/><category term='Спортмастер'/><category term='w1'/><category term='Черный юмор'/><category term='Spec#'/><category term='Computerra'/><category term='Цензура'/><category term='IETab'/><category term='Valve'/><category term='Бонусы'/><category term='eXtensible C#'/><category term='TDD'/><category term='Футурама'/><category term='web 2.0'/><category term='Романтика'/><category term='История веб-поиска'/><category term='rss'/><category term='gogo'/><category term='Litres'/><category term='М.Видео'/><category term='Yahoo'/><category term='расширения Firefox'/><category term='Человек не с этой планеты'/><category term='NUnit'/><category term='Class Designer'/><category term='lastfm'/><category term='Wakoopa'/><category term='Portal'/><category term='Баллы'/><category term='Pipes'/><category term='Opera'/><category term='Emit'/><category term='Wii'/><category term='Досуг'/><category term='Gmail'/><category term='UML'/><category term='магкие игрушки'/><category term='Начальная школа'/><category term='сотовые'/><category term='Дни разработчика'/><category term='Макс Фрай'/><category term='Лыжи'/><category term='Google'/><category term='Endomondo'/><category term='blog.ru'/><category term='NUnitt'/><category term='C#'/><category term='GoogleReader'/><category term='blogger'/><category term='Firefox'/><category term='Проектирование по контракту'/><category term='Firebug'/><category term='twitter'/><category term='Самара'/><category term='Stylish'/><category term='воспоминания'/><category term='Yandex'/><category term='IE'/><category term='Лукьяненко'/><category term='Стругацкие'/><category term='JavaScript'/><category term='Лабиринты Ехо'/><category term='Оренбург'/><category term='.NET'/><category term='Чтение'/><title type='text'>Личный блог Тагирова Артура</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-2514820346414967784</id><published>2010-03-15T00:10:00.001+05:00</published><updated>2010-03-15T00:16:33.429+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Лыжи'/><category scheme='http://www.blogger.com/atom/ns#' term='Досуг'/><title type='text'>+++</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В&lt;/span&gt;чера удалось таки закрыть лыжный сезон. Лыжи в этот раз катили хорошо, в ушах звучал подкаст, а в лицо летел свежий снежок &lt;b&gt;:) &lt;/b&gt;Дальше просто немного фоток...&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;У&lt;/span&gt;рал потихоньку начинает таять, но скатиться на него пока еще можно, что я и сделал:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EJSGN4G2IQA/S50r_gaXp5I/AAAAAAAABis/SdfwO0VJayE/s1600-h/130320101493.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/_EJSGN4G2IQA/S50r_gaXp5I/AAAAAAAABis/SdfwO0VJayE/s640/130320101493.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_EJSGN4G2IQA/S50xeSZeyrI/AAAAAAAABi4/QpC5rDpZrAI/s1600-h/130320101494.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://1.bp.blogspot.com/_EJSGN4G2IQA/S50xeSZeyrI/AAAAAAAABi4/QpC5rDpZrAI/s640/130320101494.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;потом поднялся...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EJSGN4G2IQA/S50txMJmpcI/AAAAAAAABiw/dXcdgeI3EVg/s1600-h/130320101495.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/_EJSGN4G2IQA/S50txMJmpcI/AAAAAAAABiw/dXcdgeI3EVg/s640/130320101495.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;и еще несколько раз так :) Дальше мы поехали вдоль железки&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; (в общем как всегда)&lt;/span&gt;&lt;/i&gt;:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_EJSGN4G2IQA/S50u33gG9dI/AAAAAAAABi0/RaRW0bL9tQg/s1600-h/130320101510.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/_EJSGN4G2IQA/S50u33gG9dI/AAAAAAAABi0/RaRW0bL9tQg/s640/130320101510.jpg" width="480" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Ж&lt;/span&gt;елезная дорога, конечно, сейчас выглядит довольно странно, ездить по ней пока не стоит &lt;b&gt;;) &lt;/b&gt;Ну, а чем дальше &lt;s&gt;в лес&lt;/s&gt; по пути, тем железка больше скрывалась под снегом...&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Н&lt;/span&gt;а половине пути остановились и попили чаю:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_EJSGN4G2IQA/S50yzt-tpCI/AAAAAAAABi8/pANfs4VQRhM/s1600-h/130320101499.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/_EJSGN4G2IQA/S50yzt-tpCI/AAAAAAAABi8/pANfs4VQRhM/s640/130320101499.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Н&lt;/span&gt;а обратном пути снег начал было уже быть липким, но лыжи уже были накатаны - так что докатиться получилось нормально и достаточно быстро &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(по крайней мере для меня &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:)&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В&lt;/span&gt; общем, вполне себе удачное закрытие сезона &lt;b&gt;;) &lt;/b&gt;Велик вот, скорее всего, будет не скоро...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-2514820346414967784?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/2514820346414967784/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2010/03/blog-post_15.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2514820346414967784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2514820346414967784'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2010/03/blog-post_15.html' title='+++'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EJSGN4G2IQA/S50r_gaXp5I/AAAAAAAABis/SdfwO0VJayE/s72-c/130320101493.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-4080700627153383156</id><published>2010-03-04T00:39:00.000+05:00</published><updated>2010-03-04T00:39:26.463+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Litres'/><category scheme='http://www.blogger.com/atom/ns#' term='xplat'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='М.Видео'/><category scheme='http://www.blogger.com/atom/ns#' term='Resharper'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Баллы'/><category scheme='http://www.blogger.com/atom/ns#' term='NUnitt'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Бонусы'/><category scheme='http://www.blogger.com/atom/ns#' term='МТС'/><category scheme='http://www.blogger.com/atom/ns#' term='Спортмастер'/><category scheme='http://www.blogger.com/atom/ns#' term='w1'/><title type='text'>+++</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;П&lt;/span&gt;оследние недели времени катастрофически ни на что не хватает... но вот вроде бы добрался &amp;nbsp;до своего блога, так что напишу всего понемножку &lt;b&gt;:)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Бонусы, баллы и скидки&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Н&lt;/span&gt;аверное, все в свое время сталкивались со скидочными карточками. Сейчас же они уже не в моде, балом правят бонусы и баллы &lt;b&gt;:)&lt;/b&gt; Быть может, я как нибудь найду время и изложу мысли относительно этой темы в большой пребольшой пост, пока же... Пока же наступило время потратить накопленные баллы, которые обещают в скором времени сгореть, так что в выходные я выбрался в &lt;b&gt;&lt;a href="http://www.sportmaster.ru/"&gt;Спортмастер&lt;/a&gt;&lt;/b&gt; присмотреть себе что нибудь... очень долго ходил по магазину и думал, что же такое купить, что бы и баллы не пропали и полезно было &lt;b&gt;:)&lt;/b&gt; В результате, т.к. в ближайшие месяца полтора-два мне так и не светит попасть в тренажерку, я все таки решил прикупить гантели - хоть как то буду поддерживать свою форму &lt;b&gt;;)&lt;/b&gt; Заодно отыграл&amp;nbsp;рублей&amp;nbsp;500 от стоимости своей куртки.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;А&lt;/span&gt; вот купив два фильма на &lt;b&gt;DVD&lt;/b&gt; и &lt;b&gt;COLIN McRAE DiRT 2&lt;/b&gt; в &lt;b&gt;М.Видео&lt;/b&gt;, выяснил, что там большая часть бонусов уже сгорела &lt;b&gt;:(&lt;/b&gt; К сожалению система бонусов в &lt;b&gt;М.Видео&lt;/b&gt; очень&amp;nbsp;мудреная, так что нормальной выгоды от нее получить очень сложно &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Т&lt;/span&gt;ак же, накануне сервис &lt;a href="http://www.litres.ru/"&gt;&lt;b&gt;Litres.ru&lt;/b&gt;&lt;/a&gt; снова объявил о дополнительных 40% бонусов при первом платеже между 23 февралем и 8 мартом, а учитывая дополнительные 10% при пополнении с &lt;b&gt;&lt;a href="https://www.w1.ru/"&gt;w1.ru&lt;/a&gt;&lt;/b&gt; &amp;nbsp; в итоге получается 50%, чем я в общем и воспользовался и Вам советую, сама&amp;nbsp;&lt;a href="http://w1.ru/news/?news_id=274"&gt;новость тут&lt;/a&gt;,&amp;nbsp;времени&amp;nbsp;осталось&amp;nbsp;не так много&amp;nbsp;&lt;b&gt;;)&lt;/b&gt; Ну а в итоге, я снова запасся художественной литературой, осталось только найти время на ее прочтение... с другой стороны через полторы недели времени на это будет хоть отбавляй.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Н&lt;/span&gt;у и&amp;nbsp;напоследок&amp;nbsp;порадовал\разочаровал &lt;b&gt;МТС &lt;/b&gt;со своей бонусной программой. Если быть точнее, дело даже не в баллах на бонусном счете, а в купоне на 12% скидку при покупке телефона или ноутбука в салоне связи &lt;b&gt;МТС &lt;/b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(насколько я понял, не во всех салонах это работает, но ближайший ко мне есть в списке)&lt;/span&gt;&lt;/i&gt;. Разочарование заключается в том, что покупку надо сделать до 10 марта... а оно мне надо? &lt;b&gt;:)&lt;/b&gt; С другой стороны можно что нибудь приглядеть на 8 марта, вот уж эти вымогатели...&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;COLIN McRAE DiRT 2&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;К&lt;/span&gt;ак я уже говорил выше, на выходных купил себе новую игрушку. Сделано было по большей части на радостях от того, что у меня снова работает &lt;b&gt;DVD&lt;/b&gt; привод на компьютере &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(всего то оказывается надо было удалить какой-то волшебный ключ в реестре, ох уж эта виста...)&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В&lt;/span&gt;печатления от игрушки позитивные, все таки я давно уже не играл в большие тяжелые игры, так что был приятно удивлен общим уровнем игрушки.&amp;nbsp;&lt;b&gt;COLIN McRAY&lt;/b&gt; всегда отличался вроде как лицензированными машинками, которые очень хорошо бьются &lt;b&gt;:)&lt;/b&gt; По мере прохождения трассы низ машины начинает пылиться &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(ну это было уже давно)&lt;/span&gt;&lt;/i&gt;. Режим вида из кабины с места водителя очень понравился. Он конечно не играбелен, в том плане что играть так гораздо сложнее, зато поражает проработанностью. Заезжаешь в лужу - на стекле размазывается грязная вода, из-за которой плохо видно трассу &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(благо, есть дворники)&lt;/span&gt;&lt;/i&gt;. Опять же пыль очень хорошо ложится на стекло &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(другое дело, что к середине трассы порой сложно сохранить лобовое стекло в сохранности &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:)&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;. Ну и по мере прохождения дается возможность ставить какую нибудь игрушку на приборную панель &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(или как она называется?)&lt;/span&gt;&lt;/i&gt; и подвешивать что-нибудь на лобовое стекло - так прикольно все мотается во время трассы, особенно меня веселят трясущиеся глаза черепа &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;О&lt;/span&gt;чень порадовал большой набор музыки, действительно большой набор - сколько трасс я уже прошел, а так и не заметил повторения какой-то композиции, в том же &lt;b&gt;PES&lt;/b&gt; в главном меню все время гоняет чуть ли не одна и та же композиция &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(на самом деле их побольше, но повторение замечаешь очень быстро)&lt;/span&gt;&lt;/i&gt;. К тому же игрушка качественно и полностью переведена на русский язык, даже в итоге на протяжении всей игры все обращаются ко мне по имени &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(все-таки Артур не настолько распространенное имя)&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;П&lt;/span&gt;окупая игру, я так же очень рассчитывал полноценно поиграть в нее с использованием своего геймпада, но все таки геймпад очень плохо приспособлен к гоночным симуляторам &lt;b&gt;:(&lt;/b&gt; По большей части, почему-то плохо срабатывают именно повороты... В итоге играть на клавиатуре гораздо легче, и это при условии, что она беспроводная &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;К&lt;/span&gt; минусам игры можно отнести очень долгую загрузку трасс, а так же основного меню - оно выполнено в виде... в виде вашего фургона и некой местности вокруг него. Хочешь выбрать трассу - зайди в фургон - посмотри на карту. Настроить машину - выйди на улицу, подойди к столику... ну и все в таком духе. Мало того, не сразу ясно куда надо поворачиваться &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(выход из игры оказался в фургоне - надо было повернуться в сторону комнаты с кроватью)&lt;/span&gt;&lt;/i&gt;, так это еще и грузится каждый раз долго &lt;b&gt;:)&lt;/b&gt; Загрузку трассы скрашивает музыка, которой, как я говорил, много, а так же показ статистики в виде падающих табличек... но все равно загрузка происходит очень долго &lt;b&gt;:(&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Рабочее&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Н&lt;/span&gt;а работе все кипит, к сожалению, я сейчас в большей степени отдан &lt;b&gt;xplat&lt;/b&gt;`у, так что за &lt;b&gt;w1&lt;/b&gt; слежу своими ушками на макушке &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;С&lt;/span&gt;ейчас у &lt;a href="https://www.w1.ru/"&gt;w1&lt;/a&gt; очень активно продвигается &lt;a href="http://go.w1.ru/kassa"&gt;новая касса&lt;/a&gt;, она вкусная и скоро станет еще вкуснее... не могу, к сожалению, в полной мере рассказать про планы, по большей части из-за того, что они могут так и остаться планами. Пока же можно посмотреть &lt;a href="http://bessovestny.livejournal.com/11250.html#"&gt;Комикс, созданный для кассы&lt;/a&gt; &lt;b&gt;;)&lt;/b&gt; Так же активно двигаются дела на Украине, посмотрим, к чему это приведет через несколько месяцев. Еще &lt;b&gt;w1&lt;/b&gt; обзавелся своей сокращалкой ссылок &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(это сейчас модно &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;;)&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; так что новости в &lt;a href="http://twitter.com/wallet_one"&gt;триттере&lt;/a&gt; будет теперь публиковать легче.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В&lt;/span&gt; &lt;b&gt;xplat&lt;/b&gt;`е не все так радужно, в том плане, что новости у него нацелены не на пользователя. В ближайшее время придется очень много сделать... Это связано и с фискализацией, срок которой 1 апреля &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(вот пошутим, так пошутим)&lt;/span&gt;&lt;/i&gt;, и с более жестким контролем за точками приема, в частности, придется нам активно дергать наших дилеров для указания актуальных адресов терминалов &lt;b&gt;:)&lt;/b&gt;&amp;nbsp;&lt;b&gt;МТС&lt;/b&gt; вот хочет на терминалах видеть доступ к своему интернет-помощнику.&amp;nbsp;В связи с наведением всяких порядков мне нравится подход &lt;b&gt;Билайна&lt;/b&gt; к делу - он готов платить дополнительный бонус к вознаграждению за&amp;nbsp;соответствие&amp;nbsp;платежки каким-то определенным правилам. Еще он наконец-то задумался поощрять безкомиссионные платежи.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;ReSharper NUnit и прочие прелести&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;П&lt;/span&gt;оследний раз пробовал &lt;b&gt;ReSharper&lt;/b&gt; еще в университете, тогда 2005 студия была еще только в beta. За прошедшее время этот инструмент стал еще более крут, видит даже рекурсию в коде &lt;b&gt;;)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Е&lt;/span&gt;ще он помог мне понять одну простую вещь... Все основные проекты у меня до сих пор находятся под &lt;/span&gt;.NET 2.0&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;, в следствии чего я не пользовался таким синтаксическим сахаром, как auto property, Object Initializer, var... И только благодаря &lt;/span&gt;ReSharper&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; до меня дошло, что это фишки языка &lt;/span&gt;C# 3.0&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;, а не &lt;/span&gt;.NET 3.0&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;\&lt;/span&gt;3.5&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; &lt;/span&gt;:)&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; Нет, часть фишек, конечно, завязана на 3-ий фреймворк, но многие можно использовать и под 2-ым.&amp;nbsp;В конце концов быть может поднакопить и купить лицензию? &lt;/span&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Е&lt;/span&gt;ще я в очередной раз решил попробовать использовать &lt;b&gt;Unit тесты&lt;/b&gt;, благо надо было написать новую библиотечку. &lt;b&gt;TDD&lt;/b&gt; для меня все-таки пока что сложно применим - основная проблема придумать нормальные тесты, а не фиктивные для галочки &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(терпеть не могу такие тесты, когда вижу)&lt;/span&gt;&lt;/i&gt;. К тому же мне гораздо легче начинать именно с наброска нескольких классов, потом накидывания на них тестов, что бы потом можно было спокойно рефакторить их. Тут, конечно, есть еще проблема в том, что мои бизнес-объекты завязаны практически сразу на БД и не содержат очень много логики.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Т&lt;/span&gt;е классы, которые содержат много логики, как правило, работают с внешними шлюзами, а значит, работают с использованием &lt;i&gt;WebRequest&lt;/i&gt;... делать некий &lt;i&gt;ITransport,&lt;/i&gt; чтобы потом можно было обернуть его моками и тестировать, что послал такой-то запрос, в ответ то то... а в конце реализовывать этот &lt;i&gt;ITransport&lt;/i&gt; как некий адаптер к &lt;i&gt;WebRequest&lt;/i&gt;? Слишком трудоемко, а эффект маленький. По большей части из-за того, что основные проблемы выясняются именно на самом шлюзе в ходе его тестирования. К тому же заранее, даже имея документацию, все равно не сможешь угадать, как именно пришлет ответ внешний шлюз, &lt;b&gt;debug&lt;/b&gt; помогает гораздо лучше &lt;b&gt;:)&lt;/b&gt; Кстати, как у Вас с этим?&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Е&lt;/span&gt;ще есть, правда, один проект, где есть действительно нормальные такие классы с кучей логики, которые можно покрыть тестами. Они большие, уже как-то работают, нуждаются в рефакторинге - так что тесты там себя очень оправдают, правда все &lt;i&gt;internal&lt;/i&gt; или &lt;i&gt;private&lt;/i&gt;, так что надо будет сделать еще предварительный вынос всей этой красоты в отдельный проект &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(ей богу, неужели руки почти добрались до этого? &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:)&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;. Будем считать что на новой библиотеке я вспомнил основы &lt;b&gt;NUnit&lt;/b&gt;, хоть и потерял сильно в скорости разработки.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Н&lt;/span&gt;а этом пожалуй все... а то уж и спать пора, а завтра снова в бой &lt;b&gt;;)&lt;/b&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-4080700627153383156?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/4080700627153383156/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2010/03/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/4080700627153383156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/4080700627153383156'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2010/03/blog-post.html' title='+++'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-8181119210035882137</id><published>2010-02-24T00:19:00.001+05:00</published><updated>2010-02-24T00:27:40.474+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Оренбург'/><title type='text'>Старая фотография пешеходного моста через Урал</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Р&lt;/span&gt;азбирал тут старые фотографии и&amp;nbsp;откопал&amp;nbsp;один раритет. Даже не знаю какой это год, но это то место, где сейчас находится пешеходный мост в Зауралку, фото сделано чуть правее от текущего спуска с Беловки, судя по тому, что мне удалось выяснить&lt;span class="Apple-style-span" style="font-family: tahoma, verdana, sans-serif; font-size: 12px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;. К сожалению сканера у меня нет, так что пришлось сфоткать фото&amp;nbsp;&lt;b&gt;;)&lt;/b&gt; результат какой получился:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_EJSGN4G2IQA/S4P2rSmp-DI/AAAAAAAABhY/W3g1HQaz5yI/s1600-h/230220101491.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://1.bp.blogspot.com/_EJSGN4G2IQA/S4P2rSmp-DI/AAAAAAAABhY/W3g1HQaz5yI/s640/230220101491.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;К&lt;/span&gt;ак видно на фотографии, через реку проходит "сезонный" деревянный мост. Насколько мне известно - раньше мост менялся каждый сезон, т.е. зимой можно было ходить по льду, весной все таяло, Урал выходил из берегов, а когда успокаивался - строили вот такой сезонный деревянный пешеходный мост. Весной, пока мост еще не поставили, перебирались на пароме. Зауральная роща, кстати, всегда была очень популярным местом отдыха в Оренбурге, начиная где то с конца XIX века &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;Что-то прямоугольное на том берегу - это, скорее всего, начало возведения чего-то вроде лодочной станции. Её можно &lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/foto/20.jpg"&gt;увидеть&lt;/a&gt; еще на более старых дореволюционных фотографиях, которые я откопал в сети.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В&lt;/span&gt;ообще, фотография скорее всего сделана еще до того, как сделали этот наш нынешний знаменитый спуск с Беловки, на вершине которого стоит памятник Чкалову &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(с того времени мост строили тоже деревянный, но более солидный - фото &lt;/span&gt;&lt;/i&gt;&lt;a href="http://gorodurala.ru/netcat_files/Image/2009/08032009/oldoren2/Orenburg004.jpg"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;тут&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; и &lt;/span&gt;&lt;/i&gt;&lt;a href="http://gorodurala.ru/netcat_files/Image/2009/08032009/oldoren2/Orenburg008.jpg"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;тут&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/i&gt;. Так и не смог найти когда его сделали, но в 60-70 он уже, вроде, был. Мост построили позже, где то в 70-75 &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(тоже так и не удалось найти точную дату)&lt;/span&gt;&lt;/i&gt;. С другой стороны, судя &amp;nbsp;по зданию на фото, детская железная дорога построена &lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;(это, скорее всего, начальная станция, хотя не факт...),&lt;/i&gt;&lt;/span&gt; а железка построена в 1953. В итоге на фото время где то между 50-60, ну или того раньше, если это все таки не железка.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Н&lt;/span&gt;апоследок, если охота посмотреть, старые фото Оренбурга:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://gorodurala.ru/post/2009/03/08/oldoren2.html"&gt;Фото старого Оренбурга - 60 - 70 - 80-е годы&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gorodurala.ru/post/2008/12/20/oldoren.html"&gt;Фото старого Оренбурга&lt;/a&gt;&amp;nbsp;- можно понять на сколько старые у нас некоторые здания&lt;/li&gt;&lt;li&gt;&lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/old_foto_ural.php"&gt;Дореволюционные фотографии набережной Урала в Оренбурге&lt;/a&gt;&amp;nbsp;кстати вместо Чкалова с 1822&amp;nbsp;года стоял &lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/illustracii_iz_toak_xviii/22_b.jpg"&gt;обелиск&lt;/a&gt; в честь освобождения от воинского постоя &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(тоже интересная история)&lt;/span&gt;&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/old_foto_uchebnie_zavedeniya.php"&gt;Дореволюционные фотографии учебных заведений Оренбурга&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/old_foto_raznie_zdaniya.php"&gt;Дореволюционные фотографии различных зданий Оренбурга&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/old_foto_religia.php"&gt;Дореволюционные фотографии религиозных учреждений Оренбурга&lt;/a&gt;&amp;nbsp;тут можно увидеть Казанский кафедральный собор, который стоял на месте фонтана в нескучном или прямо таки на месте Дома совета. Снесли его в 1932 году - советская власть боролась с&amp;nbsp;церковью видимо&amp;nbsp;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;/span&gt;&lt;/i&gt;&lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/30/02_b.jpg"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;фото разбора&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;- собор оказался очень прочным для простого подрыва)&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://kraeved.opck.org/fotoalbom/orenburg/raznie_foto_orenburga_do_2000/01_b.jpg"&gt;Фотография&lt;/a&gt;&amp;nbsp;улицы Советской во времена Сталина. &lt;s&gt;Рекламный&lt;/s&gt; агитационный плакат тот еще &lt;b&gt;:)&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;P&lt;/span&gt;.S. Пошел изобретать машину времени...&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-8181119210035882137?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/8181119210035882137/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2010/02/blog-post_24.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8181119210035882137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8181119210035882137'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2010/02/blog-post_24.html' title='Старая фотография пешеходного моста через Урал'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EJSGN4G2IQA/S4P2rSmp-DI/AAAAAAAABhY/W3g1HQaz5yI/s72-c/230220101491.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-6084263870344952688</id><published>2010-02-20T23:43:00.000+05:00</published><updated>2010-02-20T23:43:13.096+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wakoopa'/><title type='text'>Wakoopa</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;П&lt;/span&gt;рактически всю эту неделю проболел и провел дома &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(тут скорее неделя от пятницы считается)&lt;/span&gt;&lt;/i&gt;, в результате статистика использования программ за последнюю неделю оказалась интересной:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_EJSGN4G2IQA/S4Ao4_oQHsI/AAAAAAAABhQ/IfdIz00pEq8/s1600-h/Wakoopa.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="443" src="http://4.bp.blogspot.com/_EJSGN4G2IQA/S4Ao4_oQHsI/AAAAAAAABhQ/IfdIz00pEq8/s640/Wakoopa.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Б&lt;/span&gt;ольше времени нашлось на &lt;b&gt;Habrahabr &lt;/b&gt;и &lt;b&gt;Google Reader&lt;/b&gt;, по &lt;b&gt;Skype &lt;/b&gt;я общался меньше &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(еще бы, ведь я скрывался &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;:)&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;, да и почту читал реже. Что характерно - судя по статистике &lt;b&gt;Visual Studio&lt;/b&gt; и &lt;b&gt;SQL Server Managment&lt;/b&gt; вообще не попали в 10ку, хотя конечно все это скрывается под &lt;b&gt;Remote Desktop&lt;/b&gt;, т.к. немного по работе все таки пришлось что то делать &lt;b&gt;:) &lt;/b&gt;Еще я видимо часто что то искал, т.к. не помню еще случая, что бы &lt;b&gt;Google Search&lt;/b&gt; попадал в 10ку.&amp;nbsp;Ах, ну и еще видно, что я воспользовался "случаем" и поигрался в эмуляторы &lt;b&gt;;)&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;P&lt;/span&gt;.S. Статистика хранится в сервисе &lt;a href="http://wakoopa.com/"&gt;&lt;b&gt;Wakoopa&lt;/b&gt;&lt;/a&gt;, а для сбора используется специальный треккер этого сервиса. Скриншот из еженедельного отчета от этого сервиса. Рекомендую &lt;b&gt;;)&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-6084263870344952688?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/6084263870344952688/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2010/02/wakoopa.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6084263870344952688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6084263870344952688'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2010/02/wakoopa.html' title='Wakoopa'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EJSGN4G2IQA/S4Ao4_oQHsI/AAAAAAAABhQ/IfdIz00pEq8/s72-c/Wakoopa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-8122005302321533904</id><published>2010-02-20T22:59:00.002+05:00</published><updated>2010-02-20T23:05:29.481+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Лыжи'/><category scheme='http://www.blogger.com/atom/ns#' term='Досуг'/><category scheme='http://www.blogger.com/atom/ns#' term='BuddyWay'/><category scheme='http://www.blogger.com/atom/ns#' term='Endomondo'/><title type='text'>+++</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;С&lt;/span&gt;егодня меня вытащили на лыжный забег в зауралку. Как показала практика, скорость моя оставляет желать лучшего, практически весь путь я был первый, правда с конца &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;К&lt;/span&gt;роме всего прочего решил заодно опробовать сервис &lt;a href="http://www.endomondo.com/"&gt;&lt;b&gt;Endomondo&lt;/b&gt;&lt;/a&gt; - это сервис, который позволяет сохранять путь вашей лыжной пробежки\прогулки\заплыва и т.д. и т.п. В связи с этим заранее в нем зарегистрировался и установил программку на свой телефон &lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(кроме &lt;b&gt;Symbian &lt;/b&gt;версии есть версии и под другие платформы - &lt;b&gt;Android&lt;/b&gt;, &lt;b&gt;iPhone&lt;/b&gt;, и на сколько я понимаю &lt;b&gt;WM&lt;/b&gt;, вполне возможно есть &lt;b&gt;Java&lt;/b&gt;, но я не уверен)&lt;/span&gt;&lt;/i&gt;. В общем об этом сервисе я и хотел сегодня поговорить, а именно в сравнении с &lt;b&gt;&lt;a href="http://www.buddyway.com/"&gt;Buddy way&lt;/a&gt; &lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(это аналог, который я уже попробовал - &lt;/span&gt;&lt;/i&gt;&lt;a href="http://www.buddyway.com/trip/tagirovarthur/20091226"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;пример тут&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;)&lt;span class="Apple-style-span" style="font-style: normal; "&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;П&lt;/span&gt;ервое впечатление от программы - она показалась мне поинтереснее чем &lt;b&gt;Buddy way&lt;/b&gt;. Отличительной особенностью является то, что пройденный путь не отсылается сразу на сервис, как это сделано в &lt;b&gt;Buddy way&lt;/b&gt;, а делает это  автоматически при обнаружении заданной заранее &lt;b&gt;Wi-Fi&lt;/b&gt; точки доступа &lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(я настроил на домашнюю точку доступа)&lt;/span&gt;&lt;/i&gt;. Так же, в &lt;b&gt;Endomondo&lt;/b&gt; можно выбрать тип "прогулки", чего нельзя делать в &lt;b&gt;Buddy way&lt;/b&gt;.&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;К&lt;/span&gt; сожалению в полевых испытаниях не выдержал мой телефон &lt;b&gt;:)&lt;/b&gt; В итоге программа вылетела в самом конце пути. По приходу домой я снова запустил программу и нашел в истории пройденный путь, который тут же автоматически отправился в сервис, но... как выяснилось, путь сохранился не весь &lt;i&gt;(&lt;/i&gt;&lt;a href="http://www.endomondo.com/workouts/w/qVOzfldN1U8"&gt;&lt;i&gt;а вот и он&lt;/i&gt;&lt;/a&gt;&lt;i&gt;)&lt;/i&gt;, обрыв происходит где то на половине &lt;b&gt;:(&lt;/b&gt;. На этом примере сразу же видно, что в случае &lt;b&gt;Budyy way&lt;/b&gt; путь загружается сразу, что немного спасает от вылета программы, зато не так экономно с точки зрения трафика. Стоит сказать, что GPRS\3G может легко потеряться и досылать придется опять же дома, но &lt;b&gt;Buddy way&lt;/b&gt; сохраняет не отправленный путь явно лучше - проверил на своем примере&lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Е&lt;/span&gt;сли говорить про конечное отображение на сервисах и их сравнениях: &lt;b&gt;Buddy way&lt;/b&gt; отображает максимальную скорость и остановки, в &lt;b&gt;Endomondo&lt;/b&gt; этого к сожалению нету, вместо этого только отметки по километру, что явно огорчает - и это не смотря на то, что данные о скорости &lt;b&gt;Endomondo&lt;/b&gt; сохраняет.&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;З&lt;/span&gt;ато &lt;b&gt;Endomondo&lt;/b&gt; более точно строит маршрут по точкам, на сколько я понял &lt;b&gt;Buddy way &lt;/b&gt;использует для построения ломаной стандартные средства google maps, которые "оптимизируют" отображение, в результате чего иногда съедается часть пути - по сути просто используются не все точки для отображения. Стоит отметить, что если в &lt;b&gt;Endomondo&lt;/b&gt; Workout превратить в Route то эффект будет тот же самый - часть точек пропадет из пути и он будет не такой точный... честно говоря мне пока не до конца ясно различие между ними, ну разве что Routes сохраняются на будущее и могут использоваться другими участниками как некая рекомендованная трасса...&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Т&lt;/span&gt;ак же в &lt;b&gt;Buddy way&lt;/b&gt; есть возможность "проиграть" путь, чего к сожалению я не нашел в &lt;b&gt;Endomondo&lt;/b&gt;. Кроме всего прочего в &lt;b&gt;Buddy way&lt;/b&gt; можно связать с прогулкой фотографии, но только в виде альбома из сервиса &lt;b&gt;picasa &lt;/b&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(причем довольно криво, так что не будет записывать это в плюсы &lt;b&gt;Buddy way ;)&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;К&lt;/span&gt; плюсам &lt;b&gt;Endomondo&lt;/b&gt; можно отнести возможность указывать тип прогулки, в дальнейшем эта информация используется для сбора статистики. А так же есть возможность импортировать Workouts в сервис в формате &lt;b&gt;Garmin&lt;/b&gt;. К сожалению я не работал с такими отдельными устройствами &lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(именно гпсники)&lt;/span&gt;&lt;/i&gt;, так что сказать ничего не могу.&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;В&lt;/span&gt; общем и целом, по субъективным ощущениям &lt;b&gt;Endomondo&lt;/b&gt; выглядит более... красяво что ли, но &lt;b&gt;Buddy way&lt;/b&gt; более функциональный будет... На очереди еще несколько подобных сервисов для исследований &lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(&lt;b&gt;Nokia sport tracker&lt;/b&gt; пока не удалось завести на моем телефоне)&lt;/span&gt;&lt;/i&gt; - если у вас есть на примете подобные сервисы, сообщите - буду благодарен &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;P&lt;/span&gt;.S. Специально для тех, кто ждет фотки с прогулки - их практически нету, а если быть точнее есть только общие, сделанные в самом конце, так что не ждите &lt;b&gt;;)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-8122005302321533904?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/8122005302321533904/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2010/02/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8122005302321533904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8122005302321533904'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2010/02/blog-post.html' title='+++'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-8084710103797110733</id><published>2010-01-31T23:04:00.001+05:00</published><updated>2010-01-31T23:14:52.617+05:00</updated><title type='text'>Начинаем все сначала?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Б&lt;/span&gt;лог в своем первом варианте не пошел &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;О&lt;/span&gt;дна из основных причин это отсутствие четкой направленности его тематики. Думая пол года назад об этом я хотел его реанимировать и начать писать что нибудь по околорабочей области &lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;(платежные системы, сервисы и прочее)&lt;/span&gt;&lt;/i&gt;, но ничего не получилось, скажем так - из черновиков не вышел ни один пост &lt;b&gt;:)&lt;/b&gt; Кроме всего прочего последнее время мной в большей степени охватил микроблогинг twitter (если кто не знает &lt;a href="http://twitter.com/tagirovarthur"&gt;@tagirovarthur&lt;/a&gt; это я &lt;b&gt;;)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Б&lt;/span&gt;ыть может когда то, я открою отдельный тематический блог... но он явно будет иметь другое название (если внезапно есть предложения - пишите, я рассмотрю &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;Н&lt;/span&gt;у а пока решил писать тут просто некоторые веселые и не очень моменты из своей жизни, все таки блог имени меня &lt;b&gt;;)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;P&lt;/span&gt;.S. В целях исследования открою "зеркало" на &lt;a href="http://tagirovarthur.spaces.live.com/"&gt;spaces от live&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-8084710103797110733?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/8084710103797110733/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2010/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8084710103797110733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8084710103797110733'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2010/01/blog-post.html' title='Начинаем все сначала?'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3860570642519234089</id><published>2010-01-31T22:25:00.005+05:00</published><updated>2010-01-31T23:18:14.817+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Досуг'/><title type='text'>Гребени 2010-01-31</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;С&lt;/span&gt;егодня меня таки вытащили покататься на сноуборде! Всего в жизни катался на нем 2 раза, сегодня был как раз второй &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;П&lt;/span&gt;огода сегодня была хорошая, не то что весь последний месяц, всего то -10 и практически никакого ветра. Как выяснилось по прибытии, кататься я разучился, пришлось учиться заново... теперь через год снова поеду учиться кататься на сноуборде &lt;b&gt;;)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;И&lt;/span&gt;з полезностей от меня - заснял нашу главную лыжницу на видео, ну хоть какая то польза человеку. После катания с трудом доковылял до дома, теперь отлеживаюсь вот... надеюсь ходить завтра я смогу и дойду таки до работы &lt;b&gt;:)&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;Н&lt;/span&gt;иже маленький фото отчет с места:&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;embed flashvars="host=picasaweb.google.com&amp;amp;captions=1&amp;amp;hl=ru&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FTagirovArthur%2Falbumid%2F5432930839363195441%3Falt%3Drss%26kind%3Dphoto%26hl%3Dru" height="400" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" type="application/x-shockwave-flash" width="600"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-size:xx-large;"&gt;P&lt;/span&gt;.S. И напоследок, спасибо тем, кто меня вытащил, снабдил сноубордом и даже не угробил &lt;b&gt;:)&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3860570642519234089?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3860570642519234089/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2010/01/2010-01-31.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3860570642519234089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3860570642519234089'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2010/01/2010-01-31.html' title='Гребени 2010-01-31'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-7763312249513098898</id><published>2008-04-19T23:41:00.002+06:00</published><updated>2008-04-19T23:42:58.543+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Досуг'/><title type='text'>+++</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/tagirovarthur/2425695880/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2031/2425695880_47e84b35b2_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=" margin-top: 0px;font-size:0.9em;"&gt;  &lt;a href="http://www.flickr.com/photos/tagirovarthur/2425695880/"&gt;IMG_0452&lt;/a&gt; &lt;br /&gt; Originally uploaded by &lt;a href="http://www.flickr.com/people/tagirovarthur/"&gt;arthurtagirov&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;Ну вот, наконец то, и я открыл сезон катания на велосипеде :) После небольшой игры в футбол, подцепился на хвост к другу и затем мы немного покатались по зауралке и не только... Естественно, теперь у меня все болит, но я доволен :)&lt;br /&gt;P.S. По-моему, это первая фотография с моего фотоаппарата со мной за этот год :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-7763312249513098898?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/7763312249513098898/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2008/04/blog-post_6955.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7763312249513098898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7763312249513098898'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2008/04/blog-post_6955.html' title='+++'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2031/2425695880_47e84b35b2_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3719328775110228171</id><published>2008-03-21T23:31:00.005+05:00</published><updated>2008-03-21T23:57:33.733+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog.ru'/><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='lastfm'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>Blog.ru</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;С&lt;/span&gt;егодня наткнулся на блог - &lt;a href="http://blog.ru/"&gt;blog.ru&lt;/a&gt;. Первым делом меня очень развеселила надпись на главной странице - &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;"Твой блог на blog.ru. Логично?"&lt;/span&gt;&lt;/span&gt;. А что, и вправду логично &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;:)&lt;/span&gt; В общем, я решил его попробовать, к тому же там была обещана некая интеграция с &lt;a href="http://www.lastfm.ru/"&gt;lastfm&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Ч&lt;/span&gt;естно признаюсь, как дело обстоит с &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;lastfm&lt;/span&gt; я еще не посмотрел, но вот что мне понравилось, так это возможность импорта записей из других систем, в частности &lt;a href="http://www.blogger.com/"&gt;с &lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a href="http://www.blogger.com/"&gt;blogger&lt;/a&gt;&lt;/span&gt;. Все мои записи спокойно перенеслись в &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;blog.ru&lt;/span&gt;, что самое главное вместе с тегами. Конечно для этого надо было указать логин и пароль, но если кто то не доверяет системе &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(я то наивный чукотский парень)&lt;/span&gt;&lt;/span&gt;, то может воспользоваться импортом сообщений из &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;RSS&lt;/span&gt; &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Atom&lt;/span&gt; так же поддерживается, на сколько я понял)&lt;/span&gt;&lt;/span&gt; ленты &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(не знаю как там с тегами, но по моему их в таком случае просто неоткуда брать)&lt;/span&gt;&lt;/span&gt;. В импорте есть настройки, какие имено посты необходимо импортировать - это могут быть все посты &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;(которые уже есть и которые будут поялвяться в блоге)&lt;/span&gt;&lt;/span&gt;, только вновь появляющиеся и только те, которые уже есть.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В&lt;/span&gt;ообще, настроить можно несколько источников в ваш блог, и в данном случае поддержка &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;RSS&lt;/span&gt; - это очень хорошо &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;;)&lt;/span&gt; Правда вот относительно лент появляется вопрос - как проверить что это ваша лента, но оставим этот вопрос на потом.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Т&lt;/span&gt;ак же можно настроить постинг постов через &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;email&lt;/span&gt;, что может быть очень удобно для микроблогинга.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В&lt;/span&gt;озможностей по настройке интерфейса и прочему наблюдается не так много, но я пока не настолько сильно во всем разбирался. Честно признаться - этот пост является неким тестовым постом, который по идеи должен со временем автоматически появиться и в &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a href="http://tagirovarthur.blog.ru/"&gt;blog.ru&lt;/a&gt;&lt;/span&gt;. Так что - скоро напишу более подробный экскурс по этому новому для меня блогу.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Кстати говоря, есть еще и экспорт блога, который я быть может тоже скоро попробую &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3719328775110228171?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3719328775110228171/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2008/03/blogru.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3719328775110228171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3719328775110228171'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2008/03/blogru.html' title='Blog.ru'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-418171017858373784</id><published>2007-12-09T19:08:00.000+05:00</published><updated>2007-12-09T19:32:55.320+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Emit'/><title type='text'>Отмучался с Emit...</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; предыдущем &lt;a href="http://tagirovarthur.blogspot.com/2007/12/blog-post.html"&gt;посте&lt;/a&gt; я описывал свой механизм проектирования по контракту. Никто ничего не откомментировал по его поводу, ну да ладно, не будем сейчас про это. Сегодня я закончил еще один этап своей работы, а именно генерирование прокси класса по определенному интерфейсу, который внутри себя использует класс &lt;span style="font-style: italic;"&gt;ContractsManager&lt;/span&gt;, который в свое время внутри себя использует класс, который реализует необходимый интерфейс - ужас одним словом &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;опутно с этим, мне пришлось немного разобраться с таким пространством имен как &lt;span style="font-weight: bold;"&gt;System.Reflection.Emit&lt;/span&gt;. Страшное, надо сказать пространство имен &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt; генерированием конструктора, который принимает параметр и запихивает его в специальное поле, проблем не возникло - примеров этого было много &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Ну попутно еще разобрался с тем, как сгенерировать поле.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;альше началась проблема - необходимо было сделать метод, который реализует метод интерфейса следующим образом: внутри себя вызывает специальный метод у поля. Этому методу надо было передать имя метода и параметры метода. Ну так приблизительно я и сделал... Но прокси класс никак не хотел работать, со словами, что у него там какая то фигня сгенерирована, а не метод интерфейса &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Через некоторое время до меня наконец дошло, что это в &lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt; ключевое слово &lt;span style="font-style: italic;"&gt;params &lt;/span&gt;позволяет перечислять параметры через запятую... но потом они упаковываются в массив, а следовательно надо передавать не параметры, а массив параметров... И тут встала проблема - как создать локальную переменную в виде массива объектов, заполнить этот массив из параметров и передать куда нибудь... К счастью &lt;span style="font-weight: bold;"&gt;google&lt;/span&gt; помог и в этом &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; итоге могу сказать - даже если плохо разбираешься в системном программировании .NET&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt; (имеется ввиду Emit, да и вообще программирование на чистом MSIL)&lt;/span&gt;&lt;/span&gt;, то &lt;span style="font-weight: bold;"&gt;google &lt;/span&gt;лучший помошник. Хотя информацию приходиться агрегировать из примеров по маленьким кусочкам... Кстати говоря, ни нашел ни одного нормального источника на русском &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(да и английском)&lt;/span&gt;&lt;/span&gt;, где можно было бы подробно почитать про Emit. Есть что то на &lt;a href="http://www.intuit.ru/department/pl/cil/10/"&gt;intuit&lt;/a&gt;, но там на очень конкретном примере, в котором многое опускается...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; А еще наконец то заменил себе старый монитор на новый &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-418171017858373784?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/418171017858373784/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/12/emit.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/418171017858373784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/418171017858373784'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/12/emit.html' title='Отмучался с Emit...'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-8401771272435269452</id><published>2007-12-02T19:56:00.001+05:00</published><updated>2007-12-03T10:05:19.251+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Проектирование по контракту'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Проектирование по контракту - первые попытки</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;егодня я предложу вам один способ использования проектирования по контракту в &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt;, точнее очередную библиотеку, автором которой и являюсь &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Надеюсь, что вы напишите свои впечатления, замечания, пожелания и т.д. и т.п.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;а сегодня, наверное, будет только один пример использования. Пример, который используется во многих статьях про проектирование по контракту - класс стек &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;начала приведу код интерфейса - он довольно простой &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);" class="kwd"&gt;public&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);" class="pln"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);" class="kwd"&gt;interface&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);" class="pln"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 153, 153);" class="typ"&gt;IStack&lt;/span&gt;&lt;span class="pun"&gt;&lt;&lt;/span&gt;&lt;span class="pln"&gt;T&lt;/span&gt;&lt;span class="pun"&gt;&gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);" class="kwd"&gt;    int&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Count&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);" class="kwd"&gt;    bool&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Empty&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln"&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span class="pun"&gt;;&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);" class="kwd"&gt;    void&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Put&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;T item&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;br /&gt;    T &lt;/span&gt;&lt;span class="typ"&gt;Remove&lt;/span&gt;&lt;span class="pun"&gt;();&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;br /&gt;    T &lt;/span&gt;&lt;span class="typ"&gt;GetItem&lt;/span&gt;&lt;span class="pun"&gt;();&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;еперь можно сказать, какие предусловия, постусловия и инварианты можно придумать для данного интерфейса. Инвариантом может послужить условие о том, что количество элементов всегда больше или равно нулю. Предусловием для методов &lt;span style="font-style: italic;"&gt;Remove&lt;/span&gt; и &lt;span style="font-style: italic;"&gt;GetItem&lt;/span&gt; будет то, что количество элементов в стеке больше нуля. Постусловием для метода &lt;span style="font-style: italic;"&gt;Put&lt;/span&gt; будет то, что свойство &lt;span style="font-style: italic;"&gt;Count&lt;/span&gt; увеличивается на единицу, для &lt;span style="font-style: italic;"&gt;Remove&lt;/span&gt; - уменьшается на единицу, для &lt;span style="font-style: italic;"&gt;GetItem&lt;/span&gt; - свойство &lt;span style="font-style: italic;"&gt;Count&lt;/span&gt; не изменяется.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;о схеме, которую хочу предложить вам я, все утверждения записываются в отдельном классе &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(хотя их может быть и больше)&lt;/span&gt;&lt;/span&gt;. Для каждого метода этого отдельного класса можно указать чем именно он является - предусловием, постусловием или инвариантом. Так же, необходимо произвести что то вроде &lt;span style="font-style: italic;"&gt;mapping`а&lt;/span&gt; или &lt;span style="font-style: italic;"&gt;биндинга &lt;/span&gt;параметров этих методов к параметрам проверяемого метода, а так же свойствам и полям. Все это делается через атрибуты.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;риведу пример проверяющего класса:&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;internal class &lt;/span&gt;&lt;span style="color: rgb(51, 153, 153);"&gt;StackCheck&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   [&lt;span style="color: rgb(51, 153, 153);"&gt;Invariant&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Количество элементов больше или равно 0"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   public bool&lt;/span&gt; CheckCount(&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; Count)&lt;br /&gt;   {&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        return &lt;/span&gt;Count &gt;= 0;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   [&lt;span style="color: rgb(51, 153, 153);"&gt;Ensure&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Количество элементов увеличивается на единицу"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"Put"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   public bool&lt;/span&gt; EnsurePut(&lt;br /&gt;       [&lt;span style="color: rgb(51, 153, 153);"&gt;Old&lt;/span&gt;][&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Count"&lt;/span&gt;)] &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; oldCount,&lt;br /&gt;       [&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Count"&lt;/span&gt;)] &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; count)&lt;br /&gt;   {&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        return&lt;/span&gt; count == oldCount + 1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   [&lt;span style="color: rgb(51, 153, 153);"&gt;Ensure&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Количество элементов уменьшается на единицу"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"Remove"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   public bool&lt;/span&gt; EnsureRemove(&lt;br /&gt;       [&lt;span style="color: rgb(51, 153, 153);"&gt;Old&lt;/span&gt;][&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Count"&lt;/span&gt;)] &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; oldCount,&lt;br /&gt;       [&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Count"&lt;/span&gt;)] &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; count)&lt;br /&gt;   {&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        return&lt;/span&gt; count == oldCount - 1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   [&lt;span style="color: rgb(51, 153, 153);"&gt;Ensure&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Количество элементов не изменяется"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"GetItem"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   public bool&lt;/span&gt; EnsureItem(&lt;br /&gt;       [&lt;span style="color: rgb(51, 153, 153);"&gt;Old&lt;/span&gt;][&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Count"&lt;/span&gt;)] &lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;oldCount,&lt;br /&gt;       [&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Count"&lt;/span&gt;)] &lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;count)&lt;br /&gt;   {&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        return &lt;/span&gt;count == oldCount;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   [&lt;span style="color: rgb(51, 153, 153);"&gt;Require&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Стек не должен быть пустым"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"GetItem"&lt;/span&gt;)]&lt;br /&gt;   [&lt;span style="color: rgb(51, 153, 153);"&gt;Require&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Стек не должен быть пустым"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"Remove"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   public bool&lt;/span&gt; RequireNotEmpty([&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Count"&lt;/span&gt;)] &lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;count)&lt;br /&gt;   {&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        return &lt;/span&gt;count &gt; 0;&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;есложно заметить, что все проверочные методы должны возвращать &lt;span style="color: rgb(51, 51, 255);"&gt;bool&lt;/span&gt;, в противном случае этот метод будет опущен при проверке.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;А&lt;/span&gt;трибут &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Invariant &lt;/span&gt;задает, что метод является инвариантом класса, в данном случае такой метод один - &lt;span style="font-style: italic;"&gt;CheckCount&lt;/span&gt;. В параметр конструктора атрибута можно передать описание инварианта. В случае, если инвариант не выполнится, то это сообщение будет использоваться в качестве сообщения ошибки, так же этот текст может быть использован для документации &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(подумываю позже написать что нибудь и для этого &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;еред параметром &lt;span style="font-style: italic;"&gt;Count &lt;/span&gt;этого проверочного метода нет никакого атрибута, в таком случае для метода инварианта этот параметр будет пытаться биндиться к свойству проверяемого класса с соответствующим именем &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(регистр в данном случае важен)&lt;/span&gt;&lt;/span&gt;, если такого свойства не будет, то к полю с таким названием, если не будет и поля, то сгенерируется исключение. В общем случае перед параметром проверочного метода инварианта можно указать один из двух атрибутов - &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;PropName&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(биндится к свойству с указанным именем)&lt;/span&gt;&lt;/span&gt; или &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;FieldName &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(биндится к полю с указанным именем)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;ледующий метод помечен атрибутом &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Ensure&lt;/span&gt;. Этот атрибут принимает два параметра: описание &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(использование аналогично инварианту)&lt;/span&gt;&lt;/span&gt;, а так же название метода, к которому относится постусловие. Кроме уже имеющихся возможных атрибутов параметров, в постусловиях можно использовать атрибут &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Old&lt;/span&gt;. Он говорит о том, что значение свойства &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(или чего то другого, в зависимости от второго параметра)&lt;/span&gt;&lt;/span&gt; должно браться до того, как был вызван проверяемый метод. Так же, кроме атрибутов биндинга к свойству и полю можно использовать атрибут биндинга к параметру метода - &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;PropName&lt;/span&gt;. Если никакого атрибута не проставлено, то считается, что стоит атрибут &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;PropName&lt;/span&gt; с названием аналогичному названию параметра. Сам метод &lt;span style="font-style: italic;"&gt;EnsurePut&lt;/span&gt; проверяет, что количество элементов после вызова метода &lt;span style="font-style: italic;"&gt;Put&lt;/span&gt; в проверочном классе будет увеличено ровно на единицу. Следующий метод - &lt;span style="font-style: italic;"&gt;EnsureRemove&lt;/span&gt;, практически идентичен предыдущему, только он проверяет, что количество элементов уменьшилось на единицу после вызова метода &lt;span style="font-style: italic;"&gt;Remove&lt;/span&gt;. Далее идет метод &lt;span style="font-style: italic;"&gt;EnsureItem&lt;/span&gt; - он проверяет, что после вызова метода &lt;span style="font-style: italic;"&gt;GetItem&lt;/span&gt; количество элементов не изменится.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;ледующий метод помечен атрибутом &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Require &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(даже двумя &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; Параметры атрибута &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Require &lt;/span&gt;аналогичны атрибуту &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Ensure&lt;/span&gt;, только он говорит о том, что помеченый им метод является предусловием, а не постусловием. К параметрам метода предусловия могут применены все те же атрибуты, что и к методам &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Ensure&lt;/span&gt;, за исключением &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Old &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(он просто опускается и не учитывается)&lt;/span&gt;&lt;/span&gt;. Как видно из кода, здесь проверяется, что перед вызовом методов &lt;span style="font-style: italic;"&gt;Remove &lt;/span&gt;и &lt;span style="font-style: italic;"&gt;GetItem &lt;/span&gt;количество элементов больше нуля.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; принципе, логичнее проверять не свойство &lt;span style="font-style: italic;"&gt;Count&lt;/span&gt;, а свойство &lt;span style="font-style: italic;"&gt;Empty&lt;/span&gt;. В таком случае код можно переписать так:&lt;pre&gt;[&lt;span style="color: rgb(51, 153, 153);"&gt;Require&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Стек не должен быть пустым"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"GetItem"&lt;/span&gt;)]&lt;br /&gt;[&lt;span style="color: rgb(51, 153, 153);"&gt;Require&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Стек не должен быть пустым"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"Remove"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public bool&lt;/span&gt; RequireNotEmpty([&lt;span style="color: rgb(51, 153, 153);"&gt;PropName&lt;/span&gt;("Empty")] &lt;span style="color: rgb(51, 51, 255);"&gt;bool &lt;/span&gt;empty)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    return &lt;/span&gt;!empty;&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt;ак можно заметить, сам класс помечен как &lt;span style="color: rgb(51, 51, 255);"&gt;internal&lt;/span&gt;. По крайней мере для рефлексии это имеет не такое большое значение &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;еперь, имея такой класс, мы можем сказать интерфейсу стека, что он должен использовать его в качестве проверочного - для этого служит атрибут &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;ContractsType&lt;/span&gt;, которому необходимо передать тип проверяемого класса. Еще одно немаловажное свойство, в связи с этим, проверочный класс &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в нашем случае &lt;span style="color: rgb(51, 153, 153);"&gt;StackCheck&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; должен иметь пустой публичный конструктор &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(хотя по поводу публичного - кто знает эту рефлексию &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;[&lt;span style="color: rgb(51, 153, 153);"&gt;ContractsType&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(51, 153, 153);"&gt;StackCheck&lt;/span&gt;))]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public interface &lt;/span&gt;IStack&lt;t&gt;;&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    //Описание интерфейса...&lt;/span&gt;&lt;br /&gt;}&lt;/t&gt;&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;аверное теперь у вас возникает вопрос - как все это использовать? А использовать все это можно через специальный класс, который называется &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;ContractsManager &lt;/span&gt;- он создается для экземпляра определенного класса. Например можно использовать вот так:&lt;pre&gt;&lt;span style="color: rgb(51, 153, 153);"&gt;Stack&lt;/span&gt;&lt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt;&gt; stack = &lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(51, 153, 153);"&gt;Stack&lt;/span&gt;&lt;int&gt;();&lt;br /&gt;&lt;span style="color: rgb(51, 153, 153);"&gt;ContractsManager &lt;/span&gt;contractsManager = &lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(51, 153, 153);"&gt;ContractsManager&lt;/span&gt;(stack);&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; res = contractsManager.RunMethod&lt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt;&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Remove"&lt;/span&gt;);&lt;/int&gt;&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; данном примере мы создаем класс &lt;span style="font-style: italic;"&gt;"обертку"&lt;/span&gt;, которая может вызвать метод вместе с проверками. Заметьте, что используется &lt;span style="font-style: italic;"&gt;generic &lt;/span&gt;метод - для того, что бы указать, результат какого типа вернет метод. Так же, обратите внимание на то, что здесь используется класс &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;Stack &lt;/span&gt;- наследник интерфейса &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;IStack&lt;/span&gt;&lt;int&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;- т.е. все проверки наследуются по иерархии.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;.к. стек создается по умолчанию пустой, то в данном случае сгенерируется исключение - &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;RequireException &lt;/span&gt;с текстом сообщения - "Стек не должен быть пустым".&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Е&lt;/span&gt;сли необходимо вызвать метод без каких либо проверок, то можно просто вызвать метод у экземпляра класса. Но это еще не все. На самом деле у каждого из атрибутов &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(Invariant, Require и Ensure)&lt;/span&gt;&lt;/span&gt; имеется еще один параметр, который можно задать - это приоритет &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(по умолчанию он равен 0)&lt;/span&gt;&lt;/span&gt;. У класса &lt;span style="color: rgb(51, 153, 153); font-weight: bold;"&gt;ContractsManager &lt;/span&gt;в свое время так же есть 3 свойства которые задают максимальные приоритеты для инвариантов, предусловий и постусловий &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(по умолчанию тоже равны 0)&lt;/span&gt;&lt;/span&gt;. Соотвественно эти свойства можно менять во время исполнения программы тем самым &lt;span style="font-style: italic;"&gt;"балансируя"&lt;/span&gt; производительностью.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Е&lt;/span&gt;стественно, что все это пока только... бета &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Уже сейчас есть некоторые проблемы, например с &lt;span style="font-style: italic;"&gt;generic &lt;/span&gt;- скажем так, пока что я особо не обращаю на них внимание. Так же, есть еще несколько идей относительно того, что можно было бы еще добавить. В общем, жду так же и ваших комментариев &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Да, я очень не хороший мальчик, но библиотеку с кодом всего этого я пока никуда не выложил &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/int&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-8401771272435269452?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/8401771272435269452/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8401771272435269452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8401771272435269452'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/12/blog-post.html' title='Проектирование по контракту - первые попытки'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-2601010142539493824</id><published>2007-12-02T12:43:00.000+05:00</published><updated>2007-12-02T12:54:21.916+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pipes'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><title type='text'>Pipes</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;аткнулся сегодня на один интересный &lt;a href="http://pipes.yahoo.com/pipes/"&gt;сервис&lt;/a&gt;. Служит он для построения лент новостей из уже имеющихся, причем имеется очень много интересных возможностей.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;апример можно взять обычную ленту новостей и отфильтровать все ее записи по категориям или еще чему нибудь. Так же можно переименовать часть полей, можно сделать &lt;span style="font-weight: bold;"&gt;join &lt;/span&gt;нескольких лент, ну и всякого рода другие интересные возможности. В общем, советую попробовать хотя бы ради интереса &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;И&lt;/span&gt;з недостатков пока нашел только то, что иногда русский язык отображается неправильно &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(но скорее всего это связано с неправильным указанием кодировки в самой ленте новостей)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;ам сервис предоставляет &lt;span style="font-weight: bold;"&gt;yahoo&lt;/span&gt;, но самое интересное, что при этом сервис использует некоторые &lt;span style="font-weight: bold;"&gt;API &lt;/span&gt;от &lt;span style="font-weight: bold;"&gt;google&lt;/span&gt;. В общем, идея, конечно интересная, посмотрим что будет дальше.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-2601010142539493824?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/2601010142539493824/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/12/pipes.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2601010142539493824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2601010142539493824'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/12/pipes.html' title='Pipes'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-6151226319399604577</id><published>2007-11-30T21:53:00.000+05:00</published><updated>2007-11-30T21:56:51.821+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wii'/><title type='text'>+++</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;омните, как в ночном дозоре Завулон играет в приставку с помощью сотового телефона? Ну точнее махает мечом путем махания сотовым телефоном... Так вот кто, оказывается, придумал &lt;span style="font-weight: bold;"&gt;Wii&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-6151226319399604577?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/6151226319399604577/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post_30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6151226319399604577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6151226319399604577'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post_30.html' title='+++'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-9135395968287001560</id><published>2007-11-30T10:24:00.000+05:00</published><updated>2007-11-30T10:36:34.602+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='Valve'/><title type='text'>Still Alive</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;аверное многие уже слышали эту песенку... Если, конечно играли в &lt;span style="font-weight: bold;"&gt;Portal :)&lt;/span&gt; В данном случае можно посмотреть на живое исполнение &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-size:180%;"&gt;Е&lt;/span&gt;ще хотелось бы сказать, что в &lt;span style="font-weight: bold;"&gt;Valve &lt;/span&gt;всегда делали довольно хорошие игры. Меня конечно немного тошнило во время игры в &lt;span style="font-weight: bold;"&gt;Portal&lt;/span&gt;, но сама история меня зацепила - особенно песенка в конце. Ну и конечно же, интересно было в свое время почитать про то, как создавалась эта игрушка, как внедрялись некоторые забавные элементы игры...&lt;div style="text-align: center;"&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bWUcVj31QaM&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/bWUcVj31QaM&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;P&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.S.&lt;/span&gt; Хочу пирог... &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-9135395968287001560?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/9135395968287001560/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/still-alive.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/9135395968287001560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/9135395968287001560'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/still-alive.html' title='Still Alive'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-2866594019919150415</id><published>2007-11-19T09:35:00.000+05:00</published><updated>2007-11-19T10:08:06.311+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Проектирование по контракту'/><title type='text'>Проектирование по контракту (бинарный поиск)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;В свое время много вопросов вызвала дискуссия: надо ли проверять массив на упорядоченность (предусловие) при бинарном поиске. Надо? :)&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;оразмышляю на эту тему &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;ачну с того, что еще раз обращу внимание на то, что в теории никто не говорит о том, что в действительности надо делать с предусловием, постусловием и инвариантами. Они есть и все &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;еперь обратимся к разуму &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; На сколько мне известно, бинарный поиск имеет сложность Q(log(n)) &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(по умолчанию у программистов логарифм двоичный &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, а вот проверка массива на упорядоченность, по всей видимости, Q(n) &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(по крайней мере я не знаю способа сделать это быстрее &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; Т.е. получается, что сама по себе проверка сводит на нет все преимущества бинарного поиска... К тому же, стоит сказать, что выигрыш в бинарном поиске обычно происходит при неоднократном обращении &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(имеется в виду, что если нам надо найти элемент в не упорядоченном массиве один раз, то лучше просто пройтись по нему, чем отсортировать его, а потом искать в нем бинарным поиском)&lt;/span&gt;&lt;/span&gt;. При рассмотрении проблемы с этого ракурса, кажется логичным не включать проверку массива на упорядоченность в бинарный поиск &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;еперь стоит ответить на вопрос - что же тогда делать с наши предусловием? Оно же имеет место быть &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(по логике вещей)&lt;/span&gt;&lt;/span&gt;. На самом деле, скорее всего это тот класс &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(имеется в виду не класс в программировании, а... социальный класс &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; предусловий, который может использовать в своей работе разработчик. Т.е. другими словами, у программиста есть метод бинарного поиска, который ему необходимо реализовать, причем при этом ему сказано - &lt;span style="font-style: italic;"&gt;"не заморачивайся по поводу не упорядоченности элементов в массиве"&lt;/span&gt;. Такие предусловия не должны попадать в код в виде непосредственных проверок. В принципе, можно сделать их автоматическое добавление в &lt;span style="font-weight: bold;"&gt;xml &lt;/span&gt;документацию &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у и напоследок, рассмотрим несколько примеров предусловий для бинарного поиска, которые можно было бы и включить в код.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;И&lt;/span&gt;так, начнем с упорядоченности элементов в массиве. Вроде мы можем быть абсолютно уверены в том, что элементы в массиве упорядочены, но не совсем &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Ведь нам еще важно - в каком направлении они упорядочены &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Так что проверяем, что, первый элемент &lt;= последнему. В принципе, от данной проверки можно отказаться, если написать такой бинарный поиск, который просто анализирует, в каком направлении отсортирован массив. Вторая проверка больше подойдет для &lt;span style="font-weight: bold;"&gt;Generic&lt;/span&gt; коллекций. Если я ничего не путаю, то, скорее всего, в алгоритме бинарного поиска придется что то сравнивать &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; А это означает, что элементы массива должны реализовывать интерфейс &lt;span style="font-weight: bold;"&gt;IComparable &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну если мы говорим про &lt;span style="font-weight: bold;"&gt;.NET ;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt;стати говоря, наверное еще желательно, что бы все элементы были одного типа &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(точнее говоря приводились к типу, который мы ищем)&lt;/span&gt;&lt;/span&gt;. Но это уже попахивает очередной проверкой всех элементов &lt;span style="font-weight: bold;"&gt;;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у вот на этом я, пожалуй, и закончу &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-2866594019919150415?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/2866594019919150415/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post_19.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2866594019919150415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2866594019919150415'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post_19.html' title='Проектирование по контракту (бинарный поиск)'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-1892257756000468695</id><published>2007-11-18T21:52:00.000+05:00</published><updated>2007-11-18T21:56:57.293+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Юмор'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Dot Net Books</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;аткнулся тут на один &lt;a href="http://www.dotnetbooks.com/"&gt;сайт&lt;/a&gt; посвященный книжкам по &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt;. Наполнение этого сайта меня просто поразило &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Особой внимание обратите на комментарий к первому посту &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-1892257756000468695?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/1892257756000468695/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/dot-net-books.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/1892257756000468695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/1892257756000468695'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/dot-net-books.html' title='Dot Net Books'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-7280643208034145466</id><published>2007-11-18T19:43:00.000+05:00</published><updated>2007-11-18T20:26:00.330+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Проектирование по контракту'/><title type='text'>Проектирование по контракту - идеальный случай</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;опробую написать &lt;span style="font-style: italic; font-weight: bold;"&gt;коротенький&lt;/span&gt; такой пост про то, как бы по моему мнению идеально выглядело бы внедрение &lt;span style="font-weight: bold;"&gt;DBC&lt;/span&gt; в язык программирования, так сказать - мечты &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;опустим что у нас есть некий проект в котором есть классы с описанными инвариантами, пред и пост условиями. Ну и представим, что их описание довольно легкое, скажем так, нас в первую очередь сейчас должен волновать не способ их описания &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Что теперь с этим описанием необходимо делать?&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у можно делать, например, разного рода ворнинги. Например, есть метод у которого в предусловии у первого параметра стоит, что он должен быть больше нуля, а мы передаем туда переменную просто типа int. В таком случае необходимо добавить warning о том, что переменная может быть и меньше нуля. Ну или есть у нас еще некий класс у которого есть свойство для которого задано, что оно больше нуля и именно это свойство мы передаем в метод - в таком случае ворнинга быть не должно быть.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;од категорию таких же проверок может подойти так же, например, вызов метода из другого метода. Есть метод1, который внутри себя где то в середине вызывает метод2, передавая ему расчитанные в методе1 параметры. В зависимости от входных данных метода1 зависит передаваемый параметр в метод2, т.е. в зависимости от ограничений на входные данные метода1 зависит то, какой параметр мы можем передать в метод2. Анализируем ограничения на параметр в методе2 и, быть может, выдаем замечание о том, что ограничение на параметр в методе1 можно и усилить, т.к. при некоторых его значениях вызов метода2 будет некорректен.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;усть у всех пред пост условий и инвариантов есть приоритет - в таком случае при компиляции можно указывать, какие проверки в итоге можно включать результирующий код, а какие нет. Это так сказать - игра с балансом производительности и безопасности.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;озможность автоматического тестирования на основе все тех же пред пост условий и инвариантах.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; общем говоря, &lt;span style="font-weight: bold;font-size:100%;" &gt;DBC&lt;/span&gt; должен открыть возможность дополнительного анализа кода &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ведь появилась некая дополнительная мета информация о нем)&lt;/span&gt;&lt;/span&gt;, а не просто добавлять проверки в код &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-7280643208034145466?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/7280643208034145466/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post_18.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7280643208034145466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7280643208034145466'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post_18.html' title='Проектирование по контракту - идеальный случай'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3676647182847289527</id><published>2007-11-18T13:17:00.000+05:00</published><updated>2007-11-18T17:24:10.793+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Проектирование по контракту'/><category scheme='http://www.blogger.com/atom/ns#' term='Spec#'/><category scheme='http://www.blogger.com/atom/ns#' term='eXtensible C#'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='NUnit'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>Проектирование по контракту (часть 2ая)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; предыдущем &lt;a href="http://tagirovarthur.blogspot.com/2007/11/1.html"&gt;посте&lt;/a&gt; я начал рассказывать про проектирование по контракту &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(DBC)&lt;/span&gt;&lt;/span&gt;. А закончил я рассказ на том, что сделал некий небольшой обзор уже существующих попыток внедрить проектирование по контракту в &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt;. Теперь же наступило время продолжить &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;тоит сказать, что изначально, идею проектирования по контракту я хотел использовать с целью тестирования кода. Идея была приблизительно следующая: описываются предусловия, постусловия и инварианты с помощью атрибутов, затем запускается некая среда, которая подгружает созданную сборку, на основе атрибутов генерирует некий набор случайных тестов, и запускает их. Тут может возникнуть вопрос - какой именно набор тестов, что значит случайный и что эти тесты проверяют? Да и, вообще, зачем все это нужно? Отвечу на вопросы по порядку.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;ачну, наверное издалека, а именно с вопроса - чем меня не удовлетворяют стандартные автоматизированные тесты на основе &lt;a href="http://www.nunit.org/http://www.nunit.org/"&gt;&lt;span style="font-weight: bold;"&gt;NUnit&lt;/span&gt;&lt;/a&gt;? А не удовлетворяют они меня тем, что все тесты приходится придумывать самому. Согласен, что в ряде случаев это правильно, но не всегда. Например, есть у нас метод принимающий целочисленный параметр. Для этого метода известно, что в зависимости от того, в какой диапазон попадет этот параметр, метод может повести себя по разному. Предположим что таких диапазонов 3. В таком случае мы пишем 3 теста, в каждом из которых проверяем метод при подаче в него параметра из соответствующего диапазона &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(1го, 2го и 3го)&lt;/span&gt;&lt;/span&gt;, ну или пишем один большой тест &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(что, лично я, делать не советую &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;. Вроде все правильно, только вот из каждого диапазона мы проверим только несколько значений. А вдруг, на самом деле существует некий 4ый диапазон для чисел из которого наш метод будет выполняться неправильно? В таком случае наши тесты не найдут этот самый диапазон. И это при том, что проверяемый нами метод полностью покрыт тестами. Естественно, что сейчас найдутся люди, которые скажут, что оттестировать все варианты невозможно, но тем не менее...&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Л&lt;/span&gt;ично мне в данной ситуации более логичным кажется в каждом их трех тестов брать не конкретный параметр из заданного диапазона, а случайно сгенерированный. Естественно, что тогда нельзя будет точно определить выходной параметр метода, но, скорее всего некие ограничения на него наложить будет можно &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(сумма двух положительных - положительна)&lt;/span&gt;&lt;/span&gt;. При таком методе тестирования, теоретически, может сгенерироваться параметр из нашего 4го диапазона и в таком случае тест может и не пройти (а может и пройти, выходные параметры мы же проверяем не на точное соответствие). Конечно для верности в тесте надо будет сгенерировать несколько входных параметров. В итоге мы получаем некое стохастическое тестирование. А вдруг да и грохнется наш тест на каких то непредвиденными нами входными данными? Причем, в первую очередь, имеется виду не то, что сам метод не выполнится &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(это уже фуззи тестирование)&lt;/span&gt;&lt;/span&gt;, а то, что выходные параметры не пройдут проверку.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt;онечно нельзя сказать, что данный метод тестирования лучше традиционного. Лучше сказать так - они бы прекрасно дополняют друг друга.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у вот мое &lt;span style="font-style: italic;"&gt;"издалека"&lt;/span&gt; и кончилось. Я думаю, что смышленные уже догадались, что три описанных выше теста с легкостью могут быть превращены в три различных контракта для метода. Осталось только автоматизировать процесс автоматической генерации данных, ну а еще придумать удобный способ описания этих самых контрактов &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а иначе толку от идеи мало, т.к. легче будет писать такие тесты ручками)&lt;/span&gt;&lt;/span&gt;. В итоге получаем ответы на наши вопросы. Генерируется набор тестов, который проверяет определенный контракт метода генерируя случайным образом входные данные для этого метода.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;еперь, наверное, стоит ответить на вопрос, какое отношение все это имеет к первому моему посту, где я рассказывал про &lt;span style="font-weight: bold;"&gt;Spec#&lt;/span&gt; и &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt;? А отношение следующее - лично по моему сугубо личному мнению, велосипеды получились неудобные, т.к. использоваться проектирование по контракту должно не как велосипед. Поясню. Теория проектирования по контракту вообще говоря, не подразумевает использования пред пост условий и инвариантов для более простой записи проверяющих условий в коде. В первую очередь она служит для того, что бы описать некие логические ограничения классов во время проектирования &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(именно проектирования, а не кодирования)&lt;/span&gt;&lt;/span&gt;, которые нельзя описать с помощью обычных конструкций языка. Ну, например, нельзя компилятору объяснить, что количество элементов в коллекции должно быть больше нуля, т.к. с точки зрения компилятора int может применять и отрицательное значение. Нет, конечно можно сделать свойство в котором метод set будет все это проверять, но проблема не в этом. Проблема в том, что само по себе условие о том, что свойство Count должно быть больше нуля никак не отражается в описании класса &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в описании интерфейса этого класса, так будет лучше)&lt;/span&gt;&lt;/span&gt; - программист сам понимает, что он должен сделать такое ограничение, ну или проектировщик интерфейсов описывает это дополнительно где нибудь &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(например в тех. задании на реализацию этого интерфейса, или в remarks к свойству)&lt;/span&gt;&lt;/span&gt;. Существующие же решения просто предлагают краткую форму написания проверок.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Е&lt;/span&gt;ще пару слов об автоматизированном тестировании, а точнее о &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;&lt;span style="font-weight: bold;"&gt;TDD&lt;/span&gt;&lt;/a&gt;. Это очень хорошая методология, правда &lt;span style="font-weight: bold;"&gt;;) &lt;/span&gt;На самом деле &lt;span style="font-weight: bold;"&gt;TDD &lt;/span&gt;позволяет как раз частично описать те самые ограничения &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(и не только их)&lt;/span&gt;&lt;/span&gt;. Соотвественно, потом появляется возможность спокойно реализовать код и проверить его с помощью тестов на соответствие этих самых ограничений &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а не написать код, а потом писать тесты, которые "подтверждают" что это самый код работает)&lt;/span&gt;&lt;/span&gt;. На самом деле всвязи с этим у &lt;span style="font-weight: bold;"&gt;TDD&lt;/span&gt; прослеживается хорошая связь с &lt;span style="font-weight: bold;"&gt;DBC&lt;/span&gt;. Только вот &lt;span style="font-weight: bold;"&gt;DBC&lt;/span&gt; содержит более &lt;span style="font-style: italic;"&gt;"абстрактные"&lt;/span&gt; проверки &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(&lt;span style="font-weight: bold;"&gt;TDD&lt;/span&gt; проверяет конкретный пример - частный случай, а &lt;span style="font-weight: bold;"&gt;DBC&lt;/span&gt; говорит, как должно быть в общем)&lt;/span&gt;&lt;/span&gt;. Но не смотря на связь нельзя сказать, что &lt;span style="font-weight: bold;"&gt;TDD&lt;/span&gt; это частный случай &lt;span style="font-weight: bold;"&gt;DBC&lt;/span&gt; или наоборот... просто здесь есть некие пересечения, есть что то общее, но только в некоторых частях обоих методологий.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;емного отступлю от темы, что бы еще раз разрекламировать &lt;span style="font-weight: bold;"&gt;TDD&lt;/span&gt;. Недавно у меня была следующая проблема: я уезжал из города на неделю, но необходимо было придумать задание, которое бы выполнили в мое отсутствие. Задание заключалось в том, что бы создать DataSet определенной структуры. Можно конечно было просто сказать - сделайте DataSet соответствующий структуре такой то БД, но боюсь, что &lt;span style="font-style: italic;"&gt;"реализаторы"&lt;/span&gt; не могли в полной мере понять, как же надо соответствовать структуре БД, да и проверять потом сделанную работу просмотром кода не очень то удобно. Соответственно были сделаны тесты, которые просто проверяли, что DataSet содержит внутри себя такое то кол-во таблиц, что таблицы имеют такие то названия, что в таблицах есть такие то столбцы такого то типа, что заданы определенные ключи и определенные связи между таблицами. Другими словами я описал то, что хотел увидеть в результате, но в форме тестов. В итоге люди, особо не понимающие, что, например, столбец должен иметь такой тип данных и именно такое название, зачем нужны связи между таблицами и т.д. смогли реализовать код &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(хотя конечно не за неделю,  но тут уже проблема в другом)&lt;/span&gt;&lt;/span&gt;. Задание же для них было приблизительно следующее: все кружочки должны быть зеленого цвета. Самое главное, что и я был спокоен относительно того, что код был реализован правильно.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;о вернемся к нашей теме. А начну я с того, что брошу еще один камень в парк велосипедов. Камень этот имеет название &lt;span style="font-style: italic;"&gt;"постусловия"&lt;/span&gt;. Что такое постусловия? Это утверждения, которые говорят о корректности выполненого метода. Что же происходит с ними, например, в &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt;? Постусловия превращаются в подобие &lt;span style="font-weight: bold;"&gt;Assert&lt;/span&gt;, которые вызываются перед return метода... Т.е. получается, каждый раз, когда вызывается метод, он проверяет себя - а правильно ли я вообще выполнился? С одной стороны это, может быть и правильно - метод поймет, что сделал какую то глупость во время выполнения приложения... т.е. приложение более устойчиво к своим же ошибкам? Ну это зависит от того, что в такой ситуации сделает метод. Наверное логичнее всего отправить отчет &lt;span style="font-weight: bold;"&gt;microsoft &lt;/span&gt;- пусть разбираются &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; А если честно, то получается, что тесты перетекли в уже готовое приложение и выполняются каждый раз во время выполнения метода &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(что естественно сказывается на производительности, причем, по моему, это нельзя оправдать большей надежностью)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt; предусловиями все таки все не так плохо. Часть из них действительно необходимо включать в результирующий код, например предусловие о том, что какой то параметр метода не должен быть равен &lt;span style="font-weight: bold;"&gt;null&lt;/span&gt;. С другой стороны возникает вопрос, что делать если предусловие не выполняется? Генерировать исключение, просто выходить из метода?&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у или еще милый пример &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(это если я, конечно, все таки понимаю проектирование по контракту)&lt;/span&gt;&lt;/span&gt;... Допустим у нас есть несколько контрактов на метод сложения двух чисел: &lt;span style="font-style: italic;"&gt;"если оба числа положительные, то результат положителен"&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;"если оба числа отрицательные, то результат отрицателен"&lt;/span&gt;. Ведь у обоих контрактов есть предусловие и постусловие.... причем если для конкретного предусловия не выполняется его постусловие, то метод реализован неправильно, но вод вставлять эти пред и пост условия в конечный исполняемый код... извините, но по моему это неправильно. К тому же тут наблюдается следующая ситуация: несоответствие одному из предусловий еще не говорит о том, что входные параметры неверны, ведь они вполне подходят для другого предусловия. В данном примере входные параметры даже могут не удовлетворять обоим предусловиям. В общем случае тут получается ситуация, когда по одному из контрактов метод с данными входными  параметрами выполняться не должен, а по другому должен. Что делать? Это зависит от самих контрактов. Например контракт должен быть обязателен к исполнению, или нет. Тут мне, наверное, стоит оговориться - на сколько я помню, в самой теории &lt;span style="font-weight: bold;"&gt;DBC &lt;/span&gt;нет вывода нескольких типов контрактов &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а жаль)&lt;/span&gt;&lt;/span&gt;. Кстати, что думаете об этом? Путаю ли я тестирование и проектирование по контракту? &lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;ледующий пункт в моем не структурированном высказывании будет посвящен связи проектирования по контракту и аспектному программированию. Связь может быть натянутой, ну или немного искуственной, сейчас объясню почему. Для начала скажу, что связь проектирования по контракту с аспектным программированием появилось только из-за того, как это проектирование по контракту реализовываться. Ведь самым логичным подходом считается следующий:  ловим момент вызова метода, проверяем все наши предусловия, если они прошли проверку, то вызываем метод, получаем выходные параметры, проверяем на их основе постусловия, если все хорошо, то возвращает результат дальше. Вот и получается, что у нас что то делается в начале вызова метода и в его конце. Лично мое мнение - это все неправильно. По крайней мере про постусловия я уже говорил выше, да и с предусловиями все не так ясно. Могу лишь согласится, что аспектное программирование логично применять при верификации кода в тестах по контрактам и инвариантам.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt;стати об инвариантах. Как не жаль, но инварианты это единственное, что на данный момент до сих пор осталось только в теории... По хорошему, инварианты нужно проверять и в предусловиях и в постусловиях, в реальности же, необходимость в этом наблюдается не всегда &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в принципе отчасти это и логично)&lt;/span&gt;&lt;/span&gt;. Из-за этого, скорее всего, было принято единственное решение - вообще их не использовать, а жаль... Лично я вижу следующее решение данной проблемы: для каждого контракта указывать, какие именно инварианты имеет смысл проверять в данном контракте. Так же, по хорошему, необходимо проверять часть инвариантов, когда происходит изменение свойств и полей. Хотя, учитывая, что свойство - это просто два метода &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а на метод можно навесить контракт)&lt;/span&gt;&lt;/span&gt;, то проблема остается актуальной только для обычных полей.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;одводя промежуточные итоги я могу лишь сказать, что или идеи &lt;span style="font-weight: bold;"&gt;DBC&lt;/span&gt; написаны не очень четко &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(т.е. иногда возникают спорные вопросы относительно того, что же это такое... ну вот как у меня с несколькими контрактами)&lt;/span&gt;&lt;/span&gt;, или везде, где утверждается использование &lt;span style="font-weight: bold;"&gt;DBC&lt;/span&gt; - оно используется только отчасти &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а точнее - используется название "проектирование по контракту" для каких либо целей, но никакое это не проектирование по контракту)&lt;/span&gt;&lt;/span&gt;...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Честно говоря, уже забыл с чего я начал этот пост, и что именно хотел сказать в его начале... Наверное это пока что только начало рассуждений о том, что же на самом деле такое &lt;span style="font-style: italic;"&gt;"проектирование по контракту"&lt;/span&gt;. И, надеюсь, что вы поможете ответить мне на этот вопрос &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3676647182847289527?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3676647182847289527/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/2.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3676647182847289527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3676647182847289527'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/2.html' title='Проектирование по контракту (часть 2ая)'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-1904269947049917964</id><published>2007-11-17T18:17:00.000+05:00</published><updated>2007-11-17T21:49:38.793+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Проектирование по контракту'/><category scheme='http://www.blogger.com/atom/ns#' term='Spec#'/><category scheme='http://www.blogger.com/atom/ns#' term='eXtensible C#'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Проектирование по контракту (часть 1ая)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Now playing on iTunes: &lt;a href="http://www.foxytunes.com/artist/fleur/track/%d0%a1%d0%b5%d0%b3%d0%be%d0%b4%d0%bd%d1%8f" title="'Fleur - Сегодня' - open on FoxyTunes Planet"&gt;Fleur - Сегодня&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; настоящее время я занимаюсь попыткой &lt;span style="font-style: italic;"&gt;"внедрить"&lt;/span&gt; &lt;a href="http://en.wikipedia.org/wiki/Design_by_Contract"&gt;проектирование по контракту&lt;/a&gt; в &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(на примере языка &lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;. Внедрить я взял в кавычки неспроста, дело в том, что под внедрить понимается не как непосредственное внедрение проектирования по контракту в синтаксис языка &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну или в саму среду &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;, больше имеется в виду внедрение идеи проектирования по контракту в сам процесс написания приложений на &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt;. В связи с этим, хотел бы поделится некоторыми идеями и наблюдениями, но о всем по порядку...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;аверное сначала стоит уточнить, что вообще такое проектирование по контракту &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(знающие могут пропустить абзац &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;. Если совсем кратко, то это описание некоторых утверждений, которые должны выполняться в определенный момент работы программы. Например есть некоторые ограничения на входные параметры метода &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(предусловия)&lt;/span&gt;&lt;/span&gt;, если они будут выполнены при вызове метода, то гарантируется что и сам метод выполнится успешно, кроме того будут выполнены ограничения наложенные на выходные параметры метода &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(постусловия)&lt;/span&gt;&lt;/span&gt;, если они конечно есть.  Ну например для метода деления  одного числа на другого: &lt;span style="font-style: italic;"&gt;"второе число не должно быть равно нулю, в таком случае деление произойдет"&lt;/span&gt;. Или для того же метода деления чисел: &lt;span style="font-style: italic;"&gt;"если оба числа положительные, то деление произойдет и результат будет положительным"&lt;/span&gt;. Ну и т.д. Все это называется контрактом &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(контракт на метод)&lt;/span&gt;&lt;/span&gt;. Кроме контрактов есть так называемые инварианты класса &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(вообще говоря, это может быть и интерфейс)&lt;/span&gt;&lt;/span&gt; - это некие утверждения &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(как правило затрагивающие поля и свойства)&lt;/span&gt;&lt;/span&gt;, которые должны удовлетворятся на протяжении всей жизни экземпляра этого класса &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в теории их проверка обычно происходит перед вызовом метода и после его выполнения, т.е. в пред и пост условиях)&lt;/span&gt;&lt;/span&gt;. Примером инварианта для какой нибудь коллекции может служить такое вот утверждение: &lt;span style="font-style: italic;"&gt;"количество элементов в коллекции больше нуля"&lt;/span&gt;. Ну я, надеюсь, что вкратце ясненько, хотя, быть может и не по научному &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;ля чего вообще используется идея проектирования по контракту? В первую очередь для повышения надежности разрабатываемого продукта &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(приложения, кода, "черти что и с боку бантик" - для кого что &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;. Естественно, что идея проектирования по контракту не на столько нова, а значит и для &lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а он тоже уже не так нов)&lt;/span&gt;&lt;/span&gt; уже что то придумано &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(стоит заметить, что в наше время вообще сложно быть в чем то первым, как правило получается только снова изобрести уже существующий велосипед, но это так - лирическое отступление)&lt;/span&gt;&lt;/span&gt;. Существующими и , в принципе, работоспособными примерами чего то придуманного служат, например, &lt;a href="http://en.wikipedia.org/wiki/Spec_sharp"&gt;&lt;span style="font-weight: bold;"&gt;Spec#&lt;/span&gt;&lt;/a&gt; и &lt;a href="http://www.resolvecorp.com/"&gt;&lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt;&lt;/a&gt;. Расскажу про них совсем немного &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;S&lt;/span&gt;pec#&lt;/span&gt; представляет собой некое расширение синтаксиса языка &lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt;. При таком подходе можно написать предусловия, постусловия и инварианты &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(далее будем называть все это прелестями для краткости &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; прямо в коде - прямо как в теории проектирования по контракту. При этом компилятор дополнительно &lt;span style="font-style: italic;"&gt;"что то там"&lt;/span&gt;  проверяет на этапе компиляции на основе этих самых прелестей, что, естественно позволяет выявить ошибки еще на этапе разработки. Так же компилятор на основе все тех же прелестей добавляет ряд проверок в код, которые будут работать во время исполнения. Ну и, естественно для всего этого есть некая среда разработки в виде расширения &lt;span style="font-weight: bold;"&gt;Visual Studio&lt;/span&gt;, что бы жизнь казалась медом &lt;span style="font-weight: bold;"&gt;:) &lt;/span&gt;Не смотря на все, вроде как, имеющиеся плюсы, есть один минус &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(который может все перевесить)&lt;/span&gt;&lt;/span&gt; - &lt;span style="font-weight: bold;"&gt;Spec# &lt;/span&gt;всетаки не &lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt;, т.е. &lt;span style="font-weight: bold;"&gt;другой&lt;/span&gt; язык программирования. Ну так же, по моему, не имеется уже привычного нам всем &lt;a href="http://en.wikipedia.org/wiki/IntelliSense"&gt;&lt;span style="font-weight: bold;"&gt;IntelliSense&lt;/span&gt;&lt;/a&gt; &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;роблему &lt;span style="font-weight: bold; font-style: italic;"&gt;"другого"&lt;/span&gt; языка может решить &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt;, который представляет собой немного другой подход к проблеме внедрения проектирования по контракту. Во-первых, это набор атрибутов, с помощью которых &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(вроде как)&lt;/span&gt;&lt;/span&gt; можно описать наши прелести. Во-вторых, это некое расширение компилятора, которое на основе соответствующих атрибутов вставляет в код дополнительные проверки. Тут может возникнуть вопрос - в чем же отличие, если &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; это тоже расширение компилятора? На самом деле в том, что код написанный с применением &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; можно скомпилировать и обычным компилятором, в таком случае просто атрибуты &lt;span style="font-weight: bold;"&gt;eXtensible&lt;/span&gt; никак не повлияют на скомпилированный код &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(просто останутся в метаданных)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;ут я сделаю некое лирическое отступление про то, как все это работает. На самом деле с &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; компиляция проходит в два прохода: сначала проект собирается обычным компилятором, а затем компилятор &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; загружает созданную сборку, через рефлексию анализирует свои атрибуты, на их основе &lt;span style="font-style: italic;"&gt;"подправляет"&lt;/span&gt; код &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(вставляя проверки)&lt;/span&gt;&lt;/span&gt; и снова все компилирует &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну в случаи неудачи выводит стандартные ошибки компиляции)&lt;/span&gt;&lt;/span&gt;. Соотвественно, за счет этого &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; легко отключается, ну а за счет атрибутов достигается обратная совместимость со стандартным компилятором &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(если это можно назвать совместимостью, лучше сказать так - &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; использует то, что никак не мешает обычному компилятору &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;Стоит сразу сказать, что в &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; так же не обошлось без минусов. Во-первых, из-за применения атрибутов нет никаких проверок во время разработки &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ошибки вскрываются во время компиляции, ну или после &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;;)&lt;/span&gt;&lt;/span&gt;. Во-вторых, из-за применения атрибутов, писать утверждения довольно проблематично, точнее сказать - в атрибут они передаются как самая обычная строчка &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;("count &gt; 0")&lt;/span&gt;&lt;/span&gt; - наверное, отсюда, кстати и берется первый минус , т.к. во время передачи строчки никак нельзя узнать, правильно ли она написана, только во время компиляции &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(другими словами забудьте про &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Intellisense&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:85%;" &gt;;)&lt;/span&gt;. В третьих, никак не используются инварианты классов &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(кстати, может быть их нет и в &lt;span style="font-weight: bold;"&gt;Spec#&lt;/span&gt;...)&lt;/span&gt;&lt;/span&gt;. В четвертых, &lt;span style="font-weight: bold;"&gt;eXtensible C#&lt;/span&gt; применим &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(как видно из названия, кстати)&lt;/span&gt;&lt;/span&gt; только для &lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt; - другими словами, для других языков программирования данные атрибуты являются просто пустышкой.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Е&lt;/span&gt;сть и немного другие подходы &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(например кто то советует просто использовать класс &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;System.Diagnostic.Debug&lt;/span&gt;&lt;span style="font-style: italic;"&gt; с его методом &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Assert&lt;/span&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;/span&gt;. Подведя итог можно сказать следующее: велосипеды уже есть, но ездить на них не так уж и удобно &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(еще лучше сказать - ездить конечно можно, но только при явном желании)&lt;/span&gt;&lt;/span&gt;. Вопрос в другом - можно ли изобрести что то лучше? В общем, если кто то найдет ответ - скажите мне &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; А я по старинке буду пока что просто пробовать изобрести очередной велосипед. Кстати, наконец то настало время рассказать про свои замечания... Но уже, наверное, не сегодня&lt;span style="font-weight: bold;"&gt; ;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;P&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.S.&lt;/span&gt; А пока можете комментировать - ваше мнение мне очень интересно &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-1904269947049917964?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/1904269947049917964/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/1.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/1904269947049917964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/1904269947049917964'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/1.html' title='Проектирование по контракту (часть 1ая)'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3859512139415390</id><published>2007-11-11T22:15:00.000+05:00</published><updated>2007-11-11T22:24:08.387+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Футурама'/><category scheme='http://www.blogger.com/atom/ns#' term='Досуг'/><title type='text'>На кого из героев „Футурамы“ ты похож?</title><content type='html'>&lt;div style="text-align: justify;"&gt;Прошел от тут один милый тест - любителям &lt;span style="font-weight: bold; font-style: italic;"&gt;Футурамы&lt;/span&gt; посвящается&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Что то в моем результате есть противоречивое... но мое, наверное&lt;span style="font-weight: bold;"&gt;)))))&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;table border="0"&gt;&lt;tr&gt;&lt;td&gt;&lt;div align='center'&gt;&lt;br /&gt;&lt;strong&gt;Результат теста &amp;laquo;На кого из героев &amp;#132;Футурамы&amp;#147; ты похож&amp;raquo;:&lt;/strong&gt;&lt;br&gt; &lt;br&gt;&lt;table border="0" width="530" cellspacing="0" cellpadding="0"&gt;&lt;tr&gt;&lt;td height="1" colspan="9" bgcolor="#000000"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="2" colspan="9"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/prof.gif" width="50" height="50"&gt;&lt;br&gt;Проф.&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/leela.gif" width="50" height="50"&gt;&lt;br&gt;Лила&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/hermes.gif" width="50" height="50"&gt;&lt;br&gt;Гермес&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/bender.gif" width="50" height="50"&gt;&lt;br&gt;Бендер&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/zoidberg.gif" width="50" height="50"&gt;&lt;br&gt;Зойдберг&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/fry.gif" width="50" height="50"&gt;&lt;br&gt;Фрай&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/amy.gif" width="50" height="50"&gt;&lt;br&gt;Эми&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/kif.gif" width="50" height="50"&gt;&lt;br&gt;Киф&lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/zapp.gif" width="50" height="50"&gt;&lt;br&gt;Зепп&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="1" colspan="9" bgcolor="#000000"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="30"&gt;&lt;/td&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="20"&gt;&lt;/td&gt;&lt;td align="center" valign="bottom"&gt; &lt;/td&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="25"&gt;&lt;/td&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="15"&gt;&lt;/td&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="35"&gt;&lt;/td&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="45"&gt;&lt;/td&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="30"&gt;&lt;/td&gt;&lt;td align="center" valign="bottom"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/plus.gif" width="20" height="20"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="1" colspan="9" bgcolor="#000000"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;6&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;4&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#6464FF"&gt;-1&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;5&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;3&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;7&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;9&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;6&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font color="#FF6464"&gt;4&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="1" colspan="9" bgcolor="#000000"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;td align="center" valign="top"&gt;&lt;img border="0" src="http://www.futuramer.ru/info/misc/test/minus.gif" width="20" height="5"&gt;&lt;/td&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;td align="center" valign="top"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="1" colspan="9" bgcolor="#000000"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;Если Вы желаете узнать больше о своем характере и о характере  героев &amp;laquo;Футурамы&amp;raquo;, то прочитайте статью &amp;laquo;&lt;a href='http://www.futuramer.ru/info/articles/psycho/'&gt;Псих-о-рама&lt;/a&gt;&amp;raquo;.&lt;/p&gt;&lt;p&gt;&lt;a href='http://www.futuramer.ru/info/misc/test/'&gt;Пройти тест.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3859512139415390?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3859512139415390/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3859512139415390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3859512139415390'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/blog-post.html' title='На кого из героев „Футурамы“ ты похож?'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-5496805733790658959</id><published>2007-11-02T11:16:00.001+05:00</published><updated>2007-11-02T12:20:27.922+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stylish'/><category scheme='http://www.blogger.com/atom/ns#' term='Computerra'/><category scheme='http://www.blogger.com/atom/ns#' term='расширения Firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebug'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Stylish</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;егодня я хотел бы поделиться с вами своей очередной находкой. Находка касается очередного расширения для &lt;a href="http://www.mozilla-europe.org/ru/products/firefox/"&gt;&lt;span style="font-weight: bold;"&gt;Mozilla Firefox&lt;/span&gt;&lt;/a&gt; - &lt;a href="https://addons.mozilla.org/ru/firefox/addon/2108"&gt;&lt;span style="font-weight: bold;"&gt;Stylish&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;А&lt;/span&gt; все началось с того, что сегодня мне окончательно надоело куча лишних рекламных &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(и не только)&lt;/span&gt;&lt;/span&gt; колонок на &lt;a href="http://www.computerra.ru/"&gt;&lt;span style="font-weight: bold;"&gt;computerra &lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в результате сама статья становится до ужаса узкой)&lt;/span&gt;&lt;/span&gt;. Обычные вырезалки нежелательного контента мне не подходили, т.к. они, конечно, что то вырезают, но не факт, что остальной контент после этого встанет на место вырезанного &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(т.е. займет освободившуюся часть)&lt;/span&gt;&lt;/span&gt;...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;ля начала &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(когда я еще не знал про &lt;span style="font-weight: bold;"&gt;Stylish&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; я решил просто проверить, на сколько можно изменить внешний вид &lt;span style="font-weight: bold;"&gt;computerra &lt;/span&gt;подручными средствами. Подручным средством оказался &lt;a href="https://addons.mozilla.org/ru/firefox/addon/1843"&gt;&lt;span style="font-weight: bold;"&gt;firebug &lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(по моему скоро это расширение станет одним из моих самых любимых)&lt;/span&gt;&lt;/span&gt;. С его помощью я довольно быстро разобрался, что мне надо отключать, какие стили править и т.д. Подытожив я понял что сия &lt;span style="font-style: italic;"&gt;махинация &lt;/span&gt;возможна, осталось только все это автоматизировать.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;альше начались долгие поиски. Через некоторое время я уже совсем отчаялся и решил, что изучу наконец - как же пишутся эти самые расширения для &lt;span style="font-weight: bold;"&gt;Firefox &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(я же все таки программист как ни как)&lt;/span&gt;&lt;/span&gt;. Но, тем не менее лень меня победила &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(я же все таки программист как ни как)&lt;/span&gt;&lt;/span&gt; и закончилось все тем, что я нашел уже готовое расширение для &lt;span style="font-weight: bold;"&gt;Firefox :D&lt;/span&gt; Стоит сказать, что изучение устройства расширений лишним тоже не оказалось;)&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;айденным расширением, как несложно догадаться, стало &lt;span style="font-weight: bold;"&gt;Stylish&lt;/span&gt;. После небольшого изучения я приступил к реализации, а именно выбрал создание нового стиля для &lt;span style="font-weight: bold;"&gt;cumputerra &lt;/span&gt;в котором для начала: скрыл верхний баннер, самую правую колонку &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(это там, где "сегодня в номере" и т.д., в общем, только место зря занимает)&lt;/span&gt;&lt;/span&gt;, третью рекламную колонку а так же начало рекламы от бегуна &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(пока не придумал как убрать ее конец)&lt;/span&gt;&lt;/span&gt;. В итоге получился следующий код:&lt;br /&gt;&lt;pre&gt;@namespace url(http://www.w3.org/1999/xhtml);&lt;br /&gt;&lt;br /&gt;@-moz-document domain("www.computerra.ru") {&lt;br /&gt;#tophban {display: none !important }&lt;br /&gt;#terralab {display: none !important }&lt;br /&gt;#skyright {display: none !important }&lt;br /&gt;#begunRoot {display: none !important }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;еперь на странице не отображается ничего лишнего &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну лишнего для меня)&lt;/span&gt;&lt;/span&gt;, но, тем не менее остается куча свободного места, которое можно заполнить основным конентом &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ради которого я и посещаю этот сайт)&lt;/span&gt;&lt;/span&gt;. А все дело в том, что в коде заданы жесткие размеры - ничего, сейчас поправим&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;. Для этого ставим ширину шапки и страницы в 100%, а не 770px, как было:&lt;br /&gt;&lt;pre&gt;#top {width: 100% !important }&lt;br /&gt;#page {width: 100% !important }&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;осле этого замечаем, что контент всеравно имеет слишком большой отступ от правого края - этот отступ предназначался для размещения в нем рекламы, но ее то у нас уже нет&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; так что уменьшаем отступ:&lt;br /&gt;&lt;pre&gt;.content {margin-right: 20px !important }&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у и на последок я решил просто выравнивать текст в абзацах по ширине &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(уж не знаю почему мне так больше нравится)&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;p {text-align: justify !important }&lt;/pre&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у и две картинки, что бы можно было сравнить &lt;span style="font-weight: bold; font-style: italic;"&gt;"до"&lt;/span&gt; и &lt;span style="font-weight: bold; font-style: italic;"&gt;"после"&lt;/span&gt;:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EJSGN4G2IQA/RyrJ7Qfv6WI/AAAAAAAAAKI/EjH2xwcLEa8/s1600-h/computerra.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_EJSGN4G2IQA/RyrJ7Qfv6WI/AAAAAAAAAKI/EjH2xwcLEa8/s320/computerra.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_EJSGN4G2IQA/RyrJ7Qfv6WI/AAAAAAAAAKI/EjH2xwcLEa8/s320/computerra.jpg" alt="" id="BLOGGER_PHOTO_ID_5128133145592326498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EJSGN4G2IQA/RyrKMwfv6XI/AAAAAAAAAKQ/KhyTirndZTk/s1600-h/computerra_next.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_EJSGN4G2IQA/RyrKMwfv6XI/AAAAAAAAAKQ/KhyTirndZTk/s320/computerra_next.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_EJSGN4G2IQA/RyrKMwfv6XI/AAAAAAAAAKQ/KhyTirndZTk/s320/computerra_next.jpg" alt="" id="BLOGGER_PHOTO_ID_5128133446240037234" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;тоит сказать, что &lt;span style="font-weight: bold;"&gt;Stylish &lt;/span&gt;еще поддерживает и публикацию ваших стилей в общую базу, а так же поиск стилей других пользователей для данного сайта. Т.е. если вы хотите подставить для сайта свой стиль для чего либо, то, сначала посмотрите, нет ли уже аналогичных стилей других пользователей &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(зачем изобретать велосипед)&lt;/span&gt;&lt;/span&gt;. Сделать это можно вызвав команду &lt;span style="font-weight: bold;"&gt;Stylish &lt;/span&gt;- &lt;span style="font-style: italic;"&gt;"Find Styles for this Page"&lt;/span&gt;. Для &lt;span style="font-weight: bold;"&gt;computerra &lt;/span&gt;уже был один стиль, но он не делал то, что было нужно мне.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;P&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.S.&lt;/span&gt; Кстати, когда выравнивал текст по ширине, обнаружил небольшой баг в &lt;span style="font-weight: bold;"&gt;firebug &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну или в firefox)&lt;/span&gt;&lt;/span&gt;. Дело в том, что материал находится в &lt;span style="font-weight: bold;"&gt;div &lt;/span&gt;с &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt;=&lt;span style="font-style: italic;"&gt;"article"&lt;/span&gt; и я сначала прописал у него &lt;span style="font-weight: bold;"&gt;text-align&lt;/span&gt;: &lt;span style="font-style: italic;"&gt;justify !important&lt;/span&gt;; тем не менее тег &lt;span style="font-weight: bold;"&gt;p&lt;/span&gt; внутри него не принял этот атрибут, точнее он не заменил свой &lt;span style="font-weight: bold;"&gt;text-align&lt;/span&gt;: &lt;span style="font-style: italic;"&gt;left&lt;/span&gt;; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(который определен для всех p на странице, но выше по иерархии)&lt;/span&gt;&lt;/span&gt; не смотря на то, что по мнению &lt;span style="font-weight: bold;"&gt;firebug &lt;/span&gt;он это должен был сделать.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-5496805733790658959?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/5496805733790658959/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/stylish.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5496805733790658959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5496805733790658959'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/11/stylish.html' title='Stylish'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EJSGN4G2IQA/RyrJ7Qfv6WI/AAAAAAAAAKI/EjH2xwcLEa8/s72-c/computerra.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-2822673566113774517</id><published>2007-10-31T15:31:00.000+05:00</published><updated>2007-10-31T17:19:30.540+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='Class Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Class Designer</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;едавно для себя открыл в полной мере &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt; в &lt;span style="font-weight: bold;"&gt;Visual Studio 2005&lt;/span&gt;. В полной мере - это значит что теперь я сначала что то в нем рисую, а не делаю классы, а дизайнер использую просто для красивого их отображения &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(их - это классов)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;ообще, про  то, что &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt; в &lt;span style="font-weight: bold;"&gt;VS&lt;/span&gt; представляет собой некий аналог &lt;span style="font-style: italic;"&gt;диаграмм классов&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;UML&lt;/span&gt;, но только для &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt; и с моментальным отображением в код и, соотвественно, кода в него &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(другими словами синхронизация диаграмм и кода)&lt;/span&gt;&lt;/span&gt;, я слышал уже давно. Но до недавнего времени я не уделал этому большое внимание &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(всетаки раньше я был больше программистом)&lt;/span&gt;&lt;/span&gt;. Недавно же передо мною встала задача спроектировать ряд бизнес объектов. Начал я по старинке, т.е. с написания кода интерфейсов. Через некоторое время меня утомило писать фигурные скобки, геты, сеты и т.п. К тому же при таком подходе небыло видно всей картины в целом &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(кто от кого наследуется, какие связи существуют между объектами)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;ля начала я просто решил воспользоваться &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt; для того, что бы как раз посмотреть общую картину &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(точнее показать другим то, что я натворил в красивом виде)&lt;/span&gt;&lt;/span&gt;. Потом я заметил, что изменять название полей, методов, да и добавлять новые гораздо легче с того же самого дизайнера классов &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(через окно &lt;span style="font-weight: bold;"&gt;Class Details&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;, к тому же через окно &lt;span style="font-weight: bold;"&gt;Class Details&lt;/span&gt; очень удобно сразу же писать документацию к полям, методам и т.п. Так же довольно просто создать класс, унаследовать его от того, который уже есть на диаграмме, а так же указать что у него должны быть поля вот такого то и такого типа &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(которые тоже уже есть на диаграмме)&lt;/span&gt;&lt;/span&gt;, одним словом - метод перетягивания &lt;span style="font-style: italic;"&gt;"стрелочек" &lt;/span&gt;и никакого кода.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Е&lt;/span&gt;ще один плюс в использовании &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt; - это то, что видны все связи &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну если отображать некоторые поля как связь)&lt;/span&gt;&lt;/span&gt;, а следовательно гораздо легче принимать некоторые решения. Ну например, был у меня интерфейс &lt;span style="font-style: italic;"&gt;"факультет"&lt;/span&gt; со своими полями, а так же был интерфейс &lt;span style="font-style: italic;"&gt;"кафедра"&lt;/span&gt; у которого тоже были свои поля, в том числе ссылка на &lt;span style="font-style: italic;"&gt;"факультет"&lt;/span&gt;, методов ни у одного интерфейса небыло. Увидев же связь, сразу становится понятно, что целесообразно в интерфейс &lt;span style="font-style: italic;"&gt;"факультет"&lt;/span&gt; добавить метод создания кафедры на этом самом факультете. Может быть это кажется довольно тривиальным примером, но создавал бы я эти интерфейсы ручками в коде, то я бы и не подумал бы про их связь, а так же про то, что у факультета может быть метод создания кафедры на нем - по крайней мере заметил бы это не сразу. Кстати, через дизайнер можно вызвать и часть методов рефакторинга.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у, несмотря ни на что, нашлись и некоторые минусы в &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt;. Например меня огорчил тот факт, что нельзя прямо из дизайнера указать то, что свойство должно быть только на чтение, а не на чтение и запись. Точнее сказать, дизайнер создает для свойства и &lt;span style="font-weight: bold;"&gt;get &lt;/span&gt;и &lt;span style="font-weight: bold;"&gt;set&lt;/span&gt;, а поправить это можно только в коде ручками. Так же довольно сложно указать от каких интерфейсов должен наследоваться конкретный класс &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну или другой интерфейс)&lt;/span&gt;&lt;/span&gt; - это можно сделать только если интерфейс отображен на самой диаграмме &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а вот как добавить стандартный интерфейс на диаграмму? Ну я то на самом деле знаю один способ, но он извращенный)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt; тому же, одним из самых больших минусов многие считают отсутствие поддержки &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt; для &lt;span style="font-weight: bold;"&gt;C++&lt;/span&gt;, говорят она была в бете &lt;span style="font-weight: bold;"&gt;VS 2005&lt;/span&gt;, но ее в итоге исключили из финальной версии, т.к. не успели ее до конца оттестировать &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(от греха подальше другими словами)&lt;/span&gt;&lt;/span&gt;. Но стоит сказать, что про данный минус я вычитал уже потом, а сам бы его никогда бы не обнаружил, т.к. уже давно полностью продался &lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt; и про &lt;span style="font-weight: bold;"&gt;C++&lt;/span&gt; вспоминаю только в страшном сне&lt;span style="font-weight: bold;"&gt;;) &lt;/span&gt;Ну и к тому же - в &lt;span style="font-weight: bold;"&gt;Visual Studio 2008&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt; теперь поддерживает и &lt;span style="font-weight: bold;"&gt;C++&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;ак же не стоит забывать, что &lt;span style="font-weight: bold;"&gt;Visual Studio&lt;/span&gt; поддерживает плагины. В том числе мне довольно быстро удалось найти плагин который немного расширяет функциональность дизайнера &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в 2005 студии)&lt;/span&gt;&lt;/span&gt;, правда не совсем то, что мне было надо, да и некоторые методы вылетали &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(судя по трекеру - из-за того, что у меня стоит TestDriven. Странная связь, согласитесь)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;одытожим. Лично по мне, так &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt; - это очень удобное средство на этапе проектирования, да и не только. Оно позволяет спроектировать систему не прибегая к непосредственному написанию кода. Да, это не вполне &lt;span style="font-weight: bold;"&gt;UML&lt;/span&gt;, но это явно его конкурент, по крайней мере для &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Кстати говоря, в &lt;span style="font-weight: bold;"&gt;Visual Studio Team Suit&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;for Architector&lt;/span&gt; есть еще ряд дизайнеров, с помощью которых можно конструировать другие схемы чем то аналогичные соответствующим схемам в &lt;span style="font-weight: bold;"&gt;UML&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(естесвенно плюс в том, что все это сразу же отражается на коде или еще чем то и синхронизируется с этим чем то)&lt;/span&gt;&lt;/span&gt;, но, к сожалению, про это я пока только мельком читал, так что ничего не могу пока сказать&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Ну и на последок &lt;a href="http://blogs.msdn.com/classdesigner/default.aspx"&gt;официальный блог &lt;span style="font-weight: bold;"&gt;Class Designer&lt;/span&gt;&lt;/a&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(жаль что он уже давно не обновляется)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-2822673566113774517?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/2822673566113774517/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/class-disigner.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2822673566113774517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/2822673566113774517'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/class-disigner.html' title='Class Designer'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-5581802955816243553</id><published>2007-10-29T16:43:00.000+05:00</published><updated>2007-11-01T18:16:01.402+05:00</updated><title type='text'>Екатеринбург (фото)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Ч&lt;/span&gt;асть фотографий с последней поездки в Екатеринбург &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(буквально вот сегодня приехал)&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;&lt;/div&gt;&lt;table style="width: 194px; text-align: left; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background: transparent url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat scroll left center; height: 194px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center"&gt;&lt;a href="http://picasaweb.google.com/TagirovArthur/2007_10_28"&gt;&lt;img src="http://lh4.google.com/TagirovArthur/RyXFIAfv6IE/AAAAAAAAAJs/zBdNQ_kaHKk/s160-c/2007_10_28.jpg" src="http://lh4.google.com/TagirovArthur/RyXFIAfv6IE/AAAAAAAAAJs/zBdNQ_kaHKk/s160-c/2007_10_28.jpg" style="margin: 1px 0pt 0pt 4px;" height="160" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; font-family: arial,sans-serif; font-size: 11px;"&gt;&lt;a href="http://picasaweb.google.com/TagirovArthur/2007_10_28" style="color: rgb(221, 170, 119); font-weight: bold; text-decoration: none;"&gt;2007_10_28&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-5581802955816243553?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/5581802955816243553/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/20071028.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5581802955816243553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5581802955816243553'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/20071028.html' title='Екатеринбург (фото)'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-5679581902517344197</id><published>2007-10-29T15:48:00.000+05:00</published><updated>2007-10-29T15:59:19.328+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Чтение'/><category scheme='http://www.blogger.com/atom/ns#' term='Лабиринты Ехо'/><category scheme='http://www.blogger.com/atom/ns#' term='Макс Фрай'/><title type='text'>Лабиринты Ехо</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;И&lt;/span&gt; все таки от поездки в Екатеринбург была польза, по крайне мере для меня&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Теперь я счастливый обладатель всех книжек из серии &lt;span style="font-style: italic; font-weight: bold;"&gt;"Лабиринты Ехо"&lt;/span&gt;. Так сказать - чтиво на месяц обеспеченно!&lt;br /&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;А&lt;/span&gt; еще - стояли они в Екатеринбурге гораздо дешевле чем у нас &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(и даже дешевле чем заказывать по интернету)&lt;/span&gt;&lt;/span&gt;... Вот думаю, когда же у нас будут нормальные цены... да хотя бы нормальные книжные магазины&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-5679581902517344197?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/5679581902517344197/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/blog-post_29.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5679581902517344197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5679581902517344197'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/blog-post_29.html' title='Лабиринты Ехо'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-8928374628072633214</id><published>2007-10-18T18:01:00.000+06:00</published><updated>2007-10-18T18:58:00.450+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Чтение'/><category scheme='http://www.blogger.com/atom/ns#' term='Романтика'/><category scheme='http://www.blogger.com/atom/ns#' term='Лукьяненко'/><category scheme='http://www.blogger.com/atom/ns#' term='Макс Фрай'/><title type='text'>И куда делась романтика?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;очитал вчера &lt;span style="font-weight: bold;"&gt;Лукьяненко &lt;/span&gt;- &lt;span style="font-weight: bold;"&gt;"Чистовик"&lt;/span&gt;... как то это произведение оставило во мне некоторые грустные отголоски. Наверное потому что я надеялся на другой конец, хотя и этот меня вполне устраивает &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в том плане, что я не ждал того, что главный герой устроит всем кузькину мать, не в стиле Лукьяненко)&lt;/span&gt;&lt;/span&gt;. Быть может потому что не получил ответы на вопросы, ну или неудовлетворен ими &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а ну все быстро забыли про идею с миром номер ноль, которая мне, как программисту, очень понравилась... тем более теперь мы знаем про мир номер 16)&lt;/span&gt;&lt;/span&gt;, а быть может потому что главный герой так и пробегал всю книжку от функционалов &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(вся история вообще напомнила чем то серию &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;"Башня"&lt;/span&gt;&lt;span style="font-style: italic;"&gt; у &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Стивина Кинга&lt;/span&gt;&lt;span style="font-style: italic;"&gt;, хотя я читал только ее часть)&lt;/span&gt;&lt;/span&gt;. Ну и самое главное, никакой романтики &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а мне быть может ее сейчас очень не хватает...)&lt;/span&gt;&lt;/span&gt;, а ведь сколько было поводов. Лично мне больше всего симпатизировала кузнец из Харькова... такая "могучая" женщина... и со &lt;span style="font-style: italic;"&gt;"вторым высшим"&lt;/span&gt;, и с &lt;span style="font-style: italic;"&gt;"трудовой книжкой"&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну это поймут не все...)&lt;/span&gt;&lt;/span&gt; у нее было все в порядке &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(по крайней мере в моем представлении)&lt;/span&gt;&lt;/span&gt;. Так нет, совсем наш Кирилл в этом плане неудачник, да и намека даже нет на то, что он помирится со своей бывшей подружкой, что было самой самой последней надеждой. Осталось только , наверное, порадоваться за Котю с Итан.&lt;br /&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt; другой стороны сама книжка, конечно, мне всетаки понравилась. Сам стиль написания и эти мои любимые размышления в начале каждой главы. Кстати, по поводу них. Часть из них автор размешал в своем &lt;a href="http://doctor-livsy.livejournal.com/"&gt;блоге&lt;/a&gt; до выхода книжки но как то без особого указания что они из книжки &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(первые 7 глав я не считаю)&lt;/span&gt;&lt;/span&gt;. В итоге во время прочтения у меня возникало такое милое чуство - вот они, способности функционала - ведь я это уже откуда то знаю... откуда?&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; общем, распрощался я с Кирилом и вернулся я к Максу... &lt;span style="font-weight: bold;"&gt;Максу Фраю&lt;/span&gt;, которого безобразно бросил читать ради &lt;span style="font-weight: bold;"&gt;"Чистовика"&lt;/span&gt; в начале главы &lt;span style="font-weight: bold;"&gt;"Жертвы обстоятельств"&lt;/span&gt;. После недолгого возвращения внутри меня загорелась надежда - ну хоть тут у главного героя не все наперекосяк &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(я был наивен)&lt;/span&gt;&lt;/span&gt;. Свидание наяву, а потом во сне - в этом как раз было что то романтичное&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; И вот, только ей стоило появится у него под одеялом... как все тут же испортилось. Ну вот скажите мне, какая разница, что она через сон попала в его кровать, ей же вроде тоже этого хотелось... принуждают ее видете ли... Ну да ладно, остались надежды, помирятся и все такое, читаем дальше. Ага, и вот наш герой попал в &lt;span style="font-weight: bold;"&gt;"Квартал свиданий"&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(забавное местечко)&lt;/span&gt;&lt;/span&gt; и вот ему сама судьба указала на Меламори &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(вот вечно они так, как что, так сразу надо идти мстить с первым попавшимся... нашего то героя туда случайно занесло)&lt;/span&gt;&lt;/span&gt;... в общем, была у них веселая ночка &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(интересно как себя чуствовал в это время арестант)&lt;/span&gt;&lt;/span&gt;, но последняя... суеверия и все такое, в общем после этого идея квартала свиданий мне разонравилась еще больше, а самое главное теперь никаких надежд. Даже не знаю кто больший неудачник, Максим или Кирилл &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(это который из Чистовика &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; общем, подытожив все - что то никак у героев книг, которые я читаю, с личной жизнью не ладится... пойду ка я, найду свою &lt;span style="font-weight: bold;"&gt;незабвенную&lt;/span&gt;, а то в данной ситуации брать &lt;span&gt;&lt;span class="fullpost"&gt;пример с героев &lt;/span&gt;&lt;/span&gt;нехорошо &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;span&gt; Ах да - и что бы обязательно была романтика &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(прям как маленький)&lt;/span&gt;&lt;/span&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-8928374628072633214?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/8928374628072633214/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/blog-post_18.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8928374628072633214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8928374628072633214'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/blog-post_18.html' title='И куда делась романтика?'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3128101248367726133</id><published>2007-10-14T10:10:00.000+06:00</published><updated>2007-10-14T10:46:27.255+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='сотовые'/><title type='text'>Прием, прием, кто на связи?</title><content type='html'>Now playing: &lt;a href="http://foxytunes.com/artist/patrick+wolf/track/ghost+song"&gt;Patrick Wolf - Ghost Song&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt;ак докричаться до человека, когда он находится в другой комнате, да еще за компьютером и в наушниках? Моя мама &lt;span style="font-style: italic;"&gt;"изобрела"&lt;/span&gt; один способ - она просто звонит мне на сотовый, ну а ведь правильно - ножки то у нее болят. Причем если я не отвечаю &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а это означает что мой телефон не рядом со мной)&lt;/span&gt;&lt;/span&gt;, то она звонит на свой второй мобильный &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(который преднамеренно перед этим уже положен на компьютерный стол)&lt;/span&gt;&lt;/span&gt; - в этом случае я не смотрю на то, кто ей звонит, а просто иду искать в квартире маму &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(она ведь у меня "громадная" &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;:D&lt;/span&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;/span&gt;, что бы отдать ей телефон, когда же я, наконец то, нахожу ее, то понимаю что звонит она сама себе, лишь бы &lt;span style="font-style: italic;"&gt;"вызвать"&lt;/span&gt; меня.&lt;br /&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;А&lt;/span&gt; вот вчера, когда я опять же сидел за компом в наушниках, а мама лежала позади на диване, я заметил как на кровать &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(которая рядом с компом)&lt;/span&gt;&lt;/span&gt; был кинут мой телефон... ну кинут и кинут, что бы я не потерял наверное. Потом я заметил, что он звонит, взял... опять мама, снял наушники, повернулся к ней, а она и говорит:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-а сходи на кухню пожалуйста, принеси мне очки.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Так что, как говорит один мой знакомый, сотовый - это зло. С этой &lt;span style="font-style: italic;"&gt;"высокотехнологичной"&lt;/span&gt; вещью в нашем современном мире уже не от кого не скрыться, а уж учитывая вечные нововведения сотовых операторов в борьбе за конкуренцию, теперь тебя достанут и при минусовом балансе &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(а как было раньше хорошо, отключил телефон а потом говоришь всем -ой, а у меня баланс кончился, теперь осталось все списывать только на батарейку)&lt;/span&gt;&lt;/span&gt;. Ну и к тому же эти вечные 6секундные разговоры... из-за которых возникают милые недопонимания, вытекающие потом в большие казусы.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3128101248367726133?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3128101248367726133/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3128101248367726133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3128101248367726133'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/blog-post.html' title='Прием, прием, кто на связи?'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-6572116049495907671</id><published>2007-10-12T21:27:00.000+06:00</published><updated>2007-11-01T18:16:33.300+05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Самара'/><category scheme='http://www.blogger.com/atom/ns#' term='Дни разработчика'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Самара (11 октября)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;авно что то не писал в свой блог, решил начать понемножку исправляться&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;едавно был в Самаре, в том числе посетил &lt;a href="http://www.microsoft.com/rus/events/DevelopersDaysAutumn2007/"&gt;"Дни разработчика 07"&lt;/a&gt; о которых, быть может, я расскажу чуть позже&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Пока же хочу просто показать вам некоторые фотографии, которые я успел там наснимать пока &lt;span style="font-style: italic;"&gt;"гулял"&lt;/span&gt; по городу на следующий день после семинара:&lt;br /&gt;&lt;/div&gt;&lt;table style="width: 194px; text-align: left; margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr align="center"&gt;&lt;td style="background: transparent url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat scroll left center; height: 194px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;a href="http://picasaweb.google.ru/TagirovArthur/11"&gt;&lt;img src="http://lh5.google.ru/TagirovArthur/Rw-OFoAYWcE/AAAAAAAAAG8/OsEvcY3VwIw/s160-c/11.jpg" src="http://lh5.google.ru/TagirovArthur/Rw-OFoAYWcE/AAAAAAAAAG8/OsEvcY3VwIw/s160-c/11.jpg" style="margin: 1px 0pt 0pt 4px;" height="160" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; font-family: arial,sans-serif; font-size: 11px;"&gt;&lt;a href="http://picasaweb.google.ru/TagirovArthur/11" style="color: rgb(221, 170, 119); font-weight: bold; text-decoration: none;"&gt;Самара (11 октября)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-6572116049495907671?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/6572116049495907671/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/11.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6572116049495907671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6572116049495907671'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/10/11.html' title='Самара (11 октября)'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3857428943664369720</id><published>2007-09-12T22:54:00.000+06:00</published><updated>2007-09-12T23:12:08.920+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Человек не с этой планеты'/><category scheme='http://www.blogger.com/atom/ns#' term='Черный юмор'/><title type='text'>Книга о смерти</title><content type='html'>&lt;div style="text-align: center;"&gt;В биологии слово "смерть" означает,&lt;br /&gt;что организм, одноклеточный или многоклеточный, растение,&lt;br /&gt;животное или человек уже не способен к питанию,&lt;br /&gt;обмену веществ, выделениям, спонтанным движениям,&lt;br /&gt;размножению и реакции на внешние раздражители,&lt;br /&gt;то есть больше не является живым&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Из Шведской национальной библиотеки&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;span style="font-size:130%;"&gt;О&lt;/span&gt;чередная книжка из серии &lt;span style="font-style: italic;"&gt;"Из книг оранжевой коровы"&lt;/span&gt;. Любителям черного юмора посвящается. &lt;a href="http://valkorn.livejournal.com/457932.html"&gt;Тут&lt;/a&gt; вся книжка в картинках.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="fullpost"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; И ведь книжка якобы для детишек...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EJSGN4G2IQA/Rugc5js1vMI/AAAAAAAAACM/Jqkot82tc0Q/s1600-h/book_about_dead.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_EJSGN4G2IQA/Rugc5js1vMI/AAAAAAAAACM/Jqkot82tc0Q/s400/book_about_dead.JPG" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_EJSGN4G2IQA/Rugc5js1vMI/AAAAAAAAACM/Jqkot82tc0Q/s400/book_about_dead.JPG" alt="" id="BLOGGER_PHOTO_ID_5109365552413260994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3857428943664369720?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3857428943664369720/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3857428943664369720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3857428943664369720'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/09/blog-post.html' title='Книга о смерти'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EJSGN4G2IQA/Rugc5js1vMI/AAAAAAAAACM/Jqkot82tc0Q/s72-c/book_about_dead.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-7578740538090143556</id><published>2007-08-30T11:10:00.000+06:00</published><updated>2007-08-30T11:30:07.538+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Человек не с этой планеты'/><title type='text'>+++</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;стал сегодня с утра, пошел на кухню, погрел себе воду для кофе в микроволновке &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(на этот раз я не пытался ставить чашку с водой для разогрева сначала в холодильник, а сразу же поставил ее в микроволновку)&lt;/span&gt;&lt;/span&gt;, затем достал дыни из холодильника и закусил ею...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Затем сходил ненадолго в больничку, на обратном пути прошелся по некоторым магазинам &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(&lt;span style="font-weight: bold;"&gt;у меня снова&lt;/span&gt; есть деньги на телефоне, а так же я купил еще какую то заумную книжку по программированию, так что &lt;span style="font-weight: bold;"&gt;у меня снова&lt;/span&gt; есть, что почитать... ну еще можно добавить, что &lt;span style="font-weight: bold;"&gt;у меня снова&lt;/span&gt; нет денег в кошельке &lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; )&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;ернулся, наконец то, домой... Что то делал, в том числе включил компьютер, вышел в интернет и даже почитал новости&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Внезапно мне захотелось снова покушать дыню. Я встал, прошел на кухню, открыл холодильник и не обнаружил там дыню... Я точно помнил, что дыня еще оставалась... начались поиски. На столе ее не оказалось, во втором холодильнике тоже... в зале я ее тоже не нашел... в мусорном ведре было только две кожурки от кусочков дыни &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(отметил для себя, что все таки я ее съел не полностью...)&lt;/span&gt;&lt;/span&gt;... Думаю, да где же она... куда пропала... Рассказал о &lt;span style="font-style: italic;"&gt;"трагедии"&lt;/span&gt; своему знакомому в асе, он сказал, что бы я особо не переживал, что скорее всего засунул ее куда нибудь не туда, вот как, например, я обычно делаю с чашкой воды по утрам, когда вместо микроволновки сую ее в холодильник... &lt;span style="font-weight: bold;"&gt;Стоп!&lt;/span&gt; И тут меня осенило, я быстро побежал на кухню, открыл микроволновку... и обнаружил в ней дыню...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Да, что путал холодильник с микроволновкой - такое было, что бы путал микроволновку с холодильником, такого до сегодняшнего дня еще небыло - все когда нибудь бывает в первый раз&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-7578740538090143556?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/7578740538090143556/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_30.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7578740538090143556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7578740538090143556'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_30.html' title='+++'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3378230593148451227</id><published>2007-08-17T23:21:00.000+06:00</published><updated>2007-08-30T13:45:13.809+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Чтение'/><category scheme='http://www.blogger.com/atom/ns#' term='Досуг'/><title type='text'>Киноляпы в книжках?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;связи с тем, что я залег в больницу &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(да и не только из-за этого)&lt;/span&gt;&lt;/span&gt;, за последнее время прочитал некоторое количество книжек. Все, конечно же, понравились, к некоторым я привык не сразу. Тем не менее в некоторых встречаются некоторые несуразицы, которые в фильмах называются киноляпами. На многие из них, например, что герой не ходит в туалет, несмотря на то, что мы не оставляем его ни на минуту &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(и даже во сне)&lt;/span&gt;&lt;/span&gt;, можно и не обращать внимание - это вполне нормально. Но вот недавно одно прямо врезалось сразу и испортило все впечатление от нарисованной в голове картинки.&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;итуация: недалекое будующее, земле наступил небольшой бада бум от взаимного обмена несколькими атомными боеголовками между политическими партнерами. Группа людей выходит на поверхность земли, кишащую всякими известными и неизвестными монстрами &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(сразу строится страшненькая картина полуразрушенного города, обстановка накаляется, напряжение растет)&lt;/span&gt;&lt;/span&gt;. Естественно все в соответствующем снаряжении - в том числе, противогаз, шлем... Далее на поверхности происходит небольшой диалог, в котором один из героев бросает недовольную фразу, и видимо для того, что бы подчеркнуть свое пренебрежение, делает смачный плевок себе под ноги... эффектно так... только в картинке, которую я уже представил, человек в противогазе и шлеме это никак не может это сделать&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Пришлось отвлечься немного от книги и придумывать оправдание фразе... в противогазе, по всей видимости, было специальное отверстие для этого &lt;span style="font-weight: bold;"&gt;:D&lt;/span&gt; Причем за время вылазки герой делал это два раза&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;P&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.S.&lt;/span&gt; Ну конечно же, это был всего один такой момент, а в целом... мне все таки понравилось&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;ваш вредный читатель&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3378230593148451227?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3378230593148451227/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3378230593148451227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3378230593148451227'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_17.html' title='Киноляпы в книжках?'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-6850305511050150072</id><published>2007-08-17T23:02:00.000+06:00</published><updated>2007-08-17T23:20:28.965+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Веб поиск'/><category scheme='http://www.blogger.com/atom/ns#' term='gogo'/><title type='text'>Банер поисковика gogo</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;олго не писал относительно этого, но все таки не могу сдержаться... Появилась на компьюленте недавно среди всех банеров реклама поисковика &lt;span style="font-weight: bold;"&gt;gogo&lt;/span&gt;, который якобы &lt;span style="font-style: italic;"&gt;"Видит больше, чем другие"&lt;/span&gt;... Сам банер я сначала принял за рекламу очередного новостного сайта всяких там пакостей и скандальчиков в мире шоубизнеса и не только, все это случилось из-за того, что там красовались фотки некой Собчак... Как же я удивился, когда позже &lt;span style="font-style: italic;font-size:85%;" &gt;(банер висит довольно продолжительное время)&lt;/span&gt; я узнал, что это реклама поисковика, в том числе видео. Лично для меня такая реклама &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(в поиске якобы набирается Собчак, и поисковик выдает 3 видео с ней)&lt;/span&gt;&lt;/span&gt; сразу сгенерировала в голове мысль - какой же попсовый это должен быть поисковичок, если хочет привлечь пользователей именно таким способом... Может я, конечно, странный человек, но &lt;span style="font-style: italic;"&gt;"звезда в шоке"&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.S.&lt;/span&gt; Ненавижу банеры&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-6850305511050150072?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/6850305511050150072/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/gogo.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6850305511050150072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/6850305511050150072'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/gogo.html' title='Банер поисковика gogo'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3840714098629085663</id><published>2007-08-13T00:10:00.000+06:00</published><updated>2007-08-13T00:24:05.504+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Веб поиск'/><title type='text'>Интересный поисковик</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;И&lt;/span&gt; вот, еще один интересный сайт, который я сегодня для себя открыл. На сей раз это поисковик &lt;a style="font-weight: bold;" href="http://www.quintura.ru/"&gt;Quintura&lt;/a&gt;. Больше этот поисковик интересен именно своей идеей, в общем, советую посмотреть для интереса. К сожалению времени на описание уже нет, но найдите время заглянуть на этот сайт&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; Облако &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(карта в терминологии сайта)&lt;/span&gt;&lt;/span&gt; позволяет довольно быстро и понятно отфильтровать результаты поиска к интересующей вас теме - облако действует как бы помощью к уточнению запроса.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3840714098629085663?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3840714098629085663/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_13.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3840714098629085663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3840714098629085663'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_13.html' title='Интересный поисковик'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-4794653737915848806</id><published>2007-08-12T23:05:00.000+06:00</published><updated>2007-08-24T18:20:35.643+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='История веб-поиска'/><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleReader'/><category scheme='http://www.blogger.com/atom/ns#' term='Netvibes'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Yandex'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Домашняя страничка в вашем браузере</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Д&lt;/span&gt;о поры до времени я не придавал никакого внимания сервисам в интернете да и стартовым страницам тоже. В то время я знал такие стартовые страницы как &lt;span style="font-weight: bold;"&gt;rambler&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;yandex &lt;/span&gt;и т.п. Речи о &lt;span style="font-weight: bold;"&gt;web 2.0&lt;/span&gt;. тогда и не шло. В итоге я сначала привык что стартовой страницей у меня нет, потом у меня появилась облегченная версия поисковика &lt;a href="http://ya.ru/"&gt;&lt;span style="font-weight: bold;"&gt;yandex&lt;/span&gt;&lt;/a&gt;, ну а потом был поставлен &lt;a href="http://www.google.com/"&gt;&lt;span style="font-weight: bold;"&gt;google&lt;/span&gt;&lt;/a&gt;, т.к. этот поисковик мне нравился больше и он был тоже легким. Со временем у меня появился &lt;span style="font-weight: bold;"&gt;firefox &lt;/span&gt;и стартовая страница опять оказалась под вопросом, т.к. этот браузер уже имел строку поиска&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;екоторое время назад появился &lt;a href="http://www.google.com/ig?hl=ru"&gt;&lt;span style="font-weight: bold;"&gt;iGoogle&lt;/span&gt;&lt;/a&gt;, который мне очень понравился, со временем я проникся и к новостным лентам, блогам и т.п. В итоге на стартовой странице у меня сейчас красуется &lt;span style="font-weight: bold;"&gt;iGoogle &lt;/span&gt;с довольно маленьким но очень удобным набором виджетов - читалка &lt;a href="http://gmail.com/"&gt;&lt;span style="font-weight: bold;"&gt;gmail&lt;/span&gt;&lt;/a&gt;, погода, блокнот и &lt;a href="http://www.google.com/reader/"&gt;&lt;span style="font-weight: bold;"&gt;GoogleReader &lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(который мне очень, кстати, понравился, да к тому же заменил 3-ку других виджетов, добавив еще к себе и сообщения блогов друзей)&lt;/span&gt;&lt;/span&gt;. Так же меня радовала тема начальной страницы, которая меняется в течении дня, ну и конечно же любимая мной строчка поиска от &lt;span style="font-weight: bold;"&gt;google:)&lt;/span&gt; Это уже не говоря о ссылках вверху на свой профиль и &lt;a href="http://www.google.com/searchhistory/?hl=ru"&gt;историю поиска&lt;/a&gt;. Единственное, что я пока не добавил из того, что бы мне хотелось - это &lt;span style="font-weight: bold;"&gt;googleTalk&lt;/span&gt;, т.к. флешовый виджет меня пока немного не устраивает в отношении аси &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(сообщения принимаются и отсылаются, но все аськины контакты всегда как бы находятся в оффлайн)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;тоит сказать, что &lt;span style="font-weight: bold;"&gt;iGoogle &lt;/span&gt;на английском демонстрирует чуть большую интеграцию со службами &lt;span style="font-weight: bold;"&gt;google &lt;/span&gt;- Самую малость&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;е смотря на то, что главной страницей мне пользоваться очень понравилось, мне всеравно чего то не хватало - наверное, это в натуре человека - эму все время охота больше&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; В частности мне иногда казалось, что было бы лучше, если бы вот этот виджет был не в одну колонку, а в две, и вообще, почему колонок три, а не, скажем две? И мне бы было лучше, если бы уголки виджетов были скругленными... ну или еще что нибудь&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Конечно, все это мелочи, который абсолютно не мешали мне получать полное удовольствие от всего в одном месте&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Ч&lt;/span&gt;то бы иметь чуть большее представление о других домашних страничек &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(не одним же &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;google &lt;/span&gt;&lt;span style="font-style: italic;"&gt;мы живем)&lt;/span&gt;&lt;/span&gt; я в свое время посмотрел аналоги &lt;span style="font-weight: bold;"&gt;iGoogle &lt;/span&gt;у &lt;span style="font-weight: bold;"&gt;Yahoo &lt;/span&gt;и &lt;span style="font-weight: bold;"&gt;Microsoft&lt;/span&gt;. Было довольно мило, но мне, почему то, не очень понравилось м я решил все оставить по прежнему.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;егодня же, я узнал и вскользь посмотрел сайт &lt;a href="http://www.netvibes.com/"&gt;netvibes&lt;/a&gt;, который предназначен исключительно для создания своей домашней страничке. В итоге, я был очень приятно удивлен. Всплывающие подсказки, возможность разместить практически те же виджеты плюс гораздо лучшие возможности по настройке внешнего вида странички. Там есть и выбор количества колонок на каждой вкладке, и возможность задать каждой колонке определенную ширину, и возможность выбрать одну тему, а задний фон сделать другим. Так же мне понравилось то, что каждому виджету можно задать свой внутренний цвет &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(6 на выбор, вроде)&lt;/span&gt;&lt;/span&gt;. Ну и иконки для каждой вкладке - в общем все очень даже мило, так что, советую посмотреть&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.S.&lt;/span&gt; Переходить на нее, я все же пока не буду, т.к. достойной замены &lt;span style="font-weight: bold;"&gt;GoogleReader &lt;/span&gt;я там пока не нашел, да и строки поиска на привычном месте там нет, вместо нее заголовок вашей домашней странички &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(лично у меня фантазии больше чем на "Домашняя страничка" не хватило)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-4794653737915848806?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/4794653737915848806/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_12.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/4794653737915848806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/4794653737915848806'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_12.html' title='Домашняя страничка в вашем браузере'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-8522634031807022107</id><published>2007-08-11T13:41:00.000+06:00</published><updated>2007-08-11T13:59:22.499+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><title type='text'>Краткие и полные сообщения</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt;ак то раз мне захотелось опубликовать сообщение в блоге таким образом, что бы на главной странице оно отображалось не полностью &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(только начало)&lt;/span&gt;&lt;/span&gt;, а вот на уже на самой странице сообщения отображался полный ее текст. Всем, наверное, знакома ссылочка &lt;span style="font-weight: bold; font-style: italic;"&gt;"Read more..."&lt;/span&gt; - ну вот именно ее мне очень и хотелось.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;К&lt;/span&gt; сожалению по умолчанию такой функциональности в &lt;span style="font-weight: bold;"&gt;blogger &lt;/span&gt;нету. Тем не менее сегодня в справке  смог отыскать &lt;a href="http://help.blogger.com/bin/answer.py?answer=42215&amp;topic=8932"&gt;страничку&lt;/a&gt;, на которой описана как раз то, как добавить такую функциональность.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="font-size:180%;"&gt;Э&lt;/span&gt;ксперементировать пришлось, к сожалению, довольно продолжительное время. Во-первых, довольно долгое время я не мог понять, где же находится основной текст шаблона. Как выяснилось позже, на самом деле все виджеты были просто напросто &lt;span style="font-style: italic;"&gt;"свернуты"&lt;/span&gt;. Что бы развернуть их код, необходимо было поставить галочку &lt;span style="font-weight: bold; font-style: italic;"&gt;"Расширить шаблоны виджета"&lt;/span&gt;. Во-вторых, долгое время я был неуверен, в каком именно режиме я нахожусь, в классическом или в режиме макета &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(тут сыграла моя неуверенность)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; итоге, как видете, мне удалось добавить необходимую мне функциональность, хоть у нее и есть несколько недостатков. В частности, если сообщение не обрезано, то ссылка &lt;span style="font-weight: bold; font-style: italic;"&gt;"Читать полностью"&lt;/span&gt; всеравно виднеется&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Так же необходимо ручками прописывать в span текст, который должен попасть в полную версию. Так что, сейчас буду трудится над решением этой проблемы... наверное &lt;span style="font-weight: bold;"&gt;:D&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-8522634031807022107?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/8522634031807022107/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_11.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8522634031807022107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8522634031807022107'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_11.html' title='Краткие и полные сообщения'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-5628611936585699251</id><published>2007-08-10T22:30:00.000+06:00</published><updated>2007-08-11T14:18:49.874+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='воспоминания'/><category scheme='http://www.blogger.com/atom/ns#' term='Начальная школа'/><category scheme='http://www.blogger.com/atom/ns#' term='магкие игрушки'/><title type='text'>Мягкая игрушка</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;егодня ближе к дню написал сообщение в блог, которое навеяло мне сегодняшним утром и рядом некоторых событий от утра до дня... но чуть позже решил не публиковать его, т.к. оно слишком уж много рассказывало про кое что обо мне из прошлого &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(интересного и заманчивого обо мне)&lt;/span&gt;&lt;/span&gt;, а я человек скрытный&lt;span style="font-weight: bold;"&gt;;) &lt;/span&gt;Так что, пока не свершилось...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Т&lt;/span&gt;ем не менее, сегодня днем мы с мамой избавлялись от очередной коробки, разбирая вещи, которые были в ней и принимая решение о том, чей же час уже пришел. В ней, в том числе, были и мои игрушки... тем самым на меня навеяло куча воспоминаний из детства, было действительно странное ощущение &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(хоть с утренним и не сравнится)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EJSGN4G2IQA/RryU2xDZHfI/AAAAAAAAAB8/56Z64jGztHo/s1600-h/Dog.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_EJSGN4G2IQA/RryU2xDZHfI/AAAAAAAAAB8/56Z64jGztHo/s320/Dog.jpg" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_EJSGN4G2IQA/RryU2xDZHfI/AAAAAAAAAB8/56Z64jGztHo/s320/Dog.jpg" alt="" id="BLOGGER_PHOTO_ID_5097112546877971954" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:180%;"&gt;С&lt;/span&gt;реди прочих игрушек была моя единственная мягкая игрушка - желтая такая собаченция &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(она слева, для тех, кто не понял&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;. &lt;span class="fullpost"&gt;В первую очередь, самым важным фактором является то, что это действительно единственная мягкая игрушка нормального размера, которая у меня есть &lt;span style="font-size:85%;"&gt;(ну не считая того белого милого медвежонка в шкафу, которого я никак не могу подарить одному человеку... но это уже совсем другая история... грустная и плачевная)&lt;/span&gt;, и это с учетом того, что на самом деле я всегда питал некую слабость к мягким игрушкам... и не важно, что по стереотипу они больше должны нравятся девочкам&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Вторым фактором выступило то, что недавно мне обещали подарить еще одну... но так и не подарили &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ну там уже просто в отношениях кое что не заладилось... но это уже совсем другая история... грустная и плачевная)&lt;/span&gt;&lt;/span&gt;. Третьим то, что эта мягкая игрушка была подарена мне в честь окончания третьего класса, хотя такая же игрушка была подарена почти всем моим тогдашним одноклассникам, но про это чуть ниже&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; В общем, мне прям так сразу захотелось взять этого пса в руки и потрепать его &lt;span style="font-weight: bold;"&gt;:-[&lt;/span&gt; Конечно же, он уже старенький, не такой мягкий как нынешние и у него нет этих прикольных &lt;span style="font-style: italic;"&gt;"камешков"&lt;/span&gt; в том самом месте, да и возраст у меня вроде уже не тот... но всетаки.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EJSGN4G2IQA/Rrye4xDZHgI/AAAAAAAAACE/Wlmqit0ICtw/s1600-h/Dog02.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_EJSGN4G2IQA/Rrye4xDZHgI/AAAAAAAAACE/Wlmqit0ICtw/s320/Dog02.jpg" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_EJSGN4G2IQA/Rrye4xDZHgI/AAAAAAAAACE/Wlmqit0ICtw/s320/Dog02.jpg" alt="" id="BLOGGER_PHOTO_ID_5097123576353988098" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;ри ближайшем рассмотрении выяснилось, что пес &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(кстати, у него нет имени... как то так получилось... ну или я его уже не помню)&lt;/span&gt;&lt;/span&gt; немного грязный, поэтому моя мама сразуже засунула его в стиральную машину... а после промывки повесила сушить. Естественно, после такой &lt;span style="font-style: italic;"&gt;"промывки"&lt;/span&gt; мокрота была не единственной проблемой, в частности немного оторвалась правая  лапка, а так же по шву немного вспоролся живот... В знак того, что псу это явно не нравится, он сделал &lt;span style="font-style: italic;"&gt;"сердитый"&lt;/span&gt; вид&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Была у меня такая вера, что игрушки умеют чувства и у них меняется настроение, особенно эта вера была подогрета этой игрушкой - у пса глаза могли немного крутится вокруг того места, к которому они пришиты, как следствие глаз мог находится немного под разными углами, и иногда расположение глаз у пса было или сердитым &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(нахмурившимся таким вот, как на фотографии... а на ней еще и уши так подняты&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; или добрым...&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Н&lt;/span&gt;у и поподробнее про то, при каких обстоятельствах ко мне попал этот пес, и что быть может он для меня значит. Как я уже говорил выше, такой пес был подарен практически каждому выпускнику из моего класса моей начальной школы. Почему почти каждому? Ну потому что некоторым &lt;span style="font-style: italic;"&gt;"особым личностям"&lt;/span&gt; были подарены рации - для этого родителям надо было доплатить какую то дополнительную сумму... хотя об этом знали не все... ну да ладно. Ну так вот, пес означал для меня в моих воспоминаниях окончание начальной школы... а потом, со временем, он просто напоминал мне о моей учебе в 33 школе и о тех годах... а как следствие и еще об одной девушке из моего класса, у которой был точно такой же песик... Да, это наверное была моя первая любовь &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(пр. ав.: мы программисты считаем с нуля...)&lt;/span&gt;&lt;/span&gt;, если это так можно назвать, конечно &lt;span style="font-weight: bold;"&gt;:D&lt;/span&gt;. В общем, у меня песик, у нее песик... что то в этом было такое... Так что, как видите, песик для меня что то да значит&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; Иногда я действительно поражаюсь своей натуре... своей детской романтичности и своей податливостью воспоминаниям...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-5628611936585699251?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/5628611936585699251/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_10.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5628611936585699251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5628611936585699251'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_10.html' title='Мягкая игрушка'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EJSGN4G2IQA/RryU2xDZHfI/AAAAAAAAAB8/56Z64jGztHo/s72-c/Dog.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-7279135213895145451</id><published>2007-08-09T20:20:00.000+06:00</published><updated>2007-08-11T15:13:20.612+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Цензура'/><category scheme='http://www.blogger.com/atom/ns#' term='Лукьяненко'/><category scheme='http://www.blogger.com/atom/ns#' term='MSWord'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Цензура при наборе текста</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;рочитал тут недавно в блоге &lt;span style="font-weight: bold;"&gt;Лукьяненко &lt;/span&gt;его жалобу относительно нового оффиса от &lt;span style="font-weight: bold;"&gt;microsoft&lt;/span&gt;. Суть претензии заключалось в том, что в словаре новой версии &lt;span style="font-weight: bold;"&gt;word &lt;/span&gt;отсутствовал ряд слов, в частности слово голубой, голубые, жопа, негр и т.д. Скорее всего слова оказались выкинутыми из словаря по причине цензуры. Негр - вместо этого надо употреблять афроамериканец, жопа - пишите попа, голубой - не стоит говорить о меньшинствах &lt;span style="font-style: italic;"&gt;(и не важно что голубым может быть и небо)&lt;/span&gt; и т.п. Кажется, что все понятно, да к тому же слово в словарь всегда можно добавить, но тем не менее колокольчик зазвонил&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;Я&lt;/span&gt; задумался над этой проблемой. Действительно, немного неприятно, набрав слово голубой, увидеть что оно подчеркнуто волнистой красной линией. Лично у меня эта линия ассоциируется в первую очередь с тем, что в набранном слове есть ошибка &lt;span style="font-style: italic;"&gt;(учитывая, что я грамотей)&lt;/span&gt;, а только потом с тем, что слова просто напросто нет в словаре, тем более такого. К тому же, мне показалось довольно странным использовать такой метод борьбы с &lt;span style="font-weight: bold; font-style: italic;"&gt;"плохими"&lt;/span&gt; словами. По моему, в первую очередь, словарь должен использоваться для того, что бы хранить список слов и говорить о правильности их ввода, а не о том, что данное слово употреблять нельзя. К тому же, как уже говорилось, слово можно добавить.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; итоге, мне кажется более разумной идеей - ввести, кроме проверки орфографии и пунктуации, &lt;span style="font-weight: bold;"&gt;"проверку на цензуру"&lt;/span&gt;. Например, набирает пользователь слово &lt;span style="font-weight: bold;"&gt;"..."&lt;/span&gt;, а программа подчеркивает его голубеньким &lt;span style="font-weight: bold;"&gt;]:-&gt;&lt;/span&gt; цветом, а красный с зеленым остаются соотвественно на орфографию и пунктуацию. При таком подходе пользователь сразу понимает, на что именно намекает ему программа&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt;. К тому же, можно добавить функцию установки уровня цензуры набираемого текста &lt;span style="font-style: italic;"&gt;(высокий, средний, низкий, без цензуры)&lt;/span&gt;. Думаю, получилось бы мило&lt;span style="font-weight: bold;"&gt;:)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S. &lt;/span&gt;&lt;/span&gt;Кстати, кто нибудь знает, как отчистить словарь в телефонах &lt;span style="font-weight: bold;"&gt;Nokia &lt;/span&gt;или в &lt;span style="font-weight: bold;"&gt;word&lt;/span&gt; на &lt;span style="font-weight: bold;"&gt;КПК&lt;/span&gt;? &lt;span style="font-weight: bold;"&gt;:)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-7279135213895145451?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/7279135213895145451/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_09.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7279135213895145451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7279135213895145451'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post_09.html' title='Цензура при наборе текста'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-4378708166912997733</id><published>2007-08-09T19:04:00.000+06:00</published><updated>2007-08-30T13:43:10.277+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Чтение'/><category scheme='http://www.blogger.com/atom/ns#' term='Стругацкие'/><category scheme='http://www.blogger.com/atom/ns#' term='Лукьяненко'/><title type='text'>Почему же мне иногда сложно читать литературные произведения?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;оследнее время увлекся немного чтением литературных произведений, по большей части фантастики. По всей видимости мне просто немного надоело читать техническую литературу, захотелось вспомнить немного молодость &lt;span style="font-style: italic;"&gt;(ах, я уже говорю про это, а ведь мне всего 20...)&lt;/span&gt;, когда я любил читать приключенческие книжки...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;ообще, стоит сказать, что я не особый любитель чтения книжек, но тем не менее, иногда меня пробивает&lt;span style="font-weight: bold;"&gt;;)&lt;/span&gt; В итоге я прочитал уже несколько книжек &lt;span style="font-weight: bold;"&gt;Лукьяненко&lt;/span&gt;, а сейчас тружусь над &lt;span style="font-weight: bold;"&gt;Стругацкими&lt;/span&gt;. Сказать честно, &lt;span style="font-weight: bold;"&gt;Стругацкие &lt;/span&gt;даются мне сложнее, но проблема даже не в самом содержании книжки, а в чем то другом... и мне действительно стало интересно, в чем же именно, особенно меня подбило на это то, что довольно многие считают, что &lt;span style="font-weight: bold;"&gt;Лукьяненко &lt;/span&gt;действительно читается очень легко.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;П&lt;/span&gt;ока что, единственное, к чему я пришел - так это к тому, что вся проблема в именах героев (имеются в виду не только главные), а так же в их количестве, и ситуациях, в которых ми с ними знакомимся. Сейчас попробую объяснить все по пунктам&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;о-первых&lt;/span&gt;, лично мне гораздо легче запоминать исключительно имя героя, ну или исключительно его фамилию, ну или даже просто его кличку, ну или еще лучше просто &lt;span style="font-style: italic;"&gt;"специализацией"&lt;/span&gt; (например, &lt;span style="font-style: italic;"&gt;"называйте меня просто ангелом-хранителем"&lt;/span&gt; - запоминается гораздо лучше чем &lt;span style="font-style: italic;"&gt;"называйте меня Петром Ивановичем"&lt;/span&gt;). Если же в тексте герой представляется по имени и фамилии, или по имени и отчеству, одним словом - каким либо "словосочетанием" а не одним простым словом, то это начинает меня путать. Получается, что с человеком мне необходимо связать два слова, а не одно. Ситуация усугубляется, когда для того, что бы идентифицировать человека в тексте применяется по отдельности то имя, то фамилия.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt;о-вторых&lt;/span&gt;, немаловажным является интенсивность и плотность появления героев &lt;span style="font-style: italic;"&gt;(как завернул то)&lt;/span&gt;. Порой, лично для меня составляет жуткую проблему, когда в диалоге появляется сразу же более 3-х новых персонажей, и они сразу представляются (особенно способом, описанным выше). Это обычно происходит тогда, когда к главному герою приходит некая большая компания. Обычно сложность восприятия "слишком большого" числа новых персонажей чуть упрощается, если часть компании присутствует как бы для массовки и абсолютно не представляется.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:180%;"&gt;В&lt;/span&gt; итоге получается, что я просто напросто не могу запомнить всех героев &lt;span style="font-style: italic;"&gt;(или сразу вспомнить)&lt;/span&gt;, а как следствие адекватно быстро понять диалог или происходящие действия. Вот такой вот я читатель&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt; Не зря, кстати, говорят, что главный герой вообще должен быть один, ну максимум их должно быть двое&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:180%;"&gt;P&lt;/span&gt;.S.&lt;/span&gt; С этой точки зрения фильм смотреть гораздо легче, т.к. зрительная память у человека развита гораздо лучше&lt;span style="font-weight: bold;"&gt;:)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-4378708166912997733?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/4378708166912997733/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/4378708166912997733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/4378708166912997733'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/blog-post.html' title='Почему же мне иногда сложно читать литературные произведения?'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-3951111763505479199</id><published>2007-08-02T12:02:00.000+06:00</published><updated>2007-08-24T18:20:35.644+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='История веб-поиска'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Yandex'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Google - История веб-поиска</title><content type='html'>&lt;div style="text-align: justify;"&gt;Совсем недавно в "Вопросы и ответы" от google читал вопрос - есть ли у google что то наподобие &lt;a href="http://stat.yandex.ru/queries/last20.xml"&gt;функции&lt;/a&gt; яндекса, которая показывает последние 20 запросов. Тогда ответили, что нет... Сегодня же, воспользовавшись в очередной раз поиском в google заметил сверху справа приглашение к созданию моей истории поиска ;) На сколько я успел понять, она не просто смотрит те запросы, которые Вы делали в поисковик, но и просматривает всю историю путешествия... делается это за счет PageRank в панели инструментов (в моем случае я использую firefox). Конечно в отличии от яндексовской функции она смотрит только Вашу историю.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Все таки приятно видеть такую хорошую интеграцию сервисов от google.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;И еще немного относительно "Истории веб-поиска" - пользовался ей, конечно, пока что мало, но радуют уже некоторые фишки структуры сохранения этой истории. Например если вы ввели строчку поиска в google и потом воспользовались одним (или не одним) результатом поиска, то в истории это отобразится в виде дерева - в корне будет строка поиска, а потом идет список страниц, на которые в результате перешли... В общем, интересно будет посмотреть ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-3951111763505479199?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/3951111763505479199/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/google.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3951111763505479199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/3951111763505479199'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/08/google.html' title='Google - История веб-поиска'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-5567245532493476709</id><published>2007-06-30T23:47:00.000+06:00</published><updated>2007-07-01T11:25:03.590+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='Opera'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebug'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Знакомство с JavaScript</title><content type='html'>&lt;div style="text-align: justify;"&gt;Недавно, в моей практике, случилось мне писать небольшой сайтик... Писал я его на &lt;span style="font-weight:bold;"&gt;ASP.NET&lt;/span&gt;, но это не важно... т.к. проблемы начались, когда дело дошло до &lt;span style="font-weight:bold;"&gt;JavaScript&lt;/span&gt;...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Перво наперво, пришлось долго искать описание объектной модели документа, благо в &lt;span style="font-weight:bold;"&gt;MSDN&lt;/span&gt; она описана... Ух ты, как хорошо все написано... было подумал я... и быстренько набросал метод (еще и при дополнительной помощи моего знакомого), суть которого заключалась в следующем: есть табличка, в этой табличке есть строчки, в каждой строчке есть несколько столбцов, в одном из которых есть поле ввода &lt;span style="font-style:italic;"&gt;textarea&lt;/span&gt;, а в другом есть &lt;span style="font-style:italic;"&gt;checkbox&lt;/span&gt;... А надо сделать следующее: если в &lt;span style="font-style:italic;"&gt;textarea &lt;/span&gt;набрали текст длинее 5 символов, то соответствующая строчка начинает подсвечиваться желтеньким цветом, а на &lt;span style="font-style:italic;"&gt;checkbox &lt;/span&gt;ставится галочка, если меньше 5 символом, то подсвечивается другим цветом, и галочка на &lt;span style="font-style:italic;"&gt;checkbox &lt;/span&gt;снимается...&lt;br /&gt;&lt;/div&gt;В итоге получилось, что то вроде:&lt;pre&gt;&lt;br /&gt;if (obj.innerText.length &lt; 5)&lt;br /&gt;{&lt;br /&gt;  obj.parentNode.parentNode.parentNode.&lt;br /&gt;       style.backgroundColor = 'AliceBlue';&lt;br /&gt;  obj.parentNode.parentNode.parentNode.&lt;br /&gt;    childNodes[2].childNodes[0].childNodes[0].chaecked = false;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;  obj.parentNode.parentNode.parentNode.&lt;br /&gt;       style.backgroundColor = 'LemonChiffon';&lt;br /&gt;  obj.parentNode.parentNode.parentNode.&lt;br /&gt;    childNodes[2].childNodes[0].childNodes[0].chaecked = true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Где obj - это наш &lt;span style="font-style:italic;"&gt;textarea&lt;/span&gt;, obj.parentNode.parentNode.parentNode - это наша строчка, ну а obj.parentNode.parentNode.parentNode. childNodes[2].childNodes[0].childNodes[0] - это наш &lt;span style="font-style:italic;"&gt;checkbox&lt;/span&gt;..., который на самом деле находится просто в &lt;span style="font-style:italic;"&gt;span&lt;/span&gt;, а до этого еще и во второй колонке. Запускаем, все работает, отлично! Запускаем в &lt;span style="font-weight:bold;"&gt;Firefox&lt;/span&gt;... не работает... На помощь приходит плагин &lt;span style="font-weight:bold;"&gt;firebug&lt;/span&gt;... Ставим, начинаем дебажить... Перво наперво, выясняется, что &lt;span style="font-style:italic;"&gt;textarea &lt;/span&gt;в &lt;span style="font-weight:bold;"&gt;firefox &lt;/span&gt;java не содержит поля &lt;span style="font-style:italic;"&gt;innerText&lt;/span&gt;, зато у него есть поле &lt;span style="font-style:italic;"&gt;value&lt;/span&gt;, которого нет в &lt;span style="font-weight:bold;"&gt;IE&lt;/span&gt;... дык... надо найти что то общее... обращаем внимание на поле &lt;span style="font-style:italic;"&gt;textLength&lt;/span&gt;, которое сразу же указывает нам на длину текста... есть ли оно в &lt;span style="font-weight:bold;"&gt;IE&lt;/span&gt;? Наверное нам это было уже не интересно, главное, что не &lt;span style="font-style:italic;"&gt;value&lt;/span&gt;... Переправили, запускаем... работает, но не полностью, цвет меняет, а галочку не ставит... Почему?... дебажим...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;obj.parentNode.parentNode.parentNode.childNodes[2] - колонка, так и должно быть... а obj.parentNode.parentNode.parentNode. childNodes[2].childNodes[0] это не span... странно... ага, индексы в &lt;span style="font-weight:bold;"&gt;firefox &lt;/span&gt;почему то другие... и их больше:) Ах, так она еще и переводы строки считает... Подгоняем индексы, что бы проверить - будет ли вообще это работать? Получаем:&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;obj.parentNode.parentNode.parentNode.&lt;br /&gt;    childNodes[3].childNodes[1].childNodes[0]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;заместо&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;obj.parentNode.parentNode.parentNode.&lt;br /&gt;    childNodes[2].childNodes[0].childNodes[0]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;самое плачевное... что где то индексы совпадают, а где то нет... Но! Русские не сдаются:)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Было решено писать супер пупер мега метод, который в потомках рекурсивно будет искать определенный объект, в нашем случае это &lt;span style="font-style:italic;"&gt;input &lt;/span&gt;с типом &lt;span style="font-style:italic;"&gt;checkbox&lt;/span&gt;, благо во всей строчке он такой один (почему именно этот путь? Ну что первое в голову пришло...)&lt;br /&gt;&lt;/div&gt;В итоге получаем метод:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function GetCheck(Obj)&lt;br /&gt;{&lt;br /&gt;  for (i=0;i &lt; Obj.childNodes.length; i++)&lt;br /&gt;  {&lt;br /&gt;    if (Obj.childNodes[i].tagName == 'INPUT' &amp;&amp; &lt;br /&gt;        Obj.childNodes[i].type == 'checkbox')&lt;br /&gt;        return Obj.childNodes[i];&lt;br /&gt;    else&lt;br /&gt;    { &lt;br /&gt;        Res = GetCheck(Obj.childNodes[i]);&lt;br /&gt;        if (Res != null)&lt;br /&gt;          return Res;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Круто! Запускаем... зациклились... Рекурсия - смотри рекурсия... Почему это функция бегает все время по одним и тем же нодам... нам понять удалось не сразу... по всей видимости сказалось то, что перейти на &lt;span style="font-weight:bold;"&gt;javascript &lt;/span&gt;сразу после кода на &lt;span style="font-weight:bold;"&gt;C#&lt;/span&gt; не так легко... а ведь ошибка крылась в какой то переменой, коей оказалась i... Ну да... локальные, глобальные... в общем, она была одна на все рекурсивные функции... проблема была решена добавлением следующей строчки:&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;var i = 0;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Круто! Запускаем, работает... галку мы нашли... теперь осталось ее проставить или убрать, в итоге получаем следующий метод:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function TextChange(obj)&lt;br /&gt;{&lt;br /&gt;    var SranaGalka;&lt;br /&gt;    function GetCheck(Obj)&lt;br /&gt;    {&lt;br /&gt;     var i = 0;&lt;br /&gt;     for (;i &lt; Obj.childNodes.length; i++)&lt;br /&gt;     {&lt;br /&gt;        if (Obj.childNodes[i].tagName == 'INPUT' &amp;&amp; &lt;br /&gt;            Obj.childNodes[i].type == 'checkbox')&lt;br /&gt;            return Obj.childNodes[i];&lt;br /&gt;        else&lt;br /&gt;        { &lt;br /&gt;            Res = GetCheck(Obj.childNodes[i]);&lt;br /&gt;            if (Res != null)&lt;br /&gt;                return Res;&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    SranaGalka = GetCheck(obj.parentNode.parentNode.parentNode);&lt;br /&gt;    if (obj.textLength &lt; 5)&lt;br /&gt;    {&lt;br /&gt;        obj.parentNode.parentNode.parentNode.&lt;br /&gt;             style.backgroundColor = 'AliceBlue';&lt;br /&gt;        SranaGalka.checked=false;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        obj.parentNode.parentNode.parentNode.&lt;br /&gt;             style.backgroundColor = 'LemonChiffon';&lt;br /&gt;        SranaGalka.checked=true;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Который, кстати, работает в &lt;span style="font-weight:bold;"&gt;Firefox&lt;/span&gt;! Запускаем &lt;span style="font-weight:bold;"&gt;Opera&lt;/span&gt;... не работает, даже цвет не меняет... обидно... ладно, отдебажить в опере нечем, переходим к &lt;span style="font-weight:bold;"&gt;IE&lt;/span&gt; - запускаем... цвет меняется, галка ставится... но когда надо снять выделение... цвет не меняется, галка не ставится... неужели код, который в else не работает?? он же такой же... вроде как... дебажим, уже в студии (кстати, отдельная история)... obj.textLength - undefined... а как ни странно, но undefined &gt; 5 равно истине... да... но зато мы знаем, что в &lt;span style="font-weight:bold;"&gt;IE&lt;/span&gt; точно работает obj.innerText.length, который не работает в &lt;span style="font-weight:bold;"&gt;firefox&lt;/span&gt; - как быть? Как, как... танцевать с бубном и придумывать следующую строчку:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Length = obj.textLength==null?&lt;br /&gt;         obj.innerText.length : obj.textLength;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;и неужели эта строчка определяет, какой у вас браузер, и вызывает соответствующее свойство? Конечно, а вы как думали...&lt;br /&gt;&lt;/div&gt;В итоге получаем:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;function TextChange(obj)&lt;br /&gt;{&lt;br /&gt;    var SranaGalka;&lt;br /&gt;    function GetCheck(Obj)&lt;br /&gt;    {&lt;br /&gt;     var i = 0;&lt;br /&gt;     for (;i &lt; Obj.childNodes.length; i++)&lt;br /&gt;     {&lt;br /&gt;        if (Obj.childNodes[i].tagName == 'INPUT' &amp;&amp; &lt;br /&gt;            Obj.childNodes[i].type == 'checkbox')&lt;br /&gt;            return Obj.childNodes[i];&lt;br /&gt;        else&lt;br /&gt;        { &lt;br /&gt;            Res = GetCheck(Obj.childNodes[i]);&lt;br /&gt;            if (Res != null)&lt;br /&gt;                return Res;&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    SranaGalka = GetCheck(obj.parentNode.parentNode.parentNode);&lt;br /&gt;    Length = obj.textLength==null? &lt;br /&gt;              obj.innerText.length:obj.textLength;&lt;br /&gt;    if (Length &amp;lt 5)&lt;br /&gt;    {&lt;br /&gt;        obj.parentNode.parentNode.parentNode.&lt;br /&gt;             style.backgroundColor = 'AliceBlue';&lt;br /&gt;        SranaGalka.checked=false;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        obj.parentNode.parentNode.parentNode.&lt;br /&gt;             style.backgroundColor = 'LemonChiffon';&lt;br /&gt;        SranaGalka.checked=true;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Запускаем... &lt;span style="font-weight:bold;"&gt;IE&lt;/span&gt; - работает... &lt;span style="font-weight:bold;"&gt;Firefox&lt;/span&gt; - работает... осталось самое страшное - &lt;span style="font-weight:bold;"&gt;Opera&lt;/span&gt;, ведь в ней мы никак не сможем отдебажить... но... о чудо! и там работает:) По всей видимости, в &lt;span style="font-weight:bold;"&gt;Opera&lt;/span&gt; null не может сравниваться с числом, в связи с чем скрипт просто переставал выполняться.... Ну да ладно, самое главное, что все работает, и на все это ушло всего навсего часа 4 с небольшим... Зато какой супер пупер мега метод то получился, и никакая &lt;span style="font-style:italic;"&gt;SranaGalka&lt;/span&gt; нам теперь не помеха:) И даже не напоминайте нам про &lt;span style="font-weight:bold;"&gt;Safari&lt;/span&gt; и что то другое;)&lt;br /&gt;&lt;span style="font-weight:bold; font-style:italic;"&gt;P.S.&lt;/span&gt; Да, быть может, можно легче... но уже проехали;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-5567245532493476709?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/5567245532493476709/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/06/javascript.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5567245532493476709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/5567245532493476709'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/06/javascript.html' title='Знакомство с JavaScript'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-8946845725002386995</id><published>2007-06-23T16:36:00.000+06:00</published><updated>2007-07-01T11:21:57.756+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IETab'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Ддввооййнныыее ррууссккииее ббууккввыы</title><content type='html'>&lt;div style="text-align: justify;"&gt;Недавно обнаружился странный глюк в любимой мной лесичке (&lt;span style="font-weight: bold;"&gt;Firefox &lt;/span&gt;aka &lt;span style="font-weight: bold;"&gt;FF&lt;/span&gt;)... Странность его заключалось в неожиданности появления (может появиться через 2 часа работы), а так же в его непостоянстве. Ну а заключался он в том, что при наборе русского текста, каждая набранная буква повторялась дважды (английским как всегда по барабану)... иногда проблеме помогал перезапуск браузера... не иногда не помогал :(&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt; После недолгих поисков выяснилось, что сие чудо случается далеко не у всех, но если начинает появляться... то делает это внезапно! и непредсказуемо, а самое главное, после появления не уходит... &lt;span style="font-style: italic;"&gt;Суппорт &lt;/span&gt;любимого браузера разводит руками и с сожалением говорит, что как он ни старается, никак не может повторить этот забавный глюк на своих машинах...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt; Тем временем похожие симптомы начинают проявляться и в других приложениях пользователей... Например, некоторые пользователи ноутбуков жалуются на то, что в их &lt;span style="font-weight: bold;"&gt;Open Office&lt;/span&gt; так же иногда проявляется симптом двойных русских букв... Позже к ним присоединились и пользователи обычных ПК ;)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt; Есть ли связь между этими событиями, или это разные глюки в разных программах?... Единственным нюансом во всей этой истории оказалось то, что страдают от этого только пользователи ОС &lt;span style="font-weight: bold;"&gt;Windows&lt;/span&gt;... В подозрение попал сам &lt;span style="font-weight: bold;"&gt;Билл Гейтс &lt;/span&gt;:-x&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt; Тем не менее, некоторые пользователи начали находить решение из сложившейся ситуации... Пользователи &lt;span style="font-weight: bold;"&gt;Open Office&lt;/span&gt; дружно переустанавливали драйвера на свою клавиатуру... жаль это помогало не всем... в том числе это не помогало пользователям FF...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt; Но, как выяснилось позже, пользователи &lt;span style="font-weight: bold;"&gt;FF&lt;/span&gt; обладают большим потенциалом в решении проблемы, ведь их любимый FF поддерживает плагины... Если быть точнее, то спасением для них оказался плагин &lt;span style="font-weight: bold; font-style: italic;"&gt;"IETab"&lt;/span&gt; (опять чувствуется причастность мелкомягких)... После установки этого плагина, симптомы двойных русских букв могли исчезнуть... если же глюк пытался проявиться снова, то достаточно было открыть еще одну вкладку, но в режиме &lt;span style="font-weight: bold; font-style: italic;"&gt;IETab&lt;/span&gt;... &lt;span style="font-style: italic;"&gt;"Суппорт"&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;FF&lt;/span&gt; в недоумении разводит руками, и до сих пор считает, что пользователи сами выдумали проблему...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-8946845725002386995?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/8946845725002386995/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8946845725002386995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/8946845725002386995'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/06/blog-post.html' title='Ддввооййнныыее ррууссккииее ббууккввыы'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-7383976693027912835</id><published>2007-05-26T10:01:00.000+06:00</published><updated>2007-08-30T13:44:09.966+06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Досуг'/><title type='text'>Разрушители легенд</title><content type='html'>&lt;div style="text-align: justify;"&gt;Мне нравится смотреть передачу &lt;span style="font-style: italic;"&gt;"Разрушители легенд"&lt;/span&gt; по &lt;span style="font-weight: bold;"&gt;Discovery&lt;/span&gt;, наверное вы знаете такую?:) Если кратко, то некая компания берет какую нибудь известную легенду или миф, и пытается ее подтвердить или разрушить - например она как то пытались проверить легенду о том, что если выстрелить в бензобак машины, то она взорвется...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ну так к чему я все это?:) Вчера у моего друга, родители решили выкинуть старый камин (не настоящий, а электрический такой), мы решили воспользоваться моментом и проверить легенду о том, что в России вещь даже на минуту нельзя оставить без присмотра - т.к. ее сопрут... Для этого, находясь на 3м этаже, мы затащили камин в лифт и отправили его на самый верний этаж, а сами в это время спустились на 1ый. После того, как лифт доехал до последнего и простоял там немного, мы вызвали его обратно... Какого же было наше удивление, когда мы обнаружили в лифте камин! Да, его не сперли, и мы уже решили, что легенда разрушена, но чуть позже заметили, что в камине пропали все лампочки (внутри были 3 обычные такие лампочки ват на 120, только покрашенные в &lt;span style="color: rgb(255, 0, 0);"&gt;красный &lt;/span&gt;цвет).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Так неужели их скрутили, пока камин был в открытом лифте на последнем этаже и легенда действительно верна?:) Как выяснилось позже, нет:( На самом деле лампочки были скручены еще дома предприимчивым другом моего друга... но это уже совсем другая история:)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;P.S.&lt;/span&gt; Какой только фигней иногда не страдаешь...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-7383976693027912835?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/7383976693027912835/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/05/blog-post_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7383976693027912835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/7383976693027912835'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/05/blog-post_26.html' title='Разрушители легенд'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9218528766556826375.post-1121687183979982577</id><published>2007-05-18T11:25:00.000+06:00</published><updated>2007-05-18T11:39:08.834+06:00</updated><title type='text'>Начало...</title><content type='html'>&lt;div style="text-align: justify;"&gt;Наконец то выкроил время и смог что то сделать... А именно создать несколько панорамных снимков и выложить их в интернет...&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.deviantart.com/deviation/55556163/"&gt;&lt;img src="http://4.bp.blogspot.com/_EJSGN4G2IQA/Rk050_x5ZlI/AAAAAAAAAA8/0RB29RloQ0I/s200/Ural_by_ArthursShadow.jpg" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_EJSGN4G2IQA/Rk050_x5ZlI/AAAAAAAAAA8/0RB29RloQ0I/s200/Ural_by_ArthursShadow.jpg" alt="" id="BLOGGER_PHOTO_ID_5065768738498373202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;Это вот одна из них. Иногда весело кататься на велосипеде по природе... особенно если путь перекрывает разлившаяся речка.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.deviantart.com/deviation/55555150/"&gt;&lt;img src="http://3.bp.blogspot.com/_EJSGN4G2IQA/Rk06cvx5ZpI/AAAAAAAAABc/CODMVF_JwTQ/s200/Monument_to_the_Keyboard_by_ArthursShadow.jpg" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_EJSGN4G2IQA/Rk06cvx5ZpI/AAAAAAAAABc/CODMVF_JwTQ/s200/Monument_to_the_Keyboard_by_ArthursShadow.jpg" alt="" id="BLOGGER_PHOTO_ID_5065769421398173330" border="0" /&gt;&lt;/a&gt;А это фотография еще с поездки в Екатеринбург. На ней так же есть памятник клавиатуре, только вот все смотрят не на него;)&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Теперь стоит вопрос - что же делать в оставшуюся часть дня?:) Надеюсь она пройдет весело, и что получиться сходить куда нибудь - тем более теперь, когда свободного времени стало хоть чуть чуть, но больше...&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9218528766556826375-1121687183979982577?l=tagirovarthur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tagirovarthur.blogspot.com/feeds/1121687183979982577/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://tagirovarthur.blogspot.com/2007/05/blog-post.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/1121687183979982577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9218528766556826375/posts/default/1121687183979982577'/><link rel='alternate' type='text/html' href='http://tagirovarthur.blogspot.com/2007/05/blog-post.html' title='Начало...'/><author><name>Артур Тагиров</name><uri>http://www.blogger.com/profile/16182001513942771394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://lh4.google.ru/TagirovArthur/RrcTKxDZHeI/AAAAAAAAAB0/c89G6BncEt8/s144/IMG_0508.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EJSGN4G2IQA/Rk050_x5ZlI/AAAAAAAAAA8/0RB29RloQ0I/s72-c/Ural_by_ArthursShadow.jpg' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
