キーワード:Web 解除
久しぶりの更新です。

今更感満載なんですが、フラットデザインぽくしてみました。

まぁ、何というか・・・たいして変わりませんですかねw
相変わらず自分のデザインセンスの無さを痛感しました。

さーて、しばらく忙しくて放置してまいりましたが・・・
いい加減、更新していきたいんです。

でも、また忙しくなるんだろうなぁ・・・ ← 言い訳

あ、Webについて勉強したいと思っていますってもうずいぶん前から言ってますね。
中途半端に調べて放置していたんで、そろそろ本腰入れてHTML5(Javascript)、CSS3あたりを
勉強したいと思っています。
(20年ぐらい前のデザインのほーむぺーじなら作れますよw)

これで何回目の本腰かわかりませんが・・・w

飽きたらcocos2d-xかUnityを勉強してゲームでも作りたいと思います。

それでは・・・
以前、PHPで掲示板を作っていると書きましたが、とりあえず動くものが完成しましたので
公開したいと思います。

簡易的なレス機能なしの掲示板ですが、以下の機能は実装してみました。

・画像の投稿
・投稿した画像のサムネイル生成
・2ch互換(のはず)のトリップ
・Youtube、ニコニコ動画のURLを書くとプレイヤーを埋め込む
・連続投稿ガード
・スパム対策(プログラム等による書込み防御)
・クッキーによる入力欄情報保持
・投稿者による記事の削除(削除キーを設定した場合)

こんなところですかね?

前回も書いたとおり、記事の書込みは多くの環境でりようできるように
DBではなく通常ファイルとなっています。

ただ、PHPをよくわかってない初心者が試行錯誤しながら作ったスクリプト
なので、非常に突っ込み所満載かと思います。
今回はPHPの勉強ということですが、簡単なjavascriptも使用しています。
ただし、javascriptではフリーのライブラリであるlightboxやshaを使っています。
これはもちろん、私が作ったものじゃありません。
こんなのまだまだ作れやしないですよ・・・w
あと、CSSもググりながら見よう見真似で作ってるので統一感とかさっぱりないです。

ここに公開するのは使用してもらうというより、コードに対してダメ出しをもらうためです。
「セキュリティ的にこの方法はよくない」とか「ここの処理はもっとこう書けばいい」とか、
「そもそも設計自体がおかしい」とかw

まぁ、PHP、javascript、CSSなんかはまだまだよくわかってないので
わかってないからこそ羞恥心なく(あるけどw)公開できるってのもあります。

デザインセンスもないため見た目もひどいもんですが、よかったら使ってみて突っ込んでやってくださいw
動作は以下の仮想環境を作って行っています。
Linux(CentOSバージョンは5.6だったかな?)、Apache2系(バージョン忘れた)、PHP5.3.3
ブラウザはIE、FF、Chromeで確認していますが、何かIEは自分勝手ですね。

ダウンロードはこちら → bbs.zip

※2015/09/18 不具合があったので修正しました。

テストした際の掲示板のイメージを貼って起きます(スクリーンショットです)
特にスマホも意識してないので見え方はPCもスマホも同じような物です。
なので、スマホでは見難いかもしれません。
bbs-ss

もっとマシなデザインはできなかったのでしょうかw
CGIって聞いたことありますかね?
最近ではこの仕組みを使わずにWebサーバーのモジュールとして実行する方式が
流行ってますよね?たぶん。
Webプログラマーなら知らないと始まらないPHPなんかがそうですね。
(PHPをCGIとして動作させている風変わりな珍しいサーバーも中にはあるようですが)

さて、このCGIですがCommon Gateway Interfaceのそれぞれの頭文字を取っています。
いやだから頭文字の意味を解説したから何?と、毎回思いますがお決まりなので・・・

ざっくりとCGIについて説明すると
Webサーバーから外部のプログラムを実行して結果を受け取る仕組みです。

