Python関連のことを調べてみた2020年05月07日

Python関連のことを調べてみた2020年05月07日

ChaliceでFirebase AuthenticationのためのCustomAuthorizerを実装する

# はじめに

API Gateway経由でLambda関数にアクセスする場合、そのアクセスを制御したい場合がある。
例えば、以下のようなケースが考えられる。

– 事前に共有した特定のトークンを知っている場合のみ Lambda を実行可能にしたい
– 外部のIDaaS系のサービス (Auth0, Firebase Authenticationなど) で外部から取得したトークンをAPIに渡した場合、そのトークンを検証して正しければ Lambda を実行可能にしたい。

このような問題を解消するため、API Gateway を経由して Lambda 関数を呼び出す場合には、そのリクエストの直前に検証が行えるような仕組みが整えられている。 これを Lambda オーソライザ (Authorizer) という。

以下に [Lambda オーソライザの説明ページ](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) 内の図を引用する。

元記事を表示

PysideでGUI作成 その2<クラス利用>

#はじめに
クラスを利用したQtWidgetの作成方法の覚書です。

クラスについて以前まとめた記事はこちら
https://qiita.com/kashiba/items/339b81f63612ffdba573

#今回作るもの
##完成図
ボタンが1個あるだけのシンプルなWindowです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560169/174548a3-fa80-3d8f-277c-76ac0dd9b0f1.png)

ボタンをクリックする度に「Hello world」とprintされます。

“`
Hello world
Hello world
Hello world
Hello world
“`
##コード

“`.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PySide2.QtWidgets import *

class window_A(QWidget):

元記事を表示

PythonでABC037のA~Cを解く

### はじめに
今日は早起きできたので、記事書きます.

### A問題
[問題](https://atcoder.jp/contests/abc037/tasks/abc037_a)

**考えたこと**
minとって、割る

“`python
a, b, c = map(int,input().split())

if a > b:
ans = c // b
print(ans)
else:
ans = c // a
print(ans)
“`

### B問題
[問題](https://atcoder.jp/contests/abc037/tasks/abc037_b)

**考えたこと**
Qが小さいの、forで回せる

“`python
n, q = map(int,input().split())

lrt = [list(map(int,input().split())) for _ in range(q)]

a = [0] * n
for i in range(q):
a[lrt[i][0]-1:lrt[i][1]] =

元記事を表示

Jupyter Notebook 起動してみる 〜 エスパーの修行

# Jupyter Notebook 起動するまで

– この記事をカテゴリ分けすることが難しい
– そもそも何が問題なのかがわからないので,最初にタイトルやカテゴリを決められない.

## 環境を想像する

画像で貼ってあったので想像できた,予想だと jupyter か?

– https://qiita.com/fuku_tech/items/6752b00770552bf4f46b
– https://qiita.com/littlem/items/4893bc46bbdff4f97dfb

“`yml:docker-compose.yml
version: ‘3’
services:
jupyter:
image: jupyter/scipy-notebook
ports:
– 10000:8888
volumes:
– $PWD:/home/jovyan/work
command: start.sh jupyter lab –NotebookApp.token=”
“`

“`shell-sessi

元記事を表示

spaCy / GiNZA を Python で使ってエンティティ分析を行う

## なに?

自然言語処理、というか、テキスト解析をする際の醍醐味である「エンティティ分析」をとっても便利な spaCy / GiNZA を使ってやってみます。
こちらが GiNZA ページです。
https://megagonlabs.github.io/ginza/

エンティティ分析とは、例えば「**プレステでFINAL FANTASY VII REMAKEをする**」と言った時に「プレステ = ゲーム機」「FINAL FANTASY VII REMAKE = ゲーム名」みたいなカタマリ(エンティティ)を見つける技術です。

ゲーム名の辞書を作っていくととても大変です。ゲームは無限に増えていきます。そこを前後の文脈などから推測しつつエンティティを見つけていきます。

## まず GiNZA を使ってみる

まずは GiNZA を使ってみます。
GiNZA とは簡単にいうと学習済みで必要なものがそろった日本語分析用のライブラリです。

とにかく簡単に十分に使えます。

まずさくっと pip でインストール。

“`bash
pip install -U ginza
“`

>

元記事を表示

Djangoの画像アップロードにてつまづいたところ一覧

Djangoにて画像アップロード機能を追加しようとしていたのですが、意外と時間がかかってしまったのでその反省点を記しておきます。

こちらの記事を参照させていただきながら、画像アップロードを実装しました。

> [Djangoを使って画像アップロード、閲覧を実装してみる](https://qiita.com/YaCpotato/items/d4c1d3e99415c795a7f5)

主なミスは以下です。

– 他のqiita記事のコードを脳死でコピペしていたので、変数名が普通に違っていた
– qiita記事を隅々まで読まなかったので、見落としているところが複数あった

前者は普通に個人の問題なので、後者の見落としていた点について語っていきます。

環境:
Mac OS Mojave
python 3.7
django 2.1.2
Pillow 7.1.2

今回のプロジェクト名:`app`

## fieldsからイメージを除いておかなければならない

コピペをしていると、以下のようなエラーがコマンドライン上で出てきました。

“`
resolved field ‘emp_phot

