タグ

ブックマーク / memo.sugyan.com (45)

  • Cloudflare Workersで、自分のはてブをBlueskyに流す - すぎゃーんメモ

    bsky.app そういえば、古き良き時代は自分のブックマークは自動でTwitterに投稿されていたのだった。 今はBlueskyがメインになっているので、同じ仕組みが欲しい、と思った。ので、作った。 github.com 要件 先行事例 RustWASM対応 Cloudflare Workersでの実装 1MB制限との戦い Fetch API KVでのSessionStore? 要件 自分のブックマークはRSSで取得できる。定期的にチェックして新しいのがあれば、といったロジックで検出できる。 なので、基的にはプログラムを定期実行できる場所があればGitHub Actionsとかでも良い。 ただ、対象のブクマ内容をpostする前に、それを既にpostしているか否かを知る必要がある。 専用のbotアカウントとかであれば、そのアカウントのpost feedを取得して最近のものをチェックす

    Cloudflare Workersで、自分のはてブをBlueskyに流す - すぎゃーんメモ
  • Rustで将棋合法手生成、速度改善 - すぎゃーんメモ

    memo.sugyan.com の続き。 前記事時点でだいたい合法手の生成が出来ていたが、速度面でやや問題があった。 perft の計測してみるとRust版Aperyと比較して2倍程度遅い。 だいたい同じ手順になるよう実装しているはずなんだけど どうしてそんなに差がついているのかなぁと気になって、調べながら色々修正し、ようやく遜色ないくらいの速度まで改善できたのでメモ。 改善PR: Improve performance by sugyan · Pull Request #5 · sugyan/yasai · GitHub build options まず大事なのが、 PEXT が有効に使えていなかったこと。 前記事で書いた通り bitintr crate を使って簡単に記述できるようにしていたが、これは内部で target_feature attribute で分岐されていて、 bmi2

    Rustで将棋合法手生成、速度改善 - すぎゃーんメモ
  • Rustでつくる詰将棋Solver - すぎゃーんメモ

    ついカッとなって先週からRustで詰将棋ソルバを書き始めてしまい、ようやくdf-pnで何らかの解答を出せるようになったところ。ここからもうちょっと調整していくぞ、、 pic.twitter.com/XM9iPJqocv— すぎゃーん💯 (@sugyan) November 2, 2021 というわけで突然Rustで詰将棋ソルバを作りたくなり、作った。 github.com 現時点ではまだ完成度は低くて6割ほどかな…。 とはいえそこらの素直な詰将棋問題なら普通に解けると思う。 冒頭の画像は看寿賞作品の3手詰「新たなる殺意」を2秒弱で解いたもの。 先行事例 将棋プログラムの多くはC++で書かれていて 最近はRustも増えてきているのかな? しかし「詰将棋を解く」ことに特化しているものはあまり多くはなさそうだった。 なかでもRustで書かれているものはna2hiroさんによるものくらいしか無さ

    Rustでつくる詰将棋Solver - すぎゃーんメモ
  • ISUCON11予選のNode.js実装を書いた - すぎゃーんメモ

    ISUCON11 予選おつかれさまでした。 ここ数年は参加者として予選敗退を繰り返してきたのだけど、今年はちょっと違う関わり方をしてみるか、と思い 「参考実装の移植」に立候補してみました。 isucon.net Node.js担当として採用していただき、ちょっと不安もあったので id:hokaccha 氏にレビュアーとしてついてもらって、言語移植チームとして加わりました。 ISUCON11予選おつかれさまでした。今回は言語移植チームとしてNode.js実装を担当し、その他 バグ直し太郎として幾つかの言語の実装にcontributeしました— すぎゃーん💯 (@sugyan) August 22, 2021 Node.js 実装 github.com 中身としては素朴な express のアプリケーションで、TypeScriptで実装しました。 mysql clientには mysql2/

    ISUCON11予選のNode.js実装を書いた - すぎゃーんメモ
  • 3Dモデルを動かせるアプリをPWAで作る - すぎゃーんメモ

    乗り物大好きな子ゃーんに遊ばせてあげよう、と 救急車の3Dモデルデータを購入してThree.jsでグリグリ動かせるようにしてPWAにしてあげた pic.twitter.com/61MUg3MrOR— すぎゃーん💯 (@sugyan) August 1, 2021 子(1歳5ヶ月)が最近すごく消防車とか救急車に興味を持っているようで、またiPadを人差し指で操作することを覚えてきているので、じゃあ好きな車を表示してグリグリ動かせるのを作ってあげよう、と思った。 Web系エンジニアとしてはやはりブラウザで動くようなものが作りやすいな、と思い Web技術を軸に実装してみた。 モデリングデータ まずは3Dモデルを探してみた。海外の救急車のものなどはよくヒットしたが、国内のものでそれっぽく良いものはなかなか見つからなかった。 最終的にこれを購入。 booth.pm 消防車も欲しいけどここには無さそ

    3Dモデルを動かせるアプリをPWAで作る - すぎゃーんメモ
  • 将棋駒画像データセットを公開する - すぎゃーんメモ

    以前から少しずつ、将棋の駒を画像分類するためのデータセット作りをしていて 将棋駒画像の分類器をラクして作る - すぎゃーんメモ 斜めに写った画像をCanvasで矩形に補正する - すぎゃーんメモ 最初は自分のローカル環境でやっていたりしたけど やっぱりWebアプリで管理できた方が良いと思って Webアプリ上に保存して管理するようにしていた。 肖像権などの問題も無いはずだし あったら使いたいというヒトもいるかもしれない、と思ったので公開するようにした。 shogi-dataset.appspot.com 現状では 「空白」「各種14種類の駒 x 先手後手2種類ずつ」で29種類を、素材から自動生成した各種200枚 それに自分で写真や盤面映像をキャプチャした画像などから切り抜いてラベル付けしたもの数十枚ずつ などが保存されている。これから少しずつ集めて増やしていく予定。 仕様 画像データセットを

    将棋駒画像データセットを公開する - すぎゃーんメモ
    yuiseki
    yuiseki 2020/09/20
  • 顔画像生成のためのデータセットを作る - すぎゃーんメモ

    動機 TensorFlowの登場をきっかけに 機械学習によるアイドル顔識別 という取り組みをしていて、3年以上かけてコツコツとアイドルの自撮りを収集してラベルをつけてデータセットを作ってきたけど、 アイドルヲタクはもう辞めてしまって 現場にも全然行かなくなり、卒業・脱退の情報を追いながらラベルを更新していく作業を続ける情熱はすっかり薄れてしまった。 もうアイドル顔識別プロジェクトは終了にしよう、と思った。 しかし折角今まで集めたデータを捨ててしまうのは勿体無い。せめて最後に何か活用できないものか。 と考えて、「画像生成」に再び取り組んでみることにした。 過去に試したことはあったけど、それほど上手くはいっていない。 TensorFlowによるDCGANでアイドルの顔画像生成 TensorFlowによるDCGANでアイドルの顔画像生成 その後の実験など この記事を書いたのが2016年。 この後

    顔画像生成のためのデータセットを作る - すぎゃーんメモ
  • TensorFlow 2.0 時代の Keras API での画像分類器 - すぎゃーんメモ

    TensorFlowを初期の頃から触っていて define-and-run の流儀にはそれなりに慣れてしまっていたけど、そろそろTensorFlowも2.0がreleaseされそうだし(2019.09時点で 2.0rc1) 新しいinterfaceも触っておかないと、と思って勉強してみた。 Effective TensorFlow 2.0 を読むと、major changesとして "Eager execution"、recommendationsとして"Keras layers and models"が紹介されている。 これからの時代はKeras APIを使ってEager executionでやっていく必要がありそうだ。 お題: 将棋駒画像の分類 昨年くらいから将棋の画像認識をやろうと思って 駒の画像データセットを作成 していた。今回はこれを使う。 各駒14種の先手・後手で28種、空白マ

    TensorFlow 2.0 時代の Keras API での画像分類器 - すぎゃーんメモ
  • Docker Image of Python with OpenCV 3.0 for Heroku - すぎゃーんメモ

    を、作った。 Docker Hub URL https://hub.docker.com/r/sugyan/heroku-python-opencv/ Dockerfile repository https://github.com/sugyan/docker-heroku-python-opencv Example app https://docker-python-opencv-example.herokuapp.com/ これを使って https://devcenter.heroku.com/articles/docker のようにheroku-docker pluginを使ってdeployすれば、cv2でOpenCVの機能を使うPython appが動くと思います。 例: https://docker-python-opencv-example.herokuapp.com/ 余談

    Docker Image of Python with OpenCV 3.0 for Heroku - すぎゃーんメモ
    yuiseki
    yuiseki 2017/08/14
  • TensorFlowによるDCGANでアイドルの顔画像生成 - すぎゃーんメモ

    アイドル顔識別のためのデータ収集 をコツコツ続けて それなりに集まってきたし、これを使って別のことも…ということでDCGANを使ったDeep Learningによるアイドルの顔画像の「生成」をやってみた。 まだだいぶ歪んでいたりで あまりキレイじゃないけど…。顔画像を多く収集できているアイドル90人の顔画像からそれぞれ120件を抽出した合計10800件をもとに学習させて生成させたもの。 分類タスクとは逆方向の変換、複数のモデル定義などがあってなかなか理解が難しい部分もあったけど、作ってみるとそこまで難しくはなく、出来上がっていく過程を見るのが楽しいし とても面白い。 DCGANとは "Deep Convolutional Generative Adversarial Networks"、略してDCGAN。こちらの論文で有名になった、のかな? [1511.06434] Unsupervise

    TensorFlowによるDCGANでアイドルの顔画像生成 - すぎゃーんメモ
  • はじめてのGo - すぎゃーんメモ

    今さらながら、Goをもう少し読み書きできるようになりたいな、と思い。 A Tour of Go を一通り読んで、 GitHub - mattn/twty: command-line twitter client written in golang go-oauth/examples/twitter at master · garyburd/go-oauth · GitHub などを参考にしつつ、写経というかんじで Twitterのtimelineを取得するものをまずは書いてみた。 package main import ( "encoding/json" "fmt" "github.com/garyburd/go-oauth/oauth" "github.com/typester/go-pit" "log" "net/http" "os/exec" "runtime" ) func mai

    はじめてのGo - すぎゃーんメモ
    yuiseki
    yuiseki 2014/06/25
  • node-configが進化してた件 - すぎゃーんメモ

    以前config系のモジュール色々調べてたのだけど(Nodeアプリの設定系モジュールいろいろ - すぎゃーんメモ)、その後久々にnode-configを覗いてみたら大幅に進化していてビックリしたのでメモ。 まずオンラインドキュメントがしっかり作られてる。 http://lorenwest.github.com/node-config/latest/ ざっと読んだカンジでの挙動は 設定ファイルはyaml, json, jsのいずれかの形式 デフォルトでは"./config/default.format"が読まれる その他にhost名を使ったファイル名、NODE_ENV環境変数で指定したファイル名も使える 上記にマッチするものから設定をそれぞれ読み取り、複数あればいいかんじにマージしてくれる 実行中にも"runtime.json"ファイルを監視して、プログラム実行中でもそれが変更されるとその設

    node-configが進化してた件 - すぎゃーんメモ
    yuiseki
    yuiseki 2013/05/16
  • Nodeアプリの設定系モジュールいろいろ - すぎゃーんメモ

    Node(node.js)でwebアプリを開発するにあたって、DBの情報やSession keyのsalt, OAuthのsecret_keyなどの設定をどうするかを悩み中。考えているのは アプリケーションのコードに設定値を埋め込むようなことは絶対にしたくない ということは設定用のファイルを用意してそこを読み込む形に? 開発環境と番環境で設定が変わるので上手く切り替えられるようにしたい npmで普通に入れられる軽量なライブラリで実現出来れば良い …で、どんなのがあるか調べてみたところ結構色々あったので以下の6つくらいを実際に入れて使って試してみた。 cjson config confu jsonconfig nconf node-config cjson コメント付きで記述したJSON形式なファイルを使える、とのこと。 /* * This is my app configuration

    Nodeアプリの設定系モジュールいろいろ - すぎゃーんメモ
    yuiseki
    yuiseki 2013/05/16
  • test-tcpモジュールを作ってみた - すぎゃーんメモ

    はじめてのnpm publish。 PerlでTest::TCPを愛用しているのですが、Node.jsでもこういうの欲しいと思っていて探してみたけどそれらしきものが見当たらなかったので作ってみました。 https://github.com/sugyan/node-test-tcp 「サーバのインスタンスとクライアントのコードを渡すと、空いているportでサーバを立ち上げてクライアントコードを実行してくれる」というもの。 こんなカンジで使うイメージです。 var assert = require('assert'); var net = require('net'); require('test-tcp').test_tcp({ server: net.createServer(function (socket) { socket.on('data', function (data) { s

    test-tcpモジュールを作ってみた - すぎゃーんメモ
    yuiseki
    yuiseki 2013/04/12
  • FluentdとGrowthForecastを使って自分の行動をロギング・可視化する - すぎゃーんメモ

    おそらくはそれさえも平凡な日々: もにかじでオレオレ監視ツールについて話してきました GrowthForecast.plで自分ロギングしてみた - by edvakf in hatena の記事のように、FluentdやGrowthForecastを使ったロギングって面白そうだなーと思って自分でもやってみた。 アプリケーション毎のアクティブな時間を取る まず考えたのはこれ。キーイベント発火回数ほど細かくなくても、「アクティブにしている時間の割合」が取れたらそれはそれで良いかな、と。 1秒ごとにアクティブなアプリを調べてロギングしていく。Mac OS Xにおいてアクティブなアプリケーションを調べるならAppleScriptが簡単。 name of (info for (path to frontmost application)) これだけでアクティブにしているアプリケーション名が取れる。

    FluentdとGrowthForecastを使って自分の行動をロギング・可視化する - すぎゃーんメモ
  • face.comのdetect APIを使ったら目からビームが捗った話 - すぎゃーんメモ

    目からビームな画像を生成するWebサービスを作った - すぎゃーんメモの続き。 6月27日発売、ももいろクローバーZの「Z女戦争」。ついにMVも公開されました。 自分の中では最高にツボっていて、どストライクです。これはヤバい。大好きです。 発売まであと2週間、超楽しみですね。 Z女戦争 アーティスト: ももいろクローバーZ出版社/メーカー: キングレコード発売日: 2012/06/27メディア: CD購入: 2人 クリック: 114回この商品を含むブログ (47件) を見る で、先日「目からビーム画像ジェネレーター」を作ってみたのだけど、公開したところ最初に使っていた「顔ラボ 顔検出WebAPI」があっという間に利用可能回数制限に引っかかってしまい、使えなくなってしまった。 何か他に使えるものあれば入れ替えよう、と探していたところface.comのAPIを教えていただいた。 @sugyan

    face.comのdetect APIを使ったら目からビームが捗った話 - すぎゃーんメモ
  • CP932など特殊な文字を含むHTMLをスクレイピングする - すぎゃーんメモ

    Shift_JISで書かれたHTML、例えば下記のような文書をスクレイピングする場合。 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>title</title> </head> <body> <div id="contents"> <div>1.ほげ</div> <div>2.ふが</div> <div>3.ぴよ</div> </div> </body> </html> Content-Typeは下記のように返されるとする。 Content-Type: text/html; charset=Shift_JIS スクレイピング用のライブラリたちは優れているのでUTF-8じゃなくても内部でうまいこと変換してくれたりするのであ

    CP932など特殊な文字を含むHTMLをスクレイピングする - すぎゃーんメモ
    yuiseki
    yuiseki 2012/05/25
  • JavaScriptで、もう連想配列の最後のカンマに悩んでないので - すぎゃーんメモ

    JavaScriptで、もう連想配列の最後のカンマに悩まない!(※追記あり) · DQNEO起業日記 で言及いただいていたので今の自分の意見を。 その発想は無かったし、無いですね。 2012-05-02 09:55:29 via Twitter for iPhone です。 要素数が変わる、無駄なkeyが入る Node.jsなんかではECMA Script 5のObject.keys()が使えるので var len = Object.keys(obj).length; とか Object.keys(obj).forEach(function (e) { console.log(e) }); とかでオブジェクトのキーを走査したり、ということを普通にやります。そんなときに"dummy"なんてキーが入ってたら邪魔でしょうがないです。 メモリ領域の無駄、はたいして気にならないでしょうけど、とにかく

    yuiseki
    yuiseki 2012/05/04
  • ももクロの人気上昇ぶりをグラフで可視化する - すぎゃーんメモ

    「最近、ももクロの人気が急上昇中。」とだけ盲目的に言っていてもアレなので、参考になる資料を用意したく。 ちょうど最近ファンの間で「メンバーのブログへのコメント件数が増えているよね」というのがあったので、その推移をグラフで可視化してみた。 http://momoclo-visualizer.herokuapp.com/blog_comments/ 各メンバーのブログ記事についているコメント件数の推移を色別に分けてグラフにした。横軸が時間軸、縦軸がコメント件数となっている。表示範囲、表示する対象メンバーは調整できるようにした。 「ももいろクローバーZ」になってから今に至るまでの全員の推移がこうなる。 http://momoclo-visualizer.herokuapp.com/blog_comments/?from=2011-04-11&to=2012-04-17&max=1500 昨年夏は

    ももクロの人気上昇ぶりをグラフで可視化する - すぎゃーんメモ
    yuiseki
    yuiseki 2012/04/17
  • Shibuya.XSS テクニカルトーク#1 に行ってきた - すぎゃーんメモ

    Shibuya.XSS テクニカルトーク#1 : ATND 大人気イベントに何故か3番目で申し込むことが出来ていたので行ってきた。ちょっと書くわけにはいかないような話や怖い話もあったりして楽しかった。とりあえずTwitterでの呟きだけメモ代わりに残しておく。 #shibuyaxss キター @ 株式会社ミクシィ(mixi, Inc.)なう URL 2012-04-04 18:59:31 via ロケタッチ(loctouch) MAP 「ミクシィ」シールを手に入れた! URL 2012-04-04 18:59:32 via ロケタッチ(loctouch) 自重せずにピザとビール始めてる #shibuyaxss 2012-04-04 19:04:33 via Twitter for iPhone XSSによるパスワード盗み対策例: パスワード入力させるようなところは"login.exampl

    yuiseki
    yuiseki 2012/04/05