LINUX.ORG.RU

Сообщения fsb4000

 

Выпуск OpenIndiana 2019.04

https://wiki.openindiana.org/oi/2019.04 Release notes

java по-прежнему 8, но хоть gcc, gtk3 и firefox обновляют и то хорошо...

 

fsb4000
()

Во FreeBSD 12 появилась поддержка java 12 и java 11

https://www.freshports.org/java/openjdk12/

Ждём, что и в других *BSD со временем появится...

$ java -version
openjdk version "12" 2019-03-19
OpenJDK Runtime Environment (build 12+33-2)
OpenJDK 64-Bit Server VM (build 12+33-2, mixed mode)
$ uname -a
FreeBSD freebsd 12.0-RELEASE FreeBSD 12.0-RELEASE r341666 GENERIC  amd64

 ,

fsb4000
()

Swift5 вышел

https://www.opennet.ru/opennews/art.shtml?num=50393

Эх, уже 5 версия, а до сих пор не заопенсорили Swift...

Лишь Foundation Kit открыт, а Application Kit и Cocoa закрыт, как и мост Objective-C(чтобы воспользоваться реализациями Application Kit и Cocoa из GNUstep)

Вообще не понимаю, как при таком раскладе кто-то использует Swift на Linux...

Хотя для всяких консольных приложений вроде можно использовать...

Вот что в интернете нашёл

I've developed a suite of micro services for Linux in 2016 and it worked perfectly with Foundation and IBM Kitura frameworks.

In 2017 we deployed the micro services and the performance has been great specially at the level of RAM, which is very important for us as we need it to run on expensive ECC RAM servers.

So yes, you can use Swift as a general purpose programming language on Linux as you can on macOS, and I recommend it.

 

fsb4000
()

Книги о Linux задёшево

 

fsb4000
()

Собрал первую программу под DOS :)

Всё началось с этой темы: Debian 2.0 (комментарий)

После своего коммента, я осознал, что никогда в жизни не писал под DOS, и даже не знаю есть ли сейчас что живое под эту платформу.

Оказывается ещё живо :) FreeDOS 1.2 - 25 декабря 2016, ну и DOSBox жив.

И даже есть несколько живых компиляторов.

1) https://github.com/open-watcom/open-watcom-v2

Очень приятно, что ребята которые его пилят, запилили Coverity Scan и Travis. Можно скачать самый новый компилятор https://github.com/open-watcom/travis-ci-ow-builds/archive/master.zip собранный под windows и linux сразу.

Огорчает лишь поддержка стандартов, частично С99 и очень частично C++11, но зато я понял, почему кто-нибудь может начать писать на С89 в 2019 году, всё-таки не все живые компиляторы осилили С99...

2) http://www.delorie.com/djgpp/ Самый настоящий gcc под DOS. Не смотря на неинформативный сайт, с очень скудной помощью: https://imgur.com/a/e5mWNN5 gcc работает. Библиотека С реализована частично, в частности нет файла complex.h, может ещё чего-нибудь нет. Но в целом работает, и не только С, но и С++ и, наверное, другие языки gcc.

И так выглядит моя первая программа под DOS: https://imgur.com/a/qEN79yP

Не знаю зачем я это написал, просто захотелось кому-нибудь рассказать...

А Linux, тут вот причём, компилятор работает под Linux:

i586-pc-msdosdjgpp-gcc -v
Using built-in specs.
COLLECT_GCC=i586-pc-msdosdjgpp-gcc
COLLECT_LTO_WRAPPER=/usr/local/djgpp/libexec/gcc/i586-pc-msdosdjgpp/8.2.0/lto-wrapper
Target: i586-pc-msdosdjgpp
Configured with: ../gnu/gcc-8.20/configure --target=i586-pc-msdosdjgpp --program-prefix=i586-pc-msdosdjgpp- --prefix=/usr/local/djgpp --disable-nls --disable-plugin --disable-lto --enable-lto --enable-libstdcxx-filesystem-ts --enable-libquadmath-support --with-gmp=/home/fsb4000/github/build-djgpp/build/djcross-gcc-8.2.0/tmpinst --with-mpfr=/home/fsb4000/github/build-djgpp/build/djcross-gcc-8.2.0/tmpinst --with-mpc=/home/fsb4000/github/build-djgpp/build/djcross-gcc-8.2.0/tmpinst --enable-version-specific-runtime-libs --enable-languages=c,c++
Thread model: single
gcc version 8.2.0 (GCC) 

 , , , ,

fsb4000
()

Где я мог накосячить с Java?

Решил начать изучать Java.

Нашел сайт с интерактивным режимом.

Выбрал задачу: https://hyperskill.org/projects/24

Вроде решил её. Но решил также портировать решение на другие языки программирования, которыми уже владею.

И как же я был удивлён, что первый же порт на Typescript получился в 1.5 раза быстрее...

Describing JavaAcceptanceTests
  [+] single solution 338ms
  [+] no solution 322ms
  [+] many solutions 343ms
  [+] single solution complex numbers 355ms
  [+] no output without -verbose 310ms
Describing TypescriptAcceptanceTests
  [+] single solution 205ms
  [+] no solution 183ms
  [+] many solutions 205ms
  [+] single solution complex numbers 242ms
  [+] no output without -verbose 180ms

Исходники: https://github.com/fsb4000/linear-equations-solver

Где я так мог накосячить, что решение на Java получилось в полтора раза медленнее чем на JavaScript(Typescript)?

java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
node --version
v8.11.1

 ,

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
()

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