タグ

programmingとProgrammingに関するtztのブックマーク (522)

  • 革命の日々! linuxのmlockが凶悪な件について

    諸卿もご存知の通り、Linuxのメモリアロケーションはmalloc(), mmap()した段階ではメモリ割付をせず、最初にメモリにアクセスしたときに行うという俗に「first touch」と呼ばれるアロケーションポリシーを採用している。 さて、んでは、このmmap()したけどまだ実際にはメモリ割付されているないアドレスにたいしてmlock()したらどうなるか。 というと、この時点でメモリ割付が走る。 走るのはいいんだが、これがまたベラボーに遅い。 別にLinuxカーネルのアルゴリズムが悪いわけではなくて、メモリ割付をする=そのページを0クリアするという事なので、DRAMのアクセス速度が超えられない壁となって立ちはだかるわけだ。 じゃあ、どのくらい時間がかかるか計算してみよう。 まず、DRAMをDDR2 PC5300と仮定しよう。イマドキ、こんなもんよね。 これでアクセス速度理論値 5300

  • Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編

    Scalaとは Scalaは、2003年にJavac(コンパイラ)やJavaのGenericsの設計/開発貢献者であるMartin Odersky氏(スイス・ローザンヌ工科大学教授)によって、開発が開始された比較的新しいプログラミング言語です。Javaは実用言語として幅広いシステムで使用されてきましたが、下位互換性を保つという要請の中、言語としての機能強化がなかなか進まないといった限界も見えてきています。そのような現状もあることから、ScalaJavaの後継として実用的な言語を目指して開発されています。 Scala最大の特徴は、Javaの良さを最大限継承しつつ、スクリプト言語や関数型言語の良いところも吸収し、先進的な機能/文法を取り入れている点です。また、今後のハードウェアのマルチコア化を見据え、簡易に並列処理プログラミングを行うことができるライブラリが付属しています。 Scalaのメリ

    Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編
  • ムーアの法則を理解しているということ(第98回カーネル読書会) - 未来のいつか/hyoshiokの日記

    第98回カーネル読書会は、はてなの田中さんによる、はてなでのハードでの性能の引き出し方というお題で思う存分お話をいただいた。 1年半で半導体の集積度が2倍になるというムーアの法則は誰でも聞いたことはあると思うし、IT系の技術者であれば、知っていて当然の「法則」である。問題は知っていることとそれを理解していることというのはまったく別のことである。将棋のコマの動かし方を知っていたとしても名人にはなれない。ムーアの法則を知っていても、それが自分の仕事にどのような意味を持つかということを理解し、実践している人は驚くほど少ない。 田中さんは数少ないムーアの法則を理解し実践している技術者の一人である。 1年半で様々なコストが半分になるとしたら、それを前提にシステムを組むことによって、どのような競争優位性をもたらすのか。それを自社のサービス戦略にどのように組み入れるか、ということをムーアの法則の文脈の上

    ムーアの法則を理解しているということ(第98回カーネル読書会) - 未来のいつか/hyoshiokの日記
  • 今日からあなたもゲーム開発者! Epic Games,Unreal Engine 3用のゲーム開発キット「Unreal Development Kit」の無償配布を開始

    今日からあなたもゲーム開発者! Epic Games,Unreal Engine 3用のゲーム開発キット「Unreal Development Kit」の無償配布を開始 ライター:朝倉哲也 Gears of WarシリーズやUnreal Tournamentシリーズなどで知られる北米のゲームデベロッパ,Epic Gamesは,同社が開発したゲームエンジン「Unreal Engine 3」の開発ツールキット,「Unreal Development Kit」の無償配布を開始したと発表した。 「Unreal Development Kit」ダウンロードサイト Unreal Engine 3といえば,現在非常に多くのタイトルに使われているゲームエンジンの一つ。このUnreal Development Kitを使えば,そんなUnreal Engine 3を使ったゲームが個人で開発できるというわけだ。

    今日からあなたもゲーム開発者! Epic Games,Unreal Engine 3用のゲーム開発キット「Unreal Development Kit」の無償配布を開始
  • グーグル、JavaScriptプログラミングツールをリリース

    Googleは米国時間11月5日、「Closure Tools」と呼ばれるプロジェクトをリリースし、同社のウェブサイトおよびウェブアプリケーション作成レベルに達することを望む開発者をサポートしていく方針を明らかにした。 Googleは、ウェブ中心のビジョンの一環で、JavaScriptを用いたウェブベースのプログラム記述を強く推進している。確かにGoogleは、「Gmail」や「Google Docs」などのサービスを通じて、JavaScriptを最大限に活用しており、より高速にJavaScriptプログラムを実行できるようにする目的もあって、「Chrome」ブラウザの開発に努めてきた。 しかしながら、JavaScriptプログラムは時に異なるブラウザ上では異なった動作をするなどの理由から、高機能なJavaScriptの記述、デバッグ、最適化は困難なものともなってきた。Googleがオープ

    グーグル、JavaScriptプログラミングツールをリリース
  • Erlangの歌(アイアイ替え歌)

    プログラミング言語 Erlang (http://www.erlang.org) を、童謡「アイアイ」の替え歌にしてみました。・2011年5月29日追記「IT系替え歌」というマイリストを作りました。mylist/25461341

    Erlangの歌(アイアイ替え歌)
  • 「QoS」の しくみ---目次

    すべてのパケットを“早い者勝ち”に扱うIPネットワーク。しかし最近,Webアクセスや電子メールより優先して送る必要のあるIP電話のようなアプリケーションが出てきた。こうした通信を使うには,IPネットでも,急ぎの通信を優先させたり,必要な帯域を確保する技術が必要となる。これがQoS機能だ。今回はQoS機能に焦点を当てて,そのしくみと効果をじっくり探っていく。 ■プロローグ IP電話の通信を守れ ■パート1 送信順を変える優先制御  パケットの列を分けるのがミソ ■パート2 帯域制御は「待たせて捨てる」 捨て方にテクニックあり ■パート3 パケットを正確に識別 4種類の情報で見分ける ■エピローグ QoSって意外に簡単

    「QoS」の しくみ---目次
  • 第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~

    大手SIベンダにてSEやPMやアーキテクトとして勤務したのち,株式会社豆蔵を経て,現在は合同会社シンプルアーキテクト代表社員であり,株式会社匠Business Placeのチーフコンサルタント。主に超上流のプロセスである要求開発やオブジェクト指向,アジャイル開発のコンサルタントとして活躍中。開発の現場にこだわり,開発の現場を少しでもよくしたいと日夜奮闘している。要求開発アライアンス執行委員。著書に『オブジェクト脳のつくり方』や『eXtreme Programming実践レポート』(ともに翔泳社発行。後者は共著)などがある。 Javaなど,オブジェクト指向や手続き型のプログラミングの経験はあるけれど,関数型のプログラミングは初めてという皆様のための,そして筆者自身のための「関数脳のつくり方」シリーズのSecond Season(First Seasonはこちら)。今回は「モナド」を取り上げま

    第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~
  • 不倒城: SI業界からネットゲーム業界に移った知人に色々話を聞いてきた。

    ちょっと技術的な話になる。 私の知人に、かつてはアルファベット三文字の某有名SI会社に在籍していて、今はどういう訳か某ネットゲームの会社に勤めている変り種がいる。 彼はネットワークとDBの専門家である。ゲーム業界には元来DB周りに詳しい人があまり多くなかったらしく、しかしネットゲームの開発にはDBやネットワークのアーキテクチャに関する知識が必須で、要は引き抜かれたらしいのだが、当人それ程ゲーム好きでもないのに面白いルートに行くなーと思っていた。 機会があったら金融業界とネットゲーム業界のシステム周りの違いについて聞いてみたいなーと思ってたんだが、この前久々に会ったら色んな話が聞けた。特定されない程度においおい書いてみよう。ぼかして書く為、ところどころいー加減だが勘弁して頂きたい。 今日はサーバとかデータのやり取りとか、技術的な話。 まず、前提。オンラインシステムの肝の一つに、「誰がデータを

  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

  • グーグルの研究が示すメモリエラーの真実--明らかになった高い発生率

    どうしてまたコンピュータがクラッシュしたのかと不思議に思ってはいないだろうか。Googleの実環境での研究によれば、それはメモリが原因かもしれないという。この研究では、メモリのエラー率が、これまでの研究で示されていたよりも高いことが分かった。 Googleは、同社のデータセンターにある膨大な数のコンピュータを使って、それらのマシンの実際の稼働状況についての実環境データを大量に収集することができる。それがまさに、エラー率が驚くほど高いことを明らかにした研究論文のために、同社が行ったことだ。 トロント大学教授Bianca Schroeder氏と、GoogleのEduardo Pinheiro氏ならびにWolf-Dietrich Weber氏の共著である同研究論文によれば、「メモリエラーの発生回数や、さまざまなDIMMにおけるエラー率の範囲が、以前報告されていたよりもずっと高いことが分かった。メ

    グーグルの研究が示すメモリエラーの真実--明らかになった高い発生率
  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
  • GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん

    Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最

    GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん
  • YANO's digital garage - パケット受信タイムスタンプ

    Linuxでパケット受信契機のタイムスタンプ採取方法。 ユーザーアプリからはsetsockoptでSO_TIMESTAMPを設定しておき、recvmsgで受信する都度せっせとCMSG_DATA(cmsg)経由で取得する形での仕組みが用意されている。具体的なコーディングサンプルだと char    inbuf[BUFSIZ]; char    cmsgbuf[CMSG_SPACE(sizeof(struct timeval))]; struct  cmsghdr *cmsg; struct  msghdr  msghdr; struct  iovec   msg_iov; struct timeval  *pTime, tv; const int on = 1; setsockopt(sock, SOL_SOCKET, SO_TIMESTAMP, &on, sizeof(on)); msg_

  • Manpage of CMSG

    Section: Linux Programmer's Manual (3) Updated: 1998-10-02 Index JM Home Page roff page 名前 CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - 補助データにアクセスする。 書式 #include <sys/socket.h> struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *msgh); struct cmsghdr *CMSG_NXTHDR(struct msghdr *msgh, struct cmsghdr *cmsg); size_t CMSG_ALIGN(size_t length); size_t CMSG_SPACE(size_t length); size_t CMSG_LEN(size_t

  • Manpage of RTNETLINK

    Section: Linux Programmer's Manual (7) Updated: 2008-08-08 Index JM Home Page roff page 名前 rtnetlink, NETLINK_ROUTE - Linux IPv4 ルーティングソケット 書式 #include <asm/types.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> #include <sys/socket.h> rtnetlink_socket = socket(AF_NETLINK, int socket_type, NETLINK_ROUTE); 説明 rtnetlink はカーネルのルーティングテーブルを読んだり変更したり するためのものである。これはカーネルが内部のサブシステムと 通信するためにも用いられて

  • Manpage of NETLINK

  • Manpage of NETLINK

    Section: Linux Programmer's Manual (7) Updated: 2008-08-08 Index JM Home Page roff page 名前 netlink - カーネルとユーザー空間の通信 (AF_NETLINK) 書式 #include <asm/types.h> #include <sys/socket.h> #include <linux/netlink.h> netlink_socket = socket(AF_NETLINK, socket_type, netlink_family); 説明 netlink はカーネルモジュールとユーザー空間のプロセス間で 情報をやりとりするために用いられる。 netlink は、ユーザープロセスに対しては 標準的なソケットベースのインターフェースを、 カーネルモジュールにはカーネルの内部 API を提供

  • straceを使ったデバッグ | OSDN Magazine

    プログラムが機能を果たせない場合には、有用なエラーメッセージを返し、問題を解決する手がかりを提供するのが理想的だ。しかし残念ながら、このような理想的な状況は珍しく、アプリケーションでエラーが発生したときに、手元に何の情報もないことも多い。 ここで、デバッグツールの登場だ。私にとってなくてはならないツールの1つが、straceだ。straceはシステムコールトレーサで、すでに実行されているプログラムによって発せられたコールを追跡する(straceを既存のPIDにバインドする)ことも、テストしたいプロセスをstraceに開始させることもできる。 では、straceの使い方を実例とともに見ていくことにしよう。 KDE起動時の問題 以前、私はKDEを起動する際の問題をデバッグしていた。返されたエラーメッセージからは、何の手がかりも得ることができなかった。 _KDE_IceTransSocketCr

    straceを使ったデバッグ | OSDN Magazine
  • Linux の identd が遅い理由 〜 debian の pidentd はひと味違う? : DSAS開発者の部屋

    identd というのは,いわゆる ident プロトコル(RFC 1413)を実装したデーモンの総称です.最近は使われる場面も減ってきたかもしれませんが,DSAS では一部この identd の返答結果に基づいてアクセスの可否を決定しているサービスが存在します(※1).そのため,identd の返答速度は重要になります. ※1 ident プロトコルは,クライアントからサーバ側への TCP 接続に関して,サーバ側がクライアント側に,その TCP 接続を所有しているユーザは誰であるかを問い合わせるためのものです.問い合わせた結果を何に用いるかはサーバ次第ですが,その仕組み上,問い合わせるサーバ側は問い合わせ先となるクライアント側の identd が自分が期待した回答を返してくれるものと信頼していることが前提となります.つまり,インターネット上のクライアントの identd の返答に基づいて

    Linux の identd が遅い理由 〜 debian の pidentd はひと味違う? : DSAS開発者の部屋