<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
  <link rel="stylesheet" type="text/css" href="//blog.8-p.info/2009/wp-content/themes/b8i/ALL.css" />

  <link rel="alternate" type="application/rss+xml"
             href="//blog.8-p.info/2009/feed" title="Japanese + English" />
  <link rel="alternate" type="application/atom+xml"
             href="//blog.8-p.info/2009/tag/lang-en/feed/atom" title="English" />

  <link rel="icon" href="//blog.8-p.info/favicon.ico" type="image/vnd.microsoft.icon" />
  <title>blog.8-p.info</title>

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="//blog.8-p.info/2009/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="//blog.8-p.info/2009/wp-includes/wlwmanifest.xml" /> 


</head>

<body>

<div id="header">
  <div class="main">
    <h1><a href="/">blog.8-p.info</a></h1>
    <p>加藤和良 (1984年うまれ) の個人的なブログです。</p>
  </div>
  <div class="sidebar">
    <form method="get" action="//blog.8-p.info/2009/">
      <div id="search">
        <input type="text" class="text" id="searchKeyword"  name="s"
               value="" />
      </div>
    </form>
  </div>
</div>

<div id="body">
   <div class="main">

<div class="entry" id="entry1126">
  <h2 class="entry-title"><a href="//blog.8-p.info/2009/08/managers-schedule">Does anyone like &#8220;Manager&#8217;s Schedule&#8221;?</a>
      </h2>
  <div class="yui-g meta">
    <div class="date yui-u first">
      2009-08-01 14:30    </div>
    <div class="tags yui-u">
      <a href="//blog.8-p.info/2009/tag/lang-en" rel="tag">lang-en</a>    </div>
  </div>
  <div class="body"><p>Paul Graham&#8217;s <a href="http://www.paulgraham.com/makersschedule.html">Maker&#8217;s Schedule, Manager&#8217;s Schedule</a> is interesting article. I like &#8220;Maker&#8217;s Schedule&#8221; and I&#8217;m a programmer.</p>
<p>But, Does anyone like &#8220;Manager&#8217;s Schedule&#8221;? Even managers.</p>
<h3>Alone Time</h3>
<p>&#8220;Context Switching&#8221; is common problem. <a href="https://gettingreal.37signals.com/">Getting Real</a> says:</p>
<blockquote>
<p><strong>People need uninterrupted time to get things done</strong></p>
<p>(snip)</p>
<p>Getting in the zone takes time. And that’s why interruption is your enemy. It’s like REM sleep – you don’t just go to REM sleep, you go to sleep ﬁrst and you make your way to rem. Any interruptions force you to start over. rem is where the real sleep magic happens. <strong>The alone time zone is where the real development magic happens.</strong></p>
</blockquote>
<p>And Joel Spolsky <a href="http://www.joelonsoftware.com/items/2006/11/15.html">said</a>:</p>
<blockquote><p>Being able to do mentally difficult things like context switching makes our product better. This Is Why Programmers Get The Big Bucks.</p></blockquote>
<p>Personally, I like 37signal&#8217;s view because they said &#8220;People need&#8221;! There is no divison of maker/manager, geek/suits or developer/planner.</p>
</div>
</div>
<div class="entry" id="entry1021">
  <h2 class="entry-title"><a href="//blog.8-p.info/2009/07/newspeak-on-bitbucket">Newspeak on Bitbucket</a>
      </h2>
  <div class="yui-g meta">
    <div class="date yui-u first">
      2009-07-20 22:00    </div>
    <div class="tags yui-u">
      <a href="//blog.8-p.info/2009/tag/lang-en" rel="tag">lang-en</a>    </div>
  </div>
  <div class="body"><p>I pushed all code of <a href="http://newspeak.8-p.info/">Newspeak</a> on <a href="http://bitbucket.org/kzys/newspeak">Bitbucket</a>. And I got a new domain for Scala (and Java) because I don&#8217;t like &#8220;package info._8_p { &#8230;&#8221;.</p>
<p>Newspeak don&#8217;t use <a href="http://liftweb.net/">Lift</a>. Instead I choose Jetty 6, Tokyo Cabinet and my Amrita-inspired template engine.</p>
<h3>Jetty 6</h3>
<p>Newspeak uses Jetty without XML. Here is my main function:</p>
<pre>
  def main(args: Array[String]) = {
    val app = new waf.Application

    app.mount("/", (req, resp) =&gt; {
      render("index", Map("title" -&gt; "Newspeak"))
    })
    ...
    app.run(8000)
  }
