ϦÆü»ï

¥¹¥Ý¥ó¥µ¡¼¥µ¥¤¥È
¤³¤Î¹­¹ð¤Ï60Æü°Ê¾å¹¹¿·¤¬¤Ê¤¤¥Ö¥í¥°¤Ëɽ¼¨¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£
¿·¤·¤¤µ­»ö¤ò½ñ¤¯¤³¤È¤Ç¹­¹ð¤ò¾Ã¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
| ¥¹¥Ý¥ó¥µ¡¼¥É¥ê¥ó¥¯ | - | | - | - |
¤Ï¤Æ¤Ê¤Ë°Ü¹Ô¤·¤Þ¤·¤¿
¤Ï¤Æ¤Ê¤Ë°Ü¹Ô¤·¤Þ¤·¤¿
| YAGURA | - | 11:30 | comments(18) | trackbacks(131) |
¤Õ¤Ä¤±¤ë

9¾Ï¤Þ¤ÇÆÉ¤ß½ª¤ï¤Ã¤¿¡£¼ç¤ËÅÅ¼Ö¤ÇÆÉ¤ó¤Ç¤ë¤Î¤Ç¤Ê¤«¤Ê¤«ÆÉ¤ß¿Ê¤Þ¤Ê¤¤¤Ê¡£Ã±¤ËÆÉ¤à¤À¤±¤¸¤ã¤Ê¤¯¤Æ¡¢±é½¬ÌäÂê¤Ç¼ê¤òư¤«¤·¤Æ¤ß¤Ê¤¤¤È¤Ê¤«¤Ê¤«¿È¤Ë¤Ä¤«¤Ê¤¤¤·¡£

¤³¤³¤Þ¤ÇÆÉ¤ó¤À´¶¤¸¤À¤È¡¢Æ±¤¸´Ø¿ô·¿¸À¸ì¤Ç¤â Lisp¤è¤ê¿ô¼°¤Ë¶á¤¤µ­½Ò·Á¼°¤Ê¤Î¤Ç¡¢Íý²ò¤·¤ä¤¹¤¤¤è¤¦¤Ê¡£¥¤¥ó¥Ç¥ó¥È¤ä$¤Ç¡¢¥³¡¼¥É¤â¥¹¥Ã¥­¥ê¤¹¤ë¤Î¤ÇÆÉ¤ß¤ä¤¹¤¤¡£

| YAGURA | ¥½¥Õ¥È¥¦¥§¥¢ | 01:26 | comments(0) | trackbacks(1) |
Firefox¤È¤«

º£¤Þ¤Ç¤º¤Ã¤ÈSleipnir¤ò»È¤Ã¤Æ¤¤¤¿¤±¤É¡¢¤Ä¤¤¤ËFirefox¤ËÀÚ¤êÂØ¤¨¤Þ¤·¤¿¡£ ²È¤È²ñ¼Ò¤Î¥Ñ¥½¥³¥óξÊý¤ËFirefox¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Î¤¬ÌÌÅݤǥǥե©¥ë¥Èµ¡Ç½¤¬Ë­ÉÙ¤ÊSleipnir¤ò»È¤¤Â³¤±¤Æ¤¿¤±¤É¡¢ºÇ¶á¤ÏBookmarklet¤ÎÅÐÏ¿¤¬ÌÌÅݤˤʤäƤ­¤¿¤Î¤Ç¡£

    Äɲä·¤¿Firefox¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó
  • Tab Mix Plus: ¥¿¥Öµ¡Ç½³ÈÄ¥
  • Google Blowser Sync: Ê£¿ô¤Î¥Ñ¥½¥³¥ó¤ÇFirefox¤ÎÀßÄê¤ò¶¦Í­
  • FoxyTunes: Firefox¤«¤éiTunes¤òÁàºî

    ºÇ¶áƳÆþ¤·¤¿¥½¥Õ¥È¤â¤Ä¤¤¤Ç¤Ë¡£
  • xyzzy: WindowsÍÑEmacs¤¬½Å¤¤¤Î¤Ç¤³¤Á¤é¤â¤è¤¦¤ä¤¯¾è¤ê´¹¤¨
  • Thumbwin: ¥¢¥¤¥³¥ó²½¤·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥µ¥à¥Í¥¤¥ë¤ò¥Ç¥¹¥¯¥È¥Ã¥×¤Ëɽ¼¨
  • Livedoor Reader: ¸À¤ï¤º¤ÈÃΤ줿? RSS¥ê¡¼¥À¡¼¡£

