エンターテイメント!!

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

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

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

SSH接続で「Bad owner or permissions」エラー

GCEの環境でgithubを使おうと思ったが、誰かがsshの設定の鍵をすでに作っているようだったので、別途、鍵を作成した。
その際にconfigを作って使い分けようと思い、作って接続テストしたら、「Bad owner or permissions」エラー

サイト調べたら、権限がないために起こっているような記事ばかりだったので、chmod 666を実行して権限付与すれば問題ないだろうと思い、権限付与してテストしたら、変わらず「Bad owner or permissions」エラー。。。

どうやら、権限が甘いと接続エラーにするらしい。
ちゃんと複数のサイトで書かれていたchmod 600で権限付与したら、接続成功した。。。

権限の付与に意味がある的な言及があれば迷わなかったのに。。。
あまい権限の付与でエラーになることもあるってのは、意外だった。

SSH「Bad owner or permissions」エラーの解決 | 積水成淵日記

python

django

migrateでno such table

modelに新規追加して、viewに利用する処理を追記後、python manage.py migrateしたら、no such tableになった。

modelの定義に問題はなく、いろいろ調べたが解消しなくて悩んだ。。。

原因は、migrateする前に実装に組み込んでしまったから。
処理を削除してmigrateしたら、no such tableは発生しなかった。

migrateって、どう動いているのか分からんな。。。
migrateは、modelを見てるってのは想像できるが、利用箇所が原因になるとは思わなかった。。。

GCEからGCSへの接続ができない

GCEのdjangoのアプリからmysqldbを使って、GCSのmysqlにアクセスしようとしたが、接続ができなくて悩んだ。。。

メッセージ上は、mysqlが見つからないというエラーで、設定を何度も見直したが、間違っている箇所はなさそうだった。
結局、原因は、CORSだったらしい。
「らしい」というのは、対処療法でやったら動いたので、本当にそれが問題だったのか自信はない。

django-cors-headersというのを入れたら、ちゃんとmysqlへの接続ができた。
プロキシ使ってたときは、接続できたので、おそらくCORSエラーだったのだろうと思う。
要望に、「cloud-proxy使わずにできないか?」と言われていたので、プロキシを使わないで接続できないか試行錯誤していた。
CORSが早く頭に浮かんでいたら、対応はもっと早かったかもしれない。

在宅勤務

昼寝

だいぶ暖かくなってきた。
昼寝をするには丁度いいい温度。

昼過ぎが、眠気との戦いだった。
もう、効率が上がらないから、あえて30分くらい仮眠するようにしてた。

夏服

最近気づいたが、着れる夏服がほとんどない。。。
近くの店は休業中なのが痛い。。。
下手したら、夏は厚手の長袖になってしまう。。。

早く緊急事態宣言が解除されるように最善を尽くして祈るしかなさそう。。。

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

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

VCSがないことで起きた問題

今回のプロジェクトが終わったら、愚痴込みでVCSを導入すべきみたいな記事を書いてやる。

バージョニング問題

バージョン管理が、フォルダ名変える環境。。。
どこでどの修正が入ったのか分からず、最後に動作するバージョンがどれだったのか不明である点。

これが意外と厄介。
システムの中枢部分の実装をしている人が一番苦労する。
改修で、実はFW部分に影響あるとか、別の実装箇所に影響あるんだけど、個々の実装をしている人は、そこまで気が回らない。テストするのを忘れるのが常。
それであとで発覚して、中枢部分の実装した人に調査依頼が来る。
そして、改修された箇所のソースレビューが始まり、頭がハゲるというルートに突入する。
こういう問題は、緊急度が高く、相手の改修内容と意図、どうあるべきかを考える必要があるため、結構負担。
緊急度が高いというのが特に曲者。焦りが加わるので、本来のパフォーマンスが若干落ちる。

少なくとも、フォルダでバージョン管理する場合、テストコードは必須な気がする。

長過ぎるエラーメッセージ

何が原因なのか分からない。
原因が分かるメッセージが隠れる場合がある。

クラウド環境での環境構築

