タグ

programmingに関するmizogucheのブックマーク (376)

  • ジェネリックな設計 再帰編 - プログラマーの脳みそ

    11/10に開催されたJJUG CCC 2012 Fallでジェネリクスについてセッションを行いました。 このエントリはセッション内容を補足するものです。基礎的な内容は Javaジェネリクス再入門 - プログラマーの脳みそ ジェネリックな設計 基礎編 - プログラマーの脳みそ などを参照してください。 再帰的ジェネリクス public class Hoge<T extends Hoge<T>> このように、型変数Tに対して境界を宣言したクラスHoge自身にした型変数をもつかたちを指して再帰ジェネリクス・再帰的ジェネリクスなどと呼びます。 このような型変数Tはパラメータ化された型として変数宣言に用いようとすると Hoge<?> hoge; といったようにワイルドカードを用いないと宣言できません。また、newによって型をバインドしようとしても型をバインドすることができません。 再帰的な型変数を

    ジェネリックな設計 再帰編 - プログラマーの脳みそ
  • ジェネリックな設計 基礎編 - プログラマーの脳みそ

    11/10に開催されたJJUG CCC 2012 Fallでジェネリクスについてセッションを行いました。 このエントリはセッション内容を補足するものです。セッションはジェネリックなクラスの設計を行えるようになって欲しいという狙いで話をしました。ジェネリックなクラスを利用できるというのは前提条件として書いてます。入門的な内容であれば Javaジェネリクス再入門 - プログラマーの脳みそ を参考にしてください。 セッション資料はこちら ジェネリクスの基礎と応用 JJUG CCC 2012 Fall ジェネリクスのスコープ まずジェネリクスのスコープの話から入ります。Javaのジェネリクスには2つのスコープがあります。 メソッドをスコープとした型変数 インスタンスをスコープとした型変数 後者はおなじみの public interface List<E> などの型変数です。 これに対して pub

    ジェネリックな設計 基礎編 - プログラマーの脳みそ
  • 転職した経緯とか、思いとか。

    あ…ありのまま、先月までの数ヶ月間で起こった事を話すぜ! 『俺は勝手にpixivAndroidアプリを作って公開していたらいつの間にかpixiv社員になっていた』 な…何を言っているのかわからねーと思うが、俺も何が起こったのかわからなかった… リ◯ナビNEXTだとかエ◯ジャパンだとか、そんな普通の転職じゃあ断じてねえ もっと恐ろしいものの片鱗を味わったぜ… …というわけで、Twitter等ではとっくに公表してますが、先月よりpixivにて勤務しております。 前職は5年半勤務しましたが、前から色々と思っていたこともあり、退職して新たな道を選びました。 最近転職しました系の記事が流行っているようなので、自分も忘れないうちに書いておこう、と思ったわけです。 転職のきっかけ、前職での不満や感じていたこと、いろんな人とのつながりなどなど… 少し長文になります。読みづらい部分も多々あると思いますが、

  • 僕が考えたChrome拡張機能を作るときのデザインパターン

    最近いくつかのChrome拡張機能を作っていて、すでに数千人のユーザを獲得できているものが出てきてたりします。 Image collector extension goo.gl URL Shortener extension mixi Check button extension Semantic inspector これだけ作ってると、何となく自分でのChrome拡張機能を作り出す際のデザインパターン・・・っていう大それたものじゃないけど、ようはテンプレが確立されてきます。全く褒められない書き方をしているかもしれませんが、ここでそのテンプレ達を晒しておこうかな、と思います。 manifest.json まずはChrome拡張機能の要であるマニフェストファイルです。これは誰が書いてもさほど変わらない記述内容となるでしょう。 { "manifest_version": 2, "name":

    僕が考えたChrome拡張機能を作るときのデザインパターン
  • いわゆる仕様と業務例外について - 急がば回れ、選ぶなら近道

    最近とにかく、移動が多いので、その中でちょいちょい考えたことをまとめておきます。まずは仕様の理解の仕方とか、業務例外とか、押さえておきましょうという視点から。別にこれが正解で必須というわけではないので、あくまで個人の経験をまとめただけです。 モデリングとか、なんというかそういう高尚な話ではなくて、実際に仕様をまとめるときに、現実的に落ちる穴を、経験的に書きます。大抵のプロジェクトでは、仕様が固まらずに、または手戻りが発生して酷くコストが膨らむということがやはり多いわけで。理屈はともかく自分の経験的な対策案です。 (なんというか、開発方法論や手法・ドキュメントのまとめ方は、なんとかBOKから始まって、アジャイルや押しくらまんじゅうやらでいくらでもであるのですが、その一方で丁寧な要求定義や設計それ自体ができる人材は、むしろ急激に減っているような印象すら受けます。海外からの翻訳や輸入はやたらと多

    いわゆる仕様と業務例外について - 急がば回れ、選ぶなら近道
  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • アプリをiPhone5に対応する場合の地雷ポイント一覧 | fladdict

    地雷キャッチャーとして定評のあるfladdictですが、今回も大量の地雷を踏み歩いております。 とりあえず、解決方法を知らないとハマるポイントを色々とピックアップ。自分では直ったけど一般化できてない現象もあるので、間違い勘違い等ありましたら、コメント欄でビシバシご指摘ください。 iPhone5対応すると、iOS4.3以前では動かなくなる 最新のXCodeがarmv6のコンパイルをしてくれないので、ご臨終となります。 公式じゃないほうほうで無理矢理バイナリをビルドすればhogehoge。 サードの静的ライブラリが入ってると、コンパイルできない場合が 最新XCodeからコンパイルに、armv7sという新アーキテクチャが必須となってますが、ビルド済み静的ライブラリにはむろん入っていないのでコンパイルできません。対策は2つあって、ひとつは対応ライブラリが出るまでリリースを見送ること、もう片方はXC

  • JavaScriptでうっかりやってしまいそうなこと色々

    こんにちは、中川です。 今回はJavaScriptで開発していると、うっかりハマってしまうちょっとした罠たちを紹介したいと思います。 JavaScriptでの開発経験者であれば、どれか一度はひっかかったことがあるのではないでしょうか? String ●String#replace()は文字列指定では全部置き換えない 対象文字列を一括して置き換えたいなどでString#replace()を使いますが、 検索対象を文字列で指定してしまうと最初に一致した部分しか置換しません。

  • JavaScriptのテストツール「testem」が素晴らしいぞ - Mach3.laBlog

    この記事は賞味期限切れです。(更新から1年が経過しています) JavaScriptユニットテスト一年生の私が、Nettuts+ のチュートリアルで知ったテストツール 「testem」のお陰で大変捗ったので是非お勧めしたく、ここで紹介してみます。 testem ってなに testem via GitHub : airportyh/testem Unit testing in Javascript can be tedious and painful, but Testem makes it so easy that you will actually want to write tests. 要するに、面倒なJSのユニットテストをより快適にしてみんなでハッピーにテスト書こうよ!というツールです。 testem自体はnode.jsベースで動作し、Jasmine/QUnit/Mochaに対応して

    JavaScriptのテストツール「testem」が素晴らしいぞ - Mach3.laBlog
  • 類似楽曲検索システムを作ろう - 人工知能に関する断創録

    もう1年以上かけて音声信号処理の勉強をしてきました(Pythonで音声信号処理)。ここらで具体的なアプリケーションとして類似楽曲検索の実験をしてみたのでレポートをまとめておきます。言語はPythonです。 前に 類似画像検索システムを作ろう(2009/10/3) Visual Wordsを用いた類似画像検索(2010/2/27) という画像の類似検索に関するエントリを書きましたが、今回は画像ではなく音楽を対象に類似検索をやってみたいと思います! 今回作る類似楽曲検索システムは、従来からよくあるアーティスト名や曲名などテキストで検索するシステムや購買履歴をもとにオススメする協調フィルタリングベースのシステムとは異なります。WAVEファイルやMP3ファイルなどの音楽波形そのものを入力とするのが特徴です。たとえば、「具体的なアーティストや曲名は知らないけれど、この曲とメロディや雰囲気が似た曲がほ

    類似楽曲検索システムを作ろう - 人工知能に関する断創録
  • Androidアプリの結合テスト | DevelopersIO

    はじめに スマホアプリの結合テストでは、スマホ特有の確認すべき点が数多くあります。 特に Android は端末の種類が多いですし、OSのカスタマイズもかなり自由度があるので思わぬバグが発生する可能性がかなり高いです。 ということで今回は 結合テストで確認したいチェック項目 をジャンルごとにまとめてみました。 端末 インストール先の違いによって動作しない処理がないか Android OS バージョン 2.2 (APIレベル9) より、アプリをSDカードにインストールできるようになりました。それによって動作しない処理が発生する可能性があります(例えば、SDカードにインストールされている状態では再起動やSDカードマウントを BroadcastReciever で受け取れないなど)。 SDカードのマウント・アンマウントで異常な処理が発生しないか Android はSDカードの有無によって保存先が

    Androidアプリの結合テスト | DevelopersIO
  • プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな

    プログラマというのは、道具に慣れることが、実力があがることにならないのですよね。だから、勉強せず業務経験だけだとレベルが低いままということになってしまう。 Javaを10年さわり続けて、Strutsを5年さわり続けても、それだけでは、与えられた画面を手際よく作成できるようになるだけで、たとえばStrutsすらよりよく使えるようになるわけではなかったりする。 Javaにしても、「volatileってなんですか?」という問いに、まあ知らないのはしかたないとしても、解説を見ながらですら答えられない可能性がある。 プログラムの反復生産は、プログラミング能力の向上にあまりつながらない。設定や記述に慣れるだけだ。そして、この「慣れ」というのには「難しいからそもそも実装を回避する」というようなものも含まれる。実力の向上は、作業ができるレベルで止まってしまう。 プログラマとしての実力をあげるための勉強が自

    プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • codic - デベロッパーのためのネーミング辞書

    codicは、プログラマーのためのネーミング辞書です。新しいcodicでは、翻訳エンジンを搭載しネーミングをジェネレートできるようになりました。

    codic - デベロッパーのためのネーミング辞書
  • ソースコードを表示するためのフォント「Source Code Pro」をアドビがオープンソースで無料公開 - Publickey

    プログラミングやマークアップなど、コーディング作業のときにソースコードを表示する目的で開発されたフォント「Source Code Pro」を米アドビがオープンソースとして無料公開しました。24日(日時間24日深夜)に開催された同社のイベントCreate the Webで発表されました。

    ソースコードを表示するためのフォント「Source Code Pro」をアドビがオープンソースで無料公開 - Publickey
  • トップページ - nodchip's website

    当ホームページでは管理人「nodchip(ノドチップ)」が作成した フリーソフトの配布を行っております。ほとんどのフリーソフトは開発終了しております。予めご了承ください。 リンク QMAClone nodchipが制作・運営中のオンライン対戦型webクイズゲーム Challenge Creator GAE ver TopCoder? Algorithm 撃墜フェイズ支援ツール pya!(ν・▽)νオイラーシリーズ by nodchip オモシロネタ投稿サイトpya!関連webツール (データ更新は終了しております) ACM-ICPC OB/OGの会 国際大学対抗プログラミングコンテストの選手育成ボランティアグループ 東京工業大学放送研究会のホームページについて 東京工業大学放送研究会公式ホームページは 2007年中旬までnodchipの自宅サーバーにて公開しておりました。現在は東京工業大学

  • 米国人からコーディングについての怒りのメールを頂戴した - その手の平は尻もつかめるさ

    "米国人からコーディングについての怒りのメールを頂戴した" の補足 - その手の平は尻もつかめるさ ↑の方で補足いたしました。(2012.09.04 追記) 最近、英語のメールでよく怒られます。moznion です。 海を隔てて共同作業しているアメリカ人から、僕のコーディングについてお叱りのメールを頂いたので、 自戒の念を込めて邦訳して記します。 書いてあることは「当然」とも言うべき内容ですが、僕はその「当然」も守れていなかったのかぁ〜と反省。 以下、邦訳(意訳)です。 1. 郷に入っては郷に従え 既にソースコードが存在しているって事は、そこには同時にコーディングスタイルも存在しているってことだ。 その既存のソースコードに手を加える場合、別のコーディングスタイルを導入してはならない。 もし君がバックエンドのソースコードを弄っているなら、バックエンドのコーディングスタイルで記述するんだ。 フ

    米国人からコーディングについての怒りのメールを頂戴した - その手の平は尻もつかめるさ
  • オブジェクト指向できていますか?

    3. 自己紹介 1992年~1997年 某ゲーム会社 プログラマ SFC,GB,PS1,N64のゲーム開発経験 1998年~現在 日工学院八王子専門学校 @mozmoz1972 専任講師 プログラミング教育を中心に担当 twitterもfacebookも実名です。よかったらフォローしてください。

    オブジェクト指向できていますか?
    mizoguche
    mizoguche 2012/08/28
    責任を背負いすぎてるクラスが多いこんな世の中じゃ/メソッド内の行数少ないと処理の流れがわかりにくい!という方のためにComposed Methodパターンも紹介すべきなのかもしれない。
  • コードレビューいろいろ - steps to phantasien

    コードレビューの話をいくつか見かけた. (1, 2, 3) 私もはやりにのってなにか書いてみたい. といってもリンク先についてどうこう言う気はない. ふだんからぼんやり感じていることをテキストにしてみたい. コードレビューの様式 コードレビューのやりかたは色々ある. 話の背景をあきらかにすべく, まずは私が参加したり見聞きしたりしてきた方法を紹介したい. ただとりとめなく列挙しても見通しが悪いから, 方法を評価する軸を見立てておこう. コードの粒度: 一回のレビューでレビュアが目を通すコードの量はどのくらいだろう. プロジェクト全体? モジュール単位, 機能単位, それともクラス単位? 古典的なレビュー様式はこれら <論理的な単位> でレビューをすることが多い. 最近はブランチやコミットのような <ひとまとまりの変更> を単位とする方法に人気がある. Github の Pull Reque

  • 離れた場所で働くチームのつくり方〜1年間のアイルランドでの実践で学んだこと | Social Change!

    『国境なきプログラマ』を目指す~ノマドワークの究極のかたち ちょうど1年ほど前に、こんなブログを書きました。ソニックガーデンのプログラマが単身、アイルランドのダブリンに1年間滞在しつつ、日仕事をしながらも、現地で生活をおくるという内容です。 こちらの記事で紹介した、ダブリン生活にチャレンジしてきたプログラマの maedana がつい先日、無事に日に帰ってきました。 日との時差9時間の中で、1年間1度も日に帰ることなく、リモートで働いてもらったのですが、結果としては、大きな問題はなく、概ねうまくいったと言ってもいいでしょう。 この記事では、そのアイルランドのプログラマと日のプログラマやお客様と、どうやって離れた場所だけど、ひとつのチームとして一緒に働くことができたのか、ふりかえってみたいと思います。 1年間のリモートワークの前提や環境について 彼がアイルランドに行く前に想定してい

    離れた場所で働くチームのつくり方〜1年間のアイルランドでの実践で学んだこと | Social Change!