| YAGURA | - | 01:22 | comments(67) | trackbacks(0) |
¥ª¥Ö¥é¥Ö2006²Æ¥¤¥Ù¥ó¥È

6/29¤Î¥ª¥Ö¥é¥Ö¥¤¥Ù¥ó¥È¤Ë»²²Ã¤·¤Æ¤­¤¿¡£ ÅöÆü¤ÏÉ÷¼Ù¤ÇÂÎÄ´¤¬ºÇ°­¤Ç²¿ÅÙ¤âÅÓÃæ¤«¤éµ¢¤í¤¦¤«¤È»×¤Ã¤¿¤±¤É¡¢¤É¤Î¥»¥Ã¥·¥ç¥ó¤â³Ú¤·¤¤¤â¤Î¤À¤Ã¤¿¡£µ¢¤é¤Ê¤¯¤Æ¤è¤«¤Ã¤¿¡£¥¹¥¿¥Ã¥Õ¤Î³§¤µ¤ó¤Î¤ª¤â¤Æ¤Ê¤·¤äÀ¹¤ê¾å¤²¤âÁÇÀ²¤é¤·¤«¤Ã¤¿¡£

*¥ï¡¼¥ë¥É¥«¥Õ¥§
¤¤¤í¤¤¤í¤Ê¿Í¤ÈµÄÏÀ¤Ç¤­¤ë¤Î¤¬³Ú¤·¤¤¡£¤¿¤À¡¢¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Î³Ú¤·¤µ¤Ê¤É¡¢°ì¤Ä¤Î¥Æ¡¼¥Þ¤Ë¤Ä¤¤¤Æ¤â¤¦¾¯¤·¸ì¤ì¤Æ¤âÎɤ«¤Ã¤¿¤Î¤È¡¢½ÅÊ£¤·¤Æ¤¤¤ë¥Æ¡¼¥Þ¤¬¤¤¤¯¤Ä¤«¤¢¤Ã¤¿¤Î¤Ç¡¢³«»ÏÁ°¤ËÁ´ÂΤǥơ¼¥Þ¤òÁª¹Í¤¹¤ë»þ´Ö¤¬¤¢¤ë¤È¤µ¤é¤Ë¤è¤«¤Ã¤¿¡£

*¥Ñ¥Í¥ë¥Ç¥£¥¹¥«¥Ã¥·¥ç¥ó
¤Ï¤Ö¤µ¤óÌÌÇò¡£Ã£¿Í¥×¥í¥°¥é¥Þ¹¥¤­¤Ê¤Î¤Ç¡¢DRY½ÅÍפȸÀ¤ï¤ì¤¿¤Î¤¬¤¦¤ì¤·¤¤¡£ ¥ª¥ÖǾ¥«¡¼¤Î¥¨¥¢¥³¥ó¥Õ¥£¥ë¥¿¡¼¤Ï¡¢»ä¤ÎÇã¤Ã¤¿¥ª¥ÖǾËܤǽÐÍè¤Æ¤¤¤¿¤³¤È¤¬È¯³Ð¡£

| YAGURA | ¥½¥Õ¥È¥¦¥§¥¢ | 03:03 | comments(0) | trackbacks(0) |
Binding.of_caller

Binding.of_caller ¤òÄ´¤Ù¤Æ¤ß¤Þ¤·¤¿¡£¥¯¥ê¥Æ¥£¥«¥ë¥»¡¼¥Õ¤Ê¤Î¤Ï¤â¤Á¤í¤ó¡¢·Ñ³¤ò»È¤Ã¤Æ¸úΨÎɤ¯ caller binding¤ò¼èÆÀ¤·¤Æ¤Þ¤¹¡£¡Ê¤ë¤Ó¤Þ¤Îµ­»ö¤Ç²òÀ⤬¤¢¤Ã¤¿¤Î¤Ë¤­¤Á¤ó¤ÈÍý²ò¤Ç¤­¤Æ¤Ê¤«¤Ã¤¿¤è¡£¡£¡Ë¤¿¤È¤¨¤Ð¡¢´Ø¿ôA¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ôB¤ÎÃæ¤Ç Binding.of_caller ¤ò»È¤¦¤È°Ê²¼¤Î¤è¤¦¤Êή¤ì¤Ë¤Ê¤ê¤Þ¤¹¡£

