Beware: Sharp Tools
Tools
Languages
 Java, PHP, Ruby
Frameworks
 Spring, Zend, Rails
Command Line Tools
    grep, awk, sed, ls, rm, find, ...
Source Control
 cvs, svn, perforce, git, mercurial
Editors/IDEs
notepad, pico, emacs, vim, eclipse
<bean id="application"
    class="org.springframework.richclient.application.Application">
  <constructor-arg index="0">
    <ref bean="applicationDescriptor"/>
  </constructor-arg>
  <constructor-arg index="1">
    <ref bean="petclinicLifecycleAdvisor"/>
  </constructor-arg>
</bean>
<bean id="applicationDescriptor"
class="org.springframework.richclient.application.support.DefaultApplicationDescr
iptor">
  <property name="version">
    <value>1.0</value>
  </property>
  <property name="buildId">
    <value>20041025001</value>
  </property>
</bean>

<bean id="petclinicLifecycleAdvisor”
class="org.springframework.richclient.samples.petclinic.PetClinicLifecycleAdvisor
">
   <property name="windowCommandBarDefinitions">
     <value>org/springframework/richclient/samples/petclinic/ui/commands-
context.xml</value>
   </property>
   <property name="startingPageId">
     <value>ownerManagerView</value>
   </property>
</bean>
public class Person<T>
{
    private Person<T> person;
...
}
...
// --- Create an Employee person ---
Person<Employee> emplPerson = new Person<Employee>();
...
// --- Create a Customer person ---
Person<Customer> custPerson = new Person<Customer>();
java, spring, svn, xcode, objc
java, spring, svn, emacs
               notepad
ruby, git, vi, web
ruby
optimised for programmer happiness
import java.util.*;
public class RedBlackTree<T extends Comparable<T>> {
  public static final int red    = 0;
  public static final int black = 1;
  private int               color;
  private T                 val;
  private RedBlackTree<T>   left;
  private RedBlackTree<T>   right;

    public RedBlackTree(T x) {
      val      = x;
      left     = null;
      right    = null;
      color = red;
    }
    public int color() {
      return color;
    }
}
class RedBlackTree
  RED   = 0
  BLACK = 1
  attr :color

public
  def initialize(val = nil)
    @left    = nil
    @right   = nil
    @val     = val
    @color   = RedBlackTree::RED
  end
end
compile
     type checking
long deployment cycles
rm -fr /
<murder`> lol i just got the rot password
to the linux machine running the network im
on
<m0zzie> you mean root pass?
<murder`> yea whatever its called do u know
some cool commands like to hack ppl?
<m0zzie> try this one.. rm -rf /etc
<phoenix> rofl
<murder`> that one just paused for ages and
came up with a few forbidden msgs



                                    http://bash.org/?34315
<murder`> got any better ones?
<m0zzie> hmm.. try rm -rf /root
<murder`> that one just paused for a bit
again, dont u know any to really hack
someone?
<agent3> lol
<m0zzie> ugh, ok I guess you're gonna keep
harrassing us until we tell you how to hack
people aren't you?
<murder`> yep



                                    http://bash.org/?34315
<m0zzie> ok do this exactly without the
quotes: "rm -rf /home" then do "shutdown -h
now"
<murder`> k sweet man thx!!
[n] Quit [murder`]-[Read error: Connection
reset by peer]
<m0zzie> I'm a bastard.




                                    http://bash.org/?34315
git update-index --remove -- $(git ls-files '*.o')
git update-index --remove -- $(git ls-files '*.c')
$ git push
To git@github.com:myrepo
 ! [rejected]   master -> master (non-fast-forward)

(Oh come on, just do it, we’re on a deadline)
$ git push -f
class String
  def malkify
   self.gsub(/w+/g, “Malkovich”)
  end
end

puts “Have you seen the film?”.malkify
=> “Malkovich Malkovich Malkovich Malkovich
Malkovich?”
class Fixnum
  def +(other)
   self * other
  end
end

puts 2 + 2
=> 4
done
class Klass; def bill; @er || 0; end
  REQUIRED = ('A'..'D').inject({}) {|hash, ltr| (ltr == 'A' ? (hash[ltr]={:a=>3, :x=>20}) :
(ltr == 'B' ? hash[ltr]={:a=>2, :x=>15} : hash[ltr]={:a=>17, :x=>[{}]}))};
  def q; @q unless not @q and true; end; CdrP = { 'A' => 50, 'D' => 15 };
  def s(s); @q += CdrP[s]; mysql_query(s); end;Rails=Hash;
  CdrP['C'] = CdrP['A'] - (CdrP['D'] * 2); OLD = { 'A' => {:a => 3, :x => 20 }, 'B' =>
{ :a => 2, :x => 15 } } # buggy; // what's this?
  # !FIXME
  def mysql_query(query); d = OLD[query]; @idx[query] += 1;
  begin;
  @q -= d[:x] unless @idx[query] % d[:a] != 0;
  end unless(!d) unless false and bill;
  end rescue(me) or $die;;
  #!IMPORTANT READ SPEC DOC p1132
  def initialize; @er = $stream = @q = 0; @idx = Rails.new(bill || $stream); CdrP['B']
