gitのアップデートの忘備録

Gitをきちんと理解しようと思いUdemyで動画を購入。
購入したのはこちらの動画。
www.udemy.com

PCのGitのバージョンが最新でなかったのでアップデートしたが、少し躓いたので忘備録

HomebrewでGitが管理されているか確認

GitがHomebrewで管理したいので、既に管理されているか確認する。

$ brew list | grep git

下記のように出力されたので、Gitが管理下に置かれていることを確認

git
git-secrets

Gitのアップデート

Homebrew管理下にGitがあることが分かったのでGitをアップデートする

$ sudo brew install git

root権限でHomebrewを動かすなと怒られた。

Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.

というわけで普通にアップデート

brew install git

Gitバージョン確認

きちんとアップデート出来たか確認

$ git --version
-bash: /usr/local/bin/git: No such file or directory

なぜかファイルがないと言われてしまう

パスを確認

$ which git
/usr/bin/git

ファイルの置かれてあった場所が元々あった場所と違うらしい。
リハッシュしてパスを通す

$ rehash
$ git version
git version 2.20.1 (Apple Git-117)

これでOK

無料でサイトのSSL設定ができる!Let's Encryptとは?

Facebookのログイン連携で必ず必要になるhttps。通常のサイトはhttpですがどうやってSSL通信を付加するんでしょうか。
今回は以前まではお金がかかると言われていたSSL通信を無料で出来るサービス、Let's Encryptを紹介していきましょう!

SSLって?

SSL/TLSを利用したセキュアな通信で、第三者によって発行されたSSLサーバ証明書をサーバへ導入することで、サーバからデータを暗号化し、盗聴を防ぐことが出来ます。
同時にハッシュ関数を用いて、データが正確であるかを検証し、改ざんされているか検知することが出来ます。

Let's Encryptとは?

アメリカの非営利団体ISRGが提供しているサービスです。それまでのSSLは個人情報取得のためのフォームでは必須であるのに、数万円〜数十万円のコストがかかり、手続きが面倒でした。
しかしLet's Encryptが誕生したおかげで、誰でも、いつでも、簡単にSSLが利用できるようになりました。

どうやって設定するの?

一般のレンタルサーバであればSSL通信の設定がコントロールパネルから出来るようになっているはずです。
VPS自宅サーバの場合は別途設定が必要になります。
設定方法は下記の記事が詳しいので、こちらをご覧ください。
knowledge.sakura.ad.jp

SSHとHTTPの違い

さくらインターネットVPSを契約してサーバ構築中で、通信プロトコルの1つであるSSHを改めて理解したのでまとめてみる。
今回はHTTPとの比較で通信プロトコルをまとめてみた。

f:id:t1gerk1ngd0m:20190420221236p:plain

どちらも通信プロトコル

SSHはHTTP通信プロトコルと呼ばれるもので、PCがネットワーク上で通信する際の取り決めみたいなもの。
人間同士のコミュニケーションではお互いが同じ言語を使うのと同じように、ネットワークの通信でもお互いが同じプロトコルを用いないと意思疎通することができない。

プロトコルとは取り決めのこと

HTTPとは

HTTPはテキストデータのやり取りに用いられ、主にWebサイトの閲覧などに用いられる。
通常インターネットを用いる上で最も使われる通信プロトコル
ただテキストデータを丸見えの状態で送るので、傍聴されたら丸見えになってしまう。

SSHとは

SSHとはセキュアシェルの略称で、暗号化された通信のこと。
コマンドラインなどのCUIツールでリモートサーバに入る際に使われる。
HTTPとは違い公開鍵/秘密鍵で暗号化されているので、通信が傍聴されることはない。

公開鍵/秘密鍵の違いはまたの機会に。

SEの要件定義書作成のまとめ

業務系システムを作る上では(少なくとも今自分が勤めている会社では)、お客様の言うことが正義。
だからお客様の意に沿わない言動は悪と見なされ、アジャイル開発で「ここはこうした方がよくね?」なんてことは言えない。
プロジェクト規模に寄らず、最初にシステム要件をカッチリと要件定義書にまとめ、その仕様に沿って実装していくことが求められる。
今回はウォーターフォール型開発の流れについて、自分の知識の範囲内でまとめていく。


システム開発キックオフ

