@Irsi

Тег xmpp-blog в блоге Irsi

Irsi

Вообщем я попытался изобразить как имхо должен выглядеть - бекап файл блога. Из его формата более-менее понятна функциональность.
Качаем, смотрим - http://yadi.sk/d/SiRP0lbdJ2mpu
Краткие пояснения.
1. Да там одно сообщение и их может быть много.
2. Да блин надо много думать, это сильно черновой вариант - с нетерпением жду замечаний и предложений.
3. Ага, своя разметка. Да wiki-подобный синтаксис необходим, но я не знаю как его описать и хранить в нем - точно безумие.
4. Да, CSS подразумевается.
5. Нет, никаких оформительских вариантов в параграфах не надо - все оформление посредством CSS.
6. Да часть элементов будут использоваться раз в год по обещанию, но если их не реализовать - попытка их сделать ручками превратиться в адЪ.

P.S. Список рекомендаций забыл, ога. Надо придумать как и сразу - дату и время выдачи рекомендации тоже хранить надо!

#ceck 3
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

Я не забыл - я просто думаю. В частности над тем что я нагородил в #oyum/39 - нужны ли такие сложности? Или просто нужна возможность адресовать пост (и ответ на него разумеется), таг и группу?

#nod
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

К вопросу об оформлении текста - http://habrahabr.ru/post/212397/
Проверка как это вглядит в клиенте - ̶т̶а̶к̶ ̶, т̱а̱к̱ или т̲а̲к̲

#oyln 14
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

Вот что подумалось - при предложенной в #cehm схеме будет наличествовать один, но существенный недостаток, а именно - подписка на тег будет работать локально, только в рамках одного транспорта. Блок тега будет работать как прежде - глобально.
В связи с этим вопрос, точнее два - что с этим делать и вообще - надо ли пытаться что-то сделать?

#oyum 45
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

В предыдущем сообщение #amhr я уткнулся в такое понятие как "слой совместимости" и пообещал рассказать о нем позже. Выполняю обещание.
Так что же это такое и зачем оно нужно? Дело в том что ведение любого блога это не только написание текста, это еще как минимум управление блогом, а именно - постами, ответами на них, тегами, подписками, блокировка нежелательных и т.д. И вторая, не менее важная операция - оформление текста, оно может не очень нужно для микроблогга, но мы все-таки попытаемся выйти за рамки твитора. Не нужно? Не используй! Но для тех кому нужно - такая возможность должна быть.
Конечно замечательно когда у нас есть специализированный плагин к джаббер-клиенту, который реализует все эти функции, но... обычно его нет. И как тут быть? Да как обычно - определить набор спецсимволов, которые будут интерпретироваться транспортом как команды на управление блогом и оформление текста.
1. Транспорт действует по такому простому алгоритму - если получено "обычное" сообщение, то он начинает его парсить на наличае команд, если это сообщение соответствует XEP-0277NG - парсинг команд отключается и используются управляющие команды из протокола. Если сообщение оформлено в виде XEP-0077, то не работают команды на обработку оформления - оформление берется из XHTML, содержащегося в сообщении.
2. Команды - тут все просто, subscribe/unsubcribe, send message (неявная команда - не требуется наличия в парсере!!!), delete message, add to group/remote from group, recommend
Хочу обратить ваше внимание - нет BL/WL, в том виде, в котором мы привыкли в кривоподелиях, а-ля жуйка. Все очень просто - они не нужны, это - частный случай группы. Ну или если хоите - единственно хорошей вещи из говно+, простите гугль+ - кругов :) По умолчанию лучше вего определить 5 групп, назначение понятно из их названия - public (группа по умолчанию), friends, family, co-workers, private, blocked (очень хотелось назвать ее 314дорасы - чтоб было понятней).
Любую группу можно назначить группой по умолчанию, кроме группы blocked разумеется, после этого любое отправленное сообщение будет попадать в эту группу, если не указано иначе. Группы public, private и blocked - немного специальные. Сообщения в первой группе (public) видит любой желающий, кроме тех кто относится к третьей группе (blocked), так же можно запретить смотреть ее неавторизованным пользователям (в джаббере - все авторизованы бай дефолт, так что это коснется только веба). Вторая группа (private)- это только вы сами, больше никто не может видеть сообщения из этой группы. Ну и с третьей группой (blocked) я думаю все понятно - это старый добрый BL.
Ограничения на рекомендации - рекомендовать можно только сообщения из группы public. Участникам :) группы blocked рекомендовать разумеется нельзя (да им и читать нельзя, даже паблик). По очевидным причинам. Или что-то неочевидно? Анонимусам (неавторизованным пользователям, работает на вебе) ничего нельзя, кроме как читать, да и то - если не запретили и это.
С удалением все понятно - можно удалять все что угодно в своем блоге и только свои сообщения - в чужом.
Редактировать - через xmpp не работает, только через веб. Ну по крайней мере - пока не работает. Если придумаем как реализовать красиво - будет. Сразу скажу - про sed и awk, а тем более perl, лучше не вспоминать, так что в слое совместимости - редактирования не будет никогда.
Что осталось? Управление тегами - добавление и удаление. Подписка и анулирование подписки, включая подписку на теги.
Вроде все? Что забыл?
3. Оформление текста. Тут куча своих сложностей, да и как я понял - не всем интересно. Посему - давайте отдельным постом, а?