元記事を表示

20分で作成したドラクエ10バザー相場取得プログラム

# はじめに
自粛中、ドラクエ10に勤しんでいます。
ドラクエ10には、旅人バザーという仕組みがあり、ユーザー同士でアイテムの売り買いが可能になっています。
そこで、冒険者の広場から旅人バザーの価格情報を取得し、Excelのシートに貼り付ける簡易的なコードを書きました。

# 環境
Windows10 Pro

Python 3.8.2

selenium 3.141.0

ChromeDriver 81.0.4044.69

openpyxl 3.0.3

# コード
“`python:config.py
USERID = ‘ユーザーID’
PASSWORD = ‘パスワード’
“`

“`python:bazaar.py
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import re
import config
import openpyxl
import datetime

# 出品情報を格

元記事を表示

[python] pytestで処理の遅い箇所を可視化して特定する

プロジェクトのテスト数が増えてくるとCI回すのも遅くなるし、ローカルでこまめにテスト回すぞっていうときもストレスは増えていきます。テストが1万件もあればしょうがないかな、という気にもなりますが、時に「あれ、なんかやたら遅いテストケースがあるぞ?」ということもあります。テストが遅い原因がプロダクトコードにあるのであればより問題です。
pythonのテストフレームワークはpytestを使っているので、以下pytestの場合はこんなことして遅い処理を探し出しているという備忘録。

主にやったことは以下の2つ。

① pytestの`–durations`オプションで処理時間の大きいテストケースを出力する
② [pytest-profiling](https://pypi.org/project/pytest-profiling/)でプロファイルして処理の遅い箇所を特定

# テストコード

本記事で使用したテストコードです。1~10000000の整数を順に突っ込んだリストを4パターンの方法で作成して最後にassertで比較しています。
**setup()**のなかでスリープを読んでいるの

元記事を表示

Djangoいまさらまとめ

# いまさらのDjangoまとめ
Web開発初心者。
チュートリアルを読み下した自分用メモ。

# Django

ジャンゴと発音。
※python3.6以降をサポートしている。

* pythonのウェブフレームワークの一つ
* ウェブフレームワークとは
webサービスの実装を手助けしてくれるテンプレートのこと。
ウェブサービスを作りやすいように、
ウェブフレームワーク側でいろいろな機能を提供してくれている。
Djangoの場合DBとやり取りが楽に書けるらしい。
ただし、制約:階層やファイル名の規則が定義されており、ちゃんと従わないと動かない。

## WSGI(web server gateway interface)
WebアプリケーションとWebサーバを接続するためのインターフェース
Apacheの代わりにWSGI使う。
Webサーバ上ではこれでDjangoを実行する。
本環境ではGunicornを使用

## Django標準のDB:sqlite3
Djangoではクエリ文がほぼ隠蔽されてる
代わりにmodelでデータ型を定義
他にもPostgreSQL,MySQL,Orac

元記事を表示

Tensorflow2.1.0をWindows10のAnacondaで使う!

#先に結論
**TensorFlow2.1.0がWindows10のPython3.7上で使えました!**
#まえがき
先日 TensorFlow 2.1.0 をGoogle Colabの環境を利用して使ってみました。
何の準備もせずに使えるのはこりゃあ便利だと感動しましたがローカルマシンで動かしたいのと以前から使っていたJupyter Notebook上でも動作させたいということで環境構築、テストをしてみました。
※Anacondaインストール済みからの構築となります。
##大まかな流れ
 1. **Anaconda Navigtor**で新しい仮想環境生成
 2. **Visual Studio 2015、2017 および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ**をインストール
 3. Anaconda Navigtorで**TensorFlow,matplotlib**などライブラリをインストール
 4. インストール確認
 5. 実際に**TensorFlow 2.0** を動かして手書き文字の認識をしてみよう
 私が詰まったのは2の項目

元記事を表示

ゼロから始めるLeetCode Day18 「53. Maximum Subarray」

#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetCode Day17「169. Majority Element」](https://qiita.com/KueharX/items/fac33d3e067cccfed148)

基本的にeasyのacceptanceが高い順から解いていこうかと思います。

元記事を表示

「関数型プログラミング」と「オブジェクト指向」ってなんやねんPython編

こ の 記 事 は 土 木 専 攻 の エ ン ジ ニ ア が 鼻 水 た ら し な が ら 書 き 上 げ た 努 力 の 結 晶 で す 。
ご 指 摘 は マ サ カ リ で な く 真 っ 白 な タ オ ル で も 投 げ つ け て く だ さ い 。

# ことの発端

ぼく「いやーしかしぼくもそこそこ長いことPyhton書いとるしもうPython完全に理解したんちゃうんかなー!」

ぼく「久々に[docs.python.org](docs.python.org)でもみるかー。今見たら全部わかるんちゃうかwww」

ぼく「[関数型プログラミング HOWTO](関数型プログラミング HOWTO)…?何やねんそれ…」

ぼく「えーと…?ほとんどのプログラミング言語は**手続き型**?で、入力に対して行うべきことをコンピューターに教える指示リスト?**オブジェクト指向**?はオブジェクトの集まりを操作する。オブジェクトには内部状態があり、その状態を調べたり変更したりするためのメソッドがある…?**関数型**?は問題をいくつかの関数に分けて考え、入力を待ち受けて出力を吐くだけで

元記事を表示

#Python基礎(#Numpy 2/2)

前回の記事の続きです。 [#Python基礎(#Numpy 1/2)](https://qiita.com/hiwasawa/items/8907980293acc90c82ca)
環境は以前の記事で作った環境を使用しています。 → [Windows10でpython開発準備](https://qiita.com/hiwasawa/items/2d802b3471d4be1da341)

# 1.Numpy 形状変換 reshape
1行6列の配列を2行3列に変換

“`python
import numpy as np

