LINUX.ORG.RU

Сообщения annerleen

 

Bounty Python3 Gajim

Привет, ЛОР!

Есть, значит, один Jabber-клиент, Gajim.
Есть у него такой плагин/фича HTTP Upload Plugin

Если перетащить файл drag-and-drop'ом в окно чата, файл передаётся посредством этого плагина: https://i.imgur.com/39p3R7o.png.
(Хотя я не уверен, что это не одна _из_ реализаций способа передачи файлов — может, дело совсем не в плагине, но это вряд-ли играет роль)

Задача
При нажатии Ctrl+V в окне чата, в том случае, если в буфере обмена находится что-то отличное от текста (например, изображение) — действовать так же, как и при drag-n-drop'е в окно чата — инициировать передачу файла.


Предлагаю $250 в BTC эквиваленте (либо по курсу на карту любого российского банка) за реализацию данной возможности.


Думаю те, кто знаком с PyGTK, с лёгкостью справятся.
Если где-то есть неучтённый подводный камень — покажите, да, условия могут поменяться.

 ,

annerleen ()

Количество подключенных USB-устройств

Доброго времени суток!
Дано: Linux-машина с двумя USB3.0 портами, в каждом — USB3.0 хаб на 7 портов, к каждому подключено по четыре USB2 устройства.

В dmesg:

[ 861.015836] usb 3-6: Not enough host controller resources for new device state.
[ 870.028315] usb 3-8: Not enough host controller resources for new device state.
[ 870.028334] usb 3-8: can't set config #1, error -12

Вопросы:

- Где и какой лимит на количество подключенных устройств?
- Что такое «usb 3»? Номер шины? Bus 003 в lsusb — это оно?
- Внешние PCI-USB3 контроллеры попадают под этот лимит или они спасут ситуацию?
Если на них тоже есть этот лимит — то какой?

Спасибо.

 ,

annerleen ()

Учился делать Telegram-бота

Привет, ЛОР!
Есть один...

В общем, пытался в Python и Telegram API, не уверен в правильности кода и/или некоторых решений, хочу, чтобы Python-гуру оценили код и подсказали что и где неплохо бы исправить.

Бот ещё не допилен, но желающие могут его себе, т.к. все известные мне с похожим функционалом — closed-source, а значит скорее всего сливают логи из ваших чатов доброму создателю.

Из возможностей — разного рода рулеточки, статистика (WIP), запись логов и что-то ещё.
Можно легко добавлять свои собственные команды, если хоть немного знакомы с удавом.
А, ну и я осилил интерфейс конфигурирования бота с собстенными конфигами для каждой конфы — этого вообще нет нигде (ибо ограничения Telegram API) и реализовывать пришлось через одно место.

Зачем тред? Всё вышеописанное, да и просто так, чтобы, так скзть, добро не пропадало даром.
Спасибо за внимание.

NB! Если зашли в тред напомнить, что Телеграм не нужен — все и так это знают, не нужно на это тратить байты!

 ,

annerleen ()

Возможно ли в один запрос...

Есть таблица с направлениями и телефонными кодами вида:

billing=> select * from directions where id = 1075;
  id  |            direction            | code | min_len | max_len | int_code 
------+---------------------------------+------+---------+---------+----------
 1075 | United Kingdom Special Services | 4450 |      12 |      12 |     4450
 1075 | United Kingdom Special Services | 448  |      12 |      12 |      448
 1075 | United Kingdom Special Services | 4455 |      12 |      12 |     4455
 1075 | United Kingdom Special Services | 449  |      12 |      12 |      449
 1075 | United Kingdom Special Services | 4456 |      12 |      12 |     4456
 1076 | United Kingdom Freephone | 44800 |      10 |      14 |    44800
 1076 | United Kingdom Freephone | 44808 |      10 |      14 |    44808


Задача: получить список вида «id - direction - code (все с этим id)»
Как бы distinct on direction, но он, естественно, оставляет только первый code.

Вопрос: возможно ли одним запросом?

 

annerleen ()

Telegram в Jabber (Zhabogram v0.8)

Привет, ЛОР!
Позволю себе наглость создать ещё одну тему про транспорт XMPP в Telegram.

Новость на LOR
Скриншот
Mercurial-репозиторий (HTTP)

