LINUX.ORG.RU

Сообщения alozovskoy

 

AJAX/Websocket + БД

Форум — Web-development

Привет!

Пишу небольшую вебморду, которая будет просто отдавать данные из БД. Данные в БД - информация о работе некоторых скриптов - они пишут в одну таблицу время запуска\окончания работы, exit code и т.д., в другую - данные по промежуточным этапам своей работы, принцип тот же. С учетом того, что большой нагрузки не предвидится (максимум 3..4 простых инсерта в секунду в «пике») я взял sqlite (да и полноценный сервер БД тащить совсем не хочется).

В вебморде есть несколько вариантов отображения информации - текущие выполняемые скрипты, небольшая статистика - например, сколько из последних 10 скриптов отработали успешно, а сколько «упали», и т.п. Другой случай - отображение информации по текущему выполняемому скрипту (те самые промежуточные шаги).

Хочется сделать это все в реалтайме, но не могу понять как это делать правильно. Изначально планировал взять AJAX, с ним я уже сталкивался, да и сама технология, на мой взгляд, довольно простая - отправляй запросы, сервер его обрабатывает (селект в БД делает) и отдает ответ. Но потом почитал интернеты (и тут тоже топик завел), где и узнал о websocket'ах. WS показался интересным, решил в качестве сервера использовать tornado (python). С учетом того, что у меня планируются постоянные соединения клиент<>сервер и отправка данных не только по запросу пользователя, мне кажется что лучше будет не на каждый поток по определенному таймеру выполнять селекты той же статистики, а выбрать ее один раз и разослать клиентам. Не будет ли это слишком «тяжелой» задачей по сравнению с AJAX (там то клиентские запросы «размазаны» по времени) или все-таки каждый поток обрабатывать отдельно? Стоит ли использовать ws везде? То есть, например, статистику по текущим таскам и «лог» текущей задачи лучше показывать в реалтайме, а вот информацию о «последних 10 задачах» может вынести в AJAX и дергать раз в какие-нибудь 10 секунд (тут реалтайм не критичен)? Опять же везде пишут что ws хорошо работает с маленькими частыми порциями данных, но тут у меня получится что одна строчка из бд будет весить минимум байт 200 (хотя все равно меньше размера заголовков в случае AJAX получается). Всякую статику, я так понимаю, вообще нет смысла отдавать через websocket? В общем с виду технология крутая, но как правильно использовать - не пойму.

Ну и еще один вопрос вдогонку - стоит ли как-то кэшировать данные из sqlite, и если да то может что-то посоветуете?

Заранее спасибо!

 ,

alozovskoy
()

Зачем ноутбуку «открываться» на 180°

Форум — Talks

Собственно, сабж (иллюстрация).

Есть ноут который может так открываться, никак не пойму зачем это нужно - обычно у меня угол между клавиатурой и дисплеем примерно 90..100°. Расскажите о своих юзкейсах этой фичи, пожалуйста.

 

alozovskoy
()

Что полезного сделать на локалхосте

Форум — Talks

Привет!

Собственно, что такого можно поделать на локалхосте, что в будущем может пригодится при работе каким-нибудь сисадмином или вроде того? Думаю что умение писать виджеты для осома да пересобирать генту вряд ли пригодится, а разворачивать отказоустойчивый кластер БД и прочие хайлоады не имеет смысла просто потому что должную нагрузку локалхостом не создашь, соответственно полезный опыт будет практически нулевой.

Сейчас потихоньку разбираюсь с LXC, думаю это может пригодится. Что еще можете посоветовать, ну или может есть истории успеха?

 ,

alozovskoy
()

Помогите с NAT'ом

Форум — Admin

Добрый день!

Есть ПК (дальше «хост»), на котором есть LXC-контейнер (дальше «контейнер»). Хост по vpn подключен к другой сети, в которую хочу получить доступ из контейнера. Пингую хост за vpn из контейнера - ответов не получаю. На хосте в tcpdump вижу такую картину - пинг уходит с ip контейнера в качестве источника, а ответ приходит с ip хоста (не контейнера) в качестве назначения и дальше в контейнер пакет не натится. Ресурсы в интернетах из контейнера доступны. Виртуалка в virtualbox на этом же хосте нормально может общаться с хостами за vpn. В случае с virtualbox в настройках сетевого адаптера указан просто NAT, конфиг контейнера:

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = virbr0
lxc.network.ipv4 = 192.168.122.2/24

