<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.4" -->
<rss version="0.92">
<channel>
	<title>TechnoWeb　-phpやJava、C#.netなど、PGに関する事や、サーバー管理情報など、Webシステム開発全般に関するブログ-</title>
	<link>http://www.vish-develop.jp</link>
	<description>VISHメンバーによるWeb技術トレンドや開発事例、プログラミングTips等、Webシステム開発全般に関するブログ</description>
	<lastBuildDate>Tue, 15 Mar 2011 00:32:39 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>PHPでpathinfo関数やbasename関数を使用して、全角を含むファイル名を取得しようとすると失敗する事がある</title>
		<description>結論
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


滝本 </description>
		<link>http://www.vish-develop.jp/tech/862</link>
			</item>
	<item>
		<title>携帯でSSLサイト接続時に「この接続先は安全でない可能性があります」と出るケースの1例</title>
		<description>最近、ベリサインのSSL証明書を設定する際に
「おや？」と思った事があったので、エントリしておきます。

詳しくは下記のURLをご覧頂きたいのですが、
中間CA証明書のインストールについて｜FAQ｜ヘルプデスク｜サーバID｜日本ベリサイン

ベリサイン証明書の階層が3階層から4階層になりました。
----------------------------------------
■変更前
----------------------------------------
ルート証明書
中間CA証明書
サーバID
----------------------------------------
■変更後
----------------------------------------
ルート証明書
クロスルート設定用証明書
中間CA証明書
サーバID
----------------------------------------

サーバー管理者の設定作業としては、
1つの中間証明書ファイルに
2つの証明書（クロスルート設定用証明書、中間CA証明書）を
合わせて記載する所がポイントになります。
Apache + OpenSSL 中間CA証明書のインストール手順｜サーバIDのインストール｜日本ベリサイン

もしも、クロスルート設定用証明書の設定が漏れたりすると、
証明書の階層構造がつながらず、正当性が確認できない場合が発生します。

たとえばケータイからSSLサイトにアクセスした際に
「この接続先は安全でない可能性があります」
なんて表示されてしまうのは、中間証明書のインストールが
正常になされていない場合に良くあるケースです。

現在、使用中の証明書には影響はありませんが、
次回の更新時には意識する必要がありますので、是非、覚えておきましょう。

滝本 </description>
		<link>http://www.vish-develop.jp/trend/859</link>
			</item>
	<item>
		<title>DataGridViewでのクリップボードへのコピー</title>
		<description>DataGridViewでのクリップボードへのコピーの動作において、
セルを編集している状態の時は選択しているテキストをコピーし、
セルを編集していない状態の時は選択行ごとコピーする場合、
以下の方法で実現できたので紹介します。




