ビール片手にプログラム ~ そうだ!遊ぼう! ~

ただ飲みながら遊んでいる話。まじめなこととかはしません。

Angular.jsのチュートリアルをして遊ぼう ①テンプレート構文

今回はAngular.jsの公式サイトのチュートリアルのテンプレート構文の箇所を実施して遊ぼうと思います。 Angular.jsは1.x時代に少し触っただけなので楽しみです。

1. 今日のお供

久しぶりのビールです! サッポロ 北海道生ビール [ 350ml×24本 ]

2. 今回参考にしたサイト

私はただ備忘録として、遊んだ結果を書きたいだけなので、本気でやりたい方はこちらを参考にされたほうが良いかと思います。

angular.jp

3. 新しいプロジェクトを作成する

ドキュメントの「Click here to create a new project in StackBlitz.」リンクを押下すると、ブラウザでStackBlitzのページが開きます。
このWEB上の環境で開発を進めていく形となります。

f:id:front-end:20190602112651p:plain
StackBlitz

4. テンプレート構文を使用する

すでに定義されているproducts(商品情報)をテンプレート構文を使用して表示できるようにしていきます。
商品情報はproducts.tsに定義されています。

f:id:front-end:20190602115157p:plain
products.ts

(1) product-list.component.htmlを開きます。

f:id:front-end:20190602114632p:plain
product-list.component.html

(2) ngForセレクタを使用し、繰り返し制御をします。

下記をproduct-list.component.htmlに記入すると、商品数分「商品」が表示されます。

<!-- 商品分繰り返す -->
<div *ngFor="let product of products">
  商品
</div>

f:id:front-end:20190602122542p:plain
ngFor

(3) 内挿構文{{}}を使用し、商品名を表示します。

下記をproduct-list.component.htmlに記入すると、商品数分の商品名が表示されます。

<!-- 商品分繰り返す -->
<div *ngFor="let product of products">
  <h3>{{ product.name }}</h3>
</div>

f:id:front-end:20190602122250p:plain
内挿構文{{}}

(4) プロパティバインディング[]を使用し、アンカーのタイトルを表示します。

下記をproduct-list.component.htmlに記入すると、アンカーのタイトルが設定されます。

<!-- 商品分繰り返す -->
<div *ngFor="let product of products">
  <h3>
    <a [title]="product.name + ' details'">
      {{ product.name }}
    </a>
  </h3>
</div>

f:id:front-end:20190602122410p:plain
プロパティバインディング

(5) ngIfセレクタを使用し、商品の説明を表示します。

下記をproduct-list.component.htmlに記入すると、商品説明が設定されている商品のみ、商品の説明が表示されます。

<!-- 商品分繰り返す -->
<div *ngFor="let product of products">
  <h3>
    <a [title]="product.name + ' details'">
      {{ product.name }}
    </a>
  </h3>
  <p *ngIf="product.description">
    Description: {{ product.description }}
  </p>
</div>

f:id:front-end:20190602122451p:plain
ngif

(6) イベントバインディング()を使用し、イベントを紐付けます。

下記をproduct-list.component.htmlに記入すると、clickイベントにproduct-list.component.tsで定義されているshare()イベントが紐付けされます。

<!-- 商品分繰り返す -->
<div *ngFor="let product of products">
  <h3>
    <a [title]="product.name + ' details'">
      {{ product.name }}
    </a>
  </h3>
  <p *ngIf="product.description">
    Description: {{ product.description }}
  </p>
  <button (click)="share()">
    Share
  </button>
</div>

f:id:front-end:20190602122753p:plain
イベントバインディング()

share()イベントの内容

f:id:front-end:20190602122701p:plain
share()イベント

5. テンプレート構文が使えました!

今回はチュートリアルにあるとおり、下記のテンプレート構文を使用しました。

① ngFor
② ngIf
③ 内挿{{}}
④ プロパティバインディング[]
⑤ イベントバインディング()

次回はコンポーネントの作成・使用が出来たらいいなと思います。

