Skip to content

Instantly share code, notes, and snippets.

View mohammedri's full-sized avatar
:shipit:

Mohammed Ridwanul mohammedri

:shipit:
View GitHub Profile
@mohammedri
mohammedri / functional-query-string-parser.ts
Created October 23, 2018 18:42 — forked from nayeemzen/functional-query-string-parser.ts
Functional programming approach to parsing query strings in Typescript/ES6
// Functional programming approach to parsing query strings in Typescript/ES6.
function parseQueryString(search: string) {
return (search.startsWith('?') ? search.substring(1) : search)
.split('&')
.map(str => {
const eqIdx = str.indexOf('=');
if (eqIdx <= 0 || eqIdx >= str.length - 1) {
return {};
}
@mohammedri
mohammedri / rails http status codes
Created April 14, 2018 22:46 — forked from mlanett/rails http status codes
HTTP status code symbols for Rails
HTTP status code symbols for Rails
Thanks to Cody Fauser for this list of HTTP responce codes and their Ruby on Rails symbol mappings.
Status Code Symbol
1xx Informational
100 :continue
101 :switching_protocols
102 :processing

Host to Host a Rails App on a Home Server

Hosting services like Heroku and Amazon EC2 are nice. That is, until they cost money. Some things are worth running on your own hardware, especially when the cost and Terms of Service requirements outweigh the expense of rolling your own hosting.

I am writing this because I recently had to figure all this out in order to host a personal blog off a Raspberry Pi, and I thought I'd share what I learned. This guide assumes that you already know how to install Ruby and you know how to use Rails. If you don't, look those up first before coming back to this guide.

Prerequisites

  • Ruby >=2.0
  • Rails >=4.0
  • Nginx
@mohammedri
mohammedri / how-to-squash-commits-in-git.md
Created October 27, 2017 17:32 — forked from patik/how-to-squash-commits-in-git.md
How to squash commits in git

Squashing Git Commits

The easy and flexible way

This method avoids merge conflicts if you have periodically pulled master into your branch. It also gives you the opportunity to squash into more than 1 commit, or to re-arrange your code into completely different commits (e.g. if you ended up working on three different features but the commits were not consecutive).

Note: You cannot use this method if you intend to open a pull request to merge your feature branch. This method requires committing directly to master.

Switch to the master branch and make sure you are up to date:

@mohammedri
mohammedri / sound_recorder.py
Created June 24, 2016 04:17 — forked from mabdrabo/sound_recorder.py
Simple script to record sound from the microphone, dependencies: easy_install pyaudio
import pyaudio
import wave
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
CHUNK = 1024
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "file.wav"
@mohammedri
mohammedri / knapsack.js
Created May 16, 2016 14:27 — forked from danwoods/knapsack.js
Knapsack algorithm in JavaScript
//Knapsack algorithm
//==================
// wikipedia: [Knapsack (0/1)](http://en.wikipedia.org/wiki/Knapsack_problem#0.2F1_Knapsack_Problem)
// Given a set `[{weight:Number, benefit:Number}]` and a capacity,
// find the maximum value possible while keeping the weight below
// or equal to the capacity
// **params**:
// `capacity` : Number,
// `items` : [{w:Number, b:Number}]
// **returns**:
@mohammedri
mohammedri / gist:7d8060819ab8c396c012
Created February 16, 2016 01:50 — forked from 1Marc/gist:4770184
Pseudocode demonstrating debouncing.
// Pseudocode to demonstrate debouncing
$(".item_column").on("scroll", function(){
// this function fires way too fast
getItemsInView();
});
// With debouncing:
$(".item_column").on("scroll", _.debounce(function(){
// max this function can fire is every 150 milliseconds
getItemsInView();