2013年6月5日水曜日

Linuxでお手軽にコマンドを遅延起動

月初のみ特別に分岐するバッチを作成した。ところが、今月の月初は休日。。
その確認のみのために休日出勤するわけにもいかず、
OSの時刻をいじるとあちこちに迷惑。。
分岐処理の条件変えて稼働確認はナンセンスだし、
かと言ってcron編集するにも本番稼働近いのでやりたくない。

と言うことでnohupで24時間sleep後に当該バッチを起動するコマンドを仕込んだ。

nohup bash -c 'sleep 86400 ; [バッチ]' &

若干不安だったけど、ちゃんと翌日稼働して分岐処理も想定通り動いてくれた。


2013年2月10日日曜日

ARROWS Z ISW13F使用感

いつも通り、自分用の備忘メモ。
現在所有しているARROWS Z ISW13Fについて思ったことをつらつらと書き留めておく。

【買った理由】
別にスマフォを欲しいとは思っていなかった。
スマフォなにするものぞ、携帯など通話とメールだけできればよいのだ、
ガラケーで十分だ!と思っていた。

ところが会社で有志のR&D活動の公募があり、
何となく申し込んでみたら私がリーダーになり、
せっかくなので集まったメンツのうち若い衆に何がしたいかと聞いたら
Androidでアプリ開発がしたいと。
なるほどなー、最近流行ってるもんなぁ、と。
会社でもまだそれほど知見もなく、会社にAndroid機自体ないこともないが、
業務以外かつ私が先行して勉強して教育するとなると
さすがに自分で買った方がよさそうだと判断した。
そのとき持っていたガラケーはとっくの昔に2年過ぎていたのもあった。


【選んだ理由】
実はこれといってない。
折角だから最新で最高スペックのスマフォを探して
買った当時スペックが一番高かったARROWSを選んだ。
発売されてすぐだったけど割と評判よかったのもあって即断した。
キャリアはau以外考えなかった。
もう10年くらいau。メアド変えるのがどうしても面倒。。


【使用感】
反応速度に不満はない。いわゆるヌルヌル動くというやつだと思う。
通信速度でも不満を感じたことはない。
都内なのとバージョンアップは自宅のWifiでやってるからかもしれないけど。
指紋認証はどうだろう。2,3回はこすらないと認識しないので、人によっては不満かも。
アプリはほとんど買ってないのでなんとも。


【買って良かった点】
GoogleReaderがどこでも読める。これに尽きる。
中毒と言っていいくらいGoogleReaderにハマっているので、
電車や待機中にGoogleReaderが読めるのはとても助かる。
特に後で読むつもりだった英語のブログは空き時間で大分消化できた。

後は地味にPicasaとの同期が便利。
意識することなく同期してくれている。
久しぶりに会った友達と飲んでいる時とかに
写真を見せるのがすごく楽。


【悪かった点】
褒めてばっかりもアレなので、ジャイロについて。
ジャイロと言うかロックかな。
しばらく放置されるとそれを検知して自動でロックするのだけれど
普通に使っているのに落ちてロック解除が面倒くさい。
ジャイロがトロいのかロックの時間が短すぎるのか。。。

あとは超個人的なことだけど電話をしにくくなった。
電話の機能に問題あるわけじゃないけど、
なんか手を触れるものだし顔に付けたくない。
でも、美容室の予約とか未だに電話でしなきゃいけないこともあり、
そこはストレス。


【総括】
考えてみるとやっぱりスマフォはいらないんじゃないかと。。
スマフォでできることはタブレットでできるし、電話はしにくいし。
ガラケー+タブレットが自分には適しているかもしれない。
でも、ガラケー最近は売ってないんだよなぁ。。。

2013年1月13日日曜日

libclntsh.so.11.1が見つからない。


PHPからoci8が連携できずに2日ほどハマったのでメモ。
Oracle関連って保守契約か何だかの約束で公式回答を
ブログやらニュースサイトに記載してはいけないということらしいが、
本件については明確に保守担当からPHPの連携およびOSに関わる部分なので
Oracle対応対象外ですと言ってもらった(見捨てられた)ので問題ないだろう。

まず、Oracleクライアントをランタイムでインストールし、
そして、PHPを--with-oci8=shared,$ORACLE_HOMEオプションをつけてコンパイルした。
正常にoci8.soライブラリが作成されたことを確認し、php.iniに追加してやる。

今回、PHPはCGI経由で呼び出すのでphp-cgiをCGIディレクティブにリンクし、
phpinfoだけ書いたindex.phpを作成し、稼働確認。
コマンドラインでphp-cgi -i index.phpでは正常に稼働し、oci8もenableだった。
ところが、ブラウザからアクセスするとphpinfoは表示されるもののoci8関連の項目がない。
error_logを確認すると、案の定下記のエラーが。。。

libclntsh.so.11.1: cannot open shared object file: No such file or directory

なるほど、Apacheの実行ユーザがライブラリパスを認識できないのね、と考え、
$ORACLE_HOME/libをld.so.confに追加したら
今度はlibexpat.so.11.1 is not a symbolic linkというエラーが出る。
もちろん、ブラウザ接続でのoci8認識はできず。

ここで保守担当に連絡を取るも、それってPHPのエラーですやん、という回答。
確かにその通り、じゃぁ、ld.so.confについてはと聞くとそれはOSですやん、と宣った。

仕方がないので、自力で対応することに。。。

まず、PHPの公式マニュアルに従ってLD_LIBRARY_PATHを認識させる方法を試す。
ところが、/etc/sysconfig/httpdとenvvarsではPHPまで届かない。。
最終手段でSetEnvしたところ、やっとPHPまでLD_LIBRARY_PATHが環境変数として渡った。
しかし、libclntsh.soのエラーは変わらずブラウザではPHPからoci8が起動できない。

それからググって出てきたことはひと通り試す。

Apache起動スクリプトに「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/var/hoge.so」
と書いてもダメ。
libclntsh.so.11.1をoci8.soと同じ所に置いてもダメ、
静的にコンパイルしても動的にコンパイルしても変わらず、
LD_LIBRARY_PATHのディレクトリのパーミッションをゆるめてもダメ、
Apache起動ユーザーのセカンドグループにoinstallを追加してもダメ、
LoadFileでlibclntsh.soを直接指定してもダメ。

とうとう万策尽きて、怒りのApache起動ユーザをnologinからbashにして無理やりスイッチ、
ldd oci8.soしたら、libclntsh.soが「not found」となっていて「ん?」
他にもrootで実行するlddと出力結果が違う。。

そこでやっとわかる。
今回、Oracleクライアントのインストール先をデフォルトに従って/home/oracleの下にした。
そのため、上位のフォルダの制限が強すぎてLD_LIBRARY_PATHが認識できなかったらしい。

対応としてOracleクライアントのインストール先を/optに変更したところ、
やっとブラウザからもoci8を認識するようになった。

2012年12月10日月曜日

Androidアプリ開発の実機テスト


Windows7でAndroidのアプリ開発中~。
SDKで動作確認には十分過ぎるエミュレータが提供されているけど、
ピンチイン・アウトやらシェイクやらはやっぱり実機でテストする必要がある。

SDKマネージャでつーっと「Google USB Driver」をインストールして、
実機のUSBデバックONにしたものの、さっぱり認識してくれない。。。

で、ググってみるとどうも「Google USB Driver」は
Google社のハードにしか対応していないような感じ。。
#ココらへん適当です。私の端末とか一部だけかも。。

で、どうやら各ベンダーで開発用のUSBドライバーを
提供しているようなのでそちらをダウンロードして適用したら
すんなりと認識してくれた。

2012年12月8日土曜日

TortoiseSVNでコミット失敗


管理しているSVNサーバでコミットできなくなったとヘルプ要請があった。
TortoiseSVNで下記のエラーが出てコミットできなくなったとのこと。

