VISH,Inc.

PHPでpathinfo関数やbasename関数を使用して、全角を含むファイル名を取得しようとすると失敗する事がある

結論

PHP4、PHP5で、全角ファイル名を含むパスに対して
pathinfo関数やbasename関数でファイル名を取得しようとすると失敗する事がある。

※ファイル名の先頭がマルチバイト文字の場合に失敗する。
※文字コードの種類によらない
※OSの種類によらない

これはPHP4、PHP5の仕様なので、別の手段で対応しよう。
PHP :: Bug #37738 :: basename does not work with Japanese

代替案

// 正常な例
$path = 'http://www.example.com/otakara.jpg';
echo basename($path);
$pathinfo = pathinfo($path);
echo $pathinfo['basename'];

// 失敗例
$path = 'http://www.example.com/大変貴重な画像.jpg';
echo basename($path);
$pathinfo = pathinfo($path);
echo $pathinfo['basename'];

// 代替案の一例
echo end(explode('/', $path));
echo end(explode('/', $path));

////
// OUTPUT
//
// otakara.jpg
// otakara.jpg
// .jpg
// .jpg
// 大変貴重な画像.jpg
// 大変貴重な画像.jpg

滝本

携帯でSSLサイト接続時に「この接続先は安全でない可能性があります」と出るケースの1例

最近、ベリサインのSSL証明書を設定する際に
「おや?」と思った事があったので、エントリしておきます。

詳しくは下記のURLをご覧頂きたいのですが、
中間CA証明書のインストールについて|FAQ|ヘルプデスク|サーバID|日本ベリサイン

ベリサイン証明書の階層が3階層から4階層になりました。
—————————————-
■変更前
—————————————-
ルート証明書
中間CA証明書
サーバID
—————————————-
■変更後
—————————————-
ルート証明書
クロスルート設定用証明書
中間CA証明書
サーバID
—————————————-

サーバー管理者の設定作業としては、
1つの中間証明書ファイルに
2つの証明書(クロスルート設定用証明書、中間CA証明書)を
合わせて記載する所がポイントになります。
Apache + OpenSSL 中間CA証明書のインストール手順|サーバIDのインストール|日本ベリサイン

もしも、クロスルート設定用証明書の設定が漏れたりすると、
証明書の階層構造がつながらず、正当性が確認できない場合が発生します。

たとえばケータイからSSLサイトにアクセスした際に
「この接続先は安全でない可能性があります」
なんて表示されてしまうのは、中間証明書のインストールが
正常になされていない場合に良くあるケースです。

現在、使用中の証明書には影響はありませんが、
次回の更新時には意識する必要がありますので、是非、覚えておきましょう。

滝本

DataGridViewでのクリップボードへのコピー

DataGridViewでのクリップボードへのコピーの動作において、
セルを編集している状態の時は選択しているテキストをコピーし、
セルを編集していない状態の時は選択行ごとコピーする場合、
以下の方法で実現できたので紹介します。

続きを読む »

SIMフリー版 HTC Desire HDを購入

これまでiPhone 3GS を使ってきましたが、このたびAndroidに乗り換えました。

じつは私、大のApple嫌いなのですが、1年前はこれならガラケーから乗り換えても良い思えるスマートフォンがiPhoneくらいしかありませんでしたので、仕方なくiPhoneを選択しました。

スマートフォンとしてのiPhoneは十分実用的で、機能面では特に不満はありませんでしたが、どこか面白みがなく、他に良いスマートフォンがないかずっと探していました。
(Apple嫌いなのでiTuneやiPod機能はほとんど使っていませんでした)

そんな折、Android 2.1のスマートフォンに触れる機会があったのですが、思いのほかサクサク動作することが確認でき、ようやくiPhone以外のスマートフォンに乗り換えても良いと確信できるようになりました。

ですが、ただ単純にAndroidに乗り換えても面白くありません。

