Π—Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘

Π•Π΄Π½Π° ΠΎΡ‚ приятнитС характСристики Π½Π° тСхнологията 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π΅, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΎ с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° управлявани Ρ„ΠΎΡ€ΠΌΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС стартира ΠΊΠ°ΠΊΡ‚ΠΎ Π² Ρ‚ΡŠΠ½ΠΊΠΈΡ (изпълнимия) ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ Windows, Linux, MacOS X, Ρ‚Π°ΠΊΠ° ΠΈ ΠΊΠ°Ρ‚ΠΎ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π² 5 Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° – Chrome, Internet Explorer, Firefox, Safari, Edge, ΠΈ всичко Ρ‚ΠΎΠ²Π° – Π±Π΅Π· промяна Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. ОсвСн Ρ‚ΠΎΠ²Π° – външно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ.
НамСрСтС 10 различия (ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ 2 ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ):

ΠŸΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π½Π° Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π° Linux:

Π—Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘

Π‘ΡŠΡ‰ΠΈΡΡ‚ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π² ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Chrome):

Π—Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘

Π—Π°Ρ‰ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°? Π“ΠΎΠ²ΠΎΡ€Π΅ΠΉΠΊΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΏΠ°Ρ‚Π΅Ρ‚ΠΈΡ‡Π½ΠΎ, Ρ‚Π°ΠΊΠΎΠ²Π° прСдизвикатСлство ΠΏΡ€Π΅Π΄ нас постави Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. ΠžΡ‚Π΄Π°Π²Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΡ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ стана Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ условиС Π·Π° бизнСс прилоТСния. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π·Π° нашия Ρ‚ΡŠΠΌΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (някои ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΈ, ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, спряха Π½Π° Ρ‚ΠΎΠ²Π°; Π΄Ρ€ΡƒΠ³ΠΈ, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, сС ΠΎΡ‚ΠΊΠ°Π·Π°Ρ…Π° ΠΎΡ‚ Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ…Π° Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°). НиС Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π΄Π°Π΄Π΅ΠΌ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π°Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌ Π΅ Π½Π°ΠΉ-подходящ.

Π—Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘

ДобавянСто Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π·Π° Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ бСшС голям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с пълна смяна Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-ΡΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° взаимодСйност. Π‘ΡŠε‰΅Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° – Ρ‚ΠΎΠ²Π° Π΅ съвсСм Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‰ ΠΎΡ‚ Π½ΡƒΠ»Π°.

Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°

И Ρ‚Π°ΠΊΠ°, изискванията към ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ трябва Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΡΡŠΡ‰ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΈ Ρ‚ΡŠΠ½ΠΊΠΈΡΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

  1. Π”Π° ΠΏΠΎΠΊΠ°Π·Π²Π° потрСбитСлския интСрфСйс
  2. Π”Π° изпълнява клиСнтския ΠΊΠΎΠ΄, написан Π½Π° Π΅Π·ΠΈΠΊΠ° 1Π‘

ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΠΊΠΈΡΡ‚ интСрфСйс Π² 1Π‘ сС описва Π² Π²ΠΈΠ·ΡƒΠ°Π»Π΅Π½ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π½ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ, Π±Π΅Π· пиксСлСн Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ; ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ сС ΠΎΠΊΠΎΠ»ΠΎ тридСсСт Ρ‚ΠΈΠΏΠ° интСрфСйсни Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ – Π±ΡƒΡ‚ΠΎΠ½ΠΈ, ΠΏΠΎΠ»Π΅Ρ‚Π° Π·Π° въвСТданС (тСкстови, Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΈ, Π΄Π°Ρ‚Π°/Π²Ρ€Π΅ΠΌΠ΅), ΡΠΏΠΈΡΡŠΡ†ΠΈ, Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Ρ‚.Π½.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΡΡ‚ ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° 1Π‘ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π² сСбС си ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ извиквания, Ρ€Π°Π±ΠΎΡ‚Π° с Π»ΠΎΠΊΠ°Π»Π½ΠΈ рСсурси (Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Ρ‚.Π½.), ΠΏΠ΅Ρ‡Π°Ρ‚ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ.

И Ρ‚ΡŠΠ½ΠΊΠΈΡΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€Π΅Π· ΡƒΠ΅Π±), ΠΈ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΡƒΠ΅Π± услуги Π·Π° ΠΎΠ±Ρ‰ΡƒΠ²Π°Π½Π΅ със ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° прилоТСнията 1Π‘. РСализацията ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° – Ρ‚ΡŠΠ½ΠΊΠΈΡΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΅ написан Π½Π° C++, ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ – Π½Π° JavaScript.