Отличия от первой версии

- Синхронизация статусов
- Поддержка VCard и юзерпиков
- Добавление и удаление Telegram-контактов
- Отправка, приём и редактирование сообщений
- Обработка цитат и forward messages
- Отправка и приём файлов
- Секретные чаты
- Создание и управление группами и каналами
- Поиск по сообщениям и получение истории с сервера
- Управление аккаунтом Telegram
- Сохранение сессий, автоматический реконнект, получение часового пояса от Jabber-клиента
- Выпилены Threads, полностью перешли на асинхронную модель событий, должно повысить стабильность
- Пытаемся выжить после неожиданного закрытия потока (такое бывает, да)

Зачем это всё?

- Общение в Telegram используя любой Jabber-клиент
- Возможность использовать свой XMPP-сервер, что положительно скажется на приватности и сохранности данных и сообщений

P.S. не нужно напоминать о том, что в Telegram регистрация по номеру телефона.
SIM-карты можно купить и без документов, а в крайнем случае — воспользоваться онлайн-сервисом по приёму SMS.

ann@westfall ~> sudo apt purge telegram-desktop
[sudo] password for ann: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libminizip1 libxxhash0
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  telegram-desktop*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 44.4 MB disk space will be freed.
Do you want to continue? [Y/n] 

 , ,

annerleen ()

telegram <.>jabber

Привет, ЛОРчик! Это очередной нытик тред.

Недавно Паша Дуров & Ко. принесли в Telegram* очередную киллер-фичу — теперь собеседник может удалять любые сообщения из вашего с ним диалога.
Даже твои. Даже те, что ты отправлял год назад. И они тихо и незаметно исчезнут со всех девайсов.

У меня настолько бомбануло, что я решил с концами перекатиться на Jabber-транспорт, и пусть себе хоть обудаляются на здоровье.
Пилили мы как-то tg4xmpp, однако код там страшнее чикатило, ещё и на древних либах, поэтому было реешно перепиливать заново.

За пару бессонных ночей выкатился Жабограм, он уже умеет авторизацию, синхронизацию ростера, переписку, приём файлов и сохранение состояний.
Написан на Ruby+tdlib+xmpp4r.

Если у кого есть Jabber-сервер — милости прошу в бета-тестеры.
Остальные могут писать пожелания и предложения.

Спасибо.

______________________________________________________________

* — запрещено на территории РФ.

 ,

annerleen ()

Lua type checking library

Добрый вечер, ЛОР!
Пишем для своих целей, но может кому-то понадобится.

Что это: библиотека для проверки типов и размера (границ) переменных.
Зачем это: для проверки передаваемых значений извне в API, например.

Документация и примеры внутри.
Ссылка: https://pastebin.com/7dxm5J3u

Критика/идеи/предложения приветствуются.

 

annerleen ()

cgroups для браузеров

Привет, ЛОР!
Есть ли способ ограничить жор память браузерами (Firefox)?

Раньше работал cgroups, но теперь он плодит новые процессы, а лимит работает только на один процесс, а не на всю кучку.

 

annerleen ()

Реализация «групп»

Есть абстрактный веб-сервис, в нём есть пользователи, есть группы пользователей.

Вопрос, как это правильнее реализовать на уровне БД и почему?

Вариант 1.
------------------

В таблице `users` есть массив `groups[]`, в котором указаны группы, к которым принадлежит пользователь;


Вариант 2.
------------------

В таблице `groups` есть массив `users[]`, в котором перечислены члены группы;

 

annerleen ()

Если не <table>, то что?

Привет, ночной.
Сегодня вопрос такой.

Есть какая-то большая таблица с данными, которую нужно отображать на редактирование.
Пусть это будет такая.

Сейчас это огромная форма и она же таблица, и её открытие в, например, firefox >= 58 приводит к дичайшим тормозам даже на i7 8550U.

В связи с этим, нас не покидает ощущение, что делаем мы что-то не так.
Вопрос — как это реализовывается нынче так, чтобы всё это не тормозило на любом железе и работало с любым браузером? (читай без кучи js-фреймворков)

 

annerleen ()

Freeswitch mod_lua заменить Lua на Tarantool

Доброго времени суток, ЛОР!
Задача нынче следущая.