そこで、SIMフリー版のHTC Desire HDを購入してみました。
(諸事情でなぜかSoftBank番の001HTも同時に購入することになりました・・・)

続きを読む »

Python東海第12回勉強会

Python東海第12回勉強会をVISHにて開催しました。

■Google App Engineのスタートガイドハンズオン
開発環境のインストールから、ビックテーブルのところで終了。
この続きは11月20日(土)に実施します。
・ハンズオンの内容として
開発環境の構築
バージョン管理ツールの使い方
GAE のスタートガイド を 「データストアの使用」
管理コンソールの起動
GQLの利用

今回は14名の参加で大盛況でした。

FreeBSDからLinuxへのユーザアカウントの移行

最近、FreeBSDサーバからLinuxサーバへシステムを移行する機会がありました。

その際ユーザアカウントも一緒に移行する必要がありまして、
作業したポイントをまとめておきます。

続きを読む »

Windows Azure初期特別提供プランの終了(2010/10/31)

Windows Azure を 無料(25時間/月)で使用できる初期特別提供プランは 2010 年10 月31 日で終了されるので、まだお試しになっていない方は試してみてはどうでしょうか、Windows Azure では.NET言語だけでなく非.NET言語のPHPやJAVAのSDKやPHP開発者向けのEclipseプラグイン「Windows Azure Tools for Eclipse」があるのでPHPには慣れてるけど.NET言語に慣れていない方も簡単にお試しができますよ

■登録に必要なもの
・Windows Live ID
・クレジットカード(無料分以降は課金されるため)
続きを読む »

FPDFで決まった単位でのページ番号を表示させる

phpのFPDFを使ってPDF出力をする場合のに、
ページ番号を表示させるには

// 現在のページ番号を取得
$page_no = $pdf->PageNo();
// 「現在のページ番号/総ページ数」を表示
$pdf->Cell(0, 4, $page_no.'/{nb}', 0, 0, 'C');

などのようにして出力すれば良いのですが、
ある決まった単位(管理番号ごとなど)で
ページ番号を1から始める、つまり
1ページ目:1/2
2ページ目:2/2
3ページ目:1/4   ←単位の切り替わり
4ページ目:2/4
5ページ目:3/4
・・・
のようにする方法を紹介します。
続きを読む »

マイクロフレームワーク

なかなか参加ができていなかった勉強会ですが
10月は名古屋地区で10月16日にAndoroid勉強会、10月23日にPython東海の勉強会があるので
久々に技術系サイトを巡回したら
「マイクロフレームワーク」というなんだか新鮮な匂いのするキーワードを発見したので検索してみた。
勉強のネタとして自宅のマシンに入れようと思います。

マイクロフレームワークと呼ばれているフレームワーク
・ちいたん(PHP)
http://php.cheetan.net/
・MicroMVC(PHP)
http://micromvc.com/
・DENIED(Python)
http://denied.immersedcode.org/
・Flask(Python)
http://flask.pocoo.org/

C#のSSHライブラリ

WEBサーバ上のデータベースをメンテナンスするツールとしてはphpMyAdminやphpPgAdminなどがありますが、Webのインターフェースのため少し使いにくい部分もあります。

普段使い慣れたデータベース管理ツールでWEBサーバ上のデータベースにアクセスするための方法として、以前このブログでもSSHのポート転送を利用する方法が紹介されていました。

トンネリングを用いてSSHでDB接続
http://www.vish-develop.jp/tech/127

ですがこのやり方は一般の方々には難しいため、もう少し簡単にポート転送を利用できないかと色々探してみたのですが、どれもSSHクライアントを利用する例しか見つかりませんでした。
(ポート転送だけが簡単に出来ればよいのですが・・・)

そこで自分でSSHポート転送ツールが作成できないかと思い、C#で利用できるSSHライブラリを探してみました。

続きを読む »


VISH企業サイト
サイトマスター.jp
モバイルサイト制作・構築