From fe1d99347c40fcc0f84f4659a9d9aa1a93b904f9 Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Tue, 3 Jul 2012 04:09:36 -0400 Subject: [PATCH] Lots of updates. --- bash.md | 8 ++ css.md | 30 ++++++ fitness.md | 24 +++++ homebrew.md | 26 +++++ ios.md | 6 +- jasmine.md | 133 +++++++++++++++++++++++ lua.md | 297 +++++++++++++++++++++++++++++++++++++++++++++++++++ middleman.md | 3 - ncftp.md | 20 ++++ ruby.md | 17 +++ rubygems.md | 18 ++++ sass.md | 35 ++++++ vim.md | 12 ++- 13 files changed, 623 insertions(+), 6 deletions(-) create mode 100644 css.md create mode 100644 homebrew.md create mode 100644 jasmine.md create mode 100644 lua.md create mode 100644 ncftp.md create mode 100644 ruby.md create mode 100644 rubygems.md create mode 100644 sass.md diff --git a/bash.md b/bash.md index 4a8a69ce1..27d6937e4 100644 --- a/bash.md +++ b/bash.md @@ -33,6 +33,14 @@ title: Bash echo $i end +### Reading input + + echo -n "Proceed? [y/n]: " + read ans + echo $ans + + read -n 1 ans # Just one character + Functions --------- diff --git a/css.md b/css.md new file mode 100644 index 000000000..dc8ef8ade --- /dev/null +++ b/css.md @@ -0,0 +1,30 @@ +title: CSS +--- + +Webkit extensions +----------------- + +### Font smoothing + + /* maxvoltar.com/archive/-webkit-font-smoothing */ + html { -webkit-font-smoothing: antialiased; } + +### Heading kerning pairs and ligature + + h1, h2, h3 { text-rendering: optimizeLegibility; } + +### Native-like iOS scrolling + + -webkit-overflow-scrolling: touch; + overflow-y: auto; + +### Gradient text + + background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#333)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + +### Text stroke + + /* http://www.webkit.org/blog/85/introducing-text-stroke/ */ + -webkit-text-stroke: 3px black; diff --git a/fitness.md b/fitness.md index e2b3e0467..01aa5206e 100644 --- a/fitness.md +++ b/fitness.md @@ -20,3 +20,27 @@ http://www.bodybuilding.com/fun/mike1.htm * 5 x 100% (work set) http://corw.in/warmup/ + +### Bench + +Jennifer Thompson video: http://www.youtube.com/watch?v=34XRmd3a8_0 + +### Metabolism + +* At rest, 33% of the body's energy comes from carbohydrates, or glycogen, + stored within the muscles and liver. 66% comes from fat. + +* During aerobic work, 50-60% of the energy comes from fats + +* Primarily carbohydrates are used during the first several minutes of exercise + +* For an average fit person, it takes 20 to 30 minutes of continuous aerobic + activity to burn 50% fat and 50% carbohydrate + +* There is approximately a 7 fold increase of fat mobilization after 1 hour of + exercise + +* Low intense exercise (<30% VO2 max) relies primarily on fat whereas high + intense exercise (>70% VO2 max) primarily utilized carbohydrate. + +http://www.exrx.net/Nutrition/Substrates.html diff --git a/homebrew.md b/homebrew.md new file mode 100644 index 000000000..fbc140487 --- /dev/null +++ b/homebrew.md @@ -0,0 +1,26 @@ +class Tweetx < Formula + homepage 'http://code.google.com/p/tweetx/' + url 'http://tweetx.googlecode.com/files/tweetx-0.1.tar.gz' + version '0.1' + sha1 'e676f895ac5df1574f6fd4086ee57b9bf8d71e20' + + head 'https://github.com/b4winckler/macvim.git', :branch => 'master' + + def options + [ + ["--custom-icons", "Try to generate custom document icons."], + ] + end + + depends_on 'cscope' if ARGV.include? '--with-cscope' + + def install + system "./configure", + "--prefix=#{prefix}", + "--libdir=#{lib}" + system "make install" + + man1.install 'manpage.1' + bin.install "foo" + end +end diff --git a/ios.md b/ios.md index a992e74fe..f06fbf6d4 100644 --- a/ios.md +++ b/ios.md @@ -2,9 +2,13 @@ Multiple Exchange accounts: scp root@iphone.local:/private/var/mobile/Library/Preferences/com.apple.accountsettings.plist . +Winterboard themes: + + /Library/Themes + Copy photos: - scp -r root@iphone.local:/User/Media/DCIM/100APPLE ./photos + rsync -v -r root@iphone.local:/User/Media/DCIM/100APPLE ./photos Ringtone conversion using ffmpeg: diff --git a/jasmine.md b/jasmine.md new file mode 100644 index 000000000..050b39845 --- /dev/null +++ b/jasmine.md @@ -0,0 +1,133 @@ +title: Jasmine +--- + +[Jasmine](http://pivotal.github.com/jasmine/). + + describe("A suite", function() { + it("contains spec with an expectation", function() { + expect(true).toBe(true); + }); + }); + +### Expectations + + expect(true).toBe(true) + expect(true).not.toBe(true) + + expect(a).toEqual(bar) + + expect(message).toMatch(/bar/) + expect(message).toMatch('bar') + + expect(a.foo).toBeDefined() + expect(a.foo).toBeUndefined() + expect(a.foo).toBeNull() + + expect(a.foo).toBeTruthy() + expect(a.foo).toBeFalsy() + + expect(message).toContain('hello') + + expect(pi).toBeGreaterThan(3) + expect(pi).toBeLessThan(4) + expect(pi).toBeCloseTo(3.1415, 0.1) + + expect(func).toThrow() + +### Blocks + + beforeEach(function() { ... }); + afterEach(function() { ... }); + +### Pending + + xit("this is a pending test", function() { ... }) + xdescribe("this is a pending block", function() { ... }) + +### Spies + + spyOn(foo, 'setBar') + spyOn(foo, 'setBar').andReturn(123) + spyOn(foo, 'getBar').andCallFake(function() { return 1001; }) + foo.setBar(123) + + expect(foo.setBar).toHaveBeenCalled() + expect(foo.setBar).toHaveBeenCalledWith(123) + expect(foo.setBar.calls.length).toEqual(2) + expect(foo.setBar.calls[0].args[0]).toEqual(123) + +### Creating spies + + stub = jasmine.createSpy('stub') + stub("hello") + + expect(whatAmI.identity).toEqual("stub") + expect(whatAmI).toHaveBeenCalled() + +### Async + + it("should run async", function() { + var flag = false, value = 0; + + runs(function() { + setTimeout(function() { flag = true; }, 500); + }); + + waitsFor(function() { + value++; + return flag; + }, "increment", 750); + + runs(function() { + expect(value).toBeGreaterThan(0); + }); + }); + +### HTML runner + + var jasmineEnv = jasmine.getEnv(); + jasmineEnv.updateInterval = 250; + + var htmlReporter = new jasmine.HtmlReporter(); + jasmineEnv.addReporter(htmlReporter); + + $(function() { jasmineEnv.execute(); }); + +Jasmine jQuery +============== + +[Jasmin jQuery](https://github.com/velesin/jasmine-jquery). + + expect($('#id')).toBe('div') + expect($('input[type=checkbox]')).toBeChecked() + expect($('input[type=checkbox]')).toBeDisabled() + expect($('input[type=checkbox]')).toBeFocused() + expect($('#menu ul')).toBeEmpty() + + expect($('#toolbar')).toBeHidden() + expect($('#toolbar')).toBeVisible() + + expect($('#popup')).toHaveCss({ margin: "10px" }) + expect($('option')).toBeSelected() + + expect($('.foo')).toExist() + + expect($('a')).toHaveAttr('rel') + expect($('a')).toHaveAttr('rel', 'nofollow') + + expect($('a')).toHaveClass('rel') + expect($('a')).toHaveId('home') + + expect($('a')).toHaveHtml('') + expect($('a')).toContainHtml('') + expect($('a')).toHaveText('hi') + + expect($form).toHandle('submit') // event + expect($form).toHandleWith('submit', onSumbit) + +### Event spies + + spyOnEvent($('#some_element'), 'click'); + $('#some_element').click(); + expect('click').toHaveBeenPreventedOn($('#some_element')); + expect('click').toHaveBeenTriggeredOn($('#some_element')); diff --git a/lua.md b/lua.md new file mode 100644 index 000000000..af046c096 --- /dev/null +++ b/lua.md @@ -0,0 +1,297 @@ +title: Lua + +## Comments + + -- comment + --[[ Multiline + comment ]] + +## Invoking functions + + print() + print("Hi") + + -- You can omit parentheses if the argument is one string or table literal + print "Hello World" <--> print("Hello World") + dofile 'a.lua' <--> dofile ('a.lua') + print [[a multi-line <--> print([[a multi-line + message]] message]]) + f{x=10, y=20} <--> f({x=10, y=20}) + type{} <--> type({}) + +## Tables / arrays + + t = {} + t = { a = 1, b = 2 } + t.a = function() ... end + + t = { ["hello"] = 200 } + t.hello + + -- Remember, arrays are also tables + array = { "a", "b", "c", "d" } + print(array[2]) -- "b" (zero-indexed) + print(#array) -- 4 (length) + +## Loops + + while condition do + end + + for i = 1,5 do + end + + for i = start,finish,delta do + end + + for k,v in pairs(tab) do + end + + repeat + until condition + + -- Breaking out: + while x do + if condition then break end + end + +## Conditionals + + if condition then + print("yes") + elsif condition then + print("maybe") + else + print("no") + end + +## Variables + + local x = 2 + two, four = 2, 4 + +## Functions + + function myFunction() + return 1 + end + + function myFunctionWithArgs(a, b) + -- ... + end + + myFunction() + + anonymousFunctions(function() + -- ... + end) + + -- Not exported in the module + local function myPrivateFunction() + end + + -- Splats + function doAction(action, ...) + print("Doing '"..action.."' to", ...) + --> print("Doing 'write' to", "Shirley", "Abed") + end + + doAction('write', "Shirley", "Abed") + +## Lookups + + mytable = { x = 2, y = function() .. end } + + -- The same: + mytable.x + mytable['x'] + + -- Syntactic sugar, these are equivalent: + mytable.y(mytable) + mytable:y() + + mytable.y(mytable, a, b) + mytable:y(a, b) + + function X:y(z) .. end + function X.y(self, z) .. end + +## Metatables + + + mt = {} + + -- A metatable is simply a table with functions in it. + mt.__tostring = function() return "lol" end + mt.__add = function(b) ... end -- a + b + mt.__mul = function(b) ... end -- a * b + mt.__index = function(k) ... end -- Lookups (a[k] or a.k) + mt.__newindex = function(k, v) ... end -- Setters (a[k] = v) + + -- Metatables allow you to override behavior of another table. + mytable = {} + setmetatable(mytable, mt) + + print(myobject) + +## Classes + + Account = {} + + function Account:new(balance) + local t = setmetatable({}, { __index = Account }) + + -- Your constructor stuff + t.balance = (balance or 0) + return t + end + + function Account:withdraw(amount) + print("Withdrawing "..amount.."...") + self.balance = self.balance - amount + self:report() + end + + function Account:report() + print("Your current balance is: "..self.balance) + end + + a = Account:new(9000) + a:withdraw(200) -- method call + +## Constants + + nil + false + true + +## Operators (and their metatable names) + + -- Relational (binary) + -- __eq __lt __gt __le __ge + == < > <= >= + ~= -- Not equal, just like != + + -- Arithmetic (binary) + -- __add __sub __muv __div __mod __pow + + - * / % ^ + + -- Arithmetic (unary) + -- __unm (unary minus) + - + + -- Logic (and/or) + nil and 10 --> 10 + false and nil --> false + 10 and 20 --> 20 + + + -- Length + -- __len(array) + #array + + + -- Indexing + -- __index(table, key) + t[key] + t.key + + -- __newindex(table, key, value) + t[key]=value + + -- String concat + -- __concat(left, right) + "hello, "..name + + -- Call + -- __call(func, ...) + + +## API: Global functions [(ref)](http://lua.gts-stolberg.de/en/Basis.php) + + dofile("hello.lua") + loadfile("hello.lua") + + assert(x) -- x or (raise an error) + assert(x, "failed") + + type(var) -- "nil" | "number" | "string" | "boolean" | "table" | "function" | "thread" | "userdata" + + -- Does /not/ invoke meta methods (__index and __newindex) + rawset(t, index, value) -- Like t[index] = value + rawget(t, index) -- Like t[index] + + _G -- Global context + setfenv(1, {}) -- 1: current function, 2: caller, and so on -- {}: the new _G + + pairs(t) -- iterable list of {key, value} + ipairs(t) -- iterable list of {index, value} + + tonumber("34") + tonumber("8f", 16) + +## API: Strings + + 'string'..'concatenation' + + s = "Hello" + s:upper() + s:lower() + s:len() -- Just like #s + + s:find() + s:gfind() + + s:match() + s:gmatch() + + s:sub() + s:gsub() + + s:rep() + s:char() + s:dump() + s:reverse() + s:byte() + s:format() + +## API: Tables + + table.foreach(t, function(row) ... end) + table.setn + table.insert(t, 21) -- append (--> t[#t+1] = 21) + table.insert(t, 4, 99) + table.getn + table.concat + table.sort + table.remove(t, 4) + +## API: Math [(ref)](http://lua-users.org/wiki/MathLibraryTutorial) + + math.abs math.acos math.asin math.atan math.atan2 + math.ceil math.cos math.cosh math.deg math.exp + math.floor math.fmod math.frexp math.ldexp math.log + math.log10 math.max math.min math.modf math.pow + math.rad math.random math.randomseed math.sin math.sinh + math.sqrt math.tan math.tanh + + math.sqrt(144) + math + +## API: Misc + + io.output(io.open("file.txt", "w")) + io.write(x) + io.close() + + for line in io.lines("file.txt") + + file = assert(io.open("file.txt", "r")) + file:read() + file:lines() + file:close() + +## Reference + + http://www.lua.org/pil/13.html + http://lua-users.org/wiki/ObjectOrientedProgramming diff --git a/middleman.md b/middleman.md index 21dc33e18..fe5c6bc6e 100644 --- a/middleman.md +++ b/middleman.md @@ -62,10 +62,7 @@ title: Middleman # Build-specific configuration configure :build do - # For example, change the Compass output style for deployment activate :minify_css - - # Minify Javascript on build activate :minify_javascript # Enable cache buster diff --git a/ncftp.md b/ncftp.md new file mode 100644 index 000000000..531d5571d --- /dev/null +++ b/ncftp.md @@ -0,0 +1,20 @@ +Bookmarking + + $ ncftp + $ open -u username ftp.host.com + $ bookmark bookmarkname + +Mass download + + $ ncftpget -R bookmarkname /www/ . + +Mass upload + + $ ncftpget -R bookmarkname /www/ . + + $ ncftpget -R bookmarkname /www/ . + +Upload just the changed files + + $ git show --pretty="format:" --name-only HEAD~1 + $ ncftpget -R -C log bookmarkname /www/ . diff --git a/ruby.md b/ruby.md new file mode 100644 index 000000000..58b87a0a3 --- /dev/null +++ b/ruby.md @@ -0,0 +1,17 @@ + +* `$!` - latest error message +* `$@` - location of error +* `$_` - string last read by gets +* `$.` - line number last read by interpreter +* `$&` - string last matched by regexp +* `$~` - the last regexp match, as an array of subexpressions +* `$n` - the nth subexpression in the last match (same as $~[n]) +* `$=` - case-insensitivity flag +* `$/` - input record separator +* `$\` - output record separator +* `$0` - the name of the ruby script file +* `$*` (or `ARGV`) - the command line arguments +* `$$` - interpreter's process ID +* `$?` - exit status of last executed child process +* `$-i` `$-l` `$-p` `$-v` - Command line switches +* `$-v` (or `$VERBOSE`) - verbose mode diff --git a/rubygems.md b/rubygems.md new file mode 100644 index 000000000..9e84b3574 --- /dev/null +++ b/rubygems.md @@ -0,0 +1,18 @@ +title: Rubygems +---- + + gem build *.gemspec # Build a gem + gem install *.gem # Install locally + gem push *.gem # Upload to rubygems.org + gem yank foogem -v 0.0.1 # Take it back + gem owner -a rico@ricostacruz.com + + gem list # List local gems + gem which rake # Point to where lib/rake.rb is + gem search -r rails # [remote] Search for gems + + # https://github.com/fnando/gem-open + gem open foogem + GEM_EDITOR="vim" gem open foogem + + cd $(basename `gem which rake`) # Go to a gem's path diff --git a/sass.md b/sass.md new file mode 100644 index 000000000..e433aa261 --- /dev/null +++ b/sass.md @@ -0,0 +1,35 @@ + +### Sprites + + + // Sprite sets (applies to icon/*.png) + $icon-spacing: 0 + $icon-dimensions: true + $icon-repeat: no-repeat + $icon-position: 0 + + // Individual (applies to icon/mail.png) + $icon-mail-spacing: 0 + + @import 'icon/*.png' + @include all-icon-sprites + + // Usage + .image1 + @extend .icon-mail + + .image2 + @extend .icon-refresh; + + // ### Advanced control + // The sprite map is available as $icon-sprites. You can then use + // `sprite()` on it. + + .image3 + background: sprite($icon-sprites, refresh) + //background: url(...) 0 -16px; + + .image3-with-offset + background: sprite($icon-sprites, refresh, -2px, -9px) + //background: url(...) -2px -19px; + diff --git a/vim.md b/vim.md index bb26bdd4f..d06286380 100644 --- a/vim.md +++ b/vim.md @@ -1,9 +1,17 @@ title: vim ---- - . - repeat last command - ]p - paste under the current indentation level + . - repeat last command + ]p - paste under the current indentation level + `. - Go to last edit + C-o - Go back to previous location (C-i forward) + C-t - Go back to last tag +Command line +------------ + + - insert current word into the command line + " - paste from " register Motions -------