サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
www.tryhp.net
一般的なHTMLドキュメントは、ホームページ作成ソフトのアップロード機能で簡単にアップロードできますので、 多くの方がこの機能を利用しアップロードしている事でしょう。 しかしながらCGIはドキュメントではなく、プログラムですので同じ方法でアップロードしたのでは、 そのままプログラムのコードが表示され、訪問者には何がなんだかわかりません。 ここでは、FTPソフトを使用して手動でファイルをアップロードする方法と、プログラムコードを表示させるのではなく、 プログラムを実行させて結果を表示させるアクセス権限(パーミッション)を解説します。 FFFTPのインストール FFFTPは、現在無料で配布されているFTPソフトでは、最も高機能で簡単なWindows用アプリケーションです。 開発者のサイトから最新版をダウンロード(2004/ 6現在 v1.92)し、 自己解凍exeをダブルクリックします。 イン
このコーナーでは、メール送信ライブラリ「sendemail.pl」を使ってすべてのスクリプトでメール送信を可能にする学習をします。 今回は、UNIX及びLinuxのSendmailを使用しますので、Windowsサーバではご利用いただけません。 Windows用メール送信機能は、ホームサーバの構築で解説しています。 メール送信ライブラリ あなたのプロバイダが「sendmail」を開放している場合は、このライブラリ( sendemail.pl )をダウンロードし、 拡張子を.plに変更して パーミッションを「755」に設定します。 sub send_email { local($subject, $from, $to, $cc, $bcc, $body) = @_; local(@TO) = split(/\,/, $to); local(@CC) = split(/\,/, $cc); l
これらのファイルをすべて同じディレクトリにFTPでアップロードし、 アップロードしたディレクトリのパーミッションを777(一部のサーバでは755)に設定。 jcode.pl、perl-lib.pl、servercheck.cgiはパーミッションを755に設定します。 servercheck.cgiのperlのパスは「#!/usr/local/bin/perl」に設定されていますので、 変更する場合は、エディターで開き先頭の行のみを変更してください。 ServerCheckUtilityの起動 インストールが完了すれば、ブラウザのアドレスバーに設置したURLを入力してアクセスします。 環境変数 Webサーバがサポートする環境変数 生成スクリプト実行 新しいディレクトリの作成と、CGIが生成した新しいスクリプトの実行テスト 画像のアップロード 同一サーバにアップロードされた画像の表示 メール送
WEBサイトファイル管理スクリプト 一度、本CGIを設置すればFTPを使用せずにCGIの設置及びデータファイルの作成、その他のファイルを管理する事ができます。 FTPでは不可能なツリー表示やサムネイル表示、ゴミ箱機能、サイト内ファイル検索、HTMLのリンク切れ検査も標準装備。 残念ながら当サイトのサイトツリーはご覧いただけません。ご自身のサーバでテストしてください。 サイトのディレクトリをツリー形式で表示します。 ディレクトリをクリックするとディレクトリ内のファイルを表示します。 画像ファイルは指定した大きさでサムネイルで表示されます。 訪問者は管理者が指定した形式のファイルを指定したディレクトリだけにアップロードする事ができます。 著作権の厄介なgifも禁止できます。 管理者はすべてのファイルをアップロードできます。 cgiやplなど、テキストファイルは「テキスト」をチェックしてアップロ
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. More information about this error may be available in the server error log. Apache/1.3.23 Server at tryhp.jpn.ph Port 80 もっとも嫌なメッセージですね。本章では、perlプログラマがよく犯してしまうミスを紹介します。 末尾のセミコロン「;」を忘れる perlの実行分の後ろには必ずセミコロンを置かなくてはなりません。 ○ print "こんにちは"; BASICなど、一部の言語では改行をターミネータ「ここで終わりです」として判断し
ダイナミックDNSとは、ドメイン名をお持ちでない場合、 あなたのサーバ名とダイナミックDNSサービスのドメイン名でサーバドメインを作成し、 このURLとプロバイダから割りつけられたあなたのルータのグローバルなIPアドレスを結びつけ、 あなたのサーバを識別させる画期的なサービスです。固定IPをお持ちでない場合は、 再接続するごとにグローバルIPアドレスは変更されてしまいますが、ダイナミックDNSなら、 いつでも更新する事ができますのでサービスが停止されない限り取得したURLであなたのサーバにアクセスする事ができます。 世界中にいくつものダイナミックDNSが有りますが、そのほとんどが無料で使用する事ができます。 日本にも無い事はないのですが、ほとんどが有料です。書店ではダイナミックDNS専門書が有るくらいですから想像は出来ると思います。 今回は数少ない国内の無料のサービス「ieserver」を
CGIは、UNIX上で動作する言語なら何を使って作成してもかまいませんが、 C言語ではサーバのOSごとにコンパイル(機械語化)する必要があり、 一度コンパイルしてしまうと変更することもできません。 他のサイトから無料でダウンロードしてもご自分では何も変更できません。 Cのソースを公開する方法もありますが、これはまた厄介で、ある程度Cの知識が必要なだけでなく、 コンパイラが必要になります。 これらの問題をすべてカバーしてくれるのがPerl(以下Perl、パールと読む)言語です。 Perlは、テキストベースで動作するコンパイラ言語ですので、作成するのはテキストファイルだけです。 このテキストページにアクセスがあればPerlが自動でコンパイルして実行されます。 しかも、Perlは、C言語の長所とBASICの長所を合わせ持つ高級言語なのです。 これらの理由から現在CGIとして世界中で最も使用されて
自由にご利用いただけるフリーウェアです。 利用規定を良くお読みいただきご使用ください。 名称横の日付は初期公開の日付です。日付の無いものは1997年以前から公開されています。 最終更新日は、各マニュアルページをご覧ください イメージカウンタ [2003/03/03] 既存の画像とカウンタを合成して1枚のカウンタ画像を出力出来るカウンタです。 前日、当日のアクセスと、当日の日付、曜日も合成できます。 スロットカウンター [98/01/08] 画像張り付け型のアクセスカウンタです。 GIFアニメーションや、JPG画像も使用できます。 ログカウンタ(Java版、SSI版) [98/1/26] 画像埋込み型のアクセスカウンタです。 単独のスクリプトで、累計、前日、本日を表示できます。 しかも指定した日数の日計表を見る事も出来ます。 アクセス解析 [04/07/05] フリーウェアとしては高性能なア
MySQL コントロールセンターを使えば厄介なコマンドラインを使用しなくても 使いなれたWindowsのGUIでMySQLデータベースを操作する事ができます。 データベースの作成から、テーブルの作成、データの登録、削除まですべて可能です。 UNIX/Linuxユーザの為のコントロールセンターも用意されていますが、 当サイトでは、Webminを使用していますので解説は省略しますが、 デザインから操作までほとんど同じです。 Webminでは不可能な細かな設定も可能ですのでインストールする価値は有ります。 Windows版のMySQLコントロールセンターを mysql.comからダウンロードします。 [2004/ 6]現在、最新版は「Windows 95/98/NT/2000/XP」として公開されています。 ダウンロードしたファイルを「C:\mysqlcc」にでも解凍します。 C:\mysqlc
現在のところ、作成されたオブジェクトからonclickや、onmouseover、onmouseoutは、同じように動作しますが、 Windowでクリックされた位置の取得がMicrosoftInternetExplorerとNetscapeNavigator が大きく違い、 どうしても1つのスクリプトで記述することができません。しかしながらCGIで使用する場合は、 ブラウザを取得して作成するDynamicHTMLを変える事で対応する事が可能です。 本章では、マウスイベントを中心にブラウザのイベントハンドラーを学習します。 onclick もっとも基本的なイベントで、マウスの左ボタンを1度押して、離した時発生します。 押したままだと発生しません。押した位置と離した位置がほぼ同じ場合がクリックです。 押しただけではonmousedownが発生します。 <p onclick="alert('マウ
Windows版のMySQLを ミラーサイトからダウンロードします。 Windows版はzip形式で圧縮された、Varsion4なら「mysql-4.0.20-win.zip」のように バージョンナンバーが付いたファイル名になっています。 C:ドライブのルートディレクトリにMySQL用のディレクトリ「mysql」を作成し、 ここに解凍してください。 解答されたファイルは、C:\mysql にすべて無ければなりません。 C:\mysql に有るインストーラsetup.exe を実行します。 ウィザードに従うだけですから簡単にインストールは完了します。 Windows2000/Xp であれば再起動するとサービスでMySQLは起動しています。 もし起動されていなければ、C:\mysql\bin のmysqld.exe を実行します。
CGIでファイルを操作すると、しばしばデータが消失することが有ります。 これは、同時アクセス(書き込み)による衝突です。 他の多くのサイトでもこれを避ける方法が紹介されていますが、私の経験上どれも不十分で、 現に有名サイトのカウンタさえ破壊されていることがしばしばです。 このコーナーでは、衝突しない。万が一衝突してもデータを破壊しないロック機能を考えてみましょう。 現在もっとも採用されているロック機能 foreach (1 .. 10) { if (symlink($datafile,$tmpfile)) { last; } sleep(1); } open(OUT,"$datafile) || die "Can't open tmp file.\n"; print @DATA; close(OUT); unlink($tmpfile); このコードを1つずつ解析してみましょう。 fore
レイヤとは、透明なシートのような物で、ブラウザはこのシートが幾重にも重なって構成されています。 何も指定しなければ一番下のシートに書かれていますので、皆さんが作成したページは 0番目のレイヤに書かれていると考えていただければ簡単に理解できると思います。 ここでは、使用していない、上部のレイヤを使いこなす方法をご紹介します。 本来、MicrosoftInternetexplorerは、このレイヤという言葉には対応していませんが、 <div>タグで全く同じことができてしまいます。 Netscapeにはレイヤが有りますが、レイヤオブジェクトで作成してしまうとIEで動作しませんので、 両ブラウザが対応している<div>を使用します。 重ね合わせ レイヤは、<div>タグにstyleでPOSITION:absolute を指定する事で実現します。 DISPLAY:none は、初期状態では非表示に設
一般的なホームページは、HTMLと言われる装飾機能を持った簡易言語で書かれています。 現在では、ほとんどの方々がホームページ作成ソフトを使用してデザインし、 簡単に作成できますのでHTMLを学習する必要もなくなりました。 HTMLドキュメントは、制作者がサーバにアップロードすれば、変更するまで毎日、毎回、同じ物を表示し続けます。 一方、CGIで作成されたページは、制作者はもちろん、訪問者が更新したり、 訪問者のリクエストに応えて毎回違ったページを表示させる事もできます。 この事からインタラクティブ(双方向性)なWEBページと呼ばれているのです。 インタラクティブなホームページは、Javaスクリプトでも作成することはできますが、 CGIがサーバ上で動作するのに対し、Javaスクリプトは、 すべてのコードをダウンロードしてクライアントマシン(皆さんのパソコン)で動作する為、大きなプログラムは非
書籍「プレミアムCGI」でご紹介した複数ページ対応アンケート収集CGI「WebHandlerPro」を Windows系OSで動作させる事を可能にした特別バージョンです。 今回ご紹介したメール送信機能に対応していますので、 一般的なWindowsNT/2000を使用しているプロバイダでのご使用は保証できません。 基本的にはUNIX系サーバでも動作するよう設計されていますが、動作テストは行っていません。 自由に作成したアンケートページを自動解析してデータベースを作成します。 アンケート内容は管理者にメールで通知されます。 CCを指定する事で複数のメールアドレスに同時に送信する事もできます。(5ヶ所以内) 複数のページをリンクして大量の項目を集計できます。 集計したデータはグラフで表示されます。 予め設定した値が有ればプログレースバーで表示する事もできます。 また、グラフ表示を昇順/降順で並べ
ここまでのDynamicHTMLだけでも十分ページのデザインを拡張することができましたが、 JavaScriptを使って機能的にも使いやすく、ミスを防ぐ手法をご紹介しましょう。 未記入の項目をチェックする CGIで未記入項目をチェックする場合は、一度サーバに送信してCGIが未記入項目をチェックしてエラーを出力しますので、 無駄な時間と、サーバにも負担がかかる事になります。JavaScriptでチェックすれば送信前にチェックすることができます。 <p> <form name=Myform> <input type=text name=name value=''> <input type=button value=送信する onclick=GoSubmit();> </form> </p> <script> function GoSubmit() { if(document.Myform.na
バナーをデザインし、フォームの最上部に有るテキストボックスに文字を記入して、 [バナーを表示]ボタンを押します。 表示されたバナーがお気に召さない場合は、ブラウザの戻るボタンで戻り、何度でも修正できます。 作成された画像が表示されますので、画像を右クリックして[名前を付けて画像を保存] を選択し、あなたのパソコンに保存してください。 通常の横書きだけでなく、縦書きのバナーも作成できます。 点滅する文字や、縦横にスクロールするマーキー効果もグラフィックで実現できます。 透過、点滅または、スクロール属性を付加するとGIF形式、それ以外はJPEG形式で作成されます。 ※ ImageMagickのGIF生成には、on The fly 同様に、LZW圧縮技術を使用していません。 したがって、生成されるファイルは大きくなりますが、LZWライセンスには抵触しません。 (ImageMagick Offic
レイヤをある程度理解する事ができれば、いろいろ面白い事が行えるようになります。 この章では、Microsoftなど有名サイトでも良く使用されているレイヤを使ったメニューの作成に挑戦します。 最近では、ホームページ作成ソフトにポップアップメニューを簡単に付けられるものがありますが、 それらのソフトが生成するJavaScriptを再配布する事はできません。 また、メニュー作成法を理解していなければCGIに応用する事もできませんので、簡単なものは作成できる必要があります。 ダイナミックメニューを作る それではこの章のまとめにダイナミックなメニューを作ってみましょう。 <style TYPE=text/css> a:link {text-decoration:none;color:#405040 } a:visited {text-decoration:none;color:#405040 } a
書き込みボードを生成する方法は、大きく分けて2つ有ります。 1つは、入力データをHTMLコードに変換して、HTMLドキュメントに追加する方法。 もう1つは、入力されたデータをデータファイルに保存し、ブラウザから呼び出されたとき、HTMLドキュメントを生成する方法です。 当サイトで紹介するスクリプトは、すべて後者のデータベース形式を採用しています。 前者は、書き込まれるHTMLドキュメントファイルが必要なため、入力フォームと、表示するドキュメントファイルが別々に必要です。 しかも、書き込み後、結果が「すぐに」反映されません。ブラウザが一度読み込んだドキュメントは、キャッシュに保存し、 二度目からはキャッシュのドキュメントを展開するからです。(リロードすれば話しは別) また、ブラウザからの条件を取得し、表示するデータや、形式を変更できないのでデータ互換を持つバージョンアップも行なえません。 こ
本来、私個人としては掲示板にタグを許可する必要はないと考えています。 タグは、掲示板を華やかな物にしてくれる反面、恐ろしい機能も有しています。 そのため当サイトのフリーウェアでデフォルトでタグが使用できるスクリプトは存在しません。 しかしながら、大変多くの御要望を頂いておりますので、「タグ」の使用を考えてみましょう。 一般的なタグの除去 現在公開されているスクリプトで、最も多く使用されているタグの除去法は、予め使用不可のタグを登録しておき、 本文中にそれらのタグが見つかれば、メッセージを表示するか書き込みをしないと言うシステムです。 $tags[0] = '<img'; $tags[1] = '<table'; $tags[2] = '<!'; $tags[3] = '<hr'; foreach $tag (@tags) { if ($comment =~ /$tag/i) { error
OLEモジュールを使用すれば、最も簡単にAccessのデータベース(*.mdb)を操作するころができます。 また、VBやVC でMicrosoft Jet を使用した経験の有る方は、 ほとんどのプロパティ、メソッドを使用できますので、より高度な操作が簡単に行えます。 Accessのデータベースにも直接接続しますので、ODBCのように前準備も必要なく、 動作も高速です。Windowsサーバのサーバソフトと、VB、VC によるクライアントソフトを開発する場合はお薦めです。
WebサーバApacheのインストールでHTML形式のページは表示できるようになりましたが、 Perlスクリプトで書かれたCGIは表示する事ができません。 一般的なHTML形式のファイルは、管理者が予め準備した情報をそのまま表示していますが、 CGIを使用すれば、訪問者からアンケートを収集したり、掲示板、チャット等を設置する事が可能になります。 ActivePerlのダウンロード 2004/ 6現在ActivePerl 5.8.3 build 809 が最新版のようですが、今回は動作の安定した ActivePerl 5.6.1 build 638 Windows msiを ダウンロードしてください。 ダウンロードするフォルダはどこでも結構なのですが、サーバソフトだけをダウンロードするフォルダに C:\SERVER\ActivePerlを作成してダウンロードしておけばバックアップや、再インス
ここまででサーバ設置に関するソフトウェアのセットアップ、便利なツールのセットアップも完了しました。 本章では、作成したサーバのホームページにアクセス制限を付ける方法や、アクセスを管理する方法を学習します。 ご自分だけのサーバだから出来るアクセス制限をお楽しみください。 各ディレクトリごとに.htaccessというファイル名の無い拡張子だけの特殊なファイルを置く事で 簡単にディレクトリへのアクセスを制限する事ができます。 「.htaccess」の作成 エディターを開き次の文を記入します。既に.htaccessを設置している場合は追加してください。 AddHandler cgi-script .htaccess AddHandler cgi-script .htpasswd AuthUserFile /usr/.htpasswd AuthName Please Your ID and Pass
この例では、7桁の郵便番号を指定して122,000件の中から住所を0.37秒で検索しています。 完全一致ならDBMでも0.78秒でしたから問題なく実用範囲ですが、曖昧(5桁指定)では圧倒的にMySQLが高速です。 ※インターネットでは通信時間が必要ですので実際の速度と異なります。 ※本検索エンジンは「サービス」で利用法をご紹介しています。(もちろん無料) 本コーナーの(UNIX/Linux)版のPerlモジュールのインストールは、すべてWebminから行う事を前提としています。 Webminをインストールされていない場合はこちらをご参照ください。 Webminのツールバー「その他」を押し、「Perlモジュール」を選択します。 既にインストール済みのモジュールの一覧が表示されますので、 この中に、DBI、DBDが存在しない場合はインストールが必要です。 このページの最下部にあるフォーム「CP
WEBサーバは、クライアント(WEBブラウザ)の要求にあわせて必要なデータを出力しますが、 FTPサーバは、FTPプロトコルによりクライアントからパスワードで直接接続してファイルを送受信する事ができます。 WEBサーバが一方的に出力するのに対してFTPサーバは送信も受信も可能ということになります。 もちろん、 設定によっては読み込みだけ許可するユーザや、読み書き可能なユーザー、閲覧可能なフォルダー、 書き込み可能なフォルダーなど自由に設定する事が可能です。 この機能で、サーバ管理者が許可したユーザーは会員ID、パスワードでファイルを共有する事ができます。 今回は野村久之氏の作成したフリーソフトで日本語に対応したTiny FTP Daemonをご紹介します。 海外にも高機能で無料のFTPサーバは数多く存在しますが、Tiny FTP Daemonは、 FTPとして必要な機能はほとんど持っていて
Microsoft Accessのデータベース(*.mdb)にアクセスするなら前節のOLEで接続可能ですから、 特にODBCを使用しなくてもいいようですが、ODBCを使用すると、コードを変更することなく、 Windows用のMySQLにもアクセスできます。 OLE接続とODBC接続では、使用するモジュールが違う為、作成するインターフェースも違ってきます。 Accessだけでなく、他のデータベースも操作する必要が有る場合は、ODBCを1つ覚えるだけで、 全てのデータベースにアクセス可能なインターフェースを作成可能です。 Accessオンリーで、VBやVCでクライアントソフトを作成する場合はOLEで、 オールマイティなサーバソフトを作成するならODBCと使い分けてはいかがでしょう。 ODBCもVBやVCからアクセスできますが、直接Jetエンジンを操作するOLEとは格段の速度低下になります。 O
※ r = read, w = write, x = execute で合計を計算して設定します。 通常のHTMLドキュメントは「644」ですから オーナーが「6」、グループは「4」、一般が「4」という事は、 オーナーが「rw = 4+2 = 6」で読み込みと書き込みを許可、グループと一般が「r = 4」で 読み込みだけを許可していることになります。 オーナーは更新や、メンテナンスの為書き込みを許可しておく必要があるからです。 一般的なプロバイダを介して接続している場合はグループは必要ありませんので まん中を省略「0」して設定する事もできますが、プロバイダによっては省略出来ない ところもあるようです。「644 = 604、755 = 705」 CGIのパーミッション「755」 CGIはプログラムですから実行させる必要があります。 オーナーから考えてみましょう。 オーナーもファイルを見ること
動的にGIF画像を生成するon the flyのサンプルです。 GIF画像にはLZW形式の圧縮手法が使用されていて、このLZWは米国ユニシスが著作権を主張しています。 したがって、ユーザが動的にLZWを使用することができなく、インターネットでも動的にGIFを生成できませんでした。 ここでご紹介するon the flyも動的にGIF形式の画像を生成しますが、on the fly 1.6からは、LZW形式ではなく、 ランレングス法に変更されました。 これはLZW方式にまつわる著作権問題をクリアした事にもなります。 (on the fly公式ページによる) もちろん当サイトもfly-1.6.5.SunOS-4を使用しています。必ずバージョン1.6以降をご使用ください。 on the flyを使用すれば、テキストベースのホームページでは表現できないさまざまな機能を実現できます。 こんなグラフも動的
次のページ
このページを最初にブックマークしてみませんか?
『Perl Script Language TryTheHomepage』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く