タグ

2015年6月11日のブックマーク (15件)

  • MapReduceは楽しい:巨大なデータセットのサンプリング | POSTD

    この記事はBloomReachの主席エンジニア、Chou-han Yangによるものです。 MapReduceの最大の利点は、非常に高い演算性能と巨大なストレージを瞬時に手に入れられることです。これは、子供が前から大好きだった遊びに、新しいおもちゃを加えられないか、と考えるようなものだと私は思います。長い間楽しんできた遊びに対して、新しい遊び方を思いついたとしたら、とても興奮しますよね。 このことから私は、シングルプロセスのプログラムを書く時によくやることを改めて思い出します。つまり、MapReduceフレームワークに合わせるにはプロセス全体を徹底的に調査しなければならないということです。特にHadoopは、スムーズに実行するために慎重な調整が必要となるからです。 この記事では、簡単な例を見てみましょう。サイズが不明の非常に大きなデータセットからn個の要素をサンプリングします。非MapRe

    MapReduceは楽しい:巨大なデータセットのサンプリング | POSTD
  • テスト駆動開発とは何か、それを気に入っているのは何故か、あなたも使うべきなのは何故か | POSTD

    ペースが速い現代のソフトウェア開発環境では、テスト駆動開発(TDD)という言葉をよく聞きます。その利点だけでなく欠点についてもソフトウェア開発コミュニティでよく議論されています。TDDについて、”自己嫌悪に陥って屈辱を味わっている者に対する非現実的で効果のない道徳教育のようなものだ”と言う人もいれば [1] 、”リファクタリングを使って迅速な設計を支援するただのツールだ”と言う人もいます [2] 。 「ダメなプログラマは全てに答えを持つが、優れたテスタは全てに疑問を持つ」 Gil Zilberfeld しかし、TDDは新たな手法というわけではありません。広く知られている最も古い文献は1957年に出版されたD.D. McCracken著の『Digital Computer Programming: The First General Introduction in Book Form, St

    テスト駆動開発とは何か、それを気に入っているのは何故か、あなたも使うべきなのは何故か | POSTD
  • ソフトウェア開発で得た教訓22箇条 | POSTD

    1. 小規模なものから徐々に拡張していく。 私は日頃、新たなシステムを作るにせよ既存のシステムに機能を追加するにせよ、必要な機能すら殆ど持たないようなとてもシンプルなバージョンを作るところから始めるようにしています。そこから当初予定していた機能まで、段階的にソリューションを拡張していきます。私は初めから細部にわたって計画をできたことはありませんが、代わりに開発を進めていく中で新しく見つけた情報をソリューションに役立たせます。 私はJohn Gallの、この言葉が好きです。 “複雑なシステムというのは、往々にしてシンプルなシステムから発展したものだ。” 2. 同時に複数のものを変えない。 開発中にテストが失敗したとき、あるいは機能がうまく動作しなかったとき、1つだけ変更すれば、問題発見が格段に容易になるでしょう。言い換えるなら、短いイテレーションを行いなさいということです。1つずつ変更を行い

    ソフトウェア開発で得た教訓22箇条 | POSTD
  • コードレビューのベストプラクティス | POSTD

    Wiredrive では、私たちはかなりの数のコードレビューを行います。しかし、ここで働き始める前には私はコードレビューなどしたことがありませんでした。今回は、私がコードレビューをする時に何に注目するようにしているかや、私の考え出したベストなコードレビューのやり方をお話したいと思います。 コードレビューとは、簡単に言うと2人以上の開発者で問題を引き起こしそうなコードの修正について話し合うことです。コードレビューをすることのメリットについては多くの記事で語られており、知識を共有できること、コードのクオリティが上がること、開発者が成長できることなどが挙げられています。しかし、レビューを行う上で、どのように進めていくかという具体的なことについてはあまり多く語られてないように私は思いました。 レビューで何に注目するか アーキテクチャ/デザイン 単一責任原則 : 1つのクラスは変更する理由が2つ以上

    コードレビューのベストプラクティス | POSTD
  • 今から備えるMySQL最新バージョン5.7

    2015/06/10 db tech showcase 2015 Tokyo ログを貼り付けている部分が見にくくなっていますので、 http://yoku0825.blogspot.jp/search/label/5.7 などでも同じような内容が見られたりしますRead less

    今から備えるMySQL最新バージョン5.7
  • Column SQL Truncation脆弱性にご用心

    前回のブログ記事「CMS四天王のバリデーション状況を調査したところ意外な結果になった」にて、JoomlaとMovableTypeは長大なログイン名を登録することにより、ログイン名の重複が起こり得ることを指摘したところ、facebookの私のウォールにて、Column SQL Truncation脆弱性の話題になりました。Column SQL Truncationは、2008年にWordPressの脆弱性として報告されたことがあります(参照、参照)。 稿では、簡単なログイン機能のSQL呼び出し例を用いてColumn SQL Truncationを説明したいと思います。 認証用テーブル定義の説明 認証に用いる会員テーブルを下記とします。ご覧のように、ログイン名を示す列 username には一意制約がありません。(追記)一意制約はふつうあるだろと思われるでしょうが、CMS四天王の中で一意制約

  • [コラム] 日本唯一のOracle ACE Director「本気で技術を究めたいのなら、一旦会社を辞めるべし」(エンジニアtype) - livedoor HOMME - livedoor ニュース

    [コラム] 日唯一のOracle ACE Director「気で技術を究めたいのなら、一旦会社を辞めるべし」 2011年06月28日07時50分 株式会社インサイトテクノロジー 代表取締役社長 小幡一郎氏 自ら創業したインサイトテクノロジーを経営者として成長軌道に乗せた後、いったん同社を離れフリーランスに近い立場のコンサルタントに。昨年12月に古巣に戻り現職へ。経営者でありながら、今も技術の最前線に立ち続ける。現在は新たに立ち上げたハードウエア事業の育成に注力しつつ、今秋開催するシンポジウムの準備に忙しい自ら創業したベンチャー企業をいったん辞めて、再び経営者として復帰する。シリコンバレーではよくありそうな話だが、日では珍しいかもしれない。株式会社インサイトテクノロジー社長の小幡一郎氏は、そんな人物である。 インサイトテクノロジーは1995年に設立され、小幡氏は経営者としてその成長をリ

    tom__bo
    tom__bo 2015/06/11
    “技術者であり続けたいなら、サラリーマンである前に技術者であれ、ということなのだろう”
  • Microsoft PowerPoint - YMiyake_Tokyo_Univ_2008_6_25.ppt

  • http://aoproj.web.fc2.com/xpath/XPath_cheatsheets_v2.pdf

  • Selenium 中級者になろう (変数+XPath+JavaScriptを,テストケース中で利用する方法) - 主に言語とシステム開発に関して

    回帰テストツール「Selenium」の中級 Tips。 初級の使い方については 今から3分で selenium の使い方を身に付ける (回帰テスト自動化) http://language-and-engineering.hatenablog.jp/entry/20081016/1224080409 selenium 主なコマンド一覧 http://language-and-engineering.hatenablog.jp/entry/20081016/1224123118 で入門のこと。 Seleniumのより便利な使い方として,下記で (1)変数の使い方 (2)XPathの使い方 (3)テストケース中へのjavascriptの埋め込み (4)Ajaxアプリのテスト方法 を学ぶ。 まず,まとめを掲載。そのあとで,実際のテストでどう役立つのか詳しく解説する。 まとめ 要素の指定方法まとめ

    Selenium 中級者になろう (変数+XPath+JavaScriptを,テストケース中で利用する方法) - 主に言語とシステム開発に関して
  • DDDで設計するならCQRSの利用を検討すべき - Qiita

    タイトルに書かれていることで全てなのですが、DDDとCQRSの併用について強調している日語の情報が少ないので、軽くまとめておきます。 CQRS+DDD CQRS(コマンドクエリ責務分離)とは、サーバの機能を「コマンド」(副作用あり)と「クエリ」(副作用なし)で完全に分けちゃおう、という考え方です。そもそも「コマンド」と「クエリ」ではあらゆる要件が異なります。 一貫性: 「コマンド」は整合性のある処理が必要、「クエリ」はあまり気にする必要なし ストレージ: 「コマンド」側は正規化してデータを保存したい、「クエリ」側は非正規な方が効率的 スケーラビリティ: 「コマンド」は全体の負荷の中で占める割合が少ない、「クエリ」は負荷が大きい なので分けちゃうわけですが、 コマンド側 複雑なビジネスロジックが絡むので、ドメイン駆動が活躍 クエリ側 複雑なビジネスロジックがないので、ドメイン層はスキップ

    DDDで設計するならCQRSの利用を検討すべき - Qiita
    tom__bo
    tom__bo 2015/06/11
  • オブジェクト指向プログラミングデザインルール : 一生涯プログラマ

    2014年04月01日00:00 カテゴリProgramming オブジェクト指向プログラミングデザインルール プロのプログラマとはただ仕様通りに動くプログラムを作ればいいという物ではない。 保守性や拡張性を考慮し、変更に強くバグの混在しにくいプログラムを効率よく作る必要がある。 その為に、プログラミングする上で心に留めておかなくてはならない事がある。 今回はその中でも、オブジェクト指向言語においてプログラミングする際に私が意識している事を書き留めたい。 デメテルの法則 オブジェクト間の依存度を最小限にする為に任意のオブジェクトが参照出来る範囲を下記の4つに制限する。(メソッドチェーンを許容しない) 但し、メソッドの戻り値が呼び出し元インスタンスと同じクラスの場合はメソッドチェーンを許容する。任意のオブジェクト自身メソッドの引数に渡されたオブジェクトメソッドの内部で新たにインスタンス化され

    オブジェクト指向プログラミングデザインルール : 一生涯プログラマ
    tom__bo
    tom__bo 2015/06/11
  • 分散深層強化学習でロボット制御 - Preferred Networks Research & Development

    新入社員の松元です。はじめまして。 “分散深層強化学習”の技術デモを作成し、公開いたしました。ロボットカーが0から動作を学習していきます! まずはこの動画を御覧ください。 以下で、動画の見どころと、使っている技術を紹介します。 動画の見どころ Car 0(○の付いている車)が右折カーブの手前で減速する様子(右画面の白いバーのところが、ブレーキのところで赤くなっている。ニューラルネットはブレーキが最も多く報酬が得られると推測していることがわかる)。速い速度ほど報酬は大きいが、カーブを曲がりきれず壁にぶつかってしまうので学習が進むとカーブ手前でのみ減速するようになる。 目の前に車がいるときは一時停止して、いなくなってから加速する。 エチオピアには当にこのような交差点があるらしい。 ぎりぎりですれ違う2台。学習途中ではすれ違いきれずにぶつかって倒れてしまうこともある(早送りシーン中に人が写って

    分散深層強化学習でロボット制御 - Preferred Networks Research & Development
    tom__bo
    tom__bo 2015/06/11
    技術デモを作成し、公開いたしました。ロボットカーが0から動作を学習していきます!” すげええええ [深層学習][強化学習]
  • Neural Networkのフレームワーク Chainer を触ってみた - 締切駆動型人間の日常

    Neural Netの新しいフレームワークが出たということで少し試してみました。 公式サイト: chainer.org 以下のコマンドは公式サイト参照。 インストールはめっちゃ簡単。 pip install chainerサンプル動かすのもめっちゃ簡単。 git clone https://github.com/pfnet/chainer.git python chainer/examples/mnist/train_mnist.py環境を整えたりすることが得意な方ではないので、こういうの待ってた! でも欲を言えば一年前に欲しかった!!! 卒論で柔軟なニューラルネットワークのフレームワークすごい探してた! とりあえずMNISTのサンプルを2行書く(貼る)だけで試せるのはすごくありがたい。 2年前ニューラルネットワーク初めて勉強してOctaveでMNISTの手書き文字の分類をした時を思い出し

    Neural Networkのフレームワーク Chainer を触ってみた - 締切駆動型人間の日常
    tom__bo
    tom__bo 2015/06/11
  • コマンドで単語カウント - moguranosenshi