Автор этого добра заявляет, что это абсолютно нормальная практика - выносить каждые пару строк в отдельную функцию.
Нормальная ли?
screen
, уже не боясь оставить/отключиться, вместо scp
, может, удобнее воспользоваться rsync
— он зипует, что может ускорить передачу:rsync -avz /var/www/projectOldName user@newserver.example.com://var/www/projectNewName
Ctrl + A
, D
— чтобы покинуть работающий вирт. терминал и спокойно отключиться от SSH. Позже, когда снова зайдете, командой screen -r
снова подключитесь к оставленной сессии. ^
- это операция XOR. XOR вернёт единицу в том случае, если один из операндов (битов) 1 а другой 0. Таким образом, к примеру, 3 ^ 5
вернет 6 потому, что 0b011 ^ 0b101
(для простоты, биты будем считать слева направо):0 ^ 1 = 1
.1 ^ 0 = 1
.1 ^ 1 = 0
.0b110 = 6
.undefined ^ N
или 0 ^ N
, что вернёт нам само число. const getDuplicatesIndex = (arr, key = n => n) =>
Object.fromEntries(Object
.entries(arr.reduce((acc, n, i) => ((acc[key(n)] ??= []).push(i), acc), {}))
.filter(n => n[1].length > 1)
);
Map
:const getDuplicatesIndex = (arr, key = n => n) =>
new Map(Array
.from(arr.reduce((acc, n, i) => {
const k = key(n);
acc.set(k, acc.get(k) ?? []).get(k).push(i);
return acc;
}, new Map))
.filter(n => ~-n[1].length)
);
dd
выводит отчёт не в stdout, а в stderr. Так что нужно сначала перенаправить stderr в stdout, а потом передавать его в tee
:# башизм
dd if=/dev/zero of=/tmp/zerofile bs=100M count=5 |& tee ku.log &
# должно работать везде
dd if=/dev/zero of=/tmp/zerofile bs=100M count=5 2>&1 | tee ku.log &
Несмотря на долгий срок работы в проекте, нахожу новые интересные задачи, которые не позволяют заскучать.
function test() {
const a = [1];
return a[0] += 3; // что вы вернет?
}
a
?// с запятой
array.reduce((a,b,i)=>function(){
const sum = a[i%2] + b; // вычисление
a[i%2] = sum; // присваивание
return a; // возврат массива
}, [0,0]);
// без запятой
array.reduce((a,b,i)=>function(){
const sum = a[i%2] + b; // вычисление
a[i%2] = sum; // присваивание
return sum; // возврат результат суммирования
// и на следующей итерации будет ошибка из-за попытки обратиться к числу как к массиву.
}, [0,0]);
React.KeyboardEvent
- это синтетическое событие, которое генерируется в React. KeyboardEvent
- это оригинальное событие, которое генерируется в браузере.KeyboardEvent
лежит в event.nativeEvent
у React.KeyboardEvent
.const closeByESC = (event: KeyboardEvent | React.KeyboardEvent) => {
document.addEventListener('keydown', closeByESC);