
В один прекрасный момент (позавчера вечером)
я и
higher, уставшие от монотонных проектов, решили отвлечься от дел насущных и заняться чем-нибудь интересным или новым. «Стартапом!», смеясь сказали мы в один голос. А чем же еще сейчас занимаются все кому не лень? :-) Но так как основная работа при этом никуда не денется, было решено выделить на проект не более чем 24 часа. Если бы мы не уложились — этой статьи бы не было.
В итоге получился
ЧатВдвоем.
Как это было?
Так как нашей целью не было создать уникальный продукт, а лишь проверить свои силы и размять пальцы, мы, не мудрствуя лукаво, пробежались по последним статьям дорогого Хабра и посмотрели на последние тренды в стартаперском движении. Выбрав идею попригляднее, запустили в дальнее странствие стрелки хронометров и открыли свои IDE. Выбор пал на
omegle, кои клоны уже
были здесь анонсированы.
Напомню, что идея сервиса заключается в том, что вы общаетесь со случайно выбранным человеком, ничего о нем не зная и полностью анонимно. Речь идет о присущем человеку «синдрому попутчика», когда он может обсуждать любые темы со своим попутчиком, зная что больше никогда его не увидит. Хотя, в случае заинтересованности, вам никто не мешает обменяться координатами.
Так как я занимаюсь серверным проектированием и программированием, а higher html-версткой и игрой на фортепиано, пришлось взять себе в нагрузку по новой области деятельности (мне клиентсайд, а higher'у дизайн). Мы не делали прототип, не писали ТЗ, не копались в вариантах решений. Оговаривая дальнейшую работу и показывая результаты предыдущей, мы пересекались в jabber'е каждые 5-6 часов. Наконец, спустя 23 с половиной часа непрерывной работы, результат была выгружен на хостинг и проведенные тесты показали удовлетворительный результат.
С момента появления идеи до окончательной реализации прошло 24 часа.
Как эта штука работает
Общение с сервером происходит при помощи довольно популярной техники
длинных опросов. Одной из целей нашего действа, было на практике опробовать некоторые новые, но прекрасные инструменты. Так для висящих запросов используется
dklab_multiplexor, его
анонс был на Хабре всего четыре дня назад. На бекенде в качестве нереляционной БД и системы очередей используется
Redis, относительно новый продукт, но это уже третий проект, где я его с успехом использую.
dklab_multiplexor на моей Ubuntu завелся с пол-пинка, а вот на freebsd'шном сервере пляски с бубном продолжались в общей сложности около восьми часов. Это не означает что все это время я смотрел на консоль, это суммарное время выполнения всех процессов на сервере с редкими моими вмешательствами. Основная проблема заключалась в том, что на Ubuntu стоял perl v5.8.8 а на сервере v5.8.9. Так и не заставив работать утилиту, пришлось выполнить downgrade перла, после чего проблема исчерпалась сама собой.
На текущий момент жива лишь делема с браузером Opera младше 10 версии. Дело в том, что он не генерирует событий onunload или onbeforeunload, а посему, если ваш собеседник ушел по-английски, нажав на крестик в браузере, то вы не узнаете об этом и будете полагать, что он все еще остается на связи. Но, так или иначе, мы решим эту проблему.
Вообще, если к теме появится интерес, то я опишу отдельным топиком как происходит полная работа сервиса: логика очередей, решение неоднозначностей (как помогают атомарные операции), борьба с отказами от чата на всех этапах и т.п.
Что дальше
За недолгий период работы родилось множество идей по тому как можно существенно расширить функционал сервиса,
не убивая его главной идеи. Если продукт окажется хоть чуть востребованным, то нам будет интересно поработать над его функциональным обогащением :-)
Хочется понять на хабраудитории сколько может выдержать multiplexor (и проксирующий его nginx, а так же мой сервер).
Хочется получить фидбек и описания ошибок от искушенных пользователей.
И, наконец, хочется поделиться чувством глубокого удовлетворения от качественно выполненной работы, зажатой во временные рамки.
ЧатВдвоем
Антон Исайкин, Дмитрий Папуца,
специально для проекта Хабрахабр :-)
комментарии (181)
привет
Я
привет
Я
ты бот?)
Некто
да
Я
**ять, я так и знал)
я хочу понаблюдать чат бота с ботом
«виагра!»
«сиськи джей ло!»
«виагра!»
«сиськи джей ло!»
а то в данном случае даже смысл предложения немного меняется
после «Поговори со мной.ру» и «Разговор с незнакомцем» даже как-то и не смешно.
p.s. v673будет в шоке! :)
я так понял, лонг_полл рулит в данном случае во весь рост :)
чем прекрасен редис?
Смотрите его апи code.google.com/p/redis/wiki/CommandReference
Еще параметр — ник человекера с кем общаться (например — автор сайта, или пользователь на чьей странице стоит этот сервис.) Нет параметра — по рандому. Тут, правда, возникает вопрос нескольких окон,…
При входе — какая-нить смешная капча (с Вашим дизайнером — уверен, что-нить оригинальное получится придумать). рекламку приткнуть (адВордс по передаваемым сообщениям *evil*) чтобы не скучно вам было.
дай инвайт
а то выебу
:)
Например по такому сценарию:
Сделать бота, умного и эрудированного :)
И случайным образом вводить его в разговор.
И кнопку. типа «Бот попался!»
Кто угадал — тому с полки пирожок.
попадаются свободные реализации sourceforge.net/projects/programe/files/
Из пожеланий (возникли в результате пробного запуска с товарищем из Омска):
1. Сделать мигающую иконку, чтобы было видно поступление новых сообщений
2. Отключился ли собеседник, не понятно.
Спасибо за сервис еще раз!
Я хабр?
Некто Хабраэффект?
Я )
Некто :)
Плюсанул в карму)
По тестах Redis отлично работает, а могли поделиться как все работает на практике в ваших проектах? Насколько стабильно? Как скорость на практике? Бывают ли какие-то незапланированные проблемы с ней?
Какая ширина канала к серверу?
Выяснили с анонимным собеседником MirKiLL, привет ему ;)
А есть такое же, но с реализацией как на google wave / etherpad.com чтобы сразу видно было что печатает?
Можно сделать дизайн и для полосы прокрутки!
Строки можно раскрасить, чтоб было просто понять где что.
К сообщениям можно добавить номер, чтоб было понятно к чему обращаемся.
Можно сделать мультичатность (спросите — я попробую ответить что имел ввиду).
Можно сделать статистику на самые частые слова, самые длинные разговоры.
Можно сделать умного бота, который на стандартные фразы берет из общей базы логов фразу и кидает ее тебе. Можно сделать это как подсказку!
Также можно сделать страничку встреч — например кто то пишет кусочки фраз из разговора с запросом найтись того, с кем он общался.
Также можно прикрутить всякие анализаторы (например жмакаешь кнопочку и тебе покаызывается вероятность того, что собеседник М/Ж или например его возраст и т.п.).
И сделать возможным общение чисто картинками!
И тогда кнопочка «сохранить» лог должна перекочевать в «сохранить лог, на память:)»
Некто Привет Рома
Я юрик?
Я во блин! 0_о
Некто Вот прикол
Некто И хабра эффект нам непомешал
Я ага
ps. как понять, есть ли у меня инвайт? О_о
привет
Некто
Здравствуте! Я провожу эксперемент с целью узнать как часто здесь можно повстречать человека, с которым я уже общался. Если Вы уже читали такое же сообщение то напишите, пожалуйста, его id. Это сообщение имеет id 38. Запомните его!
вам удалось скрестить хабр и индивидуалки.ру
осталось только прикрутить blackjack.com
(придумал вместе с Некто)
Симпатичный дизайн, выглядит получше первых двух клонов ;)
Ловите большой и зеленый кармоплюс :)
Пора создавать «Общество Анонимных Говорунов»!
Да уж, чувство стыда должно быть, а не «чувство глубокого удовлетворения» — краденый дизайн и краденую идею выдавать за «качественно выполненную работу». Потрясающе.
А где противоречие? Одну и ту же идею можно реализовать качественно и некачественно. С дизайном — то же самое.
«Хорошие девочки делают всё то же самое, что и плохие девочки, но делают это хорошо» :)
Если повод для гордости только пресловутые 24 часа, то в этом тоже ничего выдающегося — реализовать продуманную кем-то идею гораздо менее сложно, чем сделать все с нуля.
Ну и если «чувство глубокого удовлетворения» только от 24-х часов на реализацию, то сделайте хотя бы полностью или честно скажите — сделали только начинку, а дизайн взяли там-то.
Кстати, предыдущие-то два клона за дизайн как раз и гнобили :)
Тем, что как минимум не хуже оригинала.
А если бы Вы внимательно читали, то «хочется поделиться чувством глубокого удовлетворения от качественно выполненной работы» пишет один человек, а дизайн «разрабатывал» совсем другой. Поэтому тот, кому «хочется поделиться», нисколько не кривит душой — свою работу он делал сам, от начала и до конца (т.к. я сильно сомневаюсь, что исходники серверной части существующих сервисов имеются в широком доступе).
А спроектировать, написать и отладить за сутки подобную программу — кому как, а лично мне, как программисту, совершенно понятно то «чувство глубокого удовлетворения», которое испытывает топикстартер.
Вот два раза начинал чат, два раза первое сообщение «дай инвайт на хабру». Это бот, или у меня такая карма? (не путать с показателем в профиле) :)
мне собеседников мужиков и на работе хватает (
А идея вполне хорошая, так как после стандартного выяснения пол.возраст.вес, работа и т д. придумать самому тему трудно, а так выпадала бы случайная тема
после чего продать базу спаммерам :)
Захожу в чат, вбиваю ключевые слова, скажем: «хабр, css» и получаю случайного собеседника из этой сферы.
это дает огромную гибкость, управляемость и удобность, но это СМЕРТЬ
вопрос в том что надо посылать мультиплексору команду на выдачу тому или иному клиенту пакета данных.
как узнать какие клиенты ждут данные?
особенно если будет не с кем поговорить
img193.imageshack.us/img193/5996/109816142643mydesktop.png
Я не удивлюсь, если узнаю, что авторы оригинального проекта потратили несколько месяцев на кристаллизацию идеи.
один мат.
PS У меня вообще никто не матерился
# Некто да
# Я уря!
# Я кинь фокту
# Некто на рабочем компе нет фотки(
# Некто я на работе
# Некто а что хотел подергать?
# Я *ля, опять ты
# Я а ты в CPP?
# Некто *лять
# Я =)
# Некто пиз*ец вот что значит рандом *ля.
# Я о*уеть
# Я =)))
хотя. ставили ли другую цель авторы?
стартап за 24 часа — молоодцы!
По теме, плюс за скоростную реализацию, и, если откроете исходники, думаю плюсов будет больше :). Обязательно сделайте интеграцию на другие сайты (с опциональной локализацией общающихся).
как монетизировать будете?
ведь бывает, что позвонить нельзя, аськи под рукой нет, а по мылу — медленно.
чтобы создал чат, получил какой-нибудь длинный id в ссылке, послал нужному человеку (или нескольким), они ткнули и начали чат без всяких регистраций
а так — удобный приятный интерфейс, отсутствие регистрации — что мешает-то?
можно сделать две кнопки «поговорить со случайным человеком» и «ввести ключ к существующему чату»
В целом: много просьб инвайтов, бесед в духе:
-hi
-hi
-habr?
-habr :D
но, на удивление, ни разу никто не нагрубил))
Было бы хорошо сделать пометку в title-страницы, если пришло новое сообщение — на случай, когда открыта другая вкладка.
потому что энергичные и (простите) туповатые школьники будут делать сервис бессмысленной тратой времени. А вот если на нем будут взрослые, интересные собеседники, — у сервиса будет будущее.
удачи