LINUX.ORG.RU

Сообщения conformist

 

Редактировать kde5 plasmoid

Форум — Development

Всем привет. Есть плазмоид, который я хотел бы отредактировать под свои нужды. Вот он: https://github.com/Zren/plasma-applets/tree/master/commandoutput

Работает прекрасно, но выглядит немного не так, как надо. Как редактировать — более-менее понятно, но проблема с отладкой.

При внесении изменений удаление/добавление виджета не приводит ни к каким изменениям, но помогает logout/login, но это же совсем не дело. plasmoidviewer показывает просто окошко, виджет в нём не показывается. qmlscene жалуется так:

file:///home/conformist/dev/widgets/abc/contents/ui/main.qml:3 module "org.kde.plasma.plasmoid" is not installed
Долго гуглил и не смог понять, где он ищет пути для импорта, пробовал добавлять кое-какие варианты из /usr/share..., но без эффекта.

Помогите кто чем может, заранее спасибо.

 , , ,

conformist
()

sqlalchemy MySQL server has gone away

Форум — General

Привет.

Такая проблема. Есть скрипт, который удаляет из базы данных много записей. Для ускорения процесса использую threading. Отрегулировал pool (на сервере max_user_connections=20 и max_allowed_packet=64M), задал pool_size=6, max_overflow=20 в create_engine и в 5 потоков удаляю. Например для удаления 4000 id, по каждому id за один заход удаляются данные из 10 таблиц. Потому я разбиваю эти 4000 на куски по 50 id и в цикле по 5 потоков удаляю. Вроде бы исчезла проблема с max_user_connections, так теперь постоянно куда-то пропадает сервер. Что интересно, если убрать потоки и удалять просто последовательно — всё ок, никаких проблем. До этого на тестовом сервере я удалял по 500 id за заход — тоже без проблем.

Уже и не знаю, куда копать и что делать?

 , ,

conformist
()

Пропал индикатор раскладки клавиатуры

Форум — General

После обновления до МАТЕ 1.18 пропал индикатор раскладки в трее. Обшарил весь dconf, вроде всё включено, поигрался цветами — не помогает. Даже как-то и не придумаю, куда ещё копнуть.

 , ,

conformist
()

Bash Promt exit code

Форум — General

Всем привет! Есть удобный способ добавить индикатор статуса последней команды в терминале, например так:

__prompt_command() {
    local EXIT="$?"             # This needs to be first
    PS1=""

    local RCol='\[\e[0m\]'

    local Red='\[\e[0;31m\]'
    local Gre='\[\e[0;32m\]'
    local BYel='\[\e[1;33m\]'
    local BBlu='\[\e[1;34m\]'
    local Pur='\[\e[0;35m\]'

    if [ $EXIT != 0 ]; then
        PS1+="${Red}→${RCol}"      # Add red if exit code non 0
    else
        PS1+="${Gre}→${RCol}"
    fi

    PS1+=" ${BBlu}\w${RCol} "
}
PROMPT_COMMAND=__prompt_command # Func to gen PS1 after CMDs
Но проблема в том, что я использую ещё и bash-git-prompt (собственно там я и вижу LAST_COMMAND_STATE) и вместе эти вещи не работают вне каталогов .git.

Вот у меня вопрос — как сделать, чтобы не только в каталогах git работало. Можно изменить GIT_PROMPT_ONLY_IN_REPO, но как то не хочется, чтобы весь тот код был всегда и везде и строка приветствия нужна разная для репозитория и для не репозитория.

 , ,

conformist
()

Endless try to get url

Форум — Development

Всем привет. В общем хочу реализовать бесконечную попытку получить данные по url. Вроде бы логично всё и просто, сделал так:

def get_with_delay(url):
    delay = 5
    while True:
        try:
            response = requests.get(url, headers=HEADERS)
        except: # пока ловим всё, что угодно
            logging.info('ConnectionError occurrence')
            logging.info('Sleep for a {} seconds'.format(delay))
            sleep(delay)
            delay += 10
            if delay > 90:
                delay = 5
            continue
        break
    return response
Тут происходит странное:

отключаем интернет, запускаем скрипт. Он как положено попадает в except и всё работает. Включаем интернет — скрипт работает. ОК. Но если я при работающем скрипте отключу интернет то всё просто стопорится на try: request.get. если нажать ctrl+c, то попадаю в блок except и опять тишина. Не могу понять, почему так происходит? Почему при отключении интернета requests не выкидывает какой нибудь exception?

 ,

conformist
()

nginx proxy apache ssl setup

Форум — Admin

Доброго времени суток!

Есть вебхостинг на котором пара десятков сайтов. Настроено так: nginx на 80-м порту принимает соединения, статические файлы отдаёт сам, динамику проксирует на 81-й порт апачу. Для одного сайта потребовалось настроить ssl. Есть ключ, сертификат, подключил к nginx для этого домена и первый же сайт для проверки ssl показал domain name mismatch, статус F, всё плохо. Начал гуглить и некоторые инструкции говорят, что нужно подключать сертификаты к апачу (ещё задествовать rpaf) и правильно передавать заголовки, а некоторые, что соединение должно быть шифрованным только до nginx. Собственно вопрос — как правильно настроить ssl в такой связке?

Перемещено leave из general

 , ,

conformist
()

tmux custom bashrc in new window

Форум — General

В общем нагуглил расцветку для git в баш, захотелось в одном окошечке, где общаюсь с гитом, была расцветка удобная. Удобство вот:

#!/bin/bash
COLOR_RED="\033[0;31m"
COLOR_YELLOW="\033[0;33m"
COLOR_GREEN="\033[0;32m"
COLOR_OCHRE="\033[38;5;95m"
COLOR_BLUE="\033[0;34m"
COLOR_WHITE="\033[0;37m"
COLOR_RESET="\033[0m"
function git_color {
  local git_status="$(git status 2> /dev/null)"
  if [[ ! $git_status =~ "working directory clean" ]]; then
    echo -e $COLOR_RED
  elif [[ $git_status =~ "Your branch is ahead of" ]]; then
    echo -e $COLOR_YELLOW
  elif [[ $git_status =~ "nothing to commit" ]]; then
    echo -e $COLOR_GREEN
  else
    echo -e $COLOR_OCHRE
  fi
}
function git_branch {
  local git_status="$(git status 2> /dev/null)"
  local on_branch="On branch ([^${IFS}]*)"
  local on_commit="HEAD detached at ([^${IFS}]*)"
  if [[ $git_status =~ $on_branch ]]; then
    local branch=${BASH_REMATCH[1]}
    echo "($branch)"
  elif [[ $git_status =~ $on_commit ]]; then
    local commit=${BASH_REMATCH[1]}
    echo "($commit)"
  fi
}
PS1="\[$WHITE\]\n[\W]"          # basename of pwd
PS1+="\[\$(git_color)\]"        # colors git status
PS1+="\$(git_branch)"           # prints current branch
PS1+="\[$BLUE\]\$\[$RESET\] "   # '#' for root, else '$'
export PS1
В tmux.conf создаётся 3 окна, вот так:
new -n work "bash"
neww -n bash
neww -n dev -c /home/conformist/dev
selectw -t 3
и вот тут я не могу понять, как мне дописать source ~/.bash_git чтобы только в dev был применён .bash_git. Что интересно, просто дописать не получается, окно или не создаётся или возвращает return 127 если запустить через run source после selectw. Вот создание рутового окна работает без проблем:
bind r new-window -n root "exec /bin/su -"
но по нажатию клавиш, а почему не хочет делать source — непонятно.

 ,

conformist
()

pass var from bash env to python

Форум — General

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

export db_uri='sqlite:///some.db'
export login='admin'
export passwd='pa$$w0rd'
в скрипте питона пишу:
from os import getenv
engine = create_engine(getenv('db_uri'))
файл создаётся со знаком вопроса в конце (some.db?). При удалении баш дописывает some.db^M. Я так понимаю в переменную как-то затесался \n, собственно вопрос, а как передать правильно?

 , ,

conformist
()

Проблема с socketio flask

Форум — General