Продолжение следует...

#crdx 23
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

Кстати, немного о блогах в джаббере - был такой транспорт для джаббера, предназначенный именно для ведения блогов через джаббер - jogger. Но похоже - давно протух, поиск приводит на сайт к пшекам - http://jogger.pl который вроде как имеет к нему отношение, но... ничего не понятно. Может кто-то знает язык этих дикарей и надет там полезную инфу?

#amhk 3
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

Продолжаем разговор. Хотя народ что-то не очень активен. Неинтересно? Или я сходу излагаю все идеально правильно? Не верю.
В предыдущем посте #amgd мы рассмотрели заголовок стандартного сообщения и там был пунктик про тип тела сообщения. Вспоминаем про него и начинаем разбираться зачем он нужен.
Тело сообщения это некий текст. Текст может быть без всякого оформления, но это как-то слишком твитторно. А давайте еще ограничимся 140 символами, шутка!!! Ну нафиг ограничение в 140 символов (а кстати - какое ограничение будет реально? какова мах. длина сообщения в xmpp?), но тип plain text оставим - просто для того чтоб иметь возвожность сказать парсеру что это сообщение надо обрабатывать как простой текст. Зачем? Ну хотя бы для того чтоб автоматически распознать ссылки и некоторые управляющие последовательности? Или как вариант наоборот - не распознавать их - надо думать... Зачем это нужно? Для обратной совместимости со слоем совместимости, о котором немного позже. :)
Итак оформление текста - как его осуществлять? Рассмотрим варианты:
1. Есть такое расширение xmpp - XEP-0071: XHTML-IM, которое позволяет работать с оформленным текстом, видимо на него и следует опираться. Недостатки - очевидны, для полноценной поддержки в клиент придется встроить чуть ли не полноценный браузер, посему мало кто поддерживает в полном объеме, ХЕР опирается на версию XHTML 1.0, а давно доступна не только 1.1, но даже "типа 2.0", развитие XHTML заброшено и более того - прекращено w3.org в угоду развития HTML5, это блять ебаный HTML, спецификация "типа 2.0" не совместима с 1.х... Плюс - ну типа уже есть...
2. Придумать свой язык оформления текста на основе XML, можно не на пустом месте, а например взять за основу ну скажем FB2/FB3... Самый лучши путь, если справимся раз, если удастся убедить остальных в этом чтоб приняли как стандарт... Хе-хе... зарезервируем этот путь как развитие стандарта на будущее, в первой версии имхо заниматься этим бесперспективно. Собственно именно из-за этого резерва и предлагалось ввести в заголовки это поле, точнее - 2 поля, название стандарта оформления и его версия.
3. Взять и придумать свою разметку, основанную на вставку текстовых управляющих элементов в plain text, взяв за основу bb-code или wiki. Это - самый хреновый метод, противоречащий идеологии джаббера и посему в формате хранения сообщения его не будет. Но тем не менее для передачи сообщения - его придется предусмотреть! Зачем? Кратко - слой совместимости.