</pre>
<p>My application code depends javax.servlet.*, not Jetty. But waf.Application runs Jetty internally.</p>
<h3>Tokyo Cabinet</h3>
<p><a href="http://tokyocabinet.sf.net/">Tokyo Cabinet</a> is modern impl. of DBM. I use &#8220;table&#8221; database as a primary persistent layer of Newspeak. TC has JNI-based Java API. It&#8217;s easy to use from Scala off course.</p>
<p>And TC provides very handy tctmgr (1). I mostly uses &#8220;tctmgr importtsv&#8221; to built my database. However Newspeak&#8217;s database stores commit logs. And commit logs usually contain &#8220;\n&#8221;. It&#8217;s not suitable for TSV.</p>
<p>So I wrote JSON based import command in C++. It uses a <a href="http://developer.cybozu.co.jp/kazuho/2009/07/picojson-a-head.html">picojson</a> as a parser.</p>
<h3>Amrita-inspired template engine</h3>
<p>Many template engine handle HTML/XML as just a string. I think it&#8217;s bad design. But <a href="http://amrita.sourceforge.jp/">Amrita</a> is not. My template engine is inspired from Amrita.</p>
<h3>Conclusion</h3>
<p>Scala is good.</p>
<p>Recently, I mainly uses a &#8220;dynamic&#8221; language (ex. JavaScript, Ruby and Perl). Dynamic language is easy to write, but hard to debug. &#8220;Static&#8221; language is hard to write, but easy to debug because many bugs are reported by a compiler. It&#8217;s fresh to me.</p>
</div>
</div>
<div class="entry" id="entry1002">
  <h2 class="entry-title"><a href="//blog.8-p.info/2009/07/newspeak">Newspeak - The search engine for commit logs</a>
      </h2>
  <div class="yui-g meta">
    <div class="date yui-u first">
      2009-07-12 21:32    </div>
    <div class="tags yui-u">
      <a href="//blog.8-p.info/2009/tag/lang-en" rel="tag">lang-en</a>    </div>
  </div>
  <div class="body"><p>This weekend, I went back to my parents&#8217; home and start new project: <a href="http://newspeak.8-p.info/">Newspeak</a>.</p>
<h3>The search engine for commit logs</h3>
<p>In my personal project, I write commit logs in English because most programmers can&#8217;t read Japanese. However I&#8217;m not good at English. Sometimes I googled how to describe this commit in English. It&#8217;s a waste of time for me.</p>
<p>So I made a search engine for only commit logs. Newspeak is powered by Scala, Jetty 6 and Tokyo Cabinet. I&#8217;ll blog about in more detail soon.</p>
</div>
</div>

    <div class="paginate">
      <a href="//blog.8-p.info/2009/tag/lang-en/page/2" >Newer</a>      <a href="//blog.8-p.info/2009/tag/lang-en/page/4" >Older</a>    </div>
  </div>
  <div class="sidebar"><h2>About me and this blog</h2>
<p>
  All articles are written by <a href="http://8-p.info/me/">加藤和良</a>.
  A few are <a href="/2009/tag/lang-en">written in English</a>.
</p>

