Забег.РФ 21 км — мои впечатления


В воскресение 22 мая 2022 года я принял участия в самом массовом забеге, по всей России в 9:00 были старты, бежало огромное количество участников.

Я выбрал дистанцию 21 км, погода была солнечной, но все равно было холодно из за ветра. Бежалось относительно легко, хотя сказывался забег который был 15 мая, там я немного притопил.

Результатом я вполне доволен 1 час 59 минут, это темп 5:34 минуты/километр, но главное, что пульс был стабильный.

Еще, хочется отметить просчет организаторов, вещи из камеры хранения я поручал почти два часа, но до крупного скандала дело не дошло, все отнеслись с пониманием. И еще момент, получение номера, процесс тоже был не на высоте, потерял много времени.

Московский полумарафон 15.05.2022


К этому полумарафону я не готовился, хватило текущей физической формы. Результат тоже не суперский, уверенный середнячек, что вполне меня устраивает, ведь это не погоня за олимпийскими медалями, а забег за настроением, себя показать, на людей посмотреть.

Что меня порадовало, так это огромное число людей готовых бежать 21 км, дистанция не сложная, но для новичков трудна, тут без подготовки не пробежишь.

Ниже, привожу свои результаты.

Cloud offline


В связи с текущими событиями (война на Украине) многие компании отключают пользователей из России, в том числе и облачные. На мой взгляд, этот шаг аналогичен национализации в экономике. Компании выстраивали бизнес с учетом облачных технологий, а им все отключили, ведь ценность облака не сколько в данных, но и в инфраструктуре и автоматизации управления мощностями.

После, такого уже не хочется полагаться на публичные облака, а использовать корпоративные, так как сама идея облака очень привлекательна, но риски огромны, по сути можно за один день стать банкротом, только потому, что ты гражданин страны которая не нравиться США.

Oracle Cloud Free Tier


Компания Oracle предлагает облачный сервис бесплатно на неограниченное количество времени. Ниже описание того как я тестировал эту возможность.

Я не буду в подробностях описывать как регистрироваться, скажу, что достаточно перейти по ссылке https://oracle.com/free и вам понадобится карта для проверки вашего возраста (спишут 1EU и тут же вернут).

Вы получаете два компьютера AMD с одним гигом памяти на борту и еще несколько «плюшек» в виде Object Storage и Autonomous Data Warehouse.

Идея простая, поднять на VM сервис HTTP + PHP и подключится на запись и чтение к Autonomous Data Warehouse.

Погуглив была найдена инструкция по установки PHP с поддержкой OCI8, сразу оговорюсь, я использовал настройки по умолчанию от Oracle в надежде, что все пройдет гладко, так как я использую только родное, но был удивлен когда все пошло не так.

Установить HTTPD оказалось очень просто, потом установил PHP он стал по умолчанию 7.4 что дало о себе знать в дальнейшем.

sudo yum install -y oracle-release-el7 oracle-php-release-el7
sudo yum install -y php php-devel php-xml dtrace-utils
wget http://pear.php.net/go-pear.phar
sudo php go-pear.phar
sudo yum -y install oracle-instantclient19.13-basic oracle-instantclient19.13-devel
sudo PHP_DTRACE=yes pecl install oci8-2.2.0
sudo sh -c "echo extension=oci8.so > /etc/php.d/20-oci8.ini"
sudo sh -c "echo oci8.events = On >> /etc/php.d/20-oci8.ini"
sudo systemctl enable --now httpd.service
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
sudo setsebool -P httpd_can_network_connect on
sudo systemctl restart httpd

И еще один момент, после того как вы создали виртуальную машину, будет создана и подсеть, так вот надо открыть порт 80 для адреса 0.0.0.0/0 для того, чтобы подключиться к httpd серверу.

Так как к базе данных надо подключаться через wallet файл, чтобы закачать его в виртуальную машину мы активируем Object Storage (создаем bucket) и загружаем туда наш wallet от Autonomous Data Warehouse, а затем командой sudo wget закачиваем его /usr/lib/oracle/19.13/client64/lib/network/admin и запаковываем его unzip *.zip

Последним шагом является проверка: /var/www/html создаем info.php с командой phpinfo(); результатом будет конфигурация сервера и наличие в этой конфигурации отдельной секции OCI8

Следующим этапом проверяем подключение к БД, для этого скачиваем пример example.php (его можно скачать здесь) меняем в нем пароль и название имя базы данных (смотри в файле wallet файл tnsnames.ora). Я разместил этот файл в Object Storage, а потом скачал через wget.

