カテゴリー「Web」の記事

CyberPower製のUPSを複数台使う

CyberPower製のUPSを複数台使っているが、この管理ソフト「PowerPanel Business Edition」のagentが複数のUPSを同時に扱えないようなので KVMゲスト側にUSBを接続して、ホスト側に管理サーバ (center)を設置する事で対処。

ただし、virt-manager上でぽちぽちとUSBデバイスとして追加すると、マシン再起動でホスト側のUSBのバス番号がずれてしまうためUPSを見失う悲しい状況なので、代わりにUSBリダイレクター機能を利用する。

環境

ホストOS、ゲストOSとも Ubuntu 16.04を利用。
KVM利用。 CyberPower製のUPSを利用。

UPS制御アプリのインストール

管理ソフトであるPowerPanel Business EditionをホストOS、ゲストOSに各々インストール。
ホスト側にcenter, ゲスト側にagent機能をインストールする。

ゲストOS側にて TCP, UDPともに、port 3052/53568をホストOS側で接続出来るようにufwに設定追加

ホスト側設定

USBリダイレクターのSystemd定義を以下から拝借。

[https://github.com/kvaps/usbredirtools]

/etc/udev/rules.d/99-usb-ups.rules

SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="0764", ATTR{serial}=="(UPSのシリアル番号1台目)", RUN+="/bin/bash -c 'PORT=3000; echo -e BUS=%s{busnum}\\nDEV=%s{devnum} > /var/lib/usbredirserver/$PORT; systemctl restart usbredirserver@$PORT'"
SUBSYSTEM=="usb", ATTR{idProduct}=="0601", ATTR{idVendor}=="0764", ATTR{serial}=="(UPSのシリアル番号2台目)", RUN+="/bin/bash -c 'PORT=3001; echo -e BUS=%s{busnum}\\nDEV=%s{devnum} > /var/lib/usbredirserver/$PORT; systemctl restart usbredirserver@$PORT'"

あとは、

udevadm control --reload
udevadm trigger --subsystem-match=usb
netstat -anp | grep LISTEN

でUSBリダイレクターが起動していることを確認

ゲスト側設定

こんな感じの設定を追加

<redirdev bus='usb' type='tcp'>
<source mode='connect' host='(ホストOS側IPアドレス)' service='(USBリダイレクター ポート番号)'/>
<protocol type='raw'/>
<alias name='redir0'/> </redirdev>

起動後、lsusbで参照できることを確認

todoistの表示がおかしかったら

最近、todoistのWebページやMacアプリを表示すると画面が崩れる現象が発生。 原因は、DNSとして使っているSymantecさんのNorton ConnectSafeとAmazonのcloudfront (todoistが使っているCDN)の相性問題だった。

nslookupで見たところ、cloudfront.netのIPアドレスが近くのサーバではなくアクセス出来ないサーバを指しているようだった。 対処として、cloudfront.netドメインは利用プロバイダのDNSを参照するように設定変更して問題解消。

gistの一覧が消滅したので ... : 自分のpublic gist一覧備忘録

今日、ふと自分のpublic gistの一覧を見ると
"no public gists" などと表示されデータが消滅していた ....

((;゚Д゚)ガクガクブルブル 

GitHub に連絡したら直して頂けましたが、また一覧が消えると困るので
このページにリンク貼っておきます。


(9/24 更新)


1. 汎用的なRuby Snippet

ネストした Array, Hash に対する stringify_keys

ActiveSupport の Hash#stringify_keys の拡張。

liquid をテンプレートとして使っているのですが、
パラメータのキーが Symbol だとNGなので、 Hash#stringify_keys で変換してます。
しかし、入れ子構造な Array, Hash の形式になっている場合、
枝のデータまで面倒見てくれないので拡張しました。

IPアドレス判定

あらかじめ作成したIPアドレス一覧に所定のIPアドレスが含まれるかチェックします。

IPアドレスをキーとした制御変更したいときに判定したり、
HerokuなどSaaS系での「簡易的な」IPフィルタリングなどに利用できるかと思います。

HTML 文字実体参照への変換

数値実体参照への変換は CGI#escapeHTML などありますが、
文字実体参照への変換が見つからなかったので作りました。
変換規則は別ファイルになっています。

なぜCGIクラスでなくStringクラスの拡張なのかというと、
作ったときの使い道が原因なので、特に深い理由はありません。


2. Sinatra向け

エラー発生時にprowlに通知

システムエラーが発生したときに即座に検知出来る様に
Prowl に通知を投げてます。
(他、SSH ログイン時などの管理系でもProwlを利用してます)

あくまで通知目的であるため、 Prowl にはエラータイトルのみ転送しています。

Sinatra::Contrib ConfigFile 拡張

Webアプリの設定ファイルを ConfigFile で読み込んでいるのですが、
この設定ファイルの書き方に癖があり、 RACK_ENV 毎に同じ設定値のものでも
重複して書かないとだめだったりします。
この拡張は、そのフォーマットをちょっと書き換えたバージョンです。
(フォーマット詳細は、gist参照)

ちなみにConfigFileですが、rubyforge版はERB書式への対応機能が含まれていないため、
GitHubのレポジトリ版を使った方が良いかと思います。


3. 変換ツール系

ifunboxの文字化け解消

あるディレクトリ配下のファイル名についてNFDからNFCに変換するツールです。

iphoneをMacOSでフォーマットしたからだと思いますが、
Unicodeの正規化がNFDになってしまい、一時的なファイル格納として
ifunboxを利用した場合困ったことになったので作りました。

かなり昔に作ったものなので、Cygwinのシェルをターゲットで実装してます。
別途 nkf.exe が必要です。

icloudに格納したメモをダウンロード

iphoneのメモ帳をicloudに送信する設定にしているのですが、いちいちweb版のicloudで
取り出すのが面倒なので、一気にダウンロードしてしまおうというスクリプトです。

応用として、削除してしまったメモを復活できたりもできました。

アウトラインプロセッサ用フォーマット変換 :
Outliner → AUTLA, AUTLA → Outliner

Windows で、アウトラインプロセッサ AUTLA を使っているのですが、
AUTLAのファイルをAndroidでそのまま読めるアプリが無いので、個人的に気に入っている
Outlinerのフォーマット(bonsai CSV)に相互変換するスクリプトです。

Google Readerのstar一覧抽出

starのデータをiftttでInstapaperに送っているのですが、
iftttに設定前に蓄積した情報がiftttの対象にならないため、移行ツールの前段として作ったものです。

昔は、単純なstarのURL一覧をgoogleからExport出来たのですが、
今は小難しいフォーマットでの提供のみとなったので簡単な一覧に変換するツールです。

diigoのbookmarkをInstapaperにぶち込む

以前、read leter用としてdiigoを使っていたのですが
Instapaperにデータ移行することになったために作成したスクリプトです。


[Instapaper 文字化け修正ツール] 修正対象ブックマーク数の変更方法

そういえば、instapaperに一杯放り込む人向けに
修正ツールに変更加えてます。

https://correct.herokuapp.com/?size=400
のように指定すると、read leterの修正チェックの対象範囲が直近400件に拡大します。
(標準では直近100件まで)

100 件にしているのはシステムの負荷の都合なので、
初回だけの利用とかでお願いします。
なお、Instapaper APIの都合によりsizeの最大値は500件までです。

[bootstrap] 個人用) デザインフロー備忘録

・CSSデザイン

1. 全体的な雰囲気、色使いの決定

http://bootswatch.com/http://kuler.adobe.com/で確認

2. CSS生成

http://stylebootstrap.info/
で書き換えたい部分を変更しながら修正
最後に"Get unique page for this style"
→ CSS保存とともに、URLをひかえておく


・ HTMLデザイン

http://jetstrap.com/build
で画面の必要なコンポネントを並べる。
なお、再読み込みとかで作業中の内容が簡単に消えてしまうので、
ざっとした配置を決める程度でIDとか作り込みをしない方が吉。

作り終わったら"Export" → "Download .zip"

※ CSS読み込み出来るが、Exportには反映されない模様


・ くみ上げ(モック作成)

1. jetstrap.com でダウンロードしたzipを解凍

2. http://twitter.github.com/bootstrap/よりダウンロードした
最新のbootstrapをassets配下と差し替え

3. 上記「CSSデザイン」で作成したbootstrap.cssファイルをassets/cssディレクトリにいれる。
なお、不一致となるためbootstrap.min.cssは削除。
また、bootstrap 2.1.1とは以下の差分が発生するため必要なら書き換える。


.table tbody tr.warning td {
background-color: #fcf8e3;
}
.table-hover tbody tr.success:hover td {
background-color: #d0e9c6;
}
.table-hover tbody tr.error:hover td {
background-color: #ebcccc;
}
.table-hover tbody tr.warning:hover td {
background-color: #faf2cc;
}
.table-hover tbody tr.info:hover td {
background-color: #c4e3f3;
}

4. apacheとかにいれて確認しつつ、Javascript組み込むなど直接HTMLをいじって完成
→ 実際のサイトは、このモックをliquidファイル化にして、ほぼそのまま利用

2016年10月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

ついったー

無料ブログはココログ