Use LEFT and RIGHT arrow keys to navigate between flashcards;
Use UP and DOWN arrow keys to flip the card;
H to show hint;
A reads text to speech;
252 Cards in this Set
- Front
- Back
- 3rd side (hint)
What is the name of the latest JS build tool that uses trees as a first class primitive for describing file transformations.
|
Broccoli
|
http://alexmatchneer.com/blog/2014/04/12/ember-cli-and-npm-fights
|
|
Run this command inside a node project folder to install its binaries to your system
|
npm link
|
http://alexmatchneer.com/blog/2014/04/12/ember-cli-and-npm-fights
|
|
This is the state machine compiler that backs the Mongrel HTTP parsing engine
|
Ragel (http://www.complang.org/ragel/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Joyent's parser written in C was taken from this server's codebase
|
nginx
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Who was the author of nginx?
|
Igor Sysoev
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
This Ruby server combines the Mongrel HTTP parser, Event Machine, and Rack, and can be configured to enable threading.
|
Thin (http://code.macournoyer.com/thin/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
The author of Mongrel
|
Zed Shaw
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Is Puma the only multi-threaded Rails 4 HTTP server?
|
No, there's Net::HTTP::Server, Phusion Passenger 4, Rainbows!, Reel, Thin, Webrick, Zbatery (http://stackoverflow.com/questions/17902386/is-puma-the-only-multi-threaded-rails-4-http-server)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
A fork-less HTTP Rack server based on Rainbows! -> Unicorn -> Mongrel and inherits parts of each, supporting thread/fiber/event/actor concurrency (just not threads)
|
Zbatery (http://zbatery.bogomip.org/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Based on Unicorn, this HTTP Rack server is designed for applications that expect long request/response times and/or slow clients
|
Rainbows! (http://rainbows.rubyforge.org/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
For Rack applications not heavily bound by slow external network dependencies, consider this instead as it simpler and easier to debug.
|
Unicorn
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
If you're on a small system, or write extremely tight and reliable code and don't want multiple worker processes, check out XXXXX, too. XXXXX can use all the crazy network concurrency options of Rainbows! in a single worker process.
|
Zbatery (http://rainbows.rubyforge.org/ and http://zbatery.bogomip.org/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
A website that mocks a slow API
|
http://slowapi.com/ - e.g. curl http://slowapi.com/delay/1.0
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Asynchronous HTTP Client (EventMachine + Ruby)
|
em-http-request (https://github.com/igrigorik/em-http-request)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
A HTTP client lib with a common interface over many adapters (e.g. Net::HTTP, Excon, EventMachine, etc), with a Rack-like middleware system
|
Faraday (https://github.com/lostisland/faraday)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
This command line tool from Apache benchmarks a server's response time
|
ab -n 600 -c 200 http://mycoolasync.herokuapp.com/async_test
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Fully async real-time web app Ruby framework. Built on top of EventMachine, designed for large number of open connections and providing full-duplex bidirectional communication.
|
Cramp (http://cramp.in/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
What does full-duplex mean?
|
It means transmitted data does not appear to be sent until it has actualy been received and acked by other party.
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
What is the difference between a thread and a fiber?
|
Thread execution can be interrupted at any time (preemption), possibly leaving data an unsafe/unfinished state. Fibers are "cooperative", and cannot be preempted, and must explicitly yield to give up control.
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
The Reactor Pattern
|
A single-threaded queue, all IO shoved into kernel thread, rejoin single-threaded reactor queue when it's done.
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Python's Reactor pattern solution
|
Twisted
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Ruby's Reactor pattern solution
|
EventMachine
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Java's Reactor pattern solution
|
JBoss_Netty
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
PHP's Reactor pattern solution
|
Non-existent
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Ruby library of convenience classes to untangle evented code, allowing you to write code in a non-callback-y manner.
|
em-synchrony (https://github.com/igrigorik/em-synchrony)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
OSS version of non-blocking (async) Ruby web server powering PostRank. Uses Ruby 1.9 fibers to de-callback-ify your code
|
Goliath (http://postrank-labs.github.io/goliath/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
Nginx, Beanstalkd, EventMachine, Twisted, Node.js are all examples of servers that embrace this pattern
|
Reactor pattern (http://www.igvita.com/2010/03/22/untangling-evented-code-with-ruby-fibers/)
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
What word describes the act of interrupting a task without its cooperation? How does this term apply to the various concurrency models?
|
Preemption. Threads can be pre-empted (except user-space threads). Fibers cannot.
|
http://alexmatchneer.com/blog/2014/04/21/daily-journal
|
|
What is `ignoredModules` useful for in the `broccoli-es6-concatenator` plugin?
|
It prevents a file from being transpiled, and basically marks a module as something that'll be implemented later
|
http://alexmatchneer.com/blog/2014/04/28/daily-journal
|
|
Why explicitly set constructor when creating a JS subclass?
|
Because otherwise constructor will refer to parent class constructor
|
http://alexmatchneer.com/blog/2014/04/26/daily-journal
|
|
RSA
|
Encryption key is public, decryption secret. Used for generating symmetric key in TLS
|
http://alexmatchneer.com/blog/2014/05/01/daily-journal-2
|
|
Query param for telling QUnit to grep module names
|
filter=wat
|
http://alexmatchneer.com/blog/2014/05/01/daily-journal-2
|
|
denormalize
|
Adding duplication/redundancy to a system, e.g. storing a person's first name in multiple tables, often for the purpose of optimization
|
http://alexmatchneer.com/blog/2014/05/01/daily-journal
|
|
quick way to stub out a Ruby method so that it accepts any number of args
|
def meth(*args)
|
http://alexmatchneer.com/blog/2014/05/01/daily-journal
|
|
Fight nils by using this Hash/Array accessor instead
|
Hash#fetch or Array#fetch (note that there is no Enumerable#fetch)
|
http://alexmatchneer.com/blog/2014/05/01/daily-journal
|
|
Command to change directories, saving the current location
|
pushd /some/place; popd
|
http://alexmatchneer.com/blog/2014/05/01/daily-journal
|
|
Vim: surround a word in ']'
|
vsiw]
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
Vim: surround a chunk word in ']'
|
vsiW]
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
Vim: change surrounding ' to "
|
cs"'
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
Vim: delete surrounding "
|
ds"
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
Vim: wrap line in parens
|
yss(
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
Design principles: How can TDA and SRP conflict?
|
Either you stuff all the things that the User class can handle in user domain-specific terms (which breaks Single Responsibility Principle), or you add additional classes that know enough about User to ask it for property and values and make transformations/decisions based on that knowledge (which breaks Tell Don't Ask)
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
Quick way to mark an rspec test as pending
|
change `it` to `xit`
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
Cisgender
|
aka cissexual; a person whose gender matches that assigned at birth
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
HAL
|
Hypermedia Application Language; missing some features that make json api rad
|
http://alexmatchneer.com/blog/2014/05/04/daily-journal
|
|
=== in Ruby
|
subsumption or case equality operator; overridden by context-specific subclasses. Module#=== will return true if passed an object that has included that module
|
http://alexmatchneer.com/blog/2014/05/12/daily-journal
|
|
Uniform Type Identifiers
|
Apple's system for uniquely describing a type, using reverse domain name notation
|
http://alexmatchneer.com/blog/2014/05/15/daily-journal
|
|
Reverse domain name notation
|
e.g. com.alexmatchneer.StringBuffer; allows for more sensible sorting
|
http://alexmatchneer.com/blog/2014/05/15/daily-journal
|
|
LevelDB
|
library (as opposed to database server) that provides kv storage; can wrap in an app via C++ API
|
http://alexmatchneer.com/blog/2014/05/15/daily-journal
|
|
Shift V in Vim
|
Visual line mode; select whole lines
|
http://alexmatchneer.com/blog/2014/05/15/daily-journal
|
|
GlobalId
|
ActiveModel GlobalID: a way of serializing a model into a string so that it can be looked up by some later process
|
http://alexmatchneer.com/blog/2014/05/19/daily-journal
|
|
var a = 'A'; a.foo='wat';
|
This doesn't work in use strict, breaks in Safari
|
http://alexmatchneer.com/blog/2014/05/19/daily-journal
|
|
What's the difference between array and reduce computed properties?
|
Reduce CPs can reduce to anything you want, either a single value or an array. Array CPs are instances of reduce CPs that always return arrays.
|
http://alexmatchneer.com/blog/2014/05/22/daily-journal
|
|
Variable Timing
|
Messaging, as opposed to synchronous communication (e.g. RPC/RPI), doesn't peg the sender's performance time on the receiver's performance time, e.g. a sender isn't just as fast as the receiver
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Throttling
|
RPC/RPI can overload a receiver if too many come in at the same time; messaging involves queues == throttling
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Reliable Communication
|
Storing the message means retrying, handling failures.
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Disconnected Operation
|
Offline apps can use messaging to queue data to sync when reconnected
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Mediation
|
Mediator pattern from GoF; if an app gets disconnected from others, it only needs to reconnect to the single messaging system
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Thread Management
|
Because async, threads no longer blocked on a response (unless they want / need to be)
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
CORBA
|
Common Object Request Broker Architecture: a platform-neutral RPC spec
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
n-tier
|
(multi-tier): client-server architecture in which presentation, application processing, and data management are physically separated; 3-tier is most common; some similarities w MVC? Also, n-tier is distribution, not integration.
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git predecessor
|
BitKeeper, no longer free of charge in 2005.
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git checksum
|
SHA-1 hash
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
`git add` will store things in...
|
.git/objects
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
3 locations for git config
|
/etc/gitconfig, ~/.gitconfig, .git/config
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git bakes this into your commits
|
user.name and user.email
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git config a.b.c lol
|
puts [a "b"]
c = lol in .git/config |
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
what config is totally necessary to use git?
|
user.name and user.email
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git globs files
|
so you can do git add log/\*.log
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git log with diff
|
git log -p (the p stands for patch)
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git log limit to 2
|
git log -2
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
difference b/w git author and committer
|
author wrote the code, committer merged or applied to repo
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
can only push to this kind of git url
|
SSH URL, e.g. git@github.com:machty/ember.js
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
command to display lots of live info about a remote
|
git remote show origin
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
difference between lightweight and annotated tags
|
lightweight just points to a commit; annotated are full git objects, checksummed, contain tagger name, message, can be GPG (GNU Privacy Guard) signed
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
how to annotate tag
|
git tag -a v1.4 -m lol
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
command to inspect a tag for more info
|
git show tagname
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
GPG signed tag
|
git tag -s v3.0 -m haha
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
tag previous commit
|
git tag v.retro shortsha
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
How many chars is a short sha?
|
any number of chars so long as it can be matched to a longer one
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
how to push a single tag?
|
git push tagname
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
how to add git auto complete
|
you need bash, source gitrepo/contrib/completion/completion-something.bash
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
shorthand for declaring a git alias
|
git config --global alias.something 'reset --HEAD'
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
what's in a git commit?
|
pointer to snapshot, author, message, 0+ pointer to parent commits
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
HEAD
|
pointer to the branch you're currently on
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
When can you fast forward?
|
When the current branch head is an ancestor of the named commit. You're literally just moving a pointer.
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Upstream
|
The originator of the data, which flowed to you at some point, e.g. when you cloned a repo, or you created a branch.
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
What are the 3 components of a 3-way-merge?
|
Common ancestor, current HEAD, and to-be-merged branch.
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
What's unique about a merge commit?
|
It has more than one parent.
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
show all branches and last commit for each
|
git branch -v
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Show merged / unmerged branches
|
git branch --merged ; git branch --no-merged
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git push origin master expand to...
|
git push origin refs/heads/master:refs/heads/master
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
command to create a new branch starting off of another one
|
git checkout -b newbranch existingbranch
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
`git branch -d branch to delete` will yell at you under this circumstance
|
it's not merged into the current branch
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
what happens if you do `git checkout origin/some-remote-branch`?
|
Detached head state. To create a tracking branch, do `git checkout localbranch origin/some-remote-branch`
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
tracking branch
|
a local branch that have a direct relationship to a remote branch; `git push` and `git pull` will go to the tracking branch
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
another way to write `git checkout foo origin/foo`
|
`git checkout --track origin/foo`; creates local foo tracking origin/foo
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Delete remote branch foo
|
git push origin :foo; remember: `git push origin [localbranch]:[remotebranch]`
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
dog-ear
|
bend a page to make it easily findable later
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
The rule for when _not_ to rebase
|
Don't rebase commits that you've pushed to a public repo
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
difference b/w `git clone /path/to/repo` and `git clone file:///path/to/repo`
|
`file:///` uses the remote file transfer stuff that it would use for anything remote, whereas direct path directly copies and uses hard links and what not; `file:///` gives you a more pristine copy, less junk
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
limitation of SSH repo access
|
no anonymous access, possibly bad for open source
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git protocol
|
daemon packaged w git but w no authentication; no pushing (in general, since it opens to the door to anyone)
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
Speed of git protocol relative to SSH
|
way faster since no authentication and encryption overhead
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
solution to SSH non-anonymity and git non-auth
|
configure server to use both; git protocol for cloner/pullerss, ssh for repo write access homies
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
git command to init a bare repo in folder foo
|
`git init --bare foo`
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
after creating a bare repo and running http server, git clone fails. Why? How to fix?
|
HTTP hosting implies you have static files to serve, but these don't magically exist by default. They can be generated via the post-update.sample hook, which runs `git update-server-info`. You can either manually run this or enable the hook and push to it once (not via HTTP)
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
start a ruby server hosting files in this directory
|
`ruby -run -e httpd . -p 5001`
|
http://alexmatchneer.com/blog/2014/05/24/daily-journal
|
|
API for growl-esque notifications in websites
|
Web Notifications
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Conway's law
|
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Information Portal
|
Aggregation of multiple sources of information into a single display
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Data Replication
|
e.g. user's address may be redundantly stored in many places, but needs to be updated if they change it in one, which requires integration
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Shared Business Function
|
Multiple components need to perform the same operation; integration means exposing this one thing as an integrated service
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Service-Oriented Architecture
|
a Service is well-defined function that responds to requests from Service Consumers. 1. Needs a service directory for discovery. 2. Each service needs to describe its API.
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Distributed Business Process
|
Mediator; one component handles the coordination of a single business process among many other components.
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Business-to-business integration
|
Basically, all the above, but not restricted to within a single enterprise (business). So you might use a 3rd party company to calculate shipping rates
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Loose coupling tradeoff
|
The more assumptions can be made, the more efficient the communication, but the more brittle in response to change or interruptions
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Making remote invocations feel like local calls
|
RPC/RMI
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
RPC/RMI difference?
|
RPC is C-based, not necessarily object oriented. RMI is method / OO-based
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
RPC/RMI Advantage
|
1. Local invocation well-established and familar. 2. Defer the design decision to make a procedure call remote or local.
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
RPC/RMI Fail
|
Waldo et al in 1994 reminded us that object interaction in distributed system fundamentally different; so many things can fail/mismatch, how to recover, what if args mismatch, etc.
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: Problems w just transmitting TCP/IP bytes to request deposit
|
1. converting integer bits has incompatibility w different number representations, 2. big-ending / little-endian. 3. brittle if destination changes, or needs to go to multiple destinations. 4. TCP/IP is connection-oriented, so both machines must be present at the same time. 5. Data format changes requires updating both server and client
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: Solutions to TCP
|
1. XML for self-description and platform-independence. 2. Use named channel rather than hard-wired hostname. 3. Queue up sent messages so that receiver doesn't need to be online to send messages. 4. Channel can convert messages in case either side changes.
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
MOM
|
Message-oriented middleware, handles sending and receiving messages b/w distributed systems
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Sneakernet
|
Transfer of data by physically moving the stored data from one place to another, because you wear sneakers to get it from a to b.
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: Channel
|
How data gets from A to B, e.g. TCP/IP connections, shared file, shared DB, floppy disk + Sneakernet
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: Message
|
snippet of data with agreed-upon meaning to both sides; format may be different, but intent/meaning is the same
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: Translation
|
translate FIRST_NAME and LAST_NAME fields to Customer_Name, etc.
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: alternative to having customer service broadcast address changes to everyone else
|
Have a routing component (e.g. a message broker) split the message to many components
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: the thing that monitors what's going on inside the entire system
|
Systems management; monitors flow, makes sure all apps and components up and running, reports errors to central location
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
EIP: message endpoint
|
connects a system explicitly to an integration solution; useful for legacy code
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
Process Manager (two responsibilities)
|
1. storing data b/w messages (inside a 'process instance'). 2. Keeping track of progress and determining the next step (by using a 'process template')
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
React and Object.observe
|
At odds, because the re-render everything upon change doesn't take advantage of the fact that Object.observe is a thing that will tell us exactly what changed and what needs to be re-rendered
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
NIH (also, what's the antonym?)
|
Not invented here; antonynm: Proudly Found Elsewhere
|
http://alexmatchneer.com/blog/2014/05/25/daily-journal
|
|
4 Application Integration Options
|
1. File transfer. 2. Shared Database. 3. Remote Procedure Invocation. 4. Messaging
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
EIP: freshness
|
File-based integrations have staleness considerations; e.g. process address change at night, but a shipment happened that day after the request. Also, the longer the length of time to sync, the more conflicts can sneak in.
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
File Transfer relative to Messaging
|
High-frequency file transfer is like messaging, but way inefficient, error prone, etc. Similarities include storage, fire and forget, etc.
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Semantic dissonance
|
aka conceptual impedance mismatch e.g. two very similar seeming applications have subtly different specific definitions of a concept that can result in differing implementations
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Political considerations of shared DB
|
Challenging/delaying to conform multiple applications to a single schema, irresistible pressure to split
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Shared DB limitations
|
External packages have their own schemas which also might change b/w versions; company merges occur later, thwarting the previously consolidated plan.
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
When to use RPI?
|
To integrate application's functionality rather than data.
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
WSDL
|
Web Services Description Language; XML-based description of a service: expected params, structure of data produced, error format
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
UDDI
|
Universal Description, Discovery, and Integration; dictionary of WSDLs
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
SOAP
|
simple object access protocol; XML-based protocol for structuring messages to web services
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
List of RPC implementers
|
CORBA, COM, .NET Remoting, Java RMI
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
RPI's familiarity w normal method invocations has this weakness
|
Familiarity conceals major performance/reliability implications
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
RPI relative to Messaging suffers from ______
|
Tight coupling; interfaces are designed for specific applications, not resilient to change
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Cohesion / Adhesion
|
(in regards to working w remote applications) cohesion is local work and adhesion is remote queries
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
to avoid or not to avoid semantic dissonance
|
a corporate merger or necessary integration w 3rd party software is going to require it anyway, so best to address the issue w messaging rather than design applications that avoid it
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
How do you transfer packets of data?
|
Sender sends a Message via a Message Channel that connects sender and receiver
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
How do you know where to send the data?
|
Sender can send to Message Router, and it can decide
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
How do you know what format of data to send?
|
If sender/receiver can't agree, sender can send to Message Translator, which translates and forwards
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
If you're an app dev, how do you connect your app to messaging system?
|
Implement Message Endpoints to perform sending and receiving
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Message Channel
|
Virtual pipe that connects sender and receiver; newly installed messaging systems typically don't contain any; up to you to define for application's need
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Pipes and Filters
|
Any validations/transformations/etc that happen b/w sender and receiver
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Endpoints (messaging)
|
Layer of code in an application that touches both app and messaging code; a bridge between worlds
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Message consists of N parts:
|
1. Header (origin, destination, describes data). 2. Body, generally ignored by system and simply transmitted onward
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
HEAD in git
|
a reference to the currently checked-out commit
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Abstract Pipe
|
an interface for IO (such as used by filters) that could either be local memory or a full on Message Channel
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Potential downside of Filters and Pipes
|
Each pipe is a connector between filters, and if implemented via a Message Channel could consume much memory and CPU cycles for storage, translation, etc
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Throughput and Filters
|
Filters with their own thread/process and connected via async cross-process/cross-thread channels can achieve higher throughput, pipeline style
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Parallelize
|
(vs. sequential); add more instances of a some process working at the same time; multiply process X by N so that as input comes in, one of the N processes can process it
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Filter overloading
|
Filter can mean 1. a step in a process that applies some logic / transformation, or 2. something that removes data from a set based on some criteria
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
predictive / reactive routing
|
Message Router knows destinations vs Pub Sub channel consumers choosing themselves
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Failover
|
Automatic switching to redundant system in case of failure
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Content-based routing
|
Routing based on message content
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Context-based routing
|
Routing based on environmental conditions, e.g. load balancing, etc.
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Message Channels and load-balancing
|
Rather than using a router for load-balancing, you might already have load balancing if Competiting Consumers are pulling messages off of a channel as fast as they can; tradeoff is that Message Routers have more information to make this decision
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Round robin
|
maintaining a list of output channels (could be ip addresses) and cycling through them in some manner
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Live update a router
|
Using a Control Bus
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Integration equivalent of GoF Mediator
|
Message Broker
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
HTTP
|
Hypertext Transfer Protocol; application protocol
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Application Protocol
|
Sit on top of transport layer. Controls message body format to do application-specific things without having to be concerned about TCP/IP considerations, etc
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
HTTP is this kind of protocol
|
application-layer
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Internet protocol suite
|
More commonly known as TCP/IP. Transmission Control Protocol + Internet Protocol
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
SOAP and caching
|
SOAP is shitty at caching because resources are not a first class concept like they are in REST, which deprives of verbs
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
transport vs transfer
|
The dumb/blind carrying of data from A to B (transport) vs (transfer) the consideration of message content / what's being sent to effectively process the transfer. HTTP is transfer, evidence of this is all its verbs and status codes.
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
XSL
|
Extensible Stylesheet Language: family of languages to transform and render XML docs (XSLT, XSL-FO, XML Path)
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
ActiveX
|
Microsoft framework that adapts earlier Component Object Model
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Create an XML doc in JS
|
document.implement.createDocument()
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
SGML
|
Standard Generalized Markup Language; derivatives include XML and HTML
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
XML rel to SGML
|
subset of features to allow for easier parsing among other things
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
DOMString
|
UTF-16 string; JavaScript already uses these, so a DOMString is just String. (there is no DOMString class in JS)
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
XML Namespace
|
A URI, e.g. URL for the author's webpage, e.g. http://www.w3.org/1999/xhtml. The URI/URL doesn't need content, just uniquely refers to that spec
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
set an Element's attribute in js
|
element.setAttribute('onclick', alert('wat'))
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Difference b/w Node and Element
|
Nodes could be text nodes. Just nodes in trees. Elements are named, can have classes and IDs, etc. An Element IS a Node.
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Inline event and translation
|
onclick='alert("****")' becomes anonymous fn that gets `call`'d with clicked element as the context
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
DOM Level 0 events
|
inline and traditional; only single handlers supported
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Standardizes ECMAScript
|
TC39
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Standardizes Web Architectures
|
W3C TAG (Technical Architecture Group)
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Mr. Promises is a member of ...
|
W3C Tag
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Rick Waldron is member of ...
|
W3C Tag
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Yehuda Katz is member of ...
|
TC39 and W3C TAG
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
iOS click events
|
don't bubble up to document, unless 1. native button/link clicked, 2. handler explicitly added, 3. cursor: pointer (which prevents copy/paste from working as expected)
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Start of xml doc
|
<?xml version="1.0" encoding="UTF-8"?>
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
XSLT is a member of this family of languages
|
XSL, extensible stylesheet language
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
XSLT
|
Extensible stylesheet language transformations
|
http://alexmatchneer.com/blog/2014/05/26/daily-journal
|
|
Message Endpoint
|
code custom to application and messaging system's API
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Magnet
|
a url hashed by the content of the file it points to
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
btih
|
BitTorrent Info Hash; SHA1 of the bitorrent metadata
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
When do CPs get overridden?
|
When they're get only (CP fns have <= 1 arity)
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Why is Ember.computed.reads in the docs
|
Because defeaturify doesn't run before the API docs are generated (maybe that'll change?)
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Difference b/w computed.defaultTo and the CP severing behavior
|
defaultTo isn't a binding; it only retrieves the target defaultValue when the cur value is null
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Coneheads antagonist
|
Michael McKean
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Thread.current[:a] = 5
|
Store a=5 in Fiber-local var.
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
IEEE
|
Institute of Electrical and Electronics Engineers; not-for-profit corporation, specified telephony, networking; produces 30% of world's literature on EE and CS
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
IEEE 802
|
Family of standards dealing with LAN and metro area networks
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
WLAN standard
|
IEEE 802.11; media access control (MAC) and physical layer (PHY)
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
IEEE 1003
|
POSIX
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
POSIX
|
Portable Operating System Interface (1988): family of standards specified by IEEE for maintaining compat b/w operating systems. POSIX defines API, command line shells and utilities, e.g. awk, echo, ed, threading lib
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Holder of UNIX trademark
|
Open Group
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Linux and POSIX
|
TODO
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
What is Linux?
|
It's just a kernel; Linux distros are Linux kernel + lots of other utilities, mostly from GNU
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Solaris
|
Unix operating system originally by Sun, now by Oracle
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
What does it mean for an OS to be considered a 'Unix OS'
|
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
A free UNIX OS
|
OpenSolaris
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
The X in OS X
|
Signifies relationship to uniX
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Logivision POS / LPOS users
|
Union Market, Gourmet Garage
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
ruby: break x
|
force the method that yielded me to return x
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
RSS (memory)
|
Resident set size: portion of process's memory that is held in RAM, as opposed to swap or filesystem
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Enumereable Lazy
|
Ruby 2.0's ability to lazy eval what might be an infinite sequence; not eval'd until something like `to_a` called
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Why couldn't Ruby pre 2.0 use OS COW semantics while forking?
|
Because setting FL_MARK was rightfully interpreted as a write; bitmap marking got around this
|
http://alexmatchneer.com/blog/2014/05/28/daily-journal
|
|
Stoma
|
Smoker hole cut
|
|
|
META_DESC
|
The ES5 descriptor for the meta property on an object; non-enumerable and non-configurable
|
http://alexmatchneer.com/blog/2014/05/31/ember-meta
|
|
EMPTY_META
|
The read-only, empty meta object returned by `meta(obj, false)` when obj has no meta already
|
http://alexmatchneer.com/blog/2014/05/31/ember-meta
|
|
How do I find all the properties that have property as a dep key?
|
obj.meta.deps[changingPropName]
|
http://alexmatchneer.com/blog/2014/05/31/ember-meta
|
|
What causes the forgetful consumption behavior of lazy observers?
|
didChange on CP removes dependentKeys
|
http://alexmatchneer.com/blog/2014/05/31/ember-meta
|
|
If CP#didChange removes dependent keys, who adds it back in template situations?
|
The view that was installed will call get() on that CP, and .get() on a cacheable property will call addDependentKeys
|
http://alexmatchneer.com/blog/2014/05/31/ember-meta
|
|
Why is it that an observer can be properly set up, but it doesn't look like it when you inspect the containing object?
|
It might be declared on the prototype, which doesn't show up in Chrome by default. defineProperty on the obj itself would reveal `listeners`, but rest assured in the prototype, it exists
|
http://alexmatchneer.com/blog/2014/05/31/ember-meta
|
|
Observers aren't lazy when observing static values, but only CPs... why?
|
Static values have different rules... really the lazy CP behavior kicks in when you have Observer -> CP -> Depkey and nothing has consumed to CP, hence when the depkey changes, no change event fires unless someone has consumed cp
|
http://alexmatchneer.com/blog/2014/05/31/ember-meta
|
|
Where do file descriptors live for subprocess file-y operator
|
/tmp/fd
|
http://alexmatchneer.com/blog/2014/06/29/daily-journal
|
|
Run a command, capture its output in a file descriptor
|
<(echo wat)
|
http://alexmatchneer.com/blog/2014/06/29/daily-journal
|
|
What happens if i just this command: `<(echo 'wat')`
|
Permission denied, because <(echo 'wat') evaluates to a tmp/fd/3 path and is interpreted as attempted to execute a file, but it doesn't have these permissions
|
http://alexmatchneer.com/blog/2014/06/29/daily-journal
|
|
`ps`, but with hierarchy
|
`pstree`
|
http://alexmatchneer.com/blog/2014/06/29/daily-journal
|
|
|
|
http://alexmatchneer.com/blog/2014/06/29/daily-journal
|
|
Capacity equation (bandwidth and signal-noise ratio)
|
C (bits per sec) = BW (Hz) * log2(1 + S/N (watts))
|
http://alexmatchneer.com/blog/2014/07/05/daily-journal
|
|
Total capacity (bits per sec) of wireless transitions is proportional to...
|
Bandwidth (Hz)
|
http://alexmatchneer.com/blog/2014/07/05/daily-journal
|
|
thrashing (vm)
|
degradation of performance due to too much swapping/paging
|
http://alexmatchneer.com/blog/2014/07/05/daily-journal
|
|
'zones' w.r.t Cocoa and alloc
|
regions of memory; alloc'ing in the same zone may prevent virtual memory thrashing
|
http://alexmatchneer.com/blog/2014/07/05/daily-journal
|
|
The two implicit vars provided when running a method in Objective C
|
`self` and `_cmd`; `_cmd` is the message sent
|
http://alexmatchneer.com/blog/2014/07/05/daily-journal
|
|
Pre-ARC approach for preventing thrashing in allocated Cocoa objects
|
allocWithZone and -zone
|
http://alexmatchneer.com/blog/2014/07/05/daily-journal
|
|
Cocoa: when do you use `finalize`?
|
When you're using ARC and you have things like legacy allocated objects to release or file handles to close
|
http://alexmatchneer.com/blog/2014/07/05/daily-journal
|
|
Hibernia Express
|
London-New York underground cable for financial institutions; shave 5ms latency off, $80M per millisecond saved
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Four components of latency for a typical router
|
Propagation delay, Transmission Delay, Processing Delay, Queuing Delay
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Propagation delay
|
Time required to travel from A to B, bounded by speed of light
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Transmission delay
|
Time required to push all packets onto the link, function of packet length and data rate
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Processing delay
|
Time to process packet header, check for bit-level errors, and determine destination
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Queuing delay
|
Time in router queue waiting to be processed
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Bufferbloat
|
When routers ship with large incoming buffers to prevent packet loss, thus breaking TCP congestion avoidance algos - Jim Gettys 2010
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Refractive index
|
Ratio of speed of light in vacuum to speed in material. ~1.5 in fiber.
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
World circumference propagation time
|
200 ms
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|
|
Last mile latency
|
Phenomenon that significant latency is introduced due to neighborhood routers / signal aggregators
|
http://alexmatchneer.com/blog/2014/07/08/daily-journal
|