Skip to content

Instantly share code, notes, and snippets.

#include <arpa/inet.h>
#include <net/if.h>
#include <ifaddrs.h>
#include <netdb.h>
#include <stdio.h>
int main(int argc, char* argv[], char* envp[]) {
struct ifaddrs *ifa=NULL,*ifEntry=NULL;
void *addPtr = NULL;
int rc = 0;
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
struct addrinfo hints, *res, *p;
@WoZ
WoZ / test_message_loss_1.js
Last active June 21, 2019 15:12
Simplified example of a data loss
const {EventEmitter} = require('events');
const ee = new EventEmitter();
function waitForMessage() {
return new Promise(resolve => {
ee.once('message', msg => {
console.log('waitForMessage. Message is received', msg);
resolve();
console.log('waitForMessage. Ooops, resolve will run in microtask. not immediately');
@WoZ
WoZ / test_message_loss_2.js
Created June 21, 2019 15:18
Advanced example of a data loss
const cluster = require('cluster');
async function waitForMessage(child) {
return new Promise(resolve => {
child.once('message', msg => {
console.log('Master. waitForMessage. Message is received', msg);
return resolve();
});
});
}
@WoZ
WoZ / promise_executor_error_handling.js
Last active July 1, 2019 07:04
promise_executor_error_handling.js
setTimeout(() => { process.exit(); }, 200);
function f() {
try {
return new Promise((resolve, reject) => {
throw new Error('Error: Threw right in the executor');
});
} catch (err) {
console.log('Error caught in f()', err);
}
@WoZ
WoZ / event_emitter_setImmediate_example.js
Created July 1, 2019 07:44
event_emitter_setImmediate_example.js
const {EventEmitter} = require('events');
const ee = new EventEmitter();
function log(...args) {
console.log(Date.now() / 1000, ...args);
}
function blockingOperation() {
log('-- Blocking operation has started');
@WoZ
WoZ / README.md
Last active January 6, 2020 10:52
Strace reads and writes analyzer

Usage: node strace_log_analyzer.js strace.log /tmp

This scripts parses input file that must contain strace log from a single thread. Then script calculates:

  • execution time of read/write syscall for each file descriptor and summarize execution time for each 1 sec period,
  • calulates amount of read/write syscalls for each file descriptor

strace log must be collcted with -t -T -f options.

@WoZ
WoZ / keepalive_test.js
Created February 23, 2020 14:52
KeepAlive test stand
const url = process.argv[2];
const concurrency = process.argv[3] === undefined ? 1 : parseInt(process.argv[3]);
const requestInterval = process.argv[4] === undefined ? 10000 : parseInt(process.argv[4]);
if (url === undefined || isNaN(concurrency) || isNaN(requestInterval)) {
console.log('Usage: node keepalive_test.js http://google.com/ 10 10000');
console.log('Where: 2nd - URL');
console.log(' 3rd - amount of concurrent connections (default is 1)');
console.log(' 4rd - interval between sequential requests');
process.exit();
@WoZ
WoZ / no_keepalive_test.js
Created February 26, 2020 06:28
No KeepAlive test stand
const url = process.argv[2];
const concurrency = process.argv[3] === undefined ? 1 : parseInt(process.argv[3]);
const requestInterval = process.argv[4] === undefined ? 10000 : parseInt(process.argv[4]);
if (url === undefined || isNaN(concurrency) || isNaN(requestInterval)) {
console.log('Usage: node no_keepalive_test.js http://google.com/ 10 10000');
console.log('Where: 2nd - URL');
console.log(' 3rd - amount of concurrent connections (default is 1)');
console.log(' 4rd - interval between sequential requests');
process.exit();
@WoZ
WoZ / ffprobe_analyzer.js
Last active November 9, 2020 07:45
Simple script to parse ffprobe data with custom real-time markers
const readline = require('readline');
const fs = require('fs');
const argv = process.argv.slice(2);
if (argv.length !== 1) {
console.error('Invalid list of arguments');
process.exit(1);
}
const filename = argv[0];