LINUX.ORG.RU

Lenin.Blog 0.1

 , ,


5

6

Увидела свет первая версия простого легковесного блога, поддерживающая обмен сообщениями сервер-сервер и сервер-пользователь.

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

Поддерживается базовая функциональность блога: сообщения, комментарии, тролли, тэги, карбонки, RSS, отображение картинок.

Блог может меняться трафиком с совместимыми с http://gk11.ru проектами, будь то другой блог, форум, эха или другое представление. Пользователи могут подключаться, загружать и писать сообщения с помощью совместимых оффлайн-клиентов.

Лицензии используемых модулей указаны отдельно, лицензия основного кода — общественное достояние.

Демонстрация блога: http://blog.51t.ru

>>> Подробности

Ответ на: комментарий от powerguy

Мне кажется есть запрос на blockchain блоги.

Нет, пример Twister тому иллюстрация. Это микроблоги. Очень мало популярные. Но блокчейн весит уже гигабайт. С блогами всё будет на порядок хуже. Т.е. чтобы почитать чей-то бложик, придётся выкачивать себе десяток гигов. А если сеть станет популярной? Блокчейн плохо подходит для такой цели :-/

Так как сервера нынче отключаются на 1-2-3, потребность в непотопляемости возрастает.

Вот. В ZeroNet есть отличные ZeroBlog'и :) Они непотопляемы, потому что не имеют никакой централизации. Сонмы китайцев тому подтверждение не смотря на блокировки ZeroNet в Китае :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от kirk_johnson

Сделать репликацию постгреса и вуаля.

Поддерживать такую систему будет интересно двум человекам. Потом один потеряет интерес, второй умрёт — и готово, очередной пропавший ресурс.

KRoN73 ★★★★★ ()
Ответ на: комментарий от GluckMan

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

Ну если язык только развивается и пытается пробить «свою колею», как тот же Rust, то это ещё куда не шло. Можно всё сломать и «сделать правильно». Благо, кодовая база не такая большая.

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

Вангую, Гвидо скоро выпустит Python 4 под NIH-синдромом, где и исправит какой-нибудь фатальный недостаток, например, выпилит GIL и запилит многострочные лямбды, то бишь сломает совместимость ещё разок уже с Python 3, а фанатики всё так же и будут кричать: некрофильство! Зачем начинать новые проекты на Python 3, когда полгода назад вышел Python 4?!

Хотя, при таком отношении разработчиков к совместимости Python 4 может стать последним Python вообще.

EXL ★★★★★ ()

Вот почитал новость и прямо мицгол-стайл неадекватом пахнуло...

slovazap ★★★★★ ()

ELP - это распределённая система обмена публичными сообщенияи, имеющая представление в виде конференции, форума или блога. Это отличает систему от ii или gk11-server

Я запутался. Если ELP и gk11 разные сущности, то почему gk11 работает на ELP? :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от kirk_johnson

В новом рхеле, насколько я знаю, по дефолту третий будет.

Там будет Python 2 и Python 3. Спасибо тебе, дядюшка Гвидо, за этот херов зоопарк. Вот в кого тапки надо кидать, а не в тех людей, которые что-то там пишут на Python 2.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Там будет Python 2 и Python 3. Спасибо тебе, дядюшка Гвидо, за этот херов зоопарк. Вот в кого тапки надо кидать, а не в тех людей, которые что-то там пишут на Python 2.

Да боже ж ты мой, ну два бинарника вместо одного, вот потеря-то.

kirk_johnson ★☆ ()
Ответ на: комментарий от KRoN73

Поддерживать такую систему будет интересно двум человекам. Потом один потеряет интерес, второй умрёт — и готово, очередной пропавший ресурс.

Так ТС предлагает то же самое, только вместо PG у него реплицируется собственна БД. Цимес-то где?

kirk_johnson ★☆ ()
Ответ на: комментарий от kirk_johnson

Так ТС предлагает то же самое, только вместо PG у него реплицируется собственна БД. Цимес-то где?