A¤«¤éB¤ò¸Æ¤Ó½Ð¤¹->BÆâ¤ÇBinding.of_caller(&block)¤ò¼Â¹Ô->·Ñ³¥Ý¥¤¥ó¥È¤ò¥»¥Ã¥È->set_trace_func¤ò¥»¥Ã¥È->´Ø¿ôB¤«¤éreturn¤·¤Æ´Ø¿ôA¤ËÌá¤ë->set_trace_func ¤Ë¤è¤ê·Ñ³¥Ý¥¤¥ó¥È¤«¤éºÆ³«->´Ø¿ôA¤Îbinding¤ò¼èÆÀ->A¤Îbinding¤ò¥Ñ¥é¥á¡¼¥¿¤Ë¤·¤Æ block¤ò¼Â¹Ô¡£

¤¿¤À¤·¡¢Binding.of_caller ¤Ï´Ø¿ôB¤ÎºÇ¸å¤Î¼°¤Ë¤·¤Ê¤¤¤È set_trace_func¤¬´üÂÔÄ̤ê¤Ëư¤«¤Ê¤¤¡Ê¤³¤Î¤¿¤á¤Ë Binding.of_caller¤Ï¥¯¥í¡¼¥¸¥ã¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡Ë¡£¤ä¤ä¤³¤·¤¤¤±¤É¡¢¤¦¤Þ¤¤¤Ê¤¡¡£¼«Ê¬¤Ç¼ÂÁõ¤·¤Æ¤¿¤é»×¤¤¤Ä¤«¤Ê¤¤¤Ê¡£

| YAGURA | ¥½¥Õ¥È¥¦¥§¥¢ | 19:07 | comments(0) | trackbacks(1) |
³¡§Ruby¤ÇÆâÊñɽ¸½

ÇÛÎó¥ê¥Æ¥é¥ë([1,2,3]¤Î¤è¤¦¤ÊÇÛÎó¤Î¤³¤È¤ò¤³¤¦¸Æ¤Ö¤é¤·¤¤)¤Îinitialize¾å½ñ¤­¤Ï̵Íý¤Ã¤Ý¤¤¤Î¤ÇÄü¤á¤Æ¡¢¥³¡¼¥É¤òÀ°Íý¤·¤Æ¤ß¤Þ¤·¤¿¡Ê¤Ä¤¤¤Ç¤Ë¥Ð¥°¼è¤ê¤â¡Ë¡£ ÍѸì¤Ï¤³¤Á¤é¤ò»²¹Í¤Ë¤µ¤»¤ÆÄº¤­¤Þ¤·¤¿¡£

½ñ¼°¡§
I['value_expression' | 'var <- source',  'predicate_1', 'predicate_2', ¡¦¡¦¡¦, 'predicate_n']

¤³¤Î¼°¤Ï°Ê²¼¤Î¤è¤¦¤Ê¼°¤ËŸ³«¤µ¤ì¤Þ¤¹¡£

source.select do |var|
  predicate_1(var) &&  predicate_2(var) && ¡¦¡¦¡¦ && predicate_n(var)
end.map do |var|
  value_expression(var)
end
Îã1:
xs = [10,30,3,-5,1,10,100,-60]
p I['(x*2).abs' | 'x<-xs', 'x < 50']
=> [20, 60, 6, 10, 2, 20, 120]
Îã2:
def quicksort(x = nil, *xs)
  return []  if x == nil
  quicksort(*I['y' | 'y <- xs', 'y < x']) + [x] + quicksort(*I['y' | 'y <- xs', 'y >= x'])
end
p quicksort(*xs)
=> [-60, -5, 1, 3, 10, 10, 30, 100]
¥³¡¼¥É¤Ï¤³¤Á¤é¡§
require 'active_support/binding_of_caller'

class Intention
  def initialize(value_expression, var, source)
    @value_expression = value_expression
    @var = var
    @source = source
  end
  
  def to_a(predicates, binding)
    predicates << 'true'  if predicates == []
    eval(<<-EOF, binding)
      #@source.select {|#@var|  #{predicates.join('&&')} }.map do |#@var|
        #@value_expression
      end
    EOF
  end
