2014年9月3日水曜日

ConoHaのオブジェクトストレージサービスについて。


このエントリーをはてなブックマークに追加


ConoHa のサービスにオブジェクトストレージサービスが実装されました。OpenStack Swift ベースとの事です。
https://www.conoha.jp/blog/tech/2642.html

大体の使い方はここに書いてあります。
https://www.conoha.jp/guide/guide.php?g=48


サンプルに書いていない、アップロードしたファイルをクライアントに対して直接参照させる方法について書いてみます。これは画像配信等で有効です。

$ pip install python-keystoneclient python-swiftclient
エラーが出る場合はOS側のライブラリ等が足りません。エラーメッセージを見れば大体何が足りないかはわかると思います。

コンパネから取得できる情報を以下の変数に設定
$ vim openrc_conoha
export OS_AUTH_URL=API Auth URL
export OS_TENANT_ID=テナントID
export OS_USERNAME=ユーザー名
export OS_PASSWORD=自分のパスワード

$ source openrc_conoha
$ swift stat
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Containers: 0
       Objects: 0
         Bytes: 0
Meta Quota-Bytes: 110058536960000
   X-Timestamp: 1409734987.60990
  Content-Type: text/plain; charset=utf-8
 Accept-Ranges: bytes


コンテナを作成します。
$ swift post container01
$ swift list
container01

$ swift stat container01
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     Container: container01
       Objects: 0
         Bytes: 0
      Read ACL:
     Write ACL:
       Sync To:
      Sync Key:
 Accept-Ranges: bytes
   X-Timestamp: 1409736843.00552
    X-Trans-Id: tx2eb6ef4622c34c1a90c62-005406e0a8
  Content-Type: text/plain; charset=utf-8

ファイルのアップロードを行います。
$ cat hoge.txt
hogehoge

$ swift upload container01 hoge.txt 
hoge.txt

$ swift stat container01
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     Container: container01
       Objects: 1
         Bytes: 9
      Read ACL:
     Write ACL:
       Sync To:
      Sync Key:
 Accept-Ranges: bytes
   X-Timestamp: 1409736843.00709
    X-Trans-Id: tx70d3fe1c2c534d2d8f513-005406e148
  Content-Type: text/plain; charset=utf-8

コンテナの属性を変更して、誰でも読み取り可能にします。
$ swift post --read-acl ".r:*,.rlistings" container01

$ swift stat container01
       Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     Container: container01
       Objects: 1
         Bytes: 9
      Read ACL: .r:*,.rlistings
     Write ACL:
       Sync To:
      Sync Key:
 Accept-Ranges: bytes
    X-Trans-Id: txd0161d15696c407cadd5b-005406e2d3
   X-Timestamp: 1409736843.00552
  Content-Type: text/plain; charset=utf-8

オブジェクトストレージのエンドポイントを取得します。この値はスタティックなので、一度取得してしまえば変更されることはありません。
$ keystone endpoint-get --service object-store
+------------------------+---------------------------------------------------------------------------+
|        Property        |                                   Value                                   |
+------------------------+---------------------------------------------------------------------------+
| object-store.publicURL | https://objectstore-r1nd1001.cnode.jp/v1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------------+---------------------------------------------------------------------------+
xxxxxxxxxxxx 部分にはテナントIDが入ります。


このアドレスに、コンテナ名/ファイル名 をつけてアクセスすると、直接ファイルの中身が参照できます。
$ curl https://objectstore-r1nd1001.cnode.jp/v1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/container01/hoge.txt
hogehoge

上記の例では Swift のCLIを利用していますが、もちろんReST APIを利用してもよいですし、Pythonであれば swiftclient を import して、プログラムの中からストレージを扱うことが可能になります。

プログラムからアップロード等する場合の例はこちらを参考にしてください。
http://aikotobaha.blogspot.jp/2014/08/how-to-use-python-swiftclient.html


2014年8月29日金曜日

gnupack devel 12.10 非公式アップデート


このエントリーをはてなブックマークに追加


*gnupack 非公式アップデート版に関する最新バージョンは こちら をご確認ください*

アップデートの概要 12.03 to 12.10

・実験的に emacs-w32 を配置(ntemacsとは分離して配置)
・connect-proxy, corkscrew を配置
・cygwin 関連パッケージのアップデート

