<?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-7349849</id><updated>2011-12-15T05:11:16.257+02:00</updated><category term='руль'/><category term='tricks'/><category term='.net tips'/><category term='педали'/><category term='javascript'/><category term='bugs'/><category term='rss'/><category term='programming'/><category term='ралли'/><category term='feedknopka'/><category term='.net'/><category term='юмор'/><category term='usability'/><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://programmist.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7349849.post-2770447587179240775</id><published>2008-11-29T15:18:00.002+02:00</published><updated>2008-11-29T15:30:10.485+02:00</updated><title type='text'>"Плюсик"</title><content type='html'>Как-то вечером понадобилось мне сорочно оплатить один сервис СМС'кой, а денег на телефоне почти не было, зато была Visa под рукой. Ну думаю, сейчас быстро пополню телефон через интернет, наверняка такая возможность уже есть. А как оказалось, все не так просто. Нет, я конечно нашел как телефон пополнить, но было это совсем не так быстро как хотелось бы.&lt;br /&gt;Тогда я решил сделать простенький сервис для &lt;a href="http://plusik.com.ua"&gt;пополнения счета телефона онлайн - "Плюсик"&lt;/a&gt;. Основных отличий от других подобных сервисов два:&lt;br /&gt;1. Простой и удобный интерфейс.&lt;br /&gt;2. Достаточная раскрученность в поисковиках, что бы сервис быстро находился теми, кому надо пополнить телефон.&lt;br /&gt;&lt;br /&gt;В общем, сервис этот все устройство мира не перевернет конечно, но те, кому важны вышеперечисленные достоинства, надеюсь оценят - "&lt;a href="http://plusik.com.ua"&gt;Плюсик&lt;/a&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-2770447587179240775?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/2770447587179240775/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=2770447587179240775' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/2770447587179240775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/2770447587179240775'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2008/11/blog-post.html' title='&quot;Плюсик&quot;'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-9207613430643020633</id><published>2007-10-13T10:54:00.000+03:00</published><updated>2007-10-13T11:01:38.566+03:00</updated><title type='text'>Продолжение</title><content type='html'>... к предыдущему посту.&lt;br /&gt;А вчера их было уже 1114. Для &lt;a href="http://dotnettipoftheday.org"&gt;сайта&lt;/a&gt; это самая удачная неделя за все время его жизни. Хотя когда читаю вот &lt;a href="http://habrahabr.ru/blog/mr_digger/27317.html"&gt;это&lt;/a&gt;, то чувствую себя полным лохом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-9207613430643020633?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/9207613430643020633/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=9207613430643020633' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/9207613430643020633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/9207613430643020633'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/10/blog-post_13.html' title='Продолжение'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-2626268234698609125</id><published>2007-10-11T12:13:00.000+03:00</published><updated>2007-10-11T12:21:32.297+03:00</updated><title type='text'>Маленькая победа</title><content type='html'>Позавчера на моем &lt;a href="http://dotnettipoftheday.org"&gt;сайте с советами по .NET&lt;/a&gt; был 121 уник, а вчера 600. Люблю такие сюрпризы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-2626268234698609125?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/2626268234698609125/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=2626268234698609125' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/2626268234698609125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/2626268234698609125'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/10/blog-post.html' title='Маленькая победа'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-889547828389360791</id><published>2007-07-17T22:26:00.000+03:00</published><updated>2007-07-17T22:37:26.983+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net tips'/><title type='text'>Мой новый проект</title><content type='html'>Нашлось тут немного времени для нового проекта (старый проект&amp;nbsp;&amp;#151; FeedКнопка, похоже здох). Итак, прошу любить и жаловать:&lt;br /&gt;&lt;br /&gt;&lt;div style="width:100%; text-align:center; font-size:150%;"&gt;&lt;a href="http://dotnettipoftheday.org"&gt;.NET Tip of The Day&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Суть, я думаю, ясна из самого названия. Если кто еще и отзыв напишет&amp;nbsp;&amp;#151; буду бесконечно счастлив.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-889547828389360791?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/889547828389360791/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=889547828389360791' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/889547828389360791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/889547828389360791'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/07/blog-post.html' title='Мой новый проект'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-1374392177894361443</id><published>2007-06-21T10:13:00.000+03:00</published><updated>2007-06-21T10:15:51.935+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedknopka'/><title type='text'>Роман Пушкин, где ты???</title><content type='html'>&lt;a href="http://romanpushkin.blogspot.com/"&gt;Роман Пушкин&lt;/a&gt;, отзовись! &lt;a href="http://feedbuddy.net"&gt;FeedBuddy&lt;/a&gt; уже пол месяца как недоступен!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-1374392177894361443?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/1374392177894361443/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=1374392177894361443' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/1374392177894361443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/1374392177894361443'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/06/blog-post.html' title='Роман Пушкин, где ты???'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-7933666186085390567</id><published>2007-04-05T20:01:00.000+03:00</published><updated>2007-04-05T20:04:30.635+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedknopka'/><title type='text'>FeedКнопка =&gt; FeedBuddy.net</title><content type='html'>Ну все, FeedКнопка (которая теперь называется &lt;a href="http://feedbuddy.net/"&gt;FeedBuddy.net&lt;/a&gt;) готова! Можете ставить ее себе на сайты. А мне писать свои пожелания. Отвечу всем :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-7933666186085390567?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/7933666186085390567/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=7933666186085390567' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7933666186085390567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7933666186085390567'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/04/feed-feedbuddynet.html' title='FeedКнопка =&gt; FeedBuddy.net'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-7908523839841753324</id><published>2007-03-22T10:47:00.000+02:00</published><updated>2007-03-22T11:13:42.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Как писать код для установки виджета</title><content type='html'>Код для установки виджета, это то, что веб-мастер вставит в свою страницу, что бы получить на ней виджет. Разрабатывая FeedКнопку пришел к такой схеме (эту схему использует AdSense):&lt;br /&gt;&lt;div style="padding-left:20px; padding-right:20px; padding-top:10px;"&gt;Код состоит из двух тегов &lt;i&gt;&amp;lt;script&amp;gt;&lt;/i&gt;. В первом теге в глобальные переменные устанавливаются параметры виджета. Второй тег подключает внешний .js-файл, содержащий JavaScript код, который генерирует HTML-код виджета.&lt;/div&gt;&lt;br /&gt;Пример:&lt;code style="padding-left:20px;"&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&amp;lt;!--&lt;br /&gt; google_ad_width = 234;&lt;br /&gt; google_ad_height = 60;&lt;br /&gt; google_ad_format = "234x60_as";&lt;br /&gt; google_ad_type = "text_image";&lt;br /&gt; google_color_border = "FFFFFF";&lt;br /&gt; google_color_bg = "FFFFFF";&lt;br /&gt; google_color_link = "0066CC";&lt;br /&gt; google_color_text = "000000";&lt;br /&gt; google_color_url = "666666";&lt;br /&gt;//--&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Огромный плюс этого метода в том, что в будущем можно изменять HTML-код виджета (который генерируется JavaScript'ом).&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-7908523839841753324?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/7908523839841753324/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=7908523839841753324' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7908523839841753324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7908523839841753324'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/03/blog-post_22.html' title='Как писать код для установки виджета'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-794022815383235238</id><published>2007-03-21T00:10:00.000+02:00</published><updated>2007-03-21T00:38:35.047+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='планы'/><title type='text'>Я вышел из запоя</title><content type='html'>Несколько последних недель занимался одним &lt;a href="http://kinozona.com.ua"&gt;сайтом&lt;/a&gt;. Сайт русскоязычный, ориентирован на украинскую аудиторию. Через три недели понял, что бессмысленное это занятие. И вот почему.&lt;br /&gt;1. В AdSense постоянно крутилось штук 8 разных объявлений, включая Форекс и какую-то религиозную чушь. Сложилось впечатление, что AdSense на Украине используют еще очень мало, и ни о какой конкуренции за рекламную площадь и речи быть не может.&lt;br /&gt;2. А так как конкуренции нет, то и за клики платят по 3-4 цента.&lt;br /&gt;&lt;br /&gt;Переходить на другую банерную сеть, платящую за показы мне не хотелось. Совесть не позволяет мне сделать еще один сайт с кучей мигающих банеров. И я решил забить пока. И забил. Поехал в Карпаты, на Драгобрат, там снега выпало 3 м. Покатался четыре дня. И вот, с новыми силами, готов работать дальше. Думаю, сначала все таки доделать  FeedКнопку. Потом займусь новым сайтом, ориентированным на .NET программистов. И больше никакого ру-нета! :)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_8K_TOYoJcoU/RgBiApGL6FI/AAAAAAAAABY/Dua9Hu4LQ0I/s1600-h/Dragobrat.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_8K_TOYoJcoU/RgBiApGL6FI/AAAAAAAAABY/Dua9Hu4LQ0I/s320/Dragobrat.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5044139345826277458" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-794022815383235238?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/794022815383235238/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=794022815383235238' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/794022815383235238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/794022815383235238'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/03/blog-post.html' title='Я вышел из запоя'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_8K_TOYoJcoU/RgBiApGL6FI/AAAAAAAAABY/Dua9Hu4LQ0I/s72-c/Dragobrat.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-3189318561154673067</id><published>2007-03-03T13:45:00.000+02:00</published><updated>2007-03-03T13:49:16.542+02:00</updated><title type='text'>JavaScript IntelliSense</title><content type='html'>Наконец-то, в Visual Studio ("Orcas") добавилась поддержка IntelliSense для JavaScript'а, да еще и какая!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/webdevtools/archive/2007/03/02/jscript-intellisense-in-orcas.aspx"&gt;JScript IntelliSense in Visual Studio "Orcas"&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-3189318561154673067?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/3189318561154673067/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=3189318561154673067' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/3189318561154673067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/3189318561154673067'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/03/javascript-intellisense.html' title='JavaScript IntelliSense'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-5531707186922208185</id><published>2007-02-20T02:59:00.000+02:00</published><updated>2007-02-20T03:47:20.683+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedknopka'/><title type='text'>Новости FeedКнопки</title><content type='html'>Новость 1: в команде проекта &lt;a href="http://feedknopka.com/"&gt;FeedКнопка&lt;/a&gt; новый человек - Роман Пушкин. Почитайте его блог о &lt;a href="http://www2.blogger.com/comment.g?blogID=22029073&amp;postID=116982227825780923"&gt;здоровье&lt;/a&gt;, &lt;a href="http://www2.blogger.com/comment.g?blogID=22029073&amp;postID=116998040185708591"&gt;AdSense&lt;/a&gt; , &lt;a href="http://www2.blogger.com/comment.g?blogID=22029073&amp;postID=8717077148064597941"&gt;&amp;laquo;Подсолнухах&amp;raquo; Ван Гога&lt;/a&gt; и о том &lt;a href="http://www2.blogger.com/comment.g?blogID=22029073&amp;postID=7555093799681228361"&gt;как заработать много денег&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Новость 2: сначала появится англоязычная FeedКнопка, а потом уже русскоязычная. Да и называться она будет скорее всего не FeedКнопка.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-5531707186922208185?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/5531707186922208185/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=5531707186922208185' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/5531707186922208185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/5531707186922208185'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/02/feed.html' title='Новости FeedКнопки'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-7326006055905751590</id><published>2007-02-18T01:44:00.000+02:00</published><updated>2007-02-18T01:58:25.180+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Странности UriBuilder.Query</title><content type='html'>Из MSDN:&lt;br /&gt;&amp;laquo;UriBuilder.Query - Gets or sets any query information included in the URI.&amp;raquo;&lt;br /&gt;&lt;br /&gt;Странно то, что если мы присваеваем этом свойству значение, то к новому значению в начало добавляется &amp;laquo;?&amp;raquo;. Причем делается это в любом случае, даже если новое значение уже начинается с &amp;laquo;?&amp;raquo; (проверял через Reflector). В результате, если я хочу к существующему Query добавить параметр, то нужно написать вот такой странный код:&lt;br /&gt;&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;br /&gt;&lt;p style="margin: 0px;"&gt;uriBuilder.Query = uriBuilder.Query.Substring(1) + &lt;span style="color: #a31515;"&gt;"&amp;amp;param1=some_value"&lt;/span&gt;;&lt;/p&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/7349849-7326006055905751590?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/7326006055905751590/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=7326006055905751590' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7326006055905751590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7326006055905751590'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/02/uribuilderquery.html' title='Странности UriBuilder.Query'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-1263881992793985793</id><published>2007-02-16T15:10:00.000+02:00</published><updated>2007-02-16T15:13:41.517+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='юмор'/><title type='text'>Girls don't like you?</title><content type='html'>Из сегодняшнего спама :)&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_8K_TOYoJcoU/RdWt1qwH27I/AAAAAAAAAAk/Jx581cCxWa8/s1600-h/viagra.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_8K_TOYoJcoU/RdWt1qwH27I/AAAAAAAAAAk/Jx581cCxWa8/s400/viagra.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5032119296177200050" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-1263881992793985793?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/1263881992793985793/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=1263881992793985793' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/1263881992793985793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/1263881992793985793'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/02/girls-dont-like-you.html' title='Girls don&apos;t like you?'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_8K_TOYoJcoU/RdWt1qwH27I/AAAAAAAAAAk/Jx581cCxWa8/s72-c/viagra.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-3731897485290750534</id><published>2007-02-03T22:25:00.000+02:00</published><updated>2007-02-03T22:31:27.785+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedknopka'/><title type='text'>FeedKnopka.com</title><content type='html'>Сегодня установил новую версию FeedКнопки. В числе изменений бета версия дизайна бета версии сайта ;)&lt;br /&gt;&lt;br /&gt;Зацените работу дизайнера - &lt;a href="http://feedknopka.com/"&gt;feedknopka.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-3731897485290750534?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/3731897485290750534/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=3731897485290750534' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/3731897485290750534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/3731897485290750534'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/02/feedknopkacom.html' title='FeedKnopka.com'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-740126349465857308</id><published>2007-02-02T14:45:00.001+02:00</published><updated>2007-02-02T14:49:25.086+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Определение координат самой правой видимой в окне браузера точки</title><content type='html'>&lt;p&gt;Улучшая поведение меню FeedКнопки (см. предыдущий пост) столкнулся с проблемой: как определить координаты самой правой видимой в окне браузера точки (или самой нижней)? Да еще что бы это работало в IE, FireFox и Opera.&lt;/p&gt; &lt;p&gt;Решение для Internet Explorer:&lt;/p&gt; &lt;p&gt;Объект, представляющий весь контент окна в разных режимах рендеринга&amp;nbsp;разный. Делаем служебную&amp;nbsp;функцию, возвращающую нужный элемент:&lt;/p&gt; &lt;div style="color: black; background-color: white"&gt; &lt;p&gt;&lt;font color="#0000ff" size="2"&gt;function&lt;/font&gt;&lt;font size="2"&gt; GetIEDocumentElement()&lt;/font&gt;&lt;font size="2"&gt;&lt;br&gt;{&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; (document.compatMode &amp;amp;&amp;amp; document.compatMode != &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;"BackCompat"&lt;/font&gt;&lt;font size="2"&gt;) ? document.documentElement : document.body;&lt;br&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Теперь&amp;nbsp;определяем адрес самой правой видимой в окне браузера точки (самая нижняя определяется по аналогии):&lt;/p&gt; &lt;div style="color: black; background-color: white"&gt;&lt;font color="#0000ff" size="2"&gt;var&lt;/font&gt;&lt;font size="2"&gt; rightEdge = GetIEDocumentElement().scrollLeft + GetIEDocumentElement().clientWidth;&lt;/font&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Для FireFox&amp;nbsp;и Oper'ы проще:&lt;/p&gt; &lt;div style="color: black; background-color: white"&gt;&lt;font color="#0000ff" size="2"&gt;var&lt;/font&gt;&lt;font size="2"&gt; rightEdge = window.pageXOffset + window.innerWidth;&lt;/font&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-740126349465857308?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/740126349465857308/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=740126349465857308' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/740126349465857308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/740126349465857308'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/02/blog-post_02.html' title='Определение координат самой правой видимой в окне браузера точки'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-126978531604053274</id><published>2007-02-02T14:20:00.001+02:00</published><updated>2007-02-02T14:46:32.151+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feedknopka'/><title type='text'>Небольшой перерыв</title><content type='html'>&lt;p&gt;Давно уже ничего не писал сюда. В основном из-за того что я в отпуске... на 3 недели!!! :)&lt;/p&gt; &lt;p&gt;Но время от времени продолжаю работать над &lt;a href="http://feedknopka.com/"&gt;FeedКнопкой&lt;/a&gt;&amp;nbsp;(это адрес будущего сайта). Вчера доделал последнюю из запланированный функций самой&amp;nbsp;кнопки: меню будет стараться нарисоваться так, что бы не залезть за границу окна. Это для случаев когда кнопку ставят возле правого края или внизу страницы.&lt;/p&gt; &lt;p&gt;Осталось доделать сайт сервиса.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-126978531604053274?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/126978531604053274/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=126978531604053274' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/126978531604053274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/126978531604053274'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/02/blog-post.html' title='Небольшой перерыв'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-3591244346967665545</id><published>2007-01-23T00:02:00.001+02:00</published><updated>2007-01-23T00:02:51.902+02:00</updated><title type='text'>О новой Visual Studio</title><content type='html'>&lt;p&gt;&lt;a title="New Web Form Designer" href="http://blogs.msdn.com/mikhailarkhipov/archive/2007/01/20/sapphire-new-web-form-designer-in-visual-studio-orcas.aspx"&gt;Пост&lt;/a&gt; какого-то мужика из Microsoft о новом web form&amp;nbsp;designer'е в Visual Studio&amp;nbsp;Orcas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-3591244346967665545?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/3591244346967665545/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=3591244346967665545' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/3591244346967665545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/3591244346967665545'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/visual-studio.html' title='О новой Visual Studio'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-8882472892333312767</id><published>2007-01-19T16:04:00.001+02:00</published><updated>2007-01-19T16:08:41.388+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='feedknopka'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>Меню FeedКнопки</title><content type='html'>&lt;p&gt;Заходил на днях к дизайнеру знакомому&amp;nbsp;на пиво. Немного привели в порядок внешний вид меню FeedКнопки. Результат можно посмотреть на этом блоге.&lt;/p&gt; &lt;p&gt;Есть, правда, пару вещей, на счет которых я еще не уверен:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Нужно ли подсвечивать строки с кнопками при наведении мышкой? Особенно, если учесть что&amp;nbsp;кликабельна&amp;nbsp;не вся строка,&amp;nbsp;а только кнопка. Делать кликабельной всю строку не правильно, потому что четко видно кнопки и кликать надо именно на них. Но с другой стороны, эта подсветка помагат "целиться" в кнопки.&lt;/li&gt; &lt;li&gt;Ссылка &amp;laquo;Еще...&amp;raquo; и &amp;laquo;FeedКнопка&amp;raquo;. Как-то они не сильно гармонично выглядят. Надо попробовать cсылку "FeedКнопка" перекрасить в оранжевый, под цвет кнопки и рамки меню.&lt;/li&gt; &lt;li&gt;При клике на кнопку подписки открывать страницу в новом окне или в текущем? Думаю что в новом все же. Что бы не прерывать работу пользователя с основным сайтом.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-8882472892333312767?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/8882472892333312767/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=8882472892333312767' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/8882472892333312767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/8882472892333312767'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/feed_19.html' title='Меню FeedКнопки'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-7327586587707704692</id><published>2007-01-18T20:02:00.000+02:00</published><updated>2007-01-18T20:16:21.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><title type='text'>Пустое пространство после IMG в Internet Explorer</title><content type='html'>Вот такой простой код работает по разному в IE и FireFox:&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" &amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;b&gt;&amp;lt;div style="border: solid 1px black"&amp;gt;&lt;br /&gt; &amp;lt;img src="search_button.png" /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_8K_TOYoJcoU/Ra-4M97XWnI/AAAAAAAAAAY/89-LOxo9__U/s1600-h/img_extra_space_in_ie.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_8K_TOYoJcoU/Ra-4M97XWnI/AAAAAAAAAAY/89-LOxo9__U/s400/img_extra_space_in_ie.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5021434642462890610" /&gt;&lt;/a&gt;В Internet Explorer после картинки неожиданно появляется пустое пространство, а в FireFox'е никаких пустых пространств.&lt;br /&gt;&lt;br /&gt;Лечится проблема двумя способами&lt;br /&gt;1. Убираем все пробелы и переносы строк между img и зарывающим div. Не всегда можно применить, особенно когда используются ASP.NET контролы и img и div находятся в разных контролах.&lt;br /&gt;2. Прописываем стиль display:block к img.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-7327586587707704692?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/7327586587707704692/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=7327586587707704692' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7327586587707704692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/7327586587707704692'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/img-internet-explorer.html' title='Пустое пространство после IMG в Internet Explorer'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_8K_TOYoJcoU/Ra-4M97XWnI/AAAAAAAAAAY/89-LOxo9__U/s72-c/img_extra_space_in_ie.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-6141040237673775873</id><published>2007-01-15T20:28:00.000+02:00</published><updated>2007-01-15T20:33:05.161+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>Прототип FeedКнопки в действи</title><content type='html'>Поставил на этот блог вместо стандартной rss-кнопки и &amp;laquo;Читать в Яндекс.Ленте&amp;raquo; первый прототип FeedКнопки. С меню, конечно, надо еще поработать. Хотелось бы сделать его более &amp;laquo;умным&amp;raquo;, подстраивающимся под конкретного посетителя.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-6141040237673775873?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/6141040237673775873/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=6141040237673775873' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/6141040237673775873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/6141040237673775873'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/feed_15.html' title='Прототип FeedКнопки в действи'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-2842155933310421675</id><published>2007-01-13T17:44:00.000+02:00</published><updated>2007-01-13T19:09:05.962+02: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;a href="http://www.logitech.com/index.cfm/products/details/US/EN,CRID=2217,CONTENTID=6030"&gt;манипулятор типа "руль"&lt;/a&gt; (это так в ценнике было написано) и &lt;a href="http://www.ag.ru/games/richard_burns_rally"&gt;Richard Burns Rally&lt;/a&gt;.&lt;br /&gt;&lt;strong&gt;Ух жара!!!&lt;/strong&gt; :) Не сравнить с Need for Speed и игрой на клавиатуре. Особенно понравились асфальтовые горные серпантины во Франции.&lt;a href="http://www.richardburnsrally.com/wallpapers/wallpaper1_800x600.jpg"&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://www.richardburnsrally.com/wallpapers/wallpaper1_800x600.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-2842155933310421675?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/2842155933310421675/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=2842155933310421675' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/2842155933310421675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/2842155933310421675'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/blog-post.html' title='Покупка'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-4643848279819149479</id><published>2007-01-12T16:27:00.000+02:00</published><updated>2007-01-13T15:02:17.332+02:00</updated><title type='text'>Внешний вид feed-кнопки</title><content type='html'>Вместе со знакомым дизайнером придумали внешний вид feed-кнопки:&lt;br /&gt;&lt;br /&gt;&lt;div style="width:100%; text-align:center"&gt;&lt;br /&gt; &lt;div style="margin-left:auto; margin-right:auto; width: 40px; height: 28px; background-image: url(http://feedknopka.com/0/feed-icon-40x56.png); background-position: 0px 28px; font-size: 1px; display:block;" onmouseover="this.style.backgroundPosition='0px 0px'" onmouseout="this.style.backgroundPosition='0px 28px'"&gt;&lt;a href="http://feeds.feedburner.com/programmist" style="height: 28px; width:28px; display: block; float:left;"&gt;&lt;/a&gt;&lt;a href="#" onclick="alert('Бац! И открылось меню со списком кнопок для подписки в online-ридерах.'); return false;" style="height: 28px; width:12px; display: block; float:right;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-size: 80%"&gt;(реагирует на мышку)&lt;/div&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/7349849-4643848279819149479?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/4643848279819149479/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=4643848279819149479' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/4643848279819149479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/4643848279819149479'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/feed_12.html' title='Внешний вид feed-кнопки'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-4844004672692847236</id><published>2007-01-12T16:12:00.001+02:00</published><updated>2007-01-12T16:12:20.240+02:00</updated><title type='text'>"FeedКнопка"</title><content type='html'>&lt;p&gt;Сервис, предоставляющий кнопку для подписки на&amp;nbsp;RSS&amp;nbsp;сайта&amp;nbsp;будет называться&amp;nbsp;«&lt;strong&gt;&lt;font color="#ff8000"&gt;FeedКнопка&lt;/font&gt;&lt;/strong&gt;».&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;(Жаль что адрес feedbutton.com уже занят)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-4844004672692847236?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/4844004672692847236/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=4844004672692847236' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/4844004672692847236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/4844004672692847236'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/feed.html' title='&amp;quot;FeedКнопка&amp;quot;'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-6951924677982260324</id><published>2007-01-08T12:17:00.000+02:00</published><updated>2007-01-08T12:33:29.924+02:00</updated><title type='text'>Удобство подписки на RSS.</title><content type='html'>&lt;p&gt;Идея создать мега-feed-кнопку возникла когда я&amp;nbsp;начал добавлять на&amp;nbsp;страницы этого блога кнопки для быстрой подписки на&amp;nbsp;RSS-канал в&amp;nbsp;on-line RSS-ридерах. Что-то типа такого:&lt;a href="http://bp0.blogger.com/_8K_TOYoJcoU/RaIdzmEO6FI/AAAAAAAAAAM/Q1BAuCcirVw/s1600-h/subscribe2rss_buttons.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_8K_TOYoJcoU/RaIdzmEO6FI/AAAAAAAAAAM/Q1BAuCcirVw/s400/subscribe2rss_buttons.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5017605707072989266" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Кнопки однозначно полезные, так как делают подписку на&amp;nbsp;RSS легкой и&amp;nbsp;быстрой, и&amp;nbsp;поэтому должны использоваться повсеместно. Вот только есть некоторые проблемы:&lt;ol&gt;&lt;li&gt;Какие именно кнопки ставить? Я&amp;nbsp;пользуюсь Яндекс.Лентой и&amp;nbsp;поэтому у&amp;nbsp;меня сейчас всего две кнопки: обычная ссылка на&amp;nbsp;RSS-канал и&amp;nbsp;&amp;laquo;Читать в&amp;nbsp;Яндекс.Ленте&amp;raquo;. Явно надо больше. Как минимум, должны быть кнопки всех основных читалок (как определить какие читалки основные?). Желательно еще посматривать, не&amp;nbsp;появились&amp;nbsp;ли новые популярные читалки.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Выглядит эта гирлянда из&amp;nbsp;цветастых кнопок адски. Не&amp;nbsp;каждый дизайнер сможет ее&amp;nbsp;нормально разместить на&amp;nbsp;сайте. Ну&amp;nbsp;и&amp;nbsp;места такой список занимает на&amp;nbsp;мало.&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;p&gt;Сначала хотел поставить одну кнопку, по&amp;nbsp;клику на&amp;nbsp;которой открывается всплывающее меню со&amp;nbsp;всеми остальными кнопками. Минус в&amp;nbsp;том, что нужно сделать на&amp;nbsp;один клик больше что&amp;nbsp;бы добавить RSS-канал в&amp;nbsp;читалку. Зато цветастые кнопки не&amp;nbsp;отвлекают внимание при просмотре сайта и&amp;nbsp;не&amp;nbsp;занимают много места. Потом подумал, что это решение может заинтересовать и&amp;nbsp;других, и&amp;nbsp;решил оформить это как сервис:&lt;/p&gt;&lt;p style="width:100%; text-align:center;"&gt;&lt;i&gt;Заходишь на&amp;nbsp;сайт&lt;/i&gt; -&gt; &lt;i&gt;вводишь адрес своего RSS-канала&lt;/i&gt; -&gt; &lt;i&gt;получаешь небольшой HTML-код для кнопки и&amp;nbsp;всплывающего меню&lt;/i&gt; -&gt; &lt;i&gt;размещаешь код у&amp;nbsp;себя на&amp;nbsp;сайте&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;А сервис уже сам позаботиться о&amp;nbsp;том, что&amp;nbsp;бы на&amp;nbsp;вашем сайте во&amp;nbsp;всплывающем меню всегда был набор из&amp;nbsp;нужных кнопок. В&amp;nbsp;общем, сейчас этим и&amp;nbsp;занимаюсь.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-6951924677982260324?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/6951924677982260324/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=6951924677982260324' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/6951924677982260324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/6951924677982260324'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/rss.html' title='Удобство подписки на RSS.'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_8K_TOYoJcoU/RaIdzmEO6FI/AAAAAAAAAAM/Q1BAuCcirVw/s72-c/subscribe2rss_buttons.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-696079577191990896</id><published>2007-01-04T17:18:00.001+02:00</published><updated>2007-01-04T17:18:47.267+02:00</updated><title type='text'>Ушедший 2006-й</title><content type='html'>&lt;p&gt;Год закончился тем что я стал папой. Не скажу что это было не ожиданно, но, как оказалось, я все таки был к этому еще не совсем готов. Буду теперь разбираться что и как :)&lt;/p&gt; &lt;p&gt;Еще я придумал маленький но, как мне кажется, полезный сервис. Не долгие поиски в google показали что &lt;a href="http://feedbutton.com/"&gt;я не один такой умный&lt;/a&gt;.&amp;nbsp;Но реализация мне не понравилась. Так что решил сделать свою версию (и даже уже начал).&lt;/p&gt; &lt;p&gt;Что-то еще было в конце года, но уже все вылетело из головы. Дети... с ними столько хлопот :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-696079577191990896?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/696079577191990896/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=696079577191990896' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/696079577191990896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/696079577191990896'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2007/01/2006.html' title='Ушедший 2006-й'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-116620766014294265</id><published>2006-12-15T20:34:00.000+02:00</published><updated>2006-12-15T20:39:16.676+02:00</updated><title type='text'>Разработка custom UsernameTokenManager</title><content type='html'>&lt;p&gt;Если вы разрабатываете собственный UsernameTokenManager, и столкнулись с проблемой:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Microsoft.Web.Services3.Security.SecurityFault: &lt;strong&gt;UsernameToken is expected but not present in the security header of the incoming message.&lt;br&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp; at Microsoft.Web.Services3.Design.UsernameOverTransportAssertion.ServiceInputFilter.ValidateMessageSecurity(SoapEnvelope envelope, Security security)&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.Web.Services3.Security.ReceiveSecurityFilter.ProcessMessage(SoapEnvelope envelope)&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.Web.Services3.Pipeline.ProcessInputMessage(SoapEnvelope envelope)&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.Web.Services3.WseProtocol.FilterRequest(SoapEnvelope requestEnvelope)&lt;br&gt;&amp;nbsp;&amp;nbsp; at Microsoft.Web.Services3.WseProtocol.RouteRequest(SoapServerMessage message)&lt;br&gt;&amp;nbsp;&amp;nbsp; at System.Web.Services.Protocols.SoapServerProtocol.Initialize()&lt;br&gt;&amp;nbsp;&amp;nbsp; at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)&lt;br&gt;&amp;nbsp;&amp;nbsp; at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean&amp;amp; abortProcessing)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;- то проверьте, что у вас правильно сконфигурирована секция microsoft.web.services3/security/securityTokenManager в web.config. И убедитесь что в атрибуте namespace указано «http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd».&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-116620766014294265?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/116620766014294265/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=116620766014294265' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116620766014294265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116620766014294265'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/12/custom-usernametokenmanager.html' title='Разработка custom UsernameTokenManager'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-116613548658665681</id><published>2006-12-15T00:31:00.000+02:00</published><updated>2006-12-15T00:32:32.103+02:00</updated><title type='text'>Аутентификация в веб-сервисах 2</title><content type='html'>&lt;p&gt;(Продолжние)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Продолжаю в&amp;nbsp;свободное время разбираться с&amp;nbsp;проблемой &lt;a title="Аутентификация в веб-сервисах" href="http://programmist.blogspot.com/2006/12/blog-post.html"&gt;аутентификации в&amp;nbsp;веб-сервисах&lt;/a&gt;. От&amp;nbsp;первой идеи написать все самому я,&amp;nbsp;слава Богу, отказался :) Потом пытался использовать код из&amp;nbsp;статьи «&lt;a title="How to: Perform Custom Authentication Using SOAP Headers" href="http://msdn2.microsoft.com/en-us/library/9z52by6a.aspx"&gt;How to:&amp;nbsp;Perform Custom Authentication Using SOAP Headers&lt;/a&gt;», но&amp;nbsp;как-то не&amp;nbsp;верилось что нет более правильного метода. Предложенный метод выглядел как-то уж&amp;nbsp;слишком custom.&lt;/p&gt; &lt;p&gt;И «правильный» метод существует&amp;nbsp;— &lt;a title="Web Service Enchancements (WSE)" href="http://msdn.microsoft.com/webservices/webservices/building/wse/default.aspx"&gt;Web Service Enchancements (WSE)&lt;/a&gt; и&amp;nbsp;&lt;a title="Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/wssp.asp"&gt;руководство по&amp;nbsp;безопасности веб-сервисов&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Коцептуально, существует два способа аутентификации: аутентификация через посредника (brokered) и&amp;nbsp;непосредственная аутентификация (direct). Грубо говоря, аутентификация через посредника (Microsoft Passport) хороша когда клиент не&amp;nbsp;доверяет сервису и&amp;nbsp;не&amp;nbsp;хочет ему предоставлять свои credentials, например номер своей кредитки при покупке в&amp;nbsp;он-лайн магазине. Так&amp;nbsp;же, метод хорош для так называемых «single sign-on» концепций. (Примечание: все «за» и&amp;nbsp;«против» для обоих методов собраны в&amp;nbsp;руководстве.)&lt;/p&gt; &lt;p&gt;В моем случае нужна непосредственная аутентификация, что означает что клиент должен предоставить сервису логин и&amp;nbsp;пароль, что&amp;nbsp;бы сервис смог его аутентифицировать.&lt;/p&gt; &lt;p&gt;Ну а&amp;nbsp;дальше, открываем руководство, Глава 1&amp;nbsp;«Authentication Patterns», раздел «Direct Authentication» и&amp;nbsp;делаем как там написано.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;P.S. надо&amp;nbsp;б еще прототипчик наваять, что&amp;nbsp;б все усвоилось…&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-116613548658665681?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/116613548658665681/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=116613548658665681' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116613548658665681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116613548658665681'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/12/2.html' title='Аутентификация в веб-сервисах 2'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-116560627084494327</id><published>2006-12-08T21:31:00.000+02:00</published><updated>2006-12-08T21:31:11.230+02:00</updated><title type='text'>Хранение двоичных данных в MS SQL 2005</title><content type='html'>&lt;p&gt;Microsoft пишет, что для хранения двоичных данных (картинок в базе) в MS SQL 2005 нужно использовать новый тип varbinary(max), а не image как в MS SQL 2000. Говорят что с ним легче работать чем с image.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"However, unlike the older &lt;b&gt;image&lt;/b&gt; data type where the application needed to use an entirely different data access mechanism to read and write the binary data, the new &lt;b&gt;varbinary(max)&lt;/b&gt; data type enables applications to access the data stored in the same way as the other SQL Server data types."&lt;/p&gt; &lt;p&gt;&lt;a title="Upgrading MSDE 2000 to SQL Server 2005 Express" href="http://www.microsoft.com/technet/prodtechnol/sql/2005/msde2sqlexpress.mspx#EIE"&gt;Upgrading MSDE 2000 to SQL Server 2005 Express&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-116560627084494327?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/116560627084494327/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=116560627084494327' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116560627084494327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116560627084494327'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/12/ms-sql-2005.html' title='Хранение двоичных данных в MS SQL 2005'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-116550612036282711</id><published>2006-12-07T17:42:00.000+02:00</published><updated>2006-12-07T17:42:00.470+02:00</updated><title type='text'>Проблема с HtmlElement.NextSibling</title><content type='html'>&lt;p&gt;Нашел баг в Framework.NET 2.0 в реализации свойства HtmlElement.NextSibling. Все у кого случается вот такая ошибка:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Unable to cast COM object of type 'System.__ComObject' to interface type 'IHTMLElement'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;проголосуйте за &lt;a title="HtmlElement.NextSibling problem" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=243990" target="_blank"&gt;соответствующий feedback&lt;/a&gt; на сайте Microsoft.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-116550612036282711?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/116550612036282711/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=116550612036282711' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116550612036282711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116550612036282711'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/12/htmlelementnextsibling.html' title='Проблема с HtmlElement.NextSibling'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-116525805619423655</id><published>2006-12-05T21:06:00.000+02:00</published><updated>2006-12-05T21:09:32.433+02:00</updated><title type='text'>Аутентификация в веб-сервисах</title><content type='html'>&lt;a href="http://photos1.blogger.com/x/blogger/970/438/1600/431634/SecuringWebService1.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/970/438/320/567601/SecuringWebService1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Условия задачи&lt;/em&gt;: имеется сайт со&amp;nbsp;своей системой аутентификации пользователей: использованы стандартный &lt;a href="http://msdn2.microsoft.com/en-us/library/tw292whz.aspx"&gt;Membership-сервис&lt;/a&gt; и&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-us/library/xdt4thhy.aspx"&gt;Forms-аутентификация&lt;/a&gt;. Для этого сайта разрабатывается Windows Forms клиент, который будет &amp;laquo;общаться&amp;raquo; с&amp;nbsp;сайтом через веб-сервисы.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Задача&lt;/em&gt;: правильно обеспечить безопасность веб-сервисов и&amp;nbsp;разрешить доступ к&amp;nbsp;ним только аутентифицированным пользователям.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Вроде как стандартная задача. Думаю я не первый с ней сталкиваюсь. Но есть несколько вариантов решения. Пока сижу учу матчасть.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-116525805619423655?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/116525805619423655/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=116525805619423655' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116525805619423655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116525805619423655'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/12/blog-post.html' title='Аутентификация в веб-сервисах'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-116525955448517250</id><published>2006-12-04T21:12:00.000+02:00</published><updated>2006-12-04T21:26:57.963+02:00</updated><title type='text'>Resource Refactoring Tool</title><content type='html'>&lt;p&gt;Обычно, когда пишу какое-то новое приложение (скорее даже прототип, или версию &amp;laquo;0&amp;raquo;) то&amp;nbsp;не&amp;nbsp;хочется тратить силы и&amp;nbsp;время на&amp;nbsp;&amp;laquo;вылизывание&amp;raquo; кода. В&amp;nbsp;частности, это относится к&amp;nbsp;строковым константам в&amp;nbsp;коде, которые по-хорошему должны быть вынесены в&amp;nbsp;.RESX-файлы. И&amp;nbsp;каждый раз мне такой код не&amp;nbsp;давал потом спать спокойно и&amp;nbsp;снился по&amp;nbsp;ночам в&amp;nbsp;кошмарах, потому что это &amp;laquo;не&amp;nbsp;правильно&amp;raquo;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.codeplex.com/Project/FileDownload.aspx?ProjectName=ResourceRefactoring&amp;CountDownload=false&amp;DownloadId=4244"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://www.codeplex.com/Project/FileDownload.aspx?ProjectName=ResourceRefactoring&amp;CountDownload=false&amp;DownloadId=4244" border="0" alt="Resource Refactoring Tool" /&gt;&lt;/a&gt;&lt;br /&gt;Проблему решила утилита &lt;a href="http://www.codeplex.com/ResourceRefactoring"&gt;Resource Refactoring Tool&lt;/a&gt;, которая помагает быстро вынести строковые константы в&amp;nbsp;.RESX-файлы. Теперь протопиы я&amp;nbsp;пишу с&amp;nbsp;константами прям в&amp;nbsp;коде и&amp;nbsp;потом, если понадобиться, то&amp;nbsp;быстро выношу их&amp;nbsp;в&amp;nbsp;.RESX-файлы.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-116525955448517250?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/116525955448517250/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=116525955448517250' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116525955448517250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/116525955448517250'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/12/resource-refactoring-tool.html' title='Resource Refactoring Tool'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115816752124211591</id><published>2006-09-13T20:09:00.000+03:00</published><updated>2006-09-13T20:14:01.233+03:00</updated><title type='text'>Английская версия</title><content type='html'>Раздумываю над тем, что бы завести английскую версию блога... Причины две:&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Хочу попрактиковаться в английском.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;Интересно стать участником интернационального сообщества разработчиков. Интересно познакомиться ближе с &lt;i&gt;их&lt;/i&gt; культурой и менталитетом. Можно конечно и без блога вливаться, но с блогом интереснее.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Если бы у этого блога были читатели, то я бы сросил у них, "Что думаете про &lt;i&gt;ихние&lt;/i&gt; сообщества и блоги на английском, которые ведут не native-speakers? Может у кого-то уже есть опыт?" Но, судя по статистике, пока сюда заходят только поисковые боты. Сейчас они индексируют этот текст, и им точно не до моих проблем.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115816752124211591?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115816752124211591/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115816752124211591' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115816752124211591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115816752124211591'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/09/blog-post_115816752124211591.html' title='Английская версия'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115807199667169125</id><published>2006-09-12T17:39:00.000+03:00</published><updated>2006-09-12T18:23:39.216+03:00</updated><title type='text'>Как быстро вставлять часто используемые блоки кода</title><content type='html'>&lt;p&gt;К примеру, часто при создании ASP.NET контролов я&amp;nbsp;создаю свойство, которое хранит значение во ViewState. Код всегда выглядит примерно одинаково:&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; ShowsCount&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; ViewState[&lt;span style="color: maroon"&gt;"ShowsCount"&lt;/span&gt;] == &lt;span style="color: blue"&gt;null&lt;/span&gt; ? 0 : (&lt;span style="color: blue"&gt;int&lt;/span&gt;) ViewState[&lt;span style="color: maroon"&gt;"ShowsCount"&lt;/span&gt;];&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;set&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ViewState[&lt;span style="color: maroon"&gt;"ShowsCount"&lt;/span&gt;] = &lt;span style="color: blue"&gt;value&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt; &lt;p&gt;и отличается обычно только типом и названием свойства. Полез копаться в Visual Studio Code Snippets, но почему-то в моей "студии" никак не могу найти пункт меню &lt;a href="http://msdn2.microsoft.com/en-us/library/9ybhaktf.aspx"&gt;Tools/Code Snippets Manager&lt;/a&gt;. Так же оказалось, что &lt;a href="http://www.jetbrains.com/resharper/"&gt;ReSharper&lt;/a&gt;'овский IntelliSense не поддерживает стандартные Code Snippets, он их просто не показывает в списке. Зато у него&amp;nbsp;имеется собственный аналог - Live Template.&lt;/p&gt; &lt;p&gt;Новый Live Template создается за минуту. Достаточно выделить нужный кусок кода (тот что показан выше) и выбрать пункт меню ReSharper/Code/Live Template from Selection... В диалоге вводим абревиатуру ("&lt;em&gt;propvs&lt;/em&gt;"), описание ("&lt;em&gt;public свойство, использующее ViewState&lt;/em&gt;"). Потом&amp;nbsp;в поле с кодом, заменяем тип, имя и значение по умолчанию на макросы &lt;em&gt;$type$&lt;/em&gt;, &lt;em&gt;$name$&lt;/em&gt;, &lt;em&gt;$defaultvalue$&lt;/em&gt; соответственно. Жмем Finish.&lt;/p&gt; &lt;p&gt;Теперь, что бы создать свойство, которое использует ViewState для хранения значения, достаточно набрать в редакторе &lt;em&gt;propvs,&lt;/em&gt; и нажать Tab. После&amp;nbsp;этого&amp;nbsp;Вам предложат заменить макросы реальными&amp;nbsp;значениями и свойство готово.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Update: &lt;/strong&gt;разобрался как показать пункт меню Tools/Code Snippets Manager. Нужно воспользоваться командой Tools/Customize, Rearrange Commands...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115807199667169125?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115807199667169125/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115807199667169125' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115807199667169125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115807199667169125'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/09/blog-post_12.html' title='Как быстро вставлять часто используемые блоки кода'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115800495412671359</id><published>2006-09-11T23:02:00.000+03:00</published><updated>2006-09-11T23:20:52.743+03:00</updated><title type='text'>Using Settings in C#</title><content type='html'>&lt;p&gt;Прочитал про "&lt;a href="http://msdn.microsoft.com/vcsharp/default.aspx?pull=/library/en-us/dnvs05/html/SettingsCS_RL.asp"&gt;Using Settings in C#&lt;/a&gt;". Отметил два важных момента:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;разница между Application и User Scope&amp;nbsp;Settings: Application Scope Settings - это&amp;nbsp;настройки приложения,&amp;nbsp;которые только считываются приложением, но не изменяются ним. User Scope&amp;nbsp;Settings - менее критические настройки пользователя, значения которых приложение может изменять в runtime.  &lt;li&gt;Описанный механизм&amp;nbsp;поддерживается только&amp;nbsp;для Windows Forms приложений, для ASP.NET надо в ручную редактировать секцию &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfAppSettingsElement.asp"&gt;appSettings&lt;/a&gt; в web.config файле для добавления application scope settings и использовать &lt;a href="http://msdn2.microsoft.com/en-us/library/2y3fs9xs.aspx"&gt;ASP.NET Profiles&lt;/a&gt;&amp;nbsp;для работы с user scope settings.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115800495412671359?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115800495412671359/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115800495412671359' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115800495412671359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115800495412671359'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/09/using-settings-in-c-5-msdn.html' title='Using Settings in C#'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115745116148259737</id><published>2006-09-05T13:12:00.000+03:00</published><updated>2006-09-05T13:12:41.490+03:00</updated><title type='text'>Plug-in для вставки исходного кода на форумах и блогах</title><content type='html'>&lt;p&gt;&lt;a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/"&gt;CopySourceAsHtml&lt;/a&gt; - plug-in для Visual Studio 2005. Добавляет в контекстное меню новый пункт "Copy As HTML...". Цвета будут именно те, какие настроены в "студии". Результат выглядит так:&lt;/p&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; RunTest()&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;ServiceConfig&lt;/span&gt; config = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;ServiceConfig&lt;/span&gt;();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; config.Transaction = &lt;span style="color: teal"&gt;TransactionOption&lt;/span&gt;.RequiresNew;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;ServiceDomain&lt;/span&gt;.Enter(config);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DoJob();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt;(&lt;span style="color: teal"&gt;ContextUtil&lt;/span&gt;.IsInTransaction)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;ContextUtil&lt;/span&gt;.SetAbort();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;ServiceDomain&lt;/span&gt;.Leave();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;P. S. не&amp;nbsp;учитывает дополнительную посдветку, которую добавляет &lt;a href="http://www.jetbrains.com/resharper/"&gt;ReSharper&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115745116148259737?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115745116148259737/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115745116148259737' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115745116148259737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115745116148259737'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/09/plug-in.html' title='Plug-in для вставки исходного кода на форумах и блогах'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115741827873609737</id><published>2006-09-05T04:04:00.000+03:00</published><updated>2006-09-05T04:04:38.783+03:00</updated><title type='text'>Зачем нужен метод Control.ResolveClientUrl?</title><content type='html'>&lt;p&gt;Часто встречал ошибку в ASP.NET коде, когда путь к какому нибудь файлу (например картинке или JavaScript'у) хардкодом забит в темплейт&amp;nbsp;контрола. Что-то вроде такого:&lt;/p&gt; &lt;p&gt;...&lt;/p&gt; &lt;p&gt;&amp;lt;img src="../images/arrow.gif"&amp;gt;&lt;/p&gt; &lt;p&gt;...&lt;/p&gt; &lt;p&gt;Такой код написан&amp;nbsp;с расчетом на то, что контрол будет использован&amp;nbsp;на странице, которая лежит в папке того же уровня что и папка images. Если же его использовать в какой-то другой папке, то путь к картинке&amp;nbsp;будет не верным.&lt;/p&gt; &lt;p&gt;Проблема легко решается использованием метода &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx"&gt;ResolveUrl&lt;/a&gt;. Но пост не об этом. Пост о новом (ASP.NET 2.0) методе &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.control.resolveclienturl.aspx"&gt;ResolveClientUrl&lt;/a&gt;. В чем его отличие от старого метода я уже понял. Но зачем он нужен и в каких случаях&amp;nbsp;надо использовать именно его я не понимаю.&lt;/p&gt; &lt;p&gt;По этому поводу завел&amp;nbsp;&lt;a href="http://www.gotdotnet.ru/Forums/Web/367985.aspx"&gt;тему на форуме&lt;/a&gt; GotDotNet.ru,&amp;nbsp;может умные люди подскажут.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115741827873609737?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115741827873609737/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115741827873609737' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115741827873609737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115741827873609737'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/09/controlresolveclienturl.html' title='Зачем нужен метод Control.ResolveClientUrl?'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115722836300352013</id><published>2006-09-02T23:19:00.000+03:00</published><updated>2006-09-02T23:19:23.116+03:00</updated><title type='text'>Подсчет количества строк кода</title><content type='html'>&lt;p&gt;Как-то захотелось мне подсчитать количество строк кода в приложении над которым я работаю. Намечается рефакторинг&amp;nbsp;приложения и хотелось бы знать, хотя бы приблизительно,&amp;nbsp;на какие части сколько&amp;nbsp;человек надо. Приложение большое, solution состоит больше чем из 30 проектов (плоды&amp;nbsp;работы целой команды), так что&amp;nbsp;"на глаз" прикинуть тяжело.&lt;/p&gt; &lt;p&gt;Нашел подходящую &lt;a href="http://www.codeproject.com/cs/files/directorylinecounter.asp"&gt;утилиту&lt;/a&gt;&amp;nbsp;на &lt;a href="http://www.codeproject.com/"&gt;CodeProject&lt;/a&gt;.&amp;nbsp;Легко и быстро, даже график показывает :)&lt;/p&gt;&lt;img height="290" alt="подсчет количества строк кода" src="http://www.codeproject.com/cs/files/DirectoryLineCounter/DirectoryLineCounter.jpg" width="554"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115722836300352013?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115722836300352013/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115722836300352013' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115722836300352013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115722836300352013'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/09/blog-post.html' title='Подсчет количества строк кода'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115711490113518280</id><published>2006-09-01T15:48:00.000+03:00</published><updated>2007-01-21T11:49:42.963+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Data Access и Business Logic Layer для небольших приложений</title><content type='html'>&lt;p&gt;Последнее время для разработки Data Access Layer использую &lt;a href="http://msdn.microsoft.com/asp.net/downloads/providers/"&gt;provider pattern&lt;/a&gt;, а в&amp;nbsp;Business Logic Layer создаю кучу entity-объектов. Все это вроде бы правильно, но для простых data-driven приложений такой подход за частую превращается в пустую трату времени, потому что эти навороты остаются не востребованными и только увеличивают количество строк кода (и, потенциально, количество ошибок).&lt;/p&gt; &lt;p&gt;Две статьи &lt;a href="http://asp.net/learn/dataaccess/tutorial01cs.aspx?tabid=63"&gt;Creating a Data Access Layer&lt;/a&gt; и &lt;a href="http://asp.net/learn/dataaccess/tutorial02cs.aspx?tabid=63"&gt;Creating a Business Logic Layer&lt;/a&gt; как раз россказывают о простейшем способе реализации этих layer'ов с использованием&amp;nbsp;типизированного DataSet. В этом случае практически весь data access код будет сгенерирован&amp;nbsp;мастерами.&amp;nbsp;А благодаря тому что все сгенерированные классы имеют модификатор "partial", в них можно&amp;nbsp;добавлять дополнительные business свойства и методы. Вместо entity-объектов я использую сгенерированные xxxRow классы.&lt;/p&gt; &lt;p&gt;Таким образом весь "каркас" генерится автоматически и мне только надо расширить его логикой приложения. Получается быстренько и расширяемо. Еще не пробовал, но мне кажется что потом, если нужно&amp;nbsp;будет, то&amp;nbsp;совсем не тяжело перейти, например,&amp;nbsp;на provider-model.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;P.S. конечно, объектная модель не выглядит такой элегантной как в случае если эти layer'ы разрабатываются в ручную, но для многих&amp;nbsp;задач это и не надо.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115711490113518280?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115711490113518280/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115711490113518280' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115711490113518280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115711490113518280'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/09/data-access-business-logic-layers.html' title='Data Access и Business Logic Layer для небольших приложений'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115689331171261802</id><published>2006-08-30T02:15:00.000+03:00</published><updated>2006-08-30T02:15:11.760+03:00</updated><title type='text'>SQL IntelliSense - мелочь, а приятно.</title><content type='html'>&lt;p&gt;После работы&amp;nbsp;в Visual Studio 2005, да еще и&amp;nbsp;с plug-in'ом &lt;a href="http://www.jetbrains.com/resharper/"&gt;ReSharper&lt;/a&gt;, жить без поддержки IntelliSense я больше не могу.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.red-gate.com/products/SQL_Prompt/index.htm"&gt;SQL Prompt&lt;/a&gt; - бесплатная утилита, добавляющая поддержку IntelliSense к основным редакторам SQL (Query Analyzer, SQL Server 2005 Management Studio, Visual Studio 2005, Visual Studio .NET 2003, SQL Server 2000 Enterprise Manager, UltraEdit32).&lt;/p&gt; &lt;p&gt;Особенно порадовала автоматическая генерация ON-части оператора JOIN. Работает она разумеется только при расставленных foreign keys.&lt;/p&gt; &lt;p&gt;&lt;img height="213" alt="SQL Prompt in action" src="http://www.red-gate.com/products/SQL_Prompt/Images/SQL_Prompt_Animated_Image.gif" width="500" border="0"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115689331171261802?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115689331171261802/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115689331171261802' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115689331171261802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115689331171261802'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/08/sql-intellisense.html' title='SQL IntelliSense - мелочь, а приятно.'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-115672297385076900</id><published>2006-08-28T02:56:00.000+03:00</published><updated>2006-08-28T02:56:13.856+03:00</updated><title type='text'>Транзакции в .NET 2.0</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Namespace System.Transaction, и новый объект &lt;a href="http://msdn2.microsoft.com/en-us/library/system.transactions.transactionscope.aspx"&gt;TransactionScope&lt;/a&gt; делают тривиальной задачу использования транзакций в новых приложениях и добавление поддержки транзакций в существующие (при условии что они были портированы на .NET 2.0).&lt;/p&gt; &lt;p&gt;В моем случае мне надо было добавить поддержку транзакций в приложение, используеющее &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/EntLibJan2006_DataAccessAppBlock.asp?frame=true"&gt;Data Access Application Block&lt;/a&gt;&amp;nbsp;(DAAB). В примере из документации по DAAB используется объект &lt;a href="http://msdn2.microsoft.com/en-us/library/system.data.common.dbtransaction.aspx"&gt;DbTransaction&lt;/a&gt;. Лично мне этот метод кажется не удобным по сравнению с использованием TransactionScope. Так как объект DbTransaction надо предавать как параметр в вызовы методов ExecuteXxxxx, то нужно организовать flow этого объекта через/между класс(ы) бизнес логики. Особенно это не удобно при добавлении поддержки транзакций к существующему приложению.&lt;/p&gt; &lt;p&gt;При использовании TransactionScope никакого flow объекта через бизнес логику организовывать не надо. Просто надо заключить код, который должен выполнятся в рамках одной транзакции в такую конструкцию:&lt;/p&gt; &lt;p&gt;using(TransactionScope scope = new TransactionScope())&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoSomeActionInTransaction();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoAnotherActionInTheSameTransaction();&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scope.Complete();&lt;br&gt;}&lt;/p&gt; &lt;p&gt;Вот так вот&amp;nbsp; все легко и прозрачно :)&lt;/p&gt; &lt;p&gt;P.S. Еще один дополнительный плюс TransactionScope по сравнению с DbTransaction в том, что он не принадлежит namespace System.Data.&amp;nbsp;Соответственно,&amp;nbsp;поддерживаются не только DB-транзакции. Очень удобно когда бизнес логика и&amp;nbsp;доступ к данным&amp;nbsp;разделены.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-115672297385076900?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/115672297385076900/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=115672297385076900' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115672297385076900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/115672297385076900'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2006/08/net-20.html' title='Транзакции в .NET 2.0'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-111830661841476005</id><published>2005-06-09T11:39:00.000+03:00</published><updated>2005-07-02T11:01:38.030+03:00</updated><title type='text'>Inline код в ASP.NET: конструкция "&lt;%=... %&gt;"</title><content type='html'>Этот код рендерится в часть метода &lt;i&gt;Render&lt;/i&gt; того элемента управления (control), в котором он вставлен (Page, Form, User Control). Рендерится в что-то вроде: output.Write(содержимое_конструкции).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-111830661841476005?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/111830661841476005/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=111830661841476005' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111830661841476005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111830661841476005'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2005/06/inline-aspnet.html' title='Inline код в ASP.NET: конструкция &quot;&amp;lt;%=... %&amp;gt;&quot;'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-111532435921423474</id><published>2005-05-05T20:41:00.000+03:00</published><updated>2005-05-07T13:03:10.556+03:00</updated><title type='text'>Weird ошибкам посвящается. Access denied.</title><content type='html'>Наверное много кто уже столкнулся с JavaScript ошибкой "Access denied" после установки Windows XP Service Pack 2. Эта ошибка может быть вызвана многими причинами и одну из них я сегодня нашел.&lt;br /&gt;&lt;i&gt;Internet Explorer может закрыть доступ ко всем свойствам объекта document на странице, которая была открыта после редиректа.&lt;/i&gt;&lt;br /&gt;Эта ошибка описана в &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;889386"&gt;Knowledge Base статье (Article ID: 889386)&lt;/a&gt;. Так же там написано что ошибка исправлена в &lt;a href="http://support.microsoft.com/kb/890923"&gt;накопительном обновлении MS05-020&lt;/a&gt;. Хотя у меня и установлено это обновление, я все равно получал эту ошибку.&lt;br /&gt;&lt;br /&gt;Судя по всему, ошибку не исправили полностью. В моей ситуации ошибка происходила на ASPX старице, которая загружалась во фрейм. До перевода этой страницы на ASP.NET (она была ASP), все работало нормально. Я убрал весь HTML из этой страницы и оставил только тестовый кусок JavaScript кода, который обращается к document.all. Судя по всему, возникновение ошибки связано с временем работы страницы, потому что после удаления некоторых "тяжелых" вызовов методов на server-side, ошибка не повторялась.&lt;br /&gt;&lt;br /&gt;От этой проблемы спасает отказ от редиректа, Server.Transfer, или редирект с помощью document.location.href = "some_page.aspx".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-111532435921423474?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/111532435921423474/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=111532435921423474' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111532435921423474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111532435921423474'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2005/05/weird-access-denied.html' title='Weird ошибкам посвящается. Access denied.'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-111510730893867863</id><published>2005-05-03T10:59:00.000+03:00</published><updated>2005-05-03T11:30:48.726+03:00</updated><title type='text'>Миграция ASP страниц на ASP.NET</title><content type='html'>Уже третий день занимаюсь переводом трех самых богатых функциональностью страниц одного приложения с ASP на ASP.NET. Все не так уж и плохо, совместимость хоть и не полная но на достаточном уровне. Вот две очень полезных статьи по теме:&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconMigratingASPPagesToASP.asp"&gt;Migrating ASP Pages to ASP.NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/?kbid=811658"&gt;How To Use the Microsoft Visual Studio .NET Native Debugger to Debug a Microsoft Visual Basic 6.0 DLL When It Is Called from an ASP.NET Application&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Еще статьи по этой теме можно найти на &lt;a href="http://msdn.microsoft.com/"&gt;msdn.microsoft.com&lt;/a&gt; (сделать поиск по фразе &lt;i&gt;"Migrating ASP Pages to ASP.NET"&lt;/i&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-111510730893867863?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/111510730893867863/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=111510730893867863' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111510730893867863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111510730893867863'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2005/05/asp-aspnet.html' title='Миграция ASP страниц на ASP.NET'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-111188697800052782</id><published>2005-03-27T04:22:00.000+03:00</published><updated>2005-03-30T23:26:19.083+03:00</updated><title type='text'>Основы Framework.NET: работаем с настройками приложения</title><content type='html'>&lt;p&gt;Microsoft предлагает несколько решений этой проблемы.&lt;br /&gt;&lt;p&gt;ASP.NET-приложения обычно только считывают свои настройки и&amp;nbsp;не&amp;nbsp;имеют интерфейса для их&amp;nbsp;изменения&lt;sup&gt;1&lt;/sup&gt;. Так&amp;nbsp;же ASP.NET приложения, в&amp;nbsp;отличии от&amp;nbsp;Windows Forms, не&amp;nbsp;должны иметь настройки для различных Windows-пользователей (так как они запускаются от&amp;nbsp;имени одного специального пользователя). В&amp;nbsp;этом случае хранить настройки можно в&amp;nbsp;файле web.config в&amp;nbsp;разделе &amp;lt;appSettings&amp;gt;, а&amp;nbsp;считывать методом System.Configuration.AppSettingsReader.GetValue(). Так как при изменении файла web.config ASP.NET приложение перезапускается, то&amp;nbsp;хранить в&amp;nbsp;нем динамически изменяющиеся настройки не&amp;nbsp;рекомендуется (тем более, что Microsoft не&amp;nbsp;предоставила готовых методов для изменения значений в&amp;nbsp;этом файле).&lt;br /&gt;&lt;p&gt;Динамически изменяемые настройки в&amp;nbsp;ASP.NET приложении можно хранить в&amp;nbsp;отдельном xml-файле или в&amp;nbsp;базе данных&lt;sup&gt;2&lt;/sup&gt;. Использование реестра для хранения настроек ASP.NET приложения считаю не&amp;nbsp;целесообразным.&lt;br /&gt;&lt;p&gt;В&amp;nbsp;случае с&amp;nbsp;Windows Forms приложением, для хранений read-only настроек так&amp;nbsp;же используется файл &amp;lt;exe_name&amp;gt;.config. Но&amp;nbsp;отличается работа с&amp;nbsp;изменяемыми настройками. Общие для всех пользователей (имеется в&amp;nbsp;виду Windows пользователей) приложения настройки, можно хранить по&amp;nbsp;прежнему в&amp;nbsp;отдельном XML-файле, а&amp;nbsp;вот настройки, специфические для пользователя, желательно хранить в&amp;nbsp;реестре, в&amp;nbsp;соответсвующей ветке. Так каждый пользователь сможет использовать свои личные настройки, а&amp;nbsp;так&amp;nbsp;же они будут защищены системой безопасности Windows.&lt;br /&gt;&lt;h3&gt;Microsoft Enterprise Library: Configuration Application Block&lt;/h3&gt;&lt;p&gt;При использовании CAB настройки могут храниться как в&amp;nbsp;отдельных XML файлах, так и&amp;nbsp;в&amp;nbsp;базе данных и&amp;nbsp;при этом мы&amp;nbsp;получим очень гибкий механизм для работы с&amp;nbsp;этими настройками. Так&amp;nbsp;же CAB выполняет работу по&amp;nbsp;кэшированию настроек и&amp;nbsp;их&amp;nbsp;синхронизации с&amp;nbsp;самим хранилищем настроек. CAB не&amp;nbsp;рекомендуется к&amp;nbsp;использованию только для приложений где будет достаточно web.config файла (или &amp;lt;exe_name&amp;gt;.config).&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;sup&gt;1&lt;/sup&gt;В&amp;nbsp;данном случае речь идет именно об&amp;nbsp;общих настройках приложения, например, строках подключения к&amp;nbsp;базе данных. Речь не&amp;nbsp;идет, например, о&amp;nbsp;личных настройках пользователей самого приложения, так как их&amp;nbsp;у&amp;nbsp;ASP.NET приложения может быть очень много и&amp;nbsp;для их&amp;nbsp;хранения целесообразнее использовать базу данных.&lt;br /&gt;&lt;sup&gt;2&lt;/sup&gt;Framework.NET не&amp;nbsp;предоставляет каких либо специальных классов для помощи в&amp;nbsp;использовании отдельных XML-файлов или базы данных как хранилищь для настроек приложения. Но&amp;nbsp;зато Microsoft предоставляет Configuration Application Block в&amp;nbsp;составе Enterprise Library, который имеет нужные механизмы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-111188697800052782?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/111188697800052782/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=111188697800052782' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111188697800052782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/111188697800052782'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2005/03/frameworknet.html' title='Основы Framework.NET: работаем с настройками приложения'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-110773309151365315</id><published>2005-02-07T01:36:00.000+02:00</published><updated>2005-02-07T01:43:31.826+02:00</updated><title type='text'>Основы Framework.NET: интерфейс IDisposable</title><content type='html'>Классы, которые &amp;laquo;держат&amp;raquo; ресурсы системы (такие как подключения к&amp;nbsp;базе данных, handler'ы окон, открытые файлы) должны корректно освобождать эти ресурсы при своем уничтожении. Microsoft предлагает Dispose Design Pattern для этих целей. В&amp;nbsp;статье &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconFinalizeDispose.asp"&gt;Implementing Finalize and Dispose to&amp;nbsp;Clean Up&amp;nbsp;Unmanaged Resources&lt;/a&gt; россказывают, как с&amp;nbsp;помощью интерфейса IDisposable и&amp;nbsp;метода Finalize обеспечить корректное и&amp;nbsp;своевременное (в&amp;nbsp;случаях с&amp;nbsp;дефицитными ресурсами) освобождение занятых классом ресурсов.&lt;br /&gt;В&amp;nbsp;статье &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconimplementingdisposemethod.asp"&gt;Implementing a&amp;nbsp;Dispose Method&lt;/a&gt; более подробно описывается реализация Dispose Design Pattern. Основная идея данного pattern'а&amp;nbsp;&amp;#151; обеспечить правильное освобождение managed и&amp;nbsp;unmanaged ресурсов.&lt;br /&gt;Еще одна небольшая статья &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;315528"&gt;Implementing Dispose Method in&amp;nbsp;a&amp;nbsp;Derived Class&lt;/a&gt;, уточняющая как правильно перегрузить метод Dispose если такой существует у&amp;nbsp;базового класса.&lt;br /&gt;В&amp;nbsp;заключении хочу напомнить о&amp;nbsp;конструкции C#: &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/vclrfcsharpspec_8_13.asp"&gt;&lt;i&gt;using&lt;/i&gt;&lt;/a&gt;. Конструкция используется именно для работы с&amp;nbsp;дефицитными ресурсами.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-110773309151365315?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/110773309151365315/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=110773309151365315' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/110773309151365315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/110773309151365315'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2005/02/frameworknet-idisposable.html' title='Основы Framework.NET: интерфейс IDisposable'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-109121080821817309</id><published>2004-07-30T20:17:00.000+03:00</published><updated>2004-07-30T21:06:48.216+03:00</updated><title type='text'>Готовлюсь к смене работы</title><content type='html'>Прикупил себе компьютер и взял отпуск. Теперь занимаюсь только .NET.&lt;br /&gt;Время "X" будет где-то через две недели - пойду на собеседование.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-109121080821817309?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/109121080821817309/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=109121080821817309' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109121080821817309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109121080821817309'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/07/blog-post_30.html' title='Готовлюсь к смене работы'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-109046224093034317</id><published>2004-07-22T05:07:00.000+03:00</published><updated>2004-07-22T05:25:01.946+03:00</updated><title type='text'>PR</title><content type='html'>В категории &lt;a href="http://www.blogger.com/profile-find.g?t=l&amp;amp;loc0=UA"&gt;Profiles with a location of Ukraine&lt;/a&gt; я уже переместился на вторую страницу :(. Наша цель - первое место на первой странице. Без PR сейчас никак. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Updated:&lt;/strong&gt; хоть Blogger и выглядит красиво, и удобно все, но по объему community круче &lt;a href="http://livejournal.com/"&gt;LiveJournal'а&lt;/a&gt; конечно нет. Да и функции Friends тоже очень не хватает.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-109046224093034317?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/109046224093034317/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=109046224093034317' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109046224093034317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109046224093034317'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/07/pr.html' title='PR'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-109046176761129058</id><published>2004-07-22T04:55:00.000+03:00</published><updated>2004-07-22T05:05:12.023+03:00</updated><title type='text'>О проектировании приложений</title><content type='html'>Меня все больше увлекает проектирование приложений. Вот еще одна статья о проектировании Data Access Level&amp;nbsp;для&amp;nbsp;.NET приложений&amp;nbsp;(уровень доступа к хранилищу данных в многоуровневых приложениях) - &lt;a href="http://www.gotdotnet.ru/LearnDotNet/NETFramework/592.aspx"&gt;Проектирование компонентов уровня данных и передача данных между уровнями&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;P.S. на &lt;a href="http://www.gotdotnet.ru/"&gt;gotdotnet.ru&lt;/a&gt; вообще много интересных статей в разделе &lt;a href="http://www.gotdotnet.ru/LearnDotNet/NETFramework/default.aspx"&gt;.NET Framework&lt;/a&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-109046176761129058?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/109046176761129058/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=109046176761129058' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109046176761129058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109046176761129058'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/07/blog-post_22.html' title='О проектировании приложений'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-109036975071621028</id><published>2004-07-21T03:23:00.000+03:00</published><updated>2004-07-21T03:38:35.566+03:00</updated><title type='text'>Готовлюсь к смене работы</title><content type='html'>На этой неделе собираюсь купить компьютер. После этого буду усиленно практиковаться в программировании&amp;nbsp;под Framework.NET и читать статьи про разработку enterprise level applications. &lt;br /&gt;Сейчас читаю &lt;a href="http://www.gotdotnet.ru/LearnDotNet/NETFramework/44742.aspx"&gt;Руководство по архитектуре доступа к данным на платформе .NET&lt;/a&gt;. Открыл для себя пулы соединений. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;P.S. после того как решил сменить работу, каждый день на все еще прежней работе сравни аду...&amp;nbsp;Через неделю возьму&amp;nbsp;отпуск, что бы сосредоточиться на .NET&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-109036975071621028?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/109036975071621028/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=109036975071621028' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109036975071621028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/109036975071621028'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/07/blog-post_21.html' title='Готовлюсь к смене работы'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-108925489846267194</id><published>2004-07-08T04:42:00.000+03:00</published><updated>2004-07-08T05:48:18.463+03:00</updated><title type='text'>Временная смена направления</title><content type='html'>&lt;em&gt;Появилась перспектива сменить работу на другую, с более высокой зарплатой, лучшими условиями труда и лучшим графиком. Но нужно профессиональное знание .NET. Поэтому, ближайший месяц-два буду усиленно изучать .NET, соответсвенно и в проекте будет развиваться пока только эта часть.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-108925489846267194?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/108925489846267194/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=108925489846267194' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108925489846267194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108925489846267194'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/07/blog-post_08.html' title='Временная смена направления'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-108892832771680823</id><published>2004-07-04T10:56:00.000+03:00</published><updated>2004-07-04T11:05:27.716+03:00</updated><title type='text'>Так, по-мелочам</title><content type='html'>1. Добавил ссылочку на блог моего проекта (смотреть слева, надпись - "The Project")&lt;br /&gt;2. Решил написать первый прототип системы, дурак. Выяснил что:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;с .NET у меня все еще очень плохо, надо подучиться;&lt;br /&gt;&lt;li&gt;это только кажется, что вот сейчас сяду и спроектирую будущую систему, а потом быстренько ее напишу. Надо больше тренироваться в проектировании, больше читать про различные технологии, больше делать "прототипы на бумаге", а потому уже программировать.&lt;br /&gt;&lt;li&gt;все еще плохо распоряжаюсь своим временем. Все еще слишком много бездельничаю, находясь на работе.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;3. Начал по немногоу строчить статейки про .NET (по ходу изучения). Это будет материальчик, что бы попрактиковаться в работе с поисковиками, счетчиками, каталогами и прочей фигней.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-108892832771680823?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/108892832771680823/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=108892832771680823' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108892832771680823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108892832771680823'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/07/blog-post.html' title='Так, по-мелочам'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-108814322673459015</id><published>2004-06-25T07:01:00.000+03:00</published><updated>2004-07-03T22:11:08.180+03:00</updated><title type='text'>О чужих ошибках</title><content type='html'>Итак, фирма, где я работаю:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Документацию на проекты пишет человек, который за два года так и не понял, что после того как он Copy&amp;Paste кусок текста из документации на другой проект, то нужно проверить, соответсвует ли этот кусок описываемому проекту (владеет частью фирмы).&lt;br /&gt;&lt;li&gt;Главным идейным лидером второй версии "основного" проекта (распределенное приложение, модульность, plug-in's, user interface с количеством controls сравни 1C:Бухгалтерии и т.д.), стал директор (программист, владелец части фирмы). Сам он никогда не разрабатывал приложения даже уровня первой версии. Причем, это уже вторая попытка разработать вторую версию. Первая провалилась, после 2-х месяцев активных работ.&lt;br /&gt;&lt;li&gt;Некоторые менеджеры (также владельцы части фирмы) плохо владеют качеством - "умение общаться с людьми". Почти все подверглись звездной болезни после того как фирма заметно поднялась.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Это фирма, в которой перспективы имеют только владельцы. Все остальные здесь всегда будут только наемными работниками и им никогда не дадут этого забыть.&lt;br /&gt;&lt;br /&gt;Пока писал, подумал что я возможно ошибаюсь, и на все есть свои причины. Но все равно скажу то, к чему вел: принцип, где все получают владельцы, а не активные участники мне кажется не подходит для создания сильной, сплоченной и профессиональной команды.&lt;br /&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/7349849-108814322673459015?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/108814322673459015/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=108814322673459015' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108814322673459015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108814322673459015'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/06/blog-post_25.html' title='О чужих ошибках'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-108805032213294763</id><published>2004-06-24T07:06:00.000+03:00</published><updated>2004-06-24T07:12:02.133+03:00</updated><title type='text'>Хватит россуждать, пора действовать</title><content type='html'>Сейчас опыта и знаний у меня хватит на то, что бы сделать первый &lt;em&gt;прототип&lt;/em&gt;. Паралельно будем учиться всему остальному.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-108805032213294763?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/108805032213294763/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=108805032213294763' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108805032213294763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108805032213294763'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/06/blog-post_23.html' title='Хватит россуждать, пора действовать'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-108796799376635444</id><published>2004-06-23T07:47:00.000+03:00</published><updated>2004-06-23T08:26:09.416+03:00</updated><title type='text'>Производительное использование времени</title><content type='html'>Времени на проект сейчас выделяется очень мало, и сразу встает вопрос, как с максимальной пользой его потратить. Ответ давным давно известен: планирование. Про то, сколько пользы приносит планирование говорить даже и не буду. Тут проблема стоит только в качестве плана :)&lt;br /&gt;Я программист, соответсвенно хорошие планы соствалять не могу. Не будем нарушать естественного хода вещей: сначала возьмем количеством, а потом переведем его в качество.&lt;br /&gt;&lt;br /&gt;Для себя я избираю такую схему составления планов: составляю список задач, а потом начинаю делать самые интересные.&lt;br /&gt;Плюс такого подхода примерно такой (прочитано на каком-то сайте по менеджменту): производительность при работе над интересной задачей выше, чем над задачей которая не интересна. От себя добавлю, работа должна розвлекать, а не напрягать :)&lt;br /&gt;Подкрепляем это все какими-никакими приоритетами и последовательностями выполнения задач, и получаем "производительное использование времени" и хорошее качество выполнения работ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-108796799376635444?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/108796799376635444/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=108796799376635444' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108796799376635444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108796799376635444'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/06/blog-post_22.html' title='Производительное использование времени'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-108788209867532815</id><published>2004-06-22T07:54:00.000+03:00</published><updated>2004-06-22T08:31:35.123+03:00</updated><title type='text'>Хочу, но нет времени!</title><content type='html'>Для начала надо решить проблему с временем.&lt;br /&gt;На работе я провожу в среднем 12 часов. В систему учета времени на фирме заносится примерно 8 с половиной часов, это нормальный средний показатель. Что бы записать 8 с половиной часов, мне нужно отработать примерно 9,5 - 10 часов. Остается 2 часа. Эти два часа "съедает" серфинг по internet и безделье в начале рабочего дня (тяжело заставить себя рабтать).&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;Попытаюсь это решить:&lt;br /&gt;&lt;li&gt;По дороге на работу нужно себя настроить на работу, а не тратить на это рабочее время.&lt;br /&gt;&lt;li&gt;Сразу предупредить себя, что начальник козел, что бы он не смог испортить только что созданное рабочее настроение уже в дверях офиса.&lt;br /&gt;&lt;li&gt;Ни в коем случае не начинать день с серфа.&lt;br /&gt;&lt;li&gt;На протяжении дня контролировать уже потраченное время.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Итак, должен получится примерно такой результат: на 10-ом часу нахождения в оффисе у меня уже закрыты все рабочие программы. Так же каждый день я трачу как минимум час времени на работу над проектом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-108788209867532815?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/108788209867532815/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=108788209867532815' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108788209867532815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108788209867532815'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/06/blog-post_21.html' title='Хочу, но нет времени!'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7349849.post-108752943306071782</id><published>2004-06-18T06:01:00.000+03:00</published><updated>2004-06-18T06:40:38.093+03:00</updated><title type='text'>И тут-то все и началось...</title><content type='html'>Я программист. Работаю в софтверной фирме. Мне не нравится эта фирма. Когда я только начинал здесь работать она мне нравилась, а теперь не нравится. В начале мы были маленькими и все было классно (кроме зарплаты). Теперь мы в 3 раза больше, но все уже не так классно. Дироктора зажрались, зарплату уже год не повышают. Дела ведутся "по-совковому". Цель фирмы: срубить больше денег директорам. Я так жить не хочу. И работать так не хочу. Здесь мне впервые перестало нравится программировать (это страшно). Я задумал сделать свой проект и сказать здесь всем "пока". Я знаю что могу! Просто нужно попробовать. Мне нравится как ведет дела студия Лебедева, мне нравится Microsoft, мне нравятся фирмы, занимающиеся созданием игр, мне нравятся люди занимающиеся творческой работой, а не тупые кодеры. Программирование это тоже творческая работа. Работа должна развлекать, а не напрягать. Я люблю идти домой после работы бодрый и веселый от того что день удался, а не убитый мыслью, что завтра прийдется снова возвращаться сюда.&lt;br /&gt;Итак, начнем...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7349849-108752943306071782?l=programmist.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programmist.blogspot.com/feeds/108752943306071782/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7349849&amp;postID=108752943306071782' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108752943306071782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7349849/posts/default/108752943306071782'/><link rel='alternate' type='text/html' href='http://programmist.blogspot.com/2004/06/blog-post.html' title='И тут-то все и началось...'/><author><name>Programmist</name><uri>http://www.blogger.com/profile/01080704284504134717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
