Skip to content

Instantly share code, notes, and snippets.

View utlime's full-sized avatar

Alexander Vysotsky utlime

View GitHub Profile
/**
* @param {number} year
* @return {Date}
*/
function getBlackFridayDate(year) {
const date = new Date(year, 10, 1); // first day of November
const day = date.getDay();
if (day < 4) {
date.setDate(date.getDate() + (4 - day)); // first Thusday of November
} else if (day > 4) {
@utlime
utlime / index.js
Created July 19, 2023 15:09
sort battery by capacity
function parseData(data) {
return data
.split("\n")
.filter(Boolean)
.map(function (row) { return Number.parseInt(row); })
.map(function (capacity, index) { return ({ id: index + 1, capacity: capacity }); });
}
function getTotalCapacity(batteries) {
return batteries
.map(function (_a) {
@utlime
utlime / helper.js
Last active January 21, 2020 12:01
SP helper
export async function isNginxRouteSPA(route) {
const url = new URL(route, window.location.origin);
url.searchParams.set('_timestamp', Date.now().toString(16));
const response = (await fetch(url.toString(), { "method": "GET", "credentials": "include" }));
return response.headers.get('x-app-type') === 'SPA';
}
export function isCurrentPageSPA() {
return Array.from(document.getElementsByTagName('meta'))
.some(el => el.name === 'version');
}
@utlime
utlime / longman_communication_3000.js
Created July 26, 2018 07:18
Longman Communication 3000 json
const fs = require('fs');
const readline = require('readline');
const dictioary = [];
const classes = ['indefinite article', 'determiner', 'v', 'n', 'adj', 'prep', 'adv', 'conj', 'predeterminer', 'pron', 'interjection', 'auxiliary', 'modal', 'number', 'definite article'];
const frequencies = ['S1', 'S2', 'S3', 'W1', 'W2', 'W3'];
const rl = readline.createInterface({
input: fs.createReadStream('longman_communication_3000.txt'),
crlfDelay: Infinity,
@utlime
utlime / text-mask-cadastral-number.js
Last active November 21, 2024 13:39
Маска ввода для кадастрового номера (text-mask/cadastral-number)
TextMask.maskInput({
inputElement: document.querySelector("input[name = cadastral_number]"),
mask: function(rawValue) {
var mask = [/\d/, /\d/, ":", /\d/, /\d/, ":"];
var chunks = rawValue.replace(/\_/g, "").split(":");
var i;
for (i = 0; (!chunks[2] || i < chunks[2].length) && i < 7; i++) {
mask.push(/\d/);
}
@utlime
utlime / array_intersect_key_recursive.php
Created November 8, 2017 09:33
php array_intersect_key_recursive
<?php
function array_intersect_key_recursive(array $array, array ...$arrays)
{
$array = array_intersect_key($array, ...$arrays);
foreach (array_keys($array) as $key) {
if (is_array($array[$key])) {
$array[$key] = array_intersect_key_recursive(
$array[$key],
...array_map(