Есть замечательный FreeSwitch 1.8.2, в котором есть не менее замечательный модуль mod_lua, который линкуется с liblua5.2.

Есть не менее замечательный Tarantool, тот же Lua, однако с поддержкой лёгких потоков (fibers), да и к тому же работает раз эдак в 10 быстрее Lua, оставаясь обратно совместимым.
Беглым взглядомdiff'ом пробежал по заголовкам, которые шли в пакете tarantool-dev, и вроде бы как бы да, на первый взгляд всё совместимо.

Однако, при попытке «создать» mod_tarantool я потерпел фиаско, что в принципе неудивительно, так как Tarantool имплементирует Lua API 5.1, а mod_lua линкуется с liblua5.2.

Дальше мои знания, к сожалению, всё.

________________________________________________________________

Итак, уважаемые знатоки!
Предлагаю $200 в Bitcoin-эквиваленте тому, кто добавит поддержку Tarantool в Freeswitch 1.8.2.

 , ,

annerleen ()

Кто чем бэкапит кучу разных серверов?

inb4: rsync/tar+ssh/сам напиши, чо, не мужик шоле?

Знаю, что вопрос поднимался сотни раз, но на дворе 2019 год, как-никак, может, поменялось что?

Задача:

- Бэкапить данные с кучи мелких серверов на пару больших по ftp, ssh;
- Простенький веб-интерфейс со списком и статусом серверов, бэкапов, хранилищ;
- Возможность выполнять кастомные команды до/после бэкапа;
- Естественно, опенсорс;
- Шифрование сжимаемых и передаваемых по сети данных;

Пожалуй, всё.

 

annerleen ()

Альтернатива self-hosted gitlab

Привет, ЛОР.

Есть какая-то альтернатива self-hosted gitlab'у для нетребовательной команды из пары разработчиков?

Из требований только кастомизируемый веб-интерфейс к DVCS с возможностью скачать/просмотреть.

Gitlab ОЧЕНЬ жирный.

Git не принципиален, можно hg.

 

annerleen ()

Firefox постоянно падает

Хочу спросить, у всех так?
Если нет, из-за чего может быть?

Скачивал бинарную сборку с офф.сайта, Beta, Nightly — результат один — краш.
Баг-рапортъ есть.

