よしたく blog

ほぼ週刊で記事を書いています

Python

【Pandas】df.head と df.head()の違い

サンプルコードを写経していたら、df.head()と打たなければいけないところを、df.headで実行してしまった。それでも実行はできて中身の出力はできたのだけれど、出力内容は違うものが出てきたのでこの2つについて簡単に調べた。表示されているデータは機械…

【Python】デフォルト引数にリストを使うときの注意点

自分が知らなかったのでメモ 関数のデフォルト引数にリストを設定した時、デフォルト引数のリストの内容は再度実行したタイミングでも前の内容を保持します。 def sample(a, b=[]): b.append(a) return b print(sample('test')) ['test'] print(sample('test…

コードでシステムアーキテクチャを描く「Diagrams」

「Diagrams」 を使うと、システムのアーキテクチャ図をPythonのコードで作成できる。 各クラウドサービスはもちろんのこと、OSSで使われているソフトウェアのアイコンまで用意されており、もう自分で画像探しの旅に出る必要がない。 プレゼンテーションツー…

Django REST FrameworkとJWTで認証を実装する

手順 インストール まずはDjango REST FrameworkとJWTを扱うためのライブラリをインストールします。 pip install djangorestframework pip install djangorestframework-jwt Django REST Frameworkの設定 プロジェクトとアプリケーションの作成 次にDjango …

Netlify で Python のバージョンを変更する方法

はじめに 2月から趣味のブログをnoteからPelicaとNetlifyの組み合わせで運用していこうと思っていたが環境構築の際に Error setting python version from runtime.txt が発生したためメモを残す。 NetlifyでのPythonデフォルトバージョンは2.7 この記事を書…

.ipynbファイルをコマンドから実行する

Jupyter Notebookで作成したプログラムをインタラクティブに実行できるのはとても便利だ。しかし、ルーティンのように実行するプログラムを毎回ブラウザを起動させて実行するのが煩わしいタイミングもある。そこでJupyter Notebookで作成した.ipynbファイル…

Jupyter Notebook で IOPub data rate exceeded エラー

エラー内容 IOPub data rate exceeded. The notebook server will temporarily stop sending output to the client in order to avoid crashing it. Google翻訳による日本語 IOPubデータレートを超えました。 ノートブックサーバーは一時的に出力の送信を停…

Pelican で画像ファイルを扱う方法

実装方法 まずはcontent/imagesを作成し配下に表示したい画像を配置する。imagesディレクトリと名付けるとPelicanではデフォルトで「静的ファイルが置かれているフォルダ」 と見なされる。この状態でpelican htmlコマンドを実行すると、outputディレクトリ配…

Python製の静的サイトジェネレーター Pelican を導入してみた

Pelicanとは? PelicanはPython製の静的サイトジェネレーターです。他の言語では、GoのHugoやReact.jsのGatsby.jsが有名です。自分自身は、Vue.js製のGridsomeを使う記事を書きました。 yoshitaku-jp.hatenablog.com yoshitaku-jp.hatenablog.com 自己学習と…

Flaskをさわってみた

Maker Faireへの出展物にWeb API化したいものがあり、軽量なFlaskを採用した。 以前Djangoを使用して個人的なプロダクトを作ったことがあったので、比較対象としてFlaskの名前は聞いたことがあったが触るのは初めてだった。 Djangoに比べると軽量に使えるも…

Jupyter Notebookを外部からアクセスして使う方法

Jupyter Notebookを起動しているサーバーに外部からアクセスして利用する方法をTipsとしてまとめておく。 個人で小さく利用している場合はローカルマシンでJupyter Notebookを使うことで足りるが、企業単位であったり重い処理を実行する場合はクラウドにGPU…

Djangoでrequirements.txtをうまく使い分ける方法

以前、Djangoのrequirements.txtを環境ごとに使い分けようとした結果、Herokuにてエラーが出てしまいました。これの良い解決方法です。 yoshitaku-jp.hatenablog.com もぐもぐDjangoにて質問したところ、ベストな回答をいただけたのでメモ代わりに書いておき…

DjangoをHerokuにプッシュすると出るApp not compatible with buildpack

エラー内容 DjangoのwebアプリケーションをCircleCI経由でHerokuにpushしていたら、そこで出たエラーがでた。 #!/bin/bash -eo pipefail git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master Counting objects: 48, done. …

第2回 モグモグDjango に参加してきた!

1週間ほど経ってしまいましたが… 第2回 モグモグDjangoに参加してきました! mogumogu-django.connpass.com もぐもぐしながらDjangoについてもくもくと作業をする会です! 1人で静かに開発に打ち込みたい,という方には,ガヤガヤしていて集中できないかもし…

コードの修正がめんどくさいなら、autopep8で自動修正

前回PythonのコードがPEP8に準拠しているか確認するツールをブログに書きました! yoshitaku-jp.hatenablog.com 準拠してないところがわかったのはいいんですけど、修正する箇所が沢山あったら直すのめんどくさいなぁなんて思います。気をつけるのはもちろん…

コードをきれいにするため、pycodestyleを使ってみた

プログラムコードはきれいにしておきたいですよね。そのために様々な言語で規約もあるかと思います。 Pythonを独学で書いている自分としてはサンプルコードを見て真似して感覚的に覚えていったりもしました。正しいものがあるなら、それを見て正しく書いてい…

DjangoでトップページにアプリのViewを表示する方法

はじめに urls.pyの書き方を調整していたらハマったのでメモ。 DjangoでトップページにアプリのViewを表示したかったのに、設定値が足りなかったのかうまくいかず四苦八苦していました。正解パターンをブログに記しておこう。なんでできなかったんだ… hoge_p…

Djangoの設定をHerokuの環境とローカルの環境で分ける方法

はじめに Djangoで作ったWebアプリケーションをHerokuにアップロードしようとしたとき、Herokuの環境とローカルの環境で使っているDBが違ったので、設定を使い分けられたらいいなと思っていました。環境ごとに差異を出さず開発していくほうがいいと思います…

Pythonでunittestする

はじめに Pythonはずっと独学でやってきたのですが、最近はどこに行っても恥ずかしくないようにお作法を学び始めています。 その一つがテストのやり方を抑えておこうというものです。 もちろん普段の業務ではテストしていますが、 個人的にPythonでガチャガ…

direnvを使って、source bin/activateを自動化する

目次 はじめに tl;dr 手順 インストール bashへhookを設定する .envrcの作成 エラーが出たら まとめ はじめに Pythonの使って開発するときはvenvを使うことが多いと思います。venvを使って仮想的に開発環境を分けることによって、相互の環境で利用するライブ…

Beautiful Soupでhtmlファイルを開こうとするときに出るエラー

目次 はじめに エラー解決 はじめに Beautiful Soupを使うときはwebのページをスクレイピングするときが多いと思うが、htmlファイルを開きたいときにエラーが発生したのでメモ。 エラー解決 Beautiful Soupを使って、htmlファイルを開こうとする。 hoge_html…

Djangoのtemplatesを一つにまとめる

目次 アプリケーション配下にtemplatesフォルダを作る アプリケーションを追加したときに、またtemplatesフォルダを作るか悩む… プロジェクト配下にすべてのアプリケーションのtemplatesフォルダをまとめたものを作れば解決 プロジェクト配下にtemplatesフォ…

DjangoをHerokuにアップロードするまでの手順

ブログでのアウトプット習慣が染み付いてきてコード書きたい!!的な欲望が出てきました。そこで、目に見える成果としてWEBアプリケーションを作ってみることにしました。まずは公開する手順をさっさと身につけようと思い、Djangoをherokuにあげてみることに…

【解決】OpenCVはpip3からインストールできます

はじめに yoshitaku-jp.hatenablog.com の問題が解決したので、メモをしておきます。 結論から言うと、ソースをコンパイルしなくても良かったようです。 pip3からインストール sudo pip3 install numpy opencv-python picamera[array] で、opencvはpip3経由…

ラズパイへOpenCVをソースからビルドしたらハマった話

はじめに 5月にIoTハッカソンがあり、そのための準備を第6回 Raspberry pi もくもく会でおこないます。 ハッカソンのテーマが「キッズIoT」ということで、子供のテレビ時間を抑制するものを作ろうとしています。 子供がテレビの前にいるかを確認しなければな…

Google Cloud Vision APIのウェブ検出機能を使ったら自分の想定と違った話

自分は安住紳一郎アナウンサーに似てるってよく言われます(立ち居振る舞い含めて)。メガネをかけるとおぎやはぎの小木さんに似てるとも言われます。上記の二人同士が似てるとあまり思わないです。そこで自分がどちらに似ているのか、はたまた他に似ている…

APIキーを見せずにpushできるpython-dotenvを使ってみた

GCPを使ったプログラムを書いていて、APIキーをべた書きせずにGitHubへpushしたいなぁーってとき使えるものを見つけたのでブログに書いておこうと思います。 python-dotenvです。 https://github.com/theskumar/python-dotenv 環境 Python3.6.4 python-doten…

Google Cloud Vision APIを使って、トリミングしたレシートから文字を取得してみた

前回からの続きです yoshitaku-jp.hatenablog.com Google Cloud Vision APIを使って、前回トリミングした画像に書いてある文字を取得してみようと思います。 OCRと呼ばれる技術を使うことで実現できます。 前回トリミングした画像です。 画像にある、「領収…

画像処理ライブラリOpenCVを使って、画像からレシートを切り出してみた

Pythonの画像処理ライブラリであるOpenCVを使って、レシートをトリミングしてみました。 今回はその時のメモです。 手順通りにやればほぼほぼうまくいくと思います。 環境 Python3.6.4 numpy==1.14.2 opencv-python==3.4.0.12 準備 # 仮想環境を作成 python3…