タグ

プログラミングに関するkoki-hのブックマーク (118)

  • Y combinator の謎

    まとめ: Y combinator は、 不動点演算子 (不動点コンビネータ) と呼ばれるもののひとつである。 ある高階関数 f に Y を適用した値 Yf は、関数 f の不動点となる。 不動点演算子を使うと、名前のない関数でも自分自身を再帰的に呼び出すことができる: Y = (λf. (λx. f (x x)) (λx. f (x x))) Y の改良版 = (λf. (λx. (λp. f((x x), p))) (λx. (λp. f((x x), p)))) これ以外にも、不動点演算子として Turingコンビネータ θ が知られている: θ = (λx. (λy. y ((x x) y))) (λx. (λy. y ((x x) y))) (追記) λ-式 (lambda expression) は、さしずめ『関数のヒモノ (干物)』のようなものである。 水 (=引数) をかけ

    koki-h
    koki-h 2010/10/06
    動画で解説されるとわかりやすい気がする。
  • YouTube - What different sorting algorithms sound like

    This particular audibilization is just one of many ways to generate sound from running sorting algorithms. Here on every comparison of two numbers (elements) I play (mix) sin waves with frequencies modulated by values of these numbers. There are quite a few parameters that may drastically change resulting sound - I just chose parameteres that imo felt best. After making this video I found that so

    YouTube - What different sorting algorithms sound like
  • moved !

    moved !

    koki-h
    koki-h 2010/07/17
    同じプログラムをいろんなエディタのいろんな配色で鑑賞する試み。確かにかなり印象がちがうなあ。
  • 不完全にしておよそ正しくないプログラミング言語小史

    1801 – ジョセフ・マリー・ジャカールがパンチカードを使った織機によってタペストリーに"hello, world"と織り出す。しかしラッダイト (当時のRedditer) たちは、テールリカージョン、並行処理、大文字小文字の区別を欠いていたため、さほど感心しなかった。 1842 – エイダ・ラブレスが最初のプログラムを書く。彼女の努力は、プログラムを実行するコンピュータが実のところ存在しないというマイナーな問題のために頓挫した。後にエンタープライズアーキテクトたちはプログラムをUMLで書くために彼女のテクニックを再び学ぶことになる。 1936 – アラン・チューリングが存在しうるあらゆるプログラミング言語を発明するが、特許化する前に英国情報部員(後の007)によって抹殺される。 1936 – アロンゾ・チャーチも存在しうるあらゆる言語を発明しているが、より巧みに行った。チャーチのラムダ

  • UnicodeとUTF-8の違いは? - 自分的まとめ - Humanity

    UnicodeとUTF-8の違いは? - Humanityはあんなに反響があるとは思わなかった。 ブコメにコピペじゃなくてまとめを書いてくれれば良い資料になるのにと書いてあったので今度は自分の知識をまとめてみる。 と言っても自分もあのスレを見るまでUnicodeとUTF-8を混同してた一人なのでほとんどあのスレからの知識ですが...orz なので簡単なまとめ。引用を多分に含みます。間違ってたらつっこんでいただけるとうれしいです。 調べる際に弾さんのエントリがかなり参考になったので(今頃意味が分かってきた)関連リンクとして度々載せさせていただきます。 参考リンクじゃない理由は解説しているエントリだけじゃなくて既存のエンコーディングを拡張するといった高度なエントリも含まれているため。 UnicodeとUTF-8 まず一番重要なことは Unicodeは「符号化文字集合(Coded Charact

    UnicodeとUTF-8の違いは? - 自分的まとめ - Humanity
  • プログラマが楽しく読めるLink集 Vol.1 - 乱筆乱文お許し下さいorz

    ネットサーフィン(死語)をしていて、プログラマなら誰でも楽しく読めるハズ! と思ったサイトや記事を紹介して行きます。 とりあえず、Vol.1ッ! ハッカーになろう (How To Become A Hacker) 実は、この5つすべて(Python, Java, C/C++, Perl, LISP)を勉強しておくのがいちばんいいのです。 これらはもっとも重要なハッキング用言語だというだけでなく、 それぞれプログラミングに対してまったく違ったアプローチをしているので、どれも非常に有益な勉強となるでしょう。 Rubyは?(´・ω・`)ショボン Fine Software Writings 特に僕が好きな記事を! ホワイの(感動的)Rubyガイド (why the lucky stiff) どうしてプログラマに・・・プログラムが書けないのか? (Jeff Atwood) ソフトウェア開発者のた

  • Practice, Practice, Practice

    The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life) 作者: Chad Fowler出版社/メーカー: Pragmatic Bookshelf発売日: 2009/07メディア: ペーパーバック 項目15「Practice, Practice, Practice」では、次のような内容のことが述べられています(サマリーです)。 音楽家は、日々練習をし、そして、その成果として聴衆の前で演奏します。そして、日々の練習では、自分の能力の限界を伸ばすための練習もする訳です。しかし、ソフトウェアの世界では、実際の開発で練習をしている。実際の開発ではなく、自分の時間で練習をする必要があり、それがプログラマーの責任です。残念ながら、ソフトウェアの開発現場では、当に仕事

    koki-h
    koki-h 2009/11/13
    音楽家は、日々練習をし、そして、その成果として聴衆の前で演奏します。そして、日々の練習では、自分の能力の限界を伸ばすための練習もする訳です。
  • API設計の基礎(仮題)(2)

    第1章でカバーする範囲を分割することにしました。その結果、第1章は短い内容となっています。まだ、十分に読み返していませんので、誤字脱字等があるかと思います。 非常に基的なテクニックしか書かれていませんが、何かの参考になればと思います。 内容に関するコメントは、このブログへのコメントではなく、直接私宛にメールでお願いします。 件名に「API設計の基礎」という文字列を入れてください。その文字列で受信メールをフィルターしますので。 メールの送信に関しては、私のホームページの右下にあるボタン(「メールを送る」)を利用してください。 氏名をお知らせください。匿名のメールはご遠慮ください。

  • 情報処理推進機構:情報セキュリティ:調査・研究報告書:情報セキュリティ技術動向調査(2008 年下期) 5 テンポラリファイルの扱い

    2008年下期には、Perl の File::Path モジュールの rmtree 関数に関する CVE が 3件発表された。 (CVE-2008-2827, CVE-2008-5302, CVE-2008-5303)また、symlink attack に関する CVE は 100件以上出ている。 テンポラリファイルの扱いに関する問題は古くからあるが、いまだに多くの問題が発生する。そこで稿ではテンポラリファイルの扱いかたについて解説する。また、安全な削除に利用できる新しいシステムコールが提案されているので、それについても触れる。 テンポラリファイルはプログラムが一時的に利用するファイルである。 Unix においては /tmp や /var/tmp というディレクトリが提供されており、すべてのユーザがそのディレクトリ下にテンポラリファイルを生成・削除するのが慣習である。稿では、これらのデ

    koki-h
    koki-h 2009/10/31
    安全にテンポラリファイルを扱う方法について
  • checkは危険な言葉

    昔からコードレビューや「プログラミング作法」教育の中で言っていたことですが、checkXXXXというメソッドは、大体意味が分からないメソッドだったりします。「~を確認」とか「~を検査」ということで日プログラマーは安易に「check」を使いたがります。 たとえば、複写機の世界で言えば、「用紙を確認」と頭に思いついたので、checkPaperという具合です。でも、実際には、「用紙がトレイにあるか否かを確認」とか「用紙が排出されたか否かを確認」ということで、意味が全く異なります。しかし、なぜか途中が全部省かれて「用紙を確認」つまり「checkPapaer」という名前付けをしてしまうのです。 したがって、コードレビューの際に、checkXXXXというメソッド名を見ると、「ああ、まただ」と思いながら、何をするメソッドなのかを聞いて、別のメソッド名へ変更させることになります。

    koki-h
    koki-h 2009/10/26
    名付け重要。
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま

  • 第66回 微分・積分の数学 微分・積分とは | gihyo.jp

    微分・積分というと、日常生活には全く縁がないもの、と思われがちではないでしょうか。しかし、「⁠速さ」「⁠加速」あるいは「減速⁠」⁠、そして「移動距離」などと、歩いたり走ったり、自転車や自動車に乗っていれば、誰もが当たり前に使うこれらの言葉、考え方は、微分・積分と密接な関係があります。微分・積分は、私たちの日常生活に関わりが深い数学です。 しかし、例えば「エンジンの仕組みを知らなければ車に乗ることはできない」とか、「⁠電気信号の処理方法を知らなければ電話をかけられない」なんてことはありません。むしろ、そんなことを意識しないで使えるからよいのです。でも、この記事に関心を持ってくださったあなたは、きっと「もう一歩突っ込んでみたい」という気持ちがあるはずです。ただ便利に使うだけではもったいない、と思うからこそ、数学やプログラミングに関心がおありのはず。コンピュータの助けを借りて、微分・積分をより便

    第66回 微分・積分の数学 微分・積分とは | gihyo.jp
  • codepad

    codepad is an online compiler/interpreter, and a simple collaboration tool. Paste your code below, and codepad will run it and give you a short URL you can use to share it in chat or email. Language: C C++ D Haskell Lua OCaml PHP Perl Plain Text Python Ruby Scheme Tcl

    koki-h
    koki-h 2009/08/20
    コード片を貼り付けることができるサービス。パーマリンクができる。自動的に実行結果が出出せる。via Twitter
  • キーボードフックドライバ

    警告 改版履歴 これは何? 原理 入手 警告 このドライバを組み込むことにより,セキュリティホールが生じる場合があります. セキュアな用途に用いるマシンにはインストールしないこと. 改版履歴 2003/12/17 linux-2.4.23 カーネルに対応 2000/02/11 アプリケーションキー(?)でプログラムを起動するフィルタなど追加 2000/02/06 nicola キーボードのエミュレータを追加 2000/02/06 高速にキーボードをたたくと,読み込み側で eof を発生してしまう,というバグの「回避」. 2000/02/04 初版公開 これは何? Linux カーネルで,キーボードデバイスから送られてくるスキャンコードを 途中で横取り 偽造して横から注入 するためのドライバです. 変換処理部をユーザプロセスに追い出したため,ユーザプロセスを変更することにより多彩な機能に対応

    koki-h
    koki-h 2009/07/24
    キーボードのイベントフックできるようにするドライバ。最近のカーネルに対応しているか不明
  • 方法: Windows Phone Marketplace 用のスクリーンショットを作成する

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    方法: Windows Phone Marketplace 用のスクリーンショットを作成する
    koki-h
    koki-h 2009/07/24
    windows APIで定義されているメッセージをフックするために使うAPI。dwThreadIdに0を指定するとすべてのプロセスに対してメッセージをフックする。
  • Windows API Hooking Tutorial

    はじめに Windowsアプリケーションは、通常APIを利用することによって実現されています。たとえ.NETやMFCなどを利用して作成されたプログラムであったとしても、内部的にはすべてWindowsAPIが呼び出され処理されているというのは周知の事実です。プログラムがWindows上で動作している限り、何かしらのカタチでAPIが使われていることは確かなのです。では、今回はそのAPIをフックすることを考えてみます。「Wizard Bible vol.15」の「リバースエンジニアリング」にて、私はAPIフックについて少しだけ触れましたが、今回はそのAPIフックについてのさらに深い話題となります。あらかじめ必要な知識は、Windowsプログラミングに多少の知識があることと、特にDLL関連に詳しいことです。あと「Wizard Bible vol.10」の「常駐プログラム隠蔽テクニック」も読んでおい

    koki-h
    koki-h 2009/07/24
    APIをフック
  • Windowsに土足で乱入?! 〜 フック関数の使い方 : DSAS開発者の部屋

    今日の多くの OS がそうであるように、Windows にも自作のプログラムコードを特定のプロセスへ介入させることのできる「フック」という仕組みがあります。自分自身のプロセスをフックすることもできますが、他のプロセスをフックすることで通常のアプリケーションプログラミングの枠を超えた様々な興味深い処理の実現が可能となります。 ・所定のプロセスに対する Windows メッセージの監視・捕捉 ・所定のプロセスでの特定のイベントに呼応する自作コードの注入 ・既存のアプリケーションの所作を変更 etc. 「自作のコードをあるプロセスに介入させる」とはどういうことでしょう? メモリ上のモジュールイメージにアクセスしてマシン語命令を書き換えて・・という怪しげな方法もありそうですが、Windows では DLL を利用することで比較的容易にこの命題を解決できます。 このことを逆に考えると、自作の DLL

    Windowsに土足で乱入?! 〜 フック関数の使い方 : DSAS開発者の部屋
    koki-h
    koki-h 2009/07/24
    Windowsのイベントなどをフックする。特定のアプリのイベントをフックすることをローカルフック、すべてのアプリのイベントをフックすることをグローバルフックという。
  • 3行でできる超お手軽全文検索 - mixi engineer blog

    梅雨。部屋干しした洗濯物による異臭騒ぎに苦しむmikioです。今回は、Tokyo Cabinetのテーブルデータベースで超お手軽に全文検索をする方法について説明します。 使い方 テーブルデータベースについてまずおさらいしておきましょう。PerlRubyのハッシュのようにコラム名とその値を関連づけた構造を、主キーを識別子として保存するデータベースです。例えばRubyからデータを保存するに以下のように行います。データベースであることをほとんど意識させないというのが素敵ポイントです。APIはCでもPerlでもRubyでもほとんど同じなので、言語にかかわらず同じようにレコードを操作できます。 require 'tokyocabinet' include TokyoCabinet # データベースを開く tdb = TDB::new tdb.open("casket", TDB::OWRITER

    3行でできる超お手軽全文検索 - mixi engineer blog
    koki-h
    koki-h 2009/06/22
    Tokyo Cabinetを使った全文検索。サンプルコードがruby
  • Getting Real by 37signals

    Heads up! This page uses features your browser doesn’t support. Try a modern browser like Firefox or Chrome for the best experience. sidebar#close mouseup->tweet#update input->tweet#update keydown->tweet#update scroll@window->tweet#update" data-bookmark-id="/gettingreal"> �A�fU 0h��fU Getting Real The smarter, faster, easier way to build a successful web application Start reading →

    Getting Real by 37signals
    koki-h
    koki-h 2009/06/21
    Discover the smarter,faster,easier way to build a successful web-based application. A book by 37signals.
  • 「オープンソースハードウェアセミナーVol1」レポート Arduino WEBサーバー 静的コンテンツ用バイナリー to Cソース変換プログラムのソース: Under Power 研究所

    koki-h
    koki-h 2009/06/19
    arduinoWEBサーバに静的コンテンツを乗せるため、画像などのバイナリファイルを、それを書き出すプログラムのC言語ソースに変換する話。