トップ «前の日(12-10) 最新 次の日(12-12)» 追記

よこいまさる日記



Thu Dec 11 2003

[Linux] iconv の使い方...

 いやーっ、ハマったね、iconv。 たとえば下のようなことをやると、printf() での変数 outbuf は、変換後の文字列の先頭へのポインタとならない。

char *inbuf, *outbuf;
size_t inbufleft, outbufleft;
  .... 省略 ....
inbufleft = strlen(inbuf);
outbufleft = BUFSIZE;
outbuf = calloc(BUFSIZE, sizeof(char));
iconv(cd, &inbuf, &inbufleft, &outbuf, &outbufleft);
printf("%s\n", outbuf);

 上の場合、変換後の文字列の最後の部分 (文字 '\0')へのポインタとなっている。 outbuf に保持されるポインタの値を iconv() が書き換えている。 なので、以下のように書くと、期待していたとおりに動いてくれる。

char *in, *out, *inbuf, *outbuf;
size_t inbufleft, outbufleft;
  .... 省略 ....
inbuf = in;
inbuflen = strlen(inbuf);
outbuflen = BUFSIZE;
out = outbuf = calloc(BUFSIZE, sizeof(char));
iconv(cd, &inbuf, &inbufleft, &outbuf, &outbufleft);
printf("%s\n", out);
free(out);

 char* 型の変数 in, out に、それぞれの始点ポインタを保持させておくことが重要。 iconv() 実行後は out != outbuf な状態になる。 これに気づくのに数時間かけてしまった.... のである。

V801-SA

 会社で海外出張用に vodafone のV801-SAを一台新調していた。 ちと触らせてもらったんだけど、あのスライド式なところや、SDメモリカードを挿して MP3 が聞けたりするあたりが (・∀・)イイ!!。 しかも2万円程度で新規加入ができるんだそうで。 んで、GSM も使えるんだからねぇ。 明日あたりに、自宅でも利用できるか確認するために、会社から借りてみようっと。

本日のツッコミ(全1件) [ツッコミを入れる]

名乗るほどでは [iconv()が動かなくて、悩んで、検索したらヒットしました。 outが動いていたとは気づきませんでした。 これで解..]


Sat Dec 11 2004

VMWare の Bridged Interface が使えなかった原因...

 久しぶりに NetBSD インストールしようなんていうことで VMWare を動かしたわけですが、Network interface の bridged interface が使えなかったんですよ。 最後に VMWare 使ってから変更したことを考えてみたところ、先日に coLinux の設定で Ethernet と Win32 TAP のブリッジ接続したぐらいかなぁなんて思ってみたいのですけどね。 で、調べてわかったのですが、ネットワーク接続の「ネットワークブリッジ」の利用する項目で「VMWare Bridge Protocol」にチェックが入っていなかった…と。 そういえばブリッジ接続前には Ethernet Interface のほうには VMWare Bridge Protocol にチェック入っていたなぁ… と。

Mac からファイルのコピーしたら「つのだ☆ひろ」が文字化けする

 例の玄箱に MacOS X なマシンから iTunes のファイルを rsync でコピーしたのですが、ディレクトリ名で「つのだ☆ひろ」とか「加藤いづみ」とか「モーニング娘」とかの濁点のあるファイル名が UTF-8 で「つのた??☆ひろ」とかに文字化けしてしまっている。んで、そのまま iconv -f utf-8 -t euc-jp ってやると iconv stop するし。で、ちと調べてみましたよ。 文字列の中身はこのような感じでしたよ。

       |つ      |の      |た      |??      |☆      |ひ      |ろ
 UTF-8 |e3 81 a4|e3 81 ae|e3 81 9f|e3 82 99|e2 98 86|e3 81 b2|e3 82 8d
 UCS-2 |30 64   |30 6e   |30 5f   |30 99   |26 06   |30 72   |30 8d

んで、この U+3099 ってなにさ? ってことで調べてみたところ

$ grep ^3099 UnicodeData-4.1.0d8.txt
3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;

 あ、Unicode にある2つをあわせて1文字になる、ってやつね。 で、調べた結果なのだが、Windows や gconv (glibc) とかは precomposed characters にのみ対応しているみたいで、Mac は 本体 + 合成文字 になるみたいだ。 何とかならないものか・・・。

 でcombining char ってこのようなものがあるらしい。

302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;

Sun Dec 11 2005

車買うことしか頭にない今日この頃

ほんとうに車買うことしか頭にない今日この頃。

まずは近辺の駐車場探し。 うちの近所(東京都渋谷区本町)だと野ざらしとかで一番安いところで25千円で高くても30千円ぐらい。 これならイケる! 理想としては、機械式で安くて雨にあたらないところがいいんですけど、渋谷区本町だと微妙に都心感が消えたところになるので、なかなか立体とかないんですよねぇ。 カシオ本社の地下とか貸してもらえるとベストなんですけどねぇカシオさん貸してくれませんかねぇ。w

んで車種選びしているのですが、値段的に Alfa 147 か RX-8 のどちらかに絞って選び中。 Lexus IS 250 は予算より100万円ぐらい高いので out of 眼中になりました。 ってことでアルファロメオに冷やかしにいったのですが、12月が決算期らしく、12月中に登録すれば20万円以上値引きしますよダンナって感じで、「1月でも同じように値引きするなら考えてもいいよ」とか言ったり。 あたらめて selespeed を試乗したのですが、エンジンの音とかはご機嫌でよろしいかったり、内装のデザインがよかったりするのですが、 RX-8 と比べると走った感覚がすこしチャチい。 RX-8 は 5MT の方に乗ってみました。 試乗したコースでは6MTのクルマとの違いはほとんど感じない程度で、タイヤの偏平率の差をサスペンションコイル+ショックアブソーバの硬さでフォローされているのかもって感じだった。

