connections
. По поступлению лайка инкрементировать поле.chance
– новое придуманное свойство объекта request
, назначаемое ему обработчиком. chance
, записав в него случайное число от 0 до 1.toster
. Тогда код выглядел бы так (замена в двух местах), но функционировал точно так же; возвращал тот же самый формат ответа:const express = require('express')
const app = express()
app.use((request, response, next) => { //Промежуточный обработчик
console.log(request.headers)
next()
})
app.use((request, response, next) => {
request.toster = Math.random()
next()
})
app.get('/', (request, response) => {
response.json({
chance: request.toster
})
})
app.listen(3000)
.headers
— свойство объекта запроса, наследованное от нативного Node'овского объекта запроса, см. http.IncomingMessage.headers. Содержит все HTTP-заголовки принятого HTTP запроса. /start
бот не может ничего отправить. Но посетителю бота видно название бота и его описание – это заполняется через BotFather – см. /setdescription div.wices:empty {
display: none;
}
div
не-пустым в понимании псевдокласса. четыре 6-битовых дают три 8-битных:
00000011 11112222 22333333
(()=>{
// из четырёх чисел 0..63 получить строку цвета типа "#abcdef"
const makeColor = (n1, n2, n3, n4) => {
const r = (n1 & 63) << 2 | (n2 & 48) >> 4;
const g = (n2 & 15) << 4 | (n3 & 60) >> 2;
const b = (n3 & 3) << 6 | n4 & 63;
return '#' + [r,g,b].map(n => n.toString(16).padStart(2,'0')).join('');
}
// из массива чисел от 0 до 63, длиной кратной 4, получить массив цветов
const arrToColor = arr => {
const len = arr.length;
if (len % 4) throw "Длина массива не кратна 4";
const result = [];
for (let i=0; i<len; i+=4)
result.push(makeColor(...arr.slice(i, i+4)));
return result;
}
// тест
const test = () => arrToColor(
[...new Array(64)].map(()=>Math.floor(64 * Math.random()))
);
return test();
})()
/*
#941510,#4b31ca,#eec8c9,#4c9202,
#336a01,#95b7ec,#e73d44,#4069e6,
#4d1700,#8efa27,#8e0333,#f089af,
#67b561,#fc8fc8,#48503c,#f308a9
*/
fps=1/16
берет 1 кадр из 16 секунд.fps
, чтобы получилось 80 кадров: fps=80/длина_видео_в_секундах
thumbnail
– он выбирает наиболее значимый кадр и серии кадров. Работает чуть медленнее и требует больше памяти, но выбранные кадры получаются лучше - без размытого движения и т.п. Тут тоже нужно знать длину видео и частоту кадров, т.е. общее число кадров в видео. И разделить его на 80. Например, видео длиной 15 минут с частотой кадров 30 даёт 30 * 15 * 60 = 27000 кадров. Разделить на 80 получится 337.5 кадров. Т.е. нужно бы использовать вместо fps=..
фильтр thumbnail=338
x = a * cos(t)
y = b * sin(t)
0 ≤ t ≤ 2π
где a, b − полуоси эллипса, t − параметр.
t
: (sin^2 + cos^2) = 1
a
как функцию b
при известных (x, y).a = f(b)
<section>
<article>
<a href="#">1 ссылка</a>
</article>
</section>
const el = document.querySelector('a'); // находит первый подходящий элемент
const text = el.innerText;
const digitText = text.substring(0,1); // тут будет текст единичка
const digitNumber = +digitText; // тут уже число 1
span
так же:const el = document.querySelector('span'); // найдет самый первый элемент span в документе
<span>не нужный</span>
<div id="theone">
<span>300 спартанцев</span>
</div>
const span = div.querySelector('#theone span');