2016年7月3日日曜日

Windows10にアップグレードしたらバックアップが出来なくなりました

Windows7で使っていたパソコンの1台が不調になりました

・CドライブからUSBメモリー、Dドライブなど外部にドラッグ&ドロップでファイルを移動できない
・コマンドプロンプトを使った手作業ではコピーは出来る

何かのリソースが不調なのは明確ですが今更Windows7での再構築もと思い、Windows10にアップデートすることにしました。

作業自体は順調に進みましたが移行して念の為にと「バックアップ」で日程を設定する段階でエラーが発生



タスクスケジューラーのデータに異常があるらしく日程の設定ができません
タスクスケジューラー単体の起動時にも図のエラーが!

困ったなあと調べていると壊れたタスクを修復してくれるツールを発見!

http://www.one-x.co.jp/technicalnotes/software/os/windows/windows10windows7IME.html

その名もRepair Task

まずは Repair Tasks のダウンロードページへ行って、RepairTasks.zip をダウンロード

操作は簡単で、まずは「Backup  Tasks」で現状のタスクを保管、次に「Scan」して「Repair」を押すだけです

これでタスクスケジューラーは無事にエラーなく起動するようになりました

ところが、本来の目的である「バックアップ」に戻ると、、、


バックアップと復元で「内部エラーが発生しました。指定されたリソース名がイメージファイルに見つかりません。(0x80070716)」

参りました、、、、、最後の最後でという感じです、、、
検索するとレジストリーを修正する必要があるとの情報を得て、、

http://answers.microsoft.com/ja-jp/windows/forum/windows_10-update/バックアッ/2fc41c09-2ab2-405a-bd55-f2ff808b34f9

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup\ValidConfig

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsBackup\ValidSystemImageBackup


上のアンダーバーの部分の設定を削除したところエラーは消え「バックアップ」のスケジュール設定は正常になりました

Repair Task した結果 0x80070716 が発生したのかどうかは定かではありません

今回、Windows7での使用時に既に幾つかの不具合があったのでそれがそのままアップデートを試みたのが尾を引いたのかも知れません、無料のアップデートでクリーンインストールができるならその方が安全そうです

CPU は Intel Core i3
メモリーは2Gでしたが動作が緩慢で使えるレベルではないので4Gに増設したらマシになりました
8Gまで拡張する予定です









2015年6月24日水曜日

Rubyで大量のQRバーコード画像を生成する

Rubyで簡単にQRコード画像を生成する方法

http://qiita.com/ryosy383/items/c753103c93fa177e4466

を参考に大量に画像ファイルを作成してみました

Windows7環境下でRubyを導入し、rqrcode をインストールする必要があります

Ruby2.2.2-x64 でgemのバージョンを最新に上げトライしました

gem のバージョンを調べるには、コマンドプロンプトで gem -v
gem をアップデートするには、コマンドプロンプトで gem update --system 

Ruby-2.1.1-x64 では gem のアップデートでSSL絡みのエラーが出て
上手くいきませんでした

この環境で rqrcode を導入します

$ gem install rqrcode_png

依存関係のあるライブラリ「rqrcode」と「chunky_png」もインストールされます

# -*- encoding: sjis -*-
require 'rqrcode'
require 'rqrcode_png'
require 'chunky_png'

file_name = ARGV[0]

File.open(file_name,'r') do |file|
   file.each_line do |line|
   line.chomp! 
field = line.split("\t")   

# sizeはQRのバージョン、level は誤り訂正レベル
qr = RQRCode::QRCode.new( field[1], :size => 1, :level => :h )
png = qr.to_img

#300, 300はリサイズのサイズ(ドット数)
png.resize(300, 300).save(field[2])

   end

end


今回、複数件のQRコードを生成させる為に、QR化した内容と保存ファイル名を
テキストファイルで用意してテストしました

テキストファイルの中身は

1 00001 c:\QR1\0001.png
2 00002 c:\QR1\0002.png
3 00003 c:\QR1\0003.png
4 00004 c:\QR1\0004.png
5 00005 c:\QR1\0005.png

