タグ

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

  • 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 が入った。
  • Big Sky :: findとxargsは便利だけど意外と実行したい処理はsortした結果だったりする場合が多い

    私の場合、xargsの引数がオーバーする程のファイルを扱う時は、少し怖いので一度別のディレクトリに移動してから削除するなりをやってます。 また、数十個の場合ならばfindだけでやってしまいますね。その方が思考が止まらないし...。 ただ、findとxargsの組み合わせで結構多いのが さらにその中から間引きたい 実行は並び替えた結果で行いたい といった場合が少なからずあるのです。 例えばYYYYMMDD等といった日付形式のファイル名で散乱しているファイルを日付通りに処理したい。 と言った場合、やはりsortやgrepのお世話になるのが楽ですよね。 sortやgrepを使う場合、findで-print0した結果ではフィルタフィルタ実行する事が出来ません。 こんな場合には、findでは-print0せずに find . -name "*.txt" | grep '/[0-9]¥{8¥}¥.tx

    Big Sky :: findとxargsは便利だけど意外と実行したい処理はsortした結果だったりする場合が多い
    iww
    iww 2020/03/14
    sortしてからprint0
  • Big Sky :: 最速と言われる JSON パーサ「rapidjson」が本当に爆速なのか試してみた。

    なんびとたりとも俺の前は走らせねぇ ガチバトルです。 rapidjson - A fast JSON parser/generator for C++ with both SAX/DOM style API - Google Project Hosting Rapidjson is an attempt to create the fastest JSON parser and generator. Small but complete. Support... https://code.google.com/p/rapidjson/ fastest をうたうとは度胸があるなーと思いながら、半信半疑で試してみました。 rapidjson も picojson 同様に、ヘッダファイルだけあればコンパイル出来る C++ 向け JSON パーサ(およびシリアライザ)です。 まずは rapidjso

    Big Sky :: 最速と言われる JSON パーサ「rapidjson」が本当に爆速なのか試してみた。
    iww
    iww 2018/06/28
    『パースエラー詳細に取る方法が分かりません』 意外な弱点だな
  • Big Sky :: sudo コマンド書いた。

    Windows で hosts ファイル(C:\Windows\System32\drivers\etc\hosts) を編集するには管理者権限が必要です。またコマンドラインから IP アドレスを変更するのにも管理者権限が必要です。管理者権限で hosts ファイルを編集するにはメモ帳を管理者権限で起動する必要があります。管理者権限でメモ帳を起動する為にはメニューから「メモ帳」を出し、右クリックして「管理者として実行」を選ぶ必要があります。そして実行したメモ帳のメニューから「開く」でファイルを選択します。管理者として開かないのであれば hosts ファイルを右クリックして「送る」等に登録したエディタを単に選べば済む話なのに、随分と手間ですね。 UNIX だと $ sudo vi /etc/hosts とだけタイプすれば良いのにこの手数の多さはちょっとゲンナリします。特にマウスに手を伸ばした

    Big Sky :: sudo コマンド書いた。
    iww
    iww 2017/06/21
    これだとUACのダイアログでないのかな? それなら便利そうだけど
  • Big Sky :: golang では変数の宣言位置が大事

    今日こんなツイートをした。 @mattn_jp よろしければベターな理由をm(_ _)m 名前空間を短くする作法なのはわかるのですがメモリやGCやコンパイラなど、どの辺に優しい感じですか? — Ryuji IWATA (@qt_luigi) April 5, 2017 qt_luigi さんからどうしてかを聞かれたので説明したいと思います。 golang では宣言した位置で初めて自動変数としてメモリが確保され、ゼロクリアされます。 for i := 0; i < b.N; i++ { var foo Foo bar, err := doSomething() if err != nil { continue } foo.v = bar fmt.Fprintln(ioutil.Discard, foo) } なので例えばこの様なコードで doSomething() が err を返した場合、

    Big Sky :: golang では変数の宣言位置が大事
    iww
    iww 2017/04/06
    こういうのはそのうちコンパイラが賢くなってほんとに使うまで何もしないようになるんじゃないのかとか思う。 なんか修正するたびに宣言位置を前に移動させてくのもめんどうだし
  • Big Sky :: Ruby の Array#<< は Array#push よりも速いか

    巷の噂で Ruby の Array#<< が Array#push よりも速いと聞いたので調べてみた。まずはベンチマークを取ってみた。 require 'benchmark' Benchmark.bm 10 do |r| r.report "push" do 8000000.times do; [].push(1); end end r.report "<<" do 8000000.times do; [] <<1; end end end 結果は以下の通り。 user     system      total        real push         1.570000   0.000000   1.570000 (  1.579687) <<           1.280000   0.000000   1.280000 (  1.288951) 確かに Array#<< の

    Big Sky :: Ruby の Array#<< は Array#push よりも速いか
    iww
    iww 2017/02/12
    時代によって何が早いかは変わるので、書き方は速さよりも正しさで選びたい。 正しみのある書き方で書いとけばあとでなんとでもなる
  • Big Sky :: C言語から使えるJSONパーサ、jansson がとても直感的で良い

    おなじみC/C++から使えるJSONライブラリを紹介するコーナー。まずは過去のまとめ。 最速と言われる JSON パーサ「rapidjson」が当に爆速なのか試してみた。 C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。 僕がboost::asioとboost::property_treeを使いHTTPプロキシ環境下で非同期にGoogle Search APIから検索するまでにやった、たった一つの事。 C言語から使えるJSONパーサ、JSMNを試してみた。 何も見ずにC++でjsonパーサが書けるか試してみた。 ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い! 最近は結構 matsuu さんのブクマから見つけて記事を書いてたけど今日はそうじゃない所からご紹介。 Jansson — C library for working w

    Big Sky :: C言語から使えるJSONパーサ、jansson がとても直感的で良い
  • Big Sky :: 何もソースコードを変更せずに2038年問題を解決する。

    まず2038年問題というのをご存じでしょうか 2038年問題 - Wikipedia 2038年問題(にせんさんじゅうはちねんもんだい)は、2038年1月19日3時14分7秒(UTC、以下同様)を過ぎると、コンピュータが誤動作する可能性があるとされる年問題。 http://ja.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C C言語で epoch を扱う time_t が32bit OS上でオーバーフローし日時間2038/01/19 12:14:07の次に1901/12/14 05:45:52が来てしまうという問題です。まぁそもそも2038年にもなって32bit OSを使っている側が悪いと言えばアレですが。 実際にどんな事が起きるかは、32bit OS上で以下を実行すれば分かる。 #include <stdio.h> #include

    Big Sky :: 何もソースコードを変更せずに2038年問題を解決する。
    iww
    iww 2015/05/29
    みんなで名目上は2038年問題待機で集まって、実態は年をまたいでの酒盛りなら良い
  • Big Sky :: C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。

    前回は JSMN というのを試したけど、今度も matsuu さんのブクマから。。。 parson Lightweight json parser and reader written in C. http://kgabis.github.com/parson/ 特徴は 軽い (2ファイルだけ) 単純なAPI ドット記法による json 値のアドレッシング (C言語の構造体やOO言語のオブジェクトに似た感じ。例: "objectA.objectB.value") C89 コンパティブル テストスーツ 前回の JSMN とは違い、メモリを動的に確保するタイプ。DOM の様にルートノードから探索を始め、最終的にルートノードを指定してメモリを開放する。 今回もtwitterのタイムラインをパースしよう。 #include <assert.h> #include <string.h> #inclu

    Big Sky :: C言語から使えるJSONパーサ、parson が思った以上に良い仕事をしている。
  • Big Sky :: バッチ ジョブを終了しますか (Y/N)?

    Windows を UNIX っぽく使おうとすると、必ずお目にかかるであろうこのメッセージ。 UNIX に慣れている人は、コマンドプロンプトを使いたがる。しかし全ての場合においてコンソールアプリケーションは有能では無いし、異常に長い引数は省略したい。Java VM で動く言語のクラスパス等はスクリプトに書きたいし、オフィシャルから Windows ユーザ向けに用意される物はだいたいバッチファイルだ。しかしながら Cygwin は標準提供物ではないし、嫌いだ。いや、大嫌いだ。 そこで私達は一般的に、バッチファイルという一見便利そげで実は非情なまでに我々に独特の仕様を強要するDSLを頻繁に使う事になる。 例えば Java VM 上で動く clojure を Windows 上で repl として使う場合、僕は以下の様なバッチファイルを「clj.bat」というファイル名にして使っている。 @ec

    Big Sky :: バッチ ジョブを終了しますか (Y/N)?
    iww
    iww 2012/09/21
    Cygwinが嫌いなのかー。 好き嫌いは良くないな。
  • Big Sky :: select(2)の第一引数にディスクリプタの最大値を渡すのは間違い?

    追記 POSIX では明確にソケットの最大値とはうたってはいないものの、Linux の実装を見ても最大値と扱う方が良い様です。また Winsock では select(2) の第一引数は無視されるようです。 C言語でソケットを使うプログラミングを行う際、ソケットディスクリプタがシグナル状態かを調べる方法としてselect(2)があります。 使い方は int r; fd_set rfds; FD_ZERO(&rfds); FD_SET(sock, &rfds); r = select(1, &rfds, NULL, NULL, NULL); といった感じ。ここでselect(2)の第一引数に渡している値は、ディスクリプタ集合rfdsの内、いくつ検証するかを指す値。つまりrfdsに対してFD_ZERO/FD_CLRしてからFD_SETした回数となります。 ちなみに戻り値は、ディスクリプタ集合の

    Big Sky :: select(2)の第一引数にディスクリプタの最大値を渡すのは間違い?
    iww
    iww 2010/10/31
    うぉおやべぇ バグ作りこんだかもしれん。と思ったが大丈夫だった
  • Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!

    kazuhoさんがやってくれました。 ずいぶん前からjsonをC++でパース(SAXじゃなくてDOM)するのに小さいライブラリないかなーと思ってました。個人的にはjson-cというのを使ってたのですが、幾らか気に入らない所があったりビルドが少し手間だったりしていました。STLしか使わなくてvectorとかmapで表現されるツリー構造な物が欲しいなぁって思ってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、githubにあるjsonxxとかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から格的に書き始めてついさっき出来上がりました。速いw 名前はpicojson とても小さく、実装コードだと300数十ステップ程です。しかもヘッダファイルだけなので管理が楽です。 試しにwassrのpubl

    Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!
  • 1