Skip to content

Instantly share code, notes, and snippets.

View hassansin's full-sized avatar
👋
Working from home

Hassansin hassansin

👋
Working from home
View GitHub Profile
/*Use Fiddler Proxy*/
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
/*Use Proxy*/
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, "IP:PORT");
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "username:password");
@hassansin
hassansin / commands.sh
Last active May 23, 2018 11:41
Web Server Performance Comparison #sysbench #benchmark
# Ref: http://wiki.mikejung.biz/Sysbench
# CPU
sysbench --test=cpu --cpu-max-prime=20000 run
sysbench --test=cpu --cpu-max-prime=20000 run --num-threads=4
#FILE IO
sysbench --test=fileio --file-total-size=4G prepare
sysbench --test=fileio --file-total-size=4G --file-test-mode=rndrw --max-time=300 --max-requests=0 --file-extra-flags=direct run
sysbench --test=fileio --file-total-size=4G cleanup
@hassansin
hassansin / aspell-add-words.sh
Last active February 8, 2019 11:47
aspell add words to dictionary
touch ~/aspell.personal.txt
vi ~/aspell.personal.txt # add words per line
aspell --lang=en create master /tmp/en-personal.pws < ~/aspell.personal.txt
cp /tmp/en-personal.pws /usr/lib/aspell
vim /usr/lib/aspell/en_US.multi # add the line: 'add en-personal.pws'
@hassansin
hassansin / .bashrc
Last active August 18, 2019 08:09
dotfiles
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
@hassansin
hassansin / sync-readable-stream.js
Last active December 25, 2019 02:08
Node.js Synchronous Readable Stream
/*
Creating Synchronous Readable Stream in NodeJS
--------------------------------------------------
When data is pushed synchronously to internal buffer, you'll get the synchronous
behaviour of the stream. This would block the rest of the code from being executed in
the next event loop iteration.
In the example setImmediate should be called immediatley in next event loop iteration.
But since the stream is synchronously reading data, it can't execute other callbacks.
@hassansin
hassansin / commands.js
Last active September 3, 2020 16:35
MongoDB commands
db.collection.createIndex( { orderDate: 1, zipcode: -1 }, {background: true} )
db.events.ensureIndex( { "timestampISO": 1 }, { expireAfterSeconds: 120*24*60*60 } ) // <3.0, TTL index, 120day retention period
db.collection.getIndexes() //get all indexes
db.collection.dropIndex("name"); //drop single index
db.collection.dropIndexes(); //drop all indexes
db.collection.find({ email: 'test@sendgrid.com' }).explain("executionStats") // <3.0 : https://docs.mongodb.org/manual/reference/method/cursor.explain/#cursor.explain
//https://docs.mongodb.org/manual/tutorial/measure-index-use/
db.collection.explain("executionStats").find({ email: 'test@sendgrid.com' }) // 3.0 +
db.events.totalIndexSize() // in bytes, should not exceed RAM
@hassansin
hassansin / async-readable-stream.js
Last active November 10, 2020 15:26
Node.js Asynchronous Readable Stream
/*
Creating Asynchronous Readable Stream in NodeJS
--------------------------------------------------------
When data is pushed asynchronously to internal buffer, you'll get an asynchronous
behaviour of the stream.
See Synchronous Version: https://gist.github.com/hassansin/7f3250d79a386007ce45
*/
var Readable = require("stream").Readable;
@hassansin
hassansin / ab.sh
Created May 26, 2015 12:55
Apache Bench Ajax POST
ab \
-n 1000 \
-c 20 \
-s 30 \
-p post-data.txt \
-T 'application/x-www-form-urlencoded; charset=UTF-8' \
-v 3 \
-H "X-Requested-With: XMLHttpRequest" \
-H "X-Ajax-Referer: http://example.com" \
-H "Accept-Encoding: gzip, deflate" \
@hassansin
hassansin / prepare-commit-msg.sh
Last active March 2, 2023 01:06
Clubhouse - Git Hooks
#!/bin/sh
# If commit message does not refer to any CH story number,
# this hook will parse the CH story from the current branch and
# append it to the commit message
#
# Example:
# Branch: hassansin/ch1643/custom-subdomains
# commit message: add support for EU base urls
# appended commit message: Add support for EU base urls [ch1643]
@hassansin
hassansin / request-response.go
Last active April 13, 2023 10:44
Request-response pattern over asynchronous protocol using Go channel
package main
import (
"errors"
"fmt"
"math/rand"
"net/http"
"sync"
"time"