Сообщения в develop.16

Re: azot

Ответ на сообщение
Сделал в сабже вот что:

* Инициализация дисплея для иксов теперь проходит только один раз
* В конфиге можно задавать самому задержку для проверки курсора
* Конфиг в самом начале не надо копировать вручную, программа сделает это сама
(вариант копирования из /usr/share/doc/ тоже работает)
* Теперь азот работает не на втором питоне, а на третьем

По первому пункту скажу, что после исправления сабж у меня исправно проработал около двух часов и никаких болезненных симптомов не показывал. Так что, видимо, проблема решена. Но протестировать всё равно надо.
vit01 to vit01 (2016-05-19 12:19:26) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
У меня из проектов на гитхабе самое интересное https://github.com/btimofeev/emuchip

Это была моя попытка написать эмулятор простейшего компьютера, на примере Chip8 и SuperChip. Все игры для этих систем работают (за исключением одной, кажется). Но в эмуляторе есть пара ошибок, которые я так и не решил (одна связана с размером окна Qt, вторая с указателями c++).

// а вообще я всегда хотел написать эмулятор Sega Mega Drive, но думаю не дорос еще))
btimofeev to All (2016-05-19 12:03:53) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
Difrex> ЗЫ: Покажи свои проекты, интересно :)
Если зайдёшь ко мне на гитхаб, то убедишься в том, что смотреть там особо нечего :)
// за исключением сетевых проектов, только это не в счёт

Хотя есть кое-что: https://github.com/vit1-irk/timeleft
Андроид-приложение для товарищей школьников, которое позволяет отслеживать расписание занятий (уроки/пары, перемены). Появилось после экспериментов в ii://linux.14 по NDK: ii://RZdZbVEHDhzU8UcpWJsF
Простое, как валенок, но зато имеет неплохой UI и поддерживает уведомления.
vit01 to Difrex (2016-05-18 08:51:52) [ссылка]

Re: azot

Ответ на сообщение
Difrex> Например, у меня на федоре иксы через примерно час начинают отлупливать соединения от Azot, типа, слишком часто. Скорее всего надо один раз подключаться и работать в пределах этой сессии, но как это сделать - я не знаю.
Заглянул в исходники X.py из азота. Там такой интересный кусок кода:
def get_cursor_position():
    while 1:
        try:
            data = display.Display().screen().root.query_pointer()._data

            return {'x': data['root_x'], 'y': data['root_y']}
Смущает очень сильно, что ты инициализируешь объект display через display.Display() каждый запуск этой функции. Если учесть, что это происходит постоянно раз в секунду, я не удивляюсь, что иксам это сильно надоедает ;)

В примерах из документации по Xlib дисплей получают всего один раз и затем просто запрашивают у него нужные вещи.
На твоём месте я бы сначала просто получил root-объект, сохранил бы его где-нибудь и позже передавал в функцию.

У меня уже план есть по сабжу:

1. Переписать на python3
2. Убрать костыли и повысить производительность
3. Сделать опцию для ручного указания задержки в конфиге
4. Сделать автоматическую подгрузку конфига, чтобы в самый первый раз не вручную копировать

Если возражений не будет, то примусь за него.
vit01 to Difrex (2016-05-18 08:51:51) [ссылка]

Re: azot

Ответ на сообщение
>Для производительности можно переписать сабж на Си, но вряд ли будет сильный прирост.
Я думал на счет Go :). Но проблема не в этом.
>Что думаешь?
Например, у меня на федоре иксы через примерно час начинают отлупливать соединения от Azot, типа, слишком часто. Скорее всего надо один раз подключаться и работать в пределах этой сессии, но как это сделать - я не знаю.
>удивило, кстати, что python2, а не python3
Привык я ко второму питону, но там под третий совсем немного переписывать.

ЗЫ: Покажи свои проекты, интересно :)
Difrex to vit01 (2016-05-18 07:06:13) [ссылка]

Re: azot

Ответ на сообщение
Difrex> Жрет ресурсы не в себя. Там постоянно опрашивается положение курсора.
Вроде бы, это единственный рабочий способ для иксов.

