Skip to content

Instantly share code, notes, and snippets.

View shivabhusal's full-sized avatar

Shiva B. shivabhusal

View GitHub Profile
@shivabhusal
shivabhusal / introspection.rb
Created June 20, 2017 04:28
In other languages, such as Ruby, runtime looks more like a busy market. Most language constructs are still there, buzzing all around. You can even walk up to a construct and ask it questions about itself. This is called Introspection
class Board
def initialize(text)
@text = text
end
def display
@text
end
end
@shivabhusal
shivabhusal / atom_extenstions.sh
Last active August 2, 2025 18:32
shell script to install most commonly used tools for Ruby/Rails development in Atom Text Editor
#! /usr/bin/bash
apm install markdown-preview
apm install language-ruby
apm install autocomplete-ruby
# Lets you maintain long history of items you copied in past using `CTRL + SHIFT + v`
apm install clipboard-history
apm install goto-definition
@shivabhusal
shivabhusal / markdown.nanorc
Created May 29, 2017 14:14
Nano config to highlight markdown files
syntax "markdown" "\.md$" "\.markdown$"
## Quotations
color cyan "^>.*"
## Emphasis
color green "_[^_]*_"
color green "\*[^\*]*\*"
## Strong emphasis
@shivabhusal
shivabhusal / script.sh
Created May 29, 2017 11:00
This will update all the commits with new information
git filter-branch --commit-filter \
'if [ "$GIT_AUTHOR_EMAIL" = "old_email" ]; then \
export GIT_AUTHOR_NAME="Shiva Bhusal";\
export GIT_AUTHOR_EMAIL=new_emil;\
export GIT_COMMITTER_NAME="Shiva Bhusal";\
export GIT_COMMITTER_EMAIL="[email protected]";\
fi;\
git commit-tree "$@"'
@shivabhusal
shivabhusal / .nanorc
Created May 28, 2017 11:48
config for my version of nano in ~/.nanorc
# include all the preexisting configs
include "/usr/share/nano/*.nanorc"
set linenumbers
set tabsize 4
set tabstospaces
@shivabhusal
shivabhusal / storing_locals_to_heap.c
Created May 23, 2017 16:19
Demonstrate how we can store local vars to heap using `calloc`, `malloc` so that we can return the references to the caller.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int* getSum(int a, int b){
/* Local var stored in `heap` instead of `stack` */
int* sum = malloc(sizeof(int));
*sum = a + b;
@shivabhusal
shivabhusal / external_vars_defined.c
Last active May 12, 2017 15:39
Unlike static keyword, extern is used to only declare the variable rather than allocating memory. Just after declaring var, you cannot initialize it, you need to define it as well. In case of function declarations, they are implicitly extern. But, incase of variables, you need to explicitly write extern keyword.
#include <stdio.h>
#include "../cspec/cspec.c"
// Withour this line, compiler wont compile your code.
// error: `some_var_declared_somewhere` undeclared (first use in this function)
extern int some_var_declared_somewhere;
void test_runner(void);
void main(){
#include <stdio.h>
#include "../cspec/cspec.c"
int * some_function(){
static int fun_call_counter = 0;
fun_call_counter++;
return &fun_call_counter;
}
@shivabhusal
shivabhusal / unmanaged-index.jsx
Created January 14, 2017 20:45
This looks like mess. Its so difficult to maintain any software with this kind of scattered components. It is always a better idea to sperate out logical things into well defined directory structure. We will do this in a moment. Checkout the next Pull request
import {combineReducers, createStore} from 'redux';
const usersReducer = (usersState = [], action) => {
const new_state = Object.assign([], usersState);
switch (action.type) {
case 'UPDATE_USER': {
var updateable_record = new_state.find((item) => item.id === action.payload.id);
new_state[new_state.indexOf(updateable_record)] = Object.assign({}, updateable_record, action.payload);
break;
}
GIT
remote: git://github.com/spree-contrib/spree_mail_settings.git
revision: d416a1e355893bda625ed5bea187d39526aa52f9
branch: 3-0-stable
specs:
spree_mail_settings (3.0.0)
spree_backend (~> 3.0.0)
GIT
remote: git://github.com/spree/spree_auth_devise.git