Сообщения в iing

iing

Забыл сегодня конспекты дома и свободное время на работе решил посвятить своему хобби. Теперь сабж обзавёлся фетчером, что в принципе позволяет его уже интегрировать в сеть.

Правда веб-интерфейс по прежнему позволяет только читать сообщения, зато работают все распоследние фишки стандарта.

// А баг фетчера в цезии я трогать пока боюсь. Там надо полностью перелопачивать функцию фетчинга для адекватного перехвата ресайза.
Andrew Lobanov to All (2016-04-04 05:52:00) [ссылка]

Re: iing

Ответ на сообщение
AL> Теперь сабж обзавёлся фетчером, что в принципе позволяет его уже интегрировать в сеть.
Мог бы не писать велосипед и взять мой из клиента. Он умеет огромную кучу всего и не имеет никаких зависимостей от GUI. Тот же третий питон, и вся работа давно выполнена.
Всё, что тебе остаётся - подсунуть ему свои функции доступа к базе (например, sqlite).
vit01 to Andrew Lobanov (2016-04-04 08:40:16) [ссылка]

Re: iing

Ответ на сообщение
> Мог бы не писать велосипед и взять мой из клиента. Он умеет огромную кучу всего и не имеет никаких зависимостей от GUI. Тот же третий питон, и вся работа давно выполнена.
> Всё, что тебе остаётся - подсунуть ему свои функции доступа к базе (например, sqlite).
Можно было не писать свой велосипед и взять твою ноду в принципе. И цезий не писать тоже, бо велосипед и мало чего умеет.
Andrew Lobanov to vit01 (2016-04-04 09:36:13) [ссылка]

Re: iing

Ответ на сообщение
> Мог бы не писать велосипед и взять мой из клиента. Он умеет огромную кучу всего и не имеет никаких зависимостей от GUI. Тот же третий питон, и вся работа давно выполнена.
Кстати, а что отфетчера нужно кроме фетчинга? Что он ещё должен уметь?
Andrew Lobanov to vit01 (2016-04-04 09:36:48) [ссылка]

Re: iing

Ответ на сообщение
Кстати, фетчер я и так взял готовый по сути. Это немного модифицированная версия фетчера из цезия.
Andrew Lobanov to vit01 (2016-04-04 10:02:21) [ссылка]

Re: iing

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

// Извиняюсь, если сегодня мои ответы резковаты. Просто на работе всякой фигнёй достали шибко. Хоть валерьянку пей.
Andrew Lobanov to vit01 (2016-04-04 10:14:01) [ссылка]

Re: iing

Ответ на сообщение
AL> Можно было не писать свой велосипед и взять твою ноду в принципе. И цезий не писать тоже, бо велосипед и мало чего умеет.
Ну не надо же доводить до абсурда. Ясное дело, что каждый вправе реализовывать плоды своей фантазии и всякие хотелки по своему усмотрению. Не стоит забывать также, что PHP != Python и Qt != ncurses.

Но просто фетчинг - это настолько избитая и неоригинальная тема, что незачем тратить на это своё время/силы, когда есть куча всего готового (это было сказано именно в контексте Python'а, на котором написано много фетчеров).
AL> Кстати, а что от фетчера нужно кроме фетчинга? Что он ещё должен уметь?
Расскажу тогда про фичи своего фетчера:
* скачивание индексов и сообщений пачками, а не поочерёдно => скорость и экономия трафика
* поддержка /x/c => _огромный_ прирост в скорости
* полная поддержка расширенного /u/e (включая все "необычные" и индивидуальные случаи) => уменьшение потребления ОЗУ на сервере
* фетч через прокси (многим это не нужно, на самом деле)
* удобная интеграция с другими скриптами (передача результатов другим функциям для статистики и.т.д.)
* расширения и доп. фичи могут легко задаваться для каждой ноды в отдельности
AL> Кстати, фетчер я и так взял готовый по сути. Это немного модифицированная версия фетчера из цезия.
Когда я ещё начинал писать Qt-клиент, то хотел сначала взять Ромин фетчер (не писать же велосипед), но у него было чрезвычайно мало возможностей и полная завязанность на себя (т.е. интегрировать с другими скриптами неудобно), а ещё исходники были будто бы обфусцированные. Поэтому написал свой, чтобы избавиться от этих проблем.
AL> И до кучи. Цель у меня не столько получить как можно быстрее конечный продукт, сколько поупражняться в программировании на питон, попутно реализуя клиент/ноду мечты. Так что я в любом случае буду писать всё сам. Это не кредо, не прихоть, а просто следствие из поставленной цели.
Хорошо, тогда вопрос снимается. Просто ты часто любишь говорить о том, как тебе скучно и нудно писать на питоне. Поэтому и подумал, что твоя цель была не возиться с питоном, а получить результат и быстрее мигрировать на домашний сервер.
AL> // Извиняюсь, если сегодня мои ответы резковаты. Просто на работе всякой фигнёй достали шибко. Хоть валерьянку пей.
Ничего страшного, всё понимаю. Добра тебе и побольше! И меня извини за регулярные придирки к мелочам.
vit01 to Andrew Lobanov (2016-04-04 12:10:50) [ссылка]

Re: iing

Ответ на сообщение
AL>> Кстати, а что от фетчера нужно кроме фетчинга? Что он ещё должен уметь?
> Расскажу тогда про фичи своего фетчера:
> * скачивание индексов и сообщений пачками, а не поочерёдно => скорость и экономия трафика
> * поддержка /x/c => _огромный_ прирост в скорости
> * полная поддержка расширенного /u/e (включая все "необычные" и индивидуальные случаи) => уменьшение потребления ОЗУ на сервере
> * фетч через прокси (многим это не нужно, на самом деле)
> * удобная интеграция с другими скриптами (передача результатов другим функциям для статистики и.т.д.)
> * расширения и доп. фичи могут легко задаваться для каждой ноды в отдельности
Хм. Как минимум стоит посмотреть на идеи, воплощённые в твоём фетчере. Или действительно заменить нафиг. Я же отсталый. У меня очень старая версия php-ноды до сих пор.
> Хорошо, тогда вопрос снимается. Просто ты часто любишь говорить о том, как тебе скучно и нудно писать на питоне. Поэтому и подумал, что твоя цель была не возиться с питоном, а получить результат и быстрее мигрировать на домашний сервер.
Я не знаю что со мной произошло, но теперь мне нравится питон =) Видимо, поверхностное натяжение при погружении оказалось для меня слишком сильным и испытывал сильное отторжение по началу.
> Ничего страшного, всё понимаю. Добра тебе и побольше! И меня извини за регулярные придирки к мелочам.
Мне придирки нужны. Иначе меня может начать заносить в идеях. Так что это только плюс.
Andrew Lobanov to vit01 (2016-04-04 12:21:08) [ссылка]

Re: iing

Ответ на сообщение
AL> Я не знаю что со мной произошло, но теперь мне нравится питон =) Видимо, поверхностное натяжение при погружении оказалось для меня слишком сильным и испытывал сильное отторжение по началу.
Питон много умеет: в этом его плюс и иногда - минус. Если питон и может наскучить, то это только из-за простоты решения проблем через него =)
> Ничего страшного, всё понимаю. Добра тебе и побольше! И меня извини за регулярные придирки к мелочам.
AL> Мне придирки нужны. Иначе меня может начать заносить в идеях. Так что это только плюс.
Главное только сохранять дружбомагичную атмосферу. Критика ведь тоже разная бывает, и стоит держать её в разумных пределах.
Ладно, проехали.
vit01 to Andrew Lobanov (2016-04-04 13:09:24) [ссылка]

Re: iing

Ответ на сообщение
vit01> Питон много умеет: в этом его плюс и иногда - минус. Если питон и может наскучить, то это только из-за простоты решения проблем через него =)
Меня немного огорчает в таких мощных в средствах языках тот факт, что зачастую новички не хотят думать, а просто лепят бездумно код. Конечно, далеко не все, но что качество кода стремительно падает год от года это факт.
Andrew Lobanov to vit01 (2016-04-04 14:43:45) [ссылка]

iing и caesium

Ответ на сообщение
Доработал фетчер до пачки фич. Заодно убрал встроенный фетчер из цезия и на его место воткнул фетчер из iing.

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

С помощью параметров можно так же указать какие эхи необходимо клонировать (скачать с аплинка целиком). Или указать флаг -o и получить полную копию конференций.

Расширенный u/e фетер распознаёт по наличию строчки в x/features. Если же такой строчки нет или вообще отсутствует схема x/features, фетчер будет работать в классическом режиме.

Количество обращений к ноде минимизировано:
* если есть эхи для клонирования, то забирается их полный индекс за один запрос;
* если есть новые эхи (отсутствующие в локальной базе), то забирается индекс последних 48 сообщений (48 потому что тогда на эху приходится около килобайта индекса);
* забираются сообщения.
Andrew Lobanov to Andrew Lobanov (2016-04-12 10:11:08) [ссылка]

Re: iing и caesium

Ответ на сообщение
Я как всегда. Тяп-ляп и в продакшен =)

В общем, от получения единого индекса для всех эх пока отказался. Прирост производительности и экономия траффика и так достаточно приличные.
Andrew Lobanov to All (2016-04-12 11:38:15) [ссылка]

Caesium

Ответ на сообщение
Сейчас в меня полетят помидоры, так как вместо действительно полезных и ныжных вещей я написл скроллбар в сабж. Уже в master-ветке репозитория =)
Andrew Lobanov to All (2016-04-18 17:37:16) [ссылка]

Re: Caesium

Ответ на сообщение
AL> Сейчас в меня полетят помидоры, так как вместо действительно полезных и ныжных вещей я написл скроллбар в сабж. Уже в master-ветке репозитория =)
Замечательно. Мне не хватало этой фичи. Только представлял это как процент прочитанного где-нибудь в углу.
btimofeev to Andrew Lobanov (2016-04-18 18:32:19) [ссылка]

Re: Caesium

Ответ на сообщение
Ладно скроллбар (хотя зачем он вообще нужен?), но я сейчас обновил клиент, и возникла куча проблем.

Во-первых, фетчер запускается просто через ./fetcher.py, а надо бы через python3 ./fetcher.py
Проблема из-за того, что на андроидовском окружении env находится не в /usr/bin. Так что либо предыдущий вариант, либо мне придётся расширить патч.

Во-вторых, фетчер просто зависает на надписи "Поиск новых сообщений..." и ничего не фетчит.
В-третьих, он совершенно не выводит никакой дебаг-информации (к какому узлу подключаемся? что именно фетчим?)
vit01 to Andrew Lobanov (2016-04-19 02:18:00) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> Во-вторых, фетчер просто зависает на надписи "Поиск новых сообщений..." и ничего не фетчит.
Ах да, это только на телефоне происходит. На десктопе всё фетчится.
vit01 to vit01 (2016-04-19 02:22:14) [ссылка]

Re: Caesium

Ответ на сообщение
А вот и помидоры =)
vit01> Во-первых, фетчер запускается просто через ./fetcher.py, а надо бы через python3 ./fetcher.py
Для этого есть /usr/bin/env
vit01> Проблема из-за того, что на андроидовском окружении env находится не в /usr/bin. Так что либо предыдущий вариант, либо мне придётся расширить патч.
Я ещё раз хочу сказать, что не собираюсь заниматься поддержкой андроида в обозримом будущем. Так что можешь слать патч.
vit01> Во-вторых, фетчер просто зависает на надписи "Поиск новых сообщений..." и ничего не фетчит.
Вот это интересно. Такого я не наблюдал. На самом деле это весьма длительная процедура, так как он опрашивает ноду на предмет коротких индексов всех эх подписки.
vit01> В-третьих, он совершенно не выводит никакой дебаг-информации (к какому узлу подключаемся? что именно фетчим?)
А зачем она? Дебаг могу слепить отдельной опцией, но она постольку поскольку нужна. С какой станции фетч ведётся, мне кажется, и так ясно (в цезии с текущего, а так -- какой в конфиге указан), что фетчится тоже особо не даст ничего. А на остальное вполне может ругнуться и интерпретатор.
Andrew Lobanov to vit01 (2016-04-19 02:32:47) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> Ах да, это только на телефоне происходит. На десктопе всё фетчится.
Давай я расширю выхлоп фетчера сегодня, а ты погоняешь его на телефоне. Дабы стало ясно где он виснет (хотя я догадываюсь где, но не догадываюсь почему).
Andrew Lobanov to vit01 (2016-04-19 02:34:08) [ссылка]

Re: Caesium

Ответ на сообщение
vit01>> ... не выводит никакой дебаг-информации ...
AL> А зачем она?
Ты уже сам ответил на свой вопрос:
AL> На самом деле это весьма длительная процедура, так как он опрашивает ноду на предмет коротких индексов всех эх подписки.
Если процедура небыстрая, то дебаг нужен обязательно.

Нужно хотя бы видеть, какая эха запрашивается, какое смещение короткого индекса, фетчит он это дело рекурсивно или нет, и.т.д. Ведь в противном случае будет очень трудно узнать, в чём именно проблема (а иногда с фетчем всё-таки бывают проблемы).
AL> что фетчится тоже особо не даст ничего. А на остальное вполне может ругнуться и интерпретатор.
Оно даст понимание, на каком именно этапе работы фетчер сейчас находится. Может быть, он завис на каком-то отдельном индексе, а юзеру это не видно. Кроме того, интерпретатор же не всемогущ, случиться всякое может.

А патч я тогда сделаю потом.
vit01 to Andrew Lobanov (2016-04-19 02:56:17) [ссылка]

Re: Caesium

Ответ на сообщение
А ещё при заходе в пустую эху (в моём случае это либо карбонка, либо favorites), клиент валится из-за скроллбара.

Проблема есть и на десктопе, и на телефоне.

Скрин: http://ii-net.tk/ii/files/74aTJsPBvtLCPelFtWTO.png
vit01 to Andrew Lobanov (2016-04-19 03:04:51) [ссылка]

Re: Caesium

Ответ на сообщение
vit01>> Ах да, это только на телефоне происходит. На десктопе всё фетчится.
AL> Давай я расширю выхлоп фетчера сегодня, а ты погоняешь его на телефоне. Дабы стало ясно где он виснет (хотя я догадываюсь где, но не догадываюсь почему).
Давай. Подумал, кстати, что имеет смысл тебе иногда делать тестовые ветки для цезия, потому что при добавлении всяких фич многое может отвалиться.
vit01 to Andrew Lobanov (2016-04-19 03:39:01) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> А ещё при заходе в пустую эху (в моём случае это либо карбонка, либо favorites), клиент валится из-за скроллбара.
Проблему понял. В ближайшее время поправлю.
Andrew Lobanov to vit01 (2016-04-19 04:14:45) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> Давай. Подумал, кстати, что имеет смысл тебе иногда делать тестовые ветки для цезия, потому что при добавлении всяких фич многое может отвалиться.
Сделаю в районе фикса пустых эх.

У меня подход такой к разработке: есть фиксированные версии, а всё остальное это development ветка. Я пока не могу себе позволить по времени малые циклы разработки, но замена тегов на master-ветку никак не изменит того факта, что в ветке разработчика периодически будет что-нибудь отваливаться.

Наверное, надо просто указывать, что новые фичи могут быть нестабильны и лучше не накатывать их на текущую рабочую версию пользователя.
Andrew Lobanov to vit01 (2016-04-19 04:14:45) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> Давай. Подумал, кстати, что имеет смысл тебе иногда делать тестовые ветки для цезия, потому что при добавлении всяких фич многое может отвалиться.
Проверяй master-ветку. Фиксы скроллбара и возможность включить режим дебага в фетчере. Цезий эту фичу фетчера уже поддерживает (опция fetcher_debug).
Andrew Lobanov to vit01 (2016-04-19 06:57:44) [ссылка]

Re: Caesium

Ответ на сообщение
Дебаг показал, что на несуществующей в базе эхе (а именно iing.15) происходит выход за границы индекса.

Фетчер начинает бесконечно запрашивать список и не выходит из цикла.

Очень хотелось бы держать опцию дебага по умолчанию, (когда я работал над своим клиентом, это экономило кучу времени).
vit01 to Andrew Lobanov (2016-04-19 08:40:44) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> Фетчер начинает бесконечно запрашивать список и не выходит из цикла.
Пофиксил, вроде. Ситуация могла возникнуть только если эха была в локальной базе и не существовала на ноде. Добавл проверку.
vit01> Очень хотелось бы держать опцию дебага по умолчанию, (когда я работал над своим клиентом, это экономило кучу времени).
Мне кажется, что пользователям это не нужно. Для тестеров есть возможность включить дебаг, если возникнут проблемы, то я посоверутю вклюить дебаг и выслать мне лог. Тем более, что совсем детские косяки я уже все поправил, вроде.
Andrew Lobanov to vit01 (2016-04-19 08:50:06) [ссылка]

Re: Caesium

Ответ на сообщение
vit01>> Фетчер начинает бесконечно запрашивать список и не выходит из цикла.
AL> Пофиксил, вроде. Ситуация могла возникнуть только если эха была в локальной базе и не существовала на ноде. Добавл проверку.
Отпишись как протестируешь.
Andrew Lobanov to vit01 (2016-04-19 10:25:43) [ссылка]

Re: Caesium

Ответ на сообщение
AL>> Пофиксил, вроде. Ситуация могла возникнуть только если эха была в локальной базе и не существовала на ноде. Добавл проверку.
AL> Отпишись как протестируешь.
Протестировал, всё теперь работает. Осталось только патч дополнительный сделать.

Однако есть пара архитектурных проблем:
* фетч идёт с самого последнего сервера, который указан в конфиге (обнаружил, когда запускал скрипт отдельно)
* надо как-то узнавать, какое количество новых сообщений было скачано в ходе работы (или даже сами их айдишники) для удобной интеграции
vit01 to Andrew Lobanov (2016-04-19 12:15:58) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> Однако есть пара архитектурных проблем:
vit01> * фетч идёт с самого последнего сервера, который указан в конфиге (обнаружил, когда запускал скрипт отдельно)
Это не архитектурная проблема. Просто по сути своей этот фетчер задуман как универсальный и для каждой ноды нужен свой конфиг. Есть у меня мечта сделать удобный универсальный фетчер, но никак не могу придумать как лучше это сделать. Можно, конечно, научить его понимать конфиги а-ля цезий, но пока мне удобней показалось на каждую ноду держать отдельный файл.
vit01> * надо как-то узнавать, какое количество новых сообщений было скачано в ходе работы (или даже сами их айдишники) для удобной интеграции
Для интеграции с чем? Давай чтоль конкретный фичереквест, а то количество сообщений оно пишет на экран, но есть подозрение, что это не то.

Писать все msgid куда бы то ни было не вижу смысла, если честно. Разве что в дебаг-режиме для отлова кривых сообщений.
Andrew Lobanov to vit01 (2016-04-19 12:19:51) [ссылка]

Re: Caesium

Ответ на сообщение
vit01> * фетч идёт с самого последнего сервера, который указан в конфиге (обнаружил, когда запускал скрипт отдельно)
Почесал я репку, покумекал и подумал, что ты прав. В master-ветке новый фетчер, который позволяет работать прямо с конфигом от цезия.
Andrew Lobanov to vit01 (2016-04-19 16:38:46) [ссылка]