エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

2020/06/29週 気づきと振り返り

業務こなしての問題・気づき

なし

というか、業務をしてない。
新しい現場に行ったのだが、環境設定途中で、アカウント登録されてないためにシンクラPCが使えなくなり、顧客のアカウント登録待ち。

なので、ほぼ休暇状態でしたわ。。。。

リモートワークの弊害だろうか?
諸連絡がどこかで止まるのは、マジで勘弁ですわ。。。

個人開発していての問題・気づき

何もやることがないが、何もしないのは気が引けたので、個人開発をやった。
以前に手をつけたのが放置状態だったので、開発をちょっとした。

electron でアプリ開発しているのだが、デザイン面で止まってしまう。。。
HTML + CSSで対応できるだろうと思っていたが、やりたいデザインがなかなか実現できない。

以前もそこで躓いていた気がする。。。

他のことを進めようと思っても、デザインが完成しないと試行錯誤できないレベルになったから、デザインをすすめるしかないんだよね。。。

HTML+CSSの勉強をするか、VueかReact使う方向に舵を切らないといけない気がする。

2020/06/22週 気づきと振り返り

業務こなしての問題・気づき

python

celerywindows上で起動

windowsceleryは、マルチスレッドに対応していないため、linux/macと同じコマンドで起動することはできない。

celery -A {プロジェクト名} worker --pool=solo みたいな感じで実行する必要がある。
実行プールを単一で動かすらしい。

ワーカースレッドが立ち上がるわけではないらしいので、JavaScriptのPromiseみたいな感じでタスク処理が実行されているのかも知れない。

Celery Execution Pools: What is it all about? | distributedpython

バージョンアップで、windows上では動かなくなる可能性もありそうとの情報をどこかで見かけた。
pythonは、windows対応を捨ててるのかな?って感じた。
winsowsを持っている人は多いので、対応をちゃんとすれば、開発者は増えそうな気がする。

そういえば、python使いの人は、macで開発していることが多いなって、振り返って感じた。

celery + djangoの実装

celeryの実装とdjangoの実装が混じって、どっちのコードなのか分からなくなることがある。
開発した人以外が見ると、意味不明状態。俺がそうだった。

考えたが、フォルダ構成でなんとかするぐらいしか思いつかなかった。。。

JavaScript

Maximum cell stack size execeded

メッセージの内容は、コールスタックが満杯になった。

原因が分かりづらい。。。
メッセージ発生する前に行っていた操作内容にあたりをつけて調査するしか無い。

自分が見つけたのは、ボタンクリックイベント内で読んでいるメソッドの中で、さらにクリックイベントを起こしていたので、無限に呼び出しが連鎖していた。

centos

CentOS7でdjango4.4を動かす場合、sqlite3.8.3以上が必要になる。 しかし、centos7の最新のsqlite3は、sqlite3.8.3未満なので、sqliteのソースを落としてビルドするしかない。

Django2.2で開発サーバー起動時にSQLite3のエラーが出た場合の対応 - Qiita

Django入門 (チュートリアル) - とほほのWWW入門

# yum install -y wget gcc make
# wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz
# tar zxvf ./sqlite-autoconf-3290000.tar.gz
# cd ./sqlite-autoconf-3290000
# ./configure --prefix=/usr/local
# make
# make install
# cd ..
# rm -rf ./sqlite-autoconf-3290000 ./sqlite-autoconf-3290000.tar.gz
# mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
# ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
# echo 'export LD_LIBRARY_PATH="/usr/local/lib"' >> ~/.bashrc
# source ~/.bashrc

考えたこと

サーバー構成

1台のサーバーに複数アプリを入れるのは、辞めた方がいい気がする。
必要としているライブラリが一緒ならいいが、そういったケースはない気がする。。。

GCEでサーバー作るなら、複数インスタンスを作って対応したほうがいい。
※金の問題がないのなら。

ポエム

なんか、俺は無能なのではなかろうか?と、唐突もなく不安な感情に襲われることがある。
どう対応したらいいのだ?
歳を取るにつれて、こういった感情が強くなってきている気がする。

解消するには、何かに打ち込むしかないのだろうか?
それとも、何かを作れば満足するのだろうか?
何もしないままだと、この問題は解消されないのは分かっているが、行動に移せていない。

いろんな誘惑が、この不安になる感情を一時的に中和してしまっている気がする。

どこかで、決意をしっかりできる儀式みたいなものが必要なのかも知れない。

2020/06/15週 気づきと振り返り

業務こなしての問題・気づき

Python

