Skip to content

Instantly share code, notes, and snippets.

View superChing's full-sized avatar
🤒
Out sick

林煒清(Lin Wei-Ching) superChing

🤒
Out sick
  • Taiwan
View GitHub Profile
@ms-tg
ms-tg / scala_try_monad_axioms.scala
Last active May 28, 2022 03:48
Scala Try: monad axioms
import scala.util.{Try, Success, Failure}
def f(s: String): Try[Int] = Try { s.toInt }
def g(i: Int): Try[Int] = Try { i * 2 }
def unit[T](v: T): Try[T] = Success(v)
//val v = "1"
val v = "bad"
val m = Success(v)
@kylebgorman
kylebgorman / dictpp.py
Created November 2, 2013 06:01
a Python dictionary with all the set operators
#!/usr/bin/env python -O
#
# Copyright (c) 2013 Kyle Gorman
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
@tdrozdowski
tdrozdowski / json-samples.scala
Last active March 23, 2016 09:15
Various code snippets for working with the Play Framework
import play.api.libs.json._
import play.api.libs.json.Reads._
// construct a json
val user = Json.obj("email" -> "[email protected]", "firstName" -> "Foo", "lastName" -> "Bar")
// > user: play.api.libs.json.JsObject = {"email":"[email protected]","firstName":"Foo","lastName":"Bar"}
println(s"user -> $user")
// > user -> {"email":"[email protected]","firstName":"Foo","lastName":"Bar"}
@chanks
chanks / gist:7585810
Last active July 22, 2025 01:00
Turning PostgreSQL into a queue serving 10,000 jobs per second

Turning PostgreSQL into a queue serving 10,000 jobs per second

RDBMS-based job queues have been criticized recently for being unable to handle heavy loads. And they deserve it, to some extent, because the queries used to safely lock a job have been pretty hairy. SELECT FOR UPDATE followed by an UPDATE works fine at first, but then you add more workers, and each is trying to SELECT FOR UPDATE the same row (and maybe throwing NOWAIT in there, then catching the errors and retrying), and things slow down.

On top of that, they have to actually update the row to mark it as locked, so the rest of your workers are sitting there waiting while one of them propagates its lock to disk (and the disks of however many servers you're replicating to). QueueClassic got some mileage out of the novel idea of randomly picking a row near the front of the queue to lock, but I can't still seem to get more than an an extra few hundred jobs per second out of it under heavy load.

So, many developers have started going straight t

@joakimbeng
joakimbeng / router.html
Last active March 15, 2024 06:18
A really simple Javascript router
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Building a router</title>
<script>
// Put John's template engine code here...
(function () {
// A hash to store our routes:
@staltz
staltz / introrx.md
Last active January 23, 2026 10:31
The introduction to Reactive Programming you've been missing
// XPath CheatSheet
// To test XPath in your Chrome Debugger: $x('/html/body')
// http://www.jittuu.com/2012/2/14/Testing-XPath-In-Chrome/
// 0. XPath Examples.
// More: http://xpath.alephzarro.com/content/cheatsheet.html
'//hr[@class="edge" and position()=1]' // every first hr of 'edge' class
@syhw
syhw / dnn.py
Last active October 19, 2024 08:20
A simple deep neural network with or w/o dropout in one file.
"""
A deep neural network with or w/o dropout in one file.
License: Do What The Fuck You Want to Public License http://www.wtfpl.net/
"""
import numpy, theano, sys, math
from theano import tensor as T
from theano import shared
from theano.tensor.shared_randomstreams import RandomStreams
@dragonfax
dragonfax / README.md
Last active September 10, 2019 11:32
Add a "Checkbox" shortcut to Evernote Web Client

I recently switched from using the Evernote Desktop Client to the web client. The only thing I missed was the short-cut for creating Todo checkboxes.

Here is a quick TamperMonkey (Grease Monkey) script to add that functionality back in. Add the userscript to Tampermonkey.

@xeno-by
xeno-by / gist:8b64ca6a73775147941e
Last active December 4, 2018 03:29
Towards perfect compile-time proxies in Scala
// PROBLEM STATEMENT
// Let's build Proxy[T], an object that can capture calls to methods of an underlying object.
// We want the proxy to be type-safe, i.e. we need to verify that the names of the calls
// and the arguments that are passed to those calls are well-typed wrt the type of the proxee.
object Test extends App {
trait Foo { /* ... */ }
val proxy: Proxy[Foo] = ???
proxy.bar()