[#]
Caesium + Android
Andrew Lobanov(station13, 1) — vit01
2016-03-21 13:24:07
Нужна помощь.
У товарища shurshun взникла странная проблема. У меня на руках нет андроид-устройств и потому не могу установить в чём косяк.
При сохранении пустого сообщения, цезий пытается его обработать и сохранить в out, что приводит к логичному падению. Можешь потыкать у себя поплотнее функции save_out() и resave_out() на предмет косячного поведения?
ЗЫЖ Редатор у него nano.
[#]
Re: Caesium + Android
vit01(mira, 1) — vit01
2016-03-21 15:34:51
vit01> Там вместо пустоты (0 символов) пишется в файл "\n" (т.е. 1), вот и всё.
Самое простое и действенное решение - поменять .read().блабла в этих функциях на .read().strip().блабла
Оно ещё убережёт от пустоты в конце и в начале файла.
[#]
Re: Caesium + Android
vit01(mira, 1) — Andrew Lobanov
2016-03-21 15:13:04
AL> При сохранении пустого сообщения, цезий пытается его обработать и сохранить в out, что приводит к логичному падению.
Обнаруживаю, кстати, другую ошибку у себя: невозможно открыть диалог исходящих сообщений (клиент падает).
Проблема shurshun'а заключается в том, что nano по-умолчанию добавляет пустую строку в конец файла. А vim - не всегда. Следовательно, питон не считает такой файл пустым и пытается распарсить.
Уже протестировал и убедился в этом.
AL> Можешь потыкать у себя поплотнее функции save_out() и resave_out() на предмет косячного поведения?
Могу исправить ошибки и подготовить пулл-реквест, но ты пока что ещё предыдущий не принял к себе =)
А там и кода немного.
[#]
Re: Caesium + Android
Andrew Lobanov(station13, 1) — vit01
2016-03-21 15:17:25
> Обнаруживаю, кстати, другую ошибку у себя: невозможно открыть диалог исходящих сообщений (клиент падает).
Это связано с кривыми сообщениями в out/. Проверь битые сообщения там и удали их (для красоты можешь заодно .outcount пофиксить).
[#]
Re: Caesium + Android
vit01(mira, 1) — Andrew Lobanov
2016-03-21 15:26:56
AL> Я правильно понимаю, что там просто вместо одной строки получается две? Тогда это легко фиксится.
Там вместо пустоты (0 символов) пишется в файл "\n" (т.е. 1), вот и всё. К андроиду это отношения не имеет.
[#]
Re: Caesium + Android
Andrew Lobanov(station13, 1) — vit01
2016-03-21 15:39:11
> Там вместо пустоты (0 символов) пишется в файл "\n" (т.е. 1), вот и всё. К андроиду это отношения не имеет.
Пустота с точки зрения питона (string.split("\n")) это список с одним элементом. В данном случае получается два элемента. Значит просто правим условие и пушаем.
[#]
Re: Caesium + Android
Andrew Lobanov(station13, 1) — vit01
2016-03-21 15:16:04
> Проблема shurshun'а заключается в том, что nano по-умолчанию добавляет пустую строку в конец файла. А vim - не всегда. Следовательно, питон не считает такой файл пустым и пытается распарсить.
Я правильно понимаю, что там просто вместо одной строки получается две? Тогда это легко фиксится.
> Могу исправить ошибки и подготовить пулл-реквест, но ты пока что ещё предыдущий не принял к себе =)
> А там и кода немного.
Смержил, кстати. Спасибо за работу.
[#]
Re: Caesium + Android
Andrew Lobanov(station13, 1) — vit01
2016-03-21 15:46:30
> Самое простое и действенное решение - поменять .read().блабла в этих функциях на .read().strip().блабла
> Оно ещё убережёт от пустоты в конце и в начале файла.
Пушнул. Спасибо за помощь.
[#]
Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-03-21 16:21:06
AL> Скинь ошибку чтоли.
Traceback (most recent call last):
File "./caesium.py", line 1194, in <module>
echo_selector()
File "./caesium.py", line 656, in echo_selector
go = not echo_reader("out", out_length, archive, True, True)
File "./caesium.py", line 951, in echo_reader
stdscr.addstr(1, 7, nodes[node]["to"][0], color)
IndexError: list index out of range
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-03-21 16:06:21
> Не лучше. При сохранении пустого файла редактор всё равно завершается успешно (код 0). Как нано, так и вим.
Можно совмещать, на самом деле.
> Удаляю все файлы из out, включая упомянутый .outcount. Создаю новые. Написал 2 сообщения, туда немного текста, сохранил.
> Пытаюсь зайти в диалог неотправленных - валится. Баг воспроизводится как на телефоне, так и на компьютере.
Скинь ошибку чтоли. У себя я спокойно читаю исходящие с последней версией цезия (да и до этого проблем не было).
[#]
Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-03-21 16:04:01
AL> А ещё лучше, ловить ответ редактора
Не лучше. При сохранении пустого файла редактор всё равно завершается успешно (код 0). Как нано, так и вим.
AL> Это связано с кривыми сообщениями в out/. Проверь битые сообщения там и удали их (для красоты можешь заодно .outcount пофиксить).
Удаляю все файлы из out, включая упомянутый .outcount. Создаю новые. Написал 2 сообщения, туда немного текста, сохранил.
Пытаюсь зайти в диалог неотправленных - валится. Баг воспроизводится как на телефоне, так и на компьютере.
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-03-21 16:39:45
> Вообще этот механизм работы исходящих в цезии кажется каким-то костыльным. У самого в cutiefeed, к примеру, даже счётчик никакой не используется. Клиент просто берёт нужные файлы из каталога и с ними работает.
Счётчик у меня остался с тех пор, когда механизма никакого не было. Он нужен сугубо для простой и быстрой нумерации файлов и ни к чему не привязан. Проверить счётчик или пролистать всю директорию: что быстрее? А если у меня исходязих несколько сотен? А тысяч? При этом оно остаётся в рамках классической текстовой базы.
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-03-21 16:36:48
> ====
> Traceback (most recent call last):
> File "./caesium.py", line 1194, in <module>
> echo_selector()
> File "./caesium.py", line 656, in echo_selector
> go = not echo_reader("out", out_length, archive, True, True)
> File "./caesium.py", line 951, in echo_reader
> stdscr.addstr(1, 7, nodes[node]["to"][0], color)
> IndexError: list index out of range
> ====
Ошибка исправлена.
[#]
Re: Caesium
vit01(mira, 1) — vit01
2016-03-21 16:08:31
vit01> Удаляю все файлы из out, включая упомянутый .outcount. Создаю новые. Написал 2 сообщения, туда немного текста, сохранил.
vit01> Пытаюсь зайти в диалог неотправленных - валится. Баг воспроизводится как на телефоне, так и на компьютере.
Вообще этот механизм работы исходящих в цезии кажется каким-то костыльным. У самого в cutiefeed, к примеру, даже счётчик никакой не используется. Клиент просто берёт нужные файлы из каталога и с ними работает.
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — vit01
2016-03-22 06:13:01
vit01> Помню, у меня в out на своём клиенте скапливалось по 500 файлов. И ничего, тормозов не было. Вообще, подсчёт там выполняется всего 1 раз - при запуске клиента. А дальше создание новых идёт инкрементом.
Ну значит надо попробовать.
[#]
Re: Caesium
vit01(mira, 1) — Andrew Lobanov
2016-03-22 03:45:40
AL> Проверить счётчик или пролистать всю директорию: что быстрее? А если у меня исходязих несколько сотен? А тысяч?
Помню, у меня в out на своём клиенте скапливалось по 500 файлов. И ничего, тормозов не было. Вообще, подсчёт там выполняется всего 1 раз - при запуске клиента. А дальше создание новых идёт инкрементом.
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — gl00my
2016-03-23 08:27:05
> я очень привык к мутту
Кстати, сейчас можно легко и непринуждённо перелопатить управление, поредактировав файл keys.py. Потому как я всё равно люблю GoldEd и не хочу отказываться от схожего управления.
[#]
Re: Caesium
vit01(mira, 1) — gl00my
2016-03-23 05:59:17
gl00my> Не могу никак победить цезий с его реакцией на q ;)
Надо читать README.
gl00my> Я нажимаю q - попадаю в vim и у меня нет никакой возможности отменить написание
Чтобы отменить написанное, надо стереть весь текст. А чтобы не наступать на грабли, надо бы обновить клиент и воспользоваться патчем специально для вимеров:
git pull
patch caesium.py < keys_android.patch
[#]
Re: Caesium
vit01(mira, 1) — gl00my
2016-03-23 08:14:39
gl00my> но какая разница сотру ли я текст или нет если я не делаю w ? я выхожу из вима :q !
Так ты сотри текст и выйди через :wq
В цезии стоит проверка именно на пустой файл.
[#]
Re: Caesium
gl00my(station13, 8) — Andrew Lobanov
2016-03-23 08:05:06
пока вижу такие варианты:
1) по дате изменения файла. если дата не изменилась, то в виме не делали w
2) по хешу
3) попробовать поиграться с vim - или чем то подобным. но это уже будет вимспецифичным. лучше кмк 1.
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — gl00my
2016-03-23 06:14:53
Надо всё таки внимательней читать README =)
Перейти к последнему сообщению в эхе можно с помощью клавиши End. Если редактор уже запущен, а писать уже передумал, то можно удалить все строки и сохранить пустой файл. В таком случае сообщение не попадёт в out. Некрасиво, конечно, но пока я не понял как это лучше сделать.
[#]
Re: Caesium
gl00my(station13, 8) — vit01
2016-03-23 07:56:12
но какая разница сотру ли я текст или нет если я не делаю w ? я выхожу из вима :q !
я очень привык к мутту, где выход без сохранения из вима отменяет письмо. может быть есть способ как то поймать этот момент. посчитав хеш от текста письма до и после вима. или не создавая файл заранее а как то передав его текст в вим через пайп я не знаю. надо разбираться.
про остальное, спасибо, попробую.
[#]
Re: Caesium
gl00my(station13, 8) — Andrew Lobanov
2016-03-22 23:50:05
Андрей! Все таки надо что то делать с цезием.
Я нажимаю q - попадаю в vim и у меня нет никакой возможности отменить написание
сообщения. Делая :q! я все равно неявно создаю в out эту болванку, которая потом уйдет
при нажатии на S.
Я уверен, что на эти грабли будут наступать многие. :)
[#]
Re: Caesium
gl00my(station13, 8) — Andrew Lobanov
2016-03-23 09:09:57
о! супер! вечером попробую с ноута.
а сейчас пишу с андроид клиента. отличная штука. :)
[#]
Re: Caesium
vit01(mira, 1) — shurshun
2016-03-23 10:00:24
>>> а сейчас пишу с андроид клиента. отличная штука. :)
AL>> На него тут жаловались и я было подумал, что придётся писать свой, когда подарят смарт =)
И правильно, что жаловались. Цезий превосходит нативный клиент по всем параметрам, исключая простоту установки.
shurshun> Конечно не хватало по началу возможности писать в привычной программе типа quick edit pro, но дело привычки, вполне и в нано освоился.
Хмм, видимо, идёт речь о разных вещах. В Java-клиенте никакого nano не было :)
[#]
Re: Caesium
gl00my(station13, 8) — Andrew Lobanov
2016-03-23 08:54:27
про управление -- можно привыкнуть. это не проблема. но вот детектирование ситуации при которой из редактора вышли без сохранения -- кмк важная фича.
[#]
Re: Caesium
shurshun(station13, 14) — Andrew Lobanov
2016-03-23 09:35:01
>> а сейчас пишу с андроид клиента. отличная штука. :)
AL> На него тут жаловались и я было подумал, что придётся писать свой, когда подарят смарт =)
Идеальный иетерфейс.
Конечно не хватало по началу возможности писать
в привычной программе типа quick edit pro, но,
дело привычки, вполне и в нано освоился
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — gl00my
2016-03-23 09:16:10
> а сейчас пишу с андроид клиента. отличная штука. :)
На него тут жаловались и я было подумал, что придётся писать свой, когда подарят смарт =)
[#]
Re: Caesium
Andrew Lobanov(station13, 1) — gl00my
2016-03-23 09:04:26
> Андрей! Все таки надо что то делать с цезием.
Я что-то сделал с цезием. Теперь он проверяет менялось ли сообщение при редактировании.
> Я уверен, что на эти грабли будут наступать многие. :)
Так и есть. Точнее, было.