Малко история

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π·Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ стартира ΠΏΡ€Π΅Π· 2006 Π³ΠΎΠ΄ΠΈΠ½Π°, Π² Π½Π΅Π³ΠΎ (Π² срСдно) участваха Π΅ΠΊΠΈΠΏ ΠΎΡ‚ 5 Π΄ΡƒΡˆΠΈ. На ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π΅Ρ‚Π°ΠΏΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС ΠΏΡ€ΠΈΠ²Π»ΠΈΡ‡Π°Ρ…Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° спСцифични Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ, Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ ΠΈ Ρ‚.Π½.); ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Ρ‚ΠΎΠ²Π° бяха ΡΡŠΡ‰ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…Π° Ρ‚Π°Π·ΠΈ функционалност Π² Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚. Π’.Π΅. Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ написваха ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° JavaScript, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ бяха създадСни с C++.

ΠžΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΠΈΡ…ΠΌΠ΅ идСята Π·Π° някаква Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° (ΠΏΠΎΠ½Π΅ частична) конвСрсия Π½Π° C++ ΠΊΠΎΠ΄Π° Π½Π° Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π² JavaScript ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π·Π°Ρ€Π°Π΄ΠΈ силнитС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»Π½ΠΈ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π·ΠΈ Π΄Π²Π° Π΅Π·ΠΈΠΊΠ°; ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ бСшС написан Π½Π° JavaScript ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°.

Π’ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π° клиСнтския ΠΊΠΎΠ΄ Π½Π° вградСния Π΅Π·ΠΈΠΊ 1Π‘ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² JavaScript. Π’ΡŠΠ½ΠΊΠΈΡΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π° ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ β€” ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π° вградСния Π΅Π·ΠΈΠΊ 1Π‘ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ слСд Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠ·ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ сС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ВпослСдствиС ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΡΡŠΡ‰ΠΎΡ‚ΠΎ - ΠΏΡŠΡ€Π²ΠΎ, Ρ‚ΠΎΠ²Π° Π΄Π°Π΄Π΅ прСдимство Π² производитСлността, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎ - ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ унификация Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΈ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅.

ΠŸΡŠΡ€Π²Π°Ρ‚Π° вСрсия Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ·Π»Π΅Π·Π΅ ΠΏΡ€Π΅Π· 2009 Π³ΠΎΠ΄ΠΈΠ½Π°. Π£Π΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ 2 Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° – Internet Explorer ΠΈ Firefox. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ‚Π΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ бСшС ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Opera, Π½ΠΎ Π·Π°Ρ€Π°Π΄ΠΈ Π½Π΅ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΠΈ Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π·Π° затварянС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Opera (Π½Π΅ успявахмС с 100%-Π²Π° сигурност Π΄Π° прослСдим, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС затваря ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° Π·Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° прилоТСнията 1Π‘) Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈΠΌΠ° ΠΎΠ±Ρ‰ΠΎ 4 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, написани Π½Π° JavaScript:

  1. WebTools – ΠΎΠ±Ρ‰ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ‚ останалитС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ (Ρ‚ΡƒΠΊ Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ ΠΈ Google Closure Library).
  2. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π½Π° JavaScript ΠΈ Π² Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΈ Π² ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°)
  3. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ (Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π½Π° JavaScript ΠΈ Π² Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΈ Π² ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°)
  4. Π£Π΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° всСки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ наподобява структурата Π½Π° Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ (ΠΈΠ»ΠΈ .NET ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ – Π½Π° ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ ΠΌΡƒ Π΅ ΠΏΠΎ-Π±Π»ΠΈΠ·ΠΎ); ΠΈΠΌΠ°ΠΌΠ΅ нСймспСйсовС ΠΈ всСки нСймспСйс сС Π½Π°ΠΌΠΈΡ€Π° Π² ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΏΠ°ΠΏΠΊΠ°. Π’ΡŠΡ‚Ρ€Π΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ класовС Π½Π° нСймспСйса. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΎΠΊΠΎΠ»ΠΎ 1000 Ρ„Π°ΠΉΠ»Π°.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π³Ρ€ΡƒΠ±ΠΎ сС раздСля Π½Π° слСднитС подсистСми:

  • УправляСм интСрфСйс Π½Π° клиСнтското ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
    • ΠžΠ±Ρ‰ интСрфСйс Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (систСмни мСню, ΠΏΠ°Π½Π΅Π»ΠΈ)
    • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π° управляСмитС Ρ„ΠΎΡ€ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈ (Π±ΡƒΡ‚ΠΎΠ½ΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° – тСкстови, Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΈ, Π΄Π°Ρ‚Π°/Π²Ρ€Π΅ΠΌΠ΅ ΠΈ ΠΏΡ€., Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΡΠΏΠΈΡΡŠΡ†ΠΈ, Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Ρ‚.Π½.)

  • ΠžΠ±Π΅ΠΊΡ‚Π½ΠΈΡΡ‚ ΠΌΠΎΠ΄Π΅Π», Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π°Π΄ 400 Ρ‚ΠΈΠΏΠ°: ΠΎΠ±Π΅ΠΊΡ‚Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° управляСмия интСрфСйс, настройки Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΈ, условно ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€.)
  • Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ Π΅Π·ΠΈΠΊ 1Π‘
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ сС Π·Π° функционалности, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Π² JavaScript)
    • Π Π°Π±ΠΎΡ‚Π° с криптография
    • Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅
    • ВСхнология Π·Π° външни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, позволяваща тяхното ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ Π² Ρ‚ΡŠΠ½ΠΊΠΈΡ, Ρ‚Π°ΠΊΠ° ΠΈ Π² ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ΠžΡΠΎΠ±Π΅Π½ΠΎΡΡ‚ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°

