Skip to content

Instantly share code, notes, and snippets.

@erratir
erratir / utils.js
Last active April 27, 2024 03:35
convert dd.mm.yyyy to Date
/**
* 'dd.mm.yyyy' to Date
* @param {string} dateStr
* @returns {Date}
*/
const toDate = (dateStr) => {
const [day, month, year] = dateStr.split('.').map(el => parseInt(el))
return new Date(year, month - 1, day)
}
@erratir
erratir / startJobAt.js
Last active April 27, 2024 03:35
start job at time
function startJobAt(hh, mm, code) {
var interval = 0;
var today = new Date();
var todayHH = today.getHours();
var todayMM = today.getMinutes();
if ((todayHH > hh) || (todayHH == hh && todayMM > mm)) {
var midnight = new Date();
midnight.setHours(24,0,0,0);
interval = midnight.getTime() - today.getTime() +
(hh * 60 * 60 * 1000) + (mm * 60 * 1000);
@erratir
erratir / Dockerfile.node-gyp
Created August 13, 2021 14:42 — forked from takuto-h/Dockerfile.node-gyp
Use node-gyp with node:*-slim
FROM node:10.15.1-slim
COPY ./package.json ./yarn.lock /app/
# Install dependencies for node-gyp
# https://github.com/nodejs/node-gyp#on-unix
RUN buildDeps='g++ make python' \
&& apt-get update \
&& apt-get install -y --no-install-recommends $buildDeps \
&& cd /app \
@erratir
erratir / utils.js
Created February 3, 2023 05:42
Поиск ближайшего значения в массиве
/**
* Поиск ближайшего значения в массиве
* @param array
* @param target
* @returns {*}
*/
const closest = (array, target) => {
return array.reduce((prev, curr) => {
return (Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev);
})
@mignonstyle
mignonstyle / markdown-cheatsheet.md
Last active April 27, 2024 03:32
Markdown記法 チートシート

Block Elements ## Headers 見出し 先頭に#をレベルの数だけ記述します。 ```

見出し1

見出し2

見出し3

見出し4

見出し5
見出し6
## 見出し2
### 見出し3
#### 見出し4
##### 見出し5
###### 見出し6 ## Block 段落 空白行を挟むことで段落となります。 ```
段落1
(空行)
段落2
``` 段落1 段落2 ## Br 改行 改行の前に半角スペース` `を2つ記述します。 ```
hoge
fuga(スペース2つ)
piyo
``` hoge
fuga piyo ## Blockquotes 引用 先頭に`&gt;`を記述します。ネストは`&gt;`を多重に記述します。 ```
&gt; 引用 &gt; 引用
&gt;&gt; 多重引用
``` &gt; 引用 &gt; 引用
&gt;&gt; 多重引用 ## Code コード `` `バッククオート` `` 3つ、あるいはダッシュ`~`3つで囲みます。 ```
print 'hoge'
``` ```
print 'hoge'
``` ### インラインコード `` `バッククオート` `` で単語を囲むとインラインコードになります。 ```
これは `インラインコード`です。
``` これは `インラインコード`です。 ## pre 整形済みテキスト 半角スペース4個もしくはタブで、コードブロックをpre表示できます ``` class Hoge def hoge print 'hoge' end end
``` class Hoge def hoge print 'hoge' end end ## Hr 水平線 アンダースコア`_` 、アスタリスク`*`、ハイフン`-`などを3つ以上連続して記述します。 ```
hoge
***
hoge
___
hoge
---
``` hoge
***
hoge
___
hoge
--- # Lists ## Ul 箇条書きリスト ハイフン`-`、プラス`+`、アスタリスク`*`のいずれかを先頭に記
@erratir
erratir / scratch_30.js
Created August 31, 2023 05:31
Функция ограничивает максимальное время выполнение переданного промиса
/**
* Функция ограничивает максимальное время выполнение переданного промиса
* @param {Function} fn
* @param {number} t ограничение по времени
* @return {Function}
*/
const timeLimit = function(fn, t) {
return async function(...args) {
const timeLimitExceeded = new Promise((resolve, reject) => setTimeout(() => reject(`Time Limit Exceeded at t=${t}ms`), t))
return await Promise.race([timeLimitExceeded, fn(...args)])
@erratir
erratir / readme.md
Created August 27, 2019 14:28
Шпаргалка по Markdown
@erratir
erratir / resize.js
Created September 4, 2019 14:34
Вписывает изображение в рамку
/**
* Вписывает изображение в рамку
* @param {object} frame Размеры рамки
* @param {object} image Размеры изображения
* @return {{width: number, height: number}}
*/
const resize = (frame, image) => {
const ratioWidth = 1 / (image.width / frame.width);
const ratioHeights = 1 / (image.height / frame.height);