- 1. ngrokを使用したローカル環境でのSlack bolt(Python)の開発
- 2. TODO: とかアノテーションコメントについてまとめてみた
- 3. Databricks Auto Loader にて parquet をソースにする場合における timestamp の hive スタイルのパーティションの値を取得できない事象への対応方法
- 4. DjangoのHTMLファイルで動画ファイルを識別して表示させるには
- 5. GPT (Cursor) による、設計からの多言語(Javascript, Python)自動コーディング デモ
- 6. クラウドストレージサービスを自作した話
- 7. (2*3*5*7*11*13)**10の10進数での桁数「2014 一橋大学 後期 【3】」をChatGPTとsympyとWolframAlphaでやってみたい。
- 8. Python:二次元リストを作る際の注意点
- 9. matplotlibライブラリ pyplotモジュール:誰でも簡単にできるグラフ作成ガイド
- 10. 既存のDataFrameを加工したデータをDataFrameに追加
- 11. OpenAIの最新モデルGPT-4oをWeb APIで呼び出して質問に答えてもらったり画像の内容を説明してもらったりした
- 12. 自然言語処理のための事前準備(Windows)
- 13. 簡単に分かる正規分布
- 14. 【Pythonの方言】Googleでも使われているStarlark言語
- 15. jinja2についてまとめてみました。
- 16. CAM/Grad-CAMによる画像認識モデルの信頼性向上
- 17. [Python] RSSから更新記事のみを取得する
- 18. WSLのdockerとVSCodeのDev Containersでpythonのプログラミング環境を作ってみる
- 19. is や not などは値の計算には使わない
- 20. Pythonで入力値に記号が含まれるかチェックする
ngrokを使用したローカル環境でのSlack bolt(Python)の開発
今回はngrokを使用し、ローカルでSlack boltの開発環境を構築してみました。自分のメモ用に記事を投稿します。
## ngrokのセットアップ(MacOS)
ngrokユーザ登録し、[ngrok dashboard](https://dashboard.ngrok.com/get-started/setup/macos)を開きます。Setup & Installationの手順に従って、ngrokをインストール、ngrok.ymlファイルにauthtokenを追加します。
“`
brew install ngrok/ngrok/ngrok
ngrok config add-authtoken xxxxxxxxxxxx
“`
ターミナルを開き、実行可能かを確認してみます。
“`
ngrok http 8080
“`
下記が出力されことを確認できます。ForwardingにあるURLは外部に公開されますが、実行する度にURLが変わり毎回Slack boltの設定を変更しないといけません。
![ngrok.png](https://qiita-image-store.s
TODO: とかアノテーションコメントについてまとめてみた
## はじめに
コメントを種類ごとに分類できる**アノテーションコメント**を採用しています。
使っている内に経験的なベストプラクティスが自分なりにつかめてきたのでまとめてみました。### この記事でわかること
– アノテーションコメントの使い方と例がわかる
### この記事の対象者
– アノテーションコメントを使いたいエンジニア
### 動作環境・使用するツールや言語
– Python3
– その他言語## アノテーションコメントとは
コメントの先頭に`TODO: `とかをつけて分かりやすくする試みです。– コメントにメタデータを追加できる
– コードの欠陥が分かりやすくなる## よく使っている記法と意味
使って欲しい順に並べてみました。
レビュアー視点で思うことも書いています。|記法| 意味 | 思うこと |
|:-:|:-:|:-:|
|INFO: |関数の動作説明などの情報|あるとなんだかんだ嬉しい
(良い命名で省略できるかも)|
|NOTE: |**なぜこうしたのか、こう考えたのか**という情報|**コードからは読み取れな
Databricks Auto Loader にて parquet をソースにする場合における timestamp の hive スタイルのパーティションの値を取得できない事象への対応方法
## 概要
Databricks Auto Loader にて parquet をソースに(`cloudFiles.format`オプションに`parquet`指定)する場合における timestamp の hive スタイルのパーティションの値を取得できない事象への対応方法を共有します。2024/06/04 時点で仕様であるかの確認を実施できておりませんが、暫定対応方法を共有します。
Spark の処理にて`partitionBy`を指定して書き込むと、Timestamp 型のカラムが`ingest_timestamp=2020-01-02 12%3A34%3A56`という形式で書きこまれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/202b2857-413f-5ca5-7a16-db2e318a8c4b.png)
Spark 書き込み時の形式のディレクトリから、 Databricks Auto Loader にて取り込むと`NULL`となってしまいます。
DjangoのHTMLファイルで動画ファイルを識別して表示させるには
###### HTMLでの動画ファイルを識別するために私が使ったものを紹介します
###### 技術検証中にまとめたため、コメントアウトは気にしないでください## カスタムフィルター
カスタムフィルターとはテンプレート内でDBから受け取ったデータを変換・整形するための仕組みです。今回はmp4ファイルとmovファイルを識別するために使用しました。
## カスタムフィルターの導入方法
カスタムフィルターを導入するためにはまず下の図のようにアプリケーションファイル内に[templatetags]フォルダーを作成し、その中に__init__.pyとcustom_filters.pyという2つのPythonファイルを作成します。
ここでの__init__.pyはフォルダー内のPythonファイルを認識させるためのものです。![スクリーンショット 2024-06-03 145344.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3627826/6123681a-3e4b-e4e0-382e-c
GPT (Cursor) による、設計からの多言語(Javascript, Python)自動コーディング デモ
GPT (Cursor) による、設計からの多言語(Javascript, Python)自動コーディング デモ です。
### 設計
下記による設計
– openapi
– mermaid – classDiagram[GitHub リポジトリ](https://github.com/9tqP/GPT-AutoCoding-Demo)
## コード生成
prompt には下記を書き込んでいる
– タスク
– mermaid から Javascript・Python への変換例### Javascript コードの生成
– Cursor で `architecture_001.md` を開く。
– Chat で prompt_js_001 をメンション `@prompt_js_001.md`。
– プロンプト実行で、GPT-4 で設計からコードが生成される。### Python コードの生成
– GitHub Copilot, Cursor で `architecture_001.md` を開く。
– Chat で prompt_js_001 をメンション
クラウドストレージサービスを自作した話
# はじめに
結構前に作りました。当時は金がなく、google driveを契約できるほどの経済力が全くなかったのですが、その時思いました。無いなら自分で作ってしまえばいいと。## ハードウェア
都合のいいことに余っていたpcパーツがありました。流石に全て揃っていたわけではないのでCPUとマザーボードは買い足しました。これらのパーツでサーバーとなるPCを新たに組み、ハードウェアを用意することができました。4TBのHDDが転がっていたのも大変都合がよかった。## 構想
Djangoを使ってシステムを構築し、bootstrapでいい感じに整えようと考えました。
アカウント毎のデータの管理、データ残量、アップロード制限、パスワードの変更、アカウントの新規作成、pdfファイルのプレビュー、動画ファイルのサムネイル作成自動化、サムネイル画像のデータサイズの自動縮小、スクロールによるページング、レスポンシブ対応、など諸々の機能を実装する。# 完成後のホーム画面
![無題402_20240603141831.JPG](https://qiita-image-store.s3.ap-n
(2*3*5*7*11*13)**10の10進数での桁数「2014 一橋大学 後期 【3】」をChatGPTとsympyとWolframAlphaでやってみたい。
https://qiita.com/mrrclb48z/items/daa6f757138ee32a1f0e
# オリジナル
・大学入試数学問題集成 様>【3】テキスト
>犬プリの世界さんの解答(PDF)へhttps://mathexamtest.web.fc2.com/2014/201410272/2014102720200mj.html#top-0203
・youtube (0:00〜1:43:17)
2014 一橋大学 後期【3】(39:30〜1:08;34)
>…二項定理は評価にも使える。
>…不等式にも使える。# オリジナル様の方法で
・勉強中? 私はあきらめました。# ChatGPT-3.5先生へ
大学入試数学問題集成 様> 【3】テキスト
・ページのソースを表示です。MathMLです。
省略しようと思いましたが、大学入試数学問題集成 様 の全文から必要部分の抜粋です。
“`
Python:二次元リストを作る際の注意点
# 二次元リストを作る際の注意点
皆さん、二次元リストを書く際、どのように記述していますか?
恐らく多くの人が以下のようにfor文を用いて記述していると思います。“`py
fields=[[0 for _ in range(4)] for _ in range(4)]
print(fields)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
“`ただ、二次元リストを作るだけなら以下のようにも記述できますよね。
“`py
fields=[[0]*4]*4
print(fields)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
“`リストの中身にもよりますが、状況によっては下のコードの方が、短く済みそうですよね。
しかし、実は下のコードは二次元リストとしての役割を果たしていません。
試しにリストの中身を更新してみます。
まずは、for文で書いた二次元リストから更新します。“`py
fields=[[0 for _
matplotlibライブラリ pyplotモジュール:誰でも簡単にできるグラフ作成ガイド
### はじめに
Pythonはデータ分析や可視化において非常に強力なツールを提供しています。その中でも、`matplotlib`ライブラリの`pyplot`モジュールは、グラフ作成において基本的でありながら多機能なツールです。本記事では、初めて`pyplot`を使用する方のために、導入方法と簡単な使用方法について解説します。
### 1. `matplotlib`のインストール
まずは`matplotlib`をインストールします。Pythonのパッケージ管理ツールである`pip`を使用します。
“`bash
pip install matplotlib
“`### 2. 基本的な使用方法
インストールが完了したら、実際に`pyplot`を使って簡単なグラフを作成してみましょう。以下は、折れ線グラフを作成するための基本的なコードです。
“`python
import matplotlib.pyplot as plt # pyplotをインポート# データを準備
x = [1, 2, 3, 4, 5] # x軸の値
y = [1, 4, 9, 16, 25]
既存のDataFrameを加工したデータをDataFrameに追加
## はじめに
既存のDataFrameを加工したデータをDataFrameに追加 に関しての備忘録。## 🦁**結論**🦁
既存のDataFrameを加工したデータをDataFrameに追加する場合には加工したデータをDataFrameに置換してから使う方が良い。元データをそのまま保存できるなどの理由からDataFrame同士の結合の方が良い。
:::note info
押さえておくべき点
* appendメソッドにて既存のDataFrameに別のDataFrameを追加する。
* concatメソッドにて複数のDataFrameできる。
* 新しいデータのインデックスが重複しないようにする必要がある。
:::
***:::note warn
利用シーン
* データの集計: 月ごとのデータを年度ごとのDataFrameに追加。
:::
***:::note alert
注意点
* 大量のデータを追加する場合、処理時間が長くなることがある
* インデックスが重複するとデータの整合性が崩れる。
* 追加するデータの型が一致しているか確
OpenAIの最新モデルGPT-4oをWeb APIで呼び出して質問に答えてもらったり画像の内容を説明してもらったりした
[Supership](https://supership.jp/)の名畑です。アニメ「[うる星やつら](https://uy-allstars.com/)」がついに[最終章を迎えました](https://www.youtube.com/watch?v=Zry21gGPe4s)。別れは寂しいけれどしっかり堪能させていただきます。
## はじめに
[OpenAI](https://openai.com/)が5月にリリースしました[GPT-4o](https://openai.com/index/hello-gpt-4o/)(oはomni)はその品質の高さから、かなりの衝撃を以て様々なメディアに取り上げられました。
簡単に分かる正規分布
# 正規分布
正規分布の公式は理解するのが大変である。
“`math
y = \frac{1}{\sqrt{2\pi}\sigma}e^{\frac{-(x-\mu)^2}{2\sigma^2}}
“`
今回は、(A~F)の6つの数式を順にグラフにすることで理解しやすいです。
### グラフにする数式
“`math
A y = e^x
“`
2乗で正規分布の形に近づけます。
“`math
B y = e^{x^2}
“`
マイナスで正規分布の形に近づけます。
“`math
C y = e^{-x^2}
“`
2σ^2を分母につけて正規分布の形に近づけます。
“`math
D y = e^{\frac{-x^2}{2\sigma^2}}
“`
平均μをつけて正規分布の形に近づけます。
“`math
E y = e^{\frac{-(x-\mu)^2}{2\sigma^2}}
“`
積分をして面積を1にするために係数をつけます。
“`math
F y = \frac{1}{\sqrt{2\pi}\sigma}e^{\frac{-(x
【Pythonの方言】Googleでも使われているStarlark言語
![starlink.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603047/3ddd6ceb-418d-3e4b-a9d3-5480fd646473.png)
>Starlink衛星 (引用 https://satellitemap.space/)Starlinkではなく**Starlark**です。
# Starlarkとは何か
## 概要
Starlark(旧Skylark)は、Bazelビルドシステム用に設計されたプログラミング言語ですが、他のプロジェクトにも利用可能です。
Python一方言で動的型付け・ガベージコレクション等の特徴を持ち、並列処理に適しています。
簡潔で可読性が高く、構造化データの表記や関数定義、スクリプト機能の追加などに使えます。
## 設計原則
### 決定論的評価
同じコードを二度実行すると、同じ結果が得られます。### 閉じた実行環境
閉じた環境により、信頼できないコードや外部から持ち込まれたコードを安全に実行することができるため、セキュリテ
jinja2についてまとめてみました。
## はじめに
jinja2に関しての備忘録。## 🦁**結論**🦁
テンプレートにデータを埋め込むことができるライブラリ。
htmlを自動生成したりできる。:::note info
押さえておくべき点
* 変数埋め込み:テンプレート内で{{ 変数 }}という形式でPythonの変数を埋め込むことができる。
* 条件分岐:{% if 条件 %}…{% endif %}という形式で条件分岐ができる。
* ループ:{% for アイテム in リスト %}…{% endfor %}という形式でループ処理ができる。
* フィルタ:{{ 変数|フィルタ }}という形式で変数に対して特定の処理を行うことができる。
:::
***:::note warn
利用シーン
* ウェブサイトの動的なページ生成:ウェブアプリケーションで、ユーザーごとに違う内容のページを生成する。
* メールテンプレートの生成:ユーザー名や特定の情報を含むカスタマイズされたメールを送る。
* レポートの自動生成:データに基づいて自動的にレポートを作成する。
* 設定ファイルの生成:
CAM/Grad-CAMによる画像認識モデルの信頼性向上
# はじめに
◆この記事で伝えたいこと
画像認識モデルのXAI(説明可能なAI)であるCAM/Grad-CAMの仕組みと実装方法◆対象読者
* 機械学習に興味のあるエンジニア
* XAIに興味のあるエンジニア◆この記事のねらい
CAM/Grad-CAMの仕組みおよび実装方法を理解し、画像認識モデルの信頼性評価に活用できるようになること# CAM/Grad-CAM
CAM(Class Activation Mapping)/Grad-CAMは、畳み込みニューラルネットワーク(CNN)による画像識別モデルの説明手法です。CAM/Grad-CAMは、局所説明の手法でCNNの判断が合理的かどうかの確認に活用できます。
https://qiita.com/sasshi_i/items/400b7672d8b80bfc3a28
また、Grad-CAMはCAMの欠点である**適用できる機械学習モデルのアーキテクチャが制限される点**を克服した手法になります。
それでは、CAMとGrad-CAMについて解説していきましょう。
## CAMとは
Class Activation
[Python] RSSから更新記事のみを取得する
# 概要
– RSSから下記の辞書形式でブログを取得する
“`
{“ブログタイトル”:
{“記事URL1”: “記事タイトル1”},
{“記事URL2”: “記事タイトル2”},
…
{“記事URLn”: “記事タイトルn”}
}
“`
– pickle形式で辞書を保存する
– pickle形式の辞書の読み込む
– 前回更新時の辞書との差分から更新記事のみを取得する# コード
“`pythonimport argparse
import feedparser
import os
import pickle
import pprintclass MoldingRSS():
def __init__(self):
self.blogs = []
self.rss_dic = {}def add_rss_blog(self, title: str, url: str) -> None:
“””
WSLのdockerとVSCodeのDev Containersでpythonのプログラミング環境を作ってみる
## Dev Containersも使ってみたくなった
[プログラミング環境をWSLでIaCっぽく構築する](https://qiita.com/sjqE6up/items/b651b49604377a7be0e9) では、プログラミング環境はWSLがよいと書きましたが、Dev Containersも使ってみます
やっぱり、いろいろな言語環境をコンテナで構築できたり、VSCodeの環境セットアップも含めてコード化できるのは便利そう
## 前提
– VSCodeが使え、拡張機能WSLがインストール済
– WSLでdockerエンジンが動作している## 準備するファイルの構成
とりあえず、WSL内に、プロジェクトフォルダの初期状態として、下記のファイルを作成します
– プロジェクトフォルダ
– .devcontainerフォルダ
– devcontainer.json
– Dockerfile
– docker-compose.yaml“`json:.devcontainer/devcontainer.json
is や not などは値の計算には使わない
## TL;DR
– `is` や、`is not` はオブジェクトの同一性を判定するための演算子(Identity operator, 同一性演算子)
– 同一性演算子は数値計算には使わないほうがよい## 事例
とあるPythonコード
“`python
a = 255
b = 1
a + b is a + b
True
b = 2
a + b is a + b
False
“`### ポイント
– 数は違うが同じ値を比較している
– `is` や、`is not` を比較している### なぜなのか
– `is` や、`is not` は同一性演算子(Identity operator)とよばれ、値ではなく更に厳密にオブジェクトが同じかを判定する
– 数を足したり引いたりしたものを比較する際にも、Pythonでは新たにオブジェクトが作成される
– Pythonでは、すべてのリテラル(数値や文字列)に対してオブジェクトが作成される
– ***ただし最初の部分ではインターンされているため最初の結果がTrueとなる***### インターンとは
– 頻
Pythonで入力値に記号が含まれるかチェックする
# はじめに
pythonで空文字と記号が入力値に含まれているかをチェックし、それらをはじけるバリデーションを設けたい事がありました。本記事はその内容を備忘録形式でまとめたものになります。# 環境
– Python 3.12.2# ソース
詳細はコメントで記載している通りです。“`python:main.py
import re# 入力値に記号が含まれているかを正規表現でチェック
def check_for_symbols(input_value):
# 入力値が空だった場合
if not input_value:
return False# 全角と半角の記号を含む正規表現パターン
pattern = r'[!-\/:-@\[-`{-~、-〜「」【】『』()〔〕[]{}〈〉《》*?.,。・:;%!#@&<>\|¥$^*+〜]’if re.search(pattern, input_value):
# 記号が見つかった場合
return False
# 記号が見つか