ΠΡΠ΅Π·Π΅Π½ΡΠΈΡΠ°Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Redbean 2.0, ΠΊΠΎΡ Π½ΡΠ΄ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΡΠΏΠΎΡΠ°ΡΠ°ΡΠ΅ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π½Π° ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ Π½Π° Linux, Windows, MacOS, FreeBSD, NetBSD ΠΈ OpenBSD. Π‘ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π°Ρ Π²ΠΎ Π΅Π΄Π½Π° ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠ° Π΅ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½Π° ΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΎΡ Π½Π° Π°ΡΡ ΠΈΠ²Π°ΡΠ° ZIP ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠ°ΡΠ° zip Π·Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ Π΅Π΄Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΠ·Π½Π°Π΅ ΠΊΠ°ΠΊΠΎ ZIP Π°ΡΡ ΠΈΠ²Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π° ΡΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ Π·Π°Π³Π»Π°Π²ΠΈΡΠ°ΡΠ° Π½Π° ΠΈΠ·Π²ΡΡΠ½ΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΡΠ»ΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΡΠΊΠ°ΡΠ° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° C Cosmopolitan. ΠΡΠΎΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° ISC.
ΠΠ΄Π΅ΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Π΅Π΄Π½Π° ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° βredbean.comβ ΡΠΎ Π²Π³ΡΠ°Π΄Π΅Π½ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ. Π Π°Π·Π²ΠΈΠ²Π°Ρ Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ Π°Π»Π°ΡΠΊΠ°ΡΠ° zip Π·Π° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ HTML ΠΈ Lua-Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π²ΠΎ ΠΎΠ²Π°Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΠ½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠ»Π°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π½Π΅ Π±Π°ΡΠ° ΠΏΠΎΡΠ΅Π±Π΅Π½ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ.
ΠΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠ±ΠΈΠ΅Π½Π°ΡΠ° ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΠΎΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π°ΡΡΠ²Π°Π½Π° Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ°. Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ, ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠΎΡ Π΅ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ Ρ ΠΎΡΡ, Π½ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΠΈΡΠ΅Π½ ΡΠ°Π²Π΅Π½ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²ΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ° ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π° Π²Π΅Π±-Π»ΠΎΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ). ΠΠ³ΡΠ°Π΄Π΅Π½ΠΈΠΎΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° HTTPS ΠΏΡΠΈΡΡΠ°ΠΏ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ° Π½Π° sandbox, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π΄ΠΎ ΠΊΠΎΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΡΠ²Π°. ΠΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅, ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ Π΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ REPL ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ (Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Lua REPL ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° bestline, Π°Π½Π°Π»ΠΎΠ³ Π½Π° GNU Readline), ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ.
Π‘Π΅ ΡΠ²ΡΠ΄ΠΈ Π΄Π΅ΠΊΠ° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ ΠΌΠΈΠ»ΠΈΠΎΠ½ Π±Π°ΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π° Π½Π° ΠΎΠ±ΠΈΡΠ΅Π½ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π°ΡΡΠΈ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π° ΡΠΎ gzip. ΠΠ½Π° ΡΡΠΎ ΠΈΠΌ ΠΏΠΎΠΌΠ°Π³Π° Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π΅ ΡΠΎΠ° ΡΡΠΎ zip ΠΈ gzip ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΡΠΎΡΠΌΠ°Ρ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°Π°Ρ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠ°ΠΊΡΠ²Π°Π°Ρ ΠΎΠ΄ Π²Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΎ zip-Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΈΠ·Π²ΡΡΠ½Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π΅ ΠΊΡΠ΅ΠΈΡΠ°Π½Π° ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΠΈ Π΅ ΠΌΠ°Π»Π° ΠΏΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°, ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π²ΠΈΠ»ΡΡΠΊΠ° Π½Π° Π½Π΅Π³ΠΎ Π²ΠΎΠ²Π΅Π΄ΡΠ²Π° ΠΌΠ°Π»ΠΊΡ ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°.
ΠΠΎΠΊΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π° Π²Π΅Π±-ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ JavaScript Π²ΠΎ ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°ΡΠΎΡ, Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΡΠΊΡΠΈΠΏΡΠΈ Π²ΠΎ Lua, Π²Π΅Π±-ΡΠ°ΠΌΠΊΠ°ΡΠ° Fullmoon ΠΈ SQLite DBMS. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Ρ Π°ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°ΡΠ° 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/Π·Π΄ΡΠ°Π²ΠΎ .html Π·Π΄ΡΠ°Π²ΠΎ $ printf 'GET /hello.lua\n\n' | nc 127.0.0.1 8080 Π·Π΄ΡΠ°Π²ΠΎ
ΠΠ·Π²ΠΎΡ: opennet.ru