Pandasを業務で利用してみて感じたこと

中間データを保持させるのが優秀だと思った。
いろんなデータ形式に入力・出力できるのがとても便利だった。

特にDBへの格納。
django使っていて、mysqlに格納してたけど、sqliteに格納するのが無難そうってのが実装していて気づいた場合、すぐに対応できるのが良かった。

外部APIとの連携も容易だった。
動作確認時は、CSVで出して出力内容見てたり、本番運用はDBに吐くなど、使用用途が幅広いから、グルーコードとして書くことが多かった印象。

pythonのメリットは、中間データの扱いが容易というのが、使っていて感じた。
javascriptとは違った切り口のグルーコードが書きやすいと思った。

gunicornのデーモンモードが動作しているか分からないときの調査方法

デーモンモードでの起動をやめて、普通に起動させる。
ログ吐かせて確認するってのもあるが、その場合、デバッグログにすると思われるので、それなら普通起動で直接コンソールログ見たほうが早いかな?って思った。

djangoのstaticの設定が面倒くさい。。。

いろいろ調べたが、どこにパスが通っているのか、全然分からなかった。

時間だけ過ぎていったので、面倒くさいからhtmlに全部まとめた。
web系は、設定の面倒くささが毎回ネックになる。
これで、ハゲ化進行度が10%くらい進んだ気がする。

雑記

在宅勤務終了

とうとう終わってしまった。。。

通勤が非常に面倒くさい。
通勤時間、何もできないのが痛い。
通勤時間が自由に使えるのなら、ポケモンのランクマッチが4回位できる。

マスクって、いつ外すんだ?
みんなしてるけど、職場に着いたら俺は外す。
マスクが、臭くてしょうがないんだよね。
特に雨の日は、湿る+薬品っぽい匂いが強烈になって、かなりシンドい。

2020/06/08週 気づきと振り返り

業務こなしての問題・気づき

python

django

modelにロジックを入れてはならない

Modelにロジックを入れている実装を見たのだが、ダメなのではなかろうかと思った。

理由としては、下記があると思う。

  1. Modelの目的が異なっており、意図しないバグが発生しやすそう。
  2. 利用目的外の実装になるので、可読性が悪そう。
  3. バグがあった場合、呼び出しタイミングがどのタイミングだったのか分かりづらく、調査・解析が行いづらい

printデバック

printデバックって、本当に悪だろうか?と最近思うようになってきた。
手軽で分かりやすいと思うんだけど、ダメかな?

いろんな言語を使うようになると、どの言語でも同じようにできるprintデバックが便利だなって思うようになってきた。
1つの言語しかやらないのであれば、ログ周りの環境整備の知識を持てば効率化しそうだけど、短期間でいろんな言語使ったり、機能実装優先されてたりすると、ログ出力は難しい。

面談

アピール

技術面の話ばっかりしてしまった。
本来、自分が一番大事にしている可読性についてアピールしておけばよかった。

常日頃、「実装は忘れてもいいようにしろ」を家訓にしているのを、どう実践しているか話せば良かった。
あと、可読性を上げるためにしている取り組みとか。

相手が何を聞きたいのか、言わないけど聞きたいことを汲み取るってことも必要なのかもと感じた。

在宅勤務

予定が見えないのつらたん。。。

在宅勤務しているのだが、相手の勤務状況が見えないのは、かなり辛い。。。
いると思って質問投げたけど、応答がその日中なくて、暫定対応で作業を進めてた。
応答が翌日の午後にあって、暫定対応した内容と違っていたので、結構工数が無駄になった。。。
余裕がある状態で作業していたので、とくに遅れとかはなかったけど、精神的に痛い。。。
質問した日は、終日休みだったらしい。

相手の勤怠状況が見えないのは、在宅勤務してると、質疑応答が途絶えるのが無駄だと思った。

在宅勤務やるのであれば、勤務状況が一覧化して見えるようなものが欲しいと思った。
いないならいないで、やり方はいくらでもあるので、だから集まって作業の流れにはなって欲しくないなと思う。

雑記

マスク

いつ外してもいいのだ?
外すタイミングがよく分からないのだが、もう外して出歩いてもいいよね?? 近くのスーパー行くと、かなりの人がマスクしてるから、外すと自粛警察に叩かれそうで怖い。
ここは、勇気を持って俺が先陣を切るべきかな?

もう、ジム行ったりしてもいいのかもよく分からない。
とりあえず、銭湯に行きたいとは思ってる。

2020/05/25週 気づきと振り返り

業務こなしての問題・気づき

