タグ

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

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

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

    パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2022/12/05
  • 奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)

    言い訳から始めます。この記事を(途中まででも)読んだ人は、次のように言いたくなるでしょう。 『理論から学ぶデータベース実践入門』は良いなのか悪いなのか、いったいどっちなんだよ?! このは間違いや説明不足があり、誤読されやすい表現も多く、その点では残念なです。しかし、面白いアイディア、するどい観察も含まれていて、行間を補い深読みすれば、多くの示唆を得られるでもあります。 よって、「良い/悪い」の二択では答えられません。良い点と悪い点の両方を、できるだけ客観的に記述するしかないのです。それをした結果、長い記事となりました。 内容: ことの発端: zhanponさんの批判 奥野擁護と奥野批判 僕の擁護・批判の方針 zhanponさんの指摘の再検討 1. 論理的な矛盾とデータの不整合を混同している 2. 命題論理の限界についての説明がおかしい 3. 古典論理の定義を間違えている 4.

    奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 林晋さんのこと、根拠なきイチャモンのこと - 檜山正幸のキマイラ飼育記 (はてなBlog)

    先週のことでタイミングが遅れていますが、 http://d.hatena.ne.jp/JavaBlack/20151103/p1 相変わらず、何の根拠も示さずに知ったふうな事をのたまう。無根拠・非論理の芸風は死ぬまで治らない(治さない)のでしょう。 林晋さん*1へのたちの悪い言及を目にしてしまったので、一言いわずにはおれない気分です。 まず、林晋さんの著書について述べます。林さんのは3冊持っていて、目次と索引しか見ない僕*2にしてはよく参照してます。 コロナ社の『数理論理学』*3は手が届く場所に置いてあります。 数理論理学 (コンピュータ数学シリーズ) 作者:晋, 林発売日: 1989/12/20メディア: 単行 カリー/ハワード対応について説明している論理のは少ないので、非常に助かります。かつてラムダセミナー/モニャドセミナーでカリー/ハワード対応を題材にしたときのネタはこれです

    林晋さんのこと、根拠なきイチャモンのこと - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2015/11/09
  • Mingw-w64/MSYS2 を入れなくても Git for Windows で間に合うみたい - 檜山正幸のキマイラ飼育記 (はてなBlog)

    長年MinGW/MSYSを使い続けているのですけど、最近あまりアップデートされません。例えば、bashは9年前のversion 3.1のままです。世間ではversion 4.2, 4.3が使われているのに。 MinGW/MSYSの後継らしきMingw-w64とMSYS2の組み合わせに替えようかと思ったのですが、Git for Windowsがあれば十分な気がしてきました。 内容: MinGWとMSYS ディレクトリレイアウトとPATH環境変数 Mingw-w64とMSYS2 Git for Windowsのシェル環境 まとめ MinGWとMSYS MinGWとMSYSは一緒に使っている人が多いと思いますが、目的が異なる2つのシステムです。MinGW/MSYSとよく比較されるCygwinは、単一のシステムとしてWindows上にPOSIX環境を実現するものです -- 目的も方式も明快です。こ

    Mingw-w64/MSYS2 を入れなくても Git for Windows で間に合うみたい - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2015/10/16
  • 最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    TypeScriptでは、コンパイルが必要です。プログラムをブラウザーとNode.jsの両方で使おうとすると、さらに加工が必要です。ミニファイだの文書も作るだのすると、ちょっとしたビルドプロセスとなるので手作業では辛くなります。 今更Makeでもないよなー、と思い、最近のビルドツールを試してみました。 内容: 流行りすたりが激しすぎる gulpを使ってみる:こんなサンプル gulpのビルドスクリプト タスクランナーってのはビルドツールとは違うのか? ビルドツールは進化したのか 参考資料: 例題のファイルとコマンドの一覧 ソースファイル 追加の話: gulp問題ひきずり:ウォッチがまたおバカ過ぎる 流行りすたりが激しすぎる 「確かGruntってツールがあったよな」と、インストールと使い方を調べていると、やたらにgulpって単語が目立つんですよね。Gruntのライバルの新興勢力らしいです。 「

    最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2015/05/11
  • 広告表示の位置にはご用心 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    左の赤枠内の写真、この人は「無職出水衛(でみずまもる)容疑者(48)」ではありません。赤枠は広告なんですよね。実際には「セラピー音楽家の牧野俊浩さん」です。 しかし、そうだとわかってもなお、この写真の人が「無職出水衛(でみずまもる)容疑者(48)」だという印象が払拭できません。 それにしても、「無職出水衛(でみずまもる)容疑者(48)」って、悪い人なんでしょうか。いや、盗みはいけないけども……

    広告表示の位置にはご用心 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2013/12/13
  • デシリットル問題 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    長男:「おとうさん*1、デシリットルって習った?」 父親:「あー、習ったよ」 長男:「俺も習った。けどさ、デシリットルって見たことないんだよね。おとうさんは使う?」 父親:「リットル、ミリリットル、キロリットルは使うけどなー …」 長男:「デシリットル使う? 見たことある?」 父親:「ウーン、ないな。君よりはるかに長く生きてるけど、小学校の教科書以外で見たことないわ」 長男:「おとうさんも見たことない。じゃ、なんでアレ習うの?」 父親:「アレねぇ、デシリットルねぇー」 長男:「意味ねーじゃん」 父親:「いやまー、すぐに役に立つもんばかりが教育じゃないからね」 長男:「役に立たなくてもいいけどさ、どんな意味があるの?」 父親:「デシリットル教える意味ねぇ、エーと、ウーンと …」 よくわかりません。 *1:オヤジと呼ばれることも最近多い。

    デシリットル問題 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2013/09/06
  • プログラミング言語Makeの関数型フラグメント:まとめとサンプル - 檜山正幸のキマイラ飼育記 (はてなBlog)

    一時Makefileに凝っていました。Makefileの記述構文のなかに、「Lispに似た小さな関数型言語が埋め込まれているんだ」とか言ってましたよね。あれはまー、遊び半分なんだけど、このテの知識は、実際にMakefileを読み書きするときにも役にたちます。 過去のMakefile関係エントリーを読み返そうと思ったら、けっこう量があるし、紆余曲折があるんで、ここに整理してまとめておこうと思います。 内容: 参考資料 概念と用語 データ型 変数 関数 制御構造 画面出力と強制終了 ●参考資料 Makefileに関しては、次のエントリー群でゴタゴタと説明しています。 Makefileの書き方、その勘どころ Makefileの書き方:プログラミング言語Make プログラミング言語Make 補遺:引数付きの関数 Make 補遺の補遺:遊んでいるだけ Make言語で算術演算 <-- バカ! もっとも

    プログラミング言語Makeの関数型フラグメント:まとめとサンプル - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2013/08/26
  • Web上で発生する膨大な量の不愉快と困惑 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    とあるフォームを入力したときのエラーメッセージ。 契約者名 姓(フリガナ)は全角カナで入力してください。 契約者名 名(フリガナ)は全角カナで入力してください。 お客様番号をご利用されているご住所の番地号 小字は全角で入力してください。 お客様番号をご利用されているご住所の番地号 番地は全角で入力してください。 お客様番号をご利用されているご住所のフロア・部屋番号は全角で入力してください。 フリガナに関してはひらがなを使ってしまった。番地などの数字は、僕は常にアスキーコードのほうが入るように仮名漢字変換(IME)を設定している。それでエラー … って納得いかない! 僕個人でも、こういう事態にしょっちゅう出会う。Web全体では、このての不愉快と困惑の総量は膨大なものだろう。毎回「なんで?」と思うわけだが、実際なんでこういうエラーを出すのかが分からない。理由があるのだろうか、単に悪しき習慣が固

    Web上で発生する膨大な量の不愉快と困惑 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2013/05/30
  • フローチャートをめぐる迷信と妄言と愚昧 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2011年12月20日の記事で: [フローチャートについて書くのは] 僕にとっては定期ポストみたいなものです。年に一,二度はこのことを言っておきたい、みたいな。 と書きました。それから半年たってないのですが、なんかまたフローチャート・ネタをやりたくなりましたね。 そう思い立ったのは; 「フローチャートを復権させよう -- 2020年代のプログラミングへ」のブックマークに、羽生章洋(id:habuakihiro)さんが次のコメントを残しておりまして、 昔フローチャートについて講演したりポジティブなことを書いたりしたら偉い叩かれたなあ。似たケースにJavaScriptの記事書いたときも叩かれてその後gmail+ajaxブームが来たら一転したり。みんな原理原則より流行が好き。 いまさらながら当時の情報を探して読んでみたのですよ。2006年夏、羽生さんの講演について大森敏行記者が書いた記事が残って

    フローチャートをめぐる迷信と妄言と愚昧 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2012/06/01
  • Windowsのcmd.exeとbashのどちらでも実行できるバッチファイルの書き方 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    僕はWindows上でMinGW/MSYSを使っています。シェルはbashを使っていることが多いのですが、Windowsのcmd.exeもけっこう使います。cmd.exe向けに書いたバッチファイル(コマンドファイル)を、bashから実行したいときがたまにあります。どうしたらいいのでしょう。 バッチファイルとbash 例題として、次のようなバッチファイルshow-memo.batを考えます。 @echo off rem 一時的なメモ書きを表示 if not exist C:\tmp\MEMO.txt goto NoFile type C:\tmp\MEMO.txt goto End :NoFile echo メモ C:\tmp\MEMO.txt はありません. :End show-memo.batは、PATH環境変数に含まれるディレクトリに置いてあるとします。当然に、cmd.exeからsho

    Windowsのcmd.exeとbashのどちらでも実行できるバッチファイルの書き方 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2011/07/30
  • XPathの要点を少し抽象的にまとめておく - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ものすごく久しぶりにXPathを使おうと思ったのですが、「XPathってなんだっけ?」という程度に忘れています。 細部はリファレンスマニュアルを調べれば分かることなので、概念的にどんなものかを思い出すのが先。概念や構造を手っ取り早く理解するには、抽象化したほうが都合がいいです。抽象化すると質がコンパクトにまとまるので忘れにくいし、忘れても思い出す手間も少ないですからね。 内容: ツリー、有向グラフ、ノードセット 全順序付きノードセット 軸 コンテキスト ステップ ロケーションパスの評価 続きの記事:XPathの構文を割と具体的にまとめておく ツリー、有向グラフ、ノードセット XPathが相手にするデータ構造はツリーです。XMLのツリーには属性ノード、名前空間ノードとかもあるので、ノードにも辺にもいろいろな値(ラベル)が付着している有向グラフと考えましょう。ルートが特定されていてサイクルが

    XPathの要点を少し抽象的にまとめておく - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2011/07/01
  • 不純な計算科学 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「不純」は僕のスローガンですね。近代的(モダン)なプログラミングやソフトウェア工学では、排除、あるいは忌避されている概念や手法を積極的に取り上げようということです。アンチモダンと言ってもいいけど、なんか哲学用語みたいだから「不純な計算」、「不純なプログラミング」と呼ぶことにします。で、その不純なモノ達とは: 副作用や例外 goto文 フローチャート 多重継承 自己改変コード 副作用や例外は、モナド/余モナド/両モナド(双モナド)などを使えば定式化できます。分合律(dissociative law)のような特殊な計算法則を使うのも楽しいですね。 シーケント計算と例外処理コード 色付き絵算と分合律 両クライスリ圏が構成できた カテゴリカル・モデリングに向けて goto文は、継続や米田埋め込み(CPS変換)で解釈できる場合もあります*1。 CPS(継続渡し方式)変換をJavaScriptで説明し

    不純な計算科学 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2010/12/27
  • メイヤー先生の偉大さとCommand-Query分離 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    バートランド・メイヤー(Bertrand Meyer)先生は、とにかく偉大です。局所的には、無理筋な例え話や強引な主張で僕らを笑わしてくれるのですが、全体としては実にまったく正しいことを言っています。 メイヤー先生の主張のなかでも、僕がもっとも影響を受けて、はてしなく役立っているのは「Command-Query分離の原則」です。オブジェクトやシステムのインターフェイス&実装を「CommandとQueryに分けろよ」という提案。Commandは値を持たず、副作用(つうか、主作用だけど)だけを持ちます。Queryは副作用を持たず値だけを返します。 Commandとは何であるか、Queryとは何であるか、副作用を持つ/持たないとは何であるか -- これらの概念は、日常直感に頼るだけではなくて、正確に定義することができます。 Queryが副作用を持たないことから、同じQueryを二度発行すると、同

    メイヤー先生の偉大さとCommand-Query分離 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2010/12/20
  • 個人デジタル出版で儲け、られそうにない 2010年春・編 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2008年に次の記事を書きました。 個人デジタル出版で儲け、られそうにない それと関連する記事: 人は、できるだけ安く買うことと、自分の評価を伝えることのどちらを選ぶだろう 読者・購入者にとって便利で妥当だと思える判断をすると、著者・出版者には苦しい、というジレンマを述べました。 2008年のあの当時と比べて小額決済の環境は改善されていると思います。キンドルやiPadのような新しい電子出版プラットフォームも出てきました。しかし、質的に事情が変わったのかというと、そうは思えません。個人デジタル出版はやっぱり難しいでしょうね。 それでもずっと僕は、個人(あるいはそれに近い小規模)での出版には興味を持ち続けています。自分が考えたり調べたりしたことを書いて伝える行為は好きなので、それに課金できて収益になれば随分と幸せだろうな、と思うからです。 実は情報商材ASPで買ってみたのだった 2008年に

    個人デジタル出版で儲け、られそうにない 2010年春・編 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2010/04/26
  • WindowsでHOMEをどこに設定すべきかか? あー悩む! - 檜山正幸のキマイラ飼育記 (はてなBlog)

    新しいPCに移行中なんですが、以前から気になっていたことがやっぱりスゴク気になる。それは、ユーザーのホームディレクトリの問題です。 Windowsもホームディレクトリの概念があって、環境変数USERPROFILEにホームディレクトリのパスがセットされます。HOMEDRIVEとHOMEPATHにも同じ情報が入っています。(ただし、MSYSのbashはなぜかHOMEPATHを「\」に書き換えてしまいます。) %USERPROFILE% = %HOMEDRIVE%%HOMEPATH% さて、僕が使う多くのコマンドやツールが環境変数HOMEを参照します。HOMEとUSERPROFILEを一致させれば話は簡単ですが、Windowsのホームには最初から色んなファイル/フォルダーがゴチャゴチャあるし、異常に長い名前のファイルが置いてあったりします。例えば: NTUSER.DAT{6cced2f1-6e0

    WindowsでHOMEをどこに設定すべきかか? あー悩む! - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 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、まー正規表現だな - 檜山正幸のキマイラ飼育記
    craf
    craf 2010/02/02
  • シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Java BlockingQueueで遊ぶ:パイプラインごっこ」でパイプラインの話をしたので、来の、つまりUnixのパイプやリダイレクトを少し調べてみました。 たまに話題となる some-command >file 2>&1 と some-command 2>&1 >fileの挙動の違いについて、「シェルはコマンドラインリダイレクトの指定を右から左に解釈実行する」なんて説明が見つかりました。んなバカな! パージングは左から右にするものですよ。パーズツリーを逆順にたどることはできるけど、そんなことする必然性はなんにもないよ。 次の記事を読むと、「右から左」なんて事情じゃないことが分かるでしょう。 UNIXの部屋 検索: リダイレクト シェルのリダイレクトにまつわる失敗 さてここでは、複雑なリダイレクト処理も完全に理解できる処方箋を示しましょう。例えば、次のコマンドラインが何をするか分かる

    シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • sedにおける改行の表現とシェルの複数行入力 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    んもう、毎度忘れること; sedで改行を表現するには、バックスラッシュに続けてホントに改行を入れるのです >自分。 # コロンを改行に置換する s/:/\ /g 何度、s/:/\n/g と書いたことか。 コマンドラインから使うときは、シェルが「"」「'」「`」など引用符の開き閉じを認識しているので、引用符内で改行しても第二プロンプト($PS2)が出て、コマンドライン入力を続けられます。よって、引用符内ならホントの改行もOK。 $ echo $PATH | sed -e 's/:/\ > /g' | less

    sedにおける改行の表現とシェルの複数行入力 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2008/08/11
  • JavaScript用のアサーションを作ってみる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ここで触れたシステム、ある程度は動くので、サンプルを作り始めました。すると、あれまー、随分とバグがあるなー。 これは全面的に僕の監督責任ですわ。そもそもが、 たぶん、こうだから、 おそらく、こうすればよくて、 うまくいけば、あーなるはずだぜ。 みたいな方針しか言ってないし、「防衛コードを書くな」といったアドバイスも説明不足でうまく伝わらなかったようです。 内容: 防衛コード、うざすぎ 防衛と契約(コントラクト)は違うんだよ アサーションを使えばこうなる 安直なアサーションを作ってみる ライブラリコードとビルドシステム ●防衛コード、うざすぎ 防衛コードに関して言えば、歴戦の勇士のような職業プログラマが「俺は誰も信じねー!」みたいなコードを書くわけですよ。 function sum(x, y) { var objectUsed = false; if (x === undefined) {

    JavaScript用のアサーションを作ってみる - 檜山正幸のキマイラ飼育記 (はてなBlog)