среда, 25 марта 2009 г.

Комментарий на видеопослание президента РФ о достигнутых результатах

Исходное послание президента.

Коррупция свойственна любому государству, в котором значимость имеют материальные ценности. В "развитых" странах т.н. первого мира она минимально заметна. В нашей стране она присутсвует на всех этапах жизненного цикла гражданина. Самой мерзкой коррупцией является чиновничий произвол, когда ресурсы нашей страны расходуются чиновниками для обеспечения собственного благосостояния, а власть, даруемая российским народом, используется против него самого, обеспечивая безопасность этих "воров в государстве".
Предполагаю, что создание дополнительных контрольных органов в государственном аппарате приведет исключительно к росту коррупци. Т.к. чиновники будут отсчитываться исключительно перед такими же чиновниками и, соответственно, возрастет величина получаемых взяток.
Более качественным инструментом контроля, считаю, является инструмент, основанный на общедоступном и открытом источнике информации - сети интернет. Чиновники, работающие на народ, должны публиковать результаты своей работы в унифицированной форме, в свободном доступе для народа. Тогда любой гражданин сможет объективно оценить эффективность работы каждого конкретного звена государственного аппарата управления. Гражданам будет предоставлена возможность увидеть, сколько чиновник получил средств из государственного бюджета, как и на что он их потратил. Имея данную информацию, инициативные граждане и специалисты своей области, смогут легко проверить, а действительно ли деньги потрачены грамотно. Действительно ли, например, качество и объем положенного во дврое дома асфальта соответсвует объему денег, потраченных на него чиновником. Либо почему муниципалитет потратил на детскую площадку в несколько раз больше средств, чем заявлена ее стоимость в прайс-листах компаний-конкурентов поставщика.
И эта информация должна быть в свободном от бюрократических заборов доступе. Ведь не за бюрократические заборы мы позволяем распоряжаться ресурсами страны.

P.S. Данный комментарий был опубликован на сайте президента 25 марта 2009 года

пятница, 20 марта 2009 г.

Определение асинхронного запроса при использовании asp .net ajax

Встречаются ситуации, в которых необходимо разделить поведение управляющего элемента, расположенного на UpdatePanel в зависимости от того, асинхронный запрос приходит на обновление, или нет.
При использовании asp .net ajax ScriptManager клиентской части определяет переменную __ASYNCPOST при обращении к странице значением "true". Таким образом, разделить поведение пользовательского элемента в зависимости от типа запроса можно следующим образом:
public partial class UIControls_MyControl : System.Web.UI.UserControl
{
bool IsAsyncRequest
{
get
{
return ( Page.Request.Params.Get( "__ASYNCPOST" ) != null )
}
}

protected void Page_Load(object sender, EventArgs e)
{
if ( IsAsynRequest )
{
//что-то делаем
}
else
{
//делаем что-то
}
}

}
Примером использования данного решения может быть ситуация, в которой накладно выполнять всю функциональность пользовательского элемента на каждый асинхронный запрос. Что как раз и позволяет автоматизировать UpdatePanel из asp .net ajax.

пятница, 13 марта 2009 г.

Дружим canvas и asp .net ajax под ie7

Известно, что ie7 - особенный браузер со взглядами далекими от общепринятых стандартов. Одним из таких стандартов, незаметных для ie7, является html5. В частности, его элемент canvas.
Одним из решений для поддержки страниц, использвующих тег canvas, в брузере ie7 является библиотека excanvas от Google. Библиотека реализует требуемый стандартом объект CanvasRenderingContext2D использованием Microsoft VML с одной стороны, с другой стороны предоставляя клиентским приложениям интерфейс, описанный стандартом html5.
Указанное решение позволяет вполне комфортно вести разработку страниц с тегом canvas до тех пор, пока не начинают возникать вопросы построения изображений, зависимых от результатов выполнения серверных сценариев, в режиме реального времени.
Если разработка ведется по технологиям, близким LAMP - проблем нет никаких. Рисование осуществляется средствами javascript. Поэтому заменить исходные данные асинхронным http-запросом с последующей перерисовкой - дело не сложное. Подробнее с примером это описано в статье "Canvas, Ajax, and the Supertrain".
Совсем другое дело, если разработка ведется в рамках ASP с использвоанием asp .net ajax. В данной ситуации очень не хочется воротить собственную реализацию ajax, которая при асинхронных запросах обновляла бы только исходные данные для графического отображения. Вполне нормально в рамках ASP желать обновления пользовательского элемента управления прозрачно, использованием UpdatePanel.
На перепутье canvas, asp, ajax и ie7 возникают следующие сложности:
  • После асинхронной перезагрузки элемента canvas на странице, excanvas его не воспринимает;
  • При использовании RegisterStartupScript объекта ClientScriptManager для построения javascript-кода инициализации элемента в обработчике Page_PreRender, код не выполняется по завершении асинхронного запроса.
