Android Studio: обработка сайтов с сертификатом Минкомсвязи в webview компоненте приложения

При попытке отобразить в webview компоненте сайт с сертификатом выданным Минкомсвязи, возникает ошибка проверки SSL соединения, т.к. этому корневому сертификату система не «доверяет». В частности ошибка возникает в настоящий момент при процессинге платежей банка Тинькофф и Сбербанк. В настоящий момент существует путь заставить компонент webview корректно проходить проверку сертификата на таких сайтах. Для этого в файл манифеста приложения необходимо добавить строчку вида:

<application
        android:networkSecurityConfig="@xml/network_security_config"
...

А так-же в папке ресурсов добавить папку xml, и разместить там файл network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">ru</domain>
        <trust-anchors>
            <certificates src="@raw/root"/>
            <certificates src="@raw/sub"/>
            <certificates src="system"/>
            <certificates src="user"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

Сертификаты Минкомсвязи, соответственно нужно положить в android/src/res/raw. Скачать их можно тут

В результате проведенных манипуляций, все сайты в зоне ru, будут сначала проверяться при помощи сертификата Минкомсвязи, а в случае не успеха — встроенными сертификатами системы и установленными сертификатами пользователя.

1С: получаем список НКО с сервера minjust.gov.ru

Почему то у нас как всегда всё.. Государство требует проверять контрагента является ли он НКО, а инструментарий для этого не предлагает. Не, ну какой-никакой сервис у них был — можно было зайти на сайт, ввести в поле поиска название НКО и и получить результат — есть в списке это организация или нет. Но это согласитесь бред. «Автоматизировать процесс проверки?? А зачем? Куча бухгалтеров — бездельников, чего делать будет? ;)». Всего файла целиком скачать возможности не было. Поэтому приходилось парсить у них сайт, собирая по кусочками Excel файлы в одну кучу (была у них кнопка «экспорт текущей страницы»). Теперь сайт изменили..но лучше не стало. Возможности скачать весь файл целиком как не было так и не стало. Чуть поковыряв их страницу нашел как получить «сессионный ключ» и способ как передавать правильные POST параметры, чтобы получить кусочки JSON, кои потом можно склеить в единую базу. Результат вылился в обработку для 1С, которую можно скачать тут

Python: ошибка установки cv2

При попытке установить:

pip install cv2

Получаем ошибку:

ERROR: Could not find a version that satisfies the requirement cv2 (from versions: none)

А всё просто. Почему то авторы пакета обозвали его в репозитарии pip как opencv-python. Соответственно и устанавливать его нужно так:

pip install opencv-python

А использовать так:

import cv2

Сохранение весов модели нейросети

В продолжении статьи Создаём нейросеть на Python, Итак сеть создали, натренировали. А что делать чтобы решение можно было определять по картинке лето или зима, не обучая каждый раз модель заново? Ну так ведь можно просто сохранить полученные веса нейросети в файл, А затем уже их загружать в случае необходимости.

В Tensotflow уже есть встроенный функционал для сохранения весов в файл. Для этого используется функция вызова кэлбека после прохождения каждого шага обучения. В моём случае промежуточные модели обучения не нужны, потому параметр save_freq делаю равным количеству итераций обучения:

traning_model_save=base_dir+"\save_model\cp.ckpt"
....
EPOCHS = 10
print("- настраиваем кэлбеки для сохранения натренированной модели")
# Создаем колбек для сохранения контрольной точки
cp_callback = tf.keras.callbacks.ModelCheckpoint(traning_model_save,
                                                 save_weights_only=True,
                                                 save_freq=EPOCHS,
                                                 verbose=1)
print("- тренируем модель")
history = model.fit(
    train_data_gen,
    steps_per_epoch=int(np.ceil(total_train / float(BATCH_SIZE))),
    epochs=EPOCHS,
    validation_data=val_data_gen,
    validation_steps=int(np.ceil(total_val / float(BATCH_SIZE))),
    callbacks = [cp_callback]   # вызываем кэлбек после каждого шага обучения
)

Так-же можно сохранять не только веса, но и всю модель целиком:

model.save('model.h5')

Создаём нейросеть на Python

Ну вот реально, очень мало в интернете статей на тему использования нейросетей. Теоретической информации — полно. «Напишем нейросеть в 9 строчек» — полно. А вот практических примеров с разжевыванием — единицы. Одна из хороших статей тут на хабре. Начало отличное, конец скомканный и до конца не раскрытый. Кроме того код во многих статьях датируемых до 20г уже не рабочий, т.к. используют Tensorflow версии меньше 2. Или ранние 2 версии. Посему на написание живого примера потратил довольно таки много времени.

Итак поставим себе задачу: узнать по фото, лето или зима отображены на ней.

» Читать далее
1 2