bootstrap

bootstrapを使うようになったのだが、流行る理由が分かった気がする。
素でHTML書くより単純なのがいい。
問題は、学習コストが必要なことと、誰かが見たときに何しているのか分かりづらいこと。

cssである程度まとめて定義しておいて、レイアウトとデザインを分けておかないとダメなのではないだろうかと感じた。

雑記

在宅勤務

特に終わりの指示がないので、こっちからいつ終わるのか聞かないように注意してる。
通勤がダルいから、できれば長引いて欲しい。

WindowsのVSCodeでGitbashを使った際に.gitbash_profileが読み込まれない

環境

VScodeのバージョン情報より転記

バージョン: 1.43.2 (system setup)
コミット: 0ba0ca52957102ca3527cf479571617f0de6ed50
日付: 2020-03-24T07:38:38.248Z
Electron: 7.1.11
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Windows_NT x64 10.0.18362

問題

.gitbash_profileにalias ll="ls -la"を登録しているはずなのだが、vscodeのターミナル(gitbash)でllを実行しても、command not foundになる。。。

原因

gitbashがログインシェルとして実行されていないため、.gitbash_profileが読み込まれていないらしい。

対応

settings.jsonに、下記の内容を追加する。
この指定の意味は、terminal.integrated.shell.windows に指定した実行ファイルの引数に何を指定するのかの設定だと思う。(挙動や設定名から推察)

"terminal.integrated.shellArgs.windows": ["-l"]

次回以降、ターミナル起動時に.bash_profileが読み込まれるようになる。

感想

llが使えなくて、意味がわからんかった。。。
どうでもいいことに悩んでしまった気がする。

何気なく.bash_profileを使っていたが、ログインシェルという仕組みで読み込まれていたのが初めて分かった。
あんまり深く考えたことはなかったので、勉強になった。

参考サイト

Windows の VSCode で GitBash ターミナルを開いた時に .bash_profile が読み込まれない - Corredor

ログインシェルとインタラクティブシェルと~/.bashrc達の関係 - Qiita

【Python】virtualenvの使い方まとめ

きっかけ

仕事でpython使うようになって、環境作る際にvirtualenv使っているのだが、よく使い方を忘れるのでまとめる。

virtualenvとは?

python開発のための仮想環境作成ツール

なぜvirtualenvを使うのか?

  • 開発機の環境を汚さずに済む
  • ライブラリの依存関係に悩まなくていい
  • 環境を再構築しやすい

前提

python, pipがインストール済みであること。

自分の環境

OS

>ver
Microsoft Windows [Version 10.0.18362.836]

python

>python -V
Python 3.8.1

pip

pip -V
pip 19.3.1 from c:\users\<ユーザ名>\appdata\local\programs\python\python38-32\lib\site-packages\pip (python 3.8)

インストール

pip install virtualenv

インストールできたかは、下記のバージョン表示で確認できる。

>virtualenv --version
virtualenv 20.0.21 from c:\users\<ユーザ名>\appdata\local\programs\python\python38-32\lib\site-packages\virtualenv\__init__.py

表示ができたらインストール成功。

使い方

インストールしただけだと、環境は作られていない。
基本的な使い方は、下記の通り。

  1. 仮想環境の作成
  2. 環境の有効化

環境の作成

$ virtualenv <環境名>

上記コマンドを叩くと、カレントディレクトリに、環境名のフォルダができる。

下記の例だと、sampleフォルダができる。

$ virtualenv sample

ディレクトリ構造は、下記。

sample
├─Lib
├─Scripts
├─.gitignore
└─pyenv.cfg

環境構築時、使用するpythonのバージョン指定もできる。

$ virtualenv -p python3.6 sample

この場合は、指定バージョンがインストール済みである必要がある。

仮想環境の有効化

仮想環境を使うには、有効化をする必要がある。

windowsdos場合だと、<環境名>\Script\activateで仮想環境が有効化される。
実行すると、下記の例のようにコマンドラインの先頭に(<環境名>)が付く。

E:\dev\python>sample\Scripts\activate
(sample) E:\dev\python>

windowsのgitbash等でやる場合は、source <環境名>\Script\activateで実行可

mac/linuxだとフォルダ構成が異なっているはず。
binフォルダにactivate.shがあるので、source <環境名>/bin/activateで実行可能

仮想環境から出る

$deactivate

パスが通っているはずなので、上記コマンドで抜け出せるはず。

参考サイト

virtualenv 基本的なコマンド使い方メモ - Qiita

Virtualenv の使い方 - Python 入門