Redbean 2.0 Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° ΡƒΠ΅Π± прилоТСния, ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½ΠΈ Π² унивСрсалСн изпълним ZIP Π°Ρ€Ρ…ΠΈΠ²

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Redbean 2.0, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‰ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° доставятС ΡƒΠ΅Π± прилоТСния ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° унивСрсалСн изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС изпълнява Π½Π° Linux, Windows, MacOS, FreeBSD, NetBSD ΠΈ OpenBSD. Всички рСсурси, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΡΡŠΡ€Π²ΡŠΡ€Π°, са ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с ZIP архивния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° zip Π·Π° добавянС Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° стартиратС Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми ΠΈ Ρ‚ΠΎΠΉ Π΄Π° бъдС Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ZIP Π°Ρ€Ρ…ΠΈΠ² сС постига Ρ‡Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ Π½Π° изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π°Ρ‚Π° стандартна C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Cosmopolitan. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· ISC.

Π˜Π΄Π΅ΡΡ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ Π΄Π° прСдостави Π΅Π΄ΠΈΠ½ изпълним Ρ„Π°ΠΉΠ» β€œredbean.com” с Π²Π³Ρ€Π°Π΄Π΅Π½ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° zip, Π·Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ HTML ΠΈ Lua Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ към Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ самостоятСлно ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° всички популярни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми ΠΈ Π½Π΅ изисква ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² систСмата.

Π‘Π»Π΅Π΄ стартиранС Π½Π° получСния изпълним Ρ„Π°ΠΉΠ», вградСният ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, записано във Ρ„Π°ΠΉΠ»Π°. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π΅Π½ към localhost, Π½ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ·ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ обслуТва уСбсайта Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°). ВградСният ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° HTTPS Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС изпълнява с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° изолация Π½Π° ΠΏΡΡΡŠΡ‡Π½Π° срСда, която Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ Π΄ΠΎ ΠΊΠΎΠΈ систСмни интСрфСйси сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Π΄ΠΎΡΡ‚ΡŠΠΏ. Π—Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ изпълнСниС Π΅ осигурСн ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ REPL интСрфСйс (Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Lua REPL ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° bestline, Π°Π½Π°Π»ΠΎΠ³ Π½Π° GNU Readline), ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π° промяна Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° процСса.

Π’Π²ΡŠΡ€Π΄ΠΈ сС, Ρ‡Π΅ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ ΠΌΠΈΠ»ΠΈΠΎΠ½ заявки Π² сСкунда Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€, обслуТвайки gzip компрСсирано ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅. Π’ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° производитСлността, Π΅, Ρ‡Π΅ zip ΠΈ gzip ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΠ±Ρ‰ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС обслуТват, Π±Π΅Π· Π΄Π° сС ΠΏΡ€Π΅ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ ΠΎΡ‚ Π²Π΅Ρ‡Π΅ компрСсирани области Π² zip Ρ„Π°ΠΉΠ»Π°. ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡΡ‚ Ρ„Π°ΠΉΠ» Π΅ създадСн с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° статично ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΈ Π΅ малък ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° fork Π²ΡŠΡ€Ρ…Ρƒ Π½Π΅Π³ΠΎ въвСТда ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.

Π’ допълнСниС към ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° статично ΡƒΠ΅Π± ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° JavaScript Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°, Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° скриптовС Π² Lua, ΡƒΠ΅Π± Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° Fullmoon ΠΈ Π‘Π£Π‘Π” SQLite. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° схСмата Π·Π° Ρ…Π΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ argon2, Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° опрСдСлянС Π½Π° IP Ρ€Π΅Π³ΠΈΠΎΠ½Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ MaxMind ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Unix API Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Cosmopolitan. Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° основния стСк, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, MbedTLS, Cosmopolitan, Lua ΠΈ SQLite, Π΅ само 1.9 MB.

УнивСрсалСн изпълним Ρ„Π°ΠΉΠ» сС Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° сСгмСнти ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ, спСцифични Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми (PE, ELF, MACHO, OPENBSD, ZIP) Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ». Π—Π° Π΄Π° сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ Π΅Π΄ΠΈΠ½ изпълним Ρ„Π°ΠΉΠ» Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Windows ΠΈ Unix систСми, Π΅Π΄ΠΈΠ½ Ρ‚Ρ€ΠΈΠΊ Π΅ Π΄Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‚Π΅ Windows PE Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΠ°Ρ‚ΠΎ скрипт Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Thompson Shell Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π½Π° скрипта "#!". Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ Π΅ изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π° няколко Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Linux, BSD, Windows ΠΈ macOS. $ curl https://redbean.dev/redbean-demo-2.0.7.com >redbean.com $ chmod +x redbean.com $ zip redbean.com hello.html $ zip redbean.com hello.lua $ ./redbean .com -vv I2022-06-23T08:27:14+000767:redbean] (srvr) ΡΠ»ΡƒΡˆΠ°Π½Π΅ http://127.0.0.1:8080 >: ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° команда… $ curl https://127.0.0.1:8080/hello .html Π·Π΄Ρ€Π°Π²Π΅ΠΉ $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 Π·Π΄Ρ€Π°Π²Π΅ΠΉ



Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€