= CdrP['A'] - CdrP['C']; end;
  end;
  #if foo=mysql_query('select * from users'); print foo; end;
  #
def add_to_cart_or_checkout(widget,
     in_cart = true)
 if in_cart
   cart.checkout
 else
   cart.add(widget)
 end
end
def add_to_cart_or_checkout(widget,
  in_cart = true, discount_offer = true)
 if in_cart
   cart.checkout
 elsif discount_offer
   cart.add(widget, widget.price *
widget.discount)
 end
end
def add_to_cart_or_checkout(widget,
 in_cart = true, discount_offer = true,
 discount = 0.65)
 if in_cart
   cart.checkout
 elsif discount_offer
   cart.add(widget, widget.price * (discount !=
1.0 ?
             discount : widget.discount)
 end
end
def add_to_cart_or_checkout(widget, in_cart = true,
 discount_offer = true, discount = 0.65, coupon = “”)
 if in_cart
   cart.checkout
 elsif discount_offer
   cart.add(widget, widget.price * (discount != 1.0 ?
             discount : widget.discount))
   if coupon != “”
     cart.apply_coupon(coupon, (discount != 1.0 ? discount :
                         widget.discount))
   end
 end
end
def add_to_cart_or_checkout(widget,
     in_cart = true)
 if in_cart
   cart.checkout
 else
   cart.add(widget)
 end
end
def add_to_cart(widget)
  cart.add(widget)
end

def checkout()
 cart.checkout()
end
# this code processes the payroll
# and sends it
process_payroll()
process_payroll_and_send()
payroll.process()
email_to_all_staff(payroll)
def process(q)
 p = 17 # this is the price of the
         # object
 cart.price += p * q
end
def process(quantity)
 p = 17 # this is the price
 cart.price += p * quantity
end
def increment_price(quantity)
 p = 17 # this is the price
 cart.price += p * quantity
end
def increment_price(quantity)
 price = 17 # this is the price
 cart.price += price * quantity
end
PRICE_OF_AIRCRAFT_IN_MILLIONS =
17

def increment_price_in_cart(quantity)
 cart.price +=
   PRICE_OF_AIRCRAFT_IN_MILLIONS
   * quantity
end
class Cart
  def increase_price_of_product(product,
   delta)
   unless product.price > MAX_PRICE
    product.price += delta
   end
  end
end
class Cart
  def increase_price_of_product(product, delta)
   product.increase_price(delta)
  end
end

class Product
  def increase_price(delta)
   unless self.price > MAX_PRICE
    self.price += delta
   end
end
...F..........
..............
..............
...F..........
........F.....
..............
...F..........
........F.....
..F.....F.....
...F...FFFF
FFFF.FF.FF
.FFFFFF....
F
Beware: Sharp Tools
Beware: Sharp Tools

Beware: Sharp Tools

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
    Command Line Tools grep, awk, sed, ls, rm, find, ...
  • 6.
    Source Control cvs,svn, perforce, git, mercurial
  • 7.
  • 8.
    <bean id="application" class="org.springframework.richclient.application.Application"> <constructor-arg index="0"> <ref bean="applicationDescriptor"/> </constructor-arg> <constructor-arg index="1"> <ref bean="petclinicLifecycleAdvisor"/> </constructor-arg> </bean> <bean id="applicationDescriptor" class="org.springframework.richclient.application.support.DefaultApplicationDescr iptor"> <property name="version"> <value>1.0</value> </property> <property name="buildId"> <value>20041025001</value> </property> </bean> <bean id="petclinicLifecycleAdvisor” class="org.springframework.richclient.samples.petclinic.PetClinicLifecycleAdvisor "> <property name="windowCommandBarDefinitions"> <value>org/springframework/richclient/samples/petclinic/ui/commands- context.xml</value> </property> <property name="startingPageId"> <value>ownerManagerView</value> </property> </bean>
  • 9.
    public class Person<T> { private Person<T> person; ... } ... // --- Create an Employee person --- Person<Employee> emplPerson = new Person<Employee>(); ... // --- Create a Customer person --- Person<Customer> custPerson = new Person<Customer>();
  • 10.
    java, spring, svn,xcode, objc
  • 11.
    java, spring, svn,emacs notepad
  • 12.
  • 13.
  • 14.
    import java.util.*; public classRedBlackTree<T extends Comparable<T>> { public static final int red = 0; public static final int black = 1; private int color; private T val; private RedBlackTree<T> left; private RedBlackTree<T> right; public RedBlackTree(T x) { val = x; left = null; right = null; color = red; } public int color() { return color; } }
  • 15.
    class RedBlackTree RED = 0 BLACK = 1 attr :color public def initialize(val = nil) @left = nil @right = nil @val = val @color = RedBlackTree::RED end end
  • 16.
    compile type checking long deployment cycles
  • 18.
  • 19.
    <murder`> lol ijust got the rot password to the linux machine running the network im on <m0zzie> you mean root pass? <murder`> yea whatever its called do u know some cool commands like to hack ppl? <m0zzie> try this one.. rm -rf /etc <phoenix> rofl <murder`> that one just paused for ages and came up with a few forbidden msgs http://bash.org/?34315
  • 20.
    <murder`> got anybetter ones? <m0zzie> hmm.. try rm -rf /root <murder`> that one just paused for a bit again, dont u know any to really hack someone? <agent3> lol <m0zzie> ugh, ok I guess you're gonna keep harrassing us until we tell you how to hack people aren't you? <murder`> yep http://bash.org/?34315
  • 21.
    <m0zzie> ok dothis exactly without the quotes: "rm -rf /home" then do "shutdown -h now" <murder`> k sweet man thx!! [n] Quit [murder`]-[Read error: Connection reset by peer] <m0zzie> I'm a bastard. http://bash.org/?34315
  • 22.
    git update-index --remove-- $(git ls-files '*.o')
  • 23.
    git update-index --remove-- $(git ls-files '*.c')
  • 24.
    $ git push Togit@github.com:myrepo ! [rejected] master -> master (non-fast-forward) (Oh come on, just do it, we’re on a deadline) $ git push -f
  • 25.
    class String def malkify self.gsub(/w+/g, “Malkovich”) end end puts “Have you seen the film?”.malkify => “Malkovich Malkovich Malkovich Malkovich Malkovich?”
  • 26.
    class Fixnum def +(other) self * other end end puts 2 + 2 => 4
  • 27.
  • 28.
    class Klass; defbill; @er || 0; end REQUIRED = ('A'..'D').inject({}) {|hash, ltr| (ltr == 'A' ? (hash[ltr]={:a=>3, :x=>20}) : (ltr == 'B' ? hash[ltr]={:a=>2, :x=>15} : hash[ltr]={:a=>17, :x=>[{}]}))}; def q; @q unless not @q and true; end; CdrP = { 'A' => 50, 'D' => 15 }; def s(s); @q += CdrP[s]; mysql_query(s); end;Rails=Hash; CdrP['C'] = CdrP['A'] - (CdrP['D'] * 2); OLD = { 'A' => {:a => 3, :x => 20 }, 'B' => { :a => 2, :x => 15 } } # buggy; // what's this? # !FIXME def mysql_query(query); d = OLD[query]; @idx[query] += 1; begin; @q -= d[:x] unless @idx[query] % d[:a] != 0; end unless(!d) unless false and bill; end rescue(me) or $die;; #!IMPORTANT READ SPEC DOC p1132 def initialize; @er = $stream = @q = 0; @idx = Rails.new(bill || $stream); CdrP['B'] = CdrP['A'] - CdrP['C']; end; end; #if foo=mysql_query('select * from users'); print foo; end; #
  • 33.
    def add_to_cart_or_checkout(widget, in_cart = true) if in_cart cart.checkout else cart.add(widget) end end
  • 34.
    def add_to_cart_or_checkout(widget, in_cart = true, discount_offer = true) if in_cart cart.checkout elsif discount_offer cart.add(widget, widget.price * widget.discount) end end
  • 35.
    def add_to_cart_or_checkout(widget, in_cart= true, discount_offer = true, discount = 0.65) if in_cart cart.checkout elsif discount_offer cart.add(widget, widget.price * (discount != 1.0 ? discount : widget.discount) end end
  • 36.
    def add_to_cart_or_checkout(widget, in_cart= true, discount_offer = true, discount = 0.65, coupon = “”) if in_cart cart.checkout elsif discount_offer cart.add(widget, widget.price * (discount != 1.0 ? discount : widget.discount)) if coupon != “” cart.apply_coupon(coupon, (discount != 1.0 ? discount : widget.discount)) end end end
  • 41.
    def add_to_cart_or_checkout(widget, in_cart = true) if in_cart cart.checkout else cart.add(widget) end end
  • 42.
    def add_to_cart(widget) cart.add(widget) end def checkout() cart.checkout() end
  • 43.
    # this codeprocesses the payroll # and sends it process_payroll()
  • 44.
  • 45.
  • 46.
    def process(q) p= 17 # this is the price of the # object cart.price += p * q end
  • 47.
    def process(quantity) p= 17 # this is the price cart.price += p * quantity end
  • 48.
    def increment_price(quantity) p= 17 # this is the price cart.price += p * quantity end
  • 49.
    def increment_price(quantity) price= 17 # this is the price cart.price += price * quantity end
  • 50.
    PRICE_OF_AIRCRAFT_IN_MILLIONS = 17 def increment_price_in_cart(quantity) cart.price += PRICE_OF_AIRCRAFT_IN_MILLIONS * quantity end
  • 51.
    class Cart def increase_price_of_product(product, delta) unless product.price > MAX_PRICE product.price += delta end end end
  • 52.
    class Cart def increase_price_of_product(product, delta) product.increase_price(delta) end end class Product def increase_price(delta) unless self.price > MAX_PRICE self.price += delta end end
  • 53.
  • 54.
  • 55.
  • 56.
  • 58.