const buckets = {voiceAssistants: 410, thermostats: 93, lighting: 1300};
const prices = {voiceAssistants: '9.99$', thermostats: '74.99$', lighting: '49.50$'};
const totals = Object.keys(prices).reduce((acc, c) => acc + buckets[c] * parseFloat(prices[c]), 0);
// всё равно не то что-то: 75419.97
div
from itertools import product
for s in product('ATGC', repeat=3):
print(s)
'''
('A', 'T', 'G')
('A', 'T', 'C')
('A', 'G', 'A')
('A', 'G', 'T')
('A', 'G', 'G')
...
'''
$search = 'test';
$contains = array_keys(array_filter($arr, function($item) use ($search) { return in_array($search, $item['users']); }));
print_r($contains); // ['test1']
$keys = array_keys($arr);
usort($keys, function($a, $b) use ($arr) {
return count($arr[$a]['users']) - count($arr[$b]['users']);
});
$shortest = $keys[0];
let a = [{v: 1}, {v: 2}, {v: 3}];
for (let obj of a) {
obj.v += 1;
}
a // [{"v":2},{"v":3},{"v":4}]
const el = document.querySelector('span.qodef-e-price-value.qodef-e--value');
el.removeChild(el.childNodes[0]);
scale
использовать похожий фильр scale2ref – он позволяет брать размеры одного входа, для масштабирования другого.ffmpeg -i "$file" -i "$wm" \
-filter_complex "[1][0:v]scale2ref=w='min(347, iw * 9/10)':h=ow/main_dar[logo][vid];
[vid][logo]overlay=x=(W-w) / 2:y=H - 2 * h[v]" \
-map [v]:v -map 0:a \
-y "$file-out.mp4"
ctx.translate(x, y)
и поворачивать на угол ctx.rotate(a)
.if(gte(t,9)*lte(t,29)
if(gte(t,20)*lte(t,25)
ffmpeg \
-y \
-i "$file" \
-vcodec libx264 \
-movflags +faststart \
-threads 0 \
-r 25 \
-g 50 \
-crf 25 \
-me_method hex \
-trellis 0 \
-bf 8 \
-acodec aac \
-strict \
-2 \
-ar 44100 \
-ab 128k \
-f mp4 \
-vf "movie=watermark.png [wm];[in][wm] overlay='if(gte(t,9)*lte(t,29), W-((W+w)/20)*mod(t-9,20), -w-1000)':'0' [out]" \
"out/$file"
const img = document.querySelector("img");
const canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
canvas.toBlob((blob) => {
blob.arrayBuffer()
.then((buf) => {
// тут как-то отправить эту буффонаду через WebSocket
})
.catch(console.error)
;
}, "image/png");