Category Archive: プログラミング

post by yamamoto | | 0 | 521 views

匿名化用 openssl コマンド sha256でダイジェスト

openssl rand 3*1024 | openssl dgst -sha256 | sed "s/(stdin)= //" 【解説】 ・まず openssl rand で 3kb のバイナリファイルを作成し、またパイプを通して openssl dgst -sha256 でダイジェストを生成する、最後に sed で (stdin)=を除けば、 いろいろなプログラミング言語で 変数に代入できます。 例えば、shell の場合: dgst=openssl rand 3*1024 | openssl dgst -sha256 | sed "s/(stdin)= //" echo $dgst 【出力例】f142f690487be57f5ce41f71a3ae1c3928a8ecc1bc2b06e2e33c8363673d3c22

post by yamamoto | | 0 | 501 views

AppleScript : tell application “Microsoft Word” したら、あれ!仮想マシンのWordが起動された!!!

tell application "Microsoft Word"     set newDoc to make new document end tell このように新しワード文書を作ろうと思ったら、Parallels Desktop 仮想マシン内の Word が起動しようとします。 恐らく VMware Fusion を入れた場合も同じ現象が発生しますが、 当分の方法として、わざと"Microsoft Word 2011" とかに変更すると、アプリを選択する画面が出てきますので、 Word を選択すれば解決できます。     【追記】もっといい方法を見つかりました。   set WordApp to "/Applications/Microsoft Office 2011/Microsoft Word.app" if not application WordApp is running then     tell application WordApp         activate     end tell end if tell application WordApp     set newDoc to make new document end tell しっかりパスまで指定します。   【更に追記】 set ExcelApp to "/Applications/Microsoft ...

post by yamamoto | | 0 | 453 views

Applescript で XML DOM を挑戦しよう!

以前、仕事の関係で特定健診のXMLファイルからCSVへ変換するC#プログラムを書きました。 直近、研究のため、WHO薬用植物の本から概念を抽出してXMLに書き込んだり、読み取ったりするPHPプログラムも作りました。 最近、AppleScript で 脆弱性検査結果の XML ファイルの処理をしようと考えています。 まずは、情報集めですね。 AppleScript は中級者のものといわれて、あまり本とか情報がないようです。 DOM で XML を取り扱うのは、いくつかのサイトにはありますが、とりあえず フランスの SATIMAGE とういうサイトを中心に参考します。 フランスのサイトですが、幸い英語のページも用意されています。 トップページに、SmileLab と Smile の2つのソフトが紹介されて、データの可視化とワークフローの自動化のツールですが、 Smile のほうが XMLList osax を利用しています。XMLList osax こそ AppleScript での XML DOM の実装であります。 SATIMAGEでは、XMLList の辞書も提供されています。 XMLList のダウンロードは 下記の2つがありますが、なぜか Build 373 のリンクが切れているようです。 XMLLib osax 3.7.0 (build 373) XMLLib osax 3.7.0 (build 370) 余裕があれば、少しずつサンプルなり追加記事をしていきます。 shyunsei.blogspot.jp 関連サイト: XPath -Tutorial 

post by yamamoto | | 0 | 316 views

awk で awk を作る!

例えば、201404-201406 の DPC EFファイルがありました。

これらのファイルの先頭に年月(YYYYMM)と tab を追加したい場合は、下記の awkでいけます。

しかし、ファイルが多い場合、上記のコマンドを手入力するのは間違いやすいし、大変労力が要る作業になります。 もちろん、Excelを使えば、201404のところを列にして、マウスポインターで引っ張ると201409列まで作って、 後はできた内容をテキストエディタへコピーして、tab を space に置換えすれば、できないことはありません。 というか、いままで良くExcelの方法でやって来ました。 では、awk ならどうなるかというと下記の一行コマンドで上記6行のコマンドを作り出せます。簡単でしょう!!!

