2014年06月09日

gntp-sendにsticky送信オプション追加

最近、Windows版のGrowlを知ってGrowlでの通知が自分の中で大ブレイク中です。

で、下記のサイト参考にGreasemonkey経由でブラウザの表示内容を元に更新を通知させてみたりと色々遊んでいました。


そのうち欲がでて中継用のNode.jsサーバをローカルではなくLinux上に設けて、そこから一斉通知とか試そうかと思ったら、node.js用のGrowlのnpmってLinux上で動かすとGrowlじゃなくてnotify-send使うじゃないですか。
  • Ubuntu (Linux):

    Install notify-send through the libnotify-bin package:


ただ、growl.js自体は弄りやすい量なので修正しようと思ったら、今度はLinux上で使えるgrowlnotify.exeが見つからず。

まぁ、モジュールがあるRubyなりPerlなりで書くという手もあるのですが、通知毎の実行コストが重そうだったので他の実装を探していたところC言語で書かれたgntp-sendを発見。

ただ、Sticky機能がなかったのと、オプション体系をもう少しシンプルにしたかったのでフォークして機能追加してみました。

続きを読む "gntp-sendにsticky送信オプション追加"
Posted by Takuchan at 23:41 | コメント (0) | TrackBack (0)

2012年11月03日

GitLabで日本語ファイル名周り(3.0.3)

前回のエントリでGitLabの2.4.0で日本語ファイル名のソースを表示するためのヒントを書きましたが、GitLab 3.0.3にバージョンアップしてみたところ今度は日本語ファイルのURLが化けたり、一部のフォルダが開けなくなる現象に遭遇しました。

まず、日本語ファイル名のURLが化けるのはソースを開こうとしたタイミングでしかもJavaScriptを有効にした場合だけです。

そのあたりから探っていったところ、どうもシームレスな画面遷移時にJavaScriptでブラウザの「戻る」の制御を行う「vendor/assets/javascripts/jquery.history.js」が原因だということが判明。

このソース、ライセンス表記などが無く、ネット上にも情報がないのでどこにバグ報告をすべきなのか不明なのですが、URLエンコードの復元にunescape関数を用いているため、1Byte文字圏でしかまともに動作しません。

しかも、デフォルトでミニファイ化されていコードが読みにくくなっているのですが、幸いにもunescapeを使っているところが1箇所しか無いためそれを「encodeURI」関数に置き換えることでキチンと動作するようになります。

で、この修正だけでほとんどのファイルやフォルダが問題が無くなったのですが、それでも一部のフォルダではencode errorと表示されるため、更に調べたところ「app/views/tree/_tree_item.html.haml」の内部で呼び出しているtree_join関数にてクラッシュしていることが判明。

で、こういう場合のお約束として下記の修正を実行したところ、あっさり表示出来るようになりました。

1
2
3
4
5
6
7
8
9
10
11
--- a/app/views/tree/_tree_item.html.haml
+++ b/app/views/tree/_tree_item.html.haml
@@ -1,7 +1,7 @@
 %tr{ class: "tree-item #{tree_hex_class(tree_item)}" }
   %td.tree-item-file-name
     = tree_icon(type)
-    %strong= link_to truncate(tree_item.name, length: 40), project_tree_path(@project, tree_join(@id || @commit.id, tree_item.name))
+    %strong= link_to truncate(tree_item.name, length: 40), project_tree_path(@project, tree_join(@id || @commit.id, tree_item.name.force_encoding('UTF-8')))
   %td.tree_time_ago.cgray
     %span.log_loading.hide
       Loading commit data...

困っている方はお試しあれ。

それにしてもruby 1.9は.force_encoding('UTF-8')をやらないとまともに文字列を扱えないことが多くて面倒な感じがします。

型とかガチガチに処理するような言語じゃないのだから、エンコードについてももっと上手く暗黙的に処理して欲しいものです。

Posted by Takuchan at 22:44 | コメント (0) | TrackBack (0)

2012年05月20日

GitLabで日本語ファイル名のソース表示

最近git環境の構築を頑張っていますが、ちょうどいいタイミングでmsysGitやTortoiseGITの日本語ファイル名対応が始まったので、Windowsにも本格的にGit環境を構築始めました。

