タグ

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

  • Google Picasaアルバムを撮影日ごとに整理してくれるバッチ - GeekFactory

    Google Picasaは写真を保存しておくのに便利です。年間$5で20GBのスペースが手に入るのも魅力的です。 Picasaでは、特定のメールアドレスに写真を添付して送ると「ドロップボックス」というアルバムに入るようになっています。この「ドロップボックス」の写真を撮影日ごとに整理するバッチを書いてみました。 Google App Engineで運用する前提でコードを書いていますが、少しの手直しで他のプラットフォームでも動くはずです。 まず、必要なライブラリを入手し、プロジェクトのクラスパスに配置します。 gdata-java-client gdata-client-1.0.jar gdata-client-meta-1.0.jar gdata-core-1.0.jar gdata-media-1.0.jar gdata-photos-2.0.jar gdata-photos-meta-

    Google Picasaアルバムを撮影日ごとに整理してくれるバッチ - GeekFactory
  • Task Queue用のジョブスケジューラを設計する - GeekFactory

    App Engineで日次バッチを動かす場合はCronかTask Queueを選択することになります。重複起動したくない、ジョブ失敗時はリトライしたい*1という要件があるならTask Queueを使います。Cronの場合は WEB-INF/cron.xml を編集するだけですが、Task Queueの場合はジョブスケジューラを自分で書かなければなりません。 追記: Cronの場合はスケジュール指定でsynchronizedキーワードを付けると重複起動が許容されます。@bluerabbit777jpさん、ありがとうございます。 ここでは、App Engineに限らず汎用的に使えるジョブスケジューラを書いてみます。日次ジョブスケジューラのアルゴリズムを考えてみましょう。例えば、午前3時にジョブを実行したい場合、 現在日時をTとする。Tは年月日時分秒ミリ秒から成る。 Tの時、分、秒、ミリ秒を0に

    Task Queue用のジョブスケジューラを設計する - GeekFactory
  • Selenium Generator - GeekFactory

    以前に作ったものをリメイクしてみました。Selenium IDEで作成したシナリオを繰り返し、バリエーションテストのテストケースを生成するツールです。 Selenium Generator - http://lab.hidetake.org/selenium-table/ 3年前に書いたコードはprototype.jsを利用していましたが、今回はjQueryに移行しました。jQueryベースの方が読みやすい気がします。これがまた3年経ったら技術的負債に化けてるかもw

    Selenium Generator - GeekFactory
    imai78
    imai78 2011/01/31
    ほほう
  • 受託開発が抱える本質的な非効率性に関する考察 - GeekFactory

    受託開発が抱える質的な非効率性について考えました。ここで挙げたことはどの開発プロセスでも発生しうる問題と思います。 外注のオーバーヘッド 契約に係るコスト。 限られた場所や時間で質疑応答を行うことによる損失 情報の伝達コストは「機会」により決まる。拠点の違い、限られた時間、組織の壁により機会は減り、伝達コストは高くなる。 打合せや質問票を中心に質疑応答を行うため、情報の伝達コストが高くなる。 発注側の縦割り部門、受託側の下請け構造により、情報の伝達コストが高くなる。 決定に要する時間が長くなる。 開発者が業務プロセスを学習するコスト 前提として、どんな要件でも学習コストは必ず発生する。 過去に学習した知識を再利用できるとは限らない。受託側に業務スペシャリストが存在するとは限らない。 発注側から業務に関する説明を受ける機会(=教育)が十分にないため、極めて非効率な学習にならざるを得ない。

    受託開発が抱える本質的な非効率性に関する考察 - GeekFactory
    imai78
    imai78 2011/01/11
    非効率な上にその原因の所在を誰も認めたがらない、みたいな風土があるところが辛いところだなって思う。
  • OpenSSLの証明書作成スクリプト(CA.sh)を理解する - GeekFactory

    サーバ証明書はOpenSSLに付属のスクリプトで簡単に作れますが、中で何をやってるのか分かりません。ここではopensslのコマンドを調べながら、一つ一つのステップを調べていきます。 新しい認証局を作る サーバ側のCSRを生成する 認証局で署名する /etc/ssl/openssl.cnfは適当に設定しておいてください。ファイルパスが合っていればOKかと思います。 新しい認証局を作る スクリプトだと./CA.sh -newcaに相当する手順です。 認証局のファイルは/etc/ssl/CAに入れるものとします。 mkdir /etc/ssl/CA chmod 700 /etc/ssl/CA cd /etc/ssl/CA 認証局の秘密鍵を生成します。ここでは2048bitを指定しています。 openssl genrsa -out ca.key 2048 CSRを作成します。 openssl r

    OpenSSLの証明書作成スクリプト(CA.sh)を理解する - GeekFactory
    imai78
    imai78 2010/06/22
    [open ssl[tips][tutorial][ssl]
  • 自分で手を動かさずに方式を決めること - GeekFactory

    ここ数日、自宅サーバの仮想化方式を決めるためにkqemu, Xen, Linux-VServer, jailやらを試していました。Webで評価記事がたくさんありますが、正直なところどれも実際に使ってみないとわからんなと思います。 自分で手を動かさずに方式を決められるか? サービスを作っていく上でどの技術(方式)を採用するか分かれ道があります。早い話が、Windows ServerにするかLinuxにするか、Javaにするか.NETにするか。方式を決めるには、必要な条件を洗い出し、どれがどう優れているかを評価します。 グラスと煎茶碗 ここに面白い喩えがあります。 方式としてどちらが優れているのかを、わかっていない人に説明するのって大変だよね。説明しないことはないけど手間はかかるし、そもそもなんでそんな上司が以下略。 例えば、グラスと煎茶碗、どちらも飲み物を給仕することは出来る。では、コーラを

    自分で手を動かさずに方式を決めること - GeekFactory
    imai78
    imai78 2010/06/22
    「SEの主要スキル=はったり」と言われる所以。全部は試せない。どれを試しておくのが良いかも予測が難しい。でも勉強しないと。ってのは確かに疲弊を生むね。。。
  • SIにおけるソフトウェア開発の占める割合は小さいのか - GeekFactory

    元請けの視点では、SIの多くを顧客調整が占めていると思います。次に進捗管理。次に資料レビュー。で、ずっと先に、設計書を書いたりコードを書いたり試験したりというソフトウェア開発がある。相対的な割合は小さいと思います。 何の割合かというとプロジェクトの成功を左右する要因です。原価ではない。 近視眼的な見方をすればという注釈が付きますが。要件定義を間違えれば成果物のソフトウェアが間違っているのも確かですが、完璧な要件定義手法が存在しないことも確かです。お客様に見せてみたら追加注文がいくつもきたというのは身近に起こっていることです。 id:kensir0u >外注化が必要な理由 もっと端的に、結局はアウトソーシングの原則で 外注化は業務上必要とする資源やサービスを外部から調達するということです。 つまり、製造能力が足りないならプログラマーを外注、マネジメント能力が足りないならマネージャーを外注とい

    SIにおけるソフトウェア開発の占める割合は小さいのか - GeekFactory
    imai78
    imai78 2010/06/22
    SIerの本職は「ソフトウェア開発」ではない、って事だよね。
  • 目立たないけど大事な仕事をしている人もいる - GeekFactory

    長くなったけど、会社で偉いのって、学歴でも勤続年数でも年齢でもないんだわ。「会社に直接的、間接的な利益をどれだけもたらしているか」というのが来重視されるべきポイントなわけで。新卒の場合、利益上げられないうちは変な態度取ってノウハウ教えてもらえなくて後で途方に暮れるよりも、敬語使ったりして先輩からかわいがってもらってノウハウ教えてもらって早く金が取れるようにしたほうがよっぽど合理的かな。 http://d.hatena.ne.jp/muffdiving/20081215/1229322617 上のいい話から脱線しますが、ふと気になったこと。 会社に利益をどれだけもたらしているかを比較するには同じ仕事で比べることが必須条件です。違う種類の仕事で比べるにはフェアな尺度がありません。 皆さんは、目立たない仕事をしている人を見下すような発言をしていませんか。違う仕事をしている人がいて初めて自分の仕

    目立たないけど大事な仕事をしている人もいる - GeekFactory
    imai78
    imai78 2010/06/22
    多くの人が、主役を引き立たせる為のお仕事、をバカにしすぎ。
  • ソフトウェア工業化と職人化が待ち受ける世界 - GeekFactory

    生産性が 30 倍違うのであれば、バカプログラマー 30 人を雇うより、スーパープログラマー 1 人にサポートスタッフ 5 人つけたほうが安くていいものができるだろう。Ruby の開発でいえば、まつもとさんやささだ先生にサポートスタッフ (あるいは秘書とか内弟子とか) をつけて、極力彼らが雑用をせずに Ruby 開発に専念できるような環境を整えるべきではなかったか。 http://d.hatena.ne.jp/kwatch/20090204/1233769288 基に立ち返って、ソフトウェア工学の目的とはなんだろう。それは「ソフトウェア開発が産業として安定成立する事」だろう。そこでこれを、大目的とする。 では、さらに考えて「産業として安定成立」するにはどうしたらいいだろうか。 大目的を成立させる為の、最低限の条件として考えられるのが、 ・条件1:成果物の品質安定 ・条件2:関連人材の安定

    ソフトウェア工業化と職人化が待ち受ける世界 - GeekFactory
    imai78
    imai78 2010/06/22
    工業化するには「成功例の抽象的なプロセスモデル化」が必須なんだろうな。
  • LDAPサーバのアクセス制御リスト(ACL)の書き方 - GeekFactory

    OpenLDAPではきめ細やかなアクセス制御を設定することが可能です。例えば、パスワード属性は公開せずに認証だけ許可したり、特定のユーザにのみエントリを公開するようにできます。 アクセス制御リストは /etc/openldap/slapd.conf に記述します。 アクセス制御ディレクティブの形式を次に示します。 access to <what> [ by <who> <access> [ <control> ] ]+エントリや属性の1セット( に指定)に対するアクセス権( に指定)を1人以上の要求者( に指定)に与えます。 http://www5f.biglobe.ne.jp/~inachi/openldap/man23/man5/slapd.access.5.html 例 dc=example,dc=org ou=group cn=users ou=user    ←一般ユーザ cn=

    LDAPサーバのアクセス制御リスト(ACL)の書き方 - GeekFactory
  • Seleniumで繰り返し作業を効率化する - GeekFactory

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

    Seleniumで繰り返し作業を効率化する - GeekFactory
  • インフラ寄りのお仕事のススメ - Geek Not Found

    SIerみんな大好きはてなブックマーク - ござ先輩ノートにサーバ構築のブクマが増えてきました。そろそろサーバ構築のエントリが出現するかもしれませんね!ふと、3月に書いたエントリを思い出しました。アプリケーション層のエンジニアが性能や信頼性の観点でシステムを俯瞰できると、今まで気づかなかった問題が見えてくると思います。Webサービスでもそれは変わらないと思います。どんなWebサービスを提供するにしても、プログラミング以外に知っておくべきことはあります。http://d.hatena.ne.jp/int128/20090314/1237005803逆もまたしかりです。アプリの存在を無視したインフラエンジニア当にタチが悪いです。彼らはアプリの実装が悪いと言ってすぐに仕様変更を言い出します。おっと、話が逸れた。インフラエンジニアはアプリケーションエンジニアに比べて圧倒的に有利な点があります。

  • 2009年に得た10のこと - GeekFactory

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

    2009年に得た10のこと - GeekFactory
  • サーブレットフィルタによる署名検証 - GeekFactory

    OpenSocialコンテナは外部サーバにリクエストを発行する機能があります。gadgets.io.makeRequest()を使ってリソースを取得したり、データを送信したりできます。 var xapp = {}; xapp.configuration = { endpoint: 'http://example.com/api'; }; xapp.query = function (resourceName, cb) { var params = {}; params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET; params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED; params[

    サーブレットフィルタによる署名検証 - GeekFactory
  • IT業界とSI業界の間にある深い溝 - GeekFactory

    正確にはIT業界の部分集合がSI業界である。IT業界については、エンジニアの未来サミットで見たid:hyoshiok氏の資料がとても良くまとまっていたと思う。 一般には非SI業界が「IT業界」と認識されている節がある。IT業界を語る中でSI業界と非SI業界が一緒に出ることはほとんどないように思う。SIと非SIの間には深い溝がある。 SIは作ってナンボの世界。受注制でいっぱぐれがない。SIが目指す方向は多くの凡人に簡単な仕事をさせてソフトウェアを作ることにある。プロセス改善のインセンティブと値切りの誘惑 - GeekFactoryでも書いたけど、品質のブレを抑える方向と単金を下げる方向に力が働く。その手段が標準化やオフショアである。 あまりにも内向きに仕事をしているのではないか。自分の作るシステムが顧客にどんな利益を生み出すか、考えたことのある人はどれぐらいいるだろう。それよりチープな人と

    IT業界とSI業界の間にある深い溝 - GeekFactory
  • 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
  • mixiアプリからのリクエストを検証するフィルタ - GeekFactory

    mixiアプリからのリクエストに対して署名検証を行うサーブレットフィルタを作りました。Apache Tomcatなどのサーブレットコンテナで使用できます。 ではサーブレット内で署名検証を行っていますが、このフィルタを使うとサーブレット内の実装が不要になります。 必要なもの 最新のバージョンは0.3です。 バージョン リリース日 ダウンロード コメント 0.1 2010/1/10 oauth-filter-0.1.jar 最初のリリース。 0.2 2010/1/10 oauth-filter-0.2.jar ValidationEventListenerの仕様を変更しました。 0.3 2010/1/16 oauth-filter-0.3.jar リバースプロキシ対応のValidationEventListenerを追加しました。 ServletRequestからURLを組み立てる際のバグを修

    mixiアプリからのリクエストを検証するフィルタ - GeekFactory
  • 他ライブラリに依存せずにXML設定ファイルを読み込む方法 - GeekFactory

    ライブラリをパッケージして配布する時、なるべく依存するjarを減らしたいことがあります。Mavenを使えば何ともないのですが、敷居を下げる意味では「1つのjarだけ入れれば動きます」が望ましいと思います。*1 Commons DigesterやJAXBを使うと、XML設定ファイルの読み込みが飛躍的に簡単になります。一方で、ライブラリを配布する時は同梱するか注意書きを加える必要があります。そこで、他ライブラリに依存せずJREだけでXMLを読み込む方法を考えてみました。 Java 5から標準になったXPathを使うと、XMLから任意のノードを簡単に取り出すことが可能です。XPathクラスをそのまま使うと記述量が増えるので、XPathをラップするクラスを用意します。 package org.hidetake.util.xml; import java.io.IOException; import

    他ライブラリに依存せずにXML設定ファイルを読み込む方法 - GeekFactory
  • 世間が不景気になったらSIerはどうなるか - GeekFactory

    不景気の波がSIerを直撃しています。世間より半年ぐらい遅れている気がします。回復するのも半年ずれるでしょう。 世間が不景気になったらSIerはどうなるか考えてみます。まずは売上の変化。 ユーザ企業からの受注高が減る。 稼働している社員が減る。 余剰人員が生まれる。 外注より直営を優先する。 パートナーの売上が減る。 次に、プロジェクトへの影響を考えてみます。 プロジェクトで使える費用が減る。 プロジェクトの人件費を削る。 一人当たりの仕事量が増える。 スポットの外注が増えて、一貫した仕事ができなくなる。 デスマ化する。 問題プロジェクトが発生する。 プロジェクト外で余剰人員をかき集める。 プロジェクトの人件費が増加するが、全社的には余剰人員の活用で相殺される。 まとめると、 一人当たりの仕事量が増える。 部門間の人材流動性が一時的に高まる。 直営社員は問題プロジェクトに投入される可能性が

    世間が不景気になったらSIerはどうなるか - GeekFactory
    imai78
    imai78 2010/06/21
    それでも会社を潰さないんだから大したもんだ。
  • アジャイル開発向け顧客チェックリスト - GeekFactory

    大企業, SIerただ僕が顧客ならば動くソフトウェアを確認しながらウチの業務プロセスにフィットするかを確かめながら進めたいと強く思うので、そのメリットを価値に変えるストーリーがあればいいと思うんだけど、自分たちの手でシステムを進化させる文化が根付いていない所には「なにそれ?おいしいの?」という響かない提案になると非常に思うので、やっぱ内製だろって思ってしまう今日この頃です。http://d.hatena.ne.jp/gothedistance/20100212/1265907956id:gothedistanceさんの釣り力には当に感嘆します。タイトルにアジャイル開発とか入れておきながら、結論は内製で締めています。読者を流行語でget()して自分の論説にforward()するとは、実に素晴らしいエンターテイメントです。と、無茶いってごめんなさい。アジャイル開発の質は顧客が主体性を持つこ