1 мая 2011 г.

Заметки о 4sq

Вместо введения

Что такое 4sq я описывать не буду, просто потому, что поэтому написали уже не одну статью, и писать еще одну, было бы просто глупой тратой времени. Кто не знает, что такое Foursquare (сокр. 4sq), то советую прочитать статью, расположенную по адресу http://web.rambler.ru/post/foursquare/ автор, очень хорошо и грамотно описывает сервис.


Меня вынудило написать этот пост состояние сервиса в моем родном городе, его можно назвать катастрофически никаким. И дело даже не в том, что город маленький (всего-то 400 тыс. человек, если не меньше), а в том, как люди используют сервис. Как вносят новые точки, комментарии, но обо всем по порядку.

Внесение новой локации

Если кто не заметил, то список мест доступных в данной местности формируют сами пользователи, т.е. если вносить новые места не будете Вы, и не будут другие люди, то и пользоваться будет реально нечем. И вот тут начинаются проблемы, кажется, что может быть проще – заполнить пару полей и нажать кнопку, чтобы добавить новое место. А вот оказывается есть.


Name. Как нетрудно догадаться это название места, кажется что может быть проще, чем указать название того места в котором Вы сейчас находитесь или собираетесь посетить? Но ведь находятся люди, которые или не понимаю, что это сервис, которым пользуются не они ОДНИ, а еще куча людей. Так зачем тогда писать название типа «Моя работа» или «Супер парикмахерская».


Я, конечно, тоже люблю свою работу, но простите внести место, которое как бы посещать будете только Вы, как то немного странно. И тут смысл не в том, что никто не придет к Вам в гости и не укажет, что он вот тоже тут. Просто для другого человека эта точка называется явно не «Моя работа».


Парикмахерская если она действительно крутая имеет свое нормальное название, ну а если она такая крутая, то в комментариях можно об этом написать, неужели это так сложно?


При именовании название заведения я ставлю на первое место, а тип заведения на второе после запятой. Например «Мишки напились, Бар». Хотя «Бар Мишки напились» будет тоже хорошо и правильно, но проблема в том, что баров может быть очень много и найти нужный будет сложно, представьте список, в котором на первом месте везде Бар …, Бар …, Бар … и т.д. А вот «Мишки напились» найти будет проще.


Address. Вот еще одна из самых больших проблем. Дело в том, что указание одной улицы не совсем правильно. Вы же, когда приглашаете в гости, не говорите: «Приходи ко мне на улицу Ленина», вы говорите «Приходи ко мне по адресу – улица Ленина, дом 12, квартира 36». Так чем адрес какого-то заведения отличается от вашего домашнего адреса? Тем, что тот Ваш, а этот нет? Так давайте может вносить данные правильно?


Бульвар нельзя сокращать до «б-р», но правильно будет «бул.»

Проспект нельзя сокращать до «п-т», правильно будет «пр.»


