コンピュータやソフトウェアのあれこれ@道民(&元道民)
Archive for 7月, 2010
アサタクロー、ヘンプパチカ、モテネックレスが届いた
7月 31st
アサラト好きならほとんどの人が知っているであろう、daitieさんのカスタムアサラト。
かなり希少価値の高い(→理由はこの記事を読んで)このアサラトを、斯く言う僕も持っている(しかもHaseHiroって名前入りね!)のですが、さらに手に入れることが難しいアサラトがあるのです。
それがこれ、アサタクロー。

竹で出来ていて、中は空洞。もちろん、シェイク音がするように、ちゃんと豆豆しいのが入っています(名前しらない・・・)。ヒット音も、もちろんちいさいですが、ちゃんと聞こえます。
見た目的に、「これって軽すぎて振りづらそうじゃね?」なんて思っている、あなた!馬鹿ですか!?
こんな軽々しい姿形をしていますが、ちゃんとそれなりに重量があって、しっかり振れます。
そして何が一番いいって、伴侶にうるさいと言われません!キリッ!
え?伴侶がいないって?
じゃあ、かあちゃんの前に行って「ねぇ、これうるさい?うるさくない?」って振ってみな!
絶対、「あんたのほうがうるさいわ、ぼけぇ!」って言われるから。
そのぐらい(どのぐらいだよwww)ちゃんとした作りになってますので、定期的に彼女のショップサイトをチェキして、在庫があったら、買ってみなYO!
問い合わせてもいいかもNE!
そんで、クリック音が素敵(誰情報だよwww)といわれるヘンパチ、略さないでヘンプパチカも購入。

これはシェイク音そこそこに、ヒット音がカツーン!カツーン!って感じでヒット音に特化している感じなので、やっぱりクリックとかその辺の練習に向いているかもしれませんね。
ただ握った感じ、僕には少し小さかったかな?もうちょっと大きいと握りやすかったです。
そして最後にモテネックレス。

