タグ

ブックマーク / kazu-yamamoto.hatenablog.jp (18)

  • HTTP/2から見えるTLS事情 - あどけない話

    これは HTTP/2 アドベントカレンダー19日目の記事です。 この記事はたくさんの資料を読んだ上で書きましたが、間違いとか勘違いとかがあるかもしれません。もしあれば、指摘していただけると幸いです。 実質的に必須となったTLS HTTP/2は、HTTP/1.1と同じく、暗号化なし/ありのポートとして、80と443を使います。そのため、通信開始時にHTTP/1.1とHTTP/2をネゴシエーションするための仕組みが、HTTP/2で定められています。 このように仕様としては暗号化なしのHTTP/2が定義されていますが、Firefox や Chrome が TLS を要求するために、実質的は暗号化ありが必須となっています。これは、米国の監視プログラムPRISMに代表される広域監視(pervasive surveillance)に対抗するために、IETFがさまざまな通信にプライバシの強化を要求する方

    HTTP/2から見えるTLS事情 - あどけない話
  • Emacs 24.3/24.4 on Mac のフォント設定 - あどけない話

    Emacs で一番難しいのはフォントの設定です。特に Mac では地獄のように難しいです。とうわけで、Emacs 24.3 と来る Emacs 24.4 でうまくフォントを使うための設定を公開しておきます。 なお、Mac では素の Emacs を使ってはいけません。Emacs Mac port を使いましょう。パッチを当てるのは面倒なので、早く github なんかで公開されるといいですね。 ちなみに、素の Emacs を Dock から起動すると PATH を引き継がないので、はまります。Emacs Mac port なら PATH を引き継いでくれます。 フォントの設定 以下をお好みに合わせて変えて .emacs などに入れて下さい。 ;; 以下はフレームの設定 (defvar my-frame-parameters '((height . 40) (width . 80) (top

    Emacs 24.3/24.4 on Mac のフォント設定 - あどけない話
  • Real World Haskell の古いところ - あどけない話

    Real World Haskell の内容が古くなってきたので、どこが古いかとか、それに変わる新しいものは何とか、まとめたいと思う。 Real World Haskell―実戦で学ぶ関数型言語プログラミング 作者: Bryan O'Sullivan,John Goerzen,Don Stewart,山下伸夫,伊東勝利,株式会社タイムインターメディア出版社/メーカー: オライリージャパン発売日: 2009/10/26メディア: 大型購入: 8人 クリック: 245回この商品を含むブログ (76件) を見る 1章 始めましょう 今でも通用する。 2章 型と関数 今でも通用する。 3章 型を定義し、関数を単純化する 今でも通用する。 4章 関数プログラミング ghc に --make オプションはもう不要。 5章 ライブラリを書く 5.14節では、"runghc Setup build" の

    Real World Haskell の古いところ - あどけない話
  • 書評: Parallel and Concurrent Programming in Haskell - あどけない話

    Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming 作者:Marlow, SimonO'Reilly MediaAmazon このには、その名が示すように Haskell (正確には GHC(Glasgow Haskell Compiler))が提供する並列(parallel)/並行(concurrent)プログラミング技術がまとめられている。著者は、GHC の主要開発メンバーである Simon Marlow 氏である。 彼は、長年、並列/並行の研究に携わっており、並列ガーベジコレクションを持つ GHC RTS (Runtime System) やいくつかの並列/並行ライブラリを実装している。そのため、並列/並行プログラミングには、驚く

    書評: Parallel and Concurrent Programming in Haskell - あどけない話
  • Haskell ポインタープログラミング - あどけない話

    早いもので、今年も12月25日となりました。メリークリスマス! うちのちびっ子怪獣たちも、サンタさんに書いた手紙通り、レゴをもらってご満悦のようです。 そして今日は、Haskell Advent Calendar 2013 の最終日でもあります。 Haskellらしい? 「純粋なコードで構成するのが Haskell らしいプログラムであり、IOはHaskellらしくない」という発言をよく耳にします。 確かに、命令プログラミングの世界から関数プログラミングの世界にやってきたとしたら、 不変データを使った永続データプログラミング 部品プログラミング 純粋なコードに対する性質テスト などには、衝撃を受けることでしょう。 でも、純粋なコードは、Haskell の世界の半分でしかありません。そこは、コンパイラーという保護者に守られた未成年の世界です。Simon Peyton Jones さんの言葉を

    Haskell ポインタープログラミング - あどけない話
    sbg3
    sbg3 2013/12/26
  • Git に関する良記事 - あどけない話

    適宜追加します。 Pro Git 僕が読んだ Git の書籍の中では、一番分かりやすいと思いました。日語版の書籍はありませんが、オンライン版が翻訳されています。 Pro Git 図解 Git Git の初心者が動作を理解するのにおススメ。 図解 Git こわくない gitランチとマージの考え方がよく分かるスライド(@methaneさんから教えて頂きました)。 こわくない git あなたの知らないGit Tips 書籍には載ってない Tips の解説。知らないと損するかも。 あなたの知らないGit Tips ワークフロー、あるいはブランチング チームでブランチを使う際の取り決め。自分のチームで一から議論するより、すでにあるものを参考にしましょう。 git-flow github-flow Github Enterprise Github Enterprise は、企業内に設置して使うこ

    Git に関する良記事 - あどけない話
  • Haskellの講義に関するQ&A - あどけない話

    岡山大学で、関数プログラミングの講義を一コマ担当しました。資料は、函数プログラミングの集いで使った関数プログラミングの道しるべを流用しました。ちゃんと用意しなくて、講義を受けた学生には申し訳ないです。 講義内容に関して質問を頂きました。同じような疑問を持つ人も多いと思いますので、担当教官の許可を得てここに公開します。 永続データプログラミングの意義は分かったが,破壊しないと効率が悪いのではないですか.配列のような構造が世の中には多い気がします.メモリは足りなくなりませんか. 基的に永続と呼ばれているデータは、共有の効率が高く、しかも不要になった部分はすぐに GC に回収されます。また、GHC の GC はすごく優秀であることが知られています。 Haskell では、下位のレイヤーではデータを破壊できて、たとえば固定長のバッファーを使い回すといったことも可能です。ただ、それは普通のプログラ

    Haskellの講義に関するQ&A - あどけない話
  • Haskellの文法(分岐編) - あどけない話

    僕が Haskell を学び始めた頃、Haskell の文法はすんなりとは頭に入ってきませんでした。もともと僕はプログラミング言語の学習能力が低いので、僕だけかもしれませんが、「はじめからこう言ってもらえれば分かったのにぃ」ということを書きます。 はじめの一歩 分岐は case で書きます。以下に Maybe a に対する例を書きます。 case mx of Just x -> ... Nothing -> ... 念のため、Maybe a の定義も見てみましょう。 data Maybe a = Nothing | Just a 列挙されているデータ構成子を case に列挙できることが分かるでしょう。このように、case でマッチできるのは、データ構成子で表現されたパターンになります。 ワイルドカード たとえば、以下のような型を定義したとします。 data Foo = A | B | C

    Haskellの文法(分岐編) - あどけない話
    sbg3
    sbg3 2011/08/30
  • Haskell から見た node.js - あどけない話

    誤訳 以前、「サーバサイドJavaScriptのNode.js、最初はCやHaskellを検討し失敗。開発者ライアン・ダール氏へのインタビュー」という記事が twitter で話題になっていました。 ―― なぜJavaScriptを選んだのでしょう? ダール氏 実は最初は違いました。最初はC、Lua、Haskellなどで失敗していました。そんなときV8(Chromeが採用しているJavaScriptエンジン)に気がついて、やろうとしていることに対してJavaScriptが完璧な言語だと突然ひらめいたのです。 ただでさえ、Haskell は遅いと誤解されているのに、このような悪意さえ感じらえる訳だと、さらに誤解が深まりそうです。原文にはこう書かれています。 Dahl: Originally I didn’t. I had several failed private projects doi

    Haskell から見た node.js - あどけない話
  • Haskellの開発ツール (2011年版) - あどけない話

    Haskell開発に関係するツールをとりとめもなく列挙してみます。 エディタ/IDE 僕は、Emacs と haskell-mode と ghc-mod を組み合わせて使っています。haskell-mode は、行頭揃えの機能がしょぼいので、作り直したいと思っています。 IDE のバックエンドとしては、scionがありますが、使ったことがないので説明できません。(僕は ghc-mod で十分だと思っているので。) Leksah とか yi とかも聞きますが、使ったことがないので知りません。(いや、yi はちょっと使ったことがありますけど。) 興味のある人は自分で調べて下さい。 マニュアル 関数のマニュアルが読みたくなったら、GHCについてくるモジュールの一覧とhackageDBから探して下さい。ghc-mod を使っていれば、一発でブラウザに表示できます。 探すのが面倒なら、google

    Haskellの開発ツール (2011年版) - あどけない話
    sbg3
    sbg3 2011/05/30
  • Haskellライブラリ入門 (2011年版) - あどけない話

    この記事では、基ライブラリである Prelude の関数をだいたい理解した人が、次に知るべきライブラリを紹介します。自由自在にリストを使いこなせ、正規表現がなくてもプログラミングができるんだなと実感した人を対象にしています。 この記事のテーマは、脱リストです。リストはとても柔軟ですが、リストで表現されている文字列は、メモリーをたくさん消費しますし、なにより遅いのです。実用的なプログラムを書くためには、必要に応じて適切なデータ構造を使う必要があります。 containers containersは、文字通りコンテナ型をいくつか集めたパッケージです。ハッシュの代替品やキューとして使えます。連想リストを使っているところは、すべて Data.Map などで置き換えることをお勧めします。 containers に入っているモジュールはすべて眺めましょう。そして、実装も読んでみましょう。(プログラミ

    Haskellライブラリ入門 (2011年版) - あどけない話
    sbg3
    sbg3 2011/05/30
  • 関数プログラミングの楽しみ - あどけない話

    レビューに参加した「関数プログラミングの楽しみ」が届きました。これは、関数プログラミングの入門書をいくつか読んだ人が、もっと高みを目指すためのです。 関数プログラミングの楽しみ 作者: Jeremy Gibbons and Oege de Moor,山下伸夫出版社/メーカー: オーム社発売日: 2010/06/23メディア: 単行(ソフトカバー)購入: 3人 クリック: 98回この商品を含むブログ (17件) を見る 目次 このは、関数プログラミングの父 Richard Bird が還暦を迎えることを記念して、著名人が各章を寄稿し、編集した構成となっています。コードはすべて Haskell で書かれています。目次は以下の通りです。 二分ヒープ木の楽しみ 仕様に基づくテスト -- QuickCheck を使って おりがみプログラミング Haskellで音楽を記述し解釈する 融合変換を自

    関数プログラミングの楽しみ - あどけない話
  • Haskellと副作用 - あどけない話

    よく、Haskellには副作用がないと言われるが、それは間違いだ。確かに、Haskell には状態の変化(あるいは再代入)という副作用はない。しかし、入出力という副作用はある。この記事では、Haskell の副作用に対して、命令型プログラマーにすっきりと理解できる説明を試みたいと思う。 間違った方向への第一歩 Haskell の副作用に関する典型的な説明は、こんな感じだ。 Haskell にはあらゆるレベルで副作用がない。そのため、遅延評価が可能になる。遅延評価では、コードが記述順に実行/評価されるとは限らないので、入出力と相性が悪い。そこで、IO モナドが導入されている。IO モナドのおかげで、入出力に関するコードは記述順に実行され、外界に作用できる。 この説明を聞いて理解しろという方が無理である。説明が苦しい最大の理由は、Haskell にはあらゆるレベルで副作用がないと、間違った一歩

    Haskellと副作用 - あどけない話
    sbg3
    sbg3 2009/12/15
  • プログラミングHaskellの裏舞台 - あどけない話

    中村正三郎さんがプログラミングHaskellの書評を書いてくれましたので、触発されて少し補足します。 訳について 直訳を避け、意訳する 訳は、直訳を避け意訳を心がけました。原文が想像できない自然な日語を目指しています。たとえば、章のはじめには必ずこういう表現があります。 We conclude with ... これを この章を ... で終える と訳すと原文が想像できますし、自分がを書く場合はこんな表現は使わないので不自然です。 この章を ... で締めくくる とすると、少しはよくなりますが、まだ英語に影響されています。というわけで、こういう訳にしました。 この章の締めくくりとして...を説明する カタカナを使わず、和語を使う カタカナで説明した気になっている人は説明が下手だと僕は思っています。これは口頭での説明でも、文章でも同じです。文章を読まずに、訳の質を判断するには、カタカナの

    プログラミングHaskellの裏舞台 - あどけない話
    sbg3
    sbg3 2009/12/02
  • Emacs での Haskell プログラミングを幸せにする - あどけない話

    前から予告していましたが、Emacs での Haskell プログラミングを幸せにするプロジェクトを開始しています。ゆくゆくは、haskell-mode を置き換えたいのですが、とりあえず haskell-mode と共存して、補完とドキュメントの閲覧が幸せになるコードをリリースします。 まだ、プロジェクトのページを作っていないので、コードは一時的にここに置いておきます。 補完 (M-TAB) 行頭では、行頭に来るべき予約語(import とか)の補完ができます import の後では、モジュール名(Data.List とか)の補完ができます。 その他の場所では、予約語(where とか)、関数名(foldr とか)、型名(Bool とか)などの補完ができます。 cabal などを使ってインストールしているモジュール名が補完対象となります。つまり、ghc-pkg が表示してくれるパッケージ

    Emacs での Haskell プログラミングを幸せにする - あどけない話
  • Mac の GIMP を使い易くする - あどけない話

    Mac の GIMP は使い物にならなかった。なぜなら、GIMP のあるウインドウから、他のウインドウにカーソルを移動させても、自動的にフォーカスされないからだ。そのウインドウを選択するには、クリックする必要がある。たとえば、ペンの太さを変えようとすると、二回クリックしてペンの太さを選び、さらにキャンバスをクリックして選択し直さないといけない。 以前から思い出しては検索し、解決方法を探していたのだが、今日ようやく見付かった。見付かった方法は古いため、そのままではうまくいかない。そこで、最新の情報を載せておく。 まず、XQuartzを入れる。これを入れると、X11.app のアイコンがかっこよくなるので、X11.app が適切に上書きされたと分かる。 心配になって、MacPorts で gnuplot や ghostscript を入れ直したところ、何も問題は発生しなかった。 次に、コンソー

    Mac の GIMP を使い易くする - あどけない話
  • 2007-10-29 - あどけない話 JavaScript Lint

    これまで、JavaScript の構文チェックには JSLint を使ってきました。かなり強力なんですが、JavaScript で書かれているためブラウザー越しに使わなければならない、そして速度が遅いという問題がありました。 コマンドラインから使える構文チェッカとしては Rhino の js があります。しかし、これは僕の要求を満たしてくれるほど、チェックが厳しくありませんでした。 MacPorts をいじっていて、JavaScript Lint なるものがあることに気付き早速使ってみました。Crockford先生についても触れていることから分かるように、素晴らしいです。 使い方 コマンド名は、jsl です。JavaScript ファイルや script タグを含んだ HTML ファイルを引数 -process の後に渡します。 % jsl -process prototype-1.6.0

    2007-10-29 - あどけない話 JavaScript Lint
  • Mailman の備忘録 - あどけない話

    以下、Mailman を /usr/local/mailman にインストールしているという前提での話です。 ソースコードをいじったら .py を .pyc に直すには、以下のようにします。 % sudo python -c 'from compileall import *; compile_dir("/usr/local/mailman/Mailman")' ML のアーカイブを作り直す % cd /usr/local/mailman/archives/private/ % sudo rm -rf ML % sudo /usr/local/mailman/bin/arch ML ML.mbox は消してはいけません! ML の通し番号を変更する 以下 100 に変更する例です。 % sudo /usr/local/mailman/bin/withlist ML Loading list

    Mailman の備忘録 - あどけない話
    sbg3
    sbg3 2009/06/30
  • 1