Dropbox Chat

Лирическое вступление


Как это обычно бывает в воскресное утро, а тем более когда на улице опять неважная погода, начинаешь искать себе интересное занятие. И как-то бросилось мне в глаза, что Dropbox опять синхронизирует какие-то файлы, и очень быстро. На столько быстро, что можно сделать не что иное, как… чат!
Довольно странная идея, но раз захотелось — нужно сделать.

Что из этого вышло


Так, как пишу я под веб, то в качестве IDE была выбрана PHP DevelStudio, что делает поделку чуть более странной, но другого выхода написать всё за час с немногим у меня не было, а за большее время весь мгновенный энтузиазм испарился бы.

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

При первом запуске спрашивается логин, и путь к файлу, в котором будет вестись чат:



Затем после ввода данных появляется аскетичное окошко чата:



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

В принципе, использовать приложение можно и просто открыв файл из общего расположения локальной сети.

Приложение проверялось на Windows XP, 7 и Ubuntu 11.10 под Wine.

Резюме


Теперь к функционалу любимого многими Dropbox можно смело добавить ещё одну функцию, а стартовых 2 Гб пространства хватит на долгие годы переписки.

Ссылка на приложение
И проект для DevelStudio

Спасибо за внимание, интересных вам идей!
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 88

    0
    Оригинально :) Бог с ним с чатом, но сама идея расшаривать данные приложений по сети через Дропбокс (или аналоги) мне понравилась.
      0
      Я уже кстати давно многим программам указываю специальную папку на дропбоксе, куда им складывать файлы )
        0
        Неточно выразился. Не просто расшаривать данные, а делать из шары что-то вроде сокета, куда один процесс на одной машине пишет, а другой с другой читает. Лет 10 назад такое можно было сделать только в локалке или поднятием сервера.
          0
          По сути, сделать из ДБ, хамачи.
            0
            а вроде, правильное использование облачного сервиса, нет?)
            0
            Да, а мне в свое время очень понравилась проскакивающая на Хабре идея о ToDo через дропбокс. Да и пообще — много чего полезного можно так сделать. Странно, что мало желающих этим воспользоваться.
              0
              Что не сделаешь — по большому счёту поделка получится, как говорится «написали программисты для программистов». Для простого пользователя настраивать дропбокс аккаунт и шарить там файлы для того, чтобы початиться излишний, извините, геморрой, когда есть скайп, аська, агент и прочее… А если ради денег это делать (пускай через рекламу), то лучше свой сервак/кластер/датацентр/сеть датацентров поднять.
                0
                Ну, простые пользователи довольно активно используют дропбокс. Я лично многих подсадил :)

                А что касается ToDo, то разумеется это не для простых пользователей. Это просто было бы удобно для себя лично и небольшой команды. Но отчасти согласен, что-то серьезное из этого маловероятно сделать. Тут скорее сама по себе идея интересна, что есть некий отработанный механизм синхронизации и распределения нагрузки. И появляются мысли, что это все можно как-то полезно использовать.
                –1
                Todo через дропбокс вполне себе реализовано — вроде внизу в комментах давали ссылку на Todo.txt
            +1
            Это очень удобно, в частности держу там файлы с базами от KeePass и TrueCrypt. Сколько бы компов не было — ощущение что работаешь в одном пространстве.
              +2
              до первой concurrent записи ,)
                0
                ниже указали на поведение дропбокса в этом случае habrahabr.ru/post/141688/#comment_4738286

                в общем, всё хорошо пока весь state в одном файле, запись которого атомарна.
                  0
                  За этим приходится следить, чтобы не было конфликтов. А что такое атомарная запись?
                    +1
                    Запись, сделанная в одно действие, неделимая. Преимущество в том, что иной процесс не видит переходных состояний (неполностью записанный файл, например).
                    0
                    KeePass держит несколько версий базы паролей. Так что всегда можно откатиться. За два года почти использования KeePass и TrueCrypt на дропбоксе – ни разу не столкнулся с какой-либо проблемой
                  0
                  Vacuum IM уже умеет историю хранить в дропбоксе.
                    0
                    Ух ты, круто, очень востребованная функциональность! А кто ещё умеет?
                      0
                      (ниже отписали хороший метод держать программы в облаке. А как быть с андроидными приложениями, например?)
                        0
                        (и еще ниже упомянули imo.im)
                  0
                  логи в облаке :)
                    +3
                    когда пользовался аськой у меня портабл кип был в дроп боксе и вся переписка соответственно в облаке.
                      0
                      тоже хочу так сделать с мирандой, но все времени нету.
                        0
                        Если миранда portable то переместить ее в папку дропбокса — дело нескольких секунд.
                          0
                          По-моему это самый простой вариант, у самого портативная миранда уже пару лет лежит в папке дропбокса. Один недостаток — при обновлении все время спрашивает, куда ей устанавливаться и какие плагины подключать.
                          А еще дропбокс удобно использовать для синхронизации торрентов между клиентами винды и линукса.
                            0
                            хм, у тоже меня спрашивает путь (и это логично — она же портативная!), но плагины подхватывает сама
                          +1
                          с мирандой есть проблемы. по непонятной причине она, после ее закрытия, сохраняет все изменения в файле профиля, но файл для винды остается неизмененным. а дропбокс синхронизирует по дате изменения.
                            0
                            Зарепортите баг, что ли…
                        0
                        Пробовал, некоторое время работало, потом empathy начал падать, pidgin тоже вел себя неадекватно. Правда, это возникает только если запускать клиент с одним аккаунтом на нескольких машинах.
                          +1
                          Многие программы используют не один файл для хранения состояния. Одна копия программы записала часть файлов, вторая — другую. Получили неконсистентное состояние. См. habrahabr.ru/post/141688/#comment_4738860

                          Классическая тема. Некоторые люди пытаются хранить репозитории в dropbox. Результат — битые репозитории на всех машинах.
                            0
                            Боюсь что не только это, когда приходило сообщение 2 приложения одновременно пытались переписать файлы, учитывая, что где-то сообщения дублировались, между их попытками проходило достаточное время для синхронизации, но приложения и эту ситуацию отрабатывали неадекватно.
                        +1
                        Да, идея отличная, давно уже синхронизирую между компами через дропбокс историю Pidgin…
                          0
                          То же самое делаю с бесплатной версией trillian
                          +1
                          Пошёл писать Dropbox Skype :)
                            0
                            с нетерпением будем ждать )))
                              0
                              Синхронизация аудиозаписи???
                                +7
                                Как в радиопередаче, наговорил и «приём».
                                –5
                                Скайп и так может в дропбоксе хистори хранить, если что.
                                  0
                                  хистори видео?
                                    0
                                    Пожалуйста, расскажите как именно сохранять историю Скайпа в дропбокспе? знаю лишь как настроить сохранять полученные файлы, большего не нашел
                                      0
                                      Попробуйте скопировать ярлык на нужную папку (к примеру, с историей) или файл в папку Dropbox, и он переходя по ссылке синхронизирует всё в облако. Не знаю, как с ярлыками в Windows, но в Linux такое работает на ура (только не включайте зацикливающиеся участки файловой системы, Dropbox c ними не дружит даже если исключить из синхронизации циклические участки, разработчики об этом баге уже уведомлены, но исправления пока нет).

                                      К стати, синхронизацию «любых» файлов SugarSync отмечает как преимущество, хотя на самом деле Dropbox тоже это умеет.
                                        0
                                        Да, действительно. Спасибо.
                                        С линками и в Windows все окей.
                                        0
                                        skype.exe /datapath:".............\Skype" /removable
                                          0
                                          move %username%/appdata/roaming/skype/ %dropbox_dir%/app_profiles/skype/
                                          mklink /D %username%/appdata/roaming/skype/ %dropbox_dir%/app_profiles/skype/

                                          итд
                                      +4
                                      А что dropbox merge делает? Что произойдет, если ноды обменяются сообщениями в одно и тоже время?
                                        0
                                        https://www.dropbox.com/help/36
                                        > If two people or computers change the same file at the same time, the first person to finish uploading their new version will «win.»

                                        Точно так же и здесь, одно из сообщений останется не отправленным.
                                          0
                                          Ну в принципе ожидаемо, но вообще сама идея веселая такая))
                                            0
                                            Ожидаемо было бы сохранение последнего изменения, а эта логика как раз слегка внезапна.
                                              0
                                              Кто первый встал — того и тапки. Чем внезапно? :)
                                                0
                                                Если продолжать в сторону пословиц, то хорошо смеется то, кто смеется последним. Обычная логика же, например, для случая расшаренного файлика.
                                          +1
                                          Нужно, чтобы каждый писал в свой файл. При 2 собеседниках всего 2 файла будет.
                                          +4
                                          Хм, ну казалось бы это школьная лабараторная. Мы писали такой чат, только файл лежал на сетевом диске на файловом сервере.
                                            +3
                                            Везет вам, я такого даже в универе не видел.
                                              +8
                                              В универе писал «чат» из двух команд.

                                              say:
                                              echo `whoami` $1 >> /path/to/shared_file

                                              watch:
                                              tail -f /path/to/shared_file
                                                0
                                                tailf с файлом на дропбоксе не пройдет
                                              0
                                              Уже не раз доводилось использовать Dropbox как чат (в текстовых файлах), вся фишка как раз в том, что нужен только установленный Dropbox с общей папкой для работы над проектом и текстовый редактор! Получаем общие файлы, версионность и… чат.

                                              Отпадает всякая необходимость в подключении людей к некоему, пусть и продвинутому, сервису =)
                                                0
                                                за что вы так не любите Google Docs?
                                                +1
                                                Немного не в тему, но может кому пригодится: Я дропбокс использую для шаринга файлов в сеть с вот этой приблудой. Можно и встроенными средствами, но с click2public удобнее.
                                                  0
                                                  А я последнее время для этих целей использую CloudApp. Mac only, но софтинка действительно мегаудобная.
                                                    +1
                                                    вот такая еще есть DropboxPlugin (там файлы шарятся в 2 клика вместо 3х)
                                                    +1
                                                    Собственно для синхронизации Qip истории дома, на работе, в гостях я и начал пользоватся Дропбоксом.
                                                      0
                                                      попробуйте imo.im
                                                      мне он больше всего понравится. На десктопе работает в браузере, и куча клиентов под мобильные устройства.
                                                      История и пуш-нотификации — все вместе очень удобно. И до кучи умеет передавать картинки/звук.
                                                      0
                                                      А как ведёт себя при множественных пользователях с одинаковым логином?
                                                        0
                                                        Запись идёт в простой текстовый файл, какой логин выберете — так и запишет, никакого контроля, анархия, так сказать.

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

                                                        Тут суть в идее, а не в одинаковых логинах, одновременной отправке сообщений или повторной отправке одного и того же сообщения.

                                                        Если планируете как-то использовать — можете скачать проект, и изменить под себя, я не против, специально же ссылки дал.
                                                          0
                                                          У меня нет никаких нареканий по поводу идеи, просто было интересно.
                                                        0
                                                        Как осуществляется шаринг между разными пользователями? Надо чтобы у всех была одна общая папка? Что будет, если кто-то из польщователей удалит chat.txt?
                                                          0
                                                          Да, нужна общая папка. Если файл удалить — все получат уведомление об этом.
                                                          0
                                                          Что за багрепорт в коментах? Статья же just for lulz!
                                                            +2
                                                            сам давно пользуюсь вместо dyndns.
                                                            10 строк на дотнете делают следующее:
                                                            1. ходим на whatismyip.org
                                                            2. вытаскиваем из респонса внешний ip
                                                            3. пишем в лог(который в папочке дропбокса) hostname — ip

                                                            Profit!
                                                            у меня на домашних серваках крутятся всякие vnc, uTorrent WebInterface и еще парочка самописных вебсервисов. таким образом экономится плата за внешний ip провайдеру или dyndns.
                                                              0
                                                              А чем такая схема лучше dyndns?
                                                              0
                                                              Напомнило как я на втором курсе написал на паскале чат через текстовик в сетевой шаре, чтобы можно было переписываться между подгруппами из разных кабинетов.
                                                                0
                                                                мой дропбокс это гитхаб, по идее через гит можно сделать и чат :)
                                                                  +1
                                                                  просмотр истории: git log
                                                                  отправка сообщения: git commit --allow-empty --message «текст сообщения»
                                                                  стереть последние N сообщения: git reset --hard HEAD~N
                                                                  и т. п.
                                                                    0
                                                                    >просмотр истории: git log
                                                                    именно так :)
                                                                  0
                                                                  Если это нужно для общения в локалке, то есть безсерверные реализации чатов. Если удаленно — неюзабильно, неудобно etc. Для использования аля icq придется много расшареных директорий создать.

                                                                  P. S. идея крайне не нова, я еще в школе что-то такое на VB6 писал, только шатилось через smb.
                                                                    +2
                                                                    Прикольная мысль меня посетила:
                                                                    Положить в %dropbox_dir% какой-нибудь cmd-шник. На том компьютере, где хотелось бы удаленно время от времени выполнять разные задачи зашедулить этот cmd-шник на выполнение, допустим, раз в пол-часа. И, в зависимости от того, что бы хотелось, чтоб удаленный компьютер выполнил, наполняем этот cmd-шник необходимым содержимым.
                                                                    Немного сумбурно, но думаю понятна идея?
                                                                      0
                                                                      Удаленное управление запланированными задачами? Тоже прикольно.
                                                                        0
                                                                        Да, прикольно.
                                                                        0
                                                                        нездоровое использование, ну разве что для веселья. А если я начну заливать большой файл в Дропбокс, то чат замрёт?
                                                                          0
                                                                          На сколько я замечал — Dropbox пропускает мелкие файлы вперед, там, видимо, какой-то специальный алгоритм, какой именно не подскажу — не разработчик.
                                                                          Задержка, скорее всего, увеличится, но не замрет насовсем.
                                                                          0
                                                                          Активно использовал такого плана чаты, да и обычные текстовые файлы.
                                                                          Главная проблема — при более чем двух пользователях conflicted copy начинают появляться со скоростью одна-две в минуту, что делает такие вещи тотально непригодными к использованию.
                                                                          Можно разнести по файлам, но тогда вполне вероятно возникнут проблемы с синхронизацией времени, сообщениями из прошлого, etc.
                                                                          В итоге, когда меня вся эта котовасия достала, я взял и сделал чат на jabber. Час времени на сервер, два часа на клиент на python, затраты денег — нулевые. Все счастливы.
                                                                            0
                                                                            Может немного не в тему вопрос. Раньше частенько использовал dropbox чтобы показывать клиентам верстку. В папке «public» у меня лежит папочка «work» — в нее все и заливал, потом просто копировал паблик урл файла index.html и отправлял клиентам. А вот с недавних пор такой способ не работает. Выдает 404 ошибку.
                                                                              0
                                                                              Я файлы в конце поста закинул таким образом, как можете наблюдать — работает
                                                                                0
                                                                                ссылка на конкретный файл — работает, например отдельно можно на css файл ссылку открыть (Пример) или на конкретную картинку из папки images. А вот index.html — не открывается.
                                                                                  0
                                                                                  Почему нет?
                                                                                  Вот
                                                                                    0
                                                                                    Может имеется в виду, что css не тянется?
                                                                                      0
                                                                                      нет, если бы css не тянулся — я бы так и написал :)
                                                                              0
                                                                              Хм… ниче не понимаю тогда, почему же у меня не работает. Вот например
                                                                                0
                                                                                нашел ответ на свой вопрос тут habrahabr.ru/qa/2572/

                                                                                Only users with full accounts can post comments. Log in, please.