end

class String
  def |(other)
    raise  unless other =~ /^(.+)<-(.+)$/
    Intention.new(self, $1, $2)
  end
end

class I
  def self.[](intention, *predicates)
    raise  unless  intention.instance_of?(Intention)
    Binding.of_caller do |binding|
      intention.to_a(predicates, binding)
    end
  end
end
| YAGURA | ¥½¥Õ¥È¥¦¥§¥¢ | 18:15 | comments(0) | trackbacks(0) |
Ruby¤ÇÆâÊñɽ¸½

Haskell¤ÎÆâÊñɽ¸½¤òÃΤäÆRuby¤Ç¤â»È¤¤¤¿¤¯¤Ê¤Ã¤¿¡£»î¤·¤Ë¼ÂÁõ¡£

require 'active_support/binding_of_caller'

class Naiho
  attr_reader :element, :bind, :range
  def initialize(element, bind, range)
    @element = element
    @bind = bind
    @range = range
  end
  
  def to_list(restrictions, binding)
    eval(<<-NAIHO, binding)
      #@range.select {|#@bind|  #{restrictions.join('&&')} }.map do |#@bind|
        #@element
      end
    NAIHO
  end
end

class String
  def |(other)
    raise  unless other =~ /^(.+)<-(.+)$/
    Naiho.new(self, $1, $2)
  end
end

$n = Object.new
def $n.[](naiho, *restrictions)
  raise  unless  naiho.instance_of?(Naiho)
  Binding.of_caller do |binding|
    naiho.to_list(restrictions, binding)
  end
end


=begin
class Array
  def initialize(args)
    if args.first.instance_of?(Naiho)
      naiho, *restrictions = args
      Binding.of_caller do |binding|
        naiho.to_list(restrictions, binding)
      end
    else
      super
    end
  end
end
=end
Îã1:
xs = [10,20,3,-5,1,10,100]
$n['x*2' | 'x <- xs', 'x <= 10']
=> [20, 6, -10, 2, 20]
Îã2:
def quicksort(x = nil, *xs)
  return []  if x == nil
  quicksort(*$n['y' | 'y <- xs', 'y < x']) + [x] + quicksort(*$n['y' | 'y <- xs', 'y >= x'])
end
quicksort(*xs)
=> [-5, 1, 3, 10, 10, 20, 100]

¤Û¤ó¤È¤Ï¡¢Array¤Îinitialize¤ò¾å½ñ¤­¤Ç¤­¤ì¤Ð°Ê²¼¤Î¼°¤ÇºÑ¤à¤ó¤À¤±¤É¡¢ÇÛÎ󼰤ξì¹ç¤Ï Array¤Îinitialize¤¬¸Æ¤Ð¤ì¤Ê¤¤¤ß¤¿¤¤¤À¡£set_trace_func¤Ë¤¹¤éÈ¿±þ¤·¤Ê¤«¤Ã¤¿¡£

['x*2' | 'x <- xs', 'x <= 10']

¤³¤Î¼ÂÁõ¤Î¤¿¤á¤Ë¡¢caller binding¤¬¼èÆÀ¤Ç¤­¤Ê¤¯¤Æº¤¤Ã¤Æ¤¤¤¿¤È¤³¤í¤Ë¡¢¤ë¤Ó¤Þ¤ÎRails¤Îµ­»ö¤ÇRails¤Ïset_trace_func¤Ç¼Â¸½¤·¤Æ¤¤¤ë¤³¤È¤òÃΤä¿¡£¤È¤¤¤¦¤ï¤±¤Ç¡¢í´í°¤Ê¤¯binding_of_caller¤òÍøÍÑ¡£¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤Ï¤Ê¤¯¤Ê¤ê¤½¤¦¤À¤±¤É¡¢¤½¤ÎÊդϷѳ¤ò»È¤¦¤³¤È¤Ç¤É¤¦¤Ë¤«¤·¤Æ¤ë¤Î¤«¤Ê¡£¤½¤Î¤¦¤Á¸«¤Æ¤ß¤è¤¦¡£

¤½¤ì¤Ë¤·¤Æ¤â¥á¥¿¥×¥í¥°¥é¥ß¥ó¥°¤Ï³Ú¤·¤¤¤ä¡£

