タグ

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

  • Big Sky :: Golang で物理ファイルの操作に path/filepath でなく path を使うと爆発します。

    たぶん逆引きが無いから探せないのかなと思ったので path/filepath にどういう機能があるのか書いておく。 filepath.Join 使って下さい。 / “Go言語でクロスプラットフォーム的にパスとファイル名を結合するには? | 非IT企業に勤める中年サラリーマンのIT日記” https://t.co/ehXCf0u8X9 — 自称mattn (@mattn_jp) October 24, 2017 パスからファイル名を得る filepath.Base を使う。 package main import ( "path/filepath" ) func main() { println(filepath.Base("C:/foo/bar")) } この場合 bar が表示される。 パスからディレクトリ名を得る filepath.Dir を使う。 package main impor

    Big Sky :: Golang で物理ファイルの操作に path/filepath でなく path を使うと爆発します。
    suginoy
    suginoy 2017/10/24
    path/filepath爆発、バスガス爆発っぽい。
  • Big Sky :: Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか

    以前からずっと疑問に思っていた事があった。 ruby の後置 if/unless で条件が偽になった場合でも代入構文が実行されるのはどうしてだろう 例えば以下のコードを irb や pry で実行してみて欲しい。 a = 1 if false 続けて a をタイプする。すると nil が表示される。 僕のこれまでの理解だと後置if/unlessは、ステートメントに作用するのでそのステートメント自体が無効になる、つまり代入自体されなかった事になるという理解だった。ruby のパーサのソースコードを見ても後置ifはステートメントに作用している様だった。 | stmt modifier_if expr_value { /*%%%*/ $$ = new_if($3, remove_begin($1), 0); fixpos($$, $3); /*% $$ = dispatch2(if_mod, $

    Big Sky :: Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか
    suginoy
    suginoy 2017/02/12
  • 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 よりも速いか
    suginoy
    suginoy 2017/02/12
    どっちが速いかよりもAPIの違いが勉強になった。
  • Big Sky :: Names

    Go 言語の開発者 Russ Cox 氏が2010年に「変数名の長さ」について書いた文章です。 research!rsc: Names David Andersen (February 4, 2010 2:37 PM) A few comments: Rob: You wrote, "I could see if j is just ... http://research.swtch.com/names 全てのプログラマは変数の名前付けに関する哲学を持っている。これは私の哲学である: 名前の長さはその情報の中身を超えるべきではない。 ローカル変数の場合、名前 i は index や idx といった情報を限りなく即決に伝える。 同様に i と j は、i1 や i2 (index1 や index2 はさらに良くない) よりもインデックスを名付ける為の良いペアである。なぜならばそれらはプロ

    Big Sky :: Names
    suginoy
    suginoy 2016/02/20
    “Golang の開発者 Russ Cox 氏が2010年に「変数名の長さ」について書いた文章です。 ”
  • Big Sky :: bundle exec がウザい

    ruby のアプリを動かす時にいちいち bundle exec って書くのがダルい。書きたくない。でもシステムに入ってたり違うバージョンの物が動いて変な動作をされても困る。 どうにかしてこのダルさを解消できないかと考えてみた。 まず rbenv を使ってるなら gem でインストールされるコマンドは必ずシェルのラッパとして生成され、そこから物が起動する様になっている。例えば rails であれば以下の様なシェルになっている。 #!/usr/bin/env bash set -e [ -n "$RBENV_DEBUG" ] && set -x program="${0##*/}" if [ "$program" = "ruby" ]; then for arg; do case "$arg" in -e* | -- ) break ;; */* ) if [ -f "$arg" ]; th

    Big Sky :: bundle exec がウザい
  • Big Sky :: 送り主の分からない小包

    今日、嫁から電話があり... 嫁「送り主の分からない小包が届いてる」 僕「どんなん?誰から?俺に?」 嫁「それが分からんねん。英語ばっかりや」 僕「なんて書いてる?」 嫁「フェーフェー、フェデークス...」 僕「それ、運送会社や」 嫁「英語ばっかりで分からんわ。開けていい?」 僕「いや、間違いかも知れんし」 嫁「宛名は合ってるねんで」 僕「なんやろ覚えが無い」 嫁「カードでなんか買い物したんちゃうん...」 僕「してないわー」 家で見ても、確かに送り主が分からない。おそるおそる開けて見ると どどーん。なんか真っ黒いの出てきたと思ったら、ブランケット出てきた。しかも「Google」って書いてある。 かっ... かっちょ... かっちょええやん... おーぷんそーす ぷろぐらむ おふぃす... Google is sending out blankets to open-source deve

    Big Sky :: 送り主の分からない小包
    suginoy
    suginoy 2014/11/19
  • Big Sky :: Golang で Jekyll のクローン作った。

    普段 vim-jp や色んな所で jekyll を使っているのだけど、どうも遅くて困っていました。 Windows だと ruby 体の起動も重いのに、たかだか数十ページの生成に十数秒、PCの負荷が高い時には30秒近く掛かったりしていました。 何とか出来ないかなーと思って、golang を使ってクローンを作ってみました。 mattn/jedie - GitHub jedie - static site generator, jekyll replacement, in golang https://github.com/mattn/jedie インストールは以下の様に行います。 $ go get github.com/mattn/jedie jekyll と同様にひな形の出力も出来ます。 $ mkdir mysite $ cd mysite $ jedie new . markdown

    Big Sky :: Golang で Jekyll のクローン作った。
    suginoy
    suginoy 2013/11/29
  • Big Sky :: モテる男のVim script短期集中講座

    ここで関数リファレンスのみ格納先の変数の先頭が大文字になっていますが、これはVim script特有の制限になります。 数値は一般的な言語と同じ様に四則演算できます。文字列については.を用いて連結します。 また文字列は添え字によるアクセスが可能で、pythonの様に echo "hello"[1:3] という記述が出来ます。その他文字列操作関数については:help evalに詳しく記述されています。 また型同士の比較についてはthincaさんの記事が役立ちます。 Vimスクリプト基礎文法最速マスター - 永遠に未完成 Vimスクリプト基礎文法最速マスター vim 流行ってるみたいなので遅ればせながら便乗。需要?何それおいしいの? Perl基礎文法最速マスター - サンプルコードによるPerl入門 Route 477... http://d.hatena.ne.jp/thinca/20100

    Big Sky :: モテる男のVim script短期集中講座
    suginoy
    suginoy 2013/10/24
  • Big Sky :: zencoding-vim の Emmet サポートを始めます。

    « 僕がboost::asioとboost::property_treeを使いHTTPプロキシ環境下で非同期にGoogle Search APIから検索するまでにやった、たった一つの事。 | Main | python 補完のVimプラグイン「jedi-vim」がスゲー » しばらく zencoding-vimemmet ブランチで開発し、落ち着いたら master にマージします。 親参照 ^ で親へ移動出来る様になってます。 .header>.nav^.logo これが <div class="header"> <div class="nav"></div> </div> <div class="logo"></div> こう展開されます。^^ で複数階層登れます。 高度なCSS補完 おそらくこれが emmet の最大の武器と思う。 まず m0.1 は margin: 0.1em

    Big Sky :: zencoding-vim の Emmet サポートを始めます。
  • Big Sky :: bit.ly がソーシャルに生まれ変わって、皆とっても恥かしい事になる

    URL短縮サービス bit.ly がソーシャルに生まれ変わった様です。 bitly blog - Welcome to the new bitly! Welcome to the new bitly! bitly has long been the home to important content you share across the web... http://blog.bitly.com/post/23998132587/welcome-to-the-new-bitly Easily save, share and discover links ? they’re called bitmarks, like bookmarks. Instantly search your saved bitmarks. Curate groups of bitmarks into bundles

    Big Sky :: bit.ly がソーシャルに生まれ変わって、皆とっても恥かしい事になる
    suginoy
    suginoy 2012/05/31
    自分のアカウントは作っていなかった。
  • Big Sky :: あなたはVim scriptを知らない

    この記事はsuginoy氏のブログ杉風呂2.0 - A Lifelog -の記事"あなたはJavaScriptを知らない"をパロったものです。suginoyさんの許可を得て公開します。原文は2011年11月17日にポストされました。私自身のVim scriptの学習は適当で、ネタ仕込みの指摘等はコメントを下さると助かります。 あなたはJavaScriptを知らない この記事はMichael Woloszynowicz氏のブログWeb 2.0 Development And Business Lessonsの記事"You Don’t Know JavaScript"を翻訳したものです。人の許可を得て公開します。原文は2011年4月16日にポストされました。私自身のJavaScriptの学習が浅く、誤訳の指摘等はコメントを下さると助かります。 http://d.hatena.ne.jp/su

    Big Sky :: あなたはVim scriptを知らない
    suginoy
    suginoy 2011/11/22
    パロディありがとうございます。vimユーザですが、基本レベル未満です><
  • Big Sky :: 個々の作業はチームを作る事で効率を上げられる

    先日、vim-jpがオープンした訳だけど、これの真の意味はバラバラだったユーザや開発者を1ヶ所に集めるのが目的。まぁVim-users.jpもあって良いし、各々でやったらいいと思うけど僕が求めていたのは開発側。 vim-jpを作って良かったと思った。 githubのIssueトラッカーを使ってvim_devにパッチを放流するまでのワークフローが出来上がりつつある。 不具合報告 皆で再現確認 修正方法の提案そして議論 修正担当者をアサイン パッチを仮で書いて貼り付ける レビューしてもらって提出 突然、有識者がパッチ書いてvim_dev投げるとツメも甘かったりしますし、第一に新しい開発メンバが増えない。仕事でも同じだな。不具合が出たら修正者にすぐ直させるものいいんだけど、どう直すのかを予めレクチャーさせると不具合の認識が共有出来る。 後からそういう修正じゃなかったんだけど...って事がなくなる

    Big Sky :: 個々の作業はチームを作る事で効率を上げられる
    suginoy
    suginoy 2011/10/05
  • 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で動くゲーム作った
  • Big Sky :: Vimテクニックバイブル ~作業効率をカイゼンする150の技

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

    Big Sky :: Vimテクニックバイブル ~作業効率をカイゼンする150の技
    suginoy
    suginoy 2011/08/12
    「そして、Vimスクリプトでアプリケーションを書ける人が一人でも多くなれば、今度は執筆した僕達がワクワクする事になるのだと信じています。」
  • Big Sky :: Growl For Linuxを作ってます。

    MacにはGrowlがあり、WindowsにはGrowl For Windowsがあります。LinuxにもNotify-OSDがあるじゃないかという人もいますが、Linuxユーザは皆こう思ってる。「これGrowlじゃないもん!」 mumblesというpython+DBusで書かれたGrowl Systemもありましたが、どうやらプロジェクトが消え去った様子。 これはまずい。 と、僕は「Growl For Linux」を作り始める事を決めた。 C言語でGTKを使ったGUI。プロトコルは今後、MacのGrowl 1.3でもサポートされる予定であるGNTP(Growl Network Transfer Protocol)を使う事にした。 来ならば今日あたりにバージョン0.1あたりをリリースする予定だったんだけど、色々と立て込んでいて実はまだ出来てない。でもGNTPを受信して、Growlポップア

    Big Sky :: Growl For Linuxを作ってます。
  • 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」が凄い!
    suginoy
    suginoy 2011/04/19
  • 1