LINUX.ORG.RU

Сообщения KennyMinigun

 

C++ constexpr + static member того же класса

Форум — Development

Хочется реализовать что-то типа:

class Foo {
public:
    constexpr Foo(const int value) : value(value) {}    

    constexpr static Foo UNKNOWN = std::numeric_limits<int>::max();
    constexpr static Foo ANY     = UNKNOWN - 1;
    
private:
    int value;
};

Естественно, такой код не собирается, поскольку на момент обьявления constexpr UNKNOWN/ANY тип Foo eще недоконца определен: http://ideone.com/gwCkln

prog.cpp:7:66: error: 'constexpr const Foo Foo::UNKNOWN' has incomplete type
     constexpr static Foo UNKNOWN = std::numeric_limits<int>::max();
                                                                  ^
prog.cpp:8:46: error: 'constexpr const Foo Foo::ANY' has incomplete type
     constexpr static Foo ANY     = UNKNOWN - 1;
                                              ^

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

Подскажите, можно ли в данной ситуации как-то использовать constexpr а не const.

P.S. Использую g++ 5.3 с -std=c++14

 ,

KennyMinigun
()

Ваши наиболее используемые приложения на десктопе

Форум — Talks

Заметил за собой, что большую часть времени у меня открыты два приложения (окна):

  1. Браузер
  2. Консоль

Интересно, какая ситуация с этим у остальных ЛОРовцев? Перечисляйте клас приложений, в скобках можно указывать производителя и марку.

P.S. Оболочка (shell) и WM не в cчёт.

 , ,

KennyMinigun
()

Kubuntu, обновление до 16.10 beta 2 не работает

Форум — General

Мне взгруснулось и захотелось проблем, решил накатить beta 2 предстоящего релиза убунты 16.10 (Yakkety Yak). Однако не получилось:

~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

~ $ sudo do-release-upgrade -h
Usage: do-release-upgrade [options]

Options:
  -h, --help            show this help message and exit
  -V, --version         Показати версію та вийти
  -d, --devel-release   Перевірити можливість оновлення до останнього випуску,
                        що перебуває в стані розробки
  --data-dir=DATA_DIR   Каталог, який вміщує файли даних.
  -p, --proposed        Спробуйте оновитись до останньої версії за допомогою
                        $distro-proposed
  -m MODE, --mode=MODE  Запустити в особливому режимі оновлення. Наразі
                        підтримуються режим "стільниця" для регулярного
                        оновлення персональних робочих станцій та "сервер" для
                        серверних систем.
  -f FRONTEND, --frontend=FRONTEND
                        Запустити вказаний інтерфейс оболонки
  -s, --sandbox         Протестувати оновлення в безпечному режимі
  -c, --check-dist-upgrade-only
                        Перевіряти доступність нової версії дистрибутива і
                        повертати результат за допомогою кода виходу.
  -q, --quiet       
    
~ $ sudo do-release-upgrade -d
Перевіряється наявність нового випуску Ubuntu
Нової версії не знайдено

Подскажите, что ему не дает накатить бету?

Перемещено JB из admin

 , ,

KennyMinigun
()

Kubuntu vs KDE Neon

Форум — Talks

Я тут на днях случайно установил в коробку второе, и оказалось, что у него кишки от первого а KDE новее. Я так понял, это дистр от предыдущего начальника Kubuntu? Или что там за драма?

Собственно, достало, то, что Plasma уже 5.7.5, а в кубунте только какая-то 5.6. В связи с этим вопрос: стоит ли сменить основной дистр на KDE Neon? Убунтушную часть они обновляют своевременно или как в минте?

 , , ,

KennyMinigun
()

Perl, перенаправить STDOUT дочернего процесса

Форум — Development

Привет,

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

use IPC::Open3;
use Symbol qw(gensym);

sub redirect {
    my ($command, $handle) = @_;

    my ($stderr, $stdin) = (gensym, undef);
    # вот тут STDOUT дочернего процесса должен открыться в $handle
    my $pid = open3($stdin, $handle, $stderr, @{$command});
    waitpid($pid, 0);
   
    die 'Child error' if ($?);
}

Никаких требований к внутренней имплементации нет (IPC::Open3, IPC::Run, Whatever). Подскажите пожалуйста как сделать

 , ,

KennyMinigun
()

Canonical (снова?) спонсирует/патронит KDE

Форум — Talks

 , ,

KennyMinigun
()

SSH ProxyCommand для оффтопика

Форум — General

Пытаюсь склонировать код с github.com. Суть в том, что $hostname использует прокси. Через HTTPS всё работает (с выставленой $https_proxy, разумеется).

Однако, мне захотелось большего: не вводить юзернейм и пароль для push (а точнее — использовать ключи). То есть дружить с github.com посредством ssh. Сам github предоставляет статью Using SSH over HTTPS port. Так что, в принципе, проблем с закрытым портом 22 на прокси быть не должно.

