From 5909da4072951841047abc53fe44778f1613d49a Mon Sep 17 00:00:00 2001
From: Artem Korsakov <a.korsakov@kryptonite.ru>
Date: Sat, 1 Mar 2025 17:24:54 +0300
Subject: [PATCH] Translate "Toolkit" into Russian

---
 _includes/_markdown/_ru/install-cask.md    | 45 +++++++++++
 _includes/_markdown/_ru/install-munit.md   | 68 +++++++++++++++++
 _includes/_markdown/_ru/install-os-lib.md  | 64 ++++++++++++++++
 _includes/_markdown/_ru/install-sttp.md    | 64 ++++++++++++++++
 _includes/_markdown/_ru/install-upickle.md | 64 ++++++++++++++++
 _overviews/toolkit/http-client-intro.md    |  1 +
 _overviews/toolkit/introduction.md         |  1 +
 _overviews/toolkit/json-intro.md           |  1 +
 _overviews/toolkit/os-intro.md             |  1 +
 _overviews/toolkit/testing-intro.md        |  1 +
 _overviews/toolkit/web-server-intro.md     |  1 +
 _ru/toolkit/OrderedListOfMdFiles           | 36 +++++++++
 _ru/toolkit/http-client-intro.md           | 24 ++++++
 _ru/toolkit/introduction.md                | 88 ++++++++++++++++++++++
 _ru/toolkit/json-intro.md                  | 23 ++++++
 _ru/toolkit/os-intro.md                    | 25 ++++++
 _ru/toolkit/testing-intro.md               | 28 +++++++
 _ru/toolkit/web-server-intro.md            | 30 ++++++++
 18 files changed, 565 insertions(+)
 create mode 100644 _includes/_markdown/_ru/install-cask.md
 create mode 100644 _includes/_markdown/_ru/install-munit.md
 create mode 100644 _includes/_markdown/_ru/install-os-lib.md
 create mode 100644 _includes/_markdown/_ru/install-sttp.md
 create mode 100644 _includes/_markdown/_ru/install-upickle.md
 create mode 100644 _ru/toolkit/OrderedListOfMdFiles
 create mode 100644 _ru/toolkit/http-client-intro.md
 create mode 100644 _ru/toolkit/introduction.md
 create mode 100644 _ru/toolkit/json-intro.md
 create mode 100644 _ru/toolkit/os-intro.md
 create mode 100644 _ru/toolkit/testing-intro.md
 create mode 100644 _ru/toolkit/web-server-intro.md