private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (e.Control is DataGridViewTextBoxEditingControl)
    {
        dataGridView.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;

        //編集のために表示されているコントロールを取得
        DataGridViewTextBoxEditingControl tb = (DataGridViewTextBoxEditingControl)e.Control;

     ...</description>
		<link>http://www.vish-develop.jp/tech/net/855</link>
			</item>
	<item>
		<title>SIMフリー版 HTC Desire HDを購入</title>
		<description>これまでiPhone 3GS を使ってきましたが、このたびAndroidに乗り換えました。

じつは私、大のApple嫌いなのですが、１年前はこれならガラケーから乗り換えても良い思えるスマートフォンがiPhoneくらいしかありませんでしたので、仕方なくiPhoneを選択しました。

スマートフォンとしてのiPhoneは十分実用的で、機能面では特に不満はありませんでしたが、どこか面白みがなく、他に良いスマートフォンがないかずっと探していました。
（Apple嫌いなのでiTuneやiPod機能はほとんど使っていませんでした）

そんな折、Android 2.1のスマートフォンに触れる機会があったのですが、思いのほかサクサク動作することが確認でき、ようやくiPhone以外のスマートフォンに乗り換えても良いと確信できるようになりました。

ですが、ただ単純にAndroidに乗り換えても面白くありません。

そこで、SIMフリー版のHTC Desire HDを購入してみました。
（諸事情でなぜかSoftBank番の001HTも同時に購入することになりました・・・）



SIMフリー版のDHDで一番目を引くのは、SoftBank版では削除されているテザリングのメニューがあることです。

 

上記スクリーンショットの「USB範囲」という項目が、PCとつないでテザリングを行う機能になります。

あと注目すべき点が、「ポータブル Wi-Fi hotspot」という項目です。

これは、Android端末がWi-Fiルーターになる機能です。

まだ実際のSIMでは試してはいませんが、こんな感じで設定できるようです。



年末年始に色々試すネタが増えました。 </description>
		<link>http://www.vish-develop.jp/trend/850</link>
			</item>
	<item>
		<title>Python東海第12回勉強会</title>
		<description>Python東海第12回勉強会をVISHにて開催しました。

■Google App Engineのスタートガイドハンズオン
開発環境のインストールから、ビックテーブルのところで終了。
この続きは11月20日(土)に実施します。
・ハンズオンの内容として
開発環境の構築
バージョン管理ツールの使い方
GAE のスタートガイド を 「データストアの使用」
管理コンソールの起動
GQLの利用

今回は14名の参加で大盛況でした。 </description>
		<link>http://www.vish-develop.jp/seminar/846</link>
			</item>
	<item>
		<title>FreeBSDからLinuxへのユーザアカウントの移行</title>
		<description>最近、FreeBSDサーバからLinuxサーバへシステムを移行する機会がありました。

その際ユーザアカウントも一緒に移行する必要がありまして、
作業したポイントをまとめておきます。



====================================================
UIDとGIDをFreeBSDとLinuxで合わせてユーザを作成する
====================================================
後々に各ユーザが所有しているコンテンツを移行する際に、
両サーバでUIDとGIDが一致していると、移行が
スムーズに行えます。

まず最初に、Linuxにグループを追加します。
# groupadd -g [GID] [グループ名]

GIDはFreeBSDの/etc/groupを参照すれば分かります。

次に、Linuxにユーザを追加します。
# useradd -u [UID] -g [グループ名] [ユーザ名]

UIDはFreeBSDの/etc/passwdを参照すれば分かります。

====================================================
パスワードを移行する
====================================================
一昔前なら、パスワードは/etc/passwdに記述されて
いましたが、最近は暗号化されたシャドウパスワードファイルに
記述されています。

ただし、シャドウパスワードファイルがFreeBSDと
Linuxでことなるため、少し注意が必要です。

＜FreeBSDの場合＞
/etc/master.passwd がシャドウパスワードファイルになります。

シャドウパスワードファイルの中身は
test:$1$XXXDD$xgYDDDEE/7DDKsXbIHtW1:10000:10000:test:0:0:web:/home/test:/bin/sh
というようになっています。

コロンで区切られた２番目のフィールド[$1$XXXDD$xgYDDDEE/7DDKsXbIHtW1]
の部分がシャドウパスワードになります。

＜Linuxの場合＞
/etc/shadow がシャドウパスワードファイルになります。

FreeBSDからLinuxにシャドウパスワードを移行すれば、
パスワードも含めてユーザアカウントを移行できます。

シャドウパスワードを編集する際は、viで編集するのではなくて
vipwコマンドで編集する必要があります。
vipwコマンドを使用すると、/etc/passwdと/etc/shadowの
整合性を確保して両者を編集することができます。
以上が、FreeBSDからLinuxへのユーザアカウントの移行する際の
ポイントになります。 </description>
		<link>http://www.vish-develop.jp/trend/842</link>
			</item>
	<item>
		<title>Windows Azure初期特別提供プランの終了（2010/10/31）</title>
		<description>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
・クレジットカード（無料分以降は課金されるため）


■登録方法
１．http://www.microsoft.com/japan/windowsazure/offers/よりWindows Azure Platform導入特別プランの購入ボタンをクリックします


２．登録済みのWindows Live IDでログインします


３．必要な個人情報を入力します

４．画面のチェックボックスにチェックを入れ「checkout」ボタンをクリックします

５．クレジット登録が選択されているのでそのまま「NEXT」ボタンをクリックします

６．クレジットカード情報を入力します

７．同意箇所にチェックを入れ、fullname項目を記入し「I　Accept」ボタンをクリックします

８．確認画面が表示されるので「Proceed to activation」ボタンをクリックします

９．登録が完了しポータルサイトが表示されます


 
以下が今回登録した無料提供分でできることです
注意してもらいたいのが
「S サイズのコンピューティング インスタンス 25 時間分」
についてはWindows Azureにデプロイした状態で実行していなくても
課金されることので注意が必要です

無料提供分の内容:
" Windows Azure
■S サイズのコンピューティング インスタンス 25 時間分
■500 MB のストレージ
■ストレージ トランザクション 10,000 回
" SQL Azure
■Web Edition データベース 1 つ (最初の 3 か月間のみ)
" AppFabric
■100,000 回のアクセス ...</description>
		<link>http://www.vish-develop.jp/trend/805</link>
			</item>
	<item>
		<title>FPDFで決まった単位でのページ番号を表示させる</title>
		<description>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
・・・
のようにする方法を紹介します。


まず、FPDF本体のfpdf.phpファイルを修正します。
(1)クラスのメンバ変数に総ページ数を保持する配列を定義します。

var $unitPageNo;        //Unit page number


(2)function FPDFメソッド内でメンバ変数を初期化しているところで$unitPageNoの初期化も一緒に行ないます。

$this->unitPageNo = array();


(3)総ページ数をセットするメソッドを追加します。

function SetUnitPageNo($page_no, $unit_page_no)
{
    // 指定ページ番号（$page_no）に表示する総ページ数（$unit_page_no）をセット
    $this->unitPageNo[$page_no] = $unit_page_no;
}


(4)function _putpagesメソッド内の「if(!empty($this->AliasNbPages))」の条件分岐内の処理を以下に置き換えます。

for($n=1;$npages[$n]=str_replace($this->AliasNbPages, $this->unitPageNo[$n], $this->pages[$n]);
}


あとは、FPDFクラスを呼び出している処理で以下のことを行ないます。
(5)総ページ数を保持する変数を定義し、決まった単位（管理番号など）が変わるタイミングで値を0に戻します。

$unit_page_no = 0;


(6)ページ番号を表示をしている箇所を以下のようにして、総ページ数をセットします。

$unit_page_no++;
$pdf->Cell(0, 4, $unit_page_no.'/{nb}', 0, 0, 'C');
for($i = 0; $i ...</description>
		<link>http://www.vish-develop.jp/tech/php/795</link>
			</item>
	<item>
		<title>マイクロフレームワーク</title>
		<description>なかなか参加ができていなかった勉強会ですが
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/ </description>
		<link>http://www.vish-develop.jp/trend/790</link>
			</item>
	<item>
		<title>C#のSSHライブラリ</title>
		<description>WEBサーバ上のデータベースをメンテナンスするツールとしてはphpMyAdminやphpPgAdminなどがありますが、Webのインターフェースのため少し使いにくい部分もあります。

普段使い慣れたデータベース管理ツールでWEBサーバ上のデータベースにアクセスするための方法として、以前このブログでもSSHのポート転送を利用する方法が紹介されていました。

トンネリングを用いてSSHでDB接続
http://www.vish-develop.jp/tech/127

ですがこのやり方は一般の方々には難しいため、もう少し簡単にポート転送を利用できないかと色々探してみたのですが、どれもSSHクライアントを利用する例しか見つかりませんでした。
（ポート転送だけが簡単に出来ればよいのですが・・・）

そこで自分でSSHポート転送ツールが作成できないかと思い、C#で利用できるSSHライブラリを探してみました。



使えそうな候補としては以下の通り。

Granados
http://www.routrek.co.jp/product/varaterm/granados.html

SharpSSH
http://www.tamirgal.com/blog/page/SharpSSH.aspx

とりあえず最初にGranadosの方を試してみましたが、普通のSSHクライアントはうまく実装することができましたが、どうにもポート転送がうまくいきません。

ライブラリの問題ではなくて自分の問題だとは思いますが、こちらは断念しました。

次にSharpSSHの方を試しています。

うまくいったら SSHポート転送に特化したツールとして公開したいと思います。 </description>
		<link>http://www.vish-develop.jp/trend/783</link>
			</item>
</channel>
</rss>