Чтобы не делать этих досадных ошибок советую прочитать данную статью (http://wiki.openstreetmap.org/wiki/WikiProject_Belarus/Правила_именования_объектов)


Будем считать, что с улицами, бульварами, проспектами и прочим из этого списка мы разобрались, теперь нам необходимо указать номер дома. Как мне кажется, самым логичным будет после названия улицы поставить запятую и ввести номер дома, т.е. «ул. Первомайская, 23» или «бул. Кренкеля, 18».


Cross Street. Если с другой стороны Вашей локации находится другая улица, то укажите её здесь, лишней эта информация точно не будет.


Phone number. Телефон необходимо указывать в нормальном международном формате, я думаю, с развитием мобильных телефонов все привыкли к номерам типа +375295555555 или +375(29)555-5555. Указание номера удобно тем, что можно сразу позвонить и, например, заказать столик, узнать есть ли места, может и не стоит туда идти, так как все занято.


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

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


Итак, Вы заполнили все необходимые данные, нажали кнопку Add. Место добавлено Вы с радостью в нем зачекинились. Казалось бы, что все, процесс добавления закончен, но это не совсем верно. Дело в том, что на карте реальное положение добавленного места может быть указано неверно. Так бывает и очень часто. Что же тут делать? Достаточно просто зайти на сайт http://foursquare.com в списке ваших последних чекинов, найти необходимое место и посмотреть верно ли указано его положение на карте.


Тут же Вы сможете отредактировать информацию о заведении, если до этого она была указана неверно, указать дополнительные категории.

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



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

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


А теперь давайте представим, что информация о данном месте была указана неверно! Например, место на карте было отмечено за 500 метров севернее, была указана улица без номера дома, и название заведения было указано так же неверно. Вот как найти это заведение?

Отзывы, фото …

Для каждого заведения можно оставить комментарий или фото. Опять же это очень важная составляющая сервиса, так как при поиске места, где можно хорошо провести время Вы первым делом будете читать отзывы других пользователей, которые и помогут Вам сделать выбор в пользу того или иного заведения. Мне кажется, что оставить пару строк типа «Кафе неплохое, хорошая обстановка, хорошая и вкусная еда. Цены вполне приемлемые. Твердая 4-ка по 5 бальной шкале.»


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

Заключение

Как видите, сервис построен так, что основную функцию его наполнения делают сами пользователи. И если пользователи не будут относиться к этому подобающим образом, то в конечном итоге он так и останется просто игрушкой, благодаря которой можно сказать «Привет, а я сейчас здесь» и опубликовать все это в twitter или facebook, не более.


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

27 апреля 2011 г.

Disabled html-ссылки (a)

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


Для того, чтобы заблокировать объект в html есть свойство disabled.



<a href="mysite.com" disabled="disabled" />

После использования данного свойства ваша ссылка, да и любой другой объект будут заблокированы. Однака ссылка при этом будет все еще отвечать на событие OnClick. Чтобы этого не произошло необходимо немного JavaScript кода.



<a href="mysite.com" disabled="disabled" onclick="if(this.disabled) return false;" />

После этого больше не должно возникнуть проблем с заблокированными ссылками и кнопками

26 апреля 2011 г.

Lucene.Net и German Umlaute

При создании полнотекстового поиска по сайту главной задачей, конечно же, является качество поиска. Lucene.Net в этом случае очень хорошая библиотека для поиска, быстрота и главное качество поиска у неё отменное. За время работы с данной библиотекой мне пришлось столкнуться только с одно проблемой, а именно с невозможностью поиска немецких умляутов. Дело в том, что для нормального их поиска нужно использовать анализатор немецкого языка, но информация на сайте в большей степени была представлена на английском, поэтому данный способ не очень подходил. Немного порывшись в интернете в поисках хорошего решения данной задачи и ничего не найдя. Было найдено свое решение, быстрое и в то же время как показывает практика действенное.


Я поступил следующим образом. При индексации информации каждый умляут был заменен на его аналог, т.е. ä = a, ü = u. В конечном итоге вся наша информация представлена одним языком, при поиске мы должны так же если введен умляут заменить его на аналог английского языка.


Был написан метод, который использовался как при поиске, так и при индексации информации.



private string ReplaceUmlauteString(string strSearch)
{
return strSearch.Replace('ü', 'u').Replace('ö', 'o').Replace('ä', 'a');
}

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

12 апреля 2011 г.

Вход без права выхода

Только что меня попросили удалить анкету человека из одноклассников. Мне это было не сложно, так что попросив логин и пароль и смело полез на сайт. Авторизовался и по простоте душевной полез в настройки, где по моему разумению должна была быть кнопка или ссылка "Удалить профиль". В настройках сей фишки не оказалось О_о что меня самую малость озадачило. Едиственное, то предлагалось это заблокировать профиль, чтобы он остался на сайте и был доступен только друзьям, что тоже было не совсем правильно.


Пришлось, как это часто бывает в подобных случаях, воспользоваться поисковиком и поискать "Как же удалить эту страницу". Советов было несколько, один из них заключался в обыкновенном удалении всех данных из страницы, удалении друзей, изменении всего чего можно и в обыкновенном забывании пароля. В общем совет хороший, но долгий) И второй способ, это все же воспользоваться удалением, которое есть на Одноклассниках, но которое по какой-то причине скрыто от пользователей. Для второго способа нужно зайти на сайт, и в адресной строке после всего что там понакалякано вставить строку &st.layer.cmd=PopLayerDeleteUserProfile сразу же появится всплывающее окошко, которое и предложит удалить профиль, для чего нужно будет ввести пароль.


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

