Skip to content

Instantly share code, notes, and snippets.

View tinovyatkin's full-sized avatar
💭
I may be slow to respond.

Konstantin Vyatkin tinovyatkin

💭
I may be slow to respond.
View GitHub Profile
@tinovyatkin
tinovyatkin / loadFont.js
Last active November 17, 2022 23:09
My function to async load web fonts (real WOFF and WOFF2, not base64 behemots), cache them to localStorage and reuse on next visits
/**
* This function load font from web, stores it in localStorage and reuses on next page loads
* Different to everything I found on the internet due to following facts
* 1. Checks if the font is installed in the system and spend no time if it is
* 2. Loads actual WOFF or WOFF2 fonts (if supported) and not bit base64 encoded version - so it faster
* 3. Uses fetch API and FontFace API if available - it's cool!
* 4. Return promises and uses jQuery for cases where native promises probably not available
*
* @param fontName (Field for font-face)
* @param fontUrl (full URL but without .woff nor .woff2 extensions - format will be selected automatically)
@tinovyatkin
tinovyatkin / promisify-readline-question.js
Created October 29, 2017 15:58
`util.promisify` for `readline.question`
'use strict';
// Promisifies readline.question function using node native `util.promisify`
// readline.question takes one callback that returns the answer, so it need custom promisifying
const readline = require('readline');
const { promisify } = require('util');
readline.Interface.prototype.question[promisify.custom] = function(prompt) {
return new Promise(resolve =>
@tinovyatkin
tinovyatkin / rx-server.js
Created September 21, 2019 16:42 — forked from Gooseus/rx-server.js
RxJS HTTP Server
// Rx HTTP Server
// first attempt at creating a minimal reactive nodejs HTTP server
//
// has:
// * url/querystring parsing
// * body parsing
// * some kind of routing
// * some kind of error handling
// * minimalist request logging
//
@tinovyatkin
tinovyatkin / action.yml
Created September 27, 2019 08:54
Install Node.JS version pinned at `engines` in `package.json` on GitHub Actions Workflow
on:
push:
branches:
- master
jobs:
test:
runs-on: ubuntu-latest
steps:
@tinovyatkin
tinovyatkin / passkit-webservice-swagger.json
Created December 9, 2019 12:40 — forked from ckrack/passkit-webservice-swagger.json
Passkit Webservice Swagger for Apple Wallet Webservice
{
"swagger": "2.0",
"info": {
"title": "Passkit Web Service",
"contact": {
"name": "Clemens Krack",
"email": "[email protected]"
},
"version": "1.0.0"
},
@tinovyatkin
tinovyatkin / fibonacci-generator.js
Created June 26, 2020 02:13 — forked from jfairbank/fibonacci-generator.js
Fibonacci ES6 Generator
function *fibonacci(n) {
const infinite = !n && n !== 0;
let current = 0;
let next = 1;
while (infinite || n--) {
yield current;
[current, next] = [next, current + next];
}
}
@tinovyatkin
tinovyatkin / keybase.md
Last active July 10, 2020 16:03
Public Key

Keybase proof

I hereby claim:

  • I am tinovyatkin on github.
  • I am tinovyatkin (https://keybase.io/tinovyatkin) on keybase.
  • I have a public key ASDz9s6IUsFRXMeL_pu1O83qQurHxM0mI8vUt2ahCIpZlQo

To claim this, I am signing this object:

const headers = `
Date: Sun, 17 Aug 2014 16:24:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Set-Cookie: Foo2
set-Cookie: bar
set-cookie: bong
`;
const s = headers.trim().split(/\s*\n\s*/g).map((v) => {
const [header, value] = v.split(/:\s*/, 2);
@-moz-document domain("github.com") {
@import url('https://fonts.googleapis.com/css2?family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;1,100;1,200;1,300;1,400;1,500;1,600&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;1,100;1,200;1,300;1,400;1,500;1,600&display=swap');
body {
font-family: "Ubuntu" !important;
font-variant-ligatures: normal;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: subpixel-antialiased;

Keybase proof

I hereby claim:

  • I am tinovyatkin on github.
  • I am tinovyatkin (https://keybase.io/tinovyatkin) on keybase.
  • I have a public key ASB7vAUOzsyh3hE4oZr2HhnRNLmP9qEdaFb-pqDXAkdstAo

To claim this, I am signing this object: