Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

ブックマーク / mattn.kaoriya.net (24)

  • Big Sky :: SQLite3 で generate_series(連番)

    PostgreSQL だと、generate_series という集合生成関数があり、例えば postgres=# select generate_series(1, 10) x; x ---- 1 2 3 4 5 6 7 8 9 10 (10 行) こういう連番がサックリと作れる訳なのですが、SQLite3 にはこの様な関数が用意されていません。かといって、この generate_series の為に SQLite3 拡張を作って enable_load_extension する(例: Big Sky :: SQLitetwitter のタイムラインを select する。)のはちょっと辛い。しかしながらどうしても必要な場面というのは出てきます。例えば FizzBuzz とか FizzBuzz とか、あと FizzBuzz なんかでも必要ですね。 そういう場合に使えるのが with

    Big Sky :: SQLite3 で generate_series(連番)
    Wacky
    Wacky 2024/09/16
  • Big Sky :: RapidJSON や simdjson よりも速いC言語から使えるJSONライブラリ「yyjson」

    おなじみC/C++から使えるJSONライブラリを紹介するコーナー。まずは過去のまとめ。 ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い! 何も見ずにC++でjsonパーサが書けるか試してみた。 C言語から使えるJSONパーサ、JSMNを試してみた。 僕がboost::asioとboost::property_treeを使いHTTPプロキシ環境下で非同期にGoogle Search APIから検索するまでにやった、たった一つの事。 C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。 最速と言われる JSON パーサ「rapidjson」が当に爆速なのか試してみた。 C言語から使えるJSONパーサ、jansson がとても直感的で良い C++ で STL フレンドリに扱えるJSONパーサ「json.hpp」 コメントも扱える高機能な

    Big Sky :: RapidJSON や simdjson よりも速いC言語から使えるJSONライブラリ「yyjson」
    Wacky
    Wacky 2022/03/22
  • Big Sky :: Go言語で Lisp 処理系を作った。

    1週間ほど前の深夜、ふと Go で連結リスト構造を書いていたら次第に car/cdr 形式になってしまい、気付いたら手が滑って Lisp 処理系を作り始めてしまいました。 なぜかこんな時間から突然 lisp を書き始めてしまった。 — mattn (@mattn_jp) March 26, 2020 初日は深夜だったのでパーサを書いた所で終了。次の日の夕方には四則演算と FizzBuzz が動きました。実は Lisp 処理系を書くのは人生でたぶん4回目くらいで、前回はC言語で書きました。 GitHub - mattn/cisp: Minimal Lisp Interpreter https://github.com/mattn/cisp 今回のルールとして「過去の自分の実装や他の実装は見ない」というオレオレルールを作ってしまったので幾分時間が掛かってしまった様に思います。テストコードはさす

    Big Sky :: Go言語で Lisp 処理系を作った。
    Wacky
    Wacky 2020/04/06
  • Big Sky :: Microsoft Word を Markdown に変換するコマンド「docx2md」を作った。

    8月に Google Developers Expert となり、新米の様にオロオロとしています。過去の GDE ミーティングの議事録を見せて頂いているのですが Google Document に保存されており、Go だけでなく他のカテゴリの GDE に関する物も含めると全てに目を通すのはなかなか骨が折れます。技術者なので問題は技術で解決すべく、これらの資料を grep 検索できる様にしました。 Google Document はエクスポートすると Microsoft Word の形式となるので、Microsoft Word から Markdown に変換するプログラムを書けばテキスト検索もできるし、なんならそのまま GitHub に貼り付けてしまう事もできます。 GitHub - mattn/docx2md docx2md Convert Microsoft Word Document

    Big Sky :: Microsoft Word を Markdown に変換するコマンド「docx2md」を作った。
  • Big Sky :: リアルタイム物体認識を2本作ってみた。

    正月、皆が寝静まった後の時間を使ってリアルタイム物体認識を2作ってみた。 TensorFlow Lite 版 GitHub - mattn/webcam-detect-tflite https://github.com/mattn/webcam-detect-tflite TensorFlow Lite は Google が開発している TensorFlow のモバイル環境向開発環境およびランタイムで今回は C++ で書いた。モデルファイルは toco 等で変換して使用します。来 TensorFlow Lite は Linux 向けにだけ提供されているけど僕の環境は Windows なので匠の技によりポーティングされている。パフォーマンスはそれほど良くない。 WindowsOpenCV でリアルタイムにカメラ画像取り込んで TensorFlow Lite で prediction

    Big Sky :: リアルタイム物体認識を2本作ってみた。
  • Big Sky :: Golang だけでやる機械学習と画像分類

    « Let's Encrypt を簡単操作できる CLI、Lego が MyDNS に対応した。 | Main | VimConf 2018 に行ってきた。 » gobrain という Golang だけで実装されたニューラルネットワークを見つけたので遊んでみました。 GitHub - goml/gobrain: Neural Networks written in go https://github.com/goml/gobrain 作りもシンプルですし、扱い方も簡単なのでちょっとしたサンプルを書くのには向いてると思います。例えば FizzBuzz であればこんな感じ。 package main import ( "math/rand" "github.com/goml/gobrain" ) type FizzBuzz []float64 func (fizzbuzz FizzBuzz)

    Big Sky :: Golang だけでやる機械学習と画像分類
    Wacky
    Wacky 2018/11/08
  • Big Sky :: 書評「Go言語による並行処理」

    O'Reilly Japan, Inc. 様に献頂きました。ありがとうございます。 そして献頂く際にお声を掛けて頂いた、書の翻訳を担当された ymotongpoo さんにもお礼を申し上げます。ありがとうございます。 書の訳は非常に素晴らしく、とても原文が英文であったとは思えないほど綺麗で、読んでいく中で「原文でどの様に表現されているんだろう」といった引っかかりも無く、とてもスムーズに読み進められました。 Go 言語に関わって随分と長くなってきました。初めて Go を知ってからユーザがどんどん増える様を見る事が出来るのは正直に言って非常に嬉しいです。 ふと Go の魅力は何かと聞かれたら幾つか挙げる事が出来ますが、間違いなく選ぶのが「非同期処理の簡単さ」です。これまで多くの開発者が OS スレッドで実現してきた非同期処理を、Go 言語は少ないイディオムとインテリジェントなランタイムを

    Big Sky :: 書評「Go言語による並行処理」
    Wacky
    Wacky 2018/10/22
    “多くの開発者が OS スレッドで実現してきた非同期処理を、Go 言語は少ないイディオムとインテリジェントなランタイムを使って誰でも簡単に非同期処理を実装できる仕組みを提供しています。”
  • Big Sky :: golang で tensorflow のススメ

    « Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。 | Main | ボタンを押したら golang の if err... を自動入力 » tensorflow といえば Python と思っておられる方も多いのではないでしょうか。間違いではないのですが、これは初期に作られた Python 向けのバインディングに研究者達が多くいついた結果に過ぎないと思っています。実際 tensorflow は現在 C言語、C++PythonJavaGo から利用する事ができ、最近では JavaScript にも移植されています。筆者自身も Go で tensorflow を使ったシステムを構築し、運用保守しています。問題も発生せず機嫌良く動いています。学習の利用部分は GPU のパフォーマンスに依存しますが、それ以外の部分については各言語の実装に依存し

    Big Sky :: golang で tensorflow のススメ
    Wacky
    Wacky 2018/08/25
    “実際 tensorflow は現在 C言語、C++、Python、Java、Go から利用する事ができ、最近では JavaScript にも移植されています”
  • Big Sky :: Go 言語の非同期パターン

    Gogoroutine という非同期の仕組みを提供していますが、使い方次第では色々なパターンが実装できる為、初めて goroutine を見た人はどの様な物が正解なのか分からない事があります。以前、このブログでも紹介した事がありますが Go の非同期の仕組みは一見単純な様に見えて実はとても奥深いのです。 Big Sky :: golang の channel を使ったテクニックあれこれ golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればど... https://mattn.kaoriya.net/software/lang/go/20160706165757.htm 2012 年に Rob Pike 氏が Google I/O で「Go

    Big Sky :: Go 言語の非同期パターン
    Wacky
    Wacky 2018/06/01
  • Big Sky :: Windows 10 に AF_UNIX が来たので試してみた。

    AF_UNIX comes to WindowsWindows Command Line Tools For Developers Introduction:   Beginning in Insider Build 17063 , you’ll be able to use the unix socket ( AF_UNIX )... https://blogs.msdn.microsoft.com/commandline/2017/12/19/af_unix-comes-to-windows/ 昨日、Windows 10 April 2018 Update が来た。WSL (Windows Subsystem for Linux) の常駐もちゃんと動く様になってた。仕組みはどうやら WSL 上のプロセスが一つでも生きていればバックグラウンドで Ubuntu.exe が生き続けてく

    Big Sky :: Windows 10 に AF_UNIX が来たので試してみた。
    Wacky
    Wacky 2018/05/13
    “WSL (Windows Subsystem for Linux) の常駐もちゃんと動く様になってた。仕組みはどうやら WSL 上のプロセスが一つでも生きていればバックグラウンドで Ubuntu.exe が生き続けてくれるという物らしい。WSL でも tmux が問題なく使える
  • Big Sky :: Golang と Vue.js で簡単なアプリケーションを作ってみた。

    GoVue.js を使ってどれくらいシームレスにウェブアプリを作れるかを確認したかったのでタスク管理アプリを作ってみた。サーバは Go なので vue-cli や webpack 等は使わない。全て CDN から。Vue.js でアプリのベースを、UI コンポーネントとして Element、Ajax ライブラリとして axios を使った。 以前、Riot.js を使って Todo アプリを作った時はサーバ作るのにも少し時間が掛かったので、今回は横着して echo-scaffold を使った。 GitHub - mattn/echo-scaffold README.md Echo Scaffold Echo Scaffold is CLI to generate scaffolds for the echo framework. https://github.com/mattn/ec

    Big Sky :: Golang と Vue.js で簡単なアプリケーションを作ってみた。
    Wacky
    Wacky 2018/03/30
    “サーバは Go なので vue-cli や webpack 等は使わない。全て CDN から。Vue.js でアプリのベースを、UI コンポーネントとして Element、Ajax ライブラリとして axios を使った。”
  • Big Sky :: net/http でレスポンスの内容を確認したいなら io.TeeReader を使おう

    « Golang で物理ファイルの操作に path/filepath でなく path を使うと爆発します。 | Main | VimConf2017 に参加してきた。 » printf デバッグは便利だ。技術の後退と言われようと printf でないと解決できない事はまだまだたくさんあります。 今日は net/http でクライアントが得たレスポンスの JSON を確認したいといった場合に、どうデバッグしたらいいかを書いてみたいと思う。 Go のインタフェースは大よそ io.Reader もしくは io.Writer を使う様に設計されている。こうする事でプログラムがメモリを一度に沢山確保してしまわない様にしています。 package main import ( "encoding/json" "fmt" "log" "net/http" ) type Foo struct { ID  

    Big Sky :: net/http でレスポンスの内容を確認したいなら io.TeeReader を使おう
  • Big Sky :: .NET Core でブログエンジン書いた

    結構前から、そろそろ .NET Core を使ったお仕事とかやっていきたいなと思っていて、その際に Linux でちゃんと動くのかを確認しておきたかった。ただインターネットを見てもそれほど良い情報が見当たらず、これは誰も試してないのかもなと思い仕方がないので自分で作って体験してみる事にした。 GitHub - mattn/dotnet-blog README.md dotnet-blog Markdown friendly blog engine inspired with Jekyll written in Microsoft .NET C... https://github.com/mattn/dotnet-blog Markdown で記事が書けて、Jekyll と同様に Liquid でテンプレート制御が行えて、さらに Git と連携するブログエンジンです。 ディレクトリ構成は J

    Big Sky :: .NET Core でブログエンジン書いた
    Wacky
    Wacky 2017/07/14
    “小気味良い軽快な動作をするエディタの様な IDE 上で、dotnet の restore やブレイクポイントを貼ったデバッグ、入力補完などほぼ問題なく扱えた。”
  • Big Sky :: mruby で GUI!もう組み込み用途とは言わせない!mruby-fltk3 書いた。

    mruby と言えば組み込み用途のイメージが高いですが、Windows で何度も ruby 拡張のビルドエラーを潜り抜けて来て、ある程度 ruby 拡張の仕組みも知っている僕としては mruby の方がソースが綺麗し精神衛生上良いと言いたいが、言ってしまうとどこかしらからかオノが飛んで来そうな昨今でございます。 最近はmrubyでウォシュレットの噴出を監視するシステムも登場し、「TOTO さん、そろそろ気で mruby 組み込みウォシュレット 考えてみませんか」と言いたくなる状況です。 さて、そろそろ mruby にも GUI が欲しくなってきたので fltk3 を組み込んでみました。 mattn/mruby-fltk3 - GitHub https://github.com/mattn/mruby-fltk3 mrbgems 化してあります。 まぁまぁ忠実に fltk3 を移植してあり

    Big Sky :: mruby で GUI!もう組み込み用途とは言わせない!mruby-fltk3 書いた。
    Wacky
    Wacky 2013/01/18
  • Big Sky :: VimでDBが操作できる vdbi-vim 作った。

    DB操作ツール Emacs DBI を作ってみた - 技術日記@kiwanami このツールの目的は、クロスプラットフォームで便利なDB操作環境を実現することです。 pgAdmin や MySQL Query Browser のようなGUIの良さをCUIで実現してみようとしてみました。すなわち、ぼくのかんがえたさいきょうのDBツールです。ちなみに、このツールにとってEmacsはただの実行環境です。Emacs使わない人でも使うと便利だと思います。 http://d.hatena.ne.jp/kiwanami/20120305/1330939440 VimもーVimもー! って事で作りました。 mattn/vdbi-vim - GitHub Database client for Vim https://github.com/mattn/vdbi-vim Emacs版はepcというRPCプロト

    Big Sky :: VimでDBが操作できる vdbi-vim 作った。
    Wacky
    Wacky 2012/06/10
  • Big Sky :: node.jsでtwitter上に流れる画像をパラパラ見せるサーバを作ってみた。

    こんばんわ。node.jsやってないとjavascriptのもぐりだと言われている昨今、いかがお過ごしでしょうか。 個人的には node.js は2回くらい飽きてしまって、3周目くらいです。 よく考えたらこのブログでは一度も node.js に触れてなかったなーと思ったのと、最近触ってないから忘れてそうだな...という思いからエントリにしてみました。 node.js が面白いと言われている理由の一つに非同期処理があります。そして非同期を面白くする題材として websocket があります。今日はその websocket を使って、サンプルを作ります。 物としては、twitter の filter stream から、instagr.am と picplz.com の画像URLを収集し、それをクライアントにブロードキャストします。クライアントはそれを受けて Growl 風にポップアップ表示す

    Big Sky :: node.jsでtwitter上に流れる画像をパラパラ見せるサーバを作ってみた。
  • Big Sky :: ()()で呼び出せるC言語のdefineマクロの活用法を思いついた

    こりゃ出番だ!...と思ったとか、思わなかったとか... ()()で呼び出せるJavaScriptのネスト関数の活用法を思いついた - あと味 ()()で呼び出すネスト関数の活用方法を考えたのですが、考えて出した答えがこれです。 http://d.hatena.ne.jp/jdg/20091020/1256042918 関数ポインタとか、operator()でもいいんだけど、リテラルを使いたくなかったのでマクロで... #include <stdio.h> #include <stdlib.h> #include <string.h> #define eq(x,y) !strcmp(x,y) #define X(x) oppai(#x); #define _(x) oppai(#x); X void oppai(const char* rhs) { static const char* l

    Big Sky :: ()()で呼び出せるC言語のdefineマクロの活用法を思いついた
    Wacky
    Wacky 2009/10/22
  • Big Sky :: ProGit日本語版PDFの作り方。

    まぁ手順通りだけど... Ubuntu 9.04で作りました。以下手順。 必要なソフトウェアのインストール # sudo apt-get install texlive-xetex latex-cjk-xcjk pandoc texlive-latex-recommended ちなみにtexlive-latex-recommendedを入れないと"kvoptions.styが無いよ!"と怒られるので注意。 progitのリポジトリをcloneする # git clone git://github.com/progit/progit.git git入れてない人はプロジェクトページのdownloadボタンで... フォントを設定する latexというフォルダに移動し、config.xmlというファイルがあるのでfontを設定する。"Japan"なんて郷ひろみばりのフォント持ってないのでIPAG

    Big Sky :: ProGit日本語版PDFの作り方。
    Wacky
    Wacky 2009/10/16
  • Big Sky :: 自作のWindowsアプリケーションにJavaScriptで動作するプラグイン機能を実装する方法

    私もこれまで色々なWindowsアプリケーションを作ってきましたが、それらの多くはデスクトップ上で目的の動作だけを実行する単純なアプリケーションだったりします。 最近のテキストエディタ等では、マクロ等と呼ばれる拡張言語を使用してエディタ来の動作では実現出来ない色々な追加機能を実行する事が出来る様になっています。 今日は、既存のWin32アプリケーションにJavaScriptでマクロが実行出来る様にする為のtipsをご紹介。 拡張言語といってもJavaScriptの様に柔軟性のある言語を作り直すとなると程遠い工数を掛けてしまう事になりますが、Windowsには「ScriptControl」というスクリプト実行コンポーネントが用意されています。 今回はこれを使って外部にあるJavaScriptファイルを実行し、かつそのJavaScriptからアプリケーション内のオブジェクトを操作するまでを説

    Big Sky :: 自作のWindowsアプリケーションにJavaScriptで動作するプラグイン機能を実装する方法
    Wacky
    Wacky 2009/09/13
    既存のWin32アプリケーションにJavaScriptでマクロが実行出来る様にする為のtipsをご紹介
  • Big Sky :: SSH/Gitの設定を修正しなくてもファイアウォール内からgithub.comにpushする方法

    これはgithubじゃなくても使えるかも Gitトランスポート層が選択出来るのは知っていたけど、まさかこんな書き方出来るとは思ってなかった。 以前、こんな記事書きましたが github.comへのSSH接続にはホスト名"ssh.github.com"、ポート"443"に接続する様に設定します。※このssh.github.comが味噌です。 github.comへのSSH接続にはホスト名"ssh.github.com"、ポート"443"に接続する様に設定します。 ※このssh.github.comが味噌です。 http://mattn.kaoriya.net/software/20081029172540.htm これ以下の1行で出来る事が分かりました。 # git clone ssh://git@ssh.github.com:443/my-name/my-repo.git ssh.git

    Big Sky :: SSH/Gitの設定を修正しなくてもファイアウォール内からgithub.comにpushする方法