- 1. ブラウザから受けたっと CSV を AWS 複数の S3 へ upload しようとして少しハマった件
- 2. 【Python】東京の生ビールは高すぎる!!
- 3. 自作モジュールをimportする
- 4. mypy駆動リファクタリング
- 5. ChatGPTでロボットのコード生成はできるのか?
- 6. Azure AutoMLで作ったモデルをPythonから推論してみた
- 7. 【imgsim】イケメン判定AIアプリ作ってみた。
- 8. これから始める人向け Google Colaboratoryの操作方法
- 9. 【備忘録】コールバック関数とは
- 10. FastAPI with Django ORM and Admin
- 11. 【3日目】サーバーサイドの環境構築②【PythonでDiscordBOTを作ろう!】
- 12. 【画像認識】AIひろゆきがスプラトゥーン3のキルデス報告してくれるアプリ作った話
- 13. PythonのGBFSライブラリ紹介
- 14. Pythonista3 のeditor module を使い、Pythonista3 のコーディングを楽にする
- 15. discord.pyにおけるログイン時のイベントにおける処理の追加
- 16. 【Python】型付きのNamedTupleはいいぞ
- 17. tensorflowで機械学習してみた話
- 18. 複勝とワイドの中間オッズの逆算
- 19. ふと、2年ぶりに Discord を覗いてみたら・・・
- 20. AcademiX流! AI学習・実践カリキュラム
ブラウザから受けたっと CSV を AWS 複数の S3 へ upload しようとして少しハマった件
#### vue から取得した csv ファイルを複数の s3 バケットへ送ろうとしたらできなかった。
## 結論
– s3.put_object で複数を取得してもブラウザから受けったファイルの場合はエラーになるので、 s3.copy_object で複数のバケットへ送った。– 以下スクリプトメモ
“`py:python
def xxx():
# アップロードファイルを取得 –> ここは vue からの通常の受け取り方
uploaded_file = request.files[‘file’]# S3アップロード処理
s3 = boto3.client(‘s3’,
aws_access_key_id=os.environ.get(“ACCESS_KEY”),
aws_secret_access_key=os.environ.get(“SECRET_KEY”),
)bucket_name = “XXX”
s3.put_object(Bucket=bucket_name, Key=
【Python】東京の生ビールは高すぎる!!
# はじめに
こんにちは**Advent Calendar 2022**
始まりましたね。私、初めての参加となり、非常に**ワクワク**しとります。
まだ埋まってない日程があったりと不安はありますが、せっかくなので**みんなで楽しんで記事を書いて走り切りたい気持ち**です。**では3日目、行きましょう!**
:::note info
この記事は [TLB Enjoy Developers Advent Calendar 2022](https://qiita.com/advent-calendar/2022/tlb-enjoy) の3日目の記事です。
:::**さて今回の記事ですが、もう時が経つのも早いもので2022年も残り1ヶ月を切りました**
#### 師走といえばやっぱり忘年会
#### 忘年会といえば飲み会
#### 飲み会といえば…
### ビールですよね?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/873426/ed67f3ed-f6a1-
自作モジュールをimportする
私が認識しているやり方は4つです(他にもあるかもですが)
1.pythonファイル内にパスを指定してimportする
2.PYTHONPATHという環境変数を定義し、そこにpythonファイルを入れてimportする
3.site-packagesディレクトリにpythonファイルを入れてimportする
4.sys.path.appendを使いパスを指定してimportするです。
その時々の用途に沿った方法でimportをどうぞ!1.パスを指定してimportする
“`
#ディレクトリ構造
.
├── call.py
└── my_module_dir
└── my_module.py
“`
↓importしたいpythonファイル
“`my_module.py
def test():
print(‘This is my_module.py.’)
“`
↓実行するpythonファイル
“`call.py
#カレントディレクトリにあるmoduleが入ったディレクトリと
#pythonファイル名を指定
from my_module_
mypy駆動リファクタリング
## はじめに
Pythonは動的型付けのプログラミング言語です。そのため、実行時に型に関するチェックが実行されません。その結果、“動的型付けであるがゆえに問題がない処理”が存在してしまいます。それらは、ある時点で外部から観測される振る舞いに問題がなかったとしても、リリースを重ねていくうちにに不具合として顕在化する可能性があります。
そのような処理に対して、mypyによりコードにおけるリファクタリングをすると良い箇所を特定できます。mypyはPythonで静的型チェックを実行するツールです。
https://mypy.readthedocs.io/en/stable/
例えば、以下に該当するような、コードの検知が可能です。
– 型ヒントの不足
– 型の矛盾つまり、mypyの出力に基づくリファクタリングでは以下の効果が期待されます。
– 処理の内容を型ヒントで補足することによる可読性の向上(潜在的な不具合を埋め込む可能性の解消)
– 型が矛盾している処理を修正することによる堅牢性の向上(潜在的な不具合の解消)本記事では、このようなmypyの出力に基づくリファクタリング
ChatGPTでロボットのコード生成はできるのか?
# はじめに
基盤モデル×RoboticsのAdventCalendarの3日目です!
カレンダーものぞいてみてくださいー!
https://qiita.com/advent-calendar/2022/robot-aiでは、本題へ!
### ChatGPTとは
OpenAIが開発するGPT-3(※)という大規模言語モデルをベースとしたチャットアプリです。
実際のにどんな事ができるか見てみましょう!https://chat.openai.com/chat
## ChatGPTに聞いてみよう!
### ChatGPTにChatGPTについて聞く
![Screenshot from 2022-12-03 07-18-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/351913/a80dfd17-1f97-e551-9c19-397ebcd6f374.png)### ChatGPTにChatGPTのデメリットについて聞く
![Screenshot from 2022-12-03 07-21
Azure AutoMLで作ったモデルをPythonから推論してみた
# はじめに
前回KaggleのTPSコンペのデータを用いてAzure Auto MLからモデルを作成しましたが、(前回の記事は[こちら](https://qiita.com/kkawano_neko/items/39f0af1429b27ab636ca))これを今度はPythonから推論してみようと思います。# 開発環境
+ OS Windows 10(NVIDIA GTX 1650Ti,16GB RAM, i5-10300H CPU)
+ Visual Studio Code 1.73.1
+ Python 3.9# 実行してみます!
モデルを作成するところで終わっていたので、まずはデプロイするところからやってみます。## デプロイ
「モデル」タグから一番精度の良いものを選択し、
![automl2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2976188/eca4f80b-cbbd-7194-6924-c2c0a17499c2.png)「デプロイ」をクリックします。
![im
【imgsim】イケメン判定AIアプリ作ってみた。
こんにちは。AIゴミアプリを1人で作るAdvent Calendar3日目の記事です。今回はイケメン判定AIアプリです。
自分の顔がイケメンかどうかをジャッジしてくれるAIアプリ作ります。# はじめに
画像を入力して、イケメンであるかどうかをTrueで返すアプリケーションを作ります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952830/d0955187-4a6a-386a-022c-9d3d91f3bb18.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952830/77e2e736-4cb1-bba5-187c-7b8775878b31.png)ソースコードはこちら
https://github.com/Kentea-Watanabe/Handsome_judgement# 使うもの
– Yolov5で顔部分のみでCropします。
– imgs
これから始める人向け Google Colaboratoryの操作方法
Google Colaboratory(Colab)の使い方について2022年12月現在でまとめてみました。
本記事は、Jupyter Notebookは多少使ったことはあるけど(コードセル(Ptyhonコード)やテキストセル(markdown)はある程度理解している)、Colabを初めて使う方をターゲットにしています。# Colabの始め方
Googleコラボのインストールは、以下の手順で簡単に行えます。
+ Googleアカウトを作成(まだ持っていない場合)
+ Googleドライブ上で左上のメニューから「アプリで開く」->「アプリを追加」で、Googleコラボを選んでインストール![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1413278/5da58c21-830f-4628-08ca-c01eaff6c0fa.png)
+ Github等からアップロードしたNotebookファイル(.ipynb)を実行すると
【備忘録】コールバック関数とは
## 背景
Flaskの学習中にログイン処理のなかでuser_loaderというコールバック関数を使った処理が必要になりました。コールバック関数に関して深く理解していなかったのでアウトプットを兼ねて記事にしました。
ちなみに、今回参考しにしたこちらの動画がめちゃくちゃわかりやすかったので是非みてください。今回はこの動画とほぼ同じ説明手順をたどりますのでご了承ください。## コールバック関数とは
呼び出された関数側で呼び戻される、呼び出し元が指定した別の関数のこと
これだけだと意味がわからないので具体例を使って説明します。## 具体例
ある配列を引数に取り、特定の要素のみを抽出した新しい配列を返す関数check_array()を考えます。例えば、配列の中から10以上の要素のみを取り出す場合は次のようになります。“`python:check_array()
def check_array(before_array):
after_array = []for element in before_array:
if element >= 10:
a
FastAPI with Django ORM and Admin
# はじめに
Pythonが大好きな豊田工業高等専門学校の加藤愛斗です。
**DjangoのAdmin, ORM機能を用いつつ、API周りはFastAPIを用いてサーバーを実装出来るように**しましたので紹介します。# はじまり
## プログラミングは手段
私がプログラミングをする理由は、**何か作りたいものがあってそれを形にしたいから**です。そのため、プログラミングはただの手段と捉えています。## 最初に身に着けた技術
私が**初めて触ったプログラミング言語はPython**で、それ以来ずっとPythonでコンテストやインターンを行っていまいます。そして、**サーバーサイドを書く際はよくDjangoを使用**しています。これは、初めて触ったフレームワークがDjangoであり、インターン先でもDjnago+DRFで開発をしていたからです。## Djangoのデメリット
しかし、Djangoにはいくつかのデメリットがあります。
– API開発にあまり向いていない
– DRFは必須
– DRFを使用しても複雑・冗長になりがちである
– **遅い**
– cf. h
【3日目】サーバーサイドの環境構築②【PythonでDiscordBOTを作ろう!】
# サーバーサイドの環境構築
今日は、実際にサーバーサイドの環境構築を行っていきます。
サーバーサイドは、マシンが存在して、OSがすでにインストールされているものとします。
SSHを使って環境構築を行っていきます。
## Pythonのインストール
昨日の記事で記載したようにLinuxでの環境構築を想定しております。
Linuxでのインストールは各ディストリビューションのパッケージマネージャーを使用します。“`sh
# Debian派生
$ sudo apt-get install python3# Red Hat派生
$ sudo yum install python3# SUSE派生
$ sudo zypper install python3
“`これらのコマンドを使用することで~~きっと~~インストールできます。
(WindowsやmacOSであれば、[こちら](https://www.python.org)からPythonをダウンロード/インストールすることが出来ます。)
とりあえずインストール出来たら、ちゃんと動くか確認してみましょう。
`
【画像認識】AIひろゆきがスプラトゥーン3のキルデス報告してくれるアプリ作った話
# TL;DR
この投稿はOpenCV Advent Calendar 2022の3日目の投稿です!Python + OpenCVを利用して、ニンテンドーSwitchに接続したキャプチャボードからスプラトゥーンの映像を取得・解析し**ひろゆきがキルデス報告くれるアプリを作りました**。
通話しながらの対抗戦でよくある「スシやり」等のキル報告や、スペシャルの報告を**例のAIひろゆき**が読み上げてくれます。まるでひろゆきと一緒にスプラをプレイしているような感覚を楽しめるというアプリです。ついでに各プレイヤーの生存秒数ゲージ、デス回数カウンター、復帰までの推定予測ガイド等を視覚化するGUIも実装しました
Pythonista3 のeditor module を使い、Pythonista3 のコーディングを楽にする
この記事は、[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) の03日目の記事です。
https://qiita.com/advent-calendar/2022/pythonista3
一方的な偏った目線で、Pythonista3 を紹介していきます。
ほぼ毎日iPhone(Pythonista3)で、コーディングをしている者です。よろしくお願いします。
以下、私の2022年12月時点の環境です。
“`
— SYSTEM INFORMATION —
**System Information*** Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.0.2, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0
“`他の環境(iPad や端末の種類、iOS のバージョン違い)では、意図としない挙
discord.pyにおけるログイン時のイベントにおける処理の追加
– 想定環境
– OS: linux (ubuntu)
– pythonによる開発,つまりdiscord.pyでのdicord botの作成をする
– botのアカウントがある
– botがログインできる要するに
“`python: discordbot.py
import os
import discord
from dotenv import load_dotenv
load_dotenv()intents = discord.Intents.default()
client = discord.Client(intents=intents)
client.run(os.getenv(“TOKEN”))
“`といったプログラムが正しく動けば大丈夫です.
というわけで,この記事はdiscord.pyにおけるログイン回りの処理についてまとめたものです.
# botのログ
botをログインさせるには,`client.run()`にトークンを渡せばよいです.さらに[引数にloggingのhandlerを渡すことができます](https://disco
【Python】型付きのNamedTupleはいいぞ
この記事は、[株式会社ディーバ PD部 Advent Calendar 3日目](https://qiita.com/advent-calendar/2022/diva_pd) の記事になります。
## namedtupleとは
読んで字の如く**名前付きのタプル**のことです。通常のタプルでは、`user[0]`のようにインデックスで値を取得します。
`user[0]`だけでは、`user`の先頭の要素を取得している以外の情報は分かりません。
“`python
# userの0番目には何が入っているのか調査が必要になる
hoge = user[0]
“`
名前付きタプルでは、インデックスに名前を付けて`user.name`のようにドットアクセスで値を取得できます。
“`python
# 一目見るだけでユーザ名が入っていることが分かる
hoge = user.name
“`
このように`namedtuple`を用いると、**可読性が向上する**メリットがあります。### 2種類のnamedtuple
`namedtuple`には下記の2つが存在します。
tensorflowで機械学習してみた話
この記事は鈴鹿高専Advent Calendar 2022 3日目の記事です
https://qiita.com/advent-calendar/2022/snct
先日のパソコン甲子園で制作したアプリでtensorflowを用いた画像認識を実装したので、機械学習の環境や工夫した点などを書きます
## 機械学習の環境
google cloud platformのgoogle computing engineを使い学習環境を立てました
詳しい環境↓
– OS: ubuntu 20.04
– CPU: vCPU×2
– GPU: NVIDIA T4
– RAM: 8GB
– ストレージ: 100GBなんでローカルではなくクラウドを使ったか、それはチーム内でcudaが使えるマシンを持ってる人がいなかったからです!(私のPCはRadeonしかない)
NVIDIAが配布しているdockerイメージを使ったので構築自体はすぐ終わりました、なので何をしたかはそんなに覚えてないため説明は割愛します
インスタンスにはSSHで接続してデータセットとかはSCPコマンドで転送しました
#
複勝とワイドの中間オッズの逆算
こんにちは。
この記事は[LIFULL Advent Calendar](https://qiita.com/advent-calendar/2022/lifull) 2022の3日目の記事です。いきなりですが、競馬のオッズの表記をご存知でしょうか?
今回は「複勝とワイドだけなぜか1.3倍~2.4倍のようにレンジで曖昧に表記される件」について対抗していこうと思います。
## 前置き
競馬には単勝、複勝、枠連、馬単、馬連、ワイド、三連複、三連単の8種類の投票方法(買い方)があります。
投票方法ごとに何を予想すればいいのかは以下の通りです。* 単勝: 1着の馬の馬番号を的中させる
* **複勝**: 3着以内のいずれか1頭の馬番号を的中させる
* 枠連: 1着と2着になる馬の枠番号の組合せを的中させる
* 馬単: 1着と2着になる馬の馬番号を着順通りに的中させる
* 馬連: 1着と2着になる馬の馬番号の組合せを的中させる
* **ワイド**: 3着までに入る2頭の組合せを馬番号で的中させる
* 三連複: 1,2,3着までの馬の馬番号の組合せを的中させる
* 三連単: 1,2,3
ふと、2年ぶりに Discord を覗いてみたら・・・
## あれ?なんか実行できなくなってるぞ
専門学生時代に作った Discord bot を掘り起こしてみた。
まずは、酷すぎる過去の自分のソースコードとコミットログに落胆した。
とりあえずDocker 化して実行を試みたところ、動かないではないか。
僕が過去一生懸命書いたコードが。。。でも、割と頑張ってんな。過去の僕。
構成とか諸々突っ込みどころは多いけど、成長を感じる。ありがとう。
となり、とりあえず3時間ほど詳細を調べた。### 調べてみて分かったこと
1. `discord.py` のアプデで従来の書き方ができなくなっていたこと
1. python 3.7 以前はサポート終了していたこと
1. `discord.py` が開発終了したこと
1. 開発再開していたこと**I can only say Oh my god.**
オーマイゴッドとしか言えん!!
とりあえず `Hello World` までした。
(それだけで時間かかった・・・)## 仕様が変わってた内容メモ
“`python
# 従来の書き方は使えなくなったらしい。そりゃ2年もたてば変わるか。
#
AcademiX流! AI学習・実践カリキュラム
# はじめに
初めまして、大熊と申します。
私は現在、AI・機械学習を学び・実践したい学生コミュニティ「**AcademiX**」を立ち上げ・運営しており、
今回は私が**AcademiXメンバーに推奨している、もしくは推奨したいAIの学習・実践カリキュラムをご紹介します。**なお、カリキュラムにおけるコンテンツ自体は私が作成したのではく、(一部を除き)**一般に手に入る本等を活用**しています。
というのも、コミュニティのメンバーにヒアリングした結果、「AIに関する本やコンテンツが多過ぎてどれを参考にすべきか分からない」という声が多かったことから、
一般的な本等をベースにしつつ、どの内容をどの順番で学ぶべきか示す事で、質の高い学びを提供できるのではないか?という判断です。# 様々なレベルの人に向けたカリキュラム
AcademiXが大切にしていることの1つが「全ての意欲ある学生に学ぶ機会を提供する」事であり、その為カリキュラムも様々なレベルの人に対応することが求められます。
そこで私は**以下のレベルに分けてカリキュラムを組み、各々のレベルに合った段階から参集できるよう