Effective Computer Science - 頂は礎の上に -

新しい技術の多くは基礎的な技術の上に成り立っています。激動の技術変化に耐えうる体系知識の習得を目的に「基礎と実践の架け橋」となるサイトを目指します。

python

【Python&Selenium】aタグがクリックできない

Python & Seleniumnでヘッドレスオプションをつけた状態(options.add_argument('--headless'))でaタグをクリックしようとすると以下のようなエラーが発生することが稀にある。 付近のspanタグをクリックしてしまうようだ。 ...a> is not clickable at poin…

【Heroku Django】APSchedulerで自作Modelを使う方法

前提 dbアプリが定義されていて、dbディレクト以下のmodels.pyをimportして使う herokuとDjangoでAPSchedulerが設定済み Procfileに clock: python アプリ名/clock.pyが記載されており、アプリ名/アプリ名以下にclock.pyがある。 clock.py import os import …

【Python Selenium】URLから画像をアップロード

URL対応バージョン from urllib.request import urlretrieve filename, headers = urlretrieve(画像URL) driver.find_element_by_name("img_tag_name").send_keys(filename) ちなみに、ファイルがローカルにある場合は、 driver.find_element_by_name("img_t…

【Django × Heroku × WhiteNoise】設定でエラーが出る場合の対処方法

環境 Heroku × Django × WhiteNoise で以下のような設定が済んでいる場合 対象ファイル:setting.py INSTALLED_APPS = [ 'whitenoise.runserver_nostatic', ..., ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware…

【Python デザインパターン】Stateパターン

Level1 Contextなし github.com Level2 Contextあり State Design Pattern in Python Level3 複雑な具体例あり 関連書籍 Pythonでデザインパターンを体系的に学びたい場合は、以下の書籍が最適です。 実践 Python 3作者: Mark Summerfield,斎藤康毅出版社/メ…

【コーディング面接】配列に関する問題と解説

配列とは 配列はデータを保持する最もシンプルな方法です。配列ではオブジェクトの簡単なリストが用意され、そこにデータが格納されます。インデックスがあれば素早く検索することができますが、そうでなければ遅くなりま…

Pythonを深く理解するためのツール

dis --- Python バイトコードの逆アセンブラ dis モジュールは CPython バイトコード (bytecode) を逆アセンブルすることでバイトコードの解析をサポートします。 docs.python.org 以下の方のように調査が行えます。 qiita.com CPythonのcファイル 例えばpyt…

【コーディング面接】ハッシュテーブルに関する問題と解説

ハッシュテーブルとは ハッシュデーブル(「辞書」や「ハッシュマップ」とも呼ばれます) を使うと、「値」に対して「キー」を割り当てることができます。このキーは多くの場合、数字または文字列です。値はどんなタイプのオブジェクトでも…

.python-version ファイル とは

pyenvでローカルのpythonのバージョンを設定した直後にできるファイル。 pyenv local version を実行した際に作成されるファイルで、中身にはversionだけが記載される。 例えば pyenv local 3.7.1 とすれば.python-versionの中身は以下のようになる。 3.7.1

【解決】pyenv installで最新のバージョンが見つからない

解決コマンド gitで最新バージョンのpyenvに更新 cd ~/.pyenv/plugins/python-build/../.. && git pull && cd - 解決前のエラーメッセージ python-build: definition not found: 3.7.0 The following versions contain `3.7.0' in the name: 3.7.0a2 minicon…