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

Python関連のことを調べてみた2023年10月03日
目次

websocketを使いたい人のためにまとめたよ

まずWebsocketが使われる理由から

### Websocketが使われる理由
一言でいえば、
リアルタイム性、効率性、およびパフォーマンスの向上。

詳しく解説すると理由はいくつかあって、

#### 1. リアルタイム通信
WebSocketは、リアルタイムの双方向通信を可能にします。これにより、ユーザーとサーバー間で即時にデータを交換でき、リアルタイムアプリケーション(例:オンラインゲーム、チャットアプリ、ライブスポーツのアップデートなど)のパフォーマンスが向上します。
#### 2. 効率的なデータ転送
WebSocketは、持続的な接続を通じてデータを送受信するため、データ転送のオーバーヘッドが少なくなります。これにより、ネットワークの効率が向上し、レスポンスタイムが短縮されます。
#### 3. サーバーのリソース最適化
WebSocketは、オープンな接続を維持しながらも、リソースの消費を最小限に抑えます。これにより、サーバーの負荷が軽減され、大量の同時接続を効率的に処理できます。
#### 4. 低レイテンシ
WebSocketは、データの送受信における遅延を削減

元記事を表示

Pythonでリスト・辞書の操作を行ってみた! 〜その2〜

N今回は前回Pythonにてリスト・辞書の操作を行った続きを投稿いたします。

リストをN分割したい

リストをN分割する場合、要素数/Nを切り上げした数が分割後の要素サイズとなります。切り上げ処理にはmathモジュールのceil()を使用します。このサイズの間隔ごとにスライスすると、N分割したリストが得られます。以下のコードでは、リストを3分割しています。

“`py
import math
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
n = 3
size = math.ceil(len(l1) / n)
l2 = [l1[idx:idx + size] for idx in range(0, len(l1), size)]
print(l2)
“`
実行結果
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]が

リストの要素を条件指定で抽出したい

filter関数を使用すると、リストの中から指定条件に合致した要素だけ抽出することができます。第1引数に抽出条件となる関数を指定します。指定する関数は引数に対して何らかの判

元記事を表示

ChatGPT で Python プログラミング ケーススタディ:ケモインフォマティクス入門2

「ChatGPT で Python プログラミング ケーススタディ」の続編です。化学情報学(ケモインフォマティクス)を題材として、化合物構造からLogPの予測を行ってみました。回帰モデルを作るつもりでしたが、ChatGPTが分類モデルを作り出したので、まぁいっか、と思ってそのまま続けました。最初はscikit-learnのランダムフォレストを使いましたが、途中でTensorFlowにしました。それでは、ChatGPTとの会話をお楽しみください。

### **user**:

20個以上の化合物の化学構造をMorgan fingerprintに変換して、それを説明変数として、教師あり機械学習でLogPの予測を行うPythonコードを書いてください。

### **assistant**:

Pythonでの化合物のLogP予測コードを書く前に、必要なライブラリをインストールする必要があります。

“`bash
pip install rdkit-pypi pandas sklearn
“`

以下に20個以上の化合物の化学構造をMorgan fingerprintに変換し

元記事を表示

litellmを利用してAzure OpenAIとAmazon BedrockのチャットAPIを共通的に呼び出す

# 背景
– 社内で AI チャットサービスを展開する際、GPT-4 と GPT-3.5 などでモデル切り替えを可能にすることが多い
– モデルの切り替えを、Azure OpenAI と Amazon Bedrock などベンダーをまたぐ場合に API 呼び出し分ける必要があり手間になる
– litellm というライブラリがその問題を解消できそうなので試してみる
– https://github.com/BerriAI/litellm
– Open Interpreter でも採用されている
– https://github.com/KillianLucas/open-interpreter/#change-your-language-model

