Skip to content

Instantly share code, notes, and snippets.

View Alexzanderk's full-sized avatar
:octocat:

Alexander Kotsarev Alexzanderk

:octocat:
View GitHub Profile
@Alexzanderk
Alexzanderk / arrayAutofocus.tsx
Created October 30, 2020 12:48
React autoFocus useRef
const useFocus = (count: number) => {
const refsArr: Array<React.RefObject<HTMLInputElement>> = [];
for (let index = 0; index < count; index++) {
const htmlElRef: React.RefObject<HTMLInputElement> = useRef(null);
refsArr[index] = htmlElRef;
}
const setFocus = (index: number): void => {
refsArr[index].current && refsArr[index].current.focus();
@Alexzanderk
Alexzanderk / launch.json
Created July 28, 2020 20:26 — forked from joelharkes/launch.json
Debug ts-mocha in vs code (visual studio code)
{
"version": "0.2.0",
"configurations": [
{
"name": "Run ts-mocha File",
"type": "node",
"request": "launch",
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/ts-mocha",
"runtimeArgs": [
"${file}"
@Alexzanderk
Alexzanderk / app.get.js
Last active June 6, 2021 14:47 — forked from BetterProgramming/app.get.js
Video online
app.get('/video', function(req, res) {
const path = 'assets/sample.mp4'
const stat = fs.statSync(path)
const fileSize = stat.size
const range = req.headers.range
if (range) {
const parts = range.replace(/bytes=/, "").split("-")
const start = parseInt(parts[0], 10)
const end = parts[1]
? parseInt(parts[1], 10)
@Alexzanderk
Alexzanderk / typescriptClusterNodeJs.ts
Created July 12, 2020 19:00
typescript cluster NodeJs
import cluster from "cluster";
import { cpus } from "os";
const NUM_WORKERS = cpus().length;
const PATH_TO_SERVER_APP = __dirname + '/app.ts';
cluster.setupMaster({
execArgv: ['-r', 'tsconfig-paths/register', '-r', 'ts-node/register'],
exec: PATH_TO_SERVER_APP
} as cluster.ClusterSettings)
// Nodejs encryption with GCM
// Does not work with nodejs v0.10.31
// Part of https://github.com/chris-rock/node-crypto-examples
var crypto = require('crypto'),
algorithm = 'aes-256-gcm',
password = '3zTvzr3p67VC61jmV54rIYu1545x4TlY',
// do not use a global iv for production,
// generate a new one for each encryption
iv = '60iP0h6vJoEa'
@Alexzanderk
Alexzanderk / launch.json
Created June 12, 2020 12:08
Typescript Nodejs debugger launch
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
var net = require('net');
var client = new net.Socket();
client.connect(1337, '127.0.0.1', function() {
console.log('Connected');
client.write('Hello, server! Love, Client.');
});
client.on('data', function(data) {
console.log('Received: ' + data);
@Alexzanderk
Alexzanderk / getAllRemoteBranchesToLocal.sh
Created April 14, 2020 06:55
Get all remote branches to local
#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
done
@Alexzanderk
Alexzanderk / streamByLine.js
Created April 1, 2020 09:46
readStream line by line
var fs = require('fs');
var readStream = fs.createReadStream('bigfilelogs.txt');
var stream = require('stream');
var xtream = new stream.Transform( { objectMode: true } );
xtream._transform = function(chunk, encoding, done) {
var strData = chunk.toString();
if (this._invalidLine) {
@Alexzanderk
Alexzanderk / getMetric.js
Last active March 22, 2020 06:15
get metric
// Log incoming traffic
var metricStore = new Map();
/**
*
* @param {string} key
* @returns {void}
*/
const getCount = (key) => metricStore.has(key) ? metricStore.get(key) + 1 : 1;