10 марта 2011 г.

ASP.NET поисковый движок

На днях встала передо мной задача: "Найти и установить на уже готовый сайт поиск". Сайт скажу сразу достаточно большой, не одна таблица в базе, огромное количество данных. Поиск на нем есть, но его даже тормознутым нельзя назвать, он вообще никакой. Результатов поиска можно ожидать не только минут 5, но и пол часа. Есть ли пользователи, которые будут столько ждать? Не думаю, что есть такие! Потому начался долгий и упорный поиск движка. Мысль реализовать поисковый механизма самим отпала сразу, так как для реализации, чего-то нормального потребуется не один день и не факт, что с нашим количеством данных, это сразу будет работать быстро и верно.


Сказать честно бесплатных движков под .NET я почти не нашел. Есть решения платные, которые позволяют искать по БД, файловой системе и еще у черта на куличках. Но все это не подходило по одной причине - слишком дорого! Порывшись примерно день я все же натолкнулся на то, что хотел. Lucene.NET поисковый движок портированный с Java, бесплатный и, насколько можно судить по куче отзывов, достаточно мощный. Единственный недостаток, это малое количество документации и примеров. Хотя книги все же есть, на английском, но есть. Сейчас я занимаюсь тем, что интегрирую данную библиотеку с сайтом и могу сказать, что все проходит достаточно гладко и поиск работает отменно.


PS. В ближайшее время постараюсь найти время и написать пару статей по использованию данного движка.

15 февраля 2011 г.

Русский twitter

Вроде как где-то до Нового года пробежалась информация, что в twitter хотят забабахать русский язык. Эту новость лично я воспринял просто и не сильно обратил на это внимание.


Мне русский язык там не надо, все что мне надо я знаю. И вообще я на сам сайт даже не залажу и все делаю, через свой клиент Tween который вообще японский и только с выходом в релиз прошлой версии у меня английский в нем нормальный стал, так что какой уж тут русский.


Как-то непонятна обеспокоенность некоторой части twitter-сообщества, которые против русского языка. Одна из причин, которых мне сегодня привели, это то, что сразу будет наплыв мальчиков-девочек 13-16 лет, плакающих о своей жестокой судьбе и жизни. Но господа и дамы я не думаю, что таким мальчикам и девочкам будете интересны Вы, да и это как-то по лучше бездушных ботов, от отжигов, которых иногда плакать от смеха хочется. Да и вообще, не фоловишь их и все. Не видишь даже это огромное скопления "Жизнь говно, солнце гребанный фонарь".


Введение русского языка, как мне кажется, хороший шаг. Так как действительно привлечет к хорошему сервису много людей. Для компании это деньги, а для twitter-сообщества, это расширение. Ведь не только девочки и мальчики лет 13-16 полезут=) Вообще я только за переводы нормальных интернет сервисов на русский язык, это их популяризирует для обычных русских людей.

26 января 2011 г.

Загадочный DataGrid

Представьте ситуацию, когда у Вас страница, на которой ничего толком-то и нету грузится 15 секунд. Что делать? Оптимизировать конечно!


Сначала я проверил как быстро выполняются запросы к БД, оказалось очень быстро, просто мгновенно. Далее тестам подверглись некоторые куски кода, которые тоже показали хорошие результаты. Пришлось включить трассировку для страницы, увидеть и ужаснуться. Render страницы порядка 14-16 секунд. Как Вам?


Идем дальше и выясняем, что рендерится так долго исключительно DataGrid в который мы передаем порядка 25 записей. Но что оказалось самым удивительным, это тот факт, что отрисовка контролов LinkButton и ImageButton, как раз и давала нам наши тормоза. Потратив кучу времени на поиски хоть чего-то по этой проблеме в Интернете, я ничего не нашел. А проблема была решена простым переименованием контролов. Никаких скриптов на данные контролы не накручено, ничто с ними не работает. Вот так вот! Если получится докопаться до истины, то чуть позже напишу, из-за чего так получилось?

1 декабря 2010 г.

Google Chrome: Отображение полос прокрутки

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

Страница сайта вызывалась в отдельном окне с обязательной полосой прокрутки слева. Для того, чтобы полоса прокрутки всегда была видна был написан вот такой CSS стиль.

