- 1. 作って理解するローカルトンネルの仕組み
- 2. PythonでExcel (XLS/ XLSX)をPDFに変換する
- 3. SQLAlchemyのexecute()を用いてSQL文を実行したい
- 4. Google Colaboratory(Python実行環境)の初期設定
- 5. Python初心者に贈る、おすすめの環境構築 venv
- 6. RとPython(pandas)対比表
- 7. 【競馬予想AI】新馬戦予想に掲示板データを使ってみた話
- 8. ローカルLLMでAlpacaデータのようなインストラクションデータを自動生成してみた
- 9. IoT学習HATキットを使って緊急地震速報アラームを作った
- 10. Google API をなるべく使わずにゴルフ場までの所要時間ランキングを作った話
- 11. ファイル名・コードの変数名をテキトーにつけてた結果…
- 12. ABC346 with Python(A~F)
- 13. Azure FunctionでJSONパーサーAPIを作ってみる。
- 14. 【Python+PyAudio】音を切り替えたときの「プチッ」としたノイズへの対処法
- 15. Pythonで「キャプチャグループを設定してパターンの一部にマッチした文字列を取得する」の動作を確認してみた
- 16. discord.pyで定期的に変わるbotのステータスをいい感じに実装する
- 17. Discordのボイスチャンネル入室をLINEで通知する
- 18. 日本語encodingについての備忘録
- 19. 【Python】エラー「IndexError: list index out of range」を出ないようにするorエラー捕捉するコード
- 20. windows11 x WSL x Docker x Python x GPU x VScode (欲張り~)
作って理解するローカルトンネルの仕組み
### 1.目的
本記事の目的は、Pythonでのトイプログラムの実装を通して、ngrokに代表されるローカルトンネルの仕組みを理解することです。
– はじめに、ローカルトンネル技術が使われる様になった背景について説明します。
– 次に、その代表的なツールであるngrokのアルゴリズムを説明します。
– 最後に、そのアルゴリズムの仕組みを理解するために、Pythonで簡略化したプログラムを作成し、その挙動を確認します。### 2.前提知識
– Linuxの知識・経験(LPIC Level 1程度)
– 必須:TCP/IPの基本的知識
– Pythonの基礎### 3.背景の説明
通常、ネットワーク上のホストPCに対して外部のインターネットからアクセスするためには、以下の要件を満たす必要があります。
– ホストPCがネットワーク層(L3)でアクセス可能なIPアドレスを設定している
– ホストPCがトランスポート層(L4)で内向きの通信を許可しているこれ以外にも、セキュリティ確保の目的で、SSL暗号化などのアプリケーション層上の制約がしばしば設けられます。
しかし
PythonでExcel (XLS/ XLSX)をPDFに変換する
PDFにExcelファイルに変換すると、印刷や共有文書に加えて、フォームデータの保存を容易にすることができますまた、フォームのスタイルなどのレイアウトは、異なるデバイスやオペレーティングシステムでの一貫性を維持することを確認することができます。 今日は、ExcelをPDFに変換する簡単な方法を実現するサードパーティのPythonライブラリ[**Spire.XLS for Python**](https://www.e-iceblue.com/Introduce/xls-for-python.html) を紹介します。
### Excel to PDFの実装手順
1. まず、pipコマンドで依存ライブラリをインストールします;
`pip install Spire.XLS`
2. インストールが完了したら、必要なライブラリをインポートします;
3. Excelドキュメントをロードし、Spire.XLS for Pythonが提供する**Workbook.SaveToFile()** または**Worksheet.SaveToPdf()** を使用して、Excelワークブックまたは指定し
SQLAlchemyのexecute()を用いてSQL文を実行したい
## はじめに
– sqlalchemyの難しそうなメソッドを利用せず、簡単にSQL文を実行したかった
– また、sqlalchemyを使っていて、何箇所か詰まるところがあったためご共有## Code sample
### 1. (任意)DBとコミュニケーションするclassを作る
– 使いまわしたり、何個もオブジェクトを作成する時はclass化しておくと便利です。(ログとかも)
“`python
from sqlalchemy import Connection, MetaData, create_engine, textclass DBClass:
def __init__(self, schema)
self.schema = schema
self.engine = create_engine(
“postgresql://{user}:{password}@{host}:{port}/{database}”
)self.metadata = MetaData(schema=self.schema)
self
Google Colaboratory(Python実行環境)の初期設定
Google Colaboratoryの初期設定を残します。
# インストールする
## Google Driveを表示する## 新規をクリックする
![0.新規(選択前).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106311/ddd1f572-5d5c-fd7d-7adb-3f2e2b610d0a.png)## アプリを追加をクリックする
– その他 > アプリを追加![1.新規.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106311/436ba7e4-48e8-1786-3bd9-e76929951078.png)
## アプリ検索画面で検索する
– Colaboratoryと入力する
– Colaboratoryをクリックする
![2.検索.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106311/2e1
Python初心者に贈る、おすすめの環境構築 venv
# はじめに
2020年のコロナ禍にプログラミングを始めました。自己紹介にも書いているけど、大学の時にfortrunの単位を落としたリベンジ。w
で、ほとんどのPythonの初心者向けの本や講座、YouTubeなどは、まずAnacondaを勧められる。
ご多分に漏れず、僕もそうした。で、しばらくしてDeep Learningに足を突っ込むんだけど、まぁ環境構築で苦労するのなんの。随分と時間をかけたし、苦労した。
そんな経験をしないようにおすすめを書いていこうと思う。
ということで、れっつご〜。# 僕の環境
僕は会社ではWindows、家ではMacがメインでWindowsも使う。
なので、簡単に環境が作れて、管理できて、かつWin、Mac関係なくできることが肝心
qiitaは自宅で書いてるのでMacです。
2020 MacBook Air M1
python==3.10.8
pythonはAnacondaとかは使ってません。
こちらからダウンロードしたもの
https://www.python.org/# 前提
Pythonがインストールされてること。
何より、ファイルパスの
RとPython(pandas)対比表
# はじめに
RstudioのRと、VscodeのPythonを交互に使っていると、しょっちゅうどっちがどっちだか分からなくなる。`groupby()`と書くべきところを`group_by()`と書いてエラーに怒られて「なんで?」と思ったりする。ということで、自分が混乱しがちなものを整理してみた。# 対比表
| 操作カテゴリ | 操作内容 | VScode/Python/Pandas | Rstudio/R/tidyverse |
|————–|———-|—————|————-|
| ファイル | CSVファイル読込 | `pd.read_csv()` | `read.csv()` |
| | CSVファイル出力 | `df.to_csv()` | `write.csv()` |
| | ファイル一覧取得 | `glob.glob()` | – |
| 作業場所 | 現WD取得 | `os.getcwd()` | `getwd()` |
| | WD設定 | `os.chdir()` | `setwd()` |
【競馬予想AI】新馬戦予想に掲示板データを使ってみた話
## はじめに
競馬の新馬戦予想は、出走馬に関する過去のデータが乏しく難しいものです。そこで、netkeibaの馬毎の掲示板データを用いて、機械学習を活用した新馬戦の予測に挑戦しました。この記事では、データ収集から学習、予測までのプロセスと、その結果について詳しく紹介します。
## データ収集
netkeibaから新馬戦に関するデータをスクレイピングで収集しました。対象としたのは2022年にJRAが開催した新馬戦301件、出走した馬3948頭分の掲示板データです。スクレイピング後は、データの前処理として、Unicode正規化や特殊文字の除去などを行いました。
“`python:テキストの前処理
def preprocessing_text(text):text = unicodedata.normalize(‘NFC’, text)
# ()で囲まれた部分を削除
emoji= r’\([^)]*\)’
text = re.sub(emoji, “”, text)text = re.sub(r'[^\w\
ローカルLLMでAlpacaデータのようなインストラクションデータを自動生成してみた
# はじめに
OpenAIのtext-davinchi-003を利用して自動生成されたインストラクションデータである[Alpacaデータ](https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json)がStanford大学から公開されてから約1年が経過しました。このデータはインストラクションデータの生成にインパクトを与えましたが、OpenAIの利用規約の関係から商用利用ができないという問題を抱えていました。
当時は同じようなデータをローカルLLMで作成することは困難でした。しかし、2024年現在のローカルLLMならtext-davinchi-003でできていたこともできそうだと思い挑戦してみました。
生成したデータと生成に利用したコードは以下で公開しています。
https://huggingface.co/datasets/toshi456/Gemma-Alpaca-Data-13k
https://github.com/tosiyuki/Gemma-Alpaca-Data?tab=read
IoT学習HATキットを使って緊急地震速報アラームを作った
## はじめに
秋月電子さんが販売している。[IoT学習HATキット](https://akizukidenshi.com/catalog/g/g114568/)を使用して緊急地震速報アラームを作りました。
## 準備するもの
– IoT学習HATキット(Raspberry Pi Zero WH用)
https://akizukidenshi.com/catalog/g/g114568/
– RaspberryPi zero WH
https://akizukidenshi.com/catalog/g/g112961/IoT学習HATキットは部品の状態で届きます。ハンダ付け作業がありますのでハンダ付けのツールが無い方はそれも揃えておきましょう。
## IoT学習HATキットのハンダ付け作業
説明書が付属していますので特に難しいことは無いですがGPIOヘッダピンは先に付けた方が良いと思いました。私は最後に付けたのですがハンダ付け時にLEDなどと干渉してしまいハンダ付けが少し難しかったです。
## RaspberryPiの準備
OSのインストール方法などは沢山情報があるかと思い
Google API をなるべく使わずにゴルフ場までの所要時間ランキングを作った話
# はじめに
初めまして、L19 (リクと読みます) と言います。私は学生時代、信号処理や機械学習分野に応用を持つアルゴリズムに関する研究をしていました。
現在はサイバーセキュリティ関連製品メーカーの企業で統合ログ管理ソフトウェアの運用・開発を行っています。昨年末、株式会社ノマドクリエイティブを経営している友人 (以下 K さん) から「一緒にゴルフをする人を車でピックアップするとき、ゴルフ場までの所要時間が短い順に並べて比較できると良い」という話を聞きました。
今所属している会社の業務内容と直接の関係はありませんが、学生時代にアルゴリズム研究をしていた身としては興味深く、効率的な方法が実現できないか考えてみることにしました。# ゴルフ場までの移動時間が短い順に探せるゴルフ場予約サービス「NearGolf」
この「ゴルフ場探索」は、 K さんがサポートしている NearGolf がサービスとして既に提供しています。
https://neargolf.jp
NearGolf は、その特徴として「指定した駅を経由したとき所要時間の短い順にゴルフ場を検索すること」ができます。
ファイル名・コードの変数名をテキトーにつけてた結果…
## 自己紹介
英語の苦手なwhile-true-ifです。
Pythonは小学生のころからやっています。
## この記事の対象者
– Pythonのコード内の変数がテキトーな人
– フォルダ・ファイル名がテキトーな人
– クソコードが好きな人## とある日の友達との会話と後悔
### 状況
友達A君が自分のコードをたまたまみてしまった。
そのコードはいわゆる「クソコード」と呼ばれるものだった…
### 会話
友達はA、自分はWとします。
A:えっ!なにこれ。変数名テキトーすぎない?
W:普通だよ。大丈夫。何の変数か自分でわかるから。
A:変数名を`a`、`b`、`c`、`d`、`e`とかってつけてるけど大丈夫なの?26個使い終わったらどうするつもりなの?
W:そんなことないよ。変数はせいぜい10個くらいだよ。
A:もう少し変数名をわかりやすくした方がいいと思うよ。
W:今度からそうするよ。
### その後
「今度からそうする」と言ってしまったが、結局いつものクセでついつい変数名は1文字にしてしまった…
そのたびに似たような会話を何回かし
ABC346 with Python(A~F)
今回は、初めてのQiita記事投稿がてら、ABC346のA-F問題までの解説をPythonで書いてみました。誰かのお役に立てれば幸いです。。。
# A – Adjacent Product
## 問題
$N$ 個の整数 $A=(A_1,A_2,\cdots,A_N)$が与えられます。
また、$B_i = A_i \times A_{i+1} (1 \leq i \leq N-1)$ と定めます。
$B_1,B_2,\cdots,B_{N-1}$ をこの順に空白区切りで出力してください。https://atcoder.jp/contests/abc346/tasks/abc346_a
## 考察
隣り合っている要素同士の積を計算してリストに代入、それを答えとして表示する。## コード
“`python:A.py
N = int(input())
A = list(map(int, input().split())
B = []
for i in range(N – 1):
B.append(A[i] * A[i + 1])
print(*B)
“`
#
Azure FunctionでJSONパーサーAPIを作ってみる。
# はじめに
[naritomo](https://twitter.com/KanagawaLo81146)と申します。
本職はインフラエンジニアを行っています。
これまで作成していたJSONパーサーAPIを、AzureのFunctionを使用して立ち上げみました。
いろいろアドバイスいただけると嬉しいです。
## 開発概要
以下の仕様とします。
* API稼働フレームワークはLambda(Python)+API Gatewaayを使用する
* API入力は、以下のものを入力する
– URLにクエリでJSONキーを指定する。(?key=key1)
– POSTボディーにJSONデータを入れる
* API出力は以下のものとする
– クエリで指定したJSONキーに対応した値をプレーンテキストで出力する## 事前準備
Azureアカウントを作成していること。
*本システムでしたらかかっても1日あたり0.01ドルですみます。
## Azure関数新規作成(Pythonでの作成)
Azure Functionsの開発環境をローカルマシンにセットアップします。
【Python+PyAudio】音を切り替えたときの「プチッ」としたノイズへの対処法
# 目次
[1.はじめに](#はじめに)
[2.問題の原因調査](#問題の原因調査)
[3.位相について](#位相について)
[4.位相を理解するためのポイント](#位相を理解するためのポイント)
[5.アプローチ](#アプローチ)
[6.実装](#実装)
[7.検証](#検証)
[8.まとめ](#まとめ)
[9.今後の検討](#今後の検討)
[10.所感](#所感)
[11.参考](#参考)## はじめに
Python+PyAudioを活用し、正弦波(sin波)を生成して音鳴らす場合、音を切り替える際に「プチッ」というノイズが聞こえることがあり、不快感を生じさせる恐れがあります。この記事では、そのようなノイズの発生を抑える方法について紹介します。
より具体的に理解して頂くために、デモ動画を紹介します。以下のデモでは、音が「シ→ド→シ」ととそれぞれ2秒ずつ切り替わります。
### 「ノイズあり」デモ
discord.pyで定期的に変わるbotのステータスをいい感じに実装する
# はじめに
Discordのbotの定期的に変わるステータスをよく見かけるので実装する方法を紹介します。
この記事では簡単にレベリングと関連するコマンドの実装をするための方法を解説します。
## この記事の対象者
– ある程度Pythonの知識があり、discord.pyで定期的に変わるbotのステータスを実装したい。
## 前提知識
– 基本的なPythonの記法と仕様を理解している
– discord.pyの基本的な使い方を知っている# 実装
## 実際のコード
“`python: main.py
import asyncioimport discord
# ステータス変更
async def change_status(statuses: dict, interval: int):
while True:
key = list(statuses.keys())[0]
value = statuses.pop(key)
statuses[key] = valueif valu
Discordのボイスチャンネル入室をLINEで通知する
bot導入の関係で、自身が管理者権限を持つサーバーでのみ使用できる
## Discordbotを準備する
1.まず[Discord Developer Portal](https://discord.com/developers/applications
)を開き、discordにログインする。
2.右上の「New Application」をクリック。
3.アプリ名を入力し、利用規約とポリシーに同意チェックをして「Create」をクリック。
アプリ名は入室通知とした。
4.作成したアプリの管理画面が開く。画面左側の「Bot」を選択。
5.Botの管理画面になります。ここからアイコンやBOTのユーザー名を変更できる。
6.「Reset Token」をクリックしてトークンを取得し、どこかに保存しておく。:::note alert
取得したトークンをネットやディスコードチャンネルに公開しないこと。
:::7.画面左側の「OAuth2」を選択
8.OAuth2 URL Generatorで招待リンクを作成する。
SCOPESはbotを選択し、下部の「GENERATED URL」をコピ
日本語encodingについての備忘録
# はじめに
私はencodingを雰囲気でやっている。
日頃使っているデータには、日本語、半角カタカナ、漢字、数字、半角英語が混在しているため、基本的には`cp932`、`shift-jis`、`UTF-8`のどれかを使えばなんとかなると思っている。
そんなふんわりした理解であるため、毎回下記のようなコードを全部書いて総当たりでやってみて、たまたま良い感じに生成できていたファイルを使用する、というアホの運用を何年も続けている。
そして、「何故`UTF-8-sig`ではできたのに`UTF-8`では文字化けするのか」等を調べずに後続処理に進む。それゆえ一生雰囲気しかわからない。“`python
# df.to_csv(‘C:/Users/xxxx/Desktop/my_python/df_CP932.csv’, encoding=’cp932′) #ダメ
# df.to_csv(‘C:/Users/xxxx/Desktop/my_python/df_SHIFT.csv’, encoding=’shift-jis’) #ダメ
# df.to_csv(‘C:/Users/xxxx/
【Python】エラー「IndexError: list index out of range」を出ないようにするorエラー捕捉するコード
# 概要
`IndexError: list index out of range`エラーに遭遇し、このエラーを出ないようにするor捕捉してあげることでエラーをキャッチできるコードを3つ作成したので紹介します。# `list index out of range`とは
以下のコードを実行すると、リストの最初の要素の`fruit_name`を取得できます。“`py
def get_first_data_of_list(data, key, sub_key):
value = ”
if key in data:
if sub_key in data[key][0]:
value = data[key][0][sub_key]
return valueinformation = {
“fruit”:
[
{“fruit_name” : “apple”,
“fruit_price” : “200” },
{“fruit_name” : “banana
windows11 x WSL x Docker x Python x GPU x VScode (欲張り~)
# 概要
タイトルにある通り、
Windows11でWSLをセットアップして
WSL内でDockerをプルって
DockerをVScodeに認識させて
VScodeでPythonを動かしGPUも認識させるという欲張りセットです# 前提
GPUセットアップは完了済
(Windows x Python では認識できている状態)# 環境
Windows11
wsl2
docker# 手順
### まずはWSLをセットアップします
この記事がすごくわかりやすいです
(ちなみにこちらの記事を最後まで行うとDockerの環境構築まで終わります)https://qiita.com/zembutsu/items/a98f6f25ef47c04893b3
※WindowsStoreと紹介されている部分は
MicroSoftStoreと同じなので迷われないようにお気をつけ下さい#### WSLからWindowsのディレクトリを見る
WSLが問題無く起動できたはいいけど
Windowsにあるフォルダをどうやって見るんだろうか…色んなやり方がありそうでした。
以下の記事がと