タグ

programmingに関するdominion525のブックマーク (25)

  • 漢数字が数字順にソートされない理由を調べてみた - give IT a try

    はじめに:「なぜ漢数字は数字順に並ばない!?」 先日、こんなツイートをしたところ、結構たくさんの人にリツイートされました。(執筆時点で50件以上) 「漢数字はソートしても数字順に並ばない」という事実を生まれて初めて知った。まさかのサプライズ。 pic.twitter.com/Eqx3ltIfHs— Junichi Ito (伊藤淳一) (@jnchito) 2014年11月27日 「なぜ漢数字は数字順に並ばないのか」という問いに対して、表面的な回答をするなら「数字順に並ばないのは、数字の大きさではなく文字コード順でソートされているから」ということになります。 いや、もちろんそれはわかってるんです。 問題は「そもそもなんで数字順に文字コードを振らなかったの!?」ということです。 感覚的には「一郎、二郎、三郎」って並んでほしいじゃないですか。でも、プログラム上でソートすると「一郎、三郎、二郎」

    漢数字が数字順にソートされない理由を調べてみた - give IT a try
    dominion525
    dominion525 2014/12/03
    むしろ、漢数字が数字順に並ぶと思ったほうが不思議に感じるくらいではある。あれ漢字なんだし。
  • 特異なバグ - Wikipedia

    特異なバグ (英: unusual software bugs) とは、ソフトウェアバグの中でも特に修正が難しいものを言う。いくつかの種類があるが、直感的に理解しがたいような理論を発表した科学者に由来して名前が付いているものが多い。 ハイゼンバグ (Heisenbugs)[編集] ハイゼンバグは、それを調査しようとすると変貌したり消えたりするバグである。 ハイゼンバグの例: リリース版では発生するがデバッグ版(-DDEBUGコンパイルオプション等)では発生しない。 普通に実行すれば発生するがデバッガなどの環境では発生しない。 ユーザーの環境では発生するが開発者の環境では発生しない。 結合テストでは発生するが同じチェックをしているはずの単体テストでは発生しない。 何が起きているのか調べようと出力命令を入れると(いわゆる「printfデバッグ」)発生しなくなる。 競合状態によって発生している。

    dominion525
    dominion525 2012/06/14
    シュレーディンバグwww
  • JDKの時間計測まわりのコードを読んでみる - 虎塚

    ぐぬぬ。。。せっかくのご指名ですが。。。 JVMがOSごとにどの計時関数を呼び出すのかすら、自分はろくに知らないのです…無念だ。 でも、「ネタを振られたら全力で撃ち返せ」ってじっちゃが言ってた。 というわけで、最適化よりもずっと手前の話題、JVMの時間取得まわりのコードを眺めてみようと思います。 Systemクラスのソースコードを見ると public static native long currentTimeMillis(); と、native宣言されている。ここから先はネイティブの世界。VMの実装依存の世界でもある。 Javaパフォーマンス計測 そんなタイマーで大丈夫か? - プログラマーの脳みそ そですね。では、その世界を確認してみましょう。 ゴール Javaで時間計測を行った時に各OSで最終的に呼ばれるAPIとその精度について、JDKのソースコードおよびドキュメントを元に把握する。

    JDKの時間計測まわりのコードを読んでみる - 虎塚
  • GLSLシェーダによるカートゥーンレンダリング

    今日は、GLSLによるカートゥーンを紹介しようと思います。割と簡単にでき、それなりに見栄えがするからです。その応用として、輪郭線も描画します。 カートゥーンの原理 カートゥーンはセルアニメ調のレンダリングです。左下の図に示すように、頂点vにおいて、法線と光源ベクトル(頂点から光源へのベクトル)との内積(照度)を、右下の図のようなテクスチャのs座標に当てはめることで簡単に実現できます。 更に、次の図の左のように、視線ベクトルと法線の内積を考えると、輪郭となる部分はほぼ0になります。そのため、その内積をt座標に割り当てることで、輪郭線を実現できます。 s座標もt座標も単位ベクトル同士の内積で計算できますが、その範囲は-1~1になるため、テクスチャマッピング(glTexParameterによる指定)をクランプに設定する必要があります。 バーテックスシェーダ(頂点シェーダ) 今回は、頂点シェーダで

  • プログラマーが初心者におすすめするプログラミング関連本10冊

    dominion525
    dominion525 2010/11/24
    こういう「振り返ってみて有用性を感じる」といった本は、いきなりバックグラウンド無く読んでもただしく身につくか、というと微妙なところがある。
  • Super Technique 講座~有限状態機械:

    「有限状態機械(有限オートマトン)」とは、計算モデルの1つである。これは来コンピュータ科学の中でも「計算論」に属する話題であり、通常のコンピュータを形式化したチューリング機械よりも能力の低い計算モデルなのだが、アルゴリズムとしてこの形式化を利用することが出来、しかもこの「有限状態機械」は広い応用を持っている。いわゆる「正規表現」を処理するライブラリはこの「有限状態機械」の典型的な応用なのだが、それ以外にもプログラマとして知っていると、アルゴリズムの可読性と処理速度を上げるヒントを得られるアイデアである。 有限状態機械とは? 正規表現とは? 正規表現ライブラリの使い方 オートマトンと正規表現 簡単な応用~JIS →EUC 変換 より複雑な応用~FORTRAN風書式の処理 State デザインパターン 有限状態機械とは? 「有限状態機械」とは、コンピュータ科学(とは言っても数学寄りの奴)の「

    dominion525
    dominion525 2010/09/29
    有限状態機械
  • mixi大規模障害について 解明編 - mixi engineer blog

    こんにちは、システム技術部たんぽぽGの森です。 先日のmixi大規模障害の原因となったmemcachedの不具合の詳細な解明ができました。 再来週まで発表を見合わせようと思ったのですが、早くお伝えしたほうがいいと思いましたので公開発表致します。 memcachedとlibevent memcachedはlibeventというライブラリを使用してクライアントからの要求(接続、コマンド送信)を処理しています。 libeventを使用するにはevent_baseという構造体を用います。 main threadはmain_baseを使用します。 static struct event_base *main_base; ... int main (int argc, char **argv) { ... main_base = event_init(); ... /* enter the ev

    mixi大規模障害について 解明編 - mixi engineer blog
  • Javaバイトコード入門

    JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライドToshiakiArai

    Javaバイトコード入門
  • 並列1000コネクションに耐える! Ruby のイベント駆動ライブラリ Rev と EventMachine の HTTPクライアント : DSAS開発者の部屋

    並列1000コネクションに耐える! Ruby のイベント駆動ライブラリ Rev と EventMachine の HTTPクライアント こんにちは、takada-at です。 Rubyのイベント駆動型ネットワークプログラミングフレームワーク Rev と EventMachine で HTTPクライアントを動かしてみました。 イベント駆動型ネットワークプログラミングフレームワークとは何か説明しだすと難しいですが、一言で言うと、以下のようになります。 # ふつうのフロー駆動型プログラム Net::HTTP.start(host, port){|http| res = http.get(path) #この処理が終わってから } puts "done" #この次の処理が実行される # イベント駆動型プログラム client = Rev::HttpClient::connect(host, port

    並列1000コネクションに耐える! Ruby のイベント駆動ライブラリ Rev と EventMachine の HTTPクライアント : DSAS開発者の部屋
  • 素数ファイル - ita’s diary

    http://itpro.nikkeibp.co.jp/article/Watcher/20100519/348242/ 10^13 までの素数をファイルに格納する問題。 5Tバイトか!すごいね。なんとかもっと最適化できないか考えたけど、元記事もかなり頑張ってる模様。 10^13あたりの素数分布を見てみると、だいたい300間隔くらいになってる。なので値自体じゃなくて前の素数との差を記録するようにすれば1つあたり2バイトあればいい。これで計算すると5Tバイトになる。 600Gバイト もっと頑張るとすれば、素数は奇数なので間隔は常に偶数。したがって間隔/2を記録すればいい。こうするとほとんどが256以下になって1バイトで記録できる。 という訳で以下のようなフォーマットで、ある数以上ある数以下の素数を保存するファイルを考える。まず素数256個くらいをひと塊にしてブロックに分割する。8bit でO

    素数ファイル - ita’s diary
    dominion525
    dominion525 2010/05/29
    ADPCMみたいな方法で格納する
  • LLVM 言語マニュアル(Language Reference Manual)

    この文書は、LLVMアセンブリ言語の参照マニュアルです。 LLVMは、型安全で、低水準な操作ができる、柔軟な、 そして 全ての 高級言語を簡潔に表現できる能力を提供する静的単一代入(Static Single Assignment:SSA)ベースの表現です。 これはLLVMのコンパイル戦略のすべてのフェイズにわたって使用される共通コード表現です。 LLVMコード表現は、3つの異なる形式で使用できるように設計されています。 インメモリコンパイラ(IR)、 ディスク上でのビットコード表現(JITコンパイラの高速ロード対応)、 そして、可読アセンブリ言語表現です。 これは、変形にデバッグや視覚化の自然さを残しながら、 LLVMが効率的なコンパイラ変形および分析に強力な中間表現を提供することを可能にします。 LLVMの3つの異なる形式はすべて等価です。 このドキュメントは人間の判読可能な表現および

  • 米Facebook、PHPコードをC++コードに変換して高速に実行する「HipHop for PHP」発表 | OSDN Magazine

    米Facebookは2月2日(米国時間)、PHPの性能と拡張性を改善するプロジェクト「HipHop for PHP」を発表した。PHPコードをC++に変換するプログラムで、すでにFacebook内で利用されているという。今後オープンソースプロジェクトとして公開し、開発を進める計画だ。 FacebookはPHPを利用した大規模なソーシャルネットワーキングサイトだが、拡張性という問題に直面していた。HipHop for PHPはこの問題を解決するために数年前にスタートしたプロジェクトで、現在すでにFacebook内で利用されているとのこと。これによりWebサーバーのCPU利用率が改善し、性能の改善に役立ったという。開発者によると、CPUの利用率を平均して50%削減可能としている。 HipHop for PHPにはソースコード変換機構とC++向けに再実装したPHPランタイムシステム、そして高速化

    米Facebook、PHPコードをC++コードに変換して高速に実行する「HipHop for PHP」発表 | OSDN Magazine
  • はてな的プログラミング言語人気ランキング - Cube Lilac

    この記事で更新していた「基礎文法最速マスター」のまとめは,現在,プログラミング言語「基礎文法最速マスター」ランキング にて更新しています.この記事の更新は停止していますので,最新の結果はそちらを参照下さい. ここ最近,「○○○ 基礎文法最速マスター」と言う記事が流行っていたようです.この各記事の被ブクマ数を見ていると,プログラミング言語毎の(はてな界隈での)人気がよく表れているなーと思ったので被ブクマ数の多い順に列挙してみました*1.尚,調査する際には Perl基礎文法最速マスター - Perl入門〜サンプルコードによるPerl入門〜 の「このエントリーを含むエントリー」と 基礎文法最速マスターぞくぞくキターーー! - 燈明日記 を利用しました. JavaScript 基礎文法最速マスター - なんとなく日記 PHP 基礎文法最速マスター - Shin x blog Perl 基礎文法最速

    はてな的プログラミング言語人気ランキング - Cube Lilac
  • アプリケーションがマルチスレッドでもマルチコアCPUを活かせない件 - blog.nomadscafe.jp

    もっと詳しい方のフォロー募集です アプリケーションがマルチスレッドになってもネットワーク処理が分散されなければマルチコアを活かせない典型的な例です。id:viverの古橋さんがs100kpsとしてあげていた件にも近いかも。 memcachedで現象を確認します。最近のmemcachedはマルチスレッドで動くようになっているので、まずはそれを確認します。 $ memcached-tool localhost stats|grep threads threads 4 スレッドが4つで起動しています。 負荷がそれなりにある状態(8000req/sec程度)で、コマンドラインでtopを開き、「1」キーを押して、CPUごとの使用率を表示します。(例はFedora8 kernel-2.6.23) Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0

  • Greenbear Diary - reac (Reactive Ruby) がgemでインストールできるようになりました

    ■ [hg] Mercurialの簡単なチュートリアルを書きました Mercurialの簡単なチュートリアルを書きました。 Greenbear Laboratory - Mercurialを使ってみよう 姉妹編の「SVKを使ってみよう」ともども、どうぞご利用ください。 ■ [ruby][haskell][rubiskell] Rubiskellがgemでインストールできるようになりました 某ujihisaの発表でも紹介されたRubiskellが、 gem install rubiskell でインストールできるようになりました。 こんな風に、Rubyスクリプトの中にHaskellのコードを埋め込めるようになります。 require 'rubiskell' FIB = <<EOD fib :: Int -> Int fib 0 = 0 fib 1 = 1 fib n = fib (n-2)

    Greenbear Diary - reac (Reactive Ruby) がgemでインストールできるようになりました
  • なんとなくわかるO記法 - やや温め納豆

    私のように数字に弱い人でも、状況によってはスムーズにコミュニケーションをとるために理解しておかないといけないことがある。そういうときは、とりあえず、感覚だけでもこの辺を覚えておけば概ね困らない。 困らない、と思う(笑)。たぶん。 名称 記法 だいたいこんな感じ おおよその意味 (縦軸がコストの場合の例) 定数 O(1) 定数 対数 O(log n) 大丈夫そう 線形 O(n) だめかも、、、 二乗 やばい、これやばい! 指数 わろすっす すいません、正直この辺はいっぱいいっぱいです! 参考:ランダウの漸近記法

    なんとなくわかるO記法 - やや温め納豆
    dominion525
    dominion525 2009/10/19
    これはわかりやすい
  • 【ハウツー】Cアプリを高速化せよ! - 正式リリースされたgoogle-perftoolsを試す (3) TCMallocでメモリ割り当てを高速化する | エンタープライズ | マイコミジャーナル

    TCMallocでメモリ割り当てを高速化する TCMallocを利用するには、コンパイル時にlibtcmalloc.soをリンクするように指定すればよい。libtcmalloc.soが/usr/local/lib/ディレクトリにある場合、gccによるコンパイルは以下のようになる。 コンパイル時にTCMallocのライブラリをリンクするように指定 $ gcc -L/usr/local/lib/ -ltcmalloc ソースファイル名 このようにするだけで、malloc関数などによるメモリの割り当てや開放にTCMallocが使われるようになる。ソースコードには一切変更を加える必要はない。 もし再コンパイルせずにすでにある実行ファイルやコマンドにTCMallocを適用したい場合には、実行時にLD_PRELOAC環境変数にlibtcmalloc.soへのパスを設定すればよい。例えばbashの場合に

  • ソースコードリーディング(head,tailコマンド編)

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、Yahoo!ショッピング担当の吉野です。 今回はタイトルの通り、headコマンドとtailコマンドのソースコードを読んでいきたいと思います。 ■はじめに 皆さんご存じの通り、headコマンドはファイルの先頭からn行(バイト)を出力し、 tailコマンドはファイルの末尾からn行(バイト)を出力するコマンドです。 ほかにもパイプの入力に使ったり、[tail -f]でログファイルの出力監視に使ったりと、 UNIXを使う上では欠かせないコマンドと言えるでしょう。 headとtailは見た目の動作は似ているようですが、ソースコードの中は結構違います。 さっそく見ていきましょう。 <headのソースコード> http://www.

    ソースコードリーディング(head,tailコマンド編)
    dominion525
    dominion525 2009/06/17
    このシリーズはいいなぁ。
  • RTMPの仕様書が公開 - nod::ぶろぐ:RIA::Flex/AIR/Flash

    FlashやFlex,(Ajax),S2Flex2,ActionScript3,yui-frameworks,Akabanaプロジェクトなどのメモ Adobe Systemsが今年(2009)の1月にRTMP(eal-Time Messaging Protocol)の仕様を公開すると発表して約半年、ついに公開されました。 2009年の前半に公開されるとなっていたので、発表通りの公開になりました。 Adobe is expected to post the Real-Time Messaging Protocol (RTMP) specification on the Adobe Developer Connection at this URL (www.adobe.com/devnet/rtmp/) in the first half of 2009. Adobe - Real-Time

  • Spaghetti Source - アトキンのふるい

    ソースコード void sieve_of_atkin() { int n; for (int z = 1; z <= 5; z += 4) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 4*x*x+y*y) <= N; ++x) isprime[n] = !isprime[n]; for (int x = y+1; x <= sqrtN && (n = 3*x*x-y*y) <= N; x += 2) isprime[n] = !isprime[n]; } } for (int z = 2; z <= 4; z += 2) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 3*x*x+y*

    dominion525
    dominion525 2009/06/16
    >エラトステネスのふるいよりも計算量の意味でも実用的な意味でも高速に動作する.