[サンプル]の検索結果


Perlの関数を使用して、以下の手順で10進数を2進文字列に変換することができます。

  1. sprintf関数で10進数を16進文字列に変換
  2. pack関数で16進文字列をバイナリーにパック
  3. unpack関数で2進文字列に変換

例えば、文字列の先頭文字のASCIIコード値(10進数)を取得し、それを2進文字列に変換に変換する場合は、 次のようなコードになります。

#!/usr/bin/perl

use strict;
use warnings;

my $ascii = "ABC";
my $asciicode = ord $ascii;  # 先頭文字のASCIIコード値を取得
my $str = _bitstr($asciicode, 8);
print "str   = $str\n"; # for debug

exit;

# 10進数を2進文字列に変換する関数
sub _bitstr {
    my ($code, $len) = @_;
    my $hexcode = sprintf("%X", $code); # 16進に変換
    my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}

10進数を単に2進文字列に変換するだけならこれでも構わないのですが、ビット演算子を使ってビットのオン・オフを判定して、 2進文字列を作成していく方法もあります。以下のコードはその実装例です。

#!/usr/bin/perl

use strict;
use warnings;

my $ascii = "ABC";
my $asciicode = ord $ascii;  # 先頭文字のASCIIコード値を取得
my $str = _bitstrR($asciicode, 8);
print "str   = $str\n"; # for debug

exit;

# ビット演算で10進数を2進文字列に変換する関数
sub _bitstrR {
    my ($code, $len) = @_;
    my $bitstr = '';
    for my $i (1 .. $len) {
        $bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
        $code <<= 1;
    }
    return $bitstr;
}

ここで問題になるのはどちらの方法が処理速度が優れているかということですが、以下のコードのプロファイルを取ると・・・

#!/usr/bin/perl

use strict;
use warnings;

my $ascii = "ABC";
my $asciicode = ord $ascii;  # 先頭文字のASCIIコード値を取得

my $str = '';
for my $j (1 .. 10000) {
    $str = _bitstr($asciicode, 8);
    $str = _bitstrR($asciicode, 8);
}
print "str   = $str\n"; # for debug

exit;

sub _bitstr {
    my ($code, $len) = @_;
    my $hexcode = sprintf("%X", $code); # 16進に変換
    my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}

sub _bitstrR {
    my ($code, $len) = @_;
    my $bitstr = '';
    for my $i (1 .. $len) {
        $bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
        $code <<= 1;
    }
    return $bitstr;
}


C:\xampp\htdocs\sample>perl -d:Dprof bitstr3.pl
str   = 01000001

C:\xampp\htdocs\sample>dprofpp
Total Elapsed Time = 0.018988 Seconds
  User+System Time = 0.016988 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
 223.   0.038  0.038  10000   0.0000 0.0000  main::_bitstr
 47.0   0.008  0.008  10000   0.0000 0.0000  main::_bitstrR
 0.00       - -0.000      1        -      -  strict::import
 0.00       - -0.000      1        -      -  warnings::import
 0.00       - -0.000      1        -      -  strict::bits
 0.00       - -0.000      2        -      -  main::BEGIN

やはり、ビット演算で2進文字列を作成するほうが早いようです。

プログラミングPerl〈VOLUME1〉
オライリー・ジャパン 著者:ラリー ウォール,ジョン オーワント,トム クリスチャンセン


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

[2239] Posted by kagahiro at 2012/12/09 20:36:29
0 point | Link (4) | Trackback (0) | Comment (0)

PHPの開発環境でプログラムからメールを送信できるかチェックするために作成した、ごく簡単なメールフォームのサンプルスクリプト(プログラム)です。

mailmform.phpを実行すると入力フォームが表示され。送信ボタンを押す(クリック)すると入力した内容がメール送信されます。

<?php
//------------------------------------------------------------------------------
//    mailform.php - sample mailform php script
//------------------------------------------------------------------------------

mb_language("Japanese");
mb_internal_encoding("UTF-8");

define("MAILTO", "*******@****.***");