ifconfig хоста (lo не стал писать)

tap0      Link encap:Ethernet  HWaddr 02:ac:36:d9:56:3a  
          inet addr:172.16.3.31  Bcast:172.16.3.255  Mask:255.255.255.0
          inet6 addr: fe80::ac:36ff:fed9:563a/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1380  Metric:1

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          
wlan0     Link encap:Ethernet  HWaddr 74:e5:43:78:d4:f0  
          inet addr:10.0.1.210  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::76e5:43ff:fe78:d4f0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

tap0 - это интерфейс vpn-клиента, virbr0 - интерфейс lxc, wlan0 - wifi, то есть выход в интернеты.

iptables

*mangle
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT


*nat
-A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT

*filter
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
COMMIT

Правила в iptables не меняются при включении\отключении виртуалки в virtualbox. На мой взгляд все в норме, но явно что-то упускаю.

В общем я не знаю куда копать, подскажите, пожалуйста. Заранее огромное спасибо!

 , ,

alozovskoy
()

Расскажите про systray

Форум — Desktop

Привет!

Расскажите мне, пожалуйста, как работает systray, для примера на pypanel (мало кода, python, все должно быть просто). Судя по http://standards.freedesktop.org/systemtray-spec/systemtray-spec-latest.html и если я правильно понял в трее находятся не какие-то «иконки», а окна, то есть трей просто располагает «окно» нужного размера в определенном месте экрана. Со стороны приложения это позволяет еще и все что угодно в этом «окне» рисовать (как, например, в skype, который показывает количество непрочитанных сообщений). Если начать ковырять трей в pypanel то я могу максимум получить имя окна, которое пытается попасть в трей, никаких путей для иконок я там не нашел.

В общем, у меня два вопроса: правильно ли я понял как это все работает и есть ли возможность (а может быть готовое решение) как заменить иконки в трее например на текст? Во втором случае мне еще нужно как-то отследить что пытается отобразить приложение - всякие IM могут там показывать сетевой статус, новые сообщения и неизвестно что еще. Это реально?

 , ,

alozovskoy
()

Поиск opensource проектов

Форум — Talks

Привет!

Периодически выдается свободное время, которое хочется потратить с пользой, и иногда это время хочется использовать с пользой не только для себя. Как вариант - пописать что-нибудь для opensource. Но я никак не могу найти интересных (и при этом не слишком громоздких и сложных) проектов на том же GitHub, например. Как вы ищете подобное? Может где-то есть сайт, на котором разработчики пишут что-то вроде «я вот пилю интересную штуку, присоединяйтесь!» или даже «помогите написать скрипт»? Про фриланс в курсе, но это не то, что мне нужно - хочется делать до, что самому интересно, и самому контролировать свое участие в проекте, а не исполнять прихоти заказчика.

Пока пытаюсь писать для того, что использую - WM, система мониторинга etc, но иногда «хочется чего-то нового».

 , ,

alozovskoy
()

Зачем форкать?

Форум — Talks

Товарищи, объясните, пожалуйста, зачем делают форки? Вот в теме про RIP CrunchBang'а на вопрос «чем он отличается от Debian» мне сказали что «там был годно настроенный openbox». Настройки openbox, на сколько мне известно, это просто xml'ка (ну может еще дополнительно какие пакеты поставить придется), это нельзя было просто залить в апстрим или вообще просто выложить эти конфиги? Зачем форкать целый дистр просто для того чтоб впилить туда иначе настроенное DE?

Или вот Ubuntu - зечем нужны всякие Kubuntu, Lubuntu, Xubuntu etc, вопрос по выбору DE нельзя было вынести в установщик и поддерживать одну какую-нибудь Megabuntu?

Или кто-то там форкает Debian чтоб выпилить из него systemd - нельзя просто на этапе установки дать выбор системы инициализации, а потом просто собирать пакеты с нужными опциями (или держать в репах две версии пакетов)? Ведь очевидно, что гораздо проще поддерживать один дистр, чем over9000 слегка отличающихся? Дело в фатальном недостатке «форкуемой» системы?

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

 ,

alozovskoy
()

Realtime вывод результатов команды на страницу

Форум — Web-development

Привет!

