function getJSONP (script_url, callback) {
// Создаём веб-воркер, который импортирует нам скрипт с коллбэком(jsonp)
const worker = new Worker(window.URL.createObjectURL(new Blob([
'let cb=function(val){postMessage(val)};' +
'importScripts(\'' + script_url + '&callback=cb\');'],
{ type: 'text/javascript' }
)))
// Слушаем ответ от воркера
worker.onmessage = (e) => {
worker.terminate()
callback(e.data)
}
// Убиваем воркер если долго нет ответа
setTimeout(() => { worker.terminate() },10000)
}
WITH
cte1 AS ( SELECT t1.ts, t1.val,
t2.ts ts_before, t2.val val_before,
t3.ts ts_after, t3.val val_after
FROM test t1
JOIN test t2 ON t1.ts >= TIMESTAMP(t2.ts, @delta)
JOIN test t3 ON t1.ts <= TIMESTAMP(t3.ts, @delta) ),
cte2 AS ( SELECT *,
ROW_NUMBER() OVER (PARTITION BY ts ORDER BY ts_before DESC) rn_before,
ROW_NUMBER() OVER (PARTITION BY ts ORDER BY ts_after ASC) rn_after
FROM cte1 )
SELECT ts,
val,
ts_before,
val_before,
ts_after,
val_after,
CASE WHEN val_after = val_before
THEN val_before
ELSE val_before + (val_after - val_before) / TIMESTAMPDIFF(SECOND, ts_after, ts_before) * TIMESTAMPDIFF(SECOND, ts, TIMESTAMP(ts_before, @delta))
END val_approximated
FROM cte2
WHERE ts > '2021-01-02'
AND rn_before = 1
AND rn_after = 1
Не имел дела раньше с оконными функциями в MySQL.
Получается, то сравнение
'hello' == '123'
это
parseInt('hello') == parseInt('123')
так?
И [] == {} аналогично parseInt([]) == parseInt({})?
'hello' == 123
приведёт строку к числу ToNumber('hello') == 123
и получится NaN == 123
→ сравниваем два числа и получаем false
.Number
. FROM ubuntu:latest
RUN apt update && apt install -y openssl
RUN mkdir -p /etc/cert
RUN /bin/bash -c "openssl req -x509 \
-newkey rsa:2048 -nodes -sha256 \
-out /etc/cert/localhost.crt \
-keyout /etc/cert/localhost.key \
-subj '/CN=localhost' \
-extensions EXT \
-config <( \
printf '[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth')"
docker build .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM ubuntu:latest
---> 1318b700e415
Step 2/4 : RUN apt update && apt install -y openssl
---> Using cache
---> e608bba6cb59
Step 3/4 : RUN mkdir -p /etc/cert
---> Using cache
---> b89d4c7495a3
Step 4/4 : RUN /bin/bash -c "openssl req -x509 -newkey rsa:2048 -nodes -sha256 -out /etc/cert/localhost.crt -keyout /etc/cert/localhost.key -subj '/CN=localhost' -extensions EXT -config <( printf '[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth')"
---> Running in a4012f6c4893
Generating a RSA private key
................................................+++++
..+++++
writing new private key to '/etc/cert/localhost.key'
-----
Removing intermediate container a4012f6c4893
---> 6ea49c8d9ada
Successfully built 6ea49c8d9ada
<?php
declare(strict_types=1);
class Ellipsis
{
private string $char;
private int $count;
/**
* @param string $char
* @param int $count
*/
public function __construct(string $char, int $count)
{
$this->char = $char;
$this->count = $count;
}
/**
* @return string
*/
public function getChar(): string
{
return $this->char;
}
/**
* @return int
*/
public function getCount(): int
{
return $this->count;
}
}
class Ellipsisist
{
private Ellipsis $ellipsis;
/**
* @param Ellipsis $ellipsis
*/
public function __construct(Ellipsis $ellipsis)
{
$this->ellipsis = $ellipsis;
}
/**
* @param string $value
* @return string
*/
public function __invoke(string $value): string
{
return str_pad($value, mb_strlen($value) + $this->ellipsis->getCount(), $this->ellipsis->getChar(), STR_PAD_LEFT);
}
}
class EllipsisistFactory
{
/**
* @param string $char
* @param int $count
* @return Ellipsisist
*/
public static function make(string $char, int $count): Ellipsisist
{
return new Ellipsisist(new Ellipsis($char, $count));
}
}
$arr = ['foo', 'bar', 'baz'];
$ellipsisiatedArr = array_map(
EllipsisistFactory::make('.', 3),
$arr
);
var_dump($ellipsisiatedArr);