ざっくり過ぎてわからん!
例えば"Amakusa"と出力するだけのプログラムがあったとします。
このプログラムを起動すると「Amakusa」と表示されますが
Webサーバー側で起動すると「Amakusa」という出力結果をWebサーバーが受け取り
その結果をブラウザに返します。
ブラウザでは何と表示されるでしょう?

500 Internal Server Error

おい。

なぜエラーになるのかというと、HTTPのヘッダーを出力してないからです。
なのでこのように出力するプログラムを書くといいはずです。
Content-type: text/html

Amakusa
1行空いてますね、これは決まりごとです。
これでブラウザに「Amakusa」と表示されます。

さて、Webサーバーにこのプログラムを実行して!と命令するにはどうすればいいんでしょうか?
簡単です。そのプログラムのURLにブラウザでアクセスするだけです。
http://abcdefg.aaa.jp/xxxx.cgi
のような感じで、この例だとxxxx.cgiがプログラムになります。
CGIの場合は拡張子が主に「cgi」となっている場合が多いです。

このCGIですが、標準入出力ができるプログラミング言語なら何でも作れます。
テキスト処理が多いCGIプログラムではテキスト処理に優れたPerlというスクリプト言語が
多く使われてますが、C言語でもC++でもPHPでも、Linuxなんかのシェルスクリプトでも可能です。

標準入出力について長くなりそうなのでここでは説明しませんw

早い話、CGIプログラムは実行結果をHTTPヘッダーとHTMLで出力してそれを
Webサーバーを経由してブラウザに表示させているだけなんです。

では、CGIでない場合はどうでしょうか?
Webサーバーのモジュールとして実行されるので新しいプロセスを作る必要がないので
起動が早いです。
PHPがこの方式が多いのでPHPの方がPerlより速い!と言ってる人もいますが、
PHPが速いんじゃなくて、動作方式の違いによる差です。
PHPもPerlと同じCGIモードで動かす(またはmod_perlを使うか)と、
たいした速度差なんてないんじゃないの?と思います。

一昔前はCGIと言えばPerlというぐらいPerlがメジャーになってましたが、
今ではPHPの勢いが強そうですね。

私もPerlとPHPを使ってちょっとしたサイトを作った事がありますが、PHPはかなり楽です。
そもそも、Perlと違いWeb用に作られているから当然なんでしょうけど・・・
また、プログラミングの中でも難易度がそんなに高くなく、ホームページが作れるようになって来た
という人も結構とっつきやすいのではないでしょうか。

PerlなんかでCGIプログラムを作成する場合はフォームデータのエンコードやデコードについても
勉強が必要になってきます。(CGI用のモジュールがあるので楽なんですかね?)

なのでWeb技術でサーバーサイドのプログラムを組みたい場合はPHPを勉強するのがオススメです。

本業がプログラマーでない、Web技術素人の日曜プログラマーがエラソーな事書きましたが、
盛大な間違いがあるかもしれませんので気をつけてくださいねw
ひさしぶりの更新です。
今年も初回からPC関連で突っ走りますんでよろしくお願いします。

タイトルにあるサーバーとクライアントについてです。
結構前からサーバーなんかは耳にしていたかと思います。
ビアガーデンとかに行けばありますね。

あれはビールサーバーですが、コンピューターのサーバーもあんな感じです。
クライアントはビールを持ってビールサーバーに並ぶ人でしょうか。

コンピューターで言うサーバーは何らかのサービス(処理)をクライアントのコンピューターの
要求に応じて特定の処理を行い、結果を返すものです。
サーバーは目的に応じて色々とありますが、基本的にスペックが高いものが多いでしょう。
ただし、自分のように個人的に使うだけのようなものは
10年ぐらい前のデスクトップPCでも十分に使えます。

サーバーを設置してある企業や団体ではサーバーラックがあり、
そこにいくつもサーバーを設置してあったります。
また、稼働率を高めるために冗長構成になっているものが多いです。
もちろん、空調に気をつけないと多くのサーバーの熱によってサーバー室の温度が上がり、
サーバーが熱暴走したり、機器の寿命を縮めたりする原因になります。

