- 1. 引数のファイルを結合する(バイナリで)
- 2. Macに最近の環境をローカル構築する。(Docker、MySQL、Python)
- 3. 【Pybulletサンプルコード解説】複数のレイキャストにより2DLidarを模擬する
- 4. IntellijIDEAでpython+Docker+poetryの開発環境でライブラリが参照できるようにする
- 5. 【langgraph】ToolNodeの入出力を理解する
- 6. 【Maya】reload()したらsuper(class, self)でTypeErrorが出た話【Python】
- 7. FastAPIにおける非同期処理の実装方法
- 8. 【Pybulletサンプル解説】マウスでクリックした物体の色を変える
- 9. 通常の文字列形式から、UUID形式に変換する
- 10. Gradleってなんだ?JavaやKotlinのビルドってどうやっているの?
- 11. Engine Simulatorの作法 その24
- 12. PythonでJSON形式のデータを読み取る
- 13. Pythonで配列の前項と現項の処理の間違えにくい書き方
- 14. 結局Average Precision(AP)って何?
- 15. Pythonでの開発で使用しているVSCode拡張機能
- 16. Pendulum使って簡単日時実装②
- 17. Pendulum使って簡単日時実装①
- 18. Python PEP8 ~その弐 無駄な空白は削除~
- 19. AWSのbedrockにclaude3.5が出たのでPythonで呼び出してみた
- 20. Python PEP8 ~その壱 import~
引数のファイルを結合する(バイナリで)
Python の練習
“`python
#!/usr/bin/python3
import sysif len(sys.argv) < 3: raise Exception("arguments too short") # 最初の引数は自分自身なので削除 sys.argv.pop(0) # 最後の引数は出力ファイル(残りは結合したいファイル) writefile = sys.argv.pop(-1) with open(writefile, "wb") as w: for arg in sys.argv: with open(arg, "rb") as r: w.write(r.read()) ```
Macに最近の環境をローカル構築する。(Docker、MySQL、Python)
### 1. Dockerのインストール
#### Dockerとは?
Dockerはコンテナ化技術で、アプリケーションとその依存関係をまとめてパッケージ化し、どの環境でも一貫して動作させることができます。これにより、開発環境と本番環境の違いによる動作不良を防ぐことができます。#### インストール手順
1. [Dockerの公式サイト](https://www.docker.com/products/docker-desktop)にアクセスし、Mac用のDocker Desktopをダウンロードします。
2. ダウンロードした`Docker.dmg`ファイルを開き、Dockerアイコンをアプリケーションフォルダにドラッグ&ドロップします。
3. インストールが完了したら、アプリケーションフォルダからDockerを起動し、利用規約に同意します。インストール後、ターミナルを開き、以下のコマンドを実行してDockerが正しくインストールされたか確認します。
“`sh
docker –version
“`### 2. MySQLの設定
#### DockerにMySQ
【Pybulletサンプルコード解説】複数のレイキャストにより2DLidarを模擬する
お疲れ様です。秋並です。
Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(コード一覧は[こちら](https://qiita.com/akinami/items/7b433b60aeb5115ba4d7))。
今回は、batchRayCast.pyを解説します。(コードのリンクは[こちら](https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/examples/batchRayCast.py))
本コードを実行すると、2DLidarのように円形にレイキャストを実施し、衝突している箇所が赤色、そうでない箇所が黄緑色に描画されます。
![batchRayCast.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030125/0181075e-b3ba-a99a-3cd6-a7f3536a7395.gif)
# 使用している機能
本コードは、以下の機能を使用して「円形に
IntellijIDEAでpython+Docker+poetryの開発環境でライブラリが参照できるようにする
## TL;DR
poetryの `virtualenvs.createをfalse` に設定するように変更して、poetryで管理されているライブラリが増えるたびにDockerfileのイメージを作成するようにすれば良い。
## 想定読書
* DockerにPythonの実行環境を構築してIntelliJ IDEAで開発をしたい人
* poetryでライブラリを管理したい人## IntelliJでのDocker上のライブラリが読み込まれる条件
DockerイメージのグローバルなpipライブラリにインストールされているライブラリはIntelliJで読み込まれる。
そのためイメージを作成した後でattachしてpipでインストールされているライブラリを追加しても反映されることがない点に注意。## IntelliJでの環境構築方法
IntelliJでの環境構築方法は[公式のドキュメント](https://www.jetbrains.com/help/idea/configuring-python-sdk.html#yklulg_458)を参考にしてほしい。
### Do
【langgraph】ToolNodeの入出力を理解する
# 概要
langgraphの勉強をしていて、ToolNodeが何なのかよくわからなかったので、ソースコードを読んで理解を試みました。# モチベーション
[langgraphのチュートリアル](https://langchain-ai.github.io/langgraph/#example)で以下のような記述があります。(要点だけ抜粋)。
“`Python
from langgraph.prebuilt import ToolNode# Define the tools for the agent to use
tools = [TavilySearchResults(max_results=1)]
tool_node = ToolNode(tools)# Define a new graph
workflow = StateGraph(MessagesState)# Define the two nodes we will cycle between
workflow.add_node(“tools”, tool_node)
“`workflow(Sta
【Maya】reload()したらsuper(class, self)でTypeErrorが出た話【Python】
# はじめに
– MayaPython上の話です# 環境
– Autodesk Maya 2020.4 (Python 2.7.11)
– Autodesk Maya 2023.3 (Python 3.9.7)# サンプルプロジェクト
https://github.com/Hum9183/super_test# 経緯
super(class, self)を使ったスクリプトでreload()を行うと、
> TypeError: super(type, obj): obj must be an instance or subtype of typeというようなエラーが出てしまう。
# 結論
クラスのidが破綻しないようにreload()する順番に気をつける。以下詳しく解説します。
# なにが起きているのか
まずreload()によってクラスにどんな変化が起こるかを理解する必要があります。下図のディレクトリ構成を例にして説明します。
>super_test/
├__init__.py
├darkdragon.py
├dragon.py
└main.py
start
FastAPIにおける非同期処理の実装方法
## はじめに
こんにちは!今回はPythonのWebフレームワーク「FastAPI」を使った非同期処理の実装方法について、シンプルな例を用いて解説します。同期処理と非同期処理の比較、そして非同期タスクの結果取得方法も含めて説明していきます。## 目次
1. FastAPIと非同期処理の概要
2. 同期処理と非同期処理の比較
3. 非同期タスクの実装と結果取得
4. シーケンス図による処理の可視化
5. まとめ## 1. FastAPIと非同期処理の概要
FastAPIは、Pythonの非同期機能を最大限に活用できるWebフレームワークです。非同期処理を使うことで、I/O待ち時間を効率的に利用し、アプリケーションのパフォーマンスを向上させることができます。
## 2. 同期処理と非同期処理の比較
まずは、同期処理と非同期処理の違いを見てみましょう。
“`python
from fastapi import FastAPI
import asyncio
import timeapp = FastAPI()
def sync_operation(operation_
【Pybulletサンプル解説】マウスでクリックした物体の色を変える
お疲れ様です。秋並です。
Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(一覧は[こちら](https://qiita.com/akinami/items/7b433b60aeb5115ba4d7))。
今回は、addPlanarReflection.pyを解説します。(コードのリンクは[こちら](https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/examples/addPlanarReflection.py))
本コードを実行すると、アヒルのオブジェクトが生成され、マウスでクリックするたびにアヒルの色が変更されます。
![addPlanarReflection.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030125/8fc2eaf4-5b0f-bbb4-27c2-931cb8fb73f0.gif)
# 使用している機能
本コードは、以下の機能を使用して「
通常の文字列形式から、UUID形式に変換する
## はじめに
Python で 32 文字の文字列を、UUID 形式に変換します。
## はじめにPython で 32 文字の文字列を、UUID 形式に変換します。
uuid モジュールを使えば、簡単に UUID を作成できます。
また、UUID形式の文字列を、UUIDオブジェクトへの変換も行えます。
https://chico-shikaku.com/2021/10/python-string-to-uuid/~~しかし、ハイフンがないただの文字列情報を、UUID 形式に変換する方法はありません。
そのため、上記の変換方法の一例をお伝えいたします。~~公式ドキュメントで、見落としていた部分がございました。失礼いたしました。
UnnecessaryOpinion様、ご指摘ありがとうございます。
https://qiita.com/sean-sunagaku/items/b533e674b23f03eab8f4#comment-31f721cf9954a2554c22下記サイトを使用して、実装を進めていただければと思います。
https://docs.pytho
Gradleってなんだ?JavaやKotlinのビルドってどうやっているの?
# Gradleとは?
Gradleは、主にJava,Kotlin,ScalaのようなJVMベースの言語で開発されたソフトウェアプロジェクトの**ビルド自動化ツール**.実はPythonやC++にも対応している.:::note info
**ビルドツールとは**
ビルドツールとは、以下のようなプログラムのビルドや実行を自動化するツールのこと.
– 必要なライブラリのインストール
– コンパイル
– オートテスト
– パッケージ(Jarファイル)の作成
– 実行
:::# なんで作られたのか
Antや Maven などの従来のビルドツールの欠点を克服するために開発された.### Antの欠点
– **XMLベースの設定**
Antは、XMLを使用してビルドスクリプトを記述する.XMLは冗長で読みにくく,大規模なプロジェクトではスクリプトが複雑になりがち…また,スクリプトのロジックを表現するために,XMLにカスタムタスクを埋め込む必要がある.– **依存関係管理の欠如**
Antには、依存関係管理のための組み込みの仕組みがない.外部ライブラリの依存関
Engine Simulatorの作法 その24
# 概要
Engine Simulatorの作法を調べてみた。
githubでエンジンジェネレータ見つけた。
練習問題やってみた。# 練習問題
直列2気筒エンジンを作れ。# 写真
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/65d18a62-7d9a-0642-e822-251467390222.png)
# サンプルコード
“`
def generate_i2():
cylinders0 = []
cylinders = [0, 1]
for i in range(2):
cylinders0.append(i)
bank = Bank(cylinders0, 0)
engine = Engine([bank], cylinders)
engine.engine_name = “I2”
engine.starter_torque = 400
engine.chamber_volume = 70
engine.generate()
PythonでJSON形式のデータを読み取る
# 目的
PythonでJSON形式のデータを読み取る処理の一例を記す。# 読み取るJSONデータ
“` .json
{
“lunches” : [
{
“drink”: “Green Tea”,
“dessert”: “Vanilla Icecream”,
“foods”: [
{
“name”: “Rice”,
“item”: []
},
{
“name” : “Curry”,
“item” : [“Chiken”, “Onion”, “Carrot”]
},
{
“name”: “Omelette”,
“item”: [“Egg”, “Butter”, “Cheese”]
}
]
},
{
“drink”: “Ice Coffee”,
“dessert”: “Chocolate Cake”,
“foods”: [
{
“name”: “Bread”,
“item”: []
},
Pythonで配列の前項と現項の処理の間違えにくい書き方
配列の要素を順に処理する場合で、前の要素と今の要素を比較して処理することがある。その場合、以下のように書いていた。
“`python
a = [1, 2, 2, 3, 4]
prev = a[0]
for cur in a[1:]:
if prev == cur:
print(‘same’, prev, cur)
prev = cur
“`
しかし、この`prev = cur`をよく書き忘れる。内部の処理が長くなったり編集したりすると間違って削除してしまっても気づきにくい。というわけで今は以下のような書き方をしている。
“`python
a = [1, 2, 2, 3, 4]
for prev, cur in zip(a[:-1], a[1:]):
if prev == cur:
print(‘same’, prev, cur)
“`
これなら`prev = cur`を書き忘れないし、2行短い^^/
結局Average Precision(AP)って何?
# 1. はじめに
Kaggleのコンペで評価指標としてよく使われるAverage Precision(以下AP)。
一旦メモを残しておこうと思います。# 2. 結論
APが高い=偽陽性と偽陰性をどちらもうまく抑えている# 3. 何に使う?
予測モデルの評価指標の一つ。
異常検知・発病リスク予測など、正例が極端に少ない予測を行うモデルの評価に役立ちます。### 3.1 ちなみに他の評価指標は?
一番単純なものの一つとしてAccuracy(正答率)を挙げます。学校の試験の点数と一緒で、予測データのうち教師データと合致している割合を計算します。正例と負例のバランスが良いデータなら評価指標として機能します。### 3.2 APとAccuracyとの比較
Accuracyは正例と負例の分布が片方に偏っていると機能しません。例えば異常検知タスクの場合、ほとんどのデータが負例と分かりきっています(=故障は頻繁に起こらない)。よって当てずっぽうに全部負例にしてもそこそこ当たるでしょう。
きちんと学習したモデルと当てずっぽうで予測したモデルとの差がつかないので、評価指標として機能してい
Pythonでの開発で使用しているVSCode拡張機能
## はじめに
Pythonを使ってVSCodeで開発を始めてから数カ月のPython初心者です。
数か月の中で、VSCodeのPythonに関連する拡張機能を様々使ってみて、タイプミスに気付きやすくなったり、効率化が出来るなどの拡張機能もあり、開発が非常に進めやすくなりました。
本記事では「これからVSCodeにてPythonで開発をしたいと思っている方」を対象として、よりPythonで開発が進めやすくなるVSCodeの拡張機能を紹介します。**開発環境**
・WSL2/Ubuntu環境
・Python: 3.10.12※WSL2/Ubuntu環境で以下codeコマンドを実行することで、VSCodeを起動しています。
“`
code .
“`## Pythonでの開発で使用しているVSCode拡張機能
### Japanese Language Pack for Visual Studio Code
VSCodeで「メニュー」・「設定」などを日本語表示できる拡張機能です。https://marketplace.visualstudio.com/items?
Pendulum使って簡単日時実装②
# Pendulumとは
日時の操作を容易にするPythonパッケージ
https://pendulum.eustace.io/# 前回
[Pendulum使って簡単日時実装①](https://qiita.com/i-am-misaki/items/2ad110049ee541c4c3ee)# format()
localeで設定した言語に変換され表示される
(デフォルトは英語)“`python
import pendulumdt = pendulum.datetime(1975, 5, 21)
dt.format(‘dddd DD MMMM YYYY’)
# ‘Wednesday 21 May 1975’dt.format(‘dddd DD MMMM YYYY’, locale=’de’)
# ‘Mittwoch 21 Mai 1975’
“`# diff_for_humans()
デフォルトは英語なのでpendulum.set_locale()を使用して言語を設定“`python
print(pendulum.now().add(years=1)
Pendulum使って簡単日時実装①
# Pendulumとは
日時の操作を容易にするPythonパッケージ
https://pendulum.eustace.io/# インストール
“`
pip install pendulum
“`# 使い方
“`python
now = pendulum.now()
print(now)
# 2024-06-22 07:06:08.923470+09:00timezone_name = now.timezone.name
print(timezone_name)
# Asia/Tokyo
“`
## timezoneのインスタンス, 名前取得
“`python
tzone = pendulum.now().timezone
# Asia/Tokyo
tzone = pendulum.now().tz
# Asia/Tokyo
tzone = pendulum.now().timezone_name
# Asia/Tokyo
“`###### タイムゾーンを変更して日時を取得
“`python
now_in_london_tz = pendulum.
Python PEP8 ~その弐 無駄な空白は削除~
### 行末にいらん空白がある!!
# はじめに
コードレビューで指摘いただいた部分、自分では気づけず
設定で無駄なミスも減らせるので共有♪また、PEP8にも記載されていたので、重要性を再認識
>行末に余計な空白文字を残さないようにしましょう。https://peps.python.org/pep-0008/
# 例
下記のコードのように行末に無駄な空白が存在してる
※「␣」記号打ってますが空白の認識でお願いします。
“`python
import datetimenow = datetime.datetime.now()␣
“`気にしながら打つとか面倒くさい…
ので、調べてたらちゃんとありました!
設定できるものは設定して無駄もミスもなくしていこ!# VScodeで行末の空白を省く設定
1. 「Ctrl + , 」で設定ページを開く(Windows)
2. 検索枠に「trim」と入力
3. チェックを入れる
– [x] Trim Trailing Whitespace In Regex And Strings
– [x]
AWSのbedrockにclaude3.5が出たのでPythonで呼び出してみた
## 事前準備
– aws configureでiamをcliに登録しておく
– bedrockでClaude3.5 sonnetを有効かしておく## モデルIDを取得する
下のコードでmodel_idにclaude-3-5が入っているidを取得できる。
“`python
def search_model(query):
response = client.list_foundation_models()for model in response[‘modelSummaries’]:
if query in model[‘modelId’]:
print(model[‘modelId’])search_model(“claude-3-5”)
“`
## サンプルコード
取得したIDをしたのように埋め込む
“`python
from pydantic import BaseModel, Field, ValidationError
import boto3
import jsonclass Ch
Python PEP8 ~その壱 import~
# 目次
– [はじめに](https://qiita.com/drafts/5eccdb9498110ba9c62a/edit#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB)
– [きっかけ](https://qiita.com/drafts/5eccdb9498110ba9c62a/edit#%E3%81%8D%E3%81%A3%E3%81%8B%E3%81%91)
– [PEP8とは](https://qiita.com/drafts/5eccdb9498110ba9c62a/edit#pep8%E3%81%A8%E3%81%AF)
– [import 記述方法1](https://qiita.com/drafts/5eccdb9498110ba9c62a/edit#import)
– [import 記述方法2](https://qiita.com/drafts/5eccdb9498110ba9c62a/edit#import-%E8%A8%98%E8%BF%B0%E6%96%B9%E6%B3%952)
– [import 記述方法3](https: