タグ

関連タグで絞り込む (376)

タグの絞り込みを解除

Programmingに関するsyanbiのブックマーク (661)

  • 公理的意味論を使ってプログラムの正しさを証明する (2)

    公理的意味論 (axiomatic semantics) の2回目。 今回は二分探索をおこなうプログラムを検証する。 まとめ: 二分探索 (binary search) とは、 ソートされた数値の順列から目的の要素をすばやく検索するアルゴリズムである。 以下のような n個の要素をもつ数列 a = [ 0, ..., i0, ..., i, ..., i1, ... n-1 ] があるとき、2つの点 i0, i1 にはさまれた中点 i を考える。ここで、 目的の要素が [i0,i) の間にあれば、i よりも左側にある範囲を探索する。 目的の要素が [i,i1) の間にあれば、i よりも右側にある範囲を探索する。 以上の操作で、毎回、探索する要素の個数は半分になっていく。 これを繰り返すと、最終的に約 log2(n) の繰り返しで目的の要素を発見できる。 これは n個の要素を左から順に調べる

    syanbi
    syanbi 2011/06/26
    証明プログラミング。まあ、アサーションだらけになるんだが、ちょっとやってみようかな・・・ でも仕事場ではテストコードも求められるんだよなぁ
  • 分散コンピューティングの落とし穴 - Wikipedia

    分散コンピューティングの落とし穴(ぶんさんコンピューティングのおとしあな)は、サン・マイクロシステムズのピーター・ドイチュらが提唱した、初めて分散アプリケーションを開発するプログラマが想定してしまいがちな、誤った前提を集めたものである[1]。 落とし穴[編集] 落とし穴として挙げられているのは、以下の8つである。 ネットワークは信頼できる。 レイテンシはゼロである。 帯域幅は無限である。 ネットワークはセキュアである。 ネットワーク構成は変化せず一定である。 管理者は1人である。 トランスポートコストはゼロである。 ネットワークは均質である。 経緯[編集] これらの落とし穴のリストはサン・マイクロシステムズ社に端を発している。1994年にサンのフェローの最初期メンバーの1人、ピーター・ドイチュが最初の7項目を執筆したとされている。しかし、ビル・ジョイとトム・ライオンが既に最初の4つを「ネッ

  • 「JavaScriptと性能についての本当の話」をしよう。ダグラス・クロックフォード氏

    JSONの発見者でJavScript界の重鎮であるYahoo!のダグラス・クロックフォード(Douglas Crockford)氏。米オライリーが主催するイベント「Velocity 2011」で、セッション「JavaScript & Metaperformance」を行いました。 いまWebブラウザ間でJavaScriptエンジンの性能競争が行われていますが、その影響とこの先の展望について語っています。JavaScriptプログラマなら必見の内容を、公開されたビデオを基に紹介しましょう。 JavaScript & Metaperformance これから、JavaScriptと性能についての当の話をしよう。 JavaScriptはみなさんご存じかな? いまや世界で最もポピュラーになったプログラミング言語だ。 JavaScriptは、Javaからシンタックスを、Schemeからファーストク

    「JavaScriptと性能についての本当の話」をしよう。ダグラス・クロックフォード氏
  • WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 コードは MSDN コード ギャラリーからダウンロードできます。 オンラインでのコードの参照 目次 秩序と混乱 Model-View-ViewModel の進化 WPF 開発者に MVVM が好まれる理由 デモ アプリケーション 中継コマンド ロジック ViewModel クラス階層 ViewModelBase クラス CommandViewModel クラス MainWindowViewModel クラス ViewModel に View を適用する データ モデルとリポジトリ 新しい顧客のデータ入力フォーム All Customers ビュー まとめ 専門的なソフトウェア アプリケーションのユーザー イン

    WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン
    syanbi
    syanbi 2011/06/18
    MVVMパターンでぐぐったら見つけたので...
  • Commit a047be85247755cdbe0acce6f1dafc8beb84f2ac to MrMEEE/bumblebee - GitHub

    m README m install.sh GIANT BUG... causing /usr to be deleted... so sorry.... issue #123, issue #122, issue #121

    syanbi
    syanbi 2011/06/17
    気をつけましょう
  • Learn Python the Hard Way

    Millions of people have learned to code. So can you. Newly updated for Python 3, the original and still the most popular way for total beginners to finally learn how to code. Learn Python The Hard Way takes you from absolute zero to able to read and write basic Python to then understand other books on Python. No experience necessary to begin, and you can even try the book out for free to see if th

    syanbi
    syanbi 2011/06/17
    あとで目を通す。
  • Unbeatable JavaScript Tools - The Dojo Toolkit

    Visit dojo.io for documentation, examples, and more on Dojo, the Progressive Framework for Modern Web Apps and successor to the Dojo Toolkit Dojo Toolkit 1.17 A JavaScript toolkit that saves you time and scales with your development process. Provides everything you need to build a Web app. Language utilities, UI components, and more, all in one place, designed to work together perfectly. Get Dojo

    syanbi
    syanbi 2011/06/17
    あとで使わないと・・・
  • Island Life - 道具話

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - 道具話
  • 一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。

    10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。 Java Core API JDKインストールしたディレクトリに入ってるsrc.zipを展開すると入ってるから読むと良いよ。 すぐ近くにあるのから読むってのはメンタル的に楽でいい。 厳密にはOSSじゃなくて単に公開されてるってだけなんだけども、JavaプログラマなのにコアAPIのコード読んでないとか無いよね? どれから読めば良いか分からんかったら、 java.lang java.util java.io java.text 辺りをまずはキチンと理解すること。当然コードを読み終わったら、それを使ってコードを書く事。 OpenJDK http://hg.openjdk.java.net/jdk7/jdk7 OpenJDKを読むことで、プログラム言語してのJavaではな

    一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。
  • ブルームフィルタ - Wikipedia

    この項目では、確率的データ構造について説明しています。画像にぼかし効果を付加する画像フィルタについては「川瀬のブルームフィルター」をご覧ください。 ブルームフィルタ(英語: Bloom filter)は、1970年に Burton H. Bloom が考案した空間効率の良い確率的データ構造であり、あるデータが集合の要素である(集合に含まれている)かどうかの判定に使われる。ただし判定は正確ではなくて、含まれていないのに含まれていると誤って判定すること偽陽性(false positive)の可能性がある。しかし含まれているものを含まれていないと誤判定すること偽陰性(false negative)はない。なお集合に要素を追加することはできるが、集合から要素を削除することはできない(ただし、拡張をした counting filter であれば削除もできる)。集合に要素を追加していくにつれて偽陽性の

    ブルームフィルタ - Wikipedia
  • Eloquent JavaScript

    This is a book about JavaScript, programming, and the wonders of the digital. You can read it online here, or buy your own paperback copy (3rd edition). Written by Marijn Haverbeke. Licensed under a Creative Commons attribution-noncommercial license. All code in this book may also be considered licensed under an MIT license. Illustrations by various artists: Cover by Péchane Sumi-e. Chapter illust

  • プログラミング認可制の日は近い

    高木浩光@自宅の日記 - ウイルス罪法案、バグ放置が提供罪に該当する事態は「ある」と法務省見解 政府は、バグ放置が罪せらるとの見解を発表した。また一歩、日が後退した瞬間である。 そもそも、放置とは何を言うのか。大部分のソフトウェアのバグフィクス、特にセキュリティに関するバグというのは、バグ発見者の善意によってなりたっている。バグを発見したものが、ソフトウェアに対して責任をもつ会社または個人に、秘密のうちに連絡をとり、バグの内容を伝える。責任者は、秘密裏のうちにバグを直し、アップデートパッチを公開する。バグの具体的な内容が公開されるのは、パッチ公開後である。この過程を経ずしていきなりバグが公になることを、ゼロデイという。ゼロデイは、マルウェアが未知のバグを利用していたり、またバグ発見者が、何らかの理由によって(たいていは、無責任な責任者にあきれて)、いきなり公開したりすることで起こる。 バ

  • Welcome to nginx!

    If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.

  • Perl中級者への道 (近藤 嘉雪, at PerlCasual #4)

    PerlCasual #4 (2011/4/28, 池袋ジュンク堂)で行ったトークのスライドです。 動画をYouTubeで公開しているので、あわせてご覧ください。http://youtu.be/kLt2aYN7UYE, http://youtu.be/xVC9pqCe8cE Read less

    Perl中級者への道 (近藤 嘉雪, at PerlCasual #4)
  • 肉体言語 Tython - Thanks Driven Life

    Tython とはhttps://github.com/gongo/Tython/tree/development 肉体言語 Tython は、Kinect センサーを用いて、体の動きを利用してプログラムを入力する言語、というかインターフェースというかフレームワークというか。 図にするとこんな感じです。 Kinect を介して動きを検知 (Detector) 検知した動きによって、入力するソースコードを決定 (InputMethod) ソースコードを入力し終わったら、コンパイル (Compile) コンパイルしてできた命令列を実行 (VM) デモ 「Hello, World!」Tython を使って Hello, World! を出力してみました。 Hello, World! 出力まで 4分強 一回で成功しなかった 最終的に成功するまでの時間は 90分 一度でも文字入力失敗すると最初から

    肉体言語 Tython - Thanks Driven Life
    syanbi
    syanbi 2011/05/15
    。。。
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • uniq()あれこれ - atsuoishimoto's diary

    ふとこちらの記事を拝見して、頭に浮かんだことをメモってみる。 id:aroma_blackさんの [y for x,y in enumerate(seq) if seq[:x+1].count(y) == 1] や、id:cocoatomoさんの [x for i, x in enumerate(a) if i == a.index(x)] でも良いんだけど、あえて別解を探すと: Python2.7/3なら import collections list(collections.OrderedDict((x,None) for x in seq).keys()) 一番素直で速いのは filter(lambda x,s=set():(x not in s, s.add(x))[0], seq) かなぁ? 入力のリストの要素から、新たな一つのリストに還元すると考えれば、reduceを使う手もあ

    uniq()あれこれ - atsuoishimoto's diary
  • 許されざる悪事 - atsuoishimoto's diary

    djangoの中に、こんな処理がある。 def get_cache(backend_uri): scheme, host, params = parse_backend_uri(backend_uri) … … … return getattr(module, 'CacheClass')(host, params) cache = get_cache(settings.CACHE_BACKEND) (http://code.djangoproject.com/browser/django/trunk/django/core/cache/__init__.py) 私はこの cache = get_cache(settings.CACHE_BACKEND) を許さない。モジュールのグローバルスコープで、他のモジュールの値を参照するという悪行を許すことはできない。 この行は、どこかで impor

    許されざる悪事 - atsuoishimoto's diary
    syanbi
    syanbi 2011/05/11
    初期化に関するコードは存在はやむなし、ではあるが、工夫をして、初期化することを名前で分かりやすくする、あとグローバルスコープの汚染は避ける(これは絶対だろ...)とかそういうことは常に意識すること。
  • Node.jsとは何か、開発者ライアン・ダール氏が語る(前編)~ノンブロッキングとはどういうことか?

    いま注目されているサーバサイドJavaScriptの火付け役となったNode.js。その開発者であるライアン・ダール(Ryan Dahl)氏自身がNode.jsを紹介した講演「Introduction to Node.js with Ryan Dahl 」のビデオが公開されています。 この講演は、サンフランシスコのPHP開発者の集まりであるThe SF PHP Meetup Groupが2月にダール氏を招待して行われたもの。 そのため、Node.jsを知らないデベロッパーに向けて、Node.jsがどのような特徴を持つプログラミング言語なのか、分かりやすく解説しています。内容を紹介しましょう。 Node.jsとPHPとの質的な違いとは何か Node.jsを触ってみよう。今日は特にスライドは用意してなくて、タイプしてどんなものかを動かしながら紹介していくつもりだ(注:ダール氏はここで最初に「

    Node.jsとは何か、開発者ライアン・ダール氏が語る(前編)~ノンブロッキングとはどういうことか?
    syanbi
    syanbi 2011/05/10
    debugモード普通に便利そうだな。
  • OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog

    はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。 前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/camlspotter/20101212/1292165692 のような易しい文章ではないのでわからない人はとことん判らないだろう。まあ勘弁して欲しい。 あと、面倒だろうが、読む人は全部常体を敬体にして最後に「と思います」をつけて読んでくれ。ください、と思います。 Shadowing は便利であると思っている OCaml の let は非再帰なので以前定義された名前に別の値の束縛をオーバーライドできる。OCaml の人はこれが便利だと思っており皆普通に使っている。詳しくは http://d.hat

    OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog
    syanbi
    syanbi 2011/05/10
    let, let recによる値束縛の差についてなぜあるのか(再帰、非再帰での違いだが) 、という理由について取り上げられているエントリ。Haskellとの対比があるが、Haskellは真摯にコードと向き合える人..向け.. か。