TypeScriptを使用してNode.jsでhttpサーバーを建てて遊ぼう。

今回はTypeScriptを使用して、Node.jsでhttpサーバーを建てて遊ぼうと思います。 使用している各バージョンはこちらになります。
・node v12.3.1
・npm 6.9.0

1. 今日のお供

暑くなったりじめじめしてくると、日本酒の辛口が飲みたくなりますよね。
この日本酒は嘘偽り無く辛口なので冷やしてきりっと頂きます。 刈穂 山廃純米超辛口(刈穂酒造) 720ml

2. 今回参考にしたサイト

私はただ備忘録として、遊んだ結果を書きたいだけなので、本気でやりたい方はこちらを参考にされたほうが良いかと思います。

ics.media

3. TypeScriptプロジェクトの作成

プロジェクトフォルダを作成して、package.jsonを出力します。

mkdir node-type-server
cd node-type-server
npm init -y
npm i -D typescript

f:id:front-end:20190601203641p:plain
プロジェクトの作成

Node.jsの型定義ファイルを取得します。

npm i -S @types/node

f:id:front-end:20190601203929p:plain
Node.jsの型定義ファイルを取得

tsconfig.json(トランスパイル設定ファイル)を出力します。

node_modules\.bin\tsc --init 

f:id:front-end:20190601204357p:plain
tsconfig.jsonを出力

package.jsonを修正します。

{
  "name": "node-type-server",
  "version": "1.0.0",
  "private":true,
  "scripts": {
    "build": "tsc",
    "watch": "tsc --watch"
  },
  "devDependencies": {
    "typescript": "^3.5.1"
  },
  "dependencies": {
    "@types/node": "^12.0.4"
  }
}

f:id:front-end:20190601204725p:plain
package.json

tsconfig.json ファイルを修正します。

f:id:front-end:20190601205249p:plain
1~33行目
f:id:front-end:20190601212121p:plain
34~63行目

4. httpサーバーを建ててみよう

main.tsファイルを作成します。

import * as http from "http";

class Main {
    constructor() {
        // httpサーバーの設定をします。
        const server: http.Server = http.createServer(
            (
                request: http.IncomingMessage,
                response: http.ServerResponse
            ) => this.requestHandler(request, response)
        );

        // サーバーを起動します。
        server.listen('5000');
    }

    private requestHandler(request: http.IncomingMessage, 
                           response: http.ServerResponse): void {
        response.end("Hello! Node.js With TypeScript!")
    }
}

const main = new Main();

コンパイルを実行します。

npm run build

f:id:front-end:20190601212848p:plain
コンパイルの実行

コンパイルされたmain.jsをコマンドで実行します。

node main.js

f:id:front-end:20190601213124p:plain
main.js実行

http://localhost:5000にアクセスすると。。

f:id:front-end:20190601213214p:plain
表示されました!

5. TypeScriptを使用して、Node.jsでhttpサーバーを建てれました!

表示的にはシンプルなものですが、一応httpサーバーとしての役割を果たせました。
次回はAngular.js絡めるか、もうすこし深くnode.jsを触れたらよいなと思います。

Node.jsとTypeScriptでHello Worldを出して遊ぼう。

今回はTypeScriptとNode.jsでHello Worldを出して遊ぼうと思います。
TypeScriptは前々から気になっていて、初めて使います。
Node.jsは本を買ってサーバーを建て、その後に概念を読んだ結果ぱっぱらぱーすぎてやめたのでリベンジ!

1. 今日のお供

旦那も私もライチが好きで、気がついたら旦那が箱買いしていた贅沢絞りのライチです。 【季節限定】アサヒ贅沢搾りライチ 缶 500ml×24本 [ チューハイ ]

2. 今回参考にしたサイト

私はただ備忘録として、遊んだ結果を書きたいだけなので、本気でやりたい方はこちらを参考にされたほうが良いかと思います。

qiita.com

3. TypeScriptプロジェクトの作成

プロジェクトフォルダを作成して、package.jsonを出力します。

mkdir ts-sample
cd ts-sample
npm init -y

f:id:front-end:20190601134738p:plain
package.jsonを出力

参考サイトにしたがって、package.jsonを編集します。

f:id:front-end:20190601134859p:plain
package.json

プロジェクトに必要なディレクトリを作成します。

mkdir .vscode src test config

f:id:front-end:20190601135054p:plain
ディレクトリ作成

4. TypeScript実行環境をインストール

TypeScriptトランスパイラと実行ツール(ts-node)をインストールします。

npm i -DE typescript ts-node 

f:id:front-end:20190601135338p:plain
TypeScriptトランスパイラ(tsc)とTS実行ツール(ts-node)のインストール

tsconfig.json(トランスパイル設定ファイル)を出力します。

node_modules\.bin\tsc --init 

f:id:front-end:20190601135456p:plain
tsconfig.json(トランスパイル設定ファイル)を出力

tsconfig.jsonを修正します。

f:id:front-end:20190601140454p:plain
1~25行目
f:id:front-end:20190601140705p:plain
26~51行目
f:id:front-end:20190601140835p:plain
52~68行目

5. いざ、Hello World

main.tsを作成します。

const message: string = "world";
console.log(`Hello ${message}`);

f:id:front-end:20190601142436p:plain
main.ts

コンパイルを実施します。

node_modules\.bin\tsc

buildディレクトリ下にmain.jsが出力されていることを確認します。

f:id:front-end:20190601141938p:plain
main.jsの存在確認

main.jsの中身はこうなっています。

f:id:front-end:20190601142610p:plain
main.js

実行してみます。

node build/main.js

Hello World

f:id:front-end:20190601142748p:plain
Hello World

6. Hello World!完了

ただ参考サイトを見ながら実行して行っただけなので、特に深く理解とかはしていませんが、まぁ最初はそんなもの!
次回はTypeScriptを使用してサーバー建てたいなぁ。

Node.jsのアップデートをして遊ぼう。

今回はWindows環境にインストールしてある、Node.jsのアップデートをしようと思います。
Node.jsインストールしたのいつだっけ。。。

1. 今日のお供

ビール買い忘れたのでハイボールです。
我が家はトリスクラシックの2.7リットルを常備しています。 サントリー ウイスキー トリス クラシック [日本 2700ml ]

2. 今回参考にしたサイト

私はただ備忘録として、遊んだ結果を書きたいだけなので、本気でやりたい方はこちらを参考にされたほうが良いかと思います。 qiita.com qiita.com

3. まずは現在のバージョン確認

全然いじってなかったのでとっても古いです。

f:id:front-end:20190601101430p:plain
2019年ですよ。

4. nodistのインストール

nodistはNode.jsのインストールやバージョン管理が行えるツールです。
githubにあがっているnudistをダウンロードし、インストールしていきます。 github.com

ますはダウンロードします。

f:id:front-end:20190601102100p:plain
nudistダウンロード

ダウンロードできたらインストールしていきます。

f:id:front-end:20190601102322p:plain
インストール画面①
f:id:front-end:20190601102511p:plain
インストール画面②
f:id:front-end:20190601102554p:plain
インストール画面③
f:id:front-end:20190601102624p:plain
インストール中

PATHの更新に失敗したようです。

f:id:front-end:20190601102956p:plain
PATHの更新失敗

ひとまずインストールを完了させてPATHの更新を手動でしていきたいと思います。

f:id:front-end:20190601103132p:plain
インストール完了

インストール先のbinのパスを環境変数に追加します。
今回の場合は「C:\Program Files (x86)\Nodist\bin」

f:id:front-end:20190601103704p:plain
PATHの追加

システム環境変数を新規追加していきます。

f:id:front-end:20190601105244p:plain
NODIST_PREFIXの追加
f:id:front-end:20190601105356p:plain
PATH
f:id:front-end:20190601105434p:plain
NODE_PATH

