Notas del Terrible
Заметки Ужасного Зануды

1 к 20

июля 15, 2010 16:37 by terR0Q

Про соотношение эффективности. То, что я сделал за полтора часа (настройка PHP ещё в апреле — один час и установка UMI.CMS под винду), один товарищ не может сделать на юниксе уже 7 дней.

Квалификация, знания, платформы... Это всё ерунда и слова для метрик. Что реально нужно: внимательность и хотя бы немного вежливости, а также своевременность. И честность в плане «могу — не могу».


Visual Studio 2010

июля 7, 2010 00:45 by terR0Q

Распробовал Visual Studio 2010. Наконец-то, спустя долгие годы после появления первой версии VS .NET эта штука стала быстрой и удобной! Свершилось же спустя 8 лет.

Для сравнения (с VS 2008). Солюшн из двух проектов, один ASP.NET MVC, другой — Silverlight. Раньше отладка дружила только с IE, теперь прекрасно «слышит» закрытие закладки в том же Хроме. Сильвер опять же отлаживается не только в осле. Старт отладки с нуля (запускается мини-сервер) происходит за 10 секунд против 30-40 раньше. Старт программы — 5 секунд против 12-15 даже при всех способах ускорения. Открытие, создание файлов, работа с файлами проекта вообще не тормозит, виват.

В общем, в плане скорости стало напоминать Eclipse. И это чертовски радует.


Umbraco 4.5

июля 5, 2010 19:36 by terR0Q

В конце июня вышел релиз 4.5 Umbraco. Релиз нестандартный и весьма интересный: наконец-то появился полноценный редактор для JS, XML и прочих файлов. Производительность админки и самого сайта заметно приросла.

Есть только одна важная мелочь. Для работы теперь необходим .NET 4, а веб-приложение должно работать только в интегрированном режиме ASP.NET 4.

В Umbraco 5 будет переход на модель MVC, и я надеюсь, что разработчики к этому подтянут реальную пользу для разработки и результатов работы с движком.


bad/good code

июля 1, 2010 15:20 by terR0Q

Как же это чертовски хорошо знакомо


CodePeckers

июня 25, 2010 20:54 by terR0Q

А ещё 3 дня, как готовы визитки и сайт студии. Вечером еще и форму заказа на всякий случай добавим.


Различие ASP.NET и PHP на IIS

июня 25, 2010 17:43 by terR0Q

Столкнулся с очень увесистым различием в работе ASP.NET и PHP под управлением IIS. Симптом проблемы очень нагляден: на одном и том же сервере .NET-сайты работают быстро, на основе PHP — тормозят.

Такое положение дел достало, начал копать вопрос. Проверка ping’ом показала, что сетевой проблемы нет: ответы приходят максимум за полсекунды (привет, «последняя миля»). Запустил профилирование на сервере и закидал его запросами по всем сайтам. Профиль был короткий, всего 1 минута, но наглядный.

Проблема вкратце: оперативная память была перегружена и её не хватало, активно использовался своп.

Решение: сервер был хиленький, Hyper-V с 512 Мб рамы. Сейчас памяти в 2 раза больше, а процессорного времени в 2,5 раза больше. Теперь занято не 85%, а 71% в среднем, и главное, что не свопятся сайты.

В чём суть проблемы.

ASP.NET «максимально бинарен». Все страницы компилируются, в конечном счете вся разметка становится бинарным кодом с отдельными строковыми значениями. Плюс такого подхода в компактности и простоте размещения в памяти. Все кешируется во временном каталоге, а сайт висит в памяти, в качестве отдельного приложения.

С PHP история другая. Природа PHP основана на парсинге текста. Как итог, постоянная работа с файловой системой, от которой частично спасает кеширование. Так или иначе, при более менее схожем функциональном объеме, такой сайт будет съедать заметно больше памяти и чаще обращаться к диску, чем сайт под управлением .NET. Именно поэтому сайты на PHP вылетали из оперативной памяти в своп, отсюда и жуткие тормоза в среднем по 2-5 на генерацию ответа — доступ к жесткому диску дорогой.


Microsoft SEO Toolkit

апреля 21, 2010 12:05 by terR0Q

До кучи к другим средствам повышения качества сайта, свежая тулза от MS: SEO Toolkit.


IIS: all your ASP.NET belong to us

апреля 16, 2010 18:51 by terR0Q

Парой весьма простых действий довёл IIS до того, что он перестал узнавать свою родню — ASP.NET. Любые попытки восстановить работу впустую, перерегистрация при помощи aspnet_regiis.exe -i приводила к ошибке инициализации приложения. Рецепт лечения оказался заходом с совершенно другого края: в реесте по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysPlant меняем настройку Start в значение 4, рестартим и успешно стартуем aspnet_regiis.exe -i.


Tahoma

апреля 14, 2010 17:41 by terR0Q

