タグ

ブックマーク / codezine.jp (47)

  • Google App Engineで開発するスケールするアプリケーション(中編)

    稿の前編では、Webシステムをスケールさせるための一般的な手法や考え方、そしてGoogle App Engineの概要と特徴について説明しました。中編となる稿ではミニブログサービスのTwitterGoogle App Engineを連携させるレコメンドアプリケーションの設計について説明し、後編では実装編として実際のソースコードに基づき説明します。 はじめに Google App EngineはGoogleのインフラを使用し、開発したアプリケーションをインターネットで公開できるサービスです。Google App Engineの特徴はアクセスや負荷に応じてシステムが自動にスケールする仕組みと、Google独自のスケーラブルなデータベースであるBigtableを使用できることです。BigtableはKey-Value方式のデータベースで、ペタバイト級のデータを扱うことができます。そのような

    Google App Engineで開発するスケールするアプリケーション(中編)
  • Jersey、AJAX、JSONを使ってRESTに挑戦しよう

    はじめに REST(Representational State Transfer)は、HTTPを介した包括的な方法でデータを扱うことを可能とする、強力で軽量なアーキテクチャです。しかし、強力であるとはいえ、独自のコードにRESTを取り入れるのは少々手間がかかるため、何らかの支援が必要になります。Javaでのコーディングの場合は、Jerseyが助けになります。Jerseyは、JavaコードをREST対応にするために必要な作業を簡素化するオープンソースプロジェクトです。 この記事では、RESTを簡単に紹介し、Jerseyの背景にある基的な動作概念を説明します。次に、Jerseyを使用して、実際のJavaコードをRESTfulにする方法を示します。最後に、ブラウザベースのJavaScript、AJAX、およびJSONを使用して、作成したRESTfulコードにアクセスする方法を示します。関連ト

    Jersey、AJAX、JSONを使ってRESTに挑戦しよう
  • JavaでCSVの読み書きを快適に! ~「OrangeSignal CSV」概要

    はじめに 皆さんは、JavaCSVを扱うときに苦労した経験はないでしょうか。 CSV(Comma-Separated Values/Character-Separated Values)はデータをカンマ(,)やタブなどで区切って並べたテキスト形式のデータで、表計算ソフトやデータベースなどとのデータ交換のしやすさや可読性のよさなどから、古くから広く使われているデータ形式です。 このCSVのデータ形式には、さまざまな「方言」があり、データの中にカンマ(,)が入っている場合や、データをダブルクォーテーション(")で囲む場合、データの中にダブルクォーテーションがありそれがエスケープされている場合、データの中に改行がある場合などが存在します。また、CSVのデータ構成にもさまざまな種類があり、データの先頭行をヘッダとする場合や、コメント行や集計行がある場合、日時データを日付と時刻それぞれ別々の列とす

    JavaでCSVの読み書きを快適に! ~「OrangeSignal CSV」概要
    yass
    yass 2009/12/08
  • Apache POI HSSFによるExcelファイルの作成

    Webはデータで満ちており、データを検索して表示するにはもってこいのメディアです。しかし多くの場合、ブラウザはデータ分析に適したツールとは言えません。以前の記事「Reading Excel Files with Apache POI HSSF」では、Excelブックを使ってJavaアプリケーションにデータを提供する方法を解説しました。今回は、同じ形式でユーザーにデータを提供する方法を見てみましょう。 はじめに Webはデータで満ちており、データを検索して表示するにはもってこいのメディアです。多くのユーザーは、データが見つかると、自分の思考プロセスに合った方法でデータを分析したいと考えます。一部のWebアプリケーションは、データ表示オプションをどんどん増やすことで、このニーズに応えようとしています。それが適切な場合もあります。例えば、価格と機能を比較できるEコマースサイトなどです。それ以外の

    Apache POI HSSFによるExcelファイルの作成
  • はじめて使うJazz ― チーム開発のためのオープンな統合プラットフォーム

    チーム開発のためのオープンな統合プラットフォーム「JazzJazzプロジェクトと言っても日ではご存じない方もいらっしゃるかもしれません。「Jazz」とは、ソフトウェア開発チームのコラボレーションを支援するための新しいテクノロジー・プラットフォームであり、それらを開発するプロジェクトの名称です。大きな成功を収めたEclipseプロジェクトの次のステージとしてIBMが進めているプロジェクトです。Jazzプロジェクトは、人々がソフトウェア開発においてどのように協調して働くべきか、すなわち、いかにコラボレーションし、生産性を向上させ、透明性を確保してソフトウェア開発を行うかという観点で開発されています。 Eclipseは、エディター、コンパイラー、デバッガーなど開発者がこれまで別々に利用していたツール群を1つの環境に統合したプラットフォームを提供することによって開発者個人の生産性を向上させて

    はじめて使うJazz ― チーム開発のためのオープンな統合プラットフォーム
  • NetKernelでJavaの並行性を越える

    Javaはマルチスレッドと並行性の構造をサポートしていますが、最新のマルチCPUハードウェアに適合するアプリケーションの開発はそう簡単にはいきません。そのような場合、NetKernelなどの代替環境を用いると、ハードウェアの処理能力を余すことなく利用する道が開けます。 Javaでの並行性プログラミング マルチコアおよびマルチCPUのシステムが普通に使われるようになった現在では、複数のタスクを同時に実行することが現実的な課題となっています。しかし、大抵のシステムでは、別のスレッドにタスクを実行させるというような簡単なやり方でこれに対応することはできません。使用するプログラミング言語から実行環境に問い合わせて、システムリソースの使用スケジュールを決定する必要があります。ハイレベルの並行性にかかわる関数を簡単に活用できるかどうかは、言語の構造に左右されます。 従来は、「ヘルパー」を利用して複数の

    NetKernelでJavaの並行性を越える
  • Hadoop、hBaseで構築する大規模分散データ処理システム

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Hadoop、hBaseで構築する大規模分散データ処理システム
  • マージ・ソート : 巨大データのソート法

    はじめに まずはともあれ腕試し、この問題を解いてみてくださいな: 【問1】 デタラメな順序で並んだ文字列の集合がテキストファイル「input.txt」に収められています。この文字列群を辞書順(昇順)に並び換えたテキストファイル「sorted.txt」を作りなさい。 ※各文字列は改行で区切られています。 プログラミング教の練習問題、あるいは学校の課題で出てきそうな“お馴染み”の問題です。ソート(整列)アルゴリズムの実装には配列/代入/条件分岐/ループなどなどプログラミングの基中の基となる構文を総動員するため、練習問題としてよく使われますね。 早速解いてみましょう、ソート・アルゴリズムにはこれまたお馴染みのバブル・ソートを使います。C#、VB.NETC++/CLIの3まとめて一気にいきますよ: using System; using System.IO; using System.C

    マージ・ソート : 巨大データのソート法
  • net-snmpについて(環境構築)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    net-snmpについて(環境構築)
    yass
    yass 2008/08/21
  • blogeyeの実装に学ぶ、Amazon EC2/S3でのHadoop活用術:CodeZine

    はじめに こんにちは。Hadoop連載 第4回は太田さんに代わって大倉が担当します。 これまでの連載で、Hadoopによるデータ処理の概略については理解されていると思います。今回はHadoopを利用したシステムの実例ということで、ブログ分析を行う「blogeye」システムの概略と、その中でのHadoop利用法を紹介します。 また、blogeyeAmazonが提供しているEC2(レンタルサーバ)、S3(ストレージ)をHadoopと組み合わせて利用しているので、その辺りの導入方法についても紹介します。これまでの連載Hadoop、hBaseで構築する大規模分散データ処理システムHadoopのインストールとサンプルプログラムの実行複数マシンへHadoopをインストールする blogeyeとは 「blogeye」(ブログアイ)は日語のブログをクロール、リアルタイムに分析して、流行語と思われるもの

  • 【YAPC::Asia 2008】セッション動画がニコニコ動画で公開中:CodeZine

    YAPC::Asia 2008のセッション動画が公開されはじめた。まずはニコニコ動画でアップされ、順次Google Videoなどにもアップされる予定。現時点でニコニコ動画上では、Larry Wallのキーノートと、DeNAルーム1日目、2日目のセッションが公開されている。A Standard That Is Meant To Be Broken, 当に! - Larry Wall ニコニコ動画上で動画を視聴するためにはアカウントが必要だが、YAPC::Asiaサイトのセッションスケジュールからは、アカウントがなくても視聴できるようになっている。関連リンクタグ検索 yapcasia2008‐ニコニコ動画(SP1)動画のアップロード作業中です: YAPC::Asia 2008 - May 15-16th in Tokyo, JAPANcoding my life : YAPC::Asia

  • Ruby on Rails用 統合開発環境(IDE) 比較レポート:CodeZine

    1. はじめに1.1. 背景 近年、スクリプト言語「Ruby」と、Rubyで書かれたWebアプリケーションフレームワーク「Ruby on Rails(以下、RoR)」が注目を集めています。 Ruby/RoRの開発はテキストエディタとコマンドラインツールがあればすぐに始めることができます。一方、Ruby/RoRの普及に合わせてテキストエディタとしての機能の他にデバッガ、WebサーバやDBサーバとの連携、バージョン管理などの機能を備えた統合開発環境(以下、IDE)が複数登場しています。 Ruby/RoR対応のIDEはJavaなど他言語のIDEと比較すると機能面や安定性にやや物足りなさがありますが、各IDEは活発に開発が行われており、実際の開発をサポートするレベルまで着実にバージョンアップを重ねています。1.2. 稿の目的 Ruby/RoR対応のIDEを使用する場合、NetBeans、Ecli

  • Eclipse Web Tools PlatformとMavenの統合:CodeZine

    はじめに Eclipse Web Tools Platform(WTP)とM2Eclipse(M2)は別々のプロジェクトです。両者はいずれも、Eclipseを使って開発をする際に価値の高い機能を提供します。WTPはWebおよびJava EEアプリケーション開発用のEclipseプラットフォームを機能拡張するツールセットで、一方のM2は、このIDEとMavenを密に統合します。この2つを同じプロジェクトで利用すると絶大な効果が得られますが、残念ながらまだ、WTPとM2を追加設定なしで統合することはできません。今回の記事ではこれについて取り上げます。 この記事では、WTPとM2の統合ソリューションを使用して基的なWebアプリケーションを開発していきます。プロジェクトのセットアップから配備までの一連の構築手順を紹介するので、EclipseベースのJava Web開発を効率化するための参考にして

  • 「Google Collections Library」でJavaのコレクションを補完する:CodeZine

    はじめに 何年も前のことですが、私が初めてJavaに興味を覚えた理由の1つは、Javaプラットフォームに標準でコレクションライブラリが組み込まれていたからでした。当時、C++の世界ではまだSTL(Standard Template Library)が定着しておらず、開発者たちは適当なコレクションライブラリを購入して利用するか(Rogue Waveが流行っていました)、自分の手でライブラリを書くしかありませんでした。正確な数は忘れましたが、私自身も、さまざまな目的でさまざまな種類のプリミティブやオブジェクトの連結リストを実装しました。さらに、もっと複雑なコレクションや平衡2分探索木、ハッシュテーブルなども自分で実装しました。そのようにしてソフトウェア工学の原理を絶えず意識することは決して無駄なことでありませんでしたが、生産性を考えるとそうとばかりも言えませんでした。 しかし、Javaによって

  • CSVファイルフォーマットの解説:CodeZine

    はじめに CSVファイルは最も普及したデータ交換用フォーマットですが、さまざまな方言があります。 稿ではCSVファイルフォーマットの仕様とデータ交換時のポイントを説明します。 対象読者 CSVファイルを扱うDB管理者、開発者。 CSVとは? CSVとはComma-Separated Valuesの略で、カンマ区切りで並べた値という意味です。 CSVファイルの例として、一般的なアドレス帳データを示します。 "姓","名","生年月日","郵便番号","住所","電話番号" "山田","太郎","2001/1/1","100-0002","東京都千代田区皇居外苑","03-1234-5678" "山田","次郎","2001/1/2","251-0036","神奈川県藤沢市江の島1丁目","03-9999-9999" カンマで区切られたデータの横一列を"行"(英:Row)

  • Eclipse Web Tools PlatformとMavenの統合:CodeZine

    はじめに Eclipse Web Tools Platform(WTP)とM2Eclipse(M2)は別々のプロジェクトです。両者はいずれも、Eclipseを使って開発をする際に価値の高い機能を提供します。WTPはWebおよびJava EEアプリケーション開発用のEclipseプラットフォームを機能拡張するツールセットで、一方のM2は、このIDEとMavenを密に統合します。この2つを同じプロジェクトで利用すると絶大な効果が得られますが、残念ながらまだ、WTPとM2を追加設定なしで統合することはできません。今回の記事ではこれについて取り上げます。 この記事では、WTPとM2の統合ソリューションを使用して基的なWebアプリケーションを開発していきます。プロジェクトのセットアップから配備までの一連の構築手順を紹介するので、EclipseベースのJava Web開発を効率化するための参考にして

  • Google、MySQLを強化するパッチを無償リリース:CodeZine

    Googleは、同社の製品開発の中から生まれたMySQLを強化するパッチを公開した。GoogleのWebサイトから無償でダウンロードできる。 このパッチはMySQLの扱いやすさと信頼性を向上させる目的で作られており、主にスレーブサーバ(レプリケーションとなるサーバ)の機能を強化させることができる。例として、スレーブサーバが更新通知を受け取らない限りマスタサーバを更新させない機能や、再起動なしでスレーブサーバをマスタサーバに置き換える機能などが備わっている。 他にもアクティブになっているアカウント・テーブルをモニタリングするものや、クライアント/MySQL通信のための高速な圧縮機能なども用意されている。 ちなみに、このパッチはLinux上で動作するInnoDB用に最適化されたものとなっている。その理由としてGoogleは「我々がInnoDBを使っているため」と説明している。また、現在パ

    yass
    yass 2007/04/25
    スレーブサーバが更新通知を受け取らない限りマスタサーバを更新させない機能や、再起動なしでスレーブサーバをマスタサーバに置き換える機能などが備わっている。
  • OSCacheのキャッシングでWebアプリケーションのパフォーマンスを向上する:CodeZine

    はじめに 多数のクライアントからのリクエストを処理しなければならないWEBシステムでは、パフォーマンスの問題が出てくることが珍しくありません。 パフォーマンスの問題を解決する技術の一つとして「キャッシング」技術があります。これは動的コンテンツの生成結果をメモリにキャッシュ(一定期間保存)し、その間に受けたリクエストに対してはキャッシュの値を返すことにより、生成の処理数を減らすことができるというものです。また静的コンテンツでも、PDFや画像ファイルなど比較的大きいファイルをHDDではなくメモリにキャッシュすることにより、ファイルロードを高速化することができます。 他のパフォーマンスの問題解決方法と比べて大きなメリットは、ビジネスロジックの修正を最小限に抑えることができ、デグレーションを防ぐことができるところです。ただし、キャッシュされている間は古い情報がレスポンスとして渡されることになり、常

  • 相関サブクエリで行と行を比較する:CodeZine

    はじめに SQLでは、同じ行内の列同士を比較することは簡単にできます。普通にWHERE句に「col_1 = col_2」のように書けばよいだけですから。一方、異なる行の間で列同士を比較することは、それほど簡単ではありません。ですがそれは、SQLで行間比較ができないということではありません。手続き型言語とはかなり異なる発想に基づいていますが、SQLでもそうした処理を記述することが可能です。 SQLで行間比較をする際に威力を発揮するのが相関サブクエリ、特に自己結合と組み合わせた「自己相関サブクエリ」です。稿では、この技術を使った行間比較の応用方法を、具体例を通して解説します。稼働環境OracleSQL ServerDB2PostgreSQLMySQL(バージョン4.1以上) 対象読者 相関サブクエリの基的な使い方を知っている方。CASE式、自己結合、スカラ・サブクエリについての知識があると

    yass
    yass 2007/02/08
  • プログラミングと開発者のためのCodeZine:サイズと日付でローテートするLog4jのAppender作成(Log4j, ログ, ローテーション, Java)

    はじめに Apache Logging Services Projectが提供するLog4jは、ファイルサイズによってログファイルのローテーションを行うRollingFileAppenderや日付でローテーションを行うDailyRollingFileAppenderを提供しています。 しかし、ファイルサイズと日付の両方でローテートするAppenderは提供されていないため、両方の機能を同時に利用することはできません。また、DailyRollingFileAppenderを利用する場合は、バックアップログファイル数を設定できないため、Disk Fullへの対策を検討する必要があります。 稿ではRollingFileAppenderとDailyRollingFileAppenderの機能を組み合わせたAppenderを作成する方法を紹介し、その利用方法について示します。対象読者 Javaプロ