Python関連のことを調べてみた2021年10月02日

Python関連のことを調べてみた2021年10月02日

DjangoにおけるSQLインジェクション

# はじめに
Djangoでの生のSQL文の正確な書き方の記事がほとんどないので、今回の記事の執筆に至りました。
最初にSQLインジェクションの基本事項を抑え後に、具体的にDjangoのSQLインジェクション対策について見ていきましょう。SQLインジェクションの基本事項は、[IPA 安全なアプリケーションの作り方- 1.1 SQLインジェクション](https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_1.html)を多く参考にさせていただきました。
# SQLインジェクションとは?
SQL文の組み立て方法に問題がある場合、攻撃によってデータベースの不正利用を行うこと。

# SQLインジェクションの種類
### インバウンドSQLインジェクション
webアプリケーションからのレスポンスを収集して脆弱性を分析し、その脆弱性をついたSQL文を実行し、データを盗んだり消去したりすること。さらに以下の二つに分けられる。
– エラーベースSQLインジェクション
攻撃者がデータベースに対してエラーメッセージを生成させるアクションを実行す

元記事を表示

PuLP で変数の和や内積を計算する際の注意点

## TL; DR
PuLP で大きなモデル作るなら、numpy や pandas の sum や dot の使用は避ける。最低でも `pulp.lpSum` と `pulp.lpDot` を使い、場合によっては `LpAffineExpression` を自前で定義する。

## はじめに

数理最適化、特に MILP のモデリングツールとして知られている PuLP だが、Python 標準の sum や numpy.sum を使うと、モデルの構築が非常に遅くなるケースがある。今回、次の計算の速度を測定した。

– ベクトルの要素の総和
– ベクトル同士の内積

実験環境は、Google Colaboratory の無償版。Jupyter notebook 上のセルで、10 回走らせたうちの最良の計算時間を採用した(`%%timeit -r 10 -n 1`)。Python のバージョンは 3.7 で、各ライブラリのバージョンは下記の通り。

– numpy==1.19.5
– pandas==1.1.5
– PuLP==2.5.0

## ベクトルの要素の総和

PuLP の変数

元記事を表示

Arch LinuxにJupyterLab Appをインストールする方法

# 概要

JupyterLab Appとは、Jupyter Notebookをデスクトップアプリとして利用できるようにしたアプリケーションです。

