1ȸ ·çºñ ¼¼¹Ì³ª Èıâ
Áö³ 25ÀÏ ¿ÀǸ¶·ç¿¡¼ ¿¸° ·çºñ ¼¼¹Ì³ª¿¡ Âü°¡Çß´Ù.
¾àµµ¸¦ ÀÚ¼¼È÷ È®ÀÎÇÏÁö ¸øÇÑä ±ÞÇÏ°Ô °¡´Â ¹Ù¶÷¿¡ 20¿©ºÐ µ¿¾È ¼Çö¿ª ±Ù¹æÀ» Çì¸Ì´Ù. °á±¹ ¿ÀǸ¶·ç¿¡ ¼¼¹Ì³ª ½ÃÀÛ ½Ã°£¿¡´Â ¸ÂÃç °¬Áö¸¸ ´Ù¸¥ Âü¼®ÀÚµé°ú ÀÌ·± Àú·± ¾ê±âÇÒ ±âȸ¸¦ ³õÄ¡°í ¸»¾Ò´Ù.(¼¼¹Ì³ª Âü¼®¿¡ °¡Àå Å« ÀÌÀ¯Àε¥…)
ù¹øÂ° ¹ßÇ¥ÀÚÀÎ Ias´ÔÀÌ ÂªÀº ½Ã°£µ¿¾È JRuby¿¡ ´ëÇÑ À̸ðÀú¸ð¸¦ ¼³¸íÇß´Ù. º°µµÀÇ °®ÃçÁø ¹ßÇ¥ÀÚ·á ¾øÀÌ ±¸±Û ´Ú½º¿¡ ½è´Ù Áö¿ü´Ù¸¦ ¹Ýº¹ÇÏ¸é ¼ú¼ú Ç®¾î°¡´Â ¸» ¼Ø¾¾°¡ ´ë´ÜÇß´Ù. ¹ßÇ¥¸¦ µè±â Àü¸¸ ÇØµµ »ç½Ç ·çºñ ÀÎÅÍÇÁ¸®Å͸¦ ÀÚ¹Ù³ª ´å³ÝµîÀ¸·Î ¸¸µé¾î ³õÀº °Íµé¿¡ ´ëÇØ¼ ±×´ÙÁö ±àÀûÀûÀÎ »ý°¢À» Çϰí ÀÖÁö ¾Ê¾Ò´Âµ¥ ¿¹¸®ÇÑ ¼³¸í ´öÀ¸·Î ÀÚ¹Ù¿Í ·çºñ¸¦ °°ÀÌ »ç¿ëÇØ¾ß ÇÒ ¶§´Â ²À Çѹø »ç¿ëÇØ º¸¸®¶ó´Â »ý°¢À» °®°Ô µÇ¾ú´Ù.
´ë»ê´ÔÀÌ ¹ßÇ¥ÇϽŠ¸ÞŸÇÁ·Î±×·¡¹Ö. ·çºñÀÇ ¿¬ÇÑ Æ¯Â¡ÀÌ ¸ÞŸÇÁ·Î±×·¡¹ÖÀ» ¼Õ½±°Ô ÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁÖ´Â µí ½Í´Ù. ¸ÞŸÇÁ·Î±×·¡¹ÖÀº ½ÇÁ¦·Î ¾²±â Èûµé¾î ¸Ó¸® ÁÁÀº ÀÚµéÀÇ ½Å¼±³îÀ½ °°Àº °Í ¾Æ´Ï¾ú´ø°¡? ·çºñ¿¡¼´Â ºñ±³Àû ½±°Ô µÇ´õ¶ó… ¶Ç, À̸¦ ÅëÇÑ DSL ±¸Çöµµ »ìÆì º¼ ¼ö ÀÖ¾ú´Ù.
niceview´ÔÀÇ Capistrano. ¹èÆ÷ÀÇ ¾î·Á¿òÀ» ¸»²ûÈ÷ ÇØ°áÇØ ÁÙ °Í °°Àº ±×·± ÅøÀÌ¿´´Ù. ´õ¿í ³î¶õ Á¡Àº ÀÌ ¹®Á¦·Î ½Ç¹«¿¡¼µµ ½±°Ô ÇØ°áÇÏÁö ¸øÇÏ°í »¹Áþ ¸¹ÀÌ Çϰí ÀÖ´Â ÁÙ ¾Æ´Âµ¥ Çлý(niceview´ÔÀº ÇлýÀ̽ôÙ)ÀÌ ¾ÆÁÖ ºü»èÇÏ°Ô ¹®Á¦¸¦ ÇØ°áÇØ ³»°í ÀÖ´Â Á¡ÀÌ ¾ú´Ù.
deepblue´ÔÀÇ “·çºñ¸¦ Áñ°Ü¿ä”. ÀÌ ¹ø ·çºñ ¼¼¹Ì³ª¿¡¼ ±â´ë Çß´ø ±×·± Á¾·ùÀÇ ¹ßÇ¥¿´´Ù. “·çºñ½º·´°Ô ÄÚµùÇϱ┿¡ ´ëÇÑ ¾ê±â¿´´Âµ¥ ÀÌ°Ô ³ª°°Àº static ¾ð¾î ½ºÅ¸ÀÏ·Î ¸Ó¸®°¡ °íÁ¤µÈ °³¹ßÀڵ鿡°Ô´Â °¡Àå °©°©ÇÑ ºÎºÐÀÌ ¾Æ´Ò±î ÇÑ´Ù. Á» ´õ ¾ê±â°¡ “¿À°í °¬À¸¸é” ´õ ¸¹Àº µµ¿òÀÌ µÇÁö ¾Ê¾ÒÀ»±î ½Í¾î ¾Æ½±´Ù.
seradin´ÔÀÇ Groovy, Grails. Á÷Á¢ ½Ç¹«¿¡ Àû¿ëÇÏ¸é¼ ´À³¤ ¿©·¯°¡Áö ¾ê±â(ÁÖ·Î ¹®Á¦Á¡µéÀÌÁö¸¸)À» ¾ê±âÇØ Áà µµ¿òÀÌ µÇ¾ú´Ù. ¾î¶² ¾ð¾î°¡ ¤Ô¤§¤Ê¤¶°Ç ±â¼úÀÌ ¤Ô¤§¤Ê¤¶°Ç óÀ½ ½Ç¹«¿¡ Àû¿ëÇϴµ¥´Â ¿©·¯°¡Áö °í¹ÎÀ» ÇØ¾ßÇÏÁö¸¸ °í¹ÎÀ» ÇØ¼ÒÇØ ÁÙ¸¸ÇÑ Á¤º¸¸¦ ¾ò±â´Â Èûµé´Ù. ±×·±¸é¿¡¼ Groovy, Grails¸¦ µµÀÔÇÏ·Á´Â »ç¶÷ÀÌ µé¾ú´Ù¸é ÃÖ°í ¿´À» µí ½Í´Ù. ±â¾ïÇØ¾ß ÇÏ´Â°Ç Groovy, Grails¸¦ µµÀÔÇÏ·Á°Åµç Á» ±â´Ù·Á¾ß ÇÑ´Ù´Â Á¡. 
±× ¿Ü¿¡ ikspress´ÔÀÇ UJS4Rails, nohmad´ÔÀÇ À¯´ÏÄÚµå´Â ¼¼¹Ì³ª Âü¼®Àü¿¡ ³ª¿¡°Ô Á÷Á¢ÀûÀ¸·Î ¸¹Àº µµ¿òÀÌ µÉ °Í °°Àº ¹ßÇ¥¿©¼ ±â´ë¸¦ ¸¹ÀÌ Çߴµ¥ ¾à¼Ó ¶§¹®¿¡ ÀÚ¸®¸¦ ÁöŰÁö ¸øÇØ µèÁö ¸øÇß´Ù. ³Ê¹« ¾Æ½±´Ù.
³»°¡ ÁغñÇÑ ³»¿ëÀº Áö±Ý ¿ì¸® ȸ»çÀÇ ·çºñ¿Í ·¹ÀÏÁî Àû¿ë »ç·Ê¿´´Ù. ±â¼úÀûÀÎ ³»¿ëµµ ÁÁÁö¸¸ ½ÇÁ¦·Î ¾î¶»°Ô Àû¿ëµÇ°í ÀÖ´ÂÁö »ç·Ê¸¦ ¾ê±âÇÏ´Â °Íµµ µµ¿òÀÌ µÇ°Ú´Ù ½Í¾ú´Ù. ¹ßÇ¥ÀÇ ÇÙ½ÉÀº ·çºñ¿Í ·¹ÀÏÁ À¥ ¾îÇø®ÄÉÀ̼ÇÀÌ ¾Æ´Ñ µ¥½ºÅ©Å¾ ¾îÇø®ÄÉÀ̼ǿ¡ Àû¿ëÇÏ´Â °ÍÀÌ´Ù. ·çºñ¿Í ·¹ÀÌÁ ÀÌ·¸°Ô Àû¿ëÇϰí ÀÖ´Â »ç·Ê°¡ ³»°¡ ¾Æ´Â ÇÑ ¾ø´Â °ÍÀÌ¾î¼ ¼¼¹Ì³ª¿¡ Âü¼®ÇÑ ³ôÀº ¼öÁØÀÇ °³¹ßÀںеéÀÇ ÀǰßÀÌ ¸¹Àº µµ¿òÀÌ µÉ µí ½Í¾ú´Ù. ÇÏÁö¸¸ ¾à¼Ó½Ã°£¿¡ ÂÑ°Ü ±â´ëÇß´ø Åä·ÐÀÇ ½Ã°£Àº °¡Áú ¼ö ¾ø¾ú´Ù. ºÎµð ´ÙÀ½ ±âȸ¶óµµ ²À ÀǰߵéÀ» µè°í ½Í´Ù. ´ÙÀ½Àº ¹ßÇ¥ÀÚ·áÀÌ´Ù.
swing girls, first and last concert

