Skip to content

Instantly share code, notes, and snippets.

Hou Tianze houtianze

Block or report user

Report or block houtianze

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
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.