タグ

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

  • 第22回 Coroを使ったやさしいクローラの作り方(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は誌Vol.68~73まで「フロントエンドWeb戦略室」を連載していたmalaさんで、テーマはクローラの作り方です。個人用のちょっとしたダウンローダを書くときから、大規模なクローラを書く場合まで、Perlは強い味方になります。 なお稿のサンプルコードは、誌サポートサイトから入手できます。 クローラの礼儀作法 クローラ、スパイダ、bot[1]を稼働させる際は、アクセスのしかたによっては相手先のサービスに多大な負荷をかけてしまいます。節ではまず、使用言語にかかわらずクローラを書くうえで一般的に知っておくべき作法について述べます。 robots.txtによるbotの制御─⁠─ アクセスしてよいかの指示 Webサイトに置かれるrobots.txtは、botから「アクセスしてよいか」を判断するものです。アクセスする対象がht

    第22回 Coroを使ったやさしいクローラの作り方(1) | gihyo.jp
    ishiduca
    ishiduca 2013/12/18
  • 第24回 バージョン管理 ─GitとGitHub連携 | gihyo.jp

    はじめに 今回から具体的なバージョン管理システムを用いたAndroid Studioの連携を紹介します。第3回で紹介したサンプルコードが手頃なので、このプロジェクトをそれぞれのバージョン管理システムに対応させていきます。 手始めに最近もっとも人気があるGitGitHubについてです。GitGitHubについては多くを説明しませんので、他の記事やWebリソースで学習しておいてください。 事前準備 Android Studioは標準でGitGitHubをサポートしていますが、最低限以下の準備を行っておいてください。 Gitのコマンドラインツール(git)を導入しておく GitHubのアカウントを用意しておく コマンドラインツールはGitの公式サイトから、それぞれのプラットフォームに対応したものをダウンロードしてインストールしておいてください。 環境変数 PATH に gitコマンドが登録

    第24回 バージョン管理 ─GitとGitHub連携 | gihyo.jp
    ishiduca
    ishiduca 2013/11/01
  • 第21回 Carton & cpanm―Perlモジュール管理最新事情(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はikasam_aこと中川勝樹さんで、テーマはモジュール管理です。 Perlのモジュール管理 CPAN(Comprehensive Perl Archive Network)は、Perlのモジュールやソフトウェアを集めたアーカイブサイトです。昨今のPerlアプリケーション開発において、CPANにあるPerlモジュールをまったく利用しないというシーンは、ほぼ皆無だと思います。 CPANには、ファイル操作や日付操作をする基的なライブラリから、HTTPクライアントやWebアプリケーションフレームワークといった規模の大きいものまで、先人が開発を進めてきたモジュールがたくさんあります。ですのでありがたいことに、自分でゼロから下回りすべてを開発せずとも、必要なアプリケーション開発に専念できます。 CPANモジュールは使いこなすと非常

    第21回 Carton & cpanm―Perlモジュール管理最新事情(1) | gihyo.jp
    ishiduca
    ishiduca 2013/10/21
  • 第12回 MongoDBの監視 | gihyo.jp

    はじめに 前回からMongoDBの非機能面に着目していますが、今回はMongoDBの監視について説明します。まず、MongoDBの監視で使うことができる機能やツールを紹介し、その後、これらのツールを用いてどのようにMongoDBを監視するかについて一般的な考え方を紹介します。MongoDBは最新バージョンの2.4を対象としています。 コマンド表記について$ : コマンドラインで実行するコマンド 監視機能の紹介 ロギング 最初に監視の基ともいえる、ロギングについて説明します。MongoDBでは何も指定しないと標準出力にログが出力されますが、ファイルに出力する場合は「 --logpath 」オプションにてログの出力先を指定します。 $ mongod --logpath=/var/log/mongodb.log このままだと、次回起動時にログはローテーションされてしまいます。ログをローテーショ

    第12回 MongoDBの監視 | gihyo.jp
    ishiduca
    ishiduca 2013/05/15
  • 第5回 MongoDBのシャーディングを試してみよう | gihyo.jp

    はじめに 今回は、MongoDBのシャーディングについて説明します。 シャーディングとは、データを複数のサーバに分散させる機能です。今回は、最初にシャーディングのメリットを説明し、続けてシャーディングの概要、さらにシャーディングに登場する重要キーワードを解説します。2ページ目以降ではシャーディングの構築手順について解説します。 シャーディングはMongoDBの機能の中でも重要かつ複雑なもののひとつです。手元の環境で構築することが、シャーディングを理解する大きな助けになりますので、記事を参考にぜひ構築してみてください。 シャーディングのメリット シャーディングはMongoDBを水平スケーリングさせる機能で、以下のようなメリットをもたらします。 負荷分散による性能の向上 データを複数のサーバに分散させることにより、CPUやI/O負荷を分散させることが可能です。後述しますが、MongoDBはキ

    第5回 MongoDBのシャーディングを試してみよう | gihyo.jp
    ishiduca
    ishiduca 2013/05/14
  • 第18回 Amon2によるWebアプリケーションの高速開発(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は普段Webアプリケーションの開発を行っているtokuhiromさんで、テーマはWebアプリケーションフレームワークAmon2です。 Amon2とは? こんにちは。tokuhiromです。稿では、筆者が中心となって開発を進めているAmon2というWebアプリケーションフレームワークについて説明します。 Amon2は、次のような特徴を持つWebアプリケーションフレームワークです。 PSGI/Plackベース Amon2はHTTP::Engine/PSGI/Plackの開発/制定に初期のころから関わっている筆者が作成したWebアプリケーションフレームワークです。そのため、Plackの部品をできる限り利用することにより、少ないコードベースでWebアプリケーションフレームワークを実現しています。これにより学習コストが低くなってい

    第18回 Amon2によるWebアプリケーションの高速開発(1) | gihyo.jp
    ishiduca
    ishiduca 2013/04/17
  • 第9回 MongoDBの地理空間インデックス | gihyo.jp

    経度・緯度は配列またはハッシュとして保存します。今回はlocというフィールドに配列として保存します。yamanotesenというコレクションにinsertするクエリは、以下のようになります。 > db.yamanotesen.insert({ name:"五反田",loc: [ 139.723822, 35.625974 ] }); > db.yamanotesen.insert({ name:"恵比寿",loc: [ 139.710070, 35.646685 ] }); > db.yamanotesen.insert({ name:"新宿",loc: [ 139.700464, 35.689729 ] }); > db.yamanotesen.insert({ name:"新大久保",loc: [ 139.700261, 35.700875 ] }); > db.yamanotesen

    第9回 MongoDBの地理空間インデックス | gihyo.jp
    ishiduca
    ishiduca 2013/03/27
  • 第6回 レプリケーション+シャーディングでMongoDBをもっと使いこなす | gihyo.jp

    概要 連載では第4回ではレプリケーション、第5回ではシャーディングについて説明してきましたが、今回はレプリケーションとシャーディングを組み合わせた構成について紹介します。この構成を取ることにより、データを冗長化させつつも、分割して配置することができるため、可用性と読み取り性能を両方向上させることができます。 前回のシャーディングの構成では、単一のmongodをシャーディングサーバに割り当てていましたので、その1つのmongodが障害になると、シャーディングの機能が停止してしまうという問題がありました(図1参照⁠)⁠。 図1 これを解決するために、シャーディングサーバに単一のmongodではなくレプリカセットを割り当てます。これによりレプリカセット内のmongodに障害が発生してもシャーディングの機能が停止しない構成にすることができます(図2参照⁠)⁠。 図2 さらに信頼性を高めたい場合は

    第6回 レプリケーション+シャーディングでMongoDBをもっと使いこなす | gihyo.jp
    ishiduca
    ishiduca 2013/02/15
  • 自動化されたテストのある開発風景:新刊ピックアップ

    ユニットテストと自動化されたテスト ユニットテストは,クラスやメソッド,関数などを対象としたプログラムを検証するためのテストで,ソフトウェアテストの中では最も小さい粒度のテストです。 ユニットテストを行う目的として,表向きはソフトウェアの品質を高めることがあります。しかし,その真の目的は対象のクラスやメソッドの仕様を日語のような自然言語ではなく,動くプログラムとして記述することにより,仕様を明確にし,その仕様を保証することにあります。 また,プログラムとして記述したテストを繰り返し何度も実行することで,製品側のプログラムに問題が発生したときに,早い段階で影響範囲などをチェックできることも重要なポイントです。 このように,ユニットテストはプログラムとして何度でも実行できる,「⁠自動化されたテスト」であることが重要となります。 テストのコストをどう考えるか しかし,ソフトウェア開発の現場で自

    自動化されたテストのある開発風景:新刊ピックアップ
    ishiduca
    ishiduca 2013/01/12
  • 第74回 形態素解析とライフログシステム | gihyo.jp

    語を単語に分ける形態素解析 筆者が運用しているライフログシステムのうち、いくつかのモジュールには、文章から単語を取得するための日語の形態素解析システムを組み込んでいます。 形態素解析は、英語のように単語を分けて表記しない日語の文章を、単語に分割する処理をいいます。 たとえばニュースからトレンドを取得してリマインドするような場合には、形態素解析による単語の分析があるとよいのです。 ライフログシステム全体では日々、約100~200ファイル程度を形態素解析しています。この程度の規模で実用に使うために、奈良先端科学技術大学の開発した『茶筌』を使用しています。 奈良先端科学技術大学の開発した『茶筌』 現在は、sourceforgeで入手できます。 ほかにもいくつか形態素解析システムはあるのですが、Windows用でインストール用のドキュメントがわかりやすいものというと、『⁠茶筌』が筆頭でした

    第74回 形態素解析とライフログシステム | gihyo.jp
    ishiduca
    ishiduca 2012/12/19
  • 第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
    ishiduca
    ishiduca 2012/12/19
  • 第16回 Perl内部構造の深遠に迫る(2) | gihyo.jp

    前回の(1)はこちらから。 文字化け問題 ─⁠─ Perlの文字列の実装に迫る 次のテーマは文字列です。文字化けは、プログラマの意図したエンコーディングと実際のエンコーディングが異なるときに起きる現象で、どんなプログラミング言語でも問題になります。ただPerlではv5.8.0以降、さらにテキスト文字列という概念ができたため、プログラマの意図をコードに落とす際に少し工夫が必要です。この概念を正しく理解していないと、エンコーディングが正しく見えるときでも文字化けが起きることがあるのです。そこで節では、文字化けをデバッグするという目的のもと、perlの文字列の実装に迫ります。 まず、よくある文字化けを再現するコードがリスト7です。CPANモジュールのEncode::Locale[6]をインストールしておいてください。また、ファイルはUTF-8で保存してください。 リスト7 hello-moji

    第16回 Perl内部構造の深遠に迫る(2) | gihyo.jp
    ishiduca
    ishiduca 2012/12/19
  • 第16回 Perl内部構造の深遠に迫る(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はgfxこと藤吾郎さんで、テーマはPerlの内部構造です。 内部構造を覗く Perlで開発をしていると、ときどきわかりにくい現象に遭遇することがあります。たとえば、あるデータをJSON(JavaScript Object Notation)にシリアライズするとき、数値としてシリアライズしてほしい値が文字列としてシリアライズされてしまう。あるいは、エンコーディングが正しいはずなのに文字化けが起きる。こんなときは、思いきってPerlの内部構造を覗くことで、何が起きているかを突き止めることができます。 稿では、Perlの内部構造について解説します。言及するperlはバージョン5.16.0(2012年5月21日リリース)です。また、ターミナルのエンコーディングはUTF-8を想定しています。なお、Perl処理系はC言語で書かれてい

    第16回 Perl内部構造の深遠に迫る(1) | gihyo.jp
    ishiduca
    ishiduca 2012/12/18
  • エストニアのすべての学生がプログラミングを学ぶようになる | gihyo.jp

    ヨーロッパの北東に位置するエストニアはコンピュータプログラミングについての先進的な教育プロジェクトが進んでいます。Estonian Tiger Leap財団が“⁠ProgeTiiger⁠”というプログラムを2012年9月に開始します。このプログラムではエストニアの小学校1年生から高校3年生までにプログラミングとWebとモバイルアプリケーションを学びます。 このプログラムではソフトウェアの利用者ではなくソフトウェアの開発者になるための教育を目指すようです。当初はパイロット校で実施し、その後すべての公立学校も参加できるようになるとのことです。Skypeを開発したプログラマがエストニア人だったことで有名ですが、今後はさらにさまざまな開発者を育てる社会になるのかもしれません。 URL:http://ubuntulife.net/computer-programming-for-all-estoni

    エストニアのすべての学生がプログラミングを学ぶようになる | gihyo.jp
    ishiduca
    ishiduca 2012/10/29
  • 第3回 Moose::Role:役割単位のクラス分け | gihyo.jp

    多重継承しないほうがよい場合 前回は多重継承を利用してクラスを拡張するときにありがちな問題と、そのひとつの解決策を見てきましたが、クラスにいくつかのメソッドを追加したいだけであれば、むしろ継承を利用しないほうがふさわしい場合もあります。 たとえば「コウモリ」というクラスを実装するとき、「⁠乳を出す」というメソッドのために「ほ乳類」というクラスを、「⁠空を飛ぶ」というメソッドのために「鳥類」というクラスを継承するのは――たしかにそれで当座の問題は解決するかもしれませんが――違和感が残ります。 use strict; use warnings; use Test::More tests => 4; package Mammal; sub new { bless {}, shift; } sub produce_milk { print "I can produce milk.\n"; } pa

    第3回 Moose::Role:役割単位のクラス分け | gihyo.jp
  • 基礎から学ぶNode.js 記事一覧 | gihyo.jp

    第7回Node.jsアプリケーションをWindow Azureで動かす 高橋俊光 2012-11-27

    基礎から学ぶNode.js 記事一覧 | gihyo.jp
    ishiduca
    ishiduca 2012/08/17
    Herokでのデプロイとかある
  • 第1回 Hackability vs. Hackiness | gihyo.jp

    今回からしばらく「Comparators」と題した読み物を書かせてもらうことになりました。よく似た、あるいは相反する2つのアイデアを見比べたら何かが見えてこないか。そんなもくろみで書きたいと思っています。 今回のComparator(比較演算子)はこの2つ、HackabilityとHackinessです(図1⁠)⁠。どちらも耳慣れない言葉かもしれません。 図1 今回のComparator Hackability Hackabilityとは、ソフトウェアやシステムの性質、その対象が「ハックできること」や「ハックしやすいこと」を意味します。ハックと言ってもセキュリティホールを攻撃するほうではなく、コードを書いて遊ぶほうです。 「あの会社から出てきた新しいサービス、スクリーンキャストを見たよ。デザインはカッコいいね。けっこう遊べそう?」「⁠いやー、SDKどころかAPIもないからHackabili

    第1回 Hackability vs. Hackiness | gihyo.jp
    ishiduca
    ishiduca 2012/07/05
  • Perl Advent Calendar Japan 2011 Casual Track | Gihyo Digital Publishing … 技術評論社の電子書籍

    Perl Advent Calendar Japan 2011 Casual Track 著者 Perl Advent Calendar Japan 2011 Casual Track 参加有志 著 発売日 2012年3月5日 更新日 2012年3月5日

    Perl Advent Calendar Japan 2011 Casual Track | Gihyo Digital Publishing … 技術評論社の電子書籍
    ishiduca
    ishiduca 2012/03/07