あそぶ技術

フィヨルドブートキャンプでRuby on railsの学習をしている僕の学習ブログです。

標準出力、標準入力とは何か

何故、標準出力と標準入力を知る必要があるのか

フィヨルドブートキャンプではRailsを深く知る為にRailsより仕組みがシンプルなSinatraというRubyフレームワークを学習します。

ただ、Sinatraは解りにくいという声が多いそうです。

じゃあ、Sinatraの動きの元になったCGIについて知ると良いのでは?という事になったそうなのですが、CGIについて知るなら標準入力と標準出力について知る必要があるようです。

前提となる知識多い!

そんな訳で標準出力と標準入力についてkomagataさんに聞く機会を得ました。

というか上の事情によりkomagataさんがCGIについてブログにまとめようと思ったそうなんですが、思いの他まとめるのが難儀だったようで最近ブログを頻繁に書いていた僕にお助けコールがありこのような記事を書く事になったというのが事の次第です。

一応書いてみましたが情報に間違いや不備があったら御指南頂ければ幸いです。

f:id:zeroringo:20180813170432j:plain

あなた今入力しましたね?

僕らが普段スマホやPCでインターネットを使う時も実は様々な入力をしていますし、出力されたものを受け取っています。

例えば何かを調べる時に

  1. あなたが検索サイトでブラウザに検索ワードを入力すると
  2. 検索ワードはインターネットを通って検索サイトに送られ
  3. 送られた検索ワードは検索サイトのサーバー入力されます
  4. 検索サイトのサーバーは検索結果を出力
  5. 検索結果はインターネットを通って戻り
  6. 検索結果をあなたのブラウザに出力してくれます。

今このページ見てるって事はあなたも間違いなく入力しています。

そして今出力されたこの文字を読んでいる。