О слое совместимости и зачем оно нам нужно... Пожалуй это опять тема для отдельного сообщения.
Продолжение следует...

#amhr 38
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

Продолжаем разговор.
В предыдущем посте #arce мы уяснили что ключевым моментом является некий стандарт для извлечения и помещения сообщения в БД оных.
Можно конечно задать стандартный формат SQL DB - задать стандартные имена таблиц и их поля и т.д. Но это путь в такой нехилый тупик...
Есть путь гораздо лучше - определить формат поста и формат метаданных. А чтоб определить их - надо определить из чего они состоят.
С форматом хранения и постов, и методанных - все просто, раз xmpp базируется на xml, то пусть и они хранятся в нем же. Это логично.
Теперь что в них должно быть...
С методанными относительно просто - это твои черные и белые списки и прочая хуйня из профиля, которая фактически - vCard. Чтоб не изобретать велосипед - есть даже RFC6351 на vCard в виде xml, они же - xCard. Все что удасться - надо запихнуть в них, все что не удасться - описать отдельно, думаю там будет немного. К тому же были какие-то XEP на тему vCard в xmpp - надо бы и их глянуть...
А вот с сообщениями все получается гораздо сложней...
Изначально стоит понимать что любая запись в блоге (оно же - сообщение) по факту состоит опять же из двух частей - заголовка сообщения и его содержания.
С заголовками все относительно просто, это:
1. Уникальный ID сообщения. Вся проблема в том что оно должно быть уникальным глобально. Как этого добиться? Очень просто, используем стандартный формат user@blog.domain.tld/<string>. Фактически нам надо добиться только уникальности <string> в пределах одного блога. Делается это не просто, а чень просто - простым инкрементом, при помещении поста (или ответа на пост - не важно) в блог значение некого счетчика увеличивается на еденицу и автоматом присваивается. Это конечно вызывает определенные проблемы при попытки сделать merge для двух разных блогов, но... Они решаемы, да и операция относится к разряду экзотики. Ах да - при удалении поста номер не освобождается. 32х-разрядов имхо хватит, но паранокики (или люди с манией величия) могут сказать что надо больше - хотя я не могу себе представить блог на 4 с лишним ярда постов и комментов. Для гарантии <sring> может выглядеть как <P-number>/<C-number>? где первое - номер поста, второе - номер коммента. Кстати такие уникальные ID очень легко и красиво преобразуются в адреса для веба типа http://blog.domain.tld/user/<P-nomber>/<C-number>
2. Адрес отправителя. Тут все очевидно - JID xmpp://user@domain.tld. Именно так - с указанием протокола, а то вдруг захочется использовать не только xmpp? Но надо подумать... с одной стороны нет разницы по какому протоколу, с другой - иметь эту инфу может быть полезно...
3. Reply To, не знаю как это сказать по русски. Вообщем уникальный ID того сообщения, который комментируем, необходимо для построения цепочек.
4. Тип записи - пост или рекомендация. Какие еще требуются? Стоит ли явно разделять пост и комментарий или нехай отличаются наличаем поля Reply to?
5. Тип тела сообщения. Обсудим его при обсуждении формата тела сообщения, пока просто запомните что оно есть.
6. Заголовок, он же Subject - тут я думаю все понятно? Делать из него уникальный ID не хочется по очевидным причинам. Или не очевидны?
6. Дата, время... что еще надо? Геотеги? Кодировка - нахуй, только юникод, только UTF-8 как и в самом xmpp.

А теперь нам надо рассмотреть формат тела сообщения... И это вопрос гораздо более сложный чем кажется на первый взгляд. Посему - посвятим ему отдельный пост.
Продолжение следует...

#amgd 7
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

