LINUX.ORG.RU

Сообщения Spectator

 

Загнать трафик, поступающий на IP в VPN

Преамбула: я не силен в терминологии и хочется странного, но почти уверен, что это возможно.

В сети (192.168.1.0/24) есть домашний сервер (192.168.1.2), которому я хочу выдать дополнительный адрес (192.168.1.3) и использовать его как роутер в VPN. Все нужно, естественно, для борьбы с блокировками и раньше этим занимался непосредственно роутер, но у него какие-то проблемы с хардварным офлоадингом и wireguard. Поэтому хочется вынести подключение к VPN на отдельное устройство и гнать нужный трафик через него.

У меня пока получалось только заставить сервер просто маскарадом делиться интернетом, либо отправлять весь трафик, в том числе свой собственный через VPN.

Собственно вопрос - можно ли это сделать? В какую сторону копать? Есть ли офигенно простой способ настроить это через networkd?

 

Spectator
()

Апгрейд офисной техники - стоит ли внедрять VDI

Дано - небольшая IT-фирма, офис ±4 человека. Вся техника до 2013 года выпуска, что начинает сказываться. Роли следующие:

Фронтенд (верстка, жс) - сейчас сидит за MacMini late 2012, MacOS - вынужденная мера из-за отладки интерфейсов в safari. Основной инструмент - webstorm.

2x бекенд разработчики (python) - ПК разной конфигурации i3 и i7, 12-16 Гб памяти. Специфика работы включает периодическую работу с большими наборами данных, оперативка лишней явно не бывает. Инструментарий - pycharm, jupyter.

Техподдержка/аккаунт-менеджер - ПК с windows на i3, попытки пересадить были, но успехом не увенчались.

Основная идея состоит в том, что потребности верстальщика и техподдержки ниже, чем у разработчиков, а у тех, в свою очередь, использование ресурсов тоже эпизодическое. Если стоимость компьютера для разработки по моей оценке составит 25-30 тысяч, то есть ли смысл закупить сервер и виртуализировать рабочие места?

Вопросы собственно следующие:

  1. Целесообразно ли вообще это делать для четырех рабочих мест?
  2. Какие решения есть, какие советуете использовать и сколько они будут стоить?
  3. Можно ли вообще виртуализировать MacOS?

 

Spectator
()

Wayland и eGPU

Протестил на конфигурации друга работу ноутбука с GTX 1060, подключенным через akitio thunderbolt адаптер - рай, сказка, всё хорошо, но вопрос не в этом.

Для X-ов определение основной видеокарты выполняется через настройку PrimaryGPU, которая для арча прописана в 10-nvidia-drm-outputclass.conf:

/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf

Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "PrimaryGPU" "yes"
    ModulePath "/usr/lib/nvidia/xorg"
EndSection

Если я правильно понимаю, то X сервер при запуске находит несколько GPU, и если один из них nvidia, то он и считается главным для любого устройства вывода.

А как с этим будет работать wayland? Не смог нагуглить ни «wayland egpu», ни конфигов weston, которые отвечали бы за выбор устройства (в арчвики есть упоминание нескольких выводов и косвенное упоминание нескольких карт, но не более).

Гугл говорит, что wayland на данный момент не поддерживает гибридную графику, но опять же - это не гибридная графика - всё запускается и работает на одном GPU, хотя и можно менять выход и возвращать изображение на экран ноутбука. В моём случае все запустилось и заработало без bumblebee, optimus или primus.

 

Spectator
()

DHCP клиент и сервер на одном интерфейсе

Работаю над устройством для клиента (raspberry pi с несколькими модулями), для простоты подключения хочу сделать следующее:

На одном единственном интерфейсе малинки поднять dhcp-сервер - на случай, если пользователь подключит её напрямую к компьютеру, и dhcp-клиент - если она подключается к роутеру. Это всё нужно для доступа к веб-интерфейсу, через который пользователь будет играться с настройками.

По-идее, ничего сложного нет, но хочу заранее узнать, насколько это плохая идея? Не устроит ли такое устройство анархию в сети, будучи подключенным к роутеру клиента? Как будет себя вести dhcp-клиент, имея на интерфейсе захардкоденный адрес и адрес, полученный от роутера?

 ,

Spectator
()

