[#]
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> Ах да, это только на телефоне происходит. На десктопе всё фетчится.
Давай я расширю выхлоп фетчера сегодня, а ты погоняешь его на телефоне. Дабы стало ясно где он виснет (хотя я догадываюсь где, но не догадываюсь почему).
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-04-19 06:32:47
А вот и помидоры =)
vit01> Во-первых, фетчер запускается просто через ./fetcher.py, а надо бы через python3 ./fetcher.py
Для этого есть /usr/bin/env
vit01> Проблема из-за того, что на андроидовском окружении env находится не в /usr/bin. Так что либо предыдущий вариант, либо мне придётся расширить патч.
Я ещё раз хочу сказать, что не собираюсь заниматься поддержкой андроида в обозримом будущем. Так что можешь слать патч.
vit01> Во-вторых, фетчер просто зависает на надписи "Поиск новых сообщений..." и ничего не фетчит.
Вот это интересно. Такого я не наблюдал. На самом деле это весьма длительная процедура, так как он опрашивает ноду на предмет коротких индексов всех эх подписки.
vit01> В-третьих, он совершенно не выводит никакой дебаг-информации (к какому узлу подключаемся? что именно фетчим?)
А зачем она? Дебаг могу слепить отдельной опцией, но она постольку поскольку нужна. С какой станции фетч ведётся, мне кажется, и так ясно (в цезии с текущего, а так -- какой в конфиге указан), что фетчится тоже особо не даст ничего. А на остальное вполне может ругнуться и интерпретатор.
[#]
Caesium
Andrew Lobanov(station13, 1) — All
2016-04-18 21:37:16
Сейчас в меня полетят помидоры, так как вместо действительно полезных и ныжных вещей я написл скроллбар в сабж. Уже в master-ветке репозитория =)
[#]
Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-19 06:56:17
vit01>> ... не выводит никакой дебаг-информации ...
AL> А зачем она?
Ты уже сам ответил на свой вопрос:
AL> На самом деле это весьма длительная процедура, так как он опрашивает ноду на предмет коротких индексов всех эх подписки.
Если процедура небыстрая, то дебаг нужен обязательно.
Нужно хотя бы видеть, какая эха запрашивается, какое смещение короткого индекса, фетчит он это дело рекурсивно или нет, и.т.д. Ведь в противном случае будет очень трудно узнать, в чём именно проблема (а иногда с фетчем всё-таки бывают проблемы).
AL> что фетчится тоже особо не даст ничего. А на остальное вполне может ругнуться и интерпретатор.
Оно даст понимание, на каком именно этапе работы фетчер сейчас находится. Может быть, он завис на каком-то отдельном индексе, а юзеру это не видно. Кроме того, интерпретатор же не всемогущ, случиться всякое может.
А патч я тогда сделаю потом.
[#]
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) — 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
vit01(mira, 1) — Andrew Lobanov
2016-04-20 03:28:14
AL> Для интеграции с чем? Давай чтоль конкретный фичереквест, а то количество сообщений оно пишет на экран, но есть подозрение, что это не то.
Для интеграции со своими скриптами. Например, мне хотелось бы сделать Android-уведомления о фетчинге. Для этого фетчер должен иметь 3 выходных состояния: 1 - скачано N сообщений, 2 - новых сообщений нет, 3 - ошибка <название>.
Это можно реализовать либо специальным "тихим режимом", где пишется только "fetched N" или "error: text", либо заворачиванием фетчера внутрь какой-нибудь питоновской функции.
[#]
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
Andrew Lobanov(station13, 1) — vit01
2016-04-20 05:44:26
vit01> Для интеграции со своими скриптами. Например, мне хотелось бы сделать Android-уведомления о фетчинге. Для этого фетчер должен иметь 3 выходных состояния: 1 - скачано N сообщений, 2 - новых сообщений нет, 3 - ошибка <название>.
vit01> Это можно реализовать либо специальным "тихим режимом", где пишется только "fetched N" или "error: text", либо заворачиванием фетчера внутрь какой-нибудь питоновской функции.
Тихий режим можно организовать вполне.
[#]
Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-04-20 06:31:02
Обнаружил теперь регрессию в фетчере:
Если запустить без аргументов, то выдаёт
Traceback (most recent call last):
File "./fetcher.py", line 116, in <module>
node["node"] = node_addr
NameError: name 'node_addr' is not defined
Ещё минус, что при отсутствии поддержки /u/e начинается фетч с самого начала, с 2014 года
И да, если выбрать твою ноду, то он почему-то долго думает (тормозит) на этапе определения /x/features
[#]
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
Исправлен досадный баг, приводивший к падению клиента при построении списка исходящих сообщений.
Баг являлся регрессией в следствии отката к единой базе исходящих.