2008年12月31日水曜日

大晦日

もうすぐ2008年も終わり。

エクスブリッジに入社して約1年。今年はこのブログと共に技術と知識をたくさん蓄えたような気がする。

まだまだ学ばなければならないこととか、人として成長しなければならないこととかもあるから来年も忙しくなりそう。

大事な事は3つ。

  • よい人間関係を作るための「礼儀」
  • 与えられた仕事をやり遂げる「責任感」
  • 挑戦し続ける「向上心」

今年だけで何回言ったか分からない。だけど、言う事が毎回違っていたら信用してくれないし、人は忘れやすいから何回も言わないといけない。

来年も同じことを言い続けます。

こんなことを書いていると後で見返したときに恥ずかしくなるけど、大晦日だから許す。

まぁなんだかんだいって今年も面白い1年であった。

来年はどんなことが待ち受けているか楽しみ。

今年一年このブログを訪れてくれた人、ありがとう。

来年もよろしく!

2008年12月30日火曜日

年末は大掃除

昨日は会社の仕事納め。

今は長野の実家で、こたつに入りながらパソコンを叩いています。

やっぱり寒いっすね。

バス停に降り立ったころは雨が軽く降ってましたが、しばらくすると雪に変わってました。正月っぽくてよいです。

さて、昨日の仕事納めでは、仕事は午前中に片付けて午後はマシンルームの大掃除をしてました。2、3時間かけただけあって、かなりすっきり片付き満足です。

開発用のマシンは仮想化のおかげで、物理的にはほぼ一台で十分なので、すっきりしたマシンルームをみると仮想化のありがたみを実感できます。

夕方はI嬢のお手伝いで松坂屋で注文していた御寿司を取りに行って、みんなでビール片手に御寿司をつまみながら乾杯。

今年もお疲れ様でした。

来年もよい年でありますように。

名古屋の自宅もきっちり大掃除したし、今年に思い残すことはない!!・・・はず。

2008年12月29日月曜日

【Linux】PDFを結合、分割できる「PDFTK」をインストール

PHPから既存のPDFを結合するには、どうすれば良いかを調査したときのメモ。

PHPのPDFライブラリを使うとレスポンスが悪そうなのと、良いフリーのライブラリがないので、PDF編集ソフトをインストールしてコマンドラインで実行するやり方をやってみた。

Linux(私の環境はCentOS5.2)で使えるPDF編集ソフトは「PDFTK」がよさげ。ライセンスはGPL

CentOSの場合はサードパーティ製のパッケージをyumに追加すればインストールは簡単。やり方は前の記事を参照。

# yum install pdftk

結合するコマンドは
# pdftk 1.pdf 2.pdf cat output out.pdf

詳しくは@ITの記事を参考に。

処理自体はほぼ一瞬で終了するので速度的には満足。

あとはPHPから実行すれば完了と思い検索してみると、PHPからPDFTKを操作するライブラリがGoogle Codeで開発されていた。ライセンスはNew BSD License。

まだbeta版なので、参考程度の方がよさそう。

<2009/03/22 追記>
TCPDF+FPDIを使うと既存のPDFを読み込むことができるので、表示するためだけに結合するには、こっちのライブラリを使った方がよさげ。

インストールの方法は下記の記事を参考に。
【PHP】TCPDF 4.5.xxx+FPDI 1.2.1で既存PDFを読み込み→編集

2008年12月26日金曜日

JODConverterをPHPから利用してPDF変換

前の記事でJODConverterのインストールとデバッグで苦労してましたが、今度はPHPからJOCConverterを利用する方法。

環境はCentOS5.2

何も設定しないと
.openoffice.org2
のディレクトリがないと怒られる。

まずapacheの実行ユーザを確認。

httpd.confの「User」

lamppを導入している場合はこれが「nobody」とかになっているので、Group共に「apache」に変更。

ちなみにapacheユーザがいるかどうかは
# id apache
で確認。

通常apacheユーザはログインできないようになっているので、ログインできるようにして、OpenOffice.orgが実行できるようにユーザディレクトリなどを作成

# vi /etc/passwd

apache:x:48:48:Apache:/var/www:/sbin/nologin

apache:x:48:48:Apache:/home/apache:/bin/bash

# mkdir /home/apache
# chown apache /home/apache

OpenOffice.orgを起動してユーザ設定ファイルを作る。
# su apache
$ /opt/openoffice.org3/program/soffice

しかし、これだと/home/apache/.openoffice.orgしかできなかった。

めんどくさくなって、/root/.openoffice.org2をフォルダごとコピー
# cp -r ./.openoffice.org2/ /home/apache/

apacheユーザになって実行テスト
$ java -jar jodconverter.jar -f pdf '/tmp/test.xlsx'

問題なく完了。

最後にログインしないように戻しておく。
# vi /etc/passwd

apache:x:48:48:Apache:/home/apache:/sbin/nologin

webサーバを再起動
# /etc/rc.d/init.d/lampp restart

前のセッションが残っていると悪さするので削除
# rm -f /tmp/sess_*

新しくユーザ追加するやり方の方が楽だったかも。

実際試してみると

データ取得 → Excelの特定のセルにセット → PDF変換

で一つの帳票がだいたい15秒くらいかかった。PDF変換だけで10秒ちょっと。なんか速くする方法考えないと。

<2009/01/21 追記>
再起動後はパスの設定がリセットされるので、一度rootでログインしたあとlamppを再起動しないと変換に失敗する。

起動時にパスを設定するスクリプトを実行する必要がありそう。

<関連記事>

2008年12月25日木曜日

メリークリスマス!

今年も一人で迎える聖夜の夜。

ちょうど一年前のブログ

今年はモッチーサンタが寂しい男たちのために(?)プリンを作ってきてくれた。

image

おいしかったです。ありがとう。

今年は本当に1人じゃないぞ IT戦士の3Dクリスマス

2008年12月24日水曜日

2008年名前ランキング

明治安田生命のサイトで2008年名前ランキングが掲載されています。

名前ベスト100

私の名前は第16位にランクイン。

いい名前と思ってくれるのはうれしいけど、同じ名前が増えるのは微妙な感じ。社内にすでにもう一人いるし。

2008年12月22日月曜日

【Linux】hosts.allowとhosts.denyの設定

基本はファイヤーウォールでポートを閉じればいいけど、外に公開しているサーバはsshのサービスを狙ってアタックされるので、その対策のためのメモ。

環境はCentOS

ファイヤーウォールを設定してない場合は前の記事を参考に。

アタックされているかは/var/log/secureに認証ログがあるので、これを参照。

# vi /etc/hosts.allow

sshd : 192.168.0.

# vi /etc/hosts.deny

sshd : ALL

全て拒否したい場合は
ALL : ALL
と記述。

他のポートも開けば場合は適宜設定。

sambaはsmb.confに設定する項目があるので、そちらを編集する。参考

2008年12月19日金曜日

【.NET】クラスライブラリを作成するときのMSDNガイドライン

Visual Studio 2005などで開発を行う.NET開発者は一度は読んでおいた方がいいドキュメント。

クラス ライブラリ開発者向けのデザイン ガイドライン

リンク切れの場合はMSDNで検索すれば、すぐ出てくると思う。

記述してあるのは

  • 名前空間、クラス、メソッド、プロパティなどの名前付け(命名規則)
  • エラー発生および処理のガイドライン
  • クラスライブラリのセキュリティ

などなど、クラスライブラリを作成するときだけではなく、普通にWebアプリケーションやクライアントアプリケーションを開発するときに役に立つ。

役に立つというか一緒に開発する人には知っておいてほしい最低知識。

名古屋でプロのSEを目指す

2008年12月18日木曜日

【Visual Studio 2005】ドキュメントを自動生成する「Sandcastle」

Vistual Studio 2005+vb.netのXMLドキュメントを自動的にMSDNのヘルプ形式に変換してくれるツールの紹介。

3年ぐらい前に調べたときは見つけられなかった。

@IT - 特集:ツールを使ったドキュメント作成技法(前編)

ここのブログを参考に。

必要なツールは

Sandcastle ・・・ コマンドベース(現在:2.4.10520)

Sandcastle Help File Builder ・・・ SandcastleをGUIで操作(現在:1.7.0.0)

両方msi形式をダウンロードしてインストール。Microsoftで作成されたフリーのツールらしい。インストール自体はmsiを実行するだけで終了。

Sandcastle Help File Builderを起動して、addボタンからコンパイル時に生成されるXMLドキュメントのxmlファイルを指定。これを生成するためにはVisual StudioのMy Project→コンパイル→「XMLドキュメントファイルを生成する」にチェックする。デフォルトで入っているはず。

image

ヘルプファイルの生成は
Documentation → Build Project

Project Propert
└Help File 
   └Language

は日本語を選択しとく。

Error: Unresolved assembly reference
と怒られる場合は、依存関係のファイルを指定しないと駄目らしいので

Project Propert
└Build
   └Dependencies

に依存しているdllファイルなどを指定。デフォルトではprivateのメソッドを出力してくれないので、

Project Properties
└Visibility
   ├DocumentAttributes
   └DocumentPrivates

などはTrueの方がいいかも。他はお好みで設定。参考

ビルド自体はちょっと時間がかかるけど、名前空間や命名規則をしっかり管理していると、とても見やすいドキュメントになる。

ステキすぎる。

<2009/05/08 追記>
Sandcastle Help File Builderのバージョンが1.8.0.1 Betaに上がっていたのでインストールし直してみた。

新規にプロジェクトを作成した後にProject Explorerの「Documentation Sources」にVisual Studioのvbprojファイルを追加しただけでヘルプファイルを自動生成してくれた。

依存関係とかうまいこと解決してくれるみたい。

2008年12月17日水曜日

またGoogle八分?

前にもありました(前の記事)が、またGoogle先生から嫌われてしまいました。月曜日からアクセス数が激減していると思ったら、今までの人気コンテンツがGoogleで検索してもヒットしない・・・。

なぜ?

前に同じような現象が発生してから、約半年ぶり。

過剰なSEO対策なんてしてないのに・・・。

SEO対策しているといえば、毎日記事の最後につける会社関連のリンクのみ。これくらいはいいでしょ?

Googleのウェブマスターツールで確認しても特に問題なし。

前はしばらくほっといたら復活したので、今度も大丈夫かな。

 

<2008/12/20 追記>
5日間ぐらいしたら元のアクセス数に戻った。
・・・というか、無事Googleの検索でヒットするようになった。
原因は不明。

2008年12月16日火曜日

【Ubuntu】VMware Server 2.0をインストール

前の記事ではCentOS5.2にVMware Server 2をインストールしたけど、今度はUbuntu Server Edition 8.10にインストールしてみた。

インストール方法はここを参考に。

rpmパッケージでも依存関係を無視すればインストールできるみたいだけど、rpmを使う意味がないので、素直にtarからインストールすることにした。

必要なツールをインストール
# apt-get install linux-headers-`uname -r` build-essential xinetd

解凍とインストール
# tar xzvf VMware-server-2.0.0-116503.i386.tar.gz
# cd vmware-server-distrib/
# ./vmware-install.pl

コンパイルからインストール、設定まで適宜進めていく。

VMwareの管理画面にアクセスするためのポートと仮想マシンの置き場所とシリアル番号は事前に決めとく(用意しとく)。

2008年12月15日月曜日

【Ubuntu】ファイヤーウォール(firewall)設定

Ubuntu Serverのファイヤーウォール設定メモ。Ubuntu Server Edition 8.10

CentOSみたいにsystem-config-securitylevelがあるかと思ったら、そこまでのはないみたい。その代わりufwというコマンドを使って設定するらしい。参考

# ufw enable これでマシン再起動後もufwが有効になる。

ローカルからのsshアクセスを許可
# ufw allow proto tcp from 192.168.0.0/24 to any port 22

基本は拒否
# ufw default deny