# ライブラリインストール
以下ライブラリをインストール。pip や pipenv などで
“`
litellm
jinja2
boto3
“`
※ litellm のバージョンは 0.1.813 より新しいものを使う。Bedrock が使えないバグが修正されている

# 認証
今回は pipenv を

元記事を表示

【Docker】入門:pythonが実行できるコンテナを起動(docker-compose使用)

# はじめに
UdemyでDockerの学習を進めている最中で、途中経過をアウトプットしたいと考えています。
今回は、

pythonが実行できるコンテナをdocker-composeを使って起動したいと思います。
また、ファイルシステムを共有して、pythonファイルやcsvデータをホストPCでも管理出来るようにします。

# 環境
– Windows10
– Docker version 24.0.6

# 各ファイル
以下の3つのファイルを同じフォルダ階層に作成します。
### Dockerfile
今回はpythonのベースイメージを使用し、requirements.txtから必要なライブラリをインストールします。
“`Dockerfile:Dockerfile
FROM python:3

RUN apt-get update

WORKDIR /work
COPY requirements.txt ./
RUN pip install -r requirements.txt

CMD [“/bin/bash”]
“`
### requirements.txt
とりあえず

元記事を表示

Amazon Bedrock を利用してスマートホームスキルを起動するパーソナルアシスタントAIっぽいコードを書いた