ÀÌ·± À̺¥Æ®´Â ¾î¶»°Ô ÁغñÇßÀ»±î?
1. óÀ½ºÎÅÍ À̺¥Æ®¸¦ »ý°¢ÇÏ°í ¹è¿ìµé°ú °è¾àÇÏ°í ¿¬½ÀÇß´Ù.
2. ¿µÈ¸¦ ÂïÀº ÈÄ ¹è¿ìµéÀÌ ¿¬½ÀÇß´Ù.
3. ¿¬ÁÖÇÒ ÁÙ ¾Æ´Â ¹è¿ìµéÀ» ¼·¿ÜÇØ ¿µÈ¸¦ ¸¸µé¾ú´Ù.
³ 3¹ø.
however…
´Ù¸¥ °Ç ¸ô¶óµµ Æ®·³Æê(»à»ç¸®µµ ¸¹ÀÌ ³ªÁö¸¸…), º£À̽º, µå·³Àº ¾öû ¿¬½ÀÇßÀ» °Í °°´Ù. (´Ù¸¥ ÆÄÆ®µµ Èûµé¾ú°ÚÁö¸¸..)
ÇǾƳë´Â ¿ø·¡ Á» Çϴ ģ±¸ÀÎ µí ½Í°í.
³ªµµ ÇÒ ¼ö ÀÖÀ»±î ½Í±âµµ ÇÏ°í… =_=;
via erewon.LAB
[update]
¹Ì±¹À̳ª Çѱ¹¿¡¼ ¸®¸ÞÀÌÅ© ÇÏ¸é ¾î¶² ¹è¿ì°¡ ¾î¶² ¿ªÇÒÀ» ÇÒ ¼ö ÀÖÀ»±î? ¤»¤»
·çºñÀÇ super Ű¿öµå »ç¿ë½Ã ÁÖÀÇÇÒ Á¡
·çºñÀÇ super Ű¿öµå´Â ºÎ¸ð Ŭ·¡½ºÀÇ µ¿ÀÏ ¸Þ¼Òµå¸¦ È£ÃâÇϱâ À§ÇØ »ç¿ëµÈ´Ù.
¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº ÄÚµåÀÇ °æ¿ì
class Parent
attr_reader :name
def initialize(name = nil)
@name = name || "noname"
end
end
class Child <Parent
attr_reader :age
def initialize(age)
super
@age = age
end
end
my_child = Child.new(1)
puts "#{my_child.name}, #{my_child.age}" # => 1, 1
½ÇÇàÇϸé "1, 1"°¡ Ãâ·ÂµÈ´Ù.
super Ű¿öµå »ç¿ë½Ã ÁÖÀÇÇÒ Á¡Àº ÀÎÀÚ ÁöÁ¤¾øÀÌ super¸¦ È£ÃâÇÑ ¸Þ¼ÒµåÀÇ ÀÎÀÚ°¡ ºÎ¸ð Ŭ·¡½ºÀÇ µ¿ÀÏ ¸Þ¼Òµå È£ÃâÀÇ ÀÎÀÚ·Î ³Ñ¾î°£´Ù´Â °ÍÀÌ´Ù. Áï À§ Äڵ忡¼ Child Ŭ·¡½º »ý¼ºÀÚ¿¡ ÀÎÀÚ·Î ³Ñ±ä 1ÀÌ Parent »ý¼ºÀÚÀÇ ÀÎÀÚ·Î ³Ñ¾î°¡±â ¶§¹®¿¡ ParentÀÇ @name ¼Ó¼º¿¡ 1ÀÌ ÀúÀåµÇ´Â °á°ú°¡ µÈ´Ù.
Child »ý¼ºÀÚ¿¡¼ "super" ´ë½Å "super()" ½ÄÀ¸·Î »óÀ§ »ý¼ºÀÚ¸¦ È£ÃâÇØ¾ß Child »ý¼ºÀÚ·Î ÁöÁ¤µÈ age ÆÄ¶ó¹ÌÅͰ¡ Parent »ý¼ºÀÚÀÇ ÀÎÀÚ·Î ³Ñ¾î°¡´Â °ÍÀ» ¸·À» ¼ö ÀÖ´Ù. À§ Äڵ忡¼ "super" ´ë½Å "super()"·Î ¹Ù²ã ½ÇÇàÇÏ¸é ¿øÇÏ´Â °á°úÀÎ "noname, 1"¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
ActiveRecord::Base¿¡¼ °è½ÂµÈ ¸ðµ¨Å¬·¡½º ÀÛ¼º Áß¿¡ À§¿Í °°Àº ¹®Á¦·Î ÇÑ µ¿¾È »¹ÁþÇß´Ù.
·çºñ¼¼¹Ì³ª Âü°¡½Åû
¿ÀǸ¶·ç¿¡¼ 11¿ù 25ÀÏ ¿¸®´Â ·çºñ¼¼¹Ì³ª¿¡ Âü°¡½ÅûÀ» Çß´Ù. 20¸í Á¦ÇÑ¿¡ 20¹øÂ°·Î °É¾î ³õÀ» ¼ö ÀÖ¾úÀ¸´Ï ¿îÀÌ ÁÁ¾Ò´Ù.
Áñ°Ü ±¸µ¶Çϰí ÀÖ´Â ºí·Î°Åµéµµ ¸¸³ªº¸°í ·çºñ µ¹¾Æ°¡´Â ¾ê±âµµ µé¾îº¼ ¼ö ÀÖ´Â ÀÚ¸®°¡ µÉ °Í°°¾Æ ±â´ëµÈ´Ù.
ÁÖÃÖÃø¿¡ ¹Ù¶ó´Â Á¡ Çϳª´Â ´ë±âÀÚ ¸í´Ü¿¡ À̸§À» ¿Ã¸° ºÐµéµµ Âü¼®½ÃÄÑÁÖ¸é ÁÁ°Ú´Ù´Â °Å.
[update]
"·çºñ/·¹ÀÏÁî Àû¿ë»ç·Ê" ¶ó´Â Á¦¸ñÀ¸·Î ¹ßÇ¥½ÅûÀ» Çß´Ù.
Áö±Ý ³»°¡ ÁøÇàÇϰí ÀÖ´Â ÇÁ·ÎÁ§Æ®ÀÇ (´Ù¼Ò »ý¼ÒÇÑ) ¾îÇø®ÄÉÀÌ¼Ç ±¸Á¶¿Í ±×¿¡ µû¸¥ À̽´»çÇ×À» ¼Ò°³ÇÏ°í ¸ðÀÎ ºÐµéÀÇ °í°ßÀ» µè°íÀÚ Çϴµ¥ µÚ ´Ê°Ô ½ÅûÇϰԵǼ ¹Þ¾Æµé¿©Áú Áö´Â Àß ¸ð¸£°Ú´Ù.
·çºñ - ÆÄÀÏÀÛ¼º½Ã print¿Í writeÀÇ ¼º´É ºñ±³
10¸Þ°¡ Å©±âÀÇ ÆÄÀÏÀ» IO::print¸Þ¼Òµå¿Í IO::write¸¦ »ç¿ëÇØ ¼º´ÉÀ» ºñ±³ÇÑ °á°ú,
OSX(on macbook)¿¡¼´Â
write => 7.21ÃÊ
print => 8.43ÃÊ
WindowsXP (on parallels/macbook)¿¡¼´Â
write => 12.82ÃÊ
print => 14.83ÃÊ
IO::write°¡ ¸¹ÀÌ ºü¸£´Ù.
Âü°í·Î Å×½ºÆ®¿¡ »ç¿ëÇÑ ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
begin
size = 1024 * 1024 * 10
filepath = "test.dat"
now = Time.now
f = File.open filepath, File::CREAT | File::TRUNC | File::WRONLY
(0...size).each do |num| f.write("\x0") end
f.close
raise unless File.size(filepath) == size
puts Time.now - now
now = Time.now
f = File.open filepath, File::CREAT | File::TRUNC | File::WRONLY
(0...size).each do |num| f.print("\x0") end
f.close
raise unless File.size(filepath) == size
puts Time.now - now
rescue
puts $!.inspect
puts $!.backtrace.join("\n")
end