タグ

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

  • Rustで将棋の局面画像生成、そしてCDN Edgeで動的生成 - すぎゃーんメモ

    背景 先行・類似事例 自作のメリット Rustで局面画像生成 盤・駒画像の素材 画像処理 入出力 Generatorと下準備 Publish Web Appで使う CDN Edgeで動かす wasm-packでWebAssembly作成 Deno Deploy Vercel Edge Functions Cloudflare Workers Fastly Compute@Edge その他 まとめ Repository 背景 ATrium という AT Protocol のためのライブラリを自作している が、まったくドッグフーディングしていなかった ので、Blueskyに詰将棋の問題を放流するBotを作ってみることにした gfx氏が作ったBot を参考に というわけで、詰将棋の問題の局面を画像で投稿したい が、あまり自分好みの画像を生成できるライブラリやWebサービス等がない ので、結局それ

    Rustで将棋の局面画像生成、そしてCDN Edgeで動的生成 - すぎゃーんメモ
    honeybe
    honeybe 2024/01/26
  • AT Protocol(Bluesky)のためのRustライブラリを作った - すぎゃーんメモ

    前記事 でOCamlやってくぞ、と書いたけど結局Rustです。 Bluesky AT Protocolとエコシステムの現状 (〜2023/04) Rust版の実装 Lexiconとコード生成 自作Rust版実装: ATrium Lexicon schema コード生成 API設計 Lex CLI 今後 Bluesky Twitter代替の候補として噂される(?)分散型SNS Bluesky。 現状ではまだprivate betaということで招待コードが無いと使えないのだけど、先月運良くコードをいただくことができて使い始めてみている。 一通りのSNS的な動きはしているものの、まだまだ鋭意開発中ということで足りていない機能があったり 日々新機能が追加されたりと目紛しく動いている世界のようだ。 AT Protocolとエコシステムの現状 (〜2023/04) AT Protocolについてはこち

    AT Protocol(Bluesky)のためのRustライブラリを作った - すぎゃーんメモ
    honeybe
    honeybe 2023/05/06
  • 2023パズル をRustで解いてみる - すぎゃーんメモ

    tkihiraさんの問題が面白そうだったので挑戦してみた。 2023年クイズ! 上の例のように、数字の合間に四則演算(+−×÷)や括弧を入れることで、2023 を作ってください。 - 数字の間に必ず演算子を 1 つ入れてください - ただし 9 と 8 の間には既に ÷ が入っています - 括弧は複数重ねて使用できます - 10×(-9 ÷ 8) のようなマイナス記号の使用は禁止です pic.twitter.com/K0w2miMXJA— Takuo Kihira (@tkihira) December 31, 2022 既に解説記事が出ているので解答はこちらをどうぞ。 nmi.jp 結局自分は自力では解けなくて 他の人の解法や上記の解説記事を読んでようやくできた、のだけど… 自分なりに理解して改めてRustで実装してみた。 RPN(逆ポーランド記法)の backtracking 探索の高

    2023パズル をRustで解いてみる - すぎゃーんメモ
    honeybe
    honeybe 2023/01/06
  • Rubyでバイナリデータに対するrindex検索の挙動でハマったので調べたことメモ - すぎゃーんメモ

    自分の手元の環境でこんなことが起きた。 $ ruby -v ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21] $ irb irb(main):001:0> "\x01\x80\x00\x00".index("\x01") => 0 irb(main):002:0> "\x01\x80\x00\x00".rindex("\x01") => 1 \x01 は 0 番目にしかないのだから、 .index でも .rindex でも 0 が返ってくるはずではないの?? 先に結論 きっかけ String#rindex の謎挙動 もう少し深く追う Encodingと実行環境 つまり再現条件は Rooの問題 Rubyのバグではないの? 3.2 先に結論 バイナリデータを扱うときには必ずEncodingを ASCII-8BIT

    Rubyでバイナリデータに対するrindex検索の挙動でハマったので調べたことメモ - すぎゃーんメモ
    honeybe
    honeybe 2022/12/23
  • SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ

    自作Rust将棋合法手生成ライブラリ、計算の高速化のためBitboardの128bit計算をSIMDで行うようx86_64のAVX2、AArch64のNEON、wasm32のsimd128で動くようにそれぞれ実装して 各環境で多少速く探索できるようになった。https://t.co/h7Dz3X6BhT— すぎゃーん💯 (@sugyan) July 2, 2022 ということでSIMDでの高速化のメモ。 SIMDとは 実装 x86_64 基演算 飛び利き計算 AArch64 同値判定、ゼロ値判定 飛び利き計算 Iterator WebAssembly Benchmark x86_64 AArch64 WebAssembly 感想 SIMDとは ja.wikipedia.org の通り、複数のデータを1命令で同時に演算する、というもの。 将棋Bitboardは81マスのデータを表現する

    SIMDによる将棋Bitboard計算の高速化 - すぎゃーんメモ
    honeybe
    honeybe 2022/07/08
  • Rustでつくる もう一つの将棋ライブラリ - すぎゃーんメモ

    昨年末に出版された「強い将棋ソフトの創りかた」というを読んで、自分も将棋AIを作ってみたいと思った。 強い将棋ソフトの創りかた 作者:山岡忠夫,加納邦彦マイナビ出版Amazon このでは主にPythonでの実装が紹介されていたが、自分は最近はRustが好きなのでRustで自分で実装してみたい、と考えた。 最近では自作詰将棋SolverもRustで書いている。 memo.sugyan.com 局面探索、パフォーマンス まず、局面の探索について考えた。 詰将棋Solverの場合も同様だが、将棋ソフトを作る場合にも、とにかく「今の局面からこの先どのような局面が発生し得るか」を高速に大量に探索していく必要がある。 現局面を根とするゲーム木を、合法手を辿って次々と子ノードに移ったり戻ってきたりして探索することになる。 これは、「各局面における合法手の列挙」と「指し手の適用(また、その巻き戻し)に

    Rustでつくる もう一つの将棋ライブラリ - すぎゃーんメモ
    honeybe
    honeybe 2022/03/07
  • 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 - すぎゃーんメモ
    honeybe
    honeybe 2021/11/11
  • 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実装を書いた - すぎゃーんメモ
    honeybe
    honeybe 2021/08/23
  • 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 での画像分類器 - すぎゃーんメモ
    honeybe
    honeybe 2019/09/17
  • 斜めに写った画像をCanvasで矩形に補正する - すぎゃーんメモ

    将棋駒画像分類の話の続きのような、あんまり関係もないような。 memo.sugyan.com memo.sugyan.com 結局、素材を組み合わせて自動で生成しただけの駒画像ではやはりデータが足りていないようで、「やはりもっと様々な画像から人力でラベル付けしてデータセットを作っていく必要がありそう」ということになった。 とはいえ、インターネットから画像を拾ってこようと思うと、例えば以下のような感じで (引用元: フリー写真素材ぱくたそ) 多少ならともかく 斜めの角度から写っているものは、そのまま矩形に切り出して学習用画像データに利用するのは難しそう。 これらはうまいこと変形して使いたい。 いわゆるperspective projectionの逆変換のような操作が必要になる。 JavaScriptを使ったCanvas APIでの変換では簡単な拡大・縮小などの変換は可能だけど こういったpe

    斜めに写った画像をCanvasで矩形に補正する - すぎゃーんメモ
    honeybe
    honeybe 2018/09/05
  • TensorFlowで顔検出器を自作する - すぎゃーんメモ

    19日に行われた Kyoto.なんか #3 で発表・デモをさせていただいた内容まとめです。 はじめに: 検出器の重要性 アイドル顔識別 をずっとやっている中で、顔の識別・分類(Classification)はCNNを使って出来ているけれど まだ上手く出来ていない別のタスクがあって。 それが画像内からの顔領域の検出 (Detection, Localization)。 「画像内に写っている人物が誰であるか」を識別するためには、まずはその画像に写っている「顔」を検出する必要がある。 その検出された顔それぞれについて分類器にかけて「この顔は○○さん」「この顔は××さん」と分類していくことになるわけで。 分類器に与える入力画像を切り抜いて抽出するのにもまず顔領域を検出する必要があるし、その分類器を学習させるためのデータセットも、様々な画像から顔領域を検出して切り抜いてそれぞれに対してラベル付けする

    TensorFlowで顔検出器を自作する - すぎゃーんメモ
    honeybe
    honeybe 2017/08/21
  • "Write Code Every Day" 1年 - すぎゃーんメモ

    1年前のjava-ja.OSSで @t_wada さんの話を聴いた翌日から実践し始めた"Write Code Every Day"、どうにか1年間つづけることが出来た pic.twitter.com/scVbkZFZI9— すぎゃーん💯 (@sugyan) October 6, 2016 元記事 John Resig - Write Code Every Day 日語訳 毎日コードを書くこと - snowlongの日記 この記事を読んだときは「へー」くらいにしか感じていなかったのだけど、 1年前の10月5日のjava-ja.OSSでのid:t-wadaさんの発表を聴いて、実際に身近な知っている人たちが実践しているのを知って、「よし自分もやってみよう」と始めたのがきっかけ。 OSS についてあれこれ from Takuto Wada www.slideshare.net 元記事で ブログ

    "Write Code Every Day" 1年 - すぎゃーんメモ
    honeybe
    honeybe 2016/10/07
  • 「TensorFlowはじめました」を読んだ - すぎゃーんメモ

    TensorFlowはじめました 実践!最新Googleマシンラーニング (NextPublishing) 作者: 有山圭二出版社/メーカー: インプレスR&D発売日: 2016/07/29メディア: Kindle版この商品を含むブログを見る 著者の有山さんとは、TensorFlowでの独自の画像データセットの分類に取り組む同士(?)として勉強会などでお話する機会があり、そんな縁もありまして有り難いことに献ということで読ませていただくことができました。 第1章の「TensorFlowの基礎」では最初にまずデータフローグラフの「構築」と「実行」で分かれているという概念について、丁寧に説明されていてとても良かったです。いきなり何も知らずに公式Tutorialだけ始めていた自分は、こういう概念について理解するのが遅かった…。 第2章ではCIFAR-10の学習モデルと評価。公式Tutorialの

    「TensorFlowはじめました」を読んだ - すぎゃーんメモ
    honeybe
    honeybe 2016/08/05
  • TensorFlowによるDeep Learningでのアイドル顔識別モデルの性能評価と実験 - すぎゃーんメモ

    以前から書いているDeep Learningによるアイドル顔識別の話の続き。 コツコツと顔画像収集とラベル付けを続けて、そこそこにデータが集まってきたので ここらでちゃんと性能評価をしてみよう、と。 データセットの作成 今回は、現時点で重複なく180件以上の顔画像が集まっている40人のアイドルを分類対象とした。 対象アイドル一覧 これらのアイドルに分類のラベルindexを振り(推してる順とかじゃなくてランダムにね)、それぞれから無作為に抽出した180件の顔画像をそれぞれラベルとセットでレコードを作り、シャッフルして30件ずつ6つのデータセットに分けて保存。 data-00.tfrecords data-01.tfrecords data-02.tfrecords data-03.tfrecords data-04.tfrecords data-05.tfrecords レコードは、以前の記

    TensorFlowによるDeep Learningでのアイドル顔識別モデルの性能評価と実験 - すぎゃーんメモ
    honeybe
    honeybe 2016/06/15
  • TensorFlowでのMNIST学習結果を、実際に手書きして試す - すぎゃーんメモ

    Deep Learningという言葉を色んなところで聞くようになり、Googleからも TensorFlow というものが出たし、そろそろちょっと勉強してみるか〜 ということで初心者が機械学習に手を出してみた。 TensorFlowのtutorialを見てみると、まず最初に「MNIST」という手書き文字の識別問題が出てくる。その問題に対して、こういうモデルを作ってこうやって学習させていくと91.2%くらいの識別率になります、さらに飛躍させてこういうモデルでこうやって学習させると99.2%くらいまで識別率が上がります、とか書いてあって、確かになるほどーと数字で納得もできるのだけど、せっかくなら実際にその学習結果を使って自分の書いた数字を識別してもらいたいじゃないか、ということで そういうのを作ってみた。 https://github.com/sugyan/tensorflow-mnist c

    TensorFlowでのMNIST学習結果を、実際に手書きして試す - すぎゃーんメモ
    honeybe
    honeybe 2015/11/25
  • Perl6で記号Hello worldする - すぎゃーんメモ

    一番簡単なHello worldです。 ::('!{.(?'~^'.~!)~'~^')^.^^'~^'?!^?('~^'??)!{')('!?}}~~(!^~{~))(.{~('~^'))?^?.).(?.}?)().!~'~^'~!.?}?~.^.{?!)~}!).'~^'}!!.~(}(!?}~{!}).(('~^')^(^.(.)~?!.()!})?)')普通に実行できると思います。 $ cat hello.pl6 ::('!{.(?'~^'.~!)~'~^')^.^^'~^'?!^?('~^'??)!{')('!?}}~~(!^~{~))(.{~('~^'))?^?.).(?.}?)().!~'~^'~!.?}?~.^.{?!)~}!).'~^'}!!.~(}(!?}~{!}).(('~^')^(^.(.)~?!.()!})?)') $ perl6 hello.pl6 Hello,

    Perl6で記号Hello worldする - すぎゃーんメモ
    honeybe
    honeybe 2015/10/22
  • percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ

    先日、shell勉強会で「zawを使ってシェル操作を快適に」というお話を聴いて、自分ももう少しそのあたりの環境を整えよう、と思い立った。 nanapi勉強会 vol2 - Shellの活用でこれだけ毎日が便利になる - nanapi勉強会 | Doorkeeper zawで快適シェル生活 // Speaker Deck 自分が使う選択をしたのは zaw ではなく percol 。 軽く調べてみたかんじでは zawってのは設定してある(もしくは自作する)決められたsourceを使って決められた操作を行うもので、zshに密接に結び付いているツールで。percolはそういうのではなく純粋に「入力をフィルタリングする」だけのツールなので、パイプなどを使って各コマンドと組み合わせることで色々な使い方ができそう。 percolの導入 https://github.com/mooz/percol Pyt

    percolを使ってターミナル操作を早く、便利に。 - すぎゃーんメモ
    honeybe
    honeybe 2014/07/04
  • はじめての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 - すぎゃーんメモ
    honeybe
    honeybe 2014/06/25
  • 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を使って自分の行動をロギング・可視化する - すぎゃーんメモ
    honeybe
    honeybe 2013/03/14
  • 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を使ったら目からビームが捗った話 - すぎゃーんメモ
    honeybe
    honeybe 2012/06/13