| YAGURA | ¥½¥Õ¥È¥¦¥§¥¢ | 22:24 | comments(0) | trackbacks(1) |
RSpec¤Î³ÈÄ¥

RSpec¤Î¥¹¥¿¥Ã¥¯¤ÎÎã¤À¤È¡¢¥¹¥¿¥Ã¥¯¤Î»ÅÍͤò¡Ö¶õ¡×¡¢¡ÖÍ×ÁǤ¬1¤Ä¤À¤±¡×¡¢¡Ö¤Û¤È¤ó¤ÉËþÇաס¢¡ÖËþÇաפΣ´¤Ä¤Î¥³¥ó¥Æ¥­¥¹¥È¤Çɽ¤·¤Æ¤¤¤ë¤ó¤À¤±¤É¡¢¤³¤ì¤À¤ÈÍ×ÁǤ¬2¤ä3¤Î¤È¤­¤Î¾ì¹ç¤¬¤Ê¤¯¤Æ¡¢»ÅÍͤȤ·¤Æ¤ÏÉÔ½½Ê¬¤¸¤ã¤Ê¤¤¤À¤í¤¦¤«¡£¤³¤ì¤Ï¤¿¤Ö¤ó¥¹¥¿¥Ã¥¯¤Î¿¶¤ëÉñ¤¤¤¬ÊѤï¤ë£´¤Ä¤Î¶­³¦¤ò¥³¥ó¥Æ¥­¥¹¥È¤È¤·¤ÆÁª¤ó¤Ç¤¤¤ë¤«¤é¤Ç¤¢¤Ã¤Æ¡¢»ÅÍͤȤ¤¤¦¤è¤ê¤Ï¥Æ¥¹¥È¥±¡¼¥¹¤Ã¤Ý¤¤¤è¤¦¤Ê¡£

»ÅÍͤòµ­½Ò¤¹¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢»ÅÍͤȾå¤Î¤è¤¦¤Ê»ÅÍͤζñÂÎÎã¤òʬ¤±¤Æ¹Í¤¨¤¿¤¤¤È»×¤¦¡£¤¿¤È¤¨¤Ð¥¹¥¿¥Ã¥¯¤Ç¤¢¤ì¤Ð¡Ö¶õ¡×¡¢¡ÖËþÇաס¢¡Ö¶õ¤Ç¤â¤Ê¤¯ËþÇդǤâ¤Ê¤¤¡×¤Î»°¤Ä¤ò¥³¥ó¥Æ¥­¥¹¥È¤¹¤ë¡£¤³¤Î¾ì¹ç¤Î¥³¥ó¥Æ¥­¥¹¥È¤ÏÃê¾ÝŪ¤Ç¡¢°ì¤Ä°Ê¾å¤Î¶ñÂÎÎã¤ËÂбþ¤¹¤ë¡£¡Ö¶õ¡×¤Î¾ì¹ç¤Ï°ì¤Ä¤À¤±¤À¤±¤É¡¢¡ÖËþÇաפä¡Ö¶õ¤Ç¤â¤Ê¤¯ËþÇդǤâ¤Ê¤¤¡×¤Ï¡¢¤¤¤í¤¤¤í¤Ê¶ñÂÎÎ㤬¤¢¤ê¤¨¤ë¡£Í×ÁǤ¬°ì¤Ä¤À¤±¤Î¥¹¥¿¥Ã¥¯¡¢¤Û¤È¤ó¤ÉËþÇդΥ¹¥¿¥Ã¥¯¤Ï¡¢¡Ö¶õ¤Ç¤â¤Ê¤¯ËþÇդǤâ¤Ê¤¤¡×¥³¥ó¥Æ¥­¥¹¥È¤Î¶ñÂÎÎã¤Î°ì¼ï¤À¡£

