LINUX.ORG.RU

Сообщения helium

 

Перенос копирайта из проекта под gpl

Форум — Development

Добрый вечер! Использую в своем проекте два файла исходников из чужого проекта под gpl, в readme которого есть копирайт с именем автора.

Теперь, при публикации своего проекта, я должен добавить автора в копирайт readme, или достаточно упоминания в конкретных файлах?

Спасибо.

 

helium
()

matplotlib неверные цвета для картинки Axes3D

Форум — Development

Добрый день, необходим трехмерный график с одной плоскостью,покрытую изображением с картой. Когда использую такой код

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.cbook import get_sample_data
from matplotlib._png import read_png
import numpy as np

img = read_png("foo.png")

x, y = np.mgrid[0:img.shape[0], 0:img.shape[1]]

ax = plt.gca(projection='3d')
ax.plot_surface(x, y, np.sin(0.02*x)*np.sin(0.02*y), rstride=2, cstride=2,facecolors=img)
plt.show()
Результат отличный: http://meson.ad-l.ink/6qrkJWhP9/image.png

Но стоит использовать плоскость:ax.plot_surface(x, y, 1, rstride=2, cstride=2,facecolors=img) Цвета не не, просиходит замемнение: http://rgho.st/7W57HBX94/image.png

В чем может быть проблема?

 

helium
()

Выбор структуры для docker проекта

Форум — Development

День добрый! Разрабатываю систему с несколькими микросервисами и использую докер, который подкупил легким развертыванием. Но теперь не понимаю, как реализовать такую структуру:

docker-compose.yml
service1/
  - Dockerfile
service2/
  - Dockerfile
shared_src/
  - library
Хранить весь код в shared_src, в докерфайлах просто запускать разные скрипты через RUN или переносить весь код, относящийся к сервису в его папку?

Плюс, как добавить общий код к каждому контейнеру, ведь:

The <src> path must be inside the context of the build; you cannot COPY ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.

 

helium
()

asyncio message queue

Форум — Development

Ребята, понадобилась очередь сообщений и драйвер для работы с ней по PEP 492. Казалось бы, требований мало: 1) Стандартный интерфейс для очереди: push, get 2) Отсутствие направленности на working queue: никаких воркеров или таксов, просто обмен сообщениями. 3) Живой репозиторий.

Но не выходит найти решение подходящее по всем пунктам. Например, клиенты для rabbitmq тянут за собой логику с Consume и callback.

Ребята из мейлрушки рекомендуют использовать tarantool queue, но решение не выглядит живым.

Что посоветуете?

 

helium
()

Удаление из большой таблицы без потери constraints

Форум — Development

Добрый день!

Мне необходимо удалить большую часть таблицы с четырьмя миллионами строк, delete from tbl where работает бесконечность, поэтому, по всей видимости, нужно использовать промежуточные таблицы. Ситуацию осложняют несколько других таблиц, c Foreign-key constraints: ON DELETE SET NULL. И это правило должно выполняться во время удаления.

Если делать

BEGIN;
CREATE TABLE tbl_new AS SELECT * FROM tbl where a is b;           
ALTER TABLE tbl RENAME TO tbl_old;
ALTER TABLE tbl_new RENAME TO tbl;
COMMIT;
drop table tbl_old cascade;
То для сохранения целостности, после переименования tbl в tbl_old postgress меняет и constraints, превращая ссылки в REFERENCES tbl_old(id)

Если делать

BEGIN;
CREATE TABLE tbl_tmp AS SELECT * FROM tbl where a is b          
TRUNCATE tbl;
INSERT INTO cart SELECT * FROM tbl_tmp;
COMMIT;
То pg не деает выполнить TRUNCATE из за ссылок, и предлагат сделать TRUNCATE CASCADE.

Как быть?

 ,

helium
()

Распаковка вложенных mongo полей

Форум — Development

Добрый день!

Вопрос глуповат, но у меня есть коллекция вида

{
    "date" : 1456327297,
    "comments" : {
        "nodes" : [ 
            {"username" : "victor", "text": "foo"},
            {"username" : "vica", "text": "foo"},
            {"username" : "semen", "text": "foo"}
        ],
        "count" : 3
    }
}

И хочется выполнить find запрос в самой монге со следующим результатом:

{"date" : 1, "comment_usernames" : ["victor", "vica", "semen"]}

Подскажите, пожалуйста, что использовать.

 

helium
()

SSHFS в Django продакшене

Форум — Development

Добрый день!

Переносим медиафайлы на сервер, отличный от основного, с возможностью загружать на него новые файлы. Самым простым вариантом видится просто смонтировать папку с media-сервера на prod-server через SSHFS.

Нормальная ли это практика, что можете посоветовать?

 ,

helium
()

sqlalchemy неадекватно отрабатывает запрос

Форум — Development

Добрый день!

Я работаю со следующей sqlalchemy моделью:

