投稿

PDFにおけるCMYKのDCTDecode(JPEG)の色反転について 反転するケースと反転しないケースがあり、反転しない場合と反転する場合の条件とIllustratorにおけるCMYKJpegの扱いについてまとめます。 反転するケースと反転しないケースの別について 基本的には/Type = Image, /Filter = DCTDecodeで色空間がCMYKの場合、各値が「0」を100%の塗り、「255」を0%の塗りとして扱います。 →なのでPDFから該当イメージのデータを引っこ抜くとポジネガ反転したようなJPEGになります。 次に、反転してないCMYKJPEGが貼りこんであるにもかかわらず、Acrobat表示が反転してないケースのコントロールは、イメージオブジェクトの/Decodeエントリでコントロールされます。 Decodeエントリは各色要素の[最小値0, 最大値0, 最小値1, 最大値1, ...... 最小値N, 最大値N]という設定となっています。 CMYKデータの場合、Nは4なのでDecodeエントリの配列には8つの値が設定されている事になります。 もし、Decodeエントリがない場合は、最小値 => 255, 最大値 => 0という扱いになりますが、反転してないCMYKJPEGの場合、Decodeエントリは大抵以下のように設定されています。 /Decode [1.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0] 上記の通り、最小値 > 最大値なので各要素の値を反転するという意味になります。 そのため、ポジネガ反転してないCMYKのJPEGでも正しく表示されるということになります。 ※FlateDecodeの場合は、0が素直なのですが、CMYKのJPEGだけそんな扱いになります。 Illustratorでの扱いについて Illustratorでは、PDFファイルをオープンする際、Decodeエントリなんて気にせずに、CMYKのJPEGは必ずポジネガ反転しているという前提でオープンします。 なので、Decodeエントリで反転しているようなCMYKJPEGデータが含まれている場合、Illustrator上では正しく表示されません。 ...
イメージ
seleniumを使う① Webの自動テストをやろうと思う。要件としては以下のとおりだ。 ターゲットはWebのUI系のテストの自動化 テスト内容は同一だが各種ブラウザでのテストがある。 開発者の個別環境で実施するのではなく、サーバー上でテストを自動実施したい jenkinsと連携させてリポジトリが更新されたらテスト実行を行う 途中はすっとばすがseleniumというWebのUI系の自動テストツールが使えるかもしれないということで調査することにした。 こいつはFireFoxのプラグインとして動作してSelenium IDEというツールでユーザー操作を記録し、それをテストコードとして自動実行させることができるらしい。 というわけでまずはダウンロードしてみた。 ダウンロード先: http://release.seleniumhq.org/selenium-ide/2.8.0/selenium-ide-2.8.0.xpi FireFoxで上記リンクを叩くと、自動的にselenium IDEがインストールされる。 ←インストールされると、このようなアイコンがFireFoxのアドレスバーあたりに追加される。 テストスクリプトの作成 FireFoxのツールバー上にselenium ideのアイコンが表示されるのでそれをクリック。 表示された画面の赤丸ボタン(記録ボタン?)をクリックした後、ブラウザを操作 →テストスクリプトが自動生成される。 必要に応じてファイルに保存する。 ※ここで一旦テストが通るかどうかの確認を行う。 VisualStudio.Netのテストプロジェクトで実行する 作ったテストスクリプトを今度はVisualStudio.Netのテストプロジェクトから実行させるという話。 テストケースのエクスポート 作成したテストケースをselenium IDEでオープンした状態でselenium IDEの以下のメニューを選択 ファイル > テストケースをエクスポート > C# / NUnit WebDriver 保存先を指定してテストケースを保存する。 VS.NETで単体テストプログラムの作成 VS.NETの新規プロジェクトを作成する。 → Visual C# >...
SQLサーバーでアカウントロックされてしまったケースの対応 マネージメントスタジオがインストールされておらず、saアカウントしかなかったため復旧に手こずったのでメモ コマンドプロンプトでの対応方法 サービスを終了させる net stop mssqlserver サービスをシングルユーザーモードで起動させる net start mssqlserver /f /m osqlを起動 osql -E saアカウントを有効にする ALTER LOGIN sa ENABLE sqlサーバーを再起動 net stop mssqlserver net start mssqlserver これで、外部のPCからマネージメントスタジオでログインすることができるようになった!! ちなみに、Windows2003だったので2008以降は管理者権限でコマンドプロンプトを起動させる必要があると思います。

Windowsサーバーのタスクスケジューラーで嵌った件