簡単に説明しましょう。 まず ls -l して、ファイルの一覧を出力します。すると9番目のカラム($9、OSによって異なる場合もある)はファイル名になります。 ファイル名から substr関数で 15文字目から4文字を取得します。 後は、\047でシングルクォーテーションすれば、完成です。 (ダブルクォーテーションは \" でエスケープします)

post by yamamoto | | 0 | 371 views

Applescript で PowerPoint に 正弦波を描く〜(残念!できないよう〜)

下記のスクリプトでサブオブジェクトとプロパティをチェックしましたが、自由に曲線を描くものはありませんでした。>< パワーポイントのファイルはこちらの記事のサンプルを読み込みました。

結果は下記の通りです。

post by yamamoto | | 0 | 1,832 views

perl で LDAP の ldif を csv に変換してみよう〜

下記のような LDAP の ldif ファイル(似たファイルならなんでも)を dn, objectClass, uid,... のような csv ファイルに変換するプログラムです。ただ100行未満のプログラムですが、スキーマ(下記はinetOrgPersonというデフォルトのスキーマ)の情報がなくてもアカウントの一覧が作れます。いちいちテキストからExcelにコピペすると百数十件でも死ぬほど時間かかりますね。試していないが、数万件でも軽々変換してくれるだろう〜(^^) LDAP以外のテキストは、35行目の my $patten = "^$header:(.*)"; を弄ってみてください〜。 dn: uid=S0205,ou=mailsys,dc=syokuba,dc=mycompany,dc=co,dc=jp objectClass: inetOrgPerson uid: S0205 sn: hanako cn: Yamato Hanako mail: jugyouina@dep.mycompany.co.jp userPassword:: ************************* structuralObjectClass: inetOrgPerson creatorsName: cn=admin,dc=syokuba,dc=mycompany,dc=co,dc=jp createTimestamp: 20090413032409Z entryCSN: 20090413032409.000000Z#000005#000#000000 modifiersName: cn=admin,dc=syokuba,dc=mycompany,dc=co,dc=jp modifyTimestamp: 20090413032409Z dn: uid=S0206,ou=mailsys,dc=syokuba,dc=mycompany,dc=co,dc=jp objectClass: inetOrgPerson uid: S0206 sn: tarou mail: tarou@jimu.mycompany.co.jp structuralObjectClass: inetOrgPerson creatorsName: cn=admin,dc=syokuba,dc=mycompany,dc=co,dc=jp createTimestamp: 20090413032409Z cn: Ooshiro Kuniko userPassword:: ************************* entryCSN: 20090417025558.000000Z#000001#000#000000 modifiersName: uid=S0206,ou=mailsys,dc=syokuba,dc=mycompany,dc=co,dc=jp modifyTimestamp: 20090417025558Z 【サンプルプログラム】 perl ldif2csv.pl filename.ldif

変換した結果はこちら:

post by yamamoto | | 0 | 600 views

ポータルウェブアプリ開発セット

  ずっとスマートフォンだけでウェブアプリの開発ができるなら便利かなと思っています。 それがやっと揃いました。 1)F-05D (要root化) 2)ポケットチャージャー 02(DOCOMOショップでポイントを使って交換した) 3)micro USB 充電用ケーブル(百均で買った) 4)スタンド(展示会で貰った) 5)Rii mini Bluetooth キーボード   ◎どこまでできる?    root化した端末にdebian squeeze をいれて(設定方法はあまり変わらないから、こちらの記事を御覧ください)、apache2 と php5 をインストしました。移植した自作ウェブアプリは apache2 の rewrite を使うから、「# a2enmod rewrite」で rewrite を有効にしました。   移植したウェブアプリは、400個の XMLを編集するツールで、下記の技術が関連します。   (1)PHP: DOMDocument(XMLの入出力)   (2)xaja   (3)Model View Controller   (4)View としての Smarty プログラムの編集は、vi コマンド(英語のみ)や Droid Edit をつかいました。 ◎ パフォーマンス   free というコマンドで確認したところ、トータルメモリ648mbのうち、617mb 使用済みで、残り30mb しかないが、400個の xml ファイルを読み込んでリストアップした時間は、2秒弱ほどでした。 ◎ データベースは、mysql とpostgrel のインストールはまだうまくいかなかったが、sqlite が使えたのを確認しました。(sqlite を使った wordpress が動いています)