[183143.945718] Chrome_~dThread[14951]: segfault at 0 ip 00007f7b47f1df56 sp 00007f7b3f4b9aa0 error 6
[183143.945723] Chrome_~dThread[15305]: segfault at 0 ip 00007fb64cb74f56 sp 00007fb644110aa0 error 6
[183143.945725]  in libxul.so[7f7b445b0000+4dce000]
[183143.945728] Code: 8b 0d d6 7e 75 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 7b b9 69 fc 48 8d 05 9c 1a 5b 01 48 8b 0d b5 7e 75 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 5a b9 69 fc 66 2e 0f 1f 84 00
[183143.945732] Chrome_~dThread[14639]: segfault at 0 ip 00007f2a4703df56 sp 00007f2a3e5d9aa0 error 6
[183143.945734]  in libxul.so[7fb649207000+4dce000]
[183143.945736]  in libxul.so[7f2a436d0000+4dce000]
[183143.945739] Code: 8b 0d d6 7e 75 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 7b b9 69 fc 48 8d 05 9c 1a 5b 01 48 8b 0d b5 7e 75 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 5a b9 69 fc 66 2e 0f 1f 84 00
[183143.945742] Code: 8b 0d d6 7e 75 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 7b b9 69 fc 48 8d 05 9c 1a 5b 01 48 8b 0d b5 7e 75 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 5a b9 69 fc 66 2e 0f 1f 84 00
[183143.946017] Chrome_~dThread[15147]: segfault at 0 ip 00007f0f8027af56 sp 00007f0f77816aa0 error 6 in libxul.so[7f0f7c90d000+4dce000]
[183143.946025] Code: 8b 0d d6 7e 75 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 7b b9 69 fc 48 8d 05 9c 1a 5b 01 48 8b 0d b5 7e 75 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 5a b9 69 fc 66 2e 0f 1f 84 00
[183143.946174] Chrome_~dThread[14729]: segfault at 0 ip 00007f155cf07f56 sp 00007f15544a3aa0 error 6 in libxul.so[7f155959a000+4dce000]
[183143.946183] Code: 8b 0d d6 7e 75 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 7b b9 69 fc 48 8d 05 9c 1a 5b 01 48 8b 0d b5 7e 75 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 5a b9 69 fc 66 2e 0f 1f 84 00
[193987.740233] Chrome_~dThread[16354]: segfault at 0 ip 00007f7092da7cd6 sp 00007f7089e3aa80 error 6
[193987.740237] Chrome_~dThread[985]: segfault at 0 ip 00007f21f4aadcd6 sp 00007f21ebb40a80 error 6
[193987.740240] Chrome_~dThread[16625]: segfault at 0 ip 00007f16c41cdcd6 sp 00007f16bb260a80 error 6
[193987.740243]  in libxul.so[7f21f0ded000+5317000]
[193987.740246]  in libxul.so[7f16c050d000+5317000]
[193987.740249] Code: 8b 0d b6 5a 84 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 53 9b 34 fc 48 8d 05 03 da 7a 01 48 8b 0d 95 5a 84 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 32 9b 34 fc 66 2e 0f 1f 84 00
[193987.740251]  in libxul.so[7f708f0e7000+5317000]
[193987.740254] Code: 8b 0d b6 5a 84 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 53 9b 34 fc 48 8d 05 03 da 7a 01 48 8b 0d 95 5a 84 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 32 9b 34 fc 66 2e 0f 1f 84 00
[193987.740258] Code: 8b 0d b6 5a 84 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 53 9b 34 fc 48 8d 05 03 da 7a 01 48 8b 0d 95 5a 84 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 32 9b 34 fc 66 2e 0f 1f 84 00
[193987.740349] Chrome_~dThread[31379]: segfault at 0 ip 00007f43ce0decd6 sp 00007f43c5171a80 error 6 in libxul.so[7f43ca41e000+5317000]
[193987.740354] Code: 8b 0d b6 5a 84 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 53 9b 34 fc 48 8d 05 03 da 7a 01 48 8b 0d 95 5a 84 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 32 9b 34 fc 66 2e 0f 1f 84 00
[193987.740440] Chrome_~dThread[1641]: segfault at 0 ip 00007f1aeb0d7cd6 sp 00007f1ae216aa80 error 6 in libxul.so[7f1ae7417000+5317000]
[193987.740446] Code: 8b 0d b6 5a 84 03 48 89 01 c7 04 25 00 00 00 00 2d 02 00 00 e8 53 9b 34 fc 48 8d 05 03 da 7a 01 48 8b 0d 95 5a 84 03 48 89 01 <c7> 04 25 00 00 00 00 df 09 00 00 e8 32 9b 34 fc 66 2e 0f 1f 84 00



Дебаггером поймать не удаётся.
С чистым профилем — тоже безрезультатно.

Firefox ESR работает, но там другая проблема (отключение аппаратного ускорения не помогает)

Куда копать?

 ,

annerleen ()

Увольняюсь из systemd хейтеров

Привет, ЛОР!
Решил тут уволиться из systemd-хейтеров.

Предыстория.

Поднимали мы тут инстанс btcpay, соответственно, нужно было позаботиться о том, чтобы демоны btcpayserver с его прислужниками, а так же bitcoind, litecoind постоянно были запущены, не падали и перезапускались если вдруг что.

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

Ну, и поехали, минута в гугле и был написан следущий юнитскрипт:

[Unit]
Description=btcpay
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=3
User=btcpay
Group=btcpay
WorkingDirectory=/var/btcpay/btcpayserver-1.0.3.36
ExecStart=/var/btcpay/btcpayserver-1.0.3.36/run.sh --chains btc,ltc --externalurl https://btcpay.ourdomain.name

[Install]
WantedBy=multi-user.target


И ещё один --

[Unit]
Description=bitcoind
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=3
User=btcpay
Group=btcpay
ExecStart=/var/btcpay/bitcoin/bitcoin-0.17.0/bin/bitcoind

[Install]
WantedBy=multi-user.target


 # systemctl enable bitcoind && systemctl enable btcpay && reboot


Выкуриваем сигаретку, пинаем сервер — опа!
Всё поднялось и работает. Если что упадёт — перезапускает.
Логи показывает по $ journalctl -u bitcoind.
Ну что ещё нужно для счастья на сервере?

