emolog

脳内メモです。

未経験からエンジニアになって4年目になったので、ちゃんと読み直したい本達のメモ

2018年の4月くらい(たしか)にエンジニアになり、早いものでエンジニアになって4年目になりました。

非エンジニアの期間とエンジニアの期間が5:5くらいで、ビジネスとエンジニアリングのバランスを評価されることが多いのですが、エンジニアリングも引き続き伸ばしていきたいので読んでいる本、読みたい本のメモをつらつらと書いていきます。 (普段はバックエンドをやることが多いので、バックエンド周りが多いです。)

f:id:ababababa0222:20210319234119j:plain

データ指向アプリケーションデザイン

鬼の用に厚いですが、最近読んでます。 データの扱いを中心として書籍でRDB、NOSQL、分散データベースなどについて歴史的背景から、アーキテクチャ設計の考え方など参考になります。

amzn.to

達人に学ぶDB設計

テーブルを設計を1から解説してくれてます。 DB設計がバックエンドで一番失敗してはいけない場所だと個人的には思っているので一度通読しましたが、また読み直したいです。

www.amazon.co.jp

Web API: The Good Parts

API設計の名著です。 綺麗なREST API設計のインターフェイスを学ぶことができます。API設計している時や、設計時に意見が割れたとき等、迷ったときに読んでます。

www.amazon.co.jp

Real World HTTP

Webを支える技術の強めのやつです。 積ん読しているのでよみます。

Real World HTTP 第2版 ―歴史とコードに学ぶインターネットとウェブ技術 | 渋川 よしき |本 | 通販 | Amazon

ポエム

言語の勉強は、どの言語も毎日書いてれば書けるようになってくるのではないかなと思っており、抽象度の高い設計の本等を意識的に読むようにしてます。

また組織最適された知識や、属人化したコードを書き方を覚えるのは、部分最適化されるかもですが、他の環境になった時に通用しないリスクがあるので、環境に依存しない知識をためていきたいな〜と考えてます。

以上あざました〜。

エイリアスの設定方法

エイリアスとは?

Linux / Macなどでエイリアスを設定する方法について、備忘録も兼ねて書いていきます。

エイリアスとは、偽名、別名、通称などの意味を持つ英単語。ITの分野では、ある対象や実体を、複数の異なるシンボルや識別子で同じように参照できるする仕組みを指す。別名です。

エイリアスとは?ざっくりいうとコマンドにつける別名です。 つまり、コマンドの別名を設定します。 例えば、 bundle exec と打っていたのを be と打つだけで実行出来るようにする事が出来ます。

f:id:ababababa0222:20210312000123j:plain

エイリアスのコマンド

alias alias_name='alias_command'

  • ~/.zshrc等に追加
  • 以下は、設定例です〜。
# alias
alias cp='cp -p'
alias ll='ls -laG'
alias ls='ls -G'
alias mk='touch'
alias be='bundle exec'
alias fl='fvm flutter'

エイリアスの読み込み

source ~/.zshrc

上記の対応で be とうつだけで bundle install を短縮できるので、便利です。 ちょこちょこそういうのを対応していくだけで、工数が浮くのでちゃんとやっていきたいです。

Flutter/Flutter.h' file not found のがiOSビルド時に頻発するときの対応

f:id:ababababa0222:20210312000009j:plain

問題

  • ビルドしようとうすると以下のエラーが出る。
  • Flutter/Flutter.h' file not found
al error: 'Flutter/Flutter.h' file not found
    #import <Flutter/Flutter.h>
            ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    Command CompileSwift failed with a nonzero exit code
    note: Using new build system
    note: Building targets in parallel
    note: Planning build

対応

rm ios/Flutter/Flutter.podspec
flutter clean

Flutterのローカル開発で、APIリクエストがSocketExceptionと怒られたときの対応

f:id:ababababa0222:20210312000009j:plain

事象

  • APIリクエストには retrofit を使用している -ローカル環境に対してつないでいる、Andoridのエミュレーター
  • リクエスト時に、SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 37922 みたいなエラーになる
  • ローカルをcurlするとレスポンスが問題なく返ってくる

pub.dev

I/flutter (17987): ╔╣ Request ║ GET 
I/flutter (17987): ║  http://localhost:3000/api/v1/rooms/1
I/flutter (17987): ╚══════════════════════════════════════════════════════════════════════════════════════════
I/flutter (17987): 
I/flutter (17987): ╔╣ DioError ║ DioErrorType.DEFAULT
I/flutter (17987): ║  SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 37922
I/flutter (17987): ╚══════════════════════════════════════════════════════════════════════════════════════════

調査

stackoverflow.com

you're running the server locally and using the Android emulator, then your server endpoint should be 10.0.2.2:8000 instead of localhost:8000 as AVD uses 10.0.2.2 as an alias to your host loopback interface (i.e) localhost

対応

# 変更前
@RestApi(baseUrl: "http://localhost:3000/api/v1/")
# 変更後
@RestApi(baseUrl: "http://10.0.2.2:3000/api/v1/")

にしたら行けた。謎。 今度原因を調べる。

日報を作るスクリプトを作った

f:id:ababababa0222:20210312000123j:plain

日報メモを書いているのだが、新規ファイルを作成するのがだるかったのでメモ

やってくれること

  • date.mdのファイルを作ってくれる
  • テンプレートを入れておいてくれる

以下スクリプト

require 'date'
require 'fileutils'

date = Date.today.to_s
file_name = "#{date}.md"
content = "## #{file_name}\n## memo"

File.open(file_name, mode = "w"){|f|
  f.write(content)
}
$ ruby template.rb

こんな感じで日時のファイルを作成してくれる。

f:id:ababababa0222:20210315113237p:plain

メモ

毎日やることは少しでも自動化していきたい。