⌨️KleDev

Π˜Ρ‚Π°ΠΊ, Π² стандартном KLE Π΅ΡΡ‚ΡŒ тСкущая ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния языка программирования ΠΎΠ½Π° являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Как ΠΈ любой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² JS, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ JSON, ΠΈ Ρ‚Π°ΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.

Но Π°Π²Ρ‚ΠΎΡ€ KLE Ρ€Π΅ΡˆΠΈΠ» Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ ΠΎΠ½ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» ΡΠ»ΠΎΠΆΠ½ΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ "сСриализации", Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Ρ…ΠΈΡ‚Ρ€ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ клавиши Π² ΠΎΠ΄Π½ΠΎΠΌ ряду, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° этом ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ мСсто. Π§Ρ‚ΠΎ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Π±Π°Π³ΠΈ. Как я понял, СдинствСнноС ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΡΠ»ΠΎΠΆΠ½ΡŽΡ‰Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° - это Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Ρ‹Π» сТат, ΠΈ Π½Π° gist хранился Π² максимально ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

Π― ΠΆΠ΅ отказался ΠΎΡ‚ этого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΈ Ρ…Ρ€Π°Π½ΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ нСсовмСстимости ΠΌΠ΅ΠΆΠ΄Ρƒ нашСй KLE, ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ.

Π’Π°ΠΊ Π²ΠΎΡ‚, я ΠΊΠ°ΠΊ-Ρ‚ΠΎ высказал идСю Ρ‡Ρ‚ΠΎ вмСсто изобрСтСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ слоТного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Ρ‚ΡƒΠΏΠΎ Π²Π·ΡΡ‚ΡŒ json ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΡƒΠ±Ρ€Π°Π² лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π·Π°Ρ‚Π΅ΠΌ ΡΠΆΠ°Ρ‚ΡŒ zip'ΠΎΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ это Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² base64 ΠΈ Ρ‚Π°ΠΊ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° gist.

И я сСгодня ΠΏΡ€ΠΎΠ²Ρ‘Π» экспСримСнты:

  • Мой самый слоТный слой, Π³Π΄Π΅ нарисованы всякиС Π°ΠΊΠΊΠΎΡ€Π΄Ρ‹, Π² нСсТатом Π²ΠΈΠ΄Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 137.1ΠΊΠ±.

  • ПослС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, сТатия ΠΈ прСобразования Π² base64 ΠΎΠ½ стал Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 7.1ΠΊΠ±, Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

  • ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ KLE Π²Ρ‹Π΄Π°Ρ‘Ρ‚ json'ΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 10.8ΠΊΠ±.

  • ПослС сТатия Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 2.1ΠΊΠ±.

Π― сТимал Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:

cat $1 | jq -c . | gzip -9 -c - | base64 > minified_zip.base64

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΠΏΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ + Ρ‚ΡƒΠΏΠΎΠ΅ сТатиС = Ρ€Π°Π·ΠΌΠ΅Ρ€ мСньшС, Ρ‡Π΅ΠΌ слоТный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π°Π²Ρ‚ΠΎΡ€Π°. Но Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ сТатиС, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ чудСса.

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ эти чудСса Ρ‚ΠΎΠ³ΠΎ Π½Π΅ стоят, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ получился слишком слоТным, ΠΈ Π² Π½Ρ‘ΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π±Π°Π³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π²Ρ‚ΠΎΡ€ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ„ΠΈΠΊΡΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ 2 Π³ΠΎΠ΄Π°.

Из Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄: Ссли ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρ‚Π΅Π±Π΅ захочСтся ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ json-ΠΊΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° gist, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ это Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· zip+base64, Ρ‡Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ свой Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Json'ΠΊΠΈ всС ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈ всС ΠΈΡ… Π² своих языках смогу ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.