タグ

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

  • Big Sky :: Go に go:embed が入った。

    Go 言語はシングルバイナリをウリにしたプログラミング言語です。バイナリファイルを1つポンと scp で転送すれば動くのでとても便利です。シングルバイナリとなると当然、画像や HTML といったアセットをバイナリに埋め込みたくなります。 Go 言語ではこれまで go-assets や go-bindata、statik というツールを使う事でファイルのコンテンツをバイナリ化し、変数からアクセスする様にしてきました。 しかしそれらには色々な流儀や OS 間でのまばらな動作など、ユーザにとって納得のいかない物がありました。昨日、Go 言語ではオフィシャルとしてこのファイル埋め込みをサポートする様になりました。Go 1.16 から使える様になります。 cmd/go: add //go:embed support · golang/go@25d28ec · GitHub +3 −3 src/cmd

    Big Sky :: Go に go:embed が入った。
    manaten
    manaten 2021/03/30
  • Big Sky :: gocode やめます(そして Language Server へ)

    はじめに まず始めに言っておかなければなりません。 gocode 今まで当にありがとう この記事は、Go 言語歴10年になる僕がこれまで愛用してきた Go 言語のコード補完ソフトウェア gocode の歴史と功績、そして今、gocode 自らがその役割を終えようとしている姿をぜひ皆さんに知って頂きたいという思いから Go Advent Calendar 2018 の記事として起こしました。この記事では gocode が歩んできた歴史と苦悩を少しでも皆さんに分かる様に解説させて頂きつつ、そして次にやってくる Go 言語のコード補完の未来についてご紹介したいと思います。Vim について多めに書かれていますが、Visual Studio Code での Go 開発にも影響する話です。 gocode とは gocode は nsf 氏が開発した Go 言語のコード補完サーバです。 GitHub

    Big Sky :: gocode やめます(そして Language Server へ)
    manaten
    manaten 2018/12/17
  • Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」

    認証を持たないウェブアプリケーションをいざ認証に対応させようと思うと案外面倒でモチベーションを無くしてしまうなんて事もよく起きうる話です。特に社内向けのアプリケーションを作っていたら番で使う事になってしまって、なんて話は良くある話です。開発でDB を見るのはちょっと...。でも既存のコードをゴリゴリと触りたくない。そんな場合にログイン認証部分だけマイクロサービス化できると気持ちも幾分和らぎます。今日はそんなちょっと便利なサーバ「loginsrv」を紹介したいと思います。 GitHub - tarent/loginsrv: JWT login microservice with plugable backends such as OAuth2, Github, htpasswd, osiam loginsrv is a standalone minimalistic login se

    Big Sky :: ログイン認証をマイクロサービス化する「loginsrv」
    manaten
    manaten 2017/06/02
  • Big Sky :: レーベンシュタイン距離を使ったあいまい grep コマンド「lsdgrep」作ってみた

    元ネタはずいぶんと昔の記事なのだけど。 編集距離 (Levenshtein Distance) - naoyaのはてなダイアリー ■ 編集距離 (Levenshtein Distance) 昨日 最長共通部分列問題 (LCS) について触れました。ついでなので編集距離のアルゴリズムについても整理してみます。 編集距離 (レーベン... http://d.hatena.ne.jp/naoya/20090329/1238307757 思い付きはまったく関係ない所から。 mp3 が数千ファイル入ってるフォルダで何かの手違いで同じ曲が入ってしまう事が結構あって重複取り去る作業してた。ID3が違ってるとMD5も違うのでレーベンシュタインの文字列距離を使ってファイル名が似てるの調べたら422ファイル消せる事が分かった。 — Vim芸人 (@mattn_jp) February 25, 2017 これを

    Big Sky :: レーベンシュタイン距離を使ったあいまい grep コマンド「lsdgrep」作ってみた
    manaten
    manaten 2017/02/28
  • Big Sky :: golang でメモ専用コマンド「memo」作った。

    « Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか | Main | Ruby の Array#<< は Array#push よりも速いか » 僕は日々 memolist.vim という Vim plugin を使い、仕事で思いついた疑問点や会話の一部をメモ取りする様にしています。相手と会話している最中に「あ、ここ大事だ」と思ったら vim を起動して :MemoNew してメモを編集していました。もちろん Vim ですから起動は抜群に速くてとてもご機嫌良く動くのですが、どうしてもこれをシェルから扱いたいという要求に負けてささっと作ってみました。 GitHub - mattn/memo: Memo Life For You README.md memo Memo Life For You Usage NAME:

    Big Sky :: golang でメモ専用コマンド「memo」作った。
    manaten
    manaten 2017/02/09
  • Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。

    昨日僕の Twitter タイムラインで q というツールが話題に上がっていました。 GitHub - harelba/q: q - Run SQL directly on CSV or TSV files Text as Data q is a command line tool that allows direct execution of SQL-like q... https://github.com/harelba/q 標準入力を SQL で抽出できるという物です。ただ個人的には「こういうの python じゃなくて Go でビルドされてると助かるよなー」と思ったので q と同じ様な動作になるツールを作ってみました。 GitHub - mattn/qq Select stdin with query https://github.com/mattn/qq 例えば msys2 のシ

    Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。
    manaten
    manaten 2016/09/09
  • Big Sky :: Web Component を簡単に作れる JavaScript ライブラリ「X-Tag」

    slack で x-tag を教えて貰ったのでちょっと遊んでみた。 X-Tag ★ Web Components Docs Table of Contents Getting Started Registration - Where it All Begins The most important method ... http://x-tag.github.io/ X-Tag は Web Component を簡単きれいに作れるライブラリで、Microsoft からのサポートを受けている事をウリにしているらしいです。動作に必要なのはカスタムタグがサポートされているブラウザというだけで、polyfills も使う事が出来ます。 簡単なチュートリアルが Docs に書かれているのでパッと見ただけでだいたい API が予想できます。自前のメソッドや属性、イベントを定義する事が出来るのでコン

    Big Sky :: Web Component を簡単に作れる JavaScript ライブラリ「X-Tag」
    manaten
    manaten 2016/06/08
  • Big Sky :: コマンドラインから JSON が簡単に作れるツール jo

    « golang で画像アップロードが簡単に出来る go-imageupload を使ってみた。 | Main | SQLite3でカジュアルにズンドコキヨシ » コマンドラインから JSON を扱うツールとしては jq が一般的ですが、例えば ls を実行した結果を JSON の Array にしたいであったり、コマンドライン引数から簡単に Object を作りたいといった場合には一旦考え込まないといけないくらい使い方が難しかったりします。そんな中でひょいと現れたのが jo です。 GitHub - jpmens/jo: JSON output from a shell JSON output from a shell https://github.com/jpmens/jo 作者である jpmens さんがなぜ jo を作るに至ったかをブログに書いています。 Jan-Piet Mens

    Big Sky :: コマンドラインから JSON が簡単に作れるツール jo
    manaten
    manaten 2016/03/09
  • Big Sky :: RubyからGoの関数をつかわなくても再帰をやめる → はやい

    RubyからGoの関数をつかう → はやい - Qiita 約20倍はやい!!!!!!すごい!!!!!!!!!!!!!! Go単体での実行に毛が生えた程度になりました!!!!!!!!!!!!!!!!!! もう「Rubyより、ずっとはやい」なんて言わせないぞ!!!!!!!! http://qiita.com/grj_achm/items/679b3f3af2cf377f0f02 def fib(n) return n if n <= 1 fib(n - 1) + fib(n - 2) end puts fib(40) 巷で良く見る fib のコードですね。 $ time ruby fib1.rb 102334155 real    12.692 system  0.031 user    12.651 これを再帰を使わない様に修正すると以下の様になります。 def fib(n) f0, f1

    Big Sky :: RubyからGoの関数をつかわなくても再帰をやめる → はやい
    manaten
    manaten 2015/11/06
  • Big Sky :: 江添さんに簡単に質問出来るコマンドを golang で書いた。

    C++er ならみんな見てるいう噂の江添さんの ask.fm。見ているだけも面白いですが、質問もしたくなりますよね。 Ryou Ezoe | ask.fm/EzoeRyou http://ask.fm/EzoeRyou 質問したいだけなのにいちいちブラウザ起動するのもダルいので、コマンドラインから質問を投げられるコマンド「ezoe」を作りました。 mattn/ezoe · GitHub https://github.com/mattn/ezoe インストールは簡単で golang が入ってる状態なら $ go get github.com/mattn/ezoe これだけで ok。使い方も簡単で $ ezoe とすると質問の一覧が色付きで表示される。 しかも「質問ではない」と「自由」がハイライトされるので江添フリークも安心。そして引数を付けて起動すると ask.fm に質問を投げられます。

    Big Sky :: 江添さんに簡単に質問出来るコマンドを golang で書いた。
  • Big Sky :: Vim script で streem を実装した。

    « C++ の WAF crow が mustache テンプレートエンジンをサポートしていた。 | Main | Re: VimでURLをドメインだけに置換するコマンドを正規表現でうったら、当に正規表現って意味不明なフォルムと思った。 » この記事はVim Advent Calendar 2014 - Qiita 24日目の記事です。 Matz さんが streem という、ストリーム指向言語の開発を始めるらしいです。 https://github.com/matz/streem まだ文法の設計段階ではあるけど、それなのにかなりの量の pull-req がバンバンと来てて凄いなーと思いつつも「この pull-req 量だと僕には出番無いなー」と思ったのと「Matz さんがもしかしたら Go で streem を実装するかもしれない」という記事を読み「streem の他言語実装が一つ消え

    Big Sky :: Vim script で streem を実装した。
    manaten
    manaten 2014/12/25
  • Big Sky :: golang で最近お気に入りの WAF「Goji」

    Web アプリケーションを書くときは今までずっと 小さい物は web.go 大きい物は net/http というスタンスを何故か貫いて来たんだけど、最近ようやく web.go をやめて goji を使う様になった。 Goji A web microframework for Golang https://goji.io/ 理由としては Sinatra ライクでありながら高度な正規表現マッチも使えるルータ それでいて net/http コンパチ 簡単に実装出来るミドルウェアスタック グレースフルシャットダウン そして何と言っても速い ミドルウェアも一般的な Web アプリケーションを作るには十分な物が既に揃ってます。 それでもやっぱり大きめな物は net/http で書くんだけど、小規模から中規模な物を一気にゴリゴリっと書く場合には goji は便利です。もちろん Windows でも動きま

    Big Sky :: golang で最近お気に入りの WAF「Goji」
  • Big Sky :: 高速なビルドシステム「ninja」

    いままで「SCons とか gyp とか、なんで C++ のシステムに python 入れなあかんねん」とか「せっかく python 入れたのに windows でビルドするには cygwin 版が必要とかいい加減にしろ」とか色んな事があったのですが、ninja を使う事で悩みが解消するかもしれません。 Ninja, a small build system with a focus on speed Ninja is a small build system with a focus on speed. It differs from other build systems in two majo... http://martine.github.io/ninja/ 如何にも外国人ウケしそうなプロジェクト名です。 ninja は chromium ブラウザの開発者が現行のビルドシステムに

    Big Sky :: 高速なビルドシステム「ninja」
    manaten
    manaten 2014/01/21
    アイエエエ?ニンジャ!?ニンジャナンデ!?
  • Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。

    最近どのブログでも node.js ばかりでもう飽き飽きしてる皆さんこんばんわ。 node.js 面白いですよね!ェ node.js ってアプリケーションを作る側(つまりライブラリを使う側)からすると、Web周りの便利なライブラリが既に色々あって、そのライブラリが一体どうやって動いてるのか気にすることってあんまり無いかと思います。 pure javascriptな物ならばコードを読むのは簡単です。ただしやれる事に限りがあります。node.js はGoogle製のJavaScript Engineであるv8をベースに作られているのですが、このv8はアプリケーションに組み込むのに適した構成になっていて、関数テンプレートやインスタンス、プロトタイプという各機能がC++のクラステンプレートで上手く表現出来ているライブラリです。Spidermonkeyも確かに扱うのは簡単なのですが、僕からすると若干

    Big Sky :: 今更ながらGoogle v8でembedする方法を紹介してみる。
  • Big Sky :: C++で軽量Webサーバ書いた。

    書いたといっても結構前からあったのですが、いらん所を削ぎ落として軽量Webサーバとして仕立て上げました。 軽量とは言えど、CGIを使って結構色々動きます。 例えば、ソースアーカイブを解凍したらCGIがあって、apacheから見える場所にコピーして...とか面倒くさかったりしますよね。 おれは今すぐWebサーバを起動したいんだ!そして今いるディレクトリのファイルをWebサーバからサーブしたいんだー! って事ないですか?blogソフトウェアをダウンロードして今すぐ試したいけど、apacheインストールされてなかった...とか悲しすぎます。 今回紹介する"tinytinyhttpd"(tthttpd)はそんな、小さい様で大きな問題を解決出来るかもしれないソフトウェアです。 mattn's tinytinyhttpd at master - GitHub tiny tiny httpd http:

    Big Sky :: C++で軽量Webサーバ書いた。
  • 1