Я не видел его архитектуру, но если оно хоть сколь-нибудь правильно сделано, то его БД реплицируется без активного вмешательства мастера. Что невозможно с PG.

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

KRoN73 ★★★★★ ()
Ответ на: комментарий от EXL

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

И как же Вы предлагаете исправлять ошибки в дизайне языка?

ugoday ★★★★★ ()
Ответ на: комментарий от KRoN73

Идея близка к моей Infonesy, только я решил не поднимать непосильную ношу создания конкурентоспособных блогов/форумов и всего остального, а просто сделать унифицированный транспорт между уже имеющимися решениями через плагины или прямую работу с бэкендом :)

у меня всегда была задача объединить комментирование новостей на лоре и на опеннете :) но эту задачу я так и не определил, а теперь и вовсе от неё отошёл

но прежде всего, конечно, это своя упрощённо-фидообразная сеть. набрать где-то неиспорченных интернетом людей и начать с ними общаться, живым человеческим общением. как в фидо :)

buratino ★★★★★ ()
Ответ на: комментарий от KRoN73

Я не видел его архитектуру, но если оно хоть сколь-нибудь правильно сделано, то его БД реплицируется без активного вмешательства мастера. Что невозможно с PG.

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

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

kirk_johnson ★☆ ()
Ответ на: комментарий от buratino

у меня всегда была задача объединить комментирование новостей на лоре и на опеннете :)

Я тоже когда-то наивно думал, что если получится раскрутить систему, то и ЛОР тоже можно будет в неё включить :D

Но, скорее всего, ЛОР так и останется изолированным. А вот обмен между открытыми системами мне вполне интересен.

Вообще, я смотрю, идея ii всё не вмирає, надо посмотреть, может и соединю это всё с ZeroNet через Infonesy :) Хотя будут проблемы с авторизацией. Когда я задумывал Infonesy, то подразумевалось, что все участники будут из обычного Web'а с привычной всем авторизацией через e-mail. md5(email) и предполагался как ID юзера, а при отсутствии таких зарегистрированных юзеров размещать их сообщения как от гостей. Но все интересные системы сейчас обычно имеют свои, не повязанные на e-mail, методы авторизации и не имеют гостевых записей :) Так что приходится костылить и терять возможность потом подписаться под своими сообщениями на чужих форумах.

KRoN73 ★★★★★ ()
Ответ на: комментарий от ugoday

И как же Вы предлагаете исправлять ошибки в дизайне языка?

Исправлять ошибки и добавлять слой совместимости со старым и уже работающим кодом. Как делают все нормальные проекты, а не наколеночные поделки.

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

EXL ★★★★★ ()
Ответ на: комментарий от kirk_johnson

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

Это, как раз, вообще не проблема :) У меня в Infonesy основной транспорт — вообще JSON в файлсинке (обычно btsync/rslsync). Один объект — один JSON. У каждого UUID. Никаких конфликтов, хоть не просто рассинхронизируй сети, а соединяй разные сети с контентом с нуля.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Я запутался. Если ELP и gk11 разные сущности, то почему gk11 работает на ELP? :)

ГК11 - это проект построения малых сообществ, который пытается помочь энтузиастам этого дела взять две бутылки этого дела для человека инструментами для упрощения общения и связанным трафиком, чтобы их новодельный форум не начинался с пустоты. Ну и сам протокол обмена всего со всем в общем случае тоже называется ГК11, потому что название ii уже умерло, а в idec гораздо больше функций, которые моим сайтам совершенно не нужны и нигде у меня не реализованы ;)

gk11-server, ELP, lenin и даже ii-elp - это серверное ПО, сильно совместимое друг с другом, но могущее работать вместе, при этом:

* EleanorLordPray - это основной проект, с интерфейсами форума, эхи и блога, для тех, кто уже разбирается в гк11-сетях. Это такой разрабатываемый портал для малых сообществ, который в идеале они смогут просто брать и использовать, но пока оно до такого состояния не доведено.

* Lenin.Blog - это полностью совместимая вещь, но для новичков. Просто *запускай и работай*. Оно не для тех, кому нужна распределённость, а для тех, кому нужен простой блог. В оптимале, будет ещё и более простая реализация на php, чтобы можно было просто бросить на php-хостинг. Это ветка чисто для новичков, которые знать не знают про фидо, а хотят простой и нестрашно выглядящий самостоятельный блог. :)

buratino ★★★★★ ()
Ответ на: комментарий от KRoN73

Это, как раз, вообще не проблема :) У меня в Infonesy основной транспорт — вообще JSON в файлсинке (обычно btsync/rslsync). Один объект — один JSON. У каждого UUID. Никаких конфликтов, хоть не просто рассинхронизируй сети, а соединяй разные сети с контентом с нуля.

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

kirk_johnson ★☆ ()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от EXL

у меня есть и python, и ruby, и perl. вот нахрена! пойду пожалуюсь в секусуальную лигу всемирных зануд имени экономии пяти мегабайт

buratino ★★★★★ ()
Ответ на: комментарий от buratino

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

buratino ★★★★★ ()
Ответ на: комментарий от buratino

А зачем она подписывает, если все равно любой желающий может зарегистрироваться? И не проще ли бы использовать PGP и web of trust? И что мешает мне, Лелику, написать от имени Болика, что Толик мудак? А поскольку Толик знает, где живет Болик, Болик получит в грызло.

kirk_johnson ★☆ ()
Последнее исправление: kirk_johnson (всего исправлений: 2)
Ответ на: комментарий от EXL

Исправлять ошибки и добавлять слой совместимости со старым и уже работающим кодом.

А какая собственно разница иметь два исполняемых файла или один, содержащий python2 и python3 подсистемы и динамически определяющий какую из них вызывать для исходников?

ugoday ★★★★★ ()
Ответ на: комментарий от Rinaldus

о программах, написаных на Qt3 и Qt4,никто уже не вспоминает

4.2, тут вон шкайп 4.3 активно некрофилируют.

bodqhrohro_promo ()
Ответ на: комментарий от kirk_johnson

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

Как только у ноды появляется пост в уже имеющейся теме, он просто вставляется туда. Не важно, что он мог быть написан год назад. Тут возникает чисто организационная проблема, вставлять его с датой написания или с датой получения. Я для всяких новостей предпочитаю вставку с датой написания новости, а для обычного общения — с датой получения. Чтобы не спамить старыми новостями, если возникает синк с отвалившейся надолго нодой и чтобы не оставались незамеченными более актуальные сообщения от пользователей :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от EXL

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

bodqhrohro_promo ()
Ответ на: комментарий от kirk_johnson

Без понятия. Возможно, потому что Python 2 из коробки доступен в macOS и во всех популярных дистрах, которые не придерживаются позиции Bleeding Edge.

Я поимел с ним проблем имея в своём распоряжении именно дистр с Python 3 по-умолчанию. Впрочем, эти SDK не единственный софт, требующий Python 2 и отказывающийся работать на Python 3. Тут можно ещё упомянуть как минимум ртуть, ansible, Odoo да вообще кучу всего.

EXL ★★★★★ ()
Ответ на: комментарий от bodqhrohro_promo

Python 2 релизнули позже Java 1. Так что не надо тут.

EXL ★★★★★ ()
Ответ на: комментарий от buratino

ГК11 - это проект построения малых сообществ

Раз ты, очевидно, разбирался, то я лучше у тебя спрошу, чем копаться в коде :)

Мне интересна логика работы. Никакой инфо по принципам работы я не видел, но интуитивно чую, что там:

1. Есть нода1 со своими юзерами и контентом (форумы, теперь — блоги)

2. Я со своей нодой2 могу присоединиться к ноде1 и по какому-то API забрать оттуда данные

3. Чтобы не читать весь потенциально огромный мусорный поток информации, я подписываюсь только на нужные мне форумы/блоги и могу видеть только их.

Или пункты 2 и 3 совмещены для частного юзера и я на ноде1 подписываюсь как пользователь, а не как весь сервер, только на выбранные форумы/блоги?

