Фоновые задания в http-сервисах OneScript

Публикация № 805545 28.03.18

Разработка - OneScript

Web OneScript фоновые задания ФоновыеЗадания многопоточность

В статье описана библиотека, реализующая механизм фоновых заданий в http-сервисах OneScript, а также некоторые обновления платформы 1.0.19

 

Введение

При разработке приложений, периодически возникают задачи, требующие одновременного  выполнения нескольких процессов. В платформе 1С:Предприятие данная функциональность реализована при помощи механизма фоновых заданий. В стандартной поставке OneScript данная функциональность отсутствует, поэтому целью настоящей статьи является описание библиотеки, которая реализует механизм фоновых заданий в web-приложениях (http-сервисах) OneScript.

 

Описание

Библиотека реализует типы МенеджерФоновыхЗаданийWeb, СостояниеФоновогоЗадания и ФоновоеЗаданиеWeb, которым в платформе 1С:Предприятие соответствуют типы МенеджерФоновыхЗаданий и ФоновоеЗадание соответственно.

Реализованные типы

МенеджерФоновыхЗаданийWeb

Методы:

  • Выполнить
  • ОжидатьЗавершения
  • ПолучитьФоновыеЗадания

ФоновоеЗаданиеWeb

Свойства:

  • ИмяМетода
  • ИнформацияОбОшибке
  • Ключ
  • Конец
  • Наименование
  • Начало
  • РазделениеДанных
  • РегламентноеЗадание
  • Состояние
  • УникальныйИдентификатор

Методы:

  • ОжидатьЗавершения
  • Отменить
  • ПолучитьСообщенияПользователю

СостояниеФоновогоЗадания

Аналогичен соответствующему типу в 1С:Предприятие.

 

Отличия от платформы 1С:Предприятие

Библиотека практически полностью совместима с платформой 1С:Предприятие на уровне кода, однако все-же имеются незначительные отличия:

ФоновыеЗаданияWeb.ПолучитьФоновыеЗадания

В отличие от 1С:Предприятие, где фоновые задания хранятся в информационной базе и Вы можете получить примерно 1000 последних фоновых заданий, запущенных на выполнение, текущая реализация библиотеки имеет динамический список выполняемых заданий. Задания помещаются в список при вызове метода Выполнить и удаляются после завершения фонового задания. Таким образом, в отличие от 1С:Предприятие, метод возвращает фоновые задания, которые выполнялись на момент вызова метода или были завершены, но еще не удалены из списка.

ФоновоеЗаданиеWeb.РазделениеДанных

Всегда возвращает пустую структуру

ФоновоеЗаданиеWeb.РегламентноеЗадание

Ввиду отсутствия регламентных заданий, всегда возвращает Неопределено.

ФоновоеЗаданиеWeb.Отменить

Ввиду особенностей реализации, вызов этого метода не приводит к каким-либо действиям (задание продолжает выполнение и не отменяется).

ФоновоеЗаданиеWeb.ПолучитьСообщенияПользователю

Всегда возвращает пустой фиксированный массив.

 

Установка

Предварительные условия

Для использованиия настоящей библиотеки, необходимо установить обновление платформы OneScript, которое улучшает многопоточность http-сервисов OneScript.

Обновление для OneScript версии 1.0.19  можно скачать по нижеследующей ссылке: ASPNETHandler-v1.1-1.0.19.zip . Установка производится простым копированием содержимого архива, поверх файлов поставки OneScript.

Описание обновления, а также сопутствующих библиотек доступно по ссылке.

 

Установка библиотеки

Установка осуществляется копированием файлов dll в папку Bin веб-приложения. Затем, необходимо подключить библиотеку, добавив нижеследующую строку в секцию <appSettings>, файла web.config:

<add key="WebBackgroundJobs" value="attachAssembly" />

Настроить интервал проверки состояния фоновых заданий для метда ОжидатьЗавершения, можно добавив в раздел <appSettings>, файла web.config нижеследующий ключ:

<add key="jobsCheckInterval" value="5000" />

Интервал задается в миллисекундах. Интервал проверки по умолчанию (если ключ не установлен) составляет 1000 миллисекунд.

 

Использование

Ниже приведен фрагмент кода, иллюстрирующий работу библиотеки:

// Создаем объект менеджера фоновых заданий. Только для OneScript
//<OneScript>
ФоновыеЗадания = Новый МенеджерФоновыхЗаданийWeb;
//<!OneScript>

// Запускаем фоновые задания на выполнение
	
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(1);
МассивПараметров.Добавить("1.txt");
	
ФоновыеЗадания.Execute("Тестовый.ТестовоеФЗ", МассивПараметров, "Ключ1", "Описание1");
	
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(1);
МассивПараметров.Добавить("2.txt");
	
ФоновыеЗадания.Execute("Тестовый.ТестовоеФЗ", МассивПараметров);

// Получаем все выполняющиеся задания
МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания();

// Ожидаем завершения выполнения запущеных заданий
ФоновыеЗадания.ОжидатьЗавершения(МассивЗаданий);

// Продолжаем выполнение

 

Заключение

Надеюсь, что использование настоящей библиотеки, совместно с библиотеками обработки контента , работы с субд и кэширования данных, позволят вам создавать “взрослые” web-приложения на базе каркасной конфигурации, которые совместно с 1С:Предприятие, позволяют решать реальные бизнес-задачи ваших клиентов.

Скачать файлы

Наименование Файл Версия Размер
Библиотека, реализующая фоновые задания:

.zip 6,80Kb
4
.zip 6,80Kb 4 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 2832 29.03.18 12:39 Сейчас в теме
А sleep в oneScript'е есть? А то без него управление многопоточными вычислениями мягко говоря ущербно...
2. blackhole321 1273 29.03.18 12:43 Сейчас в теме
(1)sleep есть, называется Приостановить. Честно говоря и без sleep ничего ущербного не вижу. Если не секрет -зачем создавать поток и стоить его?
Merkalov; +1 Ответить
3. blackhole321 1273 29.03.18 12:44 Сейчас в теме
4. starik-2005 2832 29.03.18 12:50 Сейчас в теме
(3) стопить не поток, а управляющую процедуру, чтобы не проверять мульон раз в секунду, завершился у меня расчет в потоке или нет. Т.е. так как-то:
  Пока ЕстьПотоки() Цикл
  Если ЕстьЗавершенныйПоток() Тогда
    Данные = ПолучитьСледующуюПорциюДанных();
    Если Данные = Неопределено Тогда
      Прервать;
    КонецЕсли;
    ДобавитьВСписокФЗ(
      ФоновыеЗадания.Выполнить("МодульФЗ.ОбработкаДанных", ПолучитьЗначениеВМссиве(Данные), ...)
      );
   КонецЕсли;
   Подождать 10мс;
  КонецЦикла;
  ДождатьсяЗавершенияВЗ();
