- 1. DjangoChannelsを用いたWebsocket非同期通信(UnityとAndroidでの同時通信,APIをPaaSにデプロイするまで)
- 2. GPT_4oとpythonを活用した路線展開図の高速作図法
- 3. ABC354(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)
- 4. 【Javascript、Python】変数名で使える文字って結局何?
- 5. 【初心者】paiza でプログラミングを習得してみる
- 6. ChatGPT-4o で名刺を読み取る
- 7. GUIアプリ上で動く対話型AIメイドとその分析
- 8. 論文を要約して自動でNotionに追加するアプリ
- 9. 驚くほどキレイな三次元シーン復元、「3D Gaussian Splatting」を徹底的に解説する
- 10. GitLabのAPIを叩いてグループ内のプロジェクト一覧を取得する
- 11. atcoder-cli で提出時に Matched languages were not narrowed down to one. が起きた際の暫定対応
- 12. マルコフ過程的な物を連想配列で作ってみた
- 13. FastAPIでサービス層とリポジトリ層を使って一連の流れを作成してみた
- 14. ある日付にpublishされたArxivの論文を一括で取得して翻訳するプログラムを作成してみた
- 15. FastAPIのログ設定と全体のエラーハンドリング
- 16. 競馬予想AIを作りたい(データ収集編)
- 17. Pythonで〇×ゲームのAIを一から作成する その82 self の意味の混同に由来する様々なエラー
- 18. 383. Ransom Note
- 19. FastAPIのDB接続とマイグレーション(DIコンテナも準備)
- 20. ABC354 with Python (A~E)
DjangoChannelsを用いたWebsocket非同期通信(UnityとAndroidでの同時通信,APIをPaaSにデプロイするまで)
この記事ではDjangoChannelsを用いた非同期通信を実現するための方法について記載する.
# 非同期通信とは?
プロセスやプログラムがタスクを実行する際に,その完了を待たずに次の操作に移ることができる通信方式のこと.この通信方式では,リクエストを送信した後,レスポンスが返ってくるまでの間にも他の作業を同時並行で進めることが可能である.非同期通信が実装できると以下のようなプロダクトが開発できる.
1.リアルタイムチャットアプリ
2.ライブアップデートを提供するダッシュボード
3.非同期処理を必要とする幅広いWebサービス
4.リアルタイムゲーム# 開発概要
![スクリーンショット 2024-05-19 18.10.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3757442/89a2a64b-af3d-0755-8c95-91406152b66d.png)今回は簡単にこのようにUnity(VRなど)上でカメラの位置を送信し,Androidでそのカメラの位置(赤円)を受信すること
GPT_4oとpythonを活用した路線展開図の高速作図法
https://trianglelist.home.blog/2024/05/20/%e8%a1%a8%e8%a8%88%e7%ae%97%e3%82%bd%e3%83%95%e3%83%88%e3%81%ae%e3%83%87%e3%83%bc%e3%82%bf%e3%81%8b%e3%82%89dxf%e5%b1%95%e9%96%8b%e5%9b%b3%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b/
ABC354(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)
# ABC354(Atcoder Beginner Contest)のA~F(A,B,C,D,E,F)問題をPythonで解説(復習)
# A問題
– 植物の高さを`2**day`ずつ足してあげる.
– 高橋くんの身長(`H`)を越したら,`print`して,`break`する.
“`A.py
“””
<方針>
– 植物の高さを`2**day`ずつ足してあげる.
– 高橋くんの身長(`H`)を越したら,`print`して,`break`する.
“””
# 標準入力を受け取る.
H = int(input())# 日付
day = 0
# 植物の身長
plant = 0# 1日ずつ経過させる.
while True:
# 植物の身長を伸ばす
plant += 2**day# 日付を経過させる.
day += 1# 高橋くんの身長を植物が越した時,
if(H
【Javascript、Python】変数名で使える文字って結局何?
# 導入
最近の言語、意外と変数名にいろんな文字使えますよね?
結局何文字くらい使えるのか気になったのでまとめてみました。
javascriptはWindows11のFirefoxとEdge(結果は同じ)
pythonは動作環境なんて持っていないので、google colabです。
# 使える文字
pythonの方は若干ミスってますが(詳細は下)
予想は、Lが1文字目から使えて、Mが2文字目から使える感じかなと思っています。
記号系は`_`とか`$`とかを除き基本的に使えないのかなと思っています。https://tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V4.01.00/CS+.chm/Editor.chm/Output/ed_RegularExpressions4-nav-2.html
## Javascript
“`js
const character_usable_in_variable_name = new Map();
for(let $i = 1; $i<205745; $i++
【初心者】paiza でプログラミングを習得してみる
皆さんはプログラミングの習得は
どのように行いましたか?私のイメージでは参考書を購入して
お持ちの PC に開発環境を入れる形式が
多いのかなと思います。今回は paiza ラーニングというサイトで
プログラミングを 1 から習得する形式について
紹介してみようと思います。学生時代にこのサイトへとたどり着いていれば
人生は変わっていたかもしれないと思うほど
このサイトはプログラミングの習得に向いています。是非皆さんのお子さんに紹介してみてはいかがでしょうか?
(この記事は読者の方がお子さんに紹介する事を目的としています)すごく簡単にプログラミングを習得することができます。
***
アカウント作成について
アカウント作成は
Google アカウントがあれば
簡単に登録できます。いくつかの項目に答える必要がありますが
住所など個人を特定できる情報の入力欄はありません。気軽に登録頂けると思います。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3752886
ChatGPT-4o で名刺を読み取る
ChatGPT-4oですが、日本語の精度も向上し、かつ画像認識、OCRの制度も向上したとのことで、名刺を読み取ってデータ化したいと思います。
GPT-4-Turboでも画像認識はできましたが、GPT-4oになり実感としてはかなり精度が上がっています。ただ文字を読み取るだけではなく、ほぼ正しく会社名や部署名、役職などを読み取って構造化してくれます。
APIでChatGPT-4oに名刺画像を渡して、画像を認識してもらいます。画像をAPIで渡すには、Base64でエンコードして渡すか、画像のURLを渡すかのどちらかですが、今回はローカルにある画像を利用するので、Base64でエンコードします。
JSONで書き出すため、systemのcontentsには「The response should be output in JSON format.」と記載してあります。またリクエストには「response_format={“type”: “json_object”}」を追記してください。
また読み取った文字を構造化するために、userのcontentsには、「この名刺の画像から「氏名」、「
GUIアプリ上で動く対話型AIメイドとその分析
GUIアプリ上で動く対話型AIメイドとその分析というコンセプトで開発しました。
今回はAmiVoiceで提供されている音声ファイルを使用し、音声認識から対話の確認・分析まで実装
マイクから音声を拾い対話する形は今後実装していきたいと思います。## おおまかな流れ
起動後右側にある再生ボタンを押すと、音声データを音声認識API「AmiVoiceAPI」に投げるようになっています。
その結果をChatGPTに投げ、返答の取得をします。
同時にMeCabによる語群化をし、word2Vecで分析、表示まで行います。## 完成物
![無題の動画 ‐ Clipchampで作成.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/400525/e1c0f435-c492-1d80-66d8-b91bea08e69e.gif)![スクリーンショット 2024-05-19 231642.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0
論文を要約して自動でNotionに追加するアプリ
### やったこと
Arxiv IDもしくは任意論文PDFをアップロードすると,NotionのデータベースにGPT要約が自動で追加されるアプリケーションを作りました.https://github.com/SWEET-creator/paper_summarizer
### 使用技術
arxiv API, GPT API, Notion API### コスト
Open AI API (gpt-4o): 0.05~0.1 $/paper![____________________________2024-05-19_2.04.46_720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1031260/afbb3ac9-78ef-cfb8-ed95-fae03a8de724.png)
![____________________________2024-05-19_2.05.44_720.png](https://qiita-image-store.s3.ap-northeast-1.amazo
驚くほどキレイな三次元シーン復元、「3D Gaussian Splatting」を徹底的に解説する
# はじめに
最近、3D業界で大きな衝撃を与えた「3D Gaussian Splatting」[^1]について、ご存知でしょうか?数少ない写真から、目を奪われるほど美しい三次元シーンを再構成できるデモを見て私も大感動しました。なぜこんなに美しいのか、どんな技術で実現したのか、興味が湧いています!
[^1]:[3D Gaussian Splatting for Real-Time Radiance Field Rendering](https://arxiv.org/abs/2308.04079)
atcoder-cli で提出時に Matched languages were not narrowed down to one. が起きた際の暫定対応
# 環境
Mac, zsh, atcoder-cli インストール済み。
“`
> acc configoj-path: /usr/local/bin/oj
default-contest-dirname-format: {ContestID}
default-task-dirname-format: {tasklabel}
default-test-dirname-format: test
default-task-choice: all
default-template: py
“`# エラー
atcoder-cli で`acc s`を行いPythonのプログラムを提出しようとした際に以下のエラーが発生。
“`
…[INFO] PyPy is available for Python interpreter
[ERROR] Matched languages were not narrowed down to one.
[INFO] You have to choose:
5055 (Python (CPython 3.11.4))
5063 (Pyt
マルコフ過程的な物を連想配列で作ってみた
私の勤務先では自然言語処理が非常に盛ん(なのかな?)で昔マルコフ連鎖を使った文章生成や楽曲生成などをしていた方もいらしたそうな。
そこでライブラリに頼らず(データフレームだけPandas使う)ゼロからマルコフ過程を作ってみようと思った。
自分の記憶が正しければある状態からある状態への遷移する確率だと思うのでそれベースで作りました。
# 関数
“`Python3
import pandas as pd
def marcov(arr):
dic = {}
for i in range(1, len(arr)):
if arr[i-1] in dic:
if arr[i] in dic[arr[i-1]]:
dic[arr[i-1]][arr[i]] = dic[arr[i-1]][arr[i]] + 1
else:
dic[arr[i-1]][arr[i]] = 1
else:
dic[arr[i-1]]
FastAPIでサービス層とリポジトリ層を使って一連の流れを作成してみた
# FastAPIでサービス層とリポジトリ層を使って一連の流れを作成してみた
この記事は前回からの内容を前提に記載しているのでご注意ください。
DockerでFastAPI環境構築(HelloWorldまで)
https://qiita.com/rom0323/items/5d338d3fe60644c196c4
FastAPIのDB接続とマイグレーション(DIコンテナも準備)
https://qiita.com/rom0323/items/565c7b9c125824a0fbe9
FastAPIのログ設定と全体のエラーハンドリング
https://qiita.com/rom0323/items/2cde0ad7d9912b4e5f7fではさっそく始めていきます!
FastAPIはエンドポイントがそのままrouteとcontrollerとしての役割を果たします。ここを分割することも可能ですが、分けるメリットがあまりないのと逆に見通しが悪くなりそうな気がしていて、一緒に定義した方がいいと思っています。(公式も一緒だしね)
ただ、そのままエンドポイントに処理やDBのデータのやり取
ある日付にpublishされたArxivの論文を一括で取得して翻訳するプログラムを作成してみた
# はじめに
最近Arxixの論文を漁ることが多いのですが、一括で取得できて尚且つ日本語に翻訳してくれるとさらに効率化されるなと思い、自作してみました。
使用する際は[arXiv Apiの利用規約](https://info.arxiv.org/help/api/tou.html)を参照の上、リクエスト回数などに気をつけてください。
基本的な構造は下の流れになっています。1. 任意の日付と任意のカテゴリ※を指定
1. arXiv Apiで該当する論文情報を取得
1. Google Translateでタイトルとabstractを日本語に翻訳
1. Excelに保存※カテゴリは以下のサイトで確認することができます。
[Category Taxonomy](https://arxiv.org/category_taxonomy)# arXiv Apiで論文情報を取得
ここでは以下のサイトを参考にプログラムを作成しました。
ここではarXivが公開しているAPIのラッパーであるライブラリarxivを使います。– [PythonでarXiv APIを使って論文情報取得、PD
FastAPIのログ設定と全体のエラーハンドリング
# FastAPIのログ設定と全体のエラーハンドリング
DockerでFastAPI環境構築(HelloWorldまで)
https://qiita.com/rom0323/items/5d338d3fe60644c196c4
FastAPIのDB接続とマイグレーション(DIコンテナも準備)
https://qiita.com/rom0323/items/565c7b9c125824a0fbe9まずは前回からのディレクトリ構成に今回、追加するディレクトリやファイルを示します。
“`
project_root
├── _docker
│ ├── nginx
│ │ └── nginx.conf
│ └── python
│ └── Dockerfile
├── src
│ └── main.py
│ └── init.py // 追加(mainから初期化処理を切り離し)
│ └── core
│ └── dependency.py
│ └── logging.py // ログ
│ └── middlewar
競馬予想AIを作りたい(データ収集編)
# まえがき
とりあえず作ってみようのノリなので、精度とかはそれほど考えてません。
[netkeiba.com](https://www.netkeiba.com/?rf=logo)に記録されている全レース(約16.8万レース)を収集する関係でハチャメチャに時間がかかるので、参考にする人は気をつけてください。環境は以下の通り。
– Windows10
– Python3.12# 集めるデータ
今回は、レース情報から各馬の着順を予想するAIを目指す。
人間(一般人)が予想に使うデータを考えると、以下の要素に主に注目するはず。
– 人気
– 単勝オッズ
– 馬番
– 距離
– レース場
– 芝 or ダート
– 馬場
– 直近の成績
– ジョッキー
– 馬主
– 血統
– 前走からの期間これらのうち、今回は以下のデータを収集する。
– 人気
– 単勝オッズ
– 馬番
– 直近の成績(直近5レース分)
– 前走からの期間(日数)芝 or ダート、距離を選ばない理由は、直近5レースと大きく変わることは少ないだろうから。
馬場を選ばない理由は、~~よくわからない~~あまり影響
Pythonで〇×ゲームのAIを一から作成する その82 self の意味の混同に由来する様々なエラー
# 目次と前回の記事
https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0
https://qiita.com/ysgeso/items/05ac74365dad096dd28f
## これまでに作成したモジュール
以下のリンクから、これまでに作成したモジュールを見ることができます。
https://github.com/ysgeso/marubatsu/blob/master/082/marubatsu.py
https://github.com/ysgeso/marubatsu/blob/master/082/ai.py
https://github.com/ysgeso/marubatsu/blob/master/082/util.py
## ルールベースの AI の一覧
ルールベースの AI の一覧については、下記の記事を参照して下さい。
https://qiita.com/ysgeso/items/10d1d01192c014173e4b
# クラスによる GUI の機能の分離(続き)
前回の記事では、
383. Ransom Note
# 383. Ransom Note
magazineの文字列がransomNoteで構成されているかどうかのチェックだった気がする。。
辞書型の復習“`python
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
wordDict = {}
for i in ransomNote:
wordDict[i]=ransomNote.count(i)
ransomNote.replace(i,””)
counter = 0
for i in wordDict:
if(i not in magazine or magazine.count(i) < wordDict[i]): counter += 1 if(counter == 0): return 1
FastAPIのDB接続とマイグレーション(DIコンテナも準備)
# 最終ディレクトリ構成
—かなり急いで書いたのでミスなどあったらコメントください!
今回は前回に続きとしてDB接続(テスト用は後に作成しますが、下準備はします)とマイグレーションのup,downまでとなります。
前回: https://qiita.com/rom0323/items/5d338d3fe60644c196c4今回の最終系のディレクトリ構成
“`
project_root
├── _docker
│ ├── nginx
│ │ └── nginx.conf
│ └── python
│ └── Dockerfile
├── src
│ └── main.py
│ └── core
│ └── dependency.py
│ └── model
│ └── user.py
│ └── database // 追加 alembic initの生成物を格納
│ └── versions // マイグレーションファイルがここに生成される(生成物)
│ └── env
ABC354 with Python (A~E)
ABC354のA~E問題をpythonで解説していきます。筆者は途中参加で、A-Eの5完でした。
# A – Exponential Plant
## 問題
高橋君は植物を育てています。その植物の発芽時の高さは $0\space \mathrm{cm}$ です。発芽した日を $0$ 日目としたとき、発芽してから $i (0 \le i)$ 日目の夜には $2^i\space\mathrm{cm}$ 植物の高さが伸びます。
高橋君の身長は $H\space\mathrm{cm}$ です。
高橋君は毎朝この植物と背比べをします。植物の高さが高橋君の身長より高くなるのは発芽から何日目の朝か求めてください。https://atcoder.jp/contests/abc354/tasks/abc354_a
## 考察
問題文通り植物の高さを伸ばしていき、高橋君の身長を超えたタイミングでその日付を出力すればよいです。実装にはwhile文を用いました。## コード
“`python:A.py
H = int(input())
now = 0
date = 0
while now <=