Простоквашино на Хабре или письмо Дяди Федора

    Практически все дети (бывшие и нет) знают про деревню Простоквашино и помнят письмо Дяди Федора.

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

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

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

    Идея реализации коллективного поста

    Автор поста придумывает название: “Тема письма и адрес послания”, при желании пишет краткую вступительную часть, ставит Habracut и публикует пост. Начинается его обсуждение.
    Программа, работающая на компьютере автора топика, постоянно отслеживает пост. При появлении новых комментариев — электронная почта, трекер или отслеживание поля комментариев, они включаются в поле текста топика и он переопубликовывается.
    Располагаются комментарии в тексте строго в порядке времени появления в поле комментариев к данному топику. Это отличается от древовидной структуры, принятой в поле комментариев, но позволяет изменять смысл текста в самом неожиданном виде.
    Программа может работать и на сервере Хабра. Это дает круглосуточную работоспособность и автоматическую информацию о поступлении комментария.

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

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

    Фактически, пост получается из комментариев с неотрицательной оценкой, расположенных в порядке их поступления.
    Содержание должно получиться веселым, местами даже связанным с посланием письма.

    К чему это приведет и на какие сюжетные линии выведет, будет развиваться содержание поста или нет — зависит от множества факторов: названия темы, интересов людей, их активности, настроения, фазы Луны, времени суток и дня недели, а также множества других причин.
    Если получится местами или в целом интересно, можно сделать несколько подобных писем, и не только 1 апреля.

    У читателей поста уже не будет предпочтений — читать комментарии или только сам топик, все расположено вместе. А комментаторы становятся соавторами поста и всегда могут сказать: “Я тоже участвовал в написании!”

    Необходимо решить проблему одинакового времени.
    Если программа будет “крутиться” на сервере Хабра, то эта проблема отпадет.
    Если на компьютере автора поста, то надо придумать, в каком порядке размещать комментарии с одинаковым временем появления.
    Варианты:
    — по алфавиту первой буквы, начинающей комментарий;
    — по числу букв (чем больше, тем он дольше писался, а значит более ранний по началу задумки);
    — скорее всего, на почту или в трекер сообщения о новых комментариях поступают в правильном временном порядке, надо просто проверить;
    — другие варианты.

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

    Сочинение будет незаконченным, всегда можно добавить очередное “последнее” слово. Но можно и ограничить время написания “произведения”, например, тремя сутками.

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

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

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

    Есть ли хоть один человек, который может реализовать эту идею?
    • 61.4%Да129
    • 38.5%Нет81
    Есть ли хоть один человек, который реализует эту идею?
    • 23.8%Да46
    • 76.1%Нет147
    Поделиться публикацией
    Комментарии 23
      +1
      Без новых «невидимых» тегов, которые бы поддерживал Хабр, этого, вероятно, не сделаешь. Т.е. каждый комментарий в тексте статьи должен помещаться в отдельный тег, который бы содержал ссылку на оригинальный комментарий. При этом сам тег и его служебная информация не должна быть видна в тексте статьи. Если не делать подобной привязки, то рано или поздно все сломается (хабраюзер отредактирует комментарий и его уже нельзя будет по тексту поймать в топике).
        0
        Про редактирование комментариев.
        Можно сделать публикацию их только после окончания времени редактирования комментария. Но у этого решения есть как плюсы, так и минусы.
        Насчет тегов согласен.
        Можно сделать так. Программа публикует комментарий сразу при его поступлении и в своих недрах держит каждый комментарий в своей отдельной ячейке. Через 3 минуты (это время разрешения на редактирование комментария) просто переопубликовывает его на месте прежнего, вне зависимости изменился он или нет.
          +3
          Программа не обязана работать в режиме амнезии, и вполне может запомнить, какой комментарий в какое место текста вставляла.
            0
            Да, но тогда пост должен собираться только программой, т.е. через стандартный интефейс его уже не отредактируешь. Да и данные придется локально хранить — БД нужна или файл такой же маркированный. Просто придется иметь две копии топика, вместо одной (текстовый топик на хабре + маркированный где-то снаружи)
              0
              Но это решаемо?
                0
                а в чем проблема?
                вариант решения:
                1. (парсим/получаем через api/из БД) комментарии
                2. сортируем по дате: опираемся на данные хабра, думаю они не станут подменять даты)
                3. исключаем из массива комментарии с отрицательной кармой (и возможностью редактировать)
                4. собираем текст
                5. публикуем
                6. профит…
                может не надо усложнять простые вещи?)
                п.с.: сама прога весит демоном и периодически парсит комментарии, сравнивая их количество с предыдущим результатом
          +1
          Я думаю, надо как-то фильтровать комментарии перед вставкой в текст, и не тащить все подряд. Либо комментарии, вставляемые в текст, должны быть первого уровня, либо они должны быть отмечены специальной последовательностью букв вначале.
          Потому что далеко не любой комментарий означает именно уточнение поста.
            0
            Интересное предложение. Но мне кажется, что суть письма дяди Федора заключается в том, текст получается смешным в результате набора часто несвязанных по смыслу фраз и предложений.
            Если не использовать все комментарии, то комментаторы расстроятся…
            Но в любом случае настоящий автор подобного топика должен обговорить условия попадания комментария в текст. Интереснее все же публиковать все (неотрицательные).
              +3
              Текст письма получился смешным как раз-таки из-за того, что он был связан. Родители не заметили переходов между кусками текста — а потому и поверили в получившийся бред.

              Поэтому надо дать комментаторам возможность управлять тем, будет ли их комментарий включен в текст.
                0
                Да, это хорошо скажется для связанности.
                Комментатор ставит 123, # или другой символ, что будет являться пропуском в текст письма.
            +5
            Думаю, голосование четко показало, что 1) задача решаема 2) идея понравилась не всем
            Мне кажется, хабр не то место, где стоит проводить такие необычные эксперименты, даже на 1е апреля. Тем более, я считаю, осмысленности в тексте не будет.
              0
              Мне все понравилось:
              1. Задача оказалась вполне решаема и это хорошо.
              2. Про то, что получится в результате (насчет осмысленности), можно будет сказать только после реализации. Может быть как вау, так и ох.
              3. То что статья сейчас в минусах, это показатель того, что на Хабре много людей, занимающихся серьезными делами. Идея, предлагаемая в статье на самом деле не совсем серьезная. Это шутка, развлечение, которым не будет заниматься серьезный человек. Реализация, это удел легких на подъем программистов, у которых есть немного свободного времени и желание повеселить людей в день смеха. А серьезные люди вполне адекватно реагируют на подобные предложения. Я их понимаю.
              4. Серьезных людей действительно много, но где еще, как не на Хабре, где концентрация программистов очень большая предлагать подобную идею.
              5. Цель статьи была в том, чтобы донести прикольную идею, которую может быть кто-то реализует. Можно это сделать и на другом ресурсе, но тут было бы веселее, так как комментаторы здесь отменные.
              6. Для меня главным было то, что в ответе на последний вопрос голосования/опроса было значение больше, чем ноль. Результат превзошел ожидания во много раз.
                0
                Я бы хотел связать Ваши пункты 3 и 5. Здесь, безусловно, есть разного плана люди, как легкие на подъем и веселые, так и серьезные бородатые умные дядьки, но, позвольте, это не повод разводить балаган именно там, где основная масса — как раз таки серьезные тематические посты. Предполагаю, что именно для исключения подобных «экспериментов» и была введена система приглашений. И да, Можно это сделать и на другом ресурсе. Я всегда лояльно относился ко всем типам постов на хабре по принципу «больше — лучше», но здесь я вижу некий перебор. Извините, просто мнение
                З.Ы.Положительное кол-во проголосовавших не так уж и о многом говорит, имхо
                  +1
                  Вполне нормальное мнение. Но даже бородатые дядьки (не все, только некоторые) 1 апреля допускают шутки, вольности и другие развлечения. И думаю, что это все же не балаган, а обычное предложение в написании программы для работы с текстом.
              +1
              Я предлагаю сделать отдельную базу данных для хранения таких вот постов, и каждый пост, автор которого хочет использовать такую функцию, будет попадать туда. Соответственно, именно там будут хранится комментарии, для каждого поста желательно для быстродействия создавать отдельную таблицу. А дальше, при переходе на страницу поста, скрипт просто тупо в цикле распечатывает те комментарии, у которых «оценка» неотрицательная. То есть техническая реализация достаточно проста.

              Я так же предлагаю сделать это не совсем в виде попадания комментариев в текст поста. Лучше сделать, чтобы если хабражитель хочет дополнить текст поста, он дополняет. При этом, должны отдельно работать и обычные комментарии. В каком-то смысле, такие посты будут работать по принципу «вики».
                0
                Думаю, что отдельную базу делать не будут, это довольно сложно, хотя опытным программистам виднее, я тут пас. Возможно, что проще будет поупражняться в обработке текста в привычном для Хабра интерфейсе.

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

                А в целом, идея очень интересна — можно вести как обычное и привычное многим обсуждение, так и иметь возможность публикации комментария.
                +1
                А зачем так усложнять?

                К примеру, userscript для автора поста подойдет?

                Инициатор поста открывает свой любимый firefox, скрипт ему пробегается по «отмеченным» комментариям, открывает пост на редактирование и вставляет в конец текста, можно вместе с именами юзеров. Инициатор просматривает, выкидывает офтопики, бац! статья обновилась.

                И никаких отдельных БД и имитаций гугельдока.
                  +1
                  Необходимо решить проблему одинакового времени.
                  А что это за проблема? В базу вам залезть вам всё равно никто не даст, так что придётся парсить страничку. А на странице поста они же в каком-то порядке да отображаются. Более того, этот порядок даже не меняется при обновлении страницы. Ну или я исключительно в правильную фазу луны на странички захожу.

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

                  С технической точки зрения вообще никаких сложностей. Всё скучно и однообразно. Только вот зачем? (:
                    0
                    Одинаковое время имелось в виду то, что часто бывают случаи, когда несколько комментариев публикуются с одинаковым временем, секунды не показываются, да и если бы показывались, тоже возможна ситуация публикации секунда в секунду.
                    Пример, ваш комментарий опубликован в 00:48, предыдущий в 00:47, но могло бы быть и совпадение с точностью до минуты. Оба комментария первого уровня встанут друг за другом и в принципе понятно, кто из них раньше. Если бы эти комментарии, имеющие одинаковое время находились в разных ветках обсуждения, то понять какое их них появилось раньше — трудно. Для классического обсуждения это не имеет большого значения, а вот для написания поста из комментариев, где смысл изменится от перестановки их местами — имеет. Надеюсь понятно объяснил. Все это написано для случая, когда необходимо парсить страницу.

                    А зачем — 1 апреля! В этот день очень много делается того, о чем можно задать вопрос — зачем?
                      +1
                      Но при этом такие комментарии были в любом случае написаны независимо, и ни один автор не видел комментария другого. Так что ни одно из двух взаимных расположений комментария в посте не будет иметь преимуществ над другим. А значит — их и располагать можно в любом порядке.
                        0
                        Это понятно, но чтобы была хоть какая-то система, предложил сортировку по времени.

                        С другой стороны, можно сделать вариант случайной сортировки всех комментариев, наверно тоже будет что-то интересное. Только по какому критерию выбирать этот интерес?
                          +1
                          Случайная сортировка не пойдет. Условие «дописывания в конец» означает, что если автор комментария A видел в теле поста комментарий B — то комментарий A должен оказаться дописан строго после комментария B.

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

                          Еще один вариант (для statefull проги) — просто дописывать при каждом сканировании новые комментарии в конец (программа должна помнить, какие комментарии новые — а какие она уже видела и дописала).
                    +1
                    Я таки вышеупомянутый скрипт (даже еще проще) под тортик изобразил.

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

                    Самое читаемое