ラベル ruby の投稿を表示しています。 すべての投稿を表示
ラベル ruby の投稿を表示しています。 すべての投稿を表示

2013年9月13日金曜日

selenium-webdriver(webdriver-firefox-esr-previous.dll)をrubyから実行時に、Norton Internet Securityのウィルス警告

    以下の構成で実行した際に、Symantecの検疫に引っかかった。
    ・Windows7 SP1 64Bit
    ・ruby 2.0.0p247
    ・Norton Internet Security(20.4.0.40)
    ・selenium-webdriver-2.35.1で、ブラウザ起動に「:firefox」を指定。

    Symantecの検疫ログは以下のとおり。
    Symantec公式に、2013/9/13時点で日本語の情報はまだ無い。
    Suspicious.Cloud.7.EP

    「Suspicious.Cloud」自体は、新種のマルウェアの脅威を検出するためのシリーズっぽい。
    Suspicious.Cloud

    「Selenium」のメーリングリストやチケットだと、既知事象のようだ。特に問題はなさそう。
    Selenium Users › Suspicious.Cloud.7.EP
    Issue 6120: Virus warning (Suspicious.Cloud.7.EP) in webdriver-firefox-esr-previous.dll

    会社で使おうと思ったのに残念。
    無害でも検出されると面倒なので、職場で試さなくてよかった。

2013年9月3日火曜日

Windows7 64Bit上でVagrant+CentOS6.4インストール

  1. VirtualBoxのインストール
  2. Download VirtualBox>から、最新版(2013/9/3現在は「VirtualBox 4.2.16 for Windows hosts x86/amd64」)をインストールする。


  3. Vagrantのインストール
  4. Vagrant download siteから、最新版(2013/9/3現在は「v1.2.7/Vagrant_1.2.7.msi」)をインストールする。
    インストール後、再起動を求められるため、CPUがAMDの場合、BIOS設定を確認する。


  5. BIOS設定の確認
  6. 「BIOSセットアップユーティリティ」-「パワー」-「Virtualizationテクノロジー」が「有効」(Enabled)になっていることを確認する。
    ※「無効」(Disabled)の場合は、VirtualBoxから新しい仮想マシンを起動した際に、「AMD-V is disabled in the BIOS」というメッセージが出て起動しない。


  7. 再起動後、コマンドプロンプトを立ち上げる。
  8. Windowsのデスクトップから「Windows」+「R」キー押下する。
    「ファイル名を指定して実行」画面で「cmd」と入力し、「OK」ボタンを押下する。
    以下、コマンドプロンプト上での作業。


  9. 「vagrant -v」でvagrantのバージョンを確認する。


  10. 「vagrant -h」でヘルプを確認する。
  11. 個別のコマンド「例:box」を調べたい場合は、「vagrant box -h」と実行する。


  12. 「vagrant box add」でboxを追加する。
  13. Vagrantbox.esのboxを指定してもいいが、
    ryuzee.comで公開されていたboxの使い勝手の方が良さそうだったので、こちらを使ってみた。


  14. 「vagrant box list」でboxの一覧を表示する。
  15. boxの実体は、「C:\Users\%USERNAME%\.vagrant.d\boxes\」配下にある。


  16. 「vagrant init」で「Vagrantfile」を初期作成する。
  17. カレントディレクトリに作成されるため、複数バージョンのboxを切り替えて使用する場合は、任意のディレクトリ(例:CentOS6)を作成しておくといい。


  18. 「Vagrantfile」をテキストエディタで編集する。


  19. 「vagrant up」でVMを起動する。


  20. 「vagrant status」でVMのステータスを確認する。
  21. 「vagrant status」の状態は、「running」になる。


  22. Teraterm等のターミナルソフトでSSH接続する。


  23. 「vagrant suspend」でVMを一時停止する。
  24. 「vagrant status」の状態は、「saved」になる。
    「vagrant up」または「vagrant resume」で再開する。

    「vagrant up」の場合
    「vagrant resume」の場合


  25. 「vagrant reload」で「Vagrantfile」を再読み込みする。
  26. 「Vagrantfile」を編集し、再度読み込む場合には、「vagrant reload」で再起動する。

  27. 「vagrant halt」でVMを停止する。
  28. 「vagrant status」の状態は、「poweroff」になる。


  29. 「vagrant destroy」でVMを除去する。


  30. 「vagrant box remove」で不要なboxを削除する。


  31. 「del Vagrantfile」で不要な「Vagrantfile」を削除する。
  32. 削除していない場合は、「vagrant init」を再度実行しても警告メッセージが出る。


  33. 「Provisioning」の使用方法
  34. VM起動後の後処理を「Vagrantfile」に、「config.vm.provision :shell」として記述する。
    「Vagrantfile」に、以下の4行を追記した。
    「provision.sh」は、「Vagrantfile」と同じディレクトリに、以下の内容で設置する。
    「vagrant up」でVMを起動する。
    「Running provisioner: shell...」の出力後、
    「Running: inline script」で、「config.vm.provision :shell, :inline」の実行結果がでる。

    「Running: C:/Users/%USERNAME%/AppData/Local/Temp/vagrant-shell20130903-6200-dm6b64」で、「config.vm.provision :shell, :path」の実行結果がでる。
    VM上では、「/tmp/vagrant-shell」に設置されている。


  35. 「vagrant package」の使用方法
  36. VMからboxファイルをエクスポートする。


    「vagrant package -h」でヘルプを表示する。
    「vagrant package」でboxをエクスポートする。
    起動中のVMは一度シャットダウンされるため、注意する。
    デフォルトでは、「package.box」のファイル名で保存される。
    出力ファイル名を指定する場合は、「--output」オプションで指定する。
    「vagrant box add」でエクスポートしたboxを追加する。


  37. 「sahara」の使用方法
  38. 「sahara」(スナップショットプラグイン)の使用方法は以下のとおり。


  39. 「vagrant plugin install」で「sahara」をインストールする。
  40. 「vagrant sandbox -h」でヘルプを表示する。
  41. 「vagrant plugin list」でインストールされているプラグインの一覧を表示する。
  42. 「vagrant plugin uninstall」で「sahara」をアンインストールできる。
  43. 「vagrant sandbox on」で「sandbox」を開始する。
  44. 「vagrant sandbox status」の状態は、「on」になる。
  45. 「vagrant sandbox rollback」で、コミットしていない変更内容を破棄する。
  46. 「vagrant sandbox commit」で、変更内容をコミットする。
  47. 「vagrant sandbox off」で「sandbox」を終了する。コミットしていない変更内容は破棄される。
  48. 「vagrant sandbox status」の状態は、「off」になる。