生成させるドットサイズは印字するプリンターの解像度数を元に決定しました
QRコードの大きさは1セルを構成するドット数とバージョンで決まります


解像度 600dpi(1ドットで約0.0424ミリ)
バージョン 1(21セル × 21セル)
ドット数 12 (12ドットで0.5088ミリ=1セル)

の場合、Rubyのライブラリー rqrcode で作られる画像は余白が左右各2セル、2+21+2=25セル、12ドットでは25セル×12ドット=300ドット、生成された画像を600dpiで印字すると10.68ミリ四方のQRコードが生成される

セルの大きさ、最適サイズについては以下のサイトが詳しいです

http://www.qrcode.com/howto/cell.html

バッチで上記のスクリプトを動かし以下の様なQR画像が得られました



フォーマットはpngになってしまうので、必要であれば画像のフォーマットを変更する必要がある


































EPSON PX-1004 A3 インクジェットプリンター 「インク残量」が確認できない

先週、久し振りにEPSON PX-1004 A3 インクジェットプリンターをUSBを介してPCに接続したところ「インク残量」が表示されなくなってしまっていることに気付きました

OSはWindows7 professional 64bit
PCはHP Compaq 6000 Pro

「インク残量は」EPSON プリンタウインド !3というユーティリティーを通じて随時プリンターから情報が送られていて、そろそろインク切れ、どの色が無くなりそうなどが表示される仕組みになっています

逆に、このユーティリティーが正常に働かないと、インク切れになっても、どのインクが無くなったのかが分からなくなってしまう、無いと困る仕組みです

こんな表示がでるようになりました


なんだろう?

ドライバーの更新など一通りの対応を試みたが改善されず、、、、仕方なくEPSONのサポートに問い合わせたところ、次の様な指示がありました

・デバイスマネージャの「ユニバーサル シリアル バス コントローラー」の下に「USB 印刷サポート」が表示されているか?(USBを抜き差しすると表示も変化する)

・スタートメニューから「デバイスとプリンター」を選択、該当のプリンターのアイコンを右クリック、「プリンターのプロパティ」を開き「ポート」タブを開く。ポート名とプリンター名を確認。株の「双方向をサポート」のラジオボタンにクリックが入っているか?

・「デバイスとプリンター」でPX-1004のアイコンを右クリックして「デバイスを削除」、プリンタードライバーの入れ直し

・これで駄目なら、セキュリティソフトなどが邪魔している可能性があり、その状況は個別なのでサポートの対象にならない

という事でした
いずれにも該当せず、表示されないままです

問題を切り分ける為にいくつかのテストを試みました

・他のWindows7でテスト → 問題なし

・不調のWindows7上のXpモードでのテスト → 問題なし

プリンター自体は問題なし、不調のWindows7機もハードウエア的な問題はなさそう

こうなるとHP機のWindows7の不調が一番怪しいことになります
HPのサポートに症状を伝えると、不調が「インク残量」絡みだけという事であればドライバーのバージョンを変えてみるなどを試みた方が良いのでは?との見解を貰いました

念の為に、放電とCMOSクリアを実行しましたが変化なし

バックアップは数日前に取ったばかりですが、それより前の物は廃棄してしまったばかりで、前回PX-1004を接続した頃のイメージファイルはありません

こうなると、手間の掛かるリストアしかありません、、、、、



駄目元でsfcコマンドを実行してみました

コマンドプロンプトを管理者権限で開き

sfc /scannow

システムファイルのチェックと改善を図りました
いくつかのファイルの不具合があった模様

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfcdetails.txt"

とコマンドを打つとデスクトップにsfcdetails.txtが生成されます

このリストから bidispl.dll が怪しそうと分かり、正常そうなものと入れ替えてみました
システムファイルの入れ替えは少々の手間が必要になります

takeown /f C:\Windows\System32\bidispl.dll

icacls C:\Windows\System32\bidispl.dll /grant administrators:F

copy F:\temp\bidispl.dll C:\windows\system32\bidispl.dll

こんな様な感じで行いました

最初の2行は管理権限を設定する為のコマンドです