Показать
sasha777666; +1 2 Ответить
5. blackhole321 1273 29.03.18 13:04 Сейчас в теме
(4) Понятно. Можно в самом потоке, при завершении инициировать новый поток, если остались данные для обработки.
6. starik-2005 2832 29.03.18 13:09 Сейчас в теме
(5)
если остались данные для обработки.
Тогда это не параллельность, а последовательное выполнение. Смысл теряется...
7. blackhole321 1273 29.03.18 13:14 Сейчас в теме
(6) Ну почему же, Вы можете сделать столько потоков, сколько элементов данных, подлежащих обработке (по крайней мере несколько, если у Вас некий пул), также, как Вы делаете в цикле, только в самих потоках.
8. starik-2005 2832 29.03.18 13:19 Сейчас в теме
(7) а микросекундный sleep есть?
9. blackhole321 1273 29.03.18 13:32 Сейчас в теме
(8)Думаю - нет, ведь и Linux и Windows не ОС реального времени, в Windows квант времени ~10-20 миллисекунд, поэтому даже если написать Sleep(1), то задержка будет > 1 мс.
10. blackhole321 1273 29.03.18 13:33 Сейчас в теме
(8) А если не секрет, зачем Вам такие малые задержки?
11. blackhole321 1273 29.03.18 13:55 Сейчас в теме
(8) Вот есть к примеру такая реализация микросекундного таймера https://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer , которую не сложно перенести, однако, как отмечает сам автор, если использовать в не real-time ОС, периодически интервалы будут неверными.
12. starik-2005 2832 29.03.18 14:23 Сейчас в теме
(11) периодические интервалы тут не особо критичны. Фактически если у Вас N заданиий, которые обрабатывают по M блоков, то массив из Х блоков они обработают за Х/M/N раз. При том если элемент данных обрабатывается за разное время, то некоторые блоки должны будут обработаться раньше, чем другие, и ДождатьяЗавершения будет ждать самый долгообрабатываемый блок. Для того, чтобы загрузить новые процессы данными, нужно их стартануть с новым массивом обрабатываемой информации. Если ждать секунду (как в 1С, когда народ юзает "ping localhost"), то за секунду можно некоторое количество элементов уже обработать. Поэтому хорошо бы ждать 1/10-ю секунды, например. И на сколько это в миллисекундах точно - второй вопрос, главное чтобы в это время процессор просто ждал...
13. blackhole321 1273 29.03.18 15:19 Сейчас в теме
(12)
Если ждать секунду (как в 1С, когда народ юзает "ping localhost"), то за секунду можно некоторое количество

Ну 1/10 секунды - это 100 миллисекунд, что вполне нормально и для Sleep, который уже есть. И это будет действительно приостановка выполнения. Вот описание метода, который реализует Sleep в OneScript https://msdn.microsoft.com/ru-ru/library/system.threading.thread.sleep(v=vs.110).aspx

Моя изначальная мысль была в том, что можно запускать потоки для обработки новых порций данных из самих потоков, примерно так:

Процедура МоеФЗ(ДанныеДляОбработки) Экспорт
	
	// Что-то делаем
	
	Отбор = Новый Структура;
	Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
	Отбор.Вставить("ИмяМетода", "МойМодуль.МоеФЗ");
	МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
	
	МаксКоличествоПотоков = 5;
	КоличествоПотоков = МаксКоличествоПотоков - МассивЗаданий.Количество() + 1;
	
	Для Индекс = 1 По КоличествоПотоков Цикл
		
		ДанныеДляОбработки = ПолучитьСледующуюПорциюДанных();
		
		Если ДанныеДляОбработки = Неопределено Тогда
			Возврат;
		КонецЕсли;
		
		МасиивПараметров = Новый Массив;
		МассивПараметров.Добавить(ДанныеДляОбработки);
		ФоновыеЗадания.Выполнить("МойМодуль.МоеФЗ", МассивПараметров);
		
	КонецЦикла;
	
КонецПроцедуры
Показать
16. пользователь 15.05.18 05:50
Сообщение было скрыто модератором.
...
17. пользователь 17.05.18 05:54
Сообщение было скрыто модератором.
...
14. пользователь 29.03.18 19:47
Сообщение было скрыто модератором.
...
15. пользователь 03.04.18 12:30
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

См. также

Получаем статистику по git-репозиторию в разрезе разработчиков

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    1151    ardn    3    

25

Прокси хранилища 1С (IIS, OneScript)

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    5411    kamisov    31    

84

OneScript на страже порядка на сервере тестовых баз данных

Администрирование СУБД OneScript Бесплатно (free)

Наводим порядок на сервере тестовых баз с помощью любимого инструмента - OneScript. Находим заброшенные базы на сервере MS SQL, определяем кандидатов на удаление.

14.06.2022    2424    ardn    23    

35

Идем в Serverless с кодом 1С

Облачные сервисы, хостинг OneScript Россия Абонемент ($m)

Запускаем код OneScript в Serverless Container Яндекса.

