タグ

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

  • 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 が入った。
    issm
    issm 2020/10/30
  • Big Sky :: golang の sort インタフェース難しい問題が解決した

    golang では配列をソートしたい場合に癖があり、Int や Float64、String といった固定の型であれば sort パッケージが提供する関数でソートが可能でしたが、独自の型や Int64 等といった sort パッケージが用意していない型の配列をソートするには Sorter というインタフェースを備えた型で扱うしかありませんでした。 package main import ( "fmt" "sort" ) type Food struct { Name  string Price int } type Foods []Food func (f Foods) Len() int { return len(f) } func (f Foods) Less(i, j int) bool { return f[i].Price < f[j].Price } func (f Foods

    Big Sky :: golang の sort インタフェース難しい問題が解決した
    issm
    issm 2016/10/04
  • Big Sky :: 「みんなのGo言語」の執筆に参加させて頂きました。

    僕がプログラミング言語「Go言語」を知り、使い始めてからそろそろ7年目に入ろうとしています。 当初 Google が作っているという鳴り物があった為、色々なメディアに取り上げられ色々な方がブログ等でGo言語を紹介し、色々な意見でGo言語が語られました。大抵の場合、プログラミング言語とは始めはチヤホヤと取り出され、落ち着いてからが当の人気を表すという傾向にあります。皆さんもそう思っていたかもしれませんし、僕もそう思っていたと思います。 僕がGo言語を触りだした頃、まだ色々と足りない部分がありました。Linux で動いている多くの機能が Windows では未実装になっていました。しかしそんなGo言語であっても高速なビルドと実行速度で僕の好奇心を揺さぶるには十分な物でした。 その後、僕はGo言語にパッチを送る様になりました。その内幾らかはマージされました。現時点ではコアのリポジトリで79個の

    Big Sky :: 「みんなのGo言語」の執筆に参加させて頂きました。
    issm
    issm 2016/08/08
  • Big Sky :: golang の遅いコードをたった1行で高速化するテクニック

    記事中に間違いがありました。数倍も速くはなりませんでした。確か 1.0X ~ 1.1 倍程度の高速化は得られましたがびっくりするほどの物ではありませんでした。すみません。 そろそろ Go1.7 がリリースされるそうですが、皆さん如何お過ごしですか。Go 界隈の波平こと mattn ですこんにちわ。バカモー(略 Go1.7 ではコンパイラの最適化が行われ、ビルド速度がかなり短縮される様になりました。毎日ビルドしてる僕としては非常に嬉しい機能改善ですね。 さてとてもキャッチ―なタイトルで釣ってしまった訳ですが、気にしたら負けなのでどんどん話を進めます。 var t [256]byte func f(b *[16]byte) { for i, v := range b { b[i] = t[v] } } 例えばこのコードを見て下さい。このコードはココから拝借しました。issue の内容はスコー

    Big Sky :: golang の遅いコードをたった1行で高速化するテクニック
    issm
    issm 2016/08/04
  • Big Sky :: html をコマンドラインからパースするなら pup が便利

    2014年でも html を解析してゴニョゴニョするなんて要件はまだまだある訳で、そんな時に便利なのが pup というコマンドです。 EricChiang/pup - GitHub README.md pup pup is a command line tool for processing HTML. It reads from stdin, prints to stdout,... https://github.com/EricChiang/pup 通常、こういったツールは perlrubypython 等で提供されランタイムがインストールされていない環境で動かすのはちょっとした手間が発生していました。しかし pup ならば golang で出来ているのでバイナリ1つあれば動かせます。 使い方は、例えばこのサイトのパーマリンクのHTMLを得たいならば curl -s http:

    Big Sky :: html をコマンドラインからパースするなら pup が便利
  • Big Sky :: Windows のコマンドプロンプトを10倍便利にするコマンド「peco」

    Windows ユーザのごく一部には、コマンドプロンプトが無いと生きられない民族がいます。そしてその民族の一部には cygwin や msys bash 等といった、サードパーティなシェル(powershell?何それ聞こえなーい)を使いたがらない種族もいます。 私もその種族なのですが、今日はそういった世界中のWindowsエンジニアの中でも数パーセントしかいないであろう人達にとって便利なTipsを紹介したいと思います。(オマケでbash連携もあるよ) lestrrat/peco - GitHub https://github.com/lestrrat/peco 以前、私も同じようなツールとして gof というのを作りましたが、peco はこれをもっと簡素に、もっとカスタマイザブルにした物になります。 一見、UNIX でしか動作しなさそうに見えますが、gof ど同様に Windows でも

    Big Sky :: Windows のコマンドプロンプトを10倍便利にするコマンド「peco」
    issm
    issm 2014/06/26
  • Big Sky :: 分散環境情報サーバ etcd を使った設定共有の活用

    etcd って何と聞かれた場合、一言で言ってしまえば zookeeper なんだけど Documentation · CoreOS etcd etcd is a highly-available key value store for shared configuration and service discovery. http://coreos.com/docs/etcd/ coreos/etcd - GitHub https://github.com/coreos/etcd etcd の良い所は curl で使える様な簡単な API SSL Cert 認証もオプションとして使える ベンチマークで 1000s of writes/s per instance を出せるくらい速い Raft を使って正確に、確実に分散する という感じらしい。作ってるのは CoreOS。 etcd はキーを

    Big Sky :: 分散環境情報サーバ etcd を使った設定共有の活用
    issm
    issm 2014/03/24
  • Big Sky :: ファイル名の一括置換なら massren がめちゃめちゃ便利

    大量にあるファイルのファイル名を一括で変更する場合、どうしても GUI での操作であったりマッチパターンを書くのが面倒だったりしましたが、massren を使えば誰でも簡単にファイル名の一括置換が出来る様になります。 laurent22/massren - GitHub massren - Easily rename multiple files using your text editor https://github.com/laurent22/massren お気に入りのテキストエディタを使って、好きな様にファイル名を変更出来ます。サポートしているOSは Windows, Linux, OSX です。中身は golang で書かれています。 それぞれバイナリが用意されているので自分でビルドする必要はありません。LinuxOSX の人はリンク先にある手順を、Windows の人は

    Big Sky :: ファイル名の一括置換なら massren がめちゃめちゃ便利
    issm
    issm 2014/02/19
    これはおもしろそう.
  • Big Sky :: cpanfile とは何か、なぜそれを使いたいのか

    超絶意訳 What is cpanfile and why do I want to use it - Tatsuhiko Miyagawa's blog What is cpanfile and why do I want to use it So there seems to be a couple of blog posts and even co... http://weblog.bulknews.net/post/44963580392/what-is-cpanfile-and-why-do-i-want-to-use-it cpanfile について幾つかブログ記事やカンファレンスがある様です。素晴らしい事です。ですがそれは単に、それが何であるか、またそれらがなぜ必要なのか(もしくは必要じゃないのか)を、筆者の説明と共に書かれているだけなのです。 tl;dr 日の方へ - こ

    Big Sky :: cpanfile とは何か、なぜそれを使いたいのか
  • Big Sky :: plackup の --path 引数

    plack を使ってて「サーバのサブフォルダを間借りして動かしたい」って事がたまにあるんだけど、そんな場合 nginx の設定でリバースプロキシに渡すって事をやります。 location /foo { try_files $uri $uri.html $uri/index.html @proxy-foo; } location @proxy-foo { proxy_pass http://localhost:5000; proxy_set_header Host $http_host; } この場合、通常の Plack アプリケーションだと / がアプリケーションルートになっているので404になってしまう。よって app.psgi とは別に !perl use strict; use warnings; use Plack::Builder; use Plack::Util; builde

    Big Sky :: plackup の --path 引数
    issm
    issm 2012/10/30
  • 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 作った。
  • Big Sky :: gitリポジトリの更新をgrowlしてくれるgit dudeがWindowsで使える様になった。

    以前、Windowsでも動く様にしてpull requestを送っていて、一度は取り下げられてました。 その後、誰かが加算してくれて週末に違う形でcommitが入った。 git config --global dude.notify-command 'gntp-send "$TITLE" "$DESCRIPTION" "$ICON_PATH"' こうしとくと、自分独自のコマンドが呼び出せるという物。これでGrowl for Windwosのgrowlnotifyコマンドや、Growl for Linux(Windowsでもビルド可)に通知が送れるgntp-sendコマンドでも使える様になりました。 ただWindowsの場合は、日語コミットメッセージがutf-8で渡って来るため、DBCSを期待しているWindowsコマンドでは正しく動きません。 先程、gntp-sendに-iオプションとい

    Big Sky :: gitリポジトリの更新をgrowlしてくれるgit dudeがWindowsで使える様になった。
  • Big Sky :: Vimで動くゲーム作った

    最近Vim界隈で色々出来事がありまして、その色々を起こした数名の内の1人です。 vim-jp » Vimのユーザと開発者を結ぶコミュニティサイト vim-jpはVimと日・日語に関わるあらゆるリソースを集中させることを目的としたコミュニティサイトです。vi は、おそらく全てのUNIX系 OS 上で使えるテキストエディタです。世界には、さまざ... http://vim-jp.org/ 開発者やユーザによっては良い出来事だと信じています。 そのサイトでご紹介した記事 vim-jp » Vimで動くゲーム 最近、Vim scriptで書かれたゲームが登場し始めています。今日はその中でも有名な物をご紹介します。TeTrIs.vim : A tetris game in pure vim ご存知テトリス。「ピ... http://vim-jp.org/blog/2011/09/20/games

    Big Sky :: Vimで動くゲーム作った
    issm
    issm 2011/09/21
  • Big Sky :: Vimテクニックバイブル ~作業効率をカイゼンする150の技

    名無しのVim使いでお馴染みの小見さんにお誘いを受け、執筆のお手伝いをさせて頂きました。 これまで僕が持っていたVimは、「Viとは」から始まりページ数の半分くらいで操作方法、最後の方にようやく「GVimとは」が現れる、あまり奥にまで入り込んでいない書籍でした。 もちろんこれらのも僕を喜ばせる事は出来たのですが、なにぶんページの殆どが知っている情報だったので僕にとって「ワクワクする」では無かったんです。 ずっと最新情報取り入れたVim出ないかなと思ってました。 そんな中、小見さんから話を持ちかけて頂き、まさか自分がその著書を作るなんて思っても見なかったけど即答でOKを出させて頂きました。 僕が最初に見たViは大学の某研究室にあったSONYのNEWSというUNIX上で友達が動かしていた物。その時は変な操作方法だなぁとしか思ってませんでした。 それから就職した会社のワークステーションで

    Big Sky :: Vimテクニックバイブル ~作業効率をカイゼンする150の技
    issm
    issm 2011/09/21
  • Big Sky :: Re: サブドメインに任意の文字列が入るウェブアプリのローカル開発

    サブドメインに任意の文字列が入るウェブアプリのローカル開発 - 冬通りに消え行く制服ガールは?夢物語にリアルを求めない。 - subtech サブドメインに任意の文字列が入るようなサービスをローカルで開発しようとすると、いろんなホストを /etc/hosts に書かないといけなくてすごく不便なので、なんとかしようと思っていたところ、id:hakobe932 先生に「それアレでできますよ」との御言葉を頂き、簡単なスクリプトを書きました。 http://subtech.g.hatena.ne.jp/cho45/20110804/1312389877 僕ならこうやるかも libcho45.c #define _GNU_SOURCE #include <dlfcn.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #incl

    Big Sky :: Re: サブドメインに任意の文字列が入るウェブアプリのローカル開発
    issm
    issm 2011/08/04
  • Big Sky :: VimmerなPerl開発環境

    えーっと、IDE使ってません。ごめんなさい。 PerlをIDEで書いてる人、どれくらいいるんだろう。何使ってるんだろ。 私はLinuxでもWindowsでもVimを使ってます。Perlってサーバで使われる事が多いし、サーバだとsshで入る事が多いだろうし、まぁXの転送やVNCやそれっぽいのでグラフィカルに操作しても良いけど、正直PerlのドキュメントもテキストベースだしPerlで入力補完出来るグラフィカルエディタもまず無いと思ってる。 で、私がVim上で使ってるPerlの開発を「200倍便利にするスクリプト」を紹介。 perldoc.vim perldocはPerlのオンラインマニュアルなんだけど、これを一々ターミナルに戻ったりして引いてると時間のロス。screenで分割して開いてもいいんだけどscreenの画面間移動よりもVim内でのウィンドウ間移動の方が操作感が統一出来てて良い。 そこ

    Big Sky :: VimmerなPerl開発環境
  • Big Sky :: XMLHttpRequestでファイルをアップロード

    « pythonで動くtwitter/wassrクライアント「tw2」をWindowsにポーティングした。 | Main | Cache::Memcached::Fastをwin32にポーティングしてみた。 » WassrのAPIには、imageパラメータによる画像アップロードがあるのですが、これに困ってる人がいたので、人助け。 Wassr [お気軽メッセージングハブ・ワッサー] 質問です。Firefox の Live HTTP Headers で確認すると Web のフォームから画像をアップロードすると素のバイナリデータが送信されています。API を利用した POST でも素のバイナリデータで送信しなければならないのでしょうか? http://wassr.jp/channel/wassr_api/messages/hNHcDCCtja 試しにvimperatorから出来ないか挑戦してたら

    Big Sky :: XMLHttpRequestでファイルをアップロード
  • 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