あとで読むに関するbe_a_prgrmrのブックマーク (25)

  • プログラミングコンテストでの動的計画法

    2. はじめに • 「動的計画法」は英語で 「Dynamic Programming」 と言います. • 略して「DP」とよく呼ばれます. • スライドでも以後使います. 4. ナップサック問題とは? • n 個の品物がある • 品物 i は重さ wi, 価値 vi • 重さの合計が U を超えないように選ぶ – 1 つの品物は 1 つまで • この時の価値の合計の最大値は? 品物 1 品物 2 品物 n 重さ w1 重さ w2 ・・・ 重さ wn 価値 v1 価値 v2 価値 vn 5. ナップサック問題の例 品物 1 品物 2 品物 3 品物 4 U=5 w1 = 2 w2 = 1 w3 = 3 w4 = 2 v1 = 3 v2 = 2 v3 = 4 v4 = 2 品物 1 品物 2 品物 3 品物 4 答え 7 w1 = 2 w2 = 1 w3 = 3 w4 = 2 v1 = 3 v

    プログラミングコンテストでの動的計画法
  • 今日から始めるNode.jsコードリーディング - libuv / V8 JavaScriptエンジン / Node.jsによるスクリプトの実行 | Tokyo Otaku Mode Blog

    ソフトウェアを正しく理解する唯一の方法はコードを読むことです。 ドキュメントを読めばそのソフトウェアが何を実装しているか分かりますが、どのように実装されているかまでは分かりません。 開発中に何らかのトラブルに悩まされたときや、効率的なコーディングをしたいと思ったとき、下位レイヤのソフトウェアを理解しておけば素早く対処できるシーンが多くあります。 ただ、コードを読むことは簡単なタスクではありません。 現代的なソフトウェアはそれなりの規模のコードを含んでいることがほとんどです。アーキテクチャ間の差異を吸収するためのコードなど、質的な機能を理解する上ではあまり重要ではないコードも含まれています。 何らかの問題が発生してからコードを読もうと思っても、準備なしでは関連する箇所を探すだけでかなりの労力が必要な作業となります。 従って、普段からコードを読んでおくことが重要です。 また、コードを読むにあ

    今日から始めるNode.jsコードリーディング - libuv / V8 JavaScriptエンジン / Node.jsによるスクリプトの実行 | Tokyo Otaku Mode Blog
  • 私はいかにして様々なブラウザの脆弱性を発見したか - 葉っぱ日記

    先日、Twitterでどのように脆弱性を見つけるかに興味あるんだろうかと書いたら、意外に色々な人から反応があったので、これまでに自分が見つけた脆弱性のいくつかについてどういう経緯で見つけたのかちょっと書いてみます。 JVN#89344424: 複数のメールクライアントソフトにおける、添付ファイルによりメールクライアントソフトが使用不能になる脆弱性 これは、添付ファイル名にUnicodeの円記号を含めておくと、メーラ側でShift_JISに変換する際にバックスラッシュに変換されてしまって想定外のディレクトリに添付ファイルが展開されてしまったり、あるいは「©on」のような名前のファイルを添付しておくことでShift_JISに変換してCONというファイルを開こうとしてメーラが固まってしまうという問題です。これは、私自身が文字コードの問題について調べ始めた初期段階で、Unicodeからの変換で問題

    私はいかにして様々なブラウザの脆弱性を発見したか - 葉っぱ日記
  • XSSの攻撃手法いろいろ - うなの日記

    html5securityのサイトに、XSSの各種攻撃手法がまとめられているのを発見せり!ということで、個人的に「お!」と思った攻撃をサンプルつきでご紹介します。 1. CSS Expression IE7以前には「CSS Expressions」という拡張機能があり、CSS内でJavaScriptを実行できたりします。 <div style="color:expression(alert('XSS'));">a</div> 確認 @IT -[柔軟すぎる]IEのCSS解釈で起こるXSS で詳しく解説されていますが、CSSの解釈が柔軟なことともあいまって自前で無害化するのはなかなか困難。以下のようなコードでもスクリプトが実行されてしまいます。 <div style="color:expr/* コメントの挿入 */ession(alert('XSS'));">a</div> 確認 <div s

    XSSの攻撃手法いろいろ - うなの日記
  • extension内のパーツやextension間で通信するためのAPI - 心魅 - cocoromi -

    extensionには様々なパーツがありますが。 それぞれのパーツ間でメッセージングを行うAPIが用意されています。 Message Passing http://code.google.com/chrome/extensions/messaging.html Communication between extensions and their content scripts works by using message passing. Either side can listen for messages sent from the other end, and respond on the same channel. A message can contain any valid JSON object (null, boolean, number, string, array, o

    extension内のパーツやextension間で通信するためのAPI - 心魅 - cocoromi -
  • VOYAGE GROUP エンジニアブログ : Socket.IO サーバーを Haskell で書いて Yo っぽいものを作ろう

    2014年08月08日15:02 カテゴリ Socket.IO サーバーを Haskell で書いて Yo っぽいものを作ろう こんにちは。adingo で広告配信のお手伝いをしている井手上です。今回のエンジニアブログは Haskell の Socket.IO サーバーライブラリを使って、Yo みたいなアプリケーションを作成した話です。 前置き 突然ですが、皆さんはお仕事や個人的な開発ではどんなプログラミング言語・ミドルウェア・プラットフォームを利用していますか? Web アプリケーションを作るなら PythonRuby 等のいわゆる Lightweight Language、大量のリクエストを高速に、並列に処理したいのなら Erlang など、目的に応じた選択肢があると思います。色々な選択肢がある中、以前は最適だと思って選択したものが、年々新しい技術がが出てきているために今ならもっ

  • #14 ECMAScript 6のやばい扉を開けちゃうかな(Generators編) - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2014 14日目です! ざっくばらんにES6のジェネレータのことを書きます。 実のところそんなにやばくないです。 ECMAScript 6! ECMAScript 6、盛り上がってきましたね。 クラスやアロー演算子、let装飾子など、 魅力的な機能がいくつも追加されるES6ですが、 今回は、その中でもジェネレータについて書きます。 ジェネレータ! ECMAScript 6で追加される新たな機能や構文、 "新たな"とはいえ、その多くが、シュガーシンタックス程度に留まっているのと比べ、 ジェネレータは、処理そのものの流れを大きく変えます。 ジェネレータはとりわけ、非同期処理を書くときに役に立ちます。 Promisesやasyncが、非同期処理を並べる程度の解決しかできないのに対して、 ジェネレータは、ネストを一切せずに、非同期処理

    #14 ECMAScript 6のやばい扉を開けちゃうかな(Generators編) - KAYAC engineers' blog
  • Promiseに関するパターンや命名規則 - Qiita

    やや自己流含む。 getXxx/fetchXxx getXxxは同期、fetchXxxはPromiseということにしている。とくに非同期の取得系はfetchということに決め打ってる。 GETリクエストであることを明示したいときにややこしいという問題はあるが、そのケースは少なく、JS内で同期/非同期を明示したいことの方が多い。 例: 非同期の副作用系はput/post/sync/send/uploadとかそのあたりを適当に使う。 Promise( (done, reject) => {..}) 恐らく仕様的に正しいワードは fulfill, reject なのだが、fulfillはタイプ数が妙に多いのと、llが多くタイポしやすく、またタイポが発見しづらいので、自分は慣習的にdoneを使っている。 追記: fulfillよりもresolveの方が仕様に沿ってるっぽいhttp://people.

    Promiseに関するパターンや命名規則 - Qiita
  • メッセージング基盤の進化 Erlang、SPDYからそれを支える組織の話 LINE Platform Development Chronicle #linedevday

    Satoshi Hirose / 廣瀬 智史 🐘 @satoshihirose LINE Platform Development Chronicle Tom.T LINEメッセージング基盤の進化。キーワード。2011年ロングポール, Erlang, SPDY。2012年海外データセンター。#linedevday 2015-04-28 11:54:22

    メッセージング基盤の進化 Erlang、SPDYからそれを支える組織の話 LINE Platform Development Chronicle #linedevday
  • Electron(旧atom shell)基礎+入門

    Who Electronとは Electronの特徴 Electronの基礎 Electronの内部構造 Electronの問題 まとめ

    Electron(旧atom shell)基礎+入門
  • https://github.com/airbnb/javascript/tree/es6/es5

  • Functor(関手)ってなんですか? - Nao Minami's Blog

    どうもこんばんは、south37です。今日も引き続きHaskellネタでいこうと思います。Functorって概念を知ったので、ちょろっとまとめてみたいと思います。 そもそも、Functorってなんですか? さて、Functorって聞いて、ピンと来ますか? 僕は、全然ピンと来ませんでした。Wikipedia先生の定義を見ても、 関手(かんしゅ、functor)とは、圏の間の対応付けのことである。関手は対象関数と射関数の組からなる。 などと、何だかよくわからない感じで書かれています。 じゃあ一体なんなんだって話ですが、ポイントはどうやら「対応付け」って点のようです。「圏(と呼ばれるよく分からないモノ)」から「圏」への対応付けをしてくれるのが、Functorです。そうすると、今度は「圏」がなんなんだって話になる訳ですが、これもWikipedia先生によれば 数学における圏(けん、category

    Functor(関手)ってなんですか? - Nao Minami's Blog
  • モノイドと継続渡しの道具箱 - モナドとわたしとコモナド

    関数型言語Haskellにおいて、普通は計算の結果は関数の戻り値として扱うが、「結果を受け取る関数」 に渡すという継続渡しというスタイルもある。これは単なる冗長なやり方ではなく、様々な興味深い性質を持つ。 基形は、aという値を渡すところを ∀r. (a -> r) -> r のような表現にする。たとえば、与えられた数の42倍を渡したいとき、そのまま\x -> x * 42ではなく、\x f -> f (x * 42)と書く。もちろんこれだけではありがたみが分からない。 さて、与えられた文字列の中のうち、大文字のアルファベットを取り出し、それがアルファベットの何番目か計算するプログラムを作りたい。普通はリストを使ってこのように書くかもしれない。 import Data.Char uppers :: [Char] -> [Int] uppers [] = [] uppers (x:xs) |

    モノイドと継続渡しの道具箱 - モナドとわたしとコモナド
  • Freeモナドを使っている方、あるいはこれから使う方へ - モナドとわたしとコモナド

    FreeモナドのベースとなるFunctorは、GHCのDeriveFunctor拡張を使って、対象のデータ型にderiving Functorをつけることで 自 動 生 成 できます。 例 {-# LANGUAGE DeriveFunctor #-} import Control.Monad.Free data CharIOBase a = GetCh (Char -> a) | PutCh Char a | EmbedIO (IO a) deriving Functor type CharIO = Free CharIOBase とすると、 https://github.com/ghc/ghc/blob/ghc-7.6.2-release/compiler/typecheck/TcGenDeriv.lhs#L1407 の規則に従い、 instance Functor CharIOBase

    Freeモナドを使っている方、あるいはこれから使う方へ - モナドとわたしとコモナド
  • Freeモナドでゲームを作ろう!第2回: 本当に動かす - モナドとわたしとコモナド

    連載目次 第0回: 概要 第1回: Gameモナドの基 Haskellの力を最大限に引き出す 前回紹介したような関数の組み合わせでももちろんゲームは作れるのですが、今回は、さらにゲームを開発しやすくするための手法をいくつか紹介し、その例を実際に動かしてみます。 Vec2 2Dゲームを作る上でベクトルの演算は必須です。vectというライブラリは、二次元から四次元までの範囲でベクトルや行列の操作ができる、非常に便利なライブラリです。二次元に絞って主要な関数をいくつか紹介しておきます。 Edward Kmettさんから「linearを使った方がいい」といったアドバイスを頂いたので、free-game 0.9ではlinearを採用しました。零次元から四次元までの範囲でベクトルや行列の操作ができる、非常に便利なライブラリです。二次元に絞って主要な関数をいくつか紹介しておきます。 V2 :: a -

    Freeモナドでゲームを作ろう!第2回: 本当に動かす - モナドとわたしとコモナド
  • Freeモナドでゲームを作ろう!第1回: Gameモナドの基本 - モナドとわたしとコモナド

    連載目次 第0回: 概要 第1回: Gameモナドの基 (この記事) free-gameを使う さて、みなさん、free-gameはインストールしましたか?まだの型方も、もうインストールした方も、日free-gameを更新したのでcabal update && cabal install free-gameしましょう。 2013/5/6: free-game 0.9.3をリリースし、内容も改訂しました。必ずcabal update && cabal install free-gameしてください。 free-gameは、Gameモナドという独自のモナドによってGUIの抽象化を実現しています。GameはFreeモナドによって生成されたモナドであり、元は単なるFunctorです(これが何を意味するかは、連載の中で明らかにしていきます)。 今回は、実際にプログラムを組みながら、どのようにして

    Freeモナドでゲームを作ろう!第1回: Gameモナドの基本 - モナドとわたしとコモナド
  • Freeモナドでゲームを作ろう!第0回: 概要 - モナドとわたしとコモナド

    連載目次 第0回: 概要 (この記事) 第1回: Gameモナドの基 先ほど、free-gameというライブラリをアップロードしました。free-gameは、世界で一番柔軟かつ簡単にゲームなどのGUIを作れるライブラリを目指しています。 Freeモナドとは Freeモナドは、Functorを与えると自動的にモナドを生成してくれる構造で、これを使うことで、アクションをデータの一つとして柔軟に扱えるようになります。去年の10月ごろからにわかに日のHaskeller間で流行り始めた、今一番熱いモナドです[要出典]。Freeモナドそのものに関してはこれらの記事を読みましょう。 Haskell for all: Why free monads matter そろそろFreeモナドに関して一言いっとくか 型クラスとモナドと Free モナド - あどけない話 Freeモナドって何なのさっ!? -

    Freeモナドでゲームを作ろう!第0回: 概要 - モナドとわたしとコモナド
  • Monad tutorial

    1. 函数プログラミングの集い2011 チュートリゕル 「モナドについて」 株式会社 Preffered Infrastructure 田中 英行 tanaka.hideyuki@gmail.com 2. 自己紹介 • 田中英行 (@tanakh, id:tanakh) • 株式会社 Preferred Infrastructure (PFI) 勤務 – 検索エンジンのゕルゴリズムとか作ってます • Haskell (2004~) • C++ (1998~) • BASIC (1992~) • プログラミングコンテスト愛好家 – ICPC, ICFPC, CodeJam, TopCoder, …

    Monad tutorial
  • ライプニッツの公式から円周率を求める - bitterharvest’s diary

    1.円周率を求める ライプニッツは一七世紀の哲学者、数学者、科学者であり、政治家、外交官でもあった。彼は、ドイツ東部のライプチヒの出身である。 Haskellを学んでいる人であれば、モナドという言葉を知っていることと思うが、哲学用語でのモナドという概念を打ち出した学者である。ニュートンとは独立に微積分法を発見し、二進法を研究したことでも知られている。 ここで取り上げるのは、円周率を求めるライプニッツの公式である。彼によれば、円周率は次の式により求められる。 \[ \pi = 4 - \frac{4}{3} + \frac{4}{5} - \frac{4}{7} + \frac{4}{9} - \frac{4}{11} + ... \] Haskellで円周率を求めるために、この式を分解してみる。 分子は、4, -4, 4, -4 を繰り返している。 分母は、1, 3, 5, 7, 9と1か

    ライプニッツの公式から円周率を求める - bitterharvest’s diary
  • 再帰関数のスタックオーバーフローを倒す話 その1 - ぐるぐる~

    再帰関数のスタックオーバーフローを倒す話を何回かに分けてします。 連載目次 再帰関数のスタックオーバーフローを倒す話 その1 ← 今回 CPSとCPS変換の話 再帰関数のスタックオーバーフローを倒す話 その1.5 F#での「末尾」についての話 再帰関数のスタックオーバーフローを倒す話 その2 .NETにおける末尾最適化の方法についての話 再帰関数のスタックオーバーフローを倒す話 その2.5 継続モナドと、F#の残念さの話 再帰関数のスタックオーバーフローを倒す話 その3 すべてをあきらめて再帰をwhileに書き直す方法の話 はじめに 継続渡しスタイルもしくは継続渡し形式(Continuation Passing Style、以降CPS)という言葉を聞いたことがあるでしょうか。 今日はCPSの話をします。 前提知識は、F#のみです。 継続とは CPSの前に、まずは継続の話です。 継続と言って

    再帰関数のスタックオーバーフローを倒す話 その1 - ぐるぐる~