div.main-window {
width:250px;
height: 200px;
overflow-y: scroll;
overflow:auto;
overflow: -moz-scrollbars-vertical;
position:absolute
}

По идее все должно работать в этом стиле есть элементы которые должны воздействовать как на все браузеры, так и на отдельные, такие как Chrome и Safari. Но не все оказалось так просто, Chrome ни в какую не хочет отображать полосу прокрутки, пока содержимое окна нормально в него влазит. Решение оказалось достаточно простое. После приведенного выше стиля, нужно добавить еще один, как показано ниже.

html div.main-window { overflow-y: scroll; }

10 ноября 2010 г.

Валидация с использованием JQuery и Web-сервисов ASP.NET

Валидация данных одна из самых больших проблем, каждого приложения. Записать данные нужно корректно, от этого зависит как будет работать ваше приложение. И часто с проверкой на корректность данных и происходит много проблем, так как часто нам нужно не только проверить, чтобы данные были, но и так же проверить, чтобы они имели необходимый нам формат.
Для проверки введенных пользователем данных в ASP.NET приложениях нам помогают контролы находящиеся в группе Validation в панели Toolbox в Visual Studio, но часто бывает, что мы их не используем или их возможностей не хватает для необходимой нам проверки, тогда приходится или искать контролы сторонних производителей, которые чаще всего стоят денег или изобретать что-то самому. Чем мы сегодня и займемся.

У нас есть список городов, который хранится в базе данных в таблице Towns.
Напишем web-сервис, который будет проверять, есть ли город в таблице.

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1), ScriptService, WebService(Namespace = "http://microsoft.com/webservices/")]
public class ValidationService : WebService
{
[WebMethod]
public bool VerifyTown(string inputTown)
{
using(dbDataContext db = new dbDataContext)
{
Town town = db.Towns.Where(t=>t.TownName == inputTown).FirstOrDefault();
return town != null ? true : false;
}
}
}

Как видно, это обыкновенный web-сервис. Едиственное, что он помечен атрибутом ScriptService, который говорит, что к данному веб сервису можно обращаться используя JavaScript или другие скриптовые языки.

Зарегистрируем наш web-сервис на странице и разместим необходимые нам элементы управления.
В txtTown вводится название города. lblErrorTown показывает сообщение об ошибке, если город введен неверно.

< script language="javascript" src="js/jquery.js" type="text/javascript" />










А вот и сам JQuery скрипт проверки.




Вот собственно и все. Единственный недостаток данного примера, что он не учитывает свойство ValidationGroup, но при желании его можно усовершенствовать и и на работу со своим ValidationGroup. Так же не будет лишним добавить спроверки при сабмите формы.

4 ноября 2010 г.

Полосы прокрутки RadScheduler в IE8

По воле случая пришлось на сайте использовать контрол RadScheduler от Telerik. Полностью настроив контрол обнаружил оин нехороший баг. При использовании браузера Internet Explorer в области календаря появляются полосы прокрутки, тогда как в других браузерах все было хорошо. Установка свойства OverflowBehavior в "Expand", так же результатов не дало.
Оказалось, что сама таблица календаря содержиться вот в такм блоке DIV

< div class="rsContentScrollArea" style="overflow:auto;position:relative;">

Ошибка кроется в overflow:auto. Данный CSS-стиль и создавал наши полосы прокрутки.
Исправить это можно обыкновенным JQuery, как показано ниже.



Всю основную работу делает функция updateMonthView.
Она вызывается сразу при загрузке страницы и после каждого AJAX-события.

27 августа 2010 г.

Скорость и дешевая разработка ПО

Часто можно увидеть на фрилансе да и в обычных объявлениях очень низкие цены на разработку ПО, сайтов и такие же короткие сроки этой самой разработки. Так как в наше время каждый хочет сэкономить на чем-то, то конечно заказчик делает ставку на низкую цену и короткий срок разработки. Но оправданно ли это?


Остается понять, как же разработчик может снизить цену?


