タグ

ブックマーク / hiratara.hatenadiary.jp (12)

  • JSON::XSで作られる浮動小数点数でハマった話 - Pixel Pedals of Tomakomai

    JSON::XSを使うと、小数は浮動小数点数にパースしてくれる。 use JSON::XS qw(decode_json); my ($double) = @{decode_json("[0.6]")}; この値、printすると "0.6" なのだけど、0.6とイコールではない。 print $double, "\n"; # 0.6 print +($double - 0.6), "\n"; # 1.11022302462516e-16 なので、直感と違う振る舞いをしたりする。 # 3 / 0.6 == 5 printf "%s / %s == %s\n", 3, 0.6, int(3 / 0.6); # 3 / 0.6 == 4 <- unexpected :( printf "%s / %s == %s\n", 3, $double, int(3 / $double); 仕方ないので

    JSON::XSで作られる浮動小数点数でハマった話 - Pixel Pedals of Tomakomai
    lizy
    lizy 2012/10/24
    直接0.6と書いたときとはわずかに内部表現が違ってるんでしょうね。浮動小数と言うことを考えると、実用上は差が無い?
  • 「論理と計算のしくみ」が大変ためになった - 北海道苫小牧市出身の初老PGが書くブログ

    読み終わったので感想です。他の方々からも良書だ、良書だと勧められましたが、結論から言うとやはり買いです。 論理と計算のしくみ 萩谷 昌己 西崎 真也 前半は論理学から話を初めてゲーデルの不完全性定理までを論じます。後半はλ計算と型理論についての内容です。カリー・ハワード対応がわからなくてもいいのであれば、後半のλ計算の部分だけ読むこともできます。 読み切れば、例えば、物のプログラマはHaskellを使うの連載に出てくる次のような単語の意味は理解できるようになるでしょう。 reduction call-by-name call-by-value Weak Head Normal Form 型推論 依存型 多相型 他にも以下のような聞いたことあるけどなんだろこれって知識が補完されます。 命題論理、述語論理、様相論理、時相論理、直観論理 ゲーデルの不完全性定理 チューリングマシンの停止性問題

    「論理と計算のしくみ」が大変ためになった - 北海道苫小牧市出身の初老PGが書くブログ
    lizy
    lizy 2011/07/03
    計算基礎論の講義でやったような内容なのか
  • 社内勉強会資料「Git早わかり」 - Pixel Pedals of Tomakomai

    YAPC前のことなのですが、id:perlcodesampleさんとちょっと縁があり、「Mojoliciousの話聞きたい」と無茶ぶりをしてみたら、なんと快諾して下さいました。そこで先日弊社にて社内勉強会を開催し、お招きしてトークをして頂きました。id:perlcodesampleさん、どうもありがとうございました! 話して頂くだけではなんなので、弊社からもトークを行いました。その際の発表資料を貼っておきます。早わかりってタイトルは嘘で、Gitリポジトリのモデルについて主に話しました。 Git入門View more presentations from hiratara.

    社内勉強会資料「Git早わかり」 - Pixel Pedals of Tomakomai
    lizy
    lizy 2010/10/22
  • プログラミングの魔導書 / Vol.1 Construct the World, C++ - Pixel Pedals of Tomakomai

    プログラミングの魔導書 〜Programmers' Grimoire〜 Vol.1 「Construct the World, C++」献感謝です! 書は id:faith_and_brave さんもおっしゃっているように、不定期刊行のプログラミング雑誌の創刊号です。今号のテーマはC++ですが、その充実っぷりはかなりのもの。 名立たるC++ブロガーに加えて、C++標準化委員会のメンバ複数名が筆をとっている時点で大変価値のある内容と言えますが、なんと冒頭には Bjarne Stroustrup 氏の独占インタビューまで掲載されています。これを読むためだけに買っても価値があるのではないでしょうか。 個人的に(≒C++の素人的に)面白かったのは稲葉一浩さんの Hello, C++ World! で、これは同名のブログエントリをベースにした記事ですが、解説の密度がまったく違います。Hello,

    プログラミングの魔導書 / Vol.1 Construct the World, C++ - Pixel Pedals of Tomakomai
    lizy
    lizy 2010/07/26
  • git rebaseとgit mergeはともだち こわくないよ - Pixel Pedals of Tomakomai

    例えば、以下のようなコミット履歴があるとします。 A---B---C---D masterここで git rebase -i HEAD~3 をして、 コミットB を E に書き換えたくなったとします。このとき、rebase -i によって履歴を書き換えてしまうと、以下のようにリポジトリからB〜Dのコミットは消滅してしまうと思っている人も居るのではないでしょうか。 A---E---C'---D' master確かに、Gitがこのような動作をするのであれば、rebase後に元の状態へ戻すことは到底困難であるように見えます。しかし、正確に書けば、実際のレポジトリの状態は以下のようになります。 E---C'---D' master / A---B---C---D実はコミットA〜Dの一連のコミットは手つかずで残っており、「master」というラベル*1が新たな枝に付け替えられただけなのです。よって、

    git rebaseとgit mergeはともだち こわくないよ - Pixel Pedals of Tomakomai
    lizy
    lizy 2010/06/26
  • iPadを紙代わりに使うならNote Taker HD - Pixel Pedals of Tomakomai

    iPad電子書籍だって話ですが、肝心のがなかなか出そろわないので自分はiPadをノートと鉛筆の代わりとして使ってます。そのためのソフトが、Note Taker HDという600円のアプリで、これがなかなかいいです。どんなアプリかってのは、紹介している動画を見るのがいいでしょう。 手書きなので、日語対応とか数式対応とかそんなの関係なく、なんでも自由にかけます。 間違えたらでっかく×って書いちゃってもいいですし、 圏論の可換図もこの通り。 昨日App Sotreに上がった最新版だと、16色カラーが使えます。色ペン16持ち歩くことを考えたら、こっちの方が断然使いやすいですね! 最後に、Note Taker HD でできることとできないことをまとめておきます。 できること、得意なこと 手書きで横書きの長文の文章を書く 細かい字をぎっしり書く 日語を書く 数式を書く 図表を書く 書いたメモ

    iPadを紙代わりに使うならNote Taker HD - Pixel Pedals of Tomakomai
    lizy
    lizy 2010/06/09
    これ系のアプリが色々出てきた
  • Apache2+mod_proxy+持続接続で時々レスポンスが悪くなる現象のメモ - Pixel Pedals of Tomakomai

    今更な話題で恐縮ですがmiyagawaさんがものすごい勢いで教えてくれたのでメモっておきます。 mod_proxyでバックエンドにリクエストを投げたとき、リクエストのうち何個かが極端に遅いという現象が起こりました。その時のabの結果は以下。 % ab -c 5 -n 500 http://127.0.0.1:21082/ Percentage of the requests served within a certain time (ms) 50% 1 66% 1 75% 1 80% 1 90% 4 95% 1008 98% 1994 99% 2003 100% 2020 (longest request)なお、今回使おうとしたバックエンドはStarmanです。 多分こんな原因 検証不足で断言はできないのですが、多分以下のような感じ。多分。 Apache のデフォルトのServerLimi

    Apache2+mod_proxy+持続接続で時々レスポンスが悪くなる現象のメモ - Pixel Pedals of Tomakomai
  • Gitで共有リポジトリを作るならgitosisが便利 - Pixel Pedals of Tomakomai

    ちょろっと渡邉さんのエントリに補足を。 実用Git 吉藤 英明 (監訳) ちなみに、には直接関係ありませんが、このの翻訳もGitを使って進められました。 共訳させていただいた「実用Git」が発売になります 原稿はGitで管理しようと言う話は最初から訳者3人の間で出ていたのですが、原稿を管理するとなると当然read権限も含めたパーミッションの管理が必要でした。3人がgit-daemonを立ててお互いにpullしようかとも思ったのですが、git-daemonを使うと匿名で誰でも読めるリポジトリとなってしまいます。HTTP経由だとWEBサーバによってアクセスコントロールはできますが、速度に不安が残ります。ということでsshがベストなんでしょうが、gitのためだけに3人分のアカウントを作るのはちょっと気が引けました。 そこで、今回使ったのがgitosisです。gitosisについては入門git

    lizy
    lizy 2010/02/22
  • use constant した定数を実行時に書き換えるのは難しい - Pixel Pedals of Tomakomai

    恥ずかしながら今日まで知らなかったんすっかり失念してたですが、要はラクダ第3版の6.4.1 定数関数のインライン化の内容です。 過ちを犯した use constant は関数と等価であることは有名です。それを利用して、定義した内容を実行時に別の値にしたくて以下のコードを書いたんですが、駄目でした。 use strict; use constant HOGE => 'A'; no warnings 'redefine'; *HOGE = sub () {'B'}; print HOGE, "\n"; これは A と出力されます。 理由 Deparseするとわかります。 % perl -MO=Deparse test.pl use constant ('HOGE', 'A'); no warnings; use strict 'refs'; *HOGE = sub () { 'B' } ;

    use constant した定数を実行時に書き換えるのは難しい - Pixel Pedals of Tomakomai
    lizy
    lizy 2009/11/13
  • モナドで悟りをひらきたいのなら - 図でわかる(?)モナド - Pixel Pedals of Tomakomai

    圏論の最大の武器はダイアグラムなので、モナドで悟りをひらきたいのならダイアグラムを使えばいいんじゃないでしょうか。 ダイアグラムの書き方 例えば、「 f :: a -> b 」とか「length :: [a] -> Int」は以下のように書きます。型を点で、関数を矢印で書きます。 ダイアグラムの利点は、fやlengthの中身を忘れて簡略化することができることです。人間の脳ができることには限りがあるので、注目する情報が少ない方が理解しやすくなるってスンポーです。 なお、 合成 g . f は図示する時に順が逆になるので気をつけて下さい。これは、合成関数の適用が g ( f x ) と書けることに由来してます。まずfを適用し、次にgを適用するということです。 return と >>= の図示 今回のダイアグラムの約束として、元となる型(Bool, Char, Int 等)は最下段に書きます。そ

    モナドで悟りをひらきたいのなら - 図でわかる(?)モナド - Pixel Pedals of Tomakomai
  • git型の共同作業とSVN(CVS)型の共同作業の違い - Pixel Pedals of Tomakomai

    ずっと gitとsvkの違いってなんなのよ? と思ってたんですが、この図とか説明読んでようやくわかりました。 Gitでは旧来のCVS型とGit型の二つの共同作業のモデルが使えます。これが混乱の元でした。 Gitのすごさを当に体感するなら、gitを使うだけでは不十分でGit型のモデルにそって開発することが必須です。 CVS型 従来のSVN(CVS)のモデルです。pullをしてきて、pushで更新を戻します。 1つの公開リポジトリに対し、複数人がpushを行う pushにより他の人と競合するかも メインのリポジトリにpushすることを目指す 能動的 → 悪意のあるpushも可能 → "コミッター"を絞る必要あり Gitgithubっぽいモデルです。pullをしてきて、pullで更新を持って行ってもらいます。 全体がpullでまわるため、pushがプライベートな操作として隠蔽されてるのがポ

    git型の共同作業とSVN(CVS)型の共同作業の違い - Pixel Pedals of Tomakomai
  • LL魂の実況中継 - Pixel Pedals of Tomakomai

    今年も参加しています。適当に実況します。 (8/8 追記。id:SumiTomohikoさんがすばらしいまとめを作ってます。こちらもぜひ。) 10:30 基調講演 - ハッカー気質について / 和田英一さん hackとは・・・playful 遊び心で hackerとは・・・to be described as a hacker by others (他人にハッカーだと認めてもらう) が better ハックは自己表現。チームで作る互いのものではない。四苦ハックして行う 楕円を書くコンパス・・・円錐を斜めに切ると楕円になることを利用。影絵で説明(笑)。 ケルミンの積分機、兆候予測機、微分解析機*1 Niemanのトルク増幅器・・・Input軸の変位をモーターの力で増幅させる。牛の鼻輪を引くと、痛がって同じだけ牛が動くのと一緒(サーボモゥター) flipflopで音階を出す・・・ビットシフトに

    LL魂の実況中継 - Pixel Pedals of Tomakomai
  • 1