Skip to content

Instantly share code, notes, and snippets.

Hou Tianze houtianze

View GitHub Profile
@houtianze
houtianze / apache.mina.sshd.java
Last active Apr 25, 2018
Apache Mina SSH Server
View apache.mina.sshd.java
package com.example;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.security.KeyPair;
@houtianze
houtianze / shrink.docker.qcow2.md
Created Mar 4, 2018
Shrink docker.qcow2 (which can get verylarge) on macOS
View shrink.docker.qcow2.md
@houtianze
houtianze / getch_getche.py
Last active Jan 7, 2018
getch() / getche() for Python
View getch_getche.py
# https://stackoverflow.com/a/48136131/404271
if sys.platform == 'win32':
import msvcrt
getch = msvcrt.getch
getche = msvcrt.getche
else:
import sys
import termios
def __gen_ch_getter(echo):
@houtianze
houtianze / powermode.user.js
Last active Aug 1, 2018
Power Mode TamperMonkey Script
View powermode.user.js
// ==UserScript==
// @name Power Mode!
// @namespace http://houtianze.github.io/
// @updateURL https://gist.githubusercontent.com/houtianze/f6b0eb1c5825d1c214d61a3bf286922d/raw
// @version 0.1.1
// @description Turn on Power Mode!
// @author ibic
// @match *://*/*
// @exclude *://developer.chrome.com/*
// @grant none
View homebridge
# Defaults / Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-U /var/lib/homebridge
# If you uncomment the following line, homebridge will log more
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*
View maximally-minimal-es6-classes.js
// Source: http://wiki.ecmascript.org/doku.php?id=strawman:maximally_minimal_classes
class Monster {
// A method named "constructor" defines the class’s constructor function.
constructor(name, health) {
// public name object
this.name = name;
// private name object
this[pHealth] = health;
}
View on.y.combinator.md

Hopefully this may speed your groking of the forking torturing Y Combinator a little bit.

Disclaimer: I don't assert what I say here is accurate, or even correct (I'm not authorative, obviously), but it's my understanding and I'm sharing in the hope that someone who also struggles on the Y Combinator may benefit a tad.

Prerequisite Understandings

  • In Lambda Caculus, everything is a Lambda Caculus (Anonymous function that takes one parameter). And the best thing is that, ... drump roll ..., it's Turing Complete. So theoretically, it can caculate anything a computer can.
  • In this note, I use the term function, which (I think) means Lambda Caculus, to sound (at least to myself) more accustomed.

The definition of Y Combinator

  • Y = λf.(λx.f (x x)) (λx.f (x x))
View YCombinatorCurrySauce.txt
I just finally had my mind snap into place with understanding of the Y Combinator.
Most explanations I read, even the ones using JS, didn't make much sense and were
overly long so here follows my own, much simpler explanation. I will be using JS.
We have fibonacci to start with, very simple recursive function.
It's fixed points are 0 and 1, fib(0) = 0, and fib(1) = 1
That's all a fix point means, when the f(x) == x
They are important because they are the only values at which recursion can cease.
View facebook.html
<!DOCTYPE html>
<html>
<head>
<title>Facebook Login JavaScript Example</title>
<meta charset="UTF-8">
</head>
<body>
<p id="greeting">Test</p>
<script>
// This is called with the results from from FB.getLoginStatus().
You can’t perform that action at this time.