Решил проверить, как реализуются действия с углами в аналогах сабжа. Откопал программу brightside (есть в дебиановских репах), посмотрел исходники и обнаружил, что там отслеживание тоже делается с помощью своеобразного таймера, который смотрит положение.

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

Для производительности можно переписать сабж на Си, но вряд ли будет сильный прирост.
// удивило, кстати, что python2, а не python3

Что думаешь?
vit01 to Difrex (2016-05-16 12:53:21) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
Жрет ресурсы не в себя. Там постоянно опрашивается положение курсора.
Было бы круто использовать что-то типа Inotify, но для X, а не FS.
Difrex to vit01 (2016-05-16 10:25:26) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
Difrex> Не заинтересует такая штука? https://github.com/Difrex/azot
Забавная вещь. И каковы планы по её улучшению? Делает своё дело, судя по видео, вполне исправно.
vit01 to Difrex (2016-05-16 08:20:44) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
>Итак, в PM вроде всё устоялось с фичами (если появятся ещё какие-нибудь хотелки, то пусть Денис пишет, поломаю голову).
Да, большое спасибо за коммиты :)
>Что можете предложить из того, что не связано с нашей сеткой, но интересно было бы сделать вместе?
Не заинтересует такая штука?
https://github.com/Difrex/azot
Difrex to vit01 (2016-05-16 08:14:04) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
Итак, в PM вроде всё устоялось с фичами (если появятся ещё какие-нибудь хотелки, то пусть Денис пишет, поломаю голову).

Надо ещё и больше.

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

// могу и сам чего-нибудь предложить, но сначала подожду
vit01 to vit01 (2016-05-15 16:27:12) [ссылка]

Re: PM

Ответ на сообщение
Difrex> Есть только проблема с отображением, если uri в ресурсе очень длинный - табличку корежит
Difrex> Я, в принципе, знаю как это поправить.
Там таблица строится очень просто - обычным дополнением пробелов справа.

Если получится починить, то очень хорошо. Сам просто не придумал, как такие случаи обрабатывать. Только если обрезать строку, но это не очень правильно.
vit01 to Difrex (2016-05-09 11:32:26) [ссылка]

Re: PM

Ответ на сообщение
Очень классно получилось.

Есть только проблема с отображением, если uri в ресурсе очень длинный - табличку корежит: https://cloud.difrex.ru/index.php/s/txaZ77bL1KlJ562

Я, в принципе, знаю как это поправить. Спасибо, смержил в тестинг :)
Difrex to vit01 (2016-05-09 11:20:46) [ссылка]

PM

В своём репозитории сабжа сделал ветку testing.

В этой ветке сделал вывод в красивую таблицу и исправил твой костыль с дублированием кода при выводе информации.
Протестируй и выскажи своё мнение.
./pm.pl -s -n all
vit01 to Difrex (2016-05-09 09:05:08) [ссылка]

Re: PM

Ответ на сообщение
>Difrex> Да вот красивый вывод в pm -sn all, только хочется. Все руки не дошли до того, чтобы сделать это.
vit01> Он разве слишком некрасивый? Там даже цвет есть, насколько видно.
Я просто хотел сделать, как в mysql/pgsql - табличка, чтобы рисовалась.
>Попробую почитать что-нибудь на эту тему. А sqlite действительно не очень хорошо здесь смотрится. Скорее, это проблема самой перловой реализации (сделали только самые базовые вещи).
Там делов-то немного. Переписать только функции из DB.pm, я вечерком, может займусь =)
Difrex to vit01 (2016-05-04 11:26:13) [ссылка]

Re: PM

Ответ на сообщение
Difrex> Да вот красивый вывод в pm -sn all, только хочется. Все руки не дошли до того, чтобы сделать это.
Он разве слишком некрасивый? Там даже цвет есть, насколько видно.