Как заставить устройство инициировать bluetooth pairing?

Пишу утилиту для синхронизации дешевого китайского фитнес-трекера. Расковырял исходники мобильного приложения, более-менее разобрался в принципах работы: ищет устройство с заданным SPP UUID, подключается к нему через RFCOMM и дальше уже просто RPC. Проблема следующая - при попытке подключения bluez генерирует пин, который нужно ввести на устройстве с тремя кнопками, одна из которых - выключение. При синхронизации с андроидом трекер сам генерирует пин и ввести его нужно уже на телефоне. Собственно вопрос - как при pairing'е указать, что код должен быть сгенерирован на другой стороне и можно ли это вообще?

 ,

Spectator
()

Непонятный китайский проц

Искал CPU на замену в свой ноут с PGA988 и наткнулся на такое чудо: http://www.ebay.com/itm/On-Sale-Intel-Core-i5-420M-420-2-13Ghz-3MB-PGA988-Mob...

Ъ: Intel Core i5 420m

Ближайшее, что выдает офсайт интела - Intel® Core™ i5-460M, 420M не находит. На других ресурсах этот процессор есть, но помечен как «This part is an engineering sample.».

Собственно, что тут происходит? Китайские производители решили оставить себе чертежи пробного проца и запустили массовое производство? Есть ли смысл покупать его?

 

Spectator
()

А вы используете меню приложений?

По какой-то непонятной причине krunner умер и отказался воскресать. И в этот момент я понял, что понятия не имею, в каком разделе запрятан konsole, sublime text и hipchat. Затем я попытался вспомнить, когда вообще последний раз использовал это меню и не смог.

В Unity есть линзы, в макоси - spotlight, у меня - сломанный krunner. Для меня, наверное, больше не существует этого древовидного рудимента организации приложений. А для вас?

 

Spectator
()

Что использовать для администрирования?

Комплексный вопрос, поэтому такой мутный заголовок.

Я работаю в компании, которая занимается SaaS-решениями. Со стороны бекенда это выглядит как код на питоне (django, flask, прочая лабуда), запускаемый через uwsgi и тупо слушающий запросы от клиентов. Каждое клиентское приложение (просто процесс, ассоциированный с определенным клиентом) запускается с отдельными переменными окружения, может иметь чуток разные настройки. Основными задачами являются:

  • Деплой нового кода
  • Поднятие приложений для новых клиентов
  • Мониторинг (логи, ошибки, статистика)

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

Периодически поддержка этого сервиса становится сложной и я задумываюсь о переезде на что-нибудь новомодное. Сейчас читаю про решения Canonical (Juju, LXD, Snappy) и те, с которыми они связаны (Docker, OpenStack), но из-за слишком большого количества маркетингового булшита не могу понять, нужны они мне или нет.

По частям:

  • Docker

    Насколько я понимаю, его основными плюсами считаются контейнеризация и контроль зависимостей в одном пакете. Имея более 500 приложений, насколько будет велик оверхед запуска каждого из них в контейнере?

  • OpenStack

    Не до конца понимаю суть. Абстрагировать администрирование от железа? В каких случаях его использование будет наиболее удобно?

  • Juju

    Выглядит как оркестрировалка сервисов для ленивых. Тот же вопрос: юзкейсы, зачем, почему, что делает лучше?

  • LXD

    LXC + REST API?

Хотелось бы услышать какие-нибудь практические мнения касательно этих технологий, и, при возможности, советы по использованию или рекомендации.

 , ,

Spectator
()

OpenWRT режет скорость.

D-Link DIR320 NRU (rev. b1), собрал на него OpenWRT из транка, т.к. заводская прошивка имеет привычку виснуть насмерть. Работает нормально, но даже в локальной сети провайдера, где раньше с заводской прошивкой было 90-95 мегабит, теперь только 60-70.

На какие параметры конфигурации смотреть в первую очередь? Дополнительных сервисов на роутере нет (samba, торренты, веб-сервер, etc.).

 

Spectator
()

Практика использования Landscape

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

Есть ли какие-нибудь истории успеха, связанные с landscape?

 ,

Spectator
()

Как графически отобразить структуру JSON/BSON?

