Не так давно я начал писать о платформе Facebook (см. мои заметки о setFBML и библиотеках Facebook для .NET). Сегодняшняя тема — это fb:editor. Как вы могли заметить, Facebook имеет приятный интерфейс (look and feel), и приложения, разработанные для него, должны его придерживаться. Тэг FBML fb:editor позволяет создавать формы, которые выглядят точно так же, как родные формы самого Facebook, но у него есть одно существенное ограничение: он генерирует свой собственный тэг form, а потому не может быть использован внутри серверной формы ASP.NET. В этой короткой заметке я покажу HTML, генерируемый тэгом fb:editor, и продемонстрирую, как использовать его в приложении ASP.NET.
Оператор ?? в C# 2.0
Появившийся в .NET 2.0 оператор ?? уверенно занимает в моем хит-параде наиболее часто используемых приемов первое место, но при этом довольно редко используется в проектах, которые я разрабатывал в команде. Поэтому довольно часто встречаются в коде конструкции вроде:
{
get { return ViewState["Caption"] != null ? (string) ViewState["Caption"] : ""; }
set { ViewState["Caption"] = value; }
}
Правильное использование кэша в ASP.NET
Часто в приложениях ASP.NET можно встретить код, подобный следующему:
{
string name = ((SomeClass) Cache["SomeData"]).Name;
//.....
}
Опытный программист, даже если он не страдает паранойей, сразу видит возможную проблему — NullReferenceException. Все дело в механизме работы кэша в ASP.NET. В идеальном случае объект, помещенный в кэш, будет храниться там до перезагрузки приложения, но на практике он может быть удален между двумя обращениями: во время сборки мусора, если закончилась память (поскольку кэш использует слабые ссылки WeakReference); другим потоком, когда нужно перегрузить данные.
Соответственно приведенный код будет работать в 99% случаев, но периодически в логах будут появляться ошибки, которые практически невозможно повторить. Вот правильное использование кэша:
if (someClass != null)
{
string name = someClass.Name;
//.....
}
Не теряйте бдительности, они только этого и ждут! (о багах)
Сумасшедший кусок кода: Проверка параметра запроса
Как часто вы падаете под стол, увидев чей-то код? Сегодня я наткнулся на сногсшибательный пример в текущем проекте, и просто не могу удержаться и не выложить его здесь. Итак,
{
string[] keys = Request.QueryString.AllKeys;
foreach (string k in keys)
{
if (k == "memberpagemode" && (string)Request.QueryString.GetValues(k).GetValue(0) == "edit")
{
pSett.ChangeFormViewMode(FormViewMode.Edit);
}
}
}
А как вы ищете в хэше ключ с определенным значением?
Новые версии библиотеки Sphinx Client API 0.3.1 и 0.4.0 r909 для Sphinx 0.9.8 r909
У меня есть хорошие новости: обновился Sphinx Client API и теперь он поддерживает все новые возможности нестабильной ветки Sphinx 0.9.8. Что это означает для вас как разработчика? Какие возможности вы получите, если решите использовать новую версию? В этой статье я расскажу о наиболее значимых улучшениях Sphinx, и покажу, как использовать их с новой версией Sphinx Client API 0.4.0 r909.
Русский
English