nodistが使用できるようになりました。

f:id:front-end:20190601105606p:plain
設定完了

5. Node.jsのアップデート

インストール可能なNode.jsのバージョンの一覧を表示します。

nodist dist

f:id:front-end:20190601111104p:plain
12.3.1が最新

12.3.1が最新版とのことなので、それをインストールしていきます。

nodist + 12.3.1

f:id:front-end:20190601111143p:plain
インストール完了

使用するバージョンを指定します。

nodist 12.3.1

f:id:front-end:20190601111219p:plain
バージョン選択

設定の確認!アップデート完了しました!

node -v

f:id:front-end:20190601111309p:plain
アップデート完了!

6. npmのアップデート

npm update -g npm

f:id:front-end:20190601111516p:plain
npm

7. Node.jsアップデート完了!

nodistを使って、Node.jsのアップデートが完了しました。
次回はNode.jsとかやりたいなぁ。

VSCodeをインストールして遊ぼう。

今日は巷で話題のVSCodeをインストールして、
HTMLを書くところまでやっていこうと思います。
最近全然新しいエディタとか触っていなかったので楽しみです。

1. 今日のお供

最近ちょっと気に入ってます。
炭酸で割るだけで簡単にゆずレモンサワーの完成です。

小正醸造 小鶴サワー専用ゆずレモン 瓶 25度 1800ml [ リキュール ]

2. 公式サイトからダウンロード

まずは公式サイトからダウンロードします。 code.visualstudio.com

f:id:front-end:20190531111923p:plain
公式サイト

3. インストール

ダウンロードしたexeファイルを実行し、インストールしていきます。

f:id:front-end:20190531112135p:plain
インストール①
f:id:front-end:20190531112247p:plain
インストール②
f:id:front-end:20190531112425p:plain
インストール③
f:id:front-end:20190531112506p:plain
インストール④
f:id:front-end:20190531112550p:plain
インストール⑤
f:id:front-end:20190531112646p:plain
インストール⑥
f:id:front-end:20190531112754p:plain
インストール⑦
f:id:front-end:20190531112819p:plain
インストール完了!

4. 起動!&日本語化

起動すると、まぁシンプルな画面が登場します。

f:id:front-end:20190531113030p:plain
VSCode

英語のままでも良いのですが、やっぱり分かりにくいので、ここは日本語化しましょう。 画面左側のアイコンの一番下(Extensions)をクリックします。

f:id:front-end:20190531113403p:plain
Extensions

拡張機能検索用の入力エリアに「Japanese Language Pack」と入力すると、Visual Studio Code用の日本語化パックが検索結果として表示されます。
そこのInstallをクリックし、インストールが完了したらVSCodeを再起動します。

f:id:front-end:20190531113929p:plain
日本語化パックのインストール

日本語化が出来ました。

f:id:front-end:20190531114134p:plain
日本語化完了

5. Emmet使ってHTMLでも書いてみましょう。

Ctrl+nで新規作成を実施すると、まぁシンプルなエディタが開きます。

f:id:front-end:20190531114622p:plain
エディタ