post by yamamoto | | 0 | 491 views

perl memo DBD::CSV csv file name 2

ファイル名を大文字と小文字の両方を使った場合、テーブルのエリアスが使えなくなる。 例えば、 select a.* from herbRecordNo a => エラー select a.* from herbrecordno a => エラーにならない 原因は不明です。><

post by yamamoto | | 0 | 1,204 views

Apache2 rewrite 開発環境を iPad の lighttpd に移行する

MacBook pro の php 開発環境を iPad に移してどこでも開発できるようにしたいという目標でチャレンジしてみました。 開発しているシステムは、MVC(モデル/ビュー/コントローラー)の枠組みを利用したもので、URI を rewrite して、 index.php から URI に対して応答するコントローラーとメソッドを呼び出しますから、Webサーバの rewrite 機能が必須です。 それから、モデルからはデータベースではなく xml ファイルに対して読み取りと書き込みを DOM で行いました。 MacBook pro の Apache のルートではなく /APP に設置する形で開発を進んでいます。 /APP/.htaccess の中身は下記の通りです。 Options +FollowSymLinks RewriteEngine On RewriteBase /APP/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule !\.(pdf|ico|gif|jpg|png|css|html|xml)$ index.php 一方、lighttpd では .htaccess は対応していません。iPad で Web 開発環境を作るのはこちらの記事をご参照ください。 まず、rewrite をオンにするために /etc/lighttpd2.conf を編集する必要があります。mod_rewriteの記載がなければ、追加してください。 server.modules = ( "mod_cgi","mod_indexfile","mod_dirlisting", "mod_accesslog","mod_rewrite" ) 続いて、rewrite の変換ルールを追加します。

これで MacBook と同じ動きができます。

post by yamamoto | | 0 | 2,180 views

Web Proxy CGI によるプライベートネットワーク内の Web サーバの公開

【ご注意】この方法を利用する際に、セキュリティをよく考慮した上て、自己責任でやって下さい。 やりたいこと 既に公開されている web サーバが(例:www.myweb.com)あります。 ルータの NAT のポート 80 に設定されていないプライベートネットワーク内の別の web サーバ(例:192.168.4.80)もあります。 これを www2.myweb.com として公開したいのです。 使用した方法(他にも方法あると思いますが) CGIProxy を www.myweb.com に設置し、www.myweb.com から 192.168.4.80 をアクセス方法です。 手順 CGIProxy をダウンロードします。 nph-proxy.cgi を編集します。 許可するサーバの設定(192.168.4.80をリストに追加します) @ALLOWED_SERVERS= ('192.168.4.80') ; 拒否するネットワークを編集します。(ルータ192.168.4.1をリストに追加します) @BANNED_NETWORKS= ('127', '192.168.4.1', '172', '10', '169.254', '244.0.0') ; ルータへのアクセスを拒否しないとルータの設定ページが公開してしまうからです。 これで、URLを http:/www.myweb.com/cgi-bin/nph-proxy.cgi/30/http/192.168.4.80/ で外から 192.168.4.80 をアクセスすることが可能です。 30 のところは適当に数字をいれてください。しないと下記のメッセージの画面が出てきます。 WARNING: Entering non-anonymous area! www.myweb.com のリダイレクトの設定 vi /etc/apache2/sites-enabled/000-default 下記を追加します。     <VirtualHost *:80>     DocumentRoot /var/www/www2/     ServerName www2.myweb.com       # Other directives here     Redirect / http:/www.myweb.com/cgi-bin/nph-proxy.cgi/30/http/192.168.4.80/     </VirtualHost>  /etc/init.d/apache2 restart apache2 を再起動します。 基本認証のページをアクセスすると下記の画面が出てきます。