SakuraWi - BLog

WEBエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

【読書】自分の意見で生きていこう

読んだ経緯

ちきりんさんのtwitterをいつもみていたから

感想

SNSなどにおける、「意見」と「反応」の違いについてしっかり書かれていて、現代で求められている「意見を言う人」を学べる一冊。

どうして意見を言うことが大事なのかのバックグラウンドも記載してあり、わかりやすい。

意見:ポジションが明確にできる発言のこと。(賛成か反対か)

反応:どちらのポジションとも取れない発言のこと。

自分がAだと思う。なぜなら〜だからだ。

のような当たり前の構文をもっと日頃から意識をしたりすれば、反応ばかりになってしまうことがないようになると感じた。

SNSに必要な力

意見を述べること、発信することというのは、自分のポジションを明確にすることである、と思った。

その明確さ、言い切り、その人の人格も含めて支持されればおのずとみんながみたくなるような発信力がつき、フォロワーも増えるのだなと思う。

これはSNSをやる上で非常に重要な土台だなと思った。

この内容が記載されているのは非常に勉強になる。

1-3章がメイン

ただ、後半はあまりなくてもよいかなと自分は感じた。

(もしかすると自分のモチベーションによるところがあるかも)

旅は意見を鍛える練習になる

個人的な「旅」に絡めて言うと

一人旅は意見を発信するのに鍛えられると思う。

というのも、自分の意見がないと旅は始まらないし、選択の連続をたった一人に迫られるから。

「何を食べる」「どこに泊まる」「何をする」

全てが自分の意見で構成される。

そういった練習をしたいなら、携帯を置いて旅にでれば良い。

何が良かったかは自分一人で振り返れば、それが自分の"意見"になる。

フリーランスや会社員

会社員でい続けるか、やめるか、転職するか。

そういったところでも、選択をして決断をしている人は自分なりの意見を持っている。

わかりやすい指標でもあるなと感じる

Amazon

購入はこちらから。

https://amzn.to/3Mx1Jcr

確定申告知識などまとめ

流れ

  1. 収入をまとめる
    • A銀行, B銀行など
  2. 経費をまとめる
    • クレジットカード
  3. 控除できる金額をまとめる

freeeのプラン

スタータープランにする(1200円ほど)

マイナンバーカード

暗証番号などを用意しておくこと

(drop box paperなどにまとめておくと楽かも)

医療控除

医療経費 - 10万円 or 医療経費 - 200万以下の所得の5%を超過した分

freeeとゆうちょ

ゆうちょのAPIからの取得は、記帳が行われているもののみ。

去年の記事

https://sakurawi.hateblo.jp/entry/e-tax

源泉徴収とは

給与、報酬などの特定の所得の支払者が、その所得の支払をする際に、所定の方法により所得税額を計算し、支払金額からその所得税額を差し引いて国に納付する制度を、「源泉徴収制度」といいます。

自分の理解としては事前に10.21%?を引いておく制度って認識。

国目線では毎月で税収を得られるから大きいメリットがある?

レンジ的に10%か20%の人が多いから?

所得税について

https://www.nta.go.jp/taxes/shiraberu/taxanswer/shotoku/2260.htm

【読書】大きく考えることの魔術

背景

週に4時間働く

で紹介されていたので

感想

さっと3、4時間ほどでよめて、マインド本としてはよい。

7つの習慣や、影響力の武器に近しい感じ。

印象に残ったところ

「コンディションが100%整うことはありえない、だから行動する」

これは自分に響いた。

結局やれると思うこと

思い込みがかなり大事、というようなメッセージにまとめられる。

ただこれだと浅すぎるので、もう少し分解した内容がかいてある

抜粋

行動は恐怖を治療する

もたもた、ぐずぐずしていることは、恐怖を助長する

自信のある考えを持つためには自信のある行動をせよ

精神の食糧は、あなたの環境である

毎日数回は自分自身に元気づけの言葉をかけなさい

どう考えているのかは行動でわかる

自分一人の時間をとること

沈思黙考

どのような分野であれ、成功した人たちは自分自身と相談する時間をちゃんととっている

購入はこちら

https://amzn.to/3HBDt64

Rails6 + heroku + Ruby 2.7.5(3.0.3)

スペック

herokuで動かしたい

基本はこちら

https://qiita.com/anago1030/items/250c44d3754f16e54937

master.keyの設定

https://qiita.com/koki_73/items/df7b4b001943e3ed69e7

ruby のキーワード引数のエラー

https://blog.ezic.info/41843.html

参考

https://qiita.com/nagami0102/items/fa237f21de07ccc34324

https://qiita.com/anago1030/items/250c44d3754f16e54937

AWS lambda を使ってRuntime Ruby2.7で実行する方法【ChromeDriver + Selenium + Docker】

経緯

Ruby2.5のサポート終了に伴い、AWS LambdaのランタイムRuby2.5の関数をRuby2.7アップデートする。

技術スタック

  • Ruby2.7
  • ChromeDriver(2.37)
  • Chromium
    • chromium 64.0.3282.167 (stable channel) for amazonlinux:2017.03
  • Selenium(3.142.4)
  • Docker

前提知識として、これらのは動くverを全て一致していないとうまく動作しない。

作業ディレクトリ図

f:id:Saku-Saku:20220103081055p:plain

Dockerfile

最終的にコレで動かしている

FROM public.ecr.aws/lambda/ruby:2.7

# Install dependencies needed to run MySQL & Chrome

