USBプリントサーバでプリンタ共有

会社の事務所のプリンタ(brother HL-5250DN)はコンパクトなレーザープリンタ,しかもネットワーク対応で,両面印刷までできる!
複数人がシェアして使うので非常に重宝してます.

一方,自宅のプリンタ(brother HL-2140)はUSBのみ対応.自分とヨメが交互にUSBを抜き差しして使ってます.
プリンタ共有でもすればいいんですが,ノートPCを使っているのでUSB繋ぎっぱなしはイヤ.
常時起動しているLinuxのPCもありますが,こちらはプリンタの置き場から遠いため断念.

昔使ってたプリンタ(OKI microline 8uw)はセントロ端子があったので中古のプリントサーバを繋げて使ってました.
しかしUSB対応のプリントサーバとなるとなかなか無い.

最近たくさん出ているメディアサーバになる小型の箱や家庭用ルータの機能でUSB機器をシェアというのもあるのですが,こちらはネットワーク上でUSB機器を擬似的に繋ぐもので,ソフトウェア的な抜き差しが発生して面倒です(自動でやってくれるソフトも付属してますが…).

という中,たまたま見つけたのがBUFFALO USBデバイスサーバー LDV-2UH
珍しくUSBのシェアリング以外にプリントサーバ機能がついてます.

秋葉原で購入(あとで見たらamazonのほうが2千円近く安かったよ…),帰宅中の電車内でマニュアルをチェックしようと思ったら簡易マニュアルのみ付属.プリントサーバの設定については書いてない.
Androidタブレットでpdfを落としてきて見ると,webインターフェースあり,初期設定ではIPがDHCPで決定とのこと.
このDHCPでのIPを探すために専用クライアントを入れろ等と書いてあるので,当然従わず.
AndroidのFingというソフトでLAN内の端末を調べると,buffaloの機器が見つかりましたので,そちらにブラウザでアクセス.管理画面からささっと固定IPに設定.

あとはPC側でTCP/IPポートを作成して指定してやるだけです.RawもLPRも使えます.
プリンタやプリントサーバでありがちな64bit非対応もうちの組み合わせではナシ.

最初からネットワーク対応のHL-5xxxを買って2万円,一段安いHL-2xxxが1万2千円程度.プリントサーバが5千円となると,最初から5xxxを買った方が良いかもしれないですが,家庭用だとデカいです.
うちの2xxxはもらい物だったので5k円の追加でもアリですが…
そもそもLinux機とプリンタの位置を再考してcupsで共有すれば金かかってないよね…

しかしUSBプリントサーバは少ないので重宝しますなー.
中小オフィスのプリンタ環境改善に,一つの選択肢ということで.


LPV3-U2Sはドライバの64bit対応が微妙なようですが,TCP/IPポート経由で共有すれば問題なさげ.

PHP4でPEARがコケる対策

何で今更PHP4なのよ…と言われましてもね,そういう環境もあるのよ…

で,適当にPEAR upgradeしていたらある時点から

PHP Parse error: parse error, unexpected ‘(‘, expecting ‘}’ in /usr/share/pear/PEAR/Installer.php on line 811

などと言われて失敗します.
PEAR/Installer.phpなんだからこれが更新された時点でしょうなー.

該当行を見ると

$this->log(3, “file $data[0] was scheduled for removal from {$this->pkginfo->getName()} but is owned by {$new->getChannel()}/{$new->getName()}, removal has been cancelled.”);

となっています.

PHP4だとダブルクォートの中にオブジェクト->メソッドが書けないんでしたっけ(?).そのへんでひっかかってるように見えます.
個人的にもダブルクォート内に変数をそのまま書くのはあんまり好きじゃないですし,今回はエラー回避のためにもこれを書き換えちゃいます.

$this->log(3, “file “.$data[0].” was scheduled for removal from “.$this->pkginfo->getName().” but is owned by “.$new->getChannel().”/”.$new->getName().”, removal has been cancelled.”);

ダブルクォートが入り乱れて読みにくくはなりますが,これでエラーは出なくなります.

他にもあったらエンドレス修正かー?と思いましたが,とりあえず今回の環境ではこれ以上はありませんでした.

AndroidのブラウザでHTTP_REFERERが送られてこない?

webプログラムでHTTP_REFERERを取得したいという話があったんですが,Androidの標準ブラウザからREFERERが送られてこないという現象がありました.
いわゆるガラケー時代にはREFERERが送られてこない端末なんて普通だったんで,まぁAndroidでもそういうのがあるのかしら?なんて思いましたが,どうやら違うようです.

「デフォルトで使用するブラウザ」が決まっていないとHTTP_REFERERが送られてきません.
原因についてははっきりとした資料を当たってないのですが,下記のように推測.

Android端末に標準以外にFirefoxやらOperaやらのブラウザを入れると,webサイトでページを移動する度に「アプリケーションを選択」という画面が出てきます.

おそらく内部的には毎回「URLを開く」というインテントが動くので,通常のブラウザ内での移動とは異なり,毎度毎度新規にURLを開いている扱いになるのだろうなぁと思います.
「常にこの操作で使用する」をチェックしてデフォルトのブラウザを決めてあげると,ちゃんとHTTP_REFERERが送られてきます.

まぁそうでなくてもHTTP_REFERERなんて偽装できちゃうもんだしアテにできないのですけどね.

書いてて思ったけど,cookieでセッション情報を保持している場合,途中でブラウザを変えちゃったらセッションの継続ができないよなぁ.
一般的な他のwebサービスとかだとそのへんは保証外にしてるんだろうなぁ.もしくはガラケーよろしくGETパラメータで引渡か…

Smartyでescapeができなくなる

PHP+Smarty環境のこと.

通常通りSmartyで {$hoge|escape} を書いたらwarningが出るように.

PHP Warning: htmlspecialchars() expects at most 3 parameters, 4 given

おそらくエラーを表示しないようにしてる場合はescape修飾子がついたところで文字が出力されなくなるはず.

Smartyは3.1.7,PHPは…あれこのサーバ5.1じゃないの.
SmartyのほうでPHP5.2以降対応って書いてあるし,htmlspecialcharsのパラメータが4つになったのは5.2.3からみたいです.

PHP: htmlspecialchars – Manual

そんなわけでPHPの入れ替えをして解決.
まだPHP5.1.xのサーバは多いですからね…要注意.

CentOS6でYour BIOS is brokenと言われる

NEC Express5800 GT110bにCentOS6を導入.
色々とテスト.

・haltしてもリブートしちゃう.
→Wake On LANを切ればいいらしいが,どうせ電源入れっぱなしで落とすことは無いしどっちでもいいやー

・Your BIOS is brokenとか言われる
→起動時に intel_iommu=off をつけると回避できるっぽい.Intel VTとIO関連か.
しかしこれも特に実害はないような?(仮想化使ってないし)
続きを読む