この時は結果は改善されませんでした!(と思われました)


諦めてリストアの準備を始めました

それでも、現在のディスクでのリストアは避けたかったので、予備のHDDに換装してリストアを開始

ここで一つ気になる事が、、、

SATAのコネクターが緩い、、!


交換も考えましたが、とりあえずしっかり嵌めて予備HDDへWindows7をリストアしてみる
リストアできたところで、PX-1004を繋いでみる、何の問題もなし、、、

やっぱりWindows7を入れ直してシステムの再構築しかない!
と結論付け、それは後日時間があるときにとして、とりあえずは元のHDDに戻しました

戻したところ、、、「インク残量」表示が復活しました!

いきなり!!





なんででしょう(笑)
関係のあるアクションは2つしかありません

・sfc の結果を受けて bidispi.dll を入れ替えたから?

・SATAケーブルの接触を改善したから?

2つの内のどちらかしかありません
dll を入れ替えた時には効果は見受けられませんでした
プリンターと通信させて、もう少し待っても良かったのかなとは思いますが影響はなかったと思います

そうなるとSATAしかありません!

ただ、、、不調な時でも、Xpモードでは繋がったのが疑問ではあります
仮想ディスク上でのエミュレーションなので、システム内での処理の仕方が違うのかも知れません、今のところ再現できなくなってしまいこれ以上は追えない状況になってしまいました。

SATAケーブルの不調は、1度起動時に突然落ちた事があったので、可能性は感じていますが、PCとプリンターの通信に影響がでるものなのか?

再発した時の為の忘備録としてまとめた次第です






2014年11月13日木曜日

どのようにしてデータ処理の生産性を上げるか?

どのようにしてデータ処理の生産性を上げるか?

<顧客の課題>
インクジェットによる大型枚葉紙への印字サービスを進めるに当たってハードウエアの開発と同時に必要な技術はデータ処理技術の開発です