sambaは許可。細かい設定はsmb.conf
# ufw allow Samba
指定するサービス名は/etc/ufw/applications.d/の各ファイル内に定義されているプロファイル名

80番ポート(http)を開放
# ufw allow 80/tcp

443番ポート(https)を開放
# ufw allow 443/tcp

設定を確認するには
# ufw status

ufwはiptablesを使って設定しているので、iptableの設定を確認するのは
# iptables -L

コマンドで設定した内容は/var/lib/ufw/user.rulesに格納されている。

/etc/ufwにufwの設定内容が格納されていて、sambaやsshのアプリケーションがインストールされた際に/etc/ufw/applications.dに各アプリケーションごとにファイルが作成されて、iptablesに適用されるみたい。

2008年12月12日金曜日

【Ubuntu】ネットワーク設定

環境はUbuntu Server Edition 8.10

ファイルは/etc/network/interfaces

DHCPの場合は次のように設定。

auto eth1
iface eth1 inet dhcp

固定IPの場合は次のように設定。

auto eth1
iface eth1 inet static
address 192.168.0.24
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.3

反映はネットワークを再起動
# /etc/init.d/networking restart

名古屋のおもしろ会社エクスブリッジ

2008年12月11日木曜日

【Ubuntu】rootでログインするためにrootのパスワード設定

アニキのブログに書いてあるけど、自分用メモ。

Ubuntuはrootでログインさせずに、必要なときにsudoコマンドで管理者権限を借用しますが、サーバ運用するときにrootでログインできた方が楽なので(VMware Serverのホストになるだけだし)パスワードを設定。

Desktop Edition+複数ユーザで使用する場合は、root以外のユーザでログインするべき。

$ sudo passwd root
でrootの新しいパスワード設定。詳しくはここを参照。

ちなみにやっぱりrootのログインを無効化する場合は
$ sudo passwd -l root
UbuntuのFAQ

2008年12月10日水曜日

【VMware Server】LinuxゲストマシンにVMware Toolsをインストール

ホストの環境はCentOS5.2, VMware Server 2.0

管理画面のInstall VMware Tools…をクリックするとCD-ROMでアクセス可能になるので、Linux上でマウント

# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom

確認してインストール
# ls /mnt/cdrom
# rpm -Uvh /mnt/cdrom/VMwareTools-2.0.0-116503.i386.rpm

アンマウント
# umount /mnt/cdrom

VMware Toolsの設定
# vmware-config-tools.pl

設定後は再起動
# reboot

Linuxゲストマシンにデスクトップ環境をインストールしている場合はVMware Toolsの恩恵に預かれるけど、CUIの場合は特にインストールする意味はない気がする。時計が狂うのはcronでntpupdateをすればよい。参考

 

< 2011/05/26 Modified >
VMware Fusionの環境でVMware ToolsをInstallしたときの記事を書いた。こちら

2008年12月9日火曜日

【Linux】FTPサーバ(vsftpd)をインストール

FTPサーバを構築したときのメモ。環境はCentOS5.2

FTPサーバの有名どころはvsftpdproftpdらしいですが、yumでゲットできるvsftpdで構築。

# yum install vsftpd

自動起動
# chkconfig vsftpd on

vsftpdの設定はここを参考に。

ポートの設定はここ

 

< 2011/11/13 Modifed >
CentOS 6.0で設定したのは追記. このときのvsftpdのVersionは2.2.2

# yum install vsftpd
# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
chroot_local_user=YES
chroot_list_enable=YES

空のchroot_listを作成
# touch /etc/vsftpd/chroot_list

# /etc/rc.d/init.d/vsftpd start
# chkconfig vsftpd on

参考にしたSiteは下記

2008年12月8日月曜日

【Linux】WebminとUserminをインストール(CentOS5.2)

WebminはWebベースのサーバ管理ツール。wikipedia

Apache, Smaba, sendmailなど多くのアプリケーションの設定をGUIでできる。ユーザの追加なども簡単にできるため、Linuxのコマンドを知らない人でもサーバ管理がやりやすくなる。

image

インストールはここからrpmパッケージをダウンロード、インストール。
# rpm -Uvh webmin-1.441-1.noarch.rpm

インストール後はhttp://<サーバのアドレス>:10000/でアクセス。10000番ポートを空けるのを忘れずに。参考

次はUsermin。

Webminはサーバ管理者用の設定ツールに対して、Userminは各ユーザに提供される設定ツール。主にWebベースでメールを読んだり、ファイルにアクセスしたりもできる(もちろん権限によりアクセルできるディレクトリは制限される)。

ファイル管理はJavaで動いている。

image

インストールはここからrpmパッケージをダウンロード、インストール。

# rpm -Uvh usermin-1.370-1.noarch.rpm

インストール後はhttp://<サーバのアドレス>:20000/でアクセス。20000番ポートを空けるのを忘れずに。

名古屋のおもしろ会社エクスブリッジ

2008年12月5日金曜日

EclipseでJODConverter3.0のデバッグ

今までの経緯とここ数週間の間にアップした記事のまとめ。

  1. OpenOffice.orgかMS Office Excelで作った帳票をPDF変換したい。 記事
  2. JODConverterを発見。odfファイルとxlsファイルをPDFに変換可能なことを確認。
  3. PHPでodfファイルを操作するライブラリを探す。いいのがない。記事
  4. PHPでxlsファイルを操作するライブラリを探す。PHP-Excelを発見。
  5. PHP-Excelを使って、Excelで作ったファイルを読み込んで特定のセルに値を挿入できることは確認。 記事
  6. PHP-ExcelでPDF出力できるけど、日本語が文字化け。PHP-Excelが使っているFPDFを日本語に対応しようと頑張ったけど直らず。 記事
  7. PHP-Excelでxls形式で変換して、JODConverterで変換。でもPDF変換後に枠線が太くなる現象をなんとかしたい。
  8. 枠線を細いままPDFにするためには枠線のタイプを変更すればいいことを発見。でも、PHP-Excelでxls形式で出力すると、デフォルトの枠線に置き換えられてしまう。
  9. PHP-Excelではxlsx(MS Office2007)形式で出力することにした。
  10. でもJODConverter2.2.1ではxlsx形式には対応していない。
  11. JODConverter3.0 + OpenOffice3.0でxlsxに対応しているので、JODConverter3.0のソースをゲットしてMavenでコンパイル。
  12. ・・・しようとしたけどコンパイルが通らない。記事
  13. WindowsにEclipseの環境を整えてMavenからEclipseプロジェクトに変換するとコンパイルが通った。 記事
  14. 実行するとエラーになるので、該当箇所をEclipseでデバッグ。
  15. ・・・するためにCentOSにデスクトップ環境をインストールして、Eclipseをインストール。記事

長い道のり・・・。でもゴールはもうすぐ・・・のような気がする。

-----

問題となっている箇所を特定できたので、暫定処置。

  1. OfficeProcess.javaの「nofirststartwizard」オプションを有効に。
  2. ManagedProcessOfficeManager.javaのcatch後throwしているのをコメントアウト。

おそらくOpenOffice.orgサービスの起動と停止がうまくコントロールできてないみたい(?)。PDF変換は成功するけど、そのあとExceptionとなっていた。

ちなみに実行コマンドは次のような感じ。 環境はLinux(CentOS)。
# java -jar jodconverter.jar -f pdf /tmp/hattyu.xlsx /tmp/hattyu
.pdf

設定が必要なパスは
JAVA_HOME
OFFICE_HOME
だけかな?参考

また、設定したときに確認しておきます。

JODConverterのリリース時には直っていることを期待しつつ・・・。とりあえずゴール。

<2009/01/24 追記>
Google Codeでコンパイル済みのβ版が公開されたのでそっちを導入。

おかげで実行時に失敗していた原因がわかった。

commons-cli.jarなども一緒のディレクトリにいないと駄目らしい。

以下エラーの出力内容。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/CommandLineParser
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.CommandLineParser
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: net.sf.jodconverter.cli.Convert. Program will exit.

 

<2009/03/09 追記>
JODConverterは機能的には便利だけど、処理時間がかかってしまうのが致命的。TCPDF+FPDIで日本語も問題なく表示できるので、こっちを使った方がいいかも。
参考記事:【PHP】TCPDF 4.5.xxxでFPDI 1.2.1を使えるようにする

もしくはPHP-Excelのバージョンが上がって日本語でもレイアウトが崩れずに表示されるようになるまで我慢する。
参考記事:PHPからエクセルを操作するPHP-Excelを使ってみた

2008年12月4日木曜日

MavenからEclipseプロジェクトに変換して、コンパイル

JODConverter3.0を使いたくてコンパイルしようとしたけど、なぜか失敗する(前の記事)のでEclipseで扱える形式に変換してみたときのメモ。

pom.xmlがあるカレントディレクトリに移動して

mvn eclipse:eclipse

を実行すれば自動でEclipseプロジェクトに変換してくれる。ここを参考に。Windowsの場合も同じ。mavenのインストールは前の記事を参照。

Java開発環境のEclipseはここからダウンロード。
「Eclipse IDE for Java Developers (85 MB)」を選択。

ちなみにLinuxの場合は
# yum install eclipse-platform eclipse-jdt
GUI環境が必要なので、まだGUI環境をインストールしてないときはアニキのブログを参考に。
インストール後はアプリケーション→プログラムにEclipseがある。

解凍後、Eclipseを起動し
New → Java Project
で「Create project from existing source」で変換したmavenプロジェクトのフォルダを選択してOK。

Mainクラスの設定は
Project → Properties → Run/Debug Settings

コンパイルは
Export → Java → Runnable Jar File
とかでできた。
Eclipse 3.4からの機能なのでyumでインストールしたEclipseではできなかった。

前に失敗してたJODConverterのコンパイルはこっちだと成功。

一応Eclipseからmavenを実行する設定をしたけど(参考)、これはいらなさそう(?)。

軽量、軽快なPHPフレームワーク「petitwork」

2008年12月3日水曜日

JAVAの開発環境を準備してJODConverterをコンパイル

前の記事で辿り着いたOpenOffice.orgのPDF変換機能を使って、ExcelやWordのファイルをPDFに変換してくれるオープンソースなJODConverter

リリースされているバージョン2.2.1では、Office 2007に対応してないけど、開発中のバージョンではすでに対応しているらしいので、Subversionで開発バージョンをダウンロードしてコンパイルしてみた。

環境の準備。Linux(CentOS5.2)

subversionをインストール
# yum install subversion

SourceForgeを使っているので、ここのページからソースをGet。

# svn co https://jodconverter.svn.sourceforge.net/svnroot/jodconverter jodconverter

・・・と思ったけど、最新版はGoogle Codeで開発されているみたい。ここ

# svn checkout http://jodconverter.googlecode.com/svn/trunk/ jodconverter

JAVAの開発環境(SDKのインストール)は前の記事を参考に。

JODConverterはMavenというプロジェクト管理ツールを使っているみたいなので(pom.xmlがあるから)、Mavenをインストール

OpenOffice.org-SDKのインストールも前の記事を参考に。パスの設定も忘れずに。

やっと準備完了。

pom.xmlがあるディレクトリまで移動して、コンパイル実行。

# mvn package

でも失敗。

# mvn package -Dmaven.test.skip=true

でテストをスキップできる。・・・けど、駄目っぽい。

はまった。

PHP-ExcelでPDFも作成できることが分かったので、とりあえずあきらめ。

つづく・・・。

<2009/01/24 追記>
Google Codeでコンパイル済みの実行ファイルが公開されたので、自前でコンパイルする必要がなくなった。コマンドラインで実行するときはcommons-cliとかも同じディレクトリにないと駄目なので注意。

軽量、軽快なPHPフレームワーク「petitwork」

2008年12月2日火曜日

【Windows】【Linux】Java用コンパイルツールMavenのインストール