Подскажите, пожалуйста, чем можно реализовать realtime вывод результатов выполнения скрипта\команды на вебстраницу используя python (планируется использовать «встроенный» вебсервер, то есть Nginx\Apache и прочие использоваться не будут). Вариант дергать «обработчик» скрипта через небольшие промежутки времени через Ajax мне не очень нравится, да и вообще нужен реалтайм. Может проще для этого встроить какой-нибудь webshell с ограниченной функциональностью? Гуглятся варианты с node.js в основном, нашел еще вот такой вариант, но в браузере у меня не работает, текст выводится только после окончания выполнения скрипта (через curl все в норме).

В общем, как обычно решаются такие задачи? Заранее огромное спасибо!

 ,

alozovskoy
()

LUG Воронеж

Форум — Talks

Так как форум Воронежского LUG лежит (SQL ERROR [ postgres ]) спрошу тут - товарищи, у нас LUG «заглох»? Встреча в 2013 году похоже последняя была, на форум вот не попасть. Или куда-то перекатились? Кастану тех кто был в прошлой новости про встречу LUG, ссори если кого лишнего прихватил:

dexpl hippi90 MikeB Solace imul ns_ramesses BattleCoder DarkAmateur xroff mish_mish elve smalldeb Sauron_AZM selivan

 ,

alozovskoy
()

Вышел Qtile 0.9.0

Новости — Open Source
Группа Open Source

20 января вышла новая версия Qtile - тайлового оконного менеджера, написанного и конфигурируемого на python. Релиз получил номер 0.9.0.

Изменения в релизе:

  • Зависимости
    • xpyb заменен на xcffib (XCB bindings)
    • py2cairo заменен на cairocffi (Cairo bindings)
    • PyGTK заменен asyncio (для цикла событий, а биндинги pangocairo обрабатываются внутренним механизмом)
    • gobject необходим, если какие-либо части оконного менеджера будут работать через dbus (например, если используются виджеты «mpris» или «libnotify»)
  • Улучшения
    • Добавлена поддержка Python3 и pypy (изменены зависимости)
    • Добавлен новый вариант разметки (layout) для вертикальных мониторов
    • Добавлен хук «startup_once hook», вызываемый единожды за сессию (то есть он не вызывается если Qtile был перезапущен через вызов lazy.restart()). Это устраняет необходимость в функции вроде «execute_once()», которая присутствует в большинстве пользовательских конфигураций
    • Добавлена функция для отображения\скрытия панели (lazy.hide_show_bar())
    • Добавлены предупреждения при невозможности импортировать зависимости виджета
    • Больше важных сообщений отображается в логе, что сделало его более полезным
    • Реализован класс виджетов «text-polling», упрощающий реализацию виджетов, получающих информацию в цикле от внешних приложений.
    • Добавлена справка (man)
    • Документация существенно обновлена, а описания виджетов и разметки теперь генерируются автоматически из docstring
    • Добавлен новый виджет «ImapWidget» для проверки почтовых ящиков через imap
  • Исправления
    • Для улучшения работы приложений на java стандартное имя менеджера (wmname) изменено на «LG3D».
    • Весь код прошел стилистическую проверку при помощи flake8
    • Уровень логирования «по умолчанию» - WARNING
    • Все виджеты теперь конфигурирются встроенными средставами
    • Окна с ролью «About» по умолчанию плавающие
    • Удалено лишнее исключение «clauses»

Репозиторий на GitHub

>>> CHANGELOG в репозитории проекта

 , ,

alozovskoy
()

Ограничить область перемещения курсора

Форум — Desktop

Привет!

Есть два монитора, конфигурирую через xrandr, wm - qtile. Хочу ограничить область перемещения курсора мыши одним монитором, то есть чтоб за границы монитора (на второй монитор) курсор не перебегал. Нашел несколько похожих топиков, в том числе и тут, но простого рабочего варианта не увидел. Что пробовал:

* Отслеживать координаты курсора и перемещать курсор при помощи xdotool в скрипте с while true - жрет CPU, выглядит ужасно - курсор дергается около границы, а не «упирается» в нее.

* dualscreen-mouse-utils (David Antliff) 2009 года (советуют на гентувики и аналогичных топиках) - тут предлагается использовать перемещение курсора между разными screen, в ситуации когда у меня один screen из двух мониторов оно не работает.