В общем что я хочу сделать — есть функция, которая работает медленно (парсит некоторые данные в интернете и отдаёт их постепенно, допустим с yield). Я хочу, чтобы пользователь не ждал всех результатов и потом увидел всю страницу целиком, а получал эти данные по мере поступления. Выбор пал на flask_socketio. Для примера я создал простейшее приложение. Оно отдаёт изначально готовый шаблон и этот шаблон я хочу наполнить новыми элементами. Код:

from flask import Flask, render_template
from flask_socketio import SocketIO
from time import sleep
app = Flask(__name__)
socketio = SocketIO(app)


@app.route('/')
def index():
    return render_template('index.html')


@socketio.on('connect')
def test_connect():
    for i in range(5):
        html = render_template('div.html', number=i)
        socketio.emit('update', {'tag': html})
        sleep(1)


if __name__ == '__main__':
    socketio.run(app, host='0.0.0.0', debug=True)
и 2 шаблона html, думаю их показывать не стоит, покажу только js из index.html:
	var insertElement = function(html){
		var el = document.createElement('div');
		el.innerHTML = html;
		return el.childNodes[0];
	}
	$(document).ready(function(){
		var socket = io.connect('http://' + document.domain + ':' + location.port);
		socket.on('update', function(response){
			insertElement(response.tag);
			console.log('data: ' + response.tag);
		});
	});
Версии используемых либ:

jquery — 3.1.1, socket.io — 1.7.2.

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

Заранее благодарю за ответы/советы.

P.S. если я выбрал не тот подход, вполне соглашусь на подобный. Главное, чтобы при загрузке страницы не тупило, пока подготовятся все данные.

 , , ,

conformist
()

Оптимизация скрипта

Форум — General

Доброе утро! Есть задача, я её выполнил, но смотрю на это и не понимаю, как это можно улучшить. Задача простая — получаю некий текст и мне его нужно последовательно обработать несколькими регулярками. Все эти последовательности я разбил на функции, вот такой пример:

def one(text):
    text = re.sub(r'in1', r'out1', text)
    text = re.sub(r'in2', r'out2', text)
    return text


def two(text):
    text = re.sub(r'in3', r'out3', text)
    text = re.sub(r'in4', r'out4', text)
    return text


def three(text):
    text = re.sub(r'in5', r'out5', text)
    text = re.sub(r'in6', r'out6', text)
    return text


def make_magic(text):
    text = one(text)
    text = two(text)
    text = three(text)
    return text
заметно, что выглядит это совсем не очень. Я подумывал сделать класс, как описано здесь, но что-то ничего не получилось. Так же не получилось хотя бы в кучку собрать (in, out), чтобы паттерны как-то циклом подставлять.

Собственно, как это можно улучшить?

 ,

conformist
()

MATE notification без тем

Форум — General

Добрый день!

Когда-то давно, при переходе на libgtk3 3.20, когда сломались темы, поломались за одно и всплывающие уведомления. Я полагал, что со временем всё исправится, но всё осталось по прежнему. Вот я решил, что мне это надоело и хочу всё исправить.

Проблема такая. Хочу заметить, что это даже не стандартная тема, я не знаю, откуда такой стиль. Пробовал переустановить (reinstall) mate-notification-daemon, пробовал от другого юзера — не помогает. Другого демона нет (notification-daemon из gnome). Не знаю, куда копать дальше.

 , , ,

conformist
()

squid openssl.cnf with letsencrypt

Форум — General

Столкнулся с проблемой настройки squid с использованием ключей letsencrypt. Сам запуск проходит без проблем, предварительно собрав в один файл cert.pem и privkey.pem и скормив это squid он запускается и работает. Далее берём наш сертификат и даём его пользователю для импорта в браузер, чтобы сервер был доверенным и выползают ошибки типа:

2016/11/29 18:37:52 kid1| clientNegotiateSSL: Error negotiating SSL connection on FD 72: error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown (1/0)
Этот squid версии 3.4.8. Решил собрать 3.5.22 и сделать по инструкции. Проблема в том, что все нагугленные инструкции генерируют сами ключи и настраивают именно их, а что делать, если сами ключи у меня есть, мне их нужно как-то скормить openssl и настроить как надо, а я не могу сообразить, что сделать. На данный момент интересует вот это (из инструкции выше):
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
keyUsage = cRLSign, keyCertSign
как мне это добавить в существующие ключи или как заставить openssl (/etc/ssl/openssl.cnf) по умолчанию работать с моими готовыми ключами, которые лежат в /etc/letsencrypt/live/domain.tld/*.pem?

 , , ,

conformist
()

web-hosting php mail() log

Форум — General

Добрый день!

Имеется вебхостинг с большим количеством сайтов. Все сайты на 80-м порту работают через nginx, на 81-м через apache. Существует 2 типа работы: с cgi и без. Для сайтов с cgi есть отдельный каталог в /var/www/php-bin/*/php.ini с дополнительными конфигами.

Для этого всего нужно создать логгер всех вызовов mail() из php. Для этого было нагуглено решение с двумя скриптами.

Для начала я взял и указал sendmail-wrapper в указанных выше php.ini файлах, а так же добавил опцию:

auto_prepend_file = /usr/local/bin/env.php
На этом этапе всё пошло не так. Сайты выдают internal server error (500) в логе это:
PHP Warning:  Unknown: open_basedir restriction in effect. File(/usr/local/bin/env.php) is not within the allowed path(s): (/var/www/site.ru/data:.) in Unknown on line 0
Получается так, что нужно добавить директиву open_basedir для всех сайтов.

На данном этапе мне не понятно следующее — если сайт работает через cgi, то для него имеет значение файл /etc/php5/apache2/php.ini или нужно указывать в его отдельном файле? Сами сайты описаны вот так:

<Directory /var/www/site.ru/data/www/site.ru>
        Options -Includes +ExecCGI
        php_admin_value open_basedir "/var/www/site.ru/data:."
        php_admin_flag engine on
</Directory>
<VirtualHost ip:81 >
        ServerName site.ru
        CustomLog /var/www/httpd-logs/site.ru.access.log combined
        DocumentRoot /var/www/site.ru/data/www/site.ru
        ErrorLog /var/www/httpd-logs/site.ru.error.log
        ServerAdmin webmaster@site.ru
        ServerAlias www.site.ru
        SuexecUserGroup site.ru site.ru
        AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
        AddType application/x-httpd-php-source .phps
        php_admin_value open_basedir "/var/www/site.ru/data:."
        php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@site.ru"
        php_admin_value upload_tmp_dir "/var/www/site.ru/data/mod-tmp"
        php_admin_value session.save_path "/var/www/site.ru/data/mod-tmp"
        VirtualDocumentRoot /var/www/site.ru/data/www/site.ru/%1
        ScriptAlias /cgi-bin/ /var/www/site.ru/data/www/site.ru/cgi-bin/
</VirtualHost>
Возникла мысль, что переписывать для всех sendmail_path не логично, потому можно настоящий sendmail переименовать в /usr/sbin/sendmail-real и его же в обёртке вызывать, которую переименовать в обычный sendmail. Но что делать с env.php?:
<?php
putenv("HTTP_HOST=".@$_SERVER["HTTP_HOST"]);
putenv("SCRIPT_NAME=".@$_SERVER["SCRIPT_NAME"]);
putenv("SCRIPT_FILENAME=".@$_SERVER["SCRIPT_FILENAME"]);
putenv("DOCUMENT_ROOT=".@$_SERVER["DOCUMENT_ROOT"]);
putenv("REMOTE_ADDR=".@$_SERVER["REMOTE_ADDR"]);
?>
Нужно куда-то его переместить, чтобы он был доступен для всех, но куда? А так же, будет ли это всё работать для nginx? PHP вроде общий для всех, но что-то я сомневаюсь (до этого имел место спам, который никак не детектился в прошлом логгере php mail, решил переделать)

Заранее благодарен за советы!

 , , , ,

conformist
()

Определить источник спама

Форум — General

Добрый день!

Есть VDS, на котором хостятся сайты (около 40шт). Пару дней назад появилась большая активность в отправке писем и очень много ***frozen*** в очереди.

Что было предпринято:

Удалил письма из очереди — появляются снова.

