π ΠΠ½Π΅Π²Π½ΠΈΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° CRYSTAL #2: ΠΡΠΎΡΠΎΡΠΈΠΏ β Enter Text (LARS)
8 ΡΠ½Π²Π°ΡΡ
ΠΎΠ±Π½: 30 ΠΌΠ°Ρ
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅:
1. Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΠ
Π‘ΡΡΠΎΠ΅Π½ΠΈΠ΅:
GitHub | Full code | Cargo.toml
Π‘ΡΡΡΠΊΡΡΡΠ°:
- Leptos v0.8.2.
- Actix Web v4.x.
- Rust v1.92.0.
- ScyllaDB v2025.4.0.
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΠ:
- OS: Debian 12.
2. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Enter Text (LARS) β ΡΡΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° CRYSTAL Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅ΠΊ β LARS (Leptos, Actix Web, Rust, ScyllaDB).
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ, Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΠ΅ΠΊΡΡ, ΡΠΎ Π΅ΡΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΈΠΊΠ» CRUD
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
ScyllaDB.
ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ (SSR) ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΏΡΡΠΌΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ 100% ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈ Π²ΡΡΠΎΡΠ°ΠΉΡΡΡ SEO-ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π² ΡΡΠ΅Π΄Π΅ Π½Π° Π±Π°Π·Π΅ Linux, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ Π½ΠΈΠΆΠ΅.
3. ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
-
3.1. Auto-Schema, Single-Row Architecture, and Constant-id
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ°data(Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ) Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ°, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΡΡΠ΅Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ:id(ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ),content(ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅) ΠΈcreated_at(ΠΌΠ΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ). ΠΠ»Ρ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉidΠ² ΡΠΎΡΠΌΠ°ΡΠ΅UUID (11111111-1111-1111-1111-111111111111). ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡINSERTΠΊΠ°ΠΊΒ«upsertΒ»(ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ). Π’Π°ΠΊ ΠΊΠ°ΠΊidΠ²ΡΠ΅Π³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅, Π»ΡΠ±Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅contentΠ΄Π»Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:Π‘ΠΊΡΠΈΠ½ 1: Single Row View
-
3.2. Blocking SSR (SsrMode::PartiallyBlocked)
ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈΠ· ScyllaDB (ΠΈ Π²Π΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅) "Π²ΡΠΈΠ²Π°Π΅ΡΡΡ" Π² ΡΡΡΡΠΊΡΡΡΡ HTML ΠΏΡΡΠΌΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΠΎΠ±ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ 100% ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΈ Π²ΡΡΠΎΠΊΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² SEO:Π‘ΠΊΡΠΈΠ½ 2: Server-Side Rendered (SSR). ΠΡΠΎΡΠΌΠΎΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ (Ctrl+U)
-
3.3. Fine-grained Reactivity
ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ°, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ·Π΅Π» DOM, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠΎΡ ΡΠ΅ΠΊΡΡ, ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΡΡΠΎΠ½ΡΡΠΎΠΉ. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΈΠ³Π½Π°Π»Π°ΠΌ Leptos. -
3.4. Isomorphic Data Access & Reactive UI
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Resource::new_blockingΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±Π΅ΡΡΠΎΠ²Π½ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· Π²Π΅ΡΡΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Β«ΠΠΎΠ±Π°Π²ΠΈΡΡΒ» ΠΈ Β«ΠΠ±Π½ΠΎΠ²ΠΈΡΡΒ» ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Π£Π΄Π°Π»ΠΈΡΡΒ») Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ. -
3.5. Asynchronous ScyllaDB Integration
ΠΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π·scylla-rust-driver. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎArc<Session>, ΡΠ΅ΡΠ²Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠΎΠΊΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π³ΠΎΡΠΎΠ²ΠΈΡ ΠΎΡΠ²Π΅Ρ, CPU ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π·Π°Π΄Π°Ρ, ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈ ΡΠΊΡΡΡΠ΅ΠΌΠ°Π»ΡΠ½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠ°Ρ . -
3.6. SSR Isolation
ΠΠ΅ΡΡ ΠΊΠΎΠ΄ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π·Π°ΡΠΈΡΠ΅Π½ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ #[cfg(feature = "ssr")]. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΊΠΈΠ½ΡΡ ΡΠ΅ΡΠ²Π΅Ρ. -
3.7. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΎΡΡΠ΅ΡΡ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ :Π‘ΠΊΡΠΈΠ½ 3: ΠΡΡΠ½Π°Π» Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ScyllaDB
4. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ: ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Debian 12. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Windows Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Leptos ΠΈ ScyllaDB Π² ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄Π° Π½Π° Π±Π°Π·Π΅ Linux.
-
4.1. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (Debian 12 ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
sudo apt update && sudo apt install build-essential pkg-config libssl-dev -y -
4.2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Rust ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Leptos
-
4.2.1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Rust (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -
4.2.2. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ:
source $HOME/.cargo/env -
4.2.3. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ WebAssembly:
rustup target add wasm32-unknown-unknown -
4.2.4. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ cargo-leptos:
cargo install --locked cargo-leptos -
4.3. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ScyllaDB
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΡ Debian 12 Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ScyllaDB.
-
4.3.1. ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²:
sudo apt-get update -
4.3.2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ:
sudo apt-get install -y apt-transport-https curl gnupg -
4.3.3. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ScyllaDB Π² ΡΠΈΡΡΠ΅ΠΌΡ:
curl -sSf https://get.scylladb.com/server | sudo bash -
4.3.4. ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ScyllaDB:
sudo scylla_setup -
4.3.5. ΠΠ°ΠΏΡΡΠΊ ΡΠ»ΡΠΆΠ±Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ScyllaDB:
sudo systemctl start scylla-server -
4.3.6. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΡΡΡΠ° ΡΠ·Π»ΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°:
nodetool status
5. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΡΠΌ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Keyspace Π² ScyllaDB.
-
ΠΠΎΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
cqlsh -
Π Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ:
CREATE KEYSPACE IF NOT EXISTS prototype WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
6. ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°
-
6.1. ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
git clone https://github.com/AndrewShedov/enter-text--LARS && cd enter-text--LARS/main -
6.2. ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
cargo leptos watch
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
http://127.0.0.1:3000
Π’Π°Π±Π»ΠΈΡΠ° data Π²Π½ΡΡΡΠΈ keyspace prototype Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅ Auto-Schema.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ScyllaDB Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π½Π° ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 127.0.0.1:9042.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π°Π΄ΡΠ΅Ρ, Π²Π²Π΅Π΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»:
-
cqlshΠΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡΡ Π°Π΄ΡΠ΅Ρ:
Connected to at 127.0.0.1:9042
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ








ΠΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π²