GCEのインスタンスで、何か途中でやっていた環境に、まったく関係ない別の環境を入れるのは辞めたほうがいい。

apacheにプロキシの設定をした環境を作ったのだが、プロジェクトがご破算になり、別プロジェクトに環境を流用した。
新規プロジェクトでは、apache不要だったが、開発を進めていく後に必要となり、プロキシの設定をしたのを忘れて利用しようとして、意図しない挙動を繰り返して悩んでた。。。

プロキシの設定をやっていたのを思い出したら、速攻で解決した。。。

新規にプロジェクトを始めるのなら、新規のインスタンスでまっさらな状態から始めたほうがいい。

環境の相乗りは、悲劇しか産まない。

雑記

ほとんど稼働日がないので、あんまり思うところはない。

休日が多いと、日付の感覚がおかしくなる。
稼働日なのに、休日と同じ振る舞いをしてしまいそうになった。。。

GW中は、マリカー8DXとFF7R、ポケモンやってた。
ほぼ家から出ない。出たのは、食料調達くらい。
ポケモンは、シングル・ダブルの両方でマスタボール級に行けた。
マリカーは、GW終盤で届いたが、中毒性が高い。
無言でずっとやってしまう。

本当ならジャンプコミックスの発売があるから、漫画読もうと思ったけど、新刊の発売がGW後というのを知って、かなり落胆した。。。
鬼滅の刃を読みたかったが、こんな状況だから仕方ないよね。。。

あとは、ロジックパズルとかやってた。
学生時代によくやっていたが、久々にやると、結構時間がかかる。
4045でもGW中の暇つぶしにはなったかな?
終盤に180
70に挑戦したが、終わらなかった。。。

2020/04/27週 気づきと振り返り

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

django

カスタムユーザの修正反映時にInconsistentMigrationHistoryが発生する

途中から変更した場合、差分が生じて、migrate対象にならない場合がある。
環境構築のタイミング等も関係してくる。

Python - djangoで途中からカスタムユーザーに変更するとエラーが出る|teratail

一番楽なやり方は、テーブル全削除して再構築が簡単。

sqlite->mysqlへの移行で、誰かがmysql上で先に環境構築してしまったがために、自分が開発したカスタムユーザ周りの箇所が動かなかったので、お鉢が俺に巡ってきて、調査してた。
俺のせいじゃなくない?って思いながらも、ちゃんと対応してあげる僕は、とても偉い子だと思います。

在宅勤務

やり始めて3週間経過。
やってて思ったけど、目がものすごい疲れる。
遠い場所を見ないから、目の周辺の筋肉が凝ってるんだろうな。。。
現場にいたころは、フロアが広かったから、遠くにいる女子社員を眺めていたが、在宅だとそれもできないね。

目が疲れるので、目薬をよく使った。
在宅勤務で、目薬を目にさすスキルは、抜群に上がったと思う。
以前は、何回か失敗してやっと目に入る感じだったけど、今は、だいたい1発で入るようになった。

緊急事態宣言は、いつまで出るのだろうか?
早く終息してほしいと思う反面、在宅勤務をこのまま継続したい気持ちがある。

あと、祝日っていうのを忘れて、仕事してしまいそうになる。
GWは、いつもののりで在宅勤務しないように気をつけないとな。

雑記

自宅に体重計がないけど、太ってきている実感が確実にある。
腹回りが特に気になる。
運動不足がヤバいな。。。

2020/04/20週 気づきと振り返り

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

GCE(CentOS8)にpythonをインストール

windowsでは、exeでインストールしていたが、centosでのインストールで手間取った。
windowsでは、python3.8使っていたが、centosでのデフォルトが v3.6で焦った。
3.8のインストールをいろいろ調べたが、ソースからコンパイルし直す必要があり、面倒だったので辞めた。
調べた限り、v3.6でも動くようだったので、デフォルトのv3.6をインストールした。

dnf -y install python36

上記インストールだと、pythonの実行にはpython3でやらないといけない。
まどろっこしいので、pythonで実行できるようにするには、下記を行う。

alternatives --config python

CentOs8 pythonインストール | mebee

django