Сейчас рассматриваю вариант запуск двух xserver на разных мониторах, но такой вариант, как я думаю, несет в себе проблемы с перемещением окон между мониторами (это висит на хоткеях WM сейчас и проблем с этим нет, то есть курсор мне для перемещения не нужен) и буфером обмена (тут можно, конечно, закостылить).

И, да, курсор перекидывать между двумя мониторами мне удается через xdotool mousemove с параметром --screen, так что тут проблем нет.

В общем, что можете посоветовать? Может есть какой-то WM (в первую очередь интересуют тайловые) где это есть «из коробки»?

Заранее спасибо!

 , , ,

alozovskoy
()

«Легальный» открытый wi-fi

Форум — Talks

Привет!

Хочу у себя открытую точку доступа поднять из альтруистических соображений, в связи с чем два вопроса из области «законодательства»:

1. Должен ли я как-то предупреждать пользователя что у меня могут сохраниться его маки, логи dns-запросов и так далее? Не «окажется» ли что я шпионю за своими соседями?

2. Если клиент моей открытой сети в интернетах напишет «вася - редиска», могу я как-то объяснить что хоть ip и мой, но писал не я? Баны на всяких форумах меня не очень интересуют, меня больше заботят вопросы, которыми занимается роскомнадзор.

Пишу сюда потому, что здесь есть специалисты и опытные товарищи по любому вопросу, да и работать все это будет под управление GNU/Linux.

Заранее спасибо за информацию!

 

alozovskoy
()

DD-WRT, деградация соединения

Форум — General

Привет!

Есть роутер, который работает под управлением DD-WRT v24-sp2 (12/03/14) std (SVN revision 25544), со временем (около 3-5 дней примерно) связь с роутером ухудшается, например пинги идут около 200 мс, при чем ухудшается постоянно - на второй день после рестарта связь хуже, чем на первый и т.д. После перезагрузки роутера пинг становится стабильным, около 1-2 мс. Еще интересно что время ответа на пинги выглядит вот так:

icmp_seq=14 time=25.3
icmp_seq=15 time=23.4
icmp_seq=16 time=22.0
icmp_seq=17 time=20.5
icmp_seq=18 time=50.5
icmp_seq=19 time=17.0
icmp_seq=20 time=15.7
icmp_seq=21 time=14.7
icmp_seq=22 time=11.9
icmp_seq=23 time=10.7
icmp_seq=24 time=8.75
icmp_seq=25 time=6.92
icmp_seq=26 time=5.61
icmp_seq=27 time=3.74
icmp_seq=28 time=1.76
icmp_seq=29 time=99.8
icmp_seq=30 time=97.9
icmp_seq=31 time=96.8
icmp_seq=32 time=94.9
icmp_seq=33 time=93.9

Подскажите, пожалуйста, куда копать? По вебморде роутера проблем с памятью\CPU\количеством соединений нет.

Заранее огромное спасибо!

 , ,

alozovskoy
()

Посоветуйте логику хранения конфигов

Форум — General

Привет!

Не могу продумать логику хранения конфигурационных файлов, надеюсь у кого-то есть истории успеха и он ими поделится.

Конфиги планирую хранить в git, но это не обязательно.

У меня есть несколько хостов, например host1...host4. На всех 4 хостах есть каталог configdir. На всех хостах в configdir есть файл config1, он везде одинаковый. На хостах host1 и host3 есть конфиг config2, и его содержимое на каждом хосте разное (на host2 и host4 этого файла нет вообще). Так вот, если делать это на уровне веток то их (веток) будет очень много - это у меня в примере 4 хоста = 3 ветки, по факту их гораздо больше (хотя тут можно решить путем заведения отдельных реп для разных групп хостов). Но как быть с ситуацией если я меняю что-то в config1? мне нужно пробежаться по веткам и смержить туда master, что не очень удобно. Опять же, если исправить config1 в немастер-ветке то эти изменения по сути пропадут.

Другой вариант использовать симлинки, но как это прикрутить к vcs мне не понятно.

В общем, нужны советы. Заранее спасибо!

 

alozovskoy
()

Как определить что ip адрес статический?

Форум — Talks

В правилах написано

Личная информация о пользователях

Модераторы сайта имеют доступ к информации о пользователе, недоступной обычным пользователям. Следующая информация считается личной:

