argparse 3.0
Состоялся выпуск 3.0 C++ (стандарт C++17) header-only библиотеки парсинга аргументов командной строки argparse, распространяемой по лицензии MIT.
( читать дальше... )
>>> Подробности
Состоялся выпуск 3.0 C++ (стандарт C++17) header-only библиотеки парсинга аргументов командной строки argparse, распространяемой по лицензии MIT.
( читать дальше... )
>>> Подробности
Pgfe (PostGres FrontEnd) - продвинутый и многофункциональный драйвер для PostgreSQL, написанный на C++. Разработка нацелена на простоту использования и надёжность, учитывая производительность.
Pgfe можно скачать на странице Github.
>>> Оригинал
Добрый день
Имеется Малинка RPi3b. Написано приложение на Qt, которое читает данные от GPS модуля и выводит их на экран. Если запускать апп при старте Малинки с помощью systemctl, то выводятся одни координаты. Если запускать апп из-под отладчика, то другие, отличаются на сотые доли градуса. Помогите, пожалуйста, разобраться.
Спасибо.
Что почитать для написания простого бота для танчиков как в денди? На двумерной сетке, без анализа графики, то есть данные доступны уже в готовом виде - позиции противников, препятствия и т.п. Чтобы мозги работали на нейросетях и играл как человек, соперничал, искал обходные пути, мог оценивать разные не сложные стратегии и принимать решения, ну и всё такое… насколько это всё сложно и насколько продвинулись в этом нейросетки и существующие фреймворки по типу TensorFlow?
В последний раз, когда довелось столкнуться с задачей запуска дочерних процессов в Linux-е, то воспользовался вот этой штукой: https://github.com/skystrife/procxx
Но она уже более трех лет не развивается. Поэтому возник вопрос, а не появилось ли за это время что-то более свежее и живое?
Если кто-то знает хорошие альтернативы procxx, то поделитесь ссылками плиз.
PS. Ищется небольшая C++11 библиотека, без большого количества зависимостей, поэтому Qt, Boost-ы, ACE и Poco не рассматриваются. В принципе, можно и для более свежих плюсовых стандартов, хотя пока что есть надобность ограничиться C++11.
Собственно есть подобный код:
class Obj
{public:
};
class P: public Obj {
public: P() {}
};
class O: public Obj {
int x = 42;
public: O() {}
};
void foo(Obj* obj) {
auto size = ????(obj);
}
Могу ли я как то получить в функции foo
размер объекта который является аргументом? Например при foo(new O())
я ожидаю получить sizeof(int)
Вопрос к знатокам.
Хочу сделать вывод названий типов используя typeid(T).name() для выражений которые «не умеют» выводить своё значение в std::ostream.
Пытаюсь делать вот так:
#include <iostream>
#include <typeinfo>
template <typename T, typename = std::ostream&>
struct can_be_streamed : std::false_type {};
template <typename T>
struct can_be_streamed<T, decltype(std::declval<std::ostream&>() << std::declval<T>())> : std::true_type {};
template <typename S, typename T>
typename std::enable_if<!can_be_streamed<T>::value, S&>::type operator<<(S &s, const T &t)
{
return s << "type:" << typeid(t).name();
}
class A {};
std::ostream& operator<<(std::ostream &s, const A &)
{
return s << "value:" /*<< ...*/;
}
class B {};
int main(void)
{
A a;
std::cout << a << std::endl;
B b;
std::cout << b << std::endl;
return EXIT_SUCCESS;
}
Есть несколько версий компиляторов и...
gcc 9.1.0 всё Ok.
clang 7.0.1 всё Ok.
А вот gcc 6.4.0 кричит:
v1.cpp: In substitution of 'template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::error_code&) [with _CharT = char; _Traits = std::char_traits<char>]':
v1.cpp:8:66: recursively required by substitution of 'template<class S, class T> typename std::enable_if<(! can_be_streamed<T>::value), S&>::type operator<<(S&, const T&) [with S = std::basic_ostream<char>; T = char [8]]'
v1.cpp:8:66: required by substitution of 'template<class S, class T> typename std::enable_if<(! can_be_streamed<T>::value), S&>::type operator<<(S&, const T&) [with S = std::basic_ostream<char>; T = char [8]]'
v1.cpp:20:17: required from here
v1.cpp:8:66: fatal error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum)
struct can_be_streamed<T, decltype(std::declval<std::ostream&>() << std::declval<T>())> : std::true_type {};
Откуда рекурсия?
И что нужно подправить для gcc 6.4.0 что бы это починить?
Задумался я тут над элементарным вопросом о C++:
Как грамотно различать ошибки при работе с файловыми потоками (std::ofstream)?
Справочник по стандартной библиотеке указывает только на наличие флагов failbit, badbit, eofbit и соотв. геттеры. Гугл выдает какие-то мутные рецепты с SO, в которых при возникновении ошибок при работе с std::ofstream/ifstream подразумевается, что errno будет содержать код ошибки, как для операций В/В в стандартной библиотеке C.
Но с какой стати, если стандартная библиотека С++ не обязана ничего знать о существовании errno? По крайней мере в драфте стандарта C++11 в разделе о стандартной библиотеке ничего не сказано о errno.
Короче, когда запускаю некоторые приложения (hackmud, milkytracker, dota2), в панели виджет task manager зависает с одним и тем же списком приложений. Типа, утром я играл в hackmud, а вечером запускаю milkytracker и вижу в панели те приложения, которые запустил утром.
Может кто-нибудь подтвердить баг и помочь сформулировать багрепорт из этого непонятного потока мыслей?
Привет!
Народ, откуда пошла такая конструкция?
do
{
if ( !cond0 ) break;
foo();
if ( !cond1) break;
bar();
//...
if ( !condN) break;
return true;
} while ( 0 )
return false;
У меня Debian 9, самый обычный. При этом bash_history у root почему-то бинарный файл, а не просто текст ASCII, как у моего пользователя.
Вопрос: для чего это сделано и как вернуть все обратно, если нужно? То есть сконвертировать .bash_history обратно в ASCII и чтоб она и далее так сохранялась.
vsevolod@hp15debian9:~$ file .bash_history
.bash_history: UTF-8 Unicode text
vsevolod@hp15debian9:~$ su
Пароль:
root@hp15debian9:/home/vsevolod# cd ~
root@hp15debian9:~# file .bash_history
.bash_history: data
root@hp15debian9:~#
In Ubuntu 17.04 or newer, there is a script at /etc/update-motd.d/50-motd-news that reads motd.ubuntu.com and displays that text with the rest of the MOTD.
Currently, motd.ubuntu.com shows a news item about HBO's Silicon Valley which has a reference to Ubuntu.
https://bugs.launchpad.net/ubuntu/ source/base-files/ bug/1701068
Сначала реклама третьесортных тивишоу, потом реклама наркотиков, айсис и шиндошс 10. Доколе?
Здравствуйте
Имеется сервер. Debian 7 x86_64, ядро 3.2.0-4-amd64
eth1 - белый ip4 адрес
eth0 - адрес 192.168.0.1/24(внутренняя сеть)
Настроил 6to4 интерфейс, как описано тут:
6to4.ru
Конфигурация iptables и ip6tables по умолчанию(это временно, не обращайте внимание на то, что для локалки не настроено правил).
ipv6 интернет адреса доступны, все пингуется, также я с другого ipv6-адреса(miredo) могу зайти на данный сервер по ssh.
Теперь про iptables. Допустим я хочу контролировать траффик.
Допустим имеется следующий скрипт для iptables:
#!/bin/bash
#iptables###########################
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
#ip6tables###############################
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 filter INPUT "
iptables -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 filter OUTPUT "
iptables -A FORWARD -p 41 -j LOG --log-level debug --log-prefix "p-41 filter FORWARD "
iptables -t mangle -A PREROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle PRE "
iptables -t mangle -A INPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle INPUT "
iptables -t mangle -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle OUTPUT "
iptables -t mangle -A FORWARD -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle FORWARD "
iptables -t mangle -A POSTROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle POST "
iptables -t nat -A PREROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 nat PRE "
iptables -t nat -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 nat OUTPUT "
iptables -t nat -A POSTROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 nat POST "
iptables -t raw -A PREROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 raw PRE "
iptables -t raw -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 raw OUTPUT "
Здравствуйте.
Имеется текстовый файл 111, содержащий единственную строку:
1234567890
Имеется следующий код c++(используется QT):
...
QFile f1("111");
f1.open(QIODevice::ReadWrite);
QFileStream sf1(&f1);
QString s1 = sf1.readLine(3);