タグ

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

  • 第35回 DBI:生のSQLが散らばると言う前に | gihyo.jp

    Perldbm いまでは省みられることも少なくなりましたが、Perlには1989年にリリースされたバージョン3.0以降、dbmと呼ばれるシンプルなデータベースにアクセスする機構が標準で組み込まれています。このdbmは、いわゆるリレーショナルデータベースとは違ってキーと値の組み合わせをディスクに保存できるだけのものですが、ハッシュ(当時はまだ連想配列と呼んでいました)と結びつけることでタブ区切りファイルなどを読んでいくより高速に検索ができたため、ユーザ環境に永続的なデータを保存する手段のひとつとして重宝されていました。Perl 3/4の時代にはdbmopenというコマンドが使われていましたが、この機構はPerl 5になって一新され、いまではより汎用的なtieというコマンドを使うことになっています。この仲間としては古くからあるBerkeley DBやGDBMなどのほか、最近では平林幹雄氏のT

    第35回 DBI:生のSQLが散らばると言う前に | gihyo.jp
  • 第2回 AnyEventでイベント駆動プログラミング (3) | gihyo.jp

    AnyEventベースのモジュール 前回まで紹介したのはAnyEventの基APIのみです。CPANにはこれらをベースにさらに複雑な機能を実装した様々なモジュールがあり、それらをうまく組み合わせて簡単に高機能なイベント駆動プログラムを構築することができます。代表的なものとしては、以下のようなモジュールが登録されています。 非同期でHTTP通信を行うAnyEvent::HTTP 低レイヤのI/Oを簡単にするAnyEvent::Handle ソケット接続を行うAnyEvent::Socket データベース処理を非同期で行うAnyEvent::DBI CouchDBと非同期に通信を行うAnyEvent::CouchDB PSGI/Plackを非同期エンジンで動かすTwiggy これらを組み合わせて使うことにより、ブラウザと非同期に通信しつつ裏ではデータベースおよびイントラネットのほかのREST

    第2回 AnyEventでイベント駆動プログラミング (3) | gihyo.jp
  • 第2回 AnyEventでイベント駆動プログラミング (1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。第2回は、Japan Perl Association代表理事の牧大輔さんで、テーマはAnyEventです。 はじめに 昨今のPerl界で最も熱い話題がイベント駆動プログラミングです。イベント駆動プログラミングはいわゆる「リアルタイムWeb」などと呼ばれる、大量のデータや接続をさばきつつも更新通知の速さが重要となるアプリケーションでは必須技術で、今後のエンジニアにとって最も重要な知識の一つと言えるでしょう。 イベント駆動プログラミング自体はPerlでも以前からさまざまな用途に使われてきましたが、それがまた見直されているのは、従来のイベント駆動プログラミング用ツールキットの使いやすさをはるかに凌駕するAnyEventというモジュールが成熟期を迎えたためです。 イベント駆動プログラミングとは AnyEventの解説に入る前に、簡単

    第2回 AnyEventでイベント駆動プログラミング (1) | gihyo.jp
  • 第1回 WebSocket登場までの歴史 | gihyo.jp

    はじめに 初めまして。NTTアドバンステクノロジの金城と申します。幸運にも記事を執筆させていただけることになりました。WebSocketという新しいウェブの規格についての連載を、全4回の予定でお届けします。 用語統一について WebSocketは「WebSocket」「⁠WebSockets⁠」⁠、単語を切り離した「Web Socket」等、表記に揺れがあります。2009年12月22日のワーキングドラフトのタイトルは「The Web Sockets API」となっていますが、2010年4月26日のエディターズドラフトでは「The WebSocket API」となっています。この連載では、最新の仕様書に則り、用語を「WebSocket」で統一します。 HTML5とWebSocketの関係 WebSocketは、もともとHTML5の一機能として仕様の策定が進められていました。しかし、Web S

    第1回 WebSocket登場までの歴史 | gihyo.jp
  • 第34回 Perl Mongers:顔の見える仲間を増やそう | gihyo.jp

    もうひとつの.pm Perl 5のモジュールには.pmという拡張子をつけることになっています。このpmというのはもちろんPerl Moduleのことですが、Perlの世界ではもうひとつ、Perl Monger(s)という意味になることがある、というのもみなさんよくご存じのことでしょう。このmongerという単語は、もともとはあまりよろしくない物品を言葉巧みに売りつける行商人を意味していました。オックスフォードの大きな英語辞典で共起する取扱商品を拾ってみると、肉や魚、チーズといったにおいの強い産物から、奴隷や娼婦、あるいは流行、ニュース、スキャンダルといった無形のものまで、何かしら好ましくない要素をもつものが並んでいるのですから、自虐であれ謙遜であれ、Perlについても同列に理解するべきでしょう。その後生まれたPerlMonksのような言葉に比べると、Perl Mongersはもっと下世話な

    第34回 Perl Mongers:顔の見える仲間を増やそう | gihyo.jp
  • 第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp

    Encodeを使っても文字化けするとき Encodeは特定のエンコーディングにしたがって配列されたバイナリを「文字列」に置き換えるためのモジュールですが、かならずしもすべてのエンコーディングがあらゆるバイナリの組み合わせに対応しているわけではありません。 たとえば、「⁠シフトJIS」環境における機種依存文字の例としてよく取り上げられる丸付き数字をEncodeのお作法通りにdecode、encodeする場合、「⁠シフトJIS」だからと思って安易にshiftjis系列のエンコーディングでdecodeしてしまうと、丸付き数字のマッピングデータがないため「?@」のように文字化けを起こしてしまいます。 use strict; use warnings; use Encode; my $binary = pack('C*', 0x87, 0x40); # ①; my $string = decode(

    第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp
  • 『電子書籍を考える出版社の会』を設立~これからの電子出版や電子書籍・雑誌に取り組むための団体 | gihyo.jp

    2010年6月8日、株式会社インプレスジャパン、株式会社オーム社、株式会社技術評論社、株式会社秀和システム、株式会社翔泳社、株式会社ソーテック社、ソシム株式会社、ソフトバンク クリエイティブ株式会社、東京地図出版株式会社、株式会社日刊工業新聞社、株式会社ビー・エヌ・エヌ新社、株式会社ボーンデジタル、株式会社毎日コミュニケーションズ、株式会社ワークスコーポレーションの専門書・実用書出版社14社(五十音順)は、電子データにおける新たなるコンテンツ、電子書籍・雑誌の開発と普及を目的として研究と情報交換を進める団体『電子書籍を考える出版社の会』を設立した[1]⁠。 AmazonKindleAppleiPadといったハードウェア面における技術の進化、ePubをはじめとした電子書籍フォーマットの開発、電子流通における権利と契約など、この1年の間に電子出版をめぐる情勢が一挙に進展しつつあることを受

    『電子書籍を考える出版社の会』を設立~これからの電子出版や電子書籍・雑誌に取り組むための団体 | gihyo.jp
  • OpenID Tech Night Vol.6 ~OAuth、AXからOAuth HybridまでWeb Identity技術一挙紹介~ | gihyo.jp

    OpenID Tech Night Vol.6 ~OAuth、AXからOAuth HybridまでWeb Identity技術一挙紹介~ 2010年5月28日、株式会社野村総合研究所にて、OpenID ファウンデーション・ジャパン主催のOpenID Tech Night vol.6が開催されました。稿では、イベントのレポートをお届けします。 はじめに モデレータの株式会社野村総合研究所 勝原さんから、「⁠はじめに」と題して、もはやイベントの恒例となった「Digital Identityとは」という話がありました。 Web Identity Technorogyを「インターネット上で「じぶん情報」を安全に流通させ、サイト同士の連携を行うためのテクノロジー」であると定義し、以前からエンタープライズ向けで利用されているSAMLのようなプロトコルに比べ比較的簡単に実装できるWeb2.0的な認証

    OpenID Tech Night Vol.6 ~OAuth、AXからOAuth HybridまでWeb Identity技術一挙紹介~ | gihyo.jp
  • PSGI/Plack - [Perl Hackers Hub]

    連載では、第一線のPerlハッカーが回替わりで執筆していきます。記念すべき第1回は、WEB+DB PRESS誌ではVol.2から執筆しており、長らく連載も担当していた宮川達彦さんです。 はじめに PerlでWeb開発をするためのフレームワークは百花繚乱、人気を集めています。稿では、これらのフレームワークが共通して利用するためのインタフェース仕様であるPSGIと、そのエンジンとしての実装であるPlackを紹介します。 PSGIに至る道 PerlとWebアプリケーション開発の親和性 Perlは「インターネットのグルー(糊:のり)言語」とも言われ、CGIによる開発がメインだった1990年代から、Webアプリケーション開発に最も関わりのあるプログラミング言語の一つと言ってよいでしょう。2000年代に入っても、Ruby on RailsPHPなどの他言語からの影響も取り入れながら、Web開発

    PSGI/Plack - [Perl Hackers Hub]
  • 第32回 Encode:日本語だけ扱えればよいのではなく | gihyo.jp

    一般的には推奨されないencodingプラグマ 前回取り上げたencodingプラグマは、簡単なjperl用のスクリプトを移植したい場合には便利ですが、perlunifaqというPerl付属のマニュアルにははっきり「Don't use it.」と書いてあるくらい、一般的には使えないプラグマと認識されています。 前回も見たように、encodingプラグマが対応しているのは、ソースコードに埋め込まれている文字列やそれに類する正規表現、そして標準入力からのデータを指定された文字コードからPerlの内部表現に変換し、標準出力へ出力する際には内部表現を指定された文字コードに変換することだけです。ほかのファイル入出力部分や、コマンドラインから受け取った引数、標準エラー出力などの変換は行わないので、ちょっと凝ったことをしようと思うと、結局「外から入ってきたものはデコード、外に出すものはエンコード」という

    第32回 Encode:日本語だけ扱えればよいのではなく | gihyo.jp
  • 第31回 encoding:いつまでもjperlから抜け出せない方に | gihyo.jp

    いまさら使う人はいないと思っていますが かつて、jperlと呼ばれるものがありました。これは当時まだシングルバイト文字にしか対応していなかったPerl体にパッチをあてて日語(など)の2バイト文字をより直感的に扱えるようにしたもので、いまとなっては史料的価値しかありませんが、1990年代にはそれなりに重宝されていましたから、筆者を含めて、お世話になったことのある方も少なからずいることでしょう。 jperlはその後、ライブラリレベルで日語対応できるようにしたjcode.pl(1992年)や、その流れをくむJcode.pm(1999年)を経て、2000年にリリースされたPerl 5.6からは家のほうでUnicode対応が始まったことで、その歴史的役割を終え、開発も事実上終了したのですが、困ったことに、それから10年がたったいまなお、jperlを求めたり、勧めたりする動きはやまないようです

    第31回 encoding:いつまでもjperlから抜け出せない方に | gihyo.jp
  • 第41回 Sinatra 1.0の世界にようこそ | gihyo.jp

    はじめに SinatraはRubyで記述されたWebアプリケーションを素早く、簡単につくるためのDSL(ドメイン固有言語)です。 すでに第7回で、原悠さんにより「小規模Webアプリのためのフレームワーク、Sinatra」というかたちで紹介されています。 簡潔な文法で、高い表現力を持つSinatraは、アメリカRubyコミュニティや企業を中心に、瞬く間にユーザを増やしました。また、Rubyという一言語に留まらず[1]⁠、Sinatraを模したフレームワークが多く作られている現状からも、SinatraはWebアプリケーション開発そのものにも大きな影響を与えたと言えます。 最近ではここ日でも、個人利用を中心に、そこかしこでSinatraを使って開発をしている、という話を聞くようになりました。筆者自身、1ユーザとして現在業務で利用しており、1年前は知る人ぞ知る存在だったSinatraは、実際に

    第41回 Sinatra 1.0の世界にようこそ | gihyo.jp
  • 第30回 Test::Class:ユニットテストに使うだけでなく | gihyo.jp

    メタデータからテスト件数を取得する 前回はテストファイルやテストデータの数からテストプランを計算するモジュールを紹介しました。今回はその続きとして、テストファイルのメタデータからテストの数を求めるモジュールを紹介していきましょう。これらのモジュールの多くは1994年にケント・ベック(Kent Beck)氏がSmalltalk向けに書いたSUnitを祖先にもつ、いわゆるxUnit系のフレームワークに属するものですが、Perlにはそれ以前からTest Anything Protocolを使った独自のテスト手法が存在していたため、Javaなどで使われている同種のフレームワークとはやや毛色の違う部分もあります。一般的にはクラスをひとつ書くたびに対応するユニットテスト用のクラスを書くのがよいように言われていますが、ここではもっとゆるく、テストを自動的に検出してくれるだけでなく、テストの事前事後になん

    第30回 Test::Class:ユニットテストに使うだけでなく | gihyo.jp
  • FreeBSD Daily Topics:2010年4月19日 FreeBSD GCCを置き換えるLLVM Clang,広くテスト呼びかけ|gihyo.jp … 技術評論社

    FreeBSD Daily Topics 2010年4月19日FreeBSD GCCを置き換えるLLVM Clang、広くテスト呼びかけ src ClangBSD - LLVM Clang Call for Test Roman Divacky氏がメーリングリストにおいてLLVM ClangのFreeBSD統合が一定のレベルに達したとしてコミュニティに広くテストを呼びかけています。LLVM Clangがセルフホストに到達したこと、ClangのC++サポートが向上したこと、i386/amd64のシステムとカーネルのビルドと成功していることなどが背景にあります。 テストはClangBSDのブランチを取得してビルドすることで実施できます。作業の詳しい方法はBuildingFreeBSDWithClang - FreeBSD Wikiにまとまっています。いつ、どのタイミングでメインブランチに取り込

    FreeBSD Daily Topics:2010年4月19日 FreeBSD GCCを置き換えるLLVM Clang,広くテスト呼びかけ|gihyo.jp … 技術評論社
  • Software Design 2010年5月号

    2010年4月17日紙版発売 B5判/216ページ 定価1,341円(体1,219円+税10%) ただいま弊社在庫はございません。 Amazon 楽天ブックス ヨドバシ.com Fujisan(定期購読のみ) 書のサポートページサンプルファイルのダウンロードや正誤表など 第1特集 TwitteriPhone/クラウド時代を生き抜くための システム基盤の[新]常識 スマートフォン,分散化,検索技術,仮想化,大規模化 TwitteriPhone電子書籍などをはじめ,コンピュータ,ITによって世の中や社会のしくみが大きく変わる中,その付加価値の鍵はソフトウェアプログラムが握っているといっても過言ではありません。特集では,こうした流れの中で,新人エンジニアの方々がどんな知識・考え方を身に付けておく必要があるのか,マルチコア,分散化,検索技術,仮想化,大規模システム運用,スマートフォンな

    Software Design 2010年5月号
  • 第29回 Test::Base:データ本位のテストをするときは | gihyo.jp

    テストは実行する前にも数えられるはず 前回、前々回と見てきたように、Test Anything Protocolでは来ひとつひとつのテストに連番が割り振られます。新しいテストを追加したければ、テストファイルの末尾に移動して、テスト番号をひとつずつ増やしながらテストを書き進め、終わったら先頭に戻って宣言部を更新する。先頭に戻るのが面倒であれば宣言部を末尾に移してもよいですが、いずれにしてもテストを追加し終わった時点でテストの件数はわかっているのですから、更新に困ることはないはずでした。 ところが、Perl 5の時代に入ってテスト用のモジュールが連番を振ってくれるようになった結果、テストの件数がわかりづらくなったため、no_planやdone_testingのように実際にテストを実行した回数をテストの総数とみなす手法が登場した――というのが前回の話でしたが、そういった妥協案は、Test An

    第29回 Test::Base:データ本位のテストをするときは | gihyo.jp
  • 第28回 Test::More:no_planからdone_testingへ | gihyo.jp

    計画的に実行するのはよいことですが 前回も紹介したように、Test Anything Protocolでは「これから10個のテストを実行します」と宣言する場合はこのように書くことになっていました。 use strict; print "1..10\n"; # 宣言部 for (1..10) { print "ok $_\n"; } このような宣言部の存在は、テスト結果をパースして分析するTest::Harnessのようなツールにとっては非常に便利なものですが、たとえば環境によってテストの数がかわるとき、あるいはテストファイルが非常に長くなってきたとき、はたまた多くの人が平行してファイルやテストの追加作業をしているため最後にマージするまでテストの数がわからないとき、事前にテストの数を把握していなければならないというのは、大きな制約にもなりえます。 単純そうに見えるTest Anything

    第28回 Test::More:no_planからdone_testingへ | gihyo.jp
  • 第1回 ウェブブラウザとJavaScriptの未来 | gihyo.jp

    こんにちは、id:os0xこと太田昌吾です。今回から、クロスブラウザ対策を中心としたJavaScriptの初級から中級の方向けの連載を開始します。JavaScriptの基礎的な文法は理解されているという前提での解説となりますので、ご了承ください(間違いやすい、わかり難いと思われるところは適宜補足します⁠)⁠。初回である今回はJavaScriptやウェブブラウザの背景など盛りだくさんの内容でお届けします。 JavaScriptのイマ JavaScriptは2010年現在において、最も重要な言語となりつつあります。旧来はすべての処理をサーバーで行って、結果をウェブブラウザ上に表示するだけというのがウェブの一般的な姿でした。2005年に登場したGoogle Mapsを一つの契機として徐々にウェブブラウザ・クライアント側での処理が見直され始め、近年ではクラウドやSaas、そしてHTML5の流行によ

    第1回 ウェブブラウザとJavaScriptの未来 | gihyo.jp
  • 第27回 Test::Most:Test::Moreでは物足りなくなってきたら | gihyo.jp

    Test Anything Protocol Perlは非常にテストを重視している言語です。連載第14回ではPerl体のテスト数がどのように推移してきたかを、また連載第24回ではCPANモジュールの品質保証に大きな役割を果たしてきたCPANTSについて簡単に紹介しましたが、Perlとテストのつながりはそれだけではありません。CPANにはTestを名前に含むディストリビューションが500以上もあがっていますし(これは全ディストリビューション数の約2.5%にあたります⁠)⁠、Perlで標準的に使われているテスト形式はTest Anything Protocol (TAP)という名前を得て多くの言語に移植され、2008年からはIETFの標準化を目指した活動も始まっています――というと何やらすごいプロトコルのように聞こえるかもしれませんが、Test Anything Protocolというのは要

    第27回 Test::Most:Test::Moreでは物足りなくなってきたら | gihyo.jp
  • 第4回 エンジニア不足を解消しよう | gihyo.jp

    今回は、「⁠心得」とはちょっと違うような気もしますが、インフラエンジニアを取りまく環境について、ちょっと書いてみたいと思います。 インフラエンジニア不足の原理 筆者が思うに、インフラエンジニアというのは、常に絶対的な不足に悩まされています。それにはさまざまな理由がありそうです。減点法による評価が多い、教育する機会がない、教育するつもりがない、イメージが良くない…などです。 ネットワークにしてもサーバにしても、何かヘマした瞬間にトラブルが起こることがあります。init 6と叩くつもりがinit 0と叩いたり、ルーティングを間違えたりフィルタを間違えたりした瞬間にリモートから何もできない状態に陥ってダッシュする状況は、インフラエンジニアなら誰しも経験しているのではないでしょうか。 運用というのは、うまく動いていてあたりまえ、障害が起こると「何やってんだー!」と言われる世界なので、どうしても経験

    第4回 エンジニア不足を解消しよう | gihyo.jp