LINUX.ORG.RU

Сообщения fsb4000

 

Первым компилятором полностью поддерживающим стандарт c++17

 

стал MSVC 2017 15.7, согласно этой табличке:

http://en.cppreference.com/w/cpp/compiler_support

Linux тут при том, что эта тема показывает, что gcc и clang для Linux нужны ваши коммиты для реализации стандарта.

fsb4000
()

The Darkness II бесплатно

 , ,

В течение 1 день и 20 часов: https://www.humblebundle.com/store/the-darkness-ii

fsb4000
()

Бесплатно без смс F1 2015

 

Ещё один день и 14 часов: https://www.humblebundle.com/store/f1-2015

fsb4000
()

Как обновить пакет в OpenSUSE 42.3?

 

Я вижу, что в репозитарии есть пакет: http://download.opensuse.org/update/leap/42.3/oss/x86_64/gcc7-7.3.1 r258313-6...

Но zypper его не видит...

$ zypper repos --uri
Repository priorities are without effect. All enabled repositories share the same priority.

# | Alias      | Name       | Enabled | GPG Check | Refresh | URI
--+------------+------------+---------+-----------+---------+-------------------------------------------------------------------
1 | oss        | oss        | Yes     | (r ) Yes  | No      | http://download.opensuse.org/distribution/leap/42.3/repo/oss/suse/
2 | oss_update | oss_update | Yes     | (r ) Yes  | No      | http://download.opensuse.org/update/leap/42.3/oss/
$ sudo zypper refresh
Repository 'oss' is up to date.
Retrieving repository 'oss_update' metadata ...............................................................................................................[done]
All repositories have been refreshed.
$ sudo zypper install gcc7
Loading repository data...
Reading installed packages...
'gcc7' is already installed.
No update candidate for 'gcc7-7.2.1+r253435-3.2.x86_64'. The highest available version is already installed.
Resolving package dependencies...

Nothing to do.
$ sudo zypper up
Loading repository data...
Reading installed packages...

Nothing to do.
$ sudo zypper dup
Warning: You are about to do a distribution upgrade with all enabled repositories. 
Make sure these repositories are compatible before you continue.
See 'man zypper' for more information about this command.
Loading repository data...
Reading installed packages...
Computing distribution upgrade...

Nothing to do.

Как обновляют пакеты в OpenSUSE?

fsb4000
()

отправка сообщений в Bitcoin

 

Погуглил структуру блокчейна и транзакций. Не увидел места куда можно вставить проивольные данные.
Плохо искал?

Есть вообщем OP коды в Bitcoin транзакциях. С помощью OP_RETURN можно сохранять сообщения в блокчейне биткоина.

В общем вот пара ссылок для начала:

https://en.bitcoin.it/wiki/OP_RETURN

https://bitcoin.stackexchange.com/questions/45952/op-return-custom-message-in...

Если хочешь просто отправить сообщение, то есть такой сервис(P.S. я сам им не пользовался): https://inthebitcoin.com

Tanger

fsb4000
()

Программисты больше не нужны

https://www.youtube.com/watch?v=EduVb_zo18Y

для Ъ:

Структура доклада: 
1. Программисты в таком кол-ве и качестве больше не нужны. 
С развитием техники и кухарки научились автоматизировать процессы. 

2. ББС: Так, сейчас я отвечу, можно ? Аллё... 
   БЕБ: Привет, я на Середниковской. 
   ББС: Ну жду тебя, жду... 
   БЕБ: Как дела ? Чё (прим. авт - произ. от устар "что") там делаешь ? 
   ББС: Пишу видео - рассказываю как раз про программистов. 
   БЕБ: Ну давай... 
   ББС: Спасибо ! 
   ББС: Извините пожалуйста, что отвлёкся... 

3. "Вышли деньги, или Деньги - вышли"... 

4. Троллинг материлистов тезисом: "Человек - это материя, которая догадалась что она есть". Отсыл к больцмановскому мозгу.

fsb4000
()

JavaScript простой язык?

 

fsb4000
()

Под сколькими дистрибутивами вы тестируете код?

В другой теме(Не используйте Pale Moon) прочитал это сообщение:

вот мы когда писали под Linux, всегда выбирали ровно 1 дистрибутив.

Поведай всё же поподробнее, что за сообщество д-бов ты описываешь? Я хочу держаться от них подальше.

И возник вопрос, а под сколькими дистрибутивами вы тестируете свой код?

Я под двумя:

1) Manjaro x86_64

2) Предыдущий Ubuntu LTS i386

fsb4000
()

Есть какой-нибудь драйвер лучше vesa для VirtualBox OpenBSD?

 ,

Установил OpenBSD 6.2 в VirtualBox

Не нашёл VirtualBox additions...

Изменил режим в fullscreen(1920х1080) через редактирование /etc/X11/xorg.conf как написано тут:

http://www.h-i-r.net/2009/11/virtualbox-full-screen-resolution-for.html

Да, стало в полный экран, но всё-таки немного подлагивает рабочий стол.

Это максимум на что можно рассчитывать в OpenBSD@VirtualBox или есть другой драйвер/какое-то ещё действие сделать чтобы увеличить производительность 2D?

fsb4000
()

А в вашем языке программирования уже побороли Spectre?

 ,

В с/с++/vala уже побороли:

MSVC: /Qspectre

gcc: -mindirect-branch=thunk

clang: -mretpoline

Плохо только что в ubuntu 16.04 до сих пор не завезли gcc 7.3.0 с этим флагом :(

А в Java/Python/Rust/Free Pascal/D/Haskel/ещё_какой-нибудь_язык уже побороли Spectre?

fsb4000
()

Как сортировать массив в Vala?

 ,

Я конечно просто туплю, но никак не могу найти пример использования функции qsort_with_data

Пока сделал так(всё работает):

static int greater (void* a, void* b)
{
    int arg1 = * (int*)a;
    int arg2 = * (int*)b;

    if (arg1 < arg2) return 1;
    if (arg1 > arg2) return -1;
    return 0;
}

void some_func(int[] copy_input)
{
    Posix.qsort(copy_input, copy_input.length, sizeof(int), greater);
    ....
}
Хотелось бы использовать вместо Posix.qsort, функцию qsort_with_data.

Попробовал использовать её так:

static int greater_int (int arg1, int arg2)
{
    if (arg1 < arg2) return 1;
    if (arg1 > arg2) return -1;
    return 0;
}
void some_func(int[] copy_input)
{
    qsort_with_data<int>(copy_input, sizeof(int), greater_int);
    ....
}

Получаю

/usr/share/vala-0.36/vapi/glib-2.0.vapi:5714:11: runtime error: load of misaligned address 0x60200000ea74 for type 'const <unknown> *', which requires 8 byte alignment
0x60200000ea74: note: pointer points here
  0e 00 00 00 0e 00 00 00  0e 00 00 00 0e 00 00 00  03 00 00 00 00 00 00 02  10 00 00 00 01 00 00 54
              ^ 
/usr/share/vala-0.36/vapi/glib-2.0.vapi:5714:11: runtime error: load of misaligned address 0x60200000ea74 for type 'const <unknown> *', which requires 8 byte alignment
0x60200000ea74: note: pointer points here
  0e 00 00 00 0e 00 00 00  0e 00 00 00 0e 00 00 00  03 00 00 00 00 00 00 02  10 00 00 00 01 00 00 54
Если у кого-то есть опыт использования шаблонной функции qsort_with_data, прошу поделиться простейшим примером.

P.S. на valadoc смотрел, к сожалению именно к этой функции нет примера:

https://valadoc.org/glib-2.0/GLib.qsort_with_data.html

Хотя, например, к потокам есть объясняющий пример https://valadoc.org/glib-2.0/GLib.Thread.html

fsb4000
()

Небольшой тест try_catch на C++, C, Vala

 , ,

Решил поделиться результатами.

Процессор, AMD FX 8350, 4Ghz

Компиляторы:

gcc version 7.2.0 (Ubuntu 7.2.0-1ubuntu1~16.04)
Vala 0.36.8

C/C++, без try catch

const char* noexcept_thrower_c(int i)
{
    if (i == 0)
        return "error";
    return NULL;
}

int noexcept_try(int i)
{
    int res;
    if (noexcept_thrower_c(i) == NULL)
    {
        res = 0;
    }
    else
    {
        res = 1;
    }
    return res;
}
C++ try..catch
void thrower_cpp(int i)
{
    if (i == 0)
        throw std::runtime_error("error");
}

int cpp_try(int i)
{
    int res;
    try
    {
        thrower_cpp(i);
        res = 0;
    }
    catch(const std::exception&)
    {
        res = 1;
    }
    return res;
}
Cexception Try..Catch
void thrower_c(int i)
{
    if (i == 0)
        Throw("error");
}

int cexception_try(int i)
{
    int res;
    CEXCEPTION_T e = CEXCEPTION_NONE;
    Try
    {
        thrower_c(i);
        res = 0;
    }
    Catch(e)
    {
        (void)e;
        res = 1;
    }
    return res;
}
Vala try..catch
public errordomain Error
{
    Thrower,
}

void thrower(int i)  throws Error
{
    if (i == 0)
        throw new Error.Thrower ("error");
}

int vala_try(int i)
{
    int res;
    try
    {
        thrower(i);
        res = 0;
    }
    catch(Error e)
    {
        (void)e;
        res = 1;
    }
    return res;
}
Получившиеся результаты:
vala_try                                 3 ns/op
vala_catch                             252 ns/op
c++_try                                  1 ns/op
c++_catch                             2382 ns/op
noexcept_try                             1 ns/op
noexcept_catch                           1 ns/op
сexception_try                           9 ns/op
сexception_catch                        25 ns/op
Ничего неожиданного, но меня порадовал с++ когда входим только в try, действительно zero-cost exception. Так же несколько удивило время vala, при входе в catch.

Добавил исходники на github: https://github.com/fsb4000/try_bench

fsb4000
()

Можно ли MinGW считать компилятором?

 , , ,

Недавно решил сравить qsort на разных Windows компиляторах. MinGW сделал это быстрее всех. Это показалось странным, учитывая что это-то C шная функция, а MinGW использует для C функций Microsoft библиотеку. Дело в флагах. Какие есть флаги безопасности у MinGW:

Защита стека

-fstack-protector-all --param ssp-buffer-size=4 -fstack-check
Аналог у MSVC(https://msdn.microsoft.com/en-us/en-en/library/8dbf701c.aspx):
/GS

DEP

-Wl,--nxcompat
Аналог у MSVC(https://msdn.microsoft.com/en-us/en-en/library/ms235442.aspx)
/NXCOMPAT

ASLR

-Wl,--dynamicbase
Аналог у MSVC(https://msdn.microsoft.com/en-us/en-en/library/bb384887.aspx)
/DYNAMICBASE

64 bit для ASLR(только для 64 битных программ)

-Wl,--high-entropy-va
Аналог у MSVC(https://msdn.microsoft.com/en-us/en-en/library/jj835761.aspx)
/HIGHENTROPYVA

Но у MSVC есть ещё один флаг для защиты Enable Control Flow Guard(https://msdn.microsoft.com/en-us/en-en/library/dn919635.aspx)

/guard:cf
Этого флага нет у MinGW.

Аналог этого на Linux:

https://pax.grsecurity.net/docs/PaXTeam-H2HC15-RAP-RIP-ROP.pdf

https://wiki.gentoo.org/wiki/Hardened/PaX_Quickstart

Вот ещё нашел статейку про Enable Control Flow https://habrahabr.ru/company/dsec/blog/305960/

Вот сейчас пытаюсь разобраться насколько это увеличивает безопасность, а то может пора выкидывать MinGW и самому компилировать ядро Linux для включения PaX...

Если кто-то уже разбирался с этой темой, то прошу поделиться к каким выводам вы пришли...

fsb4000
()

Книги по Java и бесплатная игра Sanctum 2

 

На Humble Bundle.

Игра: https://www.humblebundle.com/store/sanctum-2

Книги: https://www.humblebundle.com/books/java-books

Понятно что на торентах есть и эта игра и другие и много книг, но всё же 5 книг по Java за $1 это халява...

fsb4000
()

Немного слов про умные компиляторы

 , ,

Что в этом коде не так? https://godbolt.org/g/E3rfoq Почему компилятор 2017 года, с опциями максимальной скорости и с поддержкой инструкций AVX2 не видит, что сумму можно посчитать используя SIMD?

Вот пример ассемблерного кода, который в 3 раза более быстрый чем сгенерированный компилятором, и это лишь используя mmx инструкции. https://pastebin.com/b1yiSwNx

fsb4000
()

Как объединить шаблоны и наследование

 ,

Попросили решить, но я не знаю как :(

Спасибо тому, кто подскажет идею.

Есть main.cpp, нужно чтобы он работал:

#include "quadrature.h"

#include <cmath>
#include <iostream>
#include <memory>
#include <string>

int main() {
    using F = decltype(cos);

    std::string input;
    std::cin >> input;
    std::unique_ptr<IntegrationMethod<F>> method;
    if (input == "rectangle")
        method.reset(new RectangleRule<F>);
    else
        method.reset(new TrapezoidalRule<F>);

    double x, y;
    std::cin >> x >> y;

    int n;
    std::cin >> n;

    std::cout << method->Integrate(cos, x, y, n) << "\n";
    std::cout << method->Integrate(sin, x, y, n) << "\n";
}

Я не знаю как именно реализовать три недостающих класса. Вот мой вариант, я знаю что он не правильный и не компилируется:

#ifndef __QUADRATURE_H__
#define __QUADRATURE_H__

template <typename F>
class IntegrationMethod
{
public:
	virtual double Integrate(F func, double x, double y, int n)
	{
		return 0;
	}
protected:
};

template <typename F>
class RectangleRule : public IntegrationMethod<F>
{
public:
	double Intergrate (F func, double x, double y, int n) override
	{
	    double value = 0;
		double step = (y - x)/n;
	    for (double i = x+step/2; i < y; i += step)
	    {
	        value += func(i);
	    }
	    value *= step;
	    return value;
	}
};

template <typename F>
class TrapezoidalRule : public IntegrationMethod<F>
{
public:
	double Intergrate (F func, double x, double y, int n) override
	{
	    double value = 0;
		double step = (y - x)/n;
	    for (double i = x; i < y; i += step)
	    {
	        value += func(i);
	    }
	    value *= step;
	    return value;
	}
};
#endif

fsb4000
()

Ищу удаленную работу программистом С или С++

 ,

Ищу удаленную работу программистом С или С++

Знаю:

С++: C++14, многие библиотеки boost, Qt5 Widgets, Google Test, Qt Test

C: C99, Posix C, OpenMP 2.0, Unity

системы сборки: make, qmake

контроль версий: git

статические анализаторы: clang-tidy, cppcheck

Контакты:

Игорь, fsb4000@yandex.ru , skype: fsb4000

fsb4000
()

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