diff --git a/_includes/_markdown/_ru/install-cask.md b/_includes/_markdown/_ru/install-cask.md new file mode 100644 index 000000000..1cac104c2 --- /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 000000000..aa1514255 --- /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 000000000..f010d1f7f --- /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 000000000..fec7938ce --- /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 000000000..83880a91a --- /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 fd2e132c5..7e8405f63 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 9bc97cb2d..4e042e357 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 7fb3e890d..9c5c789b4 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 71d30f0c4..d72387f04 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 8aa5021b7..4397be63b 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 4a1efcdc6..bf2db8a53 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 000000000..b2790bd58 --- /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 000000000..6e552acec --- /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 000000000..f6a216e29 --- /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 000000000..c91f04b07 --- /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 000000000..4e5cb4fd2 --- /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 000000000..3fa905ddb --- /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 000000000..6afdebab4 --- /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" %}