4. Для того, чтобы мой контент с ноды2 попал на ноду1, она, соответственно, должна подписаться на меня, на ноду 2?

5. Ноды, которые подпишутся на мою ноду2 получат доступ и к контенту ноды1 через меня?

Так? :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Я для всяких новостей предпочитаю вставку с датой написания новости, а для обычного общения — с датой получения. Чтобы не спамить старыми новостями, если возникает синк с отвалившейся надолго нодой и чтобы не оставались незамеченными более актуальные сообщения от пользователей :)

Я к чему: если тред — это просто группа писем с одним заголовком, то если на двух серверах, которые долгое время были в unsync будут два треда с одинаковым названием и разным содержанием, то они смержатся и будет путаница. Если тред имеет ID, то как воспринимается сообщение, которое отвечает в тред, которого не существует?

kirk_johnson ★☆ ()
Ответ на: комментарий от ugoday

Если бы это просто так работало, то разработчики кучи проектов занималась развитием функционала, а не очередным переписыванием кодовой базы в соответствии с прихотями и капризами Гвидо

https://www.odoo.com/groups/community-59/community-32859400

EXL ★★★★★ ()
Ответ на: комментарий от KRoN73

Есть какое-нибудь стандартное решение на этот счёт сегодня, чтобы не велосипедить?

В gpg есть команды для подписи pubkey и для листинга дерева подписчиков. Должно хватить.

kirk_johnson ★☆ ()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от KRoN73

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

- у каждой ноды есть список всех msgid, которые хранятся в определённой конференции - для каждой эхи свой список

- ты получаешь списки нужных тебе эх запросом. практически все серверы позволяют получить только определённые сообщения, а не все, но в общем случае ты получаешь все (это не принципиально). (сервисы гк11 позволяют получить и вообще все сообщения станции в порядке их прихода)

- твой фетчер думает, что делать с этим списком. но в 99% случаев она просто выделяет те сообщения, которых нет в твоём списке

- ты начинаешь скачивать все сообщения с заданными msgid в этом списке и записывать их себе

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

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

взаимодействие с юзерами - отдельная вещь. там никаких отличий от того, как работает, скажем, лор. (юзеров, кстати, сейчас нет. есть ключи доверия, а юзеры хранятся на регсервере :) в ELP вообще нельзя завести юзера, только внешними сервисами.)

buratino ★★★★★ ()
Ответ на: комментарий от kirk_johnson

Если треды это просто письма, ссылающиеся на другие письма, то чувак по сути сделал свой корявый аналог ML с PGP.

kirk_johnson ★☆ ()
Ответ на: комментарий от kirk_johnson

Если тред имеет ID, то как воспринимается сообщение, которое отвечает в тред, которого не существует?

- Треды идентифицируются по UUID. То есть на гипотетическом LOR (все совпадения имён случайны) заводят тему и общаются там.

- Посты темы со своими UUID постятся в сеть Infonesy и расходятся по всем интересующимся.

- На сторонних нодах (например, OpenNet и Balancer) тема и посты принимаются, создаются новые темы в рамках их движков (напомню, что Infonesy — только транспорт, работающий с традиционными решениями) и наполняются полученными постами.

- На нодах OpenNet и Balancer пишут ответы, которые тоже уходят в сеть. Если наш LOR подписан на такую ноду, то он получает эти ответы (с их UUID) и размещает у себя. Возникает обычное с виду общение, хотя часть народа пишет на LOR'е, часть — на OpenNet.

Если возникает облом с синхронизацией, то после её восстановления, LOR получит пачку сообщений с OpenNet. Но ни что не мешает вставить их в топик LOR'а. При чём если их вставить по датам написания, то проблем с восприятием никаких не будет. Вот если вставлять по дате получения, могут быть проблемы в восприятии цепочек ответов, но у нас каждое сообщение содержит UUID сообщения, на которое был ответ. Хотя некоторые движки не поддерживают деревья ответов, но это уже проблемы движков. И реализации их драйверов могут всегда принудительно ставить сообщения по времени написания :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от kirk_johnson