RUN yum -y install libX11
RUN yum -y install dejavu-sans-fonts
RUN yum -y install procps
RUN yum -y install mysql-devel
RUN yum -y install tree
RUN mkdir /var/task/lib
RUN cp /usr/lib64/mysql/libmysqlclient.so.18 /var/task/lib
RUN gem install bundler
RUN yum -y install wget
RUN yum -y groupinstall 'Development Tools'

# Ruby Gems

ADD Gemfile ${LAMBDA_TASK_ROOT}/
ADD Gemfile.lock ${LAMBDA_TASK_ROOT}/
RUN bundle config set path 'vendor/bundle' && \
    bundle install

# 日本語フォント
ENV LANGUAGE ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
RUN yum -y install fontconfig
run yum -y install ipa-gothic-fonts && \
    fc-cache -fv \

# Install chromedriver & chromium

RUN mkdir ${LAMBDA_TASK_ROOT}/bin/

# Chromium
RUN wget https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-37/stable-headless-chromium-amazonlinux-2017-03.zip
RUN unzip stable-headless-chromium-amazonlinux-2017-03.zip -d ${LAMBDA_TASK_ROOT}/bin/
RUN rm stable-headless-chromium-amazonlinux-2017-03.zip

# Chromedriver

RUN wget https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip
RUN unzip chromedriver_linux64.zip -d ${LAMBDA_TASK_ROOT}/bin/
RUN rm chromedriver_linux64.zip

# Copy function code

COPY lambda_function.rb ${LAMBDA_TASK_ROOT}

WORKDIR ${LAMBDA_TASK_ROOT}

RUN tree
RUN ls ${LAMBDA_TASK_ROOT}/bin
# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "lambda_function.lambda_handler" ]

下記のスタックオーバーフローに、動かせたよと言っている人がいるDockerfileを真似たもの。

変更点

  1. 実行ファイル名をlambda_functionに合わせた。
  2. 日本語のフォントのインストール、適用をさせた。これは、seleniumでのfind_elementする時に日本語が必要であったため

ref: https://stackoverflow.com/questions/67841994/which-chromedriver-headless-chrome-versions-exist-that-are-compatible-with-rub

dockerの実行方法

imageのbuild

docker build -t test_name:latest .

imageの実行

docker run -i  -v "$PWD" --shm-size=256m -p 9000:8080 -e ID='YYY' -e PASS='YYY'  delete-item

別ターミナルから、下記curlでdockerのrubyのファイルが実行される( CMD [ "lambda_function.lambda_handler" ] )に一致が必要。

 curl http://localhost:9000/2015-03-31/functions/function/invocations -d '{}'

lambdaのレイヤーへのアップロード (gem)

bundle install --path vendor/bundle

で vendor/bundle 配下にインストール

もしミスったら、一度vendorを削除して入れ直すとよい

vendor/bundle/ruby/2.7.0

となっているのを

ruby/gems/2.7.0 にして、zipにして レイヤーにアップする

lambdaのレイヤーへのアップロード (chromedriver & chromium)

S3にアップしてからレイヤーにアップロード

それぞれの実行ファイルは、Dockerfileに記載しているverを入れる

lambdaの実行設定

  • レイヤーの追加
  • 関数の作成
    • 環境変数の設定
      • pathのためのenviroment production
    • レイヤーの設定
    • イベントの設定
    • メモリ、実行タイムアウト時間の設定

docker内で動いたrubyのコードのスクショの見方

curlなどでコードが実行をする。

save_screenshot('filename.png') などでseleniumはスクショが撮れる。

ので、実行をして、

dockerにbashなどで入って、 ホストのディレクトリにcpコマンドをすれば良い。

docker exec -i -t コンテナid bash
docker cp ec8eca1b6473:/var/task/File02.png .

Lambdaの実行環境

Amanzon Linux 2 での実行となる。

OSは CentOS

fontの設定をする

yum install fontconfig

https://command-not-found.com/fc-cache

以下も参考にした

Seleniumの書き方、コツ

waitさせたい

https://www.selenium.dev/ja/documentation/webdriver/waits/

sleep()

非同期での読みこみを待ちたい時は

sleep(15)

などが有効。

5じゃなくて15で安定して動作したりもした。

docker unable to connect to bin/chromedriver 127.0.0.1:9515

docker unable to connect to bin/chromedriver 127.0.0.1:9515

上記エラーは、chromedriverとchromiumがあっていない時の主なエラー

当初戦っていたエラー

docker run --rm -v "$PWD":/var/task --mount type=tmpfs,target=/dev/shm,readonly=true lambci/lambda:ruby2.7 lambda_function.lambda_handler

上記の実行で、動かない。

chromedriverって起動がいる?

本体のverとruby2.7があってないと動かないのかも。

unable to connect to bin/chromedriver 127.0.0.1:9515

その他参考になるページ

dockerのコマンドまとめ

dockerについて、ちょこちょこ動かしている時に使ったコマンドのまとめ

を消したい

docker system prune

環境変数を渡して実行したい

docker run -e ID='text'

https://qiita.com/KEINOS/items/518610bc2fdf5999acf2

コンテナからホストでファイルをコピーする

sudo docker cp <コンテナID>:/var/task/testfile.png .

https://www.nullpo.io/2020/04/18/docker-selenium/#%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%81%AE%E5%95%8F%E9%A1%8C

起動中のコンテナをみる

docker ps

-a : 全てのコンテナ表示

dockerのコンテナに入る

docker exec -i -t コンテナid bash

Docker buildでエラーが出る時の対処1

failed to solve with frontend dockerfile.v0:

と出ていて、 docker build . が受け付けられない

解決策

ファイル名が間違っていた

Dockerfile にする。

DockerFile とか DokerFileになっていないか注意