ダウンロードはこちらから。
gnupack_devel-12.10-unofficial.exe


既知の問題
・Windows8 64bit で特定コマンドが実行できない → export LANG=C する事で回避はできます。
fhandler_disk_file::fixup_mmap_after_fork: requested 0xFFEA0000 != 0x0 mem alloc base 0xFFEA0000, state 0x1000, size 20480, Win32 error 487

・df 時にローカルドライブ以外の容量取得がエラーになる。
# df
df: `/g'
ファイルシス   1K-ブロック     使用    使用可 使用% マウント位置
C:               249954300 59996268 189958032   25% /c


2014年8月18日月曜日

How to use python-swiftclient


このエントリーをはてなブックマークに追加


リファレンスはこのあたり。
http://docs.openstack.org/developer/python-swiftclient/

大体はリファレンスに記載されている。一部サンプルが無くてわかりづらいところをメモ。



2014年7月13日日曜日

複数NIC環境でDHCPを使った際の resolv.conf の上書きについて


このエントリーをはてなブックマークに追加


RHEL6/CentOS6において、複数のNICを持つ環境でそれぞれのインターフェースでDHCPを有効にした場合(以下のようなケース)

eth0(dhcp) → eth1(dhcp) → eth2(dhcp)

この時、 resolv.conf の設定は、最後にUPしたインターフェースの設定で上書きされてしまいます。これを防ぐには、事前に特定インターフェースの resolv.conf 上書きを停止することで問題を回避できます。


resolv.conf を上書きさせたくないインターフェースの ifcfg-ethX に以下を追記します。

PEERDNS="no"

これだけ。


2014年5月25日日曜日

Common Lisp のスレッド処理


このエントリーをはてなブックマークに追加


Common Lispにおけるスレッド処理は処理系依存であり、利用する場合はなかなか悩ましい問題です。そんな頭痛の種を解決してくれる一つの手段として、bordeaux-threads というライブラリがあります。

bordeaux-threads は処理系依存のスレッド処理をラップして、共通の記述が可能となる事を目的として開発されたライブラリです。bordeaux-threads は QuickLisp から導入可能です。
(ql:quickload :bordeaux-threads)

利用イメージは以下となります。



2014年5月20日火曜日

*突然*キーボード*英語*配列*


このエントリーをはてなブックマークに追加


Red Hat Enterprise Linux, CentOS, Fedora 関係なく起こります。

OSを再起動したら突然、キーボードの配列が英語モードになってる現象。特にメディアからインストールした直後の環境を yum update すると起きる気がします。

多分何かのパッケージがアップデートされる時に pre/post スクリプトが走って設定が変更されてしまうんだと思います。

直すのは簡単で、system-config-keyboard を起動して、再度日本語キーボードを選択してやればOKです。

このコマンドは yum install system-config-keyboard でインストールできます。

MacBook AirにFedoraをインストールしたら久々に発生したのでメモです。


2014年5月19日月曜日

Fedora20 on Mac Book Air Late 2010


このエントリーをはてなブックマークに追加


ちょいと古めのMBA2010を借りたのですが、Mac OS X の使い勝手に慣れる事ができず、我慢できず半日で Fedora20 をインストールしてしまいました。


インストール自体は簡単で、

・USBドライブを接続し
・FedoraのメディアをDVDへ焼いものを突っ込んで
・起動時に Option キーを押しっぱなし
・ブートメニューが出てきたら「UEFI」を選択
・Linuxインストーラーが起動 → あとは普通にインストール

パーティションは以下のようにした(Mac OSは削除
Device           Start          End   Size Type
/dev/sda1         2048       411647   200M Apple HFS/HFS+
/dev/sda2       411648      1435647   500M Microsoft basic data
/dev/sda3      1435648      9627647   3.9G Linux swap
/dev/sda4      9627648    214427647  97.7G Microsoft basic data
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       200M   15M  186M   8% /boot/efi
/dev/sda2       477M   96M  352M  22% /boot
/dev/sda4        96G  7.4G   84G   9% /
sda2,sda4 のパーティションが変ですが、ext4 で普通に使えてます。

インストール直後の状態で、モニタ出力、WiFiは問題なく使えています。
スピーカーとカメラも使えます。内蔵マイクは認識して使えるのですが、ゲインが低い?のか拾った音がやけに小さいです。こちらは後で調査します。

キーマップは jp106 として認識され、英数・かなキーは機能していません。
ファンクションキーはそのまま押すと、音量UP/Down、輝度UP/DOWNとなりちゃんと動きます。普通のF1,2として使う場合は、Fnキーと合わせて押すと使えます。
Zenkaku_Hankaku がないのは不便なので、以下のように割り当てました。また、Alt_Lの位置が使いにくいので、英数キーもAlt_Lとして機能するように設定してあります。

~/.xmodmaprc
keycode 130 = Zenkaku_Hankaku
keycode 131 = Alt_L
pointer = 1 2 3 5 4 7 6 8 9 10 11 12

最後の pointer は、タッチパッドを Natural Scrolling
ちなみに option キーは キーコード64でデフォルトはAlt_Lにマップされ、左commondキーは133でSuper_Lになります。別のキーにマップする場合はこのコードを操作してください。

F18以降は$HOME/.xmodmaprc を自動で読み込まなくなっていまるので、 gnome-session-properties から セッション起動時に読み込まれるコマンドを追加してあげてください。

タッチパッドは予想外にちゃんと機能します。2本クリックで右クリック、3本クリックで真ん中クリックとなります。2本スライドでUP/DOWNスクロールしてくれます。ただしデフォルトではMacとは逆方向のスクロールになるので、上記の pointer 設定をいれると Mac と同じように動作します。

ふたを閉じるとスリープして、開けると復活するのもMBAと同じように挙動します。

あとは、MiniDisplayポートの出力が試したいのですが、デバイスを持っていないので今度試すことにします。


まだ1日ほど設定の入れ込みを含めて使っただけですが、個人的にはかなり良いです。ThinkPad がノートPCとして終わってしまったので、後継機としてMBAは十分ありな選択肢な気がします。


2014年5月15日木曜日

「オープンソース・クラウド基盤 OpenStack入門」を執筆しました


このエントリーをはてなブックマークに追加


中井さんと共同執筆させていただきました。Amazonにて予約が可能となっています。前書きと目次についてはこちらで紹介されています。

まだ発売前ですが、ベストセラーの1位となっていました。この時点ではまだ表紙ができていなかったので、下の画像ははめ込みです。

前書きでも書きましたが、OpenStackは進歩が早く、まとまった情報を(特に日本語で)入手することが難しいのが現状です。この書籍でそんな状況が少しでも改善されればと考え中井さんと共に執筆いたしました。OpenStackやクラウドに興味のある方はぜひ読んでみてください。


2014年5月11日日曜日

gnupack devel 12.03 非公式アップデート


このエントリーをはてなブックマークに追加


*gnupack 非公式アップデート版に関する最新バージョンは こちら をご確認ください*

アップデートの概要 12.02 to 12.03

・term.el系(term/ansi-term/multi-term)で起動時、もしくは特定ディレクトリへの cd でエラーになる
・term.el系(term/ansi-term/multi-term)で、コマンド実行時に C:/bin/bash を呼び出そうとしてエラー

以下の問題を修正したものになります。
gnupack devel 12.02 非公式アップデート で確認されている不具合

ダウンロードはこちらから。
gnupack_devel-12.03-unofficial.exe


2014年5月10日土曜日

gnupack devel 12.02 非公式アップデート で確認されている不具合


このエントリーをはてなブックマークに追加


gnupack devel 12.01 非公式アップデート にて確認している不具合です。次回リリースで修正する予定です。

■term.el系(term/ansi-term/multi-term)で起動時、もしくは特定ディレクトリへの cd でエラーになる
No such directory found via CDPATH environment variable
http://aikotobaha.blogspot.jp/2014/05/term-ansi-term-multi-term-cygwin.html で回避できます。


■term.el系(term/ansi-term/multi-term)で、コマンド実行時に C:/bin/bash を呼び出そうとしてエラーになる
私は多段SSHを呼び出したときに発生しました。init.el もしくは、init-loader 化に以下を加えると回避できます。
(setenv "SHELL" "/bin/bash")