- Andre/Dave - Opening Remarks
- Matt Kelly - Mobile Web Landscape
- Fil Maj - Whats new in PhoneGap 2.0
- Gord Tanner - CordovaJS
- Pamela Fox - PhoneGap Pain Points
- James Burke - RequireJS and PhoneGap
- Patrick Mueller - debugging cordova apps
- Simon MacDonald - Corinthian and code
- Don Coleman - PhoneGap Plugins
- Andrew Lunny - PhoneGap/Build
| <!DOCTYPE html> | |
| <head> | |
| <title>Build report</title> | |
| <style type="text/css"> | |
| body | |
| { | |
| margin: 0px; | |
| padding: 15px; | |
| } |
| namespace :spork do | |
| SPORK_PORT = (ENV['SPORK_PORT'] || 8988).to_i | |
| FRAMEWORKS = %w[testunit rspec cucumber] | |
| desc "Start all Spork frameworks" | |
| task 'start' => FRAMEWORKS.map{ |f| "spork:#{f}:start" } | |
| desc "Stop all Spork frameworks" | |
| task 'stop' => FRAMEWORKS.map{ |f| "spork:#{f}:stop" } |
| namespace :source do | |
| def find_and_replace_in_source_files(find, replace) | |
| puts "Search and replace #{find.inspect} => #{replace.inspect}" | |
| files = %w[ .autotest .rspec .rvmrc Gemfile Procfile config.ru ].select{|f| File.exist?(f) } | |
| directories = %w[app config lib public script spec test] # exclude bin, db, doc, log, and tmp | |
| directories.each do |d| | |
| files += Dir[File.join(d, "**/*.{rb,rake,haml,erb,builder,js,coffee,css,scss}")] | |
| end |
| # Here's what I have in my CarrierWave configuration file | |
| require 'carrierwave/processing/mime_types' | |
| CarrierWave.configure do |config| | |
| config.fog_credentials = { | |
| :provider => 'AWS', # required | |
| :aws_access_key_id => 'REPLACE WITH AWS KEY', # required | |
| :aws_secret_access_key => 'REPLACE WITH AWS SECRET' # required | |
| } |
| // clang -framework Foundation -c properties.m | |
| #import <Foundation/Foundation.h> | |
| @interface PropertyBug : NSObject { | |
| NSString* _value; | |
| } | |
| @property (copy) NSString* value; |
Dear C++ library writer,
-
If your library forces me to use
newall over, I will hate you. -
If your library has types with bogus values, I will hate you.
-
If the documentation for your library gets the terminology of its own domain wrong, I will hate you.
-
If I say "My God, it's full of stars!" when I see the function signatures in your library, I will hate you.
The Liang-Barsky algorithm is a cheap way to find the intersection points between a line segment and an axis-aligned rectangle. It's a simple algorithm, but the resources I was pointed to didn't have particularly good explanations, so I tried to write a better one.
Consider a rectangle defined by x_min ≤ x ≤ x_max and y_min ≤ y ≤ y_max, and a line segment from (x_0, y_0) to (x_0 + Δ_x, y_0 + Δ_y). We'll be assuming at least one of Δ_x and Δ_y is nonzero.
(I'm working with Flash, so I'll be using the convention that y increases as you go down.)
We want to distinguish between the following cases:
| #!/usr/bin/env ruby | |
| require 'rubygems' | |
| gem 'ruby-vips' | |
| gem 'oil' | |
| require 'vips' | |
| require 'oil' |
| $stack, $draws = [], {} | |
| def method_missing *args | |
| return if args[0][/^to_/] | |
| $stack << args.map { |a| a or $stack.pop } | |
| $draws[$stack.pop(2)[0][0]] = args[1] if args[0] == :< | |
| end | |
| class Array | |
| def +@ |
