среда, 29 октября 2008 г.

Очередной лохотрон: обманщики на Bez-Obid.Ru ( Zhlobam.net)

Для заработка в интернет появился очередной сервис. Сначала размещался на Zhlobam.net а потом плано перешел на Bez-Obid.Ru. Суть в том, что одни люди размещают на этом сайте жалобы, а люди, кототрые хотят заработать берут специально подготовленные ссылки на жалобы и постят и где-попало: на сайтах, форума, блогах. За каждый уникальны клик (Uniq) сайт начисляет 0.5 цента на счет партнера. Минимальная сумма к выводу $20.
Я тоже (в моем то возрасте!) повелся на эту фигню. Решил заработать двадцатку на пиво. Сначала вроде бы все шло неплохо были клики и около 80% из них были "уники". Но постепенно, в течении месяца процент "уников" уменьшался и дошло вообше до смешного. Смотрите скриншот:



В общем, такими темпами $20, которые можно вывести себе на кошелек, соберутся только к старости.
Люди! Не ведитесь на этот лохотрон: Bez-Obid.Ru обманывают жестко и нагло.
Bez-Obid.Ru - кидалово очередное.

Жаль потраченного времени. Ну что-ж будет наука на будущее. Надеюсь мой опыт Вам поможет :)

Как динамически сменить запрос для ListView привязанного к LinqDataSource?

Для того чтобы динамически сменить запрос для ListView привязанному к LinqDataSource нужно обработать событие OnSelecting у LinqDataSource. 

Например вот так:


protected void dsMates_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
if (Request.Params["classMateId"] != null)
{
int mateId;
if (int.TryParse(Request.Params["classMateId"], out mateId))
{
using (DataClassesPrivateMsgDataContext db = new DataClassesPrivateMsgDataContext())
{
e.Result = db.Classmates.Where(mate => mate.Id == mateId).FirstOrDefault();
}
}
}
}

Посмотреть как это работает можно здесь: сайт а-класса

вторник, 28 октября 2008 г.

Локализанция CalendarExtender в DotNetNuke

Классная все-таки штука AjaxControlToolkit: щелкнул 2 раза, и у тебя уже календарь на веб-страничке. Кинул себе календарь на форму в своем новом dotnetnuke модуле, немного насторил свойства и зашибись работает. Правда почему-то название месяцев по английски пишет, хотя должен настройки брать из браузера.
Оказалось в DNN как всегда свои заморочки, особенно с AJAX-ом. Чтобы исправить это пишем в модуле так:


protected void Page_Init(object sender, EventArgs e)
{
if (DotNetNuke.Framework.AJAX.IsInstalled())
{
DotNetNuke.Framework.AJAX.RegisterScriptManager();
DotNetNuke.Framework.AJAX.SetScriptManagerProperty(Page, "EnableScriptGlobalization", new object[] { true });
DotNetNuke.Framework.AJAX.SetScriptManagerProperty(Page, "EnableScriptLocalization", new object[] { true });
}
}


И, вуаля: названия дней недели и месяцев в CalendarExtender отображаются по-русски.

вторник, 21 октября 2008 г.

Проблема с ModalPopupExtender в DotNetNuke (DNN) : ModalPopupExtender в Internet Explorer отображается не по центру экрана, а слева вверху

Захотелось мне сделать на AJAX красивые Popup-окошки в одном из разрабатываемых сайтов, чтобы пользователя чувствовали себя как-будто они не на веб-старнице, а в настольном приложении. Сказано - сделано. Используя ModalPopupExtender это проще простого.
Как обычно тестирую в 3-х браузерах: Opera, Internet Explorer и FireFox.
В "Опере" и FireFox-е все работет хорошо, а вот в Internet Explorer-е ModalPopupExtender отображает попап-окно не по центру окна браузера, а слева вверху, причем центр этого окна находится в точке с коодинатами x=0, y=0.

Такое положение дел меня явно не устраивало. Начал поиски причины и решения. Сайт я начал разрабатывать на DNN версии 4.8.4, но потом вышла версия 4.9 и модули (как и сам dotnetnuke) также тестировались на новой версии. Так вот я заметил, что на DNN 4.8.4 вышеописанная проблема наблюдалась, а на DNN 4.9 уже нет!

Оказалось, что причина была в том, что сайт на DNN версии 4.8.4 рендерится браузерами в Quirks mode, благодаря вот этому:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

А вот если посмотреть на страницы сгенерированную DNN 4.9 видим:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

И теперь уже браузеры рендерят станицы в Standarts Compilance Mode (Режим соответствия стандартам). Это радует. Наконец-то и dotnetnuke начинает пытаться соответствовать стандартам. Насколько было бы легче программистам, если бы все последовали их примеру:)

Итак, как говорят в Голливуде : Problem solved. Хочу еще заметить: остерегайтесь установки скинов на свой сайт, так как после этого он, возможно, будет работать не совсе так как он работал до этого:)