URL管理

app毎にurls.pyを作って、プロジェクトのurls.pyにincludeするのが無難そう。
プロジェクトのurls.pyにまとめると、appが増えたときに重複やドメイン整理が面倒くさくなりそう。

DjangoでDisallowedHost

ローカル環境(windows)では発生しなかったが、GCEに移行して動かしたときにDisallowedHostが発生した。 原因はよく分からないが、対処法は、分かった。 settings.pyのDEBUGをFalseにするか、ALLOWED_HOSTSにサーバのIPアドレスを追加すると解消する。

許容するのは狭い範囲が無難だろうと思い、自分はALLOWED_HOSTSにIP追加で対応。

DjangoでDisallowedHostを回避 | ハックノート

Bootstrapを使ってみての感想

classの指定で、ある程度、見栄えのいいデザインに変更できるのは、簡単で扱いやすかった。
部分部分の手入れは簡単だったが、全体のデザインがなかなかうまくできない。
これは、俺のスキルのせいだろうな。。。
webデザイナーのスキルがあれば、electronとかでいい感じの画面が作れると思うが、初期開発でデザインスキルのなさに絶望して、開発がすすまいことがままある。
画面を凝ろうとして、システムの開発を厳かにしちゃうパターンが多い。

その他

FWで使いそうな命名は避ける

djangoのstartappでアプリを追加する際、appという名前で作成したら、AppConfigというクラスが自動生成されるが、djangoで用意されているAppConfigと競合していたのに気づかず、起動したときに意味不明なエラーが発生してて、かなり悩んだ。。。

appとか、srcとか、libとかのFWとかでよく使いそうな命名は、なるべく辞めたほうがいいと感じた。

雑記

在宅勤務

8時間なんて働かない。
最初は、罪悪感はあったけど、いまはないな。
ちゃんと成果物は作ってる。
作業に集中する時間、全力で休憩する時間を決めてやると、案外、作業は進む。

問題は、ダラダラやることが一番まずい。
休憩するのもダラダラすると、ズルズル時間が過ぎて、「何の成果も得られませんでしたぁぁ!!」状態になる。
時間を決めて、きっちり守ることが大事。

時間にルーズな人は、在宅勤務に向かないかもね。
たぶん、サボって何も成果でないと思う。
他人の目は、自分を律するのに効果絶大だなってのが、最近感じる。

作業中のBGM

最初の頃は、アニソン流してたけど、飽きてきた。。。
最近は、休憩時間にdアニメストアこち亀を流してる。
久々に見ると、ギャグが秀逸だなって感じる。
本田の初登場とか、結構面白かった。
変身前後のギャップがツボった。
変身シーンも結構好き。漫画だと変身シーンは分からないからな。

運動不足対策

dアニメストアで「ダンベル何キロ持てる?」を見て、在宅筋トレを週末にちょっとやった。
放送時は見てるだけだったけど、実際やると、思ったよりキツいってのが分かった。。。
本当に運動してないと、翌日に軽い筋肉痛になる。

頑張れば街雄みたいになれるかな?

ポケモン近況

やっとダブルとシングルでマスタボール級に到達。
最近のお気に入りは、ウォッシュロトム
シングルでの選出率は、トゲキッスヒヒダルマと同じくらい。
ボルトチェンジを技構成に入れるか入れないかで、最近悩んです。
ギャラドスに有利対面だろうと思って出すと、パワーウィップやダイソウゲンでやられる。。。

ダブルは、リザードンラプラスの2大エースを手持ちに入れて、選出はどっちかにするパターンが多い。
問題は、バンドリ構成への対応が面倒なんだよね。。。
ヤミラミをサポートで使っているのだが、バンギラスがあくタイプで、ダイマックスする可能性が高いから、非常にやっかい。

ピッピやマホイップ、エルフーンあたりを利用できないか検討中。

エルフーンって、害悪すぎない?
シングルでもダブルでも、使われると非常に嫌なのだが。。。
シングルだとコットン身代わりが突破できなくて、泣きながら降参することがある。
ダブルだと、追い風打たれたあとに倒してしまって、追い風を最大限使われるのが嫌。
ダブルは、ヤミラミが上手く使えないと高確率で負ける。
振り返えると、ヤミラミの使い方ミスったってのが、よくある。