Время оформлять отчет по дипломной работе, а у меня проблема: не могу найти способ наглядного и более-менее стандартного отображения структуры BSON. Все нормальные люди, использующие реляционные базы данных, засунули в отчет типичную uml database диаграмму, а мне она что-то нифига не подходит. Например, как отображать списки?

Единственное, что нашел - это, только это больше походит на творческую самодеятельность, чем на общепринятый метод.

Spectator
()

Как убрать пустую страницу перед \chapter?

Формат документа [a4paper,12pt,oneside]{report}, на stackoverflow говорят, что должен помогать либо oneside, либо openany, но ни тот, ни другой не помогает. Пробовал переопределить команду, убрав \clearpage и \cleardoublepage - все ожидаемо, глава начинается сразу после текста.

По-идее, в оригинале команды выполняется проверка на формат документа, а потом вызывается уже либо \clearpage, либо \cleardoublepage. Но дело в том, что ведут они себя одинаково - переносят главу на страницу с четным номером. Аналогичным образом себя ведет \pagebreak.

Собственно, что я делаю не так?

 

Spectator
()

Изменить переменные окружения «на лету»

Вообще, возможно ли? При создании процесса передаю ему модифицированную копию системных переменных, но возникает необходимость «обновить» их во время работы процесса.

Для подробностей - запускаю uwsgi как мастер-процесс для нескольких воркеров, которые в свою очередь, берут часть настроек из os.environ. Когда возникает необходимость обновить их, можно послать SIGHUP, это выполнит плавный перезапуск. Но вот настройки останутся те же. Поэтому текущее решение - убивать процесс целиком и запускать заново, с новым окружением.

 ,

Spectator
()

Вспомнил былую историю

Как-то раз однокурсник принес очень интересный внешний HDD - любой линукс при подключении он валил в kernel panic, венда же при включении она не шла дальше логотипа, пока он подключен, при выключении - так же, но до аналогичного экрана. В диспетчере устройств не отображался никак.

Сейчас вспомнил и задумался - что вообще с ним такое могло произойти? Тупо полетел контроллер и выдавал магию, или это проделки NSA и их бэкдоры пытались проникнуть в систему?

Spectator
()

Что делать, когда ForeignKey всё-таки нужен?

Рассматриваю возможность переноса одного проекта в компании на нереляционную структуру данных. Есть следующий кусок структуры:

Услуга:
    Код (PK)
    Наименование
    Цена
    
Работа:
    Код (PK)
    Код услуги (FK)
    Цена (дублируется из услуги, иногда изменяется)
    
Материалы:
    Код (PK)
    Код работы (FK)
В текущей логике, сталкивались с некоторыми проблемами (в основном, из-за тупых клиентов): клиент, игнорируя предупреждение о том, что при удалении услуги, будут удалены все связанные с ней работы, жамкал по кнопке, а потом звонил, и требовал поднять бэкап (галочку "[x] пометить как неактивную" некоторые игнорируют).

В нереляционной модели, отношение 1:M у работы-материалов будет просто включено как поддокумент, т.е.

    Код (PK)
    Код услуги (FK)
    Материалы: {
        ...
    }
А вот отношение работы к услуге я представить пока не могу.

Вносить все выполненные работы внутрь услуги не выйдет, работы группируются по еще одному общему предку (по 1:M), а в отчетах нужно обязательно иметь возможность показать все работы, проведенные по данной услуге.

Если я правильно понимаю, каждый корневой документ в MongoDB имеет уникальный ключ _id, по которому было бы логично руками прописывать связь, без устроения FK. Но тогда, при удалении услуги, работа «ссылается» на несуществующий документ, что отчасти хорошо, так как не теряются данные, но плохо в том, что отсутствует информация.

Как вариант я рассматривал полностью дублировать поля услуги в работе, но это значительно увеличит размер хранимой информации.

Как решать подобные вещи? Очень сложно после SQL воспринимать данные как документы. По документации, подобная структура не очень одобряется.

 ,

Spectator
()

С каких пор хром и фаерфокс поменялись местами?

В какой-то момент заметил, что система дико тупит. Причем тупит все крепче и крепче, вплоть до хардварного ресета. После пары-тройки случаев (не подряд, за две или три недели) выявил виновного - хром, забивший всю память (свапа в системе нет).

