タグ

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

  • 論理の限量子の使い方が嫌でも分かってしまう話 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    論理の限量子 -- つまり全称限量子(記号は'∀')と存在限量子(記号は'∃')-- の使い方が分からない、という質問・相談を受けることがあります。なかでも、「∀と∃の順序を交換してイイの? それともダメなの?」はFAQ〈Frequently Asked Question〉でして、ここ1年でも4回聞かれた気がする。 内容: like関係 like関係の記述・表現 有向グラフ 表〈テーブル〉 碁盤目 他の例も 誰からも好かれる人 好きな人はいますか? 好きな人は一人だけ 言霊は困るんだけど like関係 論理式の意味や使い方を、日常生活や自然言語の比喩的事例を使って説明するのはヨロシクナイと僕は思っています。しかし、最初のとっかかりに関しては、比喩的事例も致し方ないですね。人間関係の記述を例題にします。 A, B, C, D の4つの要素を持つ集合Xを考えます。 X = {A, B, C,

    論理の限量子の使い方が嫌でも分かってしまう話 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2019/03/12
  • オーバーロードは何故にかくも難しいのか:Haskellの成功と失敗 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    名前や記号の多義的使用をオーバーロードと呼びます。オーバーロードとは「曖昧な表現を使う」ことだ、と言ってもいいでしょう。曖昧さを嫌うコンピュータに、曖昧な表現を理解させるのは難しいことです。コンピュータに関する技術や理論以前に、「我々人間は、曖昧な表現をどう使い/どう解決しているのか?」と問う必要があります。 内容: Haskellの場合 -- The・構造の仮定 要素とコレクションの事例 型クラスの境界線は引けるのか 名前・記号の問題は難しい Haskellの場合 -- The・構造の仮定 「入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;)」において: 後知恵で言えば、[注:Haskellのオーバーロード・メカニズムは]「悪いお薬」だったと思います。服用するとモノ凄く元気になるが、長期的には心身を蝕んでしまうお薬だったと。 Haskellが実装した記号の乱用はやはり

    オーバーロードは何故にかくも難しいのか:Haskellの成功と失敗 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2016/09/30
  • 林晋さんのこと、根拠なきイチャモンのこと - 檜山正幸のキマイラ飼育記 (はてなBlog)

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

    林晋さんのこと、根拠なきイチャモンのこと - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2015/11/13
  • もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2014初頭に書いた「WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows」の最後の文: ブランチは、Gitのなかで最も重要でありながら最も分かりにくい概念でしょう。表面的な言葉に騙されず、先入観を持たず、SourceTreeの視覚的表示(樹形図)の力を借りながら学習するのが、理解への一番の近道です。 そんへんの詳しいことはまたの機会に述べるかも知れません。 1年半以上たってしまいましたが、「またの機会」がやって来ましたよ。ええ、Gitの説明をします、ブランチを中心に詳しく。 「基礎編」と「ブランチ編」で2回に分けようかと思ったけど、長大な記事として一挙公開。これからGitを使う人が対象ではありません。Gitが何をやっているのか、自分が何をやっているのかイマイチ自信が持てない方向けです。 ブランチやマージって、なん

    もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2015/10/01
  • 便利で超強力な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)
    teppey
    teppey 2014/11/29
  • 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)
    teppey
    teppey 2014/11/29
  • Linux/Unixコマンドラインでちょっとした事をするには - 檜山正幸のキマイラ飼育記 (はてなBlog)

    まずは事の発端を説明します。 /etc/passwdファイルは、ユーザー情報が1行に1ユーザー分ずつ書かれたテキストファイルです。1行はコロンで区切られた7つのフィールドからなります。僕は、最初のフィールドであるユーザー名と、最後(7番目)のフィールドであるログインシェルだけを確認したかったのです。cat /etc/passwd として、直接目で見るだけ*1でもユーザー名とログインシェルを読み取れるのですが、ちょっと辛い。なるべく見やすく表示したいのです。 この課題を狂言回しにして、Linux/Unixコマンドラインでちょっとした事をやるための地味なコマンド達とシェル構文を紹介します。「スクリプト言語(例えばperl)を使えばいいじゃねえか」というご意見・ご指摘はゴモットモだと思いますが、今回は聞く耳持ちません。(スクリプト言語処理系ではない)コマンドとシェルの範囲内でのもっと良い方法は是

    Linux/Unixコマンドラインでちょっとした事をするには - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2013/11/01
  • RESTfulなWebサイトと拡張子を含むURLについて - 檜山正幸のキマイラ飼育記 (はてなBlog)

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

    RESTfulなWebサイトと拡張子を含むURLについて - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2012/11/27
  • CSS3-JQuery時代のツリーパターン記述 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ツリーの議論を理論的な文脈でするとき、ツリーまたはツリーのパターンを x<C> のような形で記述することがあります。XMLで言えば、xはタグ名(要素名)でCが内容です。例えば、ol<simpleLi, simpleLi> とか。しかし、内容を囲むのに '<' と '>' を使うのはいかにも混乱しそうですよね。'{' と '}' に変えましょう。'<' と '>' はタグ名を囲むのに使うほうが自然でしょう。 そうすると、<ol>{simpleLi, simpleLi} のような記述になります。この書き方を少し発展させるだけで、たいていの用途に間に合ってしまうような気がします。 内容: 人間による読み書きを重視しよう 正規表現 定数text タグパターン ツリーパターンの書き方 拡張するなら 人間による読み書きを重視しよう W3C XML Schema (XSD) は、スキーマ記述自体がXML

    CSS3-JQuery時代のツリーパターン記述 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 分散バージョン管理システムは誤解されやすいイノベーション(ジョエルも言っている) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2009年6月12日に、僕は分散バージョン管理システムMercurialについて短い記事を書いて、そこで次のような言ってます。 実は僕は、分散バージョン管理という発想と仕掛けを最初はまったく理解できず、「エエーッ?なんだそれ」「そんなんでうまくいくのかよ?」とかグダグダ言っていたのですが、いったん使い始めればラクチンラクチン。 要するに、最初は誤解に基づき否定的だったってことね。僕と同じような誤解をする人がいるような気はしたのですが、あまりうまく解説できそうにないので*1: 「四の五の言ってないで、使ってミソ」ってことです。 最近になって、ジョエル・スポルスキ(Joel Spolsky / 青木靖 訳)の「分散バージョン管理で間違いないって、ベイビー」という記事を目にしました。2010年3月17日に書かれた記事です。 なんと、あのジョエル・スポルスキも最初は誤解に基づき否定的だったらしいで

    分散バージョン管理システムは誤解されやすいイノベーション(ジョエルも言っている) - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Mercurial、この程度知ってるだけでけっこう使えるよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    僕は、分散バージョン管理システムMercurialをサッパリ理解できなかったわけですが、「これは便利だ」と思ってからはずっと使っています。しかし、ジョエル・スポルスキのように研究したわけではなくて、数個のコマンドを覚えただけです。日常的作業は、それらでなんとか間に合っている感じです。なので、僕が使っているコマンド(少数です)を紹介します。 bashのコマンドラインで紹介しますが、使っているOSはWindowsです。とはいえ、コマンドラインでの使い方はOSによらず共通のはずです。 コマンドの詳しい解説はしません。あまり考え込んだり、躊躇はせずに; 「四の五の言ってないで、使ってミソ」ってことです。 “Mercurialのすすめ”や“Mercurialの概念的な解説”を一応挙げおくと: http://local.joelonsoftware.com/wiki/%E5%88%86%E6%95%A

    Mercurial、この程度知ってるだけでけっこう使えるよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • プログラマのためのJavaScript (7):プロトタイプ継承の正体

    JavaScriptには、クラスとその継承はないが、プロトタイプベースの継承をサポートしている」と、まー、これはよく言われる決まり文句です。がしかし、JavaScriptにおけるアレを継承と呼んでいいものかどうか? 「継承」といえば、多くの人が通常の継承、つまりクラスベースの継承をイメージするでしょうし、無意識に通常の継承とのアナロジーを追うことになるでしょう。これは危険だと思いますよ。 「プロトタイプ」とか「継承」という言葉から連想する常識的なイメージは全部捨てて、事実を白紙から眺めましょう。その事実とは、「JavaScriptには、実行時プロパティ検索のメカニズムがある」と、それだけです。 今回の内容: 「プロトタイプ」じゃ、なんのことだかわからない __proto__プロパティ、__proto__オブジェクト、__proto__チェーン __proto__チェーンを追いかけてみる

    プログラマのためのJavaScript (7):プロトタイプ継承の正体
  • ソフトウェアにとって大事なこと: 正しさが判断できること - 檜山正幸のキマイラ飼育記 (はてなBlog)

    良いソフトウェアとは何か? という基準は人によって違うでしょう。機能が豊富、使いやすい、値段が安い、などの条件がありますよね。僕の関心と価値観から言うと、「正しさが判断できる」ことを重視します。良いソフトウェアの基準というよりは、むしろ、「これを満たさないとダメだよ」という基準なのですが、クリアするのは容易ではありません。 内容: 正しさが判断できるとは 挙動の予測可能性 事前状況の制御可能性 事後状況の観測可能性 まとめ 正しさが判断できるとは 正しいソフトウェアを作りたいと切望するのですが、そうはいってもソフトウェアは人間が作るもの、人間は間違うのでなかなか正しいソフトウェアは作れません。それは致し方ないことだと思っています。つまり、ソフトウェアはたいてい正しくないのです。できるだけ正しくしようという努力が続くだけです。しかし、もし正しさが判断できないなら、「より正しくしよう」という目

    ソフトウェアにとって大事なこと: 正しさが判断できること - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2012/06/30
  • プログラマのための「ゲーデルの不完全性定理」(1) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「プログラマのためのJavaScript」の番外シリーズ -- いやっ、ホントに。 これはシリーズのハブエントリーです。番号を(0じゃなくて)1にしたのは、全体目次だけじゃなくて内容が含まれるから。 ※ 印刷時にはサイドバーは消えるはずです、お試しください。 シリーズ全体目次(予定) (この記事;総論) 速攻速習編 自己適用からゲーデル化へ 「展望」への緊急パッチ(オハナシだよ) Reflective JavaScript 停止問題の構造 不完全性定理の構造 今回の内容: ゲーデルの不完全性定理とプログラミング ゲーデルが示したこと 不完全性定理の兄弟 -- 停止問題 JavaScript使うんだもんね 関連する記事(参考) 次の記事 速攻速習編 ●ゲーデルの不完全性定理とプログラミング 「ゲーデル」(人名;Kurt Godel、'o'の上に点々が付いてる)や彼の「不完全性定理」とかって、

    プログラマのための「ゲーデルの不完全性定理」(1) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2012/06/30
  • 抽象構文記法に基づく構文記述と一般代数系 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    BNF(バッカス/ナウア記法)は、構文を正確に記述するためにとても便利です。僕はよく使ってますし、このダイアリーでもけっこう言及してますね。 http://d.hatena.ne.jp/m-hiyama/archive?word=BNF BNFでは区切り記号や予約語なんかも具体的に記述しますが、パージングが終わった後のデータ(抽象構文木とか)では、区切り記号や予約語の文字や綴りはどうでもいいモノです。構文的なデータ構造だけが問題となります。 パーズ済みデータをプログラムで扱うときは、BNFの情報は具体的で詳しすぎてかえって迷惑です。そこで思い出したのが抽象構文記法(Abstrac Syntax Notation)です。抽象構文記法と一口に言っても、いろいろな流儀・解釈があったりします。ここでは、「構文的データ構造を操作する関数達を使って、構文を定義する方法」くらいに捉えます。 いくつかの例

    抽象構文記法に基づく構文記述と一般代数系 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2012/06/28
  • 有限集合と写像の圏もJavaScriptで書いてみた、遊んでみてね - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日、しりとりの圏のJavaScript版実装を示しました。モニャドセミナーの最後のほうでMapFO(Map category over Finite Ordinals)という例も出したので、これもJavaScriptにしてみました。FirefoxブラウザにFirebugが入っていれば、[F12]キーですぐさまいじれます。 大事なのは実感、イメージ、具体性; ぜひブラウザ上で圏の実例を試してみてください。また同じセリフを繰り返しますが、 目や手を動かしてやってみないとハジマリません。ジッと考えていても、どうせ分かりません。 内容: 使い方 有限オーディナル 写像 写像を作る 射(写像)の域と余域 射(写像)の結合 恒等射 しりとりの圏の実装との違い まとめ 使い方 まずは、使い方。Firebugで実行するときは、次のようなHTMLファイルをFirefoxにロードします。このHTMLファイル

    有限集合と写像の圏もJavaScriptで書いてみた、遊んでみてね - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2012/06/28
  • Makefileの書き方:プログラミング言語Make - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「Makefileの書き方、その勘どころ」にて: まだ、関数を使ってソースやターゲットを生成する方法とかパターン規則の説明をしてないので、続きを書くと思います。調べているうちに、GNU Makeの構文(の一部)はある種のプログラミング言語だという気がしてきました;そのことも書きたい気がしてます。 というわけで続きを書きます。 実は、関数呼び出しを使うときは、代入に「=」を使うより「:=」のほうが適切かつ効率的なときが多いのですが、その話は次の機会にします。 これの説明が中心になります。 内容: 前置き 変数の種類と変数定義 ソースコードの後のほうを参照すること Makeは上から下へと実行していくのだ MakeとLispは似ている 実例 ●前置き 以下、Make一般ではなくてGNU Makeの話です。GNU Makeより古いMakeにも備わっていた伝統的機能の説明はしません。 GNU Mak

    Makefileの書き方:プログラミング言語Make - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2007/10/25
  • Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「ほとんど忘れた、Makefile」 にて: Makefileなんてもう何年も書いたことがないぞ。ウーン、だめだ、忘れている。 「忘れている」ってよりは、僕の知識じゃ古すぎて、改めて勉強しないとダメでした*1。 なにしろ、makeだけじゃ機能が貧弱なんで、cpp(Cプリプロセッサ)やm4(マクロプロセッサ)と組み合わせて使っていた頃しか知らんからね(古すぎ!)。今じゃGNU Makeを(使おうと思えば)どこでも使えるから、GNU Makeを習えばそれでいいじゃないかな。僕は、Windows上のMSYS(MinGW - Minimal SYStem)でGNU Makeを動かしました。 というわけで、GNU Makeの手習いをしたからメモしておきます。以下、名前がMakefileじゃなくても、GNU Makeへの指示を書いたファイルは何でもMakefileと呼びます。 [追記]id:paell

    Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppey
    teppey 2007/10/25
  • 1