タグ

ブックマーク / m-hiyama.hatenablog.com (14)

  • 「関数型プログラミングはオブジェクト指向の正当な後継」なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オブジェクト指向を知っている人々に、「関数型もオブジェクト指向と大差ないよ、大丈夫だよ」とお誘いする記事は大いに存在意義があると思います。 関数型プログラミングはオブジェクト指向の正当な後継である 上記の記事は、そういう目的を持って書かれたのでしょう。その内容(目次)は次のようです(僕のこの記事の目次じゃないよ)。 対象読者 なぜこの記事を書こうと思ったのか? なぜ関数型プログラミングはわかりにくいのか? オブジェクト指向の負の遺産を捨てよう 関数型プログラミングの概要 「阿吽の呼吸」とも言うべき使いやすさの拡張 型にまつわる考察 まとめ 最初のほうを読むと、言ってることはまっとうで好感を持てます。が、「5. 関数型プログラミングの概要」の節あたりから雲行きが怪しくなって、ちょっと何言ってるかわかんない((c)サンドウィッチマン)。 檜山のこの記事の内容: 真面目なポエム モナドっておいし

    「関数型プログラミングはオブジェクト指向の正当な後継」なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ryshinoz
    ryshinoz 2016/09/14
  • 1円クラウド・ホスティングDigitalOceanを、Vagrantから使ってみる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    SSDVPSを提供するDigitalOcean(https://www.digitalocean.com/)については、徳丸さんの記事に分かりやすく紹介されています。徳丸さん記事のタイトル「1時間1円から使える」から、「1円クラウド・ホスティング」と名づけてみたのですが、これはウソではありません。現状の僕の利用明細は次のとおりです。 0.01ドル単位で課金されて、合計で0.05ドルです。 このDigitalOceanを、去年くらいから話題となっている仮想環境マネージャVagrantから使ってみました。これ、便利ですよ。 内容: DigitalOceanに申し込んでドロップレット(仮想マシン)を作る Vagrantを使った操作の準備:DigitalOcean側 Vagrantを使った操作の準備:ローカルマシン側 プロビジョニング その他こまごま DigitalOceanに申し込んでドロップ

    1円クラウド・ホスティングDigitalOceanを、Vagrantから使ってみる - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ryshinoz
    ryshinoz 2014/03/03
  • WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows - 檜山正幸のキマイラ飼育記 (はてなBlog)

    分散バージョン管理システムの利用は拡大しています。そのなかでも最も人気のあるツールはGitでしょう。しかし、GitWindowsで使うのはなかなか困難でした。 Windows向けのGitであるmsysGitは、bashのコンソールを出して、最小限のUnix風コマンドライン環境を提供するものです。これは使いやすくありません。もう一つの選択肢であるTortoise Gitは、Windowsのエクスプローラー(ファイルマネージャ)に統合されたGUIツールですが、僕は「なんか違うな」と感じてました -- これは個人の感性の問題ですが、ファイルマネージャに横付けすることが、分散バージョン管理システムへの良いUIを提供するようには思えないのです。 ところが、最近は事情が大きく変わっています。使いやすいGUIツールとして、2013年6月に正式公開されたSourceTree for Windowsが存在

    WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ryshinoz
    ryshinoz 2014/02/04
  • 1年たって、手書きから自動描画へ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    今から1年と少し前に「Webサービスを設計するための単純明快な方法」という記事を書きました。そのなかで次のような手書きの絵を出しました。 「Webサービスの設計:Webの状態遷移図の描き方」では、図に関する説明を追加しました。 上の図で番号が付けられている各部の名称は次のとおりです。 トリガー リクエスト辺 アクションノード レスポンス辺 状態ノード このような絵を、僕はもう手書きしなくて済みそうです。状態、トリガー、アクションなどの繋がり具合を記述するファイルから、状態遷移グラフを生成できるようになりました(Graphvizを使っています)。 このグラフのもとになるデータは単に図のための記述ではありません。それ自体がWebアプリケーションの設定ファイルになっています。“設定”というより、Webアプリケーション“そのもの”だ、と言ってもいいかもしれません。なぜなら、Webアプリケーションの

    1年たって、手書きから自動描画へ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ryshinoz
    ryshinoz 2011/11/01
  • LinuxとWindowsにnode.jsをインストールしてみた - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Google Chromeに搭載のJavaScript処理系であるV8エンジンを使ってみたいな、と思いました。ここんところ巷で評判のnode.jsにもREPL(Read-Eval-Print Loop; 対話的シェル)があるようなので(http://nodejs.org/docs/v0.3.1/api/repl.html)、node.jsを入れてみることにします。 古いLinux編 まずは無難にLinux環境で。僕が借りているサーバーは古いので、そのせいで何か問題があるかもしれませんけど。 $ cat /proc/version Linux version 2.6.9-78.0.5.plus.c4 (mockbuild@builder16.centos.org) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-10)) #1 Wed Oct 8 13:

    LinuxとWindowsにnode.jsをインストールしてみた - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 唐突に MongoDB の話 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「CatyのJSONストレージとクエリ言語」で触れたように、MongoDBを触ったり調べたりしています。Kuwataさんも何やら書いてますね。 MongoDBの入門的な解説もいずれ書いてみたい気もしますが、今日はそういうのはすっ飛ばした話をします。タイトルの「唐突に」とは、MongoDBの紹介も説明もないよ、ってことです。あしからず。 データベースと名前空間 MongoDBは、パフォーマンスにこだわっていて、機能性、使い勝手、整合性などを犠牲にしています。ここまで犠牲を払って、もし遅かったらゴミですね。もちろん、ゴミじゃないだろうと僕は期待してます。 データベースの実体は、mydb.0, mydb.ns のような2つのファイルです。名前からして、mydb.0にコンテンツ、mydb.nsに名前空間(NSと略記)の情報でしょう。NSってのがまた珍妙な概念ですが、概念的にはIDの一意性のスコープ

    唐突に MongoDB の話 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ryshinoz
    ryshinoz 2010/11/28
  • HTMLフォームで使うデータ型のJSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JSONスキーマで定義できるデータ型の分類をまた載せます。 基スカラー型: integer, number, string, boolean, null リスト型: 項目がすべて同じ型である配列型、項目の個数は任意 タプル型: 決まった個数の項目を持つ配列型 タプル+リスト型: 決まった個数の項目と、それに続く同じ型の任意個の項目を持つ配列型 閉じたオブジェクト型: 決まった個数のプロパティを持つオブジェクト型 開いたオブジェクト型: 決まった個数のプロパティと、同じ型の任意個のプロパティを持つオブジェクト型 ユニオン型: 複数の型のどれかを意味する型 列挙型: 有限個の定数リテラルのどれかを意味する型 全称型: any HTMLフォームから入力として使うデータ型は次のものでしょう。[追記]マルチセットじゃなくてセットですね。[/追記] 型 フォームコントロール number input

    HTMLフォームで使うデータ型のJSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • プログラマ/デザイナの境界としてのクリーンHTML - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Catyプロジェクトを始めたとき、プログラマとデザイナの「干渉が少ない分業」が大きなテーマでした。僕らが採用した基的な方針は次のものです。 プログラマはJSONデータの生成に専念する。 デザイナは生成されたJSONデータを展開コンテキストとするテンプレートを作る。 このとき、テンプレート言語にプログラミング言語の能力を持たせてしまうと分業にならないので、テレンス・パー(Terence Par)の理論と提案に従い、戦略的低機能テンプレート言語を提供します。 この方法がマズイとはまったく思ってませんが、別な分業形態も準備した方がよいと最近思っています。「マイクロフォーマットとクリーンHTML」で説明したクリーンHTMLは、その「別な分業形態」におけるプログラマ/デザイナ境界となるものです。境界とは、2つの作業を分離するための手段であり、2つの作業のあいだで受け渡すデータのことです。 クリーン

    プログラマ/デザイナの境界としてのクリーンHTML - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ryshinoz
    ryshinoz 2010/04/02
  • Webアプリケーションの入出力と状態遷移 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    入力値の集合がA、出力値の集合がBである関数fを、f:A→B と書きます。fは純関数です。関数が状態に影響を受けるときは、f:S×A→B となります。Sは状態空間です。単に直積の記号「×」では、状態と入力の区別が付かないので、セミコロンで区切ることにします。f:S;A→B 。セミコロンの左が状態ね。fが副作用を持つとき、つまり状態空間Sに作用するときは、f:S;A→S;B と書きます。S→S は状態遷移を表すことになります。 副作用があるかもしれない関数を、次のように分類すると便利です。1は単元集合(シングルトンセット、ユニットセット)です。 f:A→B 純関数 f:S;A→B バートランド・メイヤーの言葉で「問い合わせ」 f:S;A→S;1 バートランド・メイヤーの言葉で「コマンド」 f:S;A→S;B 一度にいろいろするメソッド 以下では、単元集合1は省略します。 メイヤーは、最後の「

    Webアプリケーションの入出力と状態遷移 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ryshinoz
    ryshinoz 2010/04/02
  • nginx(エンジンエックス)をWindows上で動かして、SSLとリバースプロキシーの実験をした - 檜山正幸のキマイラ飼育記 (はてなBlog)

    我々のWebフレームワークCatyでは、Pythonで実装したサーバーによりWebサイト/Webアプリケーションを動かしています。このCatyサーバーは、次のような点で十分とは言えません。 仮想ホストの実現 HTTPS(SSL)通信 キャッシュによるWebアクセラレーション 詳細かつ柔軟なロギング 複数プロセスを使ったパフォーマンス向上 とはいえ、Webサーバーとしての機能を充実させることはCatyの目的ではないので、不足な部分は既存のサーバーソフトウェアの力を借りることにします。Apache + (mod_python or mod_wsgi)、lighttpd + FastCGI といったところが候補でしょうが、結局、nginx(エンジンエックス)を使うことにしました。現状のCatyサーバー(caty-server.py)には特に手を加えないで、nginxを手前に置くという構成です。

    nginx(エンジンエックス)をWindows上で動かして、SSLとリバースプロキシーの実験をした - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • RESTfulなWebサイトと拡張子を含むURLについて - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2009年12月16日「チュートリアルを少し変更、おバカな設定例」 Catyでは、ファイル名拡張子の意味付けや扱い方がデスクトップと同じなんだけど、「クールなURIは、拡張子がねーんだぞ」とか言われそうだから、そのうちラショネールを書かなきゃ。 「ラショネール」なんて奇妙な言葉が出てきてますが、目論見や主張が正当であることを示す根拠、てな意味ですかね>ラショネール。 僕とKuwataさんが開発しているWebフレームワークCatyは、URLに、.html, .cgi などの拡張子を必ず要求します。クエリパラメータも遠慮なしに使います。「拡張子とかクエリパラメータなんて、RESTfulじゃないなー、クールじゃないなー」とか言う人がいますが、なにゆえに「拡張子やクエリパラメータがダメなのか?」 -- その根拠を示して欲しいもんです。僕らが積極的に拡張子やクエリパラメータを使う事情と根拠は、このエ

    RESTfulなWebサイトと拡張子を含むURLについて - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • そろそろ決着、HTTPメソッド、URL、そして標準化された動詞 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ([追記 date="翌日"]文言を少し改善し、注意を付け足したりしました。[/追記]) HTTPメソッド、URL、動詞(verb)に関して次の記事を書きました。 HTTPメソッドの正統的使い方と現実的対処法 HTTPメソッド、URL、そして標準化された動詞 訂正補足:HTTPメソッド、URL、そして標準化された動詞 問題点がほぼ明らかになり、全体の状況も見えてきたので、総括したいと思います。これで決定版にしたいのですが、実のところ、まだ考えが変わる可能性は否定できません。現時点では、以下に記述する案が最善だと思っていますがね。 内容: 用語の注意 事の発端,事の成り行き URLの意味と用途を分類する リソース種別ごとに動詞を考える さらにリソース種別ごとに動詞を考える GETに乗せるか、POSTに乗せるか インターフェースとしてのリソース種別と動詞 リソースとクラス 用語の注意 HTTP

    そろそろ決着、HTTPメソッド、URL、そして標準化された動詞 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScriptで仮想機械の勉強をしましょう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    事情があって、コンピュータのハードウェアメカニズムをごく簡単に説明したいのです。物のCPUは難しくて簡単な説明にはならないし、そもそも僕は物がどうなっているかよく知りません。 そこで、オモチャの仮想機械を作ることにしました。加減乗除だけができるスタックマシンです。仮想機械の実装はJavaScript、ユーザーインターフェースはHTMLです。こういうとき、JavaScript + HTML はお手軽でほんとに便利です。 Web上で試せるURL http://www.chimaira.org/tools/rac0.html 初等算術計算仮想機械の実装 仮想機械を実装するソースコードは次のようです。インストラクション(機械語命令)の説明はすぐ後でします。 /* rac0vm.js */ /* * Rudimentary Arithmetic Calculator Level-0 */ var

    JavaScriptで仮想機械の勉強をしましょう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • HTTPメソッドの正統的使い方と現実的対処法 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「最小抽象ファイルシステムの仕様案 その2」 に書いたように、ファイルシステムAPIとHTTPを関係付けようとしてます。そこで、id:yoheiさん監訳の『RESTful Webサービス』を拾い読みしてみました*1。 RESTful Webサービス 作者: Leonard Richardson,Sam Ruby,山陽平,株式会社クイープ出版社/メーカー: オライリー・ジャパン発売日: 2007/12/21メディア: 単行購入: 25人 クリック: 842回この商品を含むブログ (168件) を見る それで知ったり考えたりしたことを以下に書きます。 HTTPクライアントとしてブラウザを使うときの問題点 HTTPメソッドの来の意味/使い方は次のようらしいです。 HTTPメソッド 意味/使い方 GET リソース(の表現)を取得する PUT 新しいリソースを作る/既存リリースを上書き変更する

    HTTPメソッドの正統的使い方と現実的対処法 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1