Я конечно пропустил большую часть срачей FF vs Chrome, но точно помню, что это лис тёк по памяти, а не наоборот. Я был неправ?

 браузеросрач

Spectator
()

Как заставить слушать на ipv6?

Запускаю django через flup, связка fastcgi + lighttpd. В упор не могу заставить его висеть на ipv6 адресе,

gaierror: [Errno -2] Name or service not known
gaierror: [Errno -9] Address family for hostname not supported
На различных вариантах указания host=.

Это решаемо?

 , , flup

Spectator
()

Не могу забороть mysql

В кратце, есть код на питоне

cur.execute("CREATE DATABASE `{0}` CHARACTER SET utf8 COLLATE "
                        "utf8_general_ci".format(db_name))
            cur.execute("CREATE USER '{0}'@'%' IDENTIFIED BY '{1}'".format(username, password))
            cur.execute("GRANT ALL PRIVILEGES ON {0}.* TO '{1}'@'%' WITH GRANT"
                        " OPTION".format(db_name, username))
            cur.execute("GRANT ALL PRIVILEGES ON {0}.* TO '{1}'@'localhost' WITH GRANT"
                        " OPTION".format(db_name, username))
            cur.execute("FLUSH PRIVILEGES;")
Который теоретически должен позволить username заходить через password с любого хоста, но раз за разом я получаю ошибки такого вида:
Access denied for user 'P3X7KA4YXI4F18B9'@'localhost' (using password: YES)

Что я делаю не так? Разве '%' не должен просто работать?

 

Spectator
()

Нуждаюсь в паре подсказок в плане проектирования и разработки

Добрый день, господа программисты. Я собираюсь заняться разработкой системы, управляющей запуском множества проектов на django (в перспективе и других, если понадобиться), и у меня возникла пачка разных вопросов, а спросить в общем-то не у кого.

Вкратце о системе: SaaS, множество сервисов, нужно на лету добавлять новые, удалять неоплаченные и т.п.. Предполагается, что все сервисы могут находиться на физически разных серверах (разная степень нагрузки, да и безопасности побольше).

0. Язык разработки - python. Мои знания ограничены C/C++, C# и python, так что он. Имеет ли смысл для этих целей учить что-то другое? По своему опыту работы с django могу сказать, что питона скорее всего хватит с головой.

1. Утилита, занимающаяся управлением сервисами, будет написана на Tornado. В её обязанностях - запуск дочерних процессов через а fcgi, запуск lighttpd, mysql серверов. Для самой утилиты не предполагается наличие мощного веб-интерфейса, настраивать её буду через простенькие запросы с мастер-сервера. Подходит ли этот фреймворк для таких целей? У меня не предполагается сотен запросов в секунду, но и большими они не будут.

2. Поскольку никогда не занимался вопросами безопасности: слишком ли опасно каждому сервису подключаться к mysql через одного юзера? Базы у всех отдельные, теоретически к чужой базе сервис не подключится (а если и подключится, то просто продублирует сервис этой базы, не ломая ничего).

3. Хорошая ли идея: запускать django-fcgi на одной машине, а lighttpd, слушающий его на другой? Если делать так, частично сгладится проблема переноса сервиса с одной машины на другую, т.к. клиенту не надо будет чистить кеш dns и т.п., адрес сервиса останется прежним.

 , ,

Spectator
()

SmoothedAnimation срабатывает в неподходящий момент

Имею qml следующего содержания:

import QtQuick 1.1

Rectangle {
    width: 4
    height: 4
    x: 0
    y: 0
    color: "black"
    property int posX: 0
    property int posY: 0
    onPosXChanged: x = posX - 2
    onPosYChanged: y = posY - 2
    radius: 2
    Behavior on posX { SmoothedAnimation { duration: 100 } }
    Behavior on posY { SmoothedAnimation { duration: 100 } }
}
Работаю с этим кодом через C++. В коде - анимация точки, которая должна появляться в A и следовать за B (координата B меняется). SmoothedAnimation должно возникать на изменении posX, что видно, если координаты устанавливать через обращение напрямую к x (i.e. a->setProperty(«x», pos.x());). Однако, если устанавливать стартовую координату через x, а затем через posX начинать перемещение, анимация начинается с 0,0 до стартовой координаты, а затем уже на новую. Почему так?

 , ,

Spectator
()

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