バトルの記録を見返したいのだが、どうやって記録を取ればよいのだろうか?

2020/04/13週 気づきと振り返り

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

他人のソースコードを読んで

公式のドキュメントとかじゃなく、引き継ぎで渡されたコードを読んでいた。
なんというか、抽象化レベルがチグハグだな~と感じた。
メソッド名から想像する結果と内部の実装が違うと、結構、脳に負担がくるものだと思った。

せっかく上手く抽象化したものが上手く使えてない感じがした。

実際のコードは書けないので、例を上げると、↓みたいな感じ。

const command = getXxx()
const result = execute(command)

個人的には、getXxx()がresultを返して欲しい感じ。
ビジネスロジックであってるのかな?そこに詳細な実装が交じると、やりたいことが、分かりづらくなる気がする。

python

最近、仕事で触るようになった。

三項演算子

なんというか、構文がものすごく気持ち悪いのだが。。。

今までの言語だと、条件 true : false みたいな構文が多かった。
pythonだと、true 条件 falseみたいな感じ。
条件がなぜ真ん中に置いてあるのか、何か意図があるのだろうか?
それが分からないと、違和感は長いこと残りそうな気がする。。。

あれかな?
追加修正とかバグ修正を楽にするために、こういう構文になったとか?
ケツに追記するだけだから、差分が見えやすいとか?
それでも、違和感はあるな。。。

django

model.ForeignKey

引数にon_deleteが必須になったらしい。
情報が古い記事を見ていたらしく、python manage.py makemigrationsとか打ってエラーが出てる理由の理解に時間がかかった。。。
python後方互換を切ってる印象が、また強まってしまったな。。。

記事とかで紹介するのはいいのだが、バージョン指定するようにしてくれませんかね?
バージョン指定がないと、将来読む人がかなり苦労する。

APIを提供する側に物申す

APIのレスポンス定義をしっかり書いてくれませんかね?
API利用する側は、そこの認識が合わないと、try&errorでやるしかないのが、工数爆増でキツイ。。。

I/Oの重要性を再認識したよ。。。

利用する側にとって、内部の実装は、まったく気にならない。

雑記

今週も、ほぼ家の中で過ごした。
外に出たのは、食料調達くらい。
ポケモンGoで外に出るかもしれないと思ったが、意外と出ようと思わなかった。

家の中では、ポケモンかFF7Rやってた。
ポケモンのランクマがなかなか勝てないから、ストレス貯まる。

あとは、dアニメストアで流し見してた。
最近見たのは、ハイキューの劇場版とワンパンだったかな?
ものすごく、ギャグに飢えてる自分がいる。
一日中、無感情に過ごしているから、何か感情の変化を起こしてくれるものが見たいのだが、何かないかな?
視聴済みなやつは、もう、感情の変化が起こりづらいから、あんまり見る気はしない。

在宅勤務について

成果さえ出せれば、8時間働く必要はないなって思った。
問題は、成果を出しづらいんだよね。。。
誘惑が直ぐ側にあるから、他のことをやってしまう。
夏休みの宿題を、最後まで溜め込む人の気持が、最近わかってきた。
誘惑が多すぎて、やらなければいけないことが厳かになった結果、最後まで残るんだろうな。。。
俺は、最初の1週間ですべて終わらせてたから、学生時代にそんな気持ちにはならなかった。
だけど、在宅勤務で同じようにやるのは、難しい。。。

初めての在宅勤務

初めての

例のアレのおかげ?で、初めて在宅勤務をした。

まだ1日目だけど、いろいろメリデメを感じたのでまとめる。
たぶん、日が立つと、新鮮に感じたことを忘れると思うんだよね。

感じたこと

メリット

通勤の必要性がない

通勤時間がないのが、ものすごいいい。
二度寝できたりするのが、新鮮だった。
二度寝って、ものすごい気持ちいいんだな~って、最近分かった。

