Scnsh Blog

技術的なことを書きたい場所

2020の振り返り

ものすごい今更だけど、備忘録的に残しておく

 

2020/1 -2

- 子供が生まれた(2019/11)こともあって、1月一杯は育児休暇を取る。

- 年明けから妻と子供が実家から帰ってくる

- 自由時間あるかと思ったけど、ほとんどなくひたすら育児

- ストレス発散のために3日に1回ぐらいのペースで走る。1月2月はだいぶ走った。

- 育児用のwebアプリを作ろうと思って色々試行錯誤

  - firebase, vue を組み合わせて作りかけた

- 2月からは月4回ぐらい出社して少し業務に慣れる

- チーム構成が変わったので抜けている間に環境が大きく変わる

 

2020/3

- 職場復帰したが、コロナが本格化してWFHに

- 個人的には育児ができるので都合が良かった

- HWプロダクトの開発なので家でできるかと思ったが割といける

- 顔を合わせないのでアイデアを新しく生み出して開発みたいなのは難しい

- 市場に投入した直後でむしろ良かった気がする

- このころ、rust の勉強を始める

  - 競プロの問題を解こうとしてたけど、あまり乗れなかった

2020/4-6

- 仕事に慣れ、家での開発にも慣れ始める

- 市場不具合対応なども始まる

- 業務では ほぼpython、業務の中でタスク的なものが増えてきて効率化がかなり重要になってくる

2020/7-9

- 本来の業務外の仕事が割と重かった。

  - 人生で今後関わりがなさそうなものでもあるし、貴重な体験ではあった

- 業務的にはpythonメインのまま

- このころからSWQAの仕事が厚くなってきた気がする

2020/10-12

- 妻が職場復帰、それに合わせて育児負荷も上がってくる

- 時間外の開発はほとんどできず

- 職場の人の入れ替わりも増えてくる

- 仕事は、C++も関わりそうな感じになってきた

 

プレイしてたゲーム

- デス・ストランディング

  - 最後までやった、コロナの世界観と重なってなんか感動した。

  - ちょうどBBと子供がシンクロしてて、それも影響あっただろうな

- FF7 remake

  - 最後までクリア。

  - シナリオに賛否両論だろうけど、昔を思い出しながらプレイできて普通に良かった。

  - いつ終わるかは謎

- GraveYardkeeper

  - クリアした

  - 思ってた感じだったけど、思ってたよりはハマってなかったかも

  - 最後の方でダレた

- FallGuys

  - Season1だけやった

  - 一度Crown取ったら冷めた

- Outer wild

  - まだ途中。

  - まとまった時間が取れないのでプレイ難しい

- オクトパストラベラー大陸の覇者

  - ポチポチやってる

  - Switch版やってたからとっつきやすい

 

Tech

- Python

- Rust

- Vue.js

- Firebase

- C++

- GAS

 

今年もがんばろ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Linuxのしくみ

本を読んだので感想を書きました。

  • Linuxを題材にして、OSのしくみを簡単に説明している
  • カーネルの中身などの詳細は説明していなく、ユーザープログラムを書くときに性能のボトルネックを踏まないような設計を考えるときに役に立ちそう
  • 入門書としてはいい感じ、詳細について知りたいならば別の本が良さそう
  • linux上で動かすサンプルコードがついていて、手元で実行しながら読むと理解が深まる
  • Linuxのコマンドもちょっと覚えられる

じっくり読んだけど、週末に読んで合計で6時間ぐらいで読みきったぐらいの分量でした。

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

  • 作者:武内 覚
  • 発売日: 2018/02/23
  • メディア: 単行本(ソフトカバー)

Flask tutorial + pipenv + heroku

いろいろと注意点があったのでメモしておく

mkdir flask-tutorial
cd flask-tutorial
mkdir flaskr
touch __init__.py 
# http://flask.pocoo.org/docs/1.0/tutorial/factory/ の内容を記述
touch Procfile 
# Procfile の中身は web: gunicorn flaskr:'create_app()'

## pipenv設定
pipenv --three
pipenv install Flask
pipenv install gunicorn

