タグ

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

  • パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)

    jq(https://stedolan.github.io/jq/)の紹介では、「JSON処理のワンライナー〈一行野郎〉としてめちゃくちゃ便利!」とアピールするのが定番です。もちろんそれは当で、「めちゃくちゃ便利!」です。が、実は jq は、ワンライナー記述にとどまらない、かなり格的なプログラミング言語です。 JSON処理のためのDSL〈Domain Specific Language | 領域特化言語〉なので、汎用言語ではありません。しかし、汎用言語が備えている言語機能の一部(関数定義、モジュールシステムなど)を jq も持っています。また jq は、独特で楽しいプログラミング・パラダイム -- “パイプライン指向”に基づいて設計されています。 この記事では、ワンライナーを超えた jq の使い方と、プログラミング言語としての jq の特徴を紹介します。長い記事になってしまったので、一

    パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2022/12/06
  • イプシロン-デルタ論法はなぜ難しいのか? どうしたら分かるのか? 分かる必要があるのか? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    先週末に、N君が「イプシロン-デルタ論法って、なんすかアレ? 全然分からないっす!」と言ってました。そのときはそれ以上話す時間もなかったし、次回会うときはこの話題を忘れてしまうかも知れないので、書き記しておきます。 僕は、伝統的なイプシロン-デルタ論法そのものには懐疑的です*1。ゴタゴタした不等式をいじり回すのは早々に切り上げて、開集合を導入したほうがいいと思います。そんな思いから、出来るだけ不等式を使わずに集合族に注目するスタイルでイプシロン-デルタ論法を紹介します。 内容: イプシロン-デルタ論法 時間や運動のイメージを捨て去る ユークリッド距離と開球体 扱う関数達と実例 平面から平面への写像 一点の周辺を記述する開球体の族 写像による開球体の像 デュエルゲームとしての連続性 論理式で書き下そう 再びイプシロン-デルタ論法 続編: 距離空間と位相空間と連続写像 イプシロン-デルタ論法

    イプシロン-デルタ論法はなぜ難しいのか? どうしたら分かるのか? 分かる必要があるのか? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2017/07/19
  • BNF、EBNF、ABNF、まー正規表現だな - 檜山正幸のキマイラ飼育記

    BNFとか正規表現の話を。 ミニマムなBNFと正規表現 BNF(バッカス/ナウア記法)は、プログラミング言語の構文記述によく使われるメタ構文です。もともとは、「?」(省略可能)や「*」(任意回の繰り返し)のような記号は使わなかったようです。現在の正規表現で標準的に使われる「?」「*」「+」は、なくても次のように定義可能なのです。(以下で、EMPTYはそこに何もないことです。ほんとに何も無いと分かりにくいので目印にEMPTYを使います。) // X は A? X ::= EMPTY | A // Y は A* Y ::= EMPTY | A Y // Z は A+ Z ::= A | A Z 「|」があれば「?」「*」「+」を定義できますが、その代わりに再帰的な定義になります。 「::=」の左に同じ記号が複数回登場するのを許すと、「|」さえも不要になります。 // X は A? X ::=

    BNF、EBNF、ABNF、まー正規表現だな - 檜山正幸のキマイラ飼育記
    mickn
    mickn 2013/12/16
  • 有向グラフを表現するデータ形式について - 檜山正幸のキマイラ飼育記 (はてなBlog)

    今年の4月に、「すごいグラフ処理ライブラリNetworkXの使い方」という記事を書きました。メモ編にもいくつかNetworkX関係のメモが残っています。 https://m-hiyama-memo.hatenablog.jp/search?q=networkX NetworkXとGraphVizの組み合わせは、グラフの操作・解析・描画に便利なんですが、グラフを表現するデータ形式が色々あって頭がこんがらかる時があります。実装に依存しない一般論を一回整理しておいたほうがいいようです。ライブラリ固有のネイティブ形式ではなくて、JSONで表現できるデータ形式の話をします。 例題は次のようなグラフだとします。 頂点(ノード)は、a, b, c, d, e の5つがある。 辺は次の4: a → b b → c c → a c → d 内容: 単純な有向グラフ dict-of-lists形式 頂点/辺

    有向グラフを表現するデータ形式について - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2013/10/07
  • 便利で超強力なWSGIサーバー uWSGI を使ってみよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Nginxをダウンタイム・ゼロで入れ替える方法」で書いたように、/usr/local/nginx/ のNginxを version 1.0.13 に更新しました。これとは別に、catyというユーザーアカウントのホームディレクトリ内にNginxをインストールして、Nginx+uWSGIとCatyの実験をしようとしています。 Nginx+uWSGIは、Catyに限らず一般的なWSGIアプリケーションを稼働させる良い環境を提供します。簡単に紹介しましょう。 内容: WSGIとuWSGI なぜ Nginx+uWSGI にしたのか uWSGIについて少し インストール とりあえず動かしてみる ソレナリに動かしてみる プロセスの制御など WSGIとuWSGI WSGI(Web Server Gateway Interface)*1は、Pythonで書かれたWebアプリケーションとアプリケーションサー

    便利で超強力なWSGIサーバー uWSGI を使ってみよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Linked Open Data - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Linked Data、Open Data、両方あわせて Linked Open Data (LOD)なるものに興味をいだいています。ティム・バーナーズ=リー(Tim Berners-Lee)が2006年に公開した次の論説がことの始まりのようです。 Title: Linked Data Author: Tim Berners-Lee Date: 2006-07-27 (last change: $Date: 2009/06/18 18:24:33 $) URL: http://www.w3.org/DesignIssues/LinkedData.html TEDの動画として、2009年2月のバーナーズ=リーによる公演が採録されています。 http://www.ted.com/talks/lang/ja/tim_berners_lee_on_the_next_web.html Linked

    Linked Open Data - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2013/08/02
  • スピヴァックの圏論教科書 Category theory for scientists - 檜山正幸のキマイラ飼育記 (はてなBlog)

    関手データモデルのデイヴィッド・スピヴァックが、圏論の教科書を書いたようです。商業出版ではなくて、Web上にPDFが公開されています。スピヴァックの大学での講義のテキストとして書かれたようです。 Title: Category theory for scientists Author: David I. Spivak Submitted: 27 Feb 2013 URL: http://arxiv.org/abs/1302.6946 This book attempts to show that category theory can be applied throughout the sciences as a framework for modeling observed phenomena and for communicating results. In order to targ

    スピヴァックの圏論教科書 Category theory for scientists - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 関手的データモデルをどう説明するか? 考えてます - 檜山正幸のキマイラ飼育記 (はてなBlog)

    http://d.hatena.ne.jp/m-hiyama/20130128#c1359767497 : データベース技術者が「これを知らないのは不幸」と思えるので、(可能な範囲で)紹介はしようかな、と。 「これ」とはもちろんスピヴァックの関手的データモデルです。「データベース技術者」つうより、データベースに多少とも関わるすべての人にとって関手的データモデルは福音となる可能性があると思っています。RDBに限らず、現存するほとんどすべてのデータベース的システムに対して、極めて単純で統一的な記述を与えてくれます。データマイグレーションのように、これまでは途方に暮れていたような現実的な問題を鮮やかに解いてくれます。 「これ」を紹介する/説明する価値は十分にあります。僕自身が、すぐにでも実務的に使いたいと思っています。しかし、スピヴァックの論文群を要約したら関手的データモデルの説明になるかという

    関手的データモデルをどう説明するか? 考えてます - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2013/02/11
  • Simple XML/HTML Template Engine (Sixteen) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ツリー構造に対する簡単なテンプレート処理系を考えます。前半ではXMLベースで考えてみます。後半では、そのアイディアを通常のHTMLにマップして、ブラウザ上で動くようにJavaScriptで実装してみます。プルーフ・オブ・コンセプトの目的なので、プログラムは書いただけでろくに動かしてないです。ソースコードはたいした量ではないので最後に貼り付けておきます(修正したら*1、それはどっかに置きます)。 [追記]ソースは https://bitbucket.org/m_hiyama/yet-uncertain に置きました。[/追記] 5年前(2007年)の記事「圏論やモナドが、どうして文書処理やXMLと関係するのですか?」の続きと言えなくもないです。表立ってモナドは出てきませんけど。 目次: まずはXMLで考える 次にHTMLで考える 少しだけ実用性も その他細かいこと ソースコード まずはXML

    Simple XML/HTML Template Engine (Sixteen) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2012/08/16
  • Nginxをダウンタイム・ゼロで入れ替える方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    chimaira.org を載せているNginxが古いままです。 [hiyama ~]$ /usr/local/nginx/sbin/nginx -v nginx version: nginx/0.7.64 [hiyama ~]$ 2012-03-09現在の安定版は、version 1.0.13 です。入れ替えなくちゃね。Nginxはダウンタイム・ゼロで入れ替える方法があります。それを試してみることにします。 次の記事を参考にしました。 http://www.softwareprojects.com/resources/programming/t-recompileupgrade-nginx-binary-with-no-down-time-1520.html [追記]最後に追記した方法が一番簡単そうです。[/追記] 現状はどうなっている そもそもシステム環境全体が古いのですが、今回は動い

    Nginxをダウンタイム・ゼロで入れ替える方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2012/03/09
  • 論理的であるかのごとくに装って、根拠のないイチャモンをつける 13+2 の方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ちょっと挑発(コレの最後)してみたけど、どうせ反応はないだろな。しらけてしまわないうちに自分でテンション上げて解説を書いてみました。 内容: 前がき 編 定義の違いを真偽の議論にすり替える 言ってもない事を否定して印象操作をする 傾向や量に関する主張に、勝手に全称限量子を付けてしまう とある階層でなされた主張を、別な階層で否定する 権威や前例に訴える 権威や前例に訴える 別バージョン 論点ズラシ、意図・論点の曲解 論点ズラシ、意図・論点の曲解 感情バージョン 意味もなく自分の経験や知識を強調 問題点を他の事情により帳消しにする 意味不明でもいいから難しそうなことを言ってみる 普通とは異なる解釈を持ち出す 反論されたときは最小コストでごまかす 余計なお世話な悪口も辞さない 言い張る 後がき 前がき すぐあとに続く「編」では、ホントに「根拠のないイチャモンをつける方法」、もう少し正確に言う

    論理的であるかのごとくに装って、根拠のないイチャモンをつける 13+2 の方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2010/12/24
    論理的であるかのごとくに装って、根拠のないイチャモンをつける 13+2 の方法 - 檜山正幸のキマイラ飼育記
  • 論理的言明を装った感情論は嫌い、という感情論 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ちょっと時間がたってしまったネタですが: プログラミングの出来る人と出来ない人の決定的な違い。 「プログラミングの出来る人と出来ない人の決定的な違い」? ワンヤグさんの「プログラミングの出来る人と出来ない人の決定的な違い。」は、たくさんのブックマークを集めた記事。それに対して、id:JavaBlackさんが随分と否定的な記事を書き、さらにワンヤグさんが当該記事への追記として反論(らしきこと)を書いています。内容的に、ドチラかが全面的に正しいとは思えないし、ドチラかに味方する気もありません。 ですが、僕のセンサー(どんなセンサーかは最後に述べます)が反応したので、思うところを書いておきます。 時間順が前後しますが、まずはJavaBlackさんの記事のほうから。僕は、元記事「プログラミングの出来る人と出来ない人の決定的な違い。」を読む前に、JavaBlackさんの記事のほうを先に読んだのです。

    論理的言明を装った感情論は嫌い、という感情論 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2010/12/20
    論理的言明を装った感情論は嫌い、という感情論 - 檜山正幸のキマイラ飼育記
  • Wiki構文の問題はそんなに簡単なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    WikiCreole構文に関する僕の一連の記事に対し、id:pmintさんからブックマーク経由でご指摘とご意見をいただきました。 もとの記事: クレオールWikiマークアップの曖昧性が少し困る - 檜山正幸のキマイラ飼育記 ブックマーク: http://b.hatena.ne.jp/pmint/20101029#bookmark-26052136 コメント: pmint [wiki] 行内の**数を数えればいいだけ。そもそもインライン要素の優先順位は高くするものなので何ら問題ではない。 もとの記事: Wiki処理系を作る前に知るべきこと/考えるべきこと - 檜山正幸のキマイラ飼育記 ブックマーク: http://b.hatena.ne.jp/pmint/20101029#bookmark-26052611 コメント:pmint [なんだこれ] タイトルに釣られた。一つでも役に立つ、あるいは

    Wiki構文の問題はそんなに簡単なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2010/11/02
    ところで、誰か PukiWiki の文法の定義を簡潔に説明してほしい。BNF みたいなので
  • Wiki処理系を作る前に知るべきこと/考えるべきこと - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Wiki構文(Wiki記法のルール)は山にようにイッパイあります。 「新たにもう1つ構文を付け加えても別にいいだろう」と考えるか、「これ以上新しい構文を増やしてはいけない」と考えるかは人によるでしょう。僕は、「集約・統合してWiki構文を減らすべきだ」と考えています。それで、標準的なWiki構文としてWikiCreole 1.0を採用し、KuwataさんがCreoleパーザーを実装しています。 ところが、WikiCreoleの構文記述が曖昧過ぎてサッパリわからんのです。Kuwataさんもイライラしている様子。このような状況はWikiCreoleに限りません。たいていのWiki構文の記述はイイカゲンです -- いやっ、仕様書があるだけでマシなのです。イイカゲンな仕様に適合した(conformantな)処理系を作れと言われてもそりゃ困りますわな。 WikiCreole仕様の曖昧さは以前にも話題

    Wiki処理系を作る前に知るべきこと/考えるべきこと - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2010/09/24
    PukiWiki の互換パーサを作ろうとして悩んだ昔の私
  • RESTfulなWebサイトと拡張子を含むURLについて - 檜山正幸のキマイラ飼育記 (はてなBlog)

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

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

    昨日書いた「HTTPメソッド、URL、そして標準化された動詞」、どうも詰めが甘い記事だったので、少し訂正と補足をします。以下で、HTTPクライアントとしては、現存するブラウザを想定しています。 ([追記]総括を「そろそろ決着、HTTPメソッド、URL、そして標準化された動詞」に書きました。[/追記]) 動詞としてのpost 動詞(あるいは抽象メソッド)とは、具体的なHTTP通信とは離れて、リクエストの意図・意味を記述する記号です。最初に、この動詞を整理して、それをHTTPを使って表現する方法は後から考える段取りにします。しかし、もともとのHTTPメソッドも、その来の意図・意味を動詞として定義しておきます。混乱を避けるために、現実のHTTPメソッドは大文字、抽象化された動詞は小文字で書くことにします。 HTTPメソッド 意味/使い方 対応する動詞 GET リソース(の表現)を取得する vi

    訂正補足:HTTPメソッド、URL、そして標準化された動詞 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • HTTPメソッド、URL、そして標準化された動詞 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    [追記]「訂正補足:HTTPメソッド、URL、そして標準化された動詞」、「そろそろ決着、HTTPメソッド、URL、そして標準化された動詞」を書きましたので、あわせてお読みください。[/追記] 「HTTPメソッドの正統的使い方と現実的対処法」において、HTTPメソッドの来の意味と、その来の意味を損なわずにブラウザからリクエストする方法を述べました。最近また、Catyとの関係で、HTTPメソッドとURLをどう使うのが望ましいのか? という問題を考えました。 HTTPメソッドには、GET, PUT, DELETE, HEAD, POST がありますが、ブラウザから発行できるメソッドはGETとPOSTだけです。「HTTPメソッドの正統的使い方と現実的対処法」において、GET/POSTを使って他のメソッド(PUT, DELETE, HEAD)を表現するために、_methodというクエリパラメータ

    HTTPメソッド、URL、そして標準化された動詞 - 檜山正幸のキマイラ飼育記 (はてな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)
  • 最小抽象ファイルシステムの仕様案 その2 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「最小抽象ファイルシステムの仕様案」の続きです。 さて、具体的な例外の種類ですが、POSIXのerrnoを拝借すればいいんじゃないでしょうか。 あーそれと、HTTPステータスコード(例えば、http://www.studyinghttp.net/status_code)も考慮したほうがいいかも。 と、例外/エラーに関する取り決めについて考えます。 POSIXのエラー番号とHTTPステータスコード Erlangのマニュアル(http://www.erlang.org/doc/man/file.html)に列挙されているPOSIXのエラー番号は32個あるのだけど、そのなかから使いそうな17個を選んでみました。 eacces - permission denied eagain - resource temporarily unavailable ebusy - file busy (リソースが

    最小抽象ファイルシステムの仕様案 その2 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Caty/Python Prototype-1 version 0.1.0 リリース - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ダウンロードは、bitbucket(http://bitbucket.org/m_hiyama/caty-python-proto1/downloads/)からしてください。詳細は「Caty/Python Prototype-1 version 0.1.1 @ Bitbucket」をご覧ください。 次のURLから、tar.gz または zip ファイルをダウンロードできます。 http://www.chimaira.org/tools/caty001.html [追記] ガーン、配布パッケージを作る途中で行った変更でバグを入れてしまったよ。caty.pyを起動してもファイルIOエラーが出てしまうと思います。Windowsなら、 WindowsError: [Error 3] 指定されたパスが見つかりません。 という感じ。 とりあえず、次の手順を追加してください。 アーカイブを展開するディレ

    Caty/Python Prototype-1 version 0.1.0 リリース - 檜山正幸のキマイラ飼育記 (はてなBlog)
    mickn
    mickn 2009/10/27