[date:20121213]の検索結果


さくらインターネットが、低価格VPS「さくらのVPS」に新たに「SSDプラン」を追加し、2012年12月13日から提供を開始した。

今回提供が開始された「SSDプラン」は、メモリ1GB・ディスク50GBが月額1,780円で利用できる「SSD 1G」と、メモリ2GB・ディスク100GBが月額3,680円で利用できるだける「SSD 2G」の2つ。HDDを利用した他プランを遥かにしのぐ高速なI/Oで、 高いストレージ性能が求められるサービス運用やデータベース運用などに最適だという。

[2245] Posted by kagahiro at 2012/12/13 15:37:04
0 point | Link (3) | Trackback (0) | Comment (0)

Perlのsubstr関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。それでは不都合なことも多いので、半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。

以下はそのコードです。[Perl]UTF-8でエンコードされた文字列の文字数を取得するコードと同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。

#!/usr/bin/perl

use strict;
use warnings;

my $testStr = "ABCDEFGあいうえおアイウエオ愛夢佐々木";

print "substr_utf8($testStr, 0, 5) = " . substr_utf8($testStr, 0, 5), "\n";
print "substr_utf8($testStr, 3, 3) = " . substr_utf8($testStr, 3, 3), "\n";
print "substr_utf8($testStr, 10, 4) = " . substr_utf8($testStr, 10, 4), "\n";
print "substr_utf8($testStr, 13, 5) = " . substr_utf8($testStr, 13, 5), "\n";
print "substr_utf8($testStr, 13) = " . substr_utf8($testStr, 13), "\n";

exit;

# UTF-8でエンコードされた文字列の部分文字列を取り出す
# substr_utf8 (文字列式, オフセット[, 長さ])長さを指定しなかった場合は最後まで
sub substr_utf8 {
    my ($src, $offset, $len) = @_;

    my $srclen = length($src);
    my $pos = 0;
    my $count = 0;
    my $dest = '';

    while ($pos < $srclen) {
        my $code = ord substr($src, $pos, 1); # 先頭のASCIIコード値を取得
        my $bytelen = _bytesize($code);
        if (defined($len)){
            if ($count >= $offset && $count < ($offset + $len)) {
                $dest .= substr($src, $pos, $bytelen);
            }
        } else { # 長さ指定なし
            if ($count >= $offset) {
                $dest .= substr($src, $pos, $bytelen);
            }
        }
        $pos += $bytelen;
        $count++; # 文字数をカウント
    }

    return $dest;
}

# 文字のバイト長を求める
sub _bytesize {
    my $code = shift;
    my $size = 1;
    if (0x80 & $code) { # 1バイト文字以外
        $code <<= 1;
        for my $i (2 .. 8) {
            $size++;
            $code <<= 1;
            last if (!(0x80 & $code));
        }
    }
    return $size;
}

substr_utf8関数では、substr関数を使用して1バイト目のASCIIコード値を取得し、 _bytesize関数を呼び出して文字のバイト数を求め、その文字がパラメータで指定された範囲の場合は、戻り値として返す文字列に連結し、そうでなかった場合は文字数のカウントアップのみ行なっています。

_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定し戻り値として返しています。

もっと自在にサーバを使い倒す 業務に役立つPerl (Software Design plus)
技術評論社 著者:木本 裕紀


amazon.co.jpのカスタマーレビューを見る
powered by amalink

[2244] Posted by kagahiro at 2012/12/13 10:51:25
0 point | Link (4) | Trackback (0) | Comment (0)

  1  


アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (204 PV)
  2. [将棋]宮田敦史六段が居飛車で久保利明王将の卑怯な振り飛車戦法に圧勝 #NHK杯 (16 PV)
  3. 「マストドン(Mastodon)」ブームでカドカワの株価が上昇、さくらインターネットの株価は上がらず (15 PV)
  4. [食べ物]七草粥(ななくさがゆ) (12 PV)
  5. [将棋]竜王戦第三局は居飛車振り飛車の対抗型で丸山忠久九段が勝利 #竜王戦 (11 PV)
  6. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (9 PV)
  7. [囲碁]アルファ碁(AlphaGo)と世界最強の中国人プロ棋士「柯潔」との対局に1目半で勝利 #コンピュータ囲碁AI (9 PV)
  8. [囲碁]アルファ碁(AlphaGo)が世界最強中国人プロ棋士「柯潔」を3戦全勝と圧倒 #コンピュータ囲碁AI (8 PV)
  9. Sony、ハイエンドEマウントミラーレスカメラ「α9」(model ILCE-9)を発表 (8 PV)
  10. [将棋]名人戦第5局は佐藤天彦名人が横歩取り(勇気流)で稲葉陽八段に勝ちタイトル防衛まで後1勝 (7 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (4226 PV)
  2. [将棋]中学生プロ棋士の藤井聡太四段がNHK杯1回戦で千田翔太六段に勝ちプロデビューから公式戦13連勝 (358 PV)
  3. ウェブページを1回だけリロード(再表示)する方法 (277 PV)
  4. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (218 PV)
  5. 世界最大のマストドンインスタンス「mstdn.jp」の管理者nullkal(ぬるかる)さんがドワンゴに入社 (208 PV)
  6. [将棋]竜王戦第三局は居飛車振り飛車の対抗型で丸山忠久九段が勝利 #竜王戦 (201 PV)
  7. 将棋ウォーズスーパープレミアムプラン販売開始、香川愛生女流三段のボイスが選択可能 #将棋 (185 PV)
  8. Sony、ハイエンドEマウントミラーレスカメラ「α9」(model ILCE-9)を発表 (183 PV)
  9. フリーソフトウェア/オープンソースのタブー (181 PV)
  10. [食べ物]七草粥(ななくさがゆ) (176 PV)

アクセス統計

ディレクトリ

関連サイト