## git設定
git init # http://flask.pocoo.org/docs/1.0/tutorial/layout/ から .gitignoreをコピー
git add *
git commit -m "initial commit"

## heroku設定
heroku create
heroku config:set FLASK_APP=flaskr
git push heroku master
heroku ps:scale web=1
heroku open # http://XXX/hello に移動して、"Hello, World!" が表示されていることを確認

参考文献

それぞれを参考にして組み合わせた。

flask.pocoo.org 今回の環境で動かしたかったチュートリアルサンプル。ローカルで動かす手順しかない。

github.com herokuのチュートリアルで使われるコード。Djangoでpipenvは使われてない

github.com herokuのチュートリアルでFlask+pipenvを使っているが、create_app()を使ってない

github.com herokuのサンプルでFlaskを使っていて、create_app()を使っているが、pipenvを使ってない

文字列(String)のスライスは複雑

ちゃんと例の本にも書かれてた

文字列型 - The Rust Programming Language

let hello = String::from("abcabc");
let len: u32 = 6; // u32を指定すると下の行でコンパイルエラー
let half = &hello[0..len/2]; // u32はスライスに指定できない

PythonProject 立ち上げ備忘録

久々に作ったら色々とやることあったので、メモしておく

環境

  • Ubuntu 18.04 (あまり関係なさそう)
  • python 3.7.6 (あまり関係なさそう)
  • vscode + pyenv + pipenv vscode, pyenv, pipenv のインストール方法は省略

python のバージョン更新

pyenv を使って python の バージョン管理をしているので更新する

$ pyenv update
$ pyenv install --list | grep 3.7.6
  3.7.6

pyenv update を使うには設定が必要かも

pyenv自身のバージョンを上げる - Qiita

pipenv設定

ディレクトリを作ってVScodeを開く

$ mkdir newProject
$ code newProject

VScode上でターミナルを開く

pipenv --python 3.7.6
pienv install xxx xxx 

静的型チェック、lint、formatterの設定を追加

pipenv install black mypy flake8

VScodeの再起動を行えばpipenvの環境を自動的に適応させてくれるようになる f:id:scnsh:20200203082143p:plain

ターミナルもpipenv環境を設定してから開くようになる 新しくターミナルを作った時だけだった

おまけ

gitignoreを作る時に参考になる

gitignoreを書く時に便利なテンプレート集 | cupOF Interests

python + vscode だと以下の2つを参考にするのが良さそう

追記

blackをpipenvで使うには、pipfileに

[pipenv]
allow_prereleases = tru

が要りそう

ABC142

AtCoder Beginner Contest 142 に参加。

f:id:scnsh:20190929003110p:plain

問題 解答 結果
A AC
B AC
C AC
D AC
E - -
F - -

A - Odds of Oddness

4分ぐらいで解けた。

場合分けに漏れがないか気になりつつAC

B - Roller Coaster

5分ぐらいで解けた。

普通にSortして間に合うか一瞬迷う。

C - Go to School

10分ぐらいで解いた。

添字ミスしそうだったけど、それほど手間取らず。

D - Disjoint Set of Common Divisors

20分ぐらいかかって、一回お手つき

約数のリストを最初求めればいいと考えたけど、途中で素因数分解した結果を使う方が良いことに気づく。

素因数分解の実装を拾ってきて(これでええんか?)、共通の素因数を求めて、表示。

AとBが共に1の場合は単純に、1を足すと2になってしまうケースに気づかず。一度WA。もったいない。

E - Get Everything

最後まで解けずに迷走してしまった。

すぐに動的計画法で解けそうだと気づいたが、2**Nで表して解くという考え方に気づけず。

途中でBFSやDFSで見つけられないか模索などしてタイムオーバー。

解法を見たら納得でした。

F - Pure

途中で問題を読んだが、グラフ系の問題の解き方が分からずにそうそうに諦めモード。

もっと修練を積んでから挑戦したい。

総括

Dまで解けて、前回よりは満足度高い。

最近動的計画法を勉強していたので、Eが解けなかったのが残念。

そろそろF問題にもチャレンジできるようになりたいところ