タグ

2009年8月23日のブックマーク (21件)

  • I/O Reader - PHP Closures (and Y Combinator in PHP)

    I've updated the closure script and changed the syntax of the inner-lambdas. See this post for the update. One thing I've always wanted in PHP are closures. I know someone else has already tried to add them in without making a PHP extension, but I decided that I wanted to stay away from PHP's eval. I like the way my solution has turned out except that it requires that get_defined_vars()--or a pse

  • 言語表現法講義 - あどけない話

    言語表現法講義 (岩波テキストブックス) 作者: 加藤典洋出版社/メーカー: 岩波書店発売日: 1996/10/08メディア: 単行購入: 9人 クリック: 96回この商品を含むブログ (50件) を見る 文章の書き方をテーマとした名著に出会うと、心の中に爽やかな風が吹き抜けていく。こんな風に文章を書けるようになりたいなと。 このを読んで吹いた風は、爽やかではなかった。熱風に吹き飛ばされそうになった。 このは、9年に渡る大学での講義録である。熱風の源は、著者の態度にある。学生と真剣に向き合っているのだ。 なぜ最近の学生は文章を書くのが嫌いか。その理由がすぐにわかった。なぜかというと、いくら書いても教師がこれをしっかり読まないからだ。 この授業では、学生の書いた文章を著者が読み授業で批評する。ときには厳しく批判し、ときには「これはちょっと僕には書けない文章だ」と褒める。 私が大学の先生

    言語表現法講義 - あどけない話
  • 文章の書き方 - あどけない話

    2006年に IIJ の新人研修で「文章の書き方」という講義を担当しました。そのときの資料を何人もの人に個別に差し上げていたのですが、それも面倒になってきました。新人研修の担当者に問い合わせたところ、公開しても問題ないとのことでしたので、資料を公開します。 「文章の書き方」の資料

    文章の書き方 - あどけない話
  • Mozilla Re-Mix: FirefoxのサイドバーでTwitterをモニタできるアドオン「Twitbin」

    FirefoxでTwitterをやっている方なら、様々なアドオンを駆使してフォローしているユーザーの投稿をチェックしたり、ポストしたりしていることでしょう。 ツールもそれぞれ特徴があってどれにすればいいのか悩むところですね。 今回はそれら多くのアドオンの中から、サイドバーでTwitterをコントロールできる「Twitbin」を使ってみました。 「Twitbin」は、FirefoxのサイドバーでTwitterにポストできるのはもちろん、フォロー中のユーザーの投稿を表示してチェックしたり、返信、RTなども行うことができるというアドオンです。 アドオンをインストール後、ツールバー、またはステータスバーに追加された専用のボタン  をクリックすればサイドバーにツールが開くようになっています。 初期設定では、以下のようにパブリックコメントが表示されるようになっていますので、上部のボタンから「ログイン」

  • 新Emacsの強力な置換機能を使いこなす - ZDNet Japan

    6年ぶりの大きなアップデートとなったEmacs 22.1、CVS先端の開発バージョンを使っているユーザは、なんとなく見過ごしてしまっているかもしれないが、新しい機能には便利なものが多い。ここでは、特に強化された置換機能について取り上げる。使いこなせば強力なので、是非使ってみて欲しい。 筆者など : 後藤大地(オングス) チャネル名 : ZDNetオープンソース URL : http://japan.zdnet.com/oss/story/0,3800075264,20350805-2,00.htm 6年ぶりの大きなアップデートとなったEmacs 22.1、CVS先端の開発バージョンを使っているユーザは、なんとなく見過ごしてしまっているかもしれないが、新しい機能には便利なものが多い。ここでは、特に強化された置換機能について取り上げる。使いこなせば強力なので、是非使ってみて欲しい。 re

  • Diary of 11 2007

    世間では emacs しか使ってないように思われる私ですが、意外とエディタはい ろいろ使ってます。xyzzy やメモ帳や visual studio の IDE、そして、 我らが永遠のライバル vi。 RMS に 「viのフリーソフトウェア版を使うことは罪ではなく、苦行である」 とまで 言われた vi ですが、操作を覚えれば中々快適です。 emacs 風のキーバインドも使えるしね。 vi の中で日語を入力する方法は未だにわかりませんが… さて、最新の vim7 ではなんと scheme が使えるらしいですよ! と思ってぬか喜びしたのは良いんですが、vim 自体をコンパイルしないといけ ないのか。 lisp scheme で思い出したけど、{emacs-}lisp-mode の括弧を quack みたいにゴテゴテした表示にしたかったので、次のように。 (defvar lisp-paren-

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Emacs で正規表現 + 関数を使った置換。 - 日々、とんは語る。

    置換というと、エディタの根幹となる機能であり、正規表現はそのベストオブパートナーです。 ですが、Emacs の正規表現はちょっと特殊で、しかも機能的にもしょぼかったりするので、正規表現を使った置換を行なう場合は、Perl など外部に任せるという方法を良く目にします。 それはそれで、Emacs の特殊な正規表現の文法を覚えなくて良いので便利なのですが、どうせだったら Emacs で完結させたいと思うのが世の常です。 ちょとうど、lower-camel caseな文字列とアンダースコア区切りな文字列の相互変換をRubyで - y_tsuda's blog - s21gという記事を見て、こういうのは Emacs が得意だよねと思いながら、脳トレのつもりで挑戦したら、意外と嵌り所満載でした。 LCC → underscore を Emacs で行なってみる。 Emacs で正規表現を使った置換を行

    Emacs で正規表現 + 関数を使った置換。 - 日々、とんは語る。
  • 美しい、ということについて - hommania+blog

  • とりあえず Java コーディング規約を読んで思ったことを幾つか書いてみるよ! - SiroKuro Page

    経緯 > id:SiroKuro > ぶっちゃけ自分の腕試しを兼ねて、こういう間違い探しやってみたいんだけど、何か良い題材は無いかな。だれか紹介してよ。 おぉ、ちょうどいいんじゃないでしょうか?ISID 版。 http://d.hatena.ne.jp/bleis-tift/20090804/1249389793#c1249471653 ということで読んでみました。読んでみた感想は……意外と好感触?だったりします。 とりあえず編 名前をつける時はすべて英語を基としてください。 JavaCodingStandard2004_P.9 クラス名には、機能 ID、連番等の意味のわかりにくい名前を使用しないでください。 JavaCodingStandard2004_P.11 賛成。ローマ字で付けられた名前は見難くてしかたがない。うちはNの規約を使ってるけど、ここが最大の不満点。 パッケージ名は、

    とりあえず Java コーディング規約を読んで思ったことを幾つか書いてみるよ! - SiroKuro Page
  • 2009-08-22

    セキュリティ&プログラミングキャンプ2009のわたしの講義で、「オープンソースにすると企業は損をするんじゃないですか」という質をとらえた質問がでて、講師陣が、いきなりいろいろ議論を始めた。 企業の行動原理は、利益の追求だから、利益を生まないアクティビティは原則として行わない。オープンソースも例外ではない。 利益=売上-経費 なので売上が増えるか、経費が減るかという観点から投資判断をする。当たり前ですな。 例えばマイクロソフトが自社の製品をオープンソースにすると、売上が伸びるか、あるいは経費が減るかというと、どちらもそうとは言えないので、マイクロソフトが自社製品をオープンソース化することは考えられない。先日マイクロソフトがHyper-V向けのLinuxドライバをGPLで公開したことが話題になったが、Linuxドライバを公開する事が自社のHyper-Vの魅力を増し、売上向上を期待して公開した

    2009-08-22
  • わかりやすい文章を書くための7つのチェックポイント | シゴタノ!

    わかりやすい文章を書くための7つのチェックポイントです。 1.その文章の目的は明確か? 2.目的に照らして内容に過剰も不足もないか? 3.読者が知りたい順序で書かれているか? 4.構成する一文一文が一義的に読めるか? 5.分けた方が分かりやすくなる長い一文はないか? 6.はっきり言えることをぼかしていないか? 7.使われている言葉に特定の人にしか通じないものはないか? 『理科系の作文技術』より。 1.その文章の目的は明確か? 文章を書くからには、当たり前ですが、その文章を誰かに読んでもらいたいと思うはずです。そうなると、誰に向けて書くのかがまず問われることになります。 次に、なぜその人々に書かれているのかという問いも生じるでしょう。もっと言えば、その文章を読んだ人にどんな行動を起こして欲しいか、です。 まとめると、 あなたの文章は、誰にどんな行動を期待するものか? という質問に答えることで

  • ところで、すると、考えてみると、ということで。 | シゴタノ!

    ■すると、───────────────────────── 最後のNo.8はシゴタノ!なのですが、こうして振り返ってみると、月次エントリー数が多いブログ(2001年にやっていたのは当時はテキストサイトと呼ばれていましたが)ほど存続月数も高い、という傾向が読み取れます(もちろん例外もあります)。月次エントリー数が多いということはそれだけ更新頻度が高い、ということでもあります。 とは言え、勢い更新頻度が高くなりすぎると「燃え尽き」やすくなるのではないか、とも思っています。上記の表では、例えばNo.1とNo.6とでは月次エントリー数はあまり変わりませんが存続月数が全然違います。 では、月次エントリー数の多寡は何を物語るのか? 先ほど調べ物をしていたらたまたまNo.2のブログがヒットしたため、読み返していたのですが、そこでこの疑問の答えがわかりました。 それは、たとえ存続期間が短くても、熱意を込

    ところで、すると、考えてみると、ということで。 | シゴタノ!
  • www.koguchi.be - emacs lisp - マイナーモードの作り方

    こないだ諸事情あって(というか、趣味ですが) emacs lisp でマイナーモードを書いてました。 メジャーモードは比較的需要があるのか、詳しいページが多いのですが、マイナーモードに関しては詳しいページが無かったりします。 おそらく調べた限りだと おもてなしの空間 が最有力だと思われます。 ここだと、easy-mmode という emacs についてくるマクロを利用した作成方法とスクラッチで頑張る方法と二種類について説明されます。 ただ、(主観的判断ですが)easy-mmode を推しているようで、スクラッチの記述があんまりありません。 そうなると、マイナーモードを作るための勉強方法としてはリファレンスをゴリゴリ読むか、人様が書いてくれたマイナーモードのソースコードをハックする、という選択肢になってきます。 僕は結局 easy-mmode を使いたくなかったので、人様のソースコー

  • HOME > 電算 > Emacs メモ

    HOME > 電算 > Emacs メモ Emacs メモ 最終更新:2008/01/30(水) 目次 キーバインディングの変更 タブ map 関数で面くらうこと 縦書きポストスクリプト・ドライバ Emacs Lisp Emacs キーバインディングの変更 変更内容による難度(?)の違い 何(どういうコマンド)をどこ(どのキーシーケンス)に割り付けるかで、 やり方が異り、必要とされる技にも違いがある。 (a) 既存のコマンドを、 「Ctrl-c を押してから一文字を押す」というユーザ予約キーシーケンスに 引数を与えないで割り付ける。→ 簡単(以下を読むまでもなし) 例 (global-set-key "\C-ca" 'fill-region) (b) 既成のコマンドに引数を与えて割り付ける → 説明が必要(ラムダ式など) 例 (global-set-key "\C-ca" (lambda

  • Rubyのある風景 - Y Combinator

    再帰的な関数を作るときに関数に名前をつけずに定義するにはどうしたらいいのかというのが、Y Combinatorの中心的な話題です。 まずは、再帰の定番、階乗を計算する関数に登場願いましょう。 fact = lambda{|n| if n < 2 1 else n * fact[n - 1] end } puts fact[10] ここからfactという名前を取り除こうというわけですね。 最終目標は、以下のようにして階乗を計算する関数を定義することができるようになることです。 fact = y[lambda{|h| lambda{|n| if n < 2 1 else n * h[n - 1] end } ] ) puts fact[10] ここで出てきたyが、Y Combinatorと呼ばれるものです。 見やすさの為に、factという名前をつけましたが、関数を定義するところではfact

  • Mt. Lambda

    Mt.Lambda Mt. Lambda is located to the east of RIMS, Kyoto Univ.. The name is derived from the letter `Lambda' written on the centre of the mountain. On every August, a lot of bonfires are placed on the letter. Around the functional programmers, it is believed that a god of lambda calculus lives there. Important note Some people insist that on sunny day, sometimes the letter looks like a letter `G

  • 再帰的な無名関数 - ヒビノキロク

    次の関数は再帰的な関数だ。 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) この関数は内部で自分自身を呼び出しているので、普通の方法では無名関数として定義できない。 こういう場合、不動点オペレータというものを使うと以下のようにしてfactを定義することができる。(fact関数の中で直接factという名前を使っていない所がポイント) (define fact (let ((Y (lambda (F) ((lambda (s) (F (lambda (x) ((s s) x)))) (lambda (s) (F (lambda (x) ((s s) x)))))))) (Y (lambda (f) (lambda (n) (if (= n 0) 1 (* n (f (- n 1))))))))) ここで天下り的に出て

    再帰的な無名関数 - ヒビノキロク
  • Yコンビネータって何に使うの? - sumiiのブログ

    という反応が複数。λ計算という「lambdaしかない」計算体系があって、それでも再帰が表現できる(のでチューリング完全である)ことを示すために使います。Schemeっぽく書くと e ::= x | (lambda (x) e) | (e1 e2)という構文と ((lambda (x) e1) e2) --> [e2/x]e1という簡約で定義される言語です(右辺はe1の中のxにe2を代入した式)。 そんなことよりも、λ計算を習ってないのにYコンビネータについて聞いたことがある、というgeneration gapに年をとったショックを受けたり。そういう私の20代も昨日(今日の深夜?)で終了。 追記:Haskellなどlazyな言語だったら、 (define (my-fib m) ((my-make-fib my-make-fib) m))の部分は (define my-fib (my-make

    Yコンビネータって何に使うの? - sumiiのブログ
  • 不動点演算子ふたたび - sumiiの日記

    (追記:Yコンビネータって何に使うの?) Yコンビネータ(Curryの不動点演算子)を説明するのがプチブーム(死語)らしいので、ふたたび挑戦。 まず、ふつーに再帰関数factをSchemeで定義してみる。 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1))))))この定義は、右辺にfact自身が出現するので、再帰的定義なのであった。ここから右辺にfactが出現しないようにするのが目標。とりあえず、factを関数の引数として外から受け取るようにしてみる。 (define make-fact (lambda (my-fact) (lambda (n) (if (= n 0) 1 (* n (my-fact (- n 1)))))))これは( (make-fact fact) 10)みたく使えるが、make-factを呼び出す際に

    不動点演算子ふたたび - sumiiの日記
  • 不動点オペレータについて

    不動点オペレータY 階乗関数は、 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) のように、再帰的に定義できる。 再帰的定義を行なう場合はdefineやletrecを使うけど、 代わりにletを使うと再帰的定義はできない。 defineやletrecをどうしても使いたくないなら、多少工夫がいる。 例えば、factの引数を増やすという方法がある。 (let ((fact (lambda (self n) (if (= n 0) 1 (* n (self self (- n 1))))))) (fact fact 10)) ⇒ 3628800 (中略) 不動点オペレータYを使うと次のように書ける。 (let* ((Y (lambda (g) ((lambda (s) (g (lambda (x) ((s s) x))