2009年10月

2009年10月18日

札幌Java勉強会 #15 に参加した。

今回は午前がバージョン管理システム(主にSubversion・Mercurial)、午後が定例のEffective Java読書会。

今回は、今まで自分が疑問に思っていたことがいくつも解決したので、メモを兼ねて書いておく。

(1) Subversionなどのレポジトリによくある、トップのディレクトリ直下にある3つのディレクトリ「trunk」「branches」「tags」
Subversionはちまちま使う程度で、まともに多人数のプロジェクトなどに参加したことはなかったため、何となく「こうするものなのかな」としか思ってなかった。
今回の渡辺さん(札幌Java主宰)の説明で非常に納得。
私が改めて書くまでもないので、自分のメモとしてリンクを一つ貼っておく。
SubversionとTracでファイル管理の“迷宮”から脱出 (3/4) - @IT

(2) 分散型バージョン管理システムを使う感覚
分散型バージョン管理システムとしてgitの存在は知っていたが、どういう感覚で利用されるのかまでは理解していなかった。今回はMercurialで説明が行われたのだが、実際に使うにあたってどういう感覚で使えばよいのかが分かり、自分で使ってみたくなった。
渡辺さんによると、「Windows上ではgitの良いクライアントがない」とのことだったので、まずはMercurialから取り掛かろうか。

(3) クラスにおいて、パブリックなメンバ変数を定義せずにアクセサを利用すべき理由
私はJava以外の言語では、C言語の構造体の感覚で「パブリックなメンバ変数」をよく使っているのだが、Javaのコードを見てると、ちょっとしたコードでも、パブリックなメンバ変数を定義せずにアクセサを利用しているものが大多数だった。
何でなのかな、単なる流儀なのかな、と前々から思っていたのだが、「Effective Java」によると、「後で、互換性を保ったまま仕様を変更することが出来なくなる」という理由が述べられていた。
例えば、一度パブリックなメンバ変数として class Hoge{ public int x; } のように定義してしまうと、以後Hogeに、例えば「xが変更されるたび、何らかの処理を行う」というような変更を(互換性を保ったまま)加えることが出来なくなってしまう。これは確かに納得。


非常に勉強になりました。ありがとうございます。

maraigue at 00:18コメント(0)トラックバック(0)プログラミング 

2009年10月09日

今まで、私管理のTwitter botは自宅にあるサーバ(HP ProLiant ML115)を利用して運用していたが(*1)、家で回していると電気代が結構かかるということもあり、Webサーバもろともさくらインターネットのレンタルサーバへ引っ越すことにした(*2)。

さくらのレンタルサーバは、cron(UNIX系OSで、プログラムを定期的に実行する機構)が利用できる上、プログラムの新規導入も制限があるものの(ユーザのホームディレクトリにインストール出来るものならよい)可能なため、それまでの自宅のサーバに近い環境でTwitter botを動かすことが出来る。

移転の際のキーポイントをいくつか。

  • コントロールパネルからはcronで動かすプログラムの数に制限があるため、それ以上動かしたい場合はサーバにSSHログインし、crontabコマンドを使って自動実行するプログラムを直接指定する必要がある。
  • 私のTwitter botを動かすに際して、Rubyはサーバに最初から導入されているものを使ってもよかったのだが、RubygemsやJSONを楽に利用したかったこともあり、自分のホームディレクトリ以下にRuby1.9をインストールした。
    (参考:Ruby Install Guide::UNIX全般
    私は、Ruby1.9の実行ファイルを「ruby」ではなく「ruby1.9」にしたかったので、./configureは以下のようになった。
    $ ./configure --prefix=$HOME/local --program-suffix=1.9
  • とりあえず家にあるプログラム・データをすべてさくらのサーバにコピーし動かしたところ、@gankaiだけがかなりの頻度でプロセスを強制終了させられていた。
    調べたところ、データファイルがかなり大きくなっている上に毎回これをすべて読み込む仕様になっていたため、これがメモリ使用量を引き上げていて、サーバ側から規制されたものと思われた(手元の環境で試したところ、1プロセスでメモリを約20MBもし使っていた)。これはデータファイルを分割して対処した。

ということで、これからさくらのサーバにお世話になります。


(*1) オープンソースカンファレンス2008 Hokkaidoでの抽選会で頂いた景品

(*2)以前はXREAを使っていた。一部のコンテンツは引き続きXREAで運用します。



maraigue at 23:29コメント(0)トラックバック(0)コンピュータ全般Twitter 

2009年10月05日

さくらレンタルサーバーとGoogle Appsの併用 - BLOG : Heart Rhythm.NET http://d.hatena.ne.jp/heart-rhythm/20080218/1203316871

を見てて、理解不十分なまま「この方法じゃだめなのかな」と思ってTwitterでつぶやいていたら、@takadtmnu氏いろいろと教えて下さったので解決。

【行いたいこと】
1つのドメイン(具体的にはhhiro.net)に対し、Webサーバ(つまり http://hhiro.net/〜 を使いたい)はさくらのレンタルサーバーのものを、メールサーバ(つまり 〜@hhiro.net を使いたい)はGoogle Appsのものを利用したい。
【問題点】
ドメインをさくらで管理する(ドメインに対するDNSサーバをさくらのものに設定する)場合、その先のDNSの設定が自由に出来ない(*1)。
【解決方法】
設定に自由の効くDNSサーバを通して設定する。私は以前からXREAを利用していた関係で、DNSサーバとしてVALUE DOMAINのネームサーバ管理機能を使っていたので、これをそのまま利用する。
  1. さくらのサーバコントロールパネルで、「ドメイン設定」→「他社で取得、または他社で管理中のドメインを移して使う - 上記以外のドメインの場合」→「他社で取得された独自ドメインへのサブドメインの追加」と進み、使いたいドメインを追加する(この場合、「hhiro.net」を追加)。このとき、「サーバの設定及び ns1.dns.ne.jp 及び ns2.dns.ne.jp への登録をします。…」という記述があるが、この記述は無視しておく。
  2. ドメインに対するDNSサーバ(ここではVALUE DOMAIN)のDNS設定画面を開き、以下のように割り当てる。
    • Aレコードには、自分が利用しているさくらのサーバのIPアドレスを指定する。IPアドレスは、さくらのサーバコントロールパネルで「サーバ情報の表示」→「サーバに関する情報」と進むと見られる。
    • MXレコードには、Google Appsから指示されたものを指定する。
    なお、私の場合(VALUE DOMAINのコントロールパネルでの記述)は以下のようになった。
    a @ 000.000.000.000 ←実際にはサーバのIPアドレスが入る
    a www 000.000.000.000
    mx (Google Appsのメールサーバのアドレス1). 10
    mx (Google Appsのメールサーバのアドレス2). 20
    mx (Google Appsのメールサーバのアドレス3). 20
    mx (Google Appsのメールサーバのアドレス4). 30
    mx (Google Appsのメールサーバのアドレス5). 30
    mx (Google Appsのメールサーバのアドレス6). 30
    mx (Google Appsのメールサーバのアドレス7). 30

ということで、無事移行出来ました。


(*1)ドメインをさくらで取得していない場合。ちなみに私はドメインをすべてムームードメインで取得している。



maraigue at 01:51コメント(0)トラックバック(0)ネットワーク 
livedoor プロフィール

H. Hiro

  • ライブドアブログ