понедельник, 23 мая 2022 г.

Amazon такой Amazon



Изучая установку сервера minecraft, наткнулся на дистрибут java от Amazon.

Сначала гордо пишут:

Amazon Corretto 17 is a no-cost, multiplatform, production-ready distribution of the Open Java Development Kit (OpenJDK). Corretto 17 comes with long-term support that includes performance enhancements and security fixes. Corretto 17 is certified as compatible with the Java SE standard and is used internally at Amazon for many production services.

Обещают различные улучшения и правки, а потом приводят список этих правок:

Updates to vendor-related metadata.
    Identifies Amazon as the vendor of this OpenJDK distribution and adds hyperlinks for reporting issues.
То есть просто переименовали OpenJDK и все?..



 

воскресенье, 20 декабря 2020 г.

Сравнение флотов (чисел с плавающей точкой) в NUnit

0.9999999999
vs
1.0000000001
У чисел с плавающей запятой (float, double) есть такая особенность, что из-за проблем потери точности, они могут получаться не равными, даже если должны быть такими с точки зрения математики. И это зависит не только от используемых операций, но и от архитектуры железа, а также флагов процессора, установленных в момент вычислений.
Например, 72/6 может быть не равно 3*4.
Но сравнивать их все равно нужно. Поэтому используется сравнение с определенной точностью. Берется модуль (абсолютное значение) разности этих чисел и сравнивается с небольшой константой. Если модуль разницы больше этой константы, числа считаются разными.
В библиотеке NUnit для таких сравнений есть специальные конструкции
Вместо велосипедов
Assert.IsTrue(Mathf.Abs(actualValue - expectedValue) < tolerance);
и
Assert.Less(Mathf.Abs(actualValue - expectedValue), tolerance);
В NUnit есть
Assert.AreEqual(expectedValue, actualValue, tolerance); 

пятница, 18 декабря 2020 г.

Доступная память в Linux



Объем памяти, доступной на виртуальной машине зависит от выбранного дистрибутива Linux. Точнее, от настроек ядра и драйверов, которые включены по умолчанию.

Я попробовал установить на одну и ту же машину c 2Гб памяти Debian 10, CentOS 8 и Ubuntu 20.

Такой получился объем доступной памяти по умолчанию:

# cat /proc/meminfo | grep MemTotal

Debian
MemTotal:        1993756 kB

CentOS:
MemTotal:        1811096 kB

Ubuntu:
MemTotal:        1986080 kB

На CentOS ситуацию можно улучшить, отключив kdump, который изначально включен и съедает 160 Мб.

Редактируем конфиг grub:
# vi /etc/default/grub

Меняем crashkernel=auto на crashkernel=no в GRUB_CMDLINE_LINUX

Применяем изменения:
# grub2-mkconfig -o /boot/grub2/grub.cfg

Отключаем kdump:
# systemctl disable kdump

Перезагружаемся:
# shutdown -r now

Уже лучше, но все еще хуже, чем в Debian и Ubuntu:
MemTotal:        1974584 kB

Таким образом, из трех данных версий Linux, больше всего памяти, доступной приложениям, оставляет Debian, меньше всего - CentOS.