標準出力、標準入力とは何か
何故、標準出力と標準入力を知る必要があるのか
フィヨルドブートキャンプではRailsを深く知る為にRailsより仕組みがシンプルなSinatraというRubyのフレームワークを学習します。
ただ、Sinatraは解りにくいという声が多いそうです。
じゃあ、Sinatraの動きの元になったCGIについて知ると良いのでは?という事になったそうなのですが、CGIについて知るなら標準入力と標準出力について知る必要があるようです。
前提となる知識多い!
そんな訳で標準出力と標準入力についてkomagataさんに聞く機会を得ました。
というか上の事情によりkomagataさんがCGIについてブログにまとめようと思ったそうなんですが、思いの他まとめるのが難儀だったようで最近ブログを頻繁に書いていた僕にお助けコールがありこのような記事を書く事になったというのが事の次第です。
一応書いてみましたが情報に間違いや不備があったら御指南頂ければ幸いです。
あなた今入力しましたね?
僕らが普段スマホやPCでインターネットを使う時も実は様々な入力をしていますし、出力されたものを受け取っています。
例えば何かを調べる時に
- あなたが検索サイトでブラウザに検索ワードを入力すると
- 検索ワードはインターネットを通って検索サイトに送られ
- 送られた検索ワードは検索サイトのサーバー入力されます
- 検索サイトのサーバーは検索結果を出力し
- 検索結果はインターネットを通って戻り
- 検索結果をあなたのブラウザに出力してくれます。
ね
今このページ見てるって事はあなたも間違いなく入力しています。
そして今出力されたこの文字を読んでいる。
もう無関係ヅラ出来ないですね(悪い笑顔
様々な入力
今回は検索ワードを入力するという例でした。
しかし、言葉を入力する事だけでなく入力には様々な種類があります。
例えば
マウスをクリックすることも、スマホをタッチする事も、キーボードを叩く事も、スマートフォンをフリックする事も入力です。
出力も同じで私たちは様々な場所に出力された様々な状態の情報を受け取っています。
例えば
出力された通知をスマートウォッチで受け取ったり、モニターから出力された映像観たり、プリンターから紙を出力させたりと誠に多様です。
網膜レンズなど未来には新しいデバイスが世の中に生まれ入力する方法や出力されるデバイスは変わっていくと思います。
しかし、入力と出力自体は無くならないでしょう。(良い事言った風
telnetを思い出せ!
teinetを思い出して下さい。
HTTPの所でやったターミナルでリクエストを入力するとレスポンスが返ってくるやつですね。
あの時のtelnetでやったことを分解すると
- tarminalでリクエストを入力すると
- tarminalにレスポンスが出力される
となります。
そうですお気付きの通り
これも入力と出力だったんだよー!!
そして実はこれ、標準入力と標準出力です。
標準入力と標準出力とは何か
入力と出力なんですが実は初期設定で入力される所と出力される先が決まっています。
- 黒い画面にキーボードで文字を入力し
- その結果が黒い画面に出力されます。
この場合、入力先も出力先も黒い画面です。
ただ別に自分でそう設定したわけでは無いですよね。
最初っから黒い画面に入力し出力されるように設定されていたわけです。
この最初から決まっていた入力先と出力先
これが標準入力と標準出力です。
STDINとSTDOUT
設定ファイルを変更する事で標準入力と標準出力を変更することが出来るんですが、設定ファイルは勿論英語で書かれています。
では、標準入力と標準出力はどう書かれているかなんですが
- 標準入力はSTDIN
- 標準出力はSTDOUT
と表記されています。
これは省略された言葉でそれぞれ
- STDはStandard(標準)の略
- INはinput(入力)の略
- OUTはoutput(出力)の略
です。
入り口と出口
入力は入り口で出力は出口と考えると解りやすいかもしれません。
僕らはRailsでサービスを作り、お客さんはサービスを使って頂きますが
その時にお客さんの出入り口とスタッフの出入り口を分けているんです。
tarminalはスタッフ専用の出入り口みたいなもんでお客さんはここを出入りしないです。
入ってくるのは関係者か多分悪い奴です。
最初はスタッフ用の出入り口しかない状態からサービスを作っていくんですね。
終わりに
以上です。
解りにくい所や間違っているところがあればブログのコメント欄やツイッターで御指摘、御指南等頂ければ幸いです。
ありがとうございました。
FreeあんこLinuxディストリビューション
Linuxとは
Linuxとは何かについて話す機会があったので僕の理解をまとめてみました。
結論から言うとDebibanはおまんじゅうです。
Linux怖くないよ!
参考資料
ざっくりまとめ
- オープンソースなので無料で使え誰でも開発に参加できる
- 軽い
- 無料で使えるOSなので色々な所、サービスで使われている
- 軽いのが武器なのでCUIっていう黒い画面にコマンドを打ち込む画面で使う
- 元々あったUNIXっていうOSを真似して作られたOS
- でも実はOSじゃなくてOSの核になっているカーネルというもの
- それに色々加えたり変更したりしたカスタマイズ版のOSがある
- カスタマイズした物を他の人に配っても良いし売っても良い
- だから色んな種類がある
- カスタマイズされた物をLinuxディストリビューションとかLinuxOSと呼ぶ
- 色んな種類があるけど根っこはLinuxなので操作は似ている
こんな感じかな?
あんこLinux
僕の理解ではLinuxはフリーあんこです。
もう何しても良いカーネルというあんこ
甘さを好みにしてよし
皮をつけて饅頭にしても良いし、焼きまんじゅうにしても良いし、温泉饅頭にしても良いし、もみじ饅頭にしたって良いのです。
この皮やアレンジした結果できたものがディストリビューション(OS)です。
薄皮饅頭ディストリビューション
フィヨルドブートキャンプ でインストールをするLinuxディストリビューションはdebianです。
理由は
- オープンソースの定義の元になってるのがDebianで、企業ではなくコミュニティによって運営されているから。
- サーバー用途での実績が多いから。
- これを書いている@komagataがDebian信者だから
だそうです。
Uubntuという有名なLinuxOSの元になったもので、deibanに色々機能を足して普通のPCでも使いやすくしたのがUbuntuだそうです。
先ほどの例えで言うとdeibanは薄皮饅頭です。
皮が薄くて軽いのです。
羊羹ディストーション
そんな感じでLinuxOSの中でもdebianって結構派生が多いです。
そんなdebianと双璧をなすLinuxディストリビューションにCentOSというOSがあります。
あんこで例えるならdebianはあんこを包む系ですが、CentOSはあんこを包まない系
そう、それはさながら羊羹派閥。
終わりに
以上がFreeあんこLinuxディストリビューションでしたー
おわかり頂けただろうか?
ではー
VirtualHostはバーチャルシェアハウス?
バーチャルホスト(Virtual Host)とは
バーチャルホスト(Virtual Host)とは1つのサーバで複数のドメインを運用する技術のことで、Webサーバ、メールサーバなどで利用される。
通常はWebサーバやメールサーバを運用するのにドメインの数以上のサーバコンピュータが必要となる。バーチャルホストを利用すると1つのサーバコンピュータで複数のドメインを運用することができ、サーバコンピュータの数を減らし運用のコストを下げることができる。
元々一つのサーバーに一つのドメインだったんですね。
で、一つのサーバーで複数のドメインが使える様に出来る技術がバーチャルホストだと
ドメインがヴァーチャル住所なのでこれは
バーチャルシェアハウス!?
もしくはヴァーチャル二世帯住宅とか?
バーチャルホストには大きくわけてIPベースバーチャルホストと名前ベースバーチャルホストの2種類の方法がある。
2種類あるみたいですね
バーチャルホスト
IPベースバーチャルホストは、利用するドメイン名ごとにIPアドレスを用意し、1つのサーバコンピュータに複数のIPアドレスを割り当てる。
名前ベースバーチャルホストは、利用するドメイン名すべてに同じIPアドレスを使用し、1つのサーバコンピュータに必要なIPアドレスが1つで済む。
僕の理解
へー
フィヨルドでやるのは名前ベースバーチャルホストの方ですね
ドメインどこで取るよ?
独自ドメインが欲しいかー!!
VirtualHostを進める前にドメインを取得するのでドメイン先についてのまとめです。
ドメイン取得
いわゆる独自ドメインってやつですね。
ドメインが何か解らないって人はドメインについてまとめた↓を読んでくだしあ
お名前.comでドメインを取得
色々種類があり値段の幅も広いんですが勉強の為なら安いので良いです。
お名前.comは安いしドメインの信頼性も高いんですが、危機感を煽る様な販促メールがやたら来るのがたまにキズ
ビビるよあれ!
無料で取得できるドメイン
無料で使えるドメインがあるそうです。
無料で使えるドメインの中でも有名ではtkドメインというものがあるそうです。
無料ってどういう事やねん!怪しい!と思って調べてみたらなんかめっちゃ儲かってました。
ほかの多くのドメインと違って、「.tk」ドメインの登録には一切費用はかからない。しかし、登録しても一定期間使われなかった場合は広告ページに置き換わる。その場合、「.tk」ドメインを法的に所有するのに料金が必要になる。
FreeDomは、放置された「.tk」ドメインに広告を置くことで利益を上げ、その一部をトケラウの人々に還元している。2012年にはその支払いが、120万ドルしかないトケラウの年間国民総生産(GDP)の1/6を占めるまでになった。
すげーな!
面白いビジネスモデルですね。
でも、置き換わった広告ページってSEO的にはどうなんでしょうね?
とりあえずVirtualHostの使い方を学ぶだけなので無料ドメインでも良いと思います
僕の場合
以前もお名前.comで買ったことがあるのですが、技術書展4でmochikoAsTechさんが販売された『DNSをはじめよう』という本の電子書籍版をBOOTHで買いまして。
その中にお名前.comでドメインを買ってDNS(データネームサーバー)について学ぼうというドリルがある為、そちらを進める時にお名前.comでドメインを買いました。
おすすめ
その為、今回僕はドメイン取得をしないので取得方法の記事は無いです。
需要があったらやるので、読みたいというコメントや解らないというコメントがあれば書きますー
ではー
ドメインって何だったっけ?
ドメインなのかURLなのか、それが問題だ
ドメインってこれ↓でしょ
あれ、でもこれURLだよな?URLとドメインってどう違うんだろう?
助けてGoogleemooooon!!
と言う訳で調べてみました。
ドメインとURLの違い
参考資料
解りやすい!
URL
インターネット上にあるホームページやファイルの位置や情報を示すものです。 インターネット上の住所だと考えると分かりやすいでしょう。
URLは「IPアドレス」を人間が読みやすいように変換したもの
もともと、コンピューターは インターネット上の住所を数字だけの「IPアドレス」で認識しています。そのIPアドレスを、人間が読みやすいように置き換えたものがドメインです。
私たちは、様々な意味を持つ単語の要素をそれぞれ組み合わせて、数字だけの分かりにくいIPアドレスを、意味を読み取れる分かりやすい URLに置き換えています。
僕の理解
- URLはインターネットの住所
- もともとIPアドレスって言う数字の住所を文字に置き換えたもの
ちなみにIPアドレスはこんなんです。
153.126.184.96/
なるほど
ホスト名
ホスト名は、ネットワークに接続されたホスト(機器やサーバー)の名前を指します。通信する際に、特定のホストを識別するために使います。
この「ホスト名」は、後述する「 ドメイン」とほとんど同じ意味だと捉えて構いません。人間が管理しやすいように、前述したIPアドレスを文字に置き換えているの文字列が「ホスト名」と「 ドメイン」です。
ホスト名も ドメインも、どちらも登録者の任意で自由に決めることができますが、ホスト名ではよく「www」が利用されています。「www」は「World Wide Web」の略で、「世界中に張り巡らされたクモの巣」を意味します
ホスト名とドメインはほぼ同じ意味なんですね
ほぼって所に多少の引っ掛かりを覚えますが、止まらずサクサク進んでいきます。
ホスト名はネットワークに接続されたホスト(機器やサーバー)の名前だそうですがwwwってのは機器でもサーバーでも無いような?
www = 「世界中に張り巡らされたクモの巣」ってインターネットという概念の例えですよね
もしくは草
ドメイン
ドメインは、ホスト名と同じく、IPアドレスを分かりやすくするために設定する文字列のことを指します。 インターネット上の住所となるので、同じドメインは1つしか存在しません。
ドメインには、更に細かく「トップレベル ドメイン」「セカンドレベル ドメイン」「サードレベル ドメイン」の3つに分けられます。トップレベル ドメインが、 ドメインの中で一番右側に寄ります。
やっぱり住所です。
日本の東京都の渋谷区の初台のフィヨルドオフィスってやつのインターネット版です。
英語では住所を逆から言うので.jp(日本)とか.com(アメリカ)が最後に来るんですね。
バーチャル住所だ!
ドメインの語源
結論から先に言うとドメインの語源はdominus(支配者、主人)です。
参考資料1
domain /dəʊméɪn/ : 領土、領域、所有権
domainの意味は「領土」で、語源はdominus(支配者)に由来し、同義語はterritoryです。
中略
domainの三つ目の意味は「パソコンのドメイン」です。
ドメイン(domain)とは簡単に言うとインターネット上の住所のことです。ブログやサイトを運営したいなら、どこかで自分のドメインを取得する必要があります。
参考資料2
ラテン語 Dominus(主人)が語源で、同じ語根を持つ英語に dominance(支配、優勢)、dominant(支配的な、優勢な)、dominate(支配する)、domination(支配する事、優位を占めること)、domineer(支配する、暴威をふるう)、domain(領地、領域、ドメイン)、さらにドメスティック・バイオレンスで知られるようになった domestic(自国の、家庭内の)などがあります。
全て「主人が支配する」、また「支配が及ぶ範囲」という意味ですね。
kingdom の -dom もそうで、これは「王が支配するところ」という意味になります。
(注: freedom の -dom は偶然同じ形なだけで、別語源のようです)
またキリスト紀元をあらわす A.D. は Anno Domini の略で、これは「主の年」という意味です。
(ちなみに、B.C. は Before Christ(キリスト以前)の意味です)
「ドミノゲーム」の Domino も見てのとおり同語源ですね。
Dominusを語源に持つ他の言葉
- ボードゲームのドミニオン
- 本来はドミノというボードゲームなのにもっぱら倒される事で有名なドミノ
- 建物のコンドミニアム
- ファンタジーやRPGでお馴染みのダンジョン
- サイコパスってアニメのドミネーターって銃
めっちゃいっぱいあんな
ローマ帝国のDominus
語源のDominusがローマでどう使われたかの資料です
歴史が好きな人はこの辺も面白いかも
終わりに
以上がドメインって何だっけ?でした。
解りにくいところがあったら連絡下さい〜
ではー
はてなブログを書くときの初期設定をマークダウンにすると捗るよ
マークダウンは良いぞ
僕はブログをマークダウンで書いています。
マークダウンっていうのはHTMLを簡単に書ける書き方で、正確にはMarkdown記法って言うそうです。
そして、ブログはHTMLよりMarkdownで書いた方が早いらしいです。
就活の際もMarkdownがキチンと書けるかというのは見られるらしいと言う事で、フィヨルドのメンターの駒形さんや町田さんにもお勧めされました。
最近ようやく慣れてきたんですが確かに早いし楽チンです。
マークダウン良きー
マークダウンに変更するの毎回忘れる問題
しかし、はてなではマークダウンで書いた記事を反映するには編集モードを初期設定の見たままモードからMarkdownに変更する必要があります。
でも毎回忘れるんだこれ
途中でMarkdownに変更するんですが、モードを切り替える時にそれまでに書いていたものが消えてしまうので
- 全選択
- コピー
- モード変更
- ペースト
っていうの作業が毎回発生しています。
はいぱーめんどくさい!
初期設定をマークダウンに変更しよう
めんどいなーと思って調べていたら初期設定をマークダウンにする方法を見つけました。
設定方法です。
以上です。
ね、簡単でしょ?
これでもうコピペしなくて良くなったー!
やったー!