LINUX.ORG.RU

Сообщения fsb4000

 

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

Форум — Talks

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

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

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

 

fsb4000
()

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

Форум — Games

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

 , ,

fsb4000
()

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

Форум — Games

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

 

fsb4000
()

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

Форум — General

Я вижу, что в репозитарии есть пакет: 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

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

Есть вообщем 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
()

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

Форум — Talks

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

для Ъ:

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

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

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

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

fsb4000
()

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

Форум — Development

 

fsb4000
()

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

Форум — Development

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

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

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

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

Я под двумя:

1) Manjaro x86_64

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

fsb4000
()

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

Форум — Desktop

Установил 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?

Форум — Talks

В с/с++/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?

Форум — Development

Я конечно просто туплю, но никак не могу найти пример использования функции 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

Форум — Development

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

Процессор, 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 считать компилятором?

Форум — Development

Недавно решил сравить 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

Форум — Talks

На Humble Bundle.

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

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

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

 

fsb4000
()

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

Форум — Development

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

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

 , ,

fsb4000
()

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

Форум — Development

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

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

Есть 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
()

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

Форум — Job

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

Знаю:

С++: 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 подписка на новые темы