タグ

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

  • 第7回 GridFS─大容量のファイルをMongoDBに保存する仕組み | gihyo.jp

    GridFSの概要 MongoDBに保存できるドキュメントのサイズは、16Mバイトまでという制限があります。一般的なテキストデータを保存するには十分なサイズですが、巨大なテキストデータや動画などのバイナリデータを保存する用途では、16Mバイトを超える場合が出てきます。MongoDBに16Mバイト以上のファイルを保存したい場合、GridFSというインターフェースを使用します。GridFSを使用することにより、データを複数に分割[1]して保存することが可能となります。 今回はMongoDBでサイズの大きなファイルを扱う仕組みである、GridFSについて説明します。 図1 GridFSの概要図 ファイルをデータベースで管理するメリット ところで、ファイルをデータベースで管理することでどのようなメリットがあるのでしょうか。 多くのシステムでは、画像/音声/動画などサイズの大きなバイナリファイルは、

    第7回 GridFS─大容量のファイルをMongoDBに保存する仕組み | gihyo.jp
  • 第10回 リアクティブ・プログラミング | gihyo.jp

    リアクティブ・プログラミング 今回お伝えするのは、Meteorが一般的なWebフレームワークとは一線を画しているコンセプト、「⁠リアクティブ・プログラミング」についてです。 リアクティブ・プログラミングとは、端的に言うと、あるデータに対して行った変更が自動的に伝播し、その他の部分に影響をおよぼすようなプログラミング・パラダイムのことです。 たとえば表計算ソフトの一般的な機能として、セルの値に応じて、そのセルを参照している部分の値も自動的に変更されるというものがありますが、これはリアクティブ・プログラミングの典型的な例です。 また、MVCフレームワークの中には、モデルの値を変更すると自動的にビューが更新されるという機能を持つ(バインディングと呼ばれます)ものもありますが、これもリアクティブ・プログラミングの例と言って良いでしょう。 Meteorの素晴らしい点は、リアクティブ・プログラミングを

    第10回 リアクティブ・プログラミング | gihyo.jp
  • 第3回 node.jsを利用した開発とWebサイトへのデプロイ | gihyo.jp

    前回でnode.jsの概要とWebMatrixを利用した開発の準備が完了したので、実際にnode.jsとsocket.ioを使った簡単なアプリケーションを開発してみましょう。 今回はサンプルとしてわかりやすさを重視して、1行チャットアプリケーションを開発してみたいと思います。 図1 1行チャットの完成予想図 プロジェクトを作成 まずはWebMatrixを利用して、node.jsのプロジェクトを作成していきます。それではWebMatrixを起動して、node.jsの「Expressサイト」テンプレートを選択してチャットアプリケーション用のWebサイトを作成します。 図2 WebMatrixで「Expressサイト」テンプレートを選択 残念ながら「Expressサイト」テンプレートではsocket.ioがインストールされないため、まずはNPM Galleryを拡張機能ギャラリーからインストール

    第3回 node.jsを利用した開発とWebサイトへのデプロイ | gihyo.jp
  • 第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp

    あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー

    第1回 JVMはどのようにメモリ空間を利用するのか | gihyo.jp
  • 第20回 Email::Sender:メールを送信する | gihyo.jp

    メール送信のあれこれ たとえばウェブアプリケーションでなにかの注文を受け取ったとき、あるいはシステム管理ツールでなにか異常を発見したとき、ユーザや管理者にメールを送れるようにしたい、というのはよくある要件です。昔はヒアドキュメントやテンプレートエンジンなどを使って送信したいメールを用意したあと、sendmailへのパイプを開いてメールを流し込んでいたものですが、いまはメールの作成から送信まで、すべてモジュールを使って実現できるようになっています。 とはいえ、需要が大きいだけにメール関係のモジュールは山のようにあります。ディストリビューション(パッケージ)の数だけで500を数えますし、メール関係の名前がついたモジュールは現在CPANにアップロードされている7万以上ものモジュールのほぼ1割を占めるほどです。これではどれを使えばよいのかわからないという声があがるのも当然でしょう。 そこで今回はP

    第20回 Email::Sender:メールを送信する | gihyo.jp
  • C言語より高速なJavaScriptによるバイナリ操作が話題 | gihyo.jp

    JavaScriptなどのスクリプト言語は動作が遅く、最適なパフォーマンスを得るにはC/C++で実装しなければならないという常識に挑んだ講演が国内外で大きな話題になっています。 題材になったのはベルリンの開発者、Felix Geisendorfer氏によるNode.jsからMySQLに接続するためのバインディングの実装です。Node.jsからMySQLへ接続するためのバインディングはJavaScriptだけで実装されているもの、Cで実装されたライブラリ(libmysql)を使ったもの、MySQLからフォークしたデータベース、MariaDBのライブラリを使ったものなど複数が存在しています。 Felix氏はあくまでJavaScriptのみによる実装で、C言語で実装されたライブラリを使ったバインディングを越えるパフォーマンスの実現に挑戦しました。次々に登場するライブラリの高いパフォーマンスを見る

    C言語より高速なJavaScriptによるバイナリ操作が話題 | gihyo.jp
  • 第3回 MongoDBのクエリを使いこなそう | gihyo.jp

    はじめに 記事では、MongoDBのクエリを解説します。MongoDBはリレーショナルデータベース(以下"RDB"と略記)ではないため、SQLは使用できません。その代わり、MongoDB特有の「Mongoクエリ言語」を用います。Mongoクエリ言語のCRUD操作については公式ドキュメントに詳しい解説があります。 記事の構成は、最初にMongoクエリ言語の特徴について解説し、2ページ目ではSQLとMongoクエリ言語の比較を行います。3ページ目では、MongoDBクエリ言語の使い方を説明し、最後に、プログラミング言語からの利用の仕方の説明として、Rubyからの利用を説明します。 Mongoクエリ言語の特徴 Mongoクエリ言語には以下の特徴があります。 コレクションの各メソッドを用いてCRUD操作をします メソッドの引数にはJSON形式のデータを渡します 変数が使えます 制御構造が使えま

    第3回 MongoDBのクエリを使いこなそう | gihyo.jp
  • 第3回 ブランチvs.フラグ | gihyo.jp

    とっておきの変更 ソフトウェアをいつでもリリースできるようにしろと求める継続的デリバリの広まりにより、毎日のようにソフトウェアがリリースされるようになりました。早いうちからコードを野にさらせば、隠れた問題を前もって見つけることができるからです。 短いリリース間隔に身を置くと気づくことがあります。「⁠リリースできること」と「リリースしたいこと」は、必ずしも一致しないのです。たとえば大規模なビジュアルデザインの変更やとっておきの新機能を想像してみましょう。こうした粒度の大きい変更は、たとえ動作する、つまりリリース可能な状態でも、そのまま衆目にさらしたいとは限りません。期待を裏切らない形でお披露目したい、とっておきの変更があります。息を飲む新しい体験がもたらすユーザの驚きや喜びも、ソフトウェアにとっては大切な財産だからです。 とっておきの変更を仕上げるには時間がかかります。一方で、その仕上げが終

    第3回 ブランチvs.フラグ | gihyo.jp
  • 第3回 localStorageとpostMessageの使いどころ(2) | gihyo.jp

    postMessage 一般的に広く使われている、URLの?以降の文字列(query string)を使いサーバに対してデータを受け渡す方式は、異なるドメインのJavaScript同士で通信する際にはいくつかのデメリットがあります。http://example.com/?query_stringというURLにアクセスするとquery_stringの部分がサーバに送信されます。当然新規の通信が発生しますし、どのようなメッセージが送信されたのかをJavaScriptから受け取るには、サーバがブラウザに対して応答を返すまで待たなければなりません[3]⁠。postMessageの登場以前も、サーバサイドを経由しない、JavaScriptだけで完結するクロスドメインでのメッセージ送信手法が考えられてきました。代表的なものは、window.name[4]を使った方法(リスト1)とlocation.ha

    第3回 localStorageとpostMessageの使いどころ(2) | gihyo.jp
  • 第3回 localStorageとpostMessageの使いどころ(1) | gihyo.jp

    3回目となる今回は、サービス間の連携におけるlocalStorageとpostMessageの使いどころについて解説します。localStorageはWeb Storage、postMessageはCross-document messagingまたはWeb MessagingとしてHTML5の仕様に含まれているAPIです。どちらもIE(Internet Explorer)8以降、Firefox 3以降、Safari 4以降と、近年のモダンなブラウザで幅広くサポートされており、iPhone用のSafariやAndroidの標準ブラウザでも使うことができます。 localStorageとCookieの違い Cookieは一時的にデータを書き込んで保存させるしくみとして長い歴史を持っていますがさまざまな問題を抱えており、使い方には注意する必要があります。ここで取り上げるlocalStorage

    第3回 localStorageとpostMessageの使いどころ(1) | gihyo.jp
  • 第14回 最新Perl使いこなし術―リファレンスの引き方、5.10以降の新機能(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はWEB+DB PRESS Vol.62の特集1「HTML5/CSS3/JavaScript実践入門」などの記事でおなじみのcho45さんが、「⁠最新Perl使いこなし術」を解説します。 はじめに こんにちは。cho45です。今回は最新Perl使いこなし術ということで、ゆるふわに最近のPerl(バージョン5.10以降)の新機能を紹介します。 しかし、機能の詳細に困ったときはリファレンスを頼るのが一番ですし、ここでは紹介しきれない機能もありますので、自分で調べられるように、先にリファレンスの引き方をおさらいしておきます。 なお稿では、言語としてのPerl(先頭大文字)に対し、それを実行する処理系としてはperl(全部小文字)という表記で使い分けます。 リファレンスを引く 何を今さら……とお思いになる人もたくさんいるとは思い

    第14回 最新Perl使いこなし術―リファレンスの引き方、5.10以降の新機能(1) | gihyo.jp
  • Perl Hackers Hub:第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(2)|gihyo.jp … 技術評論社

    大量にあるサーバへのアクセスを効率的に扱う Mobage APIでは、接続するDBサーバやmemcachedサーバなどが大量にあります。サーバが増えても、アプリケーションの変更は最低限にしたいものです。ここでは、複数のサーバへのアクセスを簡単に記述する方法を紹介します。 DBへのアクセスを隠蔽する DBは一般的な、マスタ/スレーブ構成を採用しています。INSERT/UPDATE/DELETEのような更新系のクエリはマスタへ、SELECTなどの参照系のクエリはスレーブへいくようにしています。また、Sharding[11]をしているDBの系統もあります。 このように大量にあるDBへのアクセスを簡単に行うために、Mobage APIではDeNAの有澤高介さんが開発したDBIx::DBHResolver(現在のメンテナは同じくDeNAの山口徹さん)を利用してDBへのアクセス情報を隠蔽(いんぺい)し

    Perl Hackers Hub:第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(2)|gihyo.jp … 技術評論社
  • ミーティングの五原則 | gihyo.jp

    プログラミング全般に関する話題についてJeff Atwood氏が書いているCoding Horrorでは、ミーティングに関する話題が投稿され話題になっていました。記事によるとミーティングについて彼が訴える五原則は次のとおりです。 ① 1時間以上のミーティングをしたものは「死刑」……ミーティングが1時間以内に収まらない場合は根的な過ちがある。まずはそれを正すべき ② すべてのミーティングは明確な目的があるべき……ミーティングの目的を簡潔な短文で定義できますか?ミーティングの目的が参加者全員に明確であることを確認しましょう ③ ミーティング前に宿題を済ませる……ミーティングのアジェンダを明確にしたら参加者には事前に何を話すべきかを伝える。ミーティングルームに入る前に宿題を済ませて準備ができていることが1時間以内にミーティングを終わらせる秘訣である ④ 任意参加にせよ……必須参加は甘え。参加者

    ミーティングの五原則 | gihyo.jp
  • 第9回 【Trema編】テストファーストでアジャイルに | gihyo.jp

    はじめに 初期ファイナル・ファンタジーの伝説的プログラマ、ナーシャ・ジベリの「早撃ち」エピソードを知っていますか? 彼はヒーローのようにさっそうと現れ、どんなプログラムでも電光石火で書いてしまいます。「⁠見てくれの悪さは気にしねえ。誰よりも早くやってやるぜ⁠」⁠。やがていくつかの伝説を残し、彼もプロジェクトを去るときがやってきました。残った同僚たちは困りました。彼の超絶プログラムは彼にしか理解できず、バグがあっても修正できないのです。それに、変更しようとすると動かなくなってしまいます。「⁠ナーシャ、カムバック!」でも彼はもう戻ってきません……。 こうした悲劇を防ぐ方法の1つがソフトウェアテストです。OpenFlowコントローラのように動作シーケンスが複雑なソフトウェアが壊れていないことを確認するためには、ソフトウェアにより自動化されたテストが有効です。それに、きちんとしたテスト一式があれば

    第9回 【Trema編】テストファーストでアジャイルに | gihyo.jp
  • 第11回 ログでアプリケーションの改善プロセスを回す(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはkazeburoさんこと長野雅広さんで、テーマは「ログでアプリケーションの改善プロセスを回す」です。 オペレーションエンジニア仕事 小林篤さんから連載のバトンを受け取りました、長野雅広です。普段はNHN Japan(⁠株⁠)にてオペレーションエンジニアとして働いています。livedoor blogやポータルサービスなど自社Webサービスの運用に携わっており、cloudforecast(Perlで作られたリソース監視ツール)を使ったメトリクス収集をはじめ、アプリケーション設計のアドバイス、ミドルウェアの設定、障害対応のフォローなど、Webアプリケーションエンジニアにかかる運用の負担を減らすことが主な業務です。 ログはDevとOpsのコミュニケーション手段 監視サーバからのアラートメールが届いたり、リソース監視ツ

    第11回 ログでアプリケーションの改善プロセスを回す(1) | gihyo.jp
  • mixiエンジニアがおくるソーシャルアプリ開発実践講座:第3回 自動テストと継続的インテグレーションを既存プロジェクトへ導入しよう|gihyo.jp … 技術評論社

    はじめに はじめまして。(⁠株)ミクシィの加藤和良です。2008年度に入社し、2011年1月からはシステム技術部に所属しています。技術部は、日記やコミュニティといった特定のサービスに紐づかない、mixi全体を裏から支える部署です。「⁠支える」ための方法は、実際のサービスの一部として動作する共通基盤から、開発効率を上げるために社内で動作しているものまで、多岐にわたります。 mixiでは、ここ数年で自動テストの導入が急速に進みました。図1は、mixiのソースツリーにおけるコードと、そのテストコードの毎月1日のバイト数をグラフにしたものです。2008年の頭には少なかったテストが急速に増え、今年の5月にはコード量をも追い越しているのがわかります。 携帯電話向けmixiである「mixiモバイル」の開始が2004年、mixiニュースが2006年ですから、2008年当時のmixiも、それなりに大き

    mixiエンジニアがおくるソーシャルアプリ開発実践講座:第3回 自動テストと継続的インテグレーションを既存プロジェクトへ導入しよう|gihyo.jp … 技術評論社
  • アセンブラで読み解くプログラムのしくみ | Gihyo Digital Publishing … 技術評論社の電子書籍

    アセンブラで読み解くプログラムのしくみ 著者 藤原克則 著 発売日 2011年11月14日 更新日 2011年12月13日

    アセンブラで読み解くプログラムのしくみ | Gihyo Digital Publishing … 技術評論社の電子書籍
  • 第19回 Javaプログラムから外部プロセスを起動するための「Apache Commons Exec」 | gihyo.jp

    Apache Commons Execとは Javaプログラムから外部プロセスを実行する一般的な方法としては、標準ライブラリに用意されているjava.lang.ProcessBuilderクラスや、java.lang.Runtime.exec()メソッドがあります。しかしこれらのクラス/メソッドによるサポートは限定的であり、あまり使い勝手が良くないことでも知られています。「⁠Apache Commons Exec」(⁠以下、Commons Exec)は、そのような標準的な方法に変わる外部プロセスの起動手段を提供してくれるオープンソースのライブラリです。特にプロセスに対する適切な入出力処理が、比較的簡単に記述できるようになっている点が大きなメリットです。 Commons Execはこのページよりダウンロードできます。稿執筆時点での最新版はバージョン1.1です。ダウンロードしたファイルを解凍

    第19回 Javaプログラムから外部プロセスを起動するための「Apache Commons Exec」 | gihyo.jp
  • 第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはDeNAの嶋田裕二さんで、テーマは「高速なWeb APIの実装とテスト」です。 Web APIの基礎知識 はじめまして、DeNAでMobageオープンプラットフォームのWeb API(以降Mobage API)を実装しているxaicronです。Mobageオープンプラットフォームは、Mobageの機能をWeb APIを通して外部の開発者に公開することにより、ソーシャルゲームをユーザに提供するサービスです。 簡単に説明するとWeb APIとは、HTTPを利用してネットワーク越しに処理を行い、結果を返すしくみです。最近ではJSON(JavaScript Object Notation)というフォーマットを利用してデータのやりとりをすることが多くなっており、Mobage APIも基的にはJSONを受け取って処理を行

    第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(1) | gihyo.jp
  • 連載:きちんと学びたいテストエンジニアのためのTestLink入門|gihyo.jp … 技術評論社

    第3回次期バージョン1.8に見るTestLinkの過去・現在・未来 TestLink日語化部会 2008-10-17

    連載:きちんと学びたいテストエンジニアのためのTestLink入門|gihyo.jp … 技術評論社