Хотя всё-таки есть, чего улучшить. У меня вот в терминале тема оформления светлая, поэтому поле ID не видно совсем.
Difrex> Еще есть проблема в SQL, там нет уникального ключа по имени.
Ну это на раз-два.
Difrex> Да и вообще, я думаю, что стоит перейти на что-то noSQL, хотябы на perl Storable. + в этом, что избавимся в зависимостях от sqlite.
Попробую почитать что-нибудь на эту тему. А sqlite действительно не очень хорошо здесь смотрится. Скорее, это проблема самой перловой реализации (сделали только самые базовые вещи).
vit01 to Difrex (2016-05-04 10:53:48) [ссылка]

Re: PM

Ответ на сообщение
>Помогу и сделаю пулл-реквест (или сейчас сделаю, если хочешь).
Делай пулл-реквест(только в AUTHORS себя не забудь добавить :), я потестю на своей базе из ~150 паролей и смержу в мастер.
>Скажи, что ещё хотел бы сделать.
Да вот красивый вывод в pm -sn all, только хочется. Все руки не дошли до того, чтобы сделать это.

Еще есть проблема в SQL, там нет уникального ключа по имени. Да и вообще, я думаю, что стоит перейти на что-то noSQL, хотябы на perl Storable. + в этом, что избавимся в зависимостях от sqlite.
Difrex to vit01 (2016-05-04 06:48:00) [ссылка]

Re: PM

Ответ на сообщение
Форкнул сабж и написал туда чуть-чуть:
https://github.com/vit1-irk/PM

Изменения:
* Теперь можно импортировать БД из файла
* При автогенерации пароля можно при желании задать его длину
* Место расшифрованной БД поменял на /dev/shm

Третий пункт сделал из-за того, что /tmp люди не всегда монтируют, как tmpfs (некоторые просто на диске его держат), а /dev/shm всегда автоматически ставится в tmpfs.

Скажи, что ещё хотел бы сделать. Помогу и сделаю пулл-реквест (или сейчас сделаю, если хочешь).
vit01 to Difrex (2016-05-01 13:38:34) [ссылка]

Re: PM

Ответ на сообщение
Оно хранится в зашифрованном (через GPG) виде в $HOME. При каждом взаимодействии база расшифровывается, находясь в /tmp, и сразу же удаляется.

Небезопасность заключается в том, что из /tmp расшифрованный файл базы можно позднее восстановить, если этот самый /tmp не примонтирован в виде tmpfs.

// а я тем временем обнаружил, что sqlite-модуль даже текстовые дампы не поддерживает
// надо бы в самом деле на что-то другое переписать
vit01 to Andrew Lobanov (2016-04-29 16:53:31) [ссылка]

Re: PM

Ответ на сообщение
А как вообще в сабже с безопасностью? В каком виде оно хранится? А то я чёт перловые исходники совсем не разумею, а времени на кемел бук нет пока.
Andrew Lobanov to All (2016-04-29 16:33:12) [ссылка]

Re: PM

Ответ на сообщение
Итак, Named Pipes эта штука так же не поддерживает. А жаль, потому что в MySQL можно было нормально сделать LOAD DATA INFILE, и всё бы пахало, как часы.

Лучше было бы вообще не sqlite использовать, а json какой-нибудь, с ним бы точно проблем не было.
vit01 to vit01 (2016-04-29 15:12:14) [ссылка]

Re: PM

Ответ на сообщение
Difrex> * Подсунуть базу драйверу sqlite как файл, т.е. через \$bd
И как бы это примерно выглядело? Непонятно, что под этим ты имеешь в виду.

Вместо хранения дампа можно сделать в том числе и Named Pipe, именно так лучше и попробую.
vit01 to Difrex (2016-04-29 13:10:21) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
>Сорри за оффтоп, но чем pass не устроил? https://www.passwordstore.org/
Мне он был не удобен. Мне нужен был именно плоский вывод имен, т.к. я часто использую подобное:
pm -sn all | tail -3
Так же мне хотелось xdg-open, чтобы сразу перейти по ссылке. Хотелось комментариев к паролям, и.т.д.

Короче, pass мне был не удобен и я написал свой велосипед. :)
Difrex to btimofeev (2016-04-29 06:29:07) [ссылка]

Re: PM

