Hatena::¥Ö¥í¥°(Diary)

¤·¤Õ¡¼¤Î¥Ö¥í¥° ¤³¤Î¥Ú¡¼¥¸¤ò¥¢¥ó¥Æ¥Ê¤ËÄɲà RSS¥Õ¥£¡¼¥É Twitter

2013ǯ03·î12Æü

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¤Ç¤â¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£


¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤Ï¤³¤Î¤è¤¦¤Ê´¶¤¸¤Ç¤¹¡£

f:id:sifue:20130224220402p:image

°Ê¾å¤ÎÎã¤Ç¤Ï¡¢¾å¤Î¥Ú¥¤¥ó¤Ç¤Ï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¾å¤«¤é¤ÎÍøÍѤǰʲ¼¤Î¤è¤¦¤Ê¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


´ðËÜŪ¤Ë¥ì¥ó¥¿¥ë¥µ¡¼¥Ð¡¼¤Ê¤É¤Ç¤âÍøÍѤǤ­¤ë¤è¤¦¤Ë¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Ë¥í¡¼¥«¥ë¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÁ°Äó¤Ç~/local°Ê²¼¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£¥µ¡¼¥Ð¡¼¼«ÂΤ˥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ëÊý¤Ï¡¢~/local¤ò/usr/local¤ÈÆÉ¤ßÂØ¤¨¤Æ²¼¤µ¤¤¡£

¤½¤Î¤¿¤á¡¢ÍøÍѤ·¤Æ¤¤¤ë¥·¥§¥ë¤Ç~/local/bin¤È~/local/lib¤Ë¥Ñ¥¹¤òÄ̤·¤Æ¤¯¤À¤µ¤¤¡£

ÆÃ¤Ë¼«Ê¬¤Î»È¤Ã¤Æ¤¤¤ë¥·¥§¥ë¤¬¤ï¤«¤é¤Ê¤¤¤è¤È¤¤¤¦Êý¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¥·¥§¥ë¤Îbash¤Ç¥Ñ¥¹¤òÄ̤¹¤è¤¦¤Ë¡¢

$ echo "export PATH=/usr/local/bin/:/usr/local/lib/:\$PATH" >> $HOME/.bashrc
$ source  $HOME/.bashrc

°Ê¾å¤ò¼Â¹Ô¤·¤Æ»Ï¤á¤ÆÄº¤±¤ì¤Ð¤È»×¤¤¤Þ¤¹¡£


ÀâÌÀ¤Î½çÈÖ¤Ï

  1. ¥¤¥ó¥¹¥È¡¼¥ë¤È»È¤¤Êý
  2. Â絬Ìϳ«È¯¤ÎºÝ¤Ë»È¤¨¤ë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¥Ú¡¼¥¸¤â¤¹¤ëËܤò¹ØÆþ¤·¤ÆÆÉ¤ß»Ï¤á¤¿¼«Ê¬¤Ç¤¹¡£

¤¢¤Þ¤ê¤ËÌÞÂÎ̵¤«¤Ã¤¿¤Î¤Ç»î¤·¤Ë¤³¤Î¥É¥á¥¤¥ó¶îưÀ߷פÎÀß·×»×Áۤˤ½¤Ã¤Æ¡¢´Êñ¤Ê¥¢¥×¥ê¤òSymfony2¤Çºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡£


¼ÂºÝ¤Ëºî¤é¤ì¤¿¥µ¥¤¥È¤Ï¡¢

http://www.soichiro.org/sf

¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£

  • id: test1@test.com
  • pass: test1

¤Ç¥í¥°¥¤¥ó¤Ç¤­¤Þ¤¹¡£(¥æ¡¼¥¶¡¼ºî¤ë¤À¤±¤Ê¤éadmin/adminpass¤Ç¤âOK)


²èÌÌ¥¤¥á¡¼¥¸¤Ï

f:id:sifue:20130103014921p:image

f:id:sifue:20130103014922p:image

f:id:sifue:20130103014919p:image

f:id:sifue:20130103014923p:image

f:id:sifue:20130103014920p:image

¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£UI¤Ë¤Ïtwitter¤Îbootstrap¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£


¥½¡¼¥¹¥³¡¼¥É¤Ï¡¢

https://github.com/sifue/UserManagement

¤«¤é¥Á¥§¥Ã¥¯¥¢¥¦¥È¤Ç¤­¤Þ¤¹¡£ÌµÏÀMIT¥é¥¤¥»¥ó¥¹¤Ç¤¹¡£¥µ¥ó¥×¥ë¤È¤·¤Æ»È¤¨¤½¤¦¤Ê½ê¤¬¤¢¤Ã¤¿¤é¹¥¤­¤Ê¤è¤¦¤Ë²þÊѤ·¤Æ¤´¼«Í³¤Ë¤´ÍøÍѤ¯¤À¤µ¤¤¡£