Решить первую помогает изучение исходного кода библиотеки excanvas. В библиотеке при завершении загрузки страницы (по значению complete свойства document.readyState) осуществляется связывание элементов DOM страницы, подходящих под описание элемента canvas, с VML-реализацией функционала тега canvas из стандарта html5. Занимается этим метод init_ некоторого менеджера - G_vmlCanvasManager. Ниже представлен псевдокод библиотеки:
if (!window.CanvasRenderingContext2D) {
(function () {
Описание vmlCanvasManager
...
G_vmlCanvasManager.init()
...
Описание интерфейса canvas
...
Определение CanvasRenderingContext2D
})();
}

Метод init связывает вызов метода init_ с обработчиком onreadystatechange. Тут и кроется подвох. Ведь document.readyState всегда complete после загрузки страницы, несмотря на асинхронные запросы - onreadystatechange не происходит. Поэтому определить контекст нового элемента документа, приходящего с результатом выполнения асинхронного запроса, необходимо вызовом метода init_ по завершении передачи данных от сервера. Тут мы сталкиваемся со второй проблемой.
А вторая проблема решается путем использования метода RegisterStartupScript класса ScriptManager. Пример представлен ниже:
protected void Page_PreRender ( object sender, EventArgs e )
{
StringBuilder sbStartScript = new StringBuilder( );
sbStartScript.Append( "window.alert('ку-ку');" );
sbStartScript.Append( "G_vmlCanvasManager.init_();" );
ScriptManager.RegisterStartupScript( this, Page.GetType( ), ID + "StartupScript", sbStartScript.ToString( ), true );
}

Более подробное решение второй проблемы описано в заметке "Inline Script inside an ASP.NET AJAX UpdatePanel".

четверг, 12 марта 2009 г.

localhost и Fiddler2

Наверное, многим знаком простой и удобный, а - главное - бесплатный, прокси для web-разработки Fiddler2, позволяющий наблюдать трафик http и https. Одна проблема есть у него - под IE7 он не умеет так просто наблюдать траффик localhost. Решений у данной проблемы два: непонятное и простое.
С непонятным можно ознакомиться по ссылке.
А простое подразумевает под собой написание "localhost.:порт", вместо "localhost:порт". Такая нехитрая конструкция как бы подскажет IE7 о необходимости послать loopback-трафик через указанный в его настройках прокси, а не какими-то секретными путями.

среда, 11 марта 2009 г.

Против навязанной Висты

Дополнение к предыдущему посту по теме.

В настоящее время ФАС РФ проводит проверку по наличию спроса на возврат денег за предустановленную ОС на ноутбуках. Как я понимаю, эту инициативу поддерживает ЦеСТ.

Люди, столкнувшиеся с отказом на запрос о возврате стоимости неиспользуемой предустановленной на ноутбуке ОС, могут заполнить форму, информация из которой, как я понимаю, будет передана в ФАС.

Наверное, можно и самостоятельно написать в ФАС. 12.02.2009 я написал эл. письмо начальнику управления информационных технологий ФАС Владимиру Кудрявцеву, но никакого ответа либо уведомления на данный момент не получал. Согласно данным, cуществует некоторый адрес для письменного заявления. Ниже приведена цитата из этого поста:
Написать краткое заявление в свободной форме на имя г-на Артемьева И.Ю., главы ФАС России, с изложением ситуации и ссылкой на то, что в данном случае нарушается Статья 11 (Запрет на ограничивающие конкуренцию соглашения или согласованные действия хозяйствующих субъектов) Федерального закона Российской Федерации от 26 июля 2006 г. N 135-ФЗ О защите конкуренции. К заявлению необходимо приложить копию кассового чека на приобретение мобильного ПК, копию страницы техпаспорта устройства и свою переписку (пусть и в электронном виде) с вендором. Отправить это все в письме с описью вложения по адресу Садовая Кудринская, 11, Москва, Д-242, ГСП-5, 123995.

Сам я туда письма пока не отправлял, но, скорее всего, составление письменного обращения на имя главы ФАС РФ в данном случае - самый действенный способ защиты собственных прав.