タグ

ブックマーク / int128.hatenablog.com (15)

  • REST APIの例外設計 - GeekFactory

    REST APIを設計する場合に、エラーをどのステータスコードで返却するか議論になることがあります。例えば、以下のような場合が挙げられます。 キー指定のリクエストでDBにデータがない場合(例: GET /books/1 ) 一覧のリクエストでDBにデータがない場合(例: GET /books ) 必須項目がない、型が合わないといった場合(例: GET /books/find?count=bar ) ビジネスルールに違反する場合(例: POST /purchase ) 実行時エラー(例: NullPointerException ) クライアントが適切にエラーを処理できるように、レスポンスにエラー原因を入れることが一般的です。では、ステータスコードは何がいいのでしょうか。HTTPのステータスコードはRFCで定義されているし、RESTの考え方はWebや書籍にまとまっていますが、あくまでも考え方

    REST APIの例外設計 - GeekFactory
  • dnsmasqで始めるプライベートDNSサーバ - GeekFactory

    ローカルネットワークのホスト名とIPアドレスの対応はDNSサーバで管理すると便利です。IPアドレスを覚えたりhostsをメンテナンスするのは大変です。でもbindって難しそうだし、メンテナンスに手間がかかるし、という方にはdnsmasqがおすすめです。 dnsmasqは軽量なDNSサーバとDHCPサーバです。/etc/hostsを管理する延長でDNSサーバを管理できます。この記事ではDNSサーバに焦点を当てて説明します。 ローカルネットワークにDNSを立てる まず、以下の場合を考えてみます。 ホスト名とIPアドレスの対応を一元管理したい。 ローカルネットワークのホストには xxx.laputa.example.com を付与する。 FQDNでなくてもアクセス可能にしたい。 例えば、192.168.2.3 が muska.laputa.example.com という名前だとすると、 ping

    dnsmasqで始めるプライベートDNSサーバ - GeekFactory
  • 受託開発のコスト意識 - GeekFactory

    システム開発では、開発を担当する会社と運用を担当する会社は異なることが多く、場合によってはユーザ企業内でも部門が違ったりします。一般に、開発コストをケチると運用コストは増加する傾向にあります。例えば、リファクタリングによりソースコードの保守性を高めると開発コストはかさみますが、保守コストは下がります(下がることが期待される)。冗長化により耐障害性を高めると運用コストは下がりますが、構築コストはかさみます。 保証すべきことを明文化したものが要件定義書やSLAですが、どこまでリファクタリングすればよいか、どこまで冗長化すればよいかといった微妙なさじ加減は、最後は現場の判断になっていると思います。エンジニアはここまでやるべきという心を持って仕事しているところはいつも感心します。日人は真面目なのでしょうね。 ところが、プロジェクト炎上したり工数削減圧力が高くなったりすると、現場の判断はすぐに逆

    受託開発のコスト意識 - GeekFactory
    ktakeda47
    ktakeda47 2010/06/01
    最後の一言だけ、、、なんか時代逆行的な。 "受託開発のコスト意識"
  • OpenID認証によるシングルサインオン - GeekFactory

    App Engine 1.3.4でOpenID認証に対応しました。調べてみると意外と普通にシングルサインオンできたので、使い方と仕組みを説明します。 まず、OpenID認証を要求するURLパターンをweb.xmlに書きます。 <security-constraint> <web-resource-collection> <web-resource-name>Authentication required url</web-resource-name> <url-pattern>/user/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>*</role-name> </auth-constraint> </security-constraint> 例えば http://xxx.appspot.co

    OpenID認証によるシングルサインオン - GeekFactory
    ktakeda47
    ktakeda47 2010/05/26
    "OpenID認証によるシングルサインオン"
  • 携帯からのアクセスをリダイレクトする - GeekFactory

    User-Agentに応じてコンテンツの内容を変えるにはmod_rewriteが便利です。ただし、書き方を気を付けないと可読性が低くメンテしにくい設定になってしまいます。 普通に書くとこんな感じです。User-Agentパターンは実際はかなりあります。 RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} SoftBank [OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [OR] RewriteCond %{HTTP_USER_AGENT} KDDI RewriteRule ^.*$ http://example.com/m/ [R,L] ここで、リダイレクトはトップページだけに限定してみます。最近はテレビにもWebブラウザが搭載されていますので、テレビ

    携帯からのアクセスをリダイレクトする - GeekFactory
    ktakeda47
    ktakeda47 2010/04/22
    "携帯からのアクセスをリダイレクトする"
  • OpenSocial OAuth Filter バージョン0.7をリリースしました - GeekFactory

    OpenSocialアプリの開発に役立つライブラリです。バージョン0.7ではパラメータチェックを一部省略できるようになり、柔軟性が向上しました。 詳しくはこちらから。 http://code.google.com/p/opensocial-oauth-filter/ 気付いたら1ヶ月もブログを書いていませんでした。デスマーチな日々が続いております。ごきげんよう。

    ktakeda47
    ktakeda47 2010/04/05
    「・・・OpenSocialアプリの開発に役立つライブラリ・・・」
  • 2009年に得た10のこと - GeekFactory

    仕事とプライベートで得たことを挙げていきます。頑張って10個書くよ。 チームのパフォーマンスを左右するたった1つのこと それはモチベーションです。ゴールを示して、それを達成するメリットを共有すべき。進捗率と工数だけでは、チームの状態は分かりません。まあプロジェクト管理に必要なのは、どれぐらいの費用を使って、どれぐらいの価値を生み出したか、だけなんですけどね。 生産性とモチベーションは深い関係があると思います。 インフラの構築に必要なこと ラックや電源の設備設計があって、ストレージやサーバの共通設計があって、アプリに合わせて基盤を構築していく。 これは今年最大の収穫で、これからの人生に大きな影響を与えると思います。アプリとインフラの両方が分かることが重要で、どちらかに偏ってはいけません。 データセンタで風邪を引かないためにすべきたった1つのこと ジャケットを持っていくこと。後輩はマフラーと手

    2009年に得た10のこと - GeekFactory
    ktakeda47
    ktakeda47 2009/12/28
    普遍的で大切な事。「チームのパフォーマンスを左右するたった1つのこと・・・それはモチベーションです。ゴールを示して、それを達成するメリットを共有すべき。・・・」
  • ロードバランサの内側でApache Tomcatを使うときに気を付けること - GeekFactory

    多くのWebサービスでは、ロードバランサやApache httpdでアプリケーションサーバとの通信を中継しています。冗長化とアプリケーションレイヤの隠蔽が目的です。このような環境でApache Tomcatを使う場合、開発環境との違いに気を付ける必要があります。 例えば、下記の構成を考えます。 ロードバランサ(LB) → Webサーバ → APサーバ https://www.example.com/ http://10.0.0.15/ ajp://172.16.0.31/ まず最初に、LBより内側で発信元のIPアドレス(ソースIP)を取得できるよう設定すべきです。これがないと内側でログが取れません。大抵はデフォルトでアドレス変換しない設定になっていると思いますが、LBの内側IPアドレスに変換する設定もあるので注意が必要です。 Apache httpdのmod_proxy_ajpを使う場合、

    ロードバランサの内側でApache Tomcatを使うときに気を付けること - GeekFactory
  • Seleniumで繰り返し作業を効率化する - GeekFactory

    Seleniumといえばソフトウェア開発を連想する人が多いと思いますが、日常の繰り返し作業を効率化するツールとしても活用できます。毎週の会議室予約などのWebブラウザから単調な操作を繰り返す作業は、Seleniumでまとめて処理しましょう。 ここでは、リンク切れになったWebページをGoogleの検索結果から一括削除する方法をご紹介します。 (1)操作の記録 Googleの検索結果からリンクを削除するにはこのページでURLを申請します。申請が承認されるとリンクが削除されます。リンク先が404 Not Foundを返さない場合は承認が却下されます。たくさんのリンクを削除するには、下の画面でURLを入力する作業を繰り返さなければなりません。 まずは、1回の申請操作を記録しておきます。メニューの[ツール]→[Selenium IDE]でSeleniumを起動します。起動時には右上の赤いボタンが押

    Seleniumで繰り返し作業を効率化する - GeekFactory
  • 受託案件と企画案件の違いを感じる - GeekFactory

    受託開発の最たる問題は受け身であること。例えば、試験項目書は必ずWordで書かなきゃいけないとか、証跡はPowerPointにまとめて表紙を付けなきゃいけないとか、誰が決めたか不明なルールがたくさんあると思います。ルールがガチガチに決まった開発現場にずっといると、非効率なルールが当たり前に染みついてしまい、思考停止に陥る危険性があります。 お客様が作れといったから作りました。 という思考停止は危ない。 企画案件は自分らが意志決定していく必要があります。自分らが投資をするので、どこまで設計書を作るとか、リファクタリングをするかといったことも経営判断の1つになります。文字色を少し変えるだけで売上が変わる可能性もあるのです。 日のSI業界が受け身の姿勢に染まっているのは問題ではないでしょうか。

    受託案件と企画案件の違いを感じる - GeekFactory
    ktakeda47
    ktakeda47 2009/05/18
    「・・・お客様が作れといったから作りました。 という思考停止は危ない。・・・」
  • アプリケーションとDBの分離による変更コスト - GeekFactory

    私は、 プログラムを理解するのに必要なことはソース中に書け(コンパイラのチェックも通るし)。中でも重要なことはできるだけ一箇所に集中して書け。 よって、コメントは最後の武器だ。 ましてプログラムをドキュメントで説明するのは敗北宣言だ。 よって、データ型やテーブル定義を見れば、プログラム全体が理解できるようにすべきだ。 型なし言語逝ってよし。 ぐらいに思っている人間なので、これには賛成しかねます。 http://d.hatena.ne.jp/kmaebashi/20090430/p1 正しく伝わっていないので補足します。上記の5点は激しく同意です。オブジェクト指向分析の一歩がインスタンスの抽出であるように、ソースコードの解析もデータ構造の把握から始めるのが一番だと思っています。 RDBの一番の問題は、アプリケーションとDBの両者でデータ構造を定義していて変更コストが高いところじゃないかなぁ。

    アプリケーションとDBの分離による変更コスト - GeekFactory
    ktakeda47
    ktakeda47 2009/05/01
    「・・・RDBの一番の問題は、アプリケーションとDBの両者でデータ構造を定義していて変更コストが高いところじゃないかなぁ。アプリケーションコードとSQLが分離されているのでリファクタリングも手間がかかります*1。
  • 豚肉のにんにく焼き - GeekFactory

    しょうが焼きもいいですが、にんにく焼きを作ったら美味しかったのでメモ。焦げ醤油とにんにくの風味が絶妙でした。 材料(1〜2人分) 材料 数量 豚肉(薄切り) 200gぐらい にんにく 1片 たまねぎ 1/2玉 キャベツ 1/4玉の半分ぐらい オリーブオイル 適量 醤油 適量 料理酒 適量 料理酒は日酒でもよいと思います。油がはねるので、フタ付きのフライパンを用意してください。 作り方 まず豚肉を焼きます。残った油で野菜を炒めると美味しいです。 準備 にんにくの半分をみじん切りにしておきます。残り半分は薄くスライスします。こうすると、にんにくの風味を最大限に引き出しつつ、スライス揚げのカリッとした感触を楽しめます。 たまねぎは適当な大きさに切っておきます。 キャベツは刃を入れないほうが美味しいです。 豚肉 フライパンを中火にして、オリーブオイルを引きます。 醤油、料理酒、にんにくを入れてち

    豚肉のにんにく焼き - GeekFactory
  • 公開鍵暗号が生まれるまで - GeekFactory

    他人に分からないように文書をやり取りしようとする試みは遠く昔から行われてきました。アルファベットをずらしたり、乱数表を使ったり、難しい計算式を使ったりといったように、暗号を作る方法をどんどん複雑にして進化してきました。 ただ、やり方がいくら複雑になっても、鍵がバレたら暗号は解読されてしまいます。互いに同じ鍵を使わずにやり取りする方法がないか、世界中の研究者が競い合っていました。 1976年にDiffie, Hellmanの2人が公開鍵暗号方式を発表しました*1。これは概念であったため、具体的な暗号化手順は示されていませんでした。そこで、1978年にRivest, Shamir, AdlemanがRSA暗号方式を発表しました*2。基原理は割り算の余りが分かれば理解できます。 それから時が流れ、1994年にNetscape CommunicationsがSSLを発表します。Web上で安全な通

    公開鍵暗号が生まれるまで - GeekFactory
  • Apache TomcatとHTTPクッキーにまつわる騒動 - GeekFactory

    Apache Tomcat 5.5.26(6.0.16も同じ)で、HTTPクッキーの取り扱いについて大きな仕様変更が行われました。ここでは仕様変更の内容と影響範囲を考察します。 HTTPクッキー 簡単に復習しましょう。WebブラウザがWebサーバから以下のHTTPヘッダを受信したとき、Webブラウザは test というクッキーを記憶します。 Set-Cookie: test=nullpo; Expires=Wed, 08-Oct-2008 14:03:16 GMT; Path=/クッキーは NAME=VALUE という形で表現されます。連想配列と同じ。 NAME VALUE test nullpo 一度クッキーを受信すると、ブラウザは当該URLにアクセスする度に、以下のHTTPヘッダを送信するようになります。 Cookie: test=nullpoこのように、クッキーはWebサーバがブラウ

    Apache TomcatとHTTPクッキーにまつわる騒動 - GeekFactory
  • SAStruts+Maven2+Subversionで開発を始めるまでの10ステップ - GeekFactory

    まずEclipse, Apache Tomcat, Subversiveを入れましょう。 sa-struts-tutorialを入手する プロジェクトのお手を入手します。zipを解凍したら、Eclipseにプロジェクトをインポートします。 Super Agile Strutsチュートリアル sa-struts-tutorial-1.0.x.zip http://sastruts.seasar.org/download.html m2eclipse Plugin EclipseからMaven2を使うためのプラグインを入れます。 下記のアップデートサイトからプラグインをダウンロードします。 http://m2eclipse.codehaus.org/update/ http://www.atmarkit.co.jp/fjava/rensai3/eclipseplgn11/eclipseplg

    SAStruts+Maven2+Subversionで開発を始めるまでの10ステップ - GeekFactory
  • 1