- 1. Python3 コーディング規約(PEP8-ja)
- 2. kivyMD開発其の壱 初期公開説明篇
- 3. Z-GISの農地データをQtのウィジェットに表示する
- 4. Python for Everyone
- 5. macOS Monterey (バージョン12.1) Python3.8.0がinstallできなかったときの対処法
- 6. 【あったら便利】loggingは大事なのに書き方をいつも忘れてしまうのでメモ
- 7. DearPyGuiをはじめる10行
- 8. SeleniumとMeCabを使えるJupyterLabコンテナイメージを作る
- 9. Raspberry Pi OSのインストールと設定
- 10. Joy-ConでROS2の亀を動かす(ROS1からROS2へ移植)
- 11. djangoでmigrateをしたらtableがないと言われた件
- 12. python loggingモジュール
- 13. DjangoRestframeworkのModelViewSetでHTTPメソッドごとにカスタマイズする方法
- 14. AWS LambdaでCSVを一時領域を利用せずS3に保存する
- 15. Pythonで引数のデフォルト値として関数呼び出しをするときの注意
- 16. ゲーミング円運動
- 17. PySimpleGUIでforで使えるプログレスバーを作る
- 18. [Python] 初心者向け PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング
- 19. Jupyter Labとipywidgets install 備忘録
- 20. PythonでQRコードを3行で作成してみた
Python3 コーディング規約(PEP8-ja)
Python標準ライブラリのコーディング規約を整理します。Pythonのコーディング規約は[PEP8-ja](https://pep8-ja.readthedocs.io/ja/latest/)という文書にまとめられており、命名規則やインデントのルールが記載されています。
標準的なコーディングルールに準ずることでプログラムの可読性を向上させることができます。
### インデント
– インデントは1レベルにつき4つ
– 複数行を継続する場合は4つでなくてもよい
– タブではなくスペースでインデントをつける### 1行の長さ
– 最大79文字
– docstringやコメント等のテキストは最大72文字
– 2項演算子の前で改行する## 命名規則
|作成するもの|命名規則|
|-|-|
|パッケージ(ディレクトリ)|全て小文字
アンダースコアは非推奨|
|モジュール(ファイル)|全て小文字
アンダースコアは可|
|クラス名|CapWords(頭文字が大文字, それ以降はキャメルケース)|
|例外|CapWords
名前の末尾に「Error」を付ける|
|
kivyMD開発其の壱 初期公開説明篇
正月気分がようやく薄れ、またいつもの毎日が戻ってまいりました。(強制)
今年もよろしくお願いしまーす!(いろんな方が見てると思うので簡素に)
はい、ということで新年もKivyMDのお時間がやってきました!お正月気分は
まだ抜けてない人が多いでしょうかね。投稿者も全然抜けてはいません:joy::joy::joy:というわけで、寒い中なんかお仕事も始まっていますが、(あと体重が増えたりも…)
なんかやる気でなーとなった方はこちらの記事でも読んでお正月気分を抜いてもら
えれば、この上なく幸いでございます。(おそらく抜けない)強引に今日のお題に入っていきますが、まずは去年の年末にどんなことをやって
いたかと言うと、ギリギリ滑りこみセーフで1stAppのリリースを告知していま
した。なんそれ?そんなの知らないよという方は以下の記事を見てもらえればと
思います。https://qiita.com/virty/items/3d03e5e2c8ec35a9117d
まぁ、全然大したことないTODOアプリでしかも完成はしていないんですけどね。。
今回はこちらのアプリの続編で、前回
Z-GISの農地データをQtのウィジェットに表示する
[Z-GIS](https://z-gis.net/99/index.html)という農地管理システムがあります。
これは、自分でプロットした農地の位置情報をEXCELファイルで管理してくれるというものなのですが、今回はこれで記録した自分の農地情報を読み出して、Qtで表示出来るようにするというお話です。これが出来れば、Pythonで[Z-GIS](https://z-gis.net/99/index.html)のデータを扱う事が出来るので、Z-GISで出来ない事も、自分でなんとかする事が出来る可能性が出てきます。
本稿では、GISの知識が必要になります。
かといって、僕も専門家ではなくて、わかんない事をググって調べてるレベルなので、特に注釈やら解説はしません。もしかしたら用語の使い間違いもあるかもしれないですが、わからないので、とりあえずごめんなさい。
これ以上専門家になるつもりもないので、気づいたら笑ってください。# 環境について
今回の開発にあたって使用していた環境は以下の通りです。
OS:Windows10
IDE:Pycharm 2021.2.3 (Community
Python for Everyone
#Hardware Overview
・CPUは中央処理装置。何百万ものトランジスタを載せている。命令は一連の信号。命令はメモリから得る。
・補助記憶にpythonファイルのようなファイルを作り、そこから主記憶に読み込まれて翻訳される。キャッシュを残して主記憶の速度を早める。
・主記憶は住んでいる場所のイメージ。CPUの質問に主記憶から答える。#pytho基本文法(初心者向け)
初心者が混乱しがちな文法をまとめました。##a+=1とは
a+=1は「a=a+1」という意味です。
+の部分は、-,*,/,%でも使えます。##for構文
混乱したときは、このサイトがわかりやすいです。特に注意したいのが、rangeを使うとき。
range(5)は、0〜4になってしまう。
1〜5にしたいときは、range(1,6)。
仮にrange(1,5)にすると、1〜4になる。(なぜだろう・・・。)#python基本文法(中級者向け)
プロゲートで学
macOS Monterey (バージョン12.1) Python3.8.0がinstallできなかったときの対処法
macOS バージョン12にて、下記記事を参考にPython3.8.0をinstallしようとした際にエラーが発生
https://www.comp.tmu.ac.jp/s-yokoyama/misc/pythonmac.html
エラー内容
“`ターミナル:ターミナル
% pyenv install 3.8.0//省略
error: implicit declaration of function ‘sendfile’ is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ret = sendfile(in, out, offset, &sbytes, &sf, flags);
“`試したこと
https://github.com/pyenv/pyenv/issues/1643上記のgithub issuesを読むと、homebrewからこのエラーのパッチが出てるとのことなので、参考にターミナルで以下のコマンドを入力
pyenv 3.8.0のインストール
“`ターミナル:
【あったら便利】loggingは大事なのに書き方をいつも忘れてしまうのでメモ
# 目的
pythonのlogging機能を使ってエラーが起きたときなどにエラーログ等をターミナルに出力、ファイルに出力したいと思ったが、自分からするとちょっと複雑でなかなか覚えることができないため、ここに簡単に頻繁に使うものを記述していきたい。#概要
### logging
下記全てのlogの親となるようなもの。
このloggingの設定はグローバル設定のようなもので、**この設定を変更すると下記のloggerなどの設定よりもとにかく一番優先される**
このloggingは複数作らない。### loggers
loggingから派生されたloggingの子供、クラス(logging)に対する各インスタンスのようなもの。### handlers
loggerの設定を扱う設定親のようなもの。
例えばconsoleに出力する用のlogger、ログファイルに出力する用のloggerと設定を変更したい場合に分けると良い。
ログファイルにはwarning/errorのみ出力するが、consoleにはdebugやinfoなども出力したい場合などにはAのloggerにconsole_ha
DearPyGuiをはじめる10行
![SS 192.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a41cd967-f549-8677-1efa-2e99bf69518d.png) スゴクよさそうなので最初のとっつきだけご紹介
#DearPyGuiとは?
https://github.com/hoffstadt/DearPyGui
DearPyGuiはpythonでグラフィカルなインターフェースを作るためのライブラリです。
DearImGuiというC++用のGUIフレームワークのpython版という位置づけのようです。
GPU対応のため動作も軽快で、アプリケーションやゲームも作れるそうです。
その素晴らしさはgithubを見れば一目瞭然です。#インストール
Python 3.6 以上、64bitの環境で以下を実行します。“`shel
SeleniumとMeCabを使えるJupyterLabコンテナイメージを作る
# はじめに
この2~3か月くらい、筆者は仕事でデータ収集(BeautifulSoupやSeleniumを使ったWebスクレイピング)と自然言語処理(MeCabを使った形態素解析とgensim使った単語の分散表現と感情分析)をする機会が増えてます。
過去の記事([※1](https://qiita.com/Blaster36/items/6dce4cf0b4ada88ef639))では、WSL上でGPUの使える分析環境を整備したのですが、用途に合わせた環境がまだまだ整っておらずちょっと仕事関係のプログラミングには使えてませんでした。
Pythonライブラリはpipコマンドで(PyPI参照して)インストールも簡単なのですが、SeleniumやMeCabはpipコマンド以外のインストール作業があったりで正直大変。。。というわけで、SeleniumとMeCabを使えるコンテナイメージをビルドして、分析環境で使えるようにしようと思い立ちました。
Webブラウザ(Google Chrome)のVerupが進むと、Selenium(ChromeDriver)との整合性が崩れて動かなくなった
Raspberry Pi OSのインストールと設定
## Install Raspberry Pi OS
[RaspberryPi.com](https://www.raspberrypi.com/)にアクセスします。次に、[Software](https://www.raspberrypi.com/software/)のページにアクセスします。
そして、[Raspberry Pi Imager](https://downloads.raspberrypi.org/imager/imager_latest.exe)をインストールします。
Joy-ConでROS2の亀を動かす(ROS1からROS2へ移植)# joycon_controller
こちらの[GitHub](https://github.com/Azicode/joycon_controller)に手順とソースをまとめてあります。
手早く動かしたい方は上のリンクを参照してください。
![VID_20220105_vertical_Trim.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556756/d751e586-c811-98d6-8741-dbe791133f54.gif)## 本記事の内容
先に本題を書いておきます。
Joy-ConをROS2で使えるようにするにあたって、– [1. ROS1からROS2へのPythonスクリプトの書き換え](#1-ros1からros2へのpythonスクリプトの書き換え)
– [1.1. rospyとrclpyの書き換え](#11-rospyとrclpyの書き換え)
– [1.2. Python2とPython3の書き換え](#12-python2とpython3の書き換え
djangoでmigrateをしたらtableがないと言われた件
# 目的
djangoでmigrateを行い、models.pyの変更を反映させようとしていたが、“`django.db.utils.OperationalError: table “テーブル名” already exists“`と言われてエラーが出てしまったため、何とかしたい。# 結論
マイグレーションを最初の状態に戻し、マイグレーションファイルも削除し、もう一度マイグレーションをし直すことで解決した。
# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebre
python loggingモジュール
#1 概要
既存システムのロギングの改修
## (1) 既存システム
(ⅰ) WEBアプリケーション
(ⅱ) 同一ソースコードで2つのプロセス(workerではない)が動いている
(ⅲ) 2つのプロセスは同じログファイルに出力される。
(ⅳ) ログローテートされていない。## (2) 改修ポイント
①[(1) 既存システム]の(ⅲ)について
⇒別々のログファイルに出力する。②[(1) 既存システム]の(ⅳ)について
⇒ログローテーションを実施。## (3) 実装
[(2) 改修ポイント]の①について
⇒プログラム起動時に別々の設定ファイルを読み込む設定を処理に修正。[(2) 改修ポイント]の②について
⇒ログローテート間隔のバックアップ数はログ設定ファイルで対応可能
⇒圧縮処理は別途実装が必要となる。使用するロギングクラス
TimedRotatingFileHandler
https://docs.python.org/ja/3/library/logging.handlers.html?highlight=logging%20hand
DjangoRestframeworkのModelViewSetでHTTPメソッドごとにカスタマイズする方法
# 目的
DjangoRestframeworkでModelViewSetを使ってシンプルに爆速でAPIを実装しようと思ったものの、HTTPメソッドによってはデフォルトの動作だけではなく、他の動作を追加してみたいとおもった。# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebrew | 3.3.8 |
| mysql | Ver 8.0.27 for macos10.15 on x86_64 |
| python | 3.8.12 |
| anaconda | 4.
AWS LambdaでCSVを一時領域を利用せずS3に保存する
## はじめに
Lambdaでは一時領域として`/tmp`フォルダが提供されていますが、上限512MBのまでの制限があり大容量のCSVファイル生成があった場合に制限がかかっていました。
csvにストリーム出力してS3に保存する方法があるか調べてみました。## 変更前
変更前のCSV作成〜s3アップロードは以下になります。
`/tmp`領域にファイル作成してS3にアップロードしていたので512MBを超えるファイルの作成はできませんでした。“`python
import csv
import boto3
import psycopg2
import psycopg2.extrasdef get_conn():
return psycopg2.connect(
host=’hostname’,
port=5432,
database=’xxxxxx’,
user=’xxxxx’,
password=’xxxxx’,
)def get_data():
with get_co
Pythonで引数のデフォルト値として関数呼び出しをするときの注意
### 先に結論
関数を定義した段階で、デフォルト引数で呼び出している関数の結果は確定する。“`python
from time import time
from uuid import uuid4def some_func(now=time(), uuid=uuid4()):
print(now, uuid)some_func()
some_func()
some_func()
some_func()# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
“`### 実際に自分が起こした問題。
ユーザーインスタンス作成
ゲーミング円運動
# はじめに
本記事は筆者が「ぬるぬる動くグラフが作りてえな~」と思って作ったものの副産物です。
解説に誤りがあるかもしれませんので見つけたら教えてください。# 使用ライブラリ
・matplotlib
- .animation
- .pyplot・numpy
## ライブラリ説明
・matplotlib
言わずと知れたグラフ描画ライブラリです。・.animation
グラフを更新するモジュールみたいです。・.pyplot
グラフを描画するモジュールみたいです。・numpy
言わずと知れた配列・数学関数のライブラリです。# ソースコード
“`python:gaming_circle.py
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animationn = 50
arry = np.linspace(0, 2*np.pi, n)
x = np.cos(arry)
y = np.sin(arry)fig, axes = plt.subp
PySimpleGUIでforで使えるプログレスバーを作る
要素をforで回すときにプログレスバーがほしいと思ったときに作ったもの。
基本的に最後のコードを読んだ方が早い気がする。## PySimpleGUIについて
GUIをいい感じに作れるようになるライブラリ、これについては書いてくれている人がいくらでもいそうなので割愛。## 2つのプログレスバースタイル
プログレスバーは処理の全体が分かっている場合のプログレスバーと、
処理がどれだけ残っているか分からない場合のマーキースタイルがある。
どちらが適しているかを使う側が意識しなくていいように、Sizedで判定させて自動で切り替えるようにした。プログレスバーはsg.ProgressBarとして用意されているが、MAXが不明なマーキースタイルについては標準で用意されているものが見当たらなかったのでsg.Textをみっちり並べて色を変えることでそれっぽい動きをさせるようにした。
## 処理の流れ
Progressのインスタンスを作り、iterメソッドを使う。
またはProgressの第一引数にiterableを与えてProgress自体をforで回す。
iterは引数1つの使い方のみ。
[Python] 初心者向け PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング
クラウド上のサーバーでPythonのコードを実行できるPythonAnywhereでアカウントを作ったので、
手始めにYahoo! Japanのtopicsをスクレイピングしたかったのですが、403 Forbiddenエラーになります。これは、無料アカウントではPythonAnywhereからアクセスできるサイトが限られているためです。Google.co.jpはアクセスできたので、Google Newsからヘッドラインをスクレイピングすることにしました。
https://news.google.co.jp![スクリーンショット 2022-01-04 203150.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823476/f5e41357-f060-af97-99a7-be21390160b2.png)
コードはこちらのサイトにのっているYahoo!のトピックスをスクレイピングするものをGoogle News用に変更しました。
【Webスクレイピング入門】ヤフーニュース の見出しとURLを
Jupyter Labとipywidgets install 備忘録
#概要
ipywidgetsが使われているnotebookがJupyter labで正常に表示されなかったので、conda仮想環境作成時に忘れないように残す。
Colabは予め環境が出来ているので何もしなくとも問題ない。– 実施期間: 2022年1月
– 環境:Python3.8.12 (miniconda)
– OS: Ubuntu20.04 LTS##現象
いつもversion指定なしにJupyter labをインストールしている。“`terminal
conda install -c conda-forge jupyterlab
“`2022/1現在、指定しなければver.2.1.0が入る。
ver.2でipywidgetsを表示させるため下記を行った。“`terminal
conda install -c conda-forge ipywidgets
conda install -c conda-forge ipympl
conda install -c conda-forge nodejs
conda install -n base -c cond
PythonでQRコードを3行で作成してみた
## 0.はじめに
pythonを用いることで3行でQRコードを作成できるようなので、検証してみました。
##ライブラリをインストール
今回利用するqrcodeライブラリをインストールします。“`
pip install qrcode
“`## QRコードの作成
QRコードを作成します。“`
import qrcode
img = qrcode.make(‘https://www.youtube.com/watch?v=dkWzWxrINRc’)
img.save(‘qrcode.png’)
“`実行することで以下のQRコードを作成することができます。
![qrcode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2465378/b43897b0-26ca-dfa2-9271-6f733d301564.png)
## 実行動画
OTHERカテゴリの最新記事
-
- 2024.09.22
JAVA関連のことを調べてみた
-
- 2024.09.22
JavaScript関連のことを調べてみた
-
- 2024.09.22
iOS関連のことを調べてみた
-
- 2024.09.22
Rails関連のことを調べてみた
-
- 2024.09.22
Python関連のことを調べてみた
-
- 2024.09.22
Lambda関連のことを調べてみた