現在の環境はこんな感じです。

プロンプトConsole2 + 日本語入力パッチ適用済みバイナリ
シェルNYAOS
gitmsysGit
サーバ側GitLab + gitolite

正直Windows側もサーバ側も構築は一筋縄ではいかないので、まだまだおすすめできませんが、上記をうまいこと設定できるとUTF-8で統一できている限り、日本語が通るGit環境が構築できます。

ただし、テストしていて気になったのが、GitLabで日本語ファイル名のソースコードが表示されない点。

すでにバグとして報告されていますが、

ソースを追ったところ、利用しているgrit側の問題っぽい気がしています。

続きを読む "GitLabで日本語ファイル名のソース表示"

Posted by Takuchan at 09:38 | コメント (0) | TrackBack (0)

2011年10月09日

CyberPower CP750SWLT

QNAP TS-559 Pro IIを数ヶ月前から利用しているのですが、現在利用しているUPSのOMRON BX50Fでは自動シャットダウンができません。

実は、今まで利用していたサーバも自動シャットダウンは対応していなかったのですが、ディスク単発利用で電源が落ちたら自動で死ぬのはしょうがないと諦めていまた。

しかし、QNAPはソフトウェアRAIDで今回はRAID6で運用しているため、シャットダウンせずに電源が落ちるとRAIDが壊れてデータ全損の可能性があります。

また、OMRON BX50Fは正弦波出力ではないためか、バッテリーテストで矩形波出力になった際にQNAPの電源付近から異音が聞こえてめちゃくちゃ心臓に悪いため、今回UPSを買い足しました。

それが、これ↓

2011100800.jpg

QNAPのUPS互換性リストには有りませんが、CyberPower SystemsはQNAPと同じく台湾メーカーで、同社のUPSの他のモデルがガンガン登録されているためこちらも大丈夫だろうと今回購入に踏み切りました。

結果、
2011100802.jpg
あっさり認識されました。

続きを読む "CyberPower CP750SWLT"
Posted by Takuchan at 00:29 | コメント (0) | TrackBack (0)

2011年10月04日

スライディング裸族

最近バックアップ先としてHDDを利用するようになり、HDDの入れ替えを頻繁に行うようになりました。

これまでは、楽ラックで利用していたのですが、SATAだとライトキャッシュが効いてしまい、結構ホットスワップに失敗することがあり、電源を落とした状態でなければ安心して入れ替えられないのが難点でした。

また、ディスク間のファイル移動も一度ローカルにファイルを置く必要があり、効率化のために今回

を買ってみました。

このハード、裸族のお立ち台系を単に横にしただけなのですが、再三の地震に悩まされている現状ではHDDを立たせて書きこませるというのはどうしても怖くて、これまで購入を見送っていた私にはまさに「待ってました」という商品です。

で、届いたので、早速ベンチマークして見ました。

2011100400.jpg

続きを読む "スライディング裸族"
Posted by Takuchan at 23:04 | コメント (0) | TrackBack (0)

2011年05月11日

ESXi4.1でUSBインストールの余り領域を使う

VMware ESXiをUSBメモリにインストールする際には2GBもあればいいのですが、そのぐらいのサイズのUSBメモリは最近は入手がしにくく、結局4GBや8GBのUSBメモリを使うハメになります。

しかし、実際に使われる領域は1GB程度なのでそれ以外のUSBメモリの領域は空き領域として無駄になります。

まぁ、ここでVMFS3とかでフォーマット出来ればいいのですが、少なくてもESXi 4.1 Update1ではUSBメモリの空き領域をVMFSでフォーマットすることは出来ません。

(vSphireClientから見えないのはもちろん、sshからmkfstoolsで-C vmfs3してもvmkernel is not loaded or call not implemented. とか言うエラーで失敗します。)

じゃぁ、他のPCで空き領域にパーテーションを作成→フォーマットしてそれをmountコマンドで認識させようとしても、今度は「No such device」というエラーで失敗します。
(ちなみに、/homeの下などでは、上記のエラー以前にNo such file or directory.等と言われます。)

これは、ESXiが下記のコメントのように一部のフォーマットにしか対応していないためです。

「FATならOKなのね」と普通にFATでフォーマットしてもこれまた認識しません。