Ненавижу Тахому в русском исполнении и вообще для блоков текста. Для мелких отдельных и простых надписей годится. Для всего остального — нет. Тем не менее, в веб-дизайне встречается слишком часто. Английский вариант несколько лучше, да и читать можно.


Рендер пипедов

апреля 3, 2010 20:48 by terR0Q

На работе Ниноко делает порой штуки, достойные Девида Блейна (в лучшем смысле). 3D рендеринг в любом виде лично меня завораживает, когда речь идёт о том «как это сделано». А когда это ещё и выглядит здорово... В ролике идет расчёт сторон параллелепипеда по внутренней диагонали с дальнейшим его построением и маркировкой всех рёбер.


Ластик для Silverlight

апреля 1, 2010 17:10 by terR0Q

В Сильверлайте много хорошего, но я наткнулся на вонючую кучку посреди большого поля.

Разработчики предусмотрели рисование «чернилами» очень удобное с точки организации процесса. Но вот первая же проблема в простом ластике. Средства адекватного расчёта ластика там просто не предусмотрены. Стёрка делается костыльным способом: начинаем рисование, находим пересечение «пера» с существующими линиями. Затем для отображения результата работы ластиком (и вот самый ужас) удаляем все старые линии, заменяя их двумя новыми — они должны символизировать разрыв.

Далее. Все линии представлены набором штрихов (класс StrokeCollection). Каждый штрих — объект класса Stroke. И каждый из этих объектов состоит из набора точек (коллекция объектов класса StylusPoint). Казалось бы, при таком раскладе можно было бы обеспечить простое удаление фрагментов линий. Но почему-то таких средств нет.

И ещё одна проблема, отчасти связанная с обилием точек-объектов. Сериализация таких графических объектов для пересылки приводит к получению большого трафика при отправке вроде бы простой графики. На стороне веб-клиента Silverlight при этом доступен только XML-сериализатор, для которого ещё нужно создавать собственные обёртки (все обычные классы не сериализуемы). Бинарный сериализатор недоступен. Так что, похоже, мне придётся использовать исходники готового, или свое придумывать. И даже если загнать всё в бинарное представление, надо всё таки как-то сжать результат: просто так объёмы никуда не денутся. Как более простой вариант, задействовать сжатие XML. Но ещё придется поискать нечто, подходящее для сетевого сильверлайта.


ASP.NET cookie

марта 18, 2010 14:29 by terR0Q

Небольшая деталь относительно ASP.NET авторизации.

При использовании ASP.NET аутентификации если тикет авторизации определяется явно (случай «запомнить меня»), а не автоматом, то не стоит использовать метод FormsAuthentication.RedirectFromLoginPage(...): он переопределит cookie. Для такого случая надо делать явный редирект, в качестве урла используя возвратный:

Response.Redirect( FormsAuthentication.GetRedirectUrl( login, isRemember ), true );

Мелочь, а лишние 10 минут тратится.


WebSite Pulse

марта 15, 2010 23:50 by terR0Q

В Сети полно разных решений для отслеживания доступности сайтов.

Но для проформы (поупражнялся с WPF и многопоточностью) за несколько часов сделал свою утилиту. Что умеет:

  1. Отслеживает доступность списка сайтов (периодичность настраивается)
  2. Помимо простого факта доступности учитывает максимальный таймаут ответа и размер контента (учитывается только html-разметка, это всё-таки не браузер).
  3. Размер оценивает с погрешностью +/- 10%. Небольшие контентные отклонения не дадут ложного извещения, а вот если сайт «упадёт» или будет чем-то резко «надут», появится репорт. Это момент, наверное, самый спорный, но лично мне фича нужна.
  4. Отправляет извещения по почте о недоступных сайтах, о слишком мелких и слишком больших ответах.
  5. Логирует все «плохие» статусы и сетевые ошибки (спасибо log4net).

Для работы нужен .NET 3.5. Скачать софтину можно по этой ссылке. Протестировал всё, кроме работы через прокси.

Работает, как простая программа, для работы со списком нужно минимум действий (изменение значение и переход на любой другой элемент — изменения автоматом сохраняются). Ошибки ввода в полях не орут и не раздражают, а просто призывно мигают цветом томата. Проверка всех статусов происходит параллельно, так что определяется всё шустро.

Приложение выдаёт себя за Firefox 3.6 при обращении к серверам. User-Agent можно поменять на какой угодно в .config-файле (мне было откровенно лень добавлять настройку, если кто-нибудь попросит — сделаю). Та же история с текстом мэйла.

Если кто-нибудь (косится на ДСпирета) ещё и иконку сделает, будет супер.

Про WPF — впечатление хорошее. Именно таким должен был быть WinForms.


FF Addons, part 3

марта 3, 2010 12:10 by terR0Q

В копилку дополнений к FF:


FF 3 User-Agent

марта 3, 2010 11:35 by terR0Q

Firefox 3.6, подпись user-agent:

Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5

Мутант какой-то.