max

@maxy8821

Joined on Aug 2, 2019

  • ###### tags: `GCP` `CloudDNS` `freenom` # Cloud DNS # 1. freenom ドメイン取得サービス 今回使うドメインを用意する .tk(ニュージーランドのトラケウ) .ml(マリ) .ga(ガボン) .cf(中央アフリカ) .gq(赤道ギニア) などはただで使える ## 1. 流れ 1. Freenomでドメイン取得 2. Cloud DNSにドメインを移行する 3. LoadBlancerに紐付ける # 2. freenomでドメイン取得 12ヶ月まで無料だが、練習なので3ヶ月だけ 取得したら、タブは開いたままにしておく freenomのドメインは、IPかDNSを用意しないと取れないが CloudDNSもDNS名を入力しないと作成できない デッドロックの関係になっている。 今回は、もうドメインが取れた体で進める # 3. Cloud DNSを設定 menu > ネットワーキング > ネットワークサービス > CloudDNS # 1. ゾーンを作成 ゾーン名: 任意 DNS名: freenomで取得する(予定の
     Like  Bookmark
  • ###### tags: `Dart` `Flutter` `pubspec.yaml` # 2-1. Quiz app この章で学ぶのは、 - Flutter App がどのように起動し、動作するか - Widget と Custome Widgets - UserEventへの反応を実装 - ボタンを押すなど - Stateless と Statefull なWidget - **Dartの基礎文法** ファイル構成は - main.dart - question.dart - quiz.dart - answer.dart - result.dart となる # 1. プロジェクトを作る ```bash: code flutter create flutter_complete_guide ``` ## デバッグモード VSCodeで開発を進める 上のメニュー > Debug > Debug start を押すと、デバッグモードを実行する。 つないだ端末 or シミュレーターでアプリを実行する。 バグなどがあった場合、DEBUG CONSOLE にバ
     Like  Bookmark
  • ###### tags: `Affinity Designer` `youtube` # Affinity Designer NINJA #4 # マスクとコーナーツールを使ってかっこいいアイコンを作る 実際の作成例を見ながら、真似して作る ## 1. 元画像を用意 ![](https://i.imgur.com/cbP40xo.png) ## 2. トレースするために元画像の解像度を薄くする **テクニック** : テンキーの1...9 を押すと、 X0% の不透明度になる 20%にしてみる ![](https://i.imgur.com/Il0ExHa.png) ## 3. テーマ色を決める 色を取るために、適当な画像を持ってきてペーストしておく ## 4. 長方形ツールで、アイコンの正方形を使ってスナップ 1. スナップ機能を有効化 2. 長方形ツール(M) 3. コーナーにスナップしてから、shift + drag で対角まで ![](https://i.imgur.com/kpsSufo.png) あとから色を変えられるので、色は何でもいい 必要があれば、コ
     Like  Bookmark
  • ###### tags: `go` `JWT` # JWT チェック with Golang id_tokenの取得は React で auth0-lockを使ってできた。 golang側で認証APIを使うために、 Authorization ヘッダーで送られた `Bearer header.payload.signiture` 形式のJWTを、改変されていないか調べる方法を探す # 検証ミドルウェア JWTをミドルウェアで検証する https://qiita.com/keiya01/items/ae1b6ff732e534aadaef # # その他参考 auth0を利用した上で、jwt情報をもとにサーバーサイドのDBに記録する感じ Go言語で認証機能を作ろう! https://qiita.com/__init__/items/21b2604db54867f8c543 上級者向け? HTTP APIへのアクセスをAuth0のRBAC機能を利用して制御する https://qiita.com/hisashiyamaguchi/items/8cf870a496d8
     Like  Bookmark
  • ###### tags: `RaspberryPi` `rpi` `Linux` `GlobalIP` `DDNS` `NAT` `NAPT` # RPIをグローバルIPで外部に公開する # 家のルーターを設定 外部からraspberry pi にアクセスするための ポート転送(NAT, NAPTとも)をルーターで設定する ### NATとNAPTの違い https://wa3.i-3-i.info/diff375network.html https://www.geolocation.co.jp/learn/ip/07.html - NAT : 1台専用。グローバルIPにつけたPortを見ない - NAPT : 複数台可能。ポートを見る - NATとNAPTの共通点 - グローバルIPをローカルIPに変換するための設定 - 変換 1. 192.168.1.1にアクセス 2. user : adminでログイン 3. 静的IPマスカレード設定を開く(NAPTのこと) 4. 宛先アドレスは固定したrpiのアドレス、変換対象は自分のWAN側IP 5. TCP 6. 宛
     Like  Bookmark
  • ###### tags: `RaspberryPi` `rpi` `Linux` `camera` # Raspberry Pi 3 b+ 監視カメラ rpi = raspberrypiの略語 参考動画 https://www.youtube.com/watch?v=Ww5daSvlXXc ## 1. カメラモジュールをラズパイに接続 ![](https://i.imgur.com/vKw1uA2.jpg) ## 2. ラズパイでカメラ機能をオン ```bash= sudo raspi-config # 表示されるメニューで 5. Interface Option > P1 Camera > enable sudo reboot vcgencmd get_camera # supported=1 detected=1 と表示されれば接続完了 ``` ## 3. vscode をラズパイにインストール arm64Linux版があるのでインストール 最新版は、ウィンドウがうまく表示されないバグが有るので 最新版を使わないでダウングレードしておく 参考記事 https://
     Like  Bookmark
  • ###### tags: `CI` `jenkins` # Continuous Integration とは、エクストリームプログラミングの習慣(practice)の一つ ビルドやテスト、インスペクションを継続的に実行する。 ## CIツール Continuous Integration 開発者がコードをmasterリポジトリにマージして、 そのたびに自動化されたビルドとテストを実行する。 結果は**「成功」** or **「失敗」** であり、成功したらクリーン、失敗ならビルドは壊れている。 もしもビルドが壊れたら、開発チームが速やかにビルドの問題を直す。 ## アンチパターン と 恐怖駆動型開発 - ビルドステータスを無視する。 - 壊れていても直さない。(実際は、開発を止めて直すべき) これらを徹底するために、ビルドを壊した人は何らかのバツを受けるという厳格なルールを決めるということもできる。 ただし、これは**恐怖駆動形開発**であり、ビルドを失敗させて謝罪しなければならない恐怖から、開発者はリポジトリへのコミットを恐れるようになる。 結果として、ビ
     Like  Bookmark
  • ###### tags: `Rust` # Rust テキスト学習 1 https://doc.rust-jp.rs/the-rust-programming-language-ja/1.6/book/variable-bindings.html を見て、足りない知識をメモる # 4. シンタックスとセマンティクス - syntax = 文法 - semantics = 意味論。そのコードを実行するとどんな意味があるのか ## 変数束縛 - 変数束縛 = 何らかの値を変数名に束縛すること Rustでは、1つの値(リソース)に1つの名前が対応するので 他の言語と逆(普通は変数名を値に束縛する) - 型アノテーション = let i **: i32** <- ここの部分 - パターン = let式の左側、単なる変数名ではない let (x, y) = (1, 2) いろいろなことができる ### スコープとシャドーイング - スコープ = 変数の寿命 - シャドーイング = スコープ外の変数束縛をスコープ内で書き換える(隠す)こと ## 関数 - main() : エン
     Like  Bookmark
  • ###### tags: `Rust` `youtube` `type` `condition` `loop` # Rust language Crush Course 2 # 8. Types RustのPrimitive型 - Int : デフォルトは i32 - i8, i16, i32, i64, i128 - u8, u16, u32, u64, u128 - Float - f32, f64 - bool - char - Tuples : タプル。変更不可のイテレーター - Arrays : 配列 std::\<type> : 標準ライブラリに用意される型 便利なプロパティやメソッドも使える std::i32::MAX = i32 type の最大値 ```rust= pub fn run(){ // デフォルトintはi32(4byte) let x = 1; // デフォルトfloatはf64(double) let y = 2.5; // 宣言時に型を明示するなら、
     Like  Bookmark
  • ###### tags: `RaspberryPi` `wi-fi` `ssh` # Raspberry Pi ネットワーク回りの設定 # ホスト名 https://dev.classmethod.jp/hardware/raspberrypi-remote-connect/ raspberry pi は、raspberrypi.local というホスト名で、LANでアクセスできる ```bash= ping raspberrypi.local ssh pi@raspberrypi.local ``` # 無線LANの追加 eth0 = ethernet(有線LAN) wlan0 = wi-fi(無線LAN) この記事を参考に https://qiita.com/momotaro98/items/fa94c0ed6e9e727fe15e ## /etc/wpa_supplicant/wpa_supplicant.conf 無線LANの情報は、上記のパスのファイルに保存される 設定方法は、 - confファイルを直接編集する - `sudo raspi-config
     Like  Bookmark
  • ###### tags: `Rust` `macro` # Rust マクロ 書き方 https://doc.rust-jp.rs/the-rust-programming-language-ja/1.6/book/macros.html https://keens.github.io/blog/2018/02/17/makurokurabu_rustshibu/ 例: vec!マクロの実装 ## macro_rules! マクロ マクロの宣言はいつもこのワードから ```rust= macro_rules! vec { } ``` ## マッチング マクロは引数をパターンマッチして処理を決定する。 ```rust= macro_rules! vec { (パターン) => {式}; (パターン) => {式}; (パターン) => {式}; (パターン) => {式}; } ``` match式に似ているが、コンパイル時にマッチを行うことになる。 => の左にあるパターンは**マッチャ(mathcer)**と呼ばれる mat
     Like  Bookmark
  • # Syncの実装を通して見る、既定実装と否定実装 simple_redis の Clientの実装について、 APIドキュメントの下にある Auto Trait Implementations にて下記のような記述がある。 ```rust= // Auto Trait Implementations impl Send for Client impl !Sync for Client ``` # 参考 https://qnighy.hatenablog.com/entry/2017/03/21/070000 ## 既定実装 - auto impl - dafault impl とも言う Opt-in Builtin Traits で規定される機能 言語の組み込みとは限らないマーカートレイトをオプトアウト方式で実装できるようにする機能 ## ! の意味 ! が意味するのは 否定 Syncの実装は negative であるということ ## 特別なトレイト SyncとSendは特別なトレイトである ここに少し書いてある https://doc.rust-lang.org/r
     Like  Bookmark
  • ###### tags: `RaspberryPi` # Raspberry Pi セットアップ OSインストールしてから、家のルーターから外部へ公開するまで https://jyn.jp/raspbian-setup/ # インストール 1. 公式から、imageファイルをダウンロード 2. 32GBのmicrosd, sdカードリーダを用意 3. [balenaEtcher](https://www.balena.io/etcher) で sdカードにOSイメージを書き込む 4. 起動 # 起動 初期ユーザー名/パスワードは - pi - raspberry # sudo raspi-config いろんな設定がこのコマンドからできる 特に重要なものをメモる ## 2. Network Option - HostName : 初期は "raspberrypi" になっている - Wi-fi : 無線接続のため必須 ## 5. Interface Options - Camera - SSH - VPC - SPI - I2C - GPIO などなど、入出力に関する
     Like  Bookmark
  • ###### tags: `terraform` # Terraform 基礎 ## String terraformでの多くの設定値は文字列型で定義する - 変数名 - 値 - mapのkey, value 文字列の中に変数をテンプレートとして埋め込むこともできる "#{vars}" ## Map 辞書構造 基本的にはterraformのオブジェクトはこれで記述される ```tf variable "AMIS" { type = "map" default = { ap-northeast-1 = "ami-06cd52961ce9f0d85" } } ``` 取り出すには、lookup関数を使う ```tf "${lookup(map, key)}" ``` ## Varilable 定義 variable キーワード ```tf variable "access_key" {} variable "secret_key" { default = "XXXXXXX" } ``` 使うときは vars.~~~ で呼び出す ## Com
     Like  Bookmark
  • ###### tags: `go` `Auth0` # Golang JWT Auth jwt ミドルウェアを使って、jwt認証をする。 ```bash= mkdir client cd client go mod init go-jwt-tutorial/client ``` # クライント側 ```go= package main import ( "fmt" "time" jwt "github.com/dgrijalva/jwt-go" ) var mySigningkey = []byte("mysupersecretphrase") func GenerateJWT() (string, error) { token := jwt.New(jwt.SigningMethodHS256) claims := token.Claims.(jwt.MapClaims) claims["authorized"] = true claims["user"] = "Elliot Forbes" claims["exp"] = time.Now()
     Like  Bookmark
  • ###### tags: `GCP` `GCE` `go` # GCE にGoプロジェクトをデプロイ 1. GCEインスタンスを作る 2. Ubuntuを使う 3. 依存パッケージのインストール ```bash= sudo apt update && apt upgrade # snapじゃないとgo modが使える最新版がインストールできない sudo snap install --classic go sudo snap install docker sudo snap install virtualbox bash # パスを読み込み ``` ## プロジェクトのダウンロード git cloneする。 goが1.12以降なら、go.modに書いてある依存関係を引っ張ってきてbuildできる ```bash= git clone http://repository cd repogitory go build ``` ## docker実行 何故か、sudoをつけないと実行できない docker-machine で仮想マシンを作る旨のメッセージが出るが 作らなくてもできる
     Like  Bookmark
  • ###### tags: `Affinity Designer` `youtube` `Node` `Zoom` `Curve` `Geometory` # Affinity Designer NINJA #3 # 6. ノードツール(A) ![](https://i.imgur.com/3NsFj42.png) 別名頂点ツール 頂点を操って、図形を変形する ## 移動ツールとの違い 長方形をカーブに変換していない状態では、 - 移動 - 回転 - 拡大縮小 と、移動ツールとほぼ変わらない操作性 カーブに変換すると真の力を使える ### 図形の種類の違い - シェイプ - 長方形、丸、楕円など - 選択ボックスがあって、拡大縮小できる - カーブ - ノード(点)とエッジ(辺)の集合体 - シェイプにはない三角形、台形など、自由な形にできる - 曲線もかける ## シェイプをカーブに変換 ![](https://i.imgur.com/6ppAf5o.png) ![](https://i.imgur.com/t9yQRzo.png)
     Like  Bookmark
  • ###### tags: `Affinity Designer` `youtube` `Move` `Rectangle` `Corner` # Affinity Designer NINJA #2 必要なことだけメモろう 基本は体験ベースが重要 # 3. 移動ツール(V) ![](https://i.imgur.com/0tf7uMk.png) 最も使うであろうツール。 図形を移動する。 ## 選択 ![](https://i.imgur.com/TFjOIIX.png) 四隅に頂点が現れる - 移動 回転 - 拡大/縮小 ができる。 ## shiftを押しながら shiftを押しながら上記の操作をすると、 - 縦横斜めの方向だけに移動 - 15°ずつ回転 - アスペクト比率を保ったままスケール できる ## cmd + 拡大 **拡大の起点が中央**になる ## 選択の方法 - クリック : 一つだけ - ドラッグ : 範囲選択 - shift + クリック : 複数選択 - cmd + A : 全選択 - レイヤをクリック : レイヤを選択(画像) -
     Like  Bookmark
  • ###### tags: `Affinity Designer` `youtube` `vector` `illust` # Affinity Designer NINJA #1 Affinity Designerとは? - Adobe Illustlatorに変わるベクタイラストソフト - Illustlatorより使いやすいらしい - 買い切りのソフト ## 勉強のモチベーション - 著作権系のビジネスは強い - 印税としての資産 - 会社員では給料に限界があるが、自分のデザインを持てれば青天井 - 創作的な趣味 - 自分のかっこいいキャラを作って、ゲームやイラストを作りたい # 1. UI # ウィンドウ上部 ![](https://i.imgur.com/qAqjxTB.png) ## ペルソナボタン Affinity Designerの特徴 作業フローの切り替えができる - 描画ペルソナ : ベクターイラストを書く - pixelペルソナ : ラスタを編集する - 書き出しペルソナ : 保存したり、エクスポートする ## ツールバー
     Like  Bookmark
  • ###### tags: `WebSocket` `server` `Rust` # Socket通信について #2 # Websocket Server Rustの ws-rs でやっていく ## ws-rs ssl対応 feature = 機能 Cargo.toml で ssl機能を使うようにする ```toml= [dependencies.ws] version = "*" features = ["ssl"] ``` これで、ws-rs のサーバーもクライアントも **wss**で通信を行うようになる # サーバーソケット作成 ## listen関数 これを使うだけで、ライフサイクルのうちの以下を実行する。 - create - bind - listen ```rust= extern crate ws; if let Err(error) = ws::listen("localhost:5000", |out|{ move |msg| { plintln!("{}", msg); out.send(msg)
     Like  Bookmark