Skip to content

Instantly share code, notes, and snippets.

@gaolei-gl
gaolei-gl / CounterBackedAccumulatorUtil.scala
Last active April 25, 2018 03:39 — forked from tzachz/CounterBackedAccumulatorUtil.scala
Creating a Metrics Counter backed by a Spark Accumulator
package com.kenshoo.kripke.core
import com.yammer.metrics.Metrics
import com.yammer.metrics.core.{MetricName, Counter}
import org.apache.spark.Accumulator
import org.apache.spark.rdd.RDD
import scala.reflect.ClassTag
object CounterBackedAccumulatorUtil {
@gaolei-gl
gaolei-gl / fxxking-alipay-chrome-https-issue.sh
Created February 10, 2018 13:30 — forked from malash/fxxking-alipay-chrome-https-issue.sh
修复Chrome在macOS Seirra下因支付宝造成HTTPS失败的问题
# 官方:https://bugs.chromium.org/p/chromium/issues/detail?id=649253
# 相关1:http://gold.xitu.io/entry/5800318e7db2a200597bff78
# 相关2:https://twiceyuan.com/2016/09/26/sierra-chrome-bug/
# 相关3:https://www.v2ex.com/t/307911
sudo launchctl remove com.alipay.DispatcherService
sudo rm -rf /Library/Application\ Support/Alipay && \
sudo rm -rf /Library/LaunchDaemons/com.alipay.DispatcherService.plist && \
sudo rm -rf ~/Library/LaunchAgents/com.alipay.adaptor.plist && \
sudo rm -rf ~/Library/LaunchAgents/com.alipay.refresher.plist && \
@gaolei-gl
gaolei-gl / TypeClassDemo.scala
Last active January 4, 2018 15:09
Two demonstrations for type class in Scala.
sealed trait Json
object Json{
case class JsonStr(value:String) extends Json
case class JsonNum(value:Double) extends Json
case class JsonInt(value:Int) extends Json
case class JsonBoolean(value:Boolean) extends Json
}
trait Jsonable[T]{
package net.atos.sparti.pub
import java.io.PrintStream
import java.net.Socket
import org.apache.commons.pool2.impl.{DefaultPooledObject, GenericObjectPool}
import org.apache.commons.pool2.{ObjectPool, PooledObject, BasePooledObjectFactory}
import org.apache.spark.streaming.dstream.DStream
class PooledSocketStreamPublisher[T](host: String, port: Int)
@gaolei-gl
gaolei-gl / latency.markdown
Created July 28, 2017 07:37 — forked from hellerbarde/latency.markdown
Latency numbers every programmer should know

Latency numbers every programmer should know

L1 cache reference ......................... 0.5 ns
Branch mispredict ............................ 5 ns
L2 cache reference ........................... 7 ns
Mutex lock/unlock ........................... 25 ns
Main memory reference ...................... 100 ns             
Compress 1K bytes with Zippy ............. 3,000 ns  =   3 µs
Send 2K bytes over 1 Gbps network ....... 20,000 ns  =  20 µs
SSD random read ........................ 150,000 ns  = 150 µs

Read 1 MB sequentially from memory ..... 250,000 ns = 250 µs

def insertionSort[B <% Ordered[B]](list: List[B]) = {
list.foldLeft(List.empty[B]) { (b, a) =>
val (h, t) = b.span(_ < a)
h ::: a :: t
}
}
// References
// - http://docs.scala-lang.org/overviews/reflection/typetags-manifests.html
// - http://stackoverflow.com/questions/12218641/scala-what-is-a-typetag-and-how-do-i-use-it
// - http://blogs.atlassian.com/2012/12/scala-and-erasure/
// - http://www.scala-blogs.org/2008/10/manifests-reified-types.html
// - http://stackoverflow.com/questions/3587286/how-does-scalas-2-8-manifest-work
// - http://stackoverflow.com/questions/3213510/what-is-a-manifest-in-scala-and-when-do-you-need-it
//