タグ

ブックマーク / gihyo.jp (170)

  • 第3回 マルチスレッド/子プロセス/共有ライブラリ | gihyo.jp

    関数呼び出しにおける基的な情報採取に関しては、前回までに説明した手法で十分なのですが、実際の情報採取の際には気を付けるべきトピックが幾つかあります。 今回は、それらのトピックについて説明したいと思います。 マルチスレッド マルチスレッド化によって性能や応答性の向上を実現するケースは、少なくないでしょう。 特に近年は、個人のデスクトップPCやノートPCでさえ、物理的に複数コアのCPUを搭載するご時勢ですので、CPUの使用効率を高める上でもマルチスレッド化の流れは加速するものと思われます。 マルチスレッド稼動時の関数フロー マルチスレッドで稼働中のプロセスから DTraceで関数フローを採取した場合、どのような出力が得られるでしょうか? 各スレッドで、リスト1に示すような処理を行う状況を仮定します。 リスト1 各スレッド上で実施される処理 void* running(void* arg) {

    第3回 マルチスレッド/子プロセス/共有ライブラリ | gihyo.jp
    Wacky
    Wacky 2010/04/02
    マルチスレッド稼動時の DTrace 出力の問題点は,それがどのスレッドで採取されたものかがわからない点にあります。
  • 第7回 性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (2)ハッシュ | gihyo.jp

    SQLアタマアカデミー 第7回性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (2)ハッシュ ハッシュ 概要 チューニング技術としてB-treeの次に重要なのは、ハッシュ(hash)です。ハッシュとは「ごちゃまぜ」とか「細切れ」という意味で、ハッシュドビーフとかハッシュポテトなどの料理名にも使われています。 ハッシュのポイントは分散です。キー値に対して適当な関数を適用して、データを格納する先のアドレスを割り当てるのですが、このときポイントなのは、異なる値のキーに対しては、異なるアドレス(それもなるべく離れた)を割り振れるかどうかです。これができるほど、ハッシュ関数として優れているということになります(図6⁠)⁠。 図6 ハッシュのイメージ図(ハッシュパーティションの場合) なおハッシュは、Postgre SQLやMy SQLのようにインデックスとして実装しているDBのほか、

    第7回 性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (2)ハッシュ | gihyo.jp
    Wacky
    Wacky 2009/12/17
  • 第2回 検索エンジンを形作るもの | gihyo.jp

    はじめに 前回は、検索エンジンとはどういうもなのか?について簡単に触れました。今回は、システムとしての検索エンジンの概要を見ていきます。 検索エンジンの構成 検索エンジンは他のシステムと同様に、複数のコンポーネントから構成されています。ざっくり分けると以下のようなコンポーネントから構成されています(図1⁠)⁠。 索引構築部(Indexer, インデクサー) 検索部(Searcher, サーチャー) 索引(Index, インデックス) 図1 検索エンジンの構成 たった3つ?と思うかもしれませんが、これは大きな枠組みで分けているからです。もちろん、各コンポーネントは複数のサブコンポーネントから構成されていますので、実際はもう少し複雑になりますが、基はこの構成となります。 次は、それぞれのコンポーネントで具体的に何を行っているかを見てみましょう。 各コンポーネントの概要 ●索引構築部(Inde

    第2回 検索エンジンを形作るもの | gihyo.jp
  • 第23回 Rackとは何か(1)Rackの生まれた背景 | gihyo.jp

    はじめに SinatraやRamazeといったRubyのWebアプケーションフレームワークに興味をお持ちの方であれば、Rackという名前をしばしば目にしているかもしれません。どうやら様々なフレームワークに使われているらしいのだけど、そいつが一体なんなのかよくわからない、そんなあなたのために今日はそのRackをご紹介したいと思います。 様々なフレームワーク、様々なアプリケーションサーバ しばらく前なら、Ruby on Railsブームの真っ只中、Rubyと言えばRails、Webアプリケーションを作るならRails、といったイメージを持たれていた方も多かったと思います。実際にWebアプリケーションを作ったり、Rubyに触れたりしたきっかけがRailsだったという方も多いでしょう。 しかし最近は、RubyのWebアプケーションフレームワークと一口に言っても、非常に簡単にアプリケーションが書けて

    第23回 Rackとは何か(1)Rackの生まれた背景 | gihyo.jp
    Wacky
    Wacky 2009/10/26
    RackはこのWSGIに影響されて開発された,Rubyにおけるサーバとアプリケーション/フレームワーク間のインターフェースの役割を果たすライブラリです
  • [完全版]究極のC#プログラミング ――新スタイルによる実践的コーディング

    2009年5月22日紙版発売 川俣晶 著 B5変形判/408ページ 定価3,278円(体2,980円+税10%) ISBN 978-4-7741-3862-6 ただいま弊社在庫はございません。 Gihyo Direct Amazon 楽天ブックス ヨドバシ.com 書のサポートページサンプルファイルのダウンロードや正誤表など このの概要 C#は現在ではよく使われている言語であり処理系ですが,Cなどに比べると,まだ書籍の種類は多くありません。案外,言語としてのポイントを絞った,効率的な学習を意図したというものがないように思われます。そこで,書の登場です。書は,とにかく実際にC#を使い倒した著者が当に必要なことを重点的に解説していますので,いまC#でプログラムを作成している人にも,これから学習したいという人にも有益なものとなっています。C# 3.0により,新しいスタイルで具体的な

    [完全版]究極のC#プログラミング ――新スタイルによる実践的コーディング
  • 第11回 標準になったjsonモジュール | gihyo.jp

    jsonモジュール WebアプリケーションなどではJavaScriptと連携させることが珍しくないと思います。Python3.0および、Python2.6ではJSON(JavaScript Object Notation)をサポートするためのjsonモジュールが標準として追加されました。これにより、手軽にPythonJavaScript間でデータのやりとりを行うことができるようになりました。 基的な使い方 jsonモジュールの基的な使い方はPickleと同じです。文字列にして返すにはdumps、ファイルオブジェクトの場合はdumpを使用します。同様に、文字列からPythonのオブジェクトにするためにはloadsを使用し、ファイルオブジェクトから読み込む場合にはloadを使います。 リスト1 dumpsを使った例 import json s = json.dumps( list(ran

    第11回 標準になったjsonモジュール | gihyo.jp
  • ソフトウェアテスト基本テクニック 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    ソフトウェアテスト基本テクニック 記事一覧 | gihyo.jp
  • 第9回 Python3にもC拡張モジュールを─Python3.0でも使える拡張モジュール開発手法の確立 | gihyo.jp

    Python 3.0 Hacks 第9回Python3にもC拡張モジュールを─Python3.0でも使える拡張モジュール開発手法の確立 目的 Python3.0に限らず、新しいバージョンのPythonがリリースされるたびに悩ましい問題があります。バイナリ製の拡張モジュールが豊富である所がPythonのひとつのウリなんですが、Pythonのメジャーバージョンをまたいでは動作しないのがツライところ。特にWindowsではコンパイラが標準でインストールされていないこともあり、他のOSほどソースからのビルドが容易ではありません。バイナリがリリースするまで待つことになると、拡張モジュールの新しいバージョンが出揃うのにどうしても時間がかかってしまうのです。これが、Pythonのニューバージョンの普及が出遅れる要因のひとつになっています。 この問題の主な要因に、ライブラリとPythonの「橋渡し部分」を

    第9回 Python3にもC拡張モジュールを─Python3.0でも使える拡張モジュール開発手法の確立 | gihyo.jp
    Wacky
    Wacky 2009/05/08
    C言語で作られたダイナミックリンクライブラリとヘッダから橋渡し部分のPythonモジュールを自動生成し,そのモジュールがPython3.0で動作することを示します。
  • 第1回 ネギ振りはネット工作のHello Worldだ | gihyo.jp

    マイクロはちゅねって何? 連載で取り上げるマイクロはちゅねは、初音ミクのデフォルメ・キャラクターとして広く知られている「はちゅねミク」を、模倣して実体にしたものです(図1⁠)⁠。初音ミクやはちゅねミクの特徴的な行動として右手に持ったネギを振るというものがありますが、もちろんマイクロはちゅねもこの動きができるようになっています。というよりも、ネギ振り以外の動きは一切できませんし、人もする気がないそうです(笑⁠)⁠。 図1 マイクロはちゅね。標準サイズで約3cmの大きさ。シンプルな原理ながら、小さくしたり増やしたりマイコンをつけたりロケットに乗せたりと、多彩な発展と遊びが可能。広いネット工作の世界へ入っていくための格好の素材 マイクロはちゅねの特徴として、実用性の縛りがない純粋な遊びであることと、それがゆえに多彩な発展が可能だ、ということが挙げられます。後述するとおり、マイクロはちゅねの動

    第1回 ネギ振りはネット工作のHello Worldだ | gihyo.jp
    Wacky
    Wacky 2009/05/06
  • 第8回 リスト処理と内包表記 | gihyo.jp

    リスト処理関数の仕様変更 Python3.0では、リスト処理に関わる多くの関数/メソッドに変更が加えられました。また、リスト処理を行う際に非常に便利なリスト内包表記にも追加・変更が加えられています。今回は、それらの関数/メソッド/構文について書きたいと思います。 iteratorへの変更 まずは、リスト1のソースをPython2とPython3で実行してみてください。 リスト1 リスト処理関数 print(range(10)) # range print(map((2).__mul__, range(10))) # map print(filter(lambda x: x % 2, range(10))) # filter print(zip(range(5), range(5, 10))) # zip d = dict(aa=100, bb=300) print(d.keys()) #

    第8回 リスト処理と内包表記 | gihyo.jp
    Wacky
    Wacky 2009/04/27
  • 第7回 関数アノテーションでスマートにプラスアルファの実現 | gihyo.jp

    関数アノテーションとは 関数アノテーションとは関数の引数と戻り値に付加情報をつける機能です。PEP 3107 -- Function Annotationsで定義されていて、Python 2.6へbackportされていないので、利用するにはPython 3.0以降が必要になります。 まずは、インタラクティブシェルで関数アノテーションの例を見てみましょう。 >>> def foo(a: "a argument", b: int) -> ["return", "value"]: ... return a+b ... >>> help(foo) Help on function foo in module __main__: foo(a: 'a argument', b: int) -> ['return', 'value'] >>> foo.__annotations__ {'a': 'a

    第7回 関数アノテーションでスマートにプラスアルファの実現 | gihyo.jp
    Wacky
    Wacky 2009/04/26
  • 第6回 Pythonicな文字列フォーマットforamat()メソッド | gihyo.jp

    文字列操作は、Pythonのようなスクリプト言語の「主戦場」と言えます。Web開発に限らず、バイオインフォマティクスなど幅広い分野で盛んに活用される機能です。中でも文字列のフォーマッティングは、よく使われる機能のひとつです。 Python 3.0では、従来からあった%演算子や、Templateクラスを使った文字列フォーマットに加えて、Pythonic(Python的)でより迷いの少ない文字列フォーマットの仕組みが追加されました。文字列型にformat()というメソッドが追加されたのです。この記事では、format()メソッドの活用方法や利点について解説します。 format()メソッド Python 3.0では、文字列オブジェクトにformat()というメソッドが追加されました。このメソッドを使うと、テンプレート文字列を元にした文字列のフォーマッティングが可能です。なお、このメソッドは2.

    第6回 Pythonicな文字列フォーマットforamat()メソッド | gihyo.jp
    Wacky
    Wacky 2009/03/27
  • 第4回 .NET Kit(1) | gihyo.jp

    .NET Kit 今回からは実際にコードを書いてLive Frameworkの世界に入っていきます。Live Frameworkは特定のプログラミング言語やOSに依存してせんが、今回から数回に渡っては、.NET Framework用のライブラリを使用して開発を行います。ライブラリを使用すると、Liveサービスへのアクセスが抽象化され、HTTPとXML(またはJSON)を使用するよりも、簡単にLiveサービスを利用することができます。 開発ではLive Framework SDK内の.NET Kitを使用します。ダウンロードして使用してください。Live Framework CTPの利用についての各種登録作業は前回紹介していますので、併せて参照してください。ただし前回の記事からSDK等のアップデートがありました。SDKは新しくDownload Centerからダウンロードおよびインストールし

    第4回 .NET Kit(1) | gihyo.jp
    Wacky
    Wacky 2009/03/25
    ライブラリを使用すると,Liveサービスへのアクセスが抽象化され,HTTPとXML(またはJSON)を使用するよりも,簡単にLiveサービスを利用することができます。
  • Python 3.0 Hacks | gihyo.jp

    第9回Python3にもC拡張モジュールを─Python3.0でも使える拡張モジュール開発手法の確立 入江田昇 2009-05-07

    Python 3.0 Hacks | gihyo.jp
    Wacky
    Wacky 2009/03/24
    日本を代表するPythonistaの皆さんが,リレー形式でPython最新バージョン3.0をHackしていく豪華連載。
  • 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは?:良いコ-ドへの道―普通のプログラマのためのステップアップガイド|gihyo.jp … 技術評論社

    良いコ-ドへの道―普通のプログラマのためのステップアップガイド 第5回メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは? おっす、おらメタプログラマ! 前回まで「良いコードとは?」という観点から、「⁠名前付け」「⁠スコープ」「⁠処理の分割」といったプログラミングで必須の基礎内容を解説してきました。今回は少し趣向を変えてメタプログラミングを取り上げます。メタプログラミングは「プログラミングをプログラムする」と言われますが、なんだかつかみどころがない概念に感じませんか? 実際、「⁠メタプログラミングとは何ですか?」と聞くと、人によって回答がまちまちです。そんなメタプログラミングですが、使いこなすとたいへん強力です。それでは、メタプログラミングについて考えを深めていきましょう。 メタプログラミングの悩み まずは毎回好例、各界の代表者にメタプログラミングについて

    第5回 メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは?:良いコ-ドへの道―普通のプログラマのためのステップアップガイド|gihyo.jp … 技術評論社
  • 第1回 「失敗学」とは? | gihyo.jp

    ここに挙げた各要因ごとに失敗経験を挙げだしたなら、誰もが枚挙に暇がないのではないでしょうか? 失敗学の提唱者である畑村洋太郎氏が「千三つ」(⁠成功するのは1,000回のうち3回)という言葉を度々使用しているように、失敗学では「失敗はありふれたもの」というのが大前提となっていますから、無闇に失敗を恥じることはありません。 とくに、新たな知見をもたらしてくれることから、「⁠未知」に起因する失敗は良い失敗とみなされています。 また、個人レベルで見れば「無知」も一種の「未知」ですから、「⁠よい失敗」にこそ分類されていませんが、「⁠無知」による失敗よりも、それを恐れて挑戦をしないことに対して注意を喚起しています。 つまり失敗学では、失敗は「忌避」するものではなく、その先の成功のために「利用」するものなのです。 ただし注意して欲しいのは、失敗学における「良い失敗」「⁠失敗はありふれている」という考え方

    第1回 「失敗学」とは? | gihyo.jp
    Wacky
    Wacky 2009/02/25
    未知 無知 不注意 不遵守 誤判断 調査・検討不足 制約条件の変化 企画不良 価値観不良 組織運営不良
  • 第2回 失敗の「心理」学 | gihyo.jp

    失敗学では、「⁠失敗」を無闇に恐れる必要の無いありふれたものとして扱います。 ただし、どんなに失敗学に関する知識を蓄えても、自分の失敗を自分で認めることができなければ、分析することも対策を講じることもできません。スタート地点で転んでしまい、起き上がれないようなものです。 実際に失敗に直面した場合、主に心理的な理由から、自分の失敗(ないしは「失敗してしまった自分⁠」⁠)を直視できないケースが多々見られます。 稿では、失敗に際しての心理について、筆者なりの分析・考察を述べたいと思います。 なお、「⁠心理学」という表題を掲げてはいるものの、筆者自身は、心理学を体系立てて学んだわけではありませんから、学術的に見て誤りを含む可能性は多分にありますが、失敗時の心理に関する一考察としてお読みいただければ幸いです。 「落胆」のメカニズム 前回も触れましたが、失敗学提唱者の畑村氏が「千三つ」(⁠成功するの

    第2回 失敗の「心理」学 | gihyo.jp
    Wacky
    Wacky 2009/02/25
    新しい事に挑戦するのであれば,成功よりもむしろ失敗することの方が多いはずですから,失敗しないのは,ずば抜けた才能に恵まれたか,あるいは新しい事に挑戦していないかのいずれかです。
  • 第3回 失敗の「病理」学 | gihyo.jp

    前回述べた心理的な問題を克服し、過度に落胆すること無く自分の失敗に向き合いさえすれば、すべてが解決するかと言うと、残念ながら必ずしもそうではありません。 最初のステップとして「失敗に向き合うこと」が重要であるのは確かですが、1つ1つの症状から医者が病気の原因を特定していくように、失敗に向き合った上で失敗の原因を徹底的に掘り下げることが必要です。 さて、失敗の原因を掘り下げるとは言いましたが、いざ「失敗の原因は何か?」と大上段に構えても、得てして何も考えつかないものです。 もしもズバズバと失敗の原因がわかるようであれば、それだけわかっていながら失敗を防がなかったということですから、むしろ道義的に如何なものかと思います。 しかし、考え付かないからといって何もしないのでは意味がありません。 そこで、まずは俎上に上がっている失敗に対して、防止策を考えることから始めてみましょう。 防止策を考えたなら

    第3回 失敗の「病理」学 | gihyo.jp
    Wacky
    Wacky 2009/02/25
    防止策が効果を発揮しないのは,「確認する」という方針ではなく,確認の方法に問題があることがほとんどです。
  • 第4回 失敗学の「フィールドワーク」 | gihyo.jp

    前回までで、失敗を防止するための対策を策定するところまで説明しました。PDCA(Plan-Do-Check-Act)サイクルで言うなら「Plan」が完了したところですので、次は防止策を実施する「Do」以降に進みます。 防止策を策定(Plan)したところで満足してしまうのはもちろん、策定した防止策を実施(Do)しただけでは意味がありません。 取り組む対象の成功率が「千三つ」であるなら、失敗防止策の成功率も「千三つ」である可能性を疑うのが失敗学的姿勢ですから、「⁠Check-Act」も欠かせません。 実施の徹底 まずは防止策の実施を徹底することから始めましょう。 ひょっとしたら、以下のような理由から実施の徹底が難しいかもしれません。 確認項目が多過ぎる 確認に時間が掛かる 確認が面倒 確認内容が曖昧 ですが、そのような防止策を策定したのは他ならぬ自分自身です。 あまりにも実施が困難ならともかく

    第4回 失敗学の「フィールドワーク」 | gihyo.jp
    Wacky
    Wacky 2009/02/25
    高度な技能を身に着けようと思うなら,重要なのは地味な繰り返しです。
  • Google、C/C++コードをブラウザ上で動作させる「Native Client」プロジェクトを公開 | gihyo.jp

    濃縮還元オレンジニュース Google、C/C++コードをブラウザ上で動作させる「Native Client」プロジェクトを公開 Googleは2008年12月8日に、Webブラウザ上でx86 CPUのネイティブコード実行を可能にする「Native Client」をリリースしました。Google Codeにて、ランタイムやブラウザプラグイン、サンプルアプリケーションなどを含んだアーカイブを提供しており、現在は一般のPCで使われているx86のCPUを持つマシン上でのみ動作します。 ブラウザ上でリッチコンテンツを実現する技術にはJavaアプレットやFlash、Silverlightなどがありますが、Native Clientもその1つです。 Native Clientのサンプルアプリケーションにはグラフィックを多用したものが多くあります(図1⁠)⁠。ネイティブコードを実行しているため、他に比べ

    Google、C/C++コードをブラウザ上で動作させる「Native Client」プロジェクトを公開 | gihyo.jp