Продолжаем разговор... Из предыдущего обсуждения #cehm у меня сложилось впечатление что некоторые очень смутно представляют себе техническое устройство современного блога и посему продолжают нести некую ахинею про распределенность. Итак рассмотрим компоненты оного, извиняюсь если местами буду разжевывать элементарные вещи...
Итак с адресом блога мы разобрались я надеюсь - для его защиты достаточно купить себе доменное имя 2-го или 3-го уровня, ну для особо богатых - первого и правильно настроить DNS. Надеюсь с эим разобрались и передем к защите контента или иначе - содержимого блога.
Собственно современный блог это не бот в джаббере, не веб-морда - это БД. Да-да, база данных, в которой хранятся те самые "10 заповедей и два миллиарда срача в камментах", ну и немного - некой служебной инфы. А вот джаббер-транспорт, веб-морда и т.д. - это отдельные и никак между собой не связанные интерфейсы к оной БД. Как только вы осознаете это, появляется несколько интересных мыслей...
Первое - для переносимости контента нам надо стандартизировать некий формат, в котром будет делаться дамп этой базы и из которого ее можно будет развернуть в другом месте. Самое простое - стандартизовать таблицы, их поля и индексы, выгружаешь а-ля как это сделано в пострегесе - в некий набор SQL-команд, которые тупо при загрузке на другой сервер выполняются и создают аналогичную БД. При всей кажушейся простоте подхода он имеет ряд очевидных недостатков и чтоб их преодолеть... ПРАВИЛЬНО!!! Придется писать ХЕР/RFC/etc на соответствующий формат обмена содержимым между блогсервисами...
Второе - а ведь мы получаем нечто более универсальное чем xmpp-blog... Что нам мешает написать транспорт, который будет пихать в эту стандартизованную БД записи посредством... ну скажем e-mail? Ага, ровным счетом - ничего! А с SMS?! Нет проблем! А из богомерзкой аськи? Пожалуйста! А из SIP IM? Ноу проблем!!!! Интересные пироги выходят...
Третье - а раз пошла такая пъянка, нахуя нам упираться в xmpp для выполнения операции загрузки/выгрузки БД? Правильно - нахуй не надо, он до сих пор толком файлы передавать не научился, он же бедный ахуеет... Есть веб, который умеет это делать нормально - вот нехай на нем и будет в настройках профиля две кнопочки - бекап и рестор...
Собственно мы решили проблему распределенности, не так ли? Она не нужна - нужен стандартный формат БД и отказ от ботов в пользу транспорта...

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

Продолжение следует...

#arce 11
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Irsi

Под этим тегом я сделаю пару постов на тему ведения блогов посредством джаббера. Если что - я этой темой периодически занимаюсь около 10-ти лет. И меня крайне заебала та хуйня, что творится вокруг этого...

Тема первого поста - распределенный джаббер-блог.
Краткий ответ - пойдите нахуй со своей распределенностью.
Развернутый ответ - она там есть изкаробки. А убили ее всякие ебанутые трансексуалы, которые начали что-то ковырять тупо не разобравшись в идеологии джаббера. И те кто последовал вслед за ними по пути сексуальных девиантов четвертого типа.
Объясняю - нахуй боты. Сразу, без разговоров и сожаления - именно они убивают распределенность на корню. Делайте транспортом - будет у вас блог с JID а-ля конференции, ну например xmpp://user@blog.domain.tld, алиас для веба очевиден - http://blog.domain.tld/user/
А как же распределенность?! Мы ведь привязаны к domain.tld? Блять купите свой domain.tld! А какже сделать... Выучи блять DNS, особо обратив внимание на записи CNAME и SRV. Сложно? А кто сказал что это должно быть просто?!
Разумеется для полноценной распределенности должна быть возможность бекапить базу своих сообщений и ответов на них. Или, а желательно - и нормальный кроспостинг. Но это уже вопросы не протокола, не идеологии, а реализации транспорта (и его настройки разумеется).

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

Но сцук то - не единственная засада на пути реализации полноценного блог сервиса для джаббера, их там овердохуя. Так что продолжение следует...

#cehm 31
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.