ひよこメモ

備忘ブログ Ruby, Rails, AWS, html5, css3, javascript, vim,

golang ユニークなID生成 xid

xid(https://github.com/rs/xid
Go製のUnique ID Generator「xid」について - Qiita
スケールする:対象を拡大・縮小する
UUID:Universally Unique Identifier。ユニークなID。128ビット(16Byte)。16進法が多い。UUIDがかぶる確率は230京回らしい。(https://qiita.com/ta_ta_ta_miya/items/1f8f71db3c1bf2dfb7ea)
Snowflake:Twitter社が作ったユニークなID生成のWebサービス。
全体で12Byte。UUID>xid>Snowflake。20文字のlower caseの英数字。

package main

import (
	"fmt"

	"github.com/rs/xid"
)

func main() {
	// idを生成
	guid := xid.New() //:=は何?
	fmt.Println(guid.String())

	// binaryの各partの情報
	machine := guid.Machine()
	pid := guid.Pid()
	time := guid.Time()
	counter := guid.Counter()
	fmt.Printf("machine: %v, pid: %v, time: %v, counter: %v\n", machine, pid, time, counter)
}

xidtest.go

$ go run xidtest.go
ba0h6ajjcl7tb9gdr440
machine: [115 101 79], pid: 54694, time: 2018-02-12 13:08:10 +0900 JST, counter: 907528

このような結果になる。

GCPコマンド一覧

ログイン
gcloud init
gcloud auth login

接続
gcloud compute --project "プロジェクト名" ssh --zone "ゾーン名" "ユーザー名"

確認
インスタンスの確認
gcloud compute instances list
アカウントの確認
gcloud auth list
設定の確認
gcloud config list
configurationファイルの場所 ~/.config/gcloud/configurations/
configurationファイルの切り替え
gcloud config configurations activate config名


SDKの更新
gcloud components update

GCPのキーについて

・GCPプロジェクトの下にインスタンスがある。

Compute Engine >> VMインスタンス >> 編集でインスタンスの編集 >> SSH認証鍵欄に公開鍵を登録する。(ssh-rsaからはじまる一行の暗号)

秘密鍵と公開鍵のぱっと見の見分け方
秘密鍵
拡張子なし。
公開鍵
公開鍵はpublic keyなので、拡張子は「.pub」となる。

PHP print_r

print_r("文字列" [,bool 返り値オプション]);

わかりやすい形式で変数の値に関する情報を表示する。
返り値オプションは書いても書かなくても大丈夫。trueなら画面に表示せず変数に格納する。falseなら画面に表示し変数には格納しない。デフォルトはfalse。

$test = print_r("aaa", true);
var_dump($test);
結果
string(3) "aaa"

preg_match

preg_match
正規表現によるマッチング。特定の文字列を含むかチェック。マッチしたら1を返す。マッチしなかったら0を返す。
引数は(パターン, 対象)
if (pregmatch('/ab/', 'abcde')) {
文字列あり
}

if (!pregmatch('/ab/', 'abcde')) {
文字列なし
}

正規表現を使わない場合はstrposかstrstr。
strpos:該当する文字列が無ければfalseを返す。見つかったら位置を数値で返す。
if (strpos('abcde', 'bc') !== false) {
//文字列あり
}

if(strpos('abcde', 'bc') === false) {
//文字列なし
}

strstr

XcodeのSize Inspector設定

View

Show
Frame Rectangle(フレーム矩形):影を含むオブジェクトの矩形サイズが「Width」と「Height」に表示される。ドロップシャドウ込み。
Alignment Rectangle(比率矩形):オブジェクト自体の矩形サイズが「Width」と「Height」に表示される。ドロップシャドウ抜き。
矩形・・・正方形や長方形
UIObjectに影を持つものはほとんど無いのでデフォルトのFrame Rectangleで問題ない。
X:左端を支点とした左右の位置。
Y:上部を支点とした上下の位置。
Width:オブジェクトの幅。
Height:オブジェクトの高さ。

Arrange Position View

Center Horizontally In Container:オブジェクトの位置を左右の中心に置く。
Center Vertically In Container:オブジェクトの位置を上下の中心に置く。
Fill Container Horizontally:オブジェクトを左右いっぱいに引き延ばす。
Fill Container Vertically:オブジェクトを上下いっぱいに引き延ばす。

Autoresizing

Layout Margins

Default:
Explicit(明示的な):

Preserve Superview Margins(Superviewのマージンを保持):
Superviewは外枠いっぱいを囲ったView。
Leading Space to Suverview:Superviewから右に伸びるConstraint
Trailling Space to:Superview:Superviewから左に伸びるConstraint
SubviewはSuperviewの中のオブジェクト。
Marginsはオブジェクトを配置する時に使う幅。
Follow Readable Width:

Constraint(制約):右下にあるAdd New Constraintから追加可能。
Constraintを追加すると、Size Inspectorの様子が変わる。

XcodeのPlaygroundが便利

Xcodeを開いて
FIle > New > Playground

コンパイルせず即座に確認できる。
こちらのブログを参考にテスト
Swift実践入門 〜 今からはじめるiOSアプリ開発! 基本文法を押さえて、簡単な電卓を作ってみよう - エンジニアHub|若手Webエンジニアのキャリアを考える!

class MyApp {
    //親クラス
    class Shape {
        var name: String
        
        init(name: String) {
            self.name = name
        }
    }
    
    //子クラス 四角形
    class Rectangle: Shape {
        var width: Double
        var height: Double
    
        init(name: String, width: Double, height: Double) {
            self.width = width
            self.height = height
            super.init(name: name)
        }

        func area() -> Double {
            return width * height
        }
    }
    
    //子クラス 三角形
    class Triangle: Shape {
        var bottom: Double
        var height: Double
        
        init(name: String, bottom: Double, height: Double) {
            self.bottom = bottom
            self.height = height
            super.init(name: name)
        }
        
        func area() -> Double {
            return bottom * height / 2.0
        }
    }
}

var square = MyApp.Rectangle(name: "四角形!", width: 15, height: 20)
print(square.name)
print(square.area())