Skip to content

Instantly share code, notes, and snippets.

View anoopelias's full-sized avatar

Anoop Elias anoopelias

View GitHub Profile
@anoopelias
anoopelias / Inheritance.js
Created August 11, 2012 13:40
A snippet to show the idea of prototype object and inheritance in JavaScript
ObjMaker = function() {
this.a = "first";
};
ObjMaker.prototype.b = "second";
var objMaker = new ObjMaker();
ObjMaker.prototype.c = "third";
console.log("objMaker.a " + objMaker.a); // Prints 'first'
console.log("objMaker.b " + objMaker.b); // Prints 'second'
@anoopelias
anoopelias / MemoryLeakTest.java
Created September 3, 2012 21:16
Test memory leak in java code
import java.util.WeakHashMap;
import junit.framework.Assert;
import org.junit.Test;
public class MemoryLeakTest {
@Test
public void test_stack_memory_leak() {
@anoopelias
anoopelias / Closure.markdown
Created December 10, 2012 16:03
Closure..

Closure..

Couple of months back, when I started looking at Scala as a programming language, a key computer programming concept came up - Closure. I couldn't find a page which explains what it is and how to use it, so here it goes,

Definition

A closure is a first-class function with free variables that are bound in the lexical environment. (Source wikipedia)

First-class functions

First-class functions are those that can be assigned to a variable to be carried around and be executed at a later point of time. Subsequently this will enable those functions being passed as arguments, as well as returned back. An example in Scala is shown below.

@anoopelias
anoopelias / Implicit.scala
Created December 10, 2012 16:05
Implicit variables in scala
package concept
object Impicit {
implicit val i : Int = 1 //> i : Int = 1
def add(a:Int)(implicit b:Int) = a + b //> add: (a: Int)(implicit b: Int)Int
add(10)(15) //> res0: Int = 25
add(10) //> res1: Int = 11
}
@anoopelias
anoopelias / ImpicitConversion.scala
Created December 10, 2012 16:27
Implicit conversion in scala
package concept
object ImpicitConversion {
class Val {
def value = 10
}
/* Implicit Conversion begins */
@anoopelias
anoopelias / Assignment.scala
Created December 28, 2012 14:37
Is there a name for this kind of assignment? See how 'n' is assigned below.
scala> case class Name(name:String)
defined class Name
scala> val a = Name("Anoop")
a: Name = Name(Anoop)
scala> val Name(n) = a
n: String = Anoop
scala>
@anoopelias
anoopelias / Manifest.md
Last active January 20, 2019 08:24
Using Manifest to get around with type erasure in scala

Typically, you can't use a 'new' operator on a generic type. This is because of type erasure.

scala> def create[T] = new T
<console>:7: error: class type required but T found
   def create[T] = new T
                       ^

Scala gives a way of getting around this problem, with the Manifest class.

scala> def create[T](implicit m:Manifest[T]) = m.erasure.newInstance

@anoopelias
anoopelias / TypeClasses.md
Last active December 7, 2021 23:42
What is the fuzz about Type Classes? #scala

Assume you have a couple of classes,

case class Person(name: String, age: Int)
case class Employee(person: Person, salary: Double)

Lets say for some reason,

  • You don't want to change this source, but
  • You should be able to add features save(person) and save(employee), and
  • You need clearly separate implementations for both the types,
@anoopelias
anoopelias / AppleStock.java
Created October 17, 2013 07:22
Given the price of stock for every minute past midnight, find the time at which you would have bought and sold for maximum profit.
public class AppleStock {
public static void main(String[] args) {
int[] stockPricesYesterday = { 500, 501, 503, 495, 503 };
int buy = -1;
int sell = -1;
int lowest = -1;
for (int i = 0; i < stockPricesYesterday.length; i++) {
@anoopelias
anoopelias / Recursion.md
Last active December 27, 2015 13:29
Recursion

There are two forms of recursion,

  • Tail Recursion : The return value is calculated as a combination of the value of current subroutine and the return value of the next call. Example,

     int factorial(int a) {
         if(a==0)
             return 1;
         else
             return a * factorial( a-1 );
    

}