- 1. 【Python】PythonのClassについて復習
- 2. 【python】ttkbootstrapでテキストファイル読み込みと作成
- 3. DropboxAPIを使ってテナントの種類を判定する
- 4. 【Python】loggerに渡した文字列を関数で変更してみた
- 5. BardをPythonから利用してWebサイトを参照させる(非公式API)
- 6. Python最大桁から有効数字で丸める
- 7. Metaの大規模言語モデル「Llama 2」との会話をMacBook(M2)でPythonで実装してみた記録
- 8. Scikit-learnのall_estimators()関数の活用:全モデルでの精度を一括比較する
- 9. CP4NAを使い始める(MacOS+VSCode)
- 10. [AtCoder]Pythonのそれぞれの操作の計算量と代替案
- 11. プライベートIPアドレスの範囲をリアルな縮尺で示した図を作った
- 12. pythonでAWS Lambda のレイヤー機能を利用する
- 13. Stable Diffusionの最新モデル「SDXL 1.0」と過去モデルの生成画像をひたすら比較して進化を実感してみた
- 14. MacでAtcoderの入力を受け取る環境を整える【Python】
- 15. Raspberry Pi 4Bでneopixel(WS2812B)をSPIで制御してみた
- 16. Qiita の投稿規定
- 17. injector(DIコンテナ)の隠蔽
- 18. 【python】ttkbootstrapメータを表示
- 19. 【FastAPI】PydanticでIPv4Addressのインポートエラーが出る理由とは?
- 20. PythonでIAMユーザーのリストを取得し、差分チェックを取得するためのスクリプト
【Python】PythonのClassについて復習
今回の記事は、PythonのClassに関するものです。
前回の記事:https://qiita.com/oriefield/items/473049ca2cbc05ce4c6a
でClassを作成してまとめを作ると記載しましたが、その前にPythonのClassについて復習しておきたいと考えて記事を作成。
主に、[Pythonの公式ドキュメント](https://docs.python.org/ja/3/tutorial/classes.html)を参考にし、その概要の紹介となります。
1. Classとは
2. Scopeについて
3. Classのinstanceについて
4. Classの継承
5. Private変数
6. Iteratorについて## 1. Classとは
>クラスはデータと機能を組み合わせる方法を提供します。
クラスを作成することで:
* 新しいオブジェクトの型を作成、その型を持った新しいインスタンスを作成することができる。
* インスタンスは自身の状態を保持する属性を持てる
* インスタンスは自身の状態を変更するた
【python】ttkbootstrapでテキストファイル読み込みと作成
pythonでテキストファイル作成と読み込みアプリを作成しましたのでその成果物を共有したいと思います。
作成した成果物は以下になります。
プログラム実行時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/cc24239a-63a3-b335-74ef-763509f77d06.png)テキスト読み込み
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/3709b71b-cde9-9884-b056-1674dc78733c.png)### 機能概要
chatGPTに機能を解説してもらいました。1. TextEditorクラスは、ttk.Frameから派生しており、テキストエディタアプリケーションのメインウィンドウを表します。
2. ウィンドウの初期化、レイアウトの設定、テキストボ
DropboxAPIを使ってテナントの種類を判定する
# はじめに
Dropbox for Businessのテナントには現在「チームフォルダテント」と「チームスペーステナント」の2種類があります。今後チームスペーステナントが増えていく(チームフォルダテナントだったものを順次切り替えていく)そうですが、テナントの種類によってAPIの挙動が変わるので見に行っているのがどっちのテナントなのか、はっきりさせる必要があります。https://help.dropbox.com/plans/upcoming-business-team-changes?fallback=true
https://help.dropbox.com/ja-jp/organize/team-folders
# 判定する方法
## /get_current_accountのapiの中身を見て判断する
/get_current_accountの中の[‘root_info’][‘.tag’]の中身がteamかuserかで判定できます。
teamならチームスペーステナント、userならチームフォルダテナント(従来のテナント)となっているようです。### 実装例(pyt
【Python】loggerに渡した文字列を関数で変更してみた
Pythonでちょっと高級なAppを作るときに使用するlogger
loggerに渡した文字列に細工をしたいことありませんか?今回はloggerにわたす文字列を加工して出力するloggerを作成しました
# コード
“`Pythonfrom logging import LogRecord, Logger, Formatter, StreamHandler, FileHandler, DEBUG, INFO
def change_message(s: str) -> str:
if s == “\\\n”:
return “\n\n\n\n\n”s = s.upper().replace(“\n”, “\t”)
if “CAT” in s:
s += “ฅ^•ω•^ฅニャー”
return sclass OriginalFormatter(Formatter):
def format(self, record: LogRecord) -> str:
record.messag
BardをPythonから利用してWebサイトを参照させる(非公式API)
# はじめに
– Bardを使ったWebサイトの参照を含むタスクをpythonで試したので、やり方をまとめました。
– (少なくともこれを始めた当時は)ChatGPTではAPI経由でURLを指定したWebサイトの読み込みができなかったので、できそうなBardを使いました。
– 利用しているAPIは非公式のものです。
– BardでのURLへのアクセスは恐らく英語にしか対応していません。# Bard API
以下のgithubリポジトリのライブラリを利用しました。https://github.com/dsdanielpark/Bard-API
なお、
> Please note that the bardapi is not a free service, but rather a tool provided to assist developers with testing certain functionalities due to the delayed development and release of Google Bard’s API. It has been d
Python最大桁から有効数字で丸める
Pythonである数字を有効桁数で丸めたい。
round関数を用いれば、小数点ある桁で丸められるが、今回は最大桁数から動的に丸めたい
例: 有効数字3桁
0.0012344 -> 0.00123
12344000 -> 12300000
123.44 -> 123そのための関数を作成した。
# 関数本体
“`Python
import math
from typing import Union
InputType = Union(float, int, list[“InputType”])
def round_sigdig(val: InputType, sigdig: int) -> InputType:
“””最大桁からある桁数で丸める関数
Args:
val (any):
number or list of number or array of number
数値もしくは数値のlistもしくは数値のarray
sigdig (int):
signif
Metaの大規模言語モデル「Llama 2」との会話をMacBook(M2)でPythonで実装してみた記録
[Supership](https://supership.jp/)の名畑です。今時の漫画アプリって「無料で1日1話読める」というのが多いように思いますが、私、なぜか家に単行本で全巻揃っている漫画もその1日1話無料で毎日1話ずつ読み直したりするんですよね。最近だと[修羅の門](https://gmaga.co/c/shuranomon.html)とか。まとめて読めるのに、わざわざ毎日コツコツと。それがなぜかは自分でも答えが出ていません。
## はじめに
[Meta](https://about.meta.com/ja/)がリリースした大規模言語モデル[Llama 2(ラマ2)](https://ai.meta.com/llama/)。
前回の記事「[Metaの大規模言語モデル「Llama 2」をMacBook(M2)にダウンロードして会話をしてみるまでの記録](https://qiita.com/nabata/items/311c1fc33a16f66d34d8)」ではこの**Llama 2**をローカルに落としてサンプルプログラムを叩いて会話をしてみました。今回はこの**Ll
Scikit-learnのall_estimators()関数の活用:全モデルでの精度を一括比較する
Scikit-learnは多機能で広く使われているPythonの機械学習ライブラリですが、提供されている多数のモデルをどれが一番性能が良いのか比較するのは一苦労です。そこで役立つのが`all_estimators()`関数です。
# all_estimators()とは?
`all_estimators()`はScikit-learnが提供する全ての推定器(モデル)のリストを返す関数です。特に引数`type_filter`を指定することで特定の種類(’classifier’、’regressor’等)のモデルだけを取得することが可能です。
# 実際に使ってみる
以下のコードでは、カリフォルニア住宅価格データセットを用いて`all_estimators()`で取得した全ての回帰モデルを一度に評価し、その中で最も良いモデルを見つける例を示します。
今回は`all_estimators()`の使用例にのみフォーカスするため、前処理や特徴量選択は省略しています。“`python
import warnings
import pandas as pd
from sklearn im
CP4NAを使い始める(MacOS+VSCode)
# はじめに
Cloud Pak for Network Automation (CP4NA)を使い始める時に、まずはローカルの環境のセットアップが必要となります。[ドキュメント][1]にも導入方法が記載されていますがだいぶサラッとしていますので、実際にVSCodeを使ってセットアップしてみた例をご紹介します。本手順は以下の環境で実施しています。
– クライアントPC: macOS 13.4
– エディタ: Visual Studio Code 1.80.1
– Python: 3.11.4
– lmctl: 3.5.0
– CP4NA: 2.4[1]:https://github.com/IBM/lmctl/blob/main/docs/getting-started.md
# 本手順の対象・流れ
VSCode上でPythonの仮想環境を作成し、CP4NAのコマンドラインツールである`lmctl`をインストールします。lmctlを使用して、CP4NAの環境に接続するための設定を行います。# 1. Python環境セットアップ
## 1.1. VSCodeワークスペ
[AtCoder]Pythonのそれぞれの操作の計算量と代替案
# はじめに
著者は水色コーダーで、pythonのみを用いてAtCoderに取り組んでいます。
競プロでコードを書く際に計算量がオーバーしないかは大切な指標です。
それぞれの操作の計算量については以下の記事で綺麗にまとまっています。
[Pythonistaなら知っておきたい計算量のはなし](https://qiita.com/Hironsan/items/68161ee16b1c9d7b25fb)ここでは、計算量ごとに水色問題(ABCのE問題程度)まででよく使う操作をまとめました。基本的に最悪計算量で記載しています。
また、計算量がオーバーしがちな操作の対処法や代替案を記載しております。基本的にAtCoderの問題では定数倍が原因となり計算量がオーバーすることは少ないです。
そのため同じ計算量で別の処理に書き換えるのでなく、O(N)をO(logN)にするなど、根本的な改良が求められるケースが多いです。## O(1)
基本的にこれらの操作は計算量として問題にならないです。
TLEの場合は他の操作が原因の可能性が高いです。### 一般
~~~Python
#数値の初期化、
プライベートIPアドレスの範囲をリアルな縮尺で示した図を作った
# プライベートIPアドレスの範囲を図で示す
IPv4では、全アドレス空間`0.0.0.0~255.255.255.255`のうち以下のa,b,cの範囲をプライベートIPアドレスとして使用します:
a. 10.0.0.0 ~ 10.255.255.255
b. 172.16.0.0 ~ 172.31.255.255
c. 192.168.0.0 ~ 192.168.255.255これらの範囲を**模式的に**図示するとこんな感じです:
![privateIP_moshiki.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150194/20973824-5e13-24c7-7f57-c271b3d0e115.png)
「グレーの範囲がプライベートIPの範囲です」と言われれば、そうですねと答えるしかない図ですが、しかしこの図は誇張しすぎです。グレーの範囲はもっと狭いはずです。どういうことかというと、すべてのアドレスの数は$2^{32}$ = 4,294,967,296通り(約42億)で、実際のと
pythonでAWS Lambda のレイヤー機能を利用する
# はじめに
前回、pythonでAWS Lambda を業務利用で量産するにあたって、自分があると便利だと思うクラス構成の雛形を記事で公開しました。
今回は、その続編です。
(前回はこちら)https://qiita.com/Syoji_Yonemoto/items/7e8a7668358798656932
基底クラス達を、レイヤーに登録して複数Lambda関数から使いまわすと便利なので、レイヤー機能へ登録するためのメモ書きです。
# 公式ドキュメント
別言語(NodeJS)でもレイヤー機能を使ってるのですが、よくドキュメント迷子になるので、重要なページをメモ書き。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html#configuration-layers-path
<抜粋>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/55deb790-40e6-
Stable Diffusionの最新モデル「SDXL 1.0」と過去モデルの生成画像をひたすら比較して進化を実感してみた
[Supership](https://supership.jp/)の名畑です。[週刊少年ジャンプ](https://www.shonenjump.com/j/)34号に掲載された[小園江ナツキ](https://twitter.com/osonoeosonoe)先生の読切漫画「[殺陣ロール](https://togetter.com/li/2192828)」好きです。
## はじめに
7月27日についに[Stable Diffusion](https://ja.stability.ai/stable-diffusion)の新モデル**SDXL**の**1.0**がリリースされました。当初の予定よりは遅れたものの、**0.9**がリリースされた6月23日から1月程度での高速リリースです。
**SDXL 0.9**の際に「[Stable Diffusionの最新モデルSDXL 0.9と過去モデルで生成画像を比較してみた](https://qiita.com/nabata/items/1b1fbc362d71dc76237b)」という記事で**Stable Diffusion**にお
MacでAtcoderの入力を受け取る環境を整える【Python】
競プロの入力例を簡単に受け取る環境作りを紹介します。
## 記事の概要
| やること | 効果 |
| — | — |
| ファイルの準備
・入力例を受け取るためのファイル
・コードを書くためのファイル | 2つの画面で、入力例を見ながらコードを書ける。自分で入力例を作成する際も便利。 |
| 標準入力セットをスニペットに登録| 入力を受け取るためのコードを書く手間が省ける。 |
| ローカルでの入力受け取りの記述を、提出用に自動変換| 提出用のコードに自分で書き換える手間が省ける。 |
| Atcoderから入力例を自動で読み込む | 問題の入力例をコピペする手間が省ける。 |試行錯誤しながらの方法なので、まだ最適でないかもしれません。より良いやり方思いついたら、ぜひコメントで教えてください。
## 環境
– OS : macOS
– エディター : Visual Studio Code
– 言語 : Python(Jupyter Notebook使用)## 1. ファイルの準備
まずは、以下のようにフォルダ内に2つのファイルを作成します。
Raspberry Pi 4Bでneopixel(WS2812B)をSPIで制御してみた
# 結論
* [adafruit-circuitpython-neopixel-spi](https://pypi.org/project/adafruit-circuitpython-neopixel-spi/)を使用する
* 本家の[adafruit-circuitpython-neopixel](https://pypi.org/project/adafruit-circuitpython-neopixel/)はSPIに正式対応していない。
* NeoPixel_SPIのインスタンス化の際に、引数に”bit0=0b10000000″を入れる。
* bit0はNeoPixel dataをSPI dataに変換するための値
“`python
import board
import neopixel_spi
pixels = neopixel_spi.NeoPixel_SPI(
board.SPI(),
n = 10, # LEDテープの連結数を指定。今回は10個
brightness=0.01,# 明るさの指定
auto_write
Qiita の投稿規定
**Markdown 記法についてのページもちゃんと用意されているのに**,多くの人は無頓着に投稿されるようです。
https://qiita.com/Qiita/items/c686397e4a0f4f11683d
余計なお世話ですが,以下の2項目だけを特にお願いします。
![スクリーンショット 2023-07-30 23.29.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/5fd44646-b3eb-e709-8c67-85f3a46c48d7.png)
![スクリーンショット 2023-07-30 23.27.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/d5c1e656-1b0f-29d6-5328-b5e6ee8d0ac4.png)
injector(DIコンテナ)の隠蔽
[前々回](https://qiita.com/odxdoge/items/6031419f9461a8775d98)と[前回](https://qiita.com/odxdoge/items/2d1924e7d4fbe92e9969)の続きです。
クラスの依存関係の管理方法について解説しました。
injectorの実用的なテクニックについて深掘りします。## アーキテクチャ設計と実装
今までのコードでDIの考え方について解説してきました。また、その実装をライブラリを使って実現する方法についても示してきました。このようにアプリケーションのアーキテクチャを設計し、決定した場合、その後実装を行うはずです。
しかし、実際にAWS Lambdaで実装すると、ひとつ思うことがあります。
lambda handlerの最初にinjectorインスタンスを作成し、設定を行う必要があり、複数のLambdaを運用すると重複したコードになります。これにはいくつかの問題が挙げられます。
– 関係するすべてのLambda実装者がinjectorについて理解している必要があります。
– injecto
【python】ttkbootstrapメータを表示
今回もttkbootstrapで作成した成果物を記録として残します。
今回作成したのはメータを表示するプログラムです。コンボボックスでwindowのカラーを選択できるように修正致しました。
### 成果物
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/1787708e-98c2-94ce-0628-d8ce2fa14406.png)ボタンを押下したら%が増加したり、減ったりします。
一番上のボタンには現在のパーセントが表示されます。### ソースコード
“`python
from tkinter import *
import ttkbootstrap as tbroot = tb.Window(themename= “morph”) # カラーを決める事が出来る。
root.geometry(‘500×570’)def up():
my_meter.step(10)def down():
my_meter.step(-10)
【FastAPI】PydanticでIPv4Addressのインポートエラーが出る理由とは?
# 概要
FastAPIで`pydantic`を使ったコードを実行したら、以下のエラーが出た。
`IPv4Address`とはなんぞや?`pydantic`と関係あるの?と思ったので調べてみました。“`
from pydantic import BaseModel
File “pydantic/__init__.py”, line 2, in init pydantic.__init__
File “pydantic/dataclasses.py”, line 43, in init pydantic.dataclasses
# || No action: no method is added. |
File “pydantic/error_wrappers.py”, line 4, in init pydantic.error_wrappers
File “pydantic/json.py”, line 5, in init pydantic.json
ImportError: cannot import na
PythonでIAMユーザーのリストを取得し、差分チェックを取得するためのスクリプト
## はじめに
– 自己学習の一環として、ShellScript以外で簡単なコードを作成しながら、自身の理解を深めるために、解説をする記事です## スクリプトの内容
– IAMユーザーを読み込んで、別で準備したリストと比較し、差分を抽出してくれます## 環境
– MacOS Monterey(12.6)## 事前準備
– このコードを実行するにあって、以下のポリシーが最低限必要となります
– 自分のアカウントに付与していない人は、あらかじめ付与してください
– [iam:ListUsers ドキュメント](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)“` json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “IAMUserPermissions”,
“Effect”: “Allow”,
“Action”: “iam:ListUsers”,
“Reso