タグ

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

  • いますぐ使えるOpenID:第1回 OpenIDサービスを利用して,OpenIDの仕組みを理解する|gihyo.jp … 技術評論社

    はじめに Yahoo!Yahoo!JapanがOpenIDサービスの提供を始めたり、MixiがOpenID対応を表明したりと、最近OpenIDについてのニュースを耳にするようになりました。 ところが、OpenIDという言葉は知っていても、実際に使ったことのある方はまだほとんどいないのではないでしょうか。 OpenIDによる認証を提供するサービスが増え、インターネット上でアカウントを持つ人の多くがOpenIDを利用できるようになっています。 さらにOpenIDを扱うPerlRubyなどのライブラリも充実してきています。 このように、OpenIDを使うための環境は整ってきていると言えます。 そこで、連載では実際にOpenIDを使ってみながら、その仕組みについて解説していきます。 同時に、仕様では見えてこないOpenIDを使う上でのコツも、説明していければと思います。 OpenIDとは O

    いますぐ使えるOpenID:第1回 OpenIDサービスを利用して,OpenIDの仕組みを理解する|gihyo.jp … 技術評論社
    kwry
    kwry 2017/02/12
  • 第4回 「状態遷移図」と「状態遷移表」で見えるもの | gihyo.jp

    はじめに テスト担当者と開発担当者との会話。 テスト担当者:「この状態の時にこの動作を行うと、結果としてどういう状態に遷移すれば仕様として正しいんでしょうか。仕様書に記載がないので…」 開発担当者:「どれどれ、うーん、当だ。記載がないね…。俺もわからないや。テストした結果を仕様書に記入しておいてよ。それが仕様だから」 テスト担当者:「…」 この話が「あり得ない話」なのか「よくある話」なのかはさておき。今回の話題は、「⁠状態遷移テスト」です。 状態遷移テストとは 「状態遷移テスト」とは、状態遷移図と状態遷移表をもとに行うテストの総称です。私たちテスト担当者は、機能テストやシステムテストにおいて状態遷移図や状態遷移表を作成して、ソフトウェアが「正しく」設計仕様どおりに動くかどうかをテストします。 ですが、この「設計仕様書通りに動く」というところがなかなか難しいところです。冒頭の会話にもありま

    第4回 「状態遷移図」と「状態遷移表」で見えるもの | gihyo.jp
    kwry
    kwry 2015/01/29
  • 第1回 大規模データではRDBMSのどこがボトルネックになるのか? | gihyo.jp

    RDBMSはオワコン? 「右を向いても左を向いても“⁠ビッグデータ⁠”というキーワードが闊歩する時代に、いまさらRDBMSの話題?」 連載のタイトルを見てそう思われたかもしれません。 「ディスクベースのRDBMSはオワコン、これからは○○(お好きなアーキテクチャを入れてください)の時代だ!」 とおっしゃる方もいるかと思います。 しかし、むしろ多くの企業がビッグデータに注目しているおかげで、RDBMS側でも大規模データを取り扱うニーズが増えています。 大規模データを取り扱う時にボトルネックとなる5つのポイント 数百ギガバイトといったレベルのRDBMSであれば、現場のエンジニアの方にとってはあたりまえの世界でしょう。しかし、テラバイトを大きく超えたデータを扱う場合には、ボトルネックの傾向が変化するのはご存じでしょうか。 次の図は、RDBMSにまつわるボトルネックを示したものです。 図1 大規

    第1回 大規模データではRDBMSのどこがボトルネックになるのか? | gihyo.jp
  • 第8回 Perlによる大規模システム開発・設計のツボ(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはmixiの広木大地さんで、テーマは「大規模システム開発・設計のツボ」です。 仕事やOSS(Open Source Software)プロジェクトPerlを用いた多人数開発をするにあたって気をつけるべきことや、品質を維持するためのノウハウを、国内最大級のPerlシステムであるmixiの事例をベースに紹介します。コーディング上の命名に関する考え方から、大規模アーキテクチャの設計や品質の数値化まで、ミクロからマクロに至るポリシーやテクニックを駆け足で解説します。 なお、今回の内容は(⁠株⁠)ミクシィの2010年度の新卒エンジニア技術教育メニューからの抜粋になります。これからPerl をはじめとするLL(Lightweight Language、軽量言語)を仕事で使うというフレッシュエンジニアのみなさんにも、ぜひご一

    第8回 Perlによる大規模システム開発・設計のツボ(1) | gihyo.jp
  • 第8回 Perlによる大規模システム開発・設計のツボ(2) | gihyo.jp

    mixiのアーキテクチャパターン 2011年4月現在、mixiは2004年2月のサービス開始から7年以上をかけて、最適化、バグ修正、新機能リリースなどを続けています。(⁠2)では、こういった状況の中で、安定したサービスをみなさんにお届けするために取り入れているアーキテクチャ設計上の工夫や、失敗を修正していくための品質評価手法を紹介します。 システムの境界と階層化 mixiでは個々の機能について、次のようなパッケージレイアウトを採用しています。 Mixi::Voice::* つぶやき機能に関するモジュール群 Mixi::Video::* ビデオ機能に関するモジュール群 Mixi::Diary::* 日記機能に関するモジュール群 Mixi::Home::* ホーム表示機能に関するモジュール群 以降では、これらのモジュールの集まりを「コンポーネント」と呼びます。これらのコンポーネントは、相互に連

    第8回 Perlによる大規模システム開発・設計のツボ(2) | gihyo.jp
  • 第6回 UNIXプログラミングの勘所(4) | gihyo.jp

    ファイルの保存 ここまでいくつかの見落としがちな処理を見てきましたが、最後にどんなプログラマでも必ず行う「ファイルの保存」についての注意点を考察してみたいと思います。 ファイルを確実に書き込むためには、どのようなコードを書けばよいでしょうか。「⁠fsync」を呼べばいい。それだけではありません。実際には、次の2点も必要になってきます。 (内容の差し替えだった場合に)書き換え途中の状態にならないこと ユーザに対して書き込み完了を返したあとは、ディスクがクラッシュしない限り、データが消えないこと UNIX系OSでこれらの要件を満たすには、まずテンポラリファイルに新しいデータを書いてディスクに同期し(①②⁠)⁠、(⁠必要ならば)古いファイルをバックアップファイル名を使っても参照できるよう別名を付与し(③⁠)⁠、次にテンポラリファイルのファイル名を差し替え対象になっているファイルの名前に切り替え(

    第6回 UNIXプログラミングの勘所(4) | gihyo.jp
    kwry
    kwry 2011/04/06
  • 第6回 UNIXプログラミングの勘所(3) | gihyo.jp

    ネットワークプログラムとSIGPIPE 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。これは多くの場合、SIGPIPEの処理を忘れていることが原因です。SIGPIPEとは、切断されたネットワークソケットなどにデータを書き込もうとした際に送出されるUNIXシグナルです。特に設定しない限り、プロセスはSIGPIPEを受け取ると強制終了されます。そのため、通信が突然切断される可能性のあるTCPサーバにおいては、SIGPIPEを無視するよう設定する必要があります。 # デフォルトの動作(SIGPIPEの場合はプロセスの終了)に設定 $SIG{PIPE} = 'DEFAULT'; # SIGPIPEを無視するよう設定 $SIG{PIPE} = 'IGNORE'; # SIGPIPEを受信した際に実行するサブルーチンリファレンスを # 設定 $SIG{PI

    第6回 UNIXプログラミングの勘所(3) | gihyo.jp
    kwry
    kwry 2011/04/05
  • 第6回 UNIXプログラミングの勘所(2) | gihyo.jp

    forkとファイルハンドル UNIX系のOSでは、複数のプログラムが、それぞれプロセスという単位で動作しています。forkというシステムコール[1]が呼び出されると呼び出したプロセスの複製がOSによって作成され、複製されたプロセス(子プロセス)がexecveというシステムコールを使って別のプログラムにすり替わる、というしくみでさまざまな処理を実行するようになっています。 「複製」と言っても、全部の情報が複製されるわけではありません。プロセスのメモリイメージが複製される[2]一方で、プロセスが開いている「オープンファイル記述」(⁠open file description)(⁠注3)は複製されません。forkのあとは、親プロセスと子プロセスの両者が、単一のオープンファイル記述を指す「ファイル記述子」(⁠file descriptor)(⁠注4)を持つことになります(図2⁠)⁠。 図2 for

    第6回 UNIXプログラミングの勘所(2) | gihyo.jp
    kwry
    kwry 2011/04/04
  • 第6回 UNIXプログラミングの勘所(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはJapanizeやText::MicroTemplateなどで有名な奥一穂さんで、テーマはUNIXプログラミングです。 はじめに 「正しいプログラム」を書くために必要な知識とはなんでしょうか。テストが正しく実行されることは、正しいプログラムであるための必要条件に過ぎません。プログラミングにおいてはプログラミング言語だけでなく、OSの動作やデータベース、ネットワークプロトコルなど、さまざまな知識が必要になります。 PerlはもともとUNIX系のOS(LinuxやFreeBSD、Mac OS XなどのOSを稿では以下UNIXと総称します)の上で処理を行うためのスクリプト言語として開発され、今日でもPerlプログラムの多くはUNIX上で実行されています。しかし、「⁠Perlでプログラミング」と言った場合はともすれば

    第6回 UNIXプログラミングの勘所(1) | gihyo.jp
    kwry
    kwry 2011/04/04
  • 第2回 Redisの導入と基本機能 | gihyo.jp

    今回は実際にRedisをインストールしてみるところから、コマンドラインクライアントを使った基的な操作方法、そして実際のアプリケーション開発時に重宝するDB選択やタイムアウトなどのRedis特有の仕様について説明します。 インストール ダウンロード 連載執筆時点の最新stableである、2.0.4をダウンロードします。 $ wget http://redis.googlecode.com/files/redis-2.0.4.tar.gz コンパイル RedisはANSI Cで書かれ、外部の依存ライブラリの必要ないシンプルな実装になっているため、コンパイルは以下のステップで完了します。 $ tar xzf redis-2.0.4.tar.gz $ cd redis-2.0.4 $ make 「redis-server」や「redis-cli」が生成されたのを確認してください。 設定の変更

    第2回 Redisの導入と基本機能 | gihyo.jp
    kwry
    kwry 2011/02/16
  • 第1回 インメモリデータストア Redisの概要 | gihyo.jp

    はじめに 株式会社ドワンゴで「ニコニコ生放送」の開発を担当している、小野と申します。特集では、いわゆる「NoSQL」の一種であるRedisの概要と基操作、そしてWebアプリケーションでの応用例までを、ニコニコ生放送での事例を交えながら紹介していきます。 Redisとは? Redisは、Salvatore Sanfilippo氏によって2009年に公開されたインメモリベースのキー・バリュー・ストアです。2010年3月にはVMWareが同氏を雇入れ、同社の支援のもと、コントリビューターのPieter Noordhuis氏と共にフルタイムで開発が進められています。 記事執筆時点での最新stableはバージョン2.0となり、新しいデータ型の追加やトランザクションのサポート、VM(仮想メモリ)の実装などが追加されました。 また、メモリ効率の向上やスループットの改善が図られたバージョン2.2が間

    第1回 インメモリデータストア Redisの概要 | gihyo.jp
    kwry
    kwry 2011/02/09
  • 第38回 DBIx::Class:拡張性の高さが売りではありますが | gihyo.jp

    国内では微妙な立ち位置に ずいぶん間が空いてしまいましたが、今回はデータベース話の3回目として、DBICことDBIx::Classについてまとめてみます。DBICは、海外ではMooseやCatalystと並ぶモダンPerl界の三種の神器のひとつとしていまも広く宣伝されていますが、国内では、当初こそClass::DBIからの乗り換えを強力に推進する流れが見られたものの、最近ではあまり名前を聞くこともなくなり、むしろDBICからの脱却が潮流になっているかの印象を受けることさえあります。いったい何がどうなっているのか、例によって歴史を追いかけながら見ていきましょう。 もともとはオブジェクトを永続化するためのもの DBICの立ち位置を理解するには、まずはその先駆けとなったClass::DBIがどういうものであったかを理解しておく必要があります。 連載第36回でも紹介したように、マイケル・シュワーン

    第38回 DBIx::Class:拡張性の高さが売りではありますが | gihyo.jp
    kwry
    kwry 2011/01/01
  • 位置情報サービスのはじめ方 記事一覧 | gihyo.jp

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

    位置情報サービスのはじめ方 記事一覧 | gihyo.jp
    kwry
    kwry 2010/10/30
  • 第3回 DBIx::Classでデータベース操作(3) | gihyo.jp

    Resultクラスの拡張 Resultクラス、ResultSetクラスは自分の好みに合わせて拡張できます。 カラムのinflate/deflate $tweet->created_dateのようなつぶやきの日付を取りたい場合、カラムの値そのままではなくDateTimeオブジェクトを返してくれたらうれしいと思います。その機能を実現するのがカラムのinflate/deflate機能です。inflate(膨らませる)は文字どおりカラムのデータをPerlオブジェクトに変換する機能で、deflate(収縮させる)はPerlオブジェクトをカラムデータへ変換する機能です。 Resultクラス内で __PACKAGE__->inflate_column('column_name', { inflate => sub { # カラムデータからオブジェクトを作って返す }, deflate => sub {

    第3回 DBIx::Classでデータベース操作(3) | gihyo.jp
    kwry
    kwry 2010/10/06
  • 第3回 DBIx::Classでデータベース操作(2) | gihyo.jp

    Schema::Loaderの利用 第3回(1)でResultクラスには各テーブルがどのようなカラムを持っているかを定義する必要があると書きましたが、「⁠そのようなテーブル情報はデータベースから自動的に取得できるのでは?」と思った方もいるかもしれません。DBIx::Class::Schema::Loaderという別で配布されているモジュールを使用すると、Resultクラスでのテーブル情報の定義を省略できます。 Schema::Loaderを使うべきか 軽いデータベース操作であればSchema::Loaderがお手軽ですが、そうではない場合はResultクラスにテーブル定義をしっかりと書くのがお勧めです。Resultクラスにテーブル定義を書くべき理由は主に2つあります。 ●DBIx::Classからデータベースを作成できる Resultクラスにテーブル定義を書くと、DBIx::Classから

    第3回 DBIx::Classでデータベース操作(2) | gihyo.jp
    kwry
    kwry 2010/10/06
  • 第3回 DBIx::Classでデータベース操作(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はカヤックの村瀬大輔さんで、テーマはDBIx::Classです。 DBIx::Classとは DBIx::ClassはPerlのO/Rマッピングモジュールです。O/Rマッピング(Object/Relational Mapping、以下ORM)とは、オブジェクト指向言語におけるオブジェクトとリレーショナルデータベースを紐づけるしくみのことで、ORMを使用するとユーザは直感的なオブジェクト操作によってデータベースを操作できるようになります。 DBIx::ClassはPerlORMとしては現在世界で一番使われているモジュールです。日では最近データベース操作モジュールとしてより軽量なDBIx::SkinnyやData::Modelなどの注目が高まってきていますが、機能的に枯れている点や豊富にテストされている点でDBIx::Cl

    第3回 DBIx::Classでデータベース操作(1) | gihyo.jp
  • 第36回 SQL::Abstract:簡単なSQLはより簡単に | gihyo.jp

    DBIの泣き所 いわゆるLAMPないしそれに似た環境でウェブサービスばかり書いている方にはあまり実感がないかもしれませんが、あちらの現場ではOracleを、こちらの現場ではMicrosoft SQL Serverを、はたまた別の現場では組み込みのSQLiteを、といった受託系の仕事をしている人にとって、SQLの方言問題は避けては通れないもののひとつです。 典型的なところでは、たとえばSELECTで取得するデータの件数を制限したい場合、PostgreSQLなどでは「LIMIT ... OFFSET ...」のように書きますが、OracleではROWNUMを使いますし、MS SQL serverならSET ROWCOUNTやTOPを使います。また、いまでこそPostgreSQLとの互換性を確保するため「LIMIT ... OFFSET ...」と書けるようになっているMySQLにしたところで、

    第36回 SQL::Abstract:簡単なSQLはより簡単に | gihyo.jp
  • 第4回 memcachedを快適に利用するTips集 | gihyo.jp

    「memcachedの活用と運用 実践編」の連載も今回が最後となります。連載の第1回ではmemcachedの最新バージョンである1.4系で増えたオプションやよく利用されるオプションの紹介をしました。第2回目では安全にmemcachedを利用するために気を配るセキュリティや脆弱性について説明し、3回目では稼働監視やリソースモニタリングについて書かせて頂きました。 最終回では、これまで説明してこなかったmemcachedを快適に活用、運用するための小さめのTipsをいくつか紹介します。 指定したキーが含まれるサーバを探す 複数台のmemcachedのサーバを1つのグループとしてWebアプリケーションサーバなどのクライアントから利用している場合、特定のキーのデータがどのmemcachedサーバに保存されているのか知ることは容易ではありません。 memcachedのキャッシュオブジェクトの分散は、

    第4回 memcachedを快適に利用するTips集 | gihyo.jp
  • Happy Testing Perl 記事一覧 | gihyo.jp

    第4回Test::Perl::Critic, Test::Pod, Test::Pod::Coverage, Test::Exception, Test::Warn, Devel::Coverの紹介 小林篤 2008-06-25

    Happy Testing Perl 記事一覧 | gihyo.jp
    kwry
    kwry 2010/09/05
  • 第3回 memcachedの監視とCloudForecastによるモニタリング | gihyo.jp

    安定したWebサービスを提供するためには欠かすことができないのが監視です。監視を行うことで障害をいち早く検知し、対応を行うことでダウンタイムを最小限にできます。また負荷の掛かり具合やサーバリソースの消費度合いを明らかにすることでいつ、どのタイミングでサーバやインフラを増強するか、またアプリケーションの改善を行うのかを判断できます。Webサービスの稼働やリソースの「見える化」を実現することで、個人の経験や勘、また根性だけに頼らない運用が可能となり、より的確なタイミングでのシステムの改善、増強を行えます。 稼働監視とリソースモニタリング Webサービスのシステムの監視には大きく分けて2種類の監視があります。1つ目は稼働監視、2つ目はリソースのモニタリングです。稼働監視では監視を行ったタイミングで対象システムに例外があれば、メールを送信するなどのアラートを発生させます。稼働監視に於ける例外とは、

    第3回 memcachedの監視とCloudForecastによるモニタリング | gihyo.jp