概要 辞書データとかちょっとした画像ファイルとか,リソースを定数としてバイナリに持たせておきたいときってありますよね.たとえば,Java なら jar の中にちょっとしたリソースファイルとか含められるじゃないですか.go-bindata はそういった問題を解決するためのツールです.自分用に使い方をまとめたメモなので,違うよ!ってところがあったらご指摘いただけると嬉しいです 出典 下記の README に丁寧に書いてあるので,こちらを読むのが間違いないです. go-bindata 仕組み go-bindata は(バイナリ)データをプログラムに埋め込むためのツールです. データをコードとして埋め込んで,それらにアクセスできるようなメソッドをつけた go のソースを生成してくれます. データは gzip 圧縮してくれます (しないことも可能です) 生成されたコードを加えてビルドすると,ビルドが
Go 1.4でstatic binaryを作成する¶ (この文章はわりとメモ書きです。間違っていればご連絡下さい) Go言語で作成されるバイナリファイルは、すべてがstatic linkされて一つの バイナリに入る、という特長があります。 でも、どうも 1.4から "net" パッケージを入れているとdynamic linkになる 問題が起きているようです。(1.4.1で確認) % file hoge hoge: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped % ldd hoge linux-vdso.so.1 => (0x00007fff05dfe000) libpthread.so.0 => /lib/x86_64-linu
結論#go 言語でウェブアプリケーション書くなら、go-bindata使うべし。 はじめに#go で書いたサーバは一つのバイナリに全部入るからデプロイが楽だという話がありますけども、それは全部のコードを go で書いた時だけです。 ウェブアプリケーションでは、ユーザインターフェース用のテンプレートファイルなど、どうしても go のコードではないリソースが発生します。 例えばテンプレートをパーズする標準 API を見ると、こんな風になっています。 html/template#ParseFiles func ParseFiles(filenames ...string) (*Template, error) { return parseFiles(nil, filenames...)}コピー この API 構造はソースコードを配置しているディレクトリ構造が単純だと特に問題ないのですが、少し複雑
ネイティブアプリの開発とかしてると、ついつい git にスプライトの png とか一緒にコミットしてしまって、気づいたらリポジトリサイズが 1GB 超えてたとかありますよね。 git annex とか、本格的なアセット管理システムとか使えば良いんだけど、普通のgitコマンド覚えるだけでいっぱいいっぱいな人にさらに他のツールまで覚えてもらうのは大変です。 そこで、登録しておいた拡張子のファイルはハッシュ値だけをリポジトリに格納し、ファイルの内容は別のディレクトリやAmazon S3に格納する git-largefile/gits3 を作りました。 git-largefile/gits3 は git の filter として動きます。 filter は通常改行コードの変換をしたり $Id$ のようなキーワードを変換したり行末のスペースを消す、文字通りフィルターなのですが、ここでファイル本体から
RailsのMigrationで:binaryとするとMySQLではblob型になる。 create_table :files do |t| t.column :data, :binary end MySQLでのblob型 型 サイズ TINYBLOB 256byte BLOB 64KB MEDIUMBLOB 16MB LONGBLOB 4GB Migrationでは:binaryしか選択肢がなくMySQLだとblob型として解釈される。 画像ファイルならば普通に大丈夫だけど他のファイルも扱うと苦しい。 SQLで直に属性を定義することでこの問題は解消する class AlterModifyLongblob < ActiveRecord::Migration def self.up execute("alter table table_name modify column_name long
バイナリファイルを表示させることなら、 $ hexdump -C picture.png 00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR| 00000010 00 00 00 0a 00 00 00 0f 08 02 00 00 00 52 9d c9 |.............R.?|とか、 $ xxd picture.png 0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR 0000010: 0000 000a 0000 000f 0802 0000 0052 9dc9 .............R..みたいに、hexdumpコマンドとかxxdコマンド(この記事を書いてて知った)を使えばできる。 でも、
なぜかJPEGファイルをバイナリで扱うことになりました。ActionScriptでいろいろ触っていたのですが、データを直接目で見たくなりました。Vimでバイナリを編集できると聞いていたので、迷わずVimを使うことに。 バイナリで開く。 % vim -b image.jpg テキストエディタでバイナリファイルを開いたときの表示になります。これを16進数に変換します。 :%!xxd 見やすい!右側にテキストも表示されるんですね。 0000000: ffd8 ffe1 fffe 4578 6966 0000 4d4d 002a ......Exif..MM.* 0000010: 0000 0008 000e 010f 0002 0000 0012 0000 ................ 0000020: 00b8 0110 0002 0000 000b 0000 00cc 0112 ....
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く