Например использование неких уже готовых решений. Для сайтов использование уже написанных CMS, при этом дизайн к сайту тоже легко можно купить, благо студий занимающихся разработкой дизайна для сайтов очень много, есть больший сайты на которых дизайн можно купить за 60-100$ с уже готовой версткой даже под Вашу CMS, что несомненно сокращает время разработки. Разработчики клиентских приложений так же могут использовать некие шаблоны или готовые решения для основных необходимых возможностей.


Казалось бы, все просто! Есть шаблон, подстроил его под необходимые требования конкретного проекта и все работает. Все довольны. Заказчик получил продукт заплатив мало, разработчик быстро выполнил работу, получил деньги и давай работать над следующим проектом.


Но не все так просто как кажется. Чаще всего разработчки при быстрой разработке не выходят за рамки конкретного шаблона, потому не все требования заказчика могут быть выполнены. И дело даже не в том, что их невозможно выполнить, а дело в том, что для точного выполнения этой работы необходимо время, которого нету. Разработчкику не хочется выполнять работу свыше того, что ему заплатили, потому на некоторый функционал приложения находится некое обходное решение, что не совсем верно.


Возьмем стандартную ситуацию. На каждом сайте есть поиск, который потмогает в поиске информации по данному сайту. Это очень удобно, если сайт большой, так как экономит время. Но почему тогда большая часть пользователей ищет информацию на конкретном сайте с помощью вот такой строки введенной в Google или другой поисковик


Скорость и дешевая разработка ПО site:maiseyeu-ihor.blogspot.com


Мы пользуемся внешними поисковыми системами заместо того, чтобы просто использовать то, что есть на сайте. Это связано не только с тем, что большие поисковики лучше. Часто это связано с тем, что контент на сайте просто не индексируется внутренней поисковой системой потому что для данного контента просто не было написано модуля, который бы правильно индексировал её. Тут все просто. Заказчик видит всегда то, что лежит на поверхности, но не видит того, что внутри, он видит сайт, но не знает как он работает и не может знать верно ли работет индексация информации на сайте? Она может и не работать совсем, тогда строка "ПОИСК" просто выполняет роль некого элемента дизайна, не более. И опять же разработчика мы не можем винить в этом. Поиск это дополнительная работа и дополнительное время. Он просто отработал свои деньги, а за просто так работать никто не будет. Все люди и все хоятят кушать.


Это мои выводы по поводу скоростей и дешевой оплаты труда. Я думаю тут можно привести еще не один довод как в одну сторону так и в другую.

1 августа 2010 г.

Спешка в разработке ПО. Оправданный шаг?

Я думаю, почти каждый разработчик ПО работая в огромной компании, маленькой фирме или просто работая сам на себя сталкивался с ситуацией, когда заказчику вот срочно нужен результат. Ничего не готово идет процесс проектирования, есть куча рисунков классов их связи между собой, но больше ничего. И ЭТО нельзя показать! Заказчик не поймет, что ведется работа, ему нужен результат, а не схемки и графики, а не написанные библиотеки в которых ютиться логика всего того, что он хотел. Ему нужно видеть, для него есть только то, что он видит и ничего больше. И вот как с этим бороться?


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


Кто-то сказал "Торопись неспеша" и он был прав. Всегда нужно стремиться все сделать быстро, но при этом не потеряв качество. Потому лучше продумав и правильно спроектировав приложение, написать его код как можно более качественно, протестировав каждый метод, что может уменьшить в последствии количество запросов в службу технической поддержки по поводу ошибок в работе.


Осталось понять, как это все объяснить заказчику?

15 июля 2010 г.

mojoPortal - Администрирование

Добавил на сайт пару страниц с описанием администрирования CMS mojoPortal. В данный момент туда вошли статьи:


20 июня 2010 г.

mojoPortal 2.3.4.5

Что нового?
  • Новый модуль Bing карты
  • Новые возможности поиска. Теперь для поиска по сайт возможно использовать не только встроенный поис, но и поиск с помощью Google или Bing
  • Был обновлен до последней версии AjaxControlToolkit
  • Обновлен TinyMCE.3.6 до 3.3.7
  • Обновлен CKeditor 3.3 до 3.3.1

Полная статья http://mojoportal.ru/mojoportal-2345.aspx