タグ

*プログラミングに関するpneumasterのブックマーク (196)

  • 一番右端の立っているビット位置を求める「ものすごい」コードのていねいな説明 - 2009-07-06 - 当面C#と.NETな記録

    id:siokoshou:20090704 のはてブのコメント見てるとわからないってコメントが結構あるので、もう一度がんばって説明してみます。まあわかったところで得はないかもしれませんw public static int GetNumberOfTrailingZeros( long x ) { if ( x == 0 ) return 64; ulong y = ( ulong ) ( x & -x ); int i = ( int ) ( ( y * 0x03F566ED27179461UL ) >> 58 ); return table[ i ]; } static int[] table; table = new int[ 64 ]; ulong hash = 0x03F566ED27179461UL; for ( int i = 0; i < 64; i++ ) { table[

    一番右端の立っているビット位置を求める「ものすごい」コードのていねいな説明 - 2009-07-06 - 当面C#と.NETな記録
  • 一番左端の立っているビット位置を求めるすんごいコード(NLZ) - Koonies/こりゃいいな!

    昨日、先輩に2009-07-04を教えてもらった。 何だか分からないが凄いコードだ。 僕的にはNTZ(右端のビット位置を求める)より32bitのNLZ(左端を..)の方が色々と利用できる場面があるのでそっちに使えないのか考えてみた。 ハッカーのたのしみ―物のプログラマはいかにして問題を解くかposted with amazlet at 09.07.07ジュニア,ヘンリー・S. ウォーレン エスアイビーアクセス 売り上げランキング: 16618 おすすめ度の平均: ビットの楽しみ たのしみ? たしなみ? ちゃんと読むと得した気分になれます 最後の頑張りに効きます Hackっていうのは、こういうコトさ Amazon.co.jp で詳細を見る 一応説明しておくとNLZは32bitの値を2進で表示したとき一番左からの0の個数。 0x80000000なら0、0x08000000なら4、8なら24で

    一番左端の立っているビット位置を求めるすんごいコード(NLZ) - Koonies/こりゃいいな!
  • Skypeのリバースエンジニアリング資料『Silver Needle in the Skype』 - はてダ保管所 by ogijun

    http://www.blackhat.com/presentations/bh-europe-06/bh-eu-06-biondi/bh-eu-06-biondi-up.pdf ぜんぜんタイムリーな話題じゃないけど、年越しでうだうだしてるときにitojunさんから教えてもらってSkypeをリバースエンジニアリングしてみたという人の報告を読みました。去年のBlackHatで発表されていたらしい。 で、ざざっと眺めてみたんだけどこれがもうすごいのなんの。とにかくSkypeの開発者たちはタダモノではないということがわかります。コードとプロトコルの隠蔽のためにあの手この手を尽していて、そこそこモダンな暗号(解読)技術と古き良きプロテクト(外し)技術の両方がせめぎ合ってむちゃくちゃ面白い。それを解明しようとする発表者たちもすごいですが。 となると当然期待されるように、解析防止のためのトラップもそこ

    Skypeのリバースエンジニアリング資料『Silver Needle in the Skype』 - はてダ保管所 by ogijun
  • CPAN経由でLinuxにモジュールを組み込む

    Perlのモジュールをインストールしよう! サーバーにPerlの各種モジュールをインストールするには、CPAN を使うと超ラクチンです。 ここでは、サーバーにモジュールをインストールするためのツール、CPANの設定方法と、その使い方を解説します。 このセクションは、Linuxサーバー向けに書かれております。 CPANとは 「モジュール(機能のかたまり)」を簡単にインストールしてくれるシステムです。* 自動的に、モジュールの最新ソースファイルを取って来て、コンパイルし、インストールし、依存関係も解決してくれる優れものです。 CPANの環境を設定する CPANのスクリプトはたいていのLinuxディストリビューションに標準で入っています。 ただし、まずは設定が必要です。楽をするためには、それなりの努力がいるようです…。 shell(コマンドライン)で、以下の通り打ちま

    pneumaster
    pneumaster 2009/10/05
    モジュールのインストールはroot権限を持ったユーザで行う
  • vimrc 共有サービス vimrcbox のプラグインを添削した - 永遠に未完成

    id:kabiy が vimrcbox なるものを作ったらしい。vimrc を共有するサービス。 vimrcbox をリリースしました。 - cod.note http://soralabo.net/s/vrcb/ で、vimrcをアップロードするのに vimrcbox.vim というプラグインを使うんだけど、初めての Vim プラグインで添削募集中とのことだったので僭越ながら添削してみる。 とりあえず元ソース 多分今後更新されるので、とりあえず現時点での vimrcbox.vim " vimrcbox.vim " Author: Sora harakami <sora134@gmail.com> " Require: curl " Licence: MIT Licence if !exists('g:vimrcbox_user') let g:vimrcbox_user = '' end

    vimrc 共有サービス vimrcbox のプラグインを添削した - 永遠に未完成
    pneumaster
    pneumaster 2009/09/29
    多重読み込み防止|'cpoption' を初期化|http://whileimautomaton.net/2008/09/diary#d07-213145と合わせて読む
  • Home -

    In the fast-paced world of online gambling, finding a reliable and enjoyable platform can be a daunting task. With so …

  • 本を読む Bash on Railsを作る(7) db/schema.sh

    bashの内蔵コマンドだけでいかにRuby on Railsっぽいことをやるかというパロディ企画です。「Webアプリケーションをなめるな」とDISってもらえる日を夢みています。特にそのための行動をする気はありませんが。 今回は、前回の予告どおり、モデルのスキーマ定義であるdb/schema.shファイルについて、メタプログラミングでDSLする方法を解説します。 db/schema.shの中身 第1回で紹介したように、db/schema.shファイルの中身は以下のようになっています。 create_table members t t.column name string t.column mailaddress string t.column comment string elbat_etaerc これをシェルスクリプトとして解釈します。 なお、いまのところdb/schema.shを手書きし

  • 本を読む シェルスクリプトでHTTPサーバーを書いてみた

    Bash on Railsやらsh.inatraやら、pure bashなWAFもどきを作っていて、ApacheのCGIで呼ぶのが不徹底な感じがしてました。pure bashなHTTPサーバーってできないかなと思ったり。 pure bashは無理でも、nc(netcat)でlistenすればできるか、とは考えてました。そのまま手をつけていなかったのですが、ふと書いてみたので公開しておきます。GitHubに置くほどのものでもないのですが。 emasaka's httpd.bash at master - GitHub 起動すると、デフォルトで3000番ポートでlistenします。 $ ./httpd.bash Ctrl-C to shutdown server これで、カレントディレクトリをドキュメントルートとして、Webブラウザからアクセスできるようになります。sh.inatraなどを呼ぶ

  • Pythonの文字化け対策:sys.setdefaultencodingの謎 - ぎじゅっやさん

    pneumaster
    pneumaster 2009/09/16
    日本語文字コードエラー/UnicodeEncodeError/setdefaultencoding関数が無いと言われる理由/実行時にdefaultencodingを変更する/shebangにpython -C/
  • 一般公開されたmixiアプリ、その作り方は?

    mixiアプリを使ってもらうための「カテゴリ申請」とは アプリの設定変更画面に「ステータス」という欄が増え、アプリ作成時は「開発中」というステータスが表示されるようになりました。そして、その横に「カテゴリ掲載申請を行う」ボタンがあります。 このボタンをクリックすると、そのアプリのカテゴリ掲載申請が行われ、mixi運営事務局に審査されます。無事受理されると、アプリはやっと一般ユーザーの検索対象になります。 カテゴリ掲載申請を行うためには、次の条件を満たす必要があります。 「mixi Platform 利用規約」に準拠している 「mixiアプリ ガイドライン」に準拠している アプリ利用中のmixiユーザー(以下「アプリ利用者」とする)が10人以上いる アプリのロゴ、アイコン、スクリーンショットと説明文がプロフィールページに掲載されている mixiが提供していると誤解を与えかねない文章をアプリ名

    一般公開されたmixiアプリ、その作り方は?
  • Vimで同じインデントの部分を選択する - Webtech Walker

    kanaさんの記事をみて自分で定義した部分を選択したりomapに定義したりするのがすごい便利だなーと思って自分でも書いてみました。 カレントの位置と同じインデントの部分を選択できるような設定を書きました。たとえば下記のようテキストがあったときに配列と中身だけを選択するときとかに便利です。vibで選択すると、)の前まで選択範囲になるのでちょっと選択したい範囲と違ったりするんですよね。 function foo() { $hoge = array( 'foo' => 'bar', 'hoge' => 'fuga', ); } ソースはこんな感じ function! VisualCurrentIndentBlock() let current_indent = indent('.') let current_line = line('.') let current_col = col('.')

    Vimで同じインデントの部分を選択する - Webtech Walker
    pneumaster
    pneumaster 2009/08/28
    こんな感じにはてなでGithubのページ読み込みたいなあ
  • Github APIメモ - こせきの技術日記

    Github API (version 2)のメモ。主に情報取得系のAPIについて。 概要 ドキュメント http://develop.github.com/ フォーマットにxml,yaml,jsonを指定できる。以下ではXMLを指定する。ブラウザで見やすいので。 http://github.com/api/v2/:format (URLのベース) 取得系のURLパターン。 ID不要 repos/search/キーワード …… リポジトリ検索 repos/show/ユーザ …… ユーザのリポジトリ一覧 repos/show/ユーザ/リポジトリ …… リポジトリ情報 commits/list/ユーザ/リポジトリ/ブランチ …… 最近のコミット(コミットID、ルートツリーIDが得られる) commits/list/ユーザ/リポジトリ/ブランチ/パス …… 最近のコミット (コミットID、ルート

    Github APIメモ - こせきの技術日記
  • Twitter の半径数クリック以内の情報収集 - IT戦記

    ちょっと 現実頭皮的に自己満足的プログラムを書きたくなったので Twitter のクローラーを書いてみた。 C++ にしては、割とすっきり書けて満足。 使ったライブラリ soci データベースライブラリ picojson json パーサー boost.asio ネットワークライブラリ boost.date_time 日付時刻ライブラリ ソース #include <cassert> #include <soci.h> #include <soci-sqlite3.h> #include <unistd.h> #include <iostream> #include <sstream> #include <picojson.h> #include <boost/scoped_ptr.hpp> #include <boost/asio.hpp> #include <boost/cast.hpp

    Twitter の半径数クリック以内の情報収集 - IT戦記
  • すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog

    みなさん、こんにちは、今回は乱数の話です。 特に複数機種でのコンシューマ機でゲームを開発をしていると、機種間で乱数値を統一するために乱数生成アルゴリズムを自作しますよね。 そこでよく使われるアルゴリズムが「線形合同法」です、内容は至って簡単で、以下の漸化式を使います。 A,B,Mは定数で、どの値が入るかは処理系依存です。 例えばUnixなどの処理系ではA=1103515245,B=12345,M=2147483647などが入ります。 C言語ですと以下のようになります。 static unsigned int x=1; void srand(unsigned int s) { x=s; } unsigned int rand() { x=x*1103515245UL+12345UL; return x&2147483647UL; } この「線形合同法」は計算が簡単で高速ですから、いろいろな環

    すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog
    pneumaster
    pneumaster 2009/08/03
    メルセンヌツイスターには及ばないものの、(2^128)-1の周期を持っており値の偏りも少なく、品質が非常に高い/計算はビットシフトとXORだけでなので非常に高速
  • アムロの声で有名な古谷徹さんが自作プログラムを公開!

    アムロ、ヤムチャ、星矢、飛雄馬などの声で有名な古谷徹さんが自作プログラムを公開しています。ソフトは、「お年玉くん」、「宝くじくん」、「キラーくん」、「タイマーくん」の4Windows用のソフト(←こいつ、動くぞ!)になっています。 「宝くじくん」で当選結果を調べたときは 古谷徹さんの声で音声が流れます 古谷徹さんが開発した全てのソフトは、マイクロソフトのスタンドアロン開発用プログラミング言語Visual Basicでプログラミングされています。ダウンロードは、古谷徹さん公式サイトの下記ページから可能です。 Toru's hobby もし実行用のランタイムがない場合は、ランタイム研究所::VB Runtimeを参考にしてみてください。 古谷さんは、音声再生用のプログラミングに力を入れたようで、「参考書を数冊購入(^^ゞ」されたそうです。音声再生部分には、5倍以上のエネルギーゲインがあるか

    アムロの声で有名な古谷徹さんが自作プログラムを公開!
    pneumaster
    pneumaster 2009/08/03
    なにせパソコン歴は今年で12年、その昔は良く徹夜して、DOSのBasicのプログラミングに夢中になったものだ
  • アポロ11号のソースコード - Radium Software

    Google Code Blog - Apollo 11 mission's 40th Anniversary: One large step for open source code... アポロ11号の月面着陸から40周年ということで,最近やたらとアポロ計画関連の話題を見かける。そんな中,アポロ計画にちなんだ話題として Google Code Blog に投稿されたのが上のエントリー。 Google Code 上で公開されている Virtual AGC and AGS プロジェクトの中に, NASA のハードコピーから転記された物の AGC (アポロ誘導コンピュータ)のソースコードがありますよ……とのこと。 このソースコードには,オリジナルのアセンブリコードに記されていたラベルやコメントまでしっかり転記されている。それらの記述に目を通していると,そのコードを書いた人の考えや気持ちが伝

    アポロ11号のソースコード - Radium Software
    pneumaster
    pneumaster 2009/07/28
    アセンブラコード
  • リユーザブル,リエントラント,リロケータブルの具体例

    用語をご説明します。 ・「リエントラント」 ・・・再入可能 あるサブルーチンを考えます。そのサブルーチンを実行中に「割り込み」が入り、そのサブルーチンが再び呼び出される場合、「リエントラント」でなくてはなりません。前に実行した中間結果が破壊されてはこまるからです。FORTANはリエントラントではありません。最近の言語はほぼすべてリエントラントに記述可能です。ただし、グローバル変数を多用するとこのかぎりではありません。 具体的には、そのサブルーチンで確保される変数など(コンテキストといいます)がスタック上、または独立した領域に実行単位ごとに確保されなければなりません。C言語では、static宣言した変数が使われるとリロケータブルではなくなります。 ・ マルチスレッド 「スレッド」とはOSで制御される「最小限の実行単位」(数ミリ秒)のことです。複数のスレッドでプロセスまたはタスクが構成されるこ

    リユーザブル,リエントラント,リロケータブルの具体例
  • コード最適化

    コード最適化 最適化とは、効率のよい目的プログラムを生成することである。「効率のよい」とはいろいろな意味がある。例えば、なるべくサイズの小さいコードを生成するのも「効率のよい」と意味にもなる。コードを小さくするためには、なるべく小さい命令コードですむスタックマシン(大抵、1バイトで表現されるためバイトコードとも呼ばれる)にし、それを仮想スタックマシンで実行する方法もこの一つである。しかし、一般的には「効率のよい」とは、速いコード、すなわち実行時間が短いコードのことをいう。また、「最適化」といっているが、「最適」は事実上は不可能であるため、ここではなるべく効率を改善するという意味である。 実行時間を短くするには、大別して以下のことを考える 命令の実行回数を減らす。より早い命令(もしくは命令の組み合わせ)を使う。 メモリ階層を効率的に使う。 並列度の高い命令を使う。 命令の数を減ら

  • 頑張って正規表現内で円周率を999桁計算するPerlプログラム - 竹迫の近況報告

    というのは嘘です。ごめんなさい。 #!/usr/bin/perl '~!'!~('(?{'.('=&$;<(*/$&:?$+!$+"$&":!;$)(`~"*=#=)"&&$;&('^ '`):&])`<<`]{~@-+*-+{|,`+-#=,/`{)&|"`+@"="='^ '(|{=,`>{"|%-=-```{/,)>#``#.<#+?`%#{+%_??-.').'})') 実行結果 3.141592653589793238462643383279502884197169399375105820974944592307816406286208 99862803482534211706798214808651328230664709384460955058223172535940812848111745 028410270193852110555964462294895493038196

    頑張って正規表現内で円周率を999桁計算するPerlプログラム - 竹迫の近況報告
  • 末尾再帰 - Wikipedia

    一般に再帰呼び出しが可能な言語では、サブルーチン呼び出しのたびにスタックに呼び出し先から戻るための情報を保存する。そのため再帰が深くなりすぎるとスタックオーバーフローでプログラムが異常終了する。 そのような場合、次のようにループに変換して回避する。 { 変換前 } function F (a1:T1, a2:T2, ..., an:Tn) : T0 begin P ; return func (b1, b2, ..., bn) ; end ; { 変換後 } function F (a1:T1, a2:T2, ..., an:Tn) : T0 begin loop P ; a1 := b1 ; a2 := b2 ; : an := bn ; end loop ; end ; { Ti は型、P は手続き、bi は値または a1~an に対する副作用を伴わない式である。 それ以外の識別子は変

    pneumaster
    pneumaster 2009/07/08
    tail recursion/末尾再帰/再帰から戻ってきた後にreturn以外の処理を行わない再帰のこと/末尾再帰呼出し/末尾呼出しの再帰版/オライリーのGaucheの本に少し書いてあった