- 1. Pythonのasync/await
- 2. 名刺バインダー管理 (paizaランク B 相当):Python3解答例
- 3. 【合格体験記】Python 3 エンジニア認定実践試験
- 4. Python3: Fizz Buzz (paizaランク C 相当)やってみた
- 5. 【python】単語のカウント問題を解きました
- 6. 素人が大会を盛り上げるSlackボットをDifyで作ってみた
- 7. pythonのwebdriverを使っていたところOSErrorが出た件
- 8. 「mapitool.exe」(ruby-msg)を代替するPython版mapitool(暫定)の作成
- 9. MinecraftのDataPackのテンプレートをPythonで構築してみる
- 10. 動体検知監視カメラ
- 11. CNNで画像分類をやってみました
- 12. 【Python】watchdogでファイルの変更を検知して非同期で処理する方法
- 13. matplotlibを用いたグラフ描写にてTimes New Romanのフォントを利用する方法
- 14. paiza×Qiitaコラボキャンペーンなので、恥を忍んで投稿します!
- 15. ポテトチップスの方程式
- 16. httpbinをk8s環境にデプロイする
- 17. 【合格体験記】Python 3 エンジニア認定データ分析試験
- 18. 自分がよく個人開発で使うターミナルコマンドまとめ(フレームワークなど)
- 19. MySQLコンテナにコンテナ間接続できない時
- 20. 【Python】Seleniumで読み込み待ちができない場合の対処方法
Pythonのasync/await
Pythonの`async`と`await`キーワードは非同期タスクを管理するために使用されます。
非同期プログラミングは、他のタスクをブロックすることなく複数のタスクを同時に処理できるようにします。Pythonでは、コルーチンを使用してこれを実現します。
`async`キーワードは、関数を非同期コルーチンとして定義するために使用され、`await`キーワードはコルーチン関数内で別のコルーチンの実行を待つために使用されます。
### コルーチンとは何か?
コルーチンは、特定のポイントで実行を一時停止し、再開する機能を持つ通常の関数とほぼ同じです。これにより、非ブロッキング動作が可能になり、コルーチンの実行が遅延した場合や、他のコードを実行するために意図的に実行を一時停止することができます。コルーチンはジェネレータ関数と非常に密接に関連しています。実際、Python 3.5で`async`と`await`が導入される以前は、ジェネレータ関数を特別な方法で使用してコルーチンを実装していました。
Python 3.5以降のバージョンでは、`async`と`await`という2つの
名刺バインダー管理 (paizaランク B 相当):Python3解答例
### 背景
![スクリーンショット 2024-08-17 20.24.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527611/015c47bf-1587-6236-3af8-9e1eaf57f0b3.png)1枚のファイルには、n個のポケットが横に並んでおり、表と裏の両面から名刺を眺めることができます。
このため、1つのポケットには、2枚の名刺が背中合わせに入っています。– 1番からn番の名刺は、1枚目のファイルの表面から見たときに左詰めに並んでおり、
– n+1番から2n番の名刺は、1枚目のファイルの裏面から見たときに左詰めに並んでいます。
– 2枚目以降のファイルにも同様に名刺が並んでいますこのプログラムは、名刺を収納したバインダーにおいて、与えられた名刺番号 `m` に対応する裏側の名刺番号を求めるものです。各ポケットには2枚の名刺が背中合わせに入っており、1枚のファイルには `n` 個のポケットが並んでいます。
### 全体のコード
以上のステップをまとめると、最終
【合格体験記】Python 3 エンジニア認定実践試験
## はじめに
前回に続き、Python 3 エンジニア認定実践試験の受験所感を記事にしようと思います。
Python 3 エンジニア認定データ分析試験は以下記事にしているので、よろしければ併せてご覧ください。https://qiita.com/mmm_qiita/items/77f6050acb9254d4d04a
## Python 3 エンジニア認定実践試験とは
概要は以下となります。:::note warn
記事投稿時の情報となり、内容が変更される可能性がありますので、受験される際はご自身でもお調べいただくことをおすすめいたします。
:::| 内容 | 詳細 |
| —- | —- |
| 主催 | 一般社団法人Pythonエンジニア育成推進協会 |
| 試験内容 | ・より実践的なPython文法を出題
※Python 3 エンジニア認定基礎試験の上位資格 |
| 試験時間 | 75分 |
| 試験形式 | 選択式 |
| 問題数 | 40問 |
| 合格ライン | 70%(28問以上の正解で合格) |
| 受験料金 | 一般: 13,200円(
Python3: Fizz Buzz (paizaランク C 相当)やってみた
分岐の問題なんですが、単純な繰り返しでもある。
https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz
“`py:
def fizzbuzz_gen():
F = “Fizz”
B = “Buzz”
FB = “Fizz Buzz”
i = 0
while True:
yield from (
i+1, i+2, F, i+4, B
, F, i+7, i+8, F, B
, i+11, F, i+13, i+14, FB
)
i += 15fb = fizzbuzz_gen()
N = int(input())
for _ in range(N):
print(next(fb))
“`
分岐なしでやってみました。無駄な演算をなるべく減らしてみます。“`py:
unbox = lambda *xs: xs[-1]
【python】単語のカウント問題を解きました
# はじめに
paiza様のpython問題集から、単語のカウント問題を解きました## 問題
>スペースで区切られた英単語列が与えられます。
>英単語列に含まれる英単語の出現回数を出現した順番に出力してください。## 実装したソースコード
“`python
array1 = input().split(‘ ‘)
array2 = []
for x in array1:
if x not in array2:
array2.append(x)for y in array2:
count = 0
for z in array1:
if z == y:
count += 1
print(y + ” ” + str(count))
“`## 実行した結果
![test1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1055346/50a9fe59-5c4c-ed95-ce1a-fcc591340e4b
素人が大会を盛り上げるSlackボットをDifyで作ってみた
# はじめに
[技術チャレンジ部](https://challenge-club.connpass.com/)のとも(Tomo)です。チームTPACで[自動運転AIチャレンジ2024](https://www.jsae.or.jp/jaaic/2024ver/summary/)に[参加中](https://www.jsae.or.jp/jaaic/2024ver/contest/)です。
[こちらの記事](https://qiita.com/tomo-v/items/6aeec8c27cc5586d4fa8)で作ってみたDiscordのボットを、Slackに移植してみました。https://qiita.com/tomo-v/items/6aeec8c27cc5586d4fa8
素人なので、変なことを言っていたらすいません!
# 設計方針
Discordで作ったボットのアーキテクチャをなるべく流用するために、以下の方針としました。
– PythonのライブラリからSlack APIを使用する
– Pythonスクリプトがクライアントになる# Slackのボット
## フレーム
pythonのwebdriverを使っていたところOSErrorが出た件
# エラー内容
毎日のようにbatファイルからpythonをタスクスケジューラ実行しているのですが、先日いきなりこのようなログが返ってきました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3480692/f368ee41-e555-5b28-7520-bc6df85853ed.png)
OSError:[WinError 193] %1 は有効なWin32アプリケーションではありません。
# 対処方法
Webdriverで困ったときはだいたいツイッターで検索して対処法を探すのですが、
今回もツイッターで既に対応方法を書いている方がいらっしゃいました。https://x.com/alt_ego_project/status/1817923781748535785
最新版のアップデート
pip install webdriver_manager –upgradeよく分かりませんが、こちらを実行すると問題なくpythonがまた実行できるようになりました。
私ももっとwe
「mapitool.exe」(ruby-msg)を代替するPython版mapitool(暫定)の作成
# 1. きっかけ
こちらの[『IIJ セキュアMX』Windows環境で動作する「SMX迷惑メール誤判定報告ツール」を作成しておきました](https://qiita.com/hiro-matsumoto/items/d62f09cf46ded2621a44)にて、
OutlookのMSG形式メールをeml形式に変換するツールとして、
rubyで作成された「mapitool-1.5.0-mswin32-stand_alone.zip」(ruby-msg)を使っていました。(cles::blog 平常心是道 様)[.msg を .eml に変換する (ruby-msg編)](https://blog.cles.jp/item/6664)
(Githubリポジトリ) https://github.com/aquasync/ruby-msg
(Google Code Archive)https://code.google.com/archive/p/ruby-msg(Qiita)[Outlook のメールデータ:インポート・エクスポート](https://qiita.com/ke
MinecraftのDataPackのテンプレートをPythonで構築してみる
## はじめに
Minecraftのデータパック製作で関数を作ってささっと試したいとき、それにいちいち手間をかけないで爆速でデータパックの準備を済ませたいと思ったことありますね?
今回はPyhtonでMinecraftのデータパックの土台を自動構築していこうと思います。## 環境
Python: 3.12.5Minecraft: 1.21
OS: Windows 11
## やること
Pythonをインストールしてない人はインストールしちゃってください。
https://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0
Pythonをインストールしている人だったら、下のコードをデータパックを生成したいフォルダーに下のPythonをとりあえず貼ってください。
“`python:data_pack_gen.py
import os
import jsonpack_name = input(“pass the pack name:”)
os.makedirs(f”./{pack_name}/data/minecraft/”)
動体検知監視カメラ
# はじめに
今回、自作で動体検知のできる監視カメラを作成しました。本記事では、開発にあたって設定した要件をまとめてご紹介します。
# 1.テーマ
「自身で開発から運用までを行い監視カメラを作る」という目標のもと開発した、動体検知で人間のみを検知し、discord(メッセージアプリ)に検知時の画像を送信するアプリケーションです。# 2.課題の定義
## 解決すべき課題
実家に空き巣が入り、急遽、市販の監視カメラを設置しました。しかし、運用するにあたって、いくつかの課題を発見するに至りました。
#### 2.1 可用性の問題
– 上手く動体検知しないことがある
– デバイスに送信される画像がコマ送りになっており、前後の映像が取得できない
– 画質が悪く、正確な情報を得られない
#### 2.2 ユーザビリティの問題
– 専用アプリが使いにくく、独自の設定をユーザ側が手動で行う必要がある
– アプリの通知が届かない時があり、検知した場合に即座の対応が難しい## 3.解決方法
フルHDのwebカメラを使用し、Discordを介して画像を送受信することで、画質の問題・通知の不安定
CNNで画像分類をやってみました
# AIってなんだろう?
ふと思い立ち、調べながらつくってみました。# AIの分類
だいたいこんな感じの分類。
これはGoogleの画像検索でも出てくると思います。機械学習:教師あり学習、教師無し学習、強化学習
深層学習:多層のニューラルネットワークを使用してデータから特徴を自動的に学習します。# 謝意
今回は作成にあたり、フリーなデータを使わせていただきました。
https://www.kaggle.com/datasets/vishalsubbiah/pokemon-images-and-typesポケモン809種の画像が120×120の形で保存されています。
VGG16を使用するにあたり、224×2224に加工し、データ拡張をしています。pokemon-apiを使おうか検討しましたが、
最後に公開できないことを知り、諦めました。# 今回試してみた内容
今回はWEBアプリで画像を投稿したら、その画像がどの様な分類になるか?
というものを作成したいと思います。教師あり学習の中にある「分類(カテゴリ分け)」と「回帰(予測)」のうちの
「分類(カテゴリ分け)」
【Python】watchdogでファイルの変更を検知して非同期で処理する方法
ファイルの変更を検知して、サーバーにアップロードするような処理を書きたかったので調べました。
ファイルの変更検知は [gorakhargosh/watchdog | Github](https://github.com/gorakhargosh/watchdog) で簡単にできたのですが、アップロード処理を非同期で行う実装に手間取ったので残しておきます。“`python
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler, FileSystemEvent
from concurrent.futures import ThreadPoolExecutordef upload_file(file_path):
print(f” [upload_file] start. (file={file_path})”)
time.sleep(5)
print(f” [upload_file] end. (fi
matplotlibを用いたグラフ描写にてTimes New Romanのフォントを利用する方法
# はじめに
OS、実行環境は以下の通りです。
“`
Ubuntu 22.04
virtualenv + python 3.9
“`
タイトルにあるように、matplotlibにてグラフを描写する際、グラフ内で用いる凡例や軸名にTimes New Romanを用いる方法を説明します。以下、自身の環境におけるデフォルトのフォントです。
“`
>>>import matplotlib as plt
>>>plt.rcParams[“font.family”]
[‘sans-serif’]
“`# Times New Romanフォントのインストール
まず、システムにTimes New Romanフォントがインストールされていることを確認します。以下のコマンドを使用して、Microsoftのコアフォントをインストールします。
“`
sudo apt update
sudo apt install ttf-mscorefonts-installer
“`# フォントファイルを仮想環境に設定
Times New Romanフォントファイル(Times_New_Roman.tt
paiza×Qiitaコラボキャンペーンなので、恥を忍んで投稿します!
# はじめに
paiza×Qiitaコラボキャンペーン ということ、過去に一度練習したことがあるランクB問題ですが、理解度の確認を兼ねて再度実施しました。
不適切な部分について、ご指摘いただけるとありがたいです。https://paiza.jp/works/mondai/b_rank_skillcheck_sample/long-table
# 私の回答例
“`python
# coding: utf-8N, M =map(int,input().split())
value =[[int(x) for x in input().split()] for _ in range(M)]seat_availability = [True] * N #各シートが着席できるかどうか
guests_num = 0 #着席したお客の総数for m in range(M):
entering_num = value[m][0] #入店したお客の人数
seat_num = value[m][1] – 1 #着席する最初のシート番号#入店
ポテトチップスの方程式
# はじめに
ポテトチップス(以下ポテチ)は、面白い形をしている。それは、上から見ると楕円形であり、横からだと双曲線に見える。そこで、今回はそのような摩訶不思議な形をしているポテチを3次元的にモデル化して以下のようなグラフにしてみることを目的とする。
![potechi_wire.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/78cfab14-4a3a-0b25-1fea-c5931fdde274.png)# ポテチの方程式
早速だが、上記のようなポテチを描くための方程式は以下のように表すことができる。“`math
\begin{equation}
\left\{ \,
\begin{aligned}
& \frac{x^2}{a^2}+\frac{y^2}{b^2}<1 \\ & z = \frac{x^2}{a^2}-\frac{y^2}{b^2} \\ \end{aligned} \right. \end{equation} ``` た
httpbinをk8s環境にデプロイする
# はじめに
[httpbin.org](https://httpbin.org/)はHTTPクライアントをテストするために重宝されているWebサイトです。
頻繁にテストするのはネットワーク資源的な意味合いで無駄だなと感じたので手元の環境にデプロイしました。
ついでに他の人達も利用できるようにURL Prefixを変更できるように改造してcontext-rootを変更可能なアプリケーションにしつつ、パッケージを最新版にして動かしてみました。
オリジナルはコンテナも配布されていますが、だいたい6年ぐらい前でgithubの更新も止っていて、Python3.6ベースになっています。
オリジナルを引き継いでPyplに登録されているバージョンもありますが、今回はオリジナルをforkしています。
## 成果物
* [https://github.com/YasuhiroABE/httpbin](https://github.com/YasuhiroABE/httpbin)
* [https://hub.docker.com/r/yasuhiroabe/my-httpbin/tags]
【合格体験記】Python 3 エンジニア認定データ分析試験
## はじめに
ここ最近のお話ではないのですが、Python 3 エンジニア認定データ分析試験の資格を取得しています。
個人的にとっかかりやすい資格で、使用した教材が非常によかったので共有しようと思います。## Python 3 エンジニア認定データ分析試験とは
概要は以下となります。:::note warn
記事投稿時の情報となり、内容が変更される可能性がありますので、受験される際はご自身でもお調べいただくことをおすすめいたします。
:::| 内容 | 詳細 |
| —- | —- |
| 主催 | 一般社団法人Pythonエンジニア育成推進協会 |
| 試験内容 | ・Pythonのライブラリ (NumPy, pandas, Matplotlib, scikit-learn) を中心に出題
・Pythonのデータ分析、機械学習や、それらに関係する数学の基礎知識も問われる |
| 試験時間 | 60分 |
| 試験形式 | 選択式 |
| 問題数 | 40問 |
| 合格ライン | 70%(28問以上の正解で合格) |
| 受験料金 | 一般: 11,000
自分がよく個人開発で使うターミナルコマンドまとめ(フレームワークなど)
## はじめに
初めましての人もそうでない人もこんにちは!
今回は自分がよく使うターミナルコマンドをまとめたいと思います!皆さんは個人開発をよくしますか?
自分はコミュ障なのでなかなかチーム開発の機会なんてほとんどありませんまぁ自分がコミュ障なのは置いておいて個人開発する時って大抵Reactを使うためにnpx・・・と長いコマンドを使ったりしてませんか?
そんな長いコマンドを毎回のように入力することが大変面倒でChatGPTとかに毎回教えてもらっています!
コマンド用のテキストファイルを作成しましたが毎回のようにローカルファイルの海に漂っています・・・
なので今回は主に自分用という部分が大きいですが、皆さんにも共有できたらと思いこの記事を作成しました!
## React + TypeScript
“`
npx create-react-app frontend –template typescript
cd frontend
npm start
“`## venv + Python
### MacOS/Linuxの場合
“`
python -m venv ve
MySQLコンテナにコンテナ間接続できない時
## 問題
Error connecting to MySQL: (2003, “Can’t connect to MySQL server on ‘db_server’ ([Errno 111] Connection refused)”)
docker環境に上記のエラーが出てしまってコンテナ間でデータベースのテストができなかった
## 結論
色々 docker-compose.yml を操作して頑張っていましたが、結論としては
「DBコンテナが立ち上がる前に、別コンテナがアクセスしようとしてエラーとなって落ちていること」が原因でした。以下のテストコードで接続が成功するかを試してコンテナ間の問題ではないことをチェックしてみてください。5回のリトライ試行を導入したコードになります。
“`python
import time
import pymysql
from cryptography.fernet import Fernetretries = 5 # Number of retry attempts
while retries > 0:
tr
【Python】Seleniumで読み込み待ちができない場合の対処方法
# はじめに
ページを読み込み終わる前に、後続の処理を実行してしまい、処理が失敗してしまう事象が発生した。
## 環境
Python 3.12.4
Selenium 4.23.1
Windows 10 22H2
# 起きた問題
ページの読み込みが終わる前に、後続の処理を実行してしまい、処理が失敗してしまう事象が発生した。
サンプルコードは、ログインを自動化する処理のコードである。
サンプルコードでは、ログインID入力欄、パスワード入力欄、ログインボタンが読み込まれる前に、ログインID・パスワードを入力し、ログインボタンを押下する処理が発生する。
## サンプルコード
“` python:auto_login.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_condition