Выпуск OpenIndiana 2019.04
https://wiki.openindiana.org/oi/2019.04 Release notes
java по-прежнему 8, но хоть gcc, gtk3 и firefox обновляют и то хорошо...
https://wiki.openindiana.org/oi/2019.04 Release notes
java по-прежнему 8, но хоть gcc, gtk3 и firefox обновляют и то хорошо...
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
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.
Всё началось с этой темы: 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)
Решил начать изучать 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
стал MSVC 2017 15.7, согласно этой табличке:
http://en.cppreference.com/w/cpp/compiler_support
Linux тут при том, что эта тема показывает, что gcc и clang для Linux нужны ваши коммиты для реализации стандарта.
В течение 1 день и 20 часов: https://www.humblebundle.com/store/the-darkness-ii
Ещё один день и 14 часов: https://www.humblebundle.com/store/f1-2015
Я вижу, что в репозитарии есть пакет: 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?
Погуглил структуру блокчейна и транзакций. Не увидел места куда можно вставить проивольные данные.
Плохо искал?
Есть вообщем 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
https://www.youtube.com/watch?v=EduVb_zo18Y
для Ъ:
Структура доклада:
1. Программисты в таком кол-ве и качестве больше не нужны.
С развитием техники и кухарки научились автоматизировать процессы.
2. ББС: Так, сейчас я отвечу, можно ? Аллё...
БЕБ: Привет, я на Середниковской.
ББС: Ну жду тебя, жду...
БЕБ: Как дела ? Чё (прим. авт - произ. от устар "что") там делаешь ?
ББС: Пишу видео - рассказываю как раз про программистов.
БЕБ: Ну давай...
ББС: Спасибо !
ББС: Извините пожалуйста, что отвлёкся...
3. "Вышли деньги, или Деньги - вышли"...
4. Троллинг материлистов тезисом: "Человек - это материя, которая догадалась что она есть". Отсыл к больцмановскому мозгу.
Нашел случайно стандарты JavaScript:
1. https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262, ...
2. https://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262, ...
3. http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262, 3...
5. http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262 5t...
6. http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262 6t...
7. http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262 7t...
8. http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
8 стандарт уже 885 страниц, больше чем стандарт C11 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
В другой теме(Не используйте Pale Moon) прочитал это сообщение:
вот мы когда писали под Linux, всегда выбирали ровно 1 дистрибутив.
Поведай всё же поподробнее, что за сообщество д-бов ты описываешь? Я хочу держаться от них подальше.
И возник вопрос, а под сколькими дистрибутивами вы тестируете свой код?
Я под двумя:
1) Manjaro x86_64
2) Предыдущий Ubuntu LTS i386
Установил 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?
В с/с++/vala уже побороли:
MSVC: /Qspectre
gcc: -mindirect-branch=thunk
clang: -mretpoline
Плохо только что в ubuntu 16.04 до сих пор не завезли gcc 7.3.0 с этим флагом :(
А в Java/Python/Rust/Free Pascal/D/Haskel/ещё_какой-нибудь_язык уже побороли Spectre?
Я конечно просто туплю, но никак не могу найти пример использования функции 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);
....
}
Попробовал использовать её так:
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
P.S. на valadoc смотрел, к сожалению именно к этой функции нет примера:
https://valadoc.org/glib-2.0/GLib.qsort_with_data.html
Хотя, например, к потокам есть объясняющий пример https://valadoc.org/glib-2.0/GLib.Thread.html
Решил поделиться результатами.
Процессор, 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;
}
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;
}
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;
}
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
Добавил исходники на github: https://github.com/fsb4000/try_bench
Недавно решил сравить qsort на разных Windows компиляторах. MinGW сделал это быстрее всех. Это показалось странным, учитывая что это-то C шная функция, а MinGW использует для C функций Microsoft библиотеку. Дело в флагах. Какие есть флаги безопасности у MinGW:
Защита стека
-fstack-protector-all --param ssp-buffer-size=4 -fstack-check
/GS
DEP
-Wl,--nxcompat
/NXCOMPAT
ASLR
-Wl,--dynamicbase
/DYNAMICBASE
64 bit для ASLR(только для 64 битных программ)
-Wl,--high-entropy-va
/HIGHENTROPYVA
Но у MSVC есть ещё один флаг для защиты Enable Control Flow Guard(https://msdn.microsoft.com/en-us/en-en/library/dn919635.aspx)
/guard:cf
Аналог этого на 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...
Если кто-то уже разбирался с этой темой, то прошу поделиться к каким выводам вы пришли...
На Humble Bundle.
Игра: https://www.humblebundle.com/store/sanctum-2
Книги: https://www.humblebundle.com/books/java-books
Понятно что на торентах есть и эта игра и другие и много книг, но всё же 5 книг по Java за $1 это халява...
← назад | следующие → |