JODConverterをコンパイルするためにMaven(メイヴァン、メイヴィン)をインストールしたときのメモ。Mavenを知らない人はwikipediaへ。

JAVAのJDKのインストールは前に書いた記事を参照。

Mavenはここからダウンロード。

<Linux>
ダウンロードしてきたのを解凍
# cd /opt/software
# tar xzvf apache-maven-2.0.9-bin.tar.gz

パスを設定
# vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/java/latest/bin:/opt/software/apache-maven-2.0.9/bin
export PATH
export JAVA_HOME=/usr/java/latest
export M2_HOME=/opt/software/apache-maven-2.0.9
# source ~/.bash_profile

<Windows>
設定は一時的なものなのでコマンドプロンプトで設定。いちいちめんどくさい場合はマイコンピュータ→プロパティ→詳細設定→環境変数
で設定する。

C:> set M2_HOME=C:\Program Files\Tools\apache-maven-2.0.9

C:> set PATH=%PATH%;%M2_HOME%\bin

C:> set
で確認。

 

あとのコンパイルなど使い方はここのサイトが参考になりそう。

既存プロジェクトをコンパイルする場合はpom.xmlのディレクトリまで移動して
# mvn compile
# mvn test
# mvn package
をやればjarファイルが作られるけど、いいのかな?

javaのコンパイルは初めてなので、試行錯誤中。

名古屋でプロのSEを目指す

2008年12月1日月曜日

【Windows】【Linux】JAVAのJDKをインストール

Java SE Development Kit (JDK)をここからダウンロード。J2SEとかJ2EEとかよく分からない場合はここをよんどく。

<Linux(CentOS5.2)編>
# ./jdk-6u10-linux-i586-rpm.bin

/usr/java/にインストールされる。

JAVA_HOMEを設定。
# vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/java/latest/bin
export PATH
export JAVA_HOME=/usr/java/latest
# source ~/.bash_profile

あとで見つけたけど、
# yum install jdk
でもできるっぽい。

<Windows編>
jdk-6u10-windows-i586-p.exeを実行後、マイコンピュータ→プロパティ→詳細設定→環境変数の「システム環境変数」に新規でJAVA_HOMEを追加。(バージョンよってjdk1.6.0_10の部分は変わる)

image

次に「Path」を選択して編集。変数値の一番最後に
;C:\Program Files\Java\jdk1.6.0_10\bin
を追記してOK。

一旦ログアウトしてログインすると反映される。

確かめる方法は
ファイル名を指定して実行→cmd
でコマンドプロンプトを起動して
C:>set
を入力すれば設定した値が出力される。

名古屋でプロのSEを目指す

2008年11月28日金曜日

【PHP】PHP-ExcelのFPDFを日本語化対応する(失敗編)

ここの続き。FPDFを日本語対応させて、PHP-ExcelからPDF出力したときに文字化けせずに出力させるように奮闘したときのメモ。

FPDFの日本語対応自体はFPDF-Jのサイトここのブログを読めば分かる。

PHP-ExcelのFPDFで変換している箇所を修正して、変換してみても文字化けが直らず。FPDFを単独で実行すると、日本語も正常に表示できるので、PHP-Excelでは何か特別な対応が必要なのだろうか・・・。

やれることはやったので、とりあえず諦め。

PHP-Excelで操作して、JODConverterでPDF変換することにした。前に設定した記事

<2009/03/06 追記>
PHP-ExcelのPDF作成処理はTCPDFを使うように変更になった。ここで書いた記事を参考に。

2008年11月27日木曜日

PHPからエクセルを操作するPHP-Excelを使ってみた

この記事の続編。

作成したExcelファイルをPDFにも変換できるPHP-Excel。 今のバージョンはExcel2007形式とExcel2003までの形式と両方読み込み+書き込みできるので、PHPでExcelを操作するのに最強のライブラリだと思う。
ダウンロードはここから。

まずは環境の準備。

試すだけなら、lamppをインストールすれば環境構築終了。参考

ちなみにinstall.txtには次のように書いてある。

  • PHP version 5.2 or higher
  • PHP extension php_zip enabled
  • PHP extension php_xml enabled

Microsoft Office 2007を持っていない場合は試用版をインストールするか、Microsoftが配布している互換機能をインストールすれば2000, XP, 2003のOfficeでも2007のファイルを読み書きできるようになる。

準備完了。

まずはサンプルプログラムを動かす。

ReleasesからPHPExcelをダウンロード。

Classesのファイルはlamppのライブラリディレクトリにコピー
# cp Classes/* /opt/lampp/lib/php/

Testsディレクトリにエイリアスを設定して、Testsは書き込み可能にする。
# chmod 777 Tests

これでWebからTests内のPHPファイルにアクセスすると、サンプルの動きを確認できる。runall.phpを実行すると全て実行される。

いろんなサンプルがあるし、ドキュメントも充実しているのでやりやすい。

これで動作確認ができたら、次にやりたいことは、既存のExcelファイルを開いて、特定のセルに値を挿入。

これはサンプルの07reader.phpと03formulas.phpを組み合わせれば簡単に実現。
日本語を扱う場合はUTF8で挿入する必要あり。PHPファイルの文字コードがUTF8ならOK。

最近のバージョンは過去のExcel形式も読み込んだり、書き出したりできる。

このライブラリ絶対流行ると思う。

---

でもPDF変換したときに元のファイルに日本語が含まれていると文字化け。xlsxやxlsで吐き出すと文字化けは起きない。

内部的にFPDFを使っているみたいなので、FPDFを日本語化対応すれば可能?

TCPDFを使ってくれればいいのに・・・・

・・・あと一歩届かず。

<2009/03/04 追記>
・・・と思っていたらバージョン1.6.6になってPDFを作成するのがTCPDFを使うように変更されていた。これで日本語のエクセルも文字化けせずにPDFにすることが可能に。

・・・なってはいるけど、PHPExcel側にFontを指定するメソッドがないので文字化けせず表示させるためにはソースコードに手を加える必要がある。

具体的には/PHPExcel/Write/PDF.phpの116行目あたりにフォント指定を記述

$pdf->AddPage();
$pdf->SetFont("kozgopromedium", "", 9);
$pdf->writeHTML($html);

またバージョンが上がればソースにてを入れずにできるようになっていると思う。

でも複雑なエクセルをPDF変換するとレイアウトが崩れるので、まだ発展途上な感じ。今はTCPDF + FPDIを使った方が確実(ここの記事を参照)。

あと別件でXampp(Lampp)のライブラリにPHPExcelが組み込まれているので、最新のPHPExcelを使いたい場合、テストコードのset_include_pathを少し修正する必要がある。

//set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');
set_include_path('../Classes/');

これをしないと、バージョンの違いで下記のようなメッセージが表示されるので注意。

Fatal error: Call to undefined method PHPExcel::getWorksheetIterator() in /opt/PHPExcel/Classes/PHPExcel/ReferenceHelper.php on line 441

2008年11月26日水曜日

【Linux】OpenOffice.orgとJODConverterでExcelをPDF変換(設定編)

環境はCentOS5.2。

JREのインストールは前にPunoをインストールしようとして失敗したときの記事を参考に。

JAVA_HOMEを設定してない場合は設定
# vi .bash_profile
export JAVA_HOME=/usr/java/latest
# source .bash_profile

JODConverterはここからtomcat付きをダウンロード。 参考記事
# unzip jodconverter-tomcat-2.2.1.zip
# cd jodconverter-tomcat-2.2.1
# bin/startup.sh

<2009/03/24 追記>
Office2007形式に対応するために、コンパイルからやってみた記事も参考に。

ちなみにJODConverterのライセンスはGNU LGPL

これでJODConverterのサービスが起動するので、
http://<サーバ名>:8080/converter
にアクセスして起動していることを確認。ポートを空けるのを忘れずに。参考
この段階ではOpenOffice.orgのサービスを起動してないので変換はできない。

OpenOffice.orgはここから最新版をダウンロード。SDKとかUNOではなく、まるっとインストールするために「RPM,JREなし」を選択。
# tar xzvf OOo_3.0.0_LinuxIntel_install_ja.tar.gz
# cd OOO300_m9_native_packed-1_ja.9358/RPMS/

デスクトップ環境はインストールしてないのでgnomeを削除
# rm -f ooobasis3.0-gnome-integration-3.0.0-9358.i586.rpm
# rpm –ivh *.rpm

インストール後は/opt/openoffice.org3/に配置される。

OpenOffice.orgをサービスとして起動。
# cd /opt/openoffice.org3/program/
# ./soffice -headless -accept="socket,port=8100;urp;" –nofirststartwizard &
nofirststartwizardのオプションは必須。ここで教えてもらった。
ポートを指定しているみたいだけど、localhostからの接続だからiptablesを設定しなくてもいいみたい。

再度

http://<サーバ名>:8080/converter
にアクセスして適当なエクセルを選択して、「convert」を押せばPDFに変換されてブラウザ上に表示してくれる。

OpenOffice.orgのサービスを止めるには
# fg
の後にCtrl-Cで停止。
これはあとでシェルスクリプトで制御できるようにする予定。現在開発中のJODConverter3.0になるとOpenOffice.orgのサービスを制御してくれるみたい。

次はコマンドでPDF変換をする場合。ここからtomcatとかついてないのをダウンロード→配置。
# unzip jodconverter-2.2.1.zip

試しに実行
# cd jodconverter-2.2.1
# java -jar lib/jodconverter-cli-2.2.1.jar /tmp/Book1.xls /tmp/test.pdf

ポイントはOpenOffice.orgのサービスが起動していることと、jodconverter-cliを使うこと。

次のタスクは

  1. Microsoft Excel or OpenOffice.org CalcをPHPで操作

    やってみた

 

<関連記事>

2008年11月25日火曜日

社員旅行でもサプライズ

土日は社員旅行で渥美半島の先端まで行ってきました。

詳細スケジュールは公式ブログの方で。

他の社員のブログでも書いてありますが、今回の目玉はなんといっても社員同士の電撃結婚発表。

まさに電撃。

そして衝撃。

あまりの衝撃(感動)に涙を流す者も出る始末。

Mさんが入社してきて1ヶ月そこらでそんな展開になっているとは・・・。全く気付きませんでした。

もっと根掘り葉掘り聞いてみたかったですが、その日二人は親に挨拶に行くそうで、泊まらずにいってしまわれた。

二人ともおめでとう。お幸せに。

エクスブリッジの伝説に新たな一頁が追加された瞬間でした。

2008年11月21日金曜日

【Linux】OpenOffice.org-SDK, UREのインストールとPunoを設定(失敗編)

環境はCentOS5.2。

ここの記事を書いたときに発見したPunoをインストールしようと奮闘したときのメモ。・・・できなかったんだけどね。

必要なツールをインストール。
# yum install gcc-c++
他にもGNU makeとかzipとかないと後で怒られるけど、そのたびにインストールすればOK。

JavaのJREをここからLinux RPM (自己解凍ファイル) をダウンロード→インストール。
# ./jre-6u10-linux-i586-rpm.bin

パスを通す
# cd
# vi ./.bash_profile
PATH=$PATH:$HOME/bin:/usr/java/latest/bin
# source ./.bash_profile

OpenOffice.orgのSDKはここの右下にある「OpenOffice.org SDK」からダウンロード→インストール。
# ./OOo-SDK_2.4.0_LinuxIntel_install.sh
解凍場所を聞かれるので適当な場所を選択。

# rpm -ivh unpack_openofficeorg/RPMS/openoffice.org-sdk-2.4.0-9286.i586.rpm

何も聞かれずに/opt/openoffice.org2.4_sdk/にインストールされた。

インストールと設定の仕方は/opt/openoffice.org2.4_sdk/index.htmlを見れば結構詳しく書いてある(英語)。

