Skip to content

mazik7512/RedRpa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ RedRpa

Static Badge Static Badge

OpenCV Keras TensorFlow

Qt

Python C

Windows

RRPA Framework - Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Python, прСдназначСнная для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ RPA-Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ².

Client RRPA App - дСмонстрационная рСализация клиСнтского прилоТСния Π½Π° основС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° RedRPA.

Server RRPA App - дСмонстрационная рСализация сСрвСрного прилоТСния Π½Π° основС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° RedRPA.

Бостав ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹:

  1. RRPA - Framework.

    1.1. Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠ΅Ρ‚ΡŒΡŽ.

    1.2. Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ (RSA, AES512) ΠΈ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Π“ΠžΠ‘Π’ 34.11).

    1.3. ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сцСнариСв (SDK - Scenario Development Kit).

    • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка сцСнариСв RSL (Red Scenario Language) RSLc.

    • Набор стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ языка RSL.

    • Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина (RVM - Red Virtual Machine).

    1.4. ΠœΠΎΠ΄ΡƒΠ»ΡŒ машинного зрСния Π½Π° основС Π½Π΅ΠΉΡ€ΠΎΠ½Π½ΠΎΠΉ сСти (OpenCV + Tensorflow + Tesseract OCR).

    1.5. ΠœΠΎΠ΄ΡƒΠ»ΡŒ взаимодСйствия с Web - ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ (Selenium Web Driver).

    1.6. ΠœΠΎΠ΄ΡƒΠ»ΡŒ взаимодСйствия с Windows (WinAPI + PyWin32).

  2. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

  3. Π‘Π΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ОписаниС

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ прСдставляСт ΠΈΠ· сСбя "связку" Π―Π΄Ρ€Π° (Core) ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (External Modules). Π―Π΄Ρ€ΠΎ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя основныС абстракции для обСспСчСния гибкости, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ взаимозамСняСмости Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-нСзависимыС ΠΈ нСзависящиС ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° (ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, сСтСвыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, компилятор, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ систСма ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ).

ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-зависимыС ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹:

  • ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для взаимодСйствия с Windows,
  • ΠΌΠΎΠ΄ΡƒΠ»ΡŒ взаимодСйствия с Web-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ,
  • ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния.

Π―Π΄Ρ€ΠΎ. SDK. Π―Π·Ρ‹ΠΊ сцСнариСв

Static Badge Static Badge Static Badge

НиТС прСдставлСнна Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° языка RSL Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Бэкуса-Наура.

SCENARIO := LINES
LINES := LINE | LINES
LINE := SPECIAL_INSTRUCTION | FUNC_DEFINITION | EXPR, ENDLINE
EXPR := ASSIGMENT | FUNC_CALL
SPECIAL_INSTRUCTION := LOOP | RETURN
ASSIGMENT := OBJECT, ASSIGMENT_OPERATION, (EXPR | LITERAL | OBJECT)
FUNC_CALL := OBJECT, FUNC_CALL_ARG_LIST
FUNC_DEFINITION := FUNC_DEFINITION_HEADER, FUNC_DEFINITION_BODY
FUNC_DEFINITION_HEADER := function, TEXT, FUNC_DEF_ARG_LIST
FUNC_DEF_ARG_LIST := SUBEXPR_START, {(FUNC_DEF_ARG[ARG_DELIMITER])}, SUBEXPR_END
FUNC_DEF_ARG := OBJECT
FUNC_DEFINITION_BODY := BODY
FUNC_CALL_ARG_LIST := SUBEXPR_START, {(FUNC_CALL_ARG[ARG_DELIMITER])}, SUBEXPR_END
FUNC_CALL_ARG := STANDART_CALL_ARG
RETURN := return, [RETURN_ARG], ENDLINE
RETURN_ARG := STANDART_CALL_ARG
STANDART_CALL_ARG := FUNC_CALL | OBJECT | LITERAL
LOOP := LOOP_HEADER, LOOP_BODY
LOOP_HEADER := loop, SUBEXPR_START, LOOP_HEADER_ARG, SUBEXPR_END
LOOP_HEADER_ARG := NUMBER | FUNC_CALL | OBJECT
LOOP_BODY := BODY
BODY := BODY_START, BODY_LINES, BODY_END
BODY_LINES := {BODY_LINE}
BODY_LINE := SPECIAL_INSTRUCTION | EXPR, ENDLINE
OBJECT := RESERVED_NAMES | USER_OBJECT
USER_OBJECT := TEXT
LITERAL := ", TEXT, " | NUMBER
TEXT := {CHARACTER}, {NUMBER} | TEXT
NUMBER := [SIGN]{DIGIT} | [SIGN]{DIGIT}, ., {DIGIT}
SUBEXPR_START := (
SUBEXPR_END := )
BODY_START := {
BODY_END := }
ARG_DELIMITER := ,
ASSIGMENT_OPERATION := =
ENDLINE := ;
SIGN := -
RESERVED_NAMES := стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (CV_scan, click_on_object...)
CHARACTER := Π°Π»Ρ„Π°Π²ΠΈΡ‚(a,b...)
DIGIT := Ρ†ΠΈΡ„Ρ€Ρ‹(0,1,2...)

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ конструкциями языка ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • SPECIAL_INSTRUCTION - "ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅" встроСнныС инструкции loop, return (Ρ†ΠΈΠΊΠ», ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ значСния ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ соотвСствСнно).
  • FUNC_DEFINITION - ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово function, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅.
  • EXPR - Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ "Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅". Под Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ понимаСтся Π»ΠΈΠ±ΠΎ опСрация присвоСния a = foo(), a = 5.

