2017年10月29日日曜日

NASのプリントサーバ機能をLinuxから使うのだ

以前、ここで示したプリンタ CANON LBP-1310を今でも使っている。
プリンタは母艦に接続してあり、ノートPCで印刷するときは、PDF化してから母艦にssh等で転送して印刷していた。
それでもあまり不便を感じていなかったが、NASにプリントサーバの機能があるんだから使ってみようと思った。

いきなりノートPCからNASに接続されているプリンタへ、ネットワークから印刷するのは、挑戦的なことが多すぎる。
順番に1つずつやっていく事にした。

USBでローカル接続して印刷できることを確認する
まずは、ノートPCのプリンタドライバその他が機能することを確認しておいたほうが良い。
実は、この作業はだいぶ前にやっていて、どうやったか具体的な事は、忘れてしまった。
過去に調べた内容を参考に作業したので、手動だったはずだ。
また、多くのUbuntu系は、デフォルトでCUPSが入っているが、Lubuntuには入っておらず、いろいろインストールするのに苦労したと記憶している。
ドライバのダウンロード場所: LIPS4 Printer Driver for Linux Ver.3.40(32bit & 64bit)
上記から、linux-lips4-drv-v340-jp.tar.gzをダウンロードして、展開するといろいろなファイルが入っている。
drwxrwxr-x devel/devel       0 2017-07-07 00:00 linux-lips4-drv-v340-jp/
drwxrwxr-x devel/devel       0 2017-07-07 00:00 linux-lips4-drv-v340-jp/Documents/
-rw-r--r-- devel/devel   86793 2017-07-07 00:00 linux-lips4-drv-v340-jp/Documents/README-lips4-3.4x.html
-rw-r--r-- devel/devel   27592 2017-07-07 00:00 linux-lips4-drv-v340-jp/Documents/LICENSE-JP.txt
-rw-r--r-- devel/devel  701906 2017-07-07 00:00 linux-lips4-drv-v340-jp/Documents/guide-lips4-3.4x.tar.gz
drwxrwxr-x devel/devel       0 2017-07-07 00:00 linux-lips4-drv-v340-jp/Sources/
-rw-rw-r-- devel/devel 20578343 2017-07-07 00:00 linux-lips4-drv-v340-jp/Sources/cndrvcups-common-3.80-1.tar.gz
-rw-rw-r-- devel/devel   616361 2017-07-07 00:00 linux-lips4-drv-v340-jp/Sources/cndrvcups-lips4-3.40-1.tar.gz
-rw-rw-r-- devel/devel   157057 2017-07-07 00:00 linux-lips4-drv-v340-jp/Sources/cndrvcups-utility-1.00-1.tar.gz
drwxrwxr-x devel/devel        0 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/
-rw-r--r-- devel/devel     1979 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_ko_utf8.lc
-rw-r--r-- devel/devel     1974 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_es_utf8.lc
-rw-r--r-- devel/devel     2065 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_de_utf8.lc
-rw-r--r-- devel/devel     2134 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_ja_utf8.lc
-rw-r--r-- devel/devel     1696 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_zh_CN_utf8.lc
-rw-r--r-- devel/devel     2022 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_it_utf8.lc
-rw-r--r-- devel/devel     2055 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_fr_utf8.lc
-rw-r--r-- devel/devel     1693 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_zh_TW_utf8.lc
-rw-r--r-- devel/devel     1875 2017-07-07 00:00 linux-lips4-drv-v340-jp/resources/installer_en_utr8.lc
drwxrwxr-x devel/devel        0 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/
drwxrwxr-x devel/devel        0 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/RPM/
-rw-r--r-- devel/devel   851343 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/RPM/cndrvcups-lips4-3.40-1.i386.rpm
-rw-r--r-- devel/devel 18607739 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/RPM/cndrvcups-common-3.80-1.i386.rpm
-rw-r--r-- devel/devel    61872 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/RPM/cndrvcups-utility-1.00-1.i386.rpm
drwxrwxr-x devel/devel        0 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/Debian/
-rw-r--r-- devel/devel   585514 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/Debian/cndrvcups-lips4_3.40-1_i386.deb
-rw-r--r-- devel/devel   132182 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/Debian/cndrvcups-utility_1.00-1_i386.deb
-rw-r--r-- devel/devel 18619996 2017-07-07 00:00 linux-lips4-drv-v340-jp/32-bit_Driver/Debian/cndrvcups-common_3.80-1_i386.deb
-rwxr-xr-x devel/devel    12776 2017-07-07 00:00 linux-lips4-drv-v340-jp/install.sh
drwxrwxr-x devel/devel        0 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/
drwxrwxr-x devel/devel        0 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/RPM/
-rw-r--r-- devel/devel    62549 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/RPM/cndrvcups-utility-1.00-1.x86_64.rpm
-rw-r--r-- devel/devel   878504 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/RPM/cndrvcups-lips4-3.40-1.x86_64.rpm
-rw-r--r-- devel/devel 18612741 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/RPM/cndrvcups-common-3.80-1.x86_64.rpm
drwxrwxr-x devel/devel        0 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/Debian/
-rw-r--r-- devel/devel 18626652 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/Debian/cndrvcups-common_3.80-1_amd64.deb
-rw-r--r-- devel/devel   595000 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/Debian/cndrvcups-lips4_3.40-1_amd64.deb
-rw-r--r-- devel/devel   132120 2017-07-07 00:00 linux-lips4-drv-v340-jp/64-bit_Driver/Debian/cndrvcups-utility_1.00-1_amd64.deb
install.shを実行すれば、うまく行ったように記憶している。
何気に重要だったのは、linux-lips4-drv-v340-jp/Documents/README-lips4-3.4x.html だ。
以前も自分のプリンタ用のドライバがどれか解り難かったが、今でもわかりにくい。