1 стартмани

29.04.2022    2986    1    papami    2    

9

Графический интерфейс для сценарного языка OneScript и дизайнер форм в придачу

Работа с интерфейсом OneScript Бесплатно (free)

Графический интерфейс расширяет возможности и область применения скриптового языка. Перед вами ещё один вариант GUI для уже широко используемого и отлично зарекомендовавшего себя инструмента автоматизации OneScript. С доступным комплектом контролов можно написать полноценное приложение, со множеством форм и диалогов. Большое внимание уделено документации, есть примеры на каждое свойство/метод. И в придачу к формам написан дизайнер форм. Без него работу над GUI считал не законченной. Всё это для того, чтобы тратить минимум усилий для получения максимального результата.

08.03.2022    3145    ahyahy    4    

56

Мониторинг свободного места на диске с помощью OneScript

OneScript Мониторинг Бесплатно (free)

Скрипт, который проверяет объем свободного места на каждом диске и оповещает на почту о нехватке места.

30.05.2021    3406    info1i    19    

16

reperr - автоматическая регистрация ошибок для 8.3.17+

OneScript Управление проектом (PMO, EPM) Платформа 1С v8.3 Бесплатно (free)

Представляю вашему вниманию приложение для автоматической регистрации и обработки ошибок, которые возникают при работе в информационных базах на платформе 1С:Предприятие 8.3.17+

04.02.2021    7436    ovcharenko.di    11    

88

Смена паролей всем локальным пользователям Windows с помощью OneScript

OneScript Пароли Бесплатно (free)

Скрипт, который меняет пароли всем локальным пользователям Windows и сохраняет их в файле. Есть функция генерации пароля, можно задать длину пароля.

18.08.2020    2208    info1i    7    

4

Настройка архивации баз MS SQL Server и мониторинг с помощью OneScript

Архивирование (backup) OneScript Мониторинг Абонемент ($m)

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

2 стартмани

01.05.2020    11033    4    info1i    2    

5

Swagger для 1С.

OneScript WEB-интеграция Бесплатно (free)

Решение для формирования Swagger спецификаций, описывающих HTTP сервисы конфигураций 1С.

21.10.2019    24176    botokash    54    

233

Автоматическое сравнение-объединение баз данных с мини-конфигурацией

OneScript Платформа 1С v8.3 Бесплатно (free)

Представляю вашему вниманию скрипт на OneScript для автоматического сравнения-объединения по правилам ("мержевания") конфигураций нескольких баз с мини-конфигурацией.

14.10.2019    4256    artkor    2    

5

АИТП. Подсистема взаимодействия с рабочими серверами OneScript

OneScript Платформа 1С v8.3 Бесплатно (free)

В статье описан механизм взаимодействия конфигурации АИТП с рабочими серверами OneScript.

22.05.2019    6212    blackhole321    33    

21

Создание высокодоступной фермы рабочих серверов OneScript в ОС Centos 7

OneScript Бесплатно (free)

В статье описана методика создания высокодоступной фермы рабочих серверов OneScript, для конфигурации АИТП.

14.05.2019    5640    blackhole321    0    

13

Разворачиваем рабочий сервер OneScript для конфигурации АИТП

OneScript Платформа 1С v8.3 Бесплатно (free)

В статье описана методика развертывания рабочего сервера OneScript для конфигурации АИТП, на ОС CentOS 7.

09.05.2019    7258    blackhole321    0    

26

Хостим OneScript.Web приложение (heroku)

OneScript Бесплатно (free)

Развертывание oscript.web в heroku.

19.12.2018    7457    pallid    6    

19

OneScript - WinExt: Работа с окнами, управление мышкой и клавиатурой

OneScript Абонемент ($m)

Цель: Инструмент позволяющий автоматизировать управление окнами, мышкой, посылать нажатия клавиш. Задачи: - Поиск окна по части заголовка - Поиск фрагмента изображения похожего на сохраненный в файле кусок. - Возможность позиционировать курсор, нажимать кнопки мышки. - Возможность посылать нажатия клавиш