Напомню, что прежде, чем использовать у себя в модуле ModalPopupExtender из набора AjaxControlToolkit, необходимо добавить следующую строку в .ascx файле Вашего модуля.


<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>


Кроме того, чтобы AJAX работал в Вашем модуле, нужно в DotNetNuke-освском сайте установить галочку "Supports Partial Rendering?" для Ваших user-контролов, в которых используется AJAX.

Форматтер C# JavaScript HTML ASP.NET кода для вашего блога

Так как мне часто приходится выкладывать на своем блоге код на C#, javaScript, HTML, то хотелось, чтобы он был красиво и главное удобно для чтения оформлен. Поэтому я пользуюсь для этого бесплатным онлайн сервисом, который находится здесь:

www.manoli.net/csharpformat/format.aspx

Рекомендую всем!

вторник, 14 октября 2008 г.

каталог сайтов, на которых можно разместить ссылку на свой блог

Полезная  подборка: "41 место, куда можете засунуть свой блог"
лежит здесь: www.ithorn.ru/2007/10/27/promote-your-rss/

пятница, 10 октября 2008 г.

анимированные gif - файлы загрузки для AJAX

Есть классниый сайт на котором в онлайне можно получить анимированную gif-ку для AJAX лоадера. Есть много шаблонов, можно выбрать цвета, размер. Сайт: ajaxload.info. Я на своем сайте одноклассников 11-А класса уже использую несколько таких.

Для пользователей "Оперы" с сайта "Оперы" можно скачать виджет "Animated loading image generator!", и тогда можно будет генерить gif-ку не выходя со своего любимого сайта одноклассников 11-А класса :)

среда, 8 октября 2008 г.

Как поставить счетчик liveinternet.ru в блоге

Решил поставить себе в блог счетчик посещений liveinternet.ru. Зарегистрировался, получил код. Добавил в блог гаджет text/html,  впихнул туда код счетчика. Смотрю на блог, а он выдает ошибки в javascript. Открываю снова гаджет, и вижу что код счетчика автоматически был изменен  (заменнены кое какие кавычки) и естественно не работает.
Ладно,  прописываю код уже в шаблоне в  самом html. При попытке сохранить шаблон выскакивает ошибка:

Не удалось проанализировать ваш шаблон, так как он неправильно сформирован. Убедитесь, что все элементы XML правильно закрыты.
Сообщение об ошибке в XML: Open quote is expected for attribute "{1}"


Понятно,  liveinternet до сих пор с xml-ем не дружит. И не только с xml, а и вообще со стандартами Веба. А на дворе то 21-й век.

Черт с ним, с этим "живым интернетом". Пойдем к "Гуглу", любителю стандартов. Здесь:  www.google.com/analytics регистрируюсь, получаю код, копирую его в шаблон блога. И все работает. 

Возникает вопрос: почему liveinternet.ru до сих пор не переделал код своего счетчика? Ведь такого рода компании должны быть впереди всех остальных?

P.S. На одном блогспотовском блоге заметил стоЯщий и работающий счетчик liveinternet. То есть это возможно. Посмотрел HTML код и вижу, что код работающего счетчина разделен на несколько строк, а я в своих пробах установки всегда пробовал всунуть "вытянутый в одну строку". Что ж попытка - непытка: беру код многострочный и пихаю в гаджет text/html. И... работает. В чем фишка - не понял, и нет времени разбираться. Главное, что работает:)

В сайте сделанном на Dotnetnuke постоянно пересоздается домен приложения: "The AppDomain shut down because of the hosting environment."

Создал сайт с использованием CMS DotNetNuke. На моей девелоперской машине он работал очень даже шустро. После размещения на американском хостинге заметил, что страницы, особенно первая, открываются очень долго.  Смотрю журнал сайта и вижу, что домен приложения (appDomain) пересоздается несколько раз в минуту. Идут последовательные записи:

Application Shutting Down.  Shutdown Details: The AppDomain shut down because of the hosting environment.

Application Started.

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

Так как я не не делал никаких изменений в файлах (в т.ч. конфигурационнных) веб-приложения, а также во вложенных папках проекта, возник вопрос: почему и как с этим бороться?

Имея опыт работы с хостерами знаю, что бывает на хостинге,  в борьбе за ресурсы,  выставяют в конфигах время жизни сессии очень маленькое (sessionState.Timeout). Пишу приложение и проверяю: да, действительно сессия живет не более 10-ти секунд. Пишу письмо в саппорт с просьбой увеличить до 30-ти минут. Сделали.

Теперь вижу, что appDomain уже не умирает так часто, как раньше. Теперь это повторяется раз в 15-20 минут. Так как сайт еще никто не посещает и зная, что домен приложения может уничтожаться при неактивности, пишу windows-службу, которая с интервалом 5 минут делает HTTP GET запрос к сайту . Результат: AppDomain практически не пересоздается. Проблема решена.