タグ

ブックマーク / thinkit.co.jp (36)

  • NOSQLの新顔、分散KVS「okuyama」の機能

    NOSQLについて解説した前回の記事は、いかがだったでしょうか。今後のアプリケーションでは、増え続けるデータを扱うことが非常に多くなると思います。前回の記事が、こうしたケースに適した新たなストレージの1つとして、NOSQLを理解するきっかけになっていたら幸いです。 連載2回目の今回は、NOSQLの1つである「okuyama」の全体概要と、機能的な特徴を紹介します。 1. 「okuyama」の概要 okuyamaは、まだ聞きなれない方も多いかと思いますが、筆者が開発している分散キー・バリュー・ストアです。2009年12月ごろから開発を始めました。現在はSourceforge.jpにて公開しています。もともとは学習を兼ねて作成したため、一部のログ・ライブラリなどを除き、すべて1から実装しました。2010年1月にファースト・リリースを行い、現在はバージョン0.8.6となっています。 以降は、ok

    InoHiro
    InoHiro 2011/07/29
  • ログ管理、これだけは!

    Copyright © 2004-2024 Impress Corporation. An Impress Group Company. All rights reserved.

  • 広域ファイルシステム、Gfarm

    Gfarm広域ファイルシステムの概要 Gfarm広域ファイルシステムは、オープンソースで研究開発が進められているファイルシステムです。どこからでも高速でアクセス可能な、広域の共有ファイルシステムの開発が目標です。 ファイルは実際にはさまざまな場所に格納されますが、利用者はその格納場所を意識することなく仮想的なディレクトリ階層によりアクセスすることができます。 複製管理をファイルシステムで行い、アクセスの局所性を利用するところに特徴があります。例えば、東京と大阪でファイル共有を行う場合、ファイル複製を東京と大阪に作成し、東京の利用者は東京のファイル複製、大阪の利用者は大阪のファイル複製にアクセスします。これにより、広域ネットワークの遅延やバンド幅に制限されることなく、効率的にアクセスすることができます。Gfarmファイルシステムのイメージを図1に示します。 Gfarm広域ファイルシステムでは

  • SQLインジェクションの対策

    なぜSQLインジェクションはなくならないのか SQLインジェクションの対策を紹介する前に、SQLインジェクションがなくならない訳について考えてみよう。そのほかの脆弱(ぜいじゃく)性とも共通するが、図1-1の理由が考えられる。 つまり「セキュリティーに対する認識の低さ」「セキュリティーに対する技術・知識の低さ」「経済的理由」が大きな理由のようだ。このような現状を踏まえ、どのような対策が可能かを紹介する。 SQLインジェクションの技術的対策は難しくない! SQLインジェクションの脆弱性をなくすには、「バインド機構(バインドメカニズム)」や「エスケープ処理」を適切に使用し、正しく実装すればよい。 しかし、バインド機構は一部のデータベースサーバーでは利用できない。その場合は、エスケープ処理を利用して対策することが有効だ。それぞれを利用した実装方法を説明しよう。 バインド機構とは、あらかじめSQL

    InoHiro
    InoHiro 2011/05/02
  • 第2回 ASP.NET Web開発のトレンド | Think IT

    はじめに 連載の第1回では、Web開発技術の中でも、HTML5やSilverlightといったクライアント側のテクノロジーをRIA (Rich Internet Application) という観点で解説しました。 そこで今回は、Webアプリケーション開発には欠かせないサーバー側のスクリプティング・テクノロジーであるASP.NETや、それを取り巻く開発環境について解説します。 Web技術のトレンド HTML5やCSS3を始めとして、昨今のWebアプリケーションは多くの標準技術によって支えられています。特にインターネット・スペースにおけるWeb開発の技術トレンドは、図1に示すように、そのほとんどがひとつの企業に依存しないオープンな技術のもとで成り立っており、この流れは一段と加速しています。 さらに、アプリケーション構成そのものも、クラウドといった大きな技術トレンドの中で大きく変わり始めて

    InoHiro
    InoHiro 2011/03/15
  • [ThinkIT] 第6回:データベースの負荷分散とまとめ (1/3)

    Webサーバーも順調に増えた、となると次はデータベースが悲鳴を上げる頃です。データベースの増設と行きましょう。 はてなではデータベースにはMySQLを利用しています。MySQLは組み込みでレプリケーションをサポートしているので、これを使わない手はありません。レプリケーションを行い、マスターDBのコピーであるスレーブDBサーバーを作り2台構成にします。 レプリケーションは、データベースを複数台に増やし、且つその複数のデータベースが保持するデータを同期させるための仕組みです。レプリケーションされたデータベースのうち、元々あったデータベースが親、それ以外が子という親子関係になります。 親はマスター、子はスレーブと呼ばれ、マスターへの更新処理と同じ処理をスレーブに伝播させることでデータの同期が行われます。実際にはマスターからスレーブへ処理が伝播するのではなく、スレーブがポーリングを行ってマスターと

  • ドキュメント指向データベースと列指向データベース

    ドキュメント指向データベースの概要 リレーショナルデータベースでは、データを表形式で保存します。そのため、表にしやすいデータであれば、効率よく管理することができます。 しかし、世の中全てのデータを表にできるかと言えば、そうではありません。そのようなデータをリレーショナルデータベースで管理しようとすると、どうしても無理が生じてしまいます。その結果、プログラムを組むのが難しくなったり、処理に時間がかかるようになったりしてしまいます。 このような中で、柔軟な構造でデータを扱えるようなデータベースとして、「ドキュメント指向データベース」と呼ばれるデータベースが出てきました。 ドキュメント指向データベースでは、1件分のデータを「ドキュメント」と呼びます。また、個々のドキュメントのデータ構造は自由で、データを追加する都度変えることができます(図1)。リレーショナルデータベースとは違って、事前にテーブル

    InoHiro
    InoHiro 2011/01/21
  • [ThinkIT] 第8回:Cookieとセッション情報 (1/3)

    サーバ/クライアント間の通信を担当するHTTPは、ステートレス(状態を管理しない)なプロトコルです。このように表現してしまうと難しく聞こえるかもしれませんが、要するに「複数のページ間で情報を保持することができない」ということです。 例えば、ページXとページZという2つのページがあったとします。ページXを処理したあとにページZを呼び出したとしても、ページZはページXで入力された内容や処理結果、さらにページXのあとに呼び出されたということも知ることはできません。 HTTPにおいては、リクエスト/レスポンスの一往復が完結された処理と見なされるので、次に発生したリクエストはまったく別物と認識されるからです。 しかし、JSP&サーブレットアプリケーションを構築する場合、複数のページ間で情報の保持が必要になるケースは少なくありません。例えば、認証を必要とするアプリケーションを想定してみてください。トッ

    InoHiro
    InoHiro 2010/12/21
  • 何を用意すればいいですか?

    はじめに はじめまして、タクシーサイトの田口と申します。インストールマニアックス3の決勝進出をきっかけに、編集部から声を掛けられ、稿を執筆する機会を頂きました。 この連載では、「ゼロからはじめるWindows Azure」と題して、環境の準備から、Azureを利用するための申込み、アプリケーション(WordPress)のインストールまでを7回にわたって解説する予定です。同僚でWindows Azureほぼ未経験の小木ナツキと一緒に触れながら、その使い勝手や操作方法をレポートしていきます。 小木ナツキと申します。まだまだAzureのことはあまり経験ないですが、田口と一緒に(教わりながら)解説していきますので、よろしくお願いします。 もうすぐ始まる「インストールマニアックス4(仮題)」のヒントもここから得られるかもしれません。ぜひ最後までお付き合いください。 マイクロソフトのクラウドサービス

  • 「データのライフ・サイクル」で考えるHadoopの使いどころ

    前回は、Hadoopがどのような仕組みでスケール・アウト性を実現しているのかを述べました。また、Hadoopが基的に、バッチ処理のスループットの向上を目的にしていることを指摘しました。 Hadoopには、「できること」と「できないこと」があります。処理の性質によっては、既存のリレーショナル・データベース管理システム(RDBMS)や、最近注目されているKey-Value Store(KVS)型データベースなどが適していることもあります。 今回は、RDBMSが果たしている役割とニーズの変化を踏まえながら、「データのライフ・サイクル」に着目して、RDBMS、Hadoop、KVSの3者をどのように使い分けていくべきかを解説します。 RDBMSが果たしている役割 RDBMSは、米IBMの研究所に勤務していたエドガー・F・コッドが1970年に発表した、「関係モデル」というデータ・モデルを採用したデー

  • [ThinkIT] 第1回:Webブラウザを使ったテストツールSeleniumとは (1/3)

    この連載は、WebアプリケーションのテストツールであるSelenium(セレニウム)についてサンプルを用いながら概要と基的な使い方を解説していきます。連載第1回の今回は、Seleniumの概要について紹介します。 Seleniumとは、Webブラウザを使ってWebアプリケーションをテストするツールです。この「Webブラウザを使って」というのが非常に大きなポイントで、人が手でWebブラウザを操作する代わりにSeleniumがWebブラウザを操作してくれるのです。 そして単純に操作するだけでなく、例えばエラーメッセージが正しく表示されているかといった検証も行うことができます。つまり、今まで人手を必要としていたWebブラウザを使った試験が自動化できるものなのです。そのため数百項目もあるテストも、クリック1回で実施できます。 より重要なことは「自動化することによって試験を繰返し実施できる」こと

    InoHiro
    InoHiro 2010/11/15
  • 端末に依存しないAndroidアプリ開発

    Copyright © 2004-2024 Impress Corporation. An Impress Group Company. All rights reserved.

  • これからはじめるSilverlight 4

    Copyright © 2004-2024 Impress Corporation. An Impress Group Company. All rights reserved.

  • [ThinkIT] 第4回:Ludiaを体験 (1/4)

    第3回では、オープンソースの全文検索システム「Ludia」を導入するための準備をすすめてきました。今回は、Ludiaに必要なソフトウェアいれ、実際に全文検索を行ってみます。 さて、前回解説したようにLudiaのダウンロードが終わっていたら、それをFedora Core 6にインストールしていきます。現在、Ludiaはtarballでの提供のみですので、ソースからコンパイルしていきます。インストールは、MeCab、MeCab辞書、Senna、Ludiaの順序で行います。それでは、順に説明していきます。

  • TopHatenarとHatenarMapsのDB!

    TopHatenarとHatenarMapsとは 連載では、さまざまなサービスで利用されているデータベースやその仕組みについて紹介していきます。第1回は、Webアプリケーションである「TopHatenar(http://tophatenar.com/)」と「HatenarMaps(http://hatenarmaps.com/)」を取り上げ、そのデータベース構造とデータアクセス手法を中心に、アプリケーションの裏側について解説を行います。 まずTopHatenarとHatenarMapsとは何かを紹介します。この2つのWebアプリケーションは、ともに大手ブログサービス「はてなダイアリー」のユーザー動向を把握するツールとして、筆者が開発したものです。 TopHatenarは、はてなダイアリーの全ブロガーを、「RSSフィード購読者数」と「ソーシャルブックマーク獲得数」の2つの指標に基づいて順位

  • [Think IT] 【これならわかる!JavaScript/Ajax】やりなおしのJavaScript 第1回:そろそろ本気で学びませんか? (1/3)

    画面の一部を瞬時に切り替える方法 JavaScriptを勉強したいけど、プログラム構造がよく分からなくて、なんとなく使っている人は多いのではないかと思います。市販のやWebサイトにはJavaScriptのサンプルがたくさん載っているので、必要なところをコピー&ペーストしてしまうと、JavaScriptの文法が分からなくても動いてしまいます。 しかし、このような使い方をしていると、JavaScriptサンプルを少しだけ修正したいという時に対応できなくなります。これでは「JavaScriptを使える」とは言えませんよね。 そこで、連載では、JavaScriptをもう一度やり直したい方々のために、勉強の切り口を変えて紹介していきましょう。 最初のトピックでは、JavaScriptを使ってHTMLのコンテンツを入れ替える方法について紹介してます。この技術は、最近話題になっているAjaxのベース