¥É¥á¥¤¥ó¶îưÀ߷פϤ¹¤´¤¯´Êñ¤Ë¸À¤¦¤È¡¢¥·¥¹¥Æ¥à¤òºî¤ë»þ¤Ã¤Æ¶È̳¥â¥Ç¥ë(¼ÂºÝ¤Î¥Ó¥¸¥Í¥¹¤òÃê¾Ý²½¤·¤¿³µÇ°¡¢Î㤨¤ÐUML¤Î¥¯¥é¥¹¿Þ¤Ç½ñ¤¤¤¿¤è¤¦¤Ê¤â¤Î)¤Î¶¦Í­¤Ã¤Æ¤¹¤´¤¯½ÅÍפÀ¤è¤Í¤Ã¤ÆÏ䫤é»Ï¤Þ¤Ã¤Æ¡¢¤½¤Î¥â¥Ç¥ë¤È¥·¥¹¥Æ¥à¤ò¤¤¤«¤Ë¶á¤Å¤±¤ë¤«¤Ã¤ÆÏäȡ¢¼ÂºÝ¤Î¥·¥¹¥Æ¥à¤ò¼ÂÁõ¤¹¤ë¤È¤­¤Ë¤Ï¡¢

¤Ëʬ¤±¤Æ¼ÂÁõ¤¹¤ì¤ÐÎɤ¤¤è¤Ã¤Æ¤¤¤¦¤È¤³¤í¤«¤é¡¢¹¹¤Ë¿¼¤¯¼ÂºÝ¤Î¤¤¤í¤¤¤í¤Ê¥×¥é¥¯¥Æ¥£¥¹¤¬½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£


¤«¤Ê¤ê¤¸¤Ã¤¯¤êÆÉ¤Þ¤Ê¤­¤ã¤¤¤±¤Ê¤¤¥¿¥¤¥×¤ÎËܤǡ¢ÆÉ¤á¤ÐÆÉ¤à¤Û¤É¹Í¤¨¤µ¤»¤é¤ì¤ë½ê¤â¤¢¤Ã¤ÆÆÉ¤ß¿Ê¤Þ¤Ê¤¤¥¿¥¤¥×¤ÎËܤǤ·¤¿¡£¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þÂ絬ÌÏ¥¢¥×¥êÀ߷פζµ²Ê½ñ¤È¸À¤Ã¤Æ¤â²á¸À¤Ç¤Ï¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡£


ÆÉ¤ß¿Ê¤ó¤Ç¥Ó¥Ã¥¯¥ê¤·¤¿¤Î¤Ï¡¢¤³¤³¤Ë½Ð¤Æ¤¯¤ë³µÇ°¤¬¤Û¤È¤ó¤ÉSymfony2¤Ç¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤È¤³¤í¤Ç¤·¤¿¡£¤¿¤Ö¤ó¤³¤ÎËܤËÁêÅö±Æ¶Á¤ò¼õ¤±¤Æ¤ë¤ó¤À¤È»×¤¤¤Þ¤¹¡£Î㤨¤Ç¸À¤¦¤È¡¢

¤È¤«¤¬¤¢¤ê¤Þ¤·¤¿¡£

»Äǰ¤Ê¤¬¤é¤Ê¤«¤Ã¤¿³µÇ°¤Ï¡¢ÃÍ¥ª¥Ö¥¸¥§¥¯¥È¡£Java¤Îenum¤Î¤è¤¦¤ËÉÔÊѤÇstatic¤Ê¥¤¥ó¥¹¥¿¥ó¥¹¤òºî¤ë»ÅÁȤߤ¬PHP¤Ë¤Ï¤Ê¤¤¤Î¤Ç¤ä¤à¤Ê¤·¤È¤¤¤¦¤È¤³¤í¤Ê¤Î¤«¤â¤·¤ì¤Þ¤»¤ó¡£


¼ÂºÝ¤Ë¥¢¥×¥êºî¤ë¤Ë¤¢¤¿¤Ã¤Æ¥¨¥ê¥Ã¥¯¡¦¥¨¥ô¥¡¥ó¥¹¤Î¥É¥á¥¤¥ó¶îưÀ߷פˤè¤ë¤È¥É¥á¥¤¥óÁؤϤǤ­¤ë¤À¤±½¸Ì󤷤ưì¤Ä¤Ë¤·¤Æ¹â¤¤¶Å½¸¤Ë¤·¤¿¤Û¤¦¤¬¤è¤¤¤È¤¤¤¦¤³¤È¤À¤Ã¤¿¤Î¤Ç¡¢¼ÂºÝ¤Ëºî¤Ã¤¿¤³¤Î¥æ¡¼¥¶¡¼´ÉÍý¥·¥¹¥Æ¥à¤Î¥Ð¥ó¥É¥ëÀ߷ס¢¥¯¥é¥¹¿Þ¤Ï¤³¤ó¤ÊÉ÷¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

f:id:sifue:20130103014918p:image

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