OpenOffice.orgのUNO Runtime Environment(URE)を同じくここの右下にある「UNO Runtime Environment (URE)」からダウンロード→インストール。
(OpenOffice.orgを丸ごとインストールしてもUREがインストールされる)
# ./OOo-URE_1.3_LinuxIntel_install_en-US.sh
# rpm -ivh unpack_ure/RPMS/openoffice.org-ure-1.3-9221.i586.rpm

ちなみにどこにインストールされたかは
# rpm -qi openoffice.org-ure
で確認。

OpenOffice.org-SDKの設定
# cd /opt/openoffice.org2.4_sdk/
# ./setsdkenv_unix
エラーとなる場合は適宜対応して再度設定
# ./setsdkenv_unix --force-configure

UREをインストールしたので下の質問だけ変更。あとはデフォルトでOK。
Use an installed Office or an installed UNO Runtime Environment (Office/URE) [Office]: URE

設定後はホームディレクトリに設定用シェルスクリプトが作られるので、これを実行すればパスの設定が一発で終わる。
# chmod 755 ~/openoffice.org2.4_sdk/setsdkenv_unix.sh
# ~/openoffice.org2.4_sdk/setsdkenv_unix.sh

PHPとUNOをブリッジしてくれるPunoここからダウンロード→インストール。
# tar -xzvf puno-0.6.tar.gz
# cd puno-0.6
# phpize
# ./configure --with-puno=/opt/openoffice.org2.4_sdk/
# make cppumaker

ここでエラーとなってコンパイル失敗。

・・・したけど、OpenOffice.org3をまるっとインストールしたらコンパイルが通った。その間にいろいろやってたから何が原因か不明。yum install regexpとかやったけど、また設定する機会があったときに見直します。

つぎは
# make all

とここでまたエラー。

とりあえずあきらめ。

軽量、軽快なPHPフレームワーク「petitwork」

2008年11月20日木曜日

OpenOfficeのドキュメントをPHPから操作する

前の記事の関連で調べたときのメモ。

OpenOffice.orgのドキュメントはXMLをzip圧縮してあるだけなので、比較的簡単にPHPから扱えると思ったら、いいライブラリが見つからない。

Open Document Formatについては前の記事を参考に。

使えそうなのがOpenDocumentPHP

でも開発がしばらく止まっているので駄目そう。

とりあえず使ってみたけど(バージョンは0.6)、作ったファイルを読み込んで、特定のセルに値を挿入とかメソッドが見つからなかったので、残念ながらあきらめ。

PHP-Excelは盛んに更新されていて使いやすいので(PDFに変換できるしね→でも日本語は文字化け)、OpenOfficeの方も頑張ってほしい。

2008年11月19日水曜日

OOXML(Office Open XML)とODF(Open Document Format)の違い

OOXML(Office Open XML)はMicrosoft Office 2007で採用されたファイルフォーマット。wikipedia
Office 2003までの互換を考慮しているため仕様が複雑。

ODF(OpenDocument Format for Office Applications)はオフィススイート用の標準規格として策定されたファイルフォーマット。OpenOffice.orgで採用されたファイルフォーマット。wikipedia
OOXMLに比べシンプル。

実質
MS Office 2007(OOXML) VS OpenOffice.org(ODF)
という図式。

両方とも規格の内容は公開されていて、基本XML(と画像などのバイナリ)をzip圧縮しているだけ。

なので、外部アプリケーションからの操作などもやりやすい。

違いを解説しているは次のサイト。

2008年11月18日火曜日

XREAサーバへJoomlaのインストール

そろそろXoopsからJoomlaへ移行したいと思い立ち。とりあえずJoomlaをインストールしたときのメモ。

Joomlaはここからダウンロード。

初めてインストールする場合は日本語パックが付いている方が管理画面の操作がわかりやすい。

XREAサーバにアップロードするときは解凍したのをアップロードすると恐ろしく時間が掛かるので、サーバで解凍した方が全然早い。

やり方はXREAのサーバ管理画面で「ホスト情報登録」しといて、SSHでアクセス。ユーザ名、パスワードはFTPと同じ。SSHでアクセスするツールはTeraTermが便利。参考

サーバで解凍するコマンドは
$ tar –xzvf Joomla_1.5.7-Stable-Full_Package.tar.gz
カレントディレクトリにすべて解凍されるので、あらかじめディレクトリを作って作業すること。
zipの場合は
$ unzip Joomla_1_5_6_ja-JP_Stable.zip

データベースはあらかじめUNICODEで作成しておく。

あとはhttp://<サーバ名>/にアクセスすれば自動でインストールが始まる。

image

設定の確認では次のような.htaccessを置いておけばほとんど「はい」になる。

php_flag register_globals off
php_flag output_buffering off

php_flag mbstring.encoding_translation On
php_value mbstring.language neutral
php_value mbstring.http_input auto

configuration.phpはいいえのままだけど、これはこのままでOK。

最初configuration.php-distをコピーしておいたら次のFTPの設定で
Error: the XML response that was returned from the server is invalid.
と怒られたので、用意しておいたら駄目みたい。

FTPの設定はXREAのFTPアカウントそのままでOK.「FTP初期フォルダ検索」で自動で初期フォルダを取得可能。

最後に管理者の情報を入力してインストール完了。

ディレクトリのパーティションを変更する場合は
ヘルプ → システム情報 → ディレクトリパーティション
をみると変更すべきディレクトリ一覧が見れる。

ここなども参考に。

日本語の解説サイトがXoopsよりも少ないのがちょっと不安。XoopsのユーザをJoomlaに移行する手段はないものか・・・。

軽量、軽快なPHPフレームワーク「petitwork」

2008年11月17日月曜日

エルゴヒューマン(Ergohuman)の高級椅子

2年ぐらい前に買ったエルゴヒューマンの椅子を紹介。

eh-ham

座りながら寝れるような椅子を探していてたどり着いた。

8万円するぐらいあって、座り心地は最高。メッシュで構成されているので、全く蒸れない。高さが調整できるのはもちろん、座る所を前後に調整できたりする。

詳しくはここを参照。

椅子は個人によって好みが分かれるので、買うなら試しに座ってから買った方がよい。これは名古屋の東急ハンズに置いてあるので、気になる人は座りに行ってみては?

会社の椅子もこれにしたい・・・。

2008年11月14日金曜日

【PHP】2つのパス(URL)を結合する関数を作ってみた

プログラム内で2つのパス(URL)を結合することがよくありますが、

$sTop = “http://exbridge.jp/”;

$sUrl = $sTop . “index.php”;

この最初の文字列の最後にスラッシュがあるかないかで結合の仕方が変わってくる。いちいち気にしたくないので、自動で補完して結合してくれるような関数がないものかと探してみたけど、PHPにはないみたい。

VBScriptではBuildPath

.NETではcombine

しょうがないので自作してpetitworkに組み込みました。円マーク「¥」にも対応しているのでURLでもローカルパスでも使えるはず。 他にスマートな方法があれば教えてほしい。

/**
 * 2つのURL(パス)を結合するときにスラッシュがある場合でもない場合でも
 * うまいこと結合して結果を返す
 *
 * @access public
 * @param  string $sPath1    結合文字列(前)
 * @param  string $sPath2    結合文字列(後)
 * @param  string $sSeparate 連結文字列。デフォルトは「/」
 * @return string/boolean 2つのパスの結合結果(失敗時はfalse)
 */
function getBuildPath($sPath1, $sPath2, $sSeparate = DS ) {
    $sReturn = '';
    if (strlen($sPath1) == 0) {
        return false;
    }
    $sPath1 = rtrim($sPath1, '\/');
    $sPath2 = ltrim($sPath2, '\/');
    $sReturn = $sPath1 . $sSeparate . $sPath2;
    return $sReturn;
}

2008年11月13日木曜日

【PHP】Webで帳票を作成するのにPDF変換を利用する方法

システムで入力したデータを帳票として印刷したいという要望はどこにでもありますが、それを実現するための方法は様々です。

Google先生に聞いてみると有償のツールがいろいろと出てきます。
GUIで操作できるし、開発工数も削減できるので、トータルでみると買ったほうがいいかも。

以下はフリーで使い勝手のいいPDF作成・変換ツールがないものかと探したメモ。

環境はLinux(CentOS5.2) + Apache + PHP

名称 説明
FPDF 簡単にPHPからPDFを出力できるPHPのクラス。簡単なものならこれで十分。でも日本語対応が不十分らしい。UTF-8に対応していない。日本語対応するのは難しくない。
FPDIを使えば既存PDFの読み込みも可能に。
本家サイト日本語サイト
TCPDF FPDFを元に開発された。UTF-8に標準で対応。こっちも日本語対応が不十分らしい
FPDIを使えば既存PDFの読み込みも可能に。今ならFPDFよりこっちがおすすめ。
本家サイト日本語解説サイト
HTML2FPDF その名の通りHTMLをPDFに変換できる。サンプルを見る限りかなり便利そう。
中身はFPDFが動いていて、HTMLタグに合わせて位置を調整しているらしい。
本家サイトSorceforge
Apache FOP XMLからPDFに変換するためのJavaライブラリ。実行するためにはJavaの実行環境が必要。
詳しくはwikipediaを読む。
XML→XSL-FO→PDFという流れらしい。参考サイト
可能性は無限大。難易度も無限大。
PHPで利用する場合はXMLを作っておいて、コマンドラインで実行
本家サイト
OpenOffice.orgのPDF作成ツールを利用する OpenOffice.orgをサービスとして起動して、OpenOffice.orgのPDF変換機能を利用する方法。
PHPからはコマンドラインを実行する。
詳しくはここを参照。
レイアウトをMicrosoft Excel or OpenOffice.org Calcで作成して、データを特定のセルに挿入すれば、一番簡単に帳票ができる?
OOoSDK
実際にPHPとOpenOfficeを連携させているPunoというプロジェクトを見つけた。
PHP-Excel PHPでMicrosoft Office Excel 2007形式を操作できるライブラリ。マイクロソフトのオープンソースプロジェクトで作成されているので何となく安心できる。これにPDF出力機能がついているので、Excel作成→PDF変換で出力可能。
既存のExcelも読み込めるので、調べた限り最強の帳票作成ツールになりそう
ライセンスはLGPL
本家サイト
(2009/03/04 追記) 使ってみたときの記事を改訂したのでそっちを参考に
Zend_Pdf Zend Frameworkの一部。
PHP5以上。
UTF8対応で(フォントを用意すれば)日本語が使える。既存のドキュメントが読み込める。どれくらい使えるのか謎が多い。試してみたら追記予定。
ドキュメント
(2009/02/20 追記)MultiCellみたいな範囲を指定した出力ができないのが痛い。今後に期待。
PDFlib
PDI
フリーではないけど、いろいろ悩むよりさくっとお金だした方が安くなる場合もあるので一応メモ。
既存PDFを読み込んで適当な場所に文字を出力したりができる。サンプルコードも豊富。
ライセンスを購入しないとロゴが表示される。
公式HPPDFlib HOWTO

<2009/02/20 追記>
いろいろ試した結果、今のところフリーのツールを使うならTCPDF + FPDIの組み合わせが最強。

TCPDFは特に日本語化する必要もなく、デフォルトで日本語フォントも入っているので使いやすい。精力的に開発も行われているのでなんとなく安心。
速度面でも特に問題なし。
PDFのサイズもフォント埋め込みを切り替えることで調整可能(ver.4.5以降)。

FPDIでテンプレートを使えるようにすると、記述量も減るしコードが見やすい→メンテナンス性up+工数削減

PDFのテンプレートを作成するのはOpenOffice.orgでさくっと作れる。

バージョンの違いでFPDIが動かない場合はここの記事を参照。

2008年11月12日水曜日

懐かしのHappy Hacking Keyboard上位モデルに日本語配列

大学時代にHappy Hacking Keyboard(英語配列)を使っていて、その使い勝手が忘れられずHappy Hacking Keyboard Lite2とかに手を出していましたが、上位モデルが日本語配列になって新登場するらしいです。