Пробовал отыскать откуда идут (exim -bp ID, потом находил поле R=ID и смотрел в него) — ничего толкового не нашёл.

Включен php mail.log, но в логе фиксируются только валидные письма, все остальные (которые спам) там не появляются.

Пробовал grep'ать лог exim на предмет cwd — ничего нет.

Сайт, адрес которого указан в логах этих писем, проверил на php файлы, где их не должно быть — ничего не нашёл.

Идеи закончились, как найти того, кто шлёт эти письма?

 , , ,

conformist
()

lxml or bs4

Форум — Development

Наткнулся на мнение, что чистый lxml лучше чем bs4 + lxml. Стало интересно как работать с чистым xml файлом в первом и втором случае. Набросал 2 функции, которые делают одно и то же, но в случае с lxml у меня есть подозрение, что я делаю что-то не так. Гуру питона и парсинга xml, объясните, где я неправ?

import requests
from lxml import etree
from bs4 import BeautifulSoup

url = 'https://www.coursera.org/sitemap~www~courses.xml'
response = requests.get(url)


def lxml_method(xml):
    root = etree.fromstring(xml)
    ns = '{' + root.nsmap[None] + '}'
    elements = root.findall('.//' + ns + 'loc')
    links = [link.text for link in elements]
    return links


def bs4_method(xml):
    soup = BeautifulSoup(response.content, 'lxml')
    elements = soup.findAll('loc')
    links = [link.text for link in elements]
    return links
P.S. да, мне просто нужны все ссылки из этого файла.

Перемещено beastie из general

 , ,

conformist
()

Произведение двух чисел равное сумме последовательности чисел

Форум — General

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

Задание:

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

26 → нужные числа 15 и 21
sum([x for x in range(27) if x not in [15, 21]]) == 351
15 * 21 = 351
На данный момент код такой:
def func(n):
    lst = []
    rsum = (n * (n + 1)) / 2
    for i in range(n + 1):
        for j in range(n + 1, 0, -1):
            if i * j == rsum - i - j:
                lst.append((i, j))
    return lst
Работает медленно, как сузить поиск?

P.S. Это не лабораторная в школе, задание из одного онлайн задачника.

 ,

conformist
()

initramfs with x window system

Форум — General

В общем хочется мне just 4 fun собрать мелкий live дистрибутив. Точне он уже собран на базе busybox. Теперь хочется попробовать заменить busybox на toybox и попробовать добавить xserver. Надо как-то собрать его с самым минимумом, чтобы запустить там, например, dwm. Как мне собрать иксы (статически?) и что минимум необходимого мне потребуется (не интересуют разные тачпады)? Полагаю, что нужен xkbmap для смены раскладки.

 , , ,

conformist
()

python call stack

Форум — General

В общем читал я про магические методы в python и меня заинтересовал один метод: __trunc__ — который просто отсекает дробную часть, насколько я понял. Мой вопрос состоит в том, как можно отслеживать что же всё же будет вызвано при выполнении функции. Конкретно — правда ли что int() просто вызывает метод __trunc__?

Так же интересно, зачем этот метод выделили в math:

In [1]: x = 2.5

In [2]: x.__trunc__()
Out[2]: 2
если он по сути доступен всегда?

 

conformist
()

Поломался touchpad

Форум — General

В общем проблема такая:

раньше он отключался по Fn+F9 без проблем, потом что-то поломалось. Грешу на обновление (лог), но перезагрузка была через несколько дней, потому проявилось не сразу, наверное. Но в логе не заметил, чтобы такого откатить, чтобы заработало.

Кроме отключения/включения поломался и сам тач. Не работают тап клики, но работает, например, скрол двумя пальцами. В DE (MATE) нет вкладки настройки, а вроде была.

 ,

conformist
()

kernel: hpet1: lost 19 rtc interrupts

Форум — General

Доброго времени суток. В общем journalctl нещадно флудит данным сообщением. На просторах гугла нашёл решение — дописать hpet=disable в kernel command line. Как я понял, мне в debian нужно создать файл /boot/cmdline.txt и записать туда необходимые параметры.

Чем чревато отключение hpet?

 , , ,

conformist
()

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