»î¤·¤Ë¡¢°ì¤Ä¤Î¥³¥ó¥Æ¥­¥¹¥È¤ÇÊ£¿ô¤Î¶ñÂÎÎã¤òɽ¤»¤ë¤è¤¦¤Ë¡¢RSpec¤ò³ÈÄ¥¤·¤Æ¤ß¤¿¡£add_instance¤Ç¶ñÂÎÎã¤òÄɲäǤ­¤ë¡£specify¤Ïcontext¤Î¶ñÂÎÎã¤Î¿ô¤À¤±·«¤êÊÖ¤·¼Â¹Ô¤¹¤ë¡£¥¹¥¿¥Ã¥¯¤Î¾ì¹ç¡¢²¼¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ë¤±¤É¡¢¤â¤Ã¤È¤­¤ì¤¤¤Ë»ÅÍͤäݤ¯½ñ¤±¤Ê¤¤¤«¤Ê¡£¤½¤â¤½¤â»ÅÍͤäݤµ¤Ã¤Æ¤Ê¤ó¤À¤Ã¤ÆÏäˤʤäƤ¯¤ë¤Î¤«¡£¡£

³¤­¤òÆÉ¤à ¡ä¡ä
| YAGURA | - | 01:09 | comments(0) | trackbacks(0) |
RSpec
¼«Æ°²½¥Ä¡¼¥ë¤òºîÀ®¡¦²þÎɤ¹¤ë´Ö¡¢RSpec¤Ç»ÅÍͤòÄɲᦽ¤Àµ¤·¤¿¤Î¤Ç¡¢¥Æ¥¹¥È¶îư¤Ç¤Ï¤Ê¤¯¿¶¤ëÉñ¤¤¶îư¤Ç¹Í¤¨¤ë¤È¤¤¤¦¤³¤È¤¬¤É¤¦¤¤¤¦¤³¤È¤«¡¢¾¯¤·¤ï¤«¤Ã¤Æ¤­¤¿¡£

¿¶¤ëÉñ¤¤¶îư¤È¤Ï¸À¤Ã¤Æ¤â¡¢¤ä¤Ã¤Æ¤¤¤ë¤³¤È¤Ï¥Æ¥¹¥È¶îư¤Î¤È¤­¤ÈÊѤï¤é¤Ê¤¤¡£º£²ó¤Ï°Ê²¼¤Î¤è¤¦¤Êή¤ì¤Ç¥Ä¡¼¥ë¤òºî¤Ã¤¿¡£
´ðËÜŪ¤Ê»ÅÍͤòµ­½Ò(RSpec)¢ªÆ°¤¯¥â¥Ç¥ë¡ÊRuby¤Î¥¯¥é¥¹·²¡Ë¤òºîÀ®¢ª»ÅÍÍÄ̤꤫¸¡¾Ú¡ÊRSpec¤òŬÍѡˢª»ÅÍͤò³ÈÄ¥(RSpec¤òÄɵ­)
¢ª¥â¥Ç¥ë¤ò³ÈÄ¥¢ª»ÅÍÍÄ̤꤫¸¡¾Ú¢ª¥â¥Ç¥ë¤òñ½ã²½¢ª»ÅÍÍÄ̤꤫¸¡¾Ú¢ª»ÅÍͤò³ÈÄ¥¢ª¡¦¡¦¡¦

XUnit¤È¤Î°ã¤¤¤È¤·¤Æ¤Ï¡¢XUnit¤Ç¤Ï¥Æ¥¹¥È¥±¡¼¥¹¤òµ­½Ò¤·¤Æ¤¤¤¿¤Î¤¬¡¢RSpec¤Ç¤Ï¡¢context¤Èspecify¤ò»È¤Ã¤Æ»ÅÍͤòµ­½Ò¤¹¤ë¡£context¤Èspecify¤Î´Ø·¸¤Ï·ÀÌó¤Ë¤è¤ëÀ߷פλöÁ°¾ò·ï¤È»ö¸å¾ò·ï¤Î´Ø·¸¤Ë¶á¤¤¤«¤â¤·¤ì¤Ê¤¤¡£context¤¬¥¯¥é¥¹¤Ê¤É¤Î¥â¥¸¥å¡¼¥ë¤Î¾õÂÖ¤òɽ¤·¡¢specify¤¬¤¢¤ë¾õÂ֤ˤª¤¤¤ÆËþ¤¿¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¿¶¤ëÉñ¤¤»ÅÍͤòɽ¤·¤Æ¤¤¤ë¤è¤¦¤Ë¤â¸«¤¨¤ë¤Î¤Ç¡£I/F¤ËÃåÌܤ¹¤ë¤«¡¢¾õÂÖ¤ËÃåÌܤ¹¤ë¤«¤Î°ã¤¤¤Ê¤Î¤«¤â¤·¤ì¤Ê¤¤¡£