1 стартмани

29.11.2018    19073    10    ret-Phoenix    31    

84

Динамическое выполнение кода OneScript из 1С:Предприятие

OneScript Платформа 1С v8.3 Абонемент ($m)

В статье описан подход, позволяющий динамически выполнять фрагменты кода OneScript из 1С:Предприятие и получать результаты выполнения

1 стартмани

03.11.2018    12609    blackhole321    19    

33

Синхронизация хранилища 1С и git-репозитория с применением OneScript и Gitsync. Методика и пошаговая инструкция для создания скрипта и его регулярного запуска

OneScript Платформа 1С v8.3 Абонемент ($m)

- Настройка репозитория для работы с большими типовыми конфигурациями  - Алгоритм создания скрипта выгрузки и его исходный код  - Обработка исключительных ситуаций  - Рекомендации по дальнейшему развитию процесса 

1 стартмани

14.09.2018    45280    Vladimir Litvinenko    97    

261

Виртуальная дисконтная карта на OneScript

Оптовая торговля Розничная торговля OneScript Платформа 1С v8.3 Управленческий учет Абонемент ($m)

В статье рассмотрены возможности http-сервисов OneScript для создания бизнес-приложений, на примере демонстрационной конфигурации, реализующей функционал виртуальной дисконтной карты.

1 стартмани

17.07.2018    18807    7    blackhole321    6    

23

Хостим OneScript.Web приложение

OneScript Бесплатно (free)

Удобная возможность для размещения своего OneScript.Web приложение, это завернуть его в docker. Остается вопрос: где разместить контейнер, сделать это можно на vscale или DO, но хочется упростить и не делать установку самого docker на хосте. Один из вариантов - это сервис now https://zeit.co/.

04.07.2018    8548    pallid    3    

29

Автоматизируй это!

OneScript Инструменты администратора БД Бесплатно (free)

Здравствуйте. Меня зовут Виталий Онянов. Я работаю в компании ФТО. Мы занимаемся внедрением и поддержкой ERP-систем, в том числе и на 1С. Сегодня я хотел бы поделиться нашим опытом автоматизации своих задач и рассказать о том, какие регламентные задания мы настраиваем на серверах наших клиентов. Возможно, кому-то покажется, что это совсем простые и очевидные вещи, но я в своей работе периодически вижу разработчиков, которые делают какие-то задачи руками изо дня в день, и мне бы хотелось донести до них мысль о том, что многие из этих задач можно и нужно автоматизировать.

02.07.2018    25405    Tavalik    12    

167

Платежи через RoboKassa из web-приложения OneScript

OneScript Платформа 1С v8.3 Абонемент ($m)

В статье рассмотрен пример организации платежей из web-приложения OneScript через платежную систему RoboKassa

1 стартмани

27.06.2018    8337    blackhole321    0    

18

Добавляем онлайн-чат в web-приложение OneScript

OneScript Платформа 1С v8.3 Бесплатно (free)

В статье рассмотрено подключение онлайн-чата к web-приложению на основе http-сервисов OneScript

24.06.2018    8378    blackhole321    1    

19

Создаем сайт ресторана на OneScript

OneScript Платформа 1С v8.3 Рестораны, кафе и фаст-фуд Абонемент ($m)

В статье изучаются возможности http-сервисов OneScript по созданию web-приложений на примере сайта ресторана

1 стартмани

19.06.2018    25544    23    blackhole321    72    

107

Сказ про то, как я DevOps-ом занимался (OneScript, Deployka, Jenkins)

OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 ИТ-компания Бесплатно (free)

Решаем задачу: автоматизировать обновление тестовых баз 1С из хранилища конфигурации при появлении в нём новых изменений. Данная статья родилась в муках хождения по граблям и поиска безопасного форватора среди подводных камней. Изложение постарался представить в виде инструкции для новичка, в которой собрал всё, с чем пришлось столкнуться. Сам я не DevOps-ер, ни на что не претендую, просто делюсь опытом :)