古いコインをつぶしたのかな?がトップに付いていて、なんともモテそうな雰囲気。
僕のイメージに合わせて作って下さい!(一度、daitieさんのWSに参加しているので)と頼んだところ、「はせひろさんとうちの弟がドッペルゲンガーなのでキモ・・・・弟の写真みてイメージします!」
・・・とのこと(かなり誇張した表現となっております)。
さすがドッペルゲンガーがいるだけあって、かなり僕の好きな感じです。
長さも調節できるように(縛る位置で)なっていて、いたれりつくせり。
あ~、満足w
釧路OSSに初参加!
7月 30th
当日はタリーズコーヒーミーティングルームにて18:00からの開催でした。
初参加の僕は緊張しまくりで少し遅れて出席。自己紹介などを終えた後、今日の本題の9/18(土)に開かれるLDD'10Fall Kushiroについての打ち合わせでした。
IT技術を釧路にも普及すべく開かれる上記のイベントは、初心者向けと専門的な講義に分かれ行われるようで、知識が有る無いに関わらず楽しめる内容になりそうです。
札幌から講師の方も来られるとの事で、釧路では今まで無かった本格的なイベントになりそうですので興味のある方はぜひ、ご参加を!!
ミーティング終了後には、懇親会にもお邪魔し楽しい時間を過ごさせて頂きました。
初参加でわからない内容も多かったのですが、熱い志を持った方々とお話ができたので非常に充実した日になりました。
参加のきっかけを下さったいけださん、釧路OSSのさいとうさん、きしさん、さとうさん、しむらさん、釧路ブログ100のやはたさんありがとうございました。次回も参加させて頂けるとうれしいです!
尚、TwitterでのLDD'10Fall Kushiroのハッシュタグは#oss946なので、覗いてみてください!
[Linux][Debian][DB][aptitude]aptitudeでにっちもさっちも行かない状態を脱したときのメモ
7月 30th
数カ月程、aptitudeの以下のようなメッセージに困っていました。
postgresql-8.3 (8.3.7-0lenny1) を設定しています ... Starting PostgreSQL 8.3 database server: mainError: /var/lib/postgresql/8.3/main is not accessible or does not exist failed! failed! invoke-rc.d: initscript postgresql-8.3, action "start" failed. dpkg: postgresql-8.3 の処理中にエラーが発生しました (--configure): サブプロセス post-installation script はエラー終了ステータス 1 を返しました 以下のパッケージの処理中にエラーが発生しました: postgresql-8.3
aptitudeでupgradeなどを行うと、
このようなエラーが毎回つきまといました。
http://comments.gmane.org/gmane.linux.debian.jp.user/19531
ここを見ていろいろやってみたんですが、解決せず。
そしてエラーメッセージが変わりました。
E: パッケージ postgresql-8.3 のファイルの位置を特定できません。おそらくこのパッケージを手動で修正する必要があります。 拡張状態情報を書き込んでいます... 完了 E: パッケージ postgresql-8.3 のファイルの位置を特定できません。おそらくこのパッケージを手動で修正する必要があります。 E: 内部エラー: ダウンロードするパッケージの一覧を作成できませんでした
そして今日、
"E: 内部エラー: ダウンロードするパッケージの一覧を作成できませんでした"
で検索すると、
このページに行き着きました。
http://d.hatena.ne.jp/tanzen/20091025/1256563955
書いてあるようにやってみました。
消せなかったのは "postgresql-8.3" というパッケージだったので、
こんなふうにやってみました。
$ sudo rm /var/lib/dpkg/info/postgresql-8.3.prerm $ sudo dpkg --remove --force-remove-reinstreq postgresql-8.3 dpkg: warning: overriding problem because --force enabled: パッケージが非常に矛盾した状態に陥りました。 削除を行う前にこのパッケージを再インストールすべきです。 (データベースを読み込んでいます ... 現在 X 個のファイルとディレクトリがインストールされています。) postgresql-8.3 を削除しています ...
これで解決してくれたようです。
Collection / Generics
7月 28th
Collection / Generics
今日はコレクションをやりました.良く使う割にはあんまり知らないことがあったなぁ
collection
java collection framework
- List
- ArrayList
- LinkedList
- Set (null なし)
- HashSet
- Map (null あり)
- HashMap
- SortedMap 順序ありMap
- TreeMap
- SortedSet 順序ありSet
- TreeSet
Comparator と Comparable
Comparable は interface で int compareTo(T obj) というメソッドを持っている.1,2,3とかa,b,cとか自然な順序を比較することができるというinterface.compareToで自分自身と比べる.Comparator も interface だけど,int compare(T obj1, T obj2) という風に,2つのオブジェクトを比較するためのインターフェース.Arrays.sort(someList, new SomeComparator()); という風に使う.
- Comparable
- このオブジェクト自身を比較できますよという印
- Comparator
- 比較するためのオブジェクトですよという印
equals / hashCode
Object にある public method.変える時は適切にオーバーライドする.
equals
意味として等しいか?を示す.
たとえば,50円が2つ入っているリストを持つオブジェクトと,100円が1つ入っているリストを持つオブジェクトは等しいか?
- 金額という観点から => 50*2=100 だから等しい
- 種類という観点から => 50 と 100 だから異なる
そのオブジェクトをどういう風に使いたいかによって,「等しさ」は異なる.使う人間が定義してやらないといけない.
オマケ 同値(等しさ)の定理は以下の3つ
- X=X
- X=Y なら Y=X
- X=Y Y=Z なら X=Z
hashCode
public int hashCode()
つまり,無限に存在するオブジェクトを,int数だけの有限空間に無理矢理突っこむという関数.異なるオブジェクトが同じhashCodeを返してもいい.やらないし,やらないほうがいいけど
public int hashCode(){
return 0;
}
とか定数も禁止されてはいない.↑でやったMapやSetに値を入れる時のキーなどに使う.
generics
1.5から導入された.1.4以前だと
List list = new ArrayList();
list.add("A");
list.add(new Integer(100));
String s = (String) list.get(0);
みたいに書かないといけない.
- 取るときのキャストがめんどくさい
- そもそも一つのリストにいろんなオブジェクト入れる事あんまりないよね
という理由から,「あるリストに決められたオブジェクトしか入れられない」と決めて,取るときのキャストを不要にした書き方を用意した.それがジェネリクス.こんなの
List<String> list = new ArrayList<String>();
リストに決められたオブジェクトしか入れられないのは,いつチェックしてる?
コンパイルの時.
コンパイルした後のバイトコードにはジェネリクスの情報は入っていない(イレイジャー erasure).後方互換性(1.4でコンパイルできるものが1.5でコンパイルしてもちゃんと動く)のためにそうなっている.
extends / super
List<Number> list = new ArrayList<Number>(); list.add(new Integer(100)); // できない
はコンパイルエラーになる.なぜか?「IntegerはNumberではない」から.ジェネリクスでは普通にやるとオブジェクトの継承関係を見てはくれない.
不便すぎるので,ワイルドカードを用意した
List<?> list = new ArrayList<Object>();
で何でも入れられるリストになる.
でもそれだと1.4と同じ状態になってしまうので,条件つきのワイルドカードを用意した
List<? extends Number> list = new ArrayList<Number>(); list.add(new Integer(100)); // できる!!
これで「Number型を持つもの」をリストに入れられる.同様に <? super T> でTの親ならを何でも入れられるリストを作れる.でも〜の親ってあんまり宣言する機会がない.
ProFTPDを導入した(CentOS5)
7月 27th
WordPressを動かせるようにしたのは先日の話。
既にブログの運用を始めていますが、WordPressでプラグインやら、デザインテーマをインストールするにはFTPを有効にしなくてはならない。
僕がレンタルしている、ServerMan@VPSのシンプルセットでは、初期段階でFTPが導入されていないので、自分でやってみた。
FTPを有効にするにはもちろんFTPを動かすためのアプリケーション?が必要となるわけで、僕はProFTPDを選択しました。
なんでProFTPDにしたかというと、なんとなくです。
そして、
# yum -y install proftpd
・・・・
No package proftpd available.
Nothing to do
出ました、得意のyumでインストール出来ないパターン。
ただ、ちらっとググってみたところ、2行のコマンドを投入することで、yumでのインストールが可能になるとのこと。#
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# rpm -ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386. rpm
# yum -y install proftpd
・・・・
Installed:
proftpd.i386 0:1.3.2-1.el5.rf
Complete!
入った!すごい!
次はproftpd.confの編集です。
# vi /etc/proftpd.conf
ServerType standalone ← コメントアウトする
#ServerType inetd ←コメントアウトをはずす
※FTPは必要なときに立ち上がっていれば良いので、スタンドアローンではなく、xinetd経由で起動/終了をさせます。
DefaultRoot [apacheのドキュメントルートと同一] ←当面、その場所でしかFTPを使う予定はないので。
変更したのは上記の箇所だけ。次にxinetdの編集
# vi /etc/xinetd.d/xproftpd
log_on_success += DURATION USERID
↓
log_on_success += HOST PID ← 変更(ログインに約30秒かかる対処)
log_on_failure += USERID
↓
log_on_failure += HOST ← 変更(ログインに約30秒かかる対処)
disable = yes
↓
disable = no ← proftpdのxinetd経由起動の有効化
再起動。
# /etc/rc.d/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
よし、これで準備が整った!さぁ、FFFTPを使って接続を試みたところ・・・・「接続できません」
なんでやねーーーん!
とりあえず、ログを見てみることに。
# cat /var/log/messages
・・・・
Jul 26 23:45:34 [ホスト名] proftpd[34686]: warning: unable to determine IP address of [ホスト名]'
Jul 26 23:45:34 [ホスト名] proftpd[34686]: error: no valid servers configured
Jul 26 23:45:34 [ホスト名] proftpd[34686]: Fatal: error processing configuration file '/etc/proftpd.conf'
ここっぽい。とりあえずお決まりで、ログメッセージをそのままググると・・・
hostsファイルで自ホストの名前解決してあげないと駄目っぽいので、
# vi /etc/hosts
***.***.***.*** [ホスト名] ← 追加
よし、再接続!
できたーーー!わりと時間食ってしまったorz
はてなスターを付けれるようにしました。
7月 26th
僕のこのブログはWordPressで運用していますが、以前は、はてなダイアリーでブログを付けていました。
ついさっき、こんなブログを書いたところ(LEDシリコンアサラトが届いた!)、はてなスターを付けたいと言ってくれた人がいたので、対応してみました。
はてなスターの設置方法は「はてなスターをブログに設置するには」というサイトに設置方法が載っていて、ほぼそのとおりだったのですが、HTMLの構造的な問題でちと苦戦しました。
外部ブログにはてなスターを設置する場合、HTML構造がはてなスターに合っていれば、簡単に設置できるようですが、僕のようにWordPressでデザインテーマを他から引っ張ってきた人間にはちと面倒があります。
まず、参照リンク先にある説明のとおり、JavaScriptを読み込むように、head部を編集しました。
$ vi /[Documentルート]/wp-content/themes/grey-matter/header.php
ヘッダ部(<head>~</head>)の最下部に以下を追記。
※順番が大事です。からなず最初にHatenaStar.jsを読み込むようにして下さい。
<script src="http://s.hatena.ne.jp/js/HatenaStar.js" type="text/javascript"></script>
<script type="text/javascript">
Hatena.Star.Token = '**********************';
</script>
Hatena.Star.SiteConfig = {
entryNodes: {
'div.content2': [ ←content2というクラスで繰り返される、
{ uri: 'h1 a',title: 'h1',container: 'h1'} ←h1タグに対してHatena Starを設置する。
]
}
};
僕が使っていたテーマでは、classで繰り返し表示されるようになっていなかったので、「index.php」と「single.php」の記事タイトルとなるh1タグをdiv.content2で囲いました。※ちゃんとコードなりなんなりを読める人ならもっと楽な方法があるかもしれませんね。
そして、Hatena Starの追加ボタンなどを表示させるためには、そのタグにリンクが貼られていないとだめらしいので、single.phpのh1タグの部分に対して、
<h1><?php the_title(); ?></h1>を
<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent link to this post','grey_matter'); ?>"><?php the_title(); ?></a></h1>
という変更を加えて対応しました!
とりいそぎ自分用メモ的なです。
釧路湿原マラソン完走!!
7月 25th
初参加で不慣れな僕は朝7時20分頃、受付へ。
もうすでに沢山の方が来ていました!
![IMG_0286[1]](http://img.pics.livedoor.com/012/d/2/d281ddfc1c51bfeb7d42-M.jpg)
受付後、家へ戻り8時半頃再び向かうと、駐車場はすごい事に!
何とか駐車場所を確保しなんとなく準備運動開始。
9時30分に30kmコースの出場者がスタート!
すごいスピードで先頭グループが駆け抜けていきます!
それを見た僕はますます緊張 (゚Д゚≡゚д゚)エッ!?
そしていよいよスタート地点に立ちました。
普段、1人で走っている僕にとっては部活動以来に誰かと競うという状況にだんだん興奮状態に・・・(゚皿゚メ)
スタートの音が鳴り一斉に飛び出しました!周りの人にぶつからないように徐々にペースをあげて少しづつ前に出て行きました。
僕はランナー用の腕時計をもっていないので1kmを何分で走っているのかまるでわかりませんw
そんな初心者丸出しの走法で気がつけばスタートから3km地点に到達。
走りながら感じたのは意外にリラックスしている自分と、「なんか今日は走れるかも」とゆう気持ち。
あっとゆう間に5km地点に到達しすでに40~50人位は抜かしている状況で折り返し。
「この調子でどんどん抜いちゃうよー!!」( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \ とゆうのも、束の間、6kmを越えた所から カ・ラ・ダ・ガ・オ・カ・シ・イ!!
足が重たくなり呼吸が苦しくなりましたε=ε=(;´Д`)
その後はなんとか気力で走り運動公園敷地内へ入った所で残り2km。
自分が今どのくらいの時間で走り、一体何位くらいなのかもわからないまま迷走。
しかしそこで娘や家族の応援が聞こえてきて勇気100倍!!
娘にかっこいい所を見せたい一心でラストスパート!!
ゴールした瞬間の気持ちよさ!!充実感と達成感!!
忘れていた感情が込み上げてきた瞬間でした。
結果は・・・
![IMG_0289[1]](http://img.pics.livedoor.com/011/0/2/020d387f916792db5d05-M.jpg)
自分の予想を遥かに上回る結果に大満足です!(*゚▽゚*)
来年は30kmに参加してみたいなー。(そしてホノルルも出たいと勝手に考えている身の程知らずww)
参加者のみなさん、本当にお疲れ様でしたー。
来年もまた会いましょー!
オートボクシング/enum まとめ
7月 25th
オートボクシング/enum まとめ
今,僕の行っている会社ではJavaの研修をやってくれるのです.素晴しいですね.せっかくなので覚えた部分をまとめてみました.今日はオートボクシングと列挙型です.
ボクシング・アンボクシング
どんなの?
オブジェクト型とプリミティブ型を相互に変換する
オブジェクトとプリミティブの違いは?
- 本質
- メモリの使い方
- 特徴
- プリミティブだとレシーバーを取れない ex) 1.plus(2)とかできない
- プリミティブだとnullを入れられない(初期値がある)
- プリミティブだと型を使ってポリモーフィズムを表現できない
あれ,プリミティブに良い所あるの?
軽くて速いよ!
いつやるの?
コンパイル時にやる
ボクシング
- プリミティブ->オブジェクト自動変換
- Integer.valueOf(prim) を使うと思いねぇ
アンボクシング
- オブジェクト->プリミティブ自動変換
- obj.intValue()を使うと思いねぇ.つまりobjがnullだとNullPointerExceptionになる
コンパイル時にnullチェックしてよ
できない.例えば秒数末尾が偶数ならnull,奇数ならオブジェクトを生成とか,コンパイル時に調べられない.
void method(int num)l{} と void method(Integer num) は同じクラス内に書ける?
書ける.オートボクシング導入(1.5)より前ではこれは普通のことだった.method(int型); だと前者,method(Integer型); だと後者が呼ばれる.
列挙型(enum)
どんなの?
- 特殊なクラス.
- 同じ種類の定数を集めて書いておく時なんかに使う. enum Direction{ UP, DOWN, LEFT, RIGHT}; のような感じ.
- UP, DOWN, LEFT, RIGHT の値が一意になることは保証されている.
明日は釧路湿原マラソン
7月 24th
明日7/25(日)は釧路湿原マラソンです!
僕自身、初参加なので少々ドキドキしております(((( ;゚д゚)))
4月から始めたランニングもなんとか続ける事ができて1ヶ月に150km走れるまでに成長しましたw
これは何年間も運動をしていなかった僕にとって、3ヶ月前には想像もしていなかった事でした。
何はともあれ、明日はいよいよ本番!10kmコースでの参加ですが精一杯、走りきりたいと思います!
天気があまり良くないそうなので雨だけ降らないように・・・
参加者のみなさん、おもいっきり楽しんで走りましょうね!(゚∀゚)アヒャヒャ
[vim][osc10do]OSC2010Hokkaidoでの発表「今更聞けないvimの話」の資料と動画を公開しました
7月 19th
ほんと今更ですが、6/26に行なわれたオープンソースカンファレンス2010北海道での発表「今更聞けないvimの話」の資料と動画を公開しました。
動画はちょっと音ズレしてますが脳内補完していただくようお願いします。
あと発表でrectickをちょっと改造して使わせていただきました。パッチはhttp://github.com/iakio/osc10doに置いてあります。表示できる制御キーの種類を増やしてますが非常にいきあたりばったりです。あとメモリ関係のバグがあった気がします。
http://iakio.github.com/からひととおりリンクしてあります。

