Skip to content

Instantly share code, notes, and snippets.

View number23's full-sized avatar
🎯
Focusing

number23 number23

🎯
Focusing
View GitHub Profile
@number23
number23 / spit.scala
Created March 20, 2017 17:12
writeStringToFile in Scala
import scala.language.reflectiveCalls
import java.io.{File, FileWriter}
def using[A <: {def close() : Unit}, B](resource: A)(f: A => B): B =
try f(resource) finally resource.close()
def writeStringToFile(file: File, data: String, appending: Boolean = false) =
using(new FileWriter(file, appending))(_.write(data))
@number23
number23 / fromScalaConsole.scala
Last active March 18, 2017 18:44 — forked from Centaur/fromScalaConsole.scala
get case class properties using reflection
import scala.reflect.runtime.{universe => ru}
import ru._
def getProperties[T: TypeTag]: Iterable[String] = {
val tpe = ru.typeTag[T].tpe
tpe.decls.collect {
case m: MethodSymbol if m.isCaseAccessor => m.name.toString
}
}
@number23
number23 / resultSetItr.scala
Last active March 18, 2017 17:16
java.sql.Result Iterator on Scala
import java.sql._
def resultSetItr[T](res: ResultSet)(f: ResultSet => T): Stream[T] = {
new Iterator[T] {
def hasNext = res.next()
def next() = f(res)
}.toStream
}
def query[T](conn: Connection, sql: String)(f: ResultSet => T): List[T] = {
@number23
number23 / lift.scala
Last active March 15, 2017 17:16
scala lift
def lift[A, B, C, D](f: Function3[A, B, C, D]): Function3[Option[A], Option[B], Option[C], Option[D]] =
(oa: Option[A], ob: Option[B], oc: Option[C]) =>
for (a <- oa; b <- ob; c <- oc) yield f(a, b, c)
def lift[A, B, C, D](f: (A, B, C) => D): (Option[A], Option[B], Option[C]) => Option[D] =
(oa: Option[A], ob: Option[B], oc: Option[C]) =>
for (a <- oa; b <- ob; c <- oc) yield f(a, b, c)
val createConnection = lift(java.sql.DriverManager.getConnection)
@number23
number23 / README.md
Last active June 28, 2016 04:21 — forked from chuangbo/README.md
Python dynamic DNSPod DNS Script

替换上你的login_token,域名ID,记录ID等参数,就可以运行了。 会在后台一直运行,每隔30秒检查一遍IP,如果修改了就更新IP。

获得domain_id可以用curl curl -k https://dnsapi.cn/Domain.List -d "login_token=xxxxx,xxxxxxxx&format=json" | python -m json.tool

获得record_id类似 curl -k https://dnsapi.cn/Record.List -d "login_token=xxxxx,xxxxxxxx&amp;domain_id=xxx&amp;format=json" | python -m json.tool

@number23
number23 / gist:ab35abdfc42e5c32885b
Created September 4, 2014 15:16
clojure ancestors fn
user=> (ancestors (class #{}))
#{clojure.lang.IFn java.lang.Runnable clojure.lang.AFn clojure.lang.Counted clojure.lang.IMeta clojure.lang.IHashEq clojure.lang.IObj clojure.lang.IEditableCollection java.util.Collection java.lang.Object clojure.lang.APersistentSet java.util.concurrent.Callable clojure.lang.IPersistentSet clojure.lang.IPersistentCollection clojure.lang.Seqable java.lang.Iterable java.io.Serializable java.util.Set}
user=> (ancestors (class ""))
#{java.lang.CharSequence java.lang.Comparable java.lang.Object java.io.Serializable}
user=> (doc ancestors)
-------------------------
clojure.core/ancestors
([tag] [h tag])
Returns the immediate and indirect parents of tag, either via a Java type
inheritance relationship or a relationship established via derive. h
@number23
number23 / reify
Created September 4, 2014 13:51
clojure reify example
(.listFiles
(java.io.File. ".")
(reify
java.io.FileFilter
(accept [this f]
(.isDirectory f))))
@number23
number23 / gist:fcc08a7bb05f77d6720c
Created September 4, 2014 09:21
vars since 1.4 in core
;; vars since 1.4 in core
(for [[n v] (ns-publics 'clojure.core) :let [since (:added (meta v))] :when (= since "1.4")] n)
@number23
number23 / gist:4368396
Last active April 3, 2017 09:45
HK id card check digit
public boolean hkid_check_digit(String id){
if (id.matches("[A-Z]\\d{6}-[\\d|A]") == false) {
msgMgr.reportException("身份証號格式錯誤,X123456-X", true);
return false;
}
/*
* check digit, A=10, B=11, ... Z=35
* the 9th weight == 36, google: another one is 58.
*
@number23
number23 / comparator.clj
Created May 12, 2012 15:25
clojure comparator
((comparator <) 1 4)
;= -1
((comparator <) 4 1)
;= 1
((comparator <) 4 4)
;= 0