Dec 23
Здесь, в Scribd, мы используем Git как основную систему контроля версий. Каждый день создается, сливается и удаляется множество веток. Надеюсь, я когда-нибудь опишу наш рабочий процесс с использованием Git, а сегодня попробую рассказать о несколько полезных техниках работы с этим замечательным инструментом.
Подразумевается, что вы знаете, что такое Git, и как с ним работать. Ниже вы найдете несколько интересных трюков, который должны быть вам полезны (как минимум, они были полезны мне).
Читать дальше »
Dec 22
Я уже очень давно ничего не писал в блог. Теперь сложновато начать, потому я решил написать серию коротких постов с подсказками и хитростями под названием “Memo“. Сегодня я хочу поговорить о двух библиотеках (gems) Ruby, которые использую в каждом проекте на Ruby on Rails: mysql и memcached. Каждый раз, когда пытаюсь установить или обновить эти библиотеки под Mac OS X, я получаю следующую ошибку:
1 2 3
| Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension. |
После чего начинаю лихорадочно гуглить на тему как же мне все-таки их установить. Настало время упростить себе жизнь и описать процесс установки здесь.
Читать дальше »
Jan 16
Не так давно я начал писать о платформе Facebook (см. мои заметки о setFBML и библиотеках Facebook для .NET). Сегодняшняя тема — это fb:editor. Как вы могли заметить, Facebook имеет приятный интерфейс (look and feel), и приложения, разработанные для него, должны его придерживаться. Тэг FBML fb:editor позволяет создавать формы, которые выглядят точно так же, как родные формы самого Facebook, но у него есть одно существенное ограничение: он генерирует свой собственный тэг form, а потому не может быть использован внутри серверной формы ASP.NET. В этой короткой заметке я покажу HTML, генерируемый тэгом fb:editor, и продемонстрирую, как использовать его в приложении ASP.NET.
Читать дальше »
Jan 14
2008 21:18
(
ASP.NET) ·

(7,492 views)
Появившийся в .NET 2.0 оператор ?? уверенно занимает в моем хит-параде наиболее часто используемых приемов первое место, но при этом довольно редко используется в проектах, которые я разрабатывал в команде. Поэтому довольно часто встречаются в коде конструкции вроде:
1 2 3 4 5
| public string Caption
{
get { return ViewState["Caption"] != null ? (string) ViewState["Caption"] : ""; }
set { ViewState["Caption"] = value; }
} |
Читать дальше »
Jan 12
2008 21:22
(
ASP.NET) ·

(6,371 views)
Часто в приложениях ASP.NET можно встретить код, подобный следующему:
1 2 3 4 5
| if (Cache["SomeData"] != null)
{
string name = ((SomeClass) Cache["SomeData"]).Name;
//.....
} |
Опытный программист, даже если он не страдает паранойей, сразу видит возможную проблему — NullReferenceException. Все дело в механизме работы кэша в ASP.NET. В идеальном случае объект, помещенный в кэш, будет храниться там до перезагрузки приложения, но на практике он может быть удален между двумя обращениями: во время сборки мусора, если закончилась память (поскольку кэш использует слабые ссылки WeakReference); другим потоком, когда нужно перегрузить данные.
Соответственно приведенный код будет работать в 99% случаев, но периодически в логах будут появляться ошибки, которые практически невозможно повторить. Вот правильное использование кэша:
1 2 3 4 5 6
| SomeClass someClass = Cache["SomeData"] as SomeClass;
if (someClass != null)
{
string name = someClass.Name;
//.....
} |
Не теряйте бдительности, они только этого и ждут! (о багах)