つかぱい.com

どうせなら好きなことを書いていたい

【映画メモ】ジョゼと虎と魚たち

一言コメント

邦画版のように生ぬるいダウナーな感じではなく、スッキリきれいになったバージョンのジョゼという感じ

映画のいいポイント

最近少なくなったツンデレ系女子が見れる作品
電車に乗ったり海を見ることで素直に喜ぶジョゼがとにかくかわいいというのがとても見どころ
書籍や邦画と違い物語をきれいにコーティングした作品なので生々しいのが苦手という人でもモヤッと感なく見れると思う。

リンク

アニメ映画『ジョゼと虎と魚たち』公式サイト

blog/映画メモ

【シェル】0埋めの連番を作成するときはseq -w を使うといいぞ

qiita.com

Qiitaに投稿したので自分のブログにも入れておく

ちょっとした小ネタ

ターミナルで連番をつけたファイルを作ったりHTTPリクエストを投げるときに便利です。 for文とセットで使うと便利なのでコピペして使えるようにしました。

かんたんなシェルスクリプトの例

#!/bin/bash
for i in `seq -w $1` #実行引数で取ると楽
do
    echo "hoge$i" #単純化するため標準出力するだけ
done

引数で指定した数までのhoge+01~連番するだけのスクリプト

出力サンプル

$ ./QiitaSample.sh 10                                                                    
hoge01
hoge02
hoge03
hoge04
hoge05
hoge06
hoge07
hoge08
hoge09
hoge10

期待値の結果としてはこんな感じになります。

参考リンク

seq invocation (GNU Coreutils)

development/terminal

【Pyhton】MacOS11でtkinterが動かない問題を解消したい

最近MacをBigSurにメジャーアップデートをしたらPythonGUI系のモジュールが動かなくなったので直した。

brewPythonは3.9.1にできなかったので公式からインストールする。

Python Release Python 3.9.1 | Python.org

最新のMacじゃないのでIntel版でインストール

macOS 64-bit Intel installer

公式のGUIインストーラでインストールされるPythonは以下に配置されているので バージョンを確認して3.9.1になっていればOK

$ /usr/local/bin/python3 --version                                                                            
Python 3.9.1

venvとかを使っている場合は適宜エイリアスなどでPATHを変えるといいと思う。

development/Python

【Vim】カーソルキーでの移動を禁止する設定(ドラゴン付き)。

事前インストール

cowsayとslコマンド必要なので予めインストールが必要 brew install cowsay sl

設定方法

.vimrcに以下を設定する。

設定するとAAのドラゴンが丁寧に教えてくれる。

function TeachKey(message)
    let summon = join([“!clear; cowsay -f dragon “, a:message, “を押すのだ”])
    exec summon
endfun
nnoremap <buffer> <Left> <Esc>:call TeachKey(‘h’)<CR>
nnoremap <buffer> <Right> <Esc>:call TeachKey(‘l’)<CR>
nnoremap <buffer> <Up> <Esc>:call TeachKey(‘k’)<CR>
nnoremap <buffer> <Down> <Esc>:call TeachKey(‘j’)<CR>
nnoremap <buffer> <PageUp> <Esc>:call TeachKey(‘Ctrl+B’)<CR>
nnoremap <buffer> <PageDown> <Esc>:call TeachKey(‘Ctrl+F’)<CR>
inoremap <buffer> <Left> <Esc>:call TeachKeyBi)ding(‘h’)<CR>
inoremap <buffer> <Right> <Esc>:call TeachKey(‘l’)<CR>
inoremap <buffer> <Up> <Esc>:call TeachKey(‘k’)<CR>
inoremap <buffer> <Down> <Esc>:call TeachKey(‘j’)<CR>
inoremap <buffer> <PageUp> <Esc>:call TeachKey(‘Ctrl+B’)<CR>
inoremap <buffer> <PageDown> <Esc>:call TeachKey(‘Ctrl+F’)<CR>
vnoremap <buffer> <Left> <Esc>:call TeachKeyBi)ding(‘h’)<CR>
vnoremap <buffer> <Right> <Esc>:call TeachKey(‘l’)<CR>
vnoremap <buffer> <Up> <Esc>:call TeachKey(‘k’)<CR>
vnoremap <buffer> <Down> <Esc>:call TeachKey(‘j’)<CR>
vnoremap <buffer> <PageUp> <Esc>:call TeachKey(‘Ctrl+B’)<CR>
vnoremap <buffer> <PageDown> <Esc>:call TeachKey(‘Ctrl+F’)<CR>

