walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

AI とはじめる開発リハビリ(2)

今日は「gradio を使って昨日作った OpenAI TTS お試しツール を実装」していきたいと思います。 gradio とは? 人間的に簡単にまとめると、gradio は機械学習等のデモに必要最低限な UI を揃えた Web アプリ開発支援ライブラリです。自由度は低いが、ipywid…

AI とはじめる開発リハビリ(1)

ということで、AI たち(主に ChatGPT)と一緒に開発のリハビリとして何でも作っていきます。 ↓前回の記事はこちら↓ walkingmask.hatenablog.com 今回は、OpenAI の Audio API の Text To Speech (TTS) が気になったので、「OpenAI TTS API の6種類の音声を…

AI とはじめる開発リハビリ(0)

このブログを始めて8年が経ちました。 walkingmask.hatenablog.com 大学の課題で得た知見を共有することを考えて始め、それから色々な記事を書きました。今見返すとなかなか味わい深い...。 そして、最後に投稿して 2 年半が経ちました。 walkingmask.hatena…

asdf, direnv で pyenv-virtualenv っぽい Python のローカル実行環境(macOS)を構築する

偉い人は言いました。 Python の開発環境は永遠に終わらない。なぜなら人類の夢だからだ。 アシスタ=レザー=ハーン(1975ー ) https://shindanmaker.com/364165 閑話休題。 asdf, direnv のインストール 前提として、私は macOS のパッケージマネージャに Home…

docker-letsencrypt-nginx-proxy-companion コンテナで Let's Encrypt の証明書を revoke したい

nginx-proxy と docker-letsencrypt-nginx-proxy-companion を使うことで、1VPS でお手軽にマルチドメイン環境を構築できます。 一方で、docker-letsencrypt-nginx-proxy-companion はコンテナ内で certbot を使っていないため、簡単に revoke する方法がな…

JTWC の "97W" は何を表しているか?

全くIT技術的な内容ではないのですが、一応 Webサービス話だし、記録・共有したい話題だったので記録。 "97W" は何を表してるか? 先に結論から述べると、「熱帯低気圧にまで発達する可能性のあるインベスト(英語版)と呼ばれる熱帯擾乱域に対して使用され…

Python sqlite3 で "LIKE ? ESCAPE \" する

プチハマったのでメモ。 結論 keyword = "%E3%81%8A%E3%81%A3%E3%81%B1%E3%81%84" escaped_keyword = keyword.replace("%", "\\%") like_keyword = f"%{escaped_keyword}%" params = (escaped_keyword,) query = "SELECT * FROM foo WHERE bar LIKE ? ESCAPE…

Visual Studio Code で Docker コンテナに Attach して Python のデバッガ起動までしてみる

久々にブログを書くのでリハビリ感で軽い記事を書いてみます。 ローカル開発環境で、Docker 上の Python Interpreter を使って Python の実行や Lint、デバッグまでしたいけど、PyCharmがいいのか Visual Studio Code (VSCode) がいいのか、みたいな話が出て…

openai/gymのAtari環境でプランニング可能だって知ってた?俺は知らなかった。

こんにちは。たまにはキャッチーな記事タイトルをつけたくなるwalkingmaskです。 今回はopenai/gymのAtari環境でプランニングを可能にするためのWrapperを書いたので紹介したいと思います。リポジトリは以下。遊び心で木構造を作っていますが、メインとなる…

MMOMazeというWebアプリを作った

最近ブログの更新もしてないしネタもないので、作った話を雑に書こうと思います。 作ったのはこちら。よかったら遊んでみてね。 迷路解くの好きな人とか居れば。バグ等あれば報告してもらえると嬉しいです。ゴールには何かがあるかも。https://t.co/DbNnBes2…

torch.multiprocessingでfork時に親プロセスでmodel()した後に子プロセスでmodel()できない

自分のプロセス周りの知識不足のせいだと思うが、納得のいかない挙動だったのでログ。 import numpy as np import torch from torch.autograd import Variable import torch.multiprocessing as mp from model import NN def f(x): model = NNPolicy(1, 6) p…

scipy.misc.imresizeはどこへ行った?

最新のscipy 1.3ではscipy.misc.imresizeは削除されている。 https://scipy.github.io/devdocs/release.1.3.0.html#scipy-interpolate-changes 代わり何を使えばimresizeと全く同じ結果を得られるか? scipy 1.1 では以下のようなメッセージが見られた。 `im…

Google Colaboratory 上の cv2 で作成した動画を表示する

思いの外詰まった&パッとドキュメントが見当たらなかったのでメモ。 まず動画ファイルを作ります。 import cv2 fourcc = cv2.VideoWriter_fourcc(*'MP4V') writer = cv2.VideoWriter('./out.mp4', fourcc, 60, (80, 80)) for frame in frames: frame = cv2.…

gymの全Atari環境のaction_space.n

メモ。DQNのscoresはこっち。 Adventure 18 AirRaid 6 Alien 18 Amidar 10 Assault 7 Asterix 9 Asteroids 14 Atlantis 4 BankHeist 18 BattleZone 18 BeamRider 9 Berzerk 18 Bowling 6 Boxing 18 Breakout 4 Carnival 6 Centipede 18 ChopperCommand 18 Cr…

Google Apps Scriptのバージョンアップをしないアーキテクチャ

どうも、GAS芸人のwalkingmaskです。 walkingmask.hatenablog.com walkingmask.hatenablog.com walkingmask.hatenablog.com GASいじる度に毎回思うのが「公開するときバージョン上げるのだるいな」です。 そこで今回新しいSlackボットを試作するにあたり、「…

令和ドローの裏側2、画像内オブジェクト領域の頂点をGUIで求める

謎シリーズ第一回に続き第2回目です。 令和ドローリリースから度々アップデートをかけてきたのですが、今回のアップデートが多分最後のアップデートです。あんまり使われてないからねorz 第一回でも述べられているように、平成ドロー、令和ドローは超アナロ…

令和ドローの裏側1、PNG画像の一部分を削除する

「令和」とてもいい元号だと思います。おめでとうございます そして、平成ドローの令和バージョン、令和ドロー作りました。 令和コラ作成ツール作りました新しい時代の始まりに面白コラ量産しましょうhttps://t.co/p4h1bxjip9 pic.twitter.com/088Gw4DahG— …

Google Chrome の履歴を csv で出力する

散々既出ですが、自分用メモ。 拡張機能は不要で、実行環境はmacOS、sqlite3を使います。 以下、手順。 cp ~/Library/Application\ Support/Google/Chrome/Default/History ~/Desktop/ sqlite3 ~/Desktop/History 以下を実行 .mode csv .output chrome-histo…

argparseでconfigファイルを使えるようにする

CLI ツールを作るときに、設定ファイルを使いたい場合があると思います。 Python には argparse という素晴らしい CLI 用の引数パーサがありますが、設定ファイルの読み込みには対応していません。 configparser という設定ファイル読み込み用モジュールもあ…

Pythonでの関数名取得(lamdaに渡した関数名+デコレータ関数を通常の関数呼び出しする)

普通の関数定義であれば、 def test_function(): print(1) print(test_function.__name__) # => test_function 簡単ですね。では lambdaではどうでしょう? test_lambda = lambda: test_function() print(test_lambda.__name__) # => <lambda> 当然、取れません。ins</lambda>…

Numpy 3次元配列のインデックスを変数に格納する

結論 slice オブジェクトというものがあります。これをタプルで複数まとめて扱えます。 A[(slice(3, 6), slice(5, 8))] == A[3:6, 5:8] 以下、2次元配列の例。 >>> A = np.zeros([10, 10]) >>> A[(slice(3, 6), slice(5, 8))] = 1 >>> A array([[0., 0., 0.,…

OpenAI gymで使えそうなツールを作ってまとめた

昨年の暮れから最近まで体調を崩していて、回復したので Python のリハビリ&研究用に gym 向けの Tool を作った。 ということで、久々にネタができたので更新。 テキストを三次元配列に変換する?text_arrayが見どころ。 開発環境 今のところ、macOS でしか…

2つの動画の類似度を求める

ググっても意外と出てこなかったので、シンプルな実装をログ。より効率的なアルゴリズム、高パフォーマンスな方法が他にあることは明らかなので、見つけ次第追記していければと思う。 実験用リポジトリは以下。 github.com 画像の類似度 動画はただの画像の…

Docker コンテナをコマンドなしで起動させ続ける

docker run -d -t ubuntu:16.04 デバッグ用に Ubuntu 環境が欲しい時に、サクッとコンテナ立ち上げて、かつ、しばらく立ち上げて置きたい時に。 とっても単純な操作なのに意外と知らなかったのでログ。 日本語で調べると次のような方法が出てくる。 Dockerの…

Twitter API developer account 申請ログ

AINA の Twitter Bot のために、もともと twitter api のアカウントは持っていたのだけれど、しばらくそれが死んでいたので、AINA メンテの機会に developer account に乗り換えたのでログ。 ということで、今回のケースは、 app.twitter の方で API を作っ…

Django - MySQL Connector/Python で INSERT IGNORE できない問題

最新のもの使えば起きなかった問題かもしれないが、起きたものは起きたので、一応メモ。 各種バージョンは以下の通り。 Python: 3.6 Django: 1.11.7 MySQL: 8.0.12 MySQL Connector/Python: 8.0.13 エラーは次のようなものが吐き出される。 File "/usr/local…

ブックマークをPATHのように扱えるChrome拡張を作った

Slash Bookmarks ソースコード 前回の作った平成ドローに比べると地味だけど、これもずっと作りたかったものを形にできたので最高。 開発中のログを加筆修正・まとめつつ載せておく。 デモ アイディア 2018/03/17 にはアイディアがメモされている。割と新し…

Promiseのresolve後の挙動

初歩的な知識だと思うけど、割と詰まったのでログ。 function f1() { return new Promise(resolve => { for (let i = 0; i < 10; i++) { if (i > 3) resolve(i); console.log(i); } }); } async function f2() { const r = await f1(); console.log(r); } f2…

平成コラgif作成ツールを作った

平成コラ作成ツール作りました平成最後の夏にクソコラ量産しましょうhttps://t.co/fgerWA3H2x pic.twitter.com/DTGgiPwySP— 升 (@walkingmask) 2018年10月8日 ツイートした後に気づいたけど夏終わってorz なりゆき "Trump draws" という面白画像のジャンルを…

Firebase Realtime Database と Cloud Functions でジョブを定期実行する小技

オフィシャルな方法ではないけど、表題の機能をこの2つだけで実現する方法をログ。 ただし、分単位での実行やユーザの滞在時間内での話になる。 developers-jp.googleblog.com これ系の記事をググると、こういった正当な方法が出てくるので、特に制約がない…