# 何の記事?
– 最近GAした Amazon Bedrock をpythonのSDK(boto3)から実行してみる
– [前回記事](https://qiita.com/hamanuman/items/51bb3974c7550670a2de)の続き
– この中で、プロンプトエンジニアリングっぽくClaude-v2にユーザの意図を判定してもらい、後続の処理を選択してもうらう
– 後続の処理の中で再度ユーザの意図をCluade-v2に判定してもらい処理のパラメータを生成する
– 後続処理としては下記を行う
1. 単純なチャットの対話
1. 画像生成AIでの画像生成
1. ALexa SmartHomeSkillの内部処理であるLambdaの呼び出し

# Code
“` personal_assistant.py
import boto3
import json
import base64
import sys
from datetime import datetime

sample_prompt = “A photograph of an dog on the top of a

元記事を表示

【MapleCTF2023】Rev – Writeup

# 初めに
どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は __MapleCTF2023__ のRev問3題のWrtiteupとなります。

https://ctf2023.maplebacon.org/

3題だけ解けたので記載します。

# JaVieScript
以下のJavascript(とHTMLがあったがHTMLはあまり関係ない。)が渡されます。
“`Javascript:
var flag = “maple{“;
var honk = {};

async function hash(string) {
const utf8 = new TextEncoder().encode(string);
const hashBuffer = await crypto.subtle.digest(‘SHA-256’, utf8);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray
.map((bytes) => bytes.toString(

元記事を表示

Pythonの並列処理で任意の順番&形で結果を取得する

## はじめに
最近Pythonで大量の演算処理を行うプログラムを書いた際,あまりにも計算に時間がかかるので並列処理を勉強し始めました.
そこで,自分の思い通りに使えるようにするにはどうすれば良いか考えていた所,とある形に落ち着いたので共有したいと思いました.

並列処理を使えるモジュールは,multiprocessingやconcurrentなどがありますが,この場ではconcurrentを用います.

(勉強が不十分でもっと良い書き方があるかもしれないので,もし左様でありましたら,ご教授いただけると幸いです.)

## 定番 コード①
まずPythonで並列処理を行いたい場合,大体このような形になると思います.
(本当はfor文でリスト内包表記を使用するべきなんですが,目を瞑っていただけると助かります.)
“`python
import time # 処理時間を測定するため
from concurrent import futures

ln = 40 # 適当な数字
data = list(range(ln))

def calculation(index): # 簡単な演算処

元記事を表示

ABC322をPythonで解いてみたよ。(A~E問題 + おまけ)

[AtCoder Beginners Contest 322 (ABC322)](https://atcoder.jp/contests/abc322) をPythonで解きました。
見やすいコードを書く練習も兼ねてます。

TwitterとPayPayリンクをまとめたリトリンを下に貼ってあります。
Twitterのフォローお待ちしてます!(DMでなにか一言いただけるとたすかります…!)
この記事が役に立ったなと思ったら、PayPayのご支援もよろしくお願いします┏○ペコッ

https://lit.link/mer6177999

# A – First ABC 2

## 問題ページ
https://atcoder.jp/contests/abc322/tasks/abc322_a

## 考察
$0$ ~ $2$ 文字目が “ABC” かどうかを見る
→ $1$ ~ $3$ 文字目が “ABC” かどうかを見る
→ $2$ ~ $4$ 文字目が “ABC” かどうかを見る
$\cdots$
と見ていきます。どこかで “ABC” があったら、そのインデックスを出力してプログラ

元記事を表示

OpenAI API を呼び出すためのライブラリを使わずに利用する

# 概要

一般的には、pythonで開発している人は、OpenAIのChatGPTをAPIで使いたいとき、pythonであれば、“`openai“`ライブラリを使いますよね。

(どんな状況かはわかりませんが)ライブラリを使わずにOpenAIのAPIを呼び出して、ChatGPTを利用するためのコードを作成したので、その共有です。

# コード解説

早速コード解説です。

コードそのものは、『コードの中身』で書いているので、コードが気になる方はそちらを見てください。

## コードを作ろうと思った理由
OpenAIのChatGPTをライブラリ経由で使うときは実はAPIという仕組みを利用しています。細かいことを言うと、これはライブラリを使ってみなさんのパソコンの中でChatGPTが動いているわけではなく、OpenAI社のサーバに皆さんが入力したプロンプトがインターネット経由で飛ばされています(もちろん、OpenAI社側もセキュリティ対策を取っているので、あまり心配に思う必要は無いですが、自分が入力したデータやプロンプトがOpenAI社にインターネット経由で飛んでいるのです)。

元記事を表示

ChatGPTをパートナーにしてDDD、TDDを取り入れた開発をする

## はじめに

 [ソフトウェア開発にChatGPTは使えるのか?](https://www.amazon.co.jp/dp/B0C9L3DH5S)という本がとても勉強になったので、この本の読んで自分なりに実践した内容を記事にしたいと思います。

 この本の中で私がとても参考になったのは「第5章 各種開発手法の提案」で、この中で「5-1 DDDによる設計と実装」「5-2 TDDによるテストからの実装」が語られているので、それを取り入れた手法で開発をしてみたいと思います。

## DDDとTDDについて

 ちなみに私はDDD(ドメイン駆動設計)については、書籍で読んでなんとなくやることはわかっているけど、実践はしていないレベル。TDD(テスト駆動開発)についても書籍で読んである程度実践はしたけど、最近は仕事でコードを書いていないので、詳細部分を忘れそうになっているレベルです。

 なので、それぞれChatGPTに説明してもらいましょう。(はじめにこれをやっておくとChatGPTの方もこれらを意識してくれそ

元記事を表示

pytorch mobileのObject Ditectionデモを任意のサイズのモデルで実行できるようにする

[前回](https://qiita.com/sanjolin_chun/items/090ff55c748f003a54a7)に引き続き,[pytorchのObject Ditectionのデモ](https://github.com/pytorch/android-demo-app)を扱う.こちらのソースコードでは,推論時にモデルの名称を直接渡していたため,モデルのサイズを変更するために,いちいちコードを書き換えて,再ビルドしなければならなかった.そこでandroidの復習がてら,アプリ側でモデルの変更ができるようにする.

さらに下記の実行環境での各モデルのリアルタイムでの推論時間についても計測したので記述しておく.

## 実行環境
実行端末のスペック
– Xiaomi 11T Pro
– Snapdragon™️ 888
– Android 13 TKQ 1.220829

yoloモデルはREADMEに従って,4種exportした.
– yolov5s.torchscript.ptl
– yolov5m.torchscript.ptl
– yolov5l.torch

元記事を表示

Pythonでイメージのアップロードとプレビューサービスを実装します

今回は、Flask利用して、イメージサービスを実装します。
機能は以下の通りです
– イメージのアップロード
– イメージバーコード認識後のイメージ情報の保存
– バーコードでイメージ情報を照会
– イメージのプレビュー

# 開発環境
Mac OS X
Python 3.11.5

# 仮想環境のアクティベート

“`bash
% python3 -m venv venv
% . venv/bin/activate
“`

# python lib インストール
バーコードの生成と認識については、[こちら](https://qiita.com/Weekend/items/f42326b4e1009825f6b6)を参照してください。

“`bash
pip install flask
pip install Flask-RESTful
pip install Werkzeug
pip install pyStrich
pip install pyzbar
“`

“`
% pip list
Package Version
————- —-

元記事を表示

pytorch mobileのObject Ditectionサンプルを動かす

[前回](https://qiita.com/sanjolin_chun/items/f667adf5ad75ed47c9bd)に引き続き,[こちら](https://github.com/pytorch/android-demo-app)のpytorchmobileのデモを動かしたメモ書きを残す.今回はObject Ditectionとして,yolov5を使用したリアルタイム推論が紹介されていたので,こちらを実行してみる.

android-demoのgit cloneとREADMEで紹介されているyolov5のgit cloneまでは実行しているものとする.

## ptlファイルを作成するdocker環境の編集

READMEに従って,yolov5リポジトリから,ptlファイルを生成する. 手元にあった未編集の“`pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel“`イメージを使用してexport.pyを実行した(GPU環境は使用していない).

##### 元の環境
“`
torch 1.10.0
to

元記事を表示

Python で日本語コード判定

# はじめに

 今更かもしれないが、Python で日本語の文字コード(エンコーディング)を判定する方法について。

 最近必要になってググってみると `chardet` を使って判定する記事が多い。「じゃあ……」と思って使ってみたが、どうもうまくいかない。

 というわけで、自分でこしらえてみた、という話。

# コード

 前提として、自分の場合、日本語と ASCII くらいしか想定していない(つまり他の国特有のコードを想定していない)、ということがある。

“`python:jp.py
# -*- coding: utf-8 -*-
JP_ENCODE = ‘iso2022_jp’, ‘euc-jp’, ‘shift-jis’, ‘cp932’, ‘utf-8’

def decode(buf):
for c in JP_ENCODE:
try:
r = buf.decode(c) # まず decode してみる
try:
r.encode(‘ascii’) # a

元記事を表示

社内SE、ラズパイ4を買う。パート5(APIから明日の天気情報を取得し、Line通知する)

・前回

https://qiita.com/ra_risu/items/5dd76d428ba7a716d246

・今回やりたいこと

どっかのAPIから住んでいる地域の降水確率を取得して、ライン通知する。

・解決したい課題

家にテレビがないし、朝起きるのがギリギリなので、前日中に降水確率をチェックして傘を持っていくべきか判断したい。午前中晴れ→午後雨のパターンでいつもびしょぬれになっている。

・技術的なポイント
Line通知は前回やったので

https://qiita.com/ra_risu/items/5dd76d428ba7a716d246

今回はどっかのAPIを叩いて降水確率のデータを取得すればよい。

今回はこちらを使わせていただく。

https://weather.tsukumijima.net/

また、APIの叩き方についてはこちらを参考にさせていただいた。

https://qiita.com/ehjivh/items/121afaecad59a7e11c61

一時間ぐらい格闘して完成したものがこちらになります。
(生まれて初めてAPI叩いてJSON

元記事を表示

【2023年10月】0円で読めるおすすめ技術書5選

# はじめに

みなさん、こんにちは。高校生エンジニアの[Raio](https://twitter.com/Raio14f)です!
平日は公立高校に通いながら、放課後や休日はIT企業のエンジニアとして働いています??‍?

↓筆者について↓

https://qiita.com/Raio14f/items/ef0fb67685b36298bcb0

今回の記事では、**【2023年10月】0円で読めるおすすめ技術書TOP5**を紹介します!
ご興味ある方は、是非最後までご覧ください!

# 技術書を0円で読む方法

[KindleUnlimited](https://amzn.to/3RGof7O)を使うことで、**技術書を0円で何冊でも読むことが出来ます**?

**今回、紹介する技術書はKindleUnlimitedに加入すると0円で読むことが出来ます!**

– 200万冊以上の書籍が何冊でも読み放題
– 月額980円が今なら1ヶ月無料
– 場所に囚われず、様々な端末で使用可能

勿論、技術書以外にもビジネス書や漫画など種類豊富です!

**↓入会したい方は下の画像をクリック↓

元記事を表示

pytorch mobileのHelloWorldサンプルを動かす

今回は[こちら](https://github.com/pytorch/android-demo-app)のpytorch_mobileのandroidデモを動かしてみたので,備忘録として実行方法を載せておく.基本はREADMEを読んで,その通りに実行すれば良いのだが,コードの変更や,環境の依存性があるため,誰かの役に立つ可能性があると思われるため,メモを残す.
## 実行端末情報
– Xiaomi 11T Pro
– MIUI バージョン 14.04
– Android 13 TKQ 1.220829

## gradleビルドパッケージについて
gradleで指定したパッケージを更新したいが,jcenter()が閉鎖済みであり,これの変更が必要.
jcenterをmavenに変更.あまり最新版のgradleにしすぎるとエラーを吐くようになるため適当に更新.今回は,ビルドツールの4.2.0あたりが最善だった.

gradleのパッケージの対応バージョンは下記で閲覧することができる.mavenの公式だと思うが,非常に助かる.
https://mvnrepository.com/arti

元記事を表示

【備忘録】importlibを使用した動的なインポート

### 事の発端

以前作成したPython形式のファイルをJSON形式のファイルに書き換えたいと思い立ち,

1. 変換対象のファイルから変数(中身は数字,文字,リスト,None,ブーリアン等)をインポート
2. インポートした変数を辞書型に変更
3. JSON形式で保存

を行う変換コードをPythonで作成してみました.変換対象のPythonファイルが1つであれば,変換コードの文頭で静的にインポートして万事解決でしたが,当該のPythonファイルが複数存在していたため,変換コード内でfor文を使用して一つ一つ変換していく運びになりました.

ところが,文頭以外で別のPythonファイルをインポートする方法が分からなかったので,「importlib」というパッケージを使用して文中で必要に応じてインポートするということにしました.

### 変換対象のファイルの例
このようなファイルが複数個存在しています.また,格納先は
/hoge/src/
内となっています.

“`/hoge/src/example.py
# 日付と番号
date = [“20230607”, 3]
# 名前

元記事を表示

NLP100本ノックのtypoglycemiaをできるだけ短く書いてみた。

# はじめに
最近言語処理100本ノックとか競プロとかやっている中で、typoglycemiaコードを短く書いてみたくなったので書いてみました。

この記事は完全に自己満足なので、ご容赦ください。

# コードはこちら

“`py:q09.py
import random

s = ‘I couldn’t believe that I could actually understand what I was reading : the phenomenal power of the human mind .’

print(‘ ‘.join(map(lambda word: word[0] + ”.join(random.sample(word[1:-1], len(word[1:-1]))) + word[-1] if len(word) > 4 else word, s.split())))

“`

書いてあることはシンプルですが、、、、見た目がきついですね・・・。

さらに短くしてみます。
“`py:q09-2.py
import random

print(‘ ‘.j

元記事を表示

OTHERカテゴリの最新記事