コマンド: コミット
追加中: [クライアントフォルダ]\[対象フォルダ]
エラー: コミットに失敗しました (詳しい理由は以下のとおりです):
エラー: Cannot verify lock on path '[対象フォルダ]/[アップ対象ファイル]'; no matching
エラー: lock-token available
エラー: ロックを強制解除する場合は、「変更をチェック」ダイアログかリポジトリブラウザーを使用してください。
完了:

とりあえず素直にメッセージに従って対応したら?と伝えたが、
新規ファイルのコミットで失敗したので、対象のファイルがまだサーバになく、
手も足も出ないということだった。

エラーメッセージでググってなんとか英語のソースを読むとバッチリ答えが。
サーバにログインして下記コマンドを打って対象ファイルがロックされていることを確認。
svnadmin lslocks [リポジトリフォルダ]
んで、下記コマンドでロックを解除
svnadmin rmlocks [リポジトリフォルダ] [対象フォルダ]/[アップ対象ファイル]
それで無事にコミットできるようになったとさ。

2012年10月14日日曜日

KVMでUUID云々が原因でドメインを復元できない


今対応している案件について開発機は仮想OSで構築中。
ハイパーバイザに指定はなかったので今回全サーバLinuxなのもあって
KVMで構築することになった。

構築中、libvirtをアップデートしたり、仮想OSを作り直したりしているうちに
下記のエラーが出て仮想OSが起動できなくなった。

failed: cannot restore domain '[ホスト名]' uuid [UUID] from a file which belongs to domain '[ホスト名]' uuid [UUID]

あー直前に作った仮想OSのデータがゴミになって残ったかなと
UUIDを書き換えたり、仮想OSを再作成したりしても消えない。。

最後にエラーメッセージからググって下記のページを参考にした。
spectlog.com

そして、上記ページの通り下記コマンドで無事に復旧。
virsh managedsave-remove [ホスト名]

何というか、ドメインが復元できませんエラーは大抵managedsave-remove
でなんとかなる。

2012年6月17日日曜日

東京から北海道 大洗発か新潟発か

東京から愛車に乗って北海道ツーリングに行く場合、フェリーに乗ることになる。
二回くらいは大洗からのフェリーに乗っていたけど、
北海道で出会ったおっちゃんライダーに勧められて、
最近は新潟発のフェリーを利用している。
ちゃんと考えずになんとなくお得なんだろうと思って使っていたけど、
今回北海道ツーリングに行くにあたってそれぞれのメリットを整理したので、メモ。


◆新潟発のフェリー(新日本海フェリー)のメリット

①運賃が安い
   →(人間の分は船室によるので置いておいて)バイクの運賃は
      排気量にもよるけど 新日本海フェリーの方が5000~6000円近く安い。
      関越道の高速料金を差っ引いても新潟発の方が往復で5000円は安くなる。

②新日本海フェリーの方が船内レストランの方がコスパ良い
   →どっちも船内レストランは美味しいけど、新日本海フェリーは
      地上とほとんど変わらない値段で提供している。
      乗船前にコンビニとかで買ってくる人が多いけど、
      私は新日本海フェリーでは必ず船内レストランで
      暖かい食事をいただいている。


◆大洗発のフェリー(商船三井)のメリット

①便数が多い
   →ほぼ毎日運行していて、しかもオンシーズンは1日2便ある。
      対して新潟発の新日本海フェリーは週休一日で一日1便なので、
      予定が噛み合わないことがある。

②東京から近い
   →これがすごく重要。東京から大洗は高速を普通に走って2時間ちょっと。
      対して新潟は高速を普通に走ると6時間弱。。
      体力の有無を考えなくとも行きに無駄に体力を使いたくないし、
      帰りは疲れているしでこの差は大きいと思う。

      しかも新日本海フェリーは朝10時出港なので、
      東京からは深夜に出発しないと間に合わないのでしんどい。。
      さらにどっちも航海時間は同じくらいなんだけど新日本海フェリーの便数の少なさも
      相まって新潟から出発すると一日がどっか行った気分になる。。


まとめると、体力と時間に余裕があるなら新潟発。お金に余裕があるなら大洗。