В gpg есть команды для подписи pubkey и для листинга дерева подписчиков

Но, ведь, это не WoT. Где там репутация пользователя?

KRoN73 ★★★★★ ()
Ответ на: комментарий от buratino

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

Надеюсь, там есть какие-то лимиты? А то так вольётся какой-нибудь форум с 10Гб архивом... :D

взаимодействие с юзерами - отдельная вещь. там никаких отличий от того, как работает, скажем, лор

Меня интересует именно подпись сообщений. Т.е. сторонние ноды, грубо говоря, получают мои сообщения, подписанные как мой_юзер@моя_нода?

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Но, ведь, это не WoT. Где там репутация пользователя?

Может мы конечно о разных вещах говорим, но WoT (в терминах PGP) не про репутацию, а про доверие ключам:

As time goes on, you will accumulate keys from other people that you may want to designate as trusted introducers. Everyone else will each choose their own trusted introducers. And everyone will gradually accumulate and distribute with their key a collection of certifying signatures from other people, with the expectation that anyone receiving it will trust at least one or two of the signatures. This will cause the emergence of a decentralized fault-tolerant web of confidence for all public keys.

kirk_johnson ★☆ ()
Ответ на: комментарий от EXL

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

ugoday ★★★★★ ()
Ответ на: комментарий от KRoN73

Надеюсь, там есть какие-то лимиты? А то так вольётся какой-нибудь форум с 10Гб архивом... :D

как вольётся, откуда вольётся, лимиты на что? как фетчер решит, так и будет. никто ничего не вливает, любая нода что-то СКАЧИВАЕТ, и она уже решает, что ей скачивать

Т.е. сторонние ноды, грубо говоря, получают мои сообщения, подписанные как мой_юзер@моя_нода?

да, но это формальность. у юзера есть имя, и есть адрес, что-то типа lenina,124 - эти поля заполняет нод, и что он туда напишет, то и будет. иногда туда вообще тэги пишутся типа harbor:gk11.ru, и чтобы унифицировать поле адреса надо будет просто договориться между участниками обмена. а адреса тех, кто не хочет договариваться, можно перебивать на лету :)

buratino ★★★★★ ()
Ответ на: комментарий от KRoN73

сообщения все вот такого типа

http://gk11.ru/m/XZYKRMGMUATLBEDEKNGX

первая строка - это различные параметры (topicid и tags введены только в ELP и её вариантах). у ответов на сообщения тут идёт ещё параметр repto/MSGID, то есть msgid того сообщения, на который это сообщение является ответом

вторая строка - имя эхи. третья - таймштамп. 4 - имя пользователя. 5 - поле адреса. здесь указано elp,2. ну и далее - Кому, Тема сообщения, Текст сообщения

buratino ★★★★★ ()
Ответ на: комментарий от kirk_johnson

Может мы конечно о разных вещах говорим, но WoT (в терминах PGP) не про репутацию, а про доверие ключам:

Тогда ясно. Я подразумеваю систему рейтинга/репутации пользователей, без которых невозможно комфортное неперсонифицированное (не путать с анонимным) общение :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от buratino

как фетчер решит, так и будет

Фетчер — это сервер или пользователь?

как вольётся, откуда вольётся, лимиты на что?

Ну, вот, захочет фетчер подписаться на ЛОР. Вопрос, нужны ли ему архивы 20-летней давности?

эти поля заполняет нод, и что он туда напишет, то и будет

Ага, ясно. Это как и в Infonesy :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от buratino

первая строка
вторая строка
...

Жесть. Т.е. протокол привязан к порядку строк? :) Не надёжнее было сразу сделать YAML, JSON или хотя бы .ini-like?

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Тогда ясно. Я подразумеваю систему рейтинга/репутации пользователей, без которых невозможно комфортное неперсонифицированное (не путать с анонимным) общение :)

Честно говоря, ни разу такой не видел.

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

kirk_johnson ★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.