$proc = isset($_POST['proc']) ? $_POST['proc'] : '';
//echo $proc; // for debug
if ($proc == 'send') {
    _send();
}
else {
    _input();
}

// 初期表示
function _input() {
    $formdata = array();
    $formdata['subject'] = '';
    $formdata['name'] = '';
    $formdata['from'] = '';
    $formdata['body'] = '';
    _input_form($formdata, '');
}

// 入力フォーム表示
function _input_form($formdata, $message) {

    // XSS対策
    $formdata['subject'] = htmlspecialchars($formdata['subject'], ENT_QUOTES);
    $formdata['name'] = htmlspecialchars($formdata['name'], ENT_QUOTES);
    $formdata['from'] = htmlspecialchars($formdata['from'], ENT_QUOTES);
    $formdata['body'] = htmlspecialchars($formdata['body'], ENT_QUOTES);

echo <<<EOF
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプルメールフォーム</title>
</head>
<body>
<h2>サンプルメールフォーム</h2>
<p>$message</p>
<form action="mailform.php" method="post">
<input type="hidden" name="proc" value="send">
件名:<br />
<input type="text" name="subject" size="50" value="${formdata['subject']}" /><br />
名前:<br />
<input type="text" name="name" size="50" value="${formdata['name']}" /><br />
メールアドレス:<br />
<input type="text" name="from" size="50" value="${formdata['from']}" /><br />
本文:<br />
<textarea name="body" cols="50" rows="10">${formdata['body']}</textarea><br />
<br />
<input type="submit" value="送信" />
</form>
</body>
</html>
EOF;

    exit();
}

