Skip to content

Instantly share code, notes, and snippets.

View kugimiya's full-sized avatar
:shipit:
Teach me how to use GH notifications.

Andrew Goncharov kugimiya

:shipit:
Teach me how to use GH notifications.
View GitHub Profile
import { Canvas, CanvasKit as CKType, CanvasKitInit } from 'canvaskit-wasm';
import { makeNoise2D } from 'fast-simplex-noise';
import hexRgb from 'hex-rgb';
((window as unknown as { CanvasKitInit: typeof CanvasKitInit }).CanvasKitInit as typeof CanvasKitInit)({ locateFile: (file) => `https://unpkg.com/canvaskit-wasm@0.19.0/bin/${file}` }).then(main);
function randomInteger(min: number, max: number) {
let rand = min - 0.5 + Math.random() * (max - min + 1);
return Math.round(rand);
}
import { Canvas, CanvasKit as CKType, CanvasKitInit } from 'canvaskit-wasm';
import { makeNoise2D } from 'fast-simplex-noise';
((window as unknown as { CanvasKitInit: typeof CanvasKitInit }).CanvasKitInit as typeof CanvasKitInit)({ locateFile: (file) => `https://unpkg.com/canvaskit-wasm@0.19.0/bin/${file}` }).then(main);
function randomInteger(min: number, max: number) {
let rand = min - 0.5 + Math.random() * (max - min + 1);
return Math.round(rand);
}
import { Canvas, CanvasKit as CKType, CanvasKitInit } from 'canvaskit-wasm';
((window as unknown as { CanvasKitInit: typeof CanvasKitInit }).CanvasKitInit as typeof CanvasKitInit)({ locateFile: (file) => `https://unpkg.com/canvaskit-wasm@0.19.0/bin/${file}` }).then(main);
function main(CanvasKit: CKType): void {
const [ width, height ] = [640 * 2, 640 * 2];
const surface = CanvasKit.MakeCanvasSurface('root');
function grid(canvas: Canvas): void {
const [v, h] = [128 / 4, 128 / 4];
import { Canvas, CanvasKit as CKType, CanvasKitInit } from 'canvaskit-wasm';
import './styles/style.css';
((window as unknown as { CanvasKitInit: typeof CanvasKitInit }).CanvasKitInit as typeof CanvasKitInit)({ locateFile: (file) => `https://unpkg.com/canvaskit-wasm@0.19.0/bin/${file}` }).then(main);
function main(CanvasKit: CKType): void {
const [ width, height ] = [2000, 1400];
const nodeSize = 100;
const nodes: Array<Array<[number, number, number]>> = [];
const surface = CanvasKit.MakeCanvasSurface('root');
// Утилитарный тип, чтобы указать тип аргумента как конструктор класса, а не как инстанс класса
export interface Newable<T = any> extends Function {
new(...args: any[]): T;
}
// Это структура с бека допустим такая прилетает
type Product = {
id: string;
price2: number;
price3: number;
@kugimiya
kugimiya / fib.js
Created August 17, 2021 03:04
Calc large fib with negative N
function recursivePow(x, n, I, mult) {
if (n == 0) {
return I;
}
if (n == 1) {
return x;
}
let y = recursivePow(x, Math.floor(n / 2), I, mult);
@kugimiya
kugimiya / gist:d748ad5ffbca7b378bd90895995f2960
Last active April 16, 2021 15:07
counts freenavalny dump
const csv = require('csv-parser')
const fs = require('fs')
const results = [];
const dates = {};
fs.createReadStream('free_navalny.csv')
.pipe(csv({ separator: ';' }))
.on('data', (data) => {
if (!Boolean(data.ACCEPT_TIME)) {
return;
@kugimiya
kugimiya / generate_webp.js
Created December 10, 2020 17:38
Snippet for generating webp version of images in directory
const { readdirSync } = require('fs');
const sharp = require('sharp');
const path = './static/omages/services-page/';
const uploadsList = readdirSync(path).filter(i => ['jpg', 'jpeg', 'png'].some(fmt => i.includes(fmt)));
const shouldCompress = uploadsList.filter(((value, index, obj) => {
const should = !obj.find(i => i.includes(`${value}_compressed.webp`));
return should;
@kugimiya
kugimiya / ApiRequest.ts
Created September 18, 2020 12:30
Token refreshing + some dependencies
import axios, { AxiosError, AxiosInstance, AxiosResponse } from 'axios';
import { API_BASENAME, ENDPOINTS } from '../constants/api';
import interceptorInjector from './interceptor';
import { AuthData, AuthStoreInstance } from '../stores/auth';
import { LOCAL_STORAGE } from '../constants/hardcode';
type RequestConfig = {
endpoint: string;
method: 'POST' | 'GET' | 'PUT' | 'PATCH' | 'DELETE';
data: Record<string, string | number | null>;
@kugimiya
kugimiya / apirequest.ts
Created September 11, 2020 16:02
example of getting refresh token
import axios from 'axios';
class ApiRequest {
constructor() {
axios.interceptors.response.use((res) => {
console.log({ status: res.status }, res);
return res;
}, (err) => {
const { config, response } = err;
const { status } = response;