Artyom's profileDark BrandBlogListsGuestbookMore ![]() | Help |
|
|
фываывфвыафПривет фывафыва фыва фыва фыва фыва ыфв а фыва ыфв аыв ф фыважлдоф ывалжд офывдлжа Отладка веб-сайтов под IIS7При отладке веб-сайта, работающего под IIS 7 возникает ошибка:
--------------------------- Суть проблемы состоит в том что IIS периодически пингует рабочие процесы, и если рабочий процес не отвечает, он считает что рабочий процес повис и завершает его. Решить это очень просто - достаточно отключить Ping в свойствах пула. В Internet Information Services (IIS) Manager в разделе Application Pools нужно выбрать рабочий процес под которым выполняется веб-сайт, в контекстном меню выбрать Advanced Settings. В появившемся диалоге установить свойству Ping Enabled значение False, или повысить значение Ping Maximum Response Time.
Включаем жесткую проверку типов для всего веб-сайтаДавно известна досадная ошибка ASP .NET 2.0. Допустим, в конфигурационном файле мы указываем, что хотим включить опцию Strict (жесткую проверку типов): <compilation strict="true" explicit="true"> К сожалению, эта опция будет работать только в коде который внедрен в ASPX-страницу. Код, который располагается в .vb-классах не подвергается дейсвтию этой опции. И чтоб иметь жесткую проверку типов, приходилось в каждом файле прописывать диррективу Option Strict On Не было предела моему разочарованию когда я обнаружил, что в Visual Studio 2008 эта ошибка так и не была исправлена Но на сей раз мой пытливый разум не дал очередную команду писать в начале файла нужную директиву, а полез в Live Search в поисках решения. И оно нашлось! Необходимо внести некоторые изменения в конфигурационный файл. В web.config который идет в шаблоне веб-сайта в Visual Studio 2008 имеется следующий код: <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/warnaserror-" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v3.5"/> </compiler> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" compilerOptions="/optioninfer+" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v3.5"/> </compiler> </compilers> </system.codedom> Необходимо всего лишь добавить еще одну опцию компиляции (отмечено жирным): <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/warnaserror-" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v3.5"/> </compiler> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" compilerOptions="/optioninfer+ /optionstrict+" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v3.5"/> </compiler> </compilers> </system.codedom> Вот и все, теперь во всех .vb-файлах по умолчанию применяется жесткая проверка типов (разумеется кроме тех в которых эта опция отключена директивой Option Strict Off). Также можно отключить опцию неявной типизации, если кому-то сильно мешает, (/optioninfer-) Даный код проверен на .NET Framework 3.5. Если вы продолжаете использовать .NET Framework 2.0 то скорее всего он будет немного отличаться. <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/warnaserror-" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> </compiler> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" compilerOptions="/optionstrict+" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> </compiler> </compilers> </system.codedom>Под 2.0 не проверял, так что используйте на страх и риск :) RSS - это просто. С Visual Basic 9.0Понадобилось быстренько сделать RSS-фид на сайте. Первая мысль которая пришла в голову - разумеется, взять rss toolkit и с его помощью быстренько все сделать. Но тут пришла в голову дерзкая мысль и... получилось это: Dim RssContent = <?xml version="1.0" encoding="utf-8"?> <rss version="2.0"> <channel> <title>Feed Title</title> <description>Feed Description</description> <link>http://mysite.ru/</link> <pubDate><%= DateTime.Now.ToString("r") %></pubDate> <lastBuildDate><%= DateTime.Now.ToString("r") %></lastBuildDate> <generator>BetaCode RSS Generator</generator> <%= From a In Answers _ Select <item> <title><%= a.ShortQuestion %></title> <link><%= "http://mysite.ru/Question.aspx?id=" + a.id.ToString %></link> <description><%= context.Server.HtmlDecode(a.Question) + " <a href='http://mysite.ru/Question.aspx?id=" + a.id.ToString + "'>читать далее</a>" %></description> <category><%= a.Category1.name %></category> <guid><%= "http://mysite.ru/Question.aspx?id=" + a.id.ToString %></guid> <pubDate><%= If(a.DateCreated, DateTime.Now).ToString("r") %></pubDate> </item> %> </channel> </rss> RssContent.Save(context.Response.Output)Не спорю - это не самый правильный и оптимальный метод генерации RSS. Но зато как красиво демонстрирует по сути неограниченые возможности легендарного "Deep XML Support" Спецификация Visual Basic 9.0Microsoft выложила спецификацию Visual Basic 9.0 - 338 страниц в формате doc. Качаем, читаем. Генерация XML в VB 9.0В .NET существует немало способов генерации XML-файлов - начиная от доблесной конкатенции строчек и заканчивая использованием навороченой объектной модели XML DOM. Предлагаю еще один способ который появился в Visual Basic 9.0: Dim Root As New DirectoryInfo("D:\Work\output\sites\") Dim X = <Sites> <Groups> <%= From Gr _ In Root.GetDirectories _ Select <Group name=<%= Gr.Name %>> <%= From St _ In Gr.GetDirectories _ Select <Site name=<%= St.Name %>/> %> </Group> %> </Groups> </Sites> X.Save("sites.txt")Я думаю это однозначно можно назвать кодом дня Удаление дублирующихся записей в SSISИногда при работе с ненормализоваными таблицами возникает необходимость удалить дублирующиеся записи. Рассмотрим пример. У нас есть ненормализования таблица типа такой:
Требуется сделать таблицу должностей такого вида:
Задача решается очень просто, если в качестве источника данных выступает OLE DB Source - можно выполнить DISTINCT-запрос. Если в качестве источника данных выступает, скажем, XML-файл, и возможности выполнить такой же запрос нет - прийдется поступить немного по-другому. В данном случае источником будет выступать XML-файл:
Выбираем столбец который нам необходим - в данном случае это название категории
В моем случае в исходных данных встречаются одинаковые названия группы, написанные в разном регистре, то есть "Интернет" и "интернет" - для корректной работы все строки нужно привести в нижний регистр - разумеется, у вас такой необходимости может не быть. Для этого я использую трансформацию Derrived Column:
Для удаления дублирующихся записей используем трансформацию Sort с включенной опцией Remove rows with duplicate values.
И заключительный шаг - это выгрузка данных в приемник - в моем случае это таблица в базе SQL Server.
Все готово, запускаем SSIS Package:
Готово :) TraceroutНа днях коллега обратился с вопросом - как в .NET сделать Traceroute? Вот, набросал небольшой пример. Конечно, нужно "обработать напильником", но отправной точкой, думаю, может служить. Dim Host As String = "88.212.201.1" Dim Buffer = New Byte(1023) {} Dim HostPing As New NetworkInformation.Ping Dim hostResult = HostPing.Send(Host) For TTL = 1 To 127 - hostResult.Options.Ttl Dim Ping As New System.Net.NetworkInformation.Ping Dim Options As New PingOptions(TTL, True) Dim Result = Ping.Send(Host, 2000, Buffer, Options) Console.WriteLine(Result.Address) Next Обзор Visual Basic 9.0. Часть 2Давно обещал написать продолжение своего обзора, но сначала не было вдохновения, потом желания, потом времени, потом опять времени, но сейчас кажется выпала свободная минутка, и, пока мой компьютер занимается сложными вычислениями, напишу еще про несколько интересных нововведений в Visual Basic 9.0. Оператор IfВсе прекрасно знают зачем нужен этот оператор. Для чего же еще его можно использовать в VB 9.0? Все помнят давно существующую в языке BASIC функцию IIf. Фукнция хорошая, позволяла экономить немного кода. Но есть с ней 2 небольших проблемы.
Console.WriteLine(IIf(User IsNot Nothing, User.Name, "User Unknown")) поскольку в том случае, если User - это Nothing, получили бы NullReferenceException. Вобщем, совершенно неприспособленая к .NET фукнция. Поэтому я, например, ее вообще не использовал. Теперь вместо IIf можно использовать If как функцию. На самом деле, конечно, это не функция, а синатксическая конструкция. Dim CurrentUser As String = If(User IsNot Nothing, User.Name, "User Unknown") Данный вызов будет корректно работать в том случае если User - это Nothing. И, как видите, фукнция типизирована, то есть нет необходимости в дополнительных преобразованиях. Как это работает? Я так полагаю на этапе компиляции эта конструкция преобразуется в что-то типа: If User IsNot Nothing Then CurrentUser = User.Name Else CurrentUser = "User Unknown" End If Второй вариант использования данной конструкции - с двумя аргументами: Dim UserAge As Integer? Dim Age = If(UserAge, 0) Если первый аргумент не Nothing, он возвращается, если Nothing, то возвращается второй аргумент. Функция также типизирована, и что хотелось бы отметить - если в фукнцию передается Nullable-тип, то возвращается уже обычный, те Nullable. Вобщем теперь в VB 9.0 появились аналоги синатксических конструкция ?: и ?? из C#. Мое мнение - это полезное нововведение, уже использую Еще пара слов о Lambda-выраженияхИтак, на данный момент в Visual Basic 9.0 (в отличие от C# 3.0) lambda-выражение может состоять только из одного выражения. И я сомневаюсь что это изменится к релизу. Так, для информации Еще недавно на MSDN появилась очень интересная статья про lambda-выражения в VB 9.0, советую ознакомиться. Анонимные типыВозможно, вы уже слышали об этом нововведении. В VB 9.0 появилась возможность использовать так называемые анонимные типы - сами типы не нужно объявлять, компилятор сам сгенерирует их декларации. Данная возможность широко используется в LinQ, что я постараюсь рассмотреть чуть позже, а вот пока небольшой пример. Dim User = New With {.Name = "Artyom", .Age = 20} Dim Country = New With {.Name = "Ukraine", .Population = 48000000} Console.WriteLine("User {0}, Age: {1}", User.Name, User.Age) Console.WriteLine("{0}, Population: {1}", Country.Name, Country.Population) Console.ReadLine() Вот такоое небольшое продолжение, если появится свободная минутка, попробую написать еще А пока могу посоветовать почитать очень интересную статью про C# 3.0 на русском языке. Tags: Visual Basic 9.0 .NET Micro FrameworkЗа время своего существования .NET Framework успел проникнуть практически везде - начиная с мобильных устройств и заканчивая высокопроизводительными серверами. Но все-таки есть ряд устройств, куда .NET Framework путь пока был закрыт - это встраиваемые устройства Но у меня ест хорошая новость - с помощью .NET Micro Framework вы сможете попасть и туда Поддерживает процессоры ARM7 и ARM9. Разработку можно вести на языке C#, прямо в Visual Studio, тестировать в эмуляторе. SDK можно скачать здесь. Tags: .NET Micro Framework Интерфейс в стиле Office 2007 - в каждую программу!Кто уже видел интерфейс Office 2007?
Если хотите себе такое же, то вам следует зарегестрировать и скачать набор требований и рекомендаций, которым нужно следовать. Никаких отчислений платить Microsoft не нужно - только следовать рекомендациям и требованиям. 2007 Office System Document- User Interface Evaluation Design Guidelines 2007 Office System Document- User Interface Design Guidelines for Licensees Вот только саму реализацию Microsoft на данный момент не предоставляет, но сторонние разработчики быстро этим воспользовались, и немного поискав, можно найти реализации на Windows Forms и WPF, правда уже платные Tags: Microsoft Office 2007, Ribbon Ноутбучная мышьКак по-вашему должна выглядеть ноутбучная компьютерная мышь? Так? Так? Или так? Разумеется, нет. Настоящая ноутбучная мышь должна выглядеть так как Microsoft Wireless Notebook Laser Mouse 7000
Для тех же, кому обычной ноутбучной мышки будет мало, Microsoft сделала "самый продвинутый мобильный инструмент из всех существующих" - Microsoft Mobile Memory Mouse 8000, в ресивер которой встроена флеш-память на 1 гигабайт! С помощью этого же ресивера выполняется и подзарядка мыши.
Еще один отличный концепт на SilverlightВы знаете как через год мы будем заказывать авиабилеты? Эти ребята знают и показывают: Tags: Silverlight Примеры гаджетов для Windows VistaMicrosoft выложила у себя на сайте несколько примеров гаджетов для Windows Vista, иллюстрирующих некоторые приемы при программировании гаджетов. Всем кто хочет разрабатывать гаджеты но не знает с чего начать - рекомендую ознакомиться Разработка фоновых служб для Windows VistaMicrosoft опубликовала замечательный документ с рекомендациями по разрабокте фоновых служб для Windwos Vista. В документе также описана архитектура Windwos Search Service, рекомендую ознакомиться. Microsoft рулит в обработке цифровых фотографийКто-нибудь знал что Microsoft принимает участие в исследованиях, связаных с обработкой цифровых изображений? И уже добилась неплохих успехов. Итак, три представленых технологии обрабокти изображений, призваных упростить жизнь. 1) Повышение качества фотографий, сделаных в неблагоприятных условиях. Из двух фотографий, сделаных с разной выдержкой, одного очень размытого, другого очень зашумленого, получается четкая фотография. 2) Упрощение вставки новых объектов на сцену. Хотите добавить на фотографию несколько объектов? Нет ничего проще. В глобальной базе данных изображений будет взята вся необходимая информация об этой сцене и ноыве объекты будут вставлены на нее с учетом ориентации и освещения. 3) Вырезание объектов из сцены. С поразительной точностью алгоритм отличает пиксели объекта от фоновых пикселей и позволяет получить результат высокого качества. Вот такие вот успехи Tags: Microsoft Research Microsoft делает... двухсторонний тачскрин!
Microsoft утверждает, что основная проблема традиционных тачскринов состоит в том, что при работе руки закрывают часть изображения, мешая таким образом работать. Что же предлагают сделать? Тачскрин, на которой можно нажимать как с лицевой стороны, так и с обратной. Разумеется, если нажимать с обратной стороны, то пальцы не будут заслонять изображение. Устройство имитирует "прозрачность" экрана - то есть пользователь видит где находятся его руки "за экраном" и видит что он нажимает. Уже есть рабочий прототип - 7-дюймовый тачскрин. Обратная сторона может обрабатывать несколько нажатия одновременно. Но разработчики уже столкнулись с рядом проблем. Во-первых, для определения положения руки с обратной стороны экрана используется веб-камера, прикрепленная к устройству на штативе. Обработкой изображения рук занимается отдельный компьютер. Эти два ограничения пока ставят под вопрос мобильные возможности, но над снятием этих ограничений уже работают. При тестах устройство показало свое удобство при работе с картой и при перетаскивании по экрану мелких объектов. Но самое, на мой взгляд, интересное предложение - это новая конфигурация классической QWERTY-клавиатуры. Вместо того чтоб набирать текст двумя пальцами, используются сразу 8! Ну и вот еще небольшой концепт. А вот устройство в действии. WCF и стандартыВсем известно, что WCF основывается на открытых стандартах. Для тех кому интересно ознакомиться с самими стандартами, Microsoft собрала в одном месте все ссылки на спецификации: Tags: WCF Windows Server 2008 RC0 - на следующей неделе?WinBeta утчерждает что обнаружил страницу загрузки Windows Server 2008 RC0. Andy Malone также пишет про RC0. Судя по всему, на следующей неделе RC0 будет официально объявлен. Tags: Windows Server 2008 Делаем отчеты прощеКомпания 90 Degree Software сделала новый редактор отчетов для SQL Server Reporting Services. Используемые технологии - Reporting Services, WPF. Интерфейс в стиле... Office 2007. Видео смотрим здесь. |
|
|