// メール送信
function _send() {

    // パラメータ取得
    $formdata = array();
    $formdata['subject'] = isset($_POST['subject']) ? $_POST['subject'] : '';
    $formdata['name'] = isset($_POST['name']) ? $_POST['name'] : '';
    $formdata['from'] = isset($_POST['from']) ? $_POST['from'] : '';
    $formdata['body'] = isset($_POST['body']) ? $_POST['body'] : '';

    // 入力チェック
    if ($formdata['subject'] == '') {
        _input_form($formdata, '件名を入力してください');
    }
    if ($formdata['name'] == '') {
        _input_form($formdata, '名前を入力してください');
    }
    if ($formdata['from'] == '') {
        _input_form($formdata, 'メールアドレスを入力してください');
    }
    else {
        if (!preg_match('/^[-+\\w]+(\\.[-+\\w]+)*@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]{2,6}$/i', $formdata['from'])) {
            _input_form($formdata, '正しいメールアドレスを入力してください');
        }
    }
    if ($formdata['body'] == '') {
        _input_form($formdata, '本文を入力してください');
    }

    // 送信
    $header = "From: " . mb_encode_mimeheader($formdata['name']) . ' <' . $formdata['from'. '>';
    $result = mb_send_mail(MAILTO$formdata['subject'], $formdata['body'], $header);
    if ($result{
        _input_form($formdata'メールを送信しました');
    }
    else {
        _input_form($formdata'メール送信に失敗しました');
    }
}

?>
[2216] Posted by kagahiro at 2012/06/13 13:04:06
0 point | Link (5) | Trackback (0) | Comment (0)

これもウェブデザインのレイアウトの参考に

今回は、ウェブデザインのレイアウトに役立つサイトをいくつかご紹介します。 そのまま使えるレイアウトのサンプルや、いい感じのスクリプト、レイアウトの参考になりそうなインスピレーション系などを集めてみました。

ブックマーク先へ ウェブデザインのレイアウトに役立つ11サイト | DesignWalker

[2197] Posted by kagahiro at 2012/05/25 23:13:26
0 point | Link (0) | Trackback (0) | Comment (0)

コピペで出来る!簡単ホームページ作成入門は、「ホームページを作りたいけど何をやれば良いのかわからない」という人向けの情報を掲載しているサイト。 説明を読みながらサンプルをコピー&ペーストして組み合わせ、...
[2196] Posted by kagahiro at 2012/05/25 23:10:08
0 point | Link (0) | Trackback (0) | Comment (0)

オープンソースのシンプルな掲示板CGI「ThreadPlus」の最新版「ThreadPlus 1.1」をリリースしました。ThreadPlus 1.1では、以下の機能が追加されています。ホームページ機能(index.CGI)RSS出力機能(rss.CGI)サイトマ...
[2183] Posted by kagahiro at 2012/05/15 18:06:40
0 point | Link (4) | Trackback (0) | Comment (0)

有料版メールフォーム(入力フォーム)の実際に動くサンプルを作成しました。お問い合わせフォームのサンプル会員登録フォームのサンプル注文フォームのサンプルメールフォーム(添付ファイル機能)のサンプルユーザ...
[2069] Posted by kagahiro at 2010/11/02 10:04:01
1 point | Link (5) | Trackback (0) | Comment (1)

ユーザーローカルが提供しているWikipediaの記述の一部を取得できるWeb APIを、Perlから呼び出すためのサンプルコード。コードの文字エンコードはUTF-8。標準出力へもUTF-8のまま出力。#!/usr/bin/Perluse strict;us...
[2032] Posted by kagahiro at 2010/09/24 20:05:21
0 point | Link (1) | Trackback (0) | Comment (0)

Google Developer Day 2010 のアジェンダが公開されました。テーマは、「Android」「Chrome & HTML5」「Cloud Platform」の三つだそうです。東京 2010年9月28日 火曜日 9:00 - 開場10:00 - 12:00 基調講演12...
[2018] Posted by kagahiro at 2010/09/03 23:01:38
0 point | Link (1) | Trackback (0) | Comment (0)

メールフォームPHP版を追加しました。スクリプト先頭の以下の「YourEmail」の部分に送信先のメールアドレスを設定すると、フォームで入力された内容がそのメールアドレスに送信されます。<?PHP$to = 'YourEmail...
[2013] Posted by kagahiro at 2010/09/01 22:59:37
0 point | Link (1) | Trackback (0) | Comment (0)

HTML5リファレンスは、HTML5の仕様や実装状況に関する現時点での最新レポートや実際に動作するサンプルを添えた解説などを掲載しているサイト。HTML5リファレンスHTML5タグ事典―主要ブラウザ・ベンダーが推進する次...
[2005] Posted by kagahiro at 2010/08/24 23:39:54
0 point | Link (6) | Trackback (0) | Comment (0)

|< 先頭へ  < 前へ  1 2 3 4 5  次へ >


アクセスランキング

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

  1. 無料掲示板CGIのダウンロード (4 PV)
  2. 究極の爆益ゴールドナンピンマーチンEA「Extreme MT5」 (3 PV)
  3. Google News (グーグルニュース)日本版 (3 PV)
  4. 究極の爆益ゴールドナンピンマーチンEA「Extreme(エクストリーム)」 MT4向け (2 PV)
  5. ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (2 PV)
  6. キリ番トレードにも使える無料の半自動裁量支援ツール(EA)「PositionKeeper」 (2 PV)
  7. 爆益を狙うハイリスクハイリターンのナンピンマーチンEA「Hyper Dollar MT5」 (2 PV)
  8. What Is Web 2.0 の日本語訳 (2 PV)
  9. 「国家非常事態」トランプ米大統領が日本に24%の関税を課すと表明 日経平均株価が急落 (2 PV)
  10. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (2 PV)

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (221 PV)
  2. 無料掲示板CGIのダウンロード (100 PV)
  3. 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (52 PV)
  4. 究極の爆益ゴールドナンピンマーチンEA「Extreme(エクストリーム)」 MT4向け (51 PV)
  5. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (47 PV)
  6. 「国家非常事態」トランプ米大統領が日本に24%の関税を課すと表明 日経平均株価が急落 (44 PV)
  7. 究極の爆益ゴールドナンピンマーチンEA「Extreme MT5」 (42 PV)
  8. 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (39 PV)
  9. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (35 PV)
  10. 2NN 2ちゃんねるニュース速報+ナビ (34 PV)

アクセス統計

ディレクトリ

関連サイト