<ul>
  <li>
    <h2>Recent articles</h2>
    <ul>	<li><a href='//blog.8-p.info/2009/12/wordpress' title='さよなら WordPress'>さよなら WordPress</a></li>
	<li><a href='//blog.8-p.info/2009/12/chrome-repl-released' title='ChromeRepl released'>ChromeRepl released</a></li>
	<li><a href='//blog.8-p.info/2009/12/hatena' title='Hatena&#8217;s routing problem'>Hatena&#8217;s routing problem</a></li>
	<li><a href='//blog.8-p.info/2009/12/test-synchronized' title='Test::Synchronized released'>Test::Synchronized released</a></li>
	<li><a href='//blog.8-p.info/2009/11/26' title='11月をふりかえる'>11月をふりかえる</a></li>
	<li><a href='//blog.8-p.info/2009/11/subversion-file-find' title='Subversion のワーキングコピー上の File::Find を速くする'>Subversion のワーキングコピー上の File::Find を速くする</a></li>
	<li><a href='//blog.8-p.info/2009/11/chrome-repl' title='ChromeRepl - a remote REPL client for Google Chrome'>ChromeRepl - a remote REPL client for Google Chrome</a></li>
	<li><a href='//blog.8-p.info/2009/10/october' title='10月をふりかえる'>10月をふりかえる</a></li>
	<li><a href='//blog.8-p.info/2009/10/linux-db-system' title='『Linux-DB システム 構築/運用入門』を読んだ'>『Linux-DB システム 構築/運用入門』を読んだ</a></li>
	<li><a href='//blog.8-p.info/2009/10/cubic-volume' title='体積パズル'>体積パズル</a></li>
	<li><a href='//blog.8-p.info/2009/10/scala-scripting' title='Scala で書き捨てスクリプト'>Scala で書き捨てスクリプト</a></li>
	<li><a href='//blog.8-p.info/2009/09/september' title='9月をふりかえる'>9月をふりかえる</a></li>
	<li><a href='//blog.8-p.info/2009/09/greasekit-1-7' title='GreaseKit 1.7 released'>GreaseKit 1.7 released</a></li>
	<li><a href='//blog.8-p.info/2009/09/gcd-1' title='C にクロージャのようなものを追加する Grand Central Dispatch'>C にクロージャのようなものを追加する Grand Central Dispatch</a></li>
	<li><a href='//blog.8-p.info/2009/09/greasekit-1-6' title='GreaseKit 1.6 released'>GreaseKit 1.6 released</a></li>
	<li><a href='//blog.8-p.info/2009/09/yapcasia-2009' title='YAPC::Asia 2009 スタッフ日記'>YAPC::Asia 2009 スタッフ日記</a></li>
	<li><a href='//blog.8-p.info/2009/09/clickatell-sms' title='Clickatell 経由で SMS を送信する'>Clickatell 経由で SMS を送信する</a></li>
	<li><a href='//blog.8-p.info/2009/09/devel-nytprof' title='Devel::NYTProf を読む'>Devel::NYTProf を読む</a></li>
	<li><a href='//blog.8-p.info/2009/08/august' title='8月をふりかえる'>8月をふりかえる</a></li>
	<li><a href='//blog.8-p.info/2009/08/toeic' title='TOEIC スコアとか'>TOEIC スコアとか</a></li>
	<li><a href='//blog.8-p.info/2009/08/july-kpt' title='7月の KPT'>7月の KPT</a></li>
	<li><a href='//blog.8-p.info/2009/08/managers-schedule' title='Does anyone like &#8220;Manager&#8217;s Schedule&#8221;?'>Does anyone like &#8220;Manager&#8217;s Schedule&#8221;?</a></li>
	<li><a href='//blog.8-p.info/2009/07/wewlc' title='『レガシーコード改善ガイド』を読もう (あるいは、テストを書こう)'>『レガシーコード改善ガイド』を読もう (あるいは、テストを書こう)</a></li>
	<li><a href='//blog.8-p.info/2009/07/newspeak-on-bitbucket' title='Newspeak on Bitbucket'>Newspeak on Bitbucket</a></li>
	<li><a href='//blog.8-p.info/2009/07/newspeak' title='Newspeak - The search engine for commit logs'>Newspeak - The search engine for commit logs</a></li>
	<li><a href='//blog.8-p.info/2009/07/php-or-perl' title='What language should we learn?'>What language should we learn?</a></li>
	<li><a href='//blog.8-p.info/2009/06/june-kpt' title='6月の KPT'>6月の KPT</a></li>
	<li><a href='//blog.8-p.info/2009/06/html' title='HTML + CSS + JavaScript を組み合わせる難しさ'>HTML + CSS + JavaScript を組み合わせる難しさ</a></li>
	<li><a href='//blog.8-p.info/2009/06/dsvn-el' title='dsvn.el から Subversion をつかう'>dsvn.el から Subversion をつかう</a></li>
	<li><a href='//blog.8-p.info/2009/06/google-page-speed' title='Google Page Speed を読む'>Google Page Speed を読む</a></li>
	<li><a href='//blog.8-p.info/2009/05/may-kpt' title='5月の KPT'>5月の KPT</a></li>
	<li><a href='//blog.8-p.info/2009/05/testapache2-003-and-004' title='Test::Apache2 0.03 and 0.04'>Test::Apache2 0.03 and 0.04</a></li>
	<li><a href='//blog.8-p.info/2009/05/code-smell' title='コードの匂いは人に移る'>コードの匂いは人に移る</a></li>
	<li><a href='//blog.8-p.info/2009/05/test-apache2-released' title='Test::Apache2 をリリースした'>Test::Apache2 をリリースした</a></li>
	<li><a href='//blog.8-p.info/2009/05/april-kpt' title='4月の KPT'>4月の KPT</a></li>
	<li><a href='//blog.8-p.info/2009/04/test-apache2' title='My new project: Test::Apache2'>My new project: Test::Apache2</a></li>
	<li><a href='//blog.8-p.info/2009/04/project-root' title='プロジェクトのルートディレクトリを探す'>プロジェクトのルートディレクトリを探す</a></li>
	<li><a href='//blog.8-p.info/2009/04/danboard' title='Danboard is my XFD'>Danboard is my XFD</a></li>
	<li><a href='//blog.8-p.info/2009/04/glitchcam' title='glitchcam'>glitchcam</a></li>
	<li><a href='//blog.8-p.info/2009/03/kpt' title='3月の KPT'>3月の KPT</a></li>
	<li><a href='//blog.8-p.info/2009/03/textfield-js-2' title='JavaScript でプレースホルダ、の続き'>JavaScript でプレースホルダ、の続き</a></li>
	<li><a href='//blog.8-p.info/2009/03/gnu-strlen' title='GNU strlen を読む'>GNU strlen を読む</a></li>
	<li><a href='//blog.8-p.info/2009/03/textfield-js' title='JavaScript でプレースホルダつき入力欄を作る'>JavaScript でプレースホルダつき入力欄を作る</a></li>
	<li><a href='//blog.8-p.info/2009/02/life' title='2月の反省と近況'>2月の反省と近況</a></li>
	<li><a href='//blog.8-p.info/2009/02/class-sniff-combine_graphs' title='New Class::Sniff has &#8220;combine_graphs&#8221;'>New Class::Sniff has &#8220;combine_graphs&#8221;</a></li>
	<li><a href='//blog.8-p.info/2009/02/class-sniff' title='Class::Sniff で継承木をかく'>Class::Sniff で継承木をかく</a></li>
	<li><a href='//blog.8-p.info/2009/02/simbl' title='SIMBL で Cocoa アプリケーションにコードをつぎたす'>SIMBL で Cocoa アプリケーションにコードをつぎたす</a></li>
	<li><a href='//blog.8-p.info/2009/01/hreview' title='hReview is just a draft'>hReview is just a draft</a></li>
	<li><a href='//blog.8-p.info/2009/01/unwired-life' title='断線生活'>断線生活</a></li>
	<li><a href='//blog.8-p.info/2009/01/dom-scripting' title='『DOM Scripting 標準ガイドブック』を読んだ'>『DOM Scripting 標準ガイドブック』を読んだ</a></li>
	<li><a href='//blog.8-p.info/2009/01/object-kv-mapping' title='オブジェクトを key-value ストアに直列化する'>オブジェクトを key-value ストアに直列化する</a></li>
	<li><a href='//blog.8-p.info/2009/01/chrome-ui-test' title='Google Chrome の UI テスト (実装編)'>Google Chrome の UI テスト (実装編)</a></li>
	<li><a href='//blog.8-p.info/2009/01/refactoring' title='テストぬきリファクタリング'>テストぬきリファクタリング</a></li>
	<li><a href='//blog.8-p.info/2009/01/unittest-js' title='UnittestJS でクロスブラウザテスト'>UnittestJS でクロスブラウザテスト</a></li>
	<li><a href='//blog.8-p.info/2009/01/red-prompt' title='コマンドが失敗したらプロンプトを赤くする'>コマンドが失敗したらプロンプトを赤くする</a></li>
	<li><a href='//blog.8-p.info/2009/01/blogging-in-english' title='Blogging in English'>Blogging in English</a></li>
	<li><a href='//blog.8-p.info/2009/01/2009' title='2009'>2009</a></li>