РСализацията Π½Π° всичко ΠΏΠΎ-Π³ΠΎΡ€Π΅ Π½Π° JavaScript Π΅ слоТно Π΄Π΅Π»ΠΎ. МоТС Π±ΠΈ, ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ 1Π‘ Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ‚ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ клиСнтски прилоТСния, написани Π½Π° JavaScript – ΠΎΠΊΠΎΠ»ΠΎ 450 000 Ρ€Π΅Π΄Π°. Активно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ΄Π° Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΠΉΡ‚ΠΎ улСснява Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Ρ‚Π°ΠΊΡŠΠ² голям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π—Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° клиСнтския ΠΊΠΎΠ΄ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ собствСн обфускатор, Π° ΠΎΡ‚ вСрсия 8.3.6 Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (ΠΎΠΊΡ‚ΠΎΠΌΠ²Ρ€ΠΈ 2014) Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Google Closure Compiler. Π•Ρ„Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π² Ρ†ΠΈΡ„Ρ€ΠΈ – Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° слСд обфускация:

  • БобствСн обфускатор – 1556 ΠΊΠ±
  • Google Closure Compiler – 1073 ΠΊΠ±

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Google Closure Compiler Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ производитСлността Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° с 30% Π² сравнСниС с нашия собствСн обфускатор. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΎΠ±Π΅ΠΌΡŠΡ‚ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, намаля с 15-25% (Π² зависимост ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°).

Google Closure Compiler ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄, Π·Π°Ρ‚ΠΎΠ²Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° СфСктивност Π·Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΅ максимално висока. Closure Compiler ΠΏΡ€Π°Π²ΠΈ няколко Π΄ΠΎΠ±Ρ€ΠΈ Π½Π΅Ρ‰Π° Π·Π° нас:

  • Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (осигурява сС Ρ‡Ρ€Π΅Π· ΠΏΠΎΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° с Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ JSDoc). Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ статична типизация, ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ Ρ‚ΠΈΠΏΠΎΠ²Π°Ρ‚Π° систСма Π² C++. Π’ΠΎΠ²Π° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° компилация Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • НамаляванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΊΠΎΠ΄Π° Ρ‡Ρ€Π΅Π· обфускация
  • Няколко ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° изпълнявания ΠΊΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Ρ‚ΠΎ:
    • ΠΈΠ½Π»Π°ΠΉΠ½ замСствания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΈΠΊΠ° Π½Π° функция Π² JavaScript Π΅ сравнитСлно скъпа опСрация, Π° ΠΈΠ½Π»Π°ΠΉΠ½ замСствания Π½Π° чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ускоряват Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄Π°.
    • Π‘Ρ€ΠΎΠ΅Π½Π΅ Π½Π° константи ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация. Ако ΠΈΠ·Ρ€Π°Π·ΡŠΡ‚ зависи ΠΎΡ‚ константа, Ρ‰Π΅ бъдС Π·Π°ΠΌΠ΅Π½Π΅Π½ с дСйствитСлната стойност Π½Π° константата.