なぜなら、ESXiで認識出来るのはFAT16(最大1パーティーション4GBまで)なので、自分でフォーマットする場合にFAT16になるように意識しないとダメになります。

また、ESXiをUSBメモリにインストールをするとかなり変なパーテーショニングをされてしまうため、Windowsからパーテーションの操作をすると設定がおかしくなります。(と言うかなりました(^^;)

なので、Windows PCしかない人はUbuntuのライブCD等でLinuxを起動してから作業を行ってください。
(ESXiのbusybox環境にはfdiskはありますがmkfsコマンド自体が無いのでこの作業には必ずLinuxが必要です)

続きを読む "ESXi4.1でUSBインストールの余り領域を使う"
Posted by Takuchan at 00:20 | コメント (0) | TrackBack (0)

2011年05月09日

ESXi4.xでデータストアが削除出来ない場合

と言うVMware ESXiでのATF最適化の英文記事をみて、試してみようと思ったのですが、vSphireClientのホストの「構成」タブ→「ストレージ」から既存のデータストアを削除しようとすると。
エラー:リソース 'hogehoge' は使用中です。 エラー スタック ESXi「xxx.xxx.xxx.xxx」で オブジェクト「ha-datastoresystem」の「HostDatastoreSystem.RemoveDatastore」 の呼び出しが失敗しました。
なんて言うエラーで怒られてしまいました。

それなら、SSHから削除すればいいかと、fdiskで「d」してみても消えない。

で、時々busyのようなエラーがあったので調べてみたら、どうもESXi上の「/scratch」のリンク先になっているところは消せない仕様のようです。

で、/scratchの変更方法ですが、以下の通りです。

続きを読む "ESXi4.xでデータストアが削除出来ない場合"
Posted by Takuchan at 23:08 | コメント (0) | TrackBack (0)

2011年05月04日

パーティショニング2011

久々にゼロから趣味でサーバの構築をするので、パーティーション構成を考えてみたのですが、どうやれば今時のパーティーショニングができるかなかなか悩ましいモノです。

たとえば、openSUSEのデフォルトだと「/」「/home」「swap」の3パーティションしか分割しないようですし、近年ではLVMという選択肢もあるため、考え始めると意外と悩んでしまいました。

で、今回どういう理屈でパーテーションを切るのかメモがわりにまとめておこうと思います。

まず、今回構築するのはVMware上でRAIDを組んでいない空き容量にはかなり余裕があるS-ATAディスク領域です。
上手いこと構築が進めば数年利用するサーバになる予定です。

ディスク領域が厳しい場合や、用途が不明瞭な場合には「/」のワンパーテーションというのも有りですが、今回は割と用途も決まっているため、一応の分割はします。

また、マシン全体が仮想化されていない場合(特に信頼性のあるRAIDストレージに直接インストールする場合)にはLVMを使うと、オンラインで後から各パーテーションの容量を動的に増やせたり、スナップショットが取れたりと大きなメリットがありますが、LVMには障害発生時にデータ復旧が難しくなると言うデメリットがあるため、利用範囲は限定的にしようと思います。

ただ、LVM無しで一つの仮想ディスクに複数のパーテーションを切ってしまうと、その仮想ディスク内で最後に追加したパーテーションしか安定的に拡張できなくなってしまうため、1ドライブ1パーテーションで対応します。
(複数マウントポイント表記をしている物は領域の一部をbindしてマウントさせます。)

また、/bootは以前はLILOの制限などでディスクの先頭から一定の容量に無ければ動きませんでしたが、今は殆ど気にしなくていいはずなので、システム領域と一緒にします。

それから、swap用の領域はそのうち別の物理ドライブに置いたりするかも知れないので、専用の仮想ドライブにしておきます。

続きを読む "パーティショニング2011"
Posted by Takuchan at 16:01 | コメント (0) | TrackBack (0)

2011年05月01日

少々被災してました

2011年03月11日(金)の東日本大震災で、仙台にて見事に被災していました。

と言っても海沿いではないので、実質困ったのは2週間程度ですが。

とはいえ、近代日本では初めての広域被災だったため、色々と苦労はしました。

まず避難所に居ない人の所にはなんの助けも来ないこと。

うちは幸いにも家も無事だったので自宅にいましたが、何もしなくてももらえたモノは町内会の人が炊き出しした小さなおにぎり二つだけ。

どんな事態でも3日堪えられれば何とかなると思っていましたが、今回の震災については、堪えているだけではどうにもなりませんでした。

能動的に動き回れば、炊き出しとか仮設給水とかはあったみたいですが、うちみたいに近所付き合いをおろそかにしている家にはかなり厳しい感じでした。

近所付き合いが希薄でも、仙台はなんだかんだ言っても田舎なので、それなりに上手いこと行きましたが、首都圏で同じ事になったら暴動必至な気がします。

また、コンビニは初日に在庫放出してそれっきりですし、大手スーパーは何処も数時間待ちで日中のみの営業。

うちは、幸いにもそれなりに物資があったので奔走しませんでしたが、家に物が無い状態で地震にあったら、まず、コンビニで物資を買っておくのが良いと思います。
(初動が遅れれば遅れるほど物資の入手は困難になります)

で、インフラ関連で困ったのがまず電気。

電気=情報の現代において停電になると情報が入手できなくて身動きが取れなくなります。

まぁ、ラジオとかワンセグとか情報を入手する手段はあるのですが、ラジオは当初地元向けの情報少なかったですし、ワンセグは言わずもがな。L字テロップはそれなりに役立つ情報もありましたが、ワンセグでは字が小さくてとにかく読みにくい。
いったん制止するタイプのテロップはまだイイですが、流れ続けるタイプは殆ど修行です。

携帯は地震後すぐは使えましたが、夜には使えなくなって、次につながるようになったのは3日後ぐらい。
使えるのもパケット通信だけで、それもかなり遠くのアンテナを捕まえているようで、1時間でIS03の電池が満充電から40%に減るぐらい急激に電池が減るので、基本的にケータイは電源OFFにしなければやっていけませんでした。

また、夜は全くの暗闇なのですが、幸いにもLEDライトを何本か持っていたため、そんなに困りませんでした。
(豆電球系は燃費も電球自体の寿命も短いため、震災ではLEDライトが有利でした)

ただ、地震で部屋の中がかなりシャッフルされるので、ライト類は置き場を分散して、なるべく壁からぶら下げて置くか、引き出しの中に入れておいた方が見つけやすいと思います。
(ベッドサイドに置いていたヤツは落ち着いてからあり得ないような場所から発掘されましたし)

まぁ、4日とちょっとで電気が復旧したのでそれ以後は情報も明かりも手に入るようになりましたが、それまではこちらで買いだめしてあったeneloopとモバイルスティックブースターがあったのでなんとか持ちこたえることが出来ました。
(4日目の段階で半分ぐらい使い込んでいたので買い増ししてなかったらと思うとぞっとします)

続きを読む "少々被災してました"
Posted by Takuchan at 21:39 | コメント (0) | TrackBack (0)

2011年01月27日

Windows7でUSB-HDDが使いにくい

メイン機のOSをWindows7に変えて一番困っているのがUSB-HDDのOS上での存在が、凄く弱くなったこと。

現在、USB-HDDを3台ほぼ固定ディスクとして利用していますが、これらのファイルを消してもゴミ箱にファイルが登録されません。
(ただし「元に戻す」ではファイルが戻るのでどこかにはありそう)

また、もう一つ困っている点としてUSB-HDD上のフォルダを共有設定しておくと、再起動後に時々解除されてしまうこと。
(いつもではありません)

前者については仕様なのか、設定が悪いのか謎なのですが、後者についてはおそらく、Windows7のブートの仕組みが関係していると思われます。

Windows7になってとりあえず困っているほかの点として、ログオン画面が出ても1分近くマウスカーソルが動かせない時が結構あります。

どうも、Windows7ではUSB機器の認識が終わって無くてもOSは普通に起動してしまうようです。
(Windows XP時代には発生したことがないので、構成が前回終了時と一緒ならログオン画面では全て認識していたと思います)

そのため、USB-HDDが無い状態で起動してしまい、対象がないため共有設定が削除されてしまっているのではないかと思います。

続きを読む "Windows7でUSB-HDDが使いにくい"

Posted by Takuchan at 23:41 | コメント (0) | TrackBack (0)