¤¿¤À¡¢¤½¤Î¾¤Ë¤Ï¤µ¤Û¤ÉÂ礭¤Ê°ã¤¤¤ò´¶¤¸¤Ê¤«¤Ã¤¿¡£ºÇ½é¤Ï¡¢¥Æ¥¹¥È»ÅÍͤȹͤ¨¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤¿¤³¤È¤Ç¡¢¥×¥í¥°¥é¥à¤ÎÆâÉô»ÅÍ͡ʥۥ磻¥È¥Ü¥Ã¥¯¥¹»ëÅÀ¡Ë¤Ç¤Ï¤Ê¤¯¡¢³°Éô»ÅÍ͡ʥ֥é¥Ã¥¯¥Ü¥Ã¥¯¥¹»ëÅÀ¡Ë¤Ë½¸Ã椹¤ë¤è¤¦¤Ë¤Ê¤ë¤«¤È»×¤Ã¤¿¤±¤É¡¢¼«Ê¬¤Î¾ì¹ç¤Ï¤½¤¦¤Ï¤Ê¤é¤Ê¤«¤Ã¤¿¡£´°Á´¤Ë¥Ö¥é¥Ã¥¯¥Ü¥Ã¥¯¥¹»ëÅÀ¤Ë¤¹¤ë¤È¤¿¤¯¤µ¤ó¤Î»ÅÍͤò½ñ¤«¤Ê¤¤¤È¤¤¤±¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢·ë¶É¤Ï¥Û¥ï¥¤¥È¥Ü¥Ã¥¯¥¹»ëÅÀ¤¬É¬Íפˡ¦¡¦¡¦

¾¤Ë¤â¡¢RSpec¤Ï»ÅÍͤȤ¤¤¦¤è¤ê¤Ï¶ñÂÎÎã¤Î½¸¹ç¡Ê¤¿¤È¤¨¤Ð¡¢ÆþÎϤ¬´ñ¿ô¤Î¾ì¹ç1¡¢¶ö¿ô¤Î¾ì¹ç0¤òÊÖ¤¹¤È¤¤¤¦»ÅÍͤǤϤʤ¯¡¢ÆþÎϤ¬1¤Î¤È¤­1¤òÊÖ¤»¡¢2¤Î¤È¤­0¤òÊÖ¤»¤È¤¤¤¦¤³¤È¤òµ­½Ò¤¹¤ë¡Ë¤Ê¤Î¤Ç¤É¤Î¤è¤¦¤Ê¶ñÂÎÎã¤òµ­½Ò¤¹¤Ù¤­¤«¤È¤«(»ÅÍͤȤ¤¤¦¤è¤ê¤Ï¥Æ¥¹¥ÈŪ¤Ê¹Í¤¨Êý¡©)¡¢¥¤¥Æ¥ì¡¼¥Æ¥£¥Ö¤Ë³«È¯¤¹¤ë¾ì¹ç¡¢¤É¤³¤Þ¤Ç¤ò´ðËÜ»ÅÍͤȹͤ¨¤ë¤Ù¤­¤«¤È¤«¡¢¹Í¤¨¤¿¤¤¤³¤È¤Ï¤¤¤í¤¤¤í¤¢¤ë¤±¤É¡¢É÷¼Ùµ¤Ì£¤Ê¤Î¤Ç¤½¤ì¤Ï¤Þ¤¿Ê̤ε¡²ñ¤Ë¡£¡£
| YAGURA | - | 00:22 | comments(0) | trackbacks(0) |
¼«Æ°²½
ºÇ¶á¡¢Éô½ð¤¬Âå¤ï¤Ã¤Æ¡¢¤â¤Ã¤Ñ¤é»ÅÍͤÎÄ´À°¤È¤«Ä´ºº¡¢C¤Ç¤Î¥³¡¼¥Ç¥£¥ó¥°¤ò¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£º£¤ÎÉô½ð¤Ç¤Ï»ÅÍͤòExcel¥Õ¥¡¥¤¥ë¤Çɽ¤¹¤³¤È¤¬¤è¤¯¤¢¤ë¤ó¤À¤±¤É¡¢¤³¤ì¤Ç¤Ï»ÅÍͤ¬¡¢Excel¥Õ¥¡¥¤¥ë¤ÈC¤Î¥½¡¼¥¹¥³¡¼¥É¤ÎÆó½Å²½¤Ë¤·¤Æ¤·¤Þ¤¦¡£
¤³¤ì¤Ç¤ÏÂçÊѤÀ¤È¤È¤¤¤¦¤³¤È¤Ç¡¢Excel¥Õ¥¡¥¤¥ë¤«¤é Excel¥Þ¥¯¥í¤ò»È¤Ã¤ÆC¸À¸ì¤Çµ­½Ò¤·¤¿´Êñ¤Ê¥Æ¡¼¥Ö¥ë¤òÀ¸À®¤·¤ÆÆó½Å²½¤òËɤ°¤³¤È¤Ï¤ä¤Ã¤Æ¤¤¤ë¡£¤·¤«¤·¡¢Ãæ¤Ë¤Ï´Êñ¤Ê¥Æ¡¼¥Ö¥ë¤Ç¤Ï¤¹¤Þ¤Ê¤¤¤¯¤é¤¤Ê£»¨¤Ê¹½Â¤¤ò¤â¤Ä¤â¤Î¤â¤¢¤ë¡£¤½¤¦¤¤¤¦¤â¤Î¤ÏÆþÎϦ¤ÎExcel¥Þ¥¯¥í¤â¤·¤¯¤Ï½ÐÎϦ¤ÎC¤Ç´èÄ¥¤Ã¤Æ½èÍý¤·¤Æ¤ä¤é¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£
¤³¤ì¤Ï¤³¤ì¤ÇÂçÊѤÀ¤È¤¤¤¦¤³¤È¤Ç¡¢Excel¥Õ¥¡¥¤¥ë¤òCSV·Á¼°¤Ë¤·¤Æ¡¢Ruby¤Ç½èÍý¡¢ºÇ¸å¤Ïerb¤ÇC¤Î¥½¡¼¥¹¥³¡¼¥É¤òÀ¸À®¤È¤¤¤¦É÷¤Ë¤·¤è¤¦¤È»×¤Ã¤Æ¤ë¡£¤Þ¤Àºî¤ê¤«¤±¤À¤±¤É¡¢º£¤Î¤È¤³¤í¤Ï¤³¤ì¤ÇÌäÂê¤Ê¤µ¤½¤¦¡£Excel¥Þ¥¯¥í¤À¤±¤Ç¤Ï¤Ê¤¯¤Æ»È¤¨¤ë¥Ä¡¼¥ë¤Ï»È¤Ã¤Æ¡¢Ìò¤ËΩ¤Ä¼«Æ°²½¤¬¿Ê¤à¤È¤¤¤¤¤Ê¡£

