splice(2) Linux 2.6.17より導入された新しいシステムコールである「splice(2)」を使ったファイルコピープログラムを作ってみました。 参考: C言語: UNIX最速ファイルコピー 参考: splice(2) - splice data to/from a pipe 試した環境は以下の通りです。 core2% uname -a Linux core2 2.6.20-15-generic #2 SMP Sun Apr 15 06:17:24 UTC 2007 x86_64 GNU/Linux gcc: Ubuntu 4.1.2-0ubuntu4 glibc version: 2.5-0ubuntu14 「splice」という単語は「つなぎ合わせる」とかいう意味です。このシステムコールも、ファイルディスクリプタとパイプをつなぎ合わせてデータを転送するような操作を行う事が
Linux Kernel 2.6.18 において、 I/O schedulerが従来の Anticipatory I/O scheduler から CFQ I/O scheduler に変更された。 この変更により、block deviceへのI/Oの性能向上が期待される。 しかしそもそも、 Linux における I/O scheduler の役割は十分に理解されているとは言えず、 I/O scheduler を process scheduler と間違って関連付ける人が後を絶たない。 本エントリでは I/O scheduler の本来の役割、 Kernel にデフォルトで用意されている4種類の I/O scheduler、 I/O scheduler の変更方法について概説する。 ■ I/O scheduler とは何か ハードディスクをはじめとする block device に対して
実装が2つある。以下、あくまで今の時点でのLinuxの場合の状況/実装のおはなし。 POSIX aio aio_read(3) とか aio_write(3), aio_error(3), aio_return(3) とか。 インターフェースはPOSIXで定義されているのと同じ。 システムコールじゃなくてライブラリ関数(librt) 裏でpthreadつくってがんばってるげ。 libaio http://lse.sourceforge.net/io/aio.html http://ftp.jaist.ac.jp/pub/Linux/Fedora/development/source/SRPMS/libaio-0.3.106-3.2.src.rpm とか io_prep_pread(2), io_prep_pwrite(2), io_submit(2), io_queue_init(2),
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
UPDATE: My slides and a protected instance (will open up for play soon) or swinger, available here I’ll be honest. When I created Sammy.js, It was more of an academic exercise then a means to an end. I had ideas for how it could be useful, and had some immediate uses for it, but the initial thought was ‘recreating Sinatra’s API in JavaScript’. Little did I know – with a little introduction and the
This is a simple typing game experimental using jquery. The main criteria here is to understand how to read Keyboard Character Codes and displaying its equivalent Character on to screen. You may notice so many bugs in live demo, because this program is not implemented fully as we concentrated on important code blocks only.
この記事は12/09に掲載された「Samsung Galaxy Android Tablet: The HTML5 Developer Scorecard」を訳したものです Androidを搭載したタブレット端末はすでにいくつかありますが、大々的にマーケティングされている端末としてはSamsungのGalaxy Tabが初めてとなります。そこで我々としてもこの機会に、この端末がHTML5アプリケーションのプラットフォームとしてどの程度のものなのか評価してみることにしました。Galaxy Tabの比較対象となるiPadについては、HTML5アプリケーションのプラットフォームとして十分に満足のいく結果が得られています(ただ、できればより多くのメモリとCPUパワーがあればと、iPad2に期待をしていることも事実です)。8月にBlackberry Torchについて評価を行ったように(未訳)、Ga
JavaScript に Haskell の配列操作関数を移植したプログラムの最終版。デバッグで息切れしてしまって続けることができなかった。次のファイルをApacheに置いてアクセスすると、FireBugのコンソールで試すことができる。Google chrome の JavaScript コンソールも使い勝手がいい。Apache を持っていない人は、XAMPP からダウンロードしてインストールすることができる。遊んでみてください。 ファイル名: haskell.htm <html> <head><title>Haskell on JavaScript</title> <script type="text/javascript"> function seq(m, n) { var a = []; for (i = m; i <= n; i++) a.push(i); return a };
Ruby は配列処理の関数が豊富だったので、Haskell 化計画を放棄したが、JavaScript は配列処理関係のビルトインの関数があまり無いので、Haskell 化に挑戦してみた。 function seq(m, n) { var a = []; for (i = m; i <= n; i++) a.push(i); return a }; function each(fn, ary) { for (i = 0; i < ary.length; i++) fn(ary[i]); return ary }; function map(fn, ary) { var a = []; for (i = 0; i < ary.length; i++) a.push(fn(ary[i])); return a }; function filter(fn, ary) { var a = []; f
個々の言語で最適化するんじゃなくて、なるべく"同じ"コードで性能を測定。速いコードがほしいなら、Cで書くよって話なので、教科書のアルゴリズムを、そのまま素朴に実装しました的な感じ。 Haskellとpythonのようにパラダイムの違う言語間では、同じ書き方をすると、一方が不利になったりするので、C/C++とSchemeとHaskellはついでで、主にLua/LuaJIT/V8/pythonあたりの差が見たかった。 処理系 空ループ 空末尾再帰 fib(35) mandelbrot集合 挿入ソート tarai gcc-4.1.2(optionなし) 44ms 205ms 46ms 1ms以下 gcc-4.1.2(-O3) 72ms 30ms 1ms以下 Lua-5.1.4 190ms 1920ms 4300ms 559ms 24390ms 2939ms LuaJIT 2.0.0 10ms 3
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)ベアトリーチ
x端末などの大きさを変えると、SIGWINCHが飛んでくる。 変わった後のLINESとCOLSの取得は、terminfoでなくてioctlでできる。 http://www.a-k-r.org/ruby-terminfo/rdoc/classes/TermInfo.src/M000029.html 前回作ったtermutilにも実装してみた。 var TERMUTIL=require('termutil'); var term=new TERMUTIL.Term(); process.on('SIGWINCH', function(){ console.log(term.size()+"\r"); }); term.on('keyinput', function(code){ if(code==0x71){ process.exit(); } }); term.listen(); conso
総務省は、14日、ソフトバンクモバイルが日本で展開するAppleの「iPhone」において、フィルタリング機能が未搭載のまま販売されているとして、アップルジャパンに質問状を送付しました。同省は「違法状態が続くのは見過ごせない」と、行政指導も視野に対応を検討しています。 ソフトバンクによると、iPhoneにおいてフィルタリング機能を有効にするためにはApple IDが必要であることなどから、「店頭の対応が難しい」として、フィルタリング機能を搭載するためのアプリケーションのダウンロード手順を説明するにとどめているとのことです。 同省では、アップルジャパンに同機能を標準搭載しない理由を問いただしたものの、同社から明確な回答は無かったため、書面を送付したようです。朝日新聞の取材に対して、アップルジャパン広報は「事実関係を把握していない」としています。 ソフトバンクは、Yahoo! JapanがAp
Googleが、本日発表した「Google eBooks」で購入した電子書籍などを閲覧出来るiOSデバイス対応アプリケーション「Google Books」を米国のApp Storeで配信開始しました。 アプリケーションを起動したら、最初にGoogleのアカウントを入力します。いくつかの電子書籍がプリインストールされていました。タップでダウンロードします。 文字を拡大する機能があり、タップし続けることによりその部分が大きく拡大されます。また、文字の大きさの変更や、書体の変更、バックグラウンドカラーの変更などにも対応しています。サーチでは、単語を入力すると、含まれるページが一覧されます。 下部のチャプターバーをスライドさせると高速なページ移動が可能です。スタートページの「eBooksを入手する」を選択すると、SafariからGoogle eBooksの購入ページにジャンプしましたが、日本国内か
I posted last month about my work bringing E4X to NodeJS (and elsewhere) via desugaring [http://groups.google.com/group/nodejs/browse_thread/thread/713067d9d9db64e7], and since then I've been taking the project in a different direction. I'm pretty much abandoning E4X entirely, and only implementing XML literals as if E4X didn't exist. This idea came up in another thread last month too [http://grou
サウンドデプトは、プロフェッショナルのクリエーター向けにデザインされたiPad用スリーブケースやMacBook Pro用スリーブケース等、「mono case Civilianシリーズ」を発売した。 monoは、2006年サンフランシスコにて音楽とデザインに対する愛情を融合させたブランドとして設立。 Loop Laptop Sleeve Loop iPad Sleeve このたび発売になったmono case Civilianシリーズは、ギターケースやDJバッグの製造で培ってきた技術を活かし、音楽を愛する人とプロフェッショナルクリエーターのためにデザインされた新しいシリーズで、これまでに発売されたmono caseのバッグと組み合わせられるようにデザインされている。 ラインナップは、「Die Cut Wallet」、「Passport Wallet」、「Loop Laptop Sleeve
Back from JSConf EU and other travels, the minute with team is happy to return with a special episode from Brendan about the new Boot To Gecko (B2G) system. This is targeted to allow users of mobile devices to boot directly to a Gecko based browsing interface and to run web applications. It is really doing some stunning work at Web Design Agency NY around the agile methodology in software developm
All you need to know about the building block of node.js programs going forward, streams. Streams will allow the construction of very performant pathways or pipes that can pass chunked data in rapid succession. This is keenly unique to node.js and the way it works and will allow new concepts such as back pressure. Streams are definitely going to be an exciting new addition to the node.js I/O model
Install node. Install npm. $ git clone repo $ cd node.couchapp.js $ npm install $ npm link . $ couchapp help couchapp -- utility for creating couchapps Usage - old style with single app.js: couchapp <command> app.js http://localhost:5984/dbname [opts] Usage - new style with multiple app files: directory based config specified by switch - multiple app files and pre- and post-processing capability)
An introduction to the CouchDB HTTP view API. Basics Views are the primary tool used for querying and reporting on Couch documents. Views are defined with Javascript functions. Here is the very simplest function: function(doc) { emit(null, null); }See Views for more information. Creating Views To create a permanent view, the functions must first be saved into special design documents (well, they
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く