nnoremap <buffer> <Del> <Esc>:<C-u>!sl<CR>
inoremap <buffer> <Del> <Esc>:<C-u>!sl<CR>
vnoremap <buffer> <Del> <Esc>:<C-u>!sl<CR>

set backspace=0

確認方法

設定されるとこんなのが出る。

image.png

参考URL

vi(vim)で完全にカーソルキーを無効化させたい - スタック・オーバーフロー

development/vim

渋谷に行った日のどうでもいい話

夜中までPythonの説明文章を書いていたのがたたったのか、かなりの眠気に襲われながらベッドから起き上がることにした。

今日やることは一つ決まっている

「キャンペーンなんでいまなら無料レンタルなんですよ」

と言われて胡散臭い勧誘にハマりうっかり借りてしまったWifiを返さなくてはならない

話によると使い放題だというので試してみたのだけれども、自分の要求する方法で使うと3時間と持たなかったのでやめることにした。

借りているだけで何千円とかかるものを持っていたってしょうがない

それに、めんどくさいことは思い立った瞬間に行動したほうがよいと経験がいっている

こういった手続きは次に日に持ち越しをすると絶対にやらないレベルの面倒くさ差であるということはよく知っているので、出先で郵便局で返送できるよういつものリュックにしまっておいた

その後は、眠気に襲われながらもなんとか電車に乗り放心して東京まで行くことにした。

待ち合わせではいつものように家電量販店にいき、最新の機材がないかなどを癖で眺めつつ待つことにした。

その後は、地下鉄に乗り渋谷まで電車に揺られながらTiktokで面白い動画と一緒に見たりして時間を潰していた。

渋谷駅について、あたりを見渡すともうコロナの前ほどの人で溢れているのが見てわかった。

みんなマスクはしているがソーシャルディスタンスなんて無いかのように密集している。

なるべく密集地帯から抜け出せるようにしながら坂を登り始めるとまだ年若い不動産の営業がこちらに声をかけてきた

「ノルマなんで模型だけでも見てくれませんか?」

と誘いを受けたので

「マンションは別に買いませんよ」

と断りをいれつつ、仕事のノルマというのは精神的にしんどいということもわかっているので

渋々承諾し少しみてみることにした。

結果的にはかなり懇切丁寧な説明をして1時間くらい付き合ったのだけれども、新築のマンション買ったらたしかにきれいなところだし住心地も良いであれろうなとは思ってしまった。

さすが営業マン、侮れない

一通りの丁寧な説明を聞いた後は少し飲み物をもらって休憩しつつ本来の目的である郵便局へ向かうことにした。

郵便局でWifiを送るには追跡付きのゆうパケットで送れるらしいので窓口で購入をし久々の手書きで宛名を書き、郵便を送った。

東京から福岡まで陸送になるので3日くらいはかかるらしい。

期間内には届くはずなのでひとまずこころのわだかまりになっていたことは解決した

一番に解決しないといけないことは済ませたので

「この後はどうしようか?」

と悩んでいると

「宮下公園が最近オープンしてよかったんですよ、僕も上の階の公園でゆっくりお昼食べてましたし、結構いいですよ」

さっき勧誘をしてきた営業マンから聞いた話を思い出した。

確か前に来たときにはまだ工事中で見ることができなかったので、良い機会だなと思い宮下公園へ向かうことにした。

公園と言いつつも実際に商業施設で、なんとも近未来感のある建物であり屋上に芝生が植えてある場所があるのだけれどもあんまり突っ込むときりがないのでそこは放っておこう

施設では若者向けのアパレルや渋谷をアピールしたお土産などいろんなものが取り扱われていた。

まずは一階の飲み屋外を散策し、目についたオマール海老のラーメンなるものを食べたくなったので一つ注文してみることにした。

ラーメンに関しては、海老の風味が全開の味になっていて美味しかった。