17.06.2018    28234    stas_ganiev    37    

138

HTTP-сервисы OneScript. Каркасная конфигурация 2.0

OneScript Платформа 1С v8.3 Абонемент ($m)

В статье описана новая версия конфигурации для создания web-приложений на основе http-сервисов OneScript в среде 1С:Предприятие.

1 стартмани

05.06.2018    19083    30    blackhole321    11    

72

Макеты в http-сервисах OneScript

OneScript Платформа 1С v8.3 Бесплатно (free)

В статье описана библиотека, реализующая механизм макетов в http-сервисах OneScript, аналогично платформе 1С:Предприятие.

03.06.2018    9253    blackhole321    1    

10

Перечисления в http-сервисах OneScript

OneScript Платформа 1С v8.3 Бесплатно (free)

В статье описывается библиотека, реализующая механизм перечислений в http-сервиах OneScript, аналогичный механизму платформы 1С:Предприятие

03.06.2018    8697    blackhole321    13    

7

Упрощаем разработку взаимодействия с СУБД в http-сервисах OneScript

OneScript Платформа 1С v8.3 Абонемент ($m)

В статье описана библиотека и подсистема, позволяющие упростить разработку взаимодействия с СУБД в http-сервисах OneScript

1 стартмани

30.05.2018    8938    blackhole321    1    

15

Обработки в http-сервисах OneScript

OneScript Бесплатно (free)

В статье описана библиотека, реализующая механизм обработок в http-сервисах OneScript.

25.05.2018    8298    blackhole321    0    

11

Расширенные методы загрузки внешних библиотек в http-сервисах OneScript

OneScript Бесплатно (free)

В статье описаны расширенные методы загрузки внешних библиотек в http-сервисах OneScript на примере механизма фоновых заданий.

25.05.2018    8101    blackhole321    0    

6

Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci

OneScript Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci на примере портирования на onescript функции daСклонение.

14.05.2018    15061    pallid    7    

38

OneScript в облаке или Развертываем http-сервис OneScript на хостинге

OneScript Бесплатно (free)

В статье описан процесс развертывания web-приложения, созданного на базе http-сервисов OneScript на бесплатном хостинге.

05.05.2018    10628    blackhole321    0    

24

TMSSQL - работа с базами данных MS SQL Server в скриптах на OneScript и из командной строки

OneScript Платформа 1С v8.3 Бесплатно (free)

Представляю вашему вниманию библиотеку TMSQL для работы с базами данных на MS SQL Server. Библиотека подключается в качестве модуля или класса в скрипты, написанные на OneScript, а также может работать как независимое консольное приложение.

26.04.2018    17115    Tavalik    22    

66

Развертывание http-сервиса OneScript на Raspberry Pi

OneScript Бесплатно (free)

В статье описан процесс настройки, а также процесс развертывания http-сервиса (web-приложения) OneScript на Raspbian (Raspberry Pi 2).

23.04.2018    12139    blackhole321    10    

27

Yep Cart. Пишем интернет-магазин на http-сервисах OneScript

Оптовая торговля Розничная торговля OneScript Платформа 1С v8.3 Управленческий учет Абонемент ($m)

В статье описана демонстрационная конфигурация, реализующая простейший интернет магазин на http-сервисах OneScript, интегрированный с 1С:Предприятие.

1 стартмани

16.04.2018    17794    blackhole321    33    

45

Кэшируем данные в приложениях OneScript

OneScript Абонемент ($m)

В статье описана библиотека, позволяющая кэшировать данные в памяти, в ваших приложениях OneScript.

1 стартмани

25.03.2018    9304    blackhole321    2    

7

Создаем свою библиотеку для OneScript

OneScript Платформа 1С v8.3 Бесплатно (free)

Как упаковать свою библиотеку в пакет? Что такое загрузчик и зачем он нужен? Как вообще создать свою библиотеку? Разбираемся на примере.

06.03.2018    27137    nixel    38    

183