А у нас землетресений и цунами нету

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

Очень часто за свою жизнь я слышал одну просто гениальную фразу "А у нас разве плохо? Вот ни цунами, ни землетресений, ни новоднений, ни террактов". Короче у нас просто тишь да благодать бля! А так ли все на самом деле? ИЛи мы просто научились себя успокаивать? Типа все хорошо, смотрим БТ.

И вот, пожалуйста, как раз в тот момент, когда страна уже явно входит, вернее, какое входит? Вошла уже и держит свой курс прямо в жопу, то бишь в кризис. КОгда народ озлобился на власти и не хочет им верить, когда люди в панике не знают, что делать. Тогда, когда каждый более менее умный человек начал реально задумываться о том, что же верно и правильно в этой стране? Именно в этот момент происходит взрыв. Люди по стенам, кровь, трупы, раненые. И вот, наши власти, некогда чуть ли не враги народа, превращаются в спасителей, которые не только разберутся со всем, но и накажут всех, отомстят и тому подобное и конечно же они знают кто это сделал. Это злостные иностранные спец-службы на кой-то ляд решили подорвать немного белорусинки, чтоб жизнь медом не казалось. Так вот! Не кажется ли Вам это бредом? Мне? Кажется! Я не вижу ни одной причине по которой кому-то нужно взрывать людей, кому-то внешнему, поправлю себя чуть-чуть.

Соболезную тем людям, которых затронул так или иначе этот взрыв. Будьте сильными и держитесь. А тем, кто это сделал - ЧТОБ ТЫ СДОХ СУКА!

8 апреля 2011 г.

ФСБ РФ vs Skype, Gmail

Последнее время от всего, что происходит в мире мои волосы непременно хотят встать! И самое интересное, что просто от осознавания того бреда, который творится. Я не хочу говорить про свою республику так как в ней я чего-то разумного вообще не вижу, ну вот простите меня, не вижу и все тут. Да у нас есть куча умных людей, но они настолько умные, что понимают: "Лезть куда-то и что-то менять просто глупо! Не поймут и затопчут к чертовой матери!"

Но как показывает время, мы действительно с Россиянами один народ, как ни крути, что одни, что вторые отжигают по полной! Чего только стоит сегодняшняя новость о том, что ФСБ РФ хочет запретить Skype и Gmail. Причина? Они не могут их взломать :) не правда ли мило? Так получается, что сообщения в Gmail и Skype шифруются "иностранными" алгоритмами. Ну уж явно не по советскому ГОСТу подбирались алгоритмы шифрования. И вот потому, нужно оградить их использование, так как эти сервисы грозят государственной безопасности.

Порадовало, что в итоге в РФ решили собрать некую группу, которая до 1 октября должна выработать предложения по использованию алгоритмов криптографии в сетях общего использования. Вот мне интересно: "Как они будут вырабатывать эти самые предложения?" Будут сидеть и дружноо пытаться расшифровать сообщения? Как говорится: "Сломаем - не запретим. не сломаем - запретить нахер."

Если так подумать, то ФСБ должны тогда обратить внимание еще и на Microsoft-овский MSN, Twitter. Что там еще есть? А вообще мое предложение. это завести всем спец. службам аккаунты в 4SQ, добавить всех террористов в друзья и тогдап все будет оооочень хорошо. Сразу видно кто, где и что делает! Например Джамшут: "Прилетел в Домодедово, скорей бы пройти осмотр, опаздываю на фейерверк на ст.м. Стадион Ильича." Неправда ли здорово?

А вообще не нужно сразу говорить о своей беспомощности. Ничего хорошего в запретах сервисов нету! И пользы обществу точно не принесет.

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; }