<...>

  • IP-адрес пользователя, географическое местоположение, факт наличия статического IP, факт наличия нескольких пользователей на этом IP;

<...>

А как это можно определить что мне выдается статический адрес? По истории постов посмотреть с какого адреса были? Google что-то не помог. Интересует именно как из вне понять что пришли со статического адреса, параметры моего подключения мне известны.

Вроде как вопрос для толксов, хоть и не про Linux и технический.

 

alozovskoy
()

Дублируются клики беспроводной мыши

Форум — General

Привет! Есть беспроводная мышь Defender Magnifico MM-505, периодически замечаю что клики дублируются либо вообще происходят «фантомно» - выделяешь что-нибудь мышью, раз - выделение сбросилось. Дублирование отловил по xev - делаю один клик, xev пишет две пары press-release. Такое происходит не часто, примерно раз в 10 - 15 кликов, но начинает доставать. Под оффтопом попробовал - такого эффекта нет, при этом мое местоположение, а также окружающих с их техникой не меняется, откуда делаю вывод что дело таки в онтопике. Где и что в таком случае можно попробовать донастроить? Заранее спасибо!

 ,

alozovskoy
()

Iceweasel не резолвит домен, заканчивающийся на .local

Форум — General

Привет! У меня в качестве DNS-сервера используется dnsmasq, который перенаправляет запросы разным внешним dns-серверам в зависимости от url. Но это не суть, просто чтоб описать логику работы. Проблема в том, что iceweasel даже не пытается резолвить через мой dnsmasq адреса, которые заканчиваются на .local (это «видно» в логе dns-сервера, то есть видно что запросов не приходит). Как можно решить эту проблему? И, да, dns-сервер корректно такие запросы обрабатывает, т.е. через nslookup я мормально могу резолвить адрес foobar.local, а вот через iceweasel - нет. Заранее спасибо за ваши советы!

 ,

alozovskoy
()

Ограничить пользователю доступ в один из своих каталогов

Форум — General

Привет! Возможно ли ограничить доступ пользователю в один из своих каталогов, используя пароль или что-то вроде. Ситуация - есть удаленный сервер, на котором есть пользователь user - это общая учетка для нескольких пользователей, которые подключаются по ssh. В домашней директории этого пользователя есть разные файлы, которые могут эти ssh-пользовватели просматривать. Схема устоявшаяся, и что-то менять будет сложно. Нужно в этом же ~user сделать каталог, вход в который будет ограничен для всех этих ssh-пользователей кроме некоторых. Внутри этого каталога в vitualenv будет развернуто несколько проектов на python если это важно. Возможно ли такое? В силу специфики администрирования этого удаленного сервера заводить еще одного пользователя не желательно, а запретить всем, кто подключается по ssh запускать скрипты из этого каталога с окружением python устно или письменно просто нереально. Буду очень благодарен за ваши советы.

 , ,

alozovskoy
()

Разные dns-сервера в зависимости от домена

Форум — General

Привет! Подскажите, пожалуйста, возможно ли настроить dns-клиент так, чтоб он обращался к разным серверам в зависимости от того, хост какого домена мне нужно найти? То есть, например, домен local я хочу искать на 192.168.0.111, домены ru, com, org - на 8.8.8.8, а все остальное пусть мне возвращает тот dns-сервер, который пришел по dhcp. Такое возможно? Заранее спасибо!

 

alozovskoy
()

Qtile - тайлинговый wm на python

Галерея — Скриншоты

Решил перевести рабочий ноут на Linux. Попробовав xfce и unity, решил собрать себе среду самостоятельно. Нужен был тайлинговый WM, и я решил остановиться на сабже. Сам Qtile и конфиг к нему написаны на python, что и стало решающим аргументом в его (Qtile) пользу.

Беглый поиск по ЛОРу показал что проект считается мертвым, но коммиты на GitHub проекта опровергли это предположение.

Собственно тайлинг как-таковой я редко использую (на 15" особо не разгуляешься), так что чаще всего у меня одно окно на тег, но вариантов тайлинга в сабже из коробки около 10, а виджетов (список окон, трей, всякие графики и заряды батарей) и того больше, так что можно ставить и сразу пользоваться.

В общем, WM вполне годный, любителям тайлинга советую попробовать.

Сайт проекта

>>> Просмотр (1366x768, 93 Kb)

 ,

alozovskoy
()

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