Skip to content

Instantly share code, notes, and snippets.

View maksimr's full-sized avatar
🎯
Focusing

Maksim Ryzhikov maksimr

🎯
Focusing
View GitHub Profile
@maksimr
maksimr / index.ts
Last active December 29, 2023 18:32
tracer
import { Tracer } from './tracer';
import express, { Request, Response } from 'express';
import { ErrorHandler, Handler, wrap } from 'async-middleware';
import { spanProcessor } from './span-processor';
import { SpanOptions } from '@opentelemetry/api';
async function main() {
const tracer = new Tracer({ name: 'example-tracer-node' });
const app = express();
@maksimr
maksimr / index.ts
Last active December 11, 2023 20:14
jsonb index
import pg from 'pg';
async function main() {
const client = new pg.Client({
host: '127.0.0.1',
port: 5432,
user: 'username',
password: 'password',
database: 'test'
});
@maksimr
maksimr / index.ts
Last active November 22, 2023 07:04
batch throttle
type Deferred<T> = {
resolve: (value: T) => void;
reject: (reason?: any) => void;
promise: Promise<T>;
}
// Call function when timeout is reached
// by splitin array of arguments into batches
// and calling function with each batch
// Allow setup maxParallel to limit number of parallel calls
@maksimr
maksimr / index.ts
Last active November 19, 2023 20:33
streamin data from postgresql database to s3
import { CreateBucketCommand, DeleteBucketCommand, DeleteObjectCommand, ListBucketsCommand, ListObjectsCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3';
import pg from 'pg';
import QueryStream from 'pg-query-stream'
import { JsonStreamStringify } from 'json-stream-stringify';
/**
* This is an example of streaming data from a postgresql database to S3
* with low memory usage
*/
async function main() {
@maksimr
maksimr / index.ts
Last active November 20, 2023 18:11
node tracer
import { context, trace } from "@opentelemetry/api";
import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
import { BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { promisify } from "util";
async function main() {
const contextManager = new AsyncLocalStorageContextManager();
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
@maksimr
maksimr / index.mjs
Last active November 20, 2023 18:12
node tracer example
import express from "express";
import bodyParser from "body-parser";
import { trace, context } from "@opentelemetry/api";
import { BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
const provider = new BasicTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
trace.setGlobalTracerProvider(provider);
@maksimr
maksimr / index.ts
Last active October 14, 2023 15:19
node profiler
import inspector from 'inspector';
import { writeFile } from 'fs/promises';
import cron from 'node-cron';
class Profiler {
private session: inspector.Session;
constructor() {
this.session = new inspector.Session();
}
@maksimr
maksimr / daemon.mjs
Last active October 13, 2023 20:55
node background-process
async function register(message) {
await import(message.path);
process.send({ type: 'registred' });
}
process.on('message', (message) => {
switch (message.type) {
case 'register':
return register(message);
case 'ping':
@maksimr
maksimr / index.mjs
Last active September 22, 2023 19:14
typeorm postgres settings
import typeorm from 'typeorm';
async function main() {
const dataSource = new typeorm.DataSource({
type: 'postgres',
host: '127.0.0.1',
username: 'username',
password: 'password',
database: 'test',
extra: /**@type {import('pg').PoolConfig}*/({
@maksimr
maksimr / index.js
Last active June 24, 2023 16:01
typeorm
async function main() {
const pg = require('pg');
const client = new pg.Client({
user: 'admin',
password: 'admin',
database: 'test',
host: '127.0.0.1',
port: 5432
});