さて、サーバーはクライアントから要求があったら処理を行い、結果をクライアントに返すと書きましたが
「処理って一体なんね?」と思うかもしれません。

その「処理」ですが、サーバーの種類により様々です。
ここでは身近な(?)Webサーバーを例にあげます。

WebサーバーにはWebサーバーのプログラム(ソフトウェア)がインストールされていて、
Webサービスを提供する機能があります。
Webサーバーのソフトウェアで有名なのがオープンソースのApacheや、MicrosoftのIISなんかがあります。

ではクライアントは何でしょうか?
この端末ですよ。
そう、あなたがここを見るのに使ってる端末です!
PCなのかAndroid端末なのかiOS端末なのかは人それぞれですね。
もっと言うと、クライアントにもWebサービスを受けるためのソフトウェアがあります。
言うならば「Webクライアント」でしょうか。それがブラウザです。
InternetExplorerなのか、Firefoxなのか、Chromeなのか、SafariなのかOperaなのか知りませんが
インターネットを閲覧するソフトウェアを「Webブラウザ」と言います。
Webのお仕事で食べてる人にはUserAgent(ユーザーエージェント)と言っても通じると思います。
(ちなみに私はWeb専門外なので通じませんw)

さて、ではブラウザはどのような処理を要求してサーバーはどのような処理をして結果を返すのでしょうか?
わかり易く天草弁で書きます。
PC操作者「○○のHPば見っぞ!」 ・・・ッターン!
ブラウザ「おーい!あんたがえんそこんにきにある○○っていうファイルば見せっくれな。」
サーバー「これや?よかぞ、ほれ」
ブラウザ「来た来た!ならこればPCん前にうっ座っとるしーに見やすかごつしてみせようかね」
PC操作者「よよんこて出てきた。」
こんな感じです。

もう少し実際の処理に近くして例えます。
PC操作者「http://○○.jpを見るか
ブラウザ「○○.jpさん、あなたのWeb公開フォルダのindex.htmlを見せてください」
サーバー「いいですよ、index.htmlを送ります」
ブラウザ「受け取りました。レンダリングして表示します。」
PC操作者「やっと出てきた」
どうですか?
実際はHTTPというプロトコルでやり取りしていますが、人間の言葉で書くと
このようなやり取りを行っています。

また、こういう場合もあります。
ブラウザ「おーい!あんたがえんそこんにきにある○○っていうファイルば見せっくれな。」
サーバー「は?そぎゃんたなか!!」 → 404 Not found
ブラウザ「なんて?なかとや?なかってぞ!!」
指定したファイルが見つからない場合ですね。

他にも、、、
ブラウザ「おーい!あんたがえんそこんフォルダん中(ファイル)ば見せっくれな」
サーバー「つまらん!こりゃ見せられん!!」 → 403 Forbidden
ブラウザ「なんやケチ。見せられんとってぞ。」
等があります。

また、CGIなどのサーバーサイドのプログラムではCGIの出力した結果を返すようになっています。
その場合、こういう事もあり得ます。
ブラウザ「おーい!あんたがえんそこんにきにある○○っていうとばいごかして結果ばゆっかせてくれな
サーバー「こんプログラムはおかしか!!結果の出せん!!」 → 500 Internal Server Error
ブラウザ「なんやおろいかプログラムな。」
ですね。

他には(しつこいw)
ブラウザ「おーい!あんたがえんそこんにきにある○○っていうファイルば見せっくれな。
サーバー「ちょっとまて!今せしきゃーさな!後にしてくれんか!」 → 503 Service Unavailable
ブラウザ「しょんなかな」
まぁ、他にも色々とありますが、キリがないのでこの辺にしときますねw

今回は大雑把なサーバーとクライアントの役割をHTTPで例えて書いてみました。
別の機会に、Webの通信なんかについてちょっとだけ掘り下げて書いていこうと思います。
[ 1 ]      4件中 1-4件