ΠšΠ°Ρ‚ΠΎ срСди Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ WebStorm.

Π—Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΠ΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ SonarQube, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΠΌΠ΅ статични Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠΎΠ΄Π°. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ слСдим дСградацията Π½Π° качСството Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° JavaScript ΠΈ сС стараСм Π΄Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠΌ Ρ‚ΠΎΠ²Π°.

Π—Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘

Какви Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠ°Π²Π°Ρ…ΠΌΠ΅/Ρ€Π΅ΡˆΠ°Π²Π°ΠΌΠ΅

По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ…ΠΌΠ΅ с няколко интСрСсни Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Ρ€Π΅ΡˆΠΈΠΌ.

ОбмСн Π½Π° Π΄Π°Π½Π½ΠΈ с ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈΡ‚Π΅

Има ситуации, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ обфускиранСто Π½Π° изходния ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΏΡ€Π΅Ρ‡ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмата. ΠšΠΎΠ΄ΡŠΡ‚, външСн спрямо изпълнявания ΠΊΠΎΠ΄ Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡ€Π°Π΄ΠΈ обфускиранСто Π΄Π° ΠΈΠΌΠ° ΠΈΠΌΠ΅Π½Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΡˆΠΈΡΡ‚ изпълняван ΠΊΠΎΠ΄ ΠΎΡ‡Π°ΠΊΠ²Π°. Π’ΡŠΠ½ΡˆΠ½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π·Π° нас Π΅:

  • ΠšΠΎΠ΄ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ΄Π²Π° ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° структурирани Π΄Π°Π½Π½ΠΈ
  • ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ обфускиранСто ΠΏΡ€ΠΈ взаимодСйствиС със ΡΡŠΡ€Π²Π΅Ρ€Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°Π³ @expose:

/**
 * @constructor
 * @extends {Base.SrvObject}
 */
Srv.Core.GenericException = function ()
{
    /**
     * @type {string}
     * @expose
     */
    this.descr;

    /**
     * @type {Srv.Core.GenericException}
     * @expose
     */
    this.inner;

    /**
     * @type {string}
     * @expose
     */
    this.clsid;

    /**
     * @type {boolean}
     * @expose
     */
    this.encoded;
}

А Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ обфускиранСто ΠΏΡ€ΠΈ взаимодСйствиС с Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈΡ‚Π΅ Скспортирани интСрфСйси (интСрфСйси, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ всички ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ са Скспортирани).

/**
 * ЭкспортируСмый интСрфСйс ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° DropDownWindow
 *
 * @interface
 * @struct
 */
WebUI.IDropDownWindowExp = function(){}

/**
 * ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 1 Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ»ΠΈ Π½Π°Π·Π°Π΄
 *
 * @param {boolean} isForward
 * @param {boolean} checkOnly
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly){}

/**
 * ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ†
 *
 * @param {boolean} isFirst
 * @param {boolean} checkOnly
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly){}

/**
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.selectValue = function (){}

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ Virtual DOM ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° станС основСн)

ΠšΠ°ΠΊΡ‚ΠΎ всички Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ работят с слоТСн ΡƒΠ΅Π± UI, Π½ΠΈΠ΅ Π±ΡŠΡ€Π·ΠΎ Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ DOM Π½Π΅ Π΅ подходящ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅Π½ потрСбитСлски интСрфСйс. ΠŸΠΎΡ‡Ρ‚ΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π±Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π°Π½Π°Π»ΠΎΠ³ Π½Π° Virtual DOM Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с UI. Π’ процСса Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² DOM сС запомнят Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ само ΠΏΡ€ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π²ΡŠΡ€Ρ…Ρƒ DOM Π΄ΡŠΡ€Π²ΠΎΡ‚ΠΎ.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Π—Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°ΡˆΠΈΡΡ‚ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, сС стараСм Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ максимално Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (CSS ΠΈ Ρ‚.Π½.). Π’Π°ΠΊΠ°, командният ΠΏΠ°Π½Π΅Π» Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ практичСски Π½Π° всяка Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ) сС Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ с срСдствата Π½Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° CSS.

Π—Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘

ВСстванС

Π—Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ тСстванС ΠΈ тСстванС Π½Π° производитСлността ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ инструмСнт, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΈΠ½-house (написан Π½Π° Java ΠΈ C++), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ тСстовС, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π½Π° Π±Π°Π·Π° Selenium.

ΠΠ°ΡˆΠΈΡΡ‚ инструмСнт Π΅ унивСрсалСн – Ρ‚ΠΎΠΉ позволява тСстванС Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ всякакви дСсктоп прилоТСния, ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° Π΅ подходящ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° тСстванС Π½Π° Ρ‚ΡŠΠ½ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ записва дСйствията Π½Π° потрСбитСля, ΠΊΠΎΠΉΡ‚ΠΎ стартира бизнСс Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ β€ž1Π‘β€œ, Π² сцСнарСн Ρ„Π°ΠΉΠ». Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ сС записват изобраТСния Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° област Π½Π° Π΅ΠΊΡ€Π°Π½Π° – Π΅Ρ‚Π°Π»ΠΎΠ½ΠΈΡ‚Π΅. ΠŸΡ€ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° Π½ΠΎΠ²ΠΈ вСрсии Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, сцСнаритС сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π±Π΅Π· участиСто Π½Π° потрСбитСля. Π’ случай Π½Π° Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ Π½Π° ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚Π° с Сталонния Π½Π° някой Π΅Ρ‚Π°ΠΏ, Ρ‚Π΅ΡΡ‚ΡŠΡ‚ сС счита Π·Π° ΠΏΡ€ΠΎΠ²Π°Π»Π΅Π½, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ спСциалист ΠΏΠΎ качСството ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π° разслСдванС – Π΄Π°Π»ΠΈ Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° систСмата. Π’ случай Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π΅Ρ‚Π°Π»ΠΎΠ½ΠΈΡ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС замСнят с Π½ΠΎΠ²ΠΈ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π° производитСлността Π½Π° прилоТСнията с точност Π΄ΠΎ 25 милисСкунди. Π’ някои случаи ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ части ΠΎΡ‚ сцСнария (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ повтарямС Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΡ€ΡŠΡ‡ΠΊΠ°) Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° дСградацията Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС с Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ всичкитС измСрвания сС записват Π² Π»ΠΎΠ³ Π·Π° Π°Π½Π°Π»ΠΈΠ·.

Π—Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° 1Π‘
ΠΠ°ΡˆΠΈΡΡ‚ инструмСнт Π·Π° тСстванС ΠΈ тСстваното ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

ΠΠ°ΡˆΠΈΡΡ‚ инструмСнт ΠΈ Selenium сС Π΄ΠΎΠΏΡŠΠ»Π²Π°Ρ‚; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ някакъв Π±ΡƒΡ‚ΠΎΠ½ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π΅ΠΊΡ€Π°Π½ΠΈΡ‚Π΅ Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ» своСто мСстополоТСниС – Selenium ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π³ΠΎ ΡƒΠ»ΠΎΠ²ΠΈ, Π½ΠΎ Π½Π°ΡˆΠΈΡΡ‚ инструмСнт Ρ‰Π΅ Π³ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ пиксСлно сравнСниС Π½Π° ΡΠΊΡ€ΠΈΠΉΠ½ΡˆΠΎΡ‚Π° с Π΅Ρ‚Π°Π»ΠΎΠ½Π°. ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π΄Π° прослСди ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π²Ρ…ΠΎΠ΄Π° ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ мишка, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ тях Ρ‚ΠΎΠΉ ΠΈ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°.

ВСстовС ΠΈ с Π΄Π²Π°Ρ‚Π° инструмСнта (нашия ΠΈ Selenium) стартират стандартни сцСнарии Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ бизнСс Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ВСстовСтС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС стартират слСд Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π°Ρ‚Π° компилация Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° β€ž1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅β€œ. Π’ случай Π½Π° забавянС Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° сцСнария (Π² сравнСниС с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° компилация), ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ разслСдванС ΠΈ отстранявамС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° забавянСто. ΠΠ°ΡˆΠΈΡΡ‚ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π΅ прост – Π½ΠΎΠ²Π°Ρ‚Π° компилация трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π΅ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ…ΠΎΠ΄Π½Π°Ρ‚Π°.

Π—Π° разслСдванС Π½Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ с забавянС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ инструмСнти; основно сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Dynatrace AJAX Edition ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π½Π° компанията DynaTrace. Записват сС Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Π°Ρ‚Π° опСрация Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΠΈ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚. Π’Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π² милисСкунди) Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ Ρ„Π°ΠΊΡ‚ΠΎΡ€ – Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ стартират слуТСбни процСси, ΠΊΠ°Ρ‚ΠΎ почистванС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Ρ‚ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈ Π΄Π° изкривят ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°Ρ‚Π°. По-Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ случай са броят Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΡ‚Π΅ JavaScript инструкции, броят Π½Π° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ DOM ΠΈ Ρ‚.Π½. Ако броят Π½Π° инструкциитС/ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² ΡΡŠΡ‰ΠΈΡ сцСнарий Π² Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ – Ρ‚ΠΎΠ²Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° спад Π² производитСлността, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° сС отстрани.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, Π΅Π΄Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° спада Π² производитСлността ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Google Closure Compiler ΠΏΠΎ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π½Π΅ Π΅ успял Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ inline замСстванС Π½Π° функцията (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Ρ‰ΠΎΡ‚ΠΎ функцията Π΅ рСкурсивна ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°). Π’ Ρ‚ΠΎΠ·ΠΈ случай сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌ ситуацията, прСзаписвайки изходния ΠΊΠΎΠ΄.

Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅

Π’ случай, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ½ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ функционалност, която Π½Π΅ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π° Π² JavaScript, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅:

ΠΠ°ΡˆΠΈΡ‚Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ сС ΡΡŠΡΡ‚ΠΎΡΡ‚ ΠΎΡ‚ Π΄Π²Π΅ части. ΠŸΡŠΡ€Π²Π°Ρ‚Π° част Π΅ Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ написани Π½Π° JavaScript Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° Chrome ΠΈ Firefox), ΠΊΠΎΠΈΡ‚ΠΎ взаимодСйстват с Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° част β€” Π±ΠΈΠ½Π°Ρ€Π½ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‰ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° функционалност. Врябва Π΄Π° спомСнСм, Ρ‡Π΅ пишСм 3 вСрсии Π½Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ – Π·Π° Windows, Linux ΠΈ MacOS. Π‘ΠΈΠ½Π°Ρ€Π½ΠΎΡ‚ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ сС прСдоставя с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 1C:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈ сС Π½Π°ΠΌΠΈΡ€Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ 1C. ΠŸΡ€ΠΈ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΎΡ‚ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‚ΠΎ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π½Π° клиСнтския ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ ΠΈ сС инсталира Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π² Safari Π½Π°ΡˆΠΈΡ‚Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ NPAPI, Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π² Internet Explorer β€” тСхнологията ActiveX. Microsoft Edge всС ΠΎΡ‰Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π·Π°Ρ‚ΠΎΠ²Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² Π½Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ с ограничСния.

По-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅

Π•Π΄Π½Π° ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° Π΅ΠΊΠΈΠΏΠ°, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π΅ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎΡ‚ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π° функционалността. Ѐункционалността Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° трябва Π΄Π° бъдС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° Π½Π° функционалността Π½Π° Ρ‚ΡŠΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, всяка Π½ΠΎΠ²Π° функционалност сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π² Ρ‚ΡŠΠ½ΠΊΠΈΡ, ΠΈ Π² ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Π”Ρ€ΡƒΠ³ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ са Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°, Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ, ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° производитСлността ΠΈ надСТдността. НапримСр, Π΅Π΄Π½ΠΎ ΠΎΡ‚ направлСнията Π΅ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎΡ‚ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ към асинхронСн ΠΌΠΎΠ΄Π΅Π» Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Част ΠΎΡ‚ функционалността Π½Π° ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° Π½Π° синхронСн ΠΌΠΎΠ΄Π΅Π» Π½Π° взаимодСйствиС със ΡΡŠΡ€Π²ΡŠΡ€Π°. Асинхронният ΠΌΠΎΠ΄Π΅Π» Π²Π΅Ρ‡Π΅ става всС ΠΏΠΎ-Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅ (ΠΈ Π½Π΅ само Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅), ΠΈ Ρ‚ΠΎΠ²Π° Π½ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°Π²Π° Π΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ ΡƒΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, замСняйки синхроннитС извиквания с асинхронни (ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° ΠΊΠΎΠ΄Π°). ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΈΡΡ‚ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ към асинхронСн ΠΌΠΎΠ΄Π΅Π» сС обяснява с нСобходимостта ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ тяхната постСпСнно адаптация.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster