[#] iing
Andrew Lobanov(station13, 1) — All
2016-04-04 09:52:00


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

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

// А баг фетчера в цезии я трогать пока боюсь. Там надо полностью перелопачивать функцию фетчинга для адекватного перехвата ресайза.

[#] Re: iing
Andrew Lobanov(station13, 1) — vit01
2016-04-04 13:36:48


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

Кстати, а что отфетчера нужно кроме фетчинга? Что он ещё должен уметь?

[#] Re: iing
vit01(mira, 1) — Andrew Lobanov
2016-04-04 12:40:16


AL> Теперь сабж обзавёлся фетчером, что в принципе позволяет его уже интегрировать в сеть.

Мог бы не писать велосипед и взять мой из клиента. Он умеет огромную кучу всего и не имеет никаких зависимостей от GUI. Тот же третий питон, и вся работа давно выполнена.
Всё, что тебе остаётся - подсунуть ему свои функции доступа к базе (например, sqlite).

[#] Re: iing
Andrew Lobanov(station13, 1) — vit01
2016-04-04 13:36:13


> Мог бы не писать велосипед и взять мой из клиента. Он умеет огромную кучу всего и не имеет никаких зависимостей от GUI. Тот же третий питон, и вся работа давно выполнена.
> Всё, что тебе остаётся - подсунуть ему свои функции доступа к базе (например, sqlite).

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

[#] Re: iing
Andrew Lobanov(station13, 1) — vit01
2016-04-04 18:43:45


vit01> Питон много умеет: в этом его плюс и иногда - минус. Если питон и может наскучить, то это только из-за простоты решения проблем через него =)

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

[#] Re: iing
vit01(mira, 1) — Andrew Lobanov
2016-04-04 17:09:24


AL> Я не знаю что со мной произошло, но теперь мне нравится питон =) Видимо, поверхностное натяжение при погружении оказалось для меня слишком сильным и испытывал сильное отторжение по началу.

Питон много умеет: в этом его плюс и иногда - минус. Если питон и может наскучить, то это только из-за простоты решения проблем через него =)

> Ничего страшного, всё понимаю. Добра тебе и побольше! И меня извини за регулярные придирки к мелочам.
AL> Мне придирки нужны. Иначе меня может начать заносить в идеях. Так что это только плюс.

Главное только сохранять дружбомагичную атмосферу. Критика ведь тоже разная бывает, и стоит держать её в разумных пределах.
Ладно, проехали.

[#] Re: iing
Andrew Lobanov(station13, 1) — vit01
2016-04-04 16:21:08


AL>> Кстати, а что от фетчера нужно кроме фетчинга? Что он ещё должен уметь?

> Расскажу тогда про фичи своего фетчера:
> * скачивание индексов и сообщений пачками, а не поочерёдно => скорость и экономия трафика
> * поддержка /x/c => _огромный_ прирост в скорости
> * полная поддержка расширенного /u/e (включая все "необычные" и индивидуальные случаи) => уменьшение потребления ОЗУ на сервере
> * фетч через прокси (многим это не нужно, на самом деле)
> * удобная интеграция с другими скриптами (передача результатов другим функциям для статистики и.т.д.)
> * расширения и доп. фичи могут легко задаваться для каждой ноды в отдельности

Хм. Как минимум стоит посмотреть на идеи, воплощённые в твоём фетчере. Или действительно заменить нафиг. Я же отсталый. У меня очень старая версия php-ноды до сих пор.

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

Я не знаю что со мной произошло, но теперь мне нравится питон =) Видимо, поверхностное натяжение при погружении оказалось для меня слишком сильным и испытывал сильное отторжение по началу.

> Ничего страшного, всё понимаю. Добра тебе и побольше! И меня извини за регулярные придирки к мелочам.

Мне придирки нужны. Иначе меня может начать заносить в идеях. Так что это только плюс.

[#] Re: iing
Andrew Lobanov(station13, 1) — vit01
2016-04-04 14:02:21


Кстати, фетчер я и так взял готовый по сути. Это немного модифицированная версия фетчера из цезия.

[#] Re: iing
vit01(mira, 1) — Andrew Lobanov
2016-04-04 16:10:50


AL> Можно было не писать свой велосипед и взять твою ноду в принципе. И цезий не писать тоже, бо велосипед и мало чего умеет.

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

Но просто фетчинг - это настолько избитая и неоригинальная тема, что незачем тратить на это своё время/силы, когда есть куча всего готового (это было сказано именно в контексте Python'а, на котором написано много фетчеров).

AL> Кстати, а что от фетчера нужно кроме фетчинга? Что он ещё должен уметь?

Расскажу тогда про фичи своего фетчера:
* скачивание индексов и сообщений пачками, а не поочерёдно => скорость и экономия трафика
* поддержка /x/c => _огромный_ прирост в скорости
* полная поддержка расширенного /u/e (включая все "необычные" и индивидуальные случаи) => уменьшение потребления ОЗУ на сервере
* фетч через прокси (многим это не нужно, на самом деле)
* удобная интеграция с другими скриптами (передача результатов другим функциям для статистики и.т.д.)
* расширения и доп. фичи могут легко задаваться для каждой ноды в отдельности

AL> Кстати, фетчер я и так взял готовый по сути. Это немного модифицированная версия фетчера из цезия.

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

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

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

AL> // Извиняюсь, если сегодня мои ответы резковаты. Просто на работе всякой фигнёй достали шибко. Хоть валерьянку пей.

Ничего страшного, всё понимаю. Добра тебе и побольше! И меня извини за регулярные придирки к мелочам.

[#] Re: iing
Andrew Lobanov(station13, 1) — vit01
2016-04-04 14:14:01


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

// Извиняюсь, если сегодня мои ответы резковаты. Просто на работе всякой фигнёй достали шибко. Хоть валерьянку пей.

[#] iing и caesium
Andrew Lobanov(station13, 1) — Andrew Lobanov
2016-04-12 14:11:08


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

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

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

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

Количество обращений к ноде минимизировано:
* если есть эхи для клонирования, то забирается их полный индекс за один запрос;
* если есть новые эхи (отсутствующие в локальной базе), то забирается индекс последних 48 сообщений (48 потому что тогда на эху приходится около килобайта индекса);
* забираются сообщения.

[#] Re: iing и caesium
Andrew Lobanov(station13, 1) — All
2016-04-12 15:38:15


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

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

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 06:34:08


vit01> Ах да, это только на телефоне происходит. На десктопе всё фетчится.

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

[#] Caesium
Andrew Lobanov(station13, 1) — All
2016-04-18 21:37:16


Сейчас в меня полетят помидоры, так как вместо действительно полезных и ныжных вещей я написл скроллбар в сабж. Уже в master-ветке репозитория =)

[#] Re: Caesium
btimofeev(station13, 13) — Andrew Lobanov
2016-04-18 22:32:19


AL> Сейчас в меня полетят помидоры, так как вместо действительно полезных и ныжных вещей я написл скроллбар в сабж. Уже в master-ветке репозитория =)

Замечательно. Мне не хватало этой фичи. Только представлял это как процент прочитанного где-нибудь в углу.

[#] Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-19 06:18:00


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

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

Во-вторых, фетчер просто зависает на надписи "Поиск новых сообщений..." и ничего не фетчит.
В-третьих, он совершенно не выводит никакой дебаг-информации (к какому узлу подключаемся? что именно фетчим?)

[#] Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-19 07:04:51


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

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

Скрин: http://ii-net.tk/ii/files/74aTJsPBvtLCPelFtWTO.png

[#] Re: Caesium
vit01(mira, 1) — vit01
2016-04-19 06:22:14


vit01> Во-вторых, фетчер просто зависает на надписи "Поиск новых сообщений..." и ничего не фетчит.

Ах да, это только на телефоне происходит. На десктопе всё фетчится.

[#] Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-19 12:40:44


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

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

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

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 10:57:44


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

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

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 12:50:06


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

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

vit01> Очень хотелось бы держать опцию дебага по умолчанию, (когда я работал над своим клиентом, это экономило кучу времени).

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

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 08:14:45


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

Сделаю в районе фикса пустых эх.

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

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

[#] Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-19 07:39:01


vit01>> Ах да, это только на телефоне происходит. На десктопе всё фетчится.
AL> Давай я расширю выхлоп фетчера сегодня, а ты погоняешь его на телефоне. Дабы стало ясно где он виснет (хотя я догадываюсь где, но не догадываюсь почему).

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

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 08:14:45


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

Проблему понял. В ближайшее время поправлю.

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 20:38:46


vit01> * фетч идёт с самого последнего сервера, который указан в конфиге (обнаружил, когда запускал скрипт отдельно)

Почесал я репку, покумекал и подумал, что ты прав. В master-ветке новый фетчер, который позволяет работать прямо с конфигом от цезия.

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 16:19:51


vit01> Однако есть пара архитектурных проблем:
vit01> * фетч идёт с самого последнего сервера, который указан в конфиге (обнаружил, когда запускал скрипт отдельно)

Это не архитектурная проблема. Просто по сути своей этот фетчер задуман как универсальный и для каждой ноды нужен свой конфиг. Есть у меня мечта сделать удобный универсальный фетчер, но никак не могу придумать как лучше это сделать. Можно, конечно, научить его понимать конфиги а-ля цезий, но пока мне удобней показалось на каждую ноду держать отдельный файл.

vit01> * надо как-то узнавать, какое количество новых сообщений было скачано в ходе работы (или даже сами их айдишники) для удобной интеграции

Для интеграции с чем? Давай чтоль конкретный фичереквест, а то количество сообщений оно пишет на экран, но есть подозрение, что это не то.

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

[#] Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-19 16:15:58


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

Протестировал, всё теперь работает. Осталось только патч дополнительный сделать.

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

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 14:25:43


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

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

Отпишись как протестируешь.

[#] Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-20 07:04:31


AL> Вот это странно, но это скорее нода тупит. Ты имеешь в виду таверну или станцию13?

station13 (в десктопном конфиге была прописана). Когда поставил свою собственную, тормоза прошли.

vit01>> Ещё минус, что при отсутствии поддержки /u/e начинается фетч с самого начала, с 2014 года
AL> Если нет расширенной u/e, то он работает в старом режиме. Пилить тот костыль, который был в цезии, мне очень не хочется.

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

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

[#] Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-20 06:34:38


vit01> Обнаружил теперь регрессию в фетчере:
vit01> Если запустить без аргументов, то выдаёт
vit01> ====
vit01> Traceback (most recent call last):
vit01> File "./fetcher.py", line 116, in <module>
vit01> node["node"] = node_addr
vit01> NameError: name 'node_addr' is not defined
vit01> ====

Вот спасибо. Буду разбираться.

vit01> Ещё минус, что при отсутствии поддержки /u/e начинается фетч с самого начала, с 2014 года

Если нет расширенной u/e, то он работает в старом режиме. Пилить тот костыль, который был в цезии, мне очень не хочется.

vit01> И да, если выбрать твою ноду, то он почему-то долго думает (тормозит) на этапе определения /x/features

Вот это странно, но это скорее нода тупит. Ты имеешь в виду таверну или станцию13? Если первую, то там могут быть небольшие затупы на любом этапе.

[#] Re: Caesium
Andrew Lobanov(tavern,1) — All
2016-04-21 14:22:21


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

Для обновления необходимо скопировать всё содержимое произвольной директории из out/nodename/ (включая .outcount) в директорию out/ и удалить все директории с именами нод.

Если не особо интересно хранить отправленные сообщения в базе, то можно просто очистить содержимое директории out/ и пользоваться клиентом дальше.

[#] Caesium
Andrew Lobanov(tavern,1) — All
2016-04-21 13:46:10


Небольшие изменения.

Непосредственно в цезии:
* исправлен баг, уводивший курсор за пределы экрана, если эхоконференция с непрочитанными сообщениями на экране выбора не помещалась на экран;
* исправлен баг с применением цветовой схемы, приводивший к неправильному выбору цвета переднего плана курсора, стоящего на метаэхоконференции favorites.

В фетчере:
* исправлен баг в фетчере, приводивший к ошибке при вызове фетчера без параметров;
* исправлен баг в фетчере, приводивший ко входу в бесконечный цикл в случае, когда локальный индекс эхи не пересекается с индексом на ноде.

Изменения уже в master-ветке на гитхабе.

АЛЯРМ! На всякий случай. master-ветка является веткой разработчика и при внедрении новых фич может содержать баги и регрессии. Если хотите стабильной работы без отписывания багрепортов, используйте фиксированные версии (они тоже не идеальны, но всё же). Единственное но на момент фиксации версии 0.2 были баги в фетчере, но можно взять фетчер из master-ветки.

[#] Re: Caesium
Andrew Lobanov(tavern,1) — All
2016-04-21 22:15:13


Исправлен досадный баг, приводивший к падению клиента при построении списка исходящих сообщений.

Баг являлся регрессией в следствии отката к единой базе исходящих.