- 1. 期間リストの重複期間、空白期間を確認する方法【Python】
- 2. 天体の距離と角度を使って視線垂直距離をPythonで求める方法
- 3. CDKを使ってLambdaFunctionとLayerを一気にデプロイする
- 4. pythonモジュールの完成度を高める
- 5. 便利な翻訳と辞書機能アプリ(DicTran)をElectron+Reactで開発した
- 6. gpiozeroが動かない話
- 7. Pandasのapplyを使えば表計算処理を簡単にできる。
- 8. PythonでFile名-関数名-引数をログに出したい
- 9. Cloud Run の GPU で言語モデルを動かす
- 10. Python 内包表記 vs map/filter: どちらを使うべきか
- 11. ABC370回答メモ
- 12. 小道具:IPv6 – ULA プリフィクスの生成
- 13. データエンジニアリングをマスターするための6つのプロジェクト
- 14. ABC370をPythonで(A~D)
- 15. ABC370振り返り
- 16. ABC369参加記録 by Python
- 17. ABC368参加記録 by Python
- 18. ABC367参加記録 by Python
- 19. ChatGPT先生へ「ユークリッド原論の勉強は、何から始めたらいいですか。」(抜粋)
- 20. ChatGPT先生へ「三角形について、合同と相似の違いを教えて下さい。」(抜粋)
期間リストの重複期間、空白期間を確認する方法【Python】
## 説明
1. 開始日で `date_list` をソートします。
2. 現在の終了日と次の開始日を取得し、以下の条件でチェックを行います。
– 重複期間(次の開始日が終了日よりも早い)
– 空白期間(終了日の翌日が次の開始日でない)“`python
from datetime import datetime# 日付リスト
date_list = [
{‘start_date’: ‘2024/04/01’, ‘end_date’: ‘2024/04/30’},
{‘start_date’: ‘2024/05/01’, ‘end_date’: ‘2024/05/31’},
{‘start_date’: ‘2024/06/01’, ‘end_date’: ‘2024/06/30’},
{‘start_date’: ‘2024/07/01’, ‘end_date’: ‘2024/07/31’},
{‘start_date’: ‘2024/07/01’, ‘end_date’: ‘2024/07/31’},
]# 文字列を日付に変換
def p
天体の距離と角度を使って視線垂直距離をPythonで求める方法
## はじめに
天文学では、天体の距離や大きさを正確に知ることが重要です。観測によって得られた天体の見かけの大きさ(視直径)と距離から、実際のサイズを計算できます。この手法は、月のように比較的近い天体から、銀河のように非常に遠くにある天体まで、広く使われています。
本記事では、天体の見かけの大きさと距離の関係をもとに、その計算方法をPythonで実装する手順を紹介します。具体例として、月、太陽、超新星残骸カシオペア座A(Cas A)を取り上げ、それぞれの天体のサイズを求める方法を解説します。
## 角度の単位
天文学では、天体の位置や大きさを表すために、角度を「度(°)」「分(’)」「秒(”)」で表すことが一般的です。
– **度 (°)**: 円周の360分の1。
– **分 (‘)**: 1度の60分の1。
– **秒 (“)**: 1分の60分の1(1度の3600分の1)。これらの単位は天体の見かけの大きさを測る際に使われますが、計算では**ラジアン**に変換して扱います。
**ラジアン**は、円の半径と弧の長さの比から定義される角度の単位です。ラジアンを使うこと
CDKを使ってLambdaFunctionとLayerを一気にデプロイする
# 前書き
個人開発や技術検証で、試行錯誤しながらとにかく手を動かしたいとき、デプロイをもっと簡単にしたいと考えています。
Lambdaのランタイムをイメージにする方法もありますが、スクリプトを作成せず、コマンド一発でイメージをビルドし直し、ECRにプッシュするなど、スムーズに処理できる方法がなかなか見つかりません。もし、良い方法があれば教えていただきたいです。現状はFunctionとLayerを分ける形で対応していますが、これはあくまで妥協案です。とはいえ、一応使える状態にはなっています。
# 手順
AWS CDK プロジェクトのセットアップ
“`shell
mkdir my-lambda-project
cd my-lambda-project
cdk init app –language=typescript
“``aws-lambda` と `aws-lambda-python-alpha` ライブラリをインストールします。
“`
npm install aws-cdk-lib @aws-cdk/aws-lambda-python-alpha
“`
pythonモジュールの完成度を高める
役に立つ(と思っている)Pythonモジュールがある。
それが、業務で必ず使うモジュールだったり、再利用する頻度が高そうだと思ったら、モジュールの完成度を高めていこう。### 書く必要があるコードを書こう
– [ ] そのモジュールは再利用する価値があるか。
– [ ] そのモジュールは、他の人も使いたいと思うか。
– [ ] そのモジュールは、既存のOSSで代替できないか。
– [ ] 独自ライブラリとするよりは、既存のOSSに追加したほうがよくないか。
既存のOSSの実装の方は有効であるならば、自分の努力は、いいものをよりよくする方向に向けたほうがいい。
独自実装は、自分の勉強と割り切る。
– [ ] 使う目的は明確に、単一の役割を上手にこなすだけのことを考える。
– [ ] 別の目的がでてきたら、それは別モジュールにしよう。
余計な機能をつけると、無駄な作業が発生して、手離れが悪くなる。
実行したい内容が明確であれば、手離れも楽になる。### README.md
– [ ] README.md は簡潔に
1行での要
便利な翻訳と辞書機能アプリ(DicTran)をElectron+Reactで開発した
## 開発の背景
AI開発で英語の論文を読む時や、英語のニュースサイトで情報収集するときに[DeepL](https://www.deepl.com/ja/translator)や[Google翻訳](https://translate.google.com/)などの翻訳ツールをよく使用すると思います。ですがWebブラウザを行ったり来たりするのが面倒だと感じたことはありませんか?私はよく感じていて何かツールを探している、以下を見つけました。
[Mouse Dictionary](https://qiita.com/wtetsu/items/c43232c6c44918e977c9)
この機能は非常に便利な一方で、単語の登録や、文章の翻訳には対応できていないので、今回それらに対応するアプリを開発しました。## インストール
Dropboxに以下のファイルを格納していますので、こちらのファイルをダウンロードして開くとアプリをインストールできます。
https://www.dropbox.com/scl/fo/42c5ptts6y2rctanrfo1e/ACOK8vdw9czSjmXEz
gpiozeroが動かない話
## 概要
それまで動いていた`gpiozero`のプログラムが動かなくなったので修正した.## 環境
– Debian GNU/Linux 12
– Python 3.11.2
– gpiozero 2.0
“`
raspi@raspi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
raspi@raspi:~ $ python –version
Python 3.11.2
raspi@raspi:~ $ pip list | grep gpiozero
gpiozero 2.0
“`## 問題
下のようなプログラムを作成し,実行した.
“`python:PWM_org.py
import gpiozero
import sys
from time import sleep
Pandasのapplyを使えば表計算処理を簡単にできる。
# はじめに
PandasのDataFrameを列単位、または行単位で一括処理できる関数に“`apply()“`がある。この機能を使えば、表計算処理が簡単にできそう。本記事では、下記をDataFrameを例として“`apply()“`の動作を確認する。
|番号|値A|値B
–|–|–|–
0|一|1|10
1|二|2|20
2|三|3|30
3|四|4|40
4|五|5|50DataFrameをエクセル、CSVの表から準備する場合は下記記事参照。
https://qiita.com/tapitapi/items/0a0a84a6db46dcc07921
# 目次
+ [applyの引数](#applyの引数)
+ [axis列処理・行処理](#axis列処理行処理)
+ [列を絞って処理する](#列を絞って処理する)
+ [argsで引数を使う](#argsで引数を使う)
+ [result_typeで戻り値を複数返す](#result_typeで戻り値を複数返す)## applyの引数
applyの引数は下記の通り。その他パラメータ詳細は下記参照。
PythonでFile名-関数名-引数をログに出したい
### Pythonで関数ごとにログを出したいが関数名とか毎回手入力は面倒くさいなあという方用
要らないログを省いた結果、コード自体が長くなってしまったので、モジュール化することにした。
自分を呼び出してしまうので、ファイル名を変更する方は`__file__`で自動化すればいいかもしれない必要であれば`logging`で出力する
#### ログ出力用
“`ruby:getLog.pyimport inspect
from datetime import datetime
import os
import functoolsdef log_function_call(func):
“””関数が呼び出されるたびにログを出力するデコレータ”””
@functools.wraps(func)
def wrapper(*args, **kwargs):
# 呼び出し元のフレームを取得
frame = inspect.currentframe()# フレームスタックを辿り、`getLog.py` 以外のフ
Cloud Run の GPU で言語モデルを動かす
Google Cloudの大人気サーバレスサービスであるCloud RunがGPUに対応しました!
https://cloud.google.com/blog/ja/products/application-development/run-your-ai-inference-applications-on-cloud-run-with-nvidia-gpus
さっそく言語モデルを動かしてみます。
なおGPUを使わずCPUで言語モデル動かす記事は過去に書いていますので、必要に応じて参照ください。Cloud Runは結構たくさんメモリを載せられるので、今までも意外と言語モデルを動かせました。もちろんCPUだと処理速度は遅いのですが。
https://qiita.com/suzuki_sh/items/0f0ecfce8f5984afeeab
今回動かすモデルは私の好み[^pokemon-llm]で、ストックマークが公開しているGPT-NeoX 1.4Bを選びました。これをCloud Run上のGPUで動かしてみます。このモデルはそのまま動かすには14GB程度のメモリが必要です。
Python 内包表記 vs map/filter: どちらを使うべきか
## 記事の概要
Pythonでデータ処理を行う際、内包表記(Comprehension)と`map()`/`filter()`関数は非常に強力なツールです。この記事では、これらの方法を初級者にもわかりやすく説明し、中級者にも深い理解を提供します。効率的で読みやすいコードを書くために、どちらのアプローチを選択すべきかを理解することは、Python開発者として成長する上で重要なスキルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/83c6006b-6b1b-d3fc-1065-4ddc84ce5531.png)
## 基本概念
### イテラブルとは?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/7ed0052e-8d04-7064-462b-d20ec42b394b.png)
内包表記や`map()`/`filter()`を理解する前に、
ABC370回答メモ
# 0.はじめに
久々にデイリートレーニング等をやって気合を入れて挑戦。
結果はABCの3問しかとけずいつも通り・・・。
Dは行けそうに感じましたが、解説を見たら行けそうになかったです。
レートは-1とまぁレートにあった成績だったようです。# 1.A – Raise Both Hands
ちょっと問題文の理解に時間がかかった問題。
まぁ素直に言葉通りに
L=1、R=0の時 Yes
L=0、R=1の時 No
上記以外はInvalid
と、実装してACでした。https://atcoder.jp/contests/abc370/submissions/57506634
# 2.B – Binary Alchemy
Bなのにややこしいなと思いましたが、
インプットをもとにリストを作ったら
あとは、
ansに1をセット
for文で、iを1~Nで回す
ans>=iの時はansにA[ans-1][i-1]をセット
ans
小道具:IPv6 – ULA プリフィクスの生成
RFC 4193 – 3.2.2 を使って Ethernet などの MAC アドレスから Unique Local IPv6 Unicast Addresses プリフィクスを生成します。
“`python:genulaprefix.py
#!/usr/bin/env python3import argparse
import hashlib
import time
from struct import pack, unpackparser = argparse.ArgumentParser()
parser.add_argument(‘ether’, metavar=’MAC’)
args = parser.parse_args()mac = bytes([int(b, 16) for b in args.ether.replace(‘-‘, ‘:’).split(‘:’)])
if len(mac) != 6:
print(f’未知の MAC アドレス: “{args.ether}”‘)
else:
# 現在時刻を 64bit NTP 形式で得
データエンジニアリングをマスターするための6つのプロジェクト
# はじめに
データエンジニアリングは、データがビジネスにおいて価値を生むための基盤を提供する非常に重要な分野です。
しかし、このスキルを効果的に習得するためには、実際に手を動かして学ぶことが不可欠です。
この記事では、さまざまなデータエンジニアリングスキルに焦点を当てた6つのプロジェクトを紹介します。これらのプロジェクトは、データパイプラインの構築からデータの可視化まで、幅広いスキルを網羅しており、初心者から中級者まで役立つ内容です。# 1. データパイプラインの開発
データエンジニアリングの核となるスキルは、データパイプラインを設計・構築することです。
パイプラインは、さまざまなデータソースからデータを抽出し、変換して、最終的にビジネスユーザーが利用できる形にするプロセスです。
このプロジェクトを通じて、ETL(Extract, Transform, Load)の全体像を理解し、データの流れを支える技術を習得します。**プロジェクト例**
リンク: [Reddit Data Pipeline Engineering | AWS End to End Data Enginee
ABC370をPythonで(A~D)
トヨタ自動車プログラミングコンテスト2024#9(AtCoder Beginner Contest 370)の解答等のまとめ
https://atcoder.jp/contests/abc370
# A問題
https://atcoder.jp/contests/abc370/tasks/abc370_alとrが同じときはInvalid。それ以外はYesNoを条件に合わせて返す。
“`python:A
l, r =map(int, input().split())print(“Invalid” if l == r else “YNeos”[r::2])
“`
# B問題
https://atcoder.jp/contests/abc370/tasks/abc370_b問題文通りに実行する
“`python:B
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]now = 1
for i in range(1, n + 1):
# print(now, i, “
ABC370振り返り
[前回の振り返り](https://qiita.com/comet725/items/b1bb4b71cb77a5ce839e)
今日はABC開催日だったので参加結果を振り返る
https://atcoder.jp/contests/abc370
今週も無事A,B,Cの3完(0ペナ)
# A
l,rが同じなら`Invalid`
それ以外は指示に従う## ソースコード
“`python:main.py
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)
ABC369参加記録 by Python
# リアルタイムに解けた問題
## [A – 369](https://atcoder.jp/contests/abc369/tasks/abc369_a)
### 問題文
整数
$A,B$が与えられます。以下の条件を満たす整数$x$が何通りあるか求めてください。
– 条件:3つの整数$A,B,x$をうまく並べることで、等差数列を作ることができる。
なお、3つの整数$p,q,r$をこの順に並べた列が等差数列であるとは、$q−p$が$r−q$と一致することをいいます。
### 制約
– $1 \leq A, B \leq 100$
– 入力は全て整数### アルゴリズム
AとBが等しいときは1通り、AとBの差の絶対値が偶数であれば、AとBの間に$x$を入れることができるので3通り、これら以外のときは2通りの$x$がある。### ソースコード
“` python
A, B = map(int, input().split())if A == B :
print(1)
elif abs(A-B) % 2 == 0:
print(3)
else:
p
ABC368参加記録 by Python
# リアルタイムに解けた問題
## [A – Cut](https://atcoder.jp/contests/abc368/tasks/abc368_a)
### 問題文
N枚からなるカードの山があり、上からi枚目のカードには整数$A_{i}$が書かれています。山の下からK枚のカードを取り出し、順序を保ったまま山の一番上に乗せました。
この操作後の山の上から順に、カードに書かれた整数を出力してください。
### 制約
– $1 \leq K < N \leq 100$ - $1 \leq A_{i} \leq 100$ - 入力は全て整数 ### アルゴリズム pythonのlistでスライスを使う。 ### ソースコード ``` python N, K = map(int, input().split()) A = list(map(int, input().split())) for a in A[-K:]: print(a, end=" ") for a in A[:-K]: print(a, end=' ') print() ```
ABC367参加記録 by Python
# リアルタイムに解けた問題
## [A – Shout Everyday](https://atcoder.jp/contests/abc367/tasks/abc367_a)
### 問題文
AtCoder王国の住民はA時になるとたこ焼きへの愛を叫ぶことになっています。
AtCoder王国に住む高橋君は毎日B時に就寝しC時に起床します。高橋君は、起きているときはたこ焼きへの愛を叫ぶことができ、寝ているときは叫ぶことができません。高橋君が毎日たこ焼きへの愛を叫ぶことができているか判定してください。ただし、一日は24時間であり、高橋君が寝ている時間は24時間未満であるとします。### 制約
– $0 \leq A,B,C < 24$ - $A,B,C$は異なる - 入力は全て整数 ### アルゴリズム まずは、BとCどちらが大きいか比べる。その後、AがBとCの間に位置するかで処理を分岐する。 ### ソースコード ```python A, B, C = map(int, input().split()) if B > C:
if C < A < B: pr
ChatGPT先生へ「ユークリッド原論の勉強は、何から始めたらいいですか。」(抜粋)
・改行を挿入していません。申し訳ありません。
User
“`
ユークリッド原論の勉強は、何から始めたらいいですか。
“`
“`
英語版を教えて下さい。
“`
“`
PDFはありますか。
“`
ChatGPT (以下抜粋)# リンク
https://en.wikipedia.org/wiki/Euclid%27s_Elements
https://ja.wikipedia.org/wiki/ユークリッド原論
https://www.google.com/search?q=%E3%83%A6%E3%83%BC%E3%82%AF%E3%83%AA%E3%83%83%E3%83%89%E5%8E%9F%E8%AB%96+pdf&rlz=1CAUHAM_enJP1105&oq=%E3%83%A6%E3%83%BC%E3%82%AF%E3%83%AA%E3%83%83%E3%83%89%E5%8E%9F%E8%AB%96&gs_lcrp=EgZjaHJvbWUqDAgBECMYJxiABBiKBTIJCAAQRRg5GIAEMgwIARAjGCcYgAQYigUyBwg
ChatGPT先生へ「三角形について、合同と相似の違いを教えて下さい。」(抜粋)
・改行を挿入していません。申し訳ありません。
User
“`
三角形について、合同と相似の違いを教えて下さい。
“`
ChatGPT (以下抜粋)
“`
1. 合同 (Congruence)
…
2. 相似 (Similarity)
…
まとめ
合同: 形も大きさも同じ(辺と角がすべて等しい)
相似: 形は同じだが、大きさが異なる(角が等しく、辺の比が一定)
“`
“`
三角形と多角形の場合の、合同と相似の違いを教えて下さい。
“`# リンク
https://en.wikipedia.org/wiki/Congruence_(geometry)
https://en.wikipedia.org/wiki/Similarity_(geometry)
https://ja.wikipedia.org/wiki/図形の合同
https://ja.wikipedia.org/wiki/図形の相似
# 過去問 類題