システム開発では社内業務のほぼ全て(相手の要望による)を要件に落とし込む必要があるため、業務に関わる責任者/実務者打ち合わせを行う必要がある。
そのために、ユーザー側/ベンダー側どちらも目線合わせのためのキックオフミーティングを行う。

要件定義

このフェーズではシステム開発要望のある部署の担当者と打ち合わせを行い、システム化要望を漏れなくチェックしていく。
この際、会社によっては業務一覧と呼ばれるオペレーション手順を細かく記した資料があり、これを基に打ち合わせを進めていく。
オペレーションがドキュメント化されている会社の場合認識合わせが容易になるのでスムーズに打ち合わせが進められていく。
打ち合わせした内容は要件定義書としてまとめていく。

開発

要件定義したものをシステムに落とし込んでいく。システム開発の工程のうち、6割ほどはこの工程。

テスト

開発が終わったら、全ての機能が問題なく動くかテストを行う。テスト段階でもまず要件を決め、機能が要件通りか漏れなくチェックしていく。

以上、簡単に開発工程の流れをまとめてみた。
経験が深くなって理解が進めば、もっと細かい&読んでいてタメになる記事にしたいと思う。

画像アップロードフォームにドラッグ&ドロップ出来るようにする

画像アップロードフォームがあるとそこにドラッグ&ドロップで画像をアップロード出来れば便利ですよね。

でもブラウザの標準機能では、画像をドラッグ&ドロップするとページ全体に画像が表示される仕様になっています。

そこで今回は、アップロードフォームを設置した後に、ドラッグ&ドロップで画像をアップロードする仕様をJavaScriptで書いていきます。

 

フォーム

>|Haml|

.image-upload-dropbox.have-item-0
  = f.fields_for :item_images do |i|
    = i.file_field :name, multiple: true
    %pre.visible-pc

||<

 

>|JavaScript|

$('.image-upload-dropbox').on('dragover', function(event) {
  event.preventDefault();
});
$('.image-upload-dropbox').on('drop', function drop(e) {
  e.preventDefault();
});

||<

 

まず、dragoverイベントとdropイベントを使用します。

上記のように2つのイベントを同時に使用しpreventDefaultを用いることで、ページ全体に画像が表示されないように出来ます。

(どちらか片方だけではダメ)

Nuxt.jsの環境構築方法② ~nuxt.jsのインストール~

前回の記事でnode.jsをインストールすることが出来た。今回はnuxt.jsをインストールしてみたいと思う。

 

create-nuxt-app を使用する

npxがインストールされていることを確認し、下記のどちらかのコマンドを実行

$ npx create-nuxt-app <project-name> 

$ yarn create nuxt-app <project-name>

 

選択肢を選ぶ

それぞれの質問項目に対して選択肢を選んでいく

  1. サーバサイドのフレームワーク
  2. UIフレームワーク
  3. テスティングフレームワーク
  4. Nuxtモード選択
  5. HTTPリクエストを簡単に行うためのaxios moduleの追加
  6. 保存時にコードをチェックする為にEsLintの追加
  7. 保存時にコードを整形する為にPrettierの追加

 

サーバ立ち上げ

回答終了後に全ての依存関係がインストールされたあと、次のコマンドでローカルでサーバが立ち上がる

$ npm run dev 

 

Nuxt.jsの環境構築方法① ~node.jsのインストール~

MacでNuxt.jsの開発環境構築手順を書いて行きたいと思います。

前提として、コマンドラインbrewはすでにインストールしているものとします。

 

ndenvのインストール

ndenvのリポジトリGithubからクローンします。

$ git clone https://github.com/riywo/ndenv ~/.ndenv

パスを通します。

$ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l  // パスを通す

node-buildの導入

Node.jsをインストールするndenv installコマンドを使用する為に、node-buildをインストールします。

$ git clone https://github.com/riywo/node-build.git $(ndenv root)/plugins/node-build  // node-buildのリポジトリをインストール

インストールできるバージョンの確認。

$ ndenv install -l

目的のバージョンがなければ、ndenvのバージョンを最新にする。

$ cd ~/.ndenv
$ git pull

node.jsのインストール

目的のバージョンをインストールし、リハッシュを行う。

$ ndenv install v8.4.0
$ ndenv rehash

 グローバル環境にセットする

$ ndenv global v8.4.0

 

以上でnode.jsのインストールが完了する