<?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:blogger='http://schemas.google.com/blogger/2008' 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-5244188107866925364</id><updated>2024-09-06T08:26:42.289+03:00</updated><category term="C#"/><category term="MVC"/><category term="Monodevelop"/><category term="Monotouch"/><category term="SQL Server"/><category term="asp.net"/><category term="iOS"/><category term="C# POST"/><category term="CLR процедуры"/><category term="CacheDependency"/><category term="IIS"/><category term="JSON"/><category term="VS 2010"/><category term="Web.config"/><category term="Интернет магазин для iPhone"/><category term="Оптимизация сайта"/><category term="API Facebook"/><category term="API ВКонтакте"/><category term="Authorization"/><category term="BackgroundWorker"/><category term="C# Facebook"/><category term="C# GET"/><category term="C# Odnoklassniki Rest API"/><category term="Cross Sub Domain"/><category term="Css"/><category term="Deserialize"/><category term="Deserialize xml"/><category term="Extension"/><category term="Functions"/><category term="GDI+"/><category term="Generics"/><category term="IE"/><category term="Javascript"/><category term="Jquery"/><category term="MD5Hash"/><category term="Membership"/><category term="NuGet"/><category term="Razor"/><category term="Razor разметка"/><category term="RenderAction"/><category term="RenderPartial"/><category term="SEO"/><category term="Serialize"/><category term="Sharing Views"/><category term="TFS"/><category term="Thread"/><category term="Visual Studio"/><category term="Web-программист"/><category term="Windows Server"/><category term="appSettings"/><category term="applicationHost.config"/><category term="handlers"/><category term="html теги"/><category term="iPhone"/><category term="Аналитика"/><category term="Интернет магазин"/><category term="Монетизация блога"/><category term="Мониторинг нагрузки"/><category term="Показатели посещаемости."/><category term="Работа"/><category term="Резюме"/><category term="Реклама в блоге"/><category term="приложение для iPhone"/><category term="сustomErrors"/><title type='text'>Понемногу о программировании</title><subtitle type='html'>примеры mvc с# asp.net</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-65135490851944129</id><published>2013-11-17T23:03:00.002+04:00</published><updated>2013-11-17T23:03:21.233+04:00</updated><title type='text'>Блог переехал</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Теперь веду блог на проекте Notissimus&amp;nbsp;&lt;a href=&quot;http://notissimus.com/blog/&quot;&gt;http://notissimus.com/blog/&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/65135490851944129/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2013/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/65135490851944129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/65135490851944129'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2013/11/blog-post.html' title='Блог переехал'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-2963546691586114644</id><published>2012-12-03T18:05:00.001+04:00</published><updated>2012-12-03T18:05:29.179+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Extension"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Visual Studio 2012 Extension - вертикальные вкладки</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Не так давно перебрался с 2010 Visual Studio (далее VS) на 2012. Дольше всего от перехода на новую версию меня останавливало отсутствие вертикальных вкладок для открытых файлов. Поработав с вертикальными вкладками в 2010 студии я уже не мог продолжать работать без них. Настолько с ними удобнее. И поэтому решил поделиться своим знанием. Вдруг кто-то еще не попробовал их?&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Чтобы установить вертикальные вкладки нужно скачать&amp;nbsp;Extension(расширение для VS) по ссылке&amp;nbsp;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Productivity Power Tools&lt;/a&gt;. Установив расширение, нужно в VS перейти в Tools/Options/Productivity Power Tools и выбрать Place tabs on the Left.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://petromi.com/get/e9d726b9a3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;http://petromi.com/get/e9d726b9a3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Результат применения этого расширения:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://petromi.com/get/22e9ee96dd.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://petromi.com/get/22e9ee96dd.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Цвета вкладок подсвечены в зависимости от проекта.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/2963546691586114644/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/12/visual-studio-2012-extension.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2963546691586114644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2963546691586114644'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/12/visual-studio-2012-extension.html' title='Visual Studio 2012 Extension - вертикальные вкладки'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-3096025550431560778</id><published>2012-11-28T13:11:00.000+04:00</published><updated>2012-11-28T13:18:02.877+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asp.net"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Web-программист"/><category scheme="http://www.blogger.com/atom/ns#" term="Работа"/><category scheme="http://www.blogger.com/atom/ns#" term="Резюме"/><title type='text'>Работа для Web - программиста. </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Сегодня я хочу поговорить о работе или скорее о тех, кто эту работу нам предоставляет. Так сказать об идеальной работе для программиста, а может и не только программиста. Бывает, что спрашиваешь себя: &quot;Нравится ли тебе место в котором ты работаешь, твоя должность, круг задач, условия труда, отношения в коллективе? Этого ли ты хотел или нужно идти дальше?&quot; И особенно часто эти мысли начинают посещать тебя, если на работе все последние действия руководства вызывают у тебя удивление, недоумение, но никак не способствуют повышению мотивации и желания работать. И ты сидишь, думаешь и взвешиваешь: да здесь меня все устраивает, а здесь я бы хотел лучших условий.&lt;br /&gt;
&lt;br /&gt;
Вот и я задумался и решил оформить все свои мысли на бумаге, чтобы, прежде всего для себя самого, определить какие условия работы были бы для меня близки к идеальным.&lt;br /&gt;
&lt;br /&gt;
С высоты своего опыта (а я успел поработать в разных компаниях крупных и не очень) могу сказать совершенно точно, что сейчас хотел бы выбрать компанию, которая прежде всего думает о своих сотрудниках. Такие моменты как удобное рабочее место, кафе, обеды, абонемент в спортзал, медицинская страховка, белая зарплата, &amp;nbsp;возможность отдохнуть в стенах компании должны быть по умолчанию. Но это даже не главное. А главное это отношение руководства к тебе. Ты должен ощущать, что ты не станок для производства кода. Руководитель должен не только ставить задачи, но и следить чтобы тебе эти задачи было бы комфортно выполнять. Это, как мне кажется, создает благоприятную атмосферу.&lt;br /&gt;
&lt;br /&gt;
Также большую роль в рабочей атмосфере, безусловно, решает коллектив. И как бы не были привлекательны условия труда, если коллектив будет тебе не по душе, ты на работу будешь ходить с неохотой. Поэтому, выбирая работу, нужно выбирать и команду, в который ты будешь трудится. Но и здесь без без толкового руководителя не обойтись. Толковый руководитель вообще меняя работу уводит свою команду за собой. При возможности конечно.&lt;br /&gt;
&lt;br /&gt;
Обучение. Жалко смотреть, когда компания пытается на всем экономить, в том числе и на обучении сотрудников. Я считаю, что самообучение, конечно, хорошо. Но посещать курсы, семинары по специализации - это все тоже необходимо. Вот мне, например, очень хочется подтянуть английский язык, так как зачастую информация по программированию идет на английском языке, но дома я этого сделать не могу. И курсы английского языка, например, на обеденном перерыве или рано утром на работе были бы выходом для меня.&lt;br /&gt;
&lt;br /&gt;
Идем дальше. Круг задач. Безусловно хочется, чтобы круг задач был бы интересен и не превращался в рутину. Новые сложные и амбициозные задачи. Но и кидаться из технологии в технологию тоже не стоило бы. Сегодня ты специалист Ruby, а завтра Silverlight. Это не по мне.&lt;br /&gt;
&lt;br /&gt;
В таких условиях ты начинаешь работать, как мне кажется, с большей охотой и КПД твое резко увеличивается. Разве не это то, чего хочет работодатель?&lt;br /&gt;
&lt;br /&gt;
Есть такие компании у нас в России? Понимаю, что есть. Но тут сразу встает вопрос, о том, что они тоже не возьмут к себе всех. Есть четкие правила отбора.&lt;br /&gt;
&lt;br /&gt;
И вот ты сидишь и думаешь, а соответствуешь ли ты им и насколько. Начинаешь просматривать сайты и сравнивать свои skills.&lt;br /&gt;
&lt;br /&gt;
Что есть в багажнике у меня? Так, посмотрим:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Технологии, языки программирования: ASP.NET(WebForms), MVC, Html, Css, JavaScript, Jquery, Ajax, WebServices, WinServices, MS SQL, T-SQL, Linq.&lt;br /&gt;
Среды разработки: VisualStudio 2008/10/12, MonoDevelop (Monotouch).&lt;br /&gt;
Системы контроля версий: TFS, Git.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Английский - читаю, но говорю слабо. Ну и остальное по мелочи.&lt;br /&gt;
&lt;br /&gt;
Осталось найти хорошую компанию? Или может она сама найдет меня =)&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/3096025550431560778/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/11/web-developer.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/3096025550431560778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/3096025550431560778'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/11/web-developer.html' title='Работа для Web - программиста. '/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total><georss:featurename>Санкт-Петербург, Россия</georss:featurename><georss:point>59.9395237 30.3120206</georss:point><georss:box>59.4304907 29.0485931 60.448556700000005 31.5754481</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-5644066944538500909</id><published>2012-11-13T16:53:00.000+04:00</published><updated>2012-11-13T16:53:05.750+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><title type='text'>MVC. Как передавать в Controller коллекцию объектов.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Когда мы передаем в Controller один объект, то все просто и понятно. &lt;br /&gt;
А что если нам нужно принимать коллекцию объектов? Для примера возьмем следующую модель сотрудников:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;public class Employee()
{
  public string FirstName {get;set;}
  public string SecondName {get;set;}
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
На сервере нам нужно получить коллекцию пользователей&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;public ActionResult ActionName(List&amp;lt;Employee&amp;gt; employees)
{
 ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Для передачи коллекции в контроллер нужно сформировать такую разметку (сотрудников у нас будет n+1):&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;form method=&quot;post&quot; action=&quot;/ControllerName/ActionName&quot;&amp;gt;
 &amp;lt;input type=&quot;text&quot; name=&quot;employees[0].FirstName&quot; value=&quot;&quot; /&amp;gt;
 &amp;lt;input type=&quot;text&quot; name=&quot;employees[0].SecondName&quot; value=&quot;&quot; /&amp;gt;
 &amp;lt;input type=&quot;text&quot; name=&quot;employees[1].FirstName&quot; value=&quot;&quot; /&amp;gt;
 &amp;lt;input type=&quot;text&quot; name=&quot;employees[1].SecondName&quot; value=&quot;&quot; /&amp;gt;
 ...
 &amp;lt;input type=&quot;text&quot; name=&quot;employees[n].FirstName&quot; value=&quot;&quot; /&amp;gt;
 &amp;lt;input type=&quot;text&quot; name=&quot;employees[n].SecondName&quot; value=&quot;&quot; /&amp;gt;
 &amp;lt;input type=&quot;submit&quot; value=&quot;submit&quot;/&amp;gt;
 &amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Есть еще решение о передачи коллекции через JavaScript, но об этом в следующий раз.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/5644066944538500909/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/11/mvc-controller.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/5644066944538500909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/5644066944538500909'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/11/mvc-controller.html' title='MVC. Как передавать в Controller коллекцию объектов.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-5247629857753782825</id><published>2012-10-30T17:20:00.001+04:00</published><updated>2012-10-30T17:20:12.147+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="RenderAction"/><category scheme="http://www.blogger.com/atom/ns#" term="RenderPartial"/><title type='text'>Чем отличаются RenderPartial и Partial, RenderAction и Action</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Чем отличаются RenderPartial и Partial, RenderAction и Action?&lt;br /&gt;
&lt;br /&gt;
На этот вопрос попытаюсь ответить так: если мы используем приставку Render, то результаты выполнения сразу встраиваются в выходной поток. С приставкой&amp;nbsp;Render - это&amp;nbsp;void метод, поэтому в коде мы должны закрывать строку точкой с запятой и не можем использовать @ перед вызовом. Правильный вызов RenderPartial(RenderAction&amp;nbsp; аналогично):&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
@{
&amp;nbsp; &amp;nbsp; &amp;nbsp;Html.RenderPartial(&quot;View&quot;)&lt;b&gt;;&lt;/b&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Без приставки Render Html.Partial (как и&amp;nbsp;Html.Action) - возвращает html разметку. Разметка хранится в буфере, а потом также встраивается в выходной поток. Поэтому первый способ немного эффективнее.&lt;br /&gt;
&lt;br /&gt;
Правильный синтаксис (без точки с запятой):&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
@Html.Partial(&quot;View&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/5247629857753782825/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/10/renderpartial-partial-renderaction.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/5247629857753782825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/5247629857753782825'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/10/renderpartial-partial-renderaction.html' title='Чем отличаются RenderPartial и Partial, RenderAction и Action'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-2416375115827188535</id><published>2012-10-25T11:24:00.002+04:00</published><updated>2012-10-25T11:24:51.463+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C# GET"/><category scheme="http://www.blogger.com/atom/ns#" term="Generics"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><title type='text'>C# GET. Пишем Generic метод.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Я уже писал о том, как отправлять &lt;a href=&quot;http://rudevelop.spb.ru/2012/02/c-post.html&quot; target=&quot;_blank&quot;&gt;запросы на сторонний сервер с помощью POST&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Сегодня напишу как сформировать GET запрос. Зачастую&amp;nbsp;я использую&amp;nbsp;GET запрос &amp;nbsp;для получения ответа в виде JSON и сразу десериализую JSON строку в объект. Поэтому метод у меня будет универсальный. Для универсальности будем использовать Generics.&lt;br /&gt;
&lt;br /&gt;
Итак, смотрим:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;/// &amp;lt;summary&amp;gt;
/// Generic GET Метод
/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&quot;url&quot;&amp;gt;Адрес, по которому мы обращаемся с параметрами для GET запроса&amp;lt;/param&amp;gt;
//Здесь T - это объект, в который мы будем десериализовать JSON ответ
public static T GetMethod&amp;lt;T&amp;gt;(string url)
{
&amp;nbsp; &amp;nbsp;object value = null;
&amp;nbsp; &amp;nbsp;var reqGet = WebRequest.Create(url);
&amp;nbsp; &amp;nbsp;var resp = reqGet.GetResponse();
&amp;nbsp; &amp;nbsp;var stream = resp.GetResponseStream();

&amp;nbsp; &amp;nbsp;if (stream != null)
&amp;nbsp; &amp;nbsp;{
&amp;nbsp; &amp;nbsp; &amp;nbsp; //читаем поток в строку
&amp;nbsp; &amp;nbsp; &amp;nbsp; StreamReader sr = new StreamReader(stream);
&amp;nbsp; &amp;nbsp; &amp;nbsp; var srToString = sr.ReadToEnd();
&amp;nbsp; &amp;nbsp; &amp;nbsp; //десериализуем JSON строку в объект
&amp;nbsp; &amp;nbsp; &amp;nbsp; return JsonConvert.DeserializeObject&amp;lt;T&amp;gt;(srToString);
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; //Возвращаем объект
&amp;nbsp; return (T)value;
}
&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
Для десериализации я использую библиотеку Json.NET. Об этом писал&amp;nbsp;&lt;a href=&quot;http://rudevelop.spb.ru/2012/03/c-jsonnet-json.html&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;. Также метод можно дополнить обработчиком ошибок.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/2416375115827188535/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/10/c-get-generic.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2416375115827188535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2416375115827188535'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/10/c-get-generic.html' title='C# GET. Пишем Generic метод.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-1401015003959041756</id><published>2012-10-23T18:04:00.000+04:00</published><updated>2012-10-25T10:59:45.237+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Jquery"/><title type='text'>Как определить с помощью jquery (javascript), что к вам на сайт зашел пользователь с iPhone.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Наша задача - перенаправлять пользователя, который зашел на сайт с iPhone  на приложение в AppStore.&lt;br /&gt;
&lt;br /&gt;
Для определения платформы будем использовать свойство&amp;nbsp;userAgent, которое поддерживается всеми основными браузерами.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code&gt;
//Если userAgent содержит слово iPhone, то перенаправляем в AppStore
var isiPhone = navigator.userAgent.toLowerCase().indexOf(&quot;iphone&quot;);
if (isiPhone &gt; -1) {
   if (confirm(&quot;Перейти к приложению для iPhone?&quot;)) {
      window.location = &quot;http://itunes.apple.com/ru/app/ourapp&quot;;
   }
}
&lt;/code&gt;&lt;/pre&gt;

Если мы не хотим быть назойливыми и не хотим показывать сообщение каждый раз, когда пользователь заходит на сайт, то можно хранить информацию о просмотре сообщения в cookie пользователя. 

Для записи и чтения cookie я использую удобный плагин jquery.cookie.js. С плагином код будет выглядеть так:

&lt;pre&gt;
&lt;code&gt;
var cookieName = &quot;PhonePopUp&quot;;
var appstore = $.cookie(cookieName);
//Если userAgent содержит слово iPhone и нет coookie PhonePopUp, то перенаправляем в AppStore
var isiPhone = navigator.userAgent.toLowerCase().indexOf(&quot;iphone&quot;);
if (isiPhone &gt; -1 &amp;&amp; appstore == undefined) {
   $.cookie(cookieName, &quot;hide&quot;);
   if (confirm(&quot;Перейти к приложению для iPhone?&quot;)) {
      window.location = &quot;http://itunes.apple.com/ru/app/ourapp&quot;;
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/1401015003959041756/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/10/jquery-javascript-iphone.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/1401015003959041756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/1401015003959041756'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/10/jquery-javascript-iphone.html' title='Как определить с помощью jquery (javascript), что к вам на сайт зашел пользователь с iPhone.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-4586665045342091313</id><published>2012-07-19T15:16:00.002+04:00</published><updated>2012-07-19T15:16:55.694+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IIS"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server"/><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'>Мониторинг нагрузки на сайт под управлением IIS средствами Windows Server.  Показатели посещаемости.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Как мониторить нагрузку на сайт?&lt;br /&gt;
&lt;br /&gt;
Если мы хотим добиться бесперебойной работы сайта, то мы должны быть постоянно в курсе, что происходит с сайтом в данный момент времени. Чтобы в случае возникновения проблем быстро среагировать на них.&lt;br /&gt;
&lt;br /&gt;
В компании, где я сейчас работаю, в кабинете программистов висит ЖК телевизор-монитор, подключенный к компьютеру. На мониторе отображаются графики нагрузки на сервера, список &amp;nbsp;всех работающих сайтов со статусом доступности, а также онлайн статистика посещаемости из Google Analytics (в режиме реального времени отображается количество текущих пользователей на основном сайте в разрезе географии).&lt;br /&gt;
&lt;br /&gt;
Итак, какие показатели Веб-сервера мы считаем полезными для отображения на мониторе. Их четыре:&lt;br /&gt;
% загрузки процессора, % использования выделенной памяти, всего запросов методов в секунду (Веб-служба), запросов в секунду (ASP.NET Apps). С первыми двумя все понятно.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Счетчик В&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;сего запросов методов в секунду (Веб-служба) - это&lt;/span&gt;&amp;nbsp;частота запросов HTTP, которые выполняются с помощью различных методов (таких как GET, POST и так далее).&lt;br /&gt;
&lt;br /&gt;
Счетчик Запросов в секунду - это частота всех запросов к сайту.&lt;br /&gt;
&lt;br /&gt;
Счетчики запросов необходимы для того, чтобы вовремя увидеть рост запросов к серверу. Данный рост может быть вызван, например, DDOS атакой.&lt;br /&gt;
&lt;br /&gt;
Графики добавляются через Системный монитор. Можно выводить графики других серверов, предварительно расшарив их.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-vwL7htbOtpE/UAfqSOBHgRI/AAAAAAAAAHk/gaFqZ3HuVGE/s1600/8bb8696b54.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;174&quot; src=&quot;http://3.bp.blogspot.com/-vwL7htbOtpE/UAfqSOBHgRI/AAAAAAAAAHk/gaFqZ3HuVGE/s320/8bb8696b54.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
По условию достижения пороговых значений можно генерировать сообщения-алерты. В нашем случае работает Win-сервис, который мы написали самостоятельно. Сервис отправляет Смс, если сайт(ы) недоступен(ны).&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/4586665045342091313/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/07/iis-windows-server.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/4586665045342091313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/4586665045342091313'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/07/iis-windows-server.html' title='Мониторинг нагрузки на сайт под управлением IIS средствами Windows Server.  Показатели посещаемости.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-vwL7htbOtpE/UAfqSOBHgRI/AAAAAAAAAHk/gaFqZ3HuVGE/s72-c/8bb8696b54.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-8144924739885127463</id><published>2012-07-10T16:59:00.000+04:00</published><updated>2012-07-10T16:59:09.284+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="applicationHost.config"/><category scheme="http://www.blogger.com/atom/ns#" term="IIS"/><title type='text'>IIS (Internet Information Services) и applicationHost.config. Изменение доменных привязок.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Сегодня затронем тему настроек IIS (Internet Information Services). Речь пойдет о версии IIS 7.0 (7.5).&lt;br /&gt;
&lt;br /&gt;
Допустим у вас есть &amp;nbsp;большое количество поддоменов, которые нужно привязать к сайту или быстро исправить на уже существующих привязках IP адрес. Стандартный интерфейс IIS позволяет редактировать привязки по одной, что в нашем случае не очень-то удобно. См. картинку&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://petromi.com/get/5c27e1b8a6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;169&quot; src=&quot;http://petromi.com/get/5c27e1b8a6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Чтобы ускорить процесс, нужно вспомнить, что все доменные привязки (и не только, а и другие настройки) хранятся в конфигурационном файле applicationHost.config. Данный файл находится по адресу&amp;nbsp;C:\Windows\System32\inetsrv\config\&lt;br /&gt;
&lt;br /&gt;
В файле отредактировать привязки можно очень быстро.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/8144924739885127463/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/07/iis-internet-information-services.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/8144924739885127463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/8144924739885127463'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/07/iis-internet-information-services.html' title='IIS (Internet Information Services) и applicationHost.config. Изменение доменных привязок.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-5457782769334006275</id><published>2012-07-04T10:58:00.000+04:00</published><updated>2012-07-04T11:11:59.835+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Monodevelop"/><category scheme="http://www.blogger.com/atom/ns#" term="Monotouch"/><category scheme="http://www.blogger.com/atom/ns#" term="Интернет магазин"/><category scheme="http://www.blogger.com/atom/ns#" term="Интернет магазин для iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="приложение для iPhone"/><title type='text'>Мобильное приложение (интернет магазин) для iPhone на C# (Monotouch + Monodevelop)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Итак, замкнулся первый цикл разработки нашего приложения для&amp;nbsp;iPhone.&amp;nbsp;
Долгая дорога от идеи до реализации.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-N4X-nAniTZY/T_PpHg2ObDI/AAAAAAAAAHE/ToT73DK0bKs/s1600/mzl.krchtltf.175x175-75.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;ЗАКАЖИ&quot; border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-N4X-nAniTZY/T_PpHg2ObDI/AAAAAAAAAHE/ToT73DK0bKs/s1600/mzl.krchtltf.175x175-75.jpg&quot; title=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Сегодня ночью наше приложение добавили в&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;a href=&quot;http://itunes.apple.com/ru/app/zakazi/id539403737?mt=8&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;AppStore&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Ссылка &lt;a href=&quot;http://itunes.apple.com/ru/app/zakazi/id539403737?mt=8&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;itunes.apple.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Если есть возможность, установите и напишите свою оценку: что понравилось, а что нет. &lt;span style=&quot;background-color: white;&quot;&gt;Заранее спасибо.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;В предыдущих сериях:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://rudevelop.spb.ru/2012/03/monotouch-monodevelop-ios-c-i.html&quot; target=&quot;_blank&quot;&gt;Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть I.&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://rudevelop.spb.ru/2012/04/monotouch-monodevelop-ios-c-ii.html&quot; target=&quot;_blank&quot;&gt;Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть II.&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://rudevelop.spb.ru/2012/06/monotouch-monodevelop-ios-c-iii.html&quot; target=&quot;_blank&quot;&gt;Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть III.&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/5457782769334006275/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/07/iphone-c-monotouch-monodevelop.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/5457782769334006275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/5457782769334006275'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/07/iphone-c-monotouch-monodevelop.html' title='Мобильное приложение (интернет магазин) для iPhone на C# (Monotouch + Monodevelop)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-N4X-nAniTZY/T_PpHg2ObDI/AAAAAAAAAHE/ToT73DK0bKs/s72-c/mzl.krchtltf.175x175-75.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-4281132356394568804</id><published>2012-07-03T18:20:00.000+04:00</published><updated>2012-07-03T18:20:08.528+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Functions"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Razor"/><title type='text'>Пример записи методов (функций) в языке Razor MVC</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Пример записи функций в языке Razor. Все методы всегда реализовывал в контроллерах, а недавно нужно было добавить простенький метод во View.&lt;br /&gt;
Оказывается сделать это можно так:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;@functions {
&amp;nbsp; &amp;nbsp; static int MySimpleMethod(int id)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return id*5;
&amp;nbsp; &amp;nbsp; }
}
@* Вызов самого метода в теле View *@
@MySimpleMethod(5)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/4281132356394568804/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/07/razor-mvc.html#comment-form' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/4281132356394568804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/4281132356394568804'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/07/razor-mvc.html' title='Пример записи методов (функций) в языке Razor MVC'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-7694459704880419198</id><published>2012-07-02T18:53:00.001+04:00</published><updated>2012-07-02T19:01:08.555+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="html теги"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Razor разметка"/><title type='text'>Представление обычного текста и html кода с помощью разметки Razor MVC C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Для новичков в MVC хочу дать пару советов как записывать обычный текст и html код в разметке Razor если на странице используются блоки кода. Этот вопрос возник у меня самого, когда я приступил к изучению MVC.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Например, текст находится в теле оператора if.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;В этом случае перед отображаемым текстом нужно поставить &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;@: &amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
@if (Condition)
{
  @:Отображаемый текст &amp;lt;br/&amp;gt;
}&amp;nbsp;&amp;nbsp;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Если отображаемый текст заключен в html теги, то дополнительных символов ставить не нужно. Пример:&lt;br /&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; trbidi=&quot;on&quot;&gt;
&lt;pre&gt;&lt;code&gt;@if (Condition)
{
  &amp;lt;div&amp;gt;Отображаемый текст&amp;lt;/div&amp;gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Если текста много и он перемешан с&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;html тегами, то весь блок можно заключить в тег разметки&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Razor&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;text&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;@if (Condition)
{
&amp;lt;text&amp;gt;
  &amp;lt;div&amp;gt;Отображаемый текст&amp;lt;/div&amp;gt; Отображаемый текст 
 &amp;lt;div&amp;gt;Отображаемый текст&amp;lt;/div&amp;gt; Отображаемый текст 
&amp;lt;/text&amp;gt;

}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Если мы хотим отобразить строковую переменную с html кодом, то при обычном выводе теги html кодируются в последовательность вида&amp;nbsp;&quot;&amp;amp;lt;&quot; (&quot;&amp;lt;&quot;) и тп. В этом случае на странице пользователя html код отображается как текст. Чтобы избежать этого нужно использовать конструктор HtmlString(&quot;Текст с тегами&quot;). Пример:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
@{

var html = &quot;&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;текст&amp;lt;/b&amp;gt;&quot;;

}

&amp;lt;div&amp;gt;@(new HtmlString(html))&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Есть еще одна конструкция, которая отображает html не кодируя его в специальные символы. Пример:&lt;br /&gt;
&lt;br /&gt;&lt;pre&gt;&lt;code&gt;
&amp;nbsp;@(Html.Raw(
&quot;&amp;lt;script type=&quot;javascript&quot;&amp;gt;alert(&quot;Hello, world!&quot;);&amp;lt;/script&amp;gt;&quot;))&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/7694459704880419198/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/07/html-razor-mvc-c.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/7694459704880419198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/7694459704880419198'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/07/html-razor-mvc-c.html' title='Представление обычного текста и html кода с помощью разметки Razor MVC C#'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-228162022698963814</id><published>2012-06-26T13:07:00.002+04:00</published><updated>2012-06-26T13:54:28.309+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="C# Facebook"/><title type='text'>C# и API Facebook. Пример размещения записи на стене пользователя с помощью API.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
В связи с пользующимися повышенной популярностью статьями&amp;nbsp;&lt;a href=&quot;http://rudevelop.spb.ru/2012/02/c-api-api-http-post.html&quot; target=&quot;_blank&quot;&gt;C# и API ВКонтакте. Обращение к адресу API-сервиса путем создания HTTP-запроса (POST)&lt;/a&gt;&amp;nbsp;и&amp;nbsp;&lt;a href=&quot;http://rudevelop.spb.ru/2012/03/odnoklassniki-rest-api-c.html&quot; target=&quot;_blank&quot;&gt;Пример взаимодействия с Odnoklassniki Rest API на C#&lt;/a&gt;&amp;nbsp; продолжаю эту серию публикаций статьей по работе &amp;nbsp;с API&amp;nbsp;Facebook.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Задача:&lt;/b&gt; добавлять на стену пользователя сообщение через API Facebook.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Решение:&lt;/b&gt;&lt;br /&gt;
Первое, что мы сделаем - это р&lt;span style=&quot;background-color: white;&quot;&gt;егистрируем наше приложение на&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://developers.facebook.com/&quot; rel=&quot;nofollow&quot; style=&quot;background-color: white;&quot; target=&quot;_blank&quot;&gt;https://developers.facebook.com&lt;/a&gt;&lt;br /&gt;
После регистрации нам будут доступны&amp;nbsp;AppID и&amp;nbsp;AppSecret приложения.&lt;br /&gt;
&lt;br /&gt;
Чтобы отправлять данные от лица пользователя необходимо предложить ему авторизоваться на сайте&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;Facebook. Для этого предлагаем ему перейти по следующей ссылке:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;string.Format(&lt;span style=&quot;background-color: white;&quot;&gt;&quot;https://www.facebook.com/dialog/oauth?client_id={0}&amp;amp;redirect_uri=1}&amp;amp;response_type=code&amp;amp;scope=publish_stream&quot;,&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;AppID&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;, RedirectUri);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;где&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;AppID&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;- ID нашего приложения. А&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;RedirectUri - это адрес куда вернется пользователь после авторизации.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Также нужно уточнить, что&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;scope=publish_stream - это перечень прав для работы с Facebook, которые мы запрашиваем у пользователя. В данном случае - это права на публикацию сообщений от лица пользователя.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Пользователь возвращается на указанный нами адрес с параметром&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;code. Этот параметр мы будем использовать для получения Token-а (ключа доступа).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Выполняем наш &lt;a href=&quot;http://rudevelop.spb.ru/2012/02/c-post.html&quot; target=&quot;_blank&quot;&gt;C# POST&lt;/a&gt; метод. В качестве адреса указываем&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;i&gt;https://graph.facebook.com/oauth/access_token, а в качестве параметров: client_id={1}&amp;amp;client_secret={2}&amp;amp;code={3}&amp;amp;redirect_uri={4},&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;где&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;client_id - AppID приложения&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;client_secret - AppSecret приложения&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;code - параметр, полученный из строки запроса&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;redirect_uri - обратный адрес.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Полученный ответ будет содержать access_token. С ним будем работать дальше.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Ну а дальше все просто. Для публикации сообщения на стене пользователя снова выполняем наш &lt;a href=&quot;http://rudevelop.spb.ru/2012/02/c-post.html&quot; target=&quot;_blank&quot;&gt;C# POST&lt;/a&gt; метод. В качестве адреса указываем&lt;i&gt; https://graph.facebook.com/me/feed, а в качестве параметров: access_token={0}&amp;amp;message={1},&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;где&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;access_token - полученный ранее ключ доступа&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;message - сообщение на стену пользователя&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Оказалось все очень просто.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/228162022698963814/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/06/c-api-facebook-api.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/228162022698963814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/228162022698963814'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/06/c-api-facebook-api.html' title='C# и API Facebook. Пример размещения записи на стене пользователя с помощью API.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-937629972712658046</id><published>2012-06-22T15:27:00.001+04:00</published><updated>2012-10-19T12:39:05.182+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Монетизация блога"/><category scheme="http://www.blogger.com/atom/ns#" term="Реклама в блоге"/><title type='text'>Монетизация блога. Партнерская программа  от интернет-магазина обуви Sapato.ru</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Может ли реклама в блоге приносить хоть сколько-нибудь значимый доход - вот вопрос, который на днях задал себе &amp;nbsp;я.&amp;nbsp;
Думаю, что каждый блоггер рано или поздно подымавает над тем: &quot;Не разместить ли мне рекламу в своем дневнике?&quot;.&lt;br /&gt;
&lt;div&gt;
Конечно, не скрою, навязчивая реклама, да и реклама в общем, раздражает многих и меня в том числе. Поэтому я решил не ляпать на каждом клочке свободного места пестрый баннер, а выбрал одного более менее крупного игрока на рынке интернет торговли и решил поработать с их партнерской программой.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-h_8j45UuXTk/T_bvmYilfQI/AAAAAAAAAHU/FqmC870PyCE/s1600/banner.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-h_8j45UuXTk/T_bvmYilfQI/AAAAAAAAAHU/FqmC870PyCE/s1600/banner.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Итак, это интернет-магазин обуви&amp;nbsp;&lt;a href=&quot;http://www.sapato.ru/?partner=370&amp;amp;wpp=affiliate.bitrix.partner_370&amp;amp;utm_source=affiliate&amp;amp;utm_medium=bitrix&amp;amp;utm_campaign=partner_370&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Sapato.ru&lt;/a&gt;&amp;nbsp;Ссылка на партнерскую программу магазина нашлась в футере главной страницы. Пройдя нехитрую систему регистрации, я получил доступ к личному партнерскому коду и списку различных инструментов для рекламы данного магазина: &amp;nbsp;ссылка с партнерским кодом, баннеры, xml-каталог.&amp;nbsp;В процессе регистрации потребовались сканированные копии документов: паспорт, ИНН, страховое свидетельство.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Сразу хочу отметить одну важную вещь - это способ вывода заработанных средств. В&amp;nbsp;&lt;a href=&quot;http://www.sapato.ru/?partner=370&amp;amp;wpp=affiliate.bitrix.partner_370&amp;amp;utm_source=affiliate&amp;amp;utm_medium=bitrix&amp;amp;utm_campaign=partner_370&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Sapato.ru&lt;/a&gt;&amp;nbsp;мне предложили на выбор MasterCard или WebMoney.&amp;nbsp;MasterCard&amp;nbsp;в моем случае оказался как нельзя кстати. Так как у меня как раз кредитная карта этой платежной системы.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Еще один немаловажный момент - процент отчисления за выполненный заказ. В&amp;nbsp;&lt;a href=&quot;http://www.sapato.ru/?partner=370&amp;amp;wpp=affiliate.bitrix.partner_370&amp;amp;utm_source=affiliate&amp;amp;utm_medium=bitrix&amp;amp;utm_campaign=partner_370&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Sapato.ru&lt;/a&gt;&amp;nbsp; он составляет 25%. А это я вам скажу совсем немальнкая сумма.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Итак, я повесил на своей странице такой замечательный баннер (можете лицезреть в правой части блога) и теперь жду статистики. Для наблюдения за статистикой кликов я оформил подписку на события в Яндекс.Метрике.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Конечно, раньше чем через полгода результаты подводить рано. Поэтому напишу отчет зимой перед новым годом=)&lt;br /&gt;
&lt;br /&gt;
P.S. Отключил баннер, так как за весь период не было ни одной продажи. Перешел на AdSense.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/937629972712658046/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/06/sapatoru.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/937629972712658046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/937629972712658046'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/06/sapatoru.html' title='Монетизация блога. Партнерская программа  от интернет-магазина обуви Sapato.ru'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-h_8j45UuXTk/T_bvmYilfQI/AAAAAAAAAHU/FqmC870PyCE/s72-c/banner.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-2806944508671415158</id><published>2012-06-20T15:24:00.001+04:00</published><updated>2012-06-22T12:18:35.616+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="asp.net"/><category scheme="http://www.blogger.com/atom/ns#" term="Authorization"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Cross Sub Domain"/><category scheme="http://www.blogger.com/atom/ns#" term="Membership"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Web.config"/><title type='text'>Авторизация Membership  пользователей сквозь сайты с разными суб доменами. Membership Cross Sub Domain Authorization.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;Задача:&lt;/b&gt;&amp;nbsp;Есть несколько серверов, на которых размещены сайты с доменами вида:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;domain.ru, sub1&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.domain.ru,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;sub2&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.domain.ru,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;sub3&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.domain.ru &amp;nbsp;и тп. То есть эти сайты&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;объединяет&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;единый корневой домен.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Необходимо настроить авторизацию на этих сайтах таким образом, чтобы пользователь осуществляя вход на одном сайте, автоматически считался авторизованным на другом.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Авторизация на сайтах реализована через Membership Provider. Пользователи хранятся в одной базе данных.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;Решение:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Конечно же для решения этой задачи не обойтись без Cookies. Поэтому первое, что мы сделаем - &amp;nbsp;это в web.config включим использование&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Cookie.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Здесь небольшое отступление. Для того, чтобы&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Cookie читалась на всех суб доменах верхнего уровня необходимо в качестве домена для&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Cookie&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;указать корневой домен с точкой (для нашего примера .&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;domain.ru&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Смотрим как сделать эти действия с помощью одной строчки в&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;web.config&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt; &amp;lt;authentication mode=&quot;Forms&quot;&amp;gt;
      &amp;lt;forms&lt;b&gt; cookieless=&quot;UseCookies&quot;&lt;/b&gt; defaultUrl=&quot;/&quot;&amp;nbsp;
loginUrl=&quot;/&quot; protection=&quot;All&quot; &lt;b&gt;domain=&quot;.domain.ru&quot;&lt;/b&gt;&amp;nbsp;
 enableCrossAppRedirects=&quot;true&quot;timeout=&quot;30000&quot; /&amp;gt;
&amp;lt;/authentication&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Хочу отметить, что это строчка справедлива для Framework 4.0 Для предыдущих версий возможны изменения.&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Следующий шаг - это конфигурация Membership&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Provider. Во-первых, необходимо указать тип хеширования&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;hashAlgorithmType=&quot;SHA1&quot; и использовать единый&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;applicationName=&quot;applicationName&quot;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;membership defaultProvider=&quot;MyProvider&quot;&amp;nbsp;
hashAlgorithmType=&quot;SHA1&quot;&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;providers&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;add name=&quot;MyProvider&quot;&amp;nbsp;
      type=&quot;System.Web.Security.SqlMembershipProvider&quot;&amp;nbsp;
          connectionStringName=&quot;connectionStringName&quot;
           applicationName=&quot;applicationName&quot;&amp;nbsp;
         passwordFormat=&quot;Hashed&quot; /&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/providers&amp;gt;
&amp;lt;/membership&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Завершающий этап. Добавляем в web.config machineKey одинаковый для всех сайтов. Делаем это для того, чтобы авторизационную&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;Cookie&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;можно было расшифровать и прочитать на другом сервере&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;code&gt;&amp;lt;machinekey decryption=&quot;AES&quot; decryptionkey=&quot;decryptionKey&quot;&amp;nbsp;
validation=&quot;SHA1&quot; validationkey=&quot;validationKey&quot;&amp;gt;&amp;lt;/machinekey&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
decryptionKey,&amp;nbsp;validationKey - указываем самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Также хочу отметить проблему с которой столкнулся. Указанная схема не работала на разных серверах по непонятным причинам. Решил проблему установкой обновления для Framework&lt;br /&gt;
&lt;a href=&quot;http://support.microsoft.com/kb/2656351&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://support.microsoft.com/kb/2656351&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Полезные ссылки по теме&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Forms Authentication Across Applications&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/2806944508671415158/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/06/membership-membership-cross-sub-domain.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2806944508671415158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2806944508671415158'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/06/membership-membership-cross-sub-domain.html' title='Авторизация Membership  пользователей сквозь сайты с разными суб доменами. Membership Cross Sub Domain Authorization.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-1714012636221460161</id><published>2012-06-19T17:54:00.000+04:00</published><updated>2012-06-19T18:00:03.967+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Monodevelop"/><category scheme="http://www.blogger.com/atom/ns#" term="Monotouch"/><category scheme="http://www.blogger.com/atom/ns#" term="Интернет магазин для iPhone"/><title type='text'>Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть III.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Всем привет, я снова с вами! Прошел достаточно длинный промежуток времени c момента моего последнего сообщения.&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;Жизненные перипетии, неопределенность с работой... Но это все лирика.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Сегодня хочу рассказать больше о нашем приложении, которое мы сделали для iPhone. Напоминаю, что приложение мы сделали на C# не написав ни одной строчки кода в Objective-C.&lt;br /&gt;
Этот пост предназначается тем, кто мучается с выбором платформы для разработки приложений под iPhone. Ниже я привожу описание приложения разработанного с помощью Monotouch на C#.&lt;br /&gt;
&lt;br /&gt;
Итак, это приложение для интернет магазина ЗАКАЖИ. Вкратце описание функционала.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Приложение&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;интернет магазина&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;ЗАКАЖИ для iPhone предоставляет пользователям возможность находить товар в каталоге через меню, осуществлять поиск по всему ассортименту. Пользователь может просматривать карточку товара: цены на товар, фотографии товара, характеристики товара, варианты доставки.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Товары можно добавлять в корзину для последующей покупки. После оформления заказа приходит подтверждение в виде СМС на мобильный, а также письмо на электронный адрес.&lt;br /&gt;
&lt;br /&gt;
Через приложение пользователь может совершить звонок оператору, написать письмо в службу поддержки. Также пользователю доступна функция &amp;nbsp;заказа обратного звонка. Через специальную форму можно оставить контактные данные и оператор перезвонит самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Также в приложении доступна карта со всеми пунктами выдачи в выбранном регионе. &lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;К сожалению ссылку на AppStore не даю, так как в связи с трудностями с финансированием мы решили пока не выкладывать наше приложение. Поэтому добавляю с&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;криншоты приложения:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-5NDUM71jXG4/T-CBSUyhFWI/AAAAAAAAAFQ/9CpyDIT5lVI/s1600/2012-06-19+16.43.17.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://4.bp.blogspot.com/-5NDUM71jXG4/T-CBSUyhFWI/AAAAAAAAAFQ/9CpyDIT5lVI/s320/2012-06-19+16.43.17.png&quot; width=&quot;212&quot; /&gt;&amp;nbsp; &amp;nbsp;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-TEx0Im-p0gQ/T-CBTEhSiNI/AAAAAAAAAFU/ZYtARY_-qs0/s1600/2012-06-19+16.43.23.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/-TEx0Im-p0gQ/T-CBTEhSiNI/AAAAAAAAAFU/ZYtARY_-qs0/s320/2012-06-19+16.43.23.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-kIscVTmieHk/T-CBT9cTALI/AAAAAAAAAFc/9AFkyJcamxA/s1600/2012-06-19+16.43.31.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://3.bp.blogspot.com/-kIscVTmieHk/T-CBT9cTALI/AAAAAAAAAFc/9AFkyJcamxA/s320/2012-06-19+16.43.31.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-T2euGfsCY8I/T-CBU-gPjyI/AAAAAAAAAFk/3lPHel9LymA/s1600/2012-06-19+16.43.36.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://2.bp.blogspot.com/-T2euGfsCY8I/T-CBU-gPjyI/AAAAAAAAAFk/3lPHel9LymA/s320/2012-06-19+16.43.36.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-T2euGfsCY8I/T-CBU-gPjyI/AAAAAAAAAFk/3lPHel9LymA/s1600/2012-06-19+16.43.36.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-kIscVTmieHk/T-CBT9cTALI/AAAAAAAAAFc/9AFkyJcamxA/s1600/2012-06-19+16.43.31.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-T2euGfsCY8I/T-CBU-gPjyI/AAAAAAAAAFk/3lPHel9LymA/s1600/2012-06-19+16.43.36.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/a&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-o7zCUA1-zsY/T-CBV09-e-I/AAAAAAAAAFw/hAxT2dUhXuk/s1600/2012-06-19+16.44.28.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://3.bp.blogspot.com/-o7zCUA1-zsY/T-CBV09-e-I/AAAAAAAAAFw/hAxT2dUhXuk/s320/2012-06-19+16.44.28.png&quot; width=&quot;213&quot; /&gt;&amp;nbsp; &lt;/a&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-vW7xuB_VvoM/T-CBWnTu_sI/AAAAAAAAAF0/_4cn3GJLCRk/s1600/2012-06-19+16.44.45.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://3.bp.blogspot.com/-vW7xuB_VvoM/T-CBWnTu_sI/AAAAAAAAAF0/_4cn3GJLCRk/s320/2012-06-19+16.44.45.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-NoetLAvUyQU/T-CBXoJ-MwI/AAAAAAAAAGA/BlrsYNHJSTs/s1600/2012-06-19+16.45.01.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://3.bp.blogspot.com/-NoetLAvUyQU/T-CBXoJ-MwI/AAAAAAAAAGA/BlrsYNHJSTs/s320/2012-06-19+16.45.01.png&quot; width=&quot;213&quot; /&gt;&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-bB2nBY4Wfcg/T-CBYv8CygI/AAAAAAAAAGI/9SCGrVxjPzI/s1600/2012-06-19+16.45.07.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/-bB2nBY4Wfcg/T-CBYv8CygI/AAAAAAAAAGI/9SCGrVxjPzI/s320/2012-06-19+16.45.07.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-GUbCrcSzYpg/T-CBZ-uGokI/AAAAAAAAAGM/WgSm-r2fRp0/s1600/2012-06-19+16.45.11.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://3.bp.blogspot.com/-GUbCrcSzYpg/T-CBZ-uGokI/AAAAAAAAAGM/WgSm-r2fRp0/s320/2012-06-19+16.45.11.png&quot; width=&quot;213&quot; /&gt;&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-aoR9BB3oHwk/T-CBalZO6UI/AAAAAAAAAGU/PurUlZ7bnjM/s1600/2012-06-19+16.45.15.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/-aoR9BB3oHwk/T-CBalZO6UI/AAAAAAAAAGU/PurUlZ7bnjM/s320/2012-06-19+16.45.15.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-xb8Znx0QQ7A/T-CBbL0-rdI/AAAAAAAAAGY/WIJHiAyxzuk/s1600/2012-06-19+16.45.19.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://3.bp.blogspot.com/-xb8Znx0QQ7A/T-CBbL0-rdI/AAAAAAAAAGY/WIJHiAyxzuk/s320/2012-06-19+16.45.19.png&quot; width=&quot;213&quot; /&gt;&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-AVIAC5XXWew/T-CBb3HCNRI/AAAAAAAAAGg/4FWc-Od-Gfw/s1600/2012-06-19+16.45.24.png&quot; imageanchor=&quot;1&quot; style=&quot;background-color: white; clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/-AVIAC5XXWew/T-CBb3HCNRI/AAAAAAAAAGg/4FWc-Od-Gfw/s320/2012-06-19+16.45.24.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-HxqUFI_9TmI/T-CBcgh-TgI/AAAAAAAAAGs/m-M_uxCxAIk/s1600/2012-06-19+16.45.56.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://4.bp.blogspot.com/-HxqUFI_9TmI/T-CBcgh-TgI/AAAAAAAAAGs/m-M_uxCxAIk/s320/2012-06-19+16.45.56.png&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Получилось неплохо. Как считаете?&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/1714012636221460161/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/06/monotouch-monodevelop-ios-c-iii.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/1714012636221460161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/1714012636221460161'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/06/monotouch-monodevelop-ios-c-iii.html' title='Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть III.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-5NDUM71jXG4/T-CBSUyhFWI/AAAAAAAAAFQ/9CpyDIT5lVI/s72-c/2012-06-19+16.43.17.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-6952091647900086840</id><published>2012-04-25T18:58:00.000+04:00</published><updated>2012-06-26T17:07:05.126+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Monodevelop"/><category scheme="http://www.blogger.com/atom/ns#" term="Monotouch"/><title type='text'>Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть II.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
И снова здравствуйте!&lt;br /&gt;
&lt;br /&gt;
Продолжаю серию публикаций про разработку приложения под iOS с использованием Monotouch и Monodevelop. &lt;a href=&quot;http://rudevelop.spb.ru/2012/03/monotouch-monodevelop-ios-c-i.html&quot; target=&quot;_blank&quot;&gt;В прошлом сообщении&lt;/a&gt; я остановился на этапе получения лицензии.&lt;br /&gt;
&lt;br /&gt;
Для завершения квеста нам требовалось&amp;nbsp;отправить в Apple документы о компании (выписку из ЕГРЮЛ) в двух вариантах: по-русски и заверенный перевод на английском.&lt;br /&gt;
С этой задачей мы справились. Перевод оформили и заверили у нотариуса. Отправили по факсу.&lt;br /&gt;
Потом нам пришло письмо с просьбой перезвонить по указанному номеру. Из Apple по какой-то причине до нас не дозвонились. Я внес на счет Скайпа 5 долларов и мой коллега позвонил по указанному номеру(почему-то Ирландскому). Он поговорил с девушкой на том конце провода минут пять(естественно по-английски), и нас допустили к следующему этапу.&lt;br /&gt;
&lt;br /&gt;
Следующий этап &amp;nbsp;- это оплата. Как я уже писал, для оплаты нужно было отправить по факсу все данные кредитной карты. Делать нечего, отправили данные и стали ждать. &amp;nbsp;Через два дня с карты списали деньги и пришло письмо, говорящее об активации аккаунта. Ура, теперь можно тестировать приложение на устройствах и выкладывать его в AppStore.&lt;br /&gt;
&lt;br /&gt;
Базовое приложение у нас уже почти готово. В следующих сообщениях напишу об этапах разработки.&lt;br /&gt;
&lt;br /&gt;
Update:&amp;nbsp;&lt;a href=&quot;http://rudevelop.spb.ru/2012/06/monotouch-monodevelop-ios-c-iii.html&quot; target=&quot;_blank&quot;&gt;Пример нашего проекта на Monotouch&lt;/a&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/6952091647900086840/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/04/monotouch-monodevelop-ios-c-ii.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/6952091647900086840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/6952091647900086840'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/04/monotouch-monodevelop-ios-c-ii.html' title='Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть II.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-8931352860523090760</id><published>2012-04-13T16:19:00.001+04:00</published><updated>2012-04-13T16:20:55.412+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Sharing Views"/><title type='text'>MVC. Sharing Controllers and Views.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;i&gt;Задача&lt;/i&gt;. Есть повторяющиеся блоки в связке Contoller+View, которые одинаковы для нескольких сайтов и хочется добавить их для этих сайтов как ссылку на библиотеку, так сказать &#39;расшарить&#39;. А редактировать уже в одном проекте.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Решение&lt;/i&gt;.&lt;br /&gt;
Для решения этой задачи будем использовать библиотеку&amp;nbsp;&lt;a href=&quot;http://razorgenerator.codeplex.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Razor Generator&lt;/a&gt;.&amp;nbsp;Razor Generator позволяет делать прекомпиляцию наших View. Мы можем вынести файлы&amp;nbsp;в отдельную библиотеку, скомпилировать их и они станут доступными в других проектах.&lt;br /&gt;
&lt;br /&gt;
Посмотрим на примере. Создадим пустой проект. Назовем его&amp;nbsp;Shared Views.&amp;nbsp;В проекте повторим структуру MVC приложения: создадим папки Controllers, Models и Views и перенесем в папки файлы, которые мы хотим расшарить. Добавим необходимые ссылки на библиотеки MVC. &amp;nbsp;Через NuGet добавим библиотеку RazorGenerator.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-1jrmYA07phI/T4gQgm5GqII/AAAAAAAAAEw/lbUOV6yAVsw/s1600/1dc3aa4c1a.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;http://1.bp.blogspot.com/-1jrmYA07phI/T4gQgm5GqII/AAAAAAAAAEw/lbUOV6yAVsw/s320/1dc3aa4c1a.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
В&amp;nbsp;
свойствах каждого&amp;nbsp;Представления(View) укажем:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-tb88VFgfZK0/T4gRde439zI/AAAAAAAAAE4/MqmWdBxIAtI/s1600/0cd1364d96.png+(632-116).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;58&quot; src=&quot;http://4.bp.blogspot.com/-tb88VFgfZK0/T4gRde439zI/AAAAAAAAAE4/MqmWdBxIAtI/s320/0cd1364d96.png+(632-116).png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Теперь можно проверить прекомпиляцию с помощью команды RunCustomTool. Для этого необходимо выбрать файл представления и вызвать контекстное меню.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-U8QFuubQsqg/T4gS2AV9eQI/AAAAAAAAAFA/52CtVvOTPME/s1600/fa0beb407b.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;295&quot; src=&quot;http://1.bp.blogspot.com/-U8QFuubQsqg/T4gS2AV9eQI/AAAAAAAAAFA/52CtVvOTPME/s320/fa0beb407b.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
После запуска команды должен появиться файл Представления с расширением *.cs&lt;br /&gt;
&lt;br /&gt;
После того как мы сделаем Build проекта, файлы *.cs должны добавиться к каждому нашему Представлению. Теперь мы можем дать ссылку на наш проект в нескольких MVC сайтах.&lt;br /&gt;
&lt;br /&gt;
Хочу также отметить следующую полезную вещь. Если для одного из сайтов вам нужно кастомизировать Представление(View), то достаточно разместить его по тому же пути, что и в проекте&amp;nbsp;Shared Views, но уже в папках самого сайта. По приоритету сначала будет выполняться поиск представления в папках сайта, а уже потом в папках проекта&amp;nbsp;
Shared Views. Если вдруг такой приоритет не отработал, то его можно задать вручную в файле&amp;nbsp;App_Start/RazorGeneratorMvcStart.cs указав для&amp;nbsp;PrecompiledMvcEngine&amp;nbsp;&amp;nbsp;UsePhysicalViewsIfNewer = true.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Лирическое отступление. В прошлом &lt;a href=&quot;http://rudevelop.spb.ru/2012/04/blogger-blogspot.html&quot; target=&quot;_blank&quot;&gt;сообщении про индексацию блога в Яндексе&lt;/a&gt;&amp;nbsp;пообещал писать чаще, а в итог получается пишу еще реже... Так всегда бывает, поэтому впредь обещать ничего не буду. Буду писать как пишется.&lt;/i&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/8931352860523090760/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/04/mvc-sharing-controllers-and-views.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/8931352860523090760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/8931352860523090760'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/04/mvc-sharing-controllers-and-views.html' title='MVC. Sharing Controllers and Views.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-1jrmYA07phI/T4gQgm5GqII/AAAAAAAAAEw/lbUOV6yAVsw/s72-c/1dc3aa4c1a.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-2785330827953564648</id><published>2012-04-03T18:31:00.000+04:00</published><updated>2012-04-03T18:45:16.600+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SEO"/><title type='text'>Индексация блога на платформе blogger (blogspot) в Яндексе за неделю.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Прошу прощения за долгое молчание. Впредь обещаю писать чаще.&lt;br /&gt;
&lt;br /&gt;
Сегодня отвлечемся от программирования и затронем тему SEO (Search Engine Optimization).&lt;br /&gt;
&lt;br /&gt;
Могу предположить, что любой начинающий и не только блоггер хочет, чтобы его статьи были &amp;nbsp;донесены до целевой аудитории. Не секрет, что большинство посетителей переходят на блоги через поисковые системы Яндекс, Google и др.&lt;br /&gt;
&lt;br /&gt;
Выбрав блог на платформе blogpost я сначала не задумывался о том, как он будет индексироваться поисковыми системами и будет ли вообще. Но со временем, обратившись к этому вопросу, я понял, что Google индексирует мой блог на ура, а Яндекс и знать о нем ничего не знает.&lt;br /&gt;
&lt;br /&gt;
В интернете подсказали, что о новом сайте (в данном случае блоге) нужно сообщить Яндексу. Для этих целей существует&amp;nbsp;&lt;a href=&quot;http://webmaster.yandex.ru/addurl.xml&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;сервис &quot;Сообщить о новом сайте&#39;&lt;/a&gt;&amp;nbsp;Я добавил свой блог и начал ждать. Прошло 2 недели - результат нулевой. Тогда я добавил свой сайт в&amp;nbsp;&lt;a href=&quot;http://webmaster.yandex.ru/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Вебмастер&lt;/a&gt;&amp;nbsp;Яндекса с целью отслеживать посещения моего блога поисковым роботом. Прошло еще 2 недели. Робот на мой блог так и не заходил. Тогда я пошел дальше и написал письмо в тех. поддержку Яндекса с просьбой прояснить ситуацию: почему мой блог на blogspot не индексируется Яндексом.&lt;br /&gt;
Ответ был приблизительно следующего содержания: все в порядке в ближайшее время ваш блог проиндексируется. Прошла еще неделя, результат тот же.&lt;br /&gt;
&lt;br /&gt;
Тогда я снова отправился в дебри интернета за помощью. И оказалось, что я не одинок в своей проблеме. Яндекс действительно крайне неохотно индексирует блоги на платформе Blogger.&lt;br /&gt;
&lt;br /&gt;
Как же я решил этот вопрос? Зарегистрировал новое доменное имя в зоне ru и привязал к своему блогу.&lt;br /&gt;
Через&amp;nbsp;сервис &quot;Сообщить о новом сайте&quot; сообщил Яндексу о блоге с новым доменом и, о чудо, через неделю все мои страницы были проиндексированы и теперь доступны через Яндекс.&lt;br /&gt;
&lt;br /&gt;
Надеюсь, эта информация будет кому-нибудь полезна.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/2785330827953564648/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/04/blogger-blogspot.html#comment-form' title='Комментарии: 20'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2785330827953564648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2785330827953564648'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/04/blogger-blogspot.html' title='Индексация блога на платформе blogger (blogspot) в Яндексе за неделю.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-6687926641690072515</id><published>2012-03-23T14:32:00.002+04:00</published><updated>2012-06-26T17:06:25.127+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Monodevelop"/><category scheme="http://www.blogger.com/atom/ns#" term="Monotouch"/><title type='text'>Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть I.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Сегодня я начинаю серию публикаций, посвященных разработке нашего первого приложения под iOS на C#. Так как это проект новый для нас, то статьи будут появляться по мере нашего продвижения в этом вопросе.&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Предыстория&lt;/i&gt;. Руководство поставило задачу своими силами сделать приложение Интернет-магазина для iPhon-ов и iPad-ов. А в дальнейшем и под Android. Как разработчики на C# мы стали изучать варианты реализации. И остановились на&amp;nbsp;&lt;a href=&quot;http://xamarin.com/monotouch&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Monotouch&lt;/a&gt;.&amp;nbsp;Monotouch - это надстройка к&amp;nbsp;Monodevelop, которая позволяет писать приложения под iOS на C#. Код компилируется в нативный objective C и прекрасно работает под iOS. Причем Monotouch позволяет писать не только для iOS, но и для&amp;nbsp;Android. Как раз то, что нужно.&lt;br /&gt;
&lt;br /&gt;
Вы спросите, что такое Monodevelop? Это среда разработки на C#, работающая под Mac OS. Так сказать аналог VisualStudio для Mac-ов.&lt;br /&gt;
&lt;br /&gt;
И все же почему&amp;nbsp;Monotouch? Ответ прост - низкий порог вхождения. Зная C# можно сразу начинать работу над приложением не тратя время на изучение нового языка программирования. Возможно такой вариант не подходит для разработчиков игр или других графических приложений, когда нужно работать с нативной средой напрямую без дополнительной прослойки. Но для разработки Интернет-магазина &amp;nbsp;- в самый раз.&lt;br /&gt;
&lt;br /&gt;
Финансовый порог вхождения для разработчика скажем сразу совсем недешевый:&lt;br /&gt;
&lt;br /&gt;
1. MacBook - от 50 т.р. и выше. Есть конечно вариант работать на виртуальной машине. Но ничего хорошего кроме разного рода дополнительных проблем он в себе не несет.&lt;br /&gt;
2. Monotouch - лицензия для компании 999$.&lt;br /&gt;
3. Лицензия разработчика Apple - 99$ в год.&lt;br /&gt;
&lt;br /&gt;
Итак,&amp;nbsp;MacBook-и нам закупили, лицензию на Monotouch тоже, осталось самое сложное - получить лицензию разработчика&amp;nbsp;Apple.&lt;br /&gt;
&lt;br /&gt;
Дело в том, что регистрация компании в списке разработчиков&amp;nbsp;Apple далеко не тривиальная задача. Чтобы завершить регистрацию нужно в Apple отправить документы о компании (выписку из ЕГРЮЛ) в двух вариантах: по-русски и заверенный перевод на английском. Затем позвонить в офис Apple в Америку и подтвердить свое желание на получение лицензии разработчика.&lt;br /&gt;
&lt;br /&gt;
Но и это еще не все, оплатить лицензию можно только отправив по факсу данные кредитной карты, с которой будет осуществляться оплата (данные полностью вплоть до CVC2 кода).&lt;br /&gt;
&lt;br /&gt;
Сейчас мы находимся на этапе получения лицензии. О том, как все пройдет напишу позже.&lt;br /&gt;
&lt;br /&gt;
Дальнейшие статьи уже будут непосредственно посвящены разработке приложений. До новых встреч.&lt;br /&gt;
&lt;br /&gt;
Update:&amp;nbsp;&lt;a href=&quot;http://rudevelop.spb.ru/2012/06/monotouch-monodevelop-ios-c-iii.html&quot; target=&quot;_blank&quot;&gt;Пример нашего проекта на Monotouch&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/6687926641690072515/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/03/monotouch-monodevelop-ios-c-i.html#comment-form' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/6687926641690072515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/6687926641690072515'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/03/monotouch-monodevelop-ios-c-i.html' title='Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть I.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-2092305196562555589</id><published>2012-03-21T14:37:00.004+04:00</published><updated>2012-03-21T14:42:46.714+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="appSettings"/><category scheme="http://www.blogger.com/atom/ns#" term="handlers"/><category scheme="http://www.blogger.com/atom/ns#" term="Web.config"/><title type='text'>Хранить значения Web.config appSettings и handlers в отдельных файлах.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Со временем, работая с большим проектом, приходишь к тому, что записей&amp;nbsp;appSettings и handlers становится очень много. Чтобы не путаться в большом файле&amp;nbsp;Web.config есть элегантное решение: вынести значения&amp;nbsp;appSettings и handlers в отдельные файлы.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы вынести значения в отдельный файл используется атрибут&amp;nbsp;configSource. Запись в&amp;nbsp;Web.config меняется на следующую:&lt;br /&gt;
.....&lt;br /&gt;
&amp;lt;appSettings configSource=&quot;appSettings.config&quot; /&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;handlers configSource=&quot;handlers.config&quot; /&amp;gt;&lt;br /&gt;
........&lt;br /&gt;
&lt;br /&gt;
Соответственно, файл appSettings.config будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;appSettings&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;add key=&quot;ключ&quot; value=&quot;значение&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;add key=&quot;ключ&quot; value=&quot;значение&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ....&lt;br /&gt;
&amp;lt;/appSettings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А файл&amp;nbsp;handlers.config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;handlers&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;add name=&quot;Имя&quot; verb=&quot;GET,POST&quot; path=&quot;путь&quot; type=&quot;тип&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; ..............&lt;br /&gt;
&amp;lt;/handlers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/2092305196562555589/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/03/webconfig-appsettings-handlers.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2092305196562555589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2092305196562555589'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/03/webconfig-appsettings-handlers.html' title='Хранить значения Web.config appSettings и handlers в отдельных файлах.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-2656919988864508047</id><published>2012-03-20T14:39:00.002+04:00</published><updated>2012-10-31T12:48:26.775+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C# Odnoklassniki Rest API"/><title type='text'>Пример взаимодействия с Odnoklassniki Rest API на C#.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Итак, как и обещал, продолжаю тему взаимодействия с различными API. В прошлый раз писал про&amp;nbsp;&lt;a href=&quot;http://rudevelop.blogspot.com/2012/02/c-api-api-http-post.html&quot; target=&quot;_blank&quot;&gt;API ВКонтакте&lt;/a&gt;, сегодня напишу про API Одноклассников.&lt;br /&gt;
&lt;br /&gt;
Первое, что нам нужно сделать - это зарегистрироваться как разработчик на Одноклассниках.&lt;br /&gt;
&lt;br /&gt;
Сделать это можно по следующей ссылке&amp;nbsp;&lt;a href=&quot;http://dev.odnoklassniki.ru/wiki/pages/viewpage.action?pageId=5668937&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Форма регистрации разработчика приложений&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Получив права разработчика, необходимо зарегистрировать сайт как приложение. Подробно как это сделать можно прочитать&amp;nbsp;&lt;a href=&quot;http://dev.odnoklassniki.ru/wiki/display/ok/How+to+add+application+on+site&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
После того как сайт будет зарегистрирован придет письмо, содержащее:&lt;br /&gt;
&lt;br /&gt;
Application ID: xxxxxx.&lt;br /&gt;
Публичный ключ приложения: xxxxxxxxxxxxxxxxxxxxxxxxx.&lt;br /&gt;
Секретный ключ приложения:&amp;nbsp;
xxxxxxxxxxxxxxxxxxxxxxxxx.&lt;br /&gt;
Ссылка на приложение: http://www.odnoklassniki.ru/games/xxxxx&lt;br /&gt;
&lt;br /&gt;
Используя эти данные можно начать работу с API.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Для выполнения запросов к API пользователь должен авторизоваться в Одноклассниках.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Добавляем на нашем сайте ссылку для авторизации пользователя:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;i&gt;http://www.odnoklassniki.ru/oauth/authorize?client_id={0}&amp;amp;scope={1}&amp;amp;response_type=code&amp;amp;redirect_uri={2} &lt;/i&gt;, где&lt;br /&gt;
&lt;div&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;client_id&lt;/i&gt;&amp;nbsp;-&amp;nbsp;Application ID;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;scope&lt;/i&gt;&amp;nbsp;- это уровень доступа к действиям пользователя, отделенный &#39;;&#39; (VALUABLE ACCESS;SET STATUS;PHOTO CONTENT);&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;redirect_uri&lt;/i&gt;&amp;nbsp;- адрес нашего сайта, куда вернется пользователь после авторизации.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
После авторизации пользователь возвращается на наш сайт. Следующее действие - это получение&amp;nbsp;&lt;i&gt;access_token&lt;/i&gt;, с помощью которого мы сможем выполнять запросы к API.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Для получения&amp;nbsp;&lt;i&gt;access_token &lt;/i&gt;нам потребуется параметр&amp;nbsp;&lt;i&gt;code, &lt;/i&gt;который передается как параметр в момент переадресации пользователя на наш сайт.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Итак, выполняем наш&amp;nbsp;&lt;a href=&quot;http://rudevelop.blogspot.com/2012/02/c-post.html&quot; target=&quot;_blank&quot;&gt;C# POST&lt;/a&gt;&amp;nbsp;метод. В качестве адреса указываем&amp;nbsp;&lt;i&gt;http://api.odnoklassniki.ru/oauth/token.do&lt;/i&gt;, а в качестве параметров:&amp;nbsp;&lt;i&gt;client_id={0}&amp;amp;client_secret={1}&amp;amp;code={2}&amp;amp;redirect_uri={3},&lt;/i&gt;&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;client_id&lt;/i&gt;&amp;nbsp;-&amp;nbsp;Application ID;&lt;br /&gt;
&lt;i&gt;client_secret&lt;/i&gt;&amp;nbsp;-&amp;nbsp;Секретный ключ приложения;&lt;br /&gt;
&lt;i&gt;code&lt;/i&gt;&amp;nbsp;- параметр, получаемый из запроса &amp;nbsp;Request.QueryString[&quot;code&quot;];&lt;br /&gt;
&lt;i&gt;redirect_uri&lt;/i&gt;&amp;nbsp;- адрес нашего сайта&lt;br /&gt;
&lt;br /&gt;
Метод возвращает json, содержащий&amp;nbsp;&lt;i&gt;access_token. &lt;/i&gt;Json я десериализую в объект. Об этом писал &lt;a href=&quot;http://rudevelop.blogspot.com/2012/03/c-jsonnet-json.html&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь, зная&amp;nbsp;&lt;i&gt;access_token, &lt;/i&gt;можно делать запросы к API.&lt;br /&gt;
&lt;br /&gt;
Допустим мы хотим обновить статус пользователя (не забываем для этого запросить уровень доступа&amp;nbsp;SET STATUS).&lt;br /&gt;
&lt;br /&gt;
Для выполнения запроса нам нужно сформировать цифровую подпись, являющуюся&amp;nbsp;
MD5Hash-ем от конкатенации двух строк:&amp;nbsp;access_token и секретного ключа приложения.&lt;br /&gt;
&lt;br /&gt;
var sigSecret = GetMD5Hash(string.Format(&quot;{0}{1}&quot;, access_token,&amp;nbsp;
&lt;i&gt;client_secret&lt;/i&gt;&amp;nbsp;));&lt;br /&gt;
&lt;br /&gt;
GetMD5Hash&amp;nbsp;- метод получения Hash-a строки, о котором я писал &lt;a href=&quot;http://rudevelop.blogspot.com/2012/03/md5hash-c.html&quot; target=&quot;_blank&quot;&gt;ранее&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Теперь выполняем полюбившийся уже нам&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://rudevelop.blogspot.com/2012/02/c-post.html&quot; target=&quot;_blank&quot;&gt;C# POST&lt;/a&gt;&amp;nbsp;метод.&amp;nbsp;В качестве адреса указываем&amp;nbsp;&lt;i&gt;http://api.odnoklassniki.ru/fb.do&lt;/i&gt;, а в качестве параметров:&amp;nbsp;&lt;i&gt;access_token={0}&amp;amp;method=users.setStatus&amp;amp;status=Новый статус&amp;amp;sig={1}, где&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;sig&lt;/i&gt;&amp;nbsp;-&amp;nbsp;MD5Hash от следующей строки:&amp;nbsp;&lt;i&gt;method=users.setStatusstatus=Новый статус&lt;/i&gt;sigSecret (sigSecret&amp;nbsp;- значение, полученное ранее)&lt;br /&gt;
&lt;br /&gt;
Параметры выполнения других методов API можете посмотреть в &lt;a href=&quot;http://dev.odnoklassniki.ru/wiki/display/ok/Odnoklassniki+Rest+API&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;документации&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/2656919988864508047/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/03/odnoklassniki-rest-api-c.html#comment-form' title='Комментарии: 17'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2656919988864508047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2656919988864508047'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/03/odnoklassniki-rest-api-c.html' title='Пример взаимодействия с Odnoklassniki Rest API на C#.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-850370258097677883</id><published>2012-03-19T15:11:00.002+04:00</published><updated>2012-03-19T15:12:12.881+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="MD5Hash"/><title type='text'>Получение MD5Hash строки на C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Внешние Web API зачастую требуют цифровую подпись запросов в виде&amp;nbsp;MD5Hash-а передаваемых параметров. Ниже приведу метод, который я использую для получения&amp;nbsp;MD5Hash.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;public static string GetMD5Hash(string input)
{
 var x = new System.Security.Cryptography.MD5CryptoServiceProvider();
 var bs = Encoding.UTF8.GetBytes(input);
 bs = x.ComputeHash(bs);
 var s = new StringBuilder();
 foreach (var b in bs)
 {
  s.Append(b.ToString(&quot;x2&quot;).ToLower());
 }
 return s.ToString();
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
В скором времени приведу пример, где я использую этот метод в работе с Rest API Одноклассников.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/850370258097677883/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/03/md5hash-c.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/850370258097677883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/850370258097677883'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/03/md5hash-c.html' title='Получение MD5Hash строки на C#'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-2590945248542489664</id><published>2012-03-13T16:14:00.001+04:00</published><updated>2012-03-13T16:14:08.254+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Css"/><title type='text'>Пример на Css как оформить ссылку с картинкой.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
В своей работе приходится также заниматься&amp;nbsp;html-версткой. Поэтому&amp;nbsp;иногда&amp;nbsp;&amp;nbsp;буду в блоге размещать примеры на Css.&lt;br /&gt;
&lt;br /&gt;
Итак, первый пример. Как оформить ссылку с картинкой на Css для продвинутых.&lt;br /&gt;
&lt;br /&gt;
Первое время использовал это вариант:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a href=&quot;#&quot; title=&quot;Ссылка&quot; &amp;gt;&amp;lt;img src=&quot;картинка.png&quot; alt=&quot;Картинка&quot; width=&quot;100&quot; height=&quot;100&quot;/&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но, как оказалось, для поисковой оптимизации (СЕО) этот способ не совсем удачный - в ссылке должен быть текст.&lt;br /&gt;
&lt;br /&gt;
Поэтому сейчас использую следующий вариант, который, как мне кажется, более красивый и читабельный:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a href=&quot;#&quot; title=&quot;Ссылка&quot; class=&quot;link&quot;&amp;gt;Ссылка&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
код для css файла&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;a.link{
  display: block;
  overflow: hidden;
  background: url(&#39;картинка.png&amp;nbsp;&#39;) no-repeat;
  width: 100px;
  height: 100px;
  text-indent: -9000px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/2590945248542489664/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/03/css.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2590945248542489664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/2590945248542489664'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/03/css.html' title='Пример на Css как оформить ссылку с картинкой.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5244188107866925364.post-4665189508768201187</id><published>2012-03-12T14:38:00.003+04:00</published><updated>2012-03-12T14:40:33.431+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="VS 2010"/><title type='text'>Отключить запуск ASP.NET Development Server в Visual Studio</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Когда&amp;nbsp;у вас несколько сайтов, и&amp;nbsp;вы начинаете отладку в Visual Studio, то на каждый сайт запускается свой ASP.NET Development Server и все они дружно висят в трее.&lt;br /&gt;
&lt;br /&gt;
Так как я свои сайты запускаю непосредственно под IIS, то запуск каждого ASP.NET Development Server мне только мешает, создавая легкое раздражение.&lt;br /&gt;
&lt;br /&gt;
Как оказалось, отключить запуск&amp;nbsp;ASP.NET Development Server&amp;nbsp;очень легко.&lt;br /&gt;
&lt;br /&gt;
Нужно выбрать проект в Solution Explorer, нажать F4 (Свойства проекта) и в закладке&lt;br /&gt;
&lt;i style=&quot;font-weight: bold;&quot;&gt;Always start when debugging &lt;/i&gt;выбрать False&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-Iz2YMljwynA/T13Rflqp75I/AAAAAAAAAEM/IEWdAAt8lDk/s1600/c8484dca64.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;168&quot; src=&quot;http://1.bp.blogspot.com/-Iz2YMljwynA/T13Rflqp75I/AAAAAAAAAEM/IEWdAAt8lDk/s400/c8484dca64.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Сделать это придется для каждого проекта, но больше&amp;nbsp;ASP.NET Development Server вас беспокоить не будут.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rudevelop.blogspot.com/feeds/4665189508768201187/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://rudevelop.blogspot.com/2012/03/aspnet-development-server-visual-studio.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/4665189508768201187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5244188107866925364/posts/default/4665189508768201187'/><link rel='alternate' type='text/html' href='http://rudevelop.blogspot.com/2012/03/aspnet-development-server-visual-studio.html' title='Отключить запуск ASP.NET Development Server в Visual Studio'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/13101017261431821502</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Iz2YMljwynA/T13Rflqp75I/AAAAAAAAAEM/IEWdAAt8lDk/s72-c/c8484dca64.png" height="72" width="72"/><thr:total>3</thr:total></entry></feed>