とにかくウチのプリンタ、LBP-1310は CNCUPSLBPSERIESLJ.ppd(以前と同じ)であることは間違いないが、謎の事が書いてある。
共通で使用できるドライバ
ドライバの印刷設定画面[デバイス設定]ページで、機種に対応する[デバイスの種類]を設定して使用してください。機種名の先頭にある[X]が[デバイスの種類]で設定する値を示しています。
この「機種名の先頭にある[X]が...」が、うちのプリンタ LBP-1310の場合、2 であることはわかるのだが、「設定してください」って言われても、どこで? 同文書内には、それ以上書の事はかれていない。
これは、linux-lips4-drv-v340-jp/Documents/guide-lips4-3.4x.tar.gz を展開した文書内に、書かれていたのだった。
(しかし、こっちの文書には、選択すべきドライバや、ドライバの種類に入力する数字が書いてない)
index.htmlをブラウザで開いて、「ドライバUIからの印刷設定」「[デバイス設定]ページ」と進むと、その「デバイスの種類」を入力する場所が書かれている。
ドライバインストール、および設定後に、cngplpコマンドを実行して、このデバイスの種類を2にセットする。

さすがにこの件については、メモが残されていた。
全部設定したら、テスト印刷をして動作の確認をする。


NASでプリントサーバを起動する
ウチではBuffaloのNASを使っている。WindowsPCではないので、管理アプリは使えないので、ブラウザから入って、プリントサーバをONにする。


他に設定するところはないし、NASの説明書を読んでも、それ以上の事は書いていない。
ここから先はどうやるんだ?

いよいよネットワーク経由で印刷する
ネットワークでプリンタを共有するにはいくつかの方法がある。
このNASの共有方法が、どうなのかがわからない。もちろん、上記でも示したが、説明書にも書いてない。

どうしたものかなどと悩んでいてもしょうがない。NASなんだからSMBじゃないかと考えて、"smbclient -L "で見ると、"lp"という名前でプリンタが見える。
$ smbclient -L XXX.XXX.XXX.XXX
WARNING: The "syslog" option is deprecated Enter xxxxxxx's password: Domain=[XXXXXX] OS=[Unix] Server=[Samba 3.6.XX-XX.xxxxxxx] Sharename Type Comment --------- ---- ------- lp Printer Network Printer for Windows info Disk LinkStation Utilities share Disk LinkStation folder IPC$ IPC IPC Service (LinkStation) : : (省略) :
(一部伏せ字)

というわけで、少なくともSMBでの共有ができるようだ。
また、その時の資源名も"lp"であることがわかった。

ネットワークプリンタの設定は、GUIでやってみる。
[システムツール]->[プリンター]でプリンタダイアログを表示して、「+追加」をクリックする。
「新しいプリンタ」ダイアログが表示される。
以下のように、IPアドレスと共有資源の名前を入力する。共有資源の名前は、上記のように"lp"だ。

2019年06月13日追記:
smbclientパッケージがインストールされていないと、「Samba経由のWindowsプリンタ」は表示されない。
表示されない場合、端末エミュレータから、以下を入力して、smbclientパッケージをインストールして、やり直せ。
sudo apt-get install smbclient

