タグ

Algorithmに関するcrafのブックマーク (346)

  • 2016年のOSS圧縮ツール選択カタログ - Qiita

    まだgzipで消耗し(略) 2016年、人類が待ち望んでいた、gzipを圧倒するOSS圧縮ツールzstd(Zstandard)がリリースされたにも関わらず、なんかあんまり話題になっていなくて寂しいので、ちょろいかんじの賑やかし比較記事を書きました。圧縮ツールのカタログ的に眺めていただけるかと思います。 はじめに (この記事で言う)圧縮ツールとは何か 圧縮ツールという呼び名は正確ではない(はず)です。平たく言えば、gzipやbzip2、xz、lz4などですが、人によっては、tarの裏側としてしか使ってなくて、聞いたこともないかもしれませんね。そういうときはまずgzipのmanpageとか読んでください。 しかし、そういうツールを何と呼べばいいのかわからないので、ここでは圧縮ツールと呼んでいます。 ややこしいですが、アーカイバではありません。アーカイブとは実態が一つのファイルになっているフォル

    2016年のOSS圧縮ツール選択カタログ - Qiita
  • 確率的プログラミング | POSTD

    この数年で、プログラミング言語(PL)や機械学習のコミュニティは 確率的プログラミング(PP) を用いて、それぞれに共通する研究の関心事を明らかにしてきました。その概念は、抽象化のような強力なPLのコンセプトを”エクスポート”し、現状では複雑で困難な作業である統計的モデリングに再利用することができるかもしれない、というところにあります。 (講義ノートの 最新版 を閲覧したい方は、リンクをクリックしてください。ソースは GitHub に投稿してあります。誤りを発見した場合は、Pull Requestを送信してください。) 1. 何、そしてなぜ 1.1. 確率的プログラミングは○○○ではない 直観に反して、確率的プログラミングとは確率的に振る舞うソフトウェアを書くことでは ありません。 例えば、暗号のキー・ジェネレータやOSカーネルでの ASLR の実装、または回路設計のための 焼きなまし法

    確率的プログラミング | POSTD
  • 階層構造を持つデータの可視化 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 随時更新します。 階層構造を持つデータ 社会に存在するデータのうち、たとえばこのようなデータが該当する。 コンピュータOSが管理するファイルシステムにおけるファイルとディレクトリの関係 書籍の構造(部、章、節) レガシーな会社組織(社長、部長、課長) 生物の分類法 文献学(philology) 表現方法 大きく三つに分ける。 隣接関係・ダイアグラム(Adjacency diagrams)...入れ子(nested) アイシクル・ツリー(Icicle Tree) サンバースト・チャート(Sunburst Chart) エンクロージャー・ダ

    階層構造を持つデータの可視化 - Qiita
  • ストリーム処理とは何か?+2016年の出来事 - Qiita

    その対処で全部に対応するのは無理なんじゃないの? Watermark、Trigger、Accumulationの機構が導入されればストリーム処理は全て対応可能かというと、 そんなことはありません。 何故なら、下記のような問題が発生してくるからです。 Watermarkを実時刻からどれくらい遅らせて設定すればいいのか? 遅れを大きくすれば正確性は増しますが、遅延時間は大きくなります。 Accumulationのためにウィンドウの集計結果をどれだけ保持すればいいのか? 保持する時間が長いほど、ストリーム処理を行うシステムのリソースが必要となります。 データ処理システム(バッチ、ストリーム含む)には下記の3要素のトレードオフがあるとされています。 完全性(Completeness) 低遅延(Low Latency) 低コスト(Low Cost) この3要素を全てに満たすことは出来ず、全てのデータ

    ストリーム処理とは何か?+2016年の出来事 - Qiita
  • 文字列アルゴリズムの学びかた - Hatena Developer Blog

    こんにちは!はてなアプリケーションエンジニアの id:takuya-a です。 みなさんは、このような疑問をもったことはありませんか? grep はどのように文字列を検索しているのか? MeCab はどうやって辞書を高速にルックアップしているのか? パーサやコンパイラを作りたいけど、何から始めればいいのか? 稿では、「文字列アルゴリズムとはどんなものなのか?」「なぜ重要なのか?」「何を知っておくべきか?」「どうやって勉強すればいいのか?」といった疑問にお答えしていこうと思います。 文字列アルゴリズムの意外な応用や、モチベーションを保ちやすい勉強のしかた、文字列アルゴリズムを勉強するために行った社内での取り組み、実装するときのコツといったトピックについても触れています。 このエントリは、はてなエンジニアアドベントカレンダー2016の22日目の記事です。昨日は id:syou6162 さんに

    文字列アルゴリズムの学びかた - Hatena Developer Blog
  • (短いビット長の)RSA暗号を解いてみる - clock-up-blog

    なんでもセキュリティ Advent Calendar 2016 15日目の記事です。 RSA鍵を作るにあたっては鍵長を十分に長くする必要があります。(この「十分に」というのは時代とともに(マシンスペックが上がるにつれ)変わっていくでしょう) 最近だと 2048ビット = 256バイトの鍵を作るのが一般的でしょうか。 この長さが短いと割と簡単に公開鍵から秘密鍵が割り出せてしまいます。 今回やること 今回は長さが十分で無いRSA公開鍵から秘密鍵を割り出す実験をしてみます。 準備 秘密鍵の準備 64ビット = 8バイトという極めて短い長さの鍵を作ります。 $ openssl genrsa -out private.pem 64 Generating RSA private key, 64 bit long modulus .+++++++++++++++++++++++++++ .+++++++

    (短いビット長の)RSA暗号を解いてみる - clock-up-blog
  • ブロックチェーンという言葉に騙されないために - いもす研 (imos laboratory)

    近年、仮想通貨ビットコインが注目されているのにともない、その根幹技術であるブロックチェーン技術が金融業界で注目されています。しかし、ブロックチェーンという言葉自体が流行してしまった結果、様々な金融関連企業が正しく理解しないまま手を出し始めているように見えます。そして、技術的な内容がほとんど表に出てくることはなく、批判する人が少ないという問題を感じたのでこの記事を書きました。ブロックチェーンでできることとできないことを整理し、皆が今後ブロックチェーンの記事により深いツッコミを入れられるようになればと思います。自分はブロックチェーンの専門家ではないため若干の間違いもあるとは思いますが、見つけ次第 @imos まで連絡いただけると幸いです。適宜修正します。 背景 ブロックチェーンとは ブロックチェーンとは、いくつかの未完了の取引を「ブロック」という単位でまとめ、ブロックの正当性を証明するものと共

  • 誰でも分かるTrueSkill - Qiita

    これが、$P(Y|X)$に当たり、尤度と呼ばれます。 以上の情報から、ベイズの定理を用いて、事後確率、$P(X|Y)$を求めることができます。 なぜなら、確率の基定理より、 $P(Y)=\sum_{X}P(X,Y)=\sum_{X}P(Y|X)P(X)$ が成り立ち、 $P(Y=包丁|X=シェフ)P(X=シェフ)= 0.8 \times 0.2 = 0.16$ $P(Y=包丁|X=バイト)P(X=バイト)= 0.3 \times 0.8 = 0.24$ で、結局、 $P(Y=包丁) = 0.4$ であることが分かり、 $P(X=シェフ|Y=包丁)= 0.16/0.4 = 0.4$ $P(X=バイト|Y=包丁)= 0.24/0.4 = 0.6$ となります。もともと事前確率では$P(X=シェフ)=0.2$だったため、凶器が判明したことにより、シェフが犯人である確率(事後確率)が20%から4

    誰でも分かるTrueSkill - Qiita
  • H.264の秘密 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) (2016/12/11、いただきましたフィードバックをもとに翻訳を修正いたしました。) H.264は、動画圧縮コーデックの標準規格です。ネット上の動画、Blu-ray、スマホ、セキュリティカメラ、ドローンなどなど、今やあらゆるところでH.264が使われています。 H.264は注目すべき技術のひとつです。たったひとつの目標、つまりフルモーションビデオの送信に要するネットワーク帯域を削減することを目指した30年以上の努力の結晶なのです。 技術的な面でも、H.264はとても興味深い規格です。この記事では、その一部について概要レベルでの知識を得られることでしょう。あまり複雑だと感じさせないようにするつもりです。今回おはなしする概念の多くは動画圧縮全般にあてはまるものであり、H.264に限ったものではありません

    H.264の秘密 | POSTD
  • CodeProject

    A bi-partite circular buffer for high performance buffering, where it comes from, and why you'd want to use it. Download source files - 2.4 KB Introduction The Bip-Buffer is like a circular buffer, but slightly different. Instead of keeping one head and tail pointer to the data in the buffer, it maintains two revolving regions, allowing for fast data access without having to worry about wrapping a

    CodeProject
  • The Magic Ring Buffer

    This is a cute little trick that would be way more useful if there was proper OS support for it. It’s useful in a fairly small number of cases, but it’s nice enough to be worth writing up. Ring buffers I’m assuming you know what a ring buffer is, and how it’s typically implemented. I’ve written about it before, focusing on different ways to keep count of the fill state (and what that means for the

    The Magic Ring Buffer
    craf
    craf 2016/11/19
    mmap で ring buffer の終端処理を単純化する手法
  • GitHub - willemt/cbuffer: A circular buffer written in C using Posix calls to create a contiguously mapped memory space. BSD Licensed.

    craf
    craf 2016/11/19
    mmap で ring buffer の終端処理を単純化する手法
  • A simple, fast circular buffer implementation for audio processing

    A simple, fast circular buffer implementation for audio processing Circular buffers are pretty much what they sound like – arrays that wrap around. They’re fantastically useful as scratch space for audio processing, and generally passing audio around efficiently. They’re designed for FIFO (first-in-first-out) use, like storing audio coming in the microphone for later playback or processing. Consid

  • Lock-Free Multi-Producer Multi-Consumer Queue on Ring Buffer | Linux Journal

    Nowadays, high-performance server software (for example, the HTTP accelerator) in most cases runs on multicore machines. Modern hardware could provide 32, 64 or more CPU cores. In such highly concurrent environments, lock contention sometimes hurts overall system performance more than data copying, context switches and so on. Thus, moving the hottest data structures from a locked to a lock-free de

  • 乱数にコクを出す方法について

    深津 貴之 / THE GUILD / note @fladdict アニメーションの監修で、「 Random();の代わりに、(Random()+Random()+Rrandom()+Random()+Random())/5.0f; を使うと、動きにコクが出る」と言ったら、ピュアオーディオ扱いされるのですが・・・これは根拠のあるアルゴです。 2016-11-03 11:29:43 深津 貴之 / THE GUILD / note @fladdict 乱数のコクをチューニングする話をすると、なぜピュアオーディオ扱いされるのか? みんな乱数の波動を、もっと体で感じようよ。全然ヴァイブレーションが違うよ。 2016-11-03 11:36:47

    乱数にコクを出す方法について
  • 「一様乱数の平均値を正規乱数として代用する」という話をゆるふわ統計的に検証する

    「一様乱数を足し合わせて平均値をとった値は正規分布っぽくなるよ」というツイートを見かけて、「それって統計的にどうなんだろう?」という疑問が湧いたので検証してみました。 はじめにPermalink 昨日・一昨日ぐらいに Twitter 上でちょっとした話題になっていた アニメーションの監修で、「 Random();の代わりに、(Random()+Random()+Rrandom()+Random()+Random())/5.0f; を使うと、動きにコクが出る」と言ったら、ピュアオーディオ扱いされるのですが・・・これは根拠のあるアルゴです。 — 深津 貴之 (@fladdict) 2016年11月3日 というツイートに関連して、「一様乱数の平均値を正規乱数として代用する」的なツイートをちらほら見かけて気になっていたので、統計的に検証してみましたよ、というブログエントリです (このツイート自体に

    「一様乱数の平均値を正規乱数として代用する」という話をゆるふわ統計的に検証する
  • スターバックスは2フェーズコミットを使わない - gregors-ramblings-ja - Google Code

    Code Archive Skip to content Google About Google Privacy Terms

  • 情報理論を視覚的に理解する (1/4) : | POSTD

    世界を考察する新しい方法を手に入れたときの感覚が大好きです。特に好きなのは、いずれ具体的なコンセプトに形を変えるボンヤリとした考えがあるときです。情報理論は、その最たる例です。 情報理論は、多くの物事を説明するための正確な言葉を与えてくれます。自分はどのくらい理解できていないのか?質問Aの答えを知ることが、質問Bを答えるのにどのくらい役立つのか?ある種の信念が他の信念とどの程度似ているのか?こういうことに対し、若くて未熟なころから自分なりの考えがありましたが、情報理論に出会って正確で強固な考えとしてはっきりと固まりました。その考えは、桁外れの、例えばデータの圧縮から量子物理学や機械学習、さらにはその間に広がる数多くの分野に応用が利くものです。 残念なことに、情報理論は少々威嚇的に見えてしまうのですが、そう断定すべき根拠は全くないと思います。実際、情報理論の多くの重要な概念は完全に視覚的に説

    情報理論を視覚的に理解する (1/4) : | POSTD
  • Brainfuck interpreter in Ruby's Regexp - 兼雑記

    Ruby の正規表現だけで Brainfuck インタプリタを作ることができました。正規表現の実行は =~ だけなので、ループなども正規表現の内部で実行してます。 https://github.com/shinh/hack/blob/master/bf_rb_reg/bf.rb つまりどういうことができるかというと、 BF_REG という Regexp と BF_SUFFIX という文字列定数があって、 bf という文字列に格納された Brainfuck のコードを BF_REG =~ bf + BF_SUFFIX で実行することができます。出力は $~['o0'], $~['o1'], ... に入っているので、 output = '' 256.times do |i| o = $~["o#{i}"] break if !o output += o end 的なコードで取り出すことができ

    Brainfuck interpreter in Ruby's Regexp - 兼雑記
  • Talk about ML and DL for happy engineer's life

    DevFest Tokyo 2016での発表資料 http://gdg-tokyo.connpass.com/event/38927/

    Talk about ML and DL for happy engineer's life