</ul>
  </li>
</ul>

<ul><li id="linkcat-2" class="linkcat"><h2>Links</h2>
	<ul class='xoxo blogroll'>
<li><a href="http://collisions.doppac.cc/">collisions.doppac.cc</a></li>
<li><a href="http://googletesting.blogspot.com/">Google Testing Blog</a></li>
<li><a href="http://www.grafikcache.com/">Grafikcache</a></li>
<li><a href="http://news.ycombinator.com/">Hacker News</a></li>
<li><a href="http://someru.blog74.fc2.com/">Hang Reviewers High</a></li>
<li><a href="http://labs.ideo.com/">IDEO Labs</a></li>
<li><a href="http://blog.makezine.com/">MAKE: Blog</a></li>
<li><a href="http://d.hatena.ne.jp/KZR/">Radium Software</a></li>
<li><a href="http://steps.dodgson.org/">steps to phantasien</a></li>

	</ul>
</li>
</ul>

<p>
  <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Transitional" height="31" width="88" /></a>
</p>
</div>
</div>

<div id="footer">Powered by <a href="http://wordpress.org/">WordPress</a></div>


<!-- Google Analytics -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-329758-2");
pageTracker._trackPageview();
</script>

<script type="text/javascript" src="//blog.8-p.info/2009/wp-content/themes/b8i/ALL.js"></script>

<script type="text/javascript">//<![CDATA[
(function () {
  var elements = document.body.getElementsByTagName('pre');
  var i, pre;
  for (i = 0; i < elements.length; i++) {
    pre = elements[i];
    if ((pre.innerText || pre.textContent).match(/^[%\(]/)) {
      ;
    } else {
      pre.className += ' prettyprint';
    }
  }
  prettyPrint();

  (new TextField($('searchKeyword'))).setPlaceholder('Search');
})();
//]]></script>

</body>
</html>