2013年6月13日木曜日

rubyでexcel操作

rubyでexcel操作するとしたら、今までは

VBA より便利で手軽 Excel 操作スクリプト言語「Ruby」へのお誘い (前編)
Win32OLE 活用法 【第 2 回】 Excel

を参考にしていた。

さすがに手間なので、書き込み限定で、

Ruby1.9でWriteExcelを試してみた。

りもしたけれども、 WriteExcelspreadsheet みたいなライブラリは、
Excelで使える機能の代替が無いか散々調べたあげく、
結局、細かい設定やExcel依存の機能をwin32ole経由で処理することが多いわけで。

ちょっと凝ったことをやりたければ、イチからwin32ole経由でExcel操作するスクリプトを書いた方が早い。
とはいえ、vba/vbscriptで培ったwin32ole操作スキルなんて普段使わないと忘れるので、
いつも思い出すところからスタートするのも苦痛。

Excel操作の必要があるたびに、Excel互換ライブラリを探して、無ければvba/vbscriptの復習。
vba/vbscriptを捨てるためにrubyに移行しているのに、復習からスタートする必要があるのは、いつも釈然としなかった。

Excelの読み書きをしたいんであって、vba/vbscriptの復習をしたいわけじゃないんだけど、、
っと思いつつ、久々に「ruby excel」でググったところ、
上位で見つけたExcel用のモジュールがとても便利だった。

Ruby: Win32OLEでの Excelの操作

これぐらい小さいモジュールであれば見ればすぐ思い出せるし、拡張や応用も楽。

(いい意味でvba/vbscriptよりも使いやすい)独自文法で、
(vba/vbscriptよりは落ちるけど比較的)多機能な
凝ったExcel互換ライブラリを無理に探す必要はないなぁ…っと、
目から鱗が落ちる思いでした。

以下、参考資料。

Ruby による Win32OLE プログラミング

2013年4月16日火曜日

さくらVPS CentOS6.2にsystemuをインストール ruby-2.0.0-p0

  1. systemuのインストール
  2. rubyから実行した外部コマンドの出力結果が EUC-JP なのに、端末の表示は UTF-8 の場合、当然ながら文字化けする。
    リダイレクトでファイルに書き込んで、「iconv -f euc-jp -t utf-8」で文字コードを変換するのも何か微妙な気がしたので、
    systemuを使用することにした。

    サンプルスクリプト(test.rb)のイメージは、以下のような感じ。
  3. Rubyから外部コマンドを実行する場合の参考資料
  4. Rubyで外部コマンドを実行して結果を受け取る方法あれこれ systemu で外部コマンドを実行する
    systemu を使用して Ruby から外部コマンドを実行する

2013年3月27日水曜日

さくらVPS CentOS6.2にraccをインストール ruby-2.0.0-p0

  1. raccのインストール
  2. Racc でおてがる構文解析を見て、raccを使ってみたくなった。

    ヘルプを表示する。

  3. 【補足】「--no-ri --no-rdoc」オプションをつけなかった場合。
  4. でインストールした場合に、

    っと、以下の警告が出ていた。

    ひとまずgemのインストール場所を探す。

    16進数の制御コードでgrepしてみる。

    16進数の制御コードでgrepしても見つからない。。


    こういうときは、「--no-ri --no-rdocオプションをつけて、ドキュメントをインストールしない対処でいいんだろうか。
    「/usr/local/lib/ruby/gems/2.0.0/gems/racc-1.4.9/lib/racc」ディレクトリ配下に格納されているファイルで「cparse.so」だけバイナリファイルで、「*.rb」じゃないのが原因な気もする。

2013年3月20日水曜日

さくらVPS CentOS6.2でインターネット公報SGMLをOpenjadeを使ってHTML変換

  1. インターネット意匠公報のダウンロード
  2. 電子署名検証(TARP7→TAR形式)
  3. インターネット利用による公報発行サイトにも書いておいたが、Windowsのクライアント上で、あらかじめ、


    電子署名検証方法について(「特許庁公報電子署名検証プログラム」のダウンロード)


    に従って、プログラム本体のダウンロードと電子署名検証を一度は試しておき、取得した以下のファイルをインターネット意匠公報(TARP7形式)と同一ディレクトリに格納する。


    ・電子署名検証して取得したルート証明書(例:JPT_2013006_01-01_root.der)
    ・p7verify.jar


    TARを解凍する。


  4. OpenJadeのインストール


  5. CATALOGのファイルの用意
  6. 「./JPD_2013006/SOFTWARE/CATALOG_BASE.FIL」(Shift-JIS)を元に、ファイル名を小文字にしておく。


    Linux(CentOS6.2)でデフォルトがutf-8エンコーディングのため、以下の加工をしておく。

    ・「*1*:\」、「*2*」の文言を削除しておく。
    ・ファイル名を小文字にしておく。
    でvimの文字コードを「Shift-JIS」に変更して編集できる。

  7. SGMLDECLファイルの用意
  8. 「./JPD_2011048/GAZETTE.SGM」を元に、ファイル名を小文字にしておく。



  9. DTDファイルの用意
  10. 「./JPD_2011048/DES.DTD」を元に、ファイル名を小文字にしておく。



  11. ENTITYファイルの用意
  12. 「./JPD_2011048/SOFTWARE/*.ENT」を元に、ファイル名を小文字にしておく。



  13. 公報(SGML 文書)を閲覧するための編集形式について
  14. 「公報仕様 意匠、商標、公開・国際商標、審決 第8版について」-「第3編 公報文書の詳細」-「1.意匠公報」-「1.5. 公報編集形式」に以下の記載がある。

    SGML文書より、表示例のごとく表示するための編集形式を以降に示す。
    公報(SGML 文書)を閲覧するための閲覧ソフトウェアは以降の編集形式にしたがって、公報データを表示すること。


    公報ビューアでの編集形式が記載されている「./JPD_2011048/SOFTWARE/DES.CSV」(euc-jp)が参考になる。

  15. DSSSLスタイルシートの用意
  16. DSSSLスタイルシートを「euc-jp」で作成する。

    でvimの文字コードを「euc-jp」に変更して編集できる。



  17. SGMLの準備
  18. 何かいいサンプルが無いかとGoogleで探したら、意匠登録第1429489号が任天堂の「Wii U」の意匠らしいので、それをサンプルに使ってみる。


  19. マルチTIFFの解凍
  20. ImageMagickのconvertコマンドを使用する。
    詳細はさくらVPS CentOS6.2でインターネット公報SGMLのマルチTIFFを分割で解説済みのため、割愛する。


    convertコマンドで分割する。
    IMGファイル(マルチTIFF形式)に格納されている順序が以下のため、convertコマンドで抽出順序順に連番を付与すると、残念ながらファイル名がずれてしまう。

    ということで、RMagickを使ったRubyスクリプトを作成した。

    IMAGEタグのORIGINAL-FILE-NAMEに設定されているファイル名で書き込みをしているため、マルチTIFFに格納されているイメージがJPEG/TIFFかどうかを判定する必要もない。

    スクリプトを実行する。



  21. HTMLへ変換
  22. openjadeでHTML変換し、iconvで文字コードを「utf-8」に変換する。


  23. HTMLをブラウザで表示
  24. 「Internet Explorer 9(以下IE9)」から、デフォルトでTIFF表示できる。TIFFプラグインを考えたくないなら、IE9でOK。








  25. 公報ビューアで元SGML表示
  26. 公報ビューアで表示した場合と比較しても、特に問題ないように見えるので、ひとまずは満足した。







  27. SGML/DSSSL/JADEの参考資料
  28. SGML/DSSSL/JADEについては、以下を参考にした。

    「SGML」

    The SGML/XML Page

    「DSSSL」

    DSSSL入門
    DSSSLへの手引き
    The DSSSL Cookbook

    「2013/04/09追記」
    文書スタイル意味指定言語 (DSSSL)

    「JADE」

    フォーマッターJADE
    OpenJade

    DSSSLは、Lisp Schemeを手本にしているので、細かい表現はSchemeが参考になる。

    「Scheme」

    もうひとつの Scheme 入門
    逆引きScheme
    scheme Programming
    Gauche ユーザリファレンス
    「2013/04/09追記」
    Scheme演習


2013年3月7日木曜日

RubyでOffice2007/2010のExcel/Word/PowerPoint/VisioファイルをPDF変換する際の注意点

  1. PDF/XPSドキュメントの作成について
  2. Office2010から標準でPDF/XPS ドキュメントを作成する機能が組み込まれている。
    ※Office2007では、2007 Microsoft Office プログラム用 Microsoft PDF/XPS 保存アドインをインストール必要がある。


    基本的には、指定した形式のファイルにエクスポート(ExportAsFixedFormatメソッド)を使用すればいい。


  3. ExportAsFixedFormatメソッドのパラメータについて
  4. Document.ExportAsFixedFormat Method (Word)
    Workbook.ExportAsFixedFormat メソッド (Excel)
    Presentation.ExportAsFixedFormat Method (PowerPoint)
    Document.ExportAsFixedFormat Method (Visio)


    出力先のパスを指定するキーワード名レベルで、各Officeドキュメントで指定方法が変わるので注意が必要。微妙な相違で落ちるため、コピペ対応をしようとして少しはまった。。
    例:Word…「OutputFileName」、Excel…「Filename」、PowerPoint…「Path」、Visio…「OutputFileName」

    個人的には、必須/任意オプションをオンラインドキュメントで確認しつつ、vbaの「マクロの記録」や「オブジェクトブラウザー」でコード値を調査し、試行錯誤していくのがやりやすかった。
    Office2010だと、開発タブが無いため、Office 2010 のリボンに「開発」を表示させたいを参考にして、「マクロ」や「Visual Basic」エディタから「オブジェクトブラウザー」を使用する。


  5. rubyスクリプトでPDFに変換する方法について
  6. 以下の記事が参考になった。
    Word,Excel,PowerPointをPDFに一括変換
    WordファイルやExcelファイルを一括でPDFに変換するRubyスクリプト


    プリンタドライバへの印刷と違い、ファイル名を指定して保存とほぼ同等な処理のため、PDF変換速度が速いのにびびった。
    なお、PowerPointだと、「ExportAsFixedFormat」が落ちるため、「SaveAs」メソッドで回避する必要がある。これではまった。。

2013年2月24日日曜日

さくらVPS CentOS6.2にRuby 2.0.0-p0をインストール

    さくらVPS CentOS6.2にRuby(1.9.3-p392)をインストールで既にruby-1.9.3-p392をインストール済みの前提。


  1. ruby-1.9.3-p392のアンインストール


  2. ruby-2.0.0-p0のインストール


  3. 以下のとおり表示されることを確認する。

さくらVPS CentOS6.2にImageMagick + RMagickをインストール

    CentOS6 +Rails3 +ImageMagick +RMagick +file_column Install
    を参考にさせていただいた。

  1. ImageMagickのインストール
  2. [y/N]を聞かれるので、「y」を入力して、「Enter」キーを押下する。


  3. ImageMagick-develのインストール
  4. [y/N]を聞かれるので、「y」を入力して、「Enter」キーを押下する。


  5. Ruby(1.9.3-p392)のインストール
  6. さくらVPS CentOS6.2にRuby(1.9.3-p392)をインストールでインストール済みの前提のため、割愛する。


    (2013/2/24追記)
    以下、Ruby 2.0.0-p0でも動くことを確認した。


  7. rmagickのインストール

さくらVPS CentOS6.2でインターネット公報SGMLのスクレイピング

  1. インターネット商標公報のダウンロード
  2. 電子署名検証(TARP7→TAR形式)
  3. インターネット利用による公報発行サイトにも書いておいたが、Windowsのクライアント上で、あらかじめ、


    電子署名検証方法について(「特許庁公報電子署名検証プログラム」のダウンロード)


    に従って、プログラム本体のダウンロードと電子署名検証を一度は試しておき、取得した以下のファイルをインターネット商標公報(TARP7形式)と同一ディレクトリに格納する。


    ・電子署名検証して取得したルート証明書(例:JPT_2013006_01-01_root.der)
    ・p7verify.jar


    TARを解凍する。


  4. ruby1.9のインストール
  5. さくらVPS CentOS6.2にRuby(1.9.3-p392)をインストールでインストール済みの前提のため、割愛する。

    (2013/2/24追記)
    以下、Ruby 2.0.0-p0でも動くことを確認した。


  6. hpricotのインストール
  7. 一部のHTMLパーサはSGMLの簡単なパースなら出来る模様。
    不具合があるパターンがあれば、正規表現で抜くことになると思う。




  8. gazette.rbの編集
  9. サンプルとして、登録番号を取得するスクリプトを書いてみた。
    公報SGMLはeuc-jpなので、エンコーディング周りには注意が必要。


    各ファイルの詳細仕様については、公報仕様書を参照。2013年2月現在は、第8版が最新。
    公報仕様 意匠、商標、公開・国際商標、審決 第8版について




  10. gazette.rbの実行
  11. 以下のとおり表示されることを確認する。




さくらVPS CentOS6.2にRuby(1.9.3-p392)をインストール

    CentOS(6.3)にRuby(1.9)、Rails、Passengerをインストール
    CentOSにRails 3.2.xとruby 1.9.3-p125をインストールする方法
    完全にメモ。CentOS 6.2 に ruby をインストール
    を参考にさせていただいた。

  1. yamlのインストール
  2. ruby-1.9.3-p392のインストール前に、yamlをインストールしないと以下のエラーが出る。 その場合は、再度インストールのやり直しが発生するので、注意が必要。
  3. ruby-1.9.3-p392のインストール
  4. gemのアップデート
  5. gemのバージョンをsudoで確認する。 sudoした際に、pathが通っていないと、以下のエラーが出る。 上記のエラーが出る場合は、/etc/sudoersを編集する。
    以下のパスに、「/usr/local/bin」を追加しておけばOK。
    gemのアップデートをする。


2013年2月20日水曜日

Ruby1.9でWriteExcelを試してみた。

Ruby1.9でWriteExcelを試してみた。
やりたいことは一部(列幅の自動調整、改ページプレビューの設定とか)はできなかったけど、書式設定や印刷設定等の機能については、概ね満足した。


以下、参考サイト。


RubyでExcelファイルを作成する
writeexcel.rdoc
examples
writeexcel Rubygem Reference

Ruby1.9のエンコーディングではまった。

Windows 7のコマンドプロンプトとutf-8/Shift-JISのテキストファイルの処理ではまったのでメモ。


  • スクリプト本体の保存する文字コード(utf-8 or Shift-JIS)
  • マジックコメント(# -*- encoding: UTF-8 -*-)
  • 外部エンコーディングの指定(#! ruby -E Windows-31J:utf-8)
  • Shift JISのファイルをUTF-8に変換して読み込み(open("test.txt", "r:windows-31j:utf-8")


辺りの対処を試行錯誤してたら、解決した。


以下、参考サイト。


Rubyのエンコーディング
OSとRubyスクリプトの文字コードが異なる場合の対策
[ruby] Ruby 1.9.1のm17nについてメモ
class Encoding
Ruby M17N の設計と実装

あたりが参考になった。

2013年2月17日日曜日

Ruby1.9の正規表現エンジン鬼車

鬼車を意識して使ったことはなかったんだけど、名前を使った参照もできるのね。作ったツールの正規表現を今度見直してみよう。


第5回 Ruby 1.9 の新機能ひとめぐり(後編): 知っておくとお得な機能
鬼車 正規表現 Version 5.9.1


「2013/03/19追記」
Unicodeスクリプトを使って、正規表現を漢字、ひらがな、カナカナにヒットさせることができることを知った。


日本語に絡むUnicodeブロックとスクリプト(正規表現)
preg系正規表現のUnicodeプロパティ、スクリプト、ブロックの挙動
漢字、ひらがな、カナカナにマッチ
Unicodeで「漢字」の正規表現