第4章人と人をつなぐカンファレンスを支える―ネットワーク構築のウラガワ 東松裕道,森久和昭 2016-12-16 第3章構築・運用時のトラブルリスクを下げるクラウド活用―機材搬入~配線~撤去までを配慮するからわかること 高橋祐也,岡田雅之 2016-12-15
![CONBUの無線LAN構築術―カンファレンスネットワークの作り方 記事一覧 | gihyo.jp](https://cdn-ak-scissors.b.st-hatena.com/image/square/7241c583676d54fc052c4388a6edd25e4c7f280b/height=288;version=1;width=512/https%3A%2F%2Fgihyo.jp%2Fassets%2Fimages%2Fgihyojp-ogp.png)
新年明けましておめでとうございます。zigorouです。 今回も昨年の特集に引き続き、2016年を振り返りながら2017年のAPIに関わる技術動向などを予想していきます。 サーバーレスとフルマネージドサービスの台頭 これまではオンプレミスの環境やAmazon Elastic Compute Cloud(EC2)を代表とする仮想サーバーやECS(EC2 Container Service)など、サービスの実行環境は少なからずインフラによる運用を意識した構成にすることがほとんどでした。しかし、AWS API Gateway+AWS Lambdaの組み合わせによるFunctions as a Service(FaaS)や、Google App EngineによるPlatform as a Service(PaaS)のようなフルマネージドサービスを使ったサーバーレスアーキテクチャが、現実のプロダク
MySQL道普請便り 第10回yum, rpmインストールにおけるMySQL 5.6とMySQL 5.7の違い 第8回 MySQLのバージョン体系を知るの中で、yumでインストールしたMySQL 5.6をMySQL 5.7にアップグレードしました。今回はアップグレードではなく、MySQL 5.7を新規にyumでインストールする場合のMySQL 5.6との違いを説明したいと思います。 MySQLのインストール方法はいくつかありますが、yumリポジトリーを利用したインストールが好んで選ばれるケースは、おそらくChefのレシピやDockerfileに利用する際ではないでしょうか。筆者はサンドボックス環境にはDockerをよく利用していますが、イメージを作成する際には原則MySQL公式のyumリポジトリーを使うようにしています。 yumリポジトリーを使用したインストール MySQL開発元のOrac
前回は、推薦システムの分類とその効果について紹介しました。今回は、前回紹介した推薦システムのうち、内容ベースフィルタリングについて説明します。 内容ベースフィルタリングのタスク もし友人に本を勧める場合、その友人の好きな作家、ジャンル、価格帯などを考え、それにマッチした本を勧めると思います。このように、ユーザの嗜好プロファイルとアイテムの特徴プロファイルを考え、それらがマッチするアイテムをユーザに推薦する手法が、内容ベースフィルタリングです。内容ベースフィルタリングには、ユーザとアイテムのプロファイルを構築するというタスクと、それらをマッチングするというタスクがあります。 プロファイルの作成 アイテムのプロファイルの構築方法として、上に述べたように作家やジャンルなどのメタデータを利用することが考えられます。上の例では本でしたが、映画を推薦する場合では出演俳優や監督、ジャンル、洋画か邦画かな
Webデザイナーなら知っておくべき サーバ知識相談室 第3回SSL証明書ビギナー歓迎! httpsから始まるURLの役割と仕組みを0から学ぼう 昨年12月に話題になっていた、次のニュースを覚えていますか? 痛いニュース(ノ∀`) : Firefoxでハローワークのサイトを開くと警告「安全性が確認できません」 - ライブドアブログ 要約すると、ハローワークのサイトをFirefoxで開くと「接続の安全性が確認できない」という警告画面が出て、サイトが表示されない事態になっていたというニュースです。さてここで「うわー、ハローワークいけてないな」と思われた方に質問です。このニュースが言っていることがきちんと分かりましたか? 「ハローワークが何かやらかしたようだ」ということは分かると思います。そして、ニュース内で「証明書」という単語が何回か出てくるため、もしかしたらSSL証明書がらみで何か失敗した
Happy Testing Perl 第4回Test::Perl::Critic, Test::Pod, Test::Pod::Coverage, Test::Exception, Test::Warn, Devel::Coverの紹介 モバイルファクトリーの小林です。今回は今までに紹介しきれなかったPerlのTestingモジュールで良く利用されるものをいくつか紹介したいと思います。 Test::Perl::Critic このモジュールはテスト対象のコードがPBPに準拠しているかどうかをテストしてくれるモジュールです。 PBPとはDamian Conway氏の提唱するPerl Best PracticesというPerlのコードを書く際のスタイルです。 http://www.oreilly.co.jp/books/4873113008/ Perl Best Practicesについての詳細
大量にあるサーバへのアクセスを効率的に扱う Mobage APIでは、接続するDBサーバやmemcachedサーバなどが大量にあります。サーバが増えても、アプリケーションの変更は最低限にしたいものです。ここでは、複数のサーバへのアクセスを簡単に記述する方法を紹介します。 DBへのアクセスを隠蔽する DBは一般的な、マスタ/スレーブ構成を採用しています。INSERT/UPDATE/DELETEのような更新系のクエリはマスタへ、SELECTなどの参照系のクエリはスレーブへいくようにしています。また、Sharding[11]をしているDBの系統もあります。 このように大量にあるDBへのアクセスを簡単に行うために、Mobage APIではDeNAの有澤高介さんが開発したDBIx::DBHResolver(現在のメンテナは同じくDeNAの山口徹さん)を利用してDBへのアクセス情報を隠蔽(いんぺい)し
はじめに 第2回は、開発環境の構築をご紹介します。 iPhoneのそれが面倒なく揃うことを考えると、Androidは手間をかける必要があります。しかし、手順に沿えば難しいところはないので、根気よく進めてください。 筆者は、Mac OS XでAndroidのアプリを開発しています。ポイントでは、Windows向けの解説も追加していますが、多くはMac OS X向けであることをご了承ください。 Android SDKのインストール まずは、Android SDKをダウンロードします。Android developersのページのSDKのタブをクリックすると、ダウンロードページにアクセスできます。 図1 Android開発者向けのサイト。Android SDKダウンロードページ。 原稿執筆時点(2010年3月29日)ではRevision 5が最新です。ダウンロードページでは、Windows版、M
ネットワークプログラムとSIGPIPE 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。これは多くの場合、SIGPIPEの処理を忘れていることが原因です。SIGPIPEとは、切断されたネットワークソケットなどにデータを書き込もうとした際に送出されるUNIXシグナルです。特に設定しない限り、プロセスはSIGPIPEを受け取ると強制終了されます。そのため、通信が突然切断される可能性のあるTCPサーバにおいては、SIGPIPEを無視するよう設定する必要があります。 # デフォルトの動作(SIGPIPEの場合はプロセスの終了)に設定 $SIG{PIPE} = 'DEFAULT'; # SIGPIPEを無視するよう設定 $SIG{PIPE} = 'IGNORE'; # SIGPIPEを受信した際に実行するサブルーチンリファレンスを # 設定 $SIG{PI
前回は形態素解析を使う検索エンジンのしくみについて説明しました。今回は、FINDSPOTで使用しているN-gramという検索エンジンのしくみについて説明します。 N-gramによる見出し語の切り出し 前回は、形態素解析による検索エンジンでは、検索可能な最小単位が分かち書きの切り分け単位となる点を説明しました。 一方、N-gramを使った検索エンジンでは、単純に文字の並びを見出し語としてインデックスを作成します。1文字を元にインデックスを作成する方法をユニグラム、2文字の並びを元にインデックスを作成する方法をバイグラム、3文字の並びを元にインデックスを作成する方法をトリグラムと呼んでいます。 1文字:ユニグラム 2文字:バイグラム 3文字:トリグラム N-gramによる見出し語の切り出しは、形態素解析のための文法解析を伴わないため、特定の自然言語に依存しないという特徴があります。 FINDS
Tritonn、Ludia、そしてSennaとは…… 昨今のWeb 2.0と呼ばれるようなWebシステムでは、一般的に大量のコンテンツデータを内部に保有しているのではないでしょうか。大量のコンテンツから目的のコンテンツをユーザが選び取る手段の一つとして全文検索が挙げられます。全文検索とは、検索対象コンテンツの中身すべてに対して検索を行うことを指します。たとえば、タグやタイトルを対象にした検索だけでは、目的のコンテンツを発見できないような場合に有効な検索です。 データベースに保持された大量のデータを簡単に全文検索したい、という場合も多いことでしょう。本稿では、それを実現にする全文検索システムとして、次の2つを取り上げて紹介します。 Tritonn Ludia これらはそれぞれ、Tritonnは「MySQL」、Ludiaは「PostgreSQL」という、Webシステムを開発する上で人気の高
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはJapanizeやText::MicroTemplateなどで有名な奥一穂さんで、テーマはUNIXプログラミングです。 はじめに 「正しいプログラム」を書くために必要な知識とはなんでしょうか。テストが正しく実行されることは、正しいプログラムであるための必要条件に過ぎません。プログラミングにおいてはプログラミング言語だけでなく、OSの動作やデータベース、ネットワークプロトコルなど、さまざまな知識が必要になります。 PerlはもともとUNIX系のOS(LinuxやFreeBSD、Mac OS XなどのOSを本稿では以下UNIXと総称します)の上で処理を行うためのスクリプト言語として開発され、今日でもPerlプログラムの多くはUNIX上で実行されています。しかし、「Perlでプログラミング」と言った場合はともすれば
今回から始まった「ゼロから学ぶOAuth」。全4回の特集にて、これからのWebサービスを開発する上で不可欠な技術「OAuth」について取り上げます。初回は、OAuthの概念について取り上げます。 はじめに はじめまして、iKnow!改めsmart.fmの真武です。現在smart.fmでは、OAuthやOpenID、OpenSocial、Semantic WebやActivity Streamなどといった新しい技術の導入を積極的に行いサイトを活性化させるとともに、smart.fm APIを通じて我々の技術を外部のデベロッパの方々にも提供しています。 smart.fmは日本最大のOpenID Relying Partyであるだけでなく、国内では数少ないOAuth Consumer(後述)およびOAuth Service Provider(後述)を兼ねるサービスとなっています。こういった背景
株式会社ミクシィの長野です。第2回、第3回と前坂がmemcachedの内部について紹介しました。今回は内部構造から離れて、memcachedの分散についての紹介をいたします。 memcachedの分散 連載の1回目に紹介しましたが、memcachedは「分散」キャッシュサーバと言われていますが、サーバ側には「分散」の機能は備わっていません。サーバ側には当連載の第2回、第3回で前坂が紹介したメモリストレージの機能のみが組み込まれており、非常にシンプルな実装となっています。では、memcachedの分散はどのように実現しているのかと言うと、すべてクライアントライブラリによって実現されます。この分散方法はmemcachedの大きな特徴です。 memcachedの分散とは ここまで数度「分散」という言葉を用いてきましたが、あまり詳しく触れてきませんでした。ここでは各クライアントの実装に共通する大ま
DBIC以降の選択肢 今回はデータベース話の締めくくりとして、DBIx::Class以降に登場したいくつかの選択肢についてざっくりまとめておきます。これらはいずれも若く、DBICに比べてユーザ数も少ないためドキュメントなどの整備が遅れている部分もありますが、今回とりあげるものの多くは日本人がつくっているものですから、英語圏で開発が進められているものより疑問や要望は送りやすいはず。気になることがあったらぜひそれぞれの作者氏に伝えていただければと思います。 DBIx::Skinny nekokakこと小林篤氏のDBIx::Skinnyは、今回紹介するもののなかではもっとも実績豊富なものといってよいでしょう。開発の動機については氏のブログによくまとまっていますが、標準で用意されているCRUDメソッドを使うときだけでなく、速度を稼ぐために生のSQLを書いたときでもinflateなどの補助機能を使え
Cから継承したAPI プログラマにとって、ログの解析や作成などに含まれる日付や時刻の操作は切っても切り離せない分野のひとつです。もちろんPerlにも日付や時刻を操作するための関数は組み込まれています。 ただし、Cから継承してきたlocaltime()やgmtime()の返り値は、お世辞にもわかりやすいとはいえません。リストコンテキストで呼び出せば年月日、時分秒などの値を取り出せるとはいえ、単一の配列で受け取ると、個々の要素を使うときに直感的ではなくなりますし、明示的な名前をつけたスカラー変数を並べて受け取るのはいかにも冗長です。 use strict; use warnings; # 短いけれど非直感的 my @tm = localtime(); $tm[5] += 1900; $tm[4]++; printf "%04d-%02d-%02d %02d:%02d:%02d\n", reve
AnyEventベースのモジュール 前回まで紹介したのはAnyEventの基本APIのみです。CPANにはこれらをベースにさらに複雑な機能を実装した様々なモジュールがあり、それらをうまく組み合わせて簡単に高機能なイベント駆動プログラムを構築することができます。代表的なものとしては、以下のようなモジュールが登録されています。 非同期でHTTP通信を行うAnyEvent::HTTP 低レイヤのI/Oを簡単にするAnyEvent::Handle ソケット接続を行うAnyEvent::Socket データベース処理を非同期で行うAnyEvent::DBI CouchDBと非同期に通信を行うAnyEvent::CouchDB PSGI/Plackを非同期エンジンで動かすTwiggy これらを組み合わせて使うことにより、ブラウザと非同期に通信しつつ裏ではデータベースおよびイントラネットのほかのREST
Perlとdbm いまでは省みられることも少なくなりましたが、Perlには1989年にリリースされたバージョン3.0以降、dbmと呼ばれるシンプルなデータベースにアクセスする機構が標準で組み込まれています。このdbmは、いわゆるリレーショナルデータベースとは違ってキーと値の組み合わせをディスクに保存できるだけのものですが、ハッシュ(当時はまだ連想配列と呼んでいました)と結びつけることでタブ区切りファイルなどを読んでいくより高速に検索ができたため、ユーザ環境に永続的なデータを保存する手段のひとつとして重宝されていました。Perl 3/4の時代にはdbmopenというコマンドが使われていましたが、この機構はPerl 5になって一新され、いまではより汎用的なtieというコマンドを使うことになっています。この仲間としては古くからあるBerkeley DBやGDBMなどのほか、最近では平林幹雄氏のT
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く