イメージ
あるシステムで嵌った話。 (Windows)サーバー上で常駐起動するプログラムがあって、その起動をタスクスケジューラーで ログオン時に起動する設定にしていた。 →普通のウインドウを持つプログラム。EUDC外字を使う関係上セッション0では正しく動作しない。 →詳しくは こちら が詳しい。 システム更新作業があって、再起動を実施。実施後正しく起動していることを確認した。 その3日後、客先から急に連絡が入ってきて、プログラムが動作していないとのこと。 よくよく調べてみると誰かが勝手にプログラムを終了していた。 →しかも異常終了ではなく普通にウインドウを閉じたような終了だった。 原因を調査してみるとどうやらタスクスケジューラーの仕様で、デフォルトの設定では 3日以上連続稼働しているプログラムは強制終了させる設定になっていることが原因だった。 「タスクを停止するまでの時間」の設定があると勝手に終了する。 これからは気をつけよう。というかデフォルトの設定がおかしい気がする。

ubuntuの自分環境を作るための覚書

ubuntuの環境を作るための覚書 ubuntu 14.04で自分用環境を作る覚書 一応、ソース管理兼、実験用兼、メールサーバーを兼ねているようなサーバーです。 開発ツールの設定 sudo apt-get install build-essensial ubuntu14.04の場合、gcc 4.8.2がインストールされる。 apacheの導入 sudo apt-get install apache2 でひと通りインストールされる。 ssl(オレオレ証明書)の設定 開発テストでとりあえず、httpsが必要なのでオレオレ証明書を作っておく。 以下の手順でインストールする。 OpenSSLを入れる sudo apt-get install openssl でインストールする。 apacheを設定する sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart を行なう。 a2ensiteで443のバーチャルホストの設定ファイルのシンボリックファイルが/etc/apache2/sites-enabled/ssl-defaultに生成される。 a2enmodで、sslモジュールが使用できるようになる。 証明書の作成 Virtual Hostの設定 メールサーバーの設定 postfixを入れる sudo apt-get install postfix でメールサーバーがインストールされる。 main.cfを編集し、 dovecotを入れる メールをクライアントから受診するためにdovecotを使う。 これも sudo apt-get install dovecot-core dovecot-pop3d でインストールする。 今回はpop3を使うので上記の通り。imapを使う場合は「dovecot-imapd」も一緒にインストールすること。 色々いじったような気がするけど忘れてしまった。。。。 monoの導入 sudo apt-get install mono-complete でインストール。→無駄に全部はいるけど無視 asp.netを使うためにmod_mono...

Photoshop.Application.DoJavaScriptをjscript(jsxではない)から呼び出す時に嵌ったのでメモ

Photoshopを外部スクリプトから操作するとき var app = new ActiveXObject('Photoshop.Application'); とPhotoshopオブジェクトを作っておいて app.DoJavaScriptを呼び出すのですが、外部のスクリプトから引数を渡さなければ 問題ないのですが、引数を渡したいときに嵌った。 引数は第二パラメータに配列で渡す必要があるので以下のようなコードを書いた。 app.DoJavaScript("alert('Hello World!:' + arguments[0]);", ['引数1'], 1); これを実行すると、「無効な引数 - 引数2 - 配列が必要」というエラーが発生してしまう。 JavaScriptの配列はCOMでは配列扱いにしてくれない臭い。 同じようなことをVBScriptで書いた場合、すんなりと動いてしまう。。。。 Dim app Set app = CreateObject("Photoshop.Application") Dim arg arg = Array("引数1", "2") app.DoJavaScript "alert('Hello World!' + arguments[0]);", arg, 1 実行するとPhotoshop上で「Hello World! 引数1」とメッセージが表示される。 VBScriptの配列はCOMの配列として扱ってくれるようだ。 これを解決するために以下の様な関数を作ってみた。 function toVBArray(arry) { var dic = new ActiveXObject("Scripting.Dictionary"); for(var i = 0; i < arry.length; ++i) { dic.add(i, arry[i]); } return dic.Items(); } JScriptの配列をVBSc...

シンボルサーバーを設定する

シンボルサーバーを設定した(する)ので自分用のメモ シンボルサーバーを設定する マイコンピュータの環境設定の環境変数「_NT_SYMBOL_PATH」にシンボルサーバーへのパスを設定します。 例えば、 D:\symbols \\symserver\symbols http://msdl.microsoft.com/download/symbols にシンボルサーバーだよと設定したい場合、環境変数に Srv*D:\symbols*\\symserver\symbols*http://msdl.microsoft.com/download/symbols というように設定します。 これを設定しておくと、「D:\symbols」と「\\symserver\symbols」共有フォルダにシンボルファイルが格納されます。 シンボルサーバーへシンボルの追加 共有フォルダへシンボルファイルを追加する場合、「symstore.exe」を使用します。 これはMicrosoft Debugging Tools for Windowsのパッケージに含まれています。 例えば、「C:\svn\projects」フォルダ下に生成されたシンボルファイルを共有フォルダに登録したい場合、以下のように実行します。 symstore.exe add /f "c:\svn\projects\*.pdb" /s "\\symserver\sysmbols" /r このコマンドで「C:\svn\projects」フォルダ下の*.pdbファイルを再帰的探して共有フォルダに設定します。