class CartProduct(Base):
    cart_id = Column(
                Integer,
                ForeignKey('cart.id', ondelete='CASCADE'))
    store_id = Column(
                Integer,
                ForeignKey('store.id', ondelete='SETNULL'), nullable=True)
    cart = relationship('Cart', backref=backref('products'))

Проблема в том, что в поле cart.products значения появляются и исчезают в разных точках программы.

Пусть у нас есть закоммиченый CartProduct, тогда:

  • Когда store_id != None, он точно появится в сart.products
  • Когда store_id == None, может как появится, так и не появиться в cart.products

В чем может быть дело?

 

helium
()

Вложенные virtualenv

Форум — Development

Ребята, ситуация такая. На данный момент используем в проекте несколько virtualenv, в окружении которых запускаются bash скрипты, которые запускают python скрипты. Мне необходимо добавить python скрипт, работающий с новой версией сторонней библиотеки, без изменения текущего окружения. Казалось, что достаточно создать дополнительный virtualenv, и запускать в виде

venv/bin/python some_script.py

Но я не уверен, что это будет работать нормально. Как быть? Может переопределить в самом python скрипте path для конкретной библиотеки?

 

helium
()

Оптимизация вычисления большой матрицы расстояний

Форум — Development

Добрый вечер! У меня есть объемный массив (около 30 тысяч элементов), и метрика между любыми элементами. Мне необходимо посчитать матрицу расстояний (достаточно треугольной), даже если это займет много памяти.

Сейчас используется следующий код:

distance_matrix = np.ndarray((len(foo),len(foo)))
for i, bar1 in enumerate(foo):
    for j, bar2 in enumerate(foo[i+1:]):
        distance_matrix[i,j] = hight_level_python_function(bar1, bar2)

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

Как быть?

 

helium
()

git squash только моих изменений

Форум — Development

Добрый день!

Я разрабатывал в одной ветке, в которую делал git pull и git commit. И теперь мне необходимо объеденить все изменения, которые внес именно я, в один коммит.

$ git log
commit a341a8..
Merge: 95d89a0 1101a10
Author: Me
Date:   Sat Jul 9 10:46:42 2016 +0500

    Merge branch 'master' of ssh://stash.fi into my_branch

commit 95d89..
Author: Me
Date:   Sat Jul 9 10:46:02 2016 +0500

    some of my changes

commit 1101a10..
Author: Other developer
Date:   Fri Jul 8 19:22:11 2016 +0500

    refs #noissue Fobarbar

commit d95a3..
Author: Me
Date:   Fri Jul 8 17:04:35 2016 +0500

    another changes

Если я выполню

git rebase -i HEAD~3
, то и коммит a341a8 (с merge master ветки) окажется в Changes to be committed, другими словами, и чужие изменения попадут в объединенный коммит.

Как быть?

 

helium
()

Выбор алгоритма машинного обучения

Форум — Development

Добрый день!

Мне нужно в кратчайшие сроки решить задачу классификации на таких данных:

1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 8
1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 2

Все атрибуты бинарны.

Не вдаваясь в тонкости машинного обучения, какой посоветуете классификатор из коробки sklearn'а?

Спасибо.

 

helium
()

Real-time чтение stdout субпроцесса с таймаутом

Форум — Development

Добрый вечер!

В данный момент использую следующий код:

p = Popen(cmd,stdout=PIPE,stderr=PIPE)
try:
    outs, errs = p.communicate(timeout=100)
except TimeoutExpired:
    pass     

Он работает замечательно, но stdout и stderr возвращаются только после завершения процесса. Сейчас возникла потребность в выводе промежуточных значений c такой же функциональностью, а предложенные варианты чтения не содержат поддержки таймаутов.

Как быть?

 ,

helium
()

nginx-gunicorn-django не возвращают static

Форум — Development

Добрый день! Который час бьюсь с проблемой, варианты решения иссякли. Есть конфиг nginx

upstream hello_app_server {
  server unix:/webapps/app/run/gunicorn.sock fail_timeout=0;
}

server {

    listen   8001;
    server_name blabla.com;

    client_max_body_size 4G;

    access_log /webapps/app/logs/nginx-access.log;
    error_log /webapps/app/logs/nginx-error.log;
 
    location /static/ {
        alias   /webapps/app/prototype/staticfiles/;
    }
    location /media/ {
        alias   /webapps/app/prototype/media/;
    }


    location / {

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     
        if (!-f $request_filename) {
            proxy_pass http://hello_app_server;
            break;
        }
    }

}

И settings.py приложения

STATIC_ROOT = '/webapps/app/prototype/staticfiles/'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
Collectstatic сделан,
$ ls /webapps/app/prototype/staticfiles/
admin  css  djcelery  js  rest_framework
Любые реквесты на blabla.com:8001/static/ возвращают 404. В чем может быть дело?

 ,

helium
()

Передача данных в docker container

Форум — Development

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

Вопрос наверняка глупейший. У меня есть docker container с установленным ffmpeg внутри, и из моего приложения ему надо передать бинарные данные на вход (видео). Сейчас я просто вызываю процесс docker run, и меняюсь данными через стандартные std пайпы.