PFU、“Happy Hacking Keyboard”上位モデルに日本語配列製品を追加

日本語配列だけど、Controlキーがちゃんとaの横にあるのが素晴らしい。
(この辺は変更できるみたい)

Windowsを使う限りファンクションキーとテンキーは手放せないですが、LinuxやUnixを使う場合は正に最適なキーボードなので、サーバ用に一つ買っておきたい(と思ってます)。

でも2万5000円はちょっときついなー。

2008年11月11日火曜日

オンサイトサポートとは(=出張サポート)

オンサイトサポート(on-site support)(site=現場)とは、製品が故障した際に技術者が現地に行くサポート方式。用語説明

事前準備なしに現場に行って対応するサポートに対して用いることが多い

要は「出張サポート」

メーカーの場合、電話サポートと区別するためによく使われる。

システム開発では
不具合の連絡 → 開発環境で現象確認 → ネットワーク対応 or 現地対応
となるため、あまり聞き慣れない言葉。

名古屋のおもしろ会社エクスブリッジ

2008年11月10日月曜日

【Linux】CentOSでFAX送信サーバ構築

システムからFaxを送信する必要があったので、調査&設定したメモ。

環境はCentOS5.2。

FAXモデムは外付けのオムロンME5614Dを選択、外付けの方がやりやすいらしい。参考になるのはここここここ
以下実行したコマンド。

まずは、faxを送信するソフトウェアを導入。
#yum install efax
ちなみにバージョンは0.9-27.2.1。

その後、PDFとかPostScriptを操作するツールを導入。
# yum install poppler-utils ghostscript

faxモデムはシリアルポート(com1)に接続し、デバイスの接続権限を設定。
# chmod 666 /dev/ttyS0

シェルスクリプト(/usr/bin/fax)のFaxデバイス名が/dev/modemになっているので、シンボリックリンクを作る。
# ln -sf /dev/ttyS0 /dev/modem

ロックファイルの置き場所の権限を設定
# chmod 777 /var/lock

efaxを使ったシェルスクリプトが/usr/bin/faxにあるのでこれをさっきのリンクを参考に修正(バックアップをとってから)。
# cp /usr/bin/fax /usr/bin/fax-bak
# vi /usr/bin/fax

変更箇所↓
FROM="+81 052 111 2222" #81は国番号。052-111-2222の場合
NAME="from AURORA.Fax"
PAGE=a4
TELCVT='sed -e s/+81 */0/'            # Japan

PDFを作成して動作確認。
# pdftops /tmp/Book1.pdf
# fax make Book1.ps
# fax send 052-111-2222 Book1.ps.001

番号は「-(ハイフン)」があってもなくても送れる。複数ページに分かれる場合は
# fax send 052-111-2222 Book1.ps.*
とすれば一括送信。

ちなみに電話番号に「,(カンマ)」を記述すれば数秒待機する0発信の場合はこれを利用すると実現できそう。
# fax send 0,052-111-2222 Book1.ps.*

ただ、ビジネスフォン(うちは「マルチビジネスシステムαRX」)やPBXを導入している場合は別途そっちの設定が必要みたい。

親機を使って、特定の番号を入力していくらしいけど、この番号はNTTの社外秘らしく。どこを探してもマニュアルなどない。自分で設定できるように公開してほしい。

今のところはFax送信だけで、そのうち受信もやってみよう。

<2009/04/16 追記>
マシンを再起動したときにシンボリックリンクが消えてしまう現象に対応した。こちらの記事を参照。

2008年11月7日金曜日

DBDesignerをダウンロード

社内でER図をDBDesignerで書いているので、それをダウンロードするためのメモ。

アメリカの会社がオープンソースで開発していたらしいけど、今は停止しているみたい。その最新版はDBDesigner4

日本語化はここ

そっからforkしてSourceForgeで開発されているのがDBDesigner-fork。こっちではPostgreSQLでも対応するよう開発が進められているようですが、最近はリリースされてないみたい。
なるべく早くリリースされてほしいなぁ。

アニキに先を越されたけど、せっかく書いたのでアップ。

PHP用DB接続支援ライブラリ「somfa」

2008年11月6日木曜日

オープンソースでシンクライアントを実現する「openThinClient」

前の記事とかでシンクライアントについて書きましたが、オープンソースのソフトウェアを使ってシンクライアント化を実現できるみたいです。

openThinClient

導入する手順はこちら

専用OSを各クライアントで起動するため、使えるソフトウェアに制限があるみたい。まだまだ実用レベルまでは時間がかかりそう。

その他VMwareなどで実現したシンクライアントの導入事例はここから。

suganuma@エクスブリッジ.jp

2008年11月5日水曜日

Googleカレンダーの予定を携帯に通知する

Googleカレンダーのアラートを携帯に送れるようなので設定してみた。

Googleカレンダーの設定で「モバイルの設定」から自分の携帯のアドレスを入れて、確認コードを送信。携帯に確認コードが届くので、それを入力して作業完了。

↓こんな画面。

image

メールの転送機能でも同じことが実現できますが、とりあえず設定しとくと後で役に立ちそう。ここでも書いたけど、携帯でGoogleカレンダーにアクセスするには

http://www.google.com/calendar/m

あとは携帯でGoogleカレンダーの予定を新規作成できるようになってほしい。

名古屋のおもしろ会社エクスブリッジ

2008年11月4日火曜日

Linux上で.NETアプリケーションを動作させるMONOプロジェクト

.NETをLinux上で動作させようと頑張っているMONOプロジェクト

現在の最新版は2.0で多くの.NETアプリケーションが動くようになったみたいですが、まだ実用レベルではないようです。

MONOプロジェクトについて知りたい場合はwikipediaを読むのが早い。

もし、MONOプロジェクトが完全に.NET Frameworkと互換性を持つようになれば、開発工数削減のためにVisual Studioで開発して、CALの節約のためにLinuxサーバで動かすシステムが出てくるような気がします。

たぶん、まだまだ先の話だと思いますが。

名古屋でプロのSEを目指す

2008年10月31日金曜日

Docomoのパケホーダイダブルでパケット代を節約

地下鉄の広告で気付いた「パケホーダイダブル」。

今までCoTV開発のためにパケホーダイを契約していましたが、月の携帯代がばかにならない・・・。
もともと携帯でWeb閲覧をしないので、CoTVの開発をしないときはほとんど使ってないも同然。実際パケホーダイを契約する前は月額3000円ぐらいで済んでいた。

なのでパケホーダイダブルの広告を発見したときは速攻でプラン更新。

これでちょっとは携帯料金節約できそう。

ちなみにパケホーダイダブルは他のキャリアでもお馴染みの段階的なパケット定額制。パケホーダイのままの人は変更した方がよいと思う。

2008年10月30日木曜日

電池(充電池)を買うならeneloop(エネループ)でエコ

古くなったマウスを新調するために調べてたら、最近はeneloop(エネループ)という充電池があって、繰り返し使えるから電池内蔵型より「電池が切れて動かん」というのがなくていいみたい。

eneloopの長所と短所はwikipediaがわかりやすい。

wikipediaにも書いてあるけど、買うときに注意したいのはeneloopは初期型と次期型があって、初期型にはeneloopのに®の文字がない。

ここで写真付きで詳しく書かれているので、買いに行く前にチェック。

もう少し詳しくなりたい人はここPanasonicのパナループと性能比較しているので参考に。

充電器は単3と単4を両方充電できて便利。

今使っている電池を使い切ったら、eneloopに切り替えよう・・・。

ちなみに買ったマウスはlogicoolのMX-1100。eneloopで快適に動いています。電池1個でも動くので重さはそれほど感じない。5mぐらい離してもちゃんと動いてくれるから素敵。

プリンタも新しくエプソンのEP-901Aに変えて、今年分の物欲は満たした感じ。

suganuma@エクスブリッジ

2008年10月29日水曜日

IPアドレスの範囲を示す表記方法

ネットワークの設定をするときによく出てくる「192.168.1.0/24」とかの表記方法。
これはIPアドレスとサブネットマスクをまとめて表現する記法。

Classless Inter-Domain Routing(CIDR:サイダー)というらしい。

詳しくはwikipedia@ITの記事で。

よく使うのだけメモ。

表記 範囲 含まれる個数
192.168.0.0/16 192.168.0.0 - 192.168.255.255 65,536
192.168.0.0/24 192.168.0.0 - 192.168.0.255 256
192.168.0.0/29 192.168.0.0 - 192.168.0.7 8
192.168.0.0/31 192.168.0.0 - 192.168.0.1 2
192.168.0.0/32 192.168.0.0 - 192.168.0.0 1

2008年10月28日火曜日

オープンソースなフラッシュ(SWF)形式のプレーヤーFlowPlayer

FlowPlayerはGPLで配布されているFLV形式の動画を配信するためのFlash形式のプレーヤー。Flash形式なのでAdoveのFlash Playerをインストールしておけばブラウザ上で動く。

以下、特徴

  • オープンソースなため改変することが比較的容易
  • ライセンスはGPLなため、改変して頒布(はんぷ)する場合はソースコードも付けないと駄目。GPLについては前の記事を参考に。
  • サムネイル画像、シンプルな表示、さまざまなオプションで制御可能。この辺は実際に見た方が早い。ここで。
  • フルスクリーンにするとFlowPlayerのロゴが表示される。商用ライセンスにすると非表示になる。

オプションの意味などは本家のサイトを見た方が詳しく載ってますが、英語が駄目な人はこことか参考になりそう。

動画配信といえばHELIOS.CoTV

2008年10月27日月曜日

【.NET】ClickOnceの開発メモ

.NET Framework2.0から利用可能になったClickOnceという技術。.NET Framework1のころはノータッチ・デプロイメントと呼ばれていた。

一言でいうなら「簡単にアプリケーションの配布・更新をするための技術」。

ClickOnceの基本的なことやノータッチ・デプロイメントの違いについては@ITの記事を参照。

以下開発で必要になって調べたときのメモ。

ApacheでClickOnceのアプリケーションを配布するための設定。

ClickOnce起動時にWebアプリケーションと連携するためにパラメータを渡す方法。

ClickOnceを配布(発行)するときにサードパーティ製のdllなどを付けて配布する方法

MSDN Online スタート・キット(ソースコード付き)

2008年10月24日金曜日

Solaris10にsambaを設定

Solaris設定シリーズのsamba編。

インストールモジュールはSunfreeware.comからGetする。そこにncurses, popt, readlineも必要と書いてあるので、これらもダウンロード。

デスクトップ環境をインストールしてあれば、コンソールでFirefoxを使ってダウンロードすれば楽。適当なフォルダに置いてダブルクリックで解凍。それぞれ順番にインストールしていく。 bashをインストールしとくと作業効率が全然違う。前の記事を参考に。

# pkgadd -d popt-1.14-sol10-sparc-local
# pkgadd -d ncurses-5.6-sol10-sparc-local
# pkgadd -d readline-5.2-sol10-sparc-local
# pkgadd -d samba-3.0.25a-sol10-sparc-local

これだけだと起動スクリプトが見つからなかったので、Source Codeもダウンロード+解凍。
# cp packaging/Solaris/samba.init.master /etc/init.d/samba
# chmod 744 /etc/init.d/samba
# vi /etc/init.d/samba BASE=/usr/sfw に変更。

次はsmb.confを設定。
# cp /etc/sfw/smb.conf-example /etc/sfw/smb.conf
# chmod 744 /etc/sfw/smb.conf
smb.confの設定方法は前の記事を参考に。

ユーザの追加
# /usr/sfw/bin/pdbedit -a root

samba起動
# /etc/init.d/samba start

2008年10月23日木曜日

Solaris10のSSHを設定

Solaris10にSSHを設定して、リモートでアクセスできるようにしたときのメモ。