[jupyterlab/jupyterlab_app: A desktop application for JupyterLab, based on Electron.](https://github.com/jupyterlab/jupyterlab_app)

![1*ZbqjB3evW_yB_SKFjqliWA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7565/59fd5cc1-bcad-2656-7dd6-41b8b52cbb5d.png)

このアプリケーションはLinuxにも対応していますが、現在はDebian系とRedHat系しかパッケージが提供されていません。

https://github.com/jupyterlab/jupyterlab_app/releases/tag/v3.1.13-1

この記事ではdebパッケージをAr

元記事を表示

[メモ] docker-compose による Bottle の構築

## 概要

通常 Bottle 自体は 1ファイルなので Docker を使う必要は無いが、
K8s や Fluentd の検証でも活用できるので Docker (docker-compose) による構築手順をメモしておく.

# 構築する環境

Python 3.9.4 ベースの Bottle 59184 の動作環境を作る.
アクセスは `http://:59184/` である.

# ファイル構成

“`
.
|– PV
| `– bottle
| `– app
| `– main.py ………. bottle を使って実装していくコード
|– assets
| `– bottle
| |– Dockerfile
| `– requirements.txt
`– docker-compose.yml

“`

 

# ファイル詳細

## ./PV/bottle/app/main.py

“`python
#!/usr/bin/env python3
# -*- c

元記事を表示

【物体検出】Yolov5 で動画のモザイク処理を自動化してみる【動画編集】

#はじめに

YouTube等に動画を投稿する際に、人の顔や車のナンバーにはモザイク等の処理が必要になるかと思いますが、手作業でモザイク処理を施すにはかなりの労力を要します。
そこで、動画編集の省力化のため、人や車など特定の物体に対して自動でモザイク処理(有料動画編集ソフトなどは使用せず無料でできる方法)を考えます。

ここでは、動画から人や車などの特定の対象物に対してモザイク処理を自動化する一方法についてまとめます。画像中から物体検出により対象を特定したのち、その座標に対してモザイク処理を施します。物体検出はyolov5、モザイク処理はopencvを用います。なお、yolov5のクラスであれば、人や車以外にも例えば動物などでも同様に処理が可能です。また必要によりモデルを自作することで、任意の対象物への応用が可能となります。

#本記事の目標(成果物)
以下のように人や車にモザイク処理を自動化します。
物体検出に人を判定してモザイク処理を施します。
(物体検出の精度によってはあまり使えない場合もあるかもしれません。。)
フレームごとにモザイク処理をして、最後は動画に戻します。

![無

元記事を表示

ABC81 C – Not so Diverse を解いた

https://atcoder.jp/contests/abc081/tasks/arc086_a

![abc81_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/7405aa7b-807e-7030-ebc7-69245c71b096.png)
![abc81_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/5c6a1ff8-be15-de12-f633-6c9bea14fbee.png)
![abc81_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/3353e747-e0e2-94f3-e8da-6a6695720899.png)
![abc81_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73

元記事を表示

ABC 96C – Grid Repainting 2 を解いた

https://atcoder.jp/contests/abc096/tasks/abc096_c

![abc96_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/c00bc41d-7eb5-e628-4f67-58093cefd529.png)
![abc96_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/0ee7bfc0-4fb0-8919-4969-bb9b6e9a74d4.png)
![abc96_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/6d6486fd-b06d-c5fb-17b9-0b46def61b31.png)
![abc96_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73

元記事を表示

yolo v5で自作データを学習してすみっコたちを検知してみる

# はじめに

数式の基礎から初めて機械学習をある程度学習できたので、
練習も兼ねてYolo v5で自作データを用いて物体検知してみることにしました。

がyoloは学習から推論まで簡単に実施できるようになってるので、
あまり基礎から学んだことを使う機会はなかったですね。。。

とりあえず近くに子供のすみっコ人形たちが転がってたので、すみっコぐらしのメインキャラを判定してみました笑

# 開発環境

スマホ:写真撮影用
windows 10 ノートPC(GPUなし): 画像整理編集、物体検知実施
Google Colabo Pro : モデル学習

# 画像準備

## まずは撮影会

横向きで110枚ほど撮影。
全然足りない気もしますがまぁお試しなので。
![IMG_20210930_225524.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131606/2d247f65-a5d1-d311-4bd4-12ea740b45e3.jpeg)

## リサイズ

今回スマホで画像を撮影しており、画面サイ

元記事を表示

最新のツイートをLCDに定期的に表示する人形を作ってみた

Maker Faire Tokyo 2021のブース出展用に『ミニチュアツイート人形』という作品を作成しました。この記事ではこの作品について紹介します。

# ミニチュアツイート人形とは
ミニチュアツイート人形はRaspberry Pi、グラフィックLCD、Power Automate、kintoneとTwitterを組み合わせた作品です。Twitter上で他人がつぶやかれたツイート情報を定期的にkintoneのアプリに記録させ、ツイートの内容をグラフィックLCDに表示をさせます。作品のガワはブロック玩具で作られています。

![IMG_2300.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100542/b0291580-563f-554c-6964-8ec53bd52fc6.jpeg)

# 作り方

この作品の作り方について案内をします。

## 1. Raspberry Pi と LCDをつなげる
この作品では下記の機器を利用しました:
– Raspberry Pi 3
– [TG1286

元記事を表示

matplotlibでローソク足を自作する

# やること
pythonでローソク足を表示する方法として、mplfinanceというライブラリがあります。
だいたいはこれで事足りるのですが、ローソク足チャートをsubplotとして使いたいとき、カスタマイズしたいとき、どうすればいいかわからなかったので、自作してみることにしました。
↓こんな感じのチャートをmatplotlibで自作します。

![スクリーンショット 2021-10-01 23.34.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1640073/3d5628c8-6738-cb8e-69bf-ab4fb9aa9532.png)

# 実装
matplotlibのAxesオブジェクトとローソク足データの入ったDataFrameを渡して、ローソク足を描画する関数を作りました。

“`python
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import dates as mdates
d

元記事を表示

Ubuntuでfish shell導入したらanacondaが使えなくなった問題の備忘録

# はじめに
最近Ubuntu 20.04のPCにfish shellを導入したのですが、anacondaのcondaコマンドを認識しなくなってしまったのでその対処の備忘録になります。

# 環境
* Ubuntu 20.04 LTS
* conda 4.10.1
* fish 3.1.0

# 参考にしたサイト
毎度先人の方々にはお世話になっております。
ありがとうございます m(_ _)m

[Mention how to enable Anaconda in fish shell #1](https://github.com/gtrichards/PHYS_T480_F18/issues/1)
[fish shell で pyenv anaconda環境の初期設定(mac)](https://qiita.com/snara/items/632d42aa8e98c4658aeb)
[fish shell で conda の仮想環境を有効化するための設定](https://org-technology.com/posts/fish-conda.html)

# 問題①condaコマン

元記事を表示

Google Colaboratoryでデバッグを行う方法

デバッグを行いたい場所に以下のコードを入力します。

“`python
from IPython.core.debugger import Pdb; Pdb().set_trace()
“`

このコードを読み込まれた時点で、Python 標準のデバッグツールである pdb が起動します。

pdbの基本的なコマンドは以下のとおりです。

– h [command]:ヘルプを出す
– p [expression]:式を評価して出力する
– n:次の行へ
– c:次のブレークポイントへ
– q:その場で終了する

他にもいろんなコマンドがあるので[pdbコマンド一覧](https://appletree.or.kr/quick_reference_cards/Python/Python%20Debugger%20Cheatsheet.pdf)を見てみるといいかもです。

[w:スタックトレースを含んだ現在位置を示す] コマンドなんかはどのような手順で関数が呼び出されたのかを把握できたりするので便利です。

# 具体例

例えば、以下の例を見てみましょう。

“`python
de

元記事を表示

都道府県・都市・町情報をテーブル管理したい

# はじめに

都道府県・都市・町情報をサービスなどで管理するには、一般的にはGoogle Maps APIなどの力を借りてなるべく自分たちで実装しなくて済むようにするのが一番だと思います(住所などの情報は、頻繁ではないものの更新されていくものなので)

ただ、自前でテーブルを作ったりしないと検索機能をつくれなかったり、機械学習の特徴量として位置情報を利用したかったりなどの場合にはどうしても必要になるタイミングがあると思います。

# 政府統計の境界データ

[政府統計のe-Stat](https://www.e-stat.go.jp/gis/statmap-search?page=1&type=2&aggregateUnitForBoundary=A&toukeiCode=00200521&toukeiYear=2015&serveyId=A002005212015&datum=2000&coordsys=1&format=shape)というサイトがあり、ここでは各町毎の境界データがダウンロードできます。

今回は東京都全域の境界データをみていきます。

## shapeファイル

元記事を表示

DataFrameの行を重複なしで組合せる

データセット、例えば3つの特性からなる5回分の試験データがあったとして、5回分の試験データを重複なしで組み合わせて平均をとるなりの処理をしたいときの方法をメモします。

まず、サンプルデータを作ります。

“`python
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(3, 5),
columns={’sy’, ’su’, ‘elong’],
index=[‘a’, ‘b’, ‘c’, ‘d’, ‘e’])
“`

dfの中身はつぎのようになります。

“`
sy su el
a 0.131750 0.469233 0.032909
b 0.433968 0.014887 0.557556
c 0.611954 0.148562 0.172844
d 0.166242 0.230893 0.70

元記事を表示

プログラミング学習 Day2

#前回の復習
– pythonはAIや機械学習が得意
– pythonの現在のバージョンは3.台(2021年現在)

#goole colaboratory
– グーグルが無料で提供
– 早い実行などが必要なときは優良バージョンも
– 一定期間操作しないとプログラムが消えてしまう
– 1つのプログラムに1つのノートブック
– ブラウザで動いてるわけではなくクラウド上のサーバで計算されている
– 333.3333333333*3が1,000になるときもならないときもある(999.9999999になる)
– 32bitOSなら1つの数値を保存するのに32bitしか使用できないので無限小数点は無限には表記できない
– しっかりと数字を計算するのは結構難しい(言語による)
– 課題は答え合わせはせずに自分で検索して答えにたどり着く、それがプログラミングの勉強の仕方

#pythonでの型
– str 文字列
– int 整数
– float 浮動小数点
– bool ブール TrueかFalseか
– Nonetype 型なし None

#定数と変数
-値がかわらないもの。1とか2とか。

元記事を表示

Javaに慣れている人向けのPython基本文法のメモ

Javaに慣れた人(自分)からすると、一見、見慣れなかったり奇妙だと思える記法があるためメモ

# python 基本文法

# import

module をインポートします

“`
import as
“`

module 内のmethodやvariableをimportします

“`
import from [as ]
import from [as ]
“`

import の指定にドット区切りのものを指定するケースは、パッケージ内パッケージとからしい。(追記予定)

https://qiita.com/hiroyuki_mrp/items/4b7102709e6582b9dd15

## 関数引数

スプレッド演算子のような使い方で関数の引数に値を渡すことができる。

tuple / arrayを展開して引数に与える

“`python
arr = (1,2,3)
print(*arr)
arr = [1,2,3]
print(*arr

元記事を表示

【Python × SQLite3 × DB Browser for SQLite】 PythonでDBを作成して、中身を確認する

#目的
タイトルの通り。
Pythonにて標準ライブラリsqlite3を使用してデータベースを作成、
DB Browser for SQLiteを使用して中身を確認。

# Pythonにて標準ライブラリsqlite3を使用してデータベースを作成
“`make_db.py
# データベースに文章を保存

# ライブラリをインポート
import sqlite3

db_name = “ManyTexts.db”
# データベースを作成
connect = sqlite3.connect(db_name)
cur = connect.cursor()

cur.execute(‘CREATE TABLE users(id INTEGER, name STRING , birthday STRING)’)

# データの挿入
cur.execute(“INSERT INTO users VALUES (1, ‘煌木 太郎’, ‘2001-01-01’)”)
cur.execute(“INSERT INTO users VALUES (2, ‘学習 次郎’, ‘2006-05-05’

元記事を表示

【自然言語処理】BERTを利用して論文のアブストラクトから類似文章を解析

1.本記事の目的、学習内容
2.今回学習したBERTについて
3.実施手順一覧
4.学習内容の考察

###1.本記事の目的、学習内容
自身の学んでいる、また仕事としている分野において調査を進めていく際に関連論文のアブストラクトを検索し抽出し、より類似性の高い記事をピックアップを行うことで調査を効率化することを目標として自然言語処理を学習しています。

###2.今回学習したBERTについて
BERTとは、2018年にGoogleから発表された自然言語処理モデルのことです。
最大の特徴は「文脈を読むことが可能になった」ことで、多様なタスクにおいて当時の最高スコアを叩き出し、スマートスピーカーなどの性能を革新的に飛躍させた技術であり、自然言語処理という分野の中では私たちの暮らしの一番身近にある検索エンジンに利用されている身近な技術の一つです。
日本では、日立ソリューションズは「活文 知的情報マイニング」などに導入されています。

###3.実施手順

※実行環境はGoogle Colaboratoryを使用しました。
また、こちらのブログを参考に作成させていただきました。
http

元記事を表示

【AI・機械学習入門】初心者のためのPython学習方法

## はじめに
こちらの記事を書くまえに簡単な自己紹介からさせていただきます。

はじめまして、**katzed**と申します。
katzeはドイツ語で猫を、dazeは英語で夢中を意味します。
はい、言わずもがな猫好きです?!でも、飼ったことはありません…

私は、AI搭載のコミュニケーションロボットにメンタルを癒された経験があり、
それをきっかけで、AIを強く学びたいと思いました。
**2021年7月**からAIを学びはじめ今に至ります。

## 本記事の対象となる方
– **プログラミング初心者**
– **Pythonを学習するにあたり、参考教材に悩んでいる方**

## AIを学習するなら、Pythonをまず知ろう
なぜ **Python** なのかというと、**AIを学習するのに便利なライブラリが揃っているから**です。
具体的には、**numpy, pandas, seaborn, scikit-learn, tensorflow, keras, pytorch**
などがあげられます。

これらのライブラリを駆使することで、機械学習やDeep Learningを実装す

元記事を表示

初心者がFlaskのアプリをHerokuでデプロイする

# 概要と目的
 はじめまして、プログラミング初心者です。プログラミングを学習する上で、何か成果物を残すのは大事なことです。なので私は`Python`の学習の成果物として、`Flask`を用いたWebアプリを制作しました。
 制作したWebアプリを公開しようという事で、無料サーバの`Heroku`と`Git`によるリポジトリ操作について学びました。色々なサイトを参考にしたのですが、所々つまづくことがあったので、自分用にまとめた記事を作ることにしました。

### 目的

– Flaskの簡単なアプリを作る
– ローカルな仮想環境でFlaskのアプリを動かす
– HerokuとGitでデプロイする

### 実行環境
– 日時:2021/09/26
– OS:windows10
– Python 3.9
– Flask 2.0.1
– pip 21.2.4

# ① FlaskでWebアプリを作る
 `Flask`と`Python`用の、軽量なウェブアプリケーションフレームワークです。同様のフレームワーク`Django`に比べて軽量で、最小限の機能で1から設計することが可能です。今回はサ

元記事を表示

OTHERカテゴリの最新記事