Python関連のことを調べてみた

Python関連のことを調べてみた
目次

IT業界未経験からPHP⇒Python⇒Java⇒VBA、XMLと学習ロードマップをうろうろして感じたこと

自分の学習ロードマップのうろうろ歴

無事とある**PHP、Laravel**を中心とする半年のカリキュラムを課す民間のプログラミングスクールを修了し、転職フェアなどにも何回か参加してみたところ、「**実はプログラミング言語の需要には地域差がかなりある**」ということを知り(下記参照)、エッ…(゚Д゚)と思いながら、時代はAIだろ(´д`)と思って、**Python**をやってみたら少しは分かったけど、居住地域の関係で **Java**も併行し始めたけど、Pythonを使うかな(´。`)と思って内定をいただいた会社の自分の所属する部署では一番使うのは **VBA、XML** とのことで、今は急遽ExcelやVBAを触りまくっています。

①実は地域によってプログラミング言語に需要ニーズに違いがある。(-_-;)

〇転職活動を通して感じた地域の言語ニーズの差異に関する私見

(1)求人がどの地域も万遍なく一番多いのは**Java、意外と

元記事を表示

Gemini での MultimodalRAG の サンプルコード紹介 ( google colab / jupyter )

## 概要
https://zenn.dev/harappa80/articles/multimodal_rag

基本的な内容はこちらの記事に沿ったコードを環境依存なく誰でも試せるようにGoogle colobの内容で作成したものになります。またjupyter(ipynbファイル)でも作成も合わせて行いました。

## Git-Hub

https://github.com/shohei0990/Multimodal_RAG_00/tree/main

sample_googlecolob.ipynbを開けば大まかな内容・手順が確認できるかと思います。

googlecolabを開いて、新規作成かファイルを読み込んでください。colabはcolab上でライブラリのインストールさえしてしまえばコードが動かせるので環境設定に依存せず動作確認できるので便利ですね。ただ、ファイルのアップロード後ランタイムによる更新などでファイルが消えたりとするので少し面倒だったりします。

※ 一度、ライブラリをインストールしたあとランタイム再起動が必要です。

https://colab.google

元記事を表示

VSCode で Python 開発環境

