var hex = "354d413043b4b440e1510b00";
console.log(hex); // 354d413043b4b440e1510b00
var not_hex = (Buffer.from(hex, "hex").toString("binary"))
console.log(not_hex); // 5MA0C´´@áQ♂
var hex_again = Buffer.from(not_hex, 'binary').toString("hex");
console.log(hex_again); // 354d413043b4b440e1510b00
console.log(hex === hex_again); // true
The new Compose V2, which supports the compose command as part of the Docker CLI, is now available.
Compose V2 integrates compose functions into the Docker platform, continuing to support most of the previous docker-compose features and flags. You can run Compose V2 by replacing the hyphen (-) with a space, using docker compose, instead of docker-compose.
Route::get('/search/{search}', function ($search) {
return $search;
})->where('search', '.*');
setTimeout()
— сначала зарядится таймер, отработает: отресолвит промис, и после этого уже сработает финальный console.log()
async function monitor() {
await new Promise(resolve => {
setTimeout(() => {
console.log("Прошла секунда");
resolve();
}, 1000);
});
console.log("После Вас!")
}
monitor();
Set
удобен, например, когда нужно оставить из набора данных только уникальные.const data = [ 1, 2, 2, 3, 3, 3 ];
const unique = [...new Set(data)];
unique // [ 1, 2, 3 ]
Map
хорош тем, что ключами в нём могут быть и объекты. Например, HTML-элементы, для которых захочется хранить какие-то данные. И Map запоминает порядок добавления элементов, что может быть полезно при переборе. ffmpeg \
-ss 15 \ # пропустить 15 секунд от начала
-i Source.mp4 \ # имя исходного файла
-t 30 \ # продолжительность 30 сек.
-c copy \ # кодек "копия" - не перекодировать
Result.mp4 # что получится - в этот файл
только удалите все комментарии – после слешей должен сразу быть перенос строки. Этот вариант, пожалуй, самый быстрый из возможных. await Promise.all([
'https://learn.javascript.ru/article/promise-chaining/one.js',
'https://learn.javascript.ru/article/promise-chaining/two.js',
'https://learn.javascript.ru/article/promise-chaining/three.js',
].map(loadScript));
one();
two();
three();
Вопрос если разница в таких записях?
resolve(script)
передаст дальше по цепочке этот script
(который никому не нужен, похоже).script.onload = resolve
передаст по цепочке объект события (тоже всем по барабану)почему такой ее вызов дает ошибку script.onload = resolve(script);
потому, что нужна функция, которую вызовут позже, а не мгновенный результат её выполнения. setInterval()
первым аргументом надо передать функцию (он сам вызовет её потом),"строку"
или число 42
.(param) => () => {
console.log("Выхлоп!" + param);
}
Две стрелочки, значит, тут две функции. Одна вокруг второй. Первая, та, что снаружи, принимает аргументом param
, и возвращает вторую функцию () => { console.log("Выхлоп!" + param); }
Причём вернувшаяся функция «запомнила» значение param
внешней обёртки и будет его использовать. Это обёртывание называется «Замыкание» или "closure".function(){ return function() {}; }
((param) => () => console.log(param))(6)
– этот вызов внешней с аргументом 6
даст результатом внутреннюю функцию, которая запомнила значение param
. И мы имеем на руках внутреннюю функцию.((param) => () => console.log(param))(6)()
setInterval()
первым аргументом надо передать не конечный результат, а функцию — её вызовут через некоторое время, не сразу. Тут передают внутреннюю функцию. Поэтому скобки всего одни: с одними скобками получаем внутреннюю функцию.