вторник, Октябрь 20, 2009

Resharper 5 EAP

Resharper 5 дошел до стадии EAP
Со стабильностью пока грустно



Но энтузиастам однозначно надо смотреть
Много вкусного! :)

понедельник, Октябрь 05, 2009

silverlight install experience


Встречаются пользователи – ну, как дети.

Такой увидит картинку с надписью “Install Silverlight” и замрет в ступоре.

Поэтому если мы хотим сделать все красиво то нужно

а) Объяснить что происходит и куда тыкнуть

б) обновить страницу после установки Silverlight

Первый пункт решается пояснительным текстом и красивой кнопкой. Такой, чтоб ткнуть в нее хотелось рефлексорно.

Второй – технически. Сам установщик сильверлайта ничего кроме, собственно, установки – не умеет. Поэтому проверку «установлен ли сильверлайт» и обновление страницы будем делать сами.

Для начала добавим вот такой код в тэг object, в котором вызывается .xap файл:

   1:      <div id="reloader"></div>
   2:      <script type="text/javascript">
   3:      $(function()
   4:      {
   5:          window["sl_refresh_timeout"] = window.setInterval( 
   6:              function() 
   7:                  {
   8:                  $("#reloader").load("/где-тотам/reloader.html");
   9:                  }, 5000);
  10:      });
  11:      </script>


т.е: в div с id=”reloader” средствами jquery ajax каждые 5 секунд будет подгружаться некий html с сервера

теперь посмотрим что в этом html:

   1:  <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="0" height="0" style="visibility: hidden;">
   2:      <param name="source" value="где-то там/silverlight/sl_reloader.xap"/>
   3:      <param name="onerror" value="onSilverlightError" />
   4:      <param name="background" value="white" />
   5:      <param name="windowless" value="false"/>
   6:      <param name="minRuntimeVersion" value="3.0.40624.0" />
   7:  </object>

т.е.: просто подгружаем еще один silverlight control.

А контрол этот – результат компиляции пустого silverlight проекта, у которого в файл App.xaml.cs в метод application_startup добавлен код перегружающий страницу:

   1:  public App()                                                       
   2:  {                                                                  
   3:      Startup += application_startup;                                
   4:      InitializeComponent();                                         
   5:  }                                                                  
   6:                                                                     
   7:  private void application_startup(object sender, StartupEventArgs e)
   8:  {                                                                  
   9:      HtmlPage.Window.Eval( "window.location.reload()" );            

У меня такой .xap весит 3 килобайта.

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


   1:  public App()
   2:      {
   3:      Startup += application_startup;
   4:      InitializeComponent();
   5:      }
   6:   
   7:  private void application_startup( object sender, StartupEventArgs e )
   8:      {
   9:      HtmlPage.Window.Eval( "window.clearInterval(window[\"sl_refresh_timeout\"])" );

чтобы процесс постоянной перегрузки релоадера прекратился.

Итак, резюмирую:

на странице с сильверлайт-проектом, в тэг object добавляем понятное пользователю описание «Почему мне нужно нажать на эту красивую кнопку», собственно, саму красивую кнопку и ajax подгружающий вспомогательный silverlight файл. Как только браузер окажется в состоянии воспринимать silverlight, страница перегрузится и установленный в скрипте интервал будет отменен основным silverlight`овым объектом.

воскресенье, Сентябрь 27, 2009

Для всех страдальцев

Мечтающих о переходе с asp.net на asp.net mvc:
краткое руководство с исходниками: как использовать новые части приложения написанные на mvc из asp.net.
Таким образом можно постепенно переписывать существующие webcontrols, например.

пятница, Июль 10, 2009

Silverlight 3 RTW

3-й сильверлайт вышел, что не может не радовать.
Ссылка на установку, Silverlight Tools для Visual Studio и Silverlight 3 SDK.
Ура-ура.

Note: что-то интересное произойдет тут http://www.seethelight.com/ через 337 минут (на момент написания) :)

пятница, Апрель 03, 2009

СПб Alt.Net

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

Да и повод был весомый - морально поддержать однополчанина :)

Семинар был посвящен интереснейшим штукам - ASP.NET MVC про который уже многие слышали (надеюсь), хотя еще не все понимают, что он изменит им жизнь к лучшему; а так же замечательному Spark View Engine, который по лаконичности и ясности кода используемого в шаблонах со страшной силой заруливает в минуса все известные мне аналогичные системы.

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

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

Резюмирую (глобально, давно хотел составить этот список):
Дотнетчикам, которые хотят быть "впереди на полшага (намного больше, на самом деле)" - в обязательном порядке осваивать: ASP.NET MVC, Spark, SharpArchitecture, NHibernate/Fluent NHibernate, Castle Windsor (или ему аналогичные системы), xVal, NHibernate Validator и конечно же jQuery.
Из композиции всех этих добряков выходит совершенно убийственный в своей мощности набор для разработки.

Альтернатива, в .net, как и была - одна: тулбоксы, дизайнеры, спагетти-код и омерзительный ненатуральный WebForms.