- 1. Cloud Functionsで文字コードを変換する
- 2. paizaラーニング「二次元配列の入力 1 Python3編」
- 3. paizaラーニング「i 行目 j 列目の出力 Python3編」
- 4. paizaラーニング「各行の要素数の出力 Python3編」
- 5. paizaラーニング「列数の出力 Python3編」
- 6. paizaラーニング「行数の出力 Python3編」
- 7. Elastic Cloud, App Search, Docker, Python, React Search UI を使った Elastic サンプルアプリのご紹介
- 8. paizaラーニング「全要素の出力 Python3編」
- 9. python key関数を用いたソートを行おう!(備忘録)
- 10. paizaラーニング「要素数の出力 Python3編」
- 11. 【Python】顔認識システムについて
- 12. 画像サーバーをLambda移管した時のお話
- 13. Pythonでファイルの文字コードを自動判別
- 14. Python 標準ライブラリ types の紹介
- 15. python で、代入式(walrus演算子、セイウチ演算子)を使おう!②(備忘録)
- 16. python で、代入文(walrus演算子)を使おう!①(備忘録)
- 17. pathlibでディレクトリを再帰的に検索してファイルリストを表示する
- 18. 【Python】クラス・インスタンス化の学習のため、トランプゲーム「ブラックジャック」をコーディングしてみた
- 19. InfluxDB v2: 時系列データの取り扱い例
- 20. PythonでOpenCVからGStreamerを使うためのOpenCV4.6.0のBuildについて
Cloud Functionsで文字コードを変換する
本記事は[GCP(Google Cloud Platform) Advent Calendar 2022 7日目](https://qiita.com/advent-calendar/2022/gcp)の記事です。
## 概要
Shift-JISのCSVファイルをBigQueryにアップロードする場合、UTF-8に変換する必要があります。毎回ローカルで文字コード変換していたのですが、めんどくさくなってきたのでCloud Functionsを使って自動化しようと思います。調べると同じような事に課題を感じている人は多くやり方を記述されたブログも見つけましたが自分としてはサービスアカウントなどの設定で結構詰まったのでその辺も調べて書きました。
#### 今回作るもの
* Google StrageバケットにアップロードされたShift-JISのファイルをUTF-8に変換して、別のバケットに保存するもの。
* トリガーはGoogle Strageにファイルがアップロードされた時とする。
#### 今回対象としないこと
* 対象ファイルが大容量の場合
* Cloud F
paizaラーニング「二次元配列の入力 1 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step1
#### 私の解答
“`Python3
li = [[1, 3, 5, 7], [8, 1, 3, 8]]
for i in range(len(li)):
print(*li[i])
“`
@WolfMoon先生の模範解答を参考にさせていただきました。
ありがとうございます。
#### 解答例
“`Python3
li = [[1, 3, 5, 7], [8, 1, 3, 8]]
for i in range(len(li)):
for j in range(len(li[i])):
print(li[i][j], end=””)if j < len(li[i]) - 1: print(end=" ") else: print() ```
paizaラーニング「i 行目 j 列目の出力 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_output_step6
#### 私の解答
“`Python3
li = [[1, 2, 3], [8, 1, 3], [10, 100, 1]]
print(li[1][2])
“`
解答例と全く同じになりました!!
#### 解答例
“`Python3
li = [[1, 2, 3], [8, 1, 3], [10, 100, 1]]
print(li[1][2])
“`
paizaラーニング「各行の要素数の出力 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_output_step5
#### 私の解答
“`Python3
li = [[1],[2, 3],[4, 5, 6]]
for i in range(len(li)):
print(len(li[i]))
“`
#### 解答例
“`Python3
li = [[1], [2, 3], [4, 5, 6]]
for ele_li in li:
print(len(ele_li))
“`
– for ele_li in li: で変数 ele_li に変数 li の各要素が順に代入されます。
– for ele_li in li: のループ処理内で、len 関数を用いて変数 ele_li の要素数を出力することで求められている出力ができます。
paizaラーニング「列数の出力 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_output_step4
#### 私の解答
“`Python
li = [[1, 2, 3, 4], [6, 5, 4, 3], [8, 1, 3, 1]]
print(len(li[0]))
“`
前出の問題の解答例を参考にしたので、解答例と同じになりました。
#### 解答例
“`Python
li = [[1, 2, 3, 4], [6, 5, 4, 3], [3, 1, 8, 1]]
print(len(li[0]))
“`
paizaラーニング「行数の出力 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_output_step3
#### 私の解答
“`Python3
li = [[1, 2, 3],[ 4, 5, 6], [8, 1, 3]]
print(len(li))
“`
前出の問題の解答例を参考にしたので、解答例と同じになりました。#### 解答例
“`Python3
li = [[1, 2, 3], [4, 5, 6], [8, 1, 3]]
print(len(li))
“`
Elastic Cloud, App Search, Docker, Python, React Search UI を使った Elastic サンプルアプリのご紹介
## 開発者にリッチな検索ソリューションの構築方法を紹介するエンドツーエンドのデモ
皆様こんにちは!
公開は既に半年ほど前になりますが、良いコンテンツなのでこの機会にブログにしておきますね。[第48回 Elasticsearch勉強会 2022.6.29 #elasticsearchjp](https://www.meetup.com/ja-JP/tokyo-elastic-fantastics/events/286154124/) のセッションでご紹介した簡単なチュートリアル、Elastiflix です。
当日のスライドは[こちら](https://www.slideshare.net/shosuz/building-a-search-experience-with-elastic-introducing-elastics-latest-sample-apps-using-app-search-elastic-cloud-docker-python-and-react-search-uipdf) になります。
これは Elastic 本社の Product Marketing Man
paizaラーニング「全要素の出力 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_output_step2
#### 私の解答
“`Python3
a = [6, 5, 4, 3, 2, 1]
b = [3, 1, 8, 8, 1, 3]
for i in range(5):
print(a[i],end=” “)
print(a[5])
for j in range(5):
print(b[j],end=” “)
print(b[5])
“`
私の解答はカッコ悪いですね。。。
#### 解答例
“`Python3
li = [[6, 5, 4, 3, 2, 1], [3, 1, 8, 8, 1, 3]]for i in range(len(li)):
for j in range(len(li[i])):
print(li[i][j], end=””)if j < len(li[i]) - 1: print(end=" ")
python key関数を用いたソートを行おう!(備忘録)
## sortメソッドについて
組み込み型にlistは、いろいろな基準でlistの要素を順序で整列するsortメソッドが存在する!~~~python
# sort()を用いてlist内の要素を小さいものから大きいものに並び変える
numbers = [100, 38, 2, 13, 67]
numbers.sort()
print(numbers)# 出力結果
>>>
[2, 13, 38, 67, 100]
~~~sortメソッドは、文字列や、浮動小数点数などでは動作するが、オブジェクトでは動作しない。
~~~python
class stationary:
def __init__(self, name, weight):
self.name = name
self.weight = weightdef __repr__(self):
return f’stationary({self.name!r}, {self.weight})’various_stationery = [
paizaラーニング「要素数の出力 Python3編」
https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_output_step1
#### 私の解答
“`Python3
a=[1, 2, 3, 4, 5, 6]
b=[8, 1, 3, 3, 1, 8]
c=[a,b]
print(len(a)+len(b))
“`
解答例とは若干異なりました。
#### 解答例
“`Python3
li = [[1, 2, 3, 4, 5, 6], [8, 1, 3, 1, 3, 8]]
print(len(li) * len(li[0]))
“`
– Python3 では、リストの要素にリストを入れることも可能です。
– 配列の要素の総数は (配列の行数) * (配列の列数) で求めることができます。
行数、列数の求め方を以下で説明します。
– 【 行数の求め方 】
– len 関数で求めます。
– len(li) は、変数 li の要素数がいくつかを返します。今回の場合、変数 li が持っている要素は以下の 2 つです。
【Python】顔認識システムについて
# はじめに
今回はPythonでPCのカメラからリアルタイムで人の顔を認識して顔認識していないとカメラのシャッターを切れないようなプログラムを作成しました。# 全体のプログラム
“`Python:face_detect.py
import cv2 as cv
from datetime import datetimeHAAR_FILE = “haarcascade_frontalface_default.xml”
cascade = cv.CascadeClassifier(HAAR_FILE)cap = cv.VideoCapture(0)
while(True):
ret, frame = cap.read()face = cascade.detectMultiScale(frame)
k = cv.waitKey(1)&0xff # キー入力を待つfor x, y, w, h in face:
cv.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),1) #顔を認識したら
画像サーバーをLambda移管した時のお話
# 0.はじめに
無尽蔵にアクセスが考えられる画像に対して、まずnginxへアクセスを行い、キャッシュを挟んだ上でリバースプロキシでApacheへアクセスし、S3から画像を取得し、指定サイズにリサイズを行った上で返すアプリケーションを運用していました。
サーバーへのアクセス数は月間で数億あったため、水平スケールを拡大して数年間動いていました。
ただ、ある日突然のアクセススパイクが発生し、サーバーが応答しない事態が発生しました。
応急的にサーバーの水平スケールを拡大して対応しましたが、そもそもこれアプリケーション挟む必要あるのか…と考えてサーバーレスサービスへの移管を検討しました。
旧環境はオンプレ環境だったため、S3へのアクセスも物理的コストが高かったため、Lambdaを採用して環境を移管する事にしました。
# 1.Lambda環境の構築
以前はPHPでAWS SDKでS3から画像を取得⇒imagemagickでリサイズを行っていましたが、Python3.9を採用したため、PILとbotoで画像処理とS3からの画像取得を行いました。
**※パスはお使いのS3に最適化
Pythonでファイルの文字コードを自動判別
## 背景
### 文字コードでエラーになる
皆さんはPythonを実行する際に、読み込んだファイルの文字コードが予定したものと違ったということはありませんか?
私はpipのライブラリ一覧をエクスポートした際に「UTF-8」と「UTF-16」になるということがあったので、備忘録として残しておきます。## 自動で文字コードを判別するために
### 使用したライブラリ
**chardet**というライブラリを使用することによって解決できました。
公式ドキュメント:https://chardet.readthedocs.io/en/latest/### ライブラリをインストール
> $ pip install chardet### コードサンプル
“`python
from chardet import detect# まず対象ファイルをバイナリーで読み込む
with open(“<対象ファイル>“, ‘rb’) as bf:
binary_data = bf.read()
encode_data = detect(binary_data)# 再度フ
Python 標準ライブラリ types の紹介
Python [types][link-types] ライブラリ。標準ライブラリでありながら名前から何をしてくれるライブラリなのかがわかりにくい一品です。そんな [types][link-types] を紹介します。
頭の片隅に置いておくと、ふとした時に役に立つ、そんないぶし銀なライブラリです。
[link-types]: https://docs.python.org/ja/3/library/types.html
## [組み込み型](https://docs.python.org/ja/3.10/library/types.html#standard-interpreter-types)へのアクセス
組み込みインスタンス None の型は? 関数オブジェクトの型は? types ライブラリはそういった「builtin 空間に置くほどではない、しかしそれでもインタプリタが使用していて存在している型」へのアクセスのための口であります。“`python
>>> types.NoneType is type(None)
True>>> def a(): pass
>>>
python で、代入式(walrus演算子、セイウチ演算子)を使おう!②(備忘録)
python で、[代入式(walrus演算子、セイウチ演算子)を使おう!①(備忘録)](https://qiita.com/1023shogo2013/items/2d58893faac32f82cbd0)の続きです。
~~~python
# 野菜ジュース屋台の在庫
vegetables = {
‘tomato’: 15,
‘melon’: 9,
‘goya’: 5
}
~~~
## 事例②(代入式なし)
次にトマトジュースの注文が入りました。
トマトは5個使います。
~~~python
def make_tomato_juice(count):
passdef out_of_stock():
print(‘out_of_stock’)count = vegetables.get(‘tomato’, 0)
if count >= 5:
make_tomato_juice(count)
else:
out_of_stock()
~~~
この場合も、if文の1行目だけで使うcountを無駄に強調してしまっています
python で、代入文(walrus演算子)を使おう!①(備忘録)
### 代入文を使ってコードを短くしよう!
代入文は、walrus演算子:=を使って、変数名への代入と値の評価を1文で行うものです。
## 代入式の発音
~~~python
A := B(A ウォルラス B)
~~~## 事例①(代入文を使わない場合)
野菜ジュース専門の屋台があります。野菜の在庫を以下のように定義します
~~~python
vegetables = {
‘tomato’: 15,
‘melons’: 9,
‘goya’: 5
}
~~~
お客さんからメロンジュースの注文を受けて、メロンの在庫を確認してからジュースを作ります。~~~
def make_melon_juice(count):
return melon_juicedef out_of_stock():
print(‘out_of_stock’)count = vegetables.get(‘melon’, 0)
if count:
make_melon_juice(count)
else:
out_of_stock()
~
pathlibでディレクトリを再帰的に検索してファイルリストを表示する
### 実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/8bee7373-1a88-df18-d036-3a3fe719bdf8.png)### ソース
“`get_file_list.py
# -*- cording: cp932 -*-
from pathlib import Pathdef main():
get_file_list()def get_file_list():
parent_path = “C:\\Windows\\boot”
str_header = “ファイルパス”
print(str_header)
p = Path(parent_path)
l = list(p.glob(“**/*”))
for element in l:
if element.is_file():
s_element = str(element)
【Python】クラス・インスタンス化の学習のため、トランプゲーム「ブラックジャック」をコーディングしてみた
# 概要
現在、プログラミングの勉強をしているが、クラスの概念について理解が乏しく、クラスを使って実現できるコーディングしやすいゲームは何かを考えたとき、ブラックジャックが頭に浮かび、早速コーディングしてみようと思った。今回はターミナル上でコード実行することを想定してコーディングを進めた。
# 目次
[・ そもそもどういう遊びか?](#そもそもどういう遊びか?)
[・ コード作成フロー](#コード作成フロー)
[・ 実際のコーディング](#実際のコーディング)
[・ 動作結果](#動作結果)
[・ さらに良いコードにするために](#さらに良いコードにするために)
[・ まとめ](#まとめ)# そもそもどういう遊びか?
ブラックジャックは最初に2枚のトランプカードが配られ、追加でカードを引いていくことで手持ちのカードの合計を21に近づけていくゲームである。
J(ジャック)、Q(クイーン)、K(キング)は10として扱う。
A(エース)は1か10として扱い、基本的に10で扱って21を超えてしまう場合は1として扱う。
21を超えてしまうとドボンで、最下位扱いとなる。# コード
InfluxDB v2: 時系列データの取り扱い例
## データの書き込み
2秒間隔で、6つのデータを書き込みます。“`py:write_temperature.py
#! /usr/bin/python
#
# write_temperature.py
#
# Dec/05/2022
# ——————————————————————
import sys
import time
import influxdb_client
from influxdb_client.client.write_api import SYNCHRONOUS
# ——————————————————————bucket = “tochigi”
org = “ekzemplaro”
token = ‘****VpyyJg6nskHEwcl6bMsjc1vyzY9b11hSyGiQMOg==’
#
url=”http://localhost:8086″sys.stde
PythonでOpenCVからGStreamerを使うためのOpenCV4.6.0のBuildについて
## 概要
GStreamerはデータの送受信をパイプライン的に処理できる仕組みで、映像送受信に使うと便利です。さらに映像送受信時に合わせてOpenCVで映像処理することも可能です。
GStreamerとOpenCVを組み合わせるにはOpenCVからGStreamerを呼び出す方法が一般的です。しかしOpenCVからGStreamerを呼び出すためににはOpenCVをソースコードからビルドする必要があり、加えてWindows環境で使用できるようにするまでに苦労したのでその手順を記載したいと思います。## 実行環境
– Windows11
– CMake 3.24.2
– Visual studio communication 2019
– GStreamer 1.16.2
– OpenCV 4.6.0
– Python 3.10## 前提
以下のサイトを参考に進めていきますが、Versionが古いものは新しくしていますhttps://towardsdatascience.com/opencv-with-gstreamer-and-qt-on-windows-6f0fdb07