#вся_суть_systemd_хейтеров

_____________________________________________________________

А вот за то, что его прибивают гвоздями к десктопному линуксу и без него, например, не работает networkmanager — это всё ещё крайне и крайне печально.

 

annerleen ()

NFC Field и считывание координат

Добрый вечер, ЛОР!

Дано: 60 уникальных «меток», есть «поле» размером, допустим, 1х1 метр, эти метки распределены по полю.
Задача: детектить, когда и откуда метку убрали и положили.

Первое на ум пришло NFC, верно ли?
Есть ли какой-то способ одним NFC-ридером определить «координаты» (относительно него, например) убранной/поставленной метки?

Решение с 60 NFC-ридерами кажется каким-то оверкиллом.
Не обязательно это должно быть NFC, может, есть что-то другое?

Пните в нужном направлении, пожалуйста.
Заранее спасибо!

 

annerleen ()

ООП в Python

Добрый день, ЛОР.
Учусь ООП (точнее, его подобию) в Питуне.

Сходу вопрос: как можно разбить класс на несколько файлов?
Очевидное наследование, однако голова кипит и пока не могу сообразить, как и куда его пихать.

Допустим, есть класс, в нём есть метод logger(), который формирует и возвращает лог-строку с полезной информацией:

class BotInstance:

    chat_id = None
    users = []
    bot_debug = False

    def logger(self, message = ''):
        info = "[Chat {0}] [{1} users]".format(self.chat_id, len(self.users))
        return info + message


Как правильнее всего вынести эту функцию в отдельный файл?

 

annerleen ()

Выключить sleep mode при подключении bluetooth гарнитуры

Сабж.
Чем такое можно реализовать на андроиде?

Спасибо заранее.

 

annerleen ()

Избежать кучи таблиц в Postgres'е

Привет, ЛОР.
Вопрос такой: есть сервис, есть его БД в постгресе, у этого сервиса, допустим, 1000 пользователей.

Для каждого пользователя имеется возможность создания таблички кастомной обработки правил (пусть это будут правила совершения вызовов на телефон пользователя), так вот, вопрос — как правильнее всего поступить?


1 вариант — табличка обработки вызовов для всех общая;

table_rules
---------------------------------
owner | phone | ruleid | ...


И к каждому правилу мы приписываем owner и phone, что, как мне кажется, не есть правильно.

2 вариант — табличка под каждый номер телефона:

table_12000000001_rules
---------------------------------
ruleid | ...


Но тогда в «корне» БД будут сотни, тысячи таких таблиц, что тоже, наверное, не есть хорошо.

Может, есть ещё какие-то варианты?
Как это грамотнее реализовать в postgresql?

 

annerleen ()

Настройка IPv6 DHCP

Добрый вечер, ЛОР.
Хочу поддаться веяниям моды и настроить себе IPv6.

Провайдер сию возможность даёт.
Интернеты по VDSL, модем Zyxel VMG1312-B10D в режиме бриджа.

При попытке запустить dhclient -v -6:

root@lightbringer ~ # dhclient -v -6 world0
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on Socket/world0
Sending on   Socket/world0
PRC: Soliciting for leases (INIT).
XMT: Forming Solicit, 0 ms elapsed.
XMT:  X-- IA_NA "\d<Y"
XMT:  | X-- Request renew in  +3600
XMT:  | X-- Request rebind in +5400
XMT: Solicit on world0, interval 1010ms.
RCV: Advertise message on world0 from fe80::200:5eff:fe00:1.
RCV:  X-- IA_NA "\d<Y"
RCV:  | X-- starts 1540999784
RCV:  | X-- t1 - renew  +0
RCV:  | X-- t2 - rebind +0
RCV:  | X-- [Options]
RCV:  | !-- Status code of no addrs, IA_NA discarded.
RCV:  X-- Server ID: 00:03:00:01:84:26:2b:61:31:71
PRC: Lease failed to satisfy.
XMT: Forming Solicit, 1010 ms elapsed.


Если мопед перевести в режим Routing, то он получает адрес и каким-то образом работает.

Шо это може быть?

 

annerleen ()

RSS подписка на новые темы