もう無関係ヅラ出来ないですね(悪い笑顔

f:id:zeroringo:20180813171127j:plain

様々な入力

今回は検索ワードを入力するという例でした。

しかし、言葉を入力する事だけでなく入力には様々な種類があります。

例えば

マウスクリックすることも、スマホタッチする事も、キーボード叩く事も、スマートフォンフリックする事も入力です。

出力も同じで私たちは様々な場所に出力された様々な状態の情報を受け取っています。

例えば

出力された通知スマートウォッチで受け取ったり、モニターから出力された映像観たり、プリンターからを出力させたりと誠に多様です。

網膜レンズなど未来には新しいデバイスが世の中に生まれ入力する方法や出力されるデバイスは変わっていくと思います。

しかし、入力と出力自体は無くならないでしょう。(良い事言った風

f:id:zeroringo:20180813170727j:plain

telnetを思い出せ!

teinetを思い出して下さい。

HTTPの所でやったターミナルでリクエストを入力するとレスポンスが返ってくるやつですね。

zeroringo.hateblo.jp

あの時のtelnetでやったことを分解すると

  1. tarminalでリクエストを入力すると
  2. tarminalにレスポンスが出力される

となります。

そうですお気付きの通り

これも入力と出力だったんだよー!!

そして実はこれ、標準入力と標準出力です。

標準入力と標準出力とは何か

入力と出力なんですが実は初期設定で入力される所と出力される先が決まっています。

例えばLinux(CUI)だとマウスで操作出来ませんよね

  1. 黒い画面にキーボードで文字を入力し
  2. その結果が黒い画面に出力されます。

この場合、入力先も出力先も黒い画面です。

ただ別に自分でそう設定したわけでは無いですよね。

最初っから黒い画面に入力し出力されるように設定されていたわけです。

この最初から決まっていた入力先と出力先

これが標準入力と標準出力です。

f:id:zeroringo:20180813172647p:plain

STDINとSTDOUT

設定ファイルを変更する事で標準入力と標準出力を変更することが出来るんですが、設定ファイルは勿論英語で書かれています。

では、標準入力と標準出力はどう書かれているかなんですが

  • 標準入力はSTDIN
  • 標準出力はSTDOUT

と表記されています。

これは省略された言葉でそれぞれ

  • STDはStandard(標準)の略
  • INはinput(入力)の略
  • OUTはoutput(出力)の略

です。

入り口と出口

f:id:zeroringo:20180813172323p:plain

入力は入り口で出力は出口と考えると解りやすいかもしれません。

僕らはRailsでサービスを作り、お客さんはサービスを使って頂きますが

その時にお客さんの出入り口とスタッフの出入り口を分けているんです。

f:id:zeroringo:20180813172347p:plain

tarminalはスタッフ専用の出入り口みたいなもんでお客さんはここを出入りしないです。

入ってくるのは関係者か多分悪い奴です。

最初はスタッフ用の出入り口しかない状態からサービスを作っていくんですね。

終わりに

以上です。

解りにくい所や間違っているところがあればブログのコメント欄やツイッターで御指摘、御指南等頂ければ幸いです。

ありがとうございました。

f:id:zeroringo:20180813171657j:plain

FreeあんこLinuxディストリビューション

Linuxとは

Linuxとは何かについて話す機会があったので僕の理解をまとめてみました。

結論から言うとDebibanはおまんじゅうです。

f:id:zeroringo:20180810194848p:plain

Linux怖くないよ!

参考資料

ざっくりまとめ

  • オープンソースなので無料で使え誰でも開発に参加できる
  • 軽い
  • 無料で使えるOSなので色々な所、サービスで使われている
  • 軽いのが武器なのでCUIっていう黒い画面にコマンドを打ち込む画面で使う
  • 元々あったUNIXっていうOSを真似して作られたOS
  • でも実はOSじゃなくてOSの核になっているカーネルというもの
  • それに色々加えたり変更したりしたカスタマイズ版のOSがある
  • カスタマイズした物を他の人に配っても良いし売っても良い
  • だから色んな種類がある
  • カスタマイズされた物をLinuxディストリビューションとかLinuxOSと呼ぶ
  • 色んな種類があるけど根っこはLinuxなので操作は似ている

こんな感じかな?

あんこLinux

僕の理解ではLinuxはフリーあんこです。

f:id:zeroringo:20180810163944p:plain

もう何しても良いカーネルというあんこ

甘さを好みにしてよし

皮をつけて饅頭にしても良いし、焼きまんじゅうにしても良いし、温泉饅頭にしても良いし、もみじ饅頭にしたって良いのです。

この皮やアレンジした結果できたものがディストリビューション(OS)です。

f:id:zeroringo:20180810193232p:plain

薄皮饅頭ディストリビューション

フィヨルドブートキャンプ でインストールをするLinuxディストリビューションdebianです。

理由は

  1. オープンソースの定義の元になってるのがDebianで、企業ではなくコミュニティによって運営されているから。
  2. サーバー用途での実績が多いから。
  3. これを書いている@komagataがDebian信者だから

だそうです。

Uubntuという有名なLinuxOSの元になったもので、deibanに色々機能を足して普通のPCでも使いやすくしたのがUbuntuだそうです。

先ほどの例えで言うとdeibanは薄皮饅頭です。

皮が薄くて軽いのです。

f:id:zeroringo:20180810193616p:plain

羊羹ディストーション

そんな感じでLinuxOSの中でもdebianって結構派生が多いです。

そんなdebianと双璧をなすLinuxディストリビューションCentOSというOSがあります。

あんこで例えるならdebianはあんこを包む系ですが、CentOSはあんこを包まない系

そう、それはさながら羊羹派閥。

f:id:zeroringo:20180810194617p:plain

終わりに

以上がFreeあんこLinuxディストリビューションでしたー

おわかり頂けただろうか?

ではー

VirtualHostはバーチャルシェアハウス?

バーチャルホスト(Virtual Host)とは

バーチャルホスト - Wikipedia

バーチャルホスト(Virtual Host)とは1つのサーバで複数のドメインを運用する技術のことで、Webサーバ、メールサーバなどで利用される。

通常はWebサーバやメールサーバを運用するのにドメインの数以上のサーバコンピュータが必要となる。バーチャルホストを利用すると1つのサーバコンピュータで複数のドメインを運用することができ、サーバコンピュータの数を減らし運用のコストを下げることができる。

元々一つのサーバーに一つのドメインだったんですね。

で、一つのサーバーで複数のドメインが使える様に出来る技術がバーチャルホストだと

ドメインがヴァーチャル住所なのでこれは

バーチャルシェアハウス!?

f:id:zeroringo:20180810154034p:plain

もしくはヴァーチャル二世帯住宅とか?

バーチャルホストには大きくわけてIPベースバーチャルホスト名前ベースバーチャルホストの2種類の方法がある。

2種類あるみたいですね

バーチャルホスト

IPベースバーチャルホストは、利用するドメイン名ごとにIPアドレスを用意し、1つのサーバコンピュータに複数のIPアドレスを割り当てる。

名前ベースバーチャルホストは、利用するドメイン名すべてに同じIPアドレスを使用し、1つのサーバコンピュータに必要なIPアドレスが1つで済む。

僕の理解

  • IPベースバーチャルホストは一つのサーバーで複数のIPアドレスが使えるやつ
  • 名前ベースバーチャルホストは一つのサーバーの一つのIPアドレスで複数のドメインが使えるやつ

へー

フィヨルドでやるのは名前ベースバーチャルホストの方ですね

ドメインどこで取るよ?

独自ドメインが欲しいかー!!

VirtualHostを進める前にドメインを取得するのでドメイン先についてのまとめです。

ドメイン取得

いわゆる独自ドメインってやつですね。

ドメインが何か解らないって人はドメインについてまとめた↓を読んでくだしあ

zeroringo.hateblo.jp

お名前.comでドメインを取得

www.onamae.com

色々種類があり値段の幅も広いんですが勉強の為なら安いので良いです。

お名前.comは安いしドメインの信頼性も高いんですが、危機感を煽る様な販促メールがやたら来るのがたまにキズ

ビビるよあれ!

f:id:zeroringo:20180810151714p:plain

無料で取得できるドメイン

無料で使えるドメインがあるそうです。

qiita.com

無料で使えるドメインの中でも有名ではtkドメインというものがあるそうです。

無料ってどういう事やねん!怪しい!と思って調べてみたらなんかめっちゃ儲かってました。

f:id:zeroringo:20180810151641p:plain

wired.jp

ほかの多くのドメインと違って、「.tk」ドメインの登録には一切費用はかからない。しかし、登録しても一定期間使われなかった場合は広告ページに置き換わる。その場合、「.tk」ドメインを法的に所有するのに料金が必要になる。

FreeDomは、放置された「.tk」ドメインに広告を置くことで利益を上げ、その一部をトケラウの人々に還元している。2012年にはその支払いが、120万ドルしかないトケラウの年間国民総生産(GDP)の1/6を占めるまでになった。

すげーな!

面白いビジネスモデルですね。

でも、置き換わった広告ページってSEO的にはどうなんでしょうね?

Google先生の気分次第でバルスされそう。

とりあえずVirtualHostの使い方を学ぶだけなので無料ドメインでも良いと思います

僕の場合

以前もお名前.comで買ったことがあるのですが、技術書展4でmochikoAsTechさんが販売された『DNSをはじめよう』という本の電子書籍版をBOOTHで買いまして。

その中にお名前.comでドメインを買ってDNS(データネームサーバー)について学ぼうというドリルがある為、そちらを進める時にお名前.comでドメインを買いました。

おすすめ

booth.pm

その為、今回僕はドメイン取得をしないので取得方法の記事は無いです。

需要があったらやるので、読みたいというコメントや解らないというコメントがあれば書きますー

ではー

ドメインって何だったっけ?

ドメインなのかURLなのか、それが問題だ

ドメインってこれ↓でしょ

http://zeroringo.hateblo.jp/

あれ、でもこれURLだよな?URLとドメインってどう違うんだろう?

助けてGoogleemooooon!!

と言う訳で調べてみました。

f:id:zeroringo:20180809143721p:plain

ドメインとURLの違い

参考資料

ferret-plus.com

解りやすい!

URL

インターネット上にあるホームページやファイルの位置や情報を示すものです。 インターネット上の住所だと考えると分かりやすいでしょう。

URLは「IPアドレス」を人間が読みやすいように変換したもの

もともと、コンピューターは インターネット上の住所を数字だけの「IPアドレス」で認識しています。そのIPアドレスを、人間が読みやすいように置き換えたものがドメインです。

私たちは、様々な意味を持つ単語の要素をそれぞれ組み合わせて、数字だけの分かりにくいIPアドレスを、意味を読み取れる分かりやすい URLに置き換えています。

https://ferret.akamaized.net/images/59e815a4fafbd876ce0003e4/original.jpg?1508382115

僕の理解

  • URLはインターネットの住所
  • もともとIPアドレスって言う数字の住所を文字に置き換えたもの

ちなみにIPアドレスはこんなんです。

153.126.184.96/

なるほど

f:id:zeroringo:20180809144047p:plain

ホスト名

ホスト名は、ネットワークに接続されたホスト(機器やサーバー)の名前を指します。通信する際に、特定のホストを識別するために使います。

この「ホスト名」は、後述するドメイン」とほとんど同じ意味だと捉えて構いません。人間が管理しやすいように、前述したIPアドレスを文字に置き換えているの文字列が「ホスト名」と「 ドメイン」です。

ホスト名も ドメインも、どちらも登録者の任意で自由に決めることができますが、ホスト名ではよく「www」が利用されています。「www」は「World Wide Web」の略で、「世界中に張り巡らされたクモの巣」を意味します

https://ferret.akamaized.net/images/59e815a3781b8764260003ec/original.jpg?1508382115

ホスト名とドメインはほぼ同じ意味なんですね

ほぼって所に多少の引っ掛かりを覚えますが、止まらずサクサク進んでいきます。

ホスト名はネットワークに接続されたホスト(機器やサーバー)の名前だそうですがwwwってのは機器でもサーバーでも無いような?

www = 「世界中に張り巡らされたクモの巣」ってインターネットという概念の例えですよね

もしくは草

f:id:zeroringo:20180809143900p:plain

ドメイン

ドメインは、ホスト名と同じく、IPアドレスを分かりやすくするために設定する文字列のことを指します。 インターネット上の住所となるので、同じドメインは1つしか存在しません。

ドメインには、更に細かく「トップレベドメイン」「セカンドレベル ドメイン」「サードレベル ドメイン」の3つに分けられます。トップレベドメインが、 ドメインの中で一番右側に寄ります。

https://ferret.akamaized.net/images/59e815a37f58a866180003e6/original.jpg?1508382115

やっぱり住所です。

日本の東京都の渋谷区の初台のフィヨルドオフィスってやつのインターネット版です。

英語では住所を逆から言うので.jp(日本)とか.com(アメリカ)が最後に来るんですね。

バーチャル住所だ!

ドメインの語源

結論から先に言うとドメインの語源はdominus(支配者、主人)です。

f:id:zeroringo:20180809144246p:plain

参考資料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を語源に持つ他の言葉

めっちゃいっぱいあんな

ローマ帝国のDominus

f:id:zeroringo:20180809144509p:plain

語源のDominusがローマでどう使われたかの資料です

歴史が好きな人はこの辺も面白いかも

終わりに

以上がドメインって何だっけ?でした。

解りにくいところがあったら連絡下さい〜

ではー

はてなブログを書くときの初期設定をマークダウンにすると捗るよ

マークダウンは良いぞ

僕はブログをマークダウンで書いています。

マークダウンっていうのはHTMLを簡単に書ける書き方で、正確にはMarkdown記法って言うそうです。

そして、ブログはHTMLよりMarkdownで書いた方が早いらしいです。

就活の際もMarkdownがキチンと書けるかというのは見られるらしいと言う事で、フィヨルドのメンターの駒形さんや町田さんにもお勧めされました。

最近ようやく慣れてきたんですが確かに早いし楽チンです。

マークダウン良きー

qiita.com

マークダウンに変更するの毎回忘れる問題

f:id:zeroringo:20180809115545p:plain

しかし、はてなではマークダウンで書いた記事を反映するには編集モードを初期設定の見たままモードからMarkdownに変更する必要があります。

f:id:zeroringo:20180809112039p:plain

でも毎回忘れるんだこれ

途中でMarkdownに変更するんですが、モードを切り替える時にそれまでに書いていたものが消えてしまうので

  1. 全選択
  2. コピー
  3. モード変更
  4. ペースト

っていうの作業が毎回発生しています。

はいぱーめんどくさい!

初期設定をマークダウンに変更しよう

めんどいなーと思って調べていたら初期設定をマークダウンにする方法を見つけました。

設定方法です。

  1. はてなブログの設定を開きます。
  2. 初期の基本設定のまま下にスクロール
  3. 編集モードを見たままモードからMarkdownモードに変更
  4. ページの一番下にある変更するボタンをクリック

f:id:zeroringo:20180809113836p:plain

f:id:zeroringo:20180809111759p:plain

f:id:zeroringo:20180809105433p:plain

f:id:zeroringo:20180809105437p:plain

以上です。

ね、簡単でしょ?

これでもうコピペしなくて良くなったー!

やったー!

vimの画面が分割されて戻らないと思ったらtarminalが分割されていた様です

vimを使ってる時に  Control + Dと間違えてCommand + Dを押したら画面が分割されてしまい大変困っていました。

vimのショートカットだと思って解決方法を検索したんですが見つからなかったです。

あまりに見つからないもんだからcommand押しながら片っ端からキーを押してみたんですがそれもダメ

分けんといてぇ〜

f:id:zeroringo:20180807182508p:plain

というのもこれ、Macのtarminalのショートカットだった様です。

直し方はCommand + Shift + D の同時押し

そりゃ見つからん訳だよ!

よかったよかった

qiita.com