RX-8の見積もりとかもらって、家に帰って中古車価格調べてみたところ・・・。 RX-8 って1・2年たった中古車の販売価格って新車の取得価格の3分の2ぐらいになるのですか。 ってか登録2年で2万キロいかない程度で200万なら、それでもいいかもっておもったり。 だって5年ローン組むつもりだったのが3年ですむもんね。

ということで、こんどは中古車屋冷やかしに行こうかと。

駐車場探し

別の不動産屋とかあたってみたところ、2.8万円だけどキツキツにとめてギリギリ道路に出ない程度なので車庫証明取れない、とかあったりしてワロタ。 野ざらしで3万円、屋根つきで3.5万円とかですかねぇ。 契約時に払わなければならないのが敷金1ヶ月〜2ヶ月分に仲介手数料1月分と日割り駐車料金で最大3〜4ヶ月とかだってさ。 前借りていたのは公団だったから仲介手数料なかったんだよな、そういえば。

本日のツッコミ(全13件) [ツッコミを入れる]

Before...

miya ["悪魔の乙"でよろ〜]

knaka [しばらくナイカーだったので、保険の等級がリセットされてしまいました(ToT。]

まさる [等級の証明書の有効期間切れてしまったのですね。 残念。 任意保険のどこを削るか見ていたところ、こんな方法があるなと。..]

knaka [>免責額多くすれば安くなる 車両保険における最大免責として「全損限定」というのがあります。ゼロか100か、という。か..]

藤田志伸さん [海難]


Tue Dec 11 2007

アーロンチェア

来た。 箱がギリギリ入った。

Photo 0 Photo 1 (14:55)

本日のツッコミ(全5件) [ツッコミを入れる]

いけだ [しゃちょーさんいすだ笑]

knaka [前のアパートでは箱が入らなくて、表でバラしたっけ。]

まさる [なかなか座り心地いいですよ。 ウチでも箱で入らなかったら、廊下で箱を解体するつもりでした。]

knaka [座り心地はいいんですけれど、 あれ、決して社長椅子じゃないんですよね。 どちらかというと、高性能事務椅子。 ちゃんと..]

まさる [スタンダードとかいう安いモデルだったので、前後の角度の調整とかないんですけどね。 後ろにもたれるときの圧力を調整する..]


Fri Dec 11 2009

ssh-agent や ForwardAgent を活用するようにしてみた。

普段、皆さんはSSHでログインをするときに、非対称鍵による認証を使われているかと思います。 SSHでパスワード認証してるとかって、運用サボっているとしか言いようがないですけどね。

んで、非対称鍵でパスワードの解かれた秘密鍵をオンメモリに保存しておく ssh-agent をまじめに使おうと思い、チラチラとスクリプトを書いていました。やりたいこととしては、こんなところ。

  • SSHの接続元から Forward Agent された場合は、そのままスルー
  • 手元のマシンで ssh-agent が動いていなかったら、起動
  • ssh-agent は、今回の場合はログアウト後も稼働したまま。
  • 他でのログイン時に起動した ssh-agent があれば、それを使い回し

Windows上のputtyならばpagentを動かせば一発。 Ubuntu desktopの環境ならば、この辺も一発で完了。 フツーにシェルでログインする場合はどうするんだ?ってところで、自分でスクリプト書いてみた。

とりあえず、こんなbashスクリプトを書いておきました。

#!/bin/bash

function kick_sshagent () { ssh-agent |grep -v ^echo > "$agent_vars" source "$agent_vars" }
function start_sshagent () { agent_vars=~/.ssh/agent_vars.sh if [ "$SSH_AUTH_SOCK" != "" -a -e "$SSH_AUTH_SOCK" ] ; then # Already agent is running (e.g. ForwardAgent) return 0 fi if ! [ -f "$agent_vars" ] ; then kick_sshagent return 0 fi source "$agent_vars"
if test "$SSH_AUTH_SOCK" = "" -o ! -e "$SSH_AUTH_SOCK" ; then kick_sshagent return 0 fi unset agent_vars }
# 上記のコードを実行 start_sshagent

例えばこのファイルを ~/.ssh/start_agent.sh というファイル名にした場合、bash から . ~/.ssh/start_agent.sh と実行すれば動きます。 ~/.bashrc にこの記述を書いてしまってもよいかもしれませんね。 ちなみに .bashrc の編集をしたあと、動作確認もせずにログアウトすると、ログイン出来なくなる罠がありますので。 編集後、別の端末からログインしたり、同じ端末から localhost にログインし直すなどして、お試し下さい。

ssh-agentの基本的な使い方ですが、ssh-agentを実行すると、自分のプロセスに接続するための環境変数を shell script で記したデータを出力します。 こいつを shell の変数にするのです。 ssh-agent は起動直後は、秘密鍵のパスフレーズを保持していないので、ssh-addでパスフレーズを登録します

$ ssh-add
Enter passphrase for /home/masaru/.ssh/id_dsa:

こうすることで、この先の別のマシンにSSHでログインするときに、秘密鍵のパスワードを聞いてこなくなります。

この agentの状態を、ログイン先のマシンにも転送するのが Forward Agent と呼ばれている機能です。 信頼できるマシンにのみ転送してください。 利用するには、ssh の設定ファイル ~/.ssh/config に、下記のような内容を書いて下さい。

Host * # 対象となるホスト
 ForwardAgent yes

ある程度、非対称鍵での運用に慣れた頃に、SSHDのパスワード認証を外しましょう。 /etc/ssh/sshd_config に「PasswordAuthentication no」って書けばOKです。

マクドナルドで仕事

こんな感じで仕事中

Photo 0 (11:24)

2000|10|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|