- 1. Pythonで特定口座にあるオルカンを新NISAに買い換えるタイミングを分析してみる
- 2. Raspberry Pi のUARTを使う場合の注意点
- 3. ABC320(A~D)をPythonで解く
- 4. GitHub Actionを初めて使って、Pythonをリリース用資産に固めるまでやってみた
- 5. 【Python】スクレイピング tableのパース
- 6. Pythonで「辞書を作成する」の動作を確認してみた
- 7. 【初めてのWebアプリ開発】 Flaskを用いたTODOアプリ
- 8. ローカル環境で生成AIモデルの回答結果を得る
- 9. 日本語LLMでジョジョっぽい言葉を作成してみた
- 10. Blueskyの特定のフィードの投稿のみをJSONファイルに抽出するプログラムを作った
- 11. Python実行環境を配布して、.NETアプリから利用する。
- 12. Raspberry Pi のペリフェラル制御(GPIO/I2C/SPI)
- 13. TIL
- 14. PDF連動型ずんだもんナレーター
- 15. [Golang]JWTを実装してみる
- 16. ベクトル化+近傍探索の簡易お試しライブラリ作った
- 17. Selenium操作で完全Headlessを実現するためのいくつかのTips
- 18. reportlabを使ったPDF添付メール送信でプレビューの文字が消える話
- 19. Pythonの名前空間とスコープ
- 20. Python モジュール・パッケージ 検索・ロードの仕組み
Pythonで特定口座にあるオルカンを新NISAに買い換えるタイミングを分析してみる
# 目的
現在特定口座で積み立てているオールカントリー投資信託を新NISA口座に移し替えたい。実際移し替えることはできないので、投資信託を売って、買うことになる。積み立て枠は毎月10万売って10万買えば良い。では成長枠の240万はいつ売って、いつ買えば良いのか?
「セルインメイ(5月に売ってどこかに行け、セント・レジャー・デーまで戻ってくるな)」の格言通り5月に売れば良い?# MSCIオールカントリーワールドインデックスの年の動きを分析してみる
オールカントリーの年の動きをYahoo Financeから取得したデータを元に分析してみることにする。
2008年からのデータになっているのはYahoo Financeに2008年より前のデータがないからだ。ちなみに2008年というとリーマンショックの年で、ここから各国中央銀行はじゃぶじゃぶ金融緩和を始め世界株は上がり調子である。アテになるかどうかはわからない。# 実際のコード
## 1月を基準とした各月の割合を年ごとにプロットしてみる
“`python
import yfinance as yf# MSCIオールカントリーの
Raspberry Pi のUARTを使う場合の注意点
# はじめに
ラズベリーパイ(Raspberry Pi / Raspberry Pi Zero) のUARTをPythonで使う際、UARTのポートが出現せずハマったのでまとめる。参考にしたサイト
https://www.ingenious.jp/articles/howto/raspberry-pi-howto/gpio-uart/## UARTの設定
ラズベリーパイでUARTを使う場合はシリアルポートを有効にする。シリアルコンソールと共用しているのでUARTを使う場合はシリアルコンソールをOFFにする。
[設定]→[Raspberry Piの設定]→[インターフェース]![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299802/5c6bc976-b25d-20d6-3af2-1f3315d59df6.png)
# ハマった点
ポートとしては “`/dev/ttyAMA0“` がでてきたので選択したが動作しない。ラズベリーパイのUARTを使う場合は、miniUAR
ABC320(A~D)をPythonで解く
# 初めに
ABC320のA~D問題をPythonで解きました。
https://atcoder.jp/contests/abc320
# A: Leyland Number
https://atcoder.jp/contests/abc320/tasks/abc320_a
`x`の`y`乗は“`x**y“`で計算できます。
コード
“`python
A, B = map(int, input().split())
print(A**B+B**A)
“`# B: Longest Palindrome
https://atcoder.jp/contests/abc320/tasks/abc320_b
`S`の制約が小さいので部分文字列の初めと終わりで全探索しても間に合います。
文字列`s`の回文判定は、文字列を左右反転させたもの“`s[::-1]“`と`s`が一致するかどうかで可能です。
また、長さ一文字の部分文字列は常に回文です。
GitHub Actionを初めて使って、Pythonをリリース用資産に固めるまでやってみた
明けましておめでとうございます。
今年は、社会人4年目ですが、「技術力 × PM」として、飛躍したいですね。なんだかんだ、GitHub Actionに触れたことがなかったので、今日はその辺を触れていこうと思います。
この記事で触れる成果物は[ここ](https://github.com/mitsumizo/practice_github_action/blob/develop/.github/workflows/develop_artifact_make.yml)にあります。
下記ができるようになるのが目標である。
“`mermaid
graph TD;
A(チェックアウト)–>B(仮想環境にPythonのセットアップ)
B–>C(Pythonの仮想環境を作成)
C–>D(ライブラリをインストール)
D–>E(リリース用のZip化)
“`## この記事の流れ
1. GitHub Actionの概念に少し触れる
2. 成果物の説明を少しという流れで進んでいきます。
## GitHub Actionの概念
下記が各概念の関
【Python】スクレイピング tableのパース
# 概要
BeautifulSoupでテーブルをパースしてpandas.DataFrame形式で取得。
できるだけ様々な状況に対応できるように…配慮してます。# サンプル
[Wikipediaの東京都のページ](https://ja.wikipedia.org/wiki/%E6%9D%B1%E4%BA%AC%E9%83%BD#%E5%9C%B0%E7%90%86:~:text=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%86%85%E5%90%84%E5%9C%B0%E3%81%AE%E6%B0%97%E8%B1%A1%E3%83%87%E3%83%BC%E3%82%BF%EF%BC%88%E5%87%BA%E5%85%B8%EF%BC%9A%E6%B0%97%E8%B1%A1%E5%BA%81%E3%83%BB%E6%B0%97%E8%B1%A1%E7%B5%B1%E8%A8%88%E6%83%85%E5%A0%B1%EF%BC%89)にちょうど良い複雑なテーブルがありました。![スクリーンショット 2023-09-30 20.17.05.png](h
Pythonで「辞書を作成する」の動作を確認してみた
# 概要
Pythonで「辞書を作成する」の動作を確認してみました。以下のページを参考にしました。
https://www.javadrive.jp/python/dictionary/index1.html
# 実装
以下のファイルを作成しました。
“`sample.py
x = 1
y = “Desktop”
mydict = {x:y}
print(mydict)mydict = {1:”Desktop”}
print(mydict)x = 1
y = “Desktop”
mydict = {x:y}
print(mydict)
y = “Movile”
print(mydict)
“`以下のコマンドを実行しました。
“`
$ python3 sample.py
{1: ‘Desktop’}
{1: ‘Desktop’}
{1: ‘Desktop’}
{1: ‘Desktop’}
“`# まとめ
何かの役に立てばと。
【初めてのWebアプリ開発】 Flaskを用いたTODOアプリ
所属するコミュニティで初心者向けWebアプリハンズオンとして、Flaskを用いてTODOアプリを作りました。
その時の資料を一部修正して共有します。
これからWebアプリ開発を学ぶ方や、ハンズオン担当者の方の参考になれば幸いです。:::note
対象
Python, HTML, CSSの基本を学んだ初心者
:::
:::note
目標
簡易的なWebアプリを作成する
:::# Webアプリケーションについて
Webアプリは大きく2つの分野に分けられます。
__フロントエンド・・・ユーザーが見える部分・直接操作する部分__
__バックエンド ・・・ユーザーから見えない部分・直接操作できない部分__電卓アプリを例に挙げると、
電卓アプリのデザインを作ったり、数字を入力するのがフロントエンドで、入力された値を処理するのがバックエンドといった形になります。
また、計算結果を保存したい場合やユーザー情報を保存したい場合はデータベースを使用します。
## データベースとは
データを効率的かつ整理された方法で保存・管理するシステムのことアプリ開発では大量のデータが必要になります
ローカル環境で生成AIモデルの回答結果を得る
# 生成AI=ChatGPT?
API経由で生成AIを呼び出すWebアプリを作ろうと思った時に、今まではOpenAIのAPIを呼び出していたが、もし思うようにOpenAIのAPIが使えなくなると今後Webアプリ開発などで支障が出る可能性がある。
そこで、ローカル環境でLLMモデルを使う方法について整理した。# TL;DR
1. WSL2環境(ubuntu)にllama-cpp-pythonを入れる。
2. モデルファイル(gguf)をhuggingfaceからダウンロードする。
3. pythonでLLMモデルにクエリを投げるコードを書く。### 実行環境用意
実行環境はWSL2上のubuntuで、python3が入っている。
以下コマンドでllama-cpp-pythonを入れる。
“`
pip3 install llama-cpp-python
“`
### モデルファイルのダウンロード
[huggingface](https://huggingface.co/)のサイトからモデルファイルをダウンロードする。拡張子が「.bin」でなく、「.gguf」であるものをダウンロ
日本語LLMでジョジョっぽい言葉を作成してみた
# はじめに
最近の生成AIの発展は何か面白い文章をつくるといったエンタメにも広く活用できると考え,日本語LLMを利用してジョジョっぽい文章を作成してみました.そもそもジョジョとはですが,独特な言い回しを特徴とした作品で,これが元となったセリフがネットミームなどの形で使われているのをよく見ます.このセリフは一種の方言のような性質もあると考えられ「標準語→ジョジョっぽい言葉」という変換をしてみたいというのがモチベーションです.投稿に当たりこれまでのQiita記事での動向を調べてみましたが,ジョジョ×言語生成はこれまでいくつか試されているようでした.こちらもぜひ読んでみると面白いと思います!
– [LSTMでジョジョに奇妙な名言を制作してみた](https://qiita.com/tsekine2/items/e6168a8748e85786d5a1)
Transformer以前の時系列モデルLSTMによるジョジョに出てくるセリフの次単語予測
– [ジョジョの奇妙なGPT-2](https://qiita.com/maskot1977/item
Blueskyの特定のフィードの投稿のみをJSONファイルに抽出するプログラムを作った
# 1.プログラム
“`python:GetFeedPost.py
import requests
import json# ログイン処理
url = “https://bsky.social/xrpc/com.atproto.server.createSession”data = {
“identifier”: “example.bsky.social”,
“password”: “example12345hoge”
}headers = {
“Content-Type”: “application/json; charset=UTF-8”
}response = requests.post(url, data=json.dumps(data), headers=headers)
print(response)# このaccessJwtを後の処理で使う
accessJwt = response.json()[“accessJwt”]#フィード取得
url = “https://bsky.social/xrpc/app.bsky.fee
Python実行環境を配布して、.NETアプリから利用する。
## 目標
[namedivider-python](https://github.com/rskmoi/namedivider-python)を、Windowsで実行できるようにし、Excelアドインの関数から呼び出せるようにする。## 課題
– .NETから呼び出す方法
– namedivider-pythonを含めたPython実行環境を、ユーザーに配布する。## .NETから呼び出す
[pythonnet](https://github.com/pythonnet/pythonnet)を利用する。WinPythonを利用するには、次の設定をしないといけないようです。
[Using Python.NET with Virtual Environments](https://github.com/pythonnet/pythonnet/wiki/Using-Python.NET-with-Virtual-Environments)#### 設定例
“`csharp
Runtime.PythonDLL = @”HOGE\python-3.12.0.amd
Raspberry Pi のペリフェラル制御(GPIO/I2C/SPI)
# はじめに
ラズベリーパイ(Raspberry Pi / Raspberry Pi Zero) のGPIO、I2C、SPIをPythonで制御する方法をまとめる。PythonのライブラリにはGPIO([RPi.GPIO](https://pypi.org/project/RPi.GPIO/))、I2C([smbus2](https://pypi.org/project/smbus2/))、SPI([spidev](https://pypi.org/project/spidev/))等あるが、それぞれ使い分けが必要となる。本記事では、GPIO、I2C、SPI全てが一つにまとまっている**pigpio**で制御する。RaspberryPi Picoの場合はmicropythonなので、別記事の下記参照。
https://qiita.com/tapitapi/items/c3c5e7530d49794489fb
# 目次
+ [Raspberry Piのピン配置](#raspberry-piのピン配置)
+ [ペリフェラル通信の設定](#ペリフェラル通信の設定)
+ [pigpio
TIL
> AtCoder入門
# Python
1. 割り算は[ // ]を使って H // Aと表す
1. 余りはRubyと同じで[ % ] を使って H % Aと表す“`python
H, A == map(int, input().split())
“`:::note info
AtCoderには入力例が複数あります
– すべての入力例で試す
– 手を動かして入力例を考察する
:::### Column
pythonの整数型は2の64乗 – 1まで表現できます“`python
import sys
print(f”Pythonにおけるint型の最大値: {sys.maxsize}”)
“`“`python
Pythonにおけるint型の最大値: 9223372036854775807
“`
PDF連動型ずんだもんナレーター
# PDFページに連動したVOICEVOXナレーター
このプログラムは、PDFを読み取りその内容を表示しながら、VOICEVOXでプログラム中の現行を読上げます。## 動作環境
WindowsでもLinuxでもVOICEVOXが起動していれば動作すると思います。
動作チェックはLinuxでしかやっていません。## 必要なライブラリ
PySimpleGUI、pdf2image、requests、pyaudio## code
コードはご自由に変更してお使いくださいませ。
~~~python
#!/usr/bin/python3
# Programed By M.kawase embed-ai labo. LTD
import PySimpleGUI as sw
import pdf2image as p2i
import requests as req
import json
import pyaudio as pawdef = [[sw.Image(key=”IM01″)]]
imgs=p2i.convert_from_path(‘./Linux01.pdf’,80,fm
[Golang]JWTを実装してみる
## 必要なライブラリ
“`
go get github.com/dgrijalva/jwt-go
“`## 色々な動作確認
“`golang
package mainimport (
“fmt”
“time”“github.com/dgrijalva/jwt-go”
)func CreateToken(secretKey string) (string, error) {
claims := jwt.MapClaims{}
claims[“authorized”] = true
claims[“user_id”] = “sample”
claims[“exp”] = time.Now().Add(time.Second * 2).Unix() // 有効期限を1時間に設定token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
return token.SignedString([]byte(secretKey))
}func ValidateToken(tokenStri
ベクトル化+近傍探索の簡易お試しライブラリ作った
自然言語や画像の分野で埋め込みベクトルを使ってみることが多くなってきたので、実験用に手元でさっと遊べるプログラムを作っておきました。
なお、これらの仕組みはおそらくLangChainとか使うともっと堅実に実現できると思います。あくまでお試し用にどうぞ。## こちら
https://github.com/stkdev/VectorSearchUtil
READMEはまだ全然書けていない。
## どういう機能?
テキストや画像を雑に突っ込むと、類似検索や分類ができるようになるというものです。
仕組みとしては入力されたテキストor画像を言語or画像モデルを用いて埋め込みベクトル化し近傍探索できるようにしたものです。
ついでにゼロショットでの分類もできるようにしてみています。機能として特に新規性はないですが、雑に突っ込んでそれなりに動いて遊べる自分用ツールとして作っています。
この記事([仮想「データサイエンティスト採用試験」作って採点してみる](https://qiita.com/stkdev/items/dbb92c005a41318e133c))作るときにサンプル回答とし
Selenium操作で完全Headlessを実現するためのいくつかのTips
PythonでSeleniumを用いる際、必ずしもGUIが使用できる環境ばかりではありません。クラウド環境はもちろん、ローカル環境でもバックグラウンドで実行できたほうが何かと都合良いでしょう。そう考えると、何も考えずにPyaoutguiなどを用いていると思った通りの挙動となりません。今年一年、そういった作業を多くしてきたので、それで蓄積されたノウハウをまとめておきたいと思います。
## 1. Formへのデータ入力はまずsend_keys(→Enter)を試す
“`python
input_elem.send_keys(new_value)
input_elem.send_keys(Keys.ENTER) # send_keysだけでは入力確定にならない場合
“`## 2. send_keys.clear()が効かないときは全て選択してDelete
“`python
input_elem.send_keys(Keys.COMMAND, ‘a’)
input_elem.send_keys(Keys.DELETE)
input_elem.send_keys(new_price)
reportlabを使ったPDF添付メール送信でプレビューの文字が消える話
# はじめに
こんにちは、Pittaです。この記事は”HeiseiKakuGo-W5″フォントを用いたPDFをメールで送ると文字消えが発生する、という注意喚起です。
– [はじめに](#はじめに)
– [結論](#結論)
– [PythonでPDF作成](#pythonでpdf作成)
– [デフォルトで使える日本語フォント](#デフォルトで使える日本語フォント)
– [PDFを作る](#pdfを作る)
– [メール送信で消える文字](#メール送信で消える文字)
– [対策](#対策)
– [終わりに](#終わりに)# 結論
reportlabではデフォルトのフォントは使わずにちゃんとした他のフォントを使った方がいいよ。
# PythonでPDF作成
PythonでPDFを作りたい時、重宝するのが`reportlab`というライブラリです。書き方等詳しいことはこちらの記事を参考にしてください。
https://qiita.com/takahashi_you/items/8c5fb1f07db1825c67a5
# デフォルトで使える日本語フォント
`repor
Pythonの名前空間とスコープ
:::note warn
2020年に書いた個人的なまとめです
:::モジュール や パッケージ化する理由…保守しやすい とか 凝集度が高まる とかいくつか効用もありますが…
効用の1つに “名前空間で区切る” ことがある。
名前空間で区切ることでオブジェクトの衝突が起こらない。# 名前空間に関して
定義を確認
https://docs.python.org/ja/3.9/tutorial/classes.html#python-scopes-and-namespaces> 名前空間とは “名前空間 (namespace) とは、名前からオブジェクトへの対応付け (mapping) です。
> 名前空間について知っておくべき重要なことは、異なった名前空間にある名前の間には全く関係がないということです。
> 例えば、二つの別々のモジュールの両方で関数 maximize という関数を定義することができ、定義自体は混同されることはありません”↓
“名前空間 (namespace) とは、名前からオブジェクトへの対応付け (mapping) です”
(私はこれで
Python モジュール・パッケージ 検索・ロードの仕組み
:::note warn
2020年に書いた個人的なまとめです
:::# モジュール・パッケージ 検索の仕組み
– ![module_install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/56201d85-363b-799f-f90c-04189e3fddb6.png)– 公式
– https://docs.python.org/ja/3/reference/import.html#searching
– [import path](https://docs.python.org/ja/3/glossary.html#term-import-path)
– sys.path
– モジュールを検索するパスを示す文字列のリスト
– https://docs.python.org/ja/3/library/sys.html#sys.path# モジュール・パッケージ ロードの仕組み
– モジュールがPython モジュールだった場合、ローダーはモジュールの