Как все провернуть по-хорошему?

Спасибо

 ,

helium
()

FFmpeg глитч стрима

Форум — Development

Добрый день, мне нужно обработать видео 'на лету' питон скриптом, для этого собираюсь использовать такую связку:

ffmpeg -f image2pipe -| script.py | ffmpeg -f rawvideo -i -

Почему направляя поток таким образом, я получаю видео с глитчем на выходе?

ffmpeg -i in.mp4 -f image2pipe -pix_fmt rgb24 -vcodec rawvideo - | 
ffmpeg -f rawvideo -vcodec rawvideo -s 1980x1080 -pix_fmt rgb24 -r 24 -i - -an out.avi

Спасибо!

 , ,

helium
()

Cнова преобразование Фурье - откуда магия?

Форум — Development

День добрый, уже был пост о понимании fft, вот он:

Понимание преобразования Фурье

Все работает, частоты находятся. Но в процессе работы обнаружилась одна интересная особенность, о которой я и хочу спросить.

Пусть есть поток steam, который возвращает 512 целых чисел с частотой 44100

CHUNK = 512
RATE = 44100
freqs=np.fft.fftfreq(CHUNK)
while True:
    data = stream.read(CHUNK)
    data=struct.unpack('%dh'%CHUNK, data)
    w = np.fft.fft(data)
    amp=np.array([np.absolute(x) for x in w])
    idx=np.argmax(amp)
    max_freq=freqs[idx]
    freq_in_hertz=abs(max_freq*RATE)
    print(freq_in_hertz)

Полный код

http://pastebin.com/e091BBc7

Для перевода частоты в герцы мы умножаем частоты, которые вернула fft на частоту дискретизации. Но такой подход несет в себе очевидные минусы, точность хромает. Теперь будем считывать по 4 чанка за раз

CHUNK = 512
RATE = 44100
num_chunks=4
freqs=np.fft.fftfreq(CHUNK*num_chunks)
while True:
    data=list(itertools.chain.from_iterable(struct.unpack('%dh'% CHUNK, stream.read(CHUNK)) for _ in range(num_chunks)))
    after_fft=np.fft.fft(data)
    amp=np.array([np.absolute(x) for x in after_fft])
    idx=np.argmax(amp)
    #print(idx)
    max_freq=freqs[idx]
    freq_in_hertz=abs(max_freq*RATE)
    print (freq_in_hertz)

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

Почему?

 ,

helium
()

Понимание преобразования Фурье

Форум — Development

Привет, нужно получить спектр частот с микрофона, и для этого разобраться с FFT.

Ряд Фурье http://rghost.ru/53785377/image.png

В другой форме http://rghost.ru/53785428/image.png

Так как все функции уже написанны, юзаю готовую библитотеку для питона numpy

>>> np.fft.fft([1, 2, 1, 0, 1, 2, 1, 0])
array([ 8.+0.j,  0.+0.j,  0.-4.j,  0.+0.j,  0.+0.j,  0.+0.j,  0.+4.j,
        0.+0.j])
скормил fft 8 точек искомой функции, получил 8 комплексных чисел вида a + b*j, те можно получить амплитуду для каждой составляющей

A = sqrt(a^2+b^2) (вторая пикча)

А теперь эти амплитуды нужно сопоставить каким-то частотам. Тут я и застрял. По логике вещей частота должна соотвествоать ее индексу в массиве (ω,2ω,3ω)

Но нашлась функция fft.fftfreq, на вход получающая количество точек.

>>> np.fft.fftfreq(8)
array([ 0.   ,  0.125,  0.25 ,  0.375, -0.5  , -0.375, -0.25 , -0.125])
Откуда эти цифры? ЯННП.

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

Доки http://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.fft.html#numpy....

 ,

helium
()

Отпадает сокет в потоке

Форум — Development

Добрый день. Есть два стула скрипта:первый-сервер, второй- клиент. Для проверки на отключение клиента сервер использует такой код

data = conn.recv(1024)
if not data:
    break
Когда я использую с сервером простой клиент все работает хорошо
s = socket.socket()
s.connect((host, port))
try:
    while True:
        buf = input(">>")
        s.send(bytes(buf.encode('utf-8')))
        data=s.recv(1024)
        print (data.decode("utf-8"))
finally:
    s.close()
Но если я выношу клиент в отдельный поток, серверная проверка детектит отключение
class client(threading.Thread):
    def __init__(self, sock):
        self.sock=sock
        threading.Thread.__init__(self)
    def run(self):
        try:
            while 1:
                data = self.sock.recv(1024)
                print (data.decode("utf-8"))
        finally:
            self.sock.close()
            return
s = socket.socket()
s.connect((host, port))
th=client(s)
th.start()
Как фиксить не знаю.По лицу не бейте, в институт завтра. Сорцы: Сервер http://pastebin.com/FNhyVKjr Клиент http://pastebin.com/EpwiWZib

 , ,

helium
()

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