技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

2019-01-01から1年間の記事一覧

連想配列のkey指定に変数を用いる方法【Javascript】

連想配列のkeyを指定してvalueにアクセスする際、 itemList.hoge = "hoge" というように「.」を使うことが一般的ではありますが、 変数を使う場合には次のようにします。 var key1 = "hoge" itemList[key1] = "hoge"

axiosでresponseデータのフィールドにアクセスする方法【Go】

クライアントとサーバーの通信を、クライアントではaxiosを用いる例です。 ユーザーに関する情報をサーバーでデータベースに保存しておき、 ログイン後のページで、そのデータを利用して表示を変えることを想定します。 例えば次のコードを見てみます。 goフ…

axiosでformの値を送受信する方法【Vue.js】【Go】

POSTまたはPUTのformデータをサーバーサイドに送信する際、 axiosでは、デフォルトでJSON形式にしてrequest payloadに乗せて送られます。 HTTP.Requestは次のようになっています。 POST /some-path HTTP/1.1 Content-Type: application/json { "username" : …

mixinでグローバル定義【Vue.js】

mixinを使うことで、どのコンポーネントでも「this.~」の形で、関数や変数computedなどを利用することができます。 下記のようにmixinsフォルダを作成し、その下にjsファイルを作成した方が管理しやすいでしょう。 build config src ... mixins globalValiab…

https接続【Vue.js】

Vue-CLIを使ったhttps接続です。 build/webpack.dev.conf.jsを編集します。 見やすさのために一部を抜粋し、追加する2行についてコメントを記載しています。 'use strict' const utils = require('./utils') ... const fs = require("fs") // 追加。ファイル…

Cross-Originを許容してCookieを送受信する【Go】

フロントをVue (port :8081)で、サーバーをGo (port :8080)で実行した時、Safariは「開発」メニューから一時的にCross-Originの制限を無効にすることができますが、Chromeにはそれらしきものが見当たらず、Headerにセットすることにしました。備忘として残し…

TLS【Go】

TLSを使ったHTTPS通信を紹介します。 2015年にはGoogleがHTTPS通信を行うサイトを、検索結果において優遇すると宣言したように、どのサイトでもTLSを用いたHTTPS通信が要求される時代です。 証明書、秘密鍵の生成 TLSを使用するには、その方式で使われる証明…

case: 長すぎるパラメータリスト【リファクタリング】

パラメータが多すぎる状態は、記述するのが面倒なだけでなく、それぞれのパラメータの役割をわかりづらくします。 一番の問題は、変更に対応するための作業が煩わしくなることです。パラメータを一つ追加すると呼び出し側の修正が必要になります。 パラメー…

Cookieに使える、base64エンコード【Go】

Go

CookieにJSONの内容を格納する際などは、base64を用いて事前にエンコードし、Cookieから取り出した後にデコードします。 Cookieには許容されない文字を使うと、Cookieにそもそも登録できない、または異なるValueの値が登録されてしまうからです。 func main(…

MySQL - invalid memory address or nil pointer dereference【Go】

複数の関数で、DBコネクションを使い回す場合には、注意が必要です。 dbだけでなく、sql.Open()の返り値に含まれるerrもpackageグローバルに定義して、 sql.Open()の返り値のアサインは「:=」ではなく、「=」を使用します。 var db *sql.DB var err error //…

MySQL【Go】

インストール sql-Driverごとにpackageをインストールする必要があります。 $ go get -u github.com/go-sql-driver/mysql import database/sqlは、コード中で使用するものの、mysqlについてはプログラムの起動処理には使われますが、コード中では使用しない…

Linuxコマンド

著者が初めて使用する度に書き加えていくもので、網羅しているわけではありません。 ファイル 作成 $ touch mymemo.txt 編集 $ nano mymemo.txt // nanoはviより使いやすい 削除 $ rm mymemo.txt 移動 $ mv mymemo.txt Memos // ファイル名を変更しない場合 …

コマンド【Go】

著者が初めて使用する度に書き加えていくもので、網羅しているわけではありません。 単一ファイルの実行 $ go run main.go package mainが複数ファイルに分かれている場合の実行 $ go build $ ./<exe-name > // デフォルトのexe名は、project名 もしくは $ go build -o </exe-name>…

nano(使いやすいCUIエディタ)

nanoは、CUI(Character User Interface、コマンドラインなど。↔︎ GUI)環境における、使いやすいエディタです。 標準搭載のvi等に比べ、覚えるキー操作も少なく、簡単に扱うことができます。 ファイルの作成 $ nano または $ nano mymemo.txt // mymemo.txt…

Sessionの期限更新と清掃【Go】

Go

処理を実行するごとにsessionの有効期限を更新し、ログアウト時に、他のユーザーに関するsession情報も含めて、 一定時間を超えたsessionを削除する機能を用意します。 過去の記事を基にしています。 Session【Go】 - 技術向上 bcryptでパスワードをhash化【…

bcryptでパスワードをhash化【Go】

Go

サードパーティのbcryptを使用します。 bcrypt - GoDoc シンプルな記述で暗号化でき、暗号の強度も数字や定数を指定するだけです。 暗号化 暗号化の対象(byte配列)とコスト(暗号の強度)を引数にとり、byte配列とエラーを返します。 bs, err := bcrypt.Ge…

Session【Go】

Go

Sessions、Users sessionの簡単な例をお見せします。 sessionsテーブルとusersテーブルを用いてユーザー情報を管理するイメージです。 sessionsテーブルのunique idをキーに、usersテーブルの情報を引き出します。 main.goです。 type user struct { // 各ユ…

Unique IDの生成【Go】

Go

サードパーティのパッケージを使用します。 GitHub - satori/go.uuid: UUID package for Go func main() { http.HandleFunc("/", index) http.HandleFunc("/read", read) http.Handle("/favicon.ico", http.NotFoundHandler()) http.ListenAndServe(":8080",…

Cookieの削除【Go】

Go

CookieにはMaxAgeという、有効期限を秒数で指定する属性があります。 Goでは、このMaxAgeにマイナス値か0を設定することで、対象のCookieを削除することができます。 func main() { ... http.HandleFunc("/delete", delete) // 「/delete」にアクセスしたらd…

Cookieの読み書き【Go】

Go

Cookieをセットし、Nameを指定してセットしたCookieを取得する例です。 func main() { http.HandleFunc("/", set) http.HandleFunc("/read", read) http.Handle("/favicon.ico", http.NotFoundHandler()) http.ListenAndServe(":8080", nil) } func set(w ht…