diff --git a/_includes/_markdown/_ru/install-cask.md b/_includes/_markdown/_ru/install-cask.md
new file mode 100644
index 0000000000..1cac104c20
--- /dev/null
+++ b/_includes/_markdown/_ru/install-cask.md
@@ -0,0 +1,45 @@
+{% altDetails require-info-box 'Установка Cask' %}
+
+{% tabs cask-install class=tabs-build-tool %}
+
+{% tab 'Scala CLI' %}
+
+Вы можете объявить зависимость от Cask с помощью следующей директивы `using`:
+
+```scala
+//> using dep com.lihaoyi::cask::0.10.2
+```
+
+{% endtab %}
+
+{% tab 'sbt' %}
+
+В файле `build.sbt` вы можете добавить зависимость от Cask:
+
+```scala
+lazy val example = project.in(file("example"))
+  .settings(
+    scalaVersion := "3.4.2",
+    libraryDependencies += "com.lihaoyi" %% "cask" % "0.10.2",
+    fork := true
+  )
+```
+
+{% endtab %}
+
+{% tab 'Mill' %}
+
+В файле `build.sc` вы можете добавить зависимость от Cask:
+
+```scala
+object example extends RootModule with ScalaModule {
+  def scalaVersion = "3.4.2"
+  def ivyDeps = Agg(
+    ivy"com.lihaoyi::cask::0.10.2"
+  )
+}
+```
+{% endtab %}
+
+{% endtabs %}
+{% endaltDetails %}
diff --git a/_includes/_markdown/_ru/install-munit.md b/_includes/_markdown/_ru/install-munit.md
new file mode 100644
index 0000000000..aa15142558
--- /dev/null
+++ b/_includes/_markdown/_ru/install-munit.md
@@ -0,0 +1,68 @@
+{% altDetails install-info-box 'Установка MUnit' %}
+
+{% tabs munit-unit-test-1 class=tabs-build-tool %}
+{% tab 'Scala CLI' %}
+
+Вы можете запросить весь набор инструментов одной командой:
+
+```scala
+//> using toolkit latest
+```
+
+MUnit, будучи тестовым фреймворком, доступен только в тестовых файлах:
+файлах в каталоге `test` или тех, которые имеют расширение `.test.scala`.
+Подробнее о тестовой области (test scope) см. [в документации Scala CLI](https://scala-cli.virtuslab.org/docs/commands/test/).
+
+В качестве альтернативы вы можете запросить только определенную версию MUnit:
+
+```scala
+//> using dep org.scalameta::munit:1.1.0
+```
+
+{% endtab %}
+
+{% tab 'sbt' %}
+
+В файле `build.sbt` вы можете добавить зависимость от toolkit-test:
+
+```scala
+lazy val example = project.in(file("."))
+  .settings(
+    scalaVersion := "3.4.2",
+    libraryDependencies += "org.scala-lang" %% "toolkit-test" % "0.7.0" % Test
+  )
+```
+
+Здесь конфигурация `Test` означает, что зависимость используется только исходными файлами в `src/test`.
+
+В качестве альтернативы вы можете запросить только определенную версию MUnit:
+
+```scala
+libraryDependencies += "org.scalameta" %% "munit" % "1.1.0" % Test
+```
+{% endtab %}
+
+{% tab 'Mill' %}
+
+В файле `build.sc` вы можете добавить объект `test`, расширяющий `Tests` и `TestModule.Munit`:
+
+```scala
+object example extends ScalaModule {
+  def scalaVersion = "3.4.2"
+  object test extends Tests with TestModule.Munit {
+    def ivyDeps =
+      Agg(
+        ivy"org.scala-lang::toolkit-test:0.7.0"
+      )
+  }
+}
+```
+
+В качестве альтернативы вы можете запросить только определенную версию MUnit:
+
+```scala
+ivy"org.scalameta::munit:1.1.0"
+```
+{% endtab %}
+{% endtabs %}
+{% endaltDetails %}
\ No newline at end of file
diff --git a/_includes/_markdown/_ru/install-os-lib.md b/_includes/_markdown/_ru/install-os-lib.md
new file mode 100644
index 0000000000..f010d1f7fd
--- /dev/null
+++ b/_includes/_markdown/_ru/install-os-lib.md
@@ -0,0 +1,64 @@
+{% altDetails require-info-box 'Установка OS-Lib' %}
+
+{% tabs oslib-install class=tabs-build-tool %}
+
+{% tab 'Scala CLI' %}
+
+Вы можете запросить весь набор инструментов одной командой:
+
+```scala
+//> using toolkit latest
+```
+
+В качестве альтернативы вы можете запросить только определенную версию OS-Lib:
+
+```scala
+//> using dep com.lihaoyi::os-lib:0.11.3
+```
+
+{% endtab %}
+
+{% tab 'sbt' %}
+
+В файле `build.sbt` вы можете добавить зависимость от `toolkit`:
+
+```scala
+lazy val example = project.in(file("."))
+  .settings(
+    scalaVersion := "3.4.2",
+    libraryDependencies += "org.scala-lang" %% "toolkit" % "0.7.0"
+  )
+```
+
+В качестве альтернативы вы можете запросить только определенную версию OS-Lib:
+
+```scala
+libraryDependencies += "com.lihaoyi" %% "os-lib" % "0.11.3"
+```
+
+{% endtab %}
+
+{% tab 'Mill' %}
+
+В файле `build.sc` вы можете добавить зависимость от `toolkit`:
+
+```scala
+object example extends ScalaModule {
+  def scalaVersion = "3.4.2"
+  def ivyDeps =
+    Agg(
+      ivy"org.scala-lang::toolkit:0.7.0"
+    )
+}
+```
+
+В качестве альтернативы вы можете запросить только определенную версию OS-Lib:
+
+```scala
+ivy"com.lihaoyi::os-lib:0.11.3"
+```
+
+{% endtab %}
+
+{% endtabs %}
+{% endaltDetails %}
\ No newline at end of file
diff --git a/_includes/_markdown/_ru/install-sttp.md b/_includes/_markdown/_ru/install-sttp.md
new file mode 100644
index 0000000000..fec7938cea
--- /dev/null
+++ b/_includes/_markdown/_ru/install-sttp.md
@@ -0,0 +1,64 @@
+
+{% altDetails install-info-box 'Установка sttp' %}
+
+{% tabs sttp-install-methods class=tabs-build-tool%}
+
+{% tab 'Scala CLI' %}
+
+Вы можете запросить весь набор инструментов одной командой:
+
+```scala
+//> using toolkit latest
+```
+
+В качестве альтернативы вы можете запросить только определенную версию sttp:
+
+```scala
+//> using dep com.softwaremill.sttp.client4::core:4.0.0-RC1
+```
+
+{% endtab %}
+
+{% tab 'sbt' %}
+
+В файле `build.sbt` вы можете добавить зависимость от `toolkit`:
+
+```scala
+lazy val example = project.in(file("."))
+  .settings(
+    scalaVersion := "3.4.2",
+    libraryDependencies += "org.scala-lang" %% "toolkit" % "0.7.0"
+  )
+```
+
+В качестве альтернативы вы можете запросить только определенную версию sttp:
+
+```scala
+libraryDependencies += "com.softwaremill.sttp.client4" %% "core" % "4.0.0-RC1"
+```
+
+{% endtab %}
+
+{% tab 'Mill' %}
+
+В файле `build.sc` вы можете добавить зависимость от `toolkit`:
+
+```scala
+object example extends ScalaModule {
+  def scalaVersion = "3.4.2"
+  def ivyDeps =
+    Agg(
+      ivy"org.scala-lang::toolkit:0.7.0"
+    )
+}
+```
+
+В качестве альтернативы вы можете запросить только определенную версию sttp:
+
+```scala
+ivy"com.softwaremill.sttp.client4::core:4.0.0-RC1"
+```
+
+{% endtab %}
+{% endtabs %}
+{% endaltDetails %}
diff --git a/_includes/_markdown/_ru/install-upickle.md b/_includes/_markdown/_ru/install-upickle.md
new file mode 100644
index 0000000000..83880a91a8
--- /dev/null
+++ b/_includes/_markdown/_ru/install-upickle.md
@@ -0,0 +1,64 @@
+
+{% altDetails install-info-box 'Установка upickle' %}
+
+{% tabs upickle-install-methods class=tabs-build-tool %}
+
+{% tab 'Scala CLI' %}
+
+Вы можете запросить весь набор инструментов одной командой:
+
+```scala
+//> using toolkit latest
+```
+
+В качестве альтернативы вы можете запросить только определенную версию UPickle:
+
+```scala
+//> using dep com.lihaoyi::upickle:4.1.0
+```
+
+{% endtab %}
+
+{% tab 'sbt' %}
+
+В файле `build.sbt` вы можете добавить зависимость от `toolkit`:
+
+```scala
+lazy val example = project.in(file("."))
+  .settings(
+    scalaVersion := "3.4.2",
+    libraryDependencies += "org.scala-lang" %% "toolkit" % "0.7.0"
+  )
+```
+
+В качестве альтернативы вы можете запросить только определенную версию UPickle:
+
+```scala
+libraryDependencies += "com.lihaoyi" %% "upickle" % "4.1.0"
+```
+
+{% endtab %}
+
+{% tab 'Mill' %}
+
+В файле `build.sc` вы можете добавить зависимость от `toolkit`:
+
+```scala
+object example extends ScalaModule {
+  def scalaVersion = "3.4.2"
+  def ivyDeps =
+    Agg(
+      ivy"org.scala-lang::toolkit:0.7.0"
+    )
+}
+```
+
+В качестве альтернативы вы можете запросить только определенную версию UPickle:
+
+```scala
+ivy"com.lihaoyi::upickle:4.1.0"
+```
+
+{% endtab %}
+{% endtabs %}
+{% endaltDetails %}
diff --git a/_overviews/toolkit/http-client-intro.md b/_overviews/toolkit/http-client-intro.md
index fd2e132c54..7e8405f637 100644
--- a/_overviews/toolkit/http-client-intro.md
+++ b/_overviews/toolkit/http-client-intro.md
@@ -3,6 +3,7 @@ title: Sending HTTP requests with sttp
 type: chapter
 description: The introduction of the sttp library
 num: 23
+languages: [ru]
 previous-page: json-what-else
 next-page: http-client-request
 ---
diff --git a/_overviews/toolkit/introduction.md b/_overviews/toolkit/introduction.md
index 9bc97cb2d1..4e042e3575 100644
--- a/_overviews/toolkit/introduction.md
+++ b/_overviews/toolkit/introduction.md
@@ -3,6 +3,7 @@ title: Introduction
 type: chapter
 description: Introducing the Scala Toolkit tutorials
 num: 1
+languages: [ru]
 previous-page: 
 next-page: testing-intro
 toolkit-index:
diff --git a/_overviews/toolkit/json-intro.md b/_overviews/toolkit/json-intro.md
index 7fb3e890de..9c5c789b49 100644
--- a/_overviews/toolkit/json-intro.md
+++ b/_overviews/toolkit/json-intro.md
@@ -3,6 +3,7 @@ title: Handling JSON with uPickle
 type: chapter
 description: Description of the uPickle library.
 num: 16
+languages: [ru]
 previous-page: os-what-else
 next-page: json-parse
 ---
diff --git a/_overviews/toolkit/os-intro.md b/_overviews/toolkit/os-intro.md
index 71d30f0c49..d72387f045 100644
--- a/_overviews/toolkit/os-intro.md
+++ b/_overviews/toolkit/os-intro.md
@@ -3,6 +3,7 @@ title: Working with files and processes with OS-Lib
 type: chapter
 description: The introduction of the OS-lib library
 num: 10
+languages: [ru]
 previous-page: testing-what-else
 next-page: os-read-directory
 ---
diff --git a/_overviews/toolkit/testing-intro.md b/_overviews/toolkit/testing-intro.md
index 8aa5021b76..4397be63b3 100644
--- a/_overviews/toolkit/testing-intro.md
+++ b/_overviews/toolkit/testing-intro.md
@@ -3,6 +3,7 @@ title: Testing with MUnit
 type: chapter
 description: The introduction of the MUnit library
 num: 2
+languages: [ru]
 previous-page: introduction
 next-page: testing-suite
 ---
diff --git a/_overviews/toolkit/web-server-intro.md b/_overviews/toolkit/web-server-intro.md
index 4a1efcdc6a..bf2db8a537 100644
--- a/_overviews/toolkit/web-server-intro.md
+++ b/_overviews/toolkit/web-server-intro.md
@@ -3,6 +3,7 @@ title: Building web servers with Cask
 type: chapter
 description: The introduction of the Cask library
 num: 30
+languages: [ru]
 previous-page: http-client-what-else
 next-page: web-server-static
 ---
diff --git a/_ru/toolkit/OrderedListOfMdFiles b/_ru/toolkit/OrderedListOfMdFiles
new file mode 100644
index 0000000000..b2790bd58a
--- /dev/null
+++ b/_ru/toolkit/OrderedListOfMdFiles
@@ -0,0 +1,36 @@
+introduction.md
+testing-intro.md
+testing-suite.md
+testing-run.md
+testing-run-only.md
+testing-exceptions.md
+testing-asynchronous.md
+testing-resources.md
+testing-what-else.md
+os-intro.md
+os-read-directory.md
+os-read-file.md
+os-write-file.md
+os-run-process.md
+os-what-else.md
+json-intro.md
+json-parse.md
+json-modify.md
+json-deserialize.md
+json-serialize.md
+json-files.md
+json-what-else.md
+http-client-intro.md
+http-client-request.md
+http-client-uris.md
+http-client-request-body.md
+http-client-json.md
+http-client-upload-file.md
+http-client-what-else.md
+web-server-intro.md
+web-server-static.md
+web-server-dynamic.md
+web-server-query-parameters.md
+web-server-input.md
+web-server-websockets.md
+web-server-cookies-and-decorators.md
diff --git a/_ru/toolkit/http-client-intro.md b/_ru/toolkit/http-client-intro.md
new file mode 100644
index 0000000000..6e552acecd
--- /dev/null
+++ b/_ru/toolkit/http-client-intro.md
@@ -0,0 +1,24 @@
+---
+layout: multipage-overview
+partof: toolkit
+overview-name: "Scala инструментарий"
+title: Отправка HTTP-запросов с помощью sttp
+type: chapter
+description: Введение в библиотеку sttp
+language: ru
+num: 23
+previous-page:
+next-page:
+---
+
+sttp — популярная и многофункциональная библиотека для выполнения HTTP-запросов к веб-серверам.
+
+Она предоставляет как синхронный API, так и асинхронный API, основанный на `Future`. Она также поддерживает WebSockets.
+
+Доступны расширения, добавляющие такие возможности, как потоковая передача, логирование, телеметрия и сериализация.
+
+sttp предлагает одинаковые API на всех платформах (JVM, Scala.js и Scala Native).
+
+sttp — хороший выбор для небольших синхронных скриптов, а также для крупномасштабных, высококонкурентных, асинхронных приложений.
+
+{% include markdown.html path="_markdown/_ru/install-sttp.md" %}
diff --git a/_ru/toolkit/introduction.md b/_ru/toolkit/introduction.md
new file mode 100644
index 0000000000..f6a216e298
--- /dev/null
+++ b/_ru/toolkit/introduction.md
@@ -0,0 +1,88 @@
+---
+layout: multipage-overview
+partof: toolkit
+overview-name: "Scala инструментарий"        
+title: Введение
+type: chapter
+description: Знакомство с учебными пособиями по Scala инструментариям
+language: ru
+num: 1
+previous-page: 
+next-page: testing-intro
+toolkit-index:
+  - title: Тесты
+    description: Тестирование кода с помощью MUnit.
+    icon: "fa fa-vial-circle-check"
+    link: /ru/toolkit/testing-intro.html
+  - title: Файлы и процессы
+    description: Запись файлов и запуск процессов с помощью OS-Lib.
+    icon: "fa fa-folder-open"
+    link: /ru/toolkit/os-intro.html
+  - title: JSON
+    description: Парсинг JSON и сериализация объектов в JSON с помощью uPickle.
+    icon: "fa fa-file-code"
+    link: /ru/toolkit/json-intro.html
+  - title: HTTP-запросы
+    description: Отправка HTTP-запросов и загрузка файлов с помощью sttp.
+    icon: "fa fa-globe"
+    link: /ru/toolkit/http-client-intro.html
+  - title: Веб-серверы
+    description: Создание веб-серверов с помощью Cask.
+    icon: "fa fa-server"
+    link: /ru/toolkit/web-server-intro.html
+---
+
+## Что такое набор инструментов Scala?
+
+Scala Toolkit — это набор библиотек, предназначенных для эффективного выполнения типичных задач программирования. 
+Он включает в себя инструменты для работы с файлами и процессами, парсинга JSON, отправки HTTP-запросов и модульного тестирования.
+
+Инструментарий поддерживает:
+
+- Scala 3 и Scala 2
+- JVM, Scala.js и Scala Native
+
+Варианты использования набора инструментов включают в себя:
+
+- кратковременные программы, работающие на JVM, для сканирования веб-сайта, сбора и преобразования данных 
+  или для извлечения и обработки некоторых файлов,
+- скрипты интерфейса, которые запускаются в браузере и обеспечивают работу ваших веб-сайтов,
+- инструменты командной строки, упакованные в виде собственных двоичных файлов для мгновенного запуска
+
+{% include inner-documentation-sections.html links=page.toolkit-index %}
+
+## Что это за руководства?
+
+В этой серии руководств основное внимание уделяется кратким примерам кода, которые помогут вам быстро приступить к работе.
+
+Если вам нужна более подробная информация, в руководствах содержатся ссылки на дополнительную документацию 
+по всем библиотекам в наборе инструментов.
+
+## Как запустить код?
+
+Вы можете следовать руководствам независимо от того, как решите запустить свой Scala код. 
+Руководства фокусируются на самом коде, а не на процессе его запуска.
+
+Способы запуска кода на Scala включают:
+
+- В вашем **браузере** с помощью [Scastie](https://scastie.scala-lang.org)
+    - Плюсы: не требует установки, возможность делиться кодом онлайн
+    - Минусы: только один файл, доступно только онлайн
+- Интерактивно в **REPL** Scala (Read/Eval/Print/Loop)
+    - Плюсы: интерактивное исследование в терминале
+    - Минусы: не сохраняет ваш код
+- Интерактивно в **worksheet** в вашей IDE, например [IntelliJ](https://www.jetbrains.com/help/idea/discover-intellij-idea-for-scala.html) или [Metals](http://scalameta.org/metals/)
+    - Плюсы: интерактивное исследование в графическом интерфейсе
+    - Минусы: требует для запуска среды worksheet
+- В **скриптах** с использованием [Scala CLI](https://scala-cli.virtuslab.com)
+    - Плюсы: рабочий процесс в терминале с минимальной настройкой
+    - Минусы: может не подходить для крупных проектов
+- С использованием **инструмента сборки** (например, [sbt](https://www.scala-sbt.org) или [mill](https://com-lihaoyi.github.io/mill/))
+    - Плюсы: рабочий процесс в терминале для проектов любого размера
+    - Минусы: требует дополнительной настройки и обучения
+- С использованием **IDE**, например [IntelliJ](https://www.jetbrains.com/help/idea/discover-intellij-idea-for-scala.html) или [Metals](http://scalameta.org/metals/)
+    - Плюсы: рабочий процесс в графическом интерфейсе для проектов любого размера
+    - Минусы: требует дополнительной настройки и обучения
+
+Эти варианты, с их плюсами и минусами, характерны для большинства языков программирования.  
+Вы можете использовать любой из них, в зависимости от того варианта, который вам удобен.
diff --git a/_ru/toolkit/json-intro.md b/_ru/toolkit/json-intro.md
new file mode 100644
index 0000000000..c91f04b075
--- /dev/null
+++ b/_ru/toolkit/json-intro.md
@@ -0,0 +1,23 @@
+---
+layout: multipage-overview
+partof: toolkit
+overview-name: "Scala инструментарий"
+title: Обработка JSON с помощью uPickle
+type: chapter
+description: Описание библиотеки uPickle.
+language: ru
+num: 16
+previous-page:
+next-page:
+---
+
+uPickle — это облегченная библиотека сериализации для Scala.
+
+В его состав входит uJson — библиотека для работы с JSON, которая может анализировать строки JSON, 
+получать доступ к их значениям в памяти или изменять их, а также записывать их обратно.
+
+uPickle может сериализовать и десериализовать объекты Scala напрямую в JSON и из него. 
+Он знает, как обрабатывать коллекции Scala, такие как `Map` и `Seq`, 
+а также ваши собственные типы данных, такие как case class-ы и перечисления Scala 3.
+
+{% include markdown.html path="_markdown/_ru/install-upickle.md" %}
diff --git a/_ru/toolkit/os-intro.md b/_ru/toolkit/os-intro.md
new file mode 100644
index 0000000000..4e5cb4fd2a
--- /dev/null
+++ b/_ru/toolkit/os-intro.md
@@ -0,0 +1,25 @@
+---
+layout: multipage-overview
+partof: toolkit
+overview-name: "Scala инструментарий"
+title: Работа с файлами и процессами с помощью OS-Lib
+type: chapter
+description: Введение в библиотеку OS-lib
+language: ru
+num: 10
+previous-page:
+next-page:
+---
+
+OS-Lib — это библиотека для работы с файлами и процессами. Она является частью Scala Toolkit.
+
+OS-Lib стремится заменить API `java.nio.file` и `java.lang.ProcessBuilder`. 
+Скорее всего, вам не понадобиться напрямую использовать какие-либо низкоуровневые Java API.
+
+OS-Lib также нацелена на то, чтобы вытеснить устаревшие API `scala.io` и `scala.sys` из стандартной библиотеки Scala.
+
+OS-Lib не имеет зависимостей.
+
+Весь функционал OS-Lib находится в пространстве имён `os.*`.
+
+{% include markdown.html path="_markdown/_ru/install-os-lib.md" %}
diff --git a/_ru/toolkit/testing-intro.md b/_ru/toolkit/testing-intro.md
new file mode 100644
index 0000000000..3fa905ddb3
--- /dev/null
+++ b/_ru/toolkit/testing-intro.md
@@ -0,0 +1,28 @@
+---
+layout: multipage-overview
+partof: toolkit
+overview-name: "Scala инструментарий"
+title: Тестирование с помощью MUnit
+type: chapter
+description: Введение в библиотеку MUnit
+language: ru
+num: 2
+previous-page: introduction
+next-page:
+---
+
+MUnit — легковесная библиотека для тестирования. Она предоставляет единый стиль написания тестов, который можно быстро освоить.
+
+Несмотря на свою простоту, MUnit обладает такими полезными функциями, как:
+
+- **утверждения (assertions)** для проверки поведения программы,
+- **фикстуры (fixtures)**, чтобы гарантировать, что тесты имеют доступ ко всем необходимым ресурсам,
+- **поддержка асинхронности** для тестирования параллельных (concurrent) и распределённых приложений.
+
+MUnit создаёт полезные отчёты об ошибках с указанием различий и местоположения в исходном коде, что помогает быстро понять причины сбоев.
+
+Тестирование является важной частью любого процесса разработки программного обеспечения, 
+так как оно помогает находить ошибки на ранних этапах, 
+улучшает качество кода и облегчает совместную работу.
+
+{% include markdown.html path="_markdown/_ru/install-munit.md" %}
diff --git a/_ru/toolkit/web-server-intro.md b/_ru/toolkit/web-server-intro.md
new file mode 100644
index 0000000000..6afdebab4f
--- /dev/null
+++ b/_ru/toolkit/web-server-intro.md
@@ -0,0 +1,30 @@
+---
+layout: multipage-overview
+partof: toolkit
+overview-name: "Scala инструментарий"
+title: Создание веб-серверов с помощью Cask
+type: chapter
+description: Введение в библиотеку Cask
+language: ru
+num: 30
+previous-page:
+next-page:
+---
+
+Cask — это микрофреймворк HTTP, предоставляющий простой и гибкий способ создания веб-приложений.
+
+Основное внимание уделяется простоте использования, что делает его идеальным для новичков, 
+но при этом приходится отказываться от некоторых функций, предоставляемых другими фреймворками, например, асинхронности.
+
+Чтобы определить endpoint, достаточно аннотировать функцию аннотацией, указывающей путь запроса. 
+Cask позволяет вручную строить ответ с помощью инструментов, предоставляемых библиотекой, 
+указывая содержимое, заголовки, код статуса и т.д. 
+Функция endpoint также может возвращать строку, JSON тип [uPickle](https://com-lihaoyi.github.io/upickle/) 
+или шаблон [Scalatags](https://com-lihaoyi.github.io/scalatags/). 
+В этом случае Cask автоматически создаст ответ с соответствующими заголовками.
+
+Cask поставляется в комплекте с библиотекой uPickle для обработки JSON, поддерживает WebSockets 
+и позволяет расширять конечные точки с помощью декораторов, 
+которые можно использовать для обработки аутентификации или ограничения скорости.
+
+{% include markdown.html path="_markdown/_ru/install-cask.md" %}