Ответ на сообщение
>и обнаружил, что ни DBI, ни сам sqlite не поддерживают загрузку бинаря базы данных из RAM.
Да, я знаю про это. Вообще я думал попробовать так:
* Расшифровать базу в память - тут все норм
* Подсунуть базу драйверу sqlite как файл, т.е. через \$bd
>В таком случае БД придётся даже в зашифрованном виде хранить не в виде sqlite-файла, а в виде sql-дампа. Грустно и медленно, но зато 100% безопасно.
>Если тебя устроит данный способ взаимодействия, то могу форкнуть и приделать.
Если получится, то было бы круто =)

Difrex to vit01 (2016-04-29 06:16:01) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
Difrex> Вот, например, чем я пользуюсь постоянно - pm https://github.com/Difrex/PM. Консолькный менеджер паролей для X. Писал потому что ничего удобнее(для меня) нет.
Сорри за оффтоп, но чем pass не устроил? https://www.passwordstore.org/
btimofeev to Difrex (2016-04-28 18:16:59) [ссылка]

Re: PM

Ответ на сообщение
Кстати, решил изучить вопрос по вот этому TODO:
> Store decrypted DB into RAM not in /tmp/
и обнаружил, что ни DBI, ни сам sqlite не поддерживают загрузку бинаря базы данных из RAM.

Единственный быстрый путь решения, который представляется возможным (и который предлагают люди), заключается в том, чтобы создавать пустую базу в памяти и загружать в неё данные из дампа через CREATE TABLE ...

В таком случае БД придётся даже в зашифрованном виде хранить не в виде sqlite-файла, а в виде sql-дампа. Грустно и медленно, но зато 100% безопасно.

Если тебя устроит данный способ взаимодействия, то могу форкнуть и приделать.
vit01 to Difrex (2016-04-28 14:39:33) [ссылка]

Re: PM

Ответ на сообщение
>Жаль, что перл, а то бы TODO-шка твоя быстро опустела :) Хотя подозреваю, что там не все планы.
Ридми давно не апдейтил, а хелп в самом коде так и подавно =) Запушил
Difrex to vit01 (2016-04-28 14:10:55) [ссылка]

Re: PM

Ответ на сообщение
Difrex> Вот, например, чем я пользуюсь постоянно - pm https://github.com/Difrex/PM. Консолькный менеджер паролей для X.
Очень любопытная и годная штука.
// Стыдно признать, но сам храню пароли в plain-text

Допиши, кстати, в README:

On Arch-based systems:
yaourt -S perl-dbd-sqlite perl-clipboard
Difrex> У меня много планов на него, но мало времени. Хотя бы версию 0.0.3 зарелизить.
Жаль, что перл, а то бы TODO-шка твоя быстро опустела :) Хотя подозреваю, что там не все планы.
Но сделать что-нибудь попробую, вдруг получится.
vit01 to Difrex (2016-04-28 12:25:25) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
>правда, в практической значимости такой штуки, как lotly, я немного сомневаюсь, т.к. для дебиановских репозиториев и так куча софта существует
А вот и зря. Нормального перемещения/копирования в плоских репах нет. По-этому, собственно говоря, и был написан lotly. Используется сейчас у нас в продакшене.
Difrex to vit01 (2016-04-28 08:19:32) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
>А ты расскажи про что-нибудь, может быть желание появится помочь :)
Вот, например, чем я пользуюсь постоянно - pm https://github.com/Difrex/PM. Консолькный менеджер паролей для X. Писал потому что ничего удобнее(для меня) нет.

У меня много планов на него, но мало времени. Хотя бы версию 0.0.3 зарелизить.
Difrex to vit01 (2016-04-28 08:19:28) [ссылка]

Re: Несетевые проекты

Ответ на сообщение
Difrex> На самом деле, например, у меня много проектов свободных не связанных с ii/idec, только никому они больше не интересны.
А ты расскажи про что-нибудь, может быть желание появится помочь :)
Может быть, мы про них просто не знаем.

// правда, в практической значимости такой штуки, как lotly, я немного сомневаюсь, т.к. для дебиановских репозиториев и так куча софта существует
vit01 to Difrex (2016-04-28 02:20:07) [ссылка]