・バーコード(1次元バーコード~QRなど2次元バーコード)
・コンサート会場などの座席番号(1階12列22番 etc
・宛名印字などDMへの応用
・携帯キャンペーンなどに用いられる「乱数」印字
・地図などビットマップ情報による差替え印字
・全国に展開するチェーン店などで1店舗毎の使用数が異なる刷込み
・記号や発行数量が多種に渡るナンバリング

以上の様な「課題」に応える為には各々個別のデータ処理が必要となります、インクジェットを社内に導入する以前は、プリンターを使うべき案件を受注した場合は弊社でも社外に委託していました。当時はCOBOLなどの言語でのプログラミングが必要となり

・データ処理/システム設計 : 30万円
・印字代 : @2から@3 インチあたり

というような請求がきていました。1面の中にバーコードを一か所印字するという程度の内容でもとにかく一律30万円、この金額が相応なのか?不相応なのか?議論の余地もありませんでした、何故ならその処理は完全なブラックボックスだったので

黒船登場と戦々恐々の念で迎えられたE-Printが登場すると更に「パーソナリゼーション料金」なるものが請求項目に現れてきました

例えばフルバリアブルDMを80,000枚製作しようとした場合の2001年当時の見積りは

前工程
・フォーマット及びスクリプト作成料金 : 100,000
・パーソナリゼーション料金 : 80,000×@504,000,000
E-print印刷
・基本料金 6面付け : 6,000
・印刷料金 4/4c : 13,334t×@1602,133,440
事前に前頁分のデータを作成しておく必要があるそうで、その為に1週間掛かるその料金が400万円という説明でしたが、人手ではなくパソコンが演算をしているだけの価格としては直感的に高すぎると思えてなりませんでした。だだ、フルカラーでパーソナライズしたDMが通常DMに較べて格段のレスポンスアップを獲得しDM発行費用を大きく上回ればこの価格はペイする事になります。但し、これだけの価格になると利幅が比較的大きな商品の販促でないと厳しいであろうことは容易に想像できます

時代は進んで2006年頃にはXeroxからiGen3という高品質、高生産性のプリンターが登場してきました、たまたまその時期、顧客からモノクロではなくカラーでナンバリングしたいという要望があり見積りを取ったところ

カラーナンバリング刷込み (菊4切6面 12500t)
・カラーバリアブル処理 75000件×@302,250,000
・印字 12500t×@1001,250,000

とやはり事前に作成する処理費が重く、ナンバリングに色を付けたいという軽い希望を満たす為には不相応なコストアップだったため却下されてしまいました

ドキュテックなどオンデマンド機を導入して「パーソナリゼーション」専門で回しているという話しをあまり聞かないのは、如何に合理的にデータ処理を行い事前に掛かる費用を低減させるかというスキルが確立されていないからではないか?と多くの見積りを消化しながら感じていました

そして、データ処理の生産性を改善しこの部分の金額的負担を低減させれば「パーソナリゼーション」の仕事にチャレンジしやすくなり市場は広がるという事に気付きました

<ゑびす堂の対応>
弊社がメインで運用しているKODAK社のシステムでは事前に出力する全ページ分のデータを作成しておく必要がなかったので「パーソナリゼーション料金」を設定する必要がありませんでした。このオン・ザ・フライの仕組みはコストの圧縮、スケジュールの圧縮の両面で大きなメリットとなっています

従って、弊社のデータ処理は事前に行う必要があるテキスト処理が主となっています。

インクジェットによるバリアブル印刷の事例を数多く消化していると、共通して行われるデータ処理が存在することに気付きました。この処理を細かくルーチン化して蓄え、新たなデータ処理に際しては、蓄えられたルーチンを組み合わせて再活用する。新たにルーチンを書き起こすリスクと負担を低減できるようにしています

また、テキスト処理が主となるので、JGAWKPythonRubyなど入手コストの掛からないオープンソースを極力活用しバッチ処理で生産性の向上を図り、柔軟で高い生産性を兼ね備えた処理体系の構築を目指しています

<データ処理例1>乱数データの面付け印字の場合

「乱数」はキャンペーンやゲームなどのログイン情報なでに使われます。多くの場合エンドユーザーが発行し弊社に支給されますが弊社でも乱数生成は可能です、この場合の必要要件は

1.    桁数
2.    各桁に使用する文字種 (数字のみ、数字と欧文大文字、数字と欧文小文字 etc
3.    発行数

桁数は必要数に対して十分に余裕をみる必要があります。仮に5000件の乱数が必要な時に桁数を5桁にすると使用率は5000/99999 で5%となり00001から99999の区間の1 / 20もの数列を使うことになり質の良い乱数になりません

また、各桁数に使用する文字種に関しても注意が必要です。数字だけであれば問題ないが、数字と欧文を組合わせて用いる場合には「0 数字」「O オー」「1 数字」「l エル」「I アイ」などは読み間違える可能性があるので最初から弾くなどの配慮が必要です

エンドユーザーから支給された「乱数」であってもこうした問題を含んでいたり、「重複」などがある場合もあるので十分な確認と説明が必要になります

こうして得た乱数の一例です

1234567890123456
3136974197498601
1816139457837506
3286936395032679
6934710823292124
0279848920290170

 乱数はこのままでは確認がしにくいので、弊社では管理番号と抱き合わせて扱っています

1 1234567890123456
2 3136974197498601
3 1816139457837506
4 3286936395032679
5 6934710823292124
6 0279848920290170

また16桁の数値は読み難いので4桁毎にスペースやハイフォンを入れる場合もあります

1 1234 5678 9012 3456
2 3136 9741 9749 8601
3 1816 1394 5783 7506
4 3286 9363 9503 2679
5 6934 7108 2329 2124
6 0279 8489 2029 0170

こうして得たデータを面付け処理します

例として2面付で3通しの場合は

1 1234 5678 9012 3456 4 3286 9363 9503 2679
2 3136 9741 9749 8601 5 6934 7108 2329 2124
3 1816 1394 5783 7506 6 0279 8489 2029 0170

これが印字用の最終データとなります。

データが数千万件と多い場合、面数が40面等々と多い場合でも同じように速やかに処理が行なえます。

「乱数」を例にしましたが、これが一次元バーコードデータであってもQRバーコードデータであっても、DMの宛名印字のような2バイトデータであっても処理は同一です。全てテキスト処理の対象になります。

地図など、ビットマップデータの差替えの場合は、同一解像度、同一サイズのモノクロ2階調のビットマップファイルをフォントにアサインし、特定のコードで呼び出すという方法を取ります。例えば




となっていれば印字用フィールドの値が「1」なら0001.bmpの内容が印字されます

<データ処理例2>全国展開の居酒屋などで店舗ごとに必要枚数が異なる場合
必要なデータは


自至は印字内容が店舗毎に同一であれば不要です
部数が一定でないジョブを多面付で効率よく進行する為には


というような工夫が必要になります。仮に10面で進行する場合は

1台目は ACが各1面、F8面で100
2台目は B2面、D3面、E5面で100

これで100枚毎に製本することで100枚の束を20個得る事ができます

このようなジョブの場合、最初のエクセルの表さえ御支給頂ければ最も効率的なデータの組合せでデータ作成を行い、このような製本作業に習熟したパートナーと共に多種多ロットの品物の製造を効率化することが可能になりました

今までこのような仕様の取扱いに困られていたお客様から高く評価されています

<満足ポイント>
多くの場合、データ処理料金が基本料金で収まります。ご用意頂くデータも必要最低限で済みます。「バリアブル」の仕事の障壁であった「パーソナリゼーション料金」が必要ない仕組みなので幅広い分野で「バリアブル」を応用した試みが可能になりました。


データ処理の速度、安全性共にご評価頂いております

インクジェット導入の経緯 / クレジットカードテイクワン型入会申込書

事例1 クレジットカードテイクワン型入会申込書

<顧客の課題>
 アメリカからの外圧による市場開放の要求に伴い、1992年、DCカードやJCBなど銀行系のクレジットカードでショッピングリボルビング払いが解禁された。それまで銀行系は1回払、2回払い、ボーナス一括払いのみであったがこの制度改革によって各カード会社は顧客獲得競争に突入した。
 弊社においては、従来テイクワン型の入会申込書へのナンバリングをそれまでも請け負っていたが、必要生産量は日産15,000部程度で、主に特殊な活版印刷機で対応していた。
 然しながら、市場開放によって生じた顧客獲得競争において必要な日産量は10倍の150,000部となり根本的な生産方法の見直しを迫られた
 入会申込書に予めナンバリングをする目的は全国各所に配布した入会申込書によってエンドユーザーがエントリーした場合において、何処に配布した申込書によってエントリーがなされたかを把握する為である。このデータを管理することによって入会申込書の適切な配布が可能になる





<ゑびす堂の対応>
 当時、巻き6つ折りした後の用紙に対する活版ナンバリングにはデルマックスのようなプラテン型の活版印刷機を用いるのが主流であった


 弊社も数台の同型の印刷機を所有していたが、顧客の希望の日産量を満たす為には増設及び増員する必要があった。この選択はこの仕事を消化する為には正しい解決方法であったが年間の稼働をも考えると投資に見合わない事は明らかであった。
そこでそれまでは国内ではこうした用途に使用された前例は皆無であったがインクジェットによる印字方法を提案し同時に国内では初めてのインクジェットによる印字搬送系の構築に取り掛かった
インクジェットによる印字ラインは
・フィーダー
・印字ユニット
・ドライヤー
・部数カウントユニット
によって構成される。コンプリートな搬送系は国内には当時は存在しなかったのでメーカーと共に独自設計し構築した

完成したラインはこのように15,000/時の製造が可能になり同等のコストで要望された日産量を達成することが可能になった

<満足ポイント>
 ・顧客が希望する日産量の製造が可能になった
 ・インクジェットを使う印字なので乱数などPCデータを使っての印字が可能になった
 ・数字、欧文、日本語、バーコード、画像を取り扱う事が可能になった


通常のナンバリングに留まらず、バーコードや地図などの画像差替え、乱数の印字やDMの宛名印字など取り扱える範囲が拡大し新たな需要開拓の武器となった