技術向上

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

2019-02-01から1ヶ月間の記事一覧

Docker-Compose【Docker】

Docker-Composeは、複数のコンテナを管理する仕組みです。 いくつかのファイルにコンテナにまつわる設定を記述することで、コンテナのコマンド実行時にその内容を基にして処理されます。この仕組みがないと、各コンテナの設定をコマンド実行の都度指定する必…

SQLのタイムゾーンを設定する【Go】

SQLの時刻がUTC時刻になってしまう問題を解決します。 sql, err := sql.Open("mysql", "user:passward@/dbname?parseTime=true&loc=Asia%2FTokyo") このようにparseTime=trueに併せてlocを指定しないと、例えソースコード側でJST時刻を指定しても、sql接続時…

脱構造化【TypeScript】

構造化された内容を変数に展開します。 let person = { nickname: "Mike", like: "Cat" }; let {nickname, like} = person; console.log(nickname, like) // Mike, Cat 配列を展開することもできます。 let array = [1, 2]; let [numA, numB] = array; conso…

最後にInsertまたはUpdateしたレコードのIDを取得する【MySQL】

InsertまたはUpdateした後に、他の関連テーブルを操作するため、処理したレコードのIDを使いたい場合があるかと思います。そんな時は、LAST_INSERT_IDを利用します。 Upsert時に、UpdateしたレコードのIDを取得したい場合は、LAST_INSERT_IDを併せて更新する…

Upsert【MySQL】

なければInsertあればUpdateする、通称Upsert命令文です。Primary Keyの他、Unique Keyも考慮するので、事前にどのカラムにKeyを設定するか検討、対処しておく必要があります。 INSERT INTO stock( book_id, status, created_at, updated_at ) VALUES( 1, 1,…

アロー関数式とthis【TypeScript】

TypeScriptでもアロー関数式を使うことができます。 function helloA(): () => string { return () => {return "Hello, world"}; } function helloA(): () => string { return () => "Hello, world"; } class定義のメンバメソッドについて、アロー関数式と通…

namespace【TypeScrypt】

名前空間を区切ることができます。namespace内で定義したものは、exportを記述しない限り、外部から参照することができません。また、必ずnamespace名を経由する必要があります。 namespace sampleA { export var str = "string"; } console.log(sampleA.str…

構造的部分型【TypeScript】

ダックタイピングのようなものです。構造が一致するならば、異なる型であっても同じようなものとして扱うことができます。 class Options { sync: boolean; constructor(){ this.sync = true; } } class Options2 { constructor(public sync?: boolean, name…

引数【TypeScript】

可変長引数 スプレッド演算子を使って表現します。型は要素の型(stringなど)の配列型([])を記述します。 function hello(...words: string[]): string { return "Hello, " + words.join(" and "); } console.log(hello("Mike", "Chang", "Bob"); // Hell…

SQLによる取得結果をHas Manyの形で格納する方法【Go】

SQLの取得結果をHas Manyの形で格納したいことがあるかもしれません。しかし、SQLでのSELECTの結果は階層化されていないので、ソースコードでロジックを組んで組み立てる必要があります。 Goの場合、SQLの取得結果を1行ずつ処理できるrow.Next()があるので、…

SQLのNULL値に対応する(JSON定義の変更まで)【Go】

SQLのSELECTの結果がNULLを返し、それを何らかのデータに格納する場合、格納先のデータの型を特別なものに指定する必要があります。 NULLを返すSQLを使用する場合、次のコードはエラーになります。 type someModel struct { code int name string } func mai…

SquirrelでネストクエリをLEFT JOIN【Go】

Go

SQLビルダーのライブラリSquirrelです。SQL文の命令を、SQLの構文のようにGo言語によって記述することができます。 GitHub - Masterminds/squirrel: Fluent SQL generation for golang 使用方法は下記公式の案内に記載されていますが、 squirrel - GoDoc sou…

ジェネリクス(総称型)【TypeScript】

TypeScriptは、型をパラメータ化するジェネリクスをサポートしています。 下記は型変数Tを使ってジェネリクスを表現した関数です。引数と返り値にTが適用されます。 function identity<T>(arg: T): T { return arg; } 引数だけを考えれば、any型と同じですが、</t>…

型【TypeScript】

TypeScriptの基本型には次の3つがあります。 number string boolean 型宣言をするときは「: 型名」というように型アノテーションを用います。 変数 var 変数名: 型名 関数 function 関数名(引数名: 引数の型): 関数の返り値の型{} 返り値を持たない関数は、…

TypeScriptとは【TypeScript】

TypeScriptはMycroSoftによって開発・メンテナンスされるオープンソースののプログラミング言語です。その特徴は次の3点で表されます。 Javascriptと互換性のあるスーパーセット 静的型付け クラスベースオブジェクト指向 TypeScriptによるソースコードは、…