a = np.array([0,1,2,3,4,5])
b = a.reshape(2,3)
print(b)
“`
“`:実行結果
[[0 1 2]
[3 4 5]]
“`

reshapeの引数を-1にすることで、どのような形状の配列でも1次元配列に変換することができます。

“`python
import numpy as np

c = np.array([[[0, 1, 2],
[3, 4, 5]],

元記事を表示

DiscordのアクティビティをSlackのStatusに反映する話

# 概要
Discordのアクティビティ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563800/b6f7df35-7f1b-3b4c-4445-a34882e78260.png)

SlackのStatusに反映した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563800/a914e204-4b5c-dcbe-ed06-86a6874d6c72.png)

誰得なんだこれは…。

# discord.py
今回はDiscord APIのPythonライブラリである**discord.py**を利用する。

– [公式リファレンス](https://discordpy.readthedocs.io/ja/latest/index.html)

## 参考
Tokenの取得などは偉大なる先駆者の方々が既に記事を書いているのでそちらを参照してもらいたい。

– [Pythonで実

元記事を表示

python挑戦日記①

スクリーンショット 2020-05-07 3.44.42.png
スクリーンショット 2020-05-07 3.44.51.png
スクリーンショット 2020-05-07 3.44.59.png#Python基礎(#Numpy 1/2)

#1.Numpy
Numpy : Pythonの拡張モジュールで多次元配列を扱う際に便利

人より記憶メモリが少ない私はいつも、あれ?これどうだっけ?という状態に
陥ってその度に同じ検索ワードで検索をしてしまうのでこの機にメモしておこうと思います。

環境は以前の記事で作った環境を使用しています。 → [Windows10でpython開発準備](https://qiita.com/hiwasawa/items/2d802b3471d4be1da341)

#2.list to Numpy

pythonのリストからNumpy配列に変換する方法

“`
import numpy as np

a = np.array([0, 1, 2, 3, 4, 5]) # PythonのリストからNumPyの配列を作る
print(a)
“`
“`:実行結果
[0 1 2 3 4 5]

“`

###オブジェクトの型を取得・確認:type()関数
“`
print(type(a))
“`

“`:実行結果

元記事を表示

Django2 画面追加のフロー

# 前提
– Django 2.x

初心者向け。実践では大体こんな理解が良いかもという説明です。

# Django 2.x で画面を追加するフロー
大きく2ステップで考えるのが良いです。

## ステップ1
平行で進められる2つのフローで考えられます。

1. フローA
1. モデルを作成
2. フォームを作成
1. フローB
1. テンプレートを仮で作る
2. ビューを仮で作る
3. URLディスパッチャにビューを登録する

“仮で作る”というのはフローAに影響されないように考えればOKです。

![画面追加フロー_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542213/ad21107f-0c25-f6cf-4a40-256e421fc4c9.jpeg)

## ステップ2
ステップ1で作成したテンプレートとビューにモデルとフォームを組み込んでいきます。
この時点ではrunserverで画面を表示して、更新しながらインクリメンタルに開発するのが良いです。

![画面追

元記事を表示

Django2 View(ビュー)の構成パターン

# 前提
初心者向け。実践では大体こんな理解が良いかもという説明です。

# 環境
– Windows 10
– Python 3.7.x
– Django 2.2.x

# まずはView(ビュー)の初期構成を確認する
Djangoでは、はじめに次のコマンドでプロジェクトとアプリのひな形を作ります。

“`console:
> django-admin startproject some_project
> cd some_project
> python manage.py startapp some_app
“`

するとフォルダーの構成は以下になります。

“`console:
> tree /f some_project
C:\***\SOME_PROJECT
│ manage.py

├─some_app
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py # <= 初期のView(ビュー)は1ファイル構成 │ │ __init__.py │ │ │ └─mi

元記事を表示

Django2 Form(フォーム)のBound/Unboundと初期値の関係

# 前提
Djangoの基本的な機能を一通り使ったことがある程度の初心者向けです。

# 環境
– Windows 10
– Python 3.7.x
– Django 2.2.x

# はじめに
フォームを使う上でハマりがちだと感じる初期値設定の説明です。なお、説明では Form / ModelForm の違いを明確に区別しない場合があります。

## フォームを使うイメージ
まずは、フォームの大雑把なイメージを図示します。
![フォームイメージ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542213/7547b4a3-8d27-1759-e1d7-de69ab80f406.png)

## フォームの入力
次に、フォームの主要な入力項目(\_\_init\_\_()メソッドの引数の項目)まで表します。
![フォームイメージ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542213/df53da06-4bb1

元記事を表示

iPadの整備品をスクレイピングで取得し,Slackに通知

# はじめに
政府からの給付金も支給されるので,持ってなかったiPadを整備品で安く買いたい!と思いました.
整備品についてはこちら→https://www.apple.com/jp/shop/refurbished

僕が欲しかったのはiPad Air(第3世代)だったのですが,この記事を書いた時はなかなかの争奪で,新たに上げられてもすぐに瞬殺するほどです.
なので,他の人に先を越されないように定期的にスクレイピングして,Slackで通知することで,購入できるようにしようと思い,Pythonのプログラムを簡単に作成して,無事にiPad Airの整備品を買えたので,今回ご紹介します.

※今回はサイト一覧から販売されているリストを条件に応じて通知しているってだけなので,販売され続けていると定期実行されるたびに通知されるものなので,それが嫌な方はCSV駆使するなりして新たに上がったものだけを通知するようにしてください.

# 今回やったこと
## 用いたもの
・Python
・BeautifulSoup
・Slack API
・Windowsのタイムスケジューラ

### スクレイピング

元記事を表示

OTHERカテゴリの最新記事