Запускаем наш проверочный код http://<ваш IP виртуальной машины>/Example.php и должна появится табличка, а если подключится к нашей облачной базе данных то увидим там новую таблицу MYCLOUDTBL.

Итак, я получил навык работы с облачными сервисами, попрактиковался в администрировании Linux и убедился, что пока бесплатных пользователей не очень любят, на мой взгляд компания Oracle могла предусмотреть скрипты для организации подключения из виртуальных машин к базам данных их же собственного облака.

Подключение по SSL версии TLS 1.2


Задача: требуется установить соединение из java агента с сайтом по HTTPS по протоколу TLS 1.2 (например это надо для выгрузки файлов в облачное хранилище Amazon S3 (Simple Storage Service) или закачать информацию в SharePoint или дернуть REST).

По умолчанию Лотус использует TLS 1 и при подключении к ресурсам с TLS 1.2 появляется ошибка проверки сертификата.

Шаг 1: импортируем сертификат в хранилище Lotus

D:\Lotus\Notes\jvm\bin\ikeycmd -cert -add -db D:\Lotus\Notes\jvm\lib\security\cacerts -pw changeit -file d:\temp\mailru.cer -format ascii -trust enable -type jks

Шаг 2: скачиваем криптопровайдер и копируем в директорию D:\Lotus\Notes\jvm\lib\ext

bcprov-jdk15to18-1.65.jar и bctls-jdk15to18-1.65.jar и bcutil-jdk15to18-1.69.jar

Шаг 3: Редактируем D:\Lotus\Notes\jvm\lib\security\ java.security

#Добавляем два провайдера
security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider

#Перенумируем стандартные провайдеры
security.provider.3=com.ibm.jsse2.IBMJSSEProvider2
security.provider.4=com.ibm.crypto.provider.IBMJCE
security.provider.5=com.ibm.security.jgss.IBMJGSSProvider
security.provider.6=com.ibm.security.cert.IBMCertPath
security.provider.7=com.ibm.security.sasl.IBMSASL
security.provider.8=com.ibm.xml.crypto.IBMXMLCryptoProvider
security.provider.9=com.ibm.xml.enc.IBMXMLEncProvider
security.provider.9=com.ibm.security.jgss.mech.spnego.IBMSPNEGO
security.provider.10=sun.security.provider.Sun

Комментируем стандартные средства SSL и прописываем новые настройки

# Determines the default key and trust manager factory algorithms for
# the javax.net.ssl package.
#
#ssl.KeyManagerFactory.algorithm=IbmX509
#ssl.TrustManagerFactory.algorithm=IbmX509
ssl.SocketFactory.provider=org.bouncycastle.jsse.provider.SSLSocketFactoryImpl

Шаг 4: Проверка как все работает, пишем агент

import lotus.domino.*;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;

public class SSLPoke extends AgentBase {

    public void NotesMain() {

      try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();
        
          SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
          SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("mail.ru", 443);
          
          SSLParameters sslparams = new SSLParameters();
          sslparams.setEndpointIdentificationAlgorithm("HTTPS");
          sslsocket.setSSLParameters(sslparams);
          
          InputStream in = sslsocket.getInputStream();
          OutputStream out = sslsocket.getOutputStream();

          
          // Write a test byte to get a reaction :)
          out.write(1);

          while (in.available() > 0) {
              System.out.print(in.read());
          }
          System.out.println("Successfully connected");

      } catch(Exception e) {
          e.printStackTrace();
       }
   }
}

Не забудет перезапустить Лотус после внесения всех правок в конфиге и копирования jar файлов в директорию lib\ext.

Выполните агента и в Java консоли должно появиться:

дек 16, 2021 8:38:21 PM org.bouncycastle.jsse.provider.PropertyUtils getBooleanSecurityProperty
ИНФОРМАЦИЯ: Found boolean security property [keystore.type.compat]: true
дек 16, 2021 8:38:21 PM org.bouncycastle.jsse.provider.PropertyUtils getStringSystemProperty
ИНФОРМАЦИЯ: Found string system property [java.home]: D:\Notes\jvm
дек 16, 2021 8:38:21 PM org.bouncycastle.jsse.provider.PropertyUtils getStringSecurityProperty
ИНФОРМАЦИЯ: Found string security property [jdk.tls.disabledAlgorithms]: SSLv3, RC4, MD5withRSA, DH keySize < 768, 3DES_EDE_CBC, DESede, EC keySize < 224
дек 16, 2021 8:38:21 PM org.bouncycastle.jsse.provider.PropertyUtils getStringSecurityProperty
ИНФОРМАЦИЯ: Found string security property [jdk.certpath.disabledAlgorithms]: MD2, MD5, RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224
Successfully connected