Покопавшись в интернетах, нашёл совет по использованию OpenSSH за прокси, выглядит что-то вроди:

ProxyCommand   nc -X connect %h %p

Проблема в том, что под оффтопик netcat найти можно (даже в исходниках). Однако там толи версия древняя, птоли по просту нет флага -X. Может у кого-нибудь есть решение проблемы?

 , , , ,

KennyMinigun
()

Ubuntu в VirtualBox: не работает добавление в /etc/resolv.conf

Форум — Admin

Собственно, проблема. Хочу, чтоб в /etc/resolv.conf показались следуюшие строки (на самом деле — хватит лишь строк 1 и 2):

nameserver 10.136.85.27
nameserver 10.136.85.32
nameserver 10.0.2.3
nameserver 10.0.2.2
Для чего, я записал их в /etc/resolvconf/resolv.conf.d/base. Но, после запуска sudo resolvconf -u получаю лишь
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1

В интернетах предлагают посмотреть настройки NetworkManager, что я и сделал:

$ nmcli connection modify "$CONNECTION" ipv4.dns "10.136.85.27 10.136.85.32 10.0.2.3 10.0.2.2"

$ nmcli connection show "$CONNECTION" | grep -Pi ipv?4.dns
ipv4.dns:                               10.136.85.27,10.136.85.32,10.0.2.3,10.0.2.2
ipv4.dns-search:                        
ipv4.dns-options:                       (default)
IP4.DNS[1]:                             10.0.2.3

Толку — ноль. Как воркераунд записал те строки в /etc/resolvconf/resolv.conf.d/head. Помогите понять, что не работает.

 , , ,

KennyMinigun
()

Google Dublin, как оно?

Форум — Talks

Собственно, хотелось бы поинтересоваться у форумчан, как там условия труда? Не сильно ли ужимают в правах? Хавтает ли з/п на хлеб?

Есть ли кто-то с опытом? Как вообще жизнь там протекает?

Сраху же кастую vertexua

 ,

KennyMinigun
()

В Opera 37 завезли ad-blocker

Форум — Talks

Суть в том, что завезли его нативно (т.е. не как в хромиуме — костылями). Обещают загрузку сайтов быстрее, красивее, мягкие и шелковистые волосы и исцеление от рака в некоторых случаях.

Пруфлинк: https://www.opera.com/blogs/desktop/2016/05/ad-blocker-opera-for-windows-mac-...

P.S. Для особо одарённых: обычные адблокеры для оперы были и раньше посредством расширений.

 ,

KennyMinigun
()

Предупреждение о слабом алгоритме хеширования в репозитории Google Chrome

Форум — Desktop

Привет,

Уже которую неделю apt update выдает вот такое:

W: http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg: Signature by key 4CCA1EAF950CEE4AB83976DCA040830F7FAC5991 uses weak digest algorithm (SHA1)
W: There is no public key available for the following key IDs:
1397BC53640DB55

Дебиановцы уже (естественно) натыкали флажков: https://wiki.debian.org/Teams/Apt/Sha1Removal
На askubuntu предлагают забить: http://askubuntu.com/questions/760796/how-to-fix-apt-signature-by-key-uses-we...