xxx.xxx.xxx.xxxは、IPアドレスをセットする。
「進む」ボタンを押す。

すると、次はドライバの選択になる
ここでは、"Canon"を選ぶ。

「進む」ボタンを押す。

ドライバがずらっと表示されるので、下の方の"LBP Black and White LIPS4"を選ぶ。
何を選べば良いのか極めてわかりにくいが、/usr/share/cups/model/CNCUPSLBPSERIESLJ.ppdの中身を見ると、"LBP Black and White LIPS4"であることがわかる。

「進む」ボタンを押す。

「インストール可能なオプション」が表示されるが、ウチのLBP-1310にはオプションを何もつけていないので、何もしないで「進む」ボタンをクリック。



「プリンタの説明」が表示されるので、それぞれの欄に適当に入力して、「適用」をクリックすると、登録が終わる。


これで、NAS経由でのプリンタの登録は終わり。
テスト印刷をしてみると、印刷できた。

NASもプリンタも、説明が少なすぎて、とてもわかりにくかった。
そもそも、プリンタの設定方法も、多すぎる。
コマンドラインとGUIがあり、webI/Fでの設定もある。プリントサーバはヘッドレスの場合もあるので、コマンドラインやwebI/Fを用意しなければならないし、一般的にはGUIが好まれるだろう。
設定方法が様々になってしまうのは、やむを得ないことだ。

CUPSのおかげでとても便利になったが、それでもまだまだわかりにくい。
これからも、うまく行ったらメモをとっておかないと。
印刷して残しておくかな。
2017/11/03 誤字修正と、引用文をスクロールするようにした。

2017/11/22 各章の小さい見出しを<h2>で書いていたが、<font><b>で書きなおした。
元々は記事の文字より少し大きい程度の明朝体のようなフォント(Timesが指定されていたが、実際の表示はブラウザによる)が使用されており、見出しとしてあまり目立っていなかった。ゴシック体のもう少し大きな文字にしたかったが、<h?>は記事以外のブログの部品でも使われており、勝手にstyleを書き換えるわけにはいかないので、<font><b>で書きなおした。

2017年10月28日土曜日

BLADE RUNNER 2049 を見てきた

Cyberpankの源流の1つとも言われる、Blade Runnerの新作を見てきた。
私にとってBlade Runnerは、大好きな映画の1つで、LaserDiskやDVDを持っている。
(LDはプレイヤーが壊れて再生できなくなってしまったが)

ガフやデッカードが出てきたり、さらには、レイチェルまでも...?
ところどころ前作の映像もはさみながら、懐かしい顔が見れたことは良かった。

人と機械の境界が曖昧になった世界。その世界観の描写も良かった。
なんとも言えない切ないシーンもあり、アンドロイドも人と同じように、苦悩するし夢も見る。

苦労した記憶の移植によって、レプリカントの精神を安定させる。前作でもレイチェルにはその処理が施されていた。
今回の作品でも、切ない経験によって、一台のレプリカントに変化が現れ、より人間に近くなる。

しかし、なんか消化不良。
なんとなく、中途半端な終わり方。
やはり、2つでは十分ではないのか?
2017年10月30日 追記
映画を見た時にもらったミニポスター(ただの絵葉書じゃん!)があったのを忘れてた。

机の上で撮影しようとしたけど、天井の明かりが写り込んで、うまく撮影できなかった。
しょうが無いので、壁に当てて撮影した。自分の指が写ってしまっている。

2017年10月22日日曜日

LibreOffice Draw でアニメーション作製#5

LibreOffice Draw でアニメーション作製
LibreOffice Draw でアニメーション作製#2
LibreOffice Draw でアニメーション作製#3
LibreOffice Draw でアニメーション作製#4

以前、LibreOffice Draw でアニメーション作製#2で、ダイアログで値を指定できるように、などと書いておいてほったらかしだった。
台風21号の接近で外は大雨なので、それをやることにした。
(ちなみに昨日は西伊豆の井田でダイビングをしていた)
まず、Drawでダイアログを作るには、[ツール(T)]→[マクロ(M)]→[ダイアログの管理(D)...]をクリックして、「LibreOffice Basicマクロの管理」ダイアログを開き、「新規作成」ボタンをクリックする。
「新しいダイアログ」ダイアログが表示されるので、適当に名前をつけて、[OK]ボタンを押す。
とりあえず、"PageSizeDialogDef"という名前にした。

そうすると、ダイアログエディタが現れる。
このへんのダイアログの説明を読んでから、適当に部品を配置して、適当に設定して...

こんな感じにする。
そしてハンドラを終了時に入力データを読みだしたり、幅の値の書き換えハンドラで高さの値を更新するようにしたりする。
なんという手抜きな説明だろう!
そんなんじゃ、全然わからないよ!!って、なるだろう。

というわけで、LibreOffice Basicのソースと、ダイアログのエクスポートファイルをダウンロードできるようにしておく。
Basicのソース: SavePagesAsBMP.bas
ダイアログのエクスポート: PageSizeDialogDef.xdl

実は、どうやればソースコード等を取り出せるのか、全然知らなかった。
作るだけなら、全く不要な操作だからだ。
しかし、1台のPCだけなら取り出し方なんか要らないが、デスクトップPCとノートPCを使っていると、もう一方のPCでも同じ機能を使いたくなるし、Backupする必要もある。
というわけで、Uploadした。
まだまだ手抜きだけど。

2017年10月20日金曜日

LibreOffice Draw でアニメーション作製 #4

LibreOffice Draw でアニメーション作製
LibreOffice Draw でアニメーション作製#2
LibreOffice Draw でアニメーション作製#3
LibreOffice Draw でアニメーション作製#4
LibreOffice Draw でアニメーション作製#5
今日も雨だ。
またもや、How to fold IKEA poncho. IKEAレインポンチョのたたみ方。で作ったアニメーションのコマを増やしてみた。

前回、コマ数を増やしてもわかりやすさはあまり変わらない。ストップモーションのほうがわかりやすいと書いた。
よく考えてみたら、アニメーションは動くばかりではなく、止めることもできる。
途中にタメを作るようにすれば、ストップモーションのようにすることができ、わかりやすさを損なわない。

途中のコマを書き足したり、途中にタメを入れたりして、アニメーション直した。
遊びで、最後の折り目が勢いよく反転する感じも入れてみた。
コミカルな動きになった。

今になれば簡単なことだが、滞りなくなめらかに動かすことばかり考えていて、止めることを考えてなかった。
何事も経験だな。

2017年10月7日土曜日

LibreOffice Draw でアニメーション作製 #3

LibreOffice Draw でアニメーション作製
LibreOffice Draw でアニメーション作製#2
LibreOffice Draw でアニメーション作製#3
LibreOffice Draw でアニメーション作製#4
LibreOffice Draw でアニメーション作製#5

ソースコードを見ていたら、直接GIFアニメーションをエクスポートするコードもあるようだ。
でも呼び出し方がわからないし、Drawではないのかもしれない。
無駄骨だったかもしれないが、いつものことだ。いろいろ勉強になったし、目的は達成できたのだから、良かった事にしよう。

それはさておき、せっかくLibreOfficeのマクロを書いたし、今日は雨で外に出れないので、 How to fold IKEA poncho. IKEAレインポンチョのたたみ方。で作ったアニメーションのコマを増やしてみた。
(雨ならば、ポンチョを着て外出しろって?)

以下がその結果。


コマ数はおよそ2倍になっている。
コマ数を増やしても、あまりわかりやすさは変わらない感じがする。
むしろストップモーション的な方が、1コマずつしっかりと見ることができて、解りやすい。

動画は動画でわかりやすいが、隠れて見えない部分もあるし、理解の前にどんどん進んでしまうという欠点もある。
絵は、見えない部分を表現することもできるが、動きがわかりにくい。
アニメーションは、その中間だ。

中間的な存在が、良いとこ取りになればいいが、悪いとこ取りになってしまうこともある。
コマ数を増やしたのは、悪いとこ取りになってしまったかもしれない。

最初の選択が、意外に良かったようだ。「この形だけは表現しないといけない」と思う絵を描いて、その途中を無理なくつなぐような必要最低限の絵だけを挿入していた。
過剰な情報は、混乱の元になる。技術的にコマ数が増やせるとしても、良いことかどうかは別だ。
技術に踊らされてはいけない。

2017年10月6日金曜日

LibreOffice Draw でアニメーション作製 #2

先週のLibreOffice Draw でアニメーション作製のつづき。
手動で.bmpにExportする場合、解像度を指定できる。
しかし、先週作ったマクロでは解像度を指定できず、デフォルト値の37ピクセル/cm(と表示されているが、正確には96dpi)で出力されることになる。
これを変更したい。しかし、ネット上で探すと情報がまとまっておらず、錯綜しており、混乱の極みだった。

