タグ

programmingに関するHISAMATSUのブックマーク (94)

  • デブサミで僕が話したことの簡単なまとめ - 宇宙行きたい

    デブサミが 10 周年でした。 残念ながらオファーなかったのですが、一昨日くらいに急に参加していいよって言われたので 「From Legacy to Agile 〜レガシー開発からアジャイル開発へ〜」に乱入してきました。 そこでチームビルディング的な話を話させてもらいました。 資料とか特に作っていなかったので僕がリーダーとしてチームメンバーにお願いしている決まり的なことを簡単にまとめておこうと思います。 テストを書け 問題を根性で解決するな 人を殺す以外なら何やってもいい 失敗を引きずるな 個別に補足書いて行きます。 一応状況の簡単な説明をしておくと、最初は 3 人しかいないチームに 「手伝ってくれないか?」と言われ合流しました。その後、僕がリーダーになり 今は 15 人前後のチームで動いています。 テストを書け これは僕がチームに入るときに最初に宣言しました。 「テストを書かないようなプ

    デブサミで僕が話したことの簡単なまとめ - 宇宙行きたい
  • Joel on Software - 射撃しつつ前進

    Joel Spolsky ジョエル・スポルスキ 翻訳: Yasushi Aoki 青木靖 2002/1/6 ときどき何もできないことがある。 確かにオフィスにやってきて、だらだらとし、emailを10秒ごとにチェックし、Webをながめ、アメックスの請求書を支払うというような頭を使わない作業をしたりもする。しかしコードを書くフローの状態に戻ろうとしても、それができない。 このような非生産的な期間は通常1日か2日続く。しかし私の開発者としてのキャリアには何週間もの間何もできずにいたということが何度かあった。言うならば、私はフロー状態になかった。私はゾーンの中にいなかったのだ。私はどこにもいなかった。 誰でも気分のむらはある。ある人々にはそれは穏やかなものだが、他の人々には、それはもっとはっきりしていて、ときには機能不全でさえある。そして非生産的な期間は塞いだ気分と何か関係しているようだ。 それ

  • C 言語によるオブジェクト記述法 COOL

    C 言語によるオブジェクト記述法 COOL ver.2 C-language's Object Oriented Language ver.2 [検索] 目次 0. はじめに 1. クラスの記述, 属性の記述 2. 操作の記述 3. クラス属性の記述、定数の記述 4. 初期化操作と後始末操作の記述 4-1.処理効率優先インターフェイス 4-2.再コンパイル不要インターフェイス 4-3.動的バインディング・インターフェイス 5. 状態取得操作と状態設定操作とイベントハンドラの記述 6. 集約の記述、継承の記述 6-1.集約の記述 6-2.継承の記述 6-3.多重継承の記述 6-4.重複継承の記述 6-5.動的継承の記述 7. 多態性(多相性)、インターフェイス継承の記述 7-1.多態性の記述 7-2.多態性を持った生成の記述 7-3.多重継承の多態性の記述 7-4.重複継承の多態性の記述 7

  • DPとかメモ化再帰とか - komiyamの日記

    以下の内容は間違いを含んでる可能性が高い。 状態数が少ない問題ではDPやメモ化再帰による解法が結構あるけど、少し整理してみよう。 まず、大前提としてDPやメモ化再帰が使える必要条件はDAGになっていることだろう。ここで考えているグラフは、各状態を頂点、状態遷移を有向辺としたグラフである。確率とかの問題だと辺に遷移確率の重みがつくと考えれば良い。 特に、最小値を求める系の問題では必要十分と言ってもいいかもしれない(何か三角不等式っぽいのが成り立っていればいいような気がする。でも組み合わせの数を求める系だと上手く行かないのでやっぱり嘘か?)。 DPというのは、DAGに対してトポロジカル順序の小さい順に値を決定していくことに他ならない。 メモ化再帰というのは、もらうDPの特殊形式で余計な所を評価しないlazyなアルゴリズムと言えるかもしれない。 こうして書いてみると、DPの欠点が明らかになる。そ

    DPとかメモ化再帰とか - komiyamの日記
  • DPとかメモ化再帰とか(2) - komiyamの日記

    Competitive Programming Advent Calendarでtayama0324さんが素晴らしい記事を書いておられました。なので自分もそれに触発されて、以前書いた記事の続きを書いてみました。以下はtayama0324さんの記事を読んでいることを前提に話をします。 DPのメリットとメモ化再帰のメリット 基的にはtayama0324さんが触れているメリットでつきていると思うんですが、自分は次のようなメリットもあると考えています(筋から離れるだけなので、tayama0324さんも知っていた上で敢えて書かなかっのだと思います)。 DPのメリット 配列の再利用でメモリが節約できることがある。 データ構造を工夫しての高速化が書きやすい。 メモ化再帰のメリット 評価が遅延的に行われる。 ひとつずつ説明します。 配列の再利用 これは非常によく知られていることだと思います。配列ではあ

    DPとかメモ化再帰とか(2) - komiyamの日記
  • Redis bitmaps - Fast, easy, realtime metrics -

    At Spool, we calculate our key metrics in real time. Traditionally, metrics are performed by a batch job (running hourly, daily, etc.). Redis backed bitmaps allow us to perform such calculations in realtime and are extremely space efficient. In a simulation of 128 million users, a typical metric such as “daily unique users” takes less than 50 ms on a MacBook Pro and only takes 16 MB of memory. Spo

    Redis bitmaps - Fast, easy, realtime metrics -
  • オブジェクト指向について語った時に使ったメモ

    今日、オブジェクト指向について1時間ほど語りました。整理するため自分用に書いたメモを公開します。大まかな構成はメモどおりに話しましたが、メモに書いていないこともたくさん話していますし、書いていても話さなかったこともあります。 前提として自分自身のオブジェクト指向へのスタンスを書いておきます。 自分のプログラマとしてのキャリアとオブジェクト指向の隆盛の重なりを考えると客観的に見て自分はオブジェクト指向世代のプログラマなんだと思います。一方で、世間で過剰にもてはやされる技術には反発してきました。オブジェクト指向も例外ではありません。オブジェクト指向を否定はしませんが、金科玉条のように扱う人の前では、オブジェクト指向なんて技法のひとつに過ぎないと、冷たく突き放してきました。 ただここ数年、かつてに比べてオブジェクト指向の威光は下がっている気がします。関数型プログラミング支持者から、オブジェクト指

  • ぼくはこうしてプログラミングを覚えた

    オリジナルはココです。フェイスブックのエンジニアでで史上ベスト3に入るといわれるEvan Priestley氏への質問「どうやってプログラミングを覚えましたか」に対する人からの答えです。 手短かに言えば 何年もの歳月の賜物というか。ぼくはただひたすらプログラミングが大好きで、(フェイスブックで働いていた)過去4年間、ほとんど他のことをしていない。その前も2.5年ほどプログラマーとして働いていたし、そのさらに前も6年くらい趣味でプログラミングをしていた。ぼくは高校も大学も中退しているので、それで空いた時間もプログラミングに費やした。つい最近フェイスブックを辞めたけど、未だに起きている時間のほとんどはプログラミングだ。 もっと詳しく言えば 月並みだが、ぼくはちっちゃい頃からコンピューターが好きで、我が家にあったヤツで(最初はMac Plusで途中からIIsiになった)で散々遊んだ。8歳か9歳

  • ICFPC2011参戦記 - I am Cruby!

  • バベル案内

    Steve Yegge / 青木靖 訳 2004年9月 これは駆け足の言語案内だ — Amazon Developers Journalのために今月書いていたのだが、どうもこれを見苦しくないようにする方法を見つけられなかった・・・。 ひとつには、私はどうも粗野で口汚くなりがちで、オフィシャルな趣のあるAmazonの出版物に載せるのは不適切に思えた。それでかわりに誰も読まない自分のブログに押し込めてしまうことにした。読んでるのはあなたくらいのものだよ。どうも! もうひとつ言うと、これは当に書きかけのものであり、そこかしこの断片を集めたものでしかない。全然磨き上げられていない。これもブログエントリにする理由になっている。ブログなら別に良質である必要も完全である必要もない。単に私が今日考えたことというだけのものだ。ではお楽しみを! この駆け足の案内では、C、C++、Lisp、JavaPerl

  • 本当はすごい codefirst の開発環境 - suer のブログ

    (記事は @suer, @mallowlabs, @mzp がノリノリで共同執筆しました!) 近代的なソフトウェア開発に必要なツールは3つある。 分散バージョン管理ツール ITS CI ツール 私はこれに AsakusaSatellite (以下AS)を加えたいと思う。 以上の4ツールを使用することによって、迅速なコミュニケーション、洗練された自動化をベースとした開発リズムを体験することができる。 このあとの節では具体的なユースケースをベースに、上記ツールの連携方法及びそのメリットをみていく。 ユースケース:開発中にソースコードの特定行で例外が発生した原因を探る ここは codefirst の開発室。 @suer と @mallowlabs と @mzp はリズム良くコードを書いています。 そんなとき、ビルドの異常を知らせるポップアップが表示されます。 さっそくAS 上でミーティングがは

    本当はすごい codefirst の開発環境 - suer のブログ
    HISAMATSU
    HISAMATSU 2011/06/21
    うける.
  • 最小限のls -laを書いてみた - Islands in the byte stream (legacy)

    プログラミング初心者にオススメのPerlにて、リャマ(『初めてのPerl』)を読了した段階でls(1)やgrep(1)の簡易版を作れるようになっていればよい、と書きました。そこで実装例として、最小限のls(1)を実装してみました。また、リャマ読了程度の知識を前提にすることと、Perl 5.8ベースで標準モジュールを以外は使わない<ことを制約としました。なお、所要時間は一時間程度です。 仕様は最小限ながらそれなりに役立つようにしたかったので、以下のようにしました。 引数としてディレクトリ名をうけとる 引数を省略するとカレントディレクトリ(.)になる オプションは-la(長い出力ですべてのファイルを表示)相当で固定 group名、user名は省略し、パーミッション・ファイル更新日時・ファイル名を出 実装の際のポイントは以下のとおりです。 stat()やlocaltime()の戻り値は扱い

    最小限のls -laを書いてみた - Islands in the byte stream (legacy)
    HISAMATSU
    HISAMATSU 2011/05/24
    ちょうどいい課題かも.
  • 35歳を超えたエンジニアの5つの働き方

    おおいしつかさ 旅行とバイクとドライブと料理と宇宙が好き。 Ubie Discoveryのプログラマ。 ぼくは36歳です。けっこう大きなサイトで、RailsJavascriptを書いたり、パフォーマンス改善したり、iPhoneアプリの開発でObjective-Cを書いたりしています。マネージメントはしていなくて、今でも普通にエンジニアとして働いています。 35歳定年説の35歳を超えてから1年以上が過ぎたところですが、昔のようにはいかなくなってきたところ、昔と変わらないところ、昔よりよくなってきたところなどがいろいろあります。年を取ってもエンジニアを続けたい人の参考になるかどうかわかりませんが、そういう人たちのためにぼく個人の体験をここに書いておこうと思います。 1.理解できるまで聞き返す 特に若い人たちとの会話で痛感するのですが、相手の言いたいことを一度で理解することが難しくなってきまし

  • あるライブラリのおもいで - Backnumbers: Steps to Phantasien

    そういえば先に紹介したのサンプルコードは 前勤務先が開発していたライブラリを使っている. そんなのがあったなと思いだした. 開発元の会社は私が退職したあと解散してしまい, 製品としてのライブラリもなくなってしまったようだ. 少しはバグとりなどを手伝った身として一抹のさびしさがある. 今は亡きこのライブラリを偲んでみたい. それは C(v1.x)/C++(v2.x) で書かれたノンブロッキングスタイルの通信ライブラリで, libevent に類する イベントシステムと IO を抽象化するレイヤの上に バッファ管理, フレーミング, 多重化, 暗号化, 圧縮, UDP ベースのストリーム実装 と hole punching を実装し, 簡単な RPC もついていた. そのほかにも経路の heartbeat や素朴なリマッピング, 簡易チート対策, 高負荷な暗号化や圧縮だけを別プロセスに切り離

  • (翻訳)開発者の寿命について思うこと - YAMAGUCHI::weblog

    はじめに Thoughts On Developer Longevity @voluntas が面白記事を発見してくれたので翻訳しました。文よりもコメント欄がかなり盛り上がってるので、そっちも読んでほしいです。個人的にはオープンソース系コミュニティで一線行ってる人はあんまり関係ないんじゃないかなあと感じてます。ただ世間一般の場合はどうなんでしょうかね。日だと「プログラマが知るべき97のこと」もでてるのであわせて読んでみるのもいいかもしれません。 開発者の寿命について思うこと 40歳以上の開発者をどれだけ知ってますか?かなり多くの人が0人と答えるでしょう。では、40歳以上の開発者を1人以上知っていると答えた方にさらに質問。その内何人が素晴らしい開発者ですか?もし40歳以上の素晴らしい開発者をご存知なら、お願いがあります。彼らの脳みそを取り出して、何が彼らの能力を研ぎ澄ましているのかを判別

    (翻訳)開発者の寿命について思うこと - YAMAGUCHI::weblog
  • 動的計画法解説 [TopCoder SRM 468 Div2 250/Div1 500]

    動的計画法解説 [SRM 468 Div2 250/Div1 500] 目次 問題1(入門編) 全探索 再帰と漸化式 メモ化再帰 動的計画法 問題2(初級~中級編) 全探索 再帰と漸化式 動的計画法 問題1 王様は長い間出張していたので、できるだけ早く女王のもとに帰りたいと思っています。王様は都市 0 におり、女王は都市 N (1 <= N <= 50)に居ます。全ての都市 i (0 <= i <= N - 1) に対して陸路と空路があります。配列 roadTime, flightTime が与えられ、それぞれの i 番目の要素は都市 i から都市 i + 1 までの陸路、空路の所要時間 (1 以上 1000 以下) を表わします。しかし王国の科学力は低く、空路による移動は墜落の危険を伴います。そのため、王女は王様に空路は K (0 <= K <= N) 回までに留めるように言いました。王

  • Hiroki Nakaya on Twitter: "大学に入った頃、知り合いから「コードの行数で値段が決まる」と聞いて、凄い違和感を持ったのを思い出した。RT @cpp_akira: ステップ数なんていう廃れた文化の話ですか? RT @portown: 貴様は今までに書いたC++の行数を覚えているのか?"

  • オープンソース、ソースコードリーディング、勉強会、Github、コラボレーション - @kyanny's blog

    こういう社内勉強会をやってみたい、というアイデアのメモ。うまくいくかどうかはわからない。仕事が一段落したらやり始めたい。とかいってるといつまでたっても始まらないので今から始める。 https://github.com/kyanny/jquery オープンソースソフトウェアのソースコードリーディング勉強会を、内輪(社内とか、あまり人数多くない)でやる 担当を決めて各人でソースを読んできて、集まったときに発表をする(ここがわかりませんでした、とかでよい) Github に勉強会用のレポジトリを作ってそこに読むソースコード一式を入れておき、ソースにコメントを書いていく(コメントとコミットログが発表資料がわり) メリット 資料作ったり準備する手間がはぶける(勉強会用レポジトリを clone しておいて時間あるときに読みながらコメント書いてコミットして発表前に push すればいい) 複数人でコラボ

    オープンソース、ソースコードリーディング、勉強会、Github、コラボレーション - @kyanny's blog
  • JavaScriptが第一級のプログラミング言語へ、分散バージョン管理にも注目が集まる

    モデリングやオブジェクト指向などのソフトウェア技術などで知られるマーチン・ファウラー氏が所属するThoughtWorks社。同社が現在の技術のトレンドについて分析したホワイトペーパー「Technology Radar 2010」(PDF)がinfoQの記事「最近のテクノロジにおけるトレンドは?」で紹介されていました。 このホワイトペーパーでは、現在どの技術分野がホットなのか興味深い分析がならんでいます。ツールとプログラミング言語の2つの分野を取り上げて紹介しましょう。 分散バージョン管理と次世代テストツールに注目 分析結果はレーダーチャートのような図で表され、いちばん内側が「Adopt(受容)」で、外側にいくほど「Traial(試験)」、「Assess(要調査)」、「Hold(保留)」といった状態を示しています。 まずはツールの分野のチャートを見てみましょう。 内側の点から見ていくと、In

    JavaScriptが第一級のプログラミング言語へ、分散バージョン管理にも注目が集まる
  • 人材募集企画 2011年版 - 人生を書き換える者すらいた。

    以前、図らずも注目を集めてしまった人材獲得の件からおよそ1年経ちました。 そこで、再び募集をかけてみようと思います。今回は転職サイトは使わずにここで告知します。 【募集要項】 ●これは1次試験です。合格者には次のステップの案内を送ります。(2次試験以降は非公開で行います) ●待遇はその人の実力次第ですが、年俸で500~1000万円の間になるでしょう。基在宅勤務です。居住地不問。 ●仕事は相場に関わりのあるソフトウェアを作ること全般です。クライアントサイドはWindows(C#)/iOS/android, サーバサイドではJava/Rubyがターゲットになります。その中から、得意なもの・興味のあるものを担当してもらいます。 ●上記の言語/プラットフォームを知らないのは問題にしない(勉強すればいいだけなので)ですが、ソフトウェア作りに適度なプライドと熱意を持っていることは問題にします。(過剰

    人材募集企画 2011年版 - 人生を書き換える者すらいた。