- 1. ①はじめに
- 2. ②エラー内容
- 2.0.1. 【グラブル】ガチャピンモードは罠ではないのか?
- 2.0.2. スクレイピングでwebサイトが更新されたらSlackで通知 [Python]
- 2.0.3. 量子コンピュータでサイゼリヤチャレンジ
- 2.0.4. Pythonistaにメールマガジンを読ませる①
- 2.0.5. Streamlitで地図を表示する
- 2.0.6. herokuを定期的に自動deployして、ペットの様子を監視できるLINE botを作った
- 2.0.7. pandas 統計量
- 2.0.8. PythonでGoogle Photos APIを使う
- 2.0.9. SQLAlchemy1.3から1.4に移行
- 2.0.10. herokuへのデプロイができない:runtime.txtのうっかり誤字
- 2.0.11. 【Python】文字列・数値の出力について
- 2.0.12. AWS Service Health Dashboardの障害データから学ぶAWS障害
- 2.0.13. Pythonで定数を宣言したい(n+1番煎じ)
- 2.0.14. Pythonフレームワーク Flask のロギング機能 メモ
- 2.0.15. FlaskでMarkdownを表示する方法
- 2.0.16. 【Selenium】webdriver-managerのおかげでChrome Driverのバージョンを気にしなくてよくなった話
- 2.0.17. 解決メモ ModuleNotFoundError: No module named ‘tensorflow’
- 2.0.18. ローカルDocker環境で動いていたkafkaを、Kubernetes環境で動かしてみた
- 2.0.19. 【python:エラー】socket.error: [Errno 48] Address already in use
OperationalError: no such table: テーブル名 エラー解決方法
①はじめに
pythonを使ったwebアプリを作成するためにDjangoを利用して、ブログを作成していたのですが、エラーが出たので共有いたします。他のエラーを解決する方法にもなると思うので、困っている方は試してみてください。
②エラー内容
ブログの機能としてログイン機能を入れており、デフォルトではユーザー名でログインしますが、ユーザーモデルをカスタマイズして、メールアドレスでログインできるように認証で便利なallauthパッケージを利用しました。
モデルを変更し、python3 manage.py migrateでデータをセットアップした際に出たエラーが下記になります。“`python:python
django.db.utils.OperationalError: no such table: app_category“`
または
“`python:python
sqlite3.OperationalError: no such table: app_category“`
上記エラーは、データベース上にapp_categ
【グラブル】ガチャピンモードは罠ではないのか?
# ガチャピンモードとは
グランブルーファンタジーというソシャゲで、SSR(フェス時6%、それ以外は3%)が出るまで無料10連ガチャをいくらでも回せる機能です。(本当は終了条件があるのですが、本記事では割愛します)
SSRが確定ということもあり、少なくとも虚無にはならないという安心の一方で、ガチャをたくさん回せるということはSSRが出ていないということで、実は損なのでは?という気分にもなってしまいます。そのあたりを、数学の力を借りて調べましょう。
高校数学の知識があれば読むことが出来ます。何言ってるかワカランという方は、今後確率に首を突っ込むのはやめましょう。危険です。以下、SSR出現確率を$p$とします。
# 10連ガチャにおけるSSR期待値
ガチャ1回あたりの期待値が$p$ですから、$10p$です。期待値の線形性はかくも偉大。……なのですが、今後のために愚直に計算しておきましょう。
期待値は(SSRの出た個数)x(その個数のSSRが出る確率)の和で表されるのでした。SSRがk個出る確率を$a_k$とおくと、期待値$P$は次のようになります。“`math
P = \
スクレイピングでwebサイトが更新されたらSlackで通知 [Python]
## ?はじめに
所属してるサッカーチームで公式試合のスケジュールがあるサイトで更新されるのですが、最新のスケジュールを把握するため毎日サイトを見に行く必要があり、めんどくさいなあと思ってました。
ちょうどPythonを勉強していたこともあって、「これスクレイピングで解決できるやん?」ということでそのプログラムを勉強がてら作ってみました。## ?書いてること
ブログやお知らせ一覧などの定期的に更新されるページから、更新されたらSlackで更新内容を通知するプログラム
詳しいスクレイピングやcronのついては記載していないので参考記事を見ていただければと思います。
#### 大まかな流れ
– 対象サイトをスクレイピングして必要情報取得
– 更新がないかをチェック
– 更新があれば内容をSlackで通知この処理をcronで定期実行することでわざわざそのサイトを見に行かなくても更新があったと気づくことができます。
ただmac上で実行しているのでmac起動しているときしか動きません。## ⚙️環境
macOS : Big Sur
conda version : 4.9.2
Pyt
量子コンピュータでサイゼリヤチャレンジ
## はじめに
:fish:お魚学部:fish:出身、フロントやらIoTやらやっている「てぬ太」です。
最近気になっている[Fixstars Amplify](https://amplify.fixstars.com/)という量子アニーリングを扱えるクラウドプラットフォームを触ってみました。サイゼリヤのグランドメニューのなかから、設定した金額を最大限満たす組み合わせを取得することを目指します。
python初心者なので間違っている箇所や高速な処理方法などあればご教示いただけますと幸いです。目次
[1. グランドメニューのデータを用意する](#1-グランドメニューのデータを用意する)
[2. バイナリ変数での実装](#2-バイナリ変数での実装)
[3. サイゼリヤチャレンジ結果](#3-サイゼリヤチャレンジ結果)
[4. まとめ](#4-まとめ)
[5. 参考リンク](#5-参考リンク)
[6. おまけ](#6-おまけ)## 1. グランドメニューのデータを用意する
深夜には非常にきつい作業でした。
[サイゼリヤのグランドメニューをご紹介ページ](https://www.sa
Pythonistaにメールマガジンを読ませる①
# きっかけ
移動時間に購読しているメールマガジンを音声読み上げ機能を使って読んでもらっているが、メールマガジンは比較的短いので、iphoneの純正メールアプリでいちいち本文を選択し、読み上げ機能を選択して読ませるということを2-3分置きにしたくなかった。## やりたいこと
– Gmailで特定ラベルがついた未読メール(メールマガジン)を日付順で読ませたい
– 読み終わった後は既読に。(できれば、特定のメールマガジンが非常に有用だと感じた場合、未読のままで留めて、他のフォルダに移動するオプションも実装したい。ここも音声で指示できたら最高)## 実装方法
Google Drive API を使うやり方を考えた。
順番としては
1. ラベルのついた未読メールを.eml形式でgoogle drive 所定のフォルダに保存
2. Google Drive APIにアクセスし、日付をソートして本文を順番に読み上げさせる。読み終わったらファイルを削除。### 序. Google Drive APIの設定
– 参考にしたページ
[APIキー、OAuthクライアントID、サービスアカウント
Streamlitで地図を表示する
##Streamlitについて
簡易的なWebアプリが迅速に作成・デプロイできるStreamlitというツールがあります。
動的なグラフなどを短いコードで作成でき、しかもPythonだけで完結します。最近は徐々に認知度が高くなっており、利用者も増加傾向にあるようです。公式へのリンクは下記に貼っておきます。
https://docs.streamlit.io/en/stable/installation.html
##地図にpandasデータを表示する
地図ツールのfoliumとstreamlitを組み合わせたPythonのサンプルコードです。
地図の上にスライダーをつけて拠点からの半径を調整できるようにしました。
VSCodeなどでファイルを作成してください。“`python
import folium
from streamlit_folium import folium_static
import streamlit as st
import pandas as pd# サンプル用の緯度経度データを作成する
sales_office = pd.DataFra
herokuを定期的に自動deployして、ペットの様子を監視できるLINE botを作った
# はじめに
義姉夫婦が旅行に行く間、ウサギ(そらちゃん)を預かることになった。
旅行中もお義姉さんがそらちゃんを近くに感じられるように、
メッセージを送ったら、そらちゃんの現在の様子を確認できるbotを作った。# こんな人向け
– LINEmessagingAPIを使って開発したい人
– LINEmessagingAPIとHerokuを連携してみたい人
– line-bot-sdk-pythonを使用して開発をしてみたい人# 様相技術
– Python
– line-bot-sdk-python
– heroku
– macOS
– Android
– Selenium# 方法
だいたいこんな感じ
![udsuds.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124047/6989bbbd-399d-a189-3457-e6293decee9c.png)1. droidcamで兎を常時撮影
2. 5分毎に映像のスクショを撮影
3. Herokuにdeploy
4. 義姉がメッセージ
pandas 統計量
“`python
import pandas as pd
import numpy as np
“`“`
df = pd.DataFrame({
“category1” : [“A”,”A”,”A”,”B”,”B”,”B”],
“column1” : np.array([5,4,6,9,11,13])
})
“`
![スクリーンショット 2021-03-19 0.11.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698282/2b6769de-624e-de49-7bf9-44faea0f9c7a.png)# 統計量
“`python
df.describe()
“`
![スクリーンショット 2021-03-19 0.12.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698282/0c999d09-f386-7b90-3b5e-ff5c0eddfb2b.png)c
PythonでGoogle Photos APIを使う
![HW Raspberry Pi 4 Model B Rev 1.4](https://img.shields.io/badge/HW-Raspberry Pi 4 Model B Rev 1.4-brightgreen) ![OS-Ubuntu 20.04.1 LTS](https://img.shields.io/badge/OS-Ubuntu 20.04.1 LTS-brightgreen) ![Python-3.8.7](https://img.shields.io/badge/python-3.8.7-brightgreen)
# はじめに
PythonでGoogle Photos APIを叩こうと思ってネットを調べていたところ、google-api-python-clientのバージョンが2になっていたため上手く動かずに時間を使ってしまったので、記事投稿時点で動くコードを上げておく。
事前にGoogle Photos APIを有効化し、OAuth 2.0 Clientを作成してclient_secret.jsonを取得しておく必要がありますが、ここでは割愛します。
SQLAlchemy1.3から1.4に移行
https://docs.sqlalchemy.org/en/14/changelog/migration_14.html
SQLAlchemy1.4が2021/3/17にリリースされた。
1.3.19 -> 1.4.1 に変更する際に調査したことをメモする。## Sessionがコンテキストマネージャに
### 1.3では
Sessionを使用する際に、close()することを忘れてはいけない。
そのため、try~finallyや以下のようなコンテキストマネージャを作成して、with構文で使用するようにしていた。https://docs.sqlalchemy.org/en/13/orm/session_basics.html#when-do-i-construct-a-session-when-do-i-commit-it-and-when-do-i-close-it
“`python
from contextlib import contextmanager@contextmanager
def session_scope():
“””Provide a
herokuへのデプロイができない:runtime.txtのうっかり誤字
herokuでPython製アプリをデプロイするときには、runtime.txtにPythonのverを記載しておく必要がある。
>remote: ! Requested runtime (python 3.9.2) is not available for this stack (heroku-20).
このエラーメッセージが出た時そんなバカな!と叫んだ。
>python-3.9.2 on all supported stacks
herokuこの通り、3.9.2はherokuではちゃんとサポートされてると書いてるのに!
これでしばらく頭を抱えて、ふと気づいた。サポートされてる方
>python-3.9.2されてない方。
>python 3.9.2結論。-の入れ忘れに気をつけよう。(なおその時作ってたアプリはデプロイ成功しても中身がエラーを起こしていた。徒労感……
【Python】文字列・数値の出力について
Pythonの文字・数値の出力について簡単にまとめてみました。
1. 出力について
2. 文字列について
3. 数値について
4. 文字列と数値の違いについて
5. コメントについて# 1. 出力について
文字や数値を出力(表示)させたい場合、[print( )]と記述し、括弧内に出力したい文字や数値を入力します。# 2. 文字列について
文字を出力(表示)させたい場合、シングルクォテーション(”)、またはダブルクォーテーション(“”)で、
出力(表示)させたい文字を囲む必要があります。(どちらで囲んでも出力結果は同じになります。)“`
print(“Hello World”)
=> Hello Worldprint(‘Hello World’)
=> Hello World
“`# 3. 数値について
数値を出力(表示)させたい場合、文字列とは違いシングルクォテーション(”)やダブルクォーテーション(“”)で
出力(表示)させたい文字を囲む必要がありません。
数値は「+」や「ー」を用いて、足し算や引き算が可能で、数値や記号は「半角英数字」で記述します。
AWS Service Health Dashboardの障害データから学ぶAWS障害
## はじめに
先日,AWSの東京リージョンで気象庁のサイトがダウンするというインパクトの大きな障害が発生してニュースになりましたが,AWS全体ではどの程度の頻度で障害が発生しているのでしょうか?本稿ではAWSが公開している障害のデータから簡単な分析を行い,AWS障害に対する理解を深めてみます。
## AWSの公式障害情報
大規模なAWS障害は[AWSのこちらのサイト](https://aws.amazon.com/premiumsupport/technology/pes/)にレポートが掲載されています。これを読むだけでお腹いっぱいになりそうですが,レポートの件数は多くはありません。もう少し全体の傾向が見えるデータを探してみましょう。AWSがサービスとして提供している[Personal Health Dashboard](https://docs.aws.amazon.com/ja_jp/health/latest/ug/getting-started-phd.html)にはもう少し規模の小さい障害のレポートも掲載されており,障害のデータを集計したりできそうです。
…
Pythonで定数を宣言したい(n+1番煎じ)
# いきさつのいきさつ
先日、[この記事](https://qiita.com/nadu_festival/items/32960dd32ea075da31b3)を書いたが、バグがある上に殴り書き過ぎて、自分がこの記事見たときに「は?」となる気しかしなかったので、書き直しなおしました。# いきさつ
C言語やJava言語、Javascript言語など、さまざまな言語で定数(再代入不可変数)が言語仕様として用意されているが、Python言語にはない。
ネットで調べてみると、[Python Receipeの方法](https://code.activestate.com/recipes/414140-constant-types-in-python/)がよく出てくる。## [Python Receipeの方法](https://code.activestate.com/recipes/414140-constant-types-in-python/)
まず、定数を置いておく専用のモジュールを定義する。“`Python:const.py
class _consttype:
Pythonフレームワーク Flask のロギング機能 メモ
* Python フレームワークFlaskのロギング機能についてメモする。
## 標準ログ
* Python の`logging`モジュールを利用している。
* `Flask.logger`でアクセスする。## 標準ログ出力
* `debug`、`error`のようにログレベルを指定して出力する。
“`python
from flask import Flask, request, sessionapp = Flask(__name__)
app.logger.debug(‘DEBUG’)
app.logger.info(‘INFO’)
app.logger.warning(‘WARNING’)
app.logger.error(‘ERROR’)
app.logger.critical(‘CRITICAL’)
“`## デフォルト設定
* `logger.basicConfig`でロガーのデフォルト設定を行う。
* 以下はデフォルトログ出力レベルをINFOに変更する例“`python
import logging
from flask im
FlaskでMarkdownを表示する方法
# コード内に埋め込み
– server.py“`
from flask import Flask, render_template, Markup
from markdown import markdownapp = Flask(__name__)
@app.route(‘/index’)
def show_md():
md = ‘#Hoge’
md = Markup(markdown(md))
return render_template(‘index.html’, md=md)if __name__ == ‘__main__’:
app.run(host=’127.0.0.1′, port=5500, debug=True)
“`
– index.html“`
{{ md }}
“`
– markdownモジュールと`Markup`オブジェクト組み合わせることでhtmlにレンダリングできます。# Markdownファイルから読み込み
– main.md“`
# Hoge
– piyo
“`
–
【Selenium】webdriver-managerのおかげでChrome Driverのバージョンを気にしなくてよくなった話
#はじめに
私は現在コンテンツ制作の現場に所属しています。
日々コンテンツを制作または更新し、WordPressにアップしていきます。基本は創作活動なのですが、たまに作業でしかないタスクが発生することがあります。
– 数百件の外部リンクをWordPressにアップする
– リンク先のサイト構成の変更に伴い数百件の外部リンクのURLを変更する
– 数百件のコンテンツのアクセスレベルを変更するこれらは人間がやる必要のない仕事なので、Pythonで自動化してきました。
具体的には変更したい内容をcsvにまとめて、その内容をもとにSeleniumでChrome Driverを起動し、ブラウザ上でWordPressの内容を更新するといった流れです。作成したツールはPythonがわからない人でも扱えるように[Pyinstaller](https://pypi.org/project/pyinstaller/)でexeファイル化してメンバーに配布していました。
しかし問題も抱えていました。
– Google Chromeがバージョンアップするたびに対応するChrome Drive
解決メモ ModuleNotFoundError: No module named ‘tensorflow’
juputerをインストール。以下を実行。
pip install jupyter
ローカルDocker環境で動いていたkafkaを、Kubernetes環境で動かしてみた
## 概要
Kafkaに魅せられて、とりあえず手元のマシンで動かしてみましょうか、、、と、インフラしか知らないSEがMacBookProを新たに購入し、Qiita等にアップされている諸先輩方の記事を参考にさせていただき、ローカルのDocker環境でKafkaを動作確認したまでの手順を、過去に7回に分け記載しました。その7回に記事については[こちらから参照ください](https://qiita.com/turupon/items/12268ddb95ecd7b7ae07)。
今回は、そのDocker環境で動いていたKafka検証システムの docker-compose.yml を Kubernetes環境のマニファスト(yaml形式)でどのように定義し直すのかを確認しました。今回のKubernetes環境の Kafka検証システム の全体構成は下図のようになります。
![kafka-k8s-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/d9aef4d8-c60c-631a-a65f-
【python:エラー】socket.error: [Errno 48] Address already in use
#対処法
“`bash:bash
//以下のコマンドでプロセスIDを検索
ps -fA | grep python
// killする
kill processID
“`写真↓
![スクリーンショット 2021-03-18 15.22.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631096/2f1a8985-61ea-1013-0099-b83617bbd062.png)