# Python をインストール
[Python公式サイト](https://www.python.org/)から、Pythonパッケージをダウンロードします。
Googole Cloud と AWS で使用するため、2つのバージョンをインストールします。
バージョン3.12.1 と バージョン3.11.7
をインストールします。

ソースコードを置くディレクトリを作成して、移動します。
“`
mkdir gc-sorce
cd gc-sorce
“`

Pythonのバージョンを指定して、仮想環境を作成します。
仮想環境を作成することで、ライブラリのバージョンを環境毎に調整することが出来ます。
“`
py -3.12 -m venv venv
“`

VSCode を起動して、「ファイル」→「フォルダーを開く」で、ソースコードを置くディレクトリを開きます。
「ファイル」→「新しいファイル」で、「Python ファイル」を選択します。
VSCodeの右下部分の赤く囲まれたPythonのバージョンをクリックして、使用するPythonを選択します。
![image.png](htt

元記事を表示

Firebaseで秘密鍵不要で、token (JWT)を検証する

FireabaseのJWTを検証するのに、秘密鍵なんて要らないはずなのに、普通にライブラリを使うとなぜか使わざるをえないので、回避する方法を探してみた。

_token_genは非公開のAPIで、動作保証されないので注意。

“`python
from firebase_admin import _token_gen
from types import SimpleNamespace

def verifyFirebaseToken(token, project_id):
mockApp = SimpleNamespace(project_id=project_id, options = {})
verifier = _token_gen.TokenVerifier(mockApp)
return verifier.verify_id_token(token)

token = “{token}”
verifyFirebaseToken(token, project_id)
“`

元記事を表示

sympyの 「Beam (Docstrings)」を調べた。

https://docs.sympy.org/latest/modules/physics/continuum_mechanics/beam.html

# テスト
“`python

“`

“`python
# 4.23 P101
from sympy import *
init_printing(use_unicode=True, wrap_line=False)
from sympy.physics.continuum_mechanics.beam import Beam
E, I = symbols(‘E, I’)
RA,RB = symbols(‘RA,RB’)
b = Beam(1, E, I)
b.apply_load(1.0,0.4,-1)
b.apply_load(RA ,0.0,-1)
b.apply_load(RB ,1.0,-1)
b.load
b.solve_for_reaction_loads(RA, RB)
b.reaction_loads ;print(“# b.reaction_loads =”,

元記事を表示

コンストラクタを用いたSQLAlchemyでのデータベース操作

この記事では、PythonのSQLAlchemyライブラリを使用して、エンティティのコンストラクタを通じてデータベースにデータを挿入する方法について説明します。具体的には、レースとタグの例を用いて、多対多の関連を持つテーブルへのデータ挿入を行います。

## SQLAlchemyとは
SQLAlchemyは、Pythonで使用される強力なSQLツールキットおよびオブジェクトリレーショナルマッピング(ORM)ライブラリです。これにより、データベースとのやり取りをPythonオブジェクトの操作として行うことができます。

Engine: データベースとの接続を管理します。
Session: トランザクションの境界を提供し、オブジェクトの状態を管理します。
Base: モデルクラスの基底クラスとして機能します。

## 手順

### モデルの定義
以下は、RaceとTagモデルの基本的な定義です。また、これらの間の多対多の関連を定義するためのアソシエーションテーブルも作成します。

“`python
from sqlalchemy import Table, Column, Intege

元記事を表示

英語を中間言語として使用した多言語→日本語翻訳手法

# 英語を中間言語として使用した多言語→日本語翻訳手法
HuggingFaceの事前学習済みモデルを使用して、多言語から日本語への機械翻訳プログラムを作ってみた。(英語を中間言語として使用)

## はじめに
オープンソースの機械翻訳モデルはいくつか出ているが(NLLB-200M2M100 etc.)、いずれも、
・でかい
・おそい
・コンシューマで買えそうなビデオカードのメモリに乗りそうなモデルだと、精度もいまいち

本来は、使用用途にあわせてFine Tuningせよ!ということですが、なるべく既存の公開モデルを使用して、いい感じにいろんな言語から日本語訳出来ないかな~と

元記事を表示

【登壇】Streamlitでデータカタログを作成したのでLTに初挑戦した

# 今回のお話
こんにちは!
株式会社GENDAデータエンジニアの山口です。

先日、SnowVillageというSnowflakeのコミュニティにて、
Streamlitの活用事例を発表するLT会がありました。

そこで登壇に初挑戦したので、
本日はそのレポートを投稿させていただきます。

https://techplay.jp/event/930024

# タイムスケジュール

タイムスケジュールは以下の通りでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/5019d8cc-9a5f-09fa-04e2-6d1d7d2632e9.png)

自分がStreamlitでアプリを作るにあたって思いつかなかったようなUIの実装方法や、
SnowflakeのNative Appのお話など、
皆様のお話聞くことができて大変勉強になりました。

# 自分のLTについて
どういったことを発表したのか、下記にて簡単にご紹介させていただきます。
ご興味を持っていただけたら、資料

元記事を表示

ポテンシャル流れを描く(python, matplotlib, 複素関数)

# 概要
複素ポテンシャル流れを描くスクリプトを作成しました。
与えられた複素関数に基づいて複素平面上にポテンシャル流線を描画し、複素積分を利用して流れ場の特性を可視化します。
以下のサイトを参考にしました。
https://qiita.com/Helmet/items/50f92cbd6fd212e43a2c

以下は概要の数式および結果の一例です。

## 円柱周り流れ
流速をU, 円柱半径をRとして
“` math
複素ポテンシャル:W(z)=U(Z+\frac{R^2}{Z})
“`

“` math
共役複素速度:w(z)=\frac{dW}{dz}=U(Z-(\frac{R}{Z})^2)
“`
pythonの場合、42行あたりを以下のように書きます
“`python:コードの41行~
# 被積分複素関数(複素ポテンシャル)の定義
def W_potential(Z):
return U_velocity*(Z+radius**2/Z) # 二重湧きだし

# 共役複素速度の定義
def w_velocity(Z):
return U_veloci

元記事を表示

A summary of python from the basics [Introduction]

## About the program structure
#### 関数
– ある値を与えると、ある値を返してくれるもの
– 与える値を『引数』、返ってくる値を『戻り値』『返り値』という
– 関数は、『定義』と『呼び出し』が必要

“`sample.py
def add(a, b):
return a + b

c = add(10, 5)
print(c)
“`

#### メソッド
– オブジェクトそれ自身に対する操作(関数)のこと
– オブジェクト名.メソッド名()の形で呼び出す
※ 型によってどのメソッドが使えるのかが決まる
“`sample.py

sport = “swimming”
sport.count(“m”)


menu = [“coffee”,”tea”,”coke”]
menu.append(“milk”)
“`
#### モジュール
– pythonでは、よく使う関数をpythonファイルにまとめたものを表す
– ファイル名は、『モジュール名.py』がついたもの
– pythonの標準ライブラリにあるモジュールは、『import』で使

元記事を表示

AWS EC2インスタンスの自動起動停止の制御手法

## 概要
AWS EC2インスタンスを利用しています。費用を節約するために、PythonでEC2インスタンスを自動起動停止のモジュールを作成しました。
## ソース
以下のスースを作成しました。
“`
import boto3
import os, sys, traceback

ec2_instances = None
dict_instance_names = {}
dict_instance_ids = {}

def to_exception_detail(exception, includes_trace=False):
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
lineno = exc_tb.tb_lineno
trace = traceback.format_exc() if includes_trace else ”
return ‘at [{0}]({1}:

元記事を表示

Kaggle with Wandb入門した

## 背景
実験管理をマニュアルで行ってきましたが、効率化欲が高まったためWandbの利用を試みることにしました

## 概要
今回はKaggle notebookからの利用を試します
利用ケースは”GBDTのハイパラとCV記録を行いたい”とします。
具体的にはCatboostのハイパラとCV記録を取っていきます。
(LightGBMはwandb_callbackが準備されていることが分かりいろいろ出来そうなのでやるとしたら次回)

## 前提
– Kaggleへの登録/Kaggle notebookが利用できる
– wandBへの登録/APIキーの取得

## 作業
### wandBのインスタンス化/ハイパラ記録

“`python
import wandb

params = {
‘loss_function’: ‘RMSE’,
‘eval_metric’: ‘RMSE’,
‘iterations’: 1,
‘learning_rate’: 0.1,
‘random_seed’: 0,
“early_stopping_rounds

元記事を表示

【ひとくちメモ】Pythonの関数ポインタ

# 概要
Pythonのクラスに関数を登録するときの挙動

# うまく行かない場合
“`Python
class Hoge:
def __init__(self):
self.func = lambda: None
self.trigger = self.func

def hello():
print(‘hello’)

hoge = Hoge()
hoge.func = hello
hoge.trigger() # 出力なし
“`
`hoge.trigger()`をすると`hello`が実行されてほしいが、実際には何も出力されない

# うまくいく場合
“`Python
class Hoge:
def __init__(self):
self.func = lambda: None
self.trigger = lambda: self.func() # 変更箇所

def hello():
print(‘hello’)

hoge = Hoge()
hoge.func = hel

元記事を表示

Pythonで「文字列、タプル、rangeなどから集合を作成する」の動作を確認してみた

# 概要

Pythonで「文字列、タプル、rangeなどから集合を作成する」の動作を確認してみました。
以下のファイルを作成しました。

https://www.javadrive.jp/python/set/index2.html

# 実装

以下のファイルを作成しました。
“`sample.py
myset = set(“Hello Python”)
print(myset)

myfrozenset = frozenset(“Hello Python”)
print(myfrozenset)

mylist = [“A”, “B”, “C”]
myset = set(mylist)
print(myset)

myfrozenset = frozenset(mylist)
print(myfrozenset)

mytuple = (“A”, “B”, “C”)
myset = set(mytuple)
print(myset)

myfrozenset = frozenset(mytuple)
print(myfrozenset)

myset = set(range(1

元記事を表示

文章で指定したものをなんでも検出できるAI Grounding DINO

# 言ったものをなんでも探してくれる
このモデルでは、ただ一言、

**「ライオン」
と言うだけでいい。**

![4cf94521-fff1-4e43-b8fd-5e2b0a8c3640.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/fe350010-05bd-8ece-91f7-4ee1b07a64e0.jpeg)

しかも、

**「たてがみの生えたライオン」**

も検出できる。
![946d6f8a-cdde-4230-9d70-64bbe230bb2e.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/2b20a18b-d823-3d09-59c9-e28a07f906f8.jpeg)

**「もっとも口を開けているライオン」**

も検出できる。
![b204200f-ba6a-47e3-b92e-3a4c0684eedd.jpeg](https://qiita-image-st

元記事を表示

【Python】LINE Notify を使ってみよう

## はじめに

Pythonでの自動処理の第一歩として,日常生活で身近なLINEを使った自動処理をしてみたいと思います.

## LINE Notify について

LINE Notify とは,Webサービスと連携すると,LINEが提供する公式アカウント「LINE Notify」から通知を受信する事ができるサービスです.
詳しくは,以下のWebサイトを参照してください.

https://notify-bot.line.me/ja/

## LINE Notify を使えるようにする手順

### 手順1 LINE アカウントを作成する

LINE Notify を使うには,LINE アカウントが必要です.ほとんどの人は LINE アカウントを持っていると思うので,この手順については省略します.
詳しくは,「[新規登録をする](https://guide.line.me/ja/signup-and-migration/line-signup.html)」を参照してください.

### 手順2 LINE Notify にログイン

[LINE Notify](https://not

元記事を表示

SwitchBot API v1.1を使用して、Zabbixから各種データを取得する

# はじめに
我が家で使用している各サーバやネットワーク機器、ストレージやIoT関連のものは、すべてZabbixにてモニタリングしています。
SwitchBot社の製品も大好きで、特に温湿度計は家の至る所にばらまいています。
これまでSwitchBotの温湿度計はAPI v1.0を使用してZabbixからデータ取得、管理していましたが、APIのv1.1が[公開された](https://blog.switchbot.jp/announcement/api-v1-1/)のは知っていたのですが、

・v1.0で特に困っていなかったこと
・v1.1は認証方法が少し複雑になっていて、v1.0の場合のように単発curlで値を取得するということができなくなってしまったこと

これらのことから、「今後のことも考えて新しいVersionに移行したほうがいいんだろうな」とは思いながら1年以上も放置してしまっていました。
今回ようやくv1.1に移行したので、自分用備忘録の意味も含めて記事にします。

## API v1.1に移行するモチベーション
・v1.0では取得できなかった、バッテリー残容量が取得できる

元記事を表示

LLMのモデルパラメータ数とGPUメモリ使用量について

# LLMのモデルパラメータ数とGPUメモリ使用量について

## 1. この記事の目的
最近は右も左もLLMという風潮
ぜひ、自分のPCで使ってみたいと思ったが、パラメータ数◯Bという表記
馴染みの無い(特に日本人には)単位で実際にどこまでのサイズが自分の
PCで実行できるか、分からず検証してみようと

## 2. GPUメモリ使用量について

– LLMのGPUメモリ使用量の計算方法
推論に必要なメモリは大まかに FP16の1パラメータ(2バイト)に対してパラメータ数◯Bとすると
$必要なメモリ(GB) = 2 \times ◯$
となります。意外とシンプルです。 [^1]

– GPUメモリ使用量の実測
GPUtil[2^]を使用して次のコードで計測。

“`python
import GPUtil
def get_gpu_used_memory(device_id):
byte_gpu_used_memory = GPUtil.getGPUs()[device_id].memoryUsed
GB_gpu_used_memory

元記事を表示

ホロジュール収集バックエンド API の FastAPI 化

## はじめに

こちらも以前に、収集したホロライブの配信予定や動画情報を Android アプリや React アプリ から利用するためのバックエンド API を作成しましたが、ホロコレクタをアップデートしたのと、Pydantic や DI も含めた FastAPI による開発が強力だったので、FastAPI 版としてあらためて作成しました。

[ホロコレクタ](https://qiita.com/kerobot/items/c1944dc29d6de542ad86) で収集した配信情報や配信者情報の参照・追加・更新・削除と認証を行う WebAPI となります。

全体的な処理の流れは、FastAPI や MongoDB のチュートリアルを参考にしています。

* [Simple OAuth2 with Password and Bearer](https://fastapi.tiangolo.com/ja/tutorial/security/simple-oauth2/)
* [Getting Started with MongoDB and FastAPI](https://ww

元記事を表示

ホロジュール収集プログラム(Python)のアップデート

## はじめに

以前に、ホロライブの配信予定や動画情報をホロジュールと Youtube から収集するプログラムを作成しましたが、ホロライブの所属メンバーが増えてグループ構成など複雑になってきたので、収集する情報を増やすために、ホロジュール収集プログラムをあらためて作成しました。

ちなみに、ホロジュールの API は公開されている(コラボ情報も含めて!)のですが、とりあえず前回と同様に Web スクレイピングを利用して配信予定の情報を収集しています。

なお、同時に開発している FastAPI 版の WebAPI のための準備でもあります。

## Selenium のバージョンアップ

Selenium 4.6 から、Selenium 自体に ChromeDriver の自動更新機能「Selenium Manager」が搭載されたため、環境構築の手順を簡略化でき、ドライバーの初期化もシンプルになりました。

“`python
def __setup_options(self) -> webdriver.ChromeOptions:
options = webdriver.

元記事を表示

OTHERカテゴリの最新記事