<script>
{
const texts = [
"Фраза 1.",
"Фраза 2.",
];
const selected = texts[Math.floor(Math.random() * texts.length)];
const div = document.createElement('div');
div.innerText = selected;
document.body.appendChild(div);
}
</script>./Composer создать Dockerfile с чем-то подобным: FROM composer:latest
VOLUME ./data /data
RUN apt-get update && apt-get install git && git pull trololo && composer installservices:
composer:
build: ./Composerdepends_on) следующие сервисы. copy() как-то особенно разбирает строки, и там символ form_feed или carriage_return позволяет перезаписать/игнорировать прилепленное в начале "/var/www/dir_1/"?"\rhttp://site.com/bad_script.php" закачивает этот файл на сервер? while( ) выражение приводится к одному из двух: true или false. Цикл крутится, пока в скобках всё ещё получается true.var i = 5;
i != 0 // true, вальсируем дальше
5 // любое ненулевое число становится true
"yes" // непустая строка тоже true
{a: "A", b: "B"} // объекты всегда true
0 // false
"" // пустая строка, false
undefined // false
null // false
NaN // false0 даёт false, остальные числа true.&&, ||, ! их можно использовать не только для проверки двойных условий, но и, например, задавать значение на случай нуля:var a = 0;
var b = a || 42; // если a пустое. то в b попадёт запасное значение 42.true или false, как внутри скобок while(): дописать перед ним два восклицательных знака!!expressionТут дважды применяется ! – логическое НЕ, которое уже при первом применении сделает из выражения true или false, только зеркально наоборот, и нужен ещё один перевёртыш, чтобы получить задуманное значение.
Ожидаю что файлы из директории var/www/html попадут на хост в ./www
volumes:
- /папка_на_хосте:/папка_в_контейнере_1
- имя_тома:/папка_в_контейнере_2После этого, если внутри контейнера в этой папке создаётся файл, он оказывается в папке_хоста или томе./var/www/html — будь она папкой контейнера или смонтированной в него папкой хоста или томом докера. При запуске, если там пусто, файлы создаются / записываются контейнером.entrypoint.sh, в который поместите логику инициализации приложения, в т.ч. копирование-создание файлов. Укажите его как ENTRYPOINT контейнера. def loop(n):
for i in range(n):
print('Privet')
much = int(input('how much? '))
loop(much)
more = str(input('Еще? '))
if more == 'yes':
loop(much)range(), а лучше обойтись переменной, которую уменьшать от much к 0:much = int(input('how much? '))
i = much
while i > 0:
print('Privet')
i = i - 1
if i == 0:
more = str(input('Еще? '))
if more == 'yes':
i = much true, а при создании таких же событий скриптом — false. const src = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']; // массив элементов
const key = [2, 1, 0]; // номера битов для перемешивания адреса
const mapIndex = (n, key) => key.reduce((p,c,i) => p | ((1 << c & n) >> c) << i, 0);
const biject = (arr, key) => arr.map((e,i) => arr[mapIndex(i, key)]);
console.log( JSON.stringify(biject(src, key)));
// ["a","e","c","g","b","f","d","h"]
console.log( JSON.stringify(biject(src, [1,2,0])));
// ["a","e","b","f","c","g","d","h"]{
const src = 'abcdefgh'.split('');
const N = src.length; // 8
const Prime = 37; // Prime > N
const mapIndex = (i, N, Prime) => (i * Prime) % N;
//for(let i = 0; i< 8; i++) console.log(i, mapIndex(i, N, Prime))
const shuffle = (str, Prime) => str.split('').map((e,i,a) => a[mapIndex(i, a.length, Prime)]).join('');
console.log( shuffle('abcdefgh', 17));
console.log( shuffle('abcdefgh', 19));
console.log( shuffle('abcdefgh', 23));
console.log( shuffle('abcdefgh', 29));
abcdefgh // не перемешалось
adgbehcf
ahgfedcb
afchebgd