2013ǯ03·î04Æü
¢£ Twitter¤Î¸¡º÷·ë²Ì¤òIRC¤Ënotice¤ÇžÁ÷¤·¡¢ïçÃͤòͤ¨¤ë¤Èmessage¤¹¤ë¥Ü¥Ã¥È
Scala2.9¢ª2.10¤Ë°Ü¹Ô¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ¡¢¸ø³«¤¹¤ë¤³¤È¤Ç狼¤¬»È¤¨¤ë¤«¤â¤·¤ì¤Ê¤¤Scala¤Î¥Ä¡¼¥ë¤¬¤¢¤Ã¤¿¤Î¤Ç¡¢GitHub¤Ë¸ø³«¤·¤Þ¤·¤¿¡£Twitter API¤â1.0¤ÎÇѻߤ¬¶á¤¤¤Î¤Ç1.1¤Ø¤ÎÂбþ¤ò¤·¤Æ¤¢¤ê¤Þ¤¹¡£
https://github.com/sifue/twisearch_ircbot
»È¤¦ÍÑÅӤϼç¤ËIRC¾å¤Ç¤Îtwitter´Æ»ë¤Ç¤¹¤Íw ÆâÉôŪ¤ËStreaming API¤Ç¤Ï¤Ê¤¯REST¤ÎSearch API¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢AND¤äOR¡¢¤½¤Î¾¤Î¸¡º÷»ØÄê±é»»»Ò¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£http://blog.fkoji.com/2009/10191119.html ¤Î²òÀ⤬ÃúÇ«¤Ç¤¹¡£
¤Ê¤ªScala2.10¤È¤¤¤¤¤Ä¤Ä¡¢akka¤Ø¤Î°Ü¹Ô¤¬ÂçÊѤÀ¤Ã¤¿¤ê¤È¤«¡¢Ä¹´ü´Ö¤Î¸¡¾Ú¤ò¤·¤Ê¤¯¤Æ¤¤¤Ï¤¤¤±¤Ê¤¤¤È¤«¤¬¤¢¤ê¡¢¤³¤¤¤Ä¤Ïactor¤ò¤½¤Î¤Þ¤Þ»È¤Ã¤Æ¤¤¤Þ¤¹¡£build.sbt¤Ë
libraryDependencies <+= scalaVersion("org.scala-lang" % "scala-actors" % _)
¤ò½ñ¤¯¤³¤È¤Çactor¤ò¤½¤Î¤Þ¤Þ»È¤¤Â³¤±¤é¤ì¤Þ¤¹¡£id:xuwei¤µ¤ó¡¢¾ðÊ󤢤꤬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£
¤Ê¤ªÆâÉôŪ¤Ë¤Ï¡¢twitter4j¤Èsirc¤òºÊñ¤·¤Æ¤ª¤ê¡¢assembly¥³¥Þ¥ó¥É¤Ç¥Ó¥ë¥É¤¹¤ë¤³¤È¤Çjava -jar¥³¥Þ¥ó¥É¤Ç¼Â¹Ô¤Ç¤¤ëjar¤Ë¤Ê¤ê¤Þ¤¹¡£
$ git clone git@github.com:sifue/twisearch_ircbot.git
¤òÍøÍѤ·¤Æ¡¢»×¤¤»×¤¤¤Ë¥³¡¼¥É¤òÊѹ¹¤·¤Æ¤´ÍøÍѤ¯¤À¤µ¤¤¡£
¥Ó¥ë¥ÉÊýË¡
java¤Èsbt¤ò¥¤¥ó¥¹¥È¡¼¥ë¤Î¾å¡¢
$ sbt
> assembly
¤³¤ì¤Çtarget¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¡¢twisearch_ircbot-assembly-2.0.jar¤¬¥Ó¥ë¥É¤µ¤ì¤Þ¤¹¡£
»È¤¤Êý
twisearch_ircbot-assembly-2.0.jar¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢ twisearch_ircbot_template.properties¤òÀµ¤·¤¯ÊÔ½¸¤·¤Æ¡¢ twisearch_ircbot.properties¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤ÇÊݸ¤¯¤À¤µ¤¤¡£
irc.address = hostname irc.channel = #channelname irc.nickname = twisearch_ircbot irc.charset = UTF-8 limitCount = 3 intervalSec = 60 keyword = #MT2 messageFormat = interval:%1$s keyword:%2$s count:%3$s noticeFormat = @%1$s %2$s %3$s consumerKey = consumerKey consumerSecret = consumerSecret accessToken = acessToken accessTokenSecret = accessTokenSecret
twisearch_ircbot.properties¤ÎÆâÍÆ¤Î¤¦¤Á¡¢consumerKey¡¢consumerSecret¡¢accessToken¡¢accessTokenSecret¤ÏTwitter Developpers https://dev.twitter.com/ ¤è¤ê¡¢¥í¥°¥¤¥ó¤Î¸å¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òºîÀ®¤·¤ÆaccessToken¤òȯ¹Ô¤·¤Æ¤´ÍøÍѤ¯¤À¤µ¤¤¡£
¤Ê¤ªÆüËܸì¤Ê¤É¤òÆþ¤ì¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢java¤Înative2ascii¥³¥Þ¥ó¥É¤òÍøÍѤ·¤Æascii²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ http://symfo.web.fc2.com/js-sample/jq/sample2.html °Ê¾å¤Î¤è¤¦¤Ê¥µ¥¤¥È¤Ç¤âÊÑ´¹¤Ç¤¤Þ¤¹¡£
ÀßÄê¤Î¸å¡¢
$java -jar twisearch_ircbot-assembly-2.0.jar
¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ ¤Þ¤¿IRC¤Î¥Ü¥Ã¥È¤¬Æþ¤Ã¤Æ¤¤¤ë¥Á¥ã¥ó¥Í¥ë¤Ë¤Æ
ping nickname
¤È¤¹¤ë¤ÈWorking now.¤Ènotice¤òÊÖ¤·¤Þ¤¹¡£
¥³¡¼¥É¤ÎÃæ¿È
¥á¥¤¥ó¥ë¡¼¥Á¥ó¤Ï¡¢
TwitterSeacher.scala
def act() = loop { val query = new Query query.setQuery(keyword) query.setSinceId(maxId) query.setResultType(Query.RECENT); val tweets = twitter.search(query).getTweets().reverse if(maxId != 0L) tweets.filter(t => t.getId() > maxId).foreach(sendNoticeToIRC) val count = tweets.filter(t => t.getId() > maxId).size if(count > limitCount && maxId != 0L) sendMessageToIRC(count) tweets.foreach(t => {if(t.getId() > maxId) maxId = t.getId()}) TimeUnit.SECONDS.sleep(intervalSec) }
¤³¤ì¤À¤±¤Çɽ¸½¤Ç¤¤Æ¤¤¤Þ¤¹¡£¤¢¤È¤ÏÀßÄê¤ÎÆÉ¹þ¤ÈÎã³°¥Ï¥ó¥É¥ë¤À¤±¡£¤ä¤Ã¤Ñ¤êScala¤Ïû¤¯½ñ¤±¤ÆÎɤ¤¤Ç¤¹¡£
2013ǯ03·î02Æü
¢£ Scala2.9¤«¤é2.10¤Ø¤Î°Ü¹Ôºî¶È¤Î·ò˺Ͽ
¤¿¤À¤Îºî¶È¥í¥°¤Ç¤¹¡£
build.sbt¤ÎscalaVersion¤ò2.10.0¤ËÊѹ¹
scalaVersion := "2.10.0"
°Ê¾å¤Î¤è¤¦¤Ë¤¹¤ë¡£
Seq#first¤òSeq#head¤ËÃÖ´¹
ÌÕÌÜŪ¤ËÃÖ¤´¹¤¨¡£
Squeryl¤ò2.10Âбþ¤ÎºÇ¿·¥Ð¡¼¥¸¥ç¥ó¤Ë¡£¤Ç¤â¥ê¥Ý¥¸¥È¥ê¤ÎURL¤¬¤ª¤«¤·¤¤¤Î¤ÇľÀÜÄɲÃ
libraryDependencies ++= Seq( "org.squeryl" %% "squeryl" % "0.9.5-6" from "http://repo1.maven.org/maven2/org/squeryl/squeryl_2.10/0.9.5-6/squeryl_2.10-0.9.5-6.jar", "mysql" % "mysql-connector-java" % "5.1.21" )
actor»È¤¨¤Ê¤¯¤Ê¤ë¤Î¤Çakka¤Ø¤Î¾è¤ê´¹¤¨¡£¼ÂÁõÎÌÂç¡£
object actors is not a member of package scala
[error] import scala.actors.Actor
Èᤷ¤¤...¡£build.sbt¤Ë
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/" libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.1.1"
¤òÄɲ䷤ơ¢¤¢¤È¤Ïakka¤ÎAPI¤ò¸«¤Ê¤¬¤é¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¤È¤¤¤¦¤«Actor¤Îºî¤êÊý¤â¡¢¼ÂÁõ¤Î»ÅÊý¤äÎã³°¤Î¥Ï¥ó¥É¥ê¥ó¥°¤Ê¤ó¤«¤â´ðËÜÁ´Á³°ã¤¦¤Î¤Çakka¤Ë¹ç¤ï¤»¤Æ½ñ¤¤Ê¤ª¤µ¤Ê¤¤¤È¡¢ÊѤʴ¶¤¸¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£¤È¤¤¤¦¤«½ñ¤¤Ê¤ª¤·¤¿¤Û¤¦¤¬Áᤤ¡£
¤Þ¤È¤á
·ë¹½¥³¡¼¥ÉÎ̤¬¤¢¤Ã¤¿¤³¤È¡¢¸µ¡¹Actor¤ò»È¤¤¤¿¤¯¤ÆScala¤òÁª¤ó¤Ç¤¤¤¿¤È¤³¤í¤â¤¢¤ë¤Î¤Ç¡¢2.9¤«¤é¤Î°Ü¹Ô¤Ï¤½¤ì¤Ê¤ê¤ËÂçÊѤǤ·¤¿¡£¤È¤¤¤¦¤«Á´Éô½ª¤ï¤é¤º¡¢ÌµÍý¤Ë¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤µ¤»¤ëɬÍפϤʤ¤¤È´¶¤¸¤Þ¤·¤¿...¡£¿É¤¹¤®¤ë¡£¤»¤á¤Æ¥³¡¼¥É¥³¥ó¥Ð¡¼¥¿¡¼¤È¤«¤¢¤ì¤Ð¡£
¤Þ¤ÀÀ¸¤Þ¤ì¤Æ10ǯ·Ð¤Ã¤Æ¤Ê¤¤¸À¸ì¤Î¿É¤µ¤À¤Ê¤¡¡£¤Þ¤À2.11¤È3.0¤Ç¤âÂ礤¯ÊѤï¤ê¤½¤¦¤À¤·¡£¤·¤ã¡¼¤Ê¤·¡£
2013ǯ02·î24Æü
¢£ssh¾å¤Ç¥Þ¥¦¥¹¥¹¥¯¥í¡¼¥ë¤â»È¤¨¤ëÂ絬ÌÏPHP³«È¯¸þ¤±vim+tmux´Ä¶¤Î¹½ÃÛ
Á´ÂΤǿôÉ´Ëü¹Ô¡¢1¥Õ¥¡¥¤¥ë1Ëü¹ÔͤÎPHP¥Õ¥¡¥¤¥ë¤â°ìÉÃ°ÊÆâ¤Ç³«¤¡¢³«È¯¤·¤Æ¤¤¤¯¤³¤È¤Î¤Ç¤¤ëÂ絬Ìϳ«È¯¸þ¤±¤Îvim+tmux´Ä¶¤ò¾Ò²ð¤·¤è¤¦¤È»×¤¤¤Þ¤¹¡£¤³¤ÎÀßÄꤳ¤Î´Ä¶¤ÇȾǯ¤°¤é¤¤°ÂÄꤷ¤ÆÍøÍѤǤ¤Æ¤¤¤Þ¤¹¡£(̵ÏÀ¤½¤ó¤Ê1Ëü¹Ô¤¢¤ë¥Õ¥¡¥¤¥ë¤ä¿ôÀé¹Ô¤ÇÊ£»¨À½Û´ÄÅÙ500Ķ¤Î¥á¥½¥Ã¥Éºî¤ë¤Ê¤è¤È¤¤¤¦Ïä⤢¤ë¤ó¤Ç¤¹¤¬¡¢¤¹¤Ç¤Ë¸ºß¤¹¤ëËâ½Ã¤È¤Ï¸þ¤¹ç¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ç¤¹...)
¤Ê¤Î¤Ç¿ôÉ´Ëü¹Ô¥ì¥Ù¥ë¤ÎÂ絬Ìϳ«È¯¤È¤Ê¤ë¤È½Å¤¹¤®¤Æ»È¤¨¤Ê¤¤ÀßÄê¤ä¥×¥é¥°¥¤¥ó¤â¤¢¤ê¤Þ¤¹¡£¤½¤Î¤è¤¦¤Ê¤â¤Î¤Ï¤¤Á¤ó¤È³°¤·¤Æ¤¢¤ê¤Þ¤¹(PHP¤Î´Ø¿ôÀޤꤿ¤¿¤ßµ¡Ç½¡¢¥Ç¥Õ¥©¥ë¥È¤ÎPHP¥·¥ó¥¿¥¯¥¹¥Ï¥¤¥é¥¤¥È¡¢neocomplcache.vim¡¢¥Ä¥ê¡¼¤Î¹½À®¤Ë»þ´Ö¤Î¤«¤«¤ëproject.vim¤Ê¤É)¡£
´ðËÜŪ¤Ë¤Ï¥¿¡¼¥ß¥Ê¥ë¥¨¥ß¥å¥ì¡¼¥¿¡¼¤È¤·¤Æ¡¢mac¤Ê¤é¤ÐiTerm2¡¢windows¤Ê¤é¤ÐTeraTerm¤Þ¤¿¤ÏPutty¤òÍøÍѤ¹¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£
¤¿¤À¼«Ê¬¼«¿È¤Ï¡¢ÉáÃʤϥÁ¡¼¥à¤Ç¤Î¥Ú¥¢¥×¥í´Ä¶°Ý»ý¤Î¤¿¤á¤ËSublimeText2¤òÍøÍѤ·¤Æ¤ª¤ê¡¢ssh¾å¤Çºî¶È¤¹¤ë»þ¤Ë¤Î¤ßvim¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£´ðËÜŪ¤Ë¤Ï¥Þ¥ë¥Á¥«¡¼¥½¥ë¤Ê¤ÉÆÈÆÃ¤Ê¤â¤Î¤ò½ü¤SublimeText2¤Ç¤Ç¤¤ë¤³¤È¤ÏÂçÄñvim¤Ç¤â¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£
¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤Ï¤³¤Î¤è¤¦¤Ê´¶¤¸¤Ç¤¹¡£
°Ê¾å¤ÎÎã¤Ç¤Ï¡¢¾å¤Î¥Ú¥¤¥ó¤Ç¤Ïvim¤òúÔʬ³ä¤ÇÍøÍѤ·¤Æ¡¢²¼¤Ë¤â2¤Ä¥Ú¥¤¥ó¤òÍѰդ·¤Æ¡¢°ì¤Ä¤ÏSymfony2¤Îphpunit¥Æ¥¹¥È¤Î¼Â¹Ô¡¢¤â¤¦¤Ò¤È¤Ä¤Ïtop¤Î´Æ»ë¤ò¤·¤Æ¤¤¤Þ¤¹¡£
¼ÂºÝ¤Ë¸½ºß¼«Ê¬¤¬ÍøÍѤ·¤Æ¤¤¤ëtmuxµÚ¤Óvim¤ÎÀßÄê¤ÎÁ´ÂΤϡ¢
https://github.com/sifue/dotfiles/blob/master/.tmux.conf
https://github.com/sifue/dotfiles/blob/master/.vimrc
°Ê¾å¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤Ê¤ª¡¢²¾ÁÛüËö¤Ë¤Ê¤¼screen¤Ç¤Ê¤¯tmux¤ò»È¤¦¤«¤È¤¤¤¦¤È¡¢´û¸¥»¥Ã¥·¥ç¥ó¤Ø¤Î¥¢¥¿¥Ã¥Á¤¬¹â®(1ÉÃ°ÊÆâ)¤Ç¤¢¤ë¤³¤È¡¢¥Þ¥¦¥¹Áàºî¤¬Í¥½¨¤Ê¤³¤È¡¢Ã±°ì¥»¥Ã¥·¥ç¥ó¤òÊ£¿ô¤Î¥Þ¥·¥ó¤«¤é¥Ç¥Õ¥©¥ë¥È¤Ç»È¤¨¤ë¤³¤È¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£(screen¤Ç¤âÀßÄê¤ÇÊ£¿ô¥Þ¥·¥ó¤«¤é¤È¤¤¤¦¤Î¤Ï¤Ç¤¤ë¤½¤¦¤Ç¤¹¤¬...)
ºÇ½ªÅª¤Ë¤Ïssh¾å¤«¤é¤ÎÍøÍѤǰʲ¼¤Î¤è¤¦¤Ê¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
- ²¾ÁÛüËöµ¡Ç½¤ÎÍøÍÑ(tmux¤Î»ý¤Ã¤Æ¤¤¤ëµ¡Ç½)
- ¥»¥Ã¥·¥ç¥ó°Ý»ý
- Ê£¿ô¥»¥Ã¥·¥ç¥ó¤Î¥¿¥Ö¤ä¥Ú¥¤¥ó¤Ç¤Î»È¤¤Ê¬¤±
- ñ°ì¥»¥Ã¥·¥ç¥ó¤ÎÊ£¿ô¥Þ¥·¥ó¤«¤é¤ÎÍøÍÑ
- ¥Þ¥¦¥¹Áàºî
- ¥Þ¥¦¥¹¤ò»È¤Ã¤¿Ê¬³ä¤µ¤ì¤¿tmux¥Ú¥¤¥óÁªÂò
- ¥Þ¥¦¥¹¤ò»È¤Ã¤¿Ê¬³ä¤µ¤ì¤¿tmux¥Ú¥¤¥ó¤Î¥µ¥¤¥ºÊѹ¹
- ¥Þ¥¦¥¹¤Î¥Û¥¤¡¼¥ë¤ò»È¤Ã¤¿vim¾å¤Î¥¹¥¯¥í¡¼¥ë
- ¥É¥é¥Ã¥°¤òÍøÍѤ·¤¿vim¾å¤Îʸ½ñÁªÂò
- ¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤ò»È¤Ã¤¿vim¾å¤Îñ¸ìÁªÂò
- vim¤Î¥¿¥Ö¤Î¥Þ¥¦¥¹ÁªÂò
- vim¥×¥é¥°¥¤¥ó´ÉÍý (NeoBundle)
- ¥Õ¥¡¥¤¥ë¡¢ÍúÎò¡¢¥Ð¥Ã¥Õ¥¡¡¢¥ì¥¸¥¹¥¿Åù¤Î¥ï¥¤¥ë¥É¥«¡¼¥É¤òÍøÍѤ·¤¿¥ê¥½¡¼¥¹ÁªÂò (Unite)
- ·Ú¤¯¤ÆPHP5.4¤ËÂбþ¤·¤¿¤Î¥·¥ó¥¿¥¯¥¹¥Ï¥¤¥é¥¤¥È (shawncplus/php.vim)
- ¼«Æ°Êä´°ÆþÎÏ (¥Ç¥Õ¥©¥ë¥Èµ¡Ç½/ctags)
- ¥·¥ó¥¿¥¯¥¹¥Á¥§¥Ã¥¯(make)
- ´Ø¿ô¤ÎÄêµÁ¸µ¤Ë¥¸¥ã¥ó¥×(ctags)
- ¥³¡¼¥É¥¹¥Ë¥Ú¥Ã¥È(snipMates)
- svn, git¤ÎÍúÎò³Îǧ (vcscommand.vim)
- ¥¯¥é¥¹Æâ¥á¥½¥Ã¥É¤Î¥¢¥¦¥È¥é¥¤¥óɽ¼¨ (unite-outline)
- ¥Õ¥¡¥¤¥ë̾¤Î¥Õ¥¡¥¸¡¼¸¡º÷ (ctrlp.vim)
´ðËÜŪ¤Ë¥ì¥ó¥¿¥ë¥µ¡¼¥Ð¡¼¤Ê¤É¤Ç¤âÍøÍѤǤ¤ë¤è¤¦¤Ë¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Ë¥í¡¼¥«¥ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÁ°Äó¤Ç~/local°Ê²¼¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¼«ÂΤ˥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ëÊý¤Ï¡¢~/local¤ò/usr/local¤ÈÆÉ¤ßÂØ¤¨¤Æ²¼¤µ¤¤¡£
¤½¤Î¤¿¤á¡¢ÍøÍѤ·¤Æ¤¤¤ë¥·¥§¥ë¤Ç~/local/bin¤È~/local/lib¤Ë¥Ñ¥¹¤òÄ̤·¤Æ¤¯¤À¤µ¤¤¡£
ÆÃ¤Ë¼«Ê¬¤Î»È¤Ã¤Æ¤¤¤ë¥·¥§¥ë¤¬¤ï¤«¤é¤Ê¤¤¤è¤È¤¤¤¦Êý¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¥·¥§¥ë¤Îbash¤Ç¥Ñ¥¹¤òÄ̤¹¤è¤¦¤Ë¡¢
$ echo "export PATH=/usr/local/bin/:/usr/local/lib/:\$PATH" >> $HOME/.bashrc $ source $HOME/.bashrc
°Ê¾å¤ò¼Â¹Ô¤·¤Æ»Ï¤á¤ÆÄº¤±¤ì¤Ð¤È»×¤¤¤Þ¤¹¡£
ÀâÌÀ¤Î½çÈÖ¤Ï
- ¥¤¥ó¥¹¥È¡¼¥ë¤È»È¤¤Êý
- Â絬Ìϳ«È¯¤ÎºÝ¤Ë»È¤¨¤ëvim¥Æ¥¯¥Ë¥Ã¥¯
¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥¤¥ó¥¹¥È¡¼¥ë¤È»È¤¤Êý
tmux¤Î¥¤¥ó¥¹¥È¡¼¥ë
¤Þ¤º¤Ïtmux¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£
http://web.sfc.keio.ac.jp/~t10078si/wpx/?p=615
¤ò»²¹Í¤Ë¡£libevent¤ÎŬÀڤʥС¼¥¸¥ç¥ó¤¬Ìµ¤¤¤³¤È¤â¤¢¤ë¤Î¤Ç°ì½ï¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤Þ¤¤¤Þ¤¹¡£
$ cd $ mkdir -p ~/local/source $ cd ~/local/source $ wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.7/tmux-1.7.tar.gz $ wget https://github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz $ tar zxvf tmux-1.7.tar.gz $ tar zxvf libevent-2.0.17-stable.tar.gz $ cd libevent-2.0.17-stable $ ./configure --prefix=$HOME/local $ make $ cd ../tmux-1.7 $ /configure --prefix=$HOME/local CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/ncurses -L$HOME/local/lib" $ make $ make install $ cd ~ $ wget "https://raw.github.com/sifue/dotfiles/b14f380ad667bc02a1fcad402d2cbf4a3eb0e36a/.tmux.conf" $ tmux
¤³¤ì¤ÇOK¡£ÀßÄê¤Ïgithub¤Ë¤ª¤¤¤Æ¤¢¤ë¤â¤Î¤ò¼èÆÀ¤·¤ÆÁ᮵¯Æ°¤·¤Æ¤¤¤Þ¤¹¡£¥»¥Ã¥·¥ç¥ó¤òÈ´¤±¤ë¤Î¤Ë¤Ï¡¢ctrl+t d¡¢¤Þ¤¿°ú¤Â³¤Â³¤±¤ë¤Ë¤Ïtmux a¥³¥Þ¥ó¥É¤ÇOK¤Ç¤¹¡£
¾Ü¤·¤¤ÀßÄê¤ÎÆâÍÆ¡¢³Æ¼ï¥·¥ç¡¼¥È¥«¥Ã¥È¤ÎÀâÌÀ¤Ï°Ê²¼¤ÎÄ̤ꡣ
~/.tmux.conf
# Prefix set-option -g prefix C-t unbind-key C-b bind-key C-t send-prefix ## disable ESC delay set -s escape-time 0 # View set -g status-interval 1 set -g status-left-length 16 set -g status-right-length 50 set -g status-bg black set -g status-fg white set -g status-left '#[fg=cyan,bold][#14H:#S]#[default]]' set -g status-right '|#[fg=magenta,bold]#(load.sh)#[default]| #[fg=blue,bold][%a %m/%d %H:%M:%S]#[default]' set -g message-attr bold set -g message-fg white set -g message-bg red set -g pane-active-border-fg cyan set -g pane-active-border-bg black setw -g window-status-current-fg blue set-window-option -g mode-bg white set-window-option -g mode-fg black set-window-option -g window-status-fg white set-window-option -g window-status-bg black set-window-option -g window-status-current-bg black set-window-option -g window-status-current-fg green # Option set-window-option -g utf8 on set-window-option -g mode-keys vi set-window-option -g automatic-rename off set-window-option -g mode-mouse on set-window-option -g mouse-resize-pane on set-window-option -g mouse-select-pane on set-option -g base-index 1 # KeyBindings unbind ^C bind r source-file ~/.tmux.conf; display-message "Reload Config!!" bind c new-window bind p previous-window bind n next-window bind t last-window bind k kill-pane bind K kill-window bind y copy-mode bind P paste-buffer
¥·¥ç¡¼¥È¥«¥Ã¥È¤Ç¤¹¤¬¥¡¼¥¤¥ó¤ÏCtrl-t¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
Ctrl-t¤òÆþÎϤ·¤¿¤¤ºÝ¤Ë¤Ï¡¢Ctrl-t Ctrl-t¤Ç¤¹¡£
| µ¡Ç½ | ¥·¥ç¡¼¥È¥«¥Ã¥È |
|---|---|
| ²£Ê¬³ä | Ctrl-t " |
| ½Äʬ³ä | Ctrl-t % |
| ¥Ú¥¤¥ó¤ò½üµî | Ctrl-t k |
| ¥Ú¥¤¥ó¤ò°Üư | Ctrl-t o |
| ¥Ú¥¤¥ó¤ò¸ò´¹ | Ctrl-t Ctrl-o |
| ¥»¥Ã¥·¥ç¥ó¤òÈ´¤±¤ë | Ctrl-t d |
| ¥»¥Ã¥·¥ç¥óºÆ³« | ¥³¥Þ¥ó¥É¤Çtmux a |
| ¥¦¥¤¥ó¥É¥¦¤òºîÀ® | Ctrl-t c |
| ¥¦¥¤¥ó¥É¥¦¤ò½üµî | Ctrl-t K |
| ¥¦¥¤¥ó¥É¥¦Ì¾¤òÊÔ½¸ | Ctrl-t , |
| ¼¡¤Î¥¦¥¤¥ó¥É¥¦¤Ø | Ctrl-t n |
| Á°¤Î¥¦¥¤¥ó¥É¥¦¤Ø | Ctrl-t p |
| ¹¥¤¤ÊÈÖÌܤΥ¦¥¤¥ó¥É¥¦¤Ø | Ctrl-t ¿ô»ú |
| ľÁ°¤Î¥¦¥¤¥ó¥É¥¦¤Ø | Ctrl-t t |
| ¥Þ¥¦¥¹¤ÇÁªÂò¤·¤¿¥Ð¥Ã¥Õ¥¡¤òޤêÉÕ¤±¤ë | Ctrl-t P |
| ÀßÄê¤òÆÉ¤ß¹þ¤à | Ctrl-t r |
| ¥·¥ç¡¼¥È¥«¥Ã¥È°ìÍ÷¤ò¸«¤ë | Ctrl-t ? |
¤³¤ó¤Ê´¶¤¸¤ÎÀßÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¾Ü¤·¤¯¤ÏCtrl-t ?¤Çµ¯Æ°¤¹¤ë¥·¥ç¡¼¥È¥«¥Ã¥È°ìÍ÷¤ò¸«¤Æ¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤â¤Á¤í¤ó¥¿¥¤¥È¥ë¤ä¿§¤Ê¤É¤â¼«Í³¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
git¤Èctags¤Èvim¤Î¥¤¥ó¥¹¥È¡¼¥ë
http://d.hatena.ne.jp/sifue/20120406/1333738754
¤ò»²¹Í¤Ë¤·¤Æ¤¤¤Þ¤¹¡£git¤Ï³Æ¼ïvim¤Î¥×¥é¥°¥¤¥ó¤ò¥¯¥í¡¼¥ó¤·¤Æ¤¯¤ëºÝ¤ËɬÍפÀ¤Ã¤¿¤ê¤¹¤ë¤Î¤Ç¡¢Æþ¤ì¤Æ¤ª¤¤Þ¤¹¡£¤Þ¤¿¡¢ctags¤ÎÆüËܸìÈǤâÍøÍѤ¹¤ë¤Î¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤Þ¤¹¡£
$ mkdir -p ~/local/source $ cd ~/local/source $ wget http://git-core.googlecode.com/files/git-1.8.1.3.tar.gz $ tar zxvf git-1.8.1.3.tar.gz $ cd git-1.8.1.3 $ make prefix=$HOME/local $ make prefix=$HOME/local install $ cd .. $ wget http://hp.vector.co.jp/authors/VA025040/ctags/downloads/ctags-5.8j2.tar.gz $ tar zxvf ctags-5.8j2.tar.gz $ cd ctags-5.8j2 $ ./configure --prefix=$HOME/local $ make $ make install $ cd .. $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 $ tar -jxf vim-7.3.tar.bz2 $ cd vim73 $ ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=big --prefix=$HOME/local $ make $ make install $ wget "https://raw.github.com/sifue/dotfiles/2e722bb2e186ace5ca8f1587cae86d45a99df83b/essential/.vimrc" $ mkdir -p ~/.vim/bundle $ export GIT_SSL_NO_VERIFY=true $ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
ºÇ¸å¤Ë¤¢¤ëÄøÅÙ¤ÎÀßÄ꤬¤·¤Æ¤¢¤ë¡¢.vimrc¤ò¼èÆÀ¤·¡¢neobundle¤ògit¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ´°Î»¤Ç¤¹¡£
¤Þ¤º¡¢vim¤òµ¯Æ°¤·¤Æ¡¢:NeoBundleInstall¤ÈÆþÎϤ·¤Æ¡¢É¬Íפʥץ饰¥¤¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤·¤ç¤¦¡£
$ vim
:NeoBundleInstall
̵»ö¥¤¥ó¥¹¥È¡¼¥ë¤¬½ª¤ï¤ì¤Ð¡¢¤½¤ì¤¾¤ì¤Î¥×¥é¥°¥¤¥ó¤ÎÁ´µ¡Ç½¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
´ðËÜŪ¤Ë¤Ï³Æ¥×¥é¥°¥¤¥ó¤Î»È¤¤Êý¤Ï¡¢³Æweb¥µ¥¤¥È¤ÎºÇ¿·¤ä¡¢~/.vim/bundles¤ÎÃæ¤Î³Æ¥×¥é¥°¥¤¥ó¥Õ¥©¥ë¥ÀÆâ¤Ë¤¢¤ë¥É¥¥å¥á¥ó¥È¤ò»²¾È¤ª´ê¤¤¤·¤Þ¤¹¡£¤Á¤ç¤Ã¤ÈÀâÌÀ¤ò¤¹¤ë¤È
neobundle
´ðËÜŪ¤Ë¤Ï¡¢.vimrc¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¤github¤ª¤è¤Óvim online¾å¤Î¥×¥é¥°¥¤¥ó¥×¥í¥¸¥§¥¯¥È̾¤òµ½Ò¤·¤Æ:NeoBundleInstall¤ò¼Â¹Ô¤¹¤ë»È¤¤Êý¤·¤«¤·¤Þ¤»¤ó¡£¥×¥é¥°¥¤¥ó¤òºÇ¿·¤Î¤â¤Î¤Ë¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤¹¤ëºÝ¤Ï¡¢:NeoBundleInstall!¡¢¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëºÝ¤Ï¡¢ÀßÄê¤ò¾Ã¤·¤¿¸å¤Ë:NeoBundleClean¤ò¼Â¹Ô¤¹¤ë¤À¤±¤Ç¤¹¡£
¥×¥é¥°¥¤¥ó´ÉÍý¤µ¤ì¤Æ¤ë¤È¡¢´Êñ¤Ë¤¤¤í¤ó¤Ê¥×¥é¥°¥¤¥ó¤ÎÁêÀ¤ò»î¤»¤ë¤Î¤ÇËÜÅö¤Ë³Ú¤Ç¤¹¡£
unite
²¼¤Î.vimrc¤ÇÀßÄꤷ¤Æ¤¤¤ë¥·¥ç¡¼¥È¥«¥Ã¥È(¥Õ¥¡¥¤¥ë¤Ê¤é;uf¡¢ÍúÎò¤Ê¤é;um¤Ê¤É)¤Ç¡¢³Æ¼ï¥ê¥½¡¼¥¹¤ò³«¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
µ¯Æ°¸å¡¢Ê¸»ú¤òÆþÎϤ¹¤ë¤È¥Þ¥Ã¥Á¤¹¤ë¤â¤Î¤Ë¹Ê¤ê¤³¤Þ¤ì¤Þ¤¹¤¬¡¢Esc¤·¤Æ¥«¡¼¥½¥ë¤òư¤«¤·¡¢tab¤ò²¡¤·¤Æ¼Â¹Ô¤·¤¿¤¤¥³¥Þ¥ó¥ÉÁª¤Ö¥â¡¼¥É¤Ë¤¤¤¯¤³¤È¤â¤Ç¤¤Þ¤¹¡£¥¥ã¥ó¥»¥ë¤Ïq¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤Á¤Ê¤ß¤Ë¹Ê¹þ¤ß»þ¤Ë¤Ï*¤òÍøÍѤ·¤¿¥ï¥¤¥ë¥É¥«¡¼¥É¤âÍøÍѤǤ¤Þ¤¹¡£Â絬ÌÏ¥×¥í¥¸¥§¥¯¥È¤Ç¤ÏÊ£¿ô³¬Áؤò¸¡º÷¤¹¤ë**/¤òÆþÎϤ¹¤ë¤ÈÂçÄñÍî¤Á¤ë¤Î¤Ç¤½¤ì¤À¤±¤ÏÃí°Õ¤Ç¤¹¡£
¾Ü¤·¤¯¤Ï¡¢
https://github.com/Shougo/unite.vim/blob/master/doc/unite.txt
¤ò»²¹Í¤Ë¡£
snipMate
PHP¤Î³Æ¼ï¥¹¥Ë¥Ú¥Ã¥È¤òtab¥¡¼¤ÇŸ³«¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤¿¤È¤¨¤Ðfor¤ÈÆþÎϤ·¤Ætab¥¡¼¤ò²¡¤¹¤È
for ($i = 0; $i < count; $i++) { // code... }
¤Î¤è¤¦¤ËŸ³«¤µ¤ì¤Þ¤¹¡£
~/.vim/bundles/snipMate/snippets
°Ê¾å¤Î¥Õ¥©¥ë¥ÀÆâ¤ËÍøÍѤǤ¤ë¥¹¥Ë¥Ú¥Ã¥È¤Î°ìÍ÷¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£
¼«ºî¤Î¥¹¥Ë¥Ú¥Ã¥È¤âÅÐÏ¿¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¾Ü¤·¤¯¤Ï¡¢
http://www.vim.org/scripts/script.php?script_id=2540
ctrlp
Ctrl+p¤Ç¥«¥ì¥ó¥È¥Õ¥©¥ë¥À°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤ò¥Õ¥¡¥¸¡¼¸¡º÷¤ò¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤Þ¤µ¤ËSublimeText2¤ÎCtrl+p¤ÈƱ¤¸Ìò³ä¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Unite¤è¤ê¤â¥Õ¥¡¥¸¡¼¤Ë¸¡º÷¤·¤Æ¤¯¤ìµðÂç¤Ê¥×¥í¥¸¥§¥¯¥È¤Ë¤ª¤¤¤Æ¤â¹â®¤Ç¤¹¡£
unite-outline
²¼µ¤ËÀâÌÀ¤·¤Æ¤¢¤ëctags¥³¥Þ¥ó¥É¤Çtags¥Õ¥¡¥¤¥ë¤òºîÀ®¤Î¸å¡¢ÀßÄꤷ¤¿¥·¥ç¡¼¥È¥«¥Ã¥È(Ctrl+o)¤Ç¥á¥½¥Ã¥É°ìÍ÷¤Ê¤É¤òɽ¼¨¤·¤Æ¤¯¤ì¤Þ¤¹¡£
vcscommand
:VCS¤Ç»Ï¤Þ¤ëÍÍ¡¹¤Ê¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤Îµ¡Ç½¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¾Ü¤·¤¯¤Ï¡¢
http://www.vim.org/scripts/script.php?script_id=90
ÆÃ¤Ë:VCSLog¤È:VCSBlame¡¢:VCSDiff¤Ï¤è¤¯»È¤¦¤Î¤Ç¤Ï¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£
¥Þ¥¦¥¹¤ä¥¹¥¯¥í¡¼¥ë¤Î»È¤¤Êý¤Ë¤Ä¤¤¤Æ
ÀâÌÀ¤ÏÉÔÍפ«¤È»×¤¤¤Þ¤¹¤¬¡¢tmux¤Î¥Ú¥¤¥ó¤Î¶èÀڤꡢ¥Ú¥¤¥ó¤ÎÁªÂò¡¢vim¤Î¥¿¥Ö¡¢vim¤Îʸ¾Ï¡¢¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤Çvim¤Îñ¸ì¤¬ÊÔ½¸¤Ç¤¡¢¥Þ¥¦¥¹¤Î¥¹¥¯¥í¡¼¥ë¤â¸ú¤¯¤Î¤Ç¤Ï¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£¥È¥é¥Ã¥¯¥Ñ¥Ã¥É¤ä´·À¥¹¥¯¥í¡¼¥ë¤ò¤Ä¤«¤Ã¤Æ¤¤¤ë¤È¡¢¤Ç¤«¤¤¥Õ¥¡¥¤¥ë¤Ç¤â¥¹¥ë¡¼¤Ã¤È¤Ê¤á¤é¤«¤Ë¥¹¥¯¥í¡¼¥ë¤Ç¤¤Þ¤¹¡£
.vimrc¤Ë¤Ä¤¤¤Æ
¤Ê¤ª~/.vimrc¤ÎÆâÍÆ¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤¾¤ì¤ÎÀßÄê¤ÎÀâÌÀ¤Ë¡¢¤É¤Î¤è¤¦¤Ê°ÕÌ£¤Ê¤Î¤«¡¢¤É¤Î¤è¤¦¤Ê¥·¥ç¡¼¥È¥«¥Ã¥È¤ÇÆÉ¤ß½Ð¤»¤ë¤«¥³¥á¥ó¥È¤Ç½ñ¤¤¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç³Îǧ¤¯¤À¤µ¤¤¡£
¤Û¤È¤ó¤É¤ÎPHP³«È¯¤Ç¡¢É¬ÍפÊÀßÄê¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£¤Ê¤ª¡¢¤Ç¤«¤¤¥Õ¥¡¥¤¥ë¤ò³«¤¯¤Î¤Ë¾ã³²¤Ë¤Ê¤ëÀßÄê¤ä¡¢JavaScript¤äHTMLÍѤΥץ饰¥¤¥ó¤äÀßÄê¤Ï¾Ê¤¤¤Æ¤¢¤ê¤Þ¤¹¡£
"Vim¤ò¤Ê¤ë¤Ù¤¯Vi¸ß´¹¤Ë¤¹¤ë set nocompatible """"""""""" NeoBundleÀßÄê """""""""""{{{ " https://github.com/Shougo/neobundle.vim " ¥¤¥ó¥¹¥È¡¼¥ë " $ mkdir -p ~/.vim/bundle " $ export GIT_SSL_NO_VERIFY=true " $ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim " :NeoBundleInstall ¤Ç¥×¥é¥°¥¤¥ó¥¤¥ó¥¹¥È¡¼¥ë :NeoBundleInstall! ¤Ç¹¹¿· filetype plugin indent off " required! if has('vim_starting') set runtimepath+=~/.vim/bundle/neobundle.vim/ call neobundle#rc(expand('~/.vim/bundle/')) endif " git¤ò»È¤Ã¤¿¥×¥é¥°¥¤¥ó¥Þ¥Í¡¼¥¸¥ã ´ðËÜVundle¤È°ì½ï NeoBundle 'Shougo/neobundle.vim' """""""" github " Unite¥³¥Þ¥ó¥É¤Ë¤è¤ë¥Õ¥£¥ë¥¿ÉÕ¤ÆÉ¤ß½Ð¤·Åù NeoBundle 'Shougo/unite.vim' " Unite¥³¥Þ¥ó¥É¤Ç¥¢¥¦¥È¥é¥¤¥ó¤òɽ¼¨ NeoBundle 'h1mesuke/unite-outline' " PHP5.4¤Ë¤âÂбþ¤·¤Æ¤¤¤ë¿·¤·¤¤PHP¤Î¥·¥ó¥¿¥Ã¥¯¥¹¥Ï¥¤¥é¥¤¥È NeoBundle 'shawncplus/php.vim' " ctrl+p¤Çµ¯Æ°¤¹¤ë¥Õ¥¡¥¸¡¼¸¡º÷¤ËÂбþ¤·¤¿¥Õ¥¡¥¤¥é¡¼ NeoBundle 'kien/ctrlp.vim' " SVN¤ägit¤Ê¤É http://blog.blueblack.net/item_144 :VCS* ¤Ç¼Â¹Ô NeoBundle 'vcscommand.vim' " tab¤Ç¥¹¥Ë¥Ú¥Ã¥ÈÊä´° NeoBundle 'snipMate' filetype on filetype indent on filetype plugin on "}}} """"""""""" ¥×¥é¥°¥¤¥ó¤´¤È¤ÎÀßÄê """""""""""{{{ " Uniteµ¯Æ°»þ¤Ë¥¤¥ó¥µ¡¼¥È¥â¡¼¥É¤Ç³«»Ï let g:unite_enable_start_insert = 1 " Unite¤Î³Æ¼ï¥·¥ç¡¼¥È¥«¥Ã¥ÈÀßÄê " ¥Ð¥Ã¥Õ¥¡°ìÍ÷ nnoremap <silent> ;ub :<C-u>Unite buffer<CR> " ¥Õ¥¡¥¤¥ë°ìÍ÷ nnoremap <silent> ;uf :<C-u>UniteWithBufferDir -buffer-name=files file<CR> " ¥ì¥¸¥¹¥¿°ìÍ÷ nnoremap <silent> ;ur :<C-u>Unite -buffer-name=register register<CR> " ºÇ¶á»ÈÍѤ·¤¿¥Õ¥¡¥¤¥ë°ìÍ÷ nnoremap <silent> ;um :<C-u>Unite file_mru<CR> " Á´Éô¾è¤» nnoremap <silent> ;ua :<C-u>UniteWithBufferDir -buffer-name=files buffer file_mru bookmark file<CR> " Ctrl + o ¤Ç¥¿¥°¥¢¥¦¥È¥é¥¤¥ó¤òɽ¼¨ nnoremap <C-o> :<C-u>Unite outline<CR> "}}} """"""""""" Vim¤Î´ðËÜŪ¤ÊÀßÄê """""""""""{{{ "¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¥¡¼¤Îưºî¤ò·èÄꤹ¤ë "2:indent,eol,start¤ÈƱ¤¸ set backspace=2 "¹Ô¿ôɽ¼¨ set number "¿·¤·¤¤¹Ô¤ò³«»Ï¤·¤¿¤È¤¤Ë¡¢¿·¤·¤¤¹Ô¤Î¥¤¥ó¥Ç¥ó¥È¤ò¸½ºß¹Ô¤ÈƱ¤¸Î̤ˤ¹¤ë set autoindent "¸¡º÷¤Ç¾®Ê¸»ú¤Ê¤éÂçʸ»ú¤ò̵»ë¡¢Âçʸ»ú¤Ê¤é̵»ë¤·¤Ê¤¤ÀßÄê set smartcase "(no)¸¡º÷¤ò¥Õ¥¡¥¤¥ë¤ÎËöÈø¤Þ¤Ç¸¡º÷¤·¤¿¤é¡¢¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ø¥ë¡¼¥×¤¹¤ë set nowrapscan "¥¤¥ó¥¯¥ê¥á¥ó¥¿¥ë¥µ¡¼¥Á¤ò¹Ô¤¦ set incsearch "highlight matches with last search pattern set hlsearch "ÊĤ¸³ç¸Ì¤¬ÆþÎϤµ¤ì¤¿¤È¤¡¢Âбþ¤¹¤ë³ç¸Ì¤òɽ¼¨¤¹¤ë set showmatch "¥«¡¼¥½¥ë¤¬²¿¹ÔÌܤβ¿ÎóÌܤËÃÖ¤«¤ì¤Æ¤¤¤ë¤«¤òɽ¼¨¤¹¤ë set ruler "¿·¤·¤¤¹Ô¤òºî¤Ã¤¿¤È¤¤Ë¹âÅ٤ʼ«Æ°¥¤¥ó¥Ç¥ó¥È¤ò¹Ô¤¦ set smartindent "Êݸ¤·¤Ê¤¤¤Ç¾¤Î¥Õ¥¡¥¤¥ë¤òɽ¼¨¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤¹¤ë set hidden "¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡Æâ¤Î¥Õ¥¡¥¤¥ë¤Îʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤òÀßÄꤹ¤ë set fileencoding=utf-8 "Insert¥â¡¼¥É¤Ç<Tab> ¤òÁÞÆþ¤¹¤ë¤Î¤Ë¡¢Å¬Àڤʿô¤Î¶õÇò¤ò»È¤¦ set expandtab set ts=4 "¥Õ¥¡¥¤¥ëÆâ¤Î <Tab> ¤¬Âбþ¤¹¤ë¶õÇò¤Î¿ô set tabstop=4 "¼«Æ°¥¤¥ó¥Ç¥ó¥È¤Î³ÆÃʳ¬¤Ë»È¤ï¤ì¤ë¶õÇò¤Î¿ô set shiftwidth=4 "¹ÔƬ¤Î;ÇòÆâ¤Ç Tab ¤òÂǤÁ¹þ¤à¤È¡¢'shiftwidth' ¤Î¿ô¤À¤±¥¤¥ó¥Ç¥ó¥È¤¹¤ë "set smarttab "¶¯Ä´É½¼¨(¿§ÉÕ¤±)¤ÎON/OFFÀßÄê syntax on "¥¹¥Æ¡¼¥¿¥¹¥é¥¤¥ó¤òɽ¼¨¤¹¤ë¥¦¥£¥ó¥É¥¦¤òÀßÄꤹ¤ë "2:¾ï¤Ë¥¹¥Æ¡¼¥¿¥¹¥é¥¤¥ó¤òɽ¼¨¤¹¤ë set laststatus=2 "¥¹¥Æ¡¼¥¿¥¹¹Ô¤Îɽ¼¨ÆâÍÆ¤òÀßÄꤹ¤ë set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}G8%=%l,%c%V%8P "vim¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤È¥¹¥ï¥Ã¥×¥Õ¥¡¥¤¥ë set nobackup set noswapfile "¥Ð¥Ã¥Õ¥¡¤ò¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤Ë¥³¥Ô¡¼(for OSX) set clipboard=unnamed,autoselect "¼«Æ°²þ¹Ô¥ª¥Õ set tw=0 " ¥Þ¥¦¥¹¥â¡¼¥É͸ú set mouse=a " xterm¤ÈscreenÂбþ set ttymouse=xterm2 "MacVim¤äGVim¤òÍøÍѤ¹¤ëºÝ¤ËIME¤¬¥â¡¼¥É¤ÎÀÚÂØ¤Ç¥ª¥Õ¤È¤Ê¤ëÀßÄê set imdisable "UTF-8ʸ»ú²½¤±Âбþ set termencoding=utf-8 set encoding=utf-8 set fileencoding=utf-8 set fileencodings=utf-8,cp932 "}}} """"""""""" ¸úΨ²½UP¤Î¤¿¤á¤ÎÀßÄê """""""""""{{{ " <Leader>¤ò\¤Ë¥ê¥Þ¥Ã¥Ã¥× nnoremap \ <Leader> vnoremap \ <Leader> "Á´³Ñ¥¹¥Ú¡¼¥¹¤ò¡¡¤Çɽ¼¨ highlight JpSpace cterm=underline ctermfg=Blue guifg=Blue au BufRead,BufNew * match JpSpace /¡¡/ "¥¿¥Ö¤ò¸«¤¨¤ë¤è¤¦¤ËÀßÄê set list set listchars=tab:>-,trail:- " ¥µ¡¼¥Á¥Ï¥¤¥é¥¤¥È¤ò¤òESCÆó²ó¤Ç¾Ã¤¹ nnoremap <Esc><Esc> :nohlsearch<CR><Esc> " ÁÞÆþ¥â¡¼¥É¤È¥Î¡¼¥Þ¥ë¥â¡¼¥É¤Ç¥¹¥Æ¡¼¥¿¥¹¥é¥¤¥ó¤Î¿§¤òÊѹ¹¤¹¤ë au InsertEnter * hi StatusLine guifg=DarkBlue guibg=DarkYellow gui=none ctermfg=Blue ctermbg=Yellow cterm=none au InsertLeave * hi StatusLine guifg=Black guibg=White gui=none ctermfg=Black ctermbg=White cterm=none "¥Ð¥¤¥Ê¥êÊÔ½¸(xxd)¥â¡¼¥É¡Êvim -b ¤Ç¤Îµ¯Æ°¡¢¤â¤·¤¯¤Ï *.bin ¤Çȯư¤·¤Þ¤¹¡Ë augroup BinaryXXD autocmd! autocmd BufReadPre *.bin let &binary =1 autocmd BufReadPost * if &binary | silent %!xxd -g 1 autocmd BufReadPost * set ft=xxd | endif autocmd BufWritePre * if &binary | %!xxd -r autocmd BufWritePre * endif autocmd BufWritePost * if &binary | silent %!xxd -g 1 autocmd BufWritePost * set nomod | endif augroup END " ¥ô¥£¥¸¥å¥¢¥ë¥â¡¼¥É¤ÇÁªÂò¤·¤¿¥Æ¥¥¹¥È¤òn¤Ç¸¡º÷¤¹¤ë(¥ì¥¸¥¹¥¿v»ÈÍÑ) vnoremap <silent> n "vy/\V<C-r>=substitute(escape(@v,'\/'),"\n",'\\n','g')<CR><CR> " gf¤Ç¥«¡¼¥½¥ë²¼¤Î¥Õ¥¡¥¤¥ë̾¤ò¿·¤·¤¤¥¿¥Ö¤Ç³«¤¯ nnoremap gf :tabe <cfile><CR> vnoremap gf :tabe <cfile><CR> " ¸¡º÷¸ì¤¬²èÌÌÃæ±û¤Ë¤¯¤ë¤è¤¦¤Ë nmap n nzz nmap N Nzz " ¥ä¥ó¥¯¡¢ÀÚ¤ê¼è¤ê»þ¤Ë¥ì¥¸¥¹¥¿"¤ÎÃͤòz¤Ë¤â¥³¥Ô¡¼¤·¤Æ¤ª¤¯(Ϣ³ŽÉղĤ˻Ȥ¦) vnoremap <silent> y y:let @z=@"<CR> vnoremap <silent> d d:let @z=@"<CR> " ¥Ó¥¸¥å¥¢¥ë¥â¡¼¥É¤ÇÁªÂò¤·¤¿¥Æ¥¥¹¥È¤ò¾Ã¤·¤Æ¥ì¥¸¥¹¥¿z¤ÎÆâÍÆ¤òŽÉÕ¤±¤ë(Ϣ³ŽÉÕ²Ä) vnoremap <silent> p x"zP " vimrc¤Î¿·¤·¤¤¥¿¥Ö¤Ç¤ÎÊÔ½¸¤ÈÆÉ¤ß¹þ¤ß¤Î¥·¥ç¡¼¥È¥«¥Ã¥ÈÀßÄê nnoremap ;s :source $MYVIMRC<CR> nnoremap ;v :tabe $MYVIMRC<CR> nnoremap ;g :tabe $MYGVIMRC<CR> nnoremap ;l :tabe ~/.vimrc.local<CR> " :make¤ä:grep¤ò¤·¤¿ºÝ¤Ë¼«Æ°Åª¤Ëquickfix¤¬³«¤¯¤è¤¦¤Ë¤¹¤ë autocmd QuickfixCmdPost make,grep,grepadd,vimgrep,vimgrepadd if len(getqflist()) != 0 | cw | endif " ¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ëÀìÍѤÎÀßÄê augroup ettext autocmd! autocmd BufRead,BufNewFile *.txt setlocal expandtab nolist nonumber tw=0 augroup END " ¥Õ¥¡¥¤¥ë¤ò³«¤¤¤¿¤È¤¤ËÁ°²ó¤ÎÊÔ½¸²Õ½ê¤Ë°Üư autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif "}}} """"""""""" ¸À¸ì¤´¤È¤ÎÀßÄê """""""""""{{{ "ctags¤Î¥Õ¥¡¥¤¥ë¤ò¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¸¡º÷¤·¤Æ¾å°Ì¤Ë¤¢¤ë¤â¤ÎÆÉ¤ß¹þ¤à if has('path_extra') set tags+=tags; endif """"" VIMÍÑÀßÄê """""""" " vim¥Õ¥¡¥¤¥ë¤Ë´Ø¤·¤Æ{¤È}¤Ë¤è¤ëÀޤꤿ¤¿¤ßÀßÄê¤ò¤¹¤ë au FileType vim setlocal foldmethod=marker """"" PHPÍÑÀßÄê """""""" " :make¤ÇPHP¹½Ê¸¥Á¥§¥Ã¥¯ au FileType php setlocal makeprg=php\ -l\ % au FileType php setlocal errorformat=%m\ in\ %f\ on\ line\ %l " PHP¤Î´Ø¿ô¤ä¥¯¥é¥¹¤ÎÀޤꤿ¤¿¤ß(Èó¾ï¤Ë½Å¤¤¡Ë let php_folding = 0 " ʸ»úÎó¤ÎÃæ¤ÎSQL¤ò¥Ï¥¤¥é¥¤¥È let php_sql_query = 1 " Baselib¥á¥½¥Ã¥É¤Î¥Ï¥¤¥é¥¤¥È let php_baselib = 1 " HTML¤â¥Ï¥¤¥é¥¤¥È let php_htmlInStrings = 1 " <? ¤ò̵¸ú¤Ë¤¹¤ë¢ª¥Ï¥¤¥é¥¤¥È½ü³°¤Ë¤¹¤ë let php_noShortTags = 1 " ] ¤ä ) ¤ÎÂбþ¥¨¥é¡¼¤ò¥Ï¥¤¥é¥¤¥È let php_parent_error_close = 1 let php_parent_error_open = 1 "}}}
°Ê¾å¤Ç´Ä¶¹½ÃÛ¼«ÂΤϴ°Î»¤È¤Ê¤ê¤Þ¤¹¡£ÊѤ¨¤¿¤¤Éôʬ¤Ï¿ï»þÀßÄê¤Ê¤É¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¼ÂºÝ¤ËÀßÄê¤ò°ì¤Ä°ì¤Ä³Îǧ¤·¤Ê¤¬¤é¡¢»È¤Ã¤Æ¤ß¤ÆÄº¤±¤ì¤Ð¤È»×¤¤¤Þ¤¹¡£¸Ä¿Í¤Î¹¥¤ß¤Ê¤É¤¬¤¢¤ë¤È»×¤¤¤Þ¤¹¤Î¤Ç¡¢¥«¥é¡¼¥¹¥¡¼¥à¤Ê¤É¤ÎÀßÄê¤Ïͽ¤á³°¤·¤Æ¤¢¤ê¤Þ¤¹¡£
¤Ê¤ªctags¤À¤±¤Ï¡¢É¬Íפˤʤ俸å¤Ë¥¿¥°¤òÉÕ¤±¤¿¤¤PHP¤Î¥×¥í¥¸¥§¥¯¥È¤Î¥Õ¥©¥ë¥À¤Î¥ë¡¼¥È¤Ë¤Æ¡¢
$ rm tags $ ctags -R --langmap=PHP:.php.inc --php-types=c+f+d+v+i;
¤ò¼Â¹Ô¤¯¤À¤µ¤¤¡£¤³¤ì¤Ç¡¢¸Å¤¤tags¥Õ¥¡¥¤¥ë¤¬¾Ã¤·¡¢¿·¤¿¤Ëtags¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¤Þ¤¹¡£
¤½¤Î¥Õ¥©¥ë¥À°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤òvim¤Ç³«¤¯ºÝ¤Ë¼«Æ°Åª¤Ëtags¥Õ¥¡¥¤¥ë¤¬ÆÉ¤ß¹þ¤Þ¤ì¡¢Ctrl+]¤Ç´Ø¿ô¤ÎÄêµÁ¸µ¤Ë¥¸¥ã¥ó¥×Ctrl+t Ctrl+t(tmux¤Î¥¡¼¥Ð¥¤¥ó¥É¤È¤«¤Ö¤Ã¤Æ¤¤¤ë¤¿¤á)¤ÇÌá¤Ã¤Æ¤¯¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤Þ¤¿¡¢Ctrl+p¤äCtrl+n¤Çɽ¼¨¤¹¤ëÊä´°¸õÊä¤Ë¤â¤³¤Îctags¤Î¾ðÊ󤬻Ȥï¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¸å¤Ïvim¤Î¥¿¥°¥¸¥ã¥ó¥×¤Î¥Ø¥ë¥×¤Ê¤É¤òÆÉ¤ó¤Ç»È¤Ã¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
Â絬Ìϳ«È¯¤ÎºÝ¤Ë»È¤¨¤ëvim¥Æ¥¯¥Ë¥Ã¥¯
ºÇ¸å¤ËÂ絬Ìϳ«È¯¤Ç¤è¤¯»È¤¦¥Æ¥¯¥Ë¥Ã¥¯¤ò¾Ò²ð¤·¤Þ¤¹¡£
°ì±þ¡¢vim¤Ïvimtutor¤ÇÀâÌÀ¤µ¤ì¤ë»È¤¤Êý¤Ï´ðËÜŪ¤Ë»È¤¨¤ë¤³¤È¤òÁ°Äó¤È¤·¤Þ¤¹¡£¤½¤Î¾å¤Ç³«È¯¤¹¤ë¤Î¤ËÊØÍø¤Êvim¤Î¥Ç¥Õ¥©¥ë¥Èµ¡Ç½¤ò¾Ò²ð¤·¤Þ¤¹¡£
1. ¥³¥Ô¥Ú¥â¡¼¥É :set paste
¤³¤ì¤ò¤ä¤Ã¤Æ¤ª¤±¤Ðޤê¤Ä¤±¤¿ºÝ¤Ë¥¤¥ó¥Ç¥ó¥È¤¬¤¯¤º¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£
Ì᤹¤È¤¤Ï¡¢:set nopaste
¤Ç¤â¥³¥Ô¥Ú³«È¯¤Ï¤¤¤±¤Þ¤»¤ó¤è¡ª
¥Æ¥ó¥×¥ì¡¼¥È¤ä¥¹¥Ë¥Ú¥Ã¥È¤òÍøÍѤ·¤¿¤¤ºÝ¤Î¤ß¤Ë»È¤¤¤Þ¤·¤ç¤¦¡£½ÅÊ£¤ÏÂ絬Ìϳ«È¯¤ÎÊݼé¤Ë¤ª¤±¤ë°¡ª
2. ¥Þ¥¯¥í qa¤Ç³Ð¤¨¤Æq¤ÇµÏ¿½ªÎ»@a¤Ç¼Â¹Ô
a¤Ïµ²±Îΰè¤Î̾Á°¤Ê¤À¤±¤Ç¡¢Æ±¤¸¥¡¼¤Ç¤¢¤ì¤ÐÊ̤ˤɤì¤Ç¤âÂç¾æÉפǤ¹¡£
Ʊ¤¸¤è¤¦¤ÊÆþÎÏÁàºî¡¢¤¿¤È¤¨¤Ðgetter¤äsetter¤ò½ñ¤¤¤¿¤ê¤¹¤ë¤Î¤Ï¤¹¤°¤Ë¥Þ¥¯¥í¤Ë¤·¤Æ¸úΨ²½¤·¤¿Êý¤¬¤è¤¤¤Ç¤¹¤è¤Í¡£
3. Á°²ó¤Îưºî¤ò·«¤êÊÖ¤¹ . 10²ó·«¤êÊÖ¤¹10.
Ʊ¤¸Áàºî¤Î·«¤êÊÖ¤·¤Ï¡¢.¤Ç¼Â¹Ô¡£¤½¤ì¤ò10000²ó¼Â¹Ô¤¹¤ë¤Î¤â¥â¥Ë¥¿¡¼¤ò¸«¤Æ¤¤¤ë¤À¤±¤Ç½½Ê¬¤Ç¤¹¡£
4. ¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ç¥ä¥ó¥¯¤·¤¿Ê¸»úÎó¤ò¸Æ¤Ó½Ð¤¹ C-r"
¥ß¥Ë¥Ð¥Ã¥Õ¥¡¤Ë¤Æ¡¢¥ì¥¸¥¹¥¿¤Î¾ðÊó¤ò¸Æ¤Ó½Ð¤·¤¿¤¤»þ¡¢¤è¤¯ÁªÂò¤·¤¿Ã±¸ì¤ò¥ä¥ó¥¯¤·¤Æ¸¡º÷¤·¤¿»þ¤Ê¤É¤ËÊØÍø¤Ç¤¹¡£
5. ¿ôÃͤΥ¤¥ó¥¯¥ê¥á¥ó¥È¡¢¥Ç¥¯¥ê¥á¥ó¥È C-a ¤È C-x
¤³¤ì¤È¥Þ¥¯¥í¤òÁȤ߹ç¤ï¤»¤ë¤È¡¢¿ôÃͤÎÍåÎó¤ä¥Æ¥¹¥È¥Ç¡¼¥¿¤ÎºîÀ®¤Ê¤É¤¬Èó¾ï¤Ë³Ú¤Ë¤Ê¤ê¤Þ¤¹¡£
1, 20, 40
2, 21, 41
3, 22, 42
4, 23, 43
5, 24, 44
¤³¤¦¤¤¤¦¤Î¤Ï¥Þ¥¯¥í¤È¥¤¥ó¥¯¥ê¥á¥ó¥È¡¦¥Ç¥¯¥ê¥á¥ó¥È¤Ç¥µ¥¯¥Ã¤Èºî¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤ç¤¦¡£
6. ¥Æ¥¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁªÂò viw
¥Þ¥¦¥¹¤Î¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤ÈƱ¤¸¤Ê¤Î¤Ç¤¹¤¬¡¢iw¤Ê¤É¤ÇÁªÂò¤Ç¤¤ë¥Æ¥¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤ò°Õ¼±¤·¤Æ¥Þ¥¯¥í¤Ê¤É¤òÁȤߤϤ¸¤á¤ë¤È¡¢°ìµ¤¤Ë¤¤¤í¤ó¤ÊÁàºî¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
7. º£¤Î¥Õ¥¡¥¤¥ë¤ÈÈæ³Ó :vertical diffsplit [¥Õ¥¡¥¤¥ë̾]
¥³¥Þ¥ó¥É¤¬Ä¹¤¤¤Î¤Ç˺¤ì¤¬¤Á¤Ç¤¹¤¬¡¢2¤Ä¤Î¥Õ¥¡¥¤¥ë¤Îdiff¤òssh¾å¤ÇÄ´¤Ù¤Ê¤¤ã¤¤¤±¤Ê¤¤»þ¤ËÊØÍø¤Ç¤¹¡£´Ä¶¤ÎÀßÄ꺹°Û¤ò¸«¤¿¤ê¤¹¤ë¤Î¤Ë»È¤¤¤Þ¤¹¡£
8. Ê£¿ô¹ÔƱ»þÊÔ½¸ C-v¤Ç¶ë·ÁÁªÂò¡¢I¤Þ¤¿¤ÏA¤Î¸å¹¥¤¤Êʸ»úÎó¤òÆþÎϤ·¤Æ¡¢Esc¤ÇÈ¿±Ç
¤³¤ì¤ÏÊ£¿ô¹Ô¥³¥á¥ó¥È¥¢¥¦¥È¤ä¡¢Ê£¿ô¹ÔƱ»þÊÔ½¸¤Î¥Þ¥¯¥í²½¤Ê¤É¤¤¤í¤¤¤í¤Ê¥·¡¼¥ó¤ÇÌò¤ËΩ¤Ä¥Æ¥¯¥Ë¥Ã¥¯¤Ç¤¹¡£
9. ls | vim - ¤Ê¤É¤Çɸ½à½ÐÎϤòvim¤ËÅϤ¹
·ë²Ì¤òvim¤ÇÊÔ½¸¡¢Ä´ºº¤·¤¿¤¤¤È¤¤Ê¤É¤ËÊØÍø¤Ç¤¹¡£
¤Þ¤¿¥·¥ó¥¿¥¯¥¹¥Ï¥¤¥é¥¤¥È¤òÌÜŪ¤ËÍøÍѤ¹¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£
¤è¤¯»È¤¦¤Î¤¬¡¢diff¤Ç¤ÎÍøÍÑ
$ svn diff | vim - $ git diff | vim -
¤Ë¤Ê¤ê¤Þ¤¹¡£
10. gf ¤Ç¥«¡¼¥½¥ë²¼¤Î¥Ñ¥¹¤ò³«¤¯
¤³¤ì¤Ïvim -¤ÇÆÉ¤ß¤À¤·¤¿É¸½à½ÐÎϤÈÈó¾ï¤ËÁêÀ¤ÎÎɤ¤¥Æ¥¯¥Ë¥Ã¥¯¤Ç¤¹¡£
$ git diff | vim -
¤Çdiff¤ò³«¤¡¢¹¹¤Ë¤½¤³¤«¤é¡¢¥Ñ¥¹¤Î¾å¤Ë¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¹Ô¤¡¢gf¤Ç¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¥¸¥ã¥ó¥×¤·¤Æ:VCSLog¤Ê¤É¤Ç¡¢²áµî¤ÎÍúÎò¤Ê¤É¤òÄ´¤Ù¤¿¤ê¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
11. :make¤Ç¥·¥ó¥¿¥Ã¥¯¥¹¥Á¥§¥Ã¥¯
¤Þ¤µ¤«¥·¥ó¥¿¥Ã¥¯¥¹¥¨¥é¡¼¤Î¤¢¤ë¥³¡¼¥É¤Ê¤ó¤Æ¥³¥ß¥Ã¥È¤·¤Þ¤»¤ó¤è¤Í¡£ÀßÄê¤Ë¤è¤Ã¤Æ¤ÏÊݸ¤¹¤ë¤¿¤Ó¤Ë:make¤¬Áö¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤¿¤À¡¢:make¤¬½Å¤¤¾ì¹ç¤â¤¢¤ë¤Î¤Ç¡¢¤½¤Î»þ¤Ë¹ç¤ï¤»¤¿±¿ÍѤǡ£
°Ê¾å¤¬¡¢ssh¾å¤Ç¥Þ¥¦¥¹¥¹¥¯¥í¡¼¥ë¤â»È¤¨¤ëÂ絬ÌÏPHP³«È¯¸þ¤±vim+tmux´Ä¶¤Î¹½ÃÛ¤ÈÂ絬Ìϳ«È¯¤ÎºÝ¤Ë»È¤¨¤ëvim¥Æ¥¯¥Ë¥Ã¥¯¤Î¾Ò²ð¤Ç¤·¤¿¡£
¤ªÈè¤ìÍͤǤ·¤¿¡£
2013ǯ01·î02Æü
¢£¥¨¥ê¥Ã¥¯¡¦¥¨¥ô¥¡¥ó¥¹¤Î¥É¥á¥¤¥ó¶îưÀ߷פ˱è¤Ã¤ÆSymfony2¤Ç¥æ¡¼¥¶¡¼´ÉÍý¥¢¥×¥ê¤òºî¤Ã¤Æ¤ß¤¿
¤¢¤±¤Þ¤·¤Æ¤ª¤á¤Ç¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£
µîǯ¤ÎÊ뤫¤é¥¨¥ê¥Ã¥¯¡¦¥¨¥ô¥¡¥ó¥¹¤Î¥É¥á¥¤¥ó¶îưÀ߷פȤ¤¤¦5200±ß¡¢500¥Ú¡¼¥¸¤â¤¹¤ëËܤò¹ØÆþ¤·¤ÆÆÉ¤ß»Ï¤á¤¿¼«Ê¬¤Ç¤¹¡£
¥¨¥ê¥Ã¥¯¡¦¥¨¥ô¥¡¥ó¥¹¤Î¥É¥á¥¤¥ó¶îưÀß·× (IT Architects¡ÇArchive ¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Î¼ÂÁ©)
- ºî¼Ô: ¥¨¥ê¥Ã¥¯¡¦¥¨¥ô¥¡¥ó¥¹,º£´Ø¹ä,ÏÂÃÒ±¦·Ë,ËÒÌîÍ´»Ò
- ½ÐÈǼÒ/¥á¡¼¥«¡¼: æÆ±Ë¼Ò
- ȯÇäÆü: 2011/04/09
- ¥á¥Ç¥£¥¢: Âç·¿ËÜ
- ¹ØÆþ: 19¿Í ¥¯¥ê¥Ã¥¯: 1,360²ó
- ¤³¤Î¾¦Éʤò´Þ¤à¥Ö¥í¥° (126·ï) ¤ò¸«¤ë
¤¢¤Þ¤ê¤ËÌÞÂÎ̵¤«¤Ã¤¿¤Î¤Ç»î¤·¤Ë¤³¤Î¥É¥á¥¤¥ó¶îưÀ߷פÎÀß·×»×Áۤˤ½¤Ã¤Æ¡¢´Êñ¤Ê¥¢¥×¥ê¤òSymfony2¤Çºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
¼ÂºÝ¤Ëºî¤é¤ì¤¿¥µ¥¤¥È¤Ï¡¢
¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£
¤Ç¥í¥°¥¤¥ó¤Ç¤¤Þ¤¹¡£(¥æ¡¼¥¶¡¼ºî¤ë¤À¤±¤Ê¤éadmin/adminpass¤Ç¤âOK)
²èÌÌ¥¤¥á¡¼¥¸¤Ï
¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£UI¤Ë¤Ïtwitter¤Îbootstrap¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£
¥½¡¼¥¹¥³¡¼¥É¤Ï¡¢
https://github.com/sifue/UserManagement
¤«¤é¥Á¥§¥Ã¥¯¥¢¥¦¥È¤Ç¤¤Þ¤¹¡£ÌµÏÀMIT¥é¥¤¥»¥ó¥¹¤Ç¤¹¡£¥µ¥ó¥×¥ë¤È¤·¤Æ»È¤¨¤½¤¦¤Ê½ê¤¬¤¢¤Ã¤¿¤é¹¥¤¤Ê¤è¤¦¤Ë²þÊѤ·¤Æ¤´¼«Í³¤Ë¤´ÍøÍѤ¯¤À¤µ¤¤¡£
¥É¥á¥¤¥ó¶îưÀ߷פϤ¹¤´¤¯´Êñ¤Ë¸À¤¦¤È¡¢¥·¥¹¥Æ¥à¤òºî¤ë»þ¤Ã¤Æ¶È̳¥â¥Ç¥ë(¼ÂºÝ¤Î¥Ó¥¸¥Í¥¹¤òÃê¾Ý²½¤·¤¿³µÇ°¡¢Î㤨¤ÐUML¤Î¥¯¥é¥¹¿Þ¤Ç½ñ¤¤¤¿¤è¤¦¤Ê¤â¤Î)¤Î¶¦Í¤Ã¤Æ¤¹¤´¤¯½ÅÍפÀ¤è¤Í¤Ã¤ÆÏ䫤é»Ï¤Þ¤Ã¤Æ¡¢¤½¤Î¥â¥Ç¥ë¤È¥·¥¹¥Æ¥à¤ò¤¤¤«¤Ë¶á¤Å¤±¤ë¤«¤Ã¤ÆÏäȡ¢¼ÂºÝ¤Î¥·¥¹¥Æ¥à¤ò¼ÂÁõ¤¹¤ë¤È¤¤Ë¤Ï¡¢
- ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ÁØ : Web¤Ç¤¤¤¦View
- ¥¢¥×¥ê¥±¡¼¥·¥ç¥óÁØ: Web¤Ç¤¤¤¦Controller
- ¥É¥á¥¤¥óÁØ: ¤¹¤Ù¤Æ¤Î¥Ó¥¸¥Í¥¹¥í¥¸¥Ã¥¯¤ò½¸Ìó¤·¤¿¼ÂÁõ
- ¥¤¥ó¥Õ¥é¥¹¥È¥é¥¯¥Á¥ãÁØ: Web¤Ç¸À¤¦Model
¤Ëʬ¤±¤Æ¼ÂÁõ¤¹¤ì¤ÐÎɤ¤¤è¤Ã¤Æ¤¤¤¦¤È¤³¤í¤«¤é¡¢¹¹¤Ë¿¼¤¯¼ÂºÝ¤Î¤¤¤í¤¤¤í¤Ê¥×¥é¥¯¥Æ¥£¥¹¤¬½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£
¤«¤Ê¤ê¤¸¤Ã¤¯¤êÆÉ¤Þ¤Ê¤¤ã¤¤¤±¤Ê¤¤¥¿¥¤¥×¤ÎËܤǡ¢ÆÉ¤á¤ÐÆÉ¤à¤Û¤É¹Í¤¨¤µ¤»¤é¤ì¤ë½ê¤â¤¢¤Ã¤ÆÆÉ¤ß¿Ê¤Þ¤Ê¤¤¥¿¥¤¥×¤ÎËܤǤ·¤¿¡£¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þÂ絬ÌÏ¥¢¥×¥êÀ߷פζµ²Ê½ñ¤È¸À¤Ã¤Æ¤â²á¸À¤Ç¤Ï¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡£
ÆÉ¤ß¿Ê¤ó¤Ç¥Ó¥Ã¥¯¥ê¤·¤¿¤Î¤Ï¡¢¤³¤³¤Ë½Ð¤Æ¤¯¤ë³µÇ°¤¬¤Û¤È¤ó¤ÉSymfony2¤Ç¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤È¤³¤í¤Ç¤·¤¿¡£¤¿¤Ö¤ó¤³¤ÎËܤËÁêÅö±Æ¶Á¤ò¼õ¤±¤Æ¤ë¤ó¤À¤È»×¤¤¤Þ¤¹¡£Î㤨¤Ç¸À¤¦¤È¡¢
-
¥µ¡¼¥Ó¥¹ : Symfony2¤Ç¤Ï¥µ¡¼¥Ó¥¹¥³¥ó¥Æ¥Ê¤È¤¤¤¦DI¥³¥ó¥Æ¥Ê - ¥¨¥ó¥Æ¥£¥Æ¥£: Symfony2¤Ç¤Ï¥¨¥ó¥Æ¥£¥Æ¥£¤È¤¤¤¦¥Ç¡¼¥¿¥¯¥é¥¹
- ¥Õ¥¡¥¯¥È¥ê: Symfony2¤Ç¤Ï¥µ¡¼¥Ó¥¹¤Ë¥¤¥ó¥¹¥¿¥ó¥¹¤òºî¤ë¥Õ¥¡¥¯¥È¥ê¤òÅÐÏ¿¤·¤¿¤ê¡¢¥µ¡¼¥Ó¥¹¤òºî¤ë¥Õ¥¡¥¯¥È¥ê¤òÀßÄê¤Ç¤¤ë
- ¥ê¥Ý¥¸¥È¥ê: Symfony2¤Ç¤Ï¥ê¥Ý¥¸¥È¥ê¤È¤¤¤¦ORM¤È¤ÎÀܳ½èÍý¼ÂÁõ½¸Ì󥯥饹
- ¥â¥¸¥å¡¼¥ë: Symfony2¤Ç¤Ï¥Ð¥ó¥É¥ë¡¢OSGi¤Î¥Ð¥ó¥É¥ë¤Î¤è¤¦¤Ë³ÈÄ¥¥Ý¥¤¥ó¥È¤â¤¢¤ë
¤È¤«¤¬¤¢¤ê¤Þ¤·¤¿¡£
»Äǰ¤Ê¤¬¤é¤Ê¤«¤Ã¤¿³µÇ°¤Ï¡¢ÃÍ¥ª¥Ö¥¸¥§¥¯¥È¡£Java¤Îenum¤Î¤è¤¦¤ËÉÔÊѤÇstatic¤Ê¥¤¥ó¥¹¥¿¥ó¥¹¤òºî¤ë»ÅÁȤߤ¬PHP¤Ë¤Ï¤Ê¤¤¤Î¤Ç¤ä¤à¤Ê¤·¤È¤¤¤¦¤È¤³¤í¤Ê¤Î¤«¤â¤·¤ì¤Þ¤»¤ó¡£
¼ÂºÝ¤Ë¥¢¥×¥êºî¤ë¤Ë¤¢¤¿¤Ã¤Æ¥¨¥ê¥Ã¥¯¡¦¥¨¥ô¥¡¥ó¥¹¤Î¥É¥á¥¤¥ó¶îưÀ߷פˤè¤ë¤È¥É¥á¥¤¥óÁؤϤǤ¤ë¤À¤±½¸Ì󤷤ưì¤Ä¤Ë¤·¤Æ¹â¤¤¶Å½¸¤Ë¤·¤¿¤Û¤¦¤¬¤è¤¤¤È¤¤¤¦¤³¤È¤À¤Ã¤¿¤Î¤Ç¡¢¼ÂºÝ¤Ëºî¤Ã¤¿¤³¤Î¥æ¡¼¥¶¡¼´ÉÍý¥·¥¹¥Æ¥à¤Î¥Ð¥ó¥É¥ëÀ߷ס¢¥¯¥é¥¹¿Þ¤Ï¤³¤ó¤ÊÉ÷¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
Symfony2¤Î»×ÁۤȤ·¤Æ¤Ï¡¢¥É¥á¥¤¥óÁؤȥ¢¥×¥êÁؤÈUIÁؤò°ì¤Ä¤Î¥Ð¥ó¥É¥ëÆâ¤Çºî¤Ã¤Æ¤·¤Þ¤¦¤è¤¦¤Ëºî¤é¤ì¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¡¢¤è¤ê¥É¥á¥¤¥óÁؤËÁ´¤Æ¤Î¥Ó¥¸¥Í¥¹¥í¥¸¥Ã¥¯¤ò½¸Ì󤹤ë°Õ¿Þ¤ò»ý¤¿¤»¤ë¤¿¤á¤Ë¡¢DomainBundle¤È¤¤¤¦¤â¤Î¤òºî¤ê¤Þ¤·¤¿¡£
ÀÖ¤¬¥¤¥ó¥Õ¥éÁØ¡¢¥ª¥ì¥ó¥¸¤¬¥É¥á¥¤¥óÁØ¡¢ÎФ¬¥¢¥×¥êÁØ¡¢ÀĤ¬UIÁؤò¤¢¤é¤ï¤·¤Æ¤¤¤Þ¤¹¡£UIÁؤΥƥó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤ä¥ë¡¼¥Æ¥£¥ó¥°ÀßÄê¥Õ¥¡¥¤¥ëÎà¤Ï³ä°¦¤·¤Æ¤¤¤Þ¤¹¡£
³Î¤«¤Ë¤³¤ÎÀ߷פǺî¤Ã¤Æ¤ß¤ë¤ÈÈó¾ï¤Ë¥¢¥×¥ê¤Îºî¤ê¤¬¤¤¤¤¤è¤¦¤Ë´¶¤¸¤Þ¤¹¡£¤¢¤È¡¢¥¯¥é¥¹¤½¤ì¤¾¤ì¤¬Ã±°ìÀÕ̳¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
°Ê²¼¤Ë¼ÂºÝ¤ËUserFactory¤Î¼ÂÁõ¤ò½ñ¤¤Þ¤¹¤¬¡¢¤³¤³¤Ç¤ÏUser¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬¤Ç¤¤ëºÝ¤Ë¼é¤é¤»¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¢¥¤¥ó¥¹¥¿¥ó¥¹ºîÀ®»þ¤Ï͸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤ä¡¢¥é¥ó¥À¥à¤Ê¥Ï¥Ã¥·¥åÍѤÎsalt¤ÎÀßÄê¤Ê¤É¤ò¼é¤é¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
<?php namespace Sifue\Bundle\DomainBundle\Factory; use Sifue\Bundle\DomainBundle\Entity\User; /** * User¥¤¥ó¥¹¥¿¥ó¥¹¤ÎºîÀ®¤È¥¤¥ó¥¹¥¿¥ó¥¹¤¬¼é¤é¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤À°¹çÀ¤òÊݤÄÀÕ̳¤ò»ý¤Ä¥¯¥é¥¹ */ class UserFactory { /** * ¥æ¡¼¥¶¡¼¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò¼èÆÀ¤¹¤ë * @return Sifue\Bundle\DomainBundle\Entity\User */ public function get() { $user = new User(); $user->setIsActive(true); $user->setSalt(base_convert(sha1(uniqid(mt_rand(), true)), 16, 36)); return $user; } }
¤¤¤¤¶ñ¹ç¤ËÀÕ̳¤¬Ê¬Î¥¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ê¤éÂ絬Ìϳ«È¯¤Ç³ÈÄ¥¡¢¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò³¤±¤Æ¤¤¤Ã¤Æ¤âÂѤ¨¤é¤ì¤ë¹½À®¤Ê¤Î¤Ç¤Ï¤Ê¤¤¤«¤Ê¤È¤¤¤¦³Î¿®¤òÆÀ¤ë¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£
¤È¤Ï¸À¤¨¤Þ¤À¥É¥á¥¤¥ó¶îưÀ߷ס¢¤Ö¤Ã¤Á¤ã¤±¶È̳¤Ç¤¤¤í¤¤¤í¤ä¤Ã¤Æ¤ß¤Ê¤¤¤È¤ï¤«¤é¤Ê¤¤¤³¤È¤â¿¤½¤¦¤Ê¤Î¤Ç¡¢¤¤¤í¤¤¤í¤Ê¥Æ¥¯¥Ë¥Ã¥¯¤ò¼è¤êÆþ¤ì¤Ê¤¬¤é¾¯¤·¤º¤Ä»î¤·¤Æ¹Ô¤±¤¿¤é¤Ê¤Ê¤ó¤Æ¹Í¤¨¤Æ¤¤¤Þ¤¹¡£¤Þ¤À½é¿´¼Ô¤Ê½ê¤â¤¢¤ë¤Î¤Ç¡¢¤´»ØÅ¦¤Ê¤É¤¢¤ì¤Ð¥³¥á¥ó¥È²¼¤µ¤¤¡£
¤Á¤Ê¤ß¤Ë¤³¤Î¥¢¥×¥ê¡£Symfony2¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Î¤¿¤á¤ÎPHP´Ä¶¡¢MySQL´Ä¶¤ò·¤¨¤¿¸å¡¢
$ git clone git@github.com:sifue/UserManagement.git $ vim app/config/parameters.yml
parameters: database_driver: pdo_mysql database_host: 127.0.0.1 database_port: ~ database_name: symfony database_user: root database_password: password mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: ~ mailer_password: ~ locale: ja secret: ThisTokenIsNotSoSecretChangeIt
$ php app/console doctrine:database:create
$ php app/console doctrine:schema:update --force
¤È¤¹¤ë¤À¤±¤Ç¡¢UserManagement/web¤ò¥¦¥§¥Ö¥µ¡¼¥Ð¡¼¤Ë¸ø³«¤¹¤ì¤Ðư¤«¤¹¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥Æ¥¹¥È¤â¤Ò¤ÈÄ̤ê¼ÂÁõ¤·¤Æ¤¢¤ê¡¢PHPUnit¤¬¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¢¤ì¤Ð¡¢
$ phpunit -c app
¤ÇÁ´¤Æ¤Î¥Æ¥¹¥È¤¬¼Â»Ü²Äǽ¤Ç¤¹¡£
Symfony2¤ÏPHPUnit¤ò¤¤¤¤¶ñ¹ç¤Ë³ÈÄ¥¤·¤Æ¤¢¤Ã¤Æ¡¢Web¤ÎUI¤ò¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤¹¤ë¥Æ¥¹¥È¤ä¥µ¡¼¥Ó¥¹¥³¥ó¥Æ¥Ê¤Î¥Æ¥¹¥È¤¬¤Ç¤¤ë¤È¤³¤í¤¬ÊØÍø¤Ç¤¹¡£
¤¼¤Ò»î¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£
ÄÉ¿
¤Á¤Ê¤ß¤Ë¼«Ê¬¤ÏPHP¤Ê¤ó¤Æ¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¸À¸ì¤ÎÉ÷¾å¤Ë¤âÃÖ¤±¤Ê¤¤¸À¸ì¤À¤È»×¤Ã¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¡¢Symfony2¤Ë¿¨¤ì¤ÆÁ´Á³¤½¤ó¤Ê¤³¤È¤Ï¤Ê¤¤¤Ê¡¢ÉáÄ̤ËÀ廊¤ë¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤À¤Ê¤È»×¤¤¤Þ¤·¤¿¡£PHP¤Ï¤Ò¤É¤¤¸À¸ì¤À¤±¤É¡¢¼Î¤Æ¤¿¤â¤ó¤¸¤ã¤Ê¤¤¡ª¤¤Ã¤Èw