¤½¤ì¤È¡¢º£²ó¤Î¼«Æ°²½¥Ä¡¼¥ë¤òºî¤ëºÝ¤Ë¡¢Á°¤«¤éµ¤¤Ë¤Ê¤Ã¤Æ¤¤¤¿RSpec¤ò»È¤Ã¤Æ¤ß¤¿¡£¤ä¤Ã¤Æ¤ë¤³¤È¤ÏTestUnit¤ÈÊѤï¤é¤Ê¤¤¤ó¤À¤±¤ì¤É¡¢assert¤Ç¤Ï¤Ê¤¯should¤ò»È¤¦¤È¤è¤ê¡Ö»ÅÍ͡פò½ñ¤¤¤Æ¤¤¤ëÊ·°Ïµ¤¤¬¤¹¤ë¡£¤¿¤À¡¢context ¤È specification ¤Î»È¤¤Ê¬¤±¤¬¤¤¤Þ¤¤¤Á¤è¤¯¤ï¤«¤é¤Ê¤¤¡£¤É¤¦¤¤¤¦Î³Å٤ǽñ¤¯¤ÈÆÉ¤ß¤ä¤¹¤¤¤«¡¿¤ï¤«¤ê¤ä¤¹¤¤¤«¡¢¤Þ¤À¥³¥Ä¤¬¤Ä¤«¤á¤Æ¤Ê¤¤¤Î¤«¤Ê¡£
| YAGURA | - | 01:16 | comments(0) | trackbacks(0) |
1234567
891011121314
15161718192021
22232425262728
2930     
<< April 2012 >>

¤³¤Î¥Ú¡¼¥¸¤ÎÀèÆ¬¤Ø