Что забавно, в опере (deb https://deb.opera.com/opera-stable/ stable non-free) тоже было такое (когда xenial/16.04 была еще в бете), но быстро починили.

Один вопрос: доколе?!

 , , , ,

KennyMinigun
()

Помогите опознать песню

Форум — Talks

Сабж, мой Shazam/Soundhoud/Google Play Music Sound Search не опознает: http://rghost.ru/6rVLbtbfl (ccылка через 5 дней сдохнет)

Найдено на просторах вк-шечки, изначально было подписано «Static-X - The Only» (что очевидно неправда).

 ,

KennyMinigun
()

rpmbuild --eval %{version} package.spec

Форум — Development

Сабж не работает:

$ rpmbuild --define "_topdir $PWD" --eval '%{version}' SPECS/package.spec
%{version}

Хочу узнать версию пакета, который будет сгенерирован. Как это сделать?

 ,

KennyMinigun
()

Как проверить версию RPM в спеке?

Форум — Development

Доброго дня,

В связи с тем, что теги «Recommends» и «Suggests» появились только в RPM 4.11.2 а мне сейчас нужно разделаться с RPM 4.8 (возможен апгрейд)

Нужно сделать что-то такое:

%if %{rpm_version} >= 4.11.2
Suggests: package-a >= 2.11
Recommends: package-b >= 4.2
%else
Requires: package-a >= 2.11
Requires: package-b >= 4.2
%endif

Беда в том, что пока не могу придумать, как (правильно) проверить версию rpm внутри спеки.

 , ,

KennyMinigun
()

Зачем ubuntu нумерует ядра по-своему?

Форум — Talks

Собственно сабж. Сейчас, например, в бетке 16.04 ядро 4.4.0-NN-<тип>. Непонятно, что дает им такое версионирование?

И,ЕМНИП, у них всегда последняя цифра версии ядра — 0.

 ,

KennyMinigun
()

Сборка List::MoreUtils под MSYS2

Форум — Development

Установил Git for windows, в комплекте идет perl-5.22.0. Хочу доустановить модуль List::MoreUtils. В процессе сборки полічаю вот такое сообщение:

perl Makefile.PL
Checking whether pureperl is required... no
Checking for cc... gcc
Checking for cc... (cached) gcc
Checking whether perlapi is accessible... no
configure: Cannot use Perl API - giving up

Что конкретно оно хочет? Что оно проверяет? Как заставить его работать?

 , ,

KennyMinigun
()

Почему не работает?

Форум — Development

Есть такой код:

#!/usr/bin/env perl

use strict;
use warnings;
use Data::Dumper;

my $hash = {
    key1   => 'value1',
    key2   => 'value2',
    key3   => 'value3',
};

my @options = map { "--$_" => $hash->{$_} } # line 13
              grep { defined $hash->{$_} }  # line 14
              qw(key1 key4);                # line 15

print Dumper(\@options);

Perl 5.22 выдает такое:

syntax error at ./test.pl line 14, near "grep"
Global symbol "@options" requires explicit package name (did you forget to declare "my @options"?) at ./test.pl line 17.
Execution of ./test.pl aborted due to compilation errors.

Perl 5.10:

Not enough arguments for map at ./test.pl line 14, near "grep"
syntax error at ./test.pl line 14, near "grep"
Execution of ./test.pl aborted due to compilation errors.

«Исправление» вот такое:

-my @options = map { "--$_" => $hash->{$_} } # line 13
+my @options = map { ("--$_") => $hash->{$_} } # line 13

Внимание вопрос: почему не работает первый вариант кода? Что интерпретатору не нравится в кавычках?

 ,

KennyMinigun
()

Получение «ключей» из массива

Форум — Development

Доброго дня.

Как известно, в Perl можно запросто сделать хеш из массива:

my @arr = (key1 => 'value1', key2 => 'value2');
# эквивалентно @arr = ('key1', 'value1', 'key2', 'value2')
my %hash = @arr;
for my $key (keys %hash) {
    print "$key => $hash{$key}\n";
}
# выведет
# key2 => value2
# key1 => value1

Что я хочу сделать, это получить индексы элементов массива, которые станут ключами при такой конвертации. Сейчас накостылял вот такую конструкцию:

my @key_indexes = grep { !($_ &1) } 0 .. $#arr;

А если более глобально, то задача стоит такая: на вход подается массив (с чётным количеством элементов) на выходе необходимо сформировать строку вида key1=value1;key2=value2;... но важно сохнанить порядок элементов как в массиве (по этому вариант «через хеш» не подходит).

Сейчас делаю что-то такое:

my $str = join ';', map { qq/$arr[$_]=$arr[$_ + 1]/ } grep { !($_ & 1) } 0 .. $#arr;

Подскажите пожалуйста, как такое сделать элегантнее.

 ,

KennyMinigun
()

Не включается дополнительный дисплей

Форум — Desktop

Раньше у я с горем пополам еще мог как-то подключить второй дисплей (приходилось обходить баг с логаутом и перекрытием экранов). Однако после недавних обновлений kubuntu какая-то программа/скрипт специально выключает второй дисплей.

Суть вот в чем:

  1. на экране ввода пароля (sddm) оба дисплея работают (правда с глюком — экран ноутбука дублируется в левом верхнем углу внешнего монитора поверх его основной картиники).
  2. после входа в сессию внешний дисплей попросту что-то отключает (что отчетливо видно на экране настроек kcm: http://i.imgur.com/5uJIKOI.png)
  3. если ткнуть галку «Enabled» для внешнего монитора, сессия вылетает на экран ввода пароля (sddm снова)
  4. goto 1

Попутно, в /home/elvenfighter/.local/share/kscreen/ генерируется файл с таким содержанием: http://pastebin.com/0ERTzqwU

Еще помню, недавно (два-три дня назад) в обновлениях kubuntu какой-то конфиг sddm требовал моего подтверждения на перезапись.

Помогите пожалуйста.

 , kscreen, ,

KennyMinigun
()

Разница в shebang

Форум — Development

Если с вот таким шебангом все понятно:

#!/usr/bin/perl
... он запускает интерпретатор по абсолютному пути и не ищет альтернатив.

То вот эти два варианта вводят меня в недоумение:

#!perl
#!/usr/bin/env perl

Вроди оба должны запускать из PATH. Но есть ли между ними принципиальная разница? Какой лучше использовать? Какой портабельнее?

 ,

KennyMinigun
()

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