まず、storeToURL()メソッドに渡すcom.sun.star.beans.PropertyValue型の.Name = "FilterData"でフィルタ固有の設定の入った配列を渡す。この配列もまたcom.sun.star.beans.PropertyValueで、いわば入れ子構造になっている。

ここまでは、先週の段階で解っていたところだ。
"FilterData"について、真剣に調べるとはまりそうな気がしたので、先週の段階では無視した。また、最初の1歩目は、あまり凝らずにさっさと閉じて、まず形にするのが私のやり方だ。

というわけで、今週の通勤時に、スマホで検索して調べた。
やっと見つけた記事が、OpenOffice-Basic GraphicExportFilter documentation?
まさにこれだと思ったが、コードの断片であり、説明はやはり無い。
下の方のリンクの文書を読んでみたが、"FilterData"の説明は書かれていない。
数日間、通勤時間の朝夕ほとんどをつぎ込んでも、結局"FilterData"について、まとめられた文書はどこにも見当たらなかった(自分の検索の方法が悪いのかもしれないが...)。

しょうが無いので、ソースコードを読んでみることにした。
https://github.com/LibreOfficeで、スマホでもソースコードを参照できる。
現在利用しているLibreOfficeのバージョンは5.1なので、そのGraphicFilterのソースコードを見てみる。
"FilterData"設定で見ているのは、PixelWidthとPixelHeightだけだ。
派生クラスなどでは他の値も使っているかもしれないが、基本的にはこれだけのようだ。
これらの値が、aRenderer.renderToGraphic()に渡されることになる。

サイズの指定がこれだけだとすれば、ドキュメントの縦横幅をピクセル数で指定しているだけと想像できる。
すなわち、dpiやpixel/cmのような物理量と関係する値ではない。そのページを縦横何ピクセルで画像にするかというだけだ。

試しに、先週のコードを以下のように改造して、実行してみた。
sub SavePagesAsBMP
    dim doc  as Object
    dim controller as Object
    dim pages  as Object
    dim prevCurrentPage as Object
    dim args(2) as new com.sun.star.beans.PropertyValue
    dim filterData (2) As New com.sun.star.beans.PropertyValue

    dim dirDialog as Object
    dim ucb as Object
    dim directory as String

    GlobalScope.BasicLibraries.LoadLibrary("Tools")
    doc = ThisComponent

    'MsgBox doc.DBG_properties
    'MsgBox doc.DBG_Methods
    'MsgBox doc.drawPages.DBG_properties
    'MsgBox doc.drawPages.DBG_Methods

    '------------------------------------------------------------
    ' Select directory by Directory Selection dialog
    '------------------------------------------------------------
    dirDialog = CreateUnoService( "com.sun.star.ui.dialogs.FolderPicker" )
    ucb = createUnoService("com.sun.star.ucb.SimpleFileAccess")

    directory = DirectoryNameoutofPath(doc.getURL(),"/")
    if ucb.Exists( directory ) then
        dirDialog.SetDisplayDirectory( directory )
    end if

    if dirDialog.Execute() <> 1 then
        exit sub
    end if

    directory = dirDialog.getDirectory
 
    '--------------------------------
    ' Save each page as .BMP
    '--------------------------------
    controller = doc.CurrentController
    pages = doc.drawPages

    args(0).Name = "FilterName"
    args(0).Value = "draw_bmp_Export"
    args(1).Name = "FilterData"
        filterData(0).Name =  "PixelWidth"
        filterData(0).Value = 900
        filterData(1).Name = "PixelHeight"
        filterData(1).Value = 800
    args(1).Value = filterData

    prevCurrentPage = controller.getCurrentPage ' preserve current page

    For i=0 to pages.Count -1
        controller.setCurrentPage( pages(i) )
        'url = directory + "/" + controller.getCurrentPage.Name +".bmp"
        url = directory + "/" + right( "0000000" + i, 8) +".bmp" 
        'MsgBox url
        doc.storeToURL( url, args )
    Next i

    controller.setCurrentPage( prevCurrentPage ) ' restore current page

end sub
ちゃんと、900x800で画像が保存できた。

一応動いたとはいえ、もう少しソースコードを追いかけてみたほうがよさそうだ。
また、独自のダイアログを作ることもできそうなので、次はそれを使って値を指定するようにしてみよう。

LibreOffice Draw でアニメーション作製
LibreOffice Draw でアニメーション作製#2
LibreOffice Draw でアニメーション作製#3
LibreOffice Draw でアニメーション作製#4
LibreOffice Draw でアニメーション作製#5
2017/10/20 リンクが間違っていた。張り直した。