Solarisのインストールの仕方は前の記事を参照。

SSHはデフォルトでインストール済みなのでrootでログインできるように設定ファイルを編集
# vi /etc/ssh/sshd_config
PermitRootLogin yes
にする。

sshのデーモンを再起動
# svcadm refresh ssh

svcadmの詳細は
# man svcadm
で見ると詳しい説明が参照できる。ただTera Termで閲覧するときは文字コードをEUCにしないと文字化けが起こる。

IPアドレスを確認したいときは
# ifconfig -a

名古屋でプロのSEを目指す

2008年10月22日水曜日

Solaris10の端末エニュレータをbashにする方法

ここでVMware Server 2.0にSolaris10をインストールしてみましたが、あまりに端末エミュレータが使いにくかったので、bashをインストールしたときのメモ。

CentOSなどのLinuxを使っているとデフォルトでインストールされているので、違和感なく使えますが、bash(補完機能とコマンド履歴など)がないCUIはこんなにも使いにくかったのかと再認識。

bashはTabでコマンドの補完機能やパスの補完を行ってくれて、矢印キーで過去の実行したコマンドの履歴を表示してくれる。詳しくはwikipedia

インストールの仕方はここを参考に。

Sunfreeware.comの左からbashを選択し、ダウンロード。ほかlibiconvもインストールした方がいいみたいなので、これもダウンロード。Solarisでデスクトップ環境をインストールしていれば、Firefoxでデスクトップにダウンロードしといて、ダブルクリックで解凍できるので便利。

解凍後は
$ pkgadd –d <パス>
でインストール。

ファイル名にsparcという文字があるけど、VMwareにインストールしたx86のSolarisでも動いた。

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月21日火曜日

pingとpathpingとtracertでネットワークを調査

windowsのcmdを使ってネットワークを調査したときのメモ。

まずホストまで到達できるか確認するためにping(wikipedia)を打つのは基本。
ただホストによってはセキュリティの理由からpingが使っているICMPに応答しないのもある。

次にどんな経路でホストにたどり着いているのか調べるのがtracert(トレースルート wikipedia)。
経由しているルータの一覧と応答時間が表示されるので、どこで時間がかかっているか(どこのルータがおかしいか)が分かる。

詳しくは@ITの記事を参考に。

さらにwindows2000以降ではpingとtracertを拡張したpathpingというコマンドがある。
これはホストにたどり着くまでの経路とパケットの損失率を表示してくれるけど、tracertで十分なような気が。詳しくは@ITの記事を参照。

あと、pingを使って簡易的にネットワークの速度を調査する方法も見つけたのでメモ。

ping -l 10000 exbridge.jp

とすると10000バイトのパケットを送信して帰ってきた時間が分かるので

(10000 × 2) ÷ 応答時間 = 回線速度

と計算できる。詳しくは@ITの記事を参照

専用ツールを使わなくてもある程度のことは分かる。

ネットワークを調査するためのソフトもそのうち調べてみよう・・・
前に書いた記事

suganuma@エクスブリッジ

2008年10月20日月曜日

VMware Server 2.0にSolaris10をインストールしてみた

システムの動作確認のためにSolarisの環境が必要になったので、VMware Server 2.0にSolaris 10をインストールしたときのメモ。

Solaris10はSunのページからユーザ登録してダウンロード。

VMware ServerではSPARC(スパーク)に対応していないので、x86用をダウンロードする。

あとはVMware Serverで新規VMを追加するときにSolarisを選択して、いつものようにインストールすればできるはず。細かい手順を知りたい人はこことかを参照。

注意点としては、新規VMをインストールするときに割り当てるメモリを640M以上じゃないとGUIでインストールしている最中で止まる・・・実際に止まった。テキストインストールだと大丈夫らしい。

インストール自体は2時間くらいかかった。

こっからCoTVが動作するか確かめなきゃ。

<2008/10/20 追記>
デフォルトでルートのディスク容量が5.4GBぐらい割り当てられるけど、インストール直後で既に3.6GB使用しているので、初期の割り当てるディスク容量を増やした方があとで困らなくて済む。
容量を確認するコマンドは
$ df -h

動画配信といえばHELIOS.CoTV

2008年10月17日金曜日

クライアントに保存されているDNSキャッシュを削除する

DNSを変更したけど、なかなかクライアントのマシンが切り替えたIPに名前解決してくれない場合は
C:>ipconfig /flushdns
を実行してDNSのキャッシュを削除してみましょう。

それでも駄目な場合、外部のnslookupサービスを使って名前解決できるか試します。こことか。(本当はこっちが先)

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月16日木曜日

【.NET】クライアントアプリで非同期の処理(通信)を行うには

.NET Framework 1系のころは非同期で処理を実行するためにはデリゲート(delegate)とスレッド(Thread)を理解しないとプログラミングできなかったですが、.NET Framework 2.0からはBackgroundWorkerというコンポーネントが追加され、簡単に非同期の処理が記述できるようになりました。

.NET Framework 1系はここを参考に。

BackgroundWorkerのサンプルプログラムは@ITの記事を参考に。

非同期処理の基本はMSDNの記事をまずは熟読。

ちょっと難しい・・・

デリゲート(delegate)については、ちゃんと理解したいので、また調べるかも。

環境は.NET Framework 2.0, Visual Studio 2005, VB.NET(ASP.NET上ではない)

suganuma@エクスブリッジ.jp

2008年10月15日水曜日

【.NET】Enterによるフォーカス移動とTabなど特殊キーの制御

クライアントアプリの開発でキーボードの入力を制御するためのメモ。

環境は.NET Framework 2.0, Visual Studio 2005, VB.NET

Enterキーでタブ(Tab)キーみたいにフォーカス移動するのは@ITの記事を参考にSelectNextControlを使えばできる。

ただ記事で紹介しているフォームのKeyDownをhandleするやり方は特殊キー([PageUp][PageDown][Esc][Tab][カーソルキー])の入力をhandleしてくれないこともあるみたい。

そんなときは別の@ITの記事を参考にProcessDialogKeyをOverrideすればいいみたい。紹介されているサンプルコードをフォームのクラスにそのまま記述すればO.K.

特殊キーの動きを自作するには

Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean
  Return True
End Function

としといて、フォームのKeyDownイベントで頑張る。

KeyDown, KeyUp, KeyPressの違いについてはMSDNで。

名古屋のおもしろ会社エクスブリッジ

2008年10月14日火曜日

【VB.NET】フォームに別のフォームを動的に挿入する

Web(ASP.NET)のフレームのように左にメニューを表示させて、選択したメニューによって右にコンテンツを表示させるやり方。

環境は.NET Framework2.0, Visual Studio 2005, VB.NET(ASP.NET上ではないよ)

メニューはTreeViewを使って作成。フレームはSplitContainerで。
・・・というか「追加」→「Windowsフォーム」→「エクスプローラフォーム」を選べば、いろいろコントロールが配置されている。

TreeViewのAfterSelectイベントで次のようにコントロールを埋め込むことが可能。ここを参考に。

Dim objForm As Windows.Forms.Form = Nothing
objForm = New Form1
'Panel2にフォームをセットする
Dim objPanel As Windows.Forms.SplitterPanel = Me.SplitContainer.Panel2
objPanel.Controls.Clear()
objForm.TopLevel = False
objPanel.Controls.Add(objForm)
objForm.BringToFront() '最前面に
objForm.Show() ' 表示
objForm.Dock = DockStyle.Fill '親フォームにサイズを合わせる

名古屋のおもしろ会社エクスブリッジ

2008年10月10日金曜日

.htaccessと.htpasswdで簡易ユーザ認証

webで公開しているディレクトリにパスワードをかけて閲覧を制限する簡単な方法。

制限するディレクトリに.htaccessを作って、以下のように記述

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType Basic

require valid-user

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

詳しい説明はここを参照。

次に認証ユーザとパスワードを登録。
$ htpasswd -c /var/www/.htpasswd user

パスワードを聞かれるので認証パスワードを入力すると/var/www/.htpasswdファイルが作られ、暗号化した状態でパスワードが保存される。

追加するときは
$ htpasswd /var/www/.htpasswd user

Apacheのドキュメントも参考に。

.htaccessを読み込むためにはAllowOverrideをALLにしないといけないので忘れずに。詳しくはApacheのドキュメント

 

< 2011/08/10 Modified >
localhostからは参照可能にしたい場合は次のようにする

Order Deny,Allow
Deny from all

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType Basic

require valid-user

Allow from localhost 127.0.0.1
Satisfy Any

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

2008年10月9日木曜日

【.NET】Webアプリのようにセッション(session)を使いたい。app.configの設定

Webの場合、ログインしたユーザの情報はsessionに格納してアプリケーション内で使い回しますが、クライアントアプリケーションの場合どうやってやるのか調べたメモ。

環境は.Net Framework 2.0, Visual Studio 2005, VB.NET

ここに全ての答えが。

app.configというアプリケーション構成ファイルに設定を記述することができるみたいです。My Projectを開くと設定という項目があるので、ここに設定する値を記述すると自動でapp.configが作成されます。

image

参照するときは
sUrl = My.Settings.AURORA_URL

sUrl = My.Settings(“AURORA_URL”)

設定するときは
My.Settings.AURORA_URL = “http://aurora.exbridge.jp/”

My.Settings(“AURORA_URL”) = “http://aurora.exbridge.jp/”

ローカルのファイルに保存されるため、起動時に毎回ログインし直す場合などはアプリケーション終了時にクリアする処理が必要。

2008年10月8日水曜日

【.NET】従来型のArrayListとジェネリックなDictionary

.NET Framework2.0で新しく追加になったジェネリック(Generic=一般的な、汎用的な)という機能のメモ。

ジェネリック機能についての説明は@ITの記事を参考に。

簡単にいうと、より汎用的に使えるようなクラス(機能)。

使うことが多いArrayListやHashTableにジェネリックなクラスが新たに用意されています。

従来型 ジェネリック 説明
ArrayList List 可変サイズの1次元リスト
Hashtable Dictionary キー/値ペアのコレクション

この辺も@ITの記事で詳しく書いてあるので参考に。

従来型のHashTableは値が全てObject型となっていましたが、Dictionaryはインスタンス化するときに値の型を宣言する必要があります。
Object型の場合、なんでも格納できるので便利なような気もしますが、取り出して使用するときに明示的に型の変換をしないといけないので、効率的ではないようです。MSDNにも値をObject型以外にした場合、Dictionaryの方が速いと書いてありました。ここ

ケースバイケースだと思いますが、今後は積極的にジェネリックな機能を使っていった方がよいようです。

名古屋でプロのSEを目指す

2008年10月7日火曜日

【.NET】Visual Studio 2005でPostgreSQLに接続する

VB.NETでクライアントアプリケーション作ってますが、Visual Studio 2005でPostgreSQLに接続するためのメモ。

ODBCを使ってもよいですが、クライアントに設定しないといけないので.NET用のデータプロバイダ(Data Provider)が提供されていないか検索したら、やっぱりありました。ODBCを経由しないから、こっちの方が速いはず。

Npgsql .Net データプロバイダ

PostgreSQL8.3.3からはスタックビルダがついていて、これを利用するとNpgsqlも簡単にインストールできますが、PostgreSQL8.3.4の段階では、まだNpgsql v1.0.0でした。

image

これだと参照設定しても利用できなかったので、たぶん.Net Framework2.0だとNpgsql2.0以上を使わないと駄目なんじゃないかな? ここから最新バージョンをダウンロードしてきて、適当なフォルダに保存します。 C:\Program Files\Npgsql\2.0\ とか。

そして、Visual Studio 2005のプロジェクト→参照の追加で参照タブから Npgsql.dll を選択すれば使えるようになります。My Projectの「参照」で編集可能。

Imports Npgsql

