LINUX.ORG.RU

Сообщения aido

 

нубский вопрос про компиляцию Qt

Форум — Development

Всем привет!

Как сделать раздельную сборку Qt-проекта? Предположим, у меня есть директория с проектом и хочется сборку делать примерно так:

$ pwd
/path/to/project
$ mkdir -p ../build
$ cd ../build
$ qmake ../project
$ make

Какие флаги в project.pro для этого проставить. Просто, если написать SOURCES+=src/*.cpp, то при такой сборке их не может найти.

 , ,

aido
()

Jenkins - не могу установить ни один плагин

Форум — Admin

Всем привет!

Версия Jenkins 2.93.

Пытаюсь поставить, например, Git client plugin и дает ошибку:

Git client plugin	
 Ошибка -
java.io.IOException: Downloaded file /var/lib/jenkins/plugins/git-client.jpi.tmp does not match expected SHA-1, expected 'V2cmJgJMkIqkh7M3iwrKtr01P+Q=', actual '9rBBn84tsTl1cCWjMtcMzshvFnI='
	at hudson.model.UpdateCenter.verifyChecksums(UpdateCenter.java:1810)
	at hudson.model.UpdateCenter.access$1100(UpdateCenter.java:149)
	at hudson.model.UpdateCenter$InstallationJob.replace(UpdateCenter.java:1963)
	at hudson.model.UpdateCenter$UpdateCenterConfiguration.install(UpdateCenter.java:1194)
	at hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1680)
	at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1874)
	at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1651)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
	at java.lang.Thread.run(Thread.java:748)

Собственно, у всех плагинов хэши не совпадают. Значит, грузит он что-то не то. Прокси не используется. Файрволлов нет:

$ sudo service --status-all
 [ - ]  console-setup.sh
 [ + ]  cron
 [ + ]  dbus
 [ + ]  exim4
 [ - ]  hwclock.sh
 [ + ]  jenkins
 [ - ]  keyboard-setup.sh
 [ + ]  kmod
 [ + ]  networking
 [ + ]  nginx
 [ + ]  open-vm-tools
 [ + ]  procps
 [ - ]  rsync
 [ + ]  rsyslog
 [ + ]  ssh
 [ - ]  sudo
 [ + ]  udev
 [ - ]  x11-common

 

aido
()

django-ssl-auth KeyError

Форум — Development

Всем привет!

Никак не получается запустить тестовое приложение django-ssl-auth вместе с nginx. Постоянно говорит, что KeyError at / 'HTTP_X_SSL_USER_DN'

конфиг nginx:

server {
   server_name     10.72.14.144;
   listen          443;
   ssl on;
   ssl_certificate     /etc/nginx/ssl/django-server/root-ca.crt;
   ssl_certificate_key /etc/nginx/ssl/django-server/root-ca.key;
   ssl_client_certificate /etc/nginx/ssl/django-server/users/diakonov-i.crt;
   ssl_verify_client optional;
   ssl_password_file /etc/nginx/ssl/django-server/global.pass;
   ssl_session_timeout 5m;

   ssl_protocols SSLv3 TLSv1;
   ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
   ssl_prefer_server_ciphers on;

   access_log      /var/log/nginx/ssl.access.log;
   error_log       /var/log/nginx/ssl.error.log;

   include         /etc/nginx/proxy.conf;
   location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_redirect default;
        fastcgi_param    DN             $ssl_client_s_dn;
        proxy_set_header X-SSL-User-DN  $ssl_client_s_dn;
        fastcgi_param    VERIFIED            $ssl_client_verify;
        proxy_set_header X-SSL-Authenticated $ssl_client_verify;
        include        fastcgi_params;
   }
}

Может доустановить что забыл или флаги не те?

 , , ,

aido
()

python argparse не видит аргументов

Форум — Development

Всем привет!

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

parser = argparse.ArgumentParser(description="My parser")
subparsers    = parser.add_subparsers(dest='command')

my_parser = subparsers.add_parser('my', help='my changes')
my_parser.add_argument('-s', '--smth', required=True)
commit_parser.add_argument('-c', '--short_desc', required=True)

args = parser.parse_args()
print (args)

 ~/mytest$ python ../myparser/myparser.py my -s "asdqqwe12" -c "test"

 ,

aido
()

Как сказать rar, чтобы не дублировал одинаковые файлы при сжатии

Форум — Desktop

Всем привет!

У меня результаты сжатия в гуях под виндами и в консоли гит-баша отличаются примерно в 35 раз по размеру. гуёвый сжимальщик как-то на автомате умеет учитывать одинаковые файлы и не сжимать их, а проставлять ссылки, а у консольного че-то не могу найти нужную опцию. Поэтому и получаются в терминале файлы толще, чем в гуях. Мб сталкивался кто? Сжимаю так:

rar a -r -m5 -or myfolder.rar myfolder/

 

aido
()

git-lfs не могу запушить бинарные файлы на сервер

Форум — Admin

Всем привет!

Собственно, сабж.

$ git push origin master
Git LFS: (0 of 1 files) 0 B / 3.65 MB
batch response: Repository or object not found: https://10.72.14.144/test1.git/info/lfs/objects/batch
Check that it exists and that you have proper access to it
error: failed to push some refs to 'https://git@10.72.14.144/test1.git'

Эта директория на сервере (test1.git/info/lfs) действительно не создается. Зато создается test1.git/lfs и в ней нет objects/batch. batch вообще нигде нет.

Server config:

$ git config --list
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
core.repositoryformatversion=0
core.filemode=true
core.bare=true
core.logallrefupdates=true

Client config:

$ git config --list
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
user.name=user name
user.email=email@mail.com
http.https://10.72.14.144/.sslcainfo=C:/Users/user-name/certs/10.72.14.144.cer
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
remote.origin.url=https://git@10.72.14.144/test1.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
http.sslverify=false
lfs.https://git@10.72.14.144/test1.git/info/lfs.locksverify=false
lfs.url=https://10.72.14.144/test1.git/info/lfs
lfs.https://10.72.14.144/test1.git/info/lfs.locksverify=false

Git LFS стоит совместно с Kallithea

 

aido
()

Как настроить права доступа к просмотру репозиториев на cgit?

Форум — Admin

Всем привет!

Хочется, чтобы cgit умел в аутентификацию по ключу, как ssh. То есть, юзер вводит свое имя, предоставляет свой приватный ключ (который,естественно, не передается никуда), и может просмотривать репозитории и ветки, на которые есть доступ на чтение.

 ,

aido
()

не могу выдать права в Centos 7

Форум — Admin

Всем привет.

Встала нужда поставить gitolite+cgit на сервер. Gitolite встал нормально, а вот с cgit вышли заминки - никак не хочет получать права на /home/git/projects.list. Делал по этой статье.

По ходу CentOS 7 от 6 в плане прав сильно отличается, так как на Шаге 9 команда semanage fcontext -a -t git_system_content_t "/home/git/projects.list" выдала ошибку

ValueError: Недопустимый тип: git_system_content_t. Необходимо указать тип файла или устройства

Если следовать манам, то надо было дописать -f --, но выдало ошибку, что не знает такой опции.

Так вот - как отредактировать тот мануал, чтобы cgit получил права на projects.list и на repositories?

Отключать SELinux не вариант.

P.S.: логи:

[cgi:error]cat /var/log/httpd/error_log | tail -1 

[pid 3189] [client 192.168.68.23:64324] AH01215: Error opening projectsfile /home/git/projects.list: Permission denied (13)
# ls -lZ /home/git/projects.list
-rw-r--r--. git git unconfined_u:object_r:user_home_t:s0 /home/git/projects.list
]# setsebool -P git_cgit_read_gitosis_content 1
Boolean git_cgit_read_gitosis_content is not defined

 , ,

aido
()

Деревья в админке Django

Форум — Development

Всем привет!

Потребовалось встроить в админку джанги дерево, ввиду чего нашелся пакет django-mptt-admin. Хочется сделать строгую иерархию классов и дерева, с ней связанного. То есть, чтобы нельзя было создать Author, у которого родитель - тоже Author. Author может иметь в качестве листьев только Article, а Article - только Remark. Еще может понадобится сделать это не на отдельной странице админки, а в форме.

Пока накидал вот такой код, но у него есть ещё одна проблема(помимо несоблюдающейся иерархии) - При удалении элемента вылазит ошибка AttributeError: 'Manager' object has no attribute 'disable_mptt_updates'

# core/models.py
from django.db import models
from mptt.fields import TreeForeignKey
from mptt.models import MPTTModel
import mptt

class Author(models.Model):
    name = models.CharField(default="dummy", max_length=128)
    class Meta:
        ordering = ['tree_id', 'lft']
    def __str__(self):
        return self.name

TreeForeignKey(Author, blank=True, null=True, db_index=True).contribute_to_class(Author, 'parent')
mptt.register(Author, order_insertion_by=['name'])

class Article(MPTTModel):
    name = models.CharField(default="dummy", max_length=128)
    parent = TreeForeignKey('Author', null=True, blank=True, related_name='children')
    class Meta:
        ordering = ['tree_id', 'lft']
    def __str__(self):
        return self.name

class Remark(MPTTModel):
    name = models.CharField(default="dummy", max_length=128)
    parent = TreeForeignKey('Article', null=True, blank=True, related_name='children')
    class Meta:
        ordering = ['tree_id', 'lft']
    def __str__(self):
        return self.name


#core/admin.py
from django.contrib import admin
from feincms.admin import tree_editor
from core.models import Author

class AuthorAdmin(tree_editor.TreeEditor):
    pass

admin.site.register(Author, AuthorAdmin)

 ,

aido
()

JS посоветуйте новичку

Форум — Web-development

Всем привет!

Решил покопаться вот в этом фреймворке. Я понимаю, что он имеет больше отношения к мобилкам, а не напрямую к вебу,но изначально он вырос из вэба, насколько я помню.

У меня есть несколько основных вопросов:

1) Имеется ли какая-то стандартизация поведения nodejs и npm? в смысле - возможно ли заранее сказать, смотря на версии nodejs и npm, что будут какие-либо конфликты. Если конфликты завязаны на версиях пакетов, то хочется получить сообщение о конфликте от пакетного менеджера как можно раньше, как в случае, например, apt. У меня получалось так, что все пакеты по тому мануалу устанавливались, но сервер не запускался. И какого-то черта выдавалась ошибка вида «иди гугли»:

23:26:39: Unable to start server
  See https://git.io/v5vcn for more information, either install watchman or run the following snippet:
    sudo sysctl -w fs.inotify.max_user_instances=1024
    sudo sysctl -w fs.inotify.max_user_watches=12288
npm ERR! code ELIFECYCLE
npm ERR! errno 1

После обновления npm способом sudo npm install npm вылезали совершенно внезапные ошибки - вплоть до EACCES для рута (!), или что вместо установки в стандартную /usr/bin ставился в node_modules с рутом-владельцем. В чем причина такого нестандартного для линукса поведения? sudo pip, например, ставит пакеты, куда нужно.

Вот пруфы:

$ sudo npm install -g exp
[sudo] пароль для aido: 
/usr/local/bin/exp -> /usr/local/lib/node_modules/exp/bin/exp.js

> spawn-sync@1.0.15 postinstall /usr/local/lib/node_modules/exp/node_modules/spawn-sync
> node postinstall


> @expo/ngrok@2.2.9 postinstall /usr/local/lib/node_modules/exp/node_modules/@expo/ngrok
> node ./postinstall.js

ngrok - error unpacking binary { Error: EACCES: permission denied, open '/usr/local/lib/node_modules/exp/node_modules/@expo/ngrok/bin/ngrok'
  errno: -13,
  code: 'EACCES',
  syscall: 'open',
  path: '/usr/local/lib/node_modules/exp/node_modules/@expo/ngrok/bin/ngrok' }
npm WARN react-redux@5.0.6 requires a peer of react@^0.14.0 || ^15.0.0-0 || ^16.0.0-0 but none is installed. You must install peer dependencies yourself.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @expo/ngrok@2.2.9 postinstall: `node ./postinstall.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @expo/ngrok@2.2.9 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/aido/.npm/_logs/2017-10-19T20_46_00_533Z-debug.log

2) Предположим, в какой-то из моментов выполнения некоторого мануала, я не заметил, как отклонился от него и начались ошибки, но не сразу. От ноды можно получить обратную связь о том, что именно пошло не так? Например, в линуксе при работе с девайсами в dmesg ты всегда можешь посмотреть, что пошло не так и в какой момент, и уже сразу ясно, куда копать. Ну или после чтения /var/log тоже зачастую понятно становится, откуда ноги растут.

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

4) Существуют ли альтернативы JS в вебе/трансляторы в/из него с других языков?

5) Как в JS включить опцию глубокого дебага? Как превращать минифицированный текст в читаемый?

 

aido
()

bison ошибка на этапе выполнения

Форум — Development

Всем привет!

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

При выполнении выдает следующее

./finder
Path in quotes: 
error: syntax error
Path in quotes: 
Path in quotes: 
Path in quotes: "jom"
Path in quotes:

То есть в первый раз при нажатии просто Enter выдает синтаксическую ошибку, а при наборе строки выдает ничего.

 ,

aido
()

виртуальные колбэки с/с++

Форум — Development

Всем привет!

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

typedef (void *pF)(int) foo;
class A
{
    private:
        static foo pf;
    public:
        void f(int);
        void register_cb()
        {
            // some library usage code
            l.callback=pf;
        }
        A()
        {
            pf=foo(&A::f);
        }
};
foo A::pf=NULL;

Как видите, пока даже с обычными, невиртуальными членами класса не работает.

Если кому-то кажется, что я хочу странного (создавать виртуальные колбэки), то пусть он расскажет, как внутри устроены, например, boost::thread/std::thread и почему им достаточно callable-объектов, ибо задача в конечном итоге та же (что там в pthread передается)?

 ,

aido
()

Проиграть аудио-файл при помощи с++-библиотек

Форум — Development

Всем привет!

Со звуком ранее не работал, оттого вопрос - как, используя с++ проиграть аудио-файл с компа?

пробовал SFML, QSound, QMediaPlayer, libphonon и все не воспроизводят звук. первая ругается, что нет pulseaudio, а потом виснет, Qt не ругается, но и ничего не выводит,libphonon ведет себя как и Qt. Но vlc/google-chrome и другие плееры воспроизводят звук. В чем может быть проблема?

 

aido
()

C++ Type deduction

Форум — Development

Всем привет!

Предположим, у меня есть шаблонный класс а-ля такого:

template<class T> my_data
{
    //....
};

template<class strategy>
    class my_class : strategy
    {
        private:
            template<class T> my_data<T> data;
        public:
            template<class T>
                my_class (const my_data<T>& d): data(d){}
    };

// Usage:
my_data<char*> data;
my_class<strategy>(data);

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

 ,

aido
()

Loki and Boost advanced usage

Форум — Development

Всем привет!

Решил я стало быть доучить основы C++ по книжке Александреску (Современное проектирование на С++). И там в 3 главе на 86 странице есть шаблон из Loki - GenScatterHierarchy - он генерирует иерархию классов. Вопрос - почему он считается устаревшим и не включенным в boost, хотя описывается как «невероятно эффективный»?

 

aido
()

как развернуть декоратор во время компиляции в С++?

Форум — Development

Всем привет!

В общем есть вот такой код:

#include <boost/bind.hpp>

template <class T>
struct shift_f
{
    T (*x)(const T&, const T&);
    T (*y)(const T&, const T&);
    shift_f <T> operator() (const shift_f<T>& a)
    {
        return {boost::bind(x, a.x, a.y), boost::bind(y, a.x, a.y)};
    }
};

template <class T> T c2h_x (const T& x0, const T& y0)
{
    T w=100;
    return x0-w/2;
}

template <class T> T c2h_y (const T& x0, const T& y0)
{
    T h=100;
    return h/2-y0;
}

template <class T> shift_f<T> c2h={&c2h_x, &c2h_y};

Как его можно переделать в декорируемые классы, которые располагаются на стеке?

Хочется примерно такого (но все же видят косяк с operator()?):

template <class T> class shift_f
{
    public:
        virtual T x(const T&, const T&) =0;
        virtual T y(const T&, const T&) =0;
        shift_f<T> operator() (const shift_f & a)
        {
            template <class T>
            class ret : public shift_f<T>
            {
                virtual T x(const T& x0, const T& y0) override
                {
                    return x(a.x(x0, y0), a.y(x0,y0));
                }
                virtual T y(const T& x0, const T& y0) override
                {
                    return x(a.x(x0, y0), a.y(x0,y0));
                }
            };
            ret r;
            return r;
        }
};

template <class T>
class c2h : public shift_f<T>
{
    virtual T x(const T& x0, const T& y0) override
    {
        T w=100;
        return x0-w/2;
    }
    virtual T y(const T& x0, const T& y0) override
    {
        T h=100;
        return h/2-y0;
    }
};

 , ,

aido
()

FFMpeg error with stitching video

Форум — Multimedia

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

Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_overlay_9

 

aido
()

OpenCV не собирается больше с ffmpeg

Форум — Development

Всем привет!

В ходе огромного количества сборок и пересборок ffmpeg и opencv, последний перестал собираться с поддержкой первого:

-- Checking for modules 'libavcodec;libavformat;libavutil;libswscale'
--   Found libavcodec, version 57.86.103
--   Found libavformat, version 57.68.100
--   Found libavutil, version 55.51.100
--   Found libswscale, version 4.3.101
-- Checking for module 'libavresample'
--   Found libavresample, version 3.2.0
-- WARNING: Can't build ffmpeg test code
*****************************************
--     FFMPEG:                      NO
--       avcodec:                   YES (ver 57.86.103)
--       avformat:                  YES (ver 57.68.100)
--       avutil:                    YES (ver 55.51.100)
--       swscale:                   YES (ver 4.3.101)
--       avresample:                YES (ver 3.2.0)

Судя по тому, какие файлы воспроизводит cmake, он ищет (и находит) заголовочники библиотеки ffmpeg в /usr/local/{include,lib}, вместо /usr/{include,lib}. Переустановка ffmpeg не помогла, -D FFMPEG_INCLUDE_DIRS=/usr/include не помогло. Как ему указать верную директорию, где установлен ffmpeg?

 ,

aido
()

CUDA+RTSP. Не могу найти внятные исходники

Форум — Development

Всем привет.

Встала задача сделать раскодировку RTSP-потока при помощи CUDA. Первичный анализ показал, что это сделано только в ffmpeg: OpenCV, как и сэмплы Cuda SDK, умеет только файлы декодировать, но не поток. Копать FFMPEG - не самая тривиальная задача, отсюда вопрос: мб что-то еще умеет в CUDA?

 ,

aido
()

ffmpeg Непонятно, где имплементирована функция

Форум — Development

Всем привет!

Копаюсь в исходниках ffmpeg и нашел одну странную деталь: функция av_format_get_control_message_cb используется в avdevice.c, объявлена в avformat.h, но grep по исходникам не даёт места, где она имплементирована. То ли они хитрые дефайны использовали, то ли я не знаю. Такое только через отладчик найти можно?

 

aido
()

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