New features of VS2012 revealed
Краткое описание нововведений в VS2012. Среди них нереально быстрый и мощный диалог add reference, автоматическое добавление ";" в конце строк, кнопка «Погуглить» в сообщении об ошибке, а также интерактивный помощник написания кода «КодОбезъяна» :)
Почти год назад была опубликована статья об использовании профилировщика приложений в Visual Studio 2010. В комментариях была высказана мысль о том, что неплохо было бы сравнить сей продукт с аналогичными. Попробую провести краткий обзор и сравнение 4-х самых известных профайлеров .NET.
В обзоре участвуют:
встроенный в Visual Studio 2010 (начиная с Premium редакции) профайлер (MSDN, блог);
Одному из клиентов понадобилось вставить закладки однакнопка.ру в самый верх страницы. Проблема в том, что скрипт с этого ресурса довольно долго загружается (от 0.5 с и больше), соответственно блокирует дальнейшую загрузку контента. Пользователь при этом видит шапку и более ничего в течение этого времени.
Нужно перенести этот скрипт в постзагрузку!
Хочу поделиться с хабрасообществом парочкой классов, которые я использую в своих ASP.NET проектах. Один является обёрткой для объекта Cache, другой содержит расширяющие методы для кеширования результатов запросов LINQ-to-SQL.
Итак, задача: кешировать запросы LINQ-to-SQL.
Что должно быть в результате:
1) расширяющий метод для кеширования коллекции записей (после выполнения ToList())
2) расширяющий метод для кеширования одной записи (FirstOrDefault()),
3) обобщающий метод для работы с кешем, позволяющий доставать записи и приводить к указанному типу
3) возможность кеширования NULL.
До выхода VS 2010 и новой MSDN Library 2010 (на базе т.н. движка Help 3.0) достаточно часто использовал оффлайновую справку (Help 2.0), особенно такую фичу, как «Указатель» (в 99.9% случаев обращения к помощи). Лично для меня это было очень удобно.
Решал как-то задачу отображения широкой таблицы на странице с фиксированной шириной. По условию нужно было всегда показывать левый столбец (с заголовками строк). Может, плохо искал, но найденное решение не устроило, т.к. в нём много ограничений. В результате получилось вот что.
Принцип работы: делаем дубликат таблицы, накладываем его поверх оригинальной. У оригинальной скрываем контент, у дубликата — столбец с заголовками. Проверял в IE8, FF3, O10 (можно допилить для IE6 и 7).
Сегодня утром, как обычно, пришёл на работу. Как обычно, выбрал в панели задач Opera. Как обычно, решил почитать ajaxian.com. Но Opera ответила лишь мёртвым зависанием… Я конечно, за последнее время привык, что она часто крэшится на блогах blogspot, на местном воронежском форуме, но мёртвое зависание случилось впервые. И это была последняя капля…
Продолжаем борьбу с ViewState при использовании WebForms (использование данной технологии обусловлено политикой партии применением паттерна WCSF в проектах фирмы).
В предыдущей статье я рассмотрел возможность переноса ViewState из браузера пользователя в сессию. Здорово, что удалось избавиться от ViewState на странице, но с этим способом иногда может возникнуть проблема перезапуска стейт-сервера (хотя мои более опытные товарищи с ней не сталкивались).
Если всё-таки вы решили оставить ViewState на стороне браузера, возникает другая проблема (помимо раздувшегося html) — при прочих равных условиях поисковики ранжируют информацию лучше, если она содержится ближе к началу страницы. Естественно наличие громадного ViewState в начале каждой страницы нежелательно.
С самого начала изучения технологии ASP.NET меня неприятно удивили две вещи: наличие (точнее его огромный размер на сложных страницах) состояния представления (ViewState) в виде скрытого поля на странице и именование (ID) контейнеров серверных элементов. После PHP, где под контролем находится каждый выводимый в браузер символ, это было разочарованием.
Ну, с проблемой именования я более-менее смирился, в конце-концов стили для элементов можно применять с помощью class (тем более, что это работает быстрее, чем по id), а для использования id в клиентских скриптах можно вывести свойство ClientID серверного контрола.
Недавно решал задачу, когда нужно было определить, попадает ли определённое (строковое) значение во множество допустимых значений.
В JavaScript 1.6 существует метод indexOf объекта Array для поиска в массиве, но этот метод не поддерживается в Internet Explorer. Для IE данный метод реализовывается с помощью перебора массива в цикле.
Но так как порядок следования элементов был не важен и каждая миллисекунда была на счету, то я сравнил производительность перебора цикла в массиве с другими вариантами поиска (без перебора).
В CSS 2.1 есть множество рекомендаций, не поддерживаемых одним из самых распространённых браузеров, IE6. Но иногда так хочется использовать возможности CSS на полную мощность. Например, использование дочерних, сестринских селекторов, селекторов атрибутов и т.п. могло бы упростить HTML (или даже серверные скрипты, например, при вычислении первого потомка, тогда как в CSS для таких случаев предусмотрен псевдокласс :first-child). Каким же образом можно заставить IE понимать CSS в таких случаях?