二度寝したときって、起きたときの絶望感が半端なかったが、余裕があるときだと、得した気分になる。

始業ギリギリまで遊んでられる

あと、普段通勤している時間をゲームしたりする時間に当てたりもできるのが良い。
始業時間ギリギリまで、ひと目を気にせずにゲームができるのは、快適だった。

乗り換えの必要性がない

駅内を歩かなくていいってのも、ポイントデカい。
自分は、最寄り駅が京葉線の沿線で、東京乗り換えだから、ものすごい歩くのだが、それがないのは、楽。

いつでもシャワーが浴びれる

ちょっと気分転換したいときに、シャワー浴びたりするのがいつでもできるのは良かった。
仕事しているときに、息詰まるとリフレッシュ方法がドリンクしかないから、頭を一旦空っぽにするのが難しい。

昼休みに当たる時間にシャワーを浴びたが、ものすごい快適だった。

好きな音楽をかけてても誰にも迷惑かけない

アニソン流しまくっても、誰にも迷惑かけないのが素晴らしい。
イヤホンつけなくてもいいのも、ポイント高い。

息抜きにやれることの選択肢が多い

ちょっとゲームやるとかできる。
会社にいたら、休憩でもやっちゃダメな雰囲気があるからな。。。

時短営業のスーパーに行ける

いつもいっているスーパーが時短営業しているのだが、普段の勤怠だと行けない時間だが、移動時間がないので、余裕で間に合う。

デメリット+悩み

運動する機会がない

自粛中だからできないんだけど、運動する機会は、ほとんどないね。。。
東京乗り換えが運動みたいなものだったが、それすらなくなったからな。。。

自粛明けは、体重増えてると思う。

机が狭い

モニタをトリプルディスプレイにしているのだが、会社から譲渡されたノートPCを置くスペースが狭くて、どこで作業するか悩む。

環境揃えようかとも考えたが、家のスペースが狭すぎるんだよね。。。

通知に振り回される

自宅用のPCを起動していたのだが、通知が来るとそっちに気を取られてしまう。

雑念をどう断ち切るかが、在宅勤務のネックだと思う。
そうは思っているけど、俺は雑念を断ち切れる気がしない。。。
これが一番のネックだと思うわ。

テレビとかあったら、ながら観で、仕事に身が入らなそう。
俺は、もうテレビを捨てたから、その心配はない。

日中の騒音がうるさい。。。

近くに建築現場があるのだが、工事音が結構する。。。

報告が面倒

在宅勤務であるため、成果が見えにくいので、報告が義務付けられてしまってる。

申請やら報告で、浮いた時間が削られてる感が嫌だ。。。

譲渡物に気を使う

自分のものではないから、雑な扱いとか出来ないのが痛い。
紛失とかしたら、目も当てられないから、いつも以上に家の鍵掛けに気を使う。

小心者の俺には、結構な負担なんだよね。。。

電気代

かなり掛かりそうな予感がする。。。
節電してはいるけど、絶対に使用量は増えると思う。

疑問

不要不急の外出に、ポケモンGoのプレイは入るのかな?
吸う100m移動しないと、ジムがないのだが、レイドに参加しちゃ不味いかな?

2020/03/16週 気づきと振り返り

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

Swiftのキャスト

やたらとキャスト書くことがあるのだが、実装が間違っているのだろうか?
画面遷移で値を渡したいときとか、UITableView使うときとかに必ず書くような気が。。。

Javaでキャスト書くと、かなり違和感を覚えるので、Swiftでもあまり書きたくはない。
それとも、知らないだけでキャストを回避できるやり方があるのだろうか?

雑記

JavaのLTS

3バージョン毎かと思ってたが、正しくは6バージョン毎だったらしい。。。

最後のLTSがJava11だったので、次回のLTSは、Java17ということになる。

ずっと、3バージョン毎かと思ってた。。。
どこかで聞き間違えたのかも知れない。。。

トイレットペーパー

みんな買いすぎだろ。。。
みんな、超快便なのだろうか?
1年かかっても、トイレットペーパーのセットが消費できないのだが、俺が異様なのだろうか?