Tuesday, September 06, 2011

Mac OS X Lion で Scala を使ってみる

先日参加した飲み会で、リスパーの方から「ScalaいいよScala」と強いご推薦をいただいたので、遅ればせながら私もScalaを使ってみることにしました。本も買ってきた! 買ってきた、っていうか、amazonですけど。


scalaの本買ってみた :-)

図1. Scalaの本も買いましたー


とりあえずScalaをインストールします。Scalaのサイトからもダウンロードできますが、ここはひとつみんなだいすきMacPortsで。ちなみに作業時の私の環境はMac OS X 10.7.1で MacPortsは2.0.1です。次のようにしてインストールします。


$ sudo port install scala29

簡単でいいよねー。インストールできたら早速使ってみたいんですが、その前に


$ sudo scala_select scala29

これをやっておくとscala-2.9じゃなくてscalaでscala29が使えます。scala_selectはscalaを入れると一緒に入るはず。まあ、自分でシンボリックリンクを張ってもいいと思います。


インストールできたので、バージョンの確認。


$ scala -version
Scala code runner version 2.9.0.1 -- Copyright 2002-2011, LAMP/EPFL
$ scalac -version
Scala compiler version 2.9.0.1 -- Copyright 2002-2011, LAMP/EPFL

では Scala coe runnerの方を起動。対話環境みたいになりますので、なんか入れてみます。


$ scala
Welcome to Scala version 2.9.0.1 (Java HotSpot(TM) 64-Bit Server VM,
Java 1.6.0_26).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 1+2*3
res0: Int = 7

おー :-) ちなみにこの例題は参考文献[2]の最初の例です。もうひとつ、今度は関数を定義してみます。


scala> def square(x:Int):Int ={ x*x }
square: (x: Int)Int

scala> square(3)
res1: Int = 9

おー ^^; コンパイラの方も試してみます。


$ cat Square.scala 
object Square {
  def main(arg:Array[String]) = {
    var input = arg(0).toInt
    printf("%d!\n", square(input))
  }
  def square(x:Int):Int = { x*x }
}
$ scalac Square.scala
$ scala Square 6
36!

おお ^^; ということで、しばらく遊べそうです :-)


参考文献

  1. "The Scala Programming Language", http://www.scala-lang.org/
  2. Jeffrey D. Ullman, "Elements of ML Programming, ML97 Edition (2nd Edition)", Prentice Hall, 1997.

add to del.icio.us この記事をクリップ! add to hatena

Thursday, June 02, 2011

ことえりで普通の文字を入力するkenicパッチのインストーラーをリリース

2011.9.5 追記: kenic パッチインストーラーは 10.6 Snow Leopard と 10.7 Lion に対応しています。


ご好評頂いております、ことえりで普通の文字を入力するための通称「kenicパッチ」ですが、インストールが少しめんどうなのが難点でした。このたび、インストーラーを作成しましたのでご紹介します。

ダウンロードはこちらからです。対応OSはMac OS X 10.5 および 10.6 です。

kenic patch installer 1.0

内容は以前のものと変わりません。ことえりの日本語入力モードにおいても、数字、アルファベット、一部の記号類が変なほうの文字「123abc%$」ではなく、まともな文字「123abc%$」で入力されるようになります。

インストールのしかたは簡単です。上記のリンクからdmgファイルをダウンロードして、開くとこうなります。

kenic patch pkg

図1. kenic patch インストーラーの pkg ファイル

さらにこれをダブルクリックして開くと、インストーラーが起動します。

kenic patch installer

図2. kenic patch インストーラー

あとは指示に従って進めていき、最後に再起動して終了です。おたのしみあれ。

参考文献

add to del.icio.us この記事をクリップ! add to hatena

Friday, June 19, 2009

iPhoneを経由してパソコンからインターネットにつなぐ方法 (テザリング)

※当然ですがなにが起きても自己責任でお願いします。

iPhoneはもちろんWiFiがないところでも3Gの電波を使ってインターネットに接続することができますが、 これをモデムのようにしてパソコンからも使えたらいいなー、とおもいませんか?

Tethering by iPhone

図1. テザリング

こんな感じです。参考文献[1][2]の方法でできそうなのでメモしておきます。

  1. まずはじめにjp_softbank_iphonepacket_usims.mobileconfig.gzをダウンロードする。
  2. ダウンロードしたら解凍する。解凍後のファイル名が「jp_softbank_iphonepacket_usims.mobileconfig」であることを確認する。
  3. そのファイルをメールでiPhoneに送る。gmailでも何でもよい。
  4. メールを見ると、こんな感じになるので
    Tethering by iPhone
    添付ファイルをポチッとする。
  5. するとこんな画面になる。
    Tethering by iPhone
    「install」をポチッと押して、画面の指示に従う。
  6. インストールが終わると、「Settings」の「General」の「Network」に「Internet Tethering」というのができているので「On」にする。
    Tethering by iPhone
  7. この状態でUSBケーブルを使ってMacとiPhoneをつなぐと、新しいネットワークデバイスが検出されました、となって、System Preferencesのネットワークを開くように言われるので開くとこんな感じになってます。
    Tethering by iPhone
    ここでは「Ethernet Adaptor (en3)」というのがiPhoneのことですから、それを選んで「Using DHCP」になっていることを確かめて「Apply」でつながります!
  8. Bluetoothでつなぎたい場合は、あらかじめペアリングしておいてから、こんなかんじで
    Tethering by iPhone
  9. 成功するとこんな感じに!
    Tethering by iPhone

これを試して見ている皆さんはSoftbankから別料金を請求されやしないかと戦々恐々のようですが、どうなんでしょうねー?

でもこれで相当便利になること間違いなしですね。

参考文献

add to del.icio.us この記事をクリップ! add to hatena

Thursday, January 29, 2009

iPhone用ファームウェア2.2.1リリース

iPhone用のファームウェア2.2.1がリリースされましたね。

2.2.1

図1. 2.2.1

どうも、主にバグ修正みたいですね。さっそくインストールしてみました!

iPhone 2.2.1

図2. About画面

どこがかわったか、といわれるとよくわかりません... ^^;

add to del.icio.us この記事をクリップ! add to hatena

Wednesday, January 28, 2009

WordPressで保存された履歴を削除し、さらに履歴を保存する数を制限もしくは無効にする方法

WordPressから記事をExportして、さらにImportすることがあります。WordPressでは、Exportすると xmlのファイルになるのですが、これがサイズが大きいことがあります。中を見てみると、過去の版(履歴)も含まれています。 これは、exportしてimportしたときに、前のサイトでの編集の履歴までインポートできるので、便利な機能ではあるのですが、 記事を書いている最中にマメに「保存」「保存」とするとどんどん版がふえて、エクスポートファイルのサイズも どんどん大きくなってしまいます。そこで、サイズの削減のために過去の履歴を削除することを考えてみます。

削除は簡単で、mySQLのサーヴァーに接続して下のコマンドを実行します。

DELETE FROM wp_posts WHERE post_type="revision";

テーブル名「wp_posts」は該当するものにかえてください。「接頭辞_posts」の形式です。重要なデータの場合は、念のため 実行する前にテーブルをバックアップしたほうがいいでしょうね。

ちなみに、あるサイトでこれを実行したところ、18MBあったエクスポートファイルが3.4MBになりました。1/6!

そもそも、なんでこんなにたくさんリビジョンを保存するのであろうか。必要あるのかしら? と思われた向きには、 保存する履歴の数を指定する機能があります。ただしWordpress 2.6以降のみ? 調査はしていません。

その方法は wp-config.phpに次のような行を追加するだけ。

define('WP_POST_REVISIONS', 数);

「数」に数字をいれると、その数だけにリビジョンが制限されます。0やfalseにするとリビジョンを保存する機能が 無効になるようです。

いやー、こんな定数があるなんて知らなかった...WordPressにはまだまだおもしろい機能がたくさんありそうです。

参考文献

  1. How to delete existing WordPress post revisions stored/saved, My Digital Life, 2008
  2. Disable and turn off post revisions tracking in wordpress 2.6 or above, My Digital Life, 2008
  3. How to store every post revisions on each auto save in wordpress with limit on versions count, My Digital Life, 2008

add to del.icio.us この記事をクリップ! add to hatena

Wednesday, January 07, 2009

Blogger(blogspot.com)をよそへリダイレクトする方法

ウェブのURLを変更する場合、301リダイレクトをすると検索エンジンが「URLが変更になったんだな」と認識してくれることになっていますが、Bloggerからよそへひっこす場合、定番の.htaccessを使った方法やPHPのスクリプトを使う方法がつかえません。かわりの方法を試してみたのでメモしておきます。

手順は以下のとおり。

  1. 移転元のBloggerから、移転先のWordpressへ記事をインポートしておく。パーマリンクも同じにしておく。
  2. Bloggerの「レイアウト」「HTMLの編集」で、<header>と</header>の間に下記の2行をいれる。
    <meta content='0;url=http://your.new.blog.domain.com/newdir/' http-equiv='refresh'/>
    <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
    
  3. 同じくBloggerの「レイアウト」「HTMLの編集」で、「<b:section class='main' id='main' showaddelement=...」のすぐあとに以下のコードをいれる。
    <b:widget id='Redirector' locked='true' title='Blog Posts' type='Blog'>
    <b:includable id='main'>
    <b:if cond='data:blog.pageType == "item"'>
    <b:loop values='data:posts' var='post'>
    <script type='text/javascript'>
    var new_page=&#39;your.new.blog.domain.com/newdir/&#39;;
    var permalink = &#39;<data:post.url/>&#39;;
    var timestamp = &#39;<data:post.timestampISO8601/>&#39;;
    timestamp = timestamp.split(&#39;-&#39;);
    timestamp = timestamp[0]+&#39;/&#39;+timestamp[1];
    new_page = permalink.replace(/youroldblog\.blogspot\.com\/20[0-9]{2}\/[0-9]{2}/,new_page+timestamp);
    document.location.href = new_page;
    </script>
    </b:loop>
    </b:if>
    </b:includable>
    </b:widget>
    

このコードでは移転元と移転先のパーマリンクがwordpressでいうところの「/%year%/%monthnum%/%postname%.html」であるということを前提としています。ちがう場合は、timestampあたりを適当に修正してください。このコードは参考文献[1]をベースに、おかしいところを多少変更しました。

「1.」が案外むづかしい。ふつうにインポートすると、パーマリンクが保存されません。記事の数が多い場合は困るね。要検討です。

「2.」の meta http-equiv='refresh'は正確には301リダイレクトにはなりませんが、Yahoo!やGoogleは転送前の時間が0または1の場合は301として、それより大きい場合は302として扱うそうです(参考文献[2])。なので、これでよしとしよう。

というわけで、ためしにやってみました。http://unixjp.blogspot.com/2006/05/blog-post.htmlにアクセスすると、http://narak.jp/wptest/2006/05/blog-post.htmlへリダイレクトされるようにしました。Google/Yahoo!が301扱いを してくれているかどうかはわかりませんが....

参考文献

  1. How To Redirect Blogger Beta To Wordpress.Com, laffers.net, 2007
  2. 301 Moved Permanentlyでウェブサイトを転送する方法, たんきゅうラボ, 2006

add to del.icio.us この記事をクリップ! add to hatena

Monday, January 05, 2009

2008-2009年末年始の移動

このブログの読者の皆さん、あけましておめでとうございます。本年もどうぞよろしくお願い申し上げます。

というわけで、今年も年末年始は実家めぐりをしてきました。例によってガーミンのハンディGPSでとった移動の軌跡はこちら。

driving route: okayama - tottori - nagoya

図1. 2008-2009 移動の軌跡

いつのまにかGoogle Earthでgpxファイルが読めるようになっていたので、gpsbabelでガーミンからMacに取り込んだgpxファイルをそのままGoogle Earthに読み込まて、ゴニョゴニョしてできたのがこの画像です。青が2008年12月29日の岡山→鳥取、赤が2009年1月2日の鳥取→名古屋、オレンジが2009年1月5日の名古屋→岡山です。赤い線が琵琶湖の北から米原あたりまでとぎれているのは、ガーミンの電池がきれちゃったからです!

去年の年末年始の移動と比較すると、 多少経路がちがいますね。いちばんちがうのは愛知県から岡山県へ帰る経路で、今年は新名神が開通しているのでそちらを通りました。 経路で言うと、東名阪→新名神→名神→京滋バイパス→名神→中国道→山陽道です。新名神は設計速度がちがうので、大変快適でいいです。 去年とちがって途中で食事をしなかったのもあって、1時間以上短縮の3時間10分ぐらいで到着できました。青の岡山→鳥取は昼食込みで4時間弱、赤の鳥取→名古屋はトイレ休憩のみで7.5時間です。

ことしも鳥取では雪が降りましたが、去年と比較すると少なめ。

car and snow

写真1. デミオに雪

そんなわけで、今年は(も?)道中の積雪はまったく問題ありませんでした。しかし、今年はカメラをもって行くのを忘れたので写真があまりない! iPhoneしかなかったので...

add to del.icio.us この記事をクリップ! add to hatena