NAnt + YUI Compressor

Собираем некоторые проекты в TeamCity
Логика сборки написана в "скрипте" для NAnt
В одном из проектов есть много css и js
Необходимо их минимифицировать

Для этой цели попробовал YUI Compressor for NAnt
Плюсы:
  1. Компактность использования
Минусы:
  1. Не дружит с русскими символами 0_о
  2. Не обновлялся с 15 сентября 2010-го
Посему заюзал YUI Compressor как написано на странице:
java -jar yuicompressor-x.y.z.jar [options] [input file]

Пришлось , конечно, поставить яву, но результат вполне норм:

Что делает показанный выше таргет:

  1. Ходит по всем js/css в проекте
  2. На каждый файл вызывает yuicompressor-2.4.8.jar
  3. Собственно всё, как результат - все файлы минифицированы
PS: возможно будет полезна дополнительно страница с описанием функций, доступных в NAnt


cannot call methods on slider prior to initialization; attempted to call method 'option'

Возможно вы создали слайдер и не запомнили ссылку на него, а после этого пытаетесь установить значение слайдера вот так:


Рекомендую попробовать сохранить ссылку на созданный слайдер и обращаться уже через неё:

P.S.: В последних версиях jQueryUI/jQuery попробовал - проблемы не увидел, может стоит просто обновиться

IIS 401.3 Error do not have permission

Моя ситуация:
  1. К сожалению в в проекте под IIS есть виртуальное приложение, каталогом которого является расшаренная папка с другой машины (допустим \\AnotherServer\Folder\)
  2. При попытке обратиться к виртуальному приложению проекта получаем ошибку IIS 401.3 Error do not have permission
  3. Разрешилось просто:

Если дело происходит с локальной папкой, а не с расшареной, то, вероятно, нужно всего лишь дать доступ на чтение этой папки пользователю IUSR 

The server variable is not allowed to be set.

При использовании Application Request Routing и модуля RewriteModule словил вот такую ошибку:

The server variable "HTTP_ACCEPT_ENCODING" is not allowed to be set.

Возможно используется модуль Rewrite 2.0, не позволяющий обновлять серверные переменные на уровне сайта

Необходимо:

  1. Выбрать в IIS нужный сайт
  2. В правой панели найти и перейти в модуль URL Rewrite
  3. В панели действий (правая колонка IIS) выбрать View Server variables... (нужны привилегии администратора)
  4. Откроется список серверных переменных, и, если не видите нужной вам переменной - просто добавьте её
Если словилась просто ошибка 500.50 и вы не знаете, что за серверную переменную необходимо добавить - пропишите в customErrors (файл web.config) mode=Off, либо откройте сайт прямо на сервере (т.е. локально), при условии, что customErrors mode=RemoteOnly

Использование web-камеры из javascript

Маленькая предыстория, месяца два назад обратились ко мне с задачей: реализовать возможность отправки фотографий пользователями прямо с сайта

Как следствие - маленький тестовый проект, в котором реализована отправка фото с web-камеры на сервер и вывод этого фото по ссылке
Публиковал эти 10 строк кода в windows-azure, не так уж плохо оказалось (пробная версия даёт 7 тыс. пробных рублей на что угодно), но увы - уже 30 дней истекли, так что демо в фидлере и код проекта в самом конце заметки


Удаленный рабочий стол на планшете

Microsoft Remote Desktop или 2X RDP Client
При необходимости настройки VPN - AnyConnect ICS+


Отследить изменение данных формы / Запретить закрытие страницы без сохранения

Коротко: предупредить уход пользователя со страницы, на который он произвёл изменения и не сохранил их

Определение возможностей устройства по User Agent

Допустим необходимо узнать некоторый ряд данных о пользовательском устройстве, который отправил запрос на сервер:
  1. Тип устройства (телефон/смартфон, планшет, компьютер, робот)
  2. ОС (windows, mac os, android, ios)
  3. Данные экрана (поддерживаемое разрешение, тач или нет)
  4. Поддержка разметки (html, xhtml, wml)
Как правило такая информация не передаётся в HTTP-заголовках, но передаётся заголовок User-agent
Существует база данных заголовков User-agent с указанием некоторых данных об устройствах, отправляющих подобные заголовки

WCF Cache: MemoryCache

Используя .NET Framework 4 и выше можно использовать MemoryCache для хранения редко обновляемых данных

Использование совсем простое
  1. Проверяем наличие данных в кэше (MemoryCache.Default["<cache key>"])
  2. Если есть данные - возвращаем результат
  3. Если нет данных - достаём их из БД, например, и кладём в кэш (вернув результат, конечно) 
Пример использования