できることならもう少し麺に絡むようなものがいいと思う。本業は居酒屋ではあると思うが

その後は例の屋上公園に行きスケートボードをしている人たちを見て楽しむことにした

以外ではあるが、小学生くらいの小さな男の子が割と多く滑っていて、しかもうまい

渋谷という場所の効果もあってなんとなくかっこいい雰囲気がして面白かった

帰りの電車では、次の日の仕事を考えて少し憂鬱になたけれどもこんなどうでもいい一日を思い出してみると少しやる気が出た。

どうでもいい一日がこれからも続くといいと思う。

【Python】UnitTestをするためにやったこと

目次

  • 前提条件
  • そもそもUnitTestって何?
  • テストするためにやることどんなことが必要?
  • メソッド呼び出せない?
  • 入力する情報って何?
  • テストで正しいって証明するためにはどんなことが必要?

前提条件

黒い画面で操作がちょっとだけできる人 スペックはPythonが動けば何でも良い

そもそもUnitTestって何?

単体テスト(ユニットテスト)とは | ソフトウェアの検証の種類 | テクマトリックス株式会社

プログラムのメソッドなど、プログラムを構成する一番小さい粒度できちんとプログラムが機能しているかをテストすることを指します。 IT業界では単体テストなんて言われ方もする。

それぞれの言語で単体テストを行ってくれるライブラリが存在しています。 以下は例

余談ですがRubyなどではMinitestやRspecなどが単体テストの機構としてがあります。

テストするためにやることどんなことが必要?

PythonでUnitTestを実施するためには、テストコードを書いておくためのPyファイルを記述します。

詳しいテストを記述については日本語の公式ドキュメントがあるので参照してください。

unittest — ユニットテストフレームワーク — Python 3.8.6 ドキュメント

VSCodeなどを利用して次のようなファイルを作成していきます。

このケースでは意図的に失敗するテストケースを記載しています。

sample.py

import unittest

class TestStringMethods(unittest.TestCase):

    def test_false(self): 
        self.assertFalse("hoge", "hoge")

if __name__ == '__main__':
    unittest.main()

次にコンソール上でプログラムを実行してみます。

CLI上で実行する場合は、以下のようなコマンドでUnitTestを実行することができます。

python3 -m unittest sample.py

======================================================================
FAIL: test_false (test.sample.TestStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/pcuser/Documents/GitHub/pysecret/test/sample.py", line 6, in test_false
    self.assertFalse("hoge", "hoge")
AssertionError: 'hoge' is not false : hoge

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)

こんな感じに、FAILDが表示されて失敗していればOK もしERRORの表示が出ている場合はPythonの文法上の問題だったりするので、ググって見てください。

Pythonでよくあるエラーはこんなものがあったりします。 【参考のエラメッセージを入れる】

メソッド呼び出せない?

この後は実際にテストケースを記載していきます。

なるべく実践的なテストにするため、テスト対象となるプログラムを作成しておきます。

hello.py

def helloMethod(str):
    msg = str
    return msg

if __name__ == '__main__':
    main()

その後、test.pyにinport helloを追加し、helloMethodが呼び出せるようにしましょう。

入力する情報出力する情報って何?

今回は単純なオウム返しをするメソッドを作成しました。 入力として渡すものはメソッドの引数で渡す文字列のstr変数になります。 そして期待値としてはメソッドを実行したらstrが出力として返却されるという想定です。

import unittest
import hello

class TestStringMethods(unittest.TestCase):

    # def test_false(self):
    #     self.assertFalse("hoge", "hoge")
    
    def test_hello(self):
        input_str =  "Hello"
        msg = psmg.helloMethod(input_str)
        self.assertEqual(msg, input_str)

if __name__ == '__main__':
    unittest.main()

テストをクリアするにはどんなことが必要?

結果が正しいかの検証にはAssertメソッドを使ってmsg変数に格納された値とinput_strの値が同一であるということを確認します。

書き方としてはUnitTestクラスが持つAssertメソッドを使うのでself.assertEqualを使います。

ソース上ではすでに先程書いてあるのでUnitTest自体の起動を確認したコマンドと同じものを再度実行します。

python3 -m unittest sample.py

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

コンソール上でOKの文字が表示されていればテストが成功しています。

development/Python