-
Kinesis Freestyle (Terrible key switches. Mushy and un-lovable)
-
Kinesis Freestyle Edge (Traditional layout with too many keys, mech switches, proably too big to be tented easily/properly)
-
Matias Ergo Pro (Looks pretty great. Have not tried.)
-
ErgoDox Kit (Currently, my everyday keyboard. Can buy pre-assembled on eBay.)
-
ErgoDox EZ (Prolly the best option for most people.)
# LVDB - LLOOGG Memory DB | |
# Copyriht (C) 2009 Salvatore Sanfilippo <[email protected]> | |
# All Rights Reserved | |
# TODO | |
# - cron with cleanup of timedout clients, automatic dump | |
# - the dump should use array startsearch to write it line by line | |
# and may just use gets to read element by element and load the whole state. | |
# - 'help','stopserver','saveandstopserver','save','load','reset','keys' commands. | |
# - ttl with milliseconds resolution 'ttl a 1000'. Check ttl in dump! |
A monad is a fancy word for a generic type of the form MyMonad<T>
(a generic type of arity 1).
A monad is special because it adds 'special powers' to the T
that it wraps.
These 'special powers' won't sound very special to an imperative programmer, so you have to squint to see them but bear with me.
IEnumerable<T>
is a monad that gives values of typeT
the special power of nondeterminism, or the ability to 'be' multiple values at once.Nullable<T>
is a monad that gives values of typeT
the special power of nullability, or the ability to be absent.Task<T>
is a monad that gives values of typeT
the special power of asynchronicity, or the ability to be used before they are computed.
The trick with monads comes when you want to play with the T
values, because they are inside another type. C# introduced language changes to make dealing with values inside these monads easier:
Let's solve the following physics problem using Symbolism, a computer algebra library for C#.
One strategy in a snowball fight is to throw a first snowball at a high angle over level ground. While your opponent is watching the first one, you throw a second one at a low angle and timed to arrive at your opponent before or at the same time as the first one.
Assume both snowballs are thrown with a speed of 25.0 m/s.
The first one is thrown at an angle of 70.0° with respect to the horizontal.
This project has moved to https://github.com/jonhoo/drwmutex so it can be imported into Go applications.
ReactDOM = require 'react/lib/ReactDOM' | |
ReactElement = require 'react/lib/ReactElement' | |
ReactElementValidator = require 'react/lib/ReactElementValidator' | |
SVGDOMPropertyConfig = require 'react/lib/SVGDOMPropertyConfig' | |
MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE | |
createFactory = if __DEV__ | |
ReactElementValidator.createFactory | |
else | |
ReactElement.createFactory |
package proxy | |
import ( | |
"io" | |
"log" | |
"net" | |
) | |
func Proxy(srvConn, cliConn *net.TCPConn) { | |
// channels to wait on the close event for each connection |
... or Why Pipelining Is Not That Easy
Golang Concurrency Patterns for brave and smart.
By @kachayev
# Non-config file types | |
*.log | |
*.log.* | |
*.tmp | |
*.old | |
*.bak | |
*.jar | |
*.jpi | |
*.jpi.pinned | |
*.json |
Setting up p4merge
as diff and merge tool on Windows. Tried for Git version 1.8.4.msysgit.0
.
Two alternatives are explained: using the command line, and directly editing the config file.
Being the installation path "C:Program Files\Perforce\p4merge.exe"
, just run:
$ git config --global diff.tool p4merge