ВсС ΠΈΠΌΠ΅Π½Π° (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ языка прСдставлСны Π² конструкциСй OBJECT.

RSL Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ числовыС (Ρ†Π΅Π»Ρ‹Π΅ ΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ) ΠΈ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сцСнарий Π½Π° языкС RSL:

function foo(a, b){
  b = a = 42;
  return b;
}
c = 3;
loop(2){
  c = foo(c, 1);
}

Π―Π΄Ρ€ΠΎ. SDK. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€

Static Badge Static Badge Static Badge Static Badge

RSLC - Red Scenario Language Compiler.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ состоит ΠΈΠ· 6 этапов:

  1. ЛСксичСский Π°Π½Π°Π»ΠΈΠ·.
  2. БинтаксичСский Π°Π½Π°Π»ΠΈΠ·.
  3. БСмантичСский Π°Π½Π°Π»ΠΈΠ·.
  4. ΠŸΡ€ΠΎΡ†Π΅ΡΡ связываниС ΠΈΠΌΡ‘Π½.
  5. Врансляция.
  6. Π›ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°.
Π­Ρ‚Π°ΠΏ компиляции Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅
ЛСксичСский Π°Π½Π°Π»ΠΈΠ· Массив лСксСмм (Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²) / список лСксичСских ошибок
БинтаксичСский Π°Π½Π°Π»ΠΈΠ· АбстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ (Π΄Π°Π»Π΅Π΅ - AST) / список синтаксичСских ошибок
БСмантичСский Π°Π½Π°Π»ΠΈΠ· AST / список сСмантичСских ошибок
ΠŸΡ€ΠΎΡ†Π΅ΡΡ связываниС ΠΈΠΌΡ‘Π½ AST + сСкции ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ / список ошибок процСсса связывания ΠΈΠΌΡ‘Π½
Врансляция БСкция ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
Π›ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° REX - Red Executable

Π―Π΄Ρ€ΠΎ. SDK. REX

Static Badge Static Badge Static Badge

REX - являСтся исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ Red Virtual Machine. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ„Π°ΠΉΠ»Π° являСт собой сСкции (ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 4).

  • БСкция ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.
  • БСкция ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.
  • БСкция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • БСкция ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

БСкция ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ содСрТит Π² сСбС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ исполняСмом Ρ„Π°ΠΉΠ»Π΅ (Ρ…ΡΡˆ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… сСкций, Π½ΠΎΠΌΠ΅Ρ€ вСрсии, стандарт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ послС создания всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… сСкций.

Π‘Π΅ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² процСссС компиляции Π½Π° этапС связывания ΠΈΠΌΡ‘Π½ - ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этих сСкций довольно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ (ΠΎΠ½ΠΈ содСрТат Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… модулях, ΠΈ ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ соотвСствСнно).

Static Badge Π’ сСкции ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ для выполнСния REX, ΠΏΡƒΡ‚ΠΈ ΠΈΡ… ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ RVM.

БСкция ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° содСрТит скомпилированный ΠΊΠΎΠ΄ языка RSL (Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ довольно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ). Π‘Π΅ΠΊΡ†ΠΈΠΈ прСдставлСны Π² Π²ΠΈΠ΄Π΅ json - структуры.

Π―Π΄Ρ€ΠΎ. SDK. Red Virtual Machine

Static Badge Static Badge Static Badge

RVM ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ„Π°ΠΉΠ»Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° REX ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ…. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ производится ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ цСлостности Ρ„Π°ΠΉΠ»Π° ΠΏΡƒΡ‚Π΅ΠΌ сравнСния Ρ…ΡΡˆΠ΅ΠΉ. Если Ρ…ΡΡˆΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ производится ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ· сСкции ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° выполняСмого REX.

Π”Π°Π»Π΅Π΅ сСкции ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ занимаСтся Python, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ RSL ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ транслируСтся ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅Π³ΠΎ.

Π―Π΄Ρ€ΠΎ. SDK. Набор Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ языка RSL

Static Badge Static Badge Static Badge

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Ρ€ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка RSL:

  1. Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ (Π½Π° основС машинного зрСния) - позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ прилоТСниями.
  2. Web - позволяСт Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Web - прилоТСниями.
  3. General - Π½Π°Π±ΠΎΡ€ ΠΎΠ±Ρ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ связанных с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Π―Π΄Ρ€ΠΎ. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ

Π―Π΄Ρ€ΠΎ. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ. Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅

Static Badge Static Badge Static Badge

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π²ΡƒΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ: AES ΠΈ RSA. Оба этих Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² сСтСвом ΠΌΠΎΠ΄ΡƒΠ»Π΅ для Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ‰Π°Ρ идСя описана Π½ΠΈΠΆΠ΅:

  1. Алиса Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ RSA – ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ отправляСт ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π‘ΠΎΠ±Ρƒ ΠΏΠΎ Π½Π΅Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ связи.
  2. Π‘ΠΎΠ± ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ RSA, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ сСссионный AES – ΠΊΠ»ΡŽΡ‡, ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ RSA – ΠΊΠ»ΡŽΡ‡Π° ΠΈ отправляСт АлисС (ΡƒΠΆΠ΅ ΠΏΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌΡƒ RSA ΠΊΠ°Π½Π°Π»Ρƒ связи).
  3. Алиса ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ AES – ΠΊΠ»ΡŽΡ‡, Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ RSA – ΠΊΠ»ΡŽΡ‡Π° ΠΈ сохраняСт Ρƒ сСбя.
  4. Π”Π°Π»Π΅Π΅ Β«ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Β» ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ происходит ΠΏΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌΡƒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² (RSA + AES) ΠΊΠ°Π½Π°Π»Ρƒ связи.

Π―Π΄Ρ€ΠΎ. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ. Π₯ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Static Badge Static Badge Static Badge

Π₯эш-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся Π“ΠžΠ‘Π’ 34.11 "Π‘Ρ‚Ρ€ΠΈΠ±ΠΎΠ³" Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ОлСга ΠšΠ°Π·ΠΈΠΌΠΈΡ€ΠΎΠ²Π° Π½Π° языкС C. Для имлСмСнтирования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° языкС Python Π±Ρ‹Π»Π° написана нСбольшая DLL-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°.

Π—Π° основу взята оптимизированная рСализация, Π½Π° прСдвычислСнных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π―Π΄Ρ€ΠΎ. Π Π°Π±ΠΎΡ‚Π° с ΡΠ΅Ρ‚ΡŒΡŽ

Π―Π΄Ρ€ΠΎ. Π Π°Π±ΠΎΡ‚Π° с ΡΠ΅Ρ‚ΡŒΡŽ. Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹

Static Badge Static Badge Static Badge

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠ΅Ρ‚ΡŒΡŽ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ "ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹":

  • ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ клиСнтских ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.
  • ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ сСрвСрных ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.
  • Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€.

Как Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ клиСнтский ΠΈ сСрвСрный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра соотвСтсСнно. Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ являСтся абстракциСй Π±ΠΎΠ»Π΅Π΅ высокого уровня абстрагируя Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌ.

Π’ Β«Π·ΠΎΠ½Ρƒ отвСтствСнности» этих самых ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² входят:

  1. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ цСлостности ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
  2. Установка соСдинСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ сСти.
  3. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°.
  4. Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅/Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….

Для инициализация Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ связка ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² RSA + AES. Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅/Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ слСдствиС Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ связку. Для контроля цСлостности Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ…ΡΡˆ-функция "Π‘Ρ‚Ρ€ΠΈΠ±ΠΎΠ³", описанная Ρ€Π°Π½Π΅Π΅ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π₯ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Для обСспСчСния гибкости ΠΈ настраСвомости Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ классы ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ρƒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ:

  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… уровня прилоТСния.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… транспортного уровня.

Π‘ΠΌ. Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ "ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ взаимодСйствия".

ВсС Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ‚ нас ΠΊ Π½Π΅ΠΊΠΎΠΉ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π―Π΄Ρ€ΠΎ. Π Π°Π±ΠΎΡ‚Π° с ΡΠ΅Ρ‚ΡŒΡŽ. Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹

Static Badge Static Badge Static Badge

Для стандартизации ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» RDTP - Red Data Transfer Protocol, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ структуру ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:

  1. Π’ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
  2. Π”Π°Π½Π½Ρ‹Π΅.
  3. Π₯эш.

Π’ Β«Ρ€Π°Π·Ρ€Π΅Π·Π΅Β» ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» прСдставляСтся Π² Π²ΠΈΠ΄Π΅ строковых символов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ ΠΏΠΎ частям, описанным Π½ΠΈΠΆΠ΅ (Π’ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:Π”Π°Π½Π½Ρ‹Π΅ Π² строковом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:Π₯Сш).

ΠŸΠ΅Ρ€Π΅Π΄ вычислСниСм Ρ…ΡΡˆΠ°, ΠΈ ΠΊΠ°ΠΊ слСдствиС ΠΏΠ΅Ρ€Π΅Π΄ нСпострСдствСнной транспортировкой, сСкция Π΄Π°Π½Π½Ρ‹Ρ… подвСргаСтся ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² base64. Π­Ρ‚ΠΎ трСбуСтся для устранСния ситуаций ΠΊΠΎΠ³Π΄Π° Π² ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСдопустимыС символы (Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅) ΠΈ/ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ сторонах.

Если с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Ρ…Π΅ΡˆΠ΅ΠΌ всС довольно понятно ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "Ρ‚ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ"? Под этими словами ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ΄Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… взаимодСйствий:

  • Начало сСссии связи
  • Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ сообщСния
  • Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сцСнариСв
  • ОбновлСниС сСссионных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ
  • ΠšΠΎΠ½Π΅Ρ† сСсси связи

Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ интСрСс Ρ‚ΠΎΠ»ΡŒΠΊΠΎ опСрация "ОбновлСниС сСссионых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ" Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для запуска Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° описанного Ρ€Π°Π½Π΅Π΅ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, начиная с ΠΏΡƒΠ½ΠΊΡ‚Π° 2.

Π―Π΄Ρ€ΠΎ. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ взаимодСйствия

Static Badge Static Badge

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ взаимодСйствия ΠΏΡ€ΠΈΠ·Π²Π°Π½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ гибкости Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. БСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 3 ΠΏΠΎΠ΄Π²ΠΈΠ΄Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ:

  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ компиляции.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ сСтСвого взаимодСйствия.

Π’ свою ΠΆΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ компиляции ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ этапам компиляции:

  1. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ связывания ΠΈΠΌΡ‘Π½

    1.1 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°

    1.2 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

  2. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ трансляции

    2.1 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° трансляции ΠΈΠΌΡ‘Π½

    2.2 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° трансляции смСщСний

    2.3 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° трансляции ΡƒΠ·Π»ΠΎΠ²

  3. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ

    3.1 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ

  4. ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ компиляции

    4.1 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок

    4.2 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° компиляции

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° трансляции ΠΈΠΌΡ‘Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… послС процСсса трансляции, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° трансляции смСщСния Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° формирования отступов (вСдь Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ язык ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ смСщСния ΠΎΡ‚ края страниц, ΠΊΠ°ΠΊ Python), ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° трансляции ΡƒΠ·Π»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° для трансляции ΡƒΠ·Π»ΠΎΠ² абстрактного синтаксичСского Π΄Π΅Ρ€Π΅Π²Π° Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ язык (порядок ΠΈ синтаксис ΠΈΡ… трансляции).

Π›ΠΈΠ½ΠΊΠ΅Ρ€, ΠΈΠΌΠ΅Π΅Ρ‚ всСго ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ, ΠΈ Π½Π΅ слоТно Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ сгСнСрированныС сСкции Π² REX (Red Executable).

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок, ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ опрСдСляСт ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ REX.

Π Π°Π±ΠΎΡ‚Π° с ΡΠ΅Ρ‚ΡŒΡŽ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΊΡƒΠ΄Π° большим ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΠΎΠΌ для гибкости ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ, Ρ‡Π΅ΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, это ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² количСствС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для сСтСвого модуля. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  1. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ уровня прилоТСния.

  2. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ транспортного уровня.

ΠŸΡ€ΠΎΡΠ²Π΅Ρ‰Π΅Π½Π½Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ сходство ΠΌΠ΅ΠΆΠ΄Ρƒ тСрминологиями ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ сСтСвыС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ ΠΈ уровнями ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI, ΡΠΏΠ΅ΡˆΡƒ Π·Π°Π²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сходство Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшнСС. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, каТдая ΠΈΠ· прСдставлСнных Π²Ρ‹ΡˆΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Π² сСбС Π΅Ρ‰Π΅ Π΄Π²Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° получСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI транспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ транспортного уровня (TCP, UDP), Π° ΠΊ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌΡƒ) относятся Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, ΠΊΠ°ΠΊ HTTP. Но Π² нашСй Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ HTTP ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ уровня прилоТСния, Ρ‚Π°ΠΊ ΠΈ транспортной ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ. Рассмотрим ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ: ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° транспортного уровня опрСдСляСт «транспорт» для ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠ°ΠΊ TCP, Ρ‚Π°ΠΊ ΠΈ HTTP, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½Π΅Π΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² нашСм Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Π² качСствС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ транспортного уровня Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ TCP.

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΆΠ΅ уровня прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ HTTP, Π½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ получится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ чистый TCP, вСдь ΠΎΠ½ просто Π½Π΅ располагаСт Ρ‚Π°ΠΊΠΈΠΌΠΈ возмоТностями. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° транспортного уровня опрСдСляСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» (описанный Π² Π³Π»Π°Π²Π΅ Β«Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹Β»), Π° Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠ±ΠΌΠ΅Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ посылаСмых сообщСний ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° – Ρ€Π°Π·ΠΌΠ΅Ρ€ посылаСтся Π² Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π±Π°ΠΉΡ‚Π°Ρ… сообщСния.

ΠŸΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ (ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈ получСния Π΄Π°Π½Π½Ρ‹Ρ…) для ΠΎΠ±Π΅ΠΈΡ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ имплСмСнтациями для сСрвСрного ΠΈ клиСнтского ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² соотвСтствСнно. Π˜Ρ‚Π°ΠΊ, Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ сСтСвых ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

  1. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ уровня прилоТСния.

    1.1 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

    1.2 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° получСния Π΄Π°Π½Π½Ρ‹Ρ….

  2. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ транспортного уровня.

    2.1 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

    2.2 ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° получСния Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. МашинноС Π·Ρ€Π΅Π½ΠΈΠ΅

Static Badge Static Badge

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ процСсс поиска ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° 3 этапа:

  1. Поиск «шаблонов» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.
  2. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса «шаблона».
  3. ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° распознанному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

Π‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ двумя этапами Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ слоТностСй Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° 3 ΠΏΡƒΠ½ΠΊΡ‚, Π² нашСм случаС Β«ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Β» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ распознаваниСм тСкста с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Поиск ΠΏΡ€ΠΎΠΎΠ±Ρ€Π°Π·Π° (шаблона) осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ OpenCV ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° findCountors настроСнного Π½Π° поиск ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ. ПослС ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΎΠ±Ρ€Π°Π·Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ нСйронная модСль (разработанная Π½Π° Tensorflow, Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… собран Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ). Для распознавания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ оптичСского распознавания символов (OCR) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Tesseract-OCR.

Для хранСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ дСскрипторы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • Template descriptor - Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ шаблона.
  • Object descriptor - Ρ…Ρ€Π°Π½ΠΈΡ‚ дСскриптор шаблона, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ класс (ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°).
  • Text object descritor - Ρ…Ρ€Π°Π½ΠΈΡ‚ дСскриптор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ распознанный ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (тСкст).

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ΠœΠΎΠ΄ΡƒΠ»ΡŒ взаимодСйствия с Windows

Static Badge Static Badge

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ содСрТит Π² сСбС Π΄Π²Π° подмодуля: Actions ΠΈ Tools.

ΠŸΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Actions Π±ΡƒΠ΄Π΅Ρ‚ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π²Π° класса Object actions ΠΈ Window actions – Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΎΠΊΠ½Π° ΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ соотвСтствСнно.

Π’ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»Π΅ Tools Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ классы для ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΊΠΎΠ½ (ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ поля Π²Π²ΠΎΠ΄Π°), Π° Ρ‚Π°ΠΊΠΆΠ΅ абстракции для ΠΎΠΊΠ½Π°, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΎΠΊΠΎΠ½ ΠΈ Π½Π°Π±ΠΎΡ€Π° инструмСнтов спСцифичных для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ взаимодСйствия с Π½Π΅ΠΉ.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ Win Objects, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ абстракции для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΊΠ½Π° (ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π°), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для взаимодСйствия с Π½ΠΈΠΌΠΈ, посрСдством подмодуля Actions ΠΈ класса Object actions, содСрТащСго Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для взаимодСйствия с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Класс Window прСдоставляСт возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠΊΠ½ΠΎΠΌ, ΠΊΠ°ΠΊ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π° Π½Π΅ ΠΎΠΊΠ½ΠΎΠΌ для Static Badge Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, Π² свою ΠΆΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Window Manager, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ прСдоставляСт интСрфСйс для взаимодСйствия с ΠΎΠΊΠ½ΠΎΠΌ Β«Π² стилС» Static Badge Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. Он Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС ΠΏΡƒΠ» Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΠΊΠ½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Win Objects), Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для использования ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€ΠΈ API – Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ языка RSL.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ΠœΠΎΠ΄ΡƒΠ»ΡŒ взаимодСйствия с Web - ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ

Static Badge Static Badge

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΡ…ΠΎΠΆ ΠΏΠΎ структурС Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ взаимодСйствия с ОБ, описанный Π²Ρ‹ΡˆΠ΅.

Из ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ, появился Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для взаимодСйствия - ссылка (Link), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ±Ρ€Π°Π½Ρ‹ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС ΠΎΠΏΡ†ΠΈΠΈ (Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° это дСйствиС бСссмыслСнно).

«ВнутрСнняя кухня» модуля ΠΎΡΡ‚Π°Π»Π°ΡΡŒ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ: класс Web Page являСтся прСдставлСниСм Π²Π΅Π±-страницы Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, Π° Web Page Manager являСт собой Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ для нашСго Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС ΠΏΡƒΠ» ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ прСдоставляСт интСрфСйс для взаимодСйствия с Π²Π΅Π±-страницСй ΠΈΠ· Π²Π½Π΅.

ΠŸΡ€Π°Π²ΠΈΠ»Π° имСнования

Static Badge

Для обСспСчСния Сдинообразия всСго Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ систСму ΠΈΠΌΡ‘Π½. ВсС абстрактныС классы, располоТСнныС Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Core/Abstract Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ со слова Abstract. А Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² сборку Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈΠΌΠ΅Ρ‚ΡŒ прСфикс STD (STD – стандартная рСализация, ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сторонних Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ стоит Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ прСфикс, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ имСнования модуля).

ДСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹

Static Badge

НиТС прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ клиСнтского ΠΈ сСрвСрного прилоТСния со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ сцСнариСм:

CV_scan("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ");
click_on_object("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ", "ΠŸΠ΅Ρ€Π²Π°Ρ");
wait(1);
click_on_object("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ", "Вторая");
wait(1);
click_on_object("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ", "Π’Ρ€Π΅Ρ‚ΡŒΡ");
wait(1);
CV_scan("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ");
click_on_object("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ", "Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Ρ‚Ρ€ΠΈ");
wait(1);
CV_scan("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ");
click_on_object("ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ", "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ");
wait(1);
CV_scan("Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Ρ‚Ρ€ΠΈ (созданиС)");
input_text("Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Ρ‚Ρ€ΠΈ (созданиС)", "НаимСнованиС", "object for test");
wait(1);
click_on_points("Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Ρ‚Ρ€ΠΈ (созданиС)", 80, 60);
web_open("https://google.com", "g");
web_scan("g");
web_click("g","ΠŸΠΎΡ‡Ρ‚Π°");
web_close("g");
wait(1);
CV_scan("data:, - Google Chrome");
wait(1);
click_on_points("data:, - Google Chrome", 1000, 18);

2023-06-26-07-37-47.webm