htmlとして認識してほしいので、まずは保存し、htmlと入力してみるとびっくり、
コードスニペットでEmmetがでる!(びっくり

f:id:front-end:20190531114949p:plain
コードスニペットに!

もちろん選択すると展開されます。

f:id:front-end:20190531115100p:plain
展開

ではEmmet記法で書いて。。

f:id:front-end:20190531115442p:plain
展開されるかなぁ

Tabを押下したら。。展開されたー!

f:id:front-end:20190531115503p:plain
展開!

6. langはjaがいいですよね。

というわけで設定していきましょう。 メニューから「ファイル(F)」>「基本設定」 > 「設定」をクリックします。

f:id:front-end:20190531115744p:plain
設定

右上の{}のアイコンをクリックします。

f:id:front-end:20190531120138p:plain
設定(JSON)を開く

setting.jsonが開きますので、そこに下記を追記し,保存します。

  "emmet.variables": {
     "lang": "ja"
  }

f:id:front-end:20190531120304p:plain
setting.json

VSCodeを再起動して再度、html:5を展開してみると。。
lang="ja"になりました!

f:id:front-end:20190531120700p:plain
jajaja

7. VSCodeインストール完了!

Emmetが標準で入っているのは本当に良いですね。
今後はVSCodeをメインエディタとして使っていこうかなぁ。。

AzureでSQL Server2016を建てて遊ぼう。

今回は、AzureにSQL Server2016を建てて遊びたいと思います。
前回WEBサーバーを建てたので、今回はDBサーバーを!
これが終わったら新しいVisual Studio2019ダウンロードしてあるので、 それを使って遊べたらいいなと思っています。

1. 今日のお供

なんかさっぱりしたいので、今日はウーロンハイです。
中身はやっぱ金宮ですよね。
宮崎本店 キッコーミヤ焼酎 [ 焼酎 25度 720ml ]

2. 今回参考にしたサイト

私はただ備忘録として、遊んだ結果を書きたいだけなので、本気でやりたい方はこちらを参考にされたほうが良いかと思います。 docs.microsoft.com

3. 仮想マシンの作成

まずはSQL Server2016が搭載された、Windows Server2016の仮想マシンを作成していきます。

(1) リソースの作成→対象マシンの検索

まずはリソースの作成を押下します。

f:id:front-end:20190505132803p:plain
リソースの作成

検索フィールドに「SQL Server 2016 on Windows Server 2016」と入力してEnterを押します。

f:id:front-end:20190505132913p:plain
SQL Serverの検索

(2) SQLServerの選択→作成

一覧に出てきた「SQL Server 2016 SP1 on Windows Server 2016」を選択します。

f:id:front-end:20190505132943p:plain
SQL Serverの選択

作成ボタンを押下します。

f:id:front-end:20190505133109p:plain
作成!

(3) 設定情報の入力

仮想マシンの基本情報を入力し、「SQLServerの設定」タブを押下します。

f:id:front-end:20190505133332p:plain
基本情報の入力

SQL Serverの設定情報を入力し、「確認および作成」ボタンを押下します。

f:id:front-end:20190505133425p:plain
SQL Serverの設定情報を入力

「作成」ボタンを押下します。

f:id:front-end:20190505133511p:plain
作成!

(4) 仮想マシンのデプロイ

デプロイ中。。

f:id:front-end:20190505133546p:plain
デプロイ中。。

約10分ぐらいでデプロイが完了しました。

f:id:front-end:20190505133615p:plain
デプロイ完了!

4. 日本語化&SQL Serverに接続

接続と日本語化の方法は下記記事参照。 uchiko.hatenablog.com

サーバーのSQL Server Management Studioで接続してみます。

f:id:front-end:20190505171511p:plain
SSMSの選択

ログイン情報を入力します。

f:id:front-end:20190505171556p:plain
ログイン情報の入力

接続完了!

f:id:front-end:20190505171621p:plain
接続完了!

5. SQL Server2016構築完了!

これまたあっさりと完了しました。
以前上司から聞いた「Azureだと簡単に建てられちゃうから勉強にならない」という言葉の意味が身にしみました。
本当、食わず嫌いでハードルが高かったのですが、超簡単でした。。

Azureで建てたWindows Server 2016にWEBサーバを建てて遊ぼう。

今回は、前回Azureに仮想マシンとして建てたWindows Server 2016にWEBサーバを建てて遊びたいと思います。
WEBサーバ建てると一気にできることが広がりますよね。楽しみです。

1. 今日のお供

大好きな華みやびです。
これ居酒屋でおいてくれるところが増えたらうれしいなぁ。。 2017年度版 サッポロ ヱビス 華みやび [ 350ml×24本 ]

2. 今回参考にしたサイト

私はただ備忘録として、遊んだ結果を書きたいだけなので、本気でやりたい方はこちらを参考にされたほうが良いかと思います。 www.atmarkit.co.jp

3. IISのインストール

サーバーマネージャーの管理メニューにある「役割と機能の追加」を押下します。

f:id:front-end:20190504133548p:plain
サーバーマネージャから役割と機能の追加

開始する前にの説明がでるので「次へ」ボタンを押下します。

f:id:front-end:20190504133616p:plain
開始する前に

インストールの種類の選択画面で「役割ベースまたは機能ベースのインストール」を選択し、
「次へ」ボタンを押下します。

f:id:front-end:20190504133645p:plain
役割ベースまたは機能ベースのインストール

対象サーバーを選択して「次へ」ボタンを押下します。

f:id:front-end:20190504133714p:plain
サーバーの選択

役割の一覧から「Web Server(IIS)」を選択します。

f:id:front-end:20190504133746p:plain
サーバーの役割の選択

選択すると、「必要な機能を追加するか」とメッセージが出てくるので追加します。
優しいですね。

f:id:front-end:20190504133821p:plain
IISに必要な機能の追加

サーバーと役割の選択画面の「次へ」ボタンを押下します。

f:id:front-end:20190504133853p:plain
機能選択へ

機能の選択画面では、とりあえず、デフォルトのままで「次へ」ボタンを押下しました。

f:id:front-end:20190504133918p:plain
機能の選択

Webサーバーの役割の説明が出てくるので、読んで「次へ」ボタンを押下します。

f:id:front-end:20190504133943p:plain
WEBサーバーの役割

役割の選択画面では、とりあえず、デフォルトのままで「次へ」ボタンを押下しました。

f:id:front-end:20190504134023p:plain
役割サービスの選択

インストールオプションの確認画面で、オプションを確認し、「インストール」ボタンを押下します。

f:id:front-end:20190504134059p:plain
インストールオプションの確認

インストール中。。

f:id:front-end:20190504134122p:plain
インストール中

インストールが完了しました。

f:id:front-end:20190504134204p:plain
インストール完了

インストールが出来ているか確認するために、
サーバー上のIElocalhostにアクセスすると。。インストールできてました!

f:id:front-end:20190504134226p:plain
インストールの確認

4. コンテンツの配置

デフォルトでは、「C:\inetpub\wwwroot」がルートディレクトリとのことなので、
そこに資産を配置して確認したいと思います。
Windows同士ならコピペで追加できます。すごい。

f:id:front-end:20190504140458p:plain
コピペで追加

もう一度、サーバーのIEで確認すると、配置できました!

f:id:front-end:20190504140746p:plain
配置できました!

5. サーバー以外からも見れるようにする

今のままではサーバー外から見ることは出来ないので、
外部からも見れるようにしていきたいと思います。 見れない原因としては、前回のリモートデスクトップが接続できなかった原因と同様、
HTTP通信用のポートが開いていないことが原因なので、あけて行きたいと思います。 すべてのリソースからネットワークセキュリティグループを選択します。

f:id:front-end:20190504152806p:plain
ネットワークセキュリティグループを選択

「受信セキュリティ規制」を押下します。

f:id:front-end:20190504152928p:plain
受信セキュリティ規制

「追加」を押下します。

f:id:front-end:20190504153040p:plain
受信セキュリティ規制の追加

受信セキュリティ画面の「Basic」を押下します。

f:id:front-end:20190504153123p:plain
受信セキュリティ規制の追加画面

サービスにHTTPを選択して、そのほかを入力して追加を押下します。

f:id:front-end:20190504153212p:plain
HTTPの追加

ポートが開いているかを確認するために、自分のパソコンからアクセスすると。。
接続できました!

f:id:front-end:20190504153306p:plain
Hello IIS!

6. WEBサーバー構築完了!

構築というか、ただボタンを押しただけのような気もするというぐらい、
あっさり、WEBサーバの構築が完了しました。
実際使用する上で、他に細かい設定は色々必要でしょうが、 そこらへんはこれから遊びつつ学んでいけたらと思います。