Public Sub test()
     Dim conn As NpgsqlConnection = New NpgsqlConnection("Server=192.168.0.1;Port=5432;User Id=user;Password=pass;Database=hoge_db;")
     conn.Open()
     Dim command As NpgsqlCommand = New NpgsqlCommand("select name from user where id = 2", conn)
     Dim sResult As String = command.ExecuteScalar()
     MessageBox.Show(sResult)
     conn.Close()
End Sub

日本語が文字化けするというのをメーリングリストなどで見たことがあるけど、今のところ大丈夫そう。

PHP用DB接続支援ライブラリ「somfa」

2008年10月6日月曜日

【Linux】findして見つけたファイルを削除する

コマンドで下位階層まで検索して、見つけたごみファイルを削除する方法。

たとえばvssver.sccをきれいに削除する場合は
$ find -name vssver.scc -exec rm -f {} \;

findについてはここのサイトを参考に。

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月3日金曜日

OpenSSLで認証局(CA)を構築・・・の前に理解しておくこと

Apache+mod_sslでSSL通信をしベリサイングローバルサイン(ジオトラスト)でサーバ証明書を取得しインストールすることはやったことはありますが、サーバ証明書を発行する認証局を自分で構築してしまえばベリサインにお金払わなくてもいいんじゃねぇと思って調べたメモ。

まず認証局(CA, Certification Authority)となるのはOpenSSLがインストールされていれば、どのサーバでもなることは可能。
ただし、私がやりたいのはIEなどでエラーがでない証明書を発行する認証局の構築。これはWebTrustという制度(審査)に合格しないと駄目らしい。
3ヶ月ごとに行う厳正な監査らしい。(もちろん個人では無理)

WebTrustに合格すると世界的に認証局として認められて各ブラウザに「信頼されたルート証明機関」として登録される。

つまりベリサイングローバルサイン(ジオトラスト)で取得したサーバ証明書をインストールするとエラーとならないのはブラウザが既にその認証局を信頼しているから

↓IEのインターネットオプションからコンテンツを選ぶと見ることができます。

image

ちなみにシェアはベリサインが53%、グローバルサインが25%、その他22%(wikipediaより)。

グローバルサインの方が安い・・・。
ただ携帯電話用のサーバ証明書を取得する場合、古い携帯電話のブラウザだとベリサインしか信頼してないのもあるらしく、グローバルサインの証明書だと閲覧できない機種が出てきてしまいます。
ベリサインは高いんですけど・・・。

次回は実際に認証局の構築と証明書の発行とインストールをやってみる予定(いつになるか分からないけど)。

動画配信といえばHELIOS.CoTV

2008年10月2日木曜日

【VB.NET】URLのパスを結合するメソッドCombine

VB.NETでローカルのパスを結合する場合、Path.Combineを用いますが、そのWeb版。

VirtualPathUtility.Combine

というのが絶対URLと相対URLを結合してくれます。

やり方はASP.NETでない場合、参照の追加でSystem.webを追加して
Imports System.Web

sUrl = VirtualPathUtility.Combine(“/”, “test.php”)

という感じ。
※.Net Framework 2.0以上

本当は
sUrl = VirtualPathUtility.Combine(“http://hoge.jp/”, “test.php”)
とやりたかったけど、これだと「有効な仮想パスではありません。」と怒られるので

VirtualPathUtility.AppendTrailingSlash

を使って

sUrl = VirtualPathUtility.AppendTrailingSlash(sUrl) + “test.php”

とやることにしました。

軽量、軽快なPHPフレームワーク「petitwork」

2008年10月1日水曜日

【VB.NET】アプリケーションからJSON形式でサーバと通信する

VB.NETのクライアントアプリケーションでWEBサービスにアクセスしてJSON形式のデータをデコードしたときのメモ(ASP.NET上ではない)。

開発環境は.NET Framework2.0 Visual Studio 2005

方法としては次の2通り

どっちを使うか迷いましたが、「ASP.NET 2.0 Ajax Extensions」は.NET Framework3.5から標準搭載されるようなので、こちらを使うことに決定。

両者の速度の違いなどがここのブログに書いてあるので一読しとくといいかも。

ASP.NET 2.0 Ajax Extensionsここから「Download ASP.NET Extensions v1.0」をクリックしてダウンロード。
その後、インストーラからインストール。

Visual Studio 2005では「プロジェクト」→「参照の追加」→「System.Web.Extensions」を選択して、次のをimportsしとく

Imports System.Net 
Imports System.Text 
Imports System.Web.Script.Serialization

サンプルコードは次のような感じ。

Dim sTargetUrl As String = "http://hoge.com/webservice/" 
Dim objWeb As WebClient = New WebClient() 
Dim objSrializer As JavaScriptSerializer = New JavaScriptSerializer() 
Dim objEncode As Encoding = Encoding.UTF8 
Dim bResult As Byte() = objWeb.DownloadData(sTargetUrl) 
Dim sJson As String = objEncode.GetString(bResult) 
Dim objHash As Hashtable = objSrializer.Deserialize(Of Hashtable)(sJson)

JavaScriptSerializerについてはMSDNを参考に。

HTTPのGETメソッドを発行するサンプルコードはここを参考に。

<2009/03/04 追記>
クライアントアプリケーションからjson形式のデータをポストするときの注意点。

.NET側でobject形式をSerializeメソッドを使ってjson形式に変換するときにHashTableが入れ子になっているとうまくシリアライズされないみたい。
Dictionary(Of String, Object)
だと大丈夫だったのでジェネリックなクラスを使う癖をつけた方がよさげ。
詳しくはMSDNを参照

2008年9月30日火曜日

PHP用拡張モジュール有名どころ一覧

ApachtとPHPをセットアップするときに必要となるPHPの拡張モジュールのメモ。

環境はCentOSで、基本
$ yum install <拡張モジュール名>
でインストール可能な一覧。

拡張モジュール名 説明
php-mbstring マルチバイト文字列を扱うときに必要となる。PHPを使うシステムでは、ほぼ必須。参考PHPマニュアル
php-gd PHPで動的に画像を生成したり、画像のサイズ変更を行うときに必要となる。PHPマニュアル
php-pgsql PHPからPostgreSQLに接続するためのモジュール。
php-mysql PHPからMySQLに接続するためのモジュール。
php-xml DOMやSimpleXMLなどXMLを使う場合に必要。PHPマニュアル

その他、気づいた時点で追加する予定。

軽量、軽快なPHPフレームワーク「petitwork」

2008年9月29日月曜日

Tera Term Proのダウンロードとインストールメモ

TeraTermがない端末で作業するときにさくっとインストールするためのメモ。
なんかいっぱいバージョンがあるみたいだけど詳しいことはwikipediaで。

インストールパッケージはSourceForgeのプロジェクトからダウンロード。

今は「UTF-8 TeraTerm Pro with TTSSH2」から「Tera Term」に改名したらしい。現行のバージョンは4.60

「UTF-8 TeraTerm Pro with TTSSH2」がインストールされている場合はアンインストールした方がいいらしい。

インストールするときは「TeraTerm Menu」を選択する。
これはタスクバーに常駐して、ショートカットからマクロでログインするところまで自動でやってくれる。
便利。

あとは普通にインストールをすすめていけばOK。

suganuma@エクスブリッジ

2008年9月26日金曜日

FedoraCore5のsamba設定ではまる(SELinuxを無効に)

開発でFedoraCore5が必要になったので、VMwareServerに新規インストールして設定していたらsambaの設定で、ちょっとはまった。

普通に
$ yum install samba
のあと、前に書いた記事を参考にsmb.confを設定しようとしても、まずsamba経由でsmb.confを上書きできない・・・。

しょうがないので、sshでファイルをアップロードしてsmb.confを上書きするとできる。

その後sambaを再起動して共有フォルダにwindowsからフォルダを作成しようとするとできない・・・。そのときの/var/log/messageは下のような感じ。

Sep 24 16:51:44 vm-hoge kernel: audit(1222242704.940:94): avc:  denied  { write } for  pid=
3246 comm="smbd" name="opt" dev=dm-0 ino=228481 scontext=root:system_r:smbd_t:s0 tcontext=
system_u:object_r:usr_t:s0 tclass=dir

よく分からない・・・。sambaの動きがなんか変。

・・・と思っていたら、原因がわかりました。selinuxのせいです。

system-config-securitylevel-tuiをやっても有効、無効の選択肢がでなかったので気付きませんでした。無効にするためには/etc/selinux/configの

SELINUX=enforcing

SELINUX=disabled

と記述して、再起動すればok.

そういえば他の処理をしたときにPermission deniedとログに書いてあったのはselinuxが効いているせいということで納得。

2008年9月25日木曜日

VMware Server 2.0正式版をインストールしてみた(RPMで)

こっちの記事でも書いてますが、VMware Server2.0の正式版がリリースされたので、さっそくインストールしてみました。まえはソースコードからコンパイルでしたが、今度は今後の保守も考えてRPMでインストールしました。

環境はLinux(CentOS5.2)

まずはここからダウンロードしてきます。

今回もいろいろとダウンロードするまでに質問されますが、無償で利用できるありがたみを感じながら、丁寧に回答していきます。 インストールするOSの制限として、WindowsとLinux合わせて10となっていますが、あとで変更もできるので気にせずダウンロードします。

まずは前のRC1,2をインストールしてある場合はアンインストールしときます。 $ vmware-uninstall.pl

RPMの場合は簡単で
$ rpm -ivh VMware-server-2.0.0-116503.i386.rpm
$ vmware-config.pl
とすればok. 質問はデフォルトで答えていけば、とりあえず動く。

ここで気付いたのが、リモートコンソールでログインするためのポート(902)を聞いてきた。 もしかしてRC版ではできなかったリモートコンソールでの管理ができるのか?
と思い1.0の頃のVMware-consoleをインストールしてみたけど、アクセスできなかった。

何かしら方法はありそう。

VMware Serverのドキュメント(マニュアル)

続く・・・。

<2008/10/31>
Ubuntuに
$ apt-get install rpm
をやった後にrpmのvmwareをインストールしてみたらできなかったで、しょうがなくソースからコンパイル。特に問題なくインストール完了。

あと、ポート902は有償のVirtualCenterで管理するためのポートみたい。

<2009/07/05>
でも、やっぱりソースからコンパイルした方が保守しやすかった・・・。

削除する方法は
# rpm –qa | grep VMware
で検索しといて
# rpm –e VMware-server-2.0.0

でアンインストール完了

2008年9月24日水曜日

Blogger向けアクセス解析ツールはまだ?

2008/05/02の記事でBlogger向けアクセス解析ツール「Google Analytics for Blogger」をテスト中というのを読んで、どんなアクセス解析ができるか楽しみにしているのに、なかなか公開されない。

今はGoogle Analytictsで一応満足していますが、追加でほしい機能は

  • RSSの購読状況を表示
  • 被リンクの情報をサイト(ブログ)単位で表示
  • Google カレンダーと連携

ぐらいかなぁ。

suganuma@エクスブリッジ

2008年9月22日月曜日

【PHP5】オブジェクトを複製する clone

PHP4とPHP5の違いはこの辺で少し書きましたが、PHP5でオブジェクトを値渡しのように複製したい場合はどうするの?と思ったときのメモ。

オブジェクトを複製したい場合はcloneを記述するようです。PHPマニュアル

<記述例>
$copy_of_object = clone $object;

さらにここの記事ではPHP5で変更のあった仕様をまとめているので、参考になるかも。

参照渡しと値渡しの速度比較は前の記事を参考に。

軽量、軽快なPHPフレームワーク「pettiwork」

2008年9月19日金曜日

Bloggerで記事のバックアップ(エクスポート)をする

新しい機能が次々と出てきて楽しい反面、いきなりスパムブログと間違われて削除されたり、いきなり文字化けしたり、いきなりアクセスできなくなったりと問題もあるBlogger。
そんな目にあうのは利用者の数%だと思うけれど、今までコツコツとためてきたブログを削除されてしまったら、あまりに悲しいのでバックアップをとる方法を調べたのでメモ。

まだドラフト版ですが、ブログの記事をエクスポートするのが提供されているみたいです。

Blogger in draft(http://draft.blogger.com/)にアクセスして管理画面からエクスポートを選ぶと、
Bloggerのレイアウトと記事の内容(コメントも含む)をXML形式で保存できます。

ここの記事を参考に。

投稿された写真はPicasaの方に保存されているので、この方法ではバックアップをとれないですが、定期的に記事のバックアップをとっておけば安心です。

Windows Live Writerにバックアップの機能があるとすごい助かるんだけどなぁ。

2008年9月18日木曜日

32bitと64bitの違い

公式ブログの続き。

最近のCPUは64bitに対応しているのが多いですが、 「32bitと64bitの違いって何ですか?」 って(一般の人から)たぶん聞かれるので、その答えを準備するために調べたメモ。

OKWaveに投稿されている回答内容を読めば、なんとなく理解できる。 あとはwikipediaを参考に。こっちはちょっと難しい。

自分で回答する内容は以下

  • 32bit, 64bitはCPUの情報処理能力
  • 片側2車線道路が片側4車線になるようなもの(車の流れが結構違うでしょ?)
  • ただこの片側4車線をフル活用するためにはOSとアプリケーション側で対応が必要
  • 64bitのOS上では64bitのアプリケーションしか動かないけど、windowsの場合エミュレーションして対応している
  • 扱えるメモリの最大が理論上4GBから180億GBまで増える
  • この扱えるメモリの増加が一番のメリットかもね
  • 実際64bitのCPU + 64bitのCentOSをインストールしてみたけど体感速度はあまり変わらない
  • 相当高付加+並列処理が必要なことをやらなければ32bitで十分
  • しかも最近のCPUは内部的に並列処理ができる仕組みをいろいろ導入しているからね

こんな感じで説明すれば分かるかな。

軽量、軽快なPHPフレームワーク「pettiwork」

2008年9月17日水曜日

エクスブリッジのギネスに挑戦を動画で配信

私が外に行っている間に「ギネスに挑戦」シリーズが開幕したみたいです。

/>

今回はxb-itazu氏が頑張ってます。

この動画はエクスブリッジの動画配信システム「HELIOS.CoTV」で配信されてます。携帯でも閲覧可能ですが、パケホーダイの契約している場合のみおすすめします。結構お金かかるみたいなので。

携帯で閲覧したい場合は「HELIOS.CoTV」にあるQRコードからいけます。暇なときは他の動画もどうぞ。

動画配信といえばHELIOS.CoTV

2008年9月16日火曜日

空手合宿に行ってきました。

3連休は大学の空手合宿に参加しました。

↓合宿の風景

DSC01203

さすがにきつかったですが、久しぶりにいい汗がかけました。

体の衰えも再認識しました。学生の稽古についていけない・・・

しばらく筋肉痛が続きそうです。

2008年9月12日金曜日

今週末は空手合宿で栃木県へ

大学の合宿にOBとして参加してきます。

名古屋からだと行きにくい場所にあるので、新幹線とバスで3・4時間ぐらいのところにあります。

学生ほどの体力はないので、怪我しない程度にがんばります。

あと関係ないですが、また自転車が盗まれました。名古屋に来て5回目。

suganuma@エクスブリッジ

2008年9月11日木曜日

【Ethnaを使った携帯サイト構築】セッションを保持するために

今、別案件でフレームワークEthna(えすな)を使った携帯向けサイトを構築していますが、そのときに使った携帯でセッションを保持するための処理をメモ。

.htaccessに

php_flag session.use_trans_sid On

を書いてもいいですが(session.use_trans_sidについては前に書いた記事を参考に)、PC向けの画面も同じ階層にいたりするので、PHPで制御するやり方です。

ログインなどでセッションをスタートした後に

output_add_rewrite_var(session_name(), session_id());

を記述して携帯用の共通のコントローラで同じく
output_add_rewrite_var(PHPマニュアル
を記述すればO.K。
session.use_trauns_sidだけでいけると思ったけどダメだった。環境はPHP5.1.6

例↓

class Ethna_ActionMobileClass extends Ethna_ActionClass {
function authenticate() {
output_add_rewrite_var(session_name(), session_id());
if ( !$this->session->isStart() ) {
return 'login';
}
else {
return null;
}
}
}

output_add_rewrite_var(PHPマニュアル
は画面のリンクやformに設定した名前と値の組を自動で付加してくれる便利関数。

<?php
output_add_rewrite_var('var', '12345');
echo '<a href="file.php">リンク</a>'
?>

とすると

<a href="file.php?var=12345">リンク</a>

になる。

<2008/09/25>
あと、ethnaだとアクセス元のIPアドレスをチェックしているみたいなので、頻繁に変わる携帯の場合、セッションが切れたり切れなかったりするので、ここを参考にEthna_SessionのisValidをオーバーライドする必要があるみたい。

もしくはcheck remote addressの前に
return true;
を記述する。

2008年9月10日水曜日

筋肉痛がまだとれない

日曜日に尾張旭で空手を教えている先輩のところに行って空手をしてきましたが、その筋肉痛がまだとれません。

8月中は夏休みで稽古をサボっていたので約1ヶ月ぶりの稽古。

今週末に大学の合宿でOBとして参加するので、少しは体を動かしてないとまずいと張り切りましたが、やっていても脳の命令に
体がついてこれず、「もうやめてくれー」と体の節々からの叫び声が聞こえてくるようでした。

やっぱりサボっているとどんどん体が衰えていきますね。もう急降下。

1週間に1回は稽古がない日でも動くようにします。

2008年9月9日火曜日

IP電話でFAXを送る方法とPC-FAXについて調べてみた

に固定電話をやめて光電話にすると書きましたが、
(NTTの固定電話を休止状態にする。)
そこで問題になるFAX送信について調べてみました。

まずIP電話網を使ってFAXを送信するのは止めたほうがいいらしい。
@IT-IP電話でのFAX通信は、メーカー独自手順などFAX機にも注意

そこでPCでFAXを送信できるような(FAX代行みたいな)サービスを調査。
このようなサービスを使うと、新しいFAX番号をもらえて、そこに届いたFAXはPCのメールに届くようにすることができる。
→メールのやり取りと同じようにFAXの送受信ができる。

有名なのは

  • iFAX(インターネットFAX)
    月額料金が無料の従量制。一番便利そうだけど、NTTの固定電話に加入してないといけない。
    今回はNTTの固定電話から脱却したいので根本的に対象外
  • D-FAX
    月額料金は無料の従量制。受信だけなら無料。登録するときに登録料として2,500円必要。3ヶ月間未使用だと自動でアカウントが削除される。
    ・・・微妙

このFAX ASPサービスの記事を読むとiFAXを使いたくなる。

他にも同じようなサービスを提供しているところはあるけど、どこも月額利用料金が1000円前後かかるので利用しづらい。参考

結論としては、FAXはあきらめることにしました。

本当に必要になったときにまた考えます。

2008年9月8日月曜日

自宅のネットワーク構成を一新・・・するために

最近、自宅のネットワーク構成をアップグレードしようと妄想中。

・・・別に今困っているわけではないんですけど・・・

テーマは「無線」。なるべく裏に這っているコード類を減らそうとしてます。

まずはプロバイダの変更。
今はYahoo BB 12Mですが、コミュファ光に。
今住んでいるマンションは「コミュファ・マンションF」らしいのでちょっと高い。

これでNTTの固定電話を休止状態にすれば毎月500円ぐらい安くなる。

Yahoo BB 12M + NTT固定電話 = 約5,500円

コミュファ光 マンションF = 約5,000円

こんな感じ。
そんなに違わないですが、回線速度が上がって料金が安くなればいいかなぁ。

ただ一つ問題が。

今までFAXをごくたまに使ってましたが、これが使えなくなる。
別に使えなくなってもいいですが、実家からとか知り合いからたまに来るので、どうしようかなぁと考え中。
固定電話なしでFAX送る方法を調査中なので、またブログで書きます。

無線ルータはCoregaのCG-WLBARGNHでほぼ確定。

プリンタは今までBrotherのMFC-620CLNを使ってましたが、無線化のために新しくDCP-535CNMFC-930CDNにしようか考え中。

MyMioシリーズは多機能な割りにコンパクトなので、部屋にすっきり収まってましたが、FAXがいらなくなると他の会社のプリンタも選択肢に入ってくるので、これもまた迷う・・・。

どうしよーねー。

suganuma@エクスブリッジ

2008年9月5日金曜日

エクスプローラ風ファイル管理ソフト(ファイラー)「まめFile」

私が愛用しているファイル管理ソフト「まめFile」の紹介。

フリーソフトです。作者のページはここから。

  • ファイルの圧縮、解凍、分割、結合
  • ランチャー機能
  • よく使うフォルダを覚えておける
  • ショートカットキーを登録すると片手で操作できる
  • マウスでファイルをコピー、移動するときに問い合わせしてくれるので、間違えてファイル移動とかを防止できる。(設定でどうにでもできる)

などなど機能は豊富。

image

私の場合はまだ「まめFile4」を愛用中。「まめFile5」でもいいけど、ウィンドウごとに作業内容を決めているので、こっちの方が使いやすい。

圧縮、解凍するときは別途dllをインストールしないといけないですが、caldixを使って一括でインストールすると楽。

あとはTortoiseSVNと連携できれば言うこと無し

名古屋のおもしろ会社エクスブリッジ

2008年9月4日木曜日

プレースホルダ(place holder)はplace folderではない

データベースにSQL文を発行する際はSQLインジェクション攻撃の対策としてプレースホルダとバインド変数を用いるのが常ですが、プレースホルダのholderをfolderと勘違いしてました。

・・・ただそれだけ。

エクスブリッジのsomfaを使うと次のような感じになる。

$sPlaceHolder = 'user_id = ?';
$aBind = array($vo->user_id);
$aRecordset = $objSomfa->select('tbt_user', '*', $sPlaceHolder, $aBind);

PHP用DB接続支援ライブラリ「somfa」

2008年9月2日火曜日

Google カレンダーでiCal形式を読み込むと文字化け

Googleカレンダーにical形式(*.ics)のファイルを別カレンダーとして登録したときに文字化けしていた原因が分かりました。

Googleカレンダーではレスポンスのヘッダーに文字コードを指定しないと駄目らしい。ここのブログで教えてもらった。

icalが置いてあるディレクトリの.htaccessに
addtype text/calendar; charset=utf-8
を記述してみたりしたけど駄目だったので、PHPでさくっと作りました。

<?php
header('Content-Type: text/calendar; charset=utf-8');
$sFile = $_GET['ical'];
readfile($sFile);
?>

このファイルをical.phpとすると
http://www.hoge.com/ical.php?ical=suganuma.ics
というアドレスをGoogleカレンダーに設定すると、文字化けせずicalファイルを読み込んでくれます。

Googleカレンダーは携帯でもみれるので、これで会社のスケジュールをいつでも携帯から閲覧可能に。ちなみにGoogleカレンダーの携帯用アドレスは

http://www.google.com/calendar/m

<2008/09/16 追記>
コメントで指摘がありましたが、上のコードはあまりにセキュリティがダメダメなので各自'ics'ファイルに限定するとか、やってください。

<2009/08/28 追記>
一応備忘録のために修正版をアップ。

<?php
$sFileName = $_GET['ical'];
if (strpos($sFileName, '.ics') === false) {
    $sFileName .= '.ics';
}
if (file_exists($sFileName)) {
    header('Content-Type: text/calendar; charset=utf-8');
    readfile($sFileName);
}
Related Posts Plugin for WordPress, Blogger...

Blog Archives