1286882067 お気持ちのみですが合計500P~。コメント欄に示す、CGI等を用いた簡単なサーバーのプログラム(データベース使用)を構築して下さい。データベースはMySQL、CGIやファイル名、フォルダ名等は適当に設定して下さい(CGIの言語は何でも良いです。一番標準的なものを適宜使用して下さい)。お力お貸し下さい。よろしくお願いします。

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2010/10/19 20:15:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:ReoReo7
    要件:
    DBに登録されているAttributeを適当に表示するWebアプリのようなプログラムです。
    尚、自分一人で使いますし、他人に公開したり商用利用の予定もありません。

    結果表示&code送信画面(sample.cgi)
    1:DBの検索結果を1行表示し、1秒程度の長さのmidi(sound1.mid等)を鳴らします。(最初の表示は「ようこそ。codeを入力して下さい。」で、midiは無し)
    2:文字列入力テキストボックスを持ち、フォーカスが最初からそこにあります。ボタン押下またはEnterキーで送信し、再び同じ画面に返ってきます。(テキストボックスの入力文字列の桁数やフォーマットのチェックは今のところ必要ありません。)

    DBの例:
    UniqueKey,code,name,attribute
    1,X1234,名前1,1
    2,X0001,名前2,2
    3,X1235,名前3,1

    結果表示&code送信画面の例
    添付した画像を参照して下さい。
    codeがDBにあればattributeの表示をし、attributeに対応するmidi(1ならsound1.mid、2ならsound2.mid)を1回だけ鳴らします。
    codeがDBに無ければその旨表示し、soundnothing.midを鳴らし、codeを件名にsample@sample.com宛にメール送信します。
    attribute調査アプリとそのuploadについてはノータッチで構いません。

    その他、不足している情報は適宜適当に仮定して進めてくださって構いませんが、不明点があれば質問をお願いします。
  • id:ReoReo7
    2010/10/12の20:00頃に一度質問しましたが、説明画像に変更があったため、一度質問をキャンセルさせて頂き、本質問にて再質問させて頂きました。失礼しました。
  • id:ReoReo7
    MySQLはSQL文の意味は分かります。
    サーバーにMySQL設置する方法は・・・慣れてはいませんが、最初のField名の設定と設置までは何とか自力で勉強してみようと思っています。Field名の設定と設置を行うプログラムを書いて、サーバーで動作させる方法を教えて下されば助かりますが、そのあたりは適宜私が勉強するということで構いません。
  • id:ReoReo7
    誰も答えてくれないかな?

    この質問はあと1日で終了し、別途質問したいと思います。
    今なら各回答者の方へお気持ちのみですが500Pずつ差し上げられます。
    が、ちょっと質問の前提知識や回答の結果のプログラムの長さを考慮できていないので、少し細分化したり勉強しながら再質問するのも悪くないかと思っています。
  • id:windofjuly
    うぃんど 2010/10/16 10:31:53
    【1】誰も答えない理由いろいろ
    (1)これまでの質問内容ならびに今回の回答上限20回という初期設定から、環境構築から実際に動作するまでの指導が必要と思われ、はてなの1週間というリミットでは難しい
    (2)MySQLとの組み合わせで多用され情報も多いのはphpであり人力検索でも多い組み合わせだけれどcgi(言語は多種多様ですが有名なのはperl)となると最近は利用者が少ない。すなわち、cgiという言葉を使ったために敬遠している人も多いと思います
    (3)MySQL使いで、midiも使っている人となればさらに人は少なくなりそうです
    (4)500ポイントと銘打っていることから、それが負担となる人もいれば、その程度でやってられるかよという人もいるでしょうし、ポイント狙いと思われるのが嫌という人もいるでしょう
     
    【2】細分化ではなくステップバイステップでしょ
    (1)構築ならびに運用環境、さらには利用言語を決定する
    a.自分のパソコン上で構築し運営する
    b.レンタルサーバ上で構築し運営する
    c.自分のパソコン上で構築し、レンタルサーバ上で運営する
    いずれのパターンにも適応しやすい点でxampp下での環境構築が適しているでしょう
    先にも書きましたが動かすという点で言語はphpが最短ルートでしょう
    (2)データベース操作部分を学ぶ
    環境と言語を決定したのであれば、SQLをMySQLに投げて結果を受け取る方法をまずは学びましょう
    SQLを投げる方法がわかったのであればCREATE TABLEとINSERTを投げてやればテーブルは完成です
    (3)セキュリティについて学ぶ
    インターネット上に非公開ならば考慮は不要ですが、たとえ自分だけが使うものだとしてもインターネット上に置くのであれば最低限のセキュリティは必要です
    (4)メール送信に必要な環境と送信方法について学ぶ
    順序が後先してしまいましたけれど、環境構築の際には、メール送信の実績のある環境かどうかをネットや人力で調べておく必要があります
    (5)midi再生について学ぶ
    midi再生はHTMLにてオブジェクトへのリンクを行うだけですからcgiなどとは無関係
    WindowsアプリであればWindowsにて用意されている音源を使うなどの手がありますが、ここでの問題点はmidiファイルを用意することのほうが問題です
    (その他)http通信手順、HTMLの基礎を学ぶ
    事細かに知る必要はありませんが「すべてがパソコン上で終わるWindowsアプリとは違う」ということをよくよく認識しておく必要がありますので書いておきます
     
    ご自身で調べるスキルの高い人だとお見受けしてますので、多分ですが「あとは自力でも何とかなるのではないかな?」と思ってます
    (回答欄ではなくコメント欄に記入していることからも、以後、一切かかわることなく放置する可能性が高いことも申し上げておきます)
    (月末まで仕事が忙しく、現地に出てしまうことも多く、今日も休みなのに昼から出かけます。誰か変わって~~~~~苦笑)
  • id:Mook
    コメントだけですが、
    ・MIDI は プラグインが必要ですが EMBED タグで可能です。
      (MIDI HTML 等で検索すれば、たくさんの実例が見つかりますのでお好きな方法で。)

    メールの仕様は、スマートとは思えません。私でしたら CGI(PHPでもPerlでも大差ないと思いますが) 側で
    1) DB でデータの有無の確認
    2-Y)あったら結果を返す
    2-N)なかったら system(外部プログラムを呼び出す)関数等で処理を実行し、そのまま結果を返す。
      もし処理時間がかかるなら、一旦処理中の画面を送るのも可能ですがが、自分だけの使用なら面倒なので省略。
    程度で実装するかと思います。

    ただし、可能であれば(大抵の処理は可能だと思いますが) CGI の中で処理をしてしまいたいですね。
    少し凝ったことをするのであれば、ActionScript を検討するかなぁ。
  • id:ReoReo7
    >windofjulyさん

    ありがとうございます。
    >環境構築から実際に動作するまでの指導が必要

    やっぱり、手間のかかる質問者に見えますよね?苦笑
    上限20回というのは、まれに初期設定の2回をオーバーすることがあるので適当に上限を上げただけなんですが。

    500ポイントというのは中途半端で本当に気持ち程度なんですが、たまに趣味で溜まったポイントで家電とか買ってらっしゃる方がいらっしゃいますので、こちらも気持ちだけ応援させて頂いています。
    実際にhatenaにいらっしゃる方々と同等スキルのプロに発注すればとんでもない額がかかるのは承知の上ですが(1ステップ●百円+1件いくらとか)。自分で勉強しつつ質問してとっかかりを与えて頂いて、いつも大変感謝しています。


    以下、ご指摘頂いた事項について。。

    【2】細分化ではなくステップバイステップでしょ
    (1)構築ならびに運用環境、さらには利用言語を決定する
    b.レンタルサーバ上で構築し運営する
    でやりたいと思います。
    「いずれのパターンにも適応しやすい点でxampp下での環境構築が適している」→検討してみます。
    「動かすという点で言語はphpが最短ルート」→了解です。

    (2)データベース操作部分を学ぶ
    CREATE TABLEとINSERT文の意味だけ分かりますので、SQL文を投げる方法について学んでみます。。

    (3)セキュリティについて学ぶ
    「自分だけが使うものだとしてもインターネット上に置くのであれば最低限のセキュリティは必要です」→了解です。以前Basic認証のサンプルページを自分でレンタルしていたサーバーにアップしてアクセスしてみたことがあるので、HTMLにデータベースアクセス専用のフォームを設置し、外部からデータベースアクセスは禁止するとかいった程度のセキュリティを検討しています。

    (4)メール送信に必要な環境と送信方法について学ぶ
    「順序が後先してしまいましたけれど、環境構築の際には、メール送信の実績のある環境かどうかをネットや人力で調べておく必要があります」→ありがとうございます。以前PHPでフォームからメール送信するサーバー(XREA)を借りたことがあり、うまく動作していたので同レンタルサーバーからCORE SERVERというプランが出ていたのでこれを借りようと思っています。

    (5)midi再生について学ぶ
    midiファイルは効果音程度で十分なので、無料の素材をダウンロードしてきたいと思っています♪何かのタグで埋め込もうかと思っています。

    (その他)http通信手順、HTMLの基礎を学ぶ
    「すべてがパソコン上で終わるWindowsアプリとは違う」→了解です。
     

    いろいろとありがとうございました♪
  • id:ReoReo7
    >MOOKさん

    ありがとうございます。
    EMBEDタグですね!

    やっぱりメール送信、遅いし理想的ではないですよね。メール送信の通信手段はpoorなので全部サーバー側で処理完了するのが理想なんですが、後でデータ処理を行ったりすることを検討すると、やはりローカルとのWindowsとの連結は、現在では不可欠なんですよね・・・結果待ちに5分とかかかりますが・・処理だけVBAに移してほぼできたんですが、将来には高速化を検討してみようと思います。最初からサーバーに移植してしまうと挫折しそうです(笑)とりあえず、遅くて稚拙でも良いから完成を目指しています。
  • id:Mook
    どうも話がかみ合わない気がしますが、
    >やはりローカルとのWindowsとの連結は、現在では不可欠なんですよね・・・
    クライアント問い合わせ ⇒ サーバ処理 ⇒ クライアント結果表示
    ではないのですか?

    サーバ側での処理が終わったら、結果を表示するというのであれば、Ajax あたりがすぐに
    思い浮かびますが、敷居が高いでしょうか。

    VBA でなければ出来ない処理というのがなにか気になりますが、個人的に回答の食指が動かないのは、
    このあたりがブラックボックスだということもあります。

    まぁ、
    >遅くて稚拙でも良いから完成を目指しています。
    というのも大切なことです。がんばってください。
  • id:ReoReo7
    >MOOKさん

    コメント頂きましてありがとうございます。

    >>やはりローカルとのWindowsとの連結は、現在では不可欠なんですよね・・・
    >クライアント問い合わせ ⇒ サーバ処理 ⇒ クライアント結果表示
    ではないのですか?
    1:クライアント問い合わせ→サーバーにデータがあればクライアント結果表示
    2:クライアント問い合わせ→サーバーにデータが無ければ別のコンピュータ(エクセルVBAを使うので仮にVBAマシンと呼びます)に処理依頼→クライアントに「まだだよ」と結果表示(別のコンピュータ(VBAマシン)はサーバーにデータをアップロード)→クライントは、2~3分経過した後1:の動作を行う。

    >サーバ側での処理が終わったら、結果を表示するというのであれば、Ajax あたりがすぐに
    思い浮かびますが、敷居が高いでしょうか。
    敷居が高くはないのですが、サーバー側での処理は、データベースへの問い合わせのみになります。VBAマシンはリクエストに対して、とあるホームページにアクセスして、10ページほど遷移しながら関連するデータをかき集めて来て判断します。ページ遷移の結果、あるページの特徴を抽出したりするのですが、その特徴データをセルに書き込んだり、セルに書き込まれたデータの数値処理の結果が特徴データだったり、そのデータの結果によって分岐処理を行ったりするので、これをプログラムに直接書く自信がありません(セルは目で見えるので、分岐処理を視覚的に書けたりして便利)。

    VBA でなければ出来ない処理というのがなにか気になりますが、個人的に回答の食指が動かないのは、このあたりがブラックボックスだということもあります。
    >申し訳ありません。

    まぁ、
    >遅くて稚拙でも良いから完成を目指しています。
    というのも大切なことです。がんばってください。

    >ありがとうございます!
  • id:ReoReo7
    ひとまずXAMPPインストールしました。
    これから簡単なMySQL設置とそれに絡めたPHPプログラムを作ってみます。
  • id:ReoReo7
    文章がおかしかったので削除・再投稿します。

    音を鳴らすのはできました。
    <embed src="/mp3/sample.mp3" autostart="true" loop="false" width="0" height="0" hidden="true">
    midiではなくてmp3を使っています。理由は、素材が豊富なことと、ブラウザ側でキャッシュ(キャッシュとは、ページまるごとの意味で、PHPで生成されたページのリンク先のみをローカルから読み込むというのはできないかな?できない場合、mp3が重ければmidiの適用を検討します。ここではできるものとして仮定しています。)を保存すればロードにも時間かからないかと思いまして。

    とりあえずロードは0.5秒以内なので良しとします。ロード時間がキャッシュを利用したら短くなることを仮定しつつ。毎回キャッシュを利用してもmp3を読むだけでロードが0.1秒以上かかるようなら再度検討します。
  • id:ReoReo7
    phpMyAdminを使ってデータベース作成完了しました。
    xampp使用でローカルのsample.phpにアクセスし、php中でSQL文を投げてデータベース全体を表示することに成功しました。
    おかげさまでとっかかりがつかめました。ありがとうございます。

    次の予定:
    xampp:DBへのサンプルデータ挿入(INSERT)
    xampp:PHPにてフォームデータの表示
    xampp:フォームデータの投稿に応じた結果表示
    レンタルサーバー:メール送信試験
    レンタルサーバー:フォームデータの投稿に応じたメール送信試験
    VBAマシン:メールの内容に応じた処理実行とサーバーへのデータUPDATE
    (開発の雑記を適当にコメントしていますが、無視してください。)
  • id:ReoReo7
    [完了]xampp:DBへのサンプルデータ挿入(INSERT)
    [完了]xampp:PHPにてフォームデータの表示
    [完了]xampp:フォームデータの投稿に応じた結果表示
    [今ココ]レンタルサーバー:メール送信試験
    レンタルサーバー:フォームデータの投稿に応じたメール送信試験
    VBAマシン:メールの内容に応じた処理実行とサーバーへのデータUPDATE
    (開発の雑記を適当にコメントしていますが、無視してください。)
  • id:windofjuly
    うぃんど 2010/10/20 18:53:56
    にゅ!
     
    やはり、やりはじめると早い人だったようですね
    蛇足ながら、VBAマシンは「常に稼動し、定期的にメールをチェックする」ような仕組みを持っていると思うのですが、
    それならばそれで、メールという不確かなものに頼るのではなくて、別の手段を用いても良いのではないかと思います
    (1)比較的簡単で安全な方法
    ・ユーザー用とは別に用意した秘密のページにアクセスしてデータ取得
    あるいは
    ・FTPでデータ取得
    (2)外部からの攻撃にも耐えなければならないので敷居はあがるけれど応用の利く方法
    ・VBAマシンをサーバ化して、レンタルサーバからデータを送るような形にする
     
    以上、あくまで(悪魔手?)余談です
  • id:ReoReo7
    >windofjulyさん

    ありがとうございます。おかげさまでぼちぼち進めています。
    ajaxであるgmailを使って新規件名をデータに見立てて、取得したら既読にするブラウザ操作をVBAマシンから行う予定だったのですが(検索とデータベースのように記録が残り、かつ目で見られるところが開発に有利と思い。)、やはりスピードや信頼性から言うと遅かれ早かれFTPでデータ取得が良さそうですかね。

    データベースにキューを溜めることにして、データベースにVBAマシンから接続して、データベースに対応する整数型のunique keyをincrementしながら、データが存在しなくなるまでデータベースに溜まっているキューを読み込んでいくみたいな感じだと良いんでしょうかね。
  • id:ReoReo7
    メールの件ですが、データベースにすることにしました。
    phaseというTINYINTのフィールドを設けておき、最初は1、読み出し完了で2、処理完了で3にアップデートするという方式にしました。これなら
    WHERE PHASE = '1'とすると、未読メールが見られるみたいな。
    しかもログも残ります。DBの方がタイムラグが無くて信頼性もあっていいですね(笑)

    アイディアを授けて下さった方々、ありがとうございます!
  • id:ReoReo7
    おかげさまで、ほぼ所望の動作を実現することができました。

    サポートしてくださった方に心からお礼を申し上げます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません