# Песочница

Если вы хотите дать возможность третьим лицам запускать скрипты Gentee на вашем компьютере, то используйте при запуске скриптов режим *Playground*. Этот режим удобен для запуска скриптов в демонстрационных или учебных целях и защищает данные на компьютере от случайного или намеренного ущерба. Для включения этого режима укажите поле *IsPlayground* как *true* в структуре [*Settings*](/golang/reference.md) при запуске скрипта с помощью функции *Run*. Кроме этого, рекомендуется уменьшить параметры *Cycle* и *Depth* для установки ограничений на потребляемые ресурсы.

Работа скриптов в режиме *Playground* имеет следующие ограничения:

* **Процессы**. Отключены запуски любых процессов, включая открытие файлов в соответствующих приложениях. То есть функции *Open, OpenWith,Run, Start* работать не будут. Также не работает команда **$**.
* **Файловая система**. Запись и чтение файлов может происходить только в директории, которая указана в настройках Playground. Если она не указана, то создаётся поддиректория во временной директории. Эта директория становится текущей при запуске скрипта. Кроме этого, имеются ограничения на:
  * общее количество файлов (по умолчанию, 100).
  * суммарный размер файлов (по умолчанию, 10 MB).
  * максимальный размер файла (по умолчанию, 5 MB).
* **Сеть**. Отключена функция *HTTPRequest*. Вызов функций *Download, HTTPGet, HTTPPage* виртуально добавляет файл с соответствущим размером в директорию для записи. Таким образом, на эти функции также действуют ограничения файловой системы.

Если в процессе работы скрипта возникнет ошибка из-за ограничений режима *Playground*, то скрипт прекратит свою работу. В этом случае, текст ошибки будет начинаться с **\[Playground]**.

```go
run {
    $ echo "ooops"
}
// ERROR: [2:5] [Playground] starting any processes is disabled
run {
    AppendFile("../out.txt", "this is a test message")
}
// ERROR: [2:5] [Playground] access denied [../out.txt]
run  {
    for i in 1..110 {
        CreateFile(`%{i}.txt`, false)
    }
}
// ERROR: [3:9] [Playground] file limit reached [100]
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ru.gentee.org/golang/playground.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
