タグ

ブックマーク / isoparametric.hatenablog.com (25)

  • 最適なデバッグは可能性を潰していく事 - 神様なんて信じない僕らのために

    minekoaさんのエントリを読んでいて、 「そうそう、コンパイラがこんなこと言うときは実際にはあんな事が起きてるんですよ」みたいな知識データベース。そしてコンパイラが検出出来ないタイプのバグについても、現象に「あれ?、どこかでみたぞ、これ」となる。そういう「良くあるパターン」の蓄積はデバッグのスピードアップに大きく貢献します。 正しい。けれど、それはそれとして。 根的な問題として、「問題の切り分け」というのが出来ていないからデバッグ出来ないというのが、「デバッグができないこと」なのではないかと思います。 デバッグという基礎素養 - みねこあ 「最適なデバッグはまず適切で高い可能性から潰していく事、最後に残った事が真実」 だなあと思いました。 デバッグをするときに経験があると 「そうそう、こういうときはこれだよね」 というのが解ります。 ハングアップが一番簡単で、 スタックを見ても良いし

    最適なデバッグは可能性を潰していく事 - 神様なんて信じない僕らのために
  • 本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために

    かつて、ゲームプログラミングはアセンブリが主流で、8bitCPUは掛け算や割り算すらないものでした。割り算がないCPUっていつの時代だよ、っていう人たちもおりますが、ゲームボーイアドバンスに搭載されているARM7TDMIは除算の命令を持っていません。(故に除算を書くと死ぬほど遅いので、乗算で代用したりする) また、浮動小数に対する演算ユニットを持っていないハードウェアもあります。ニンテンドーDSに搭載されているARM946E-Sですら、浮動小数演算ユニットはありません。(CPUの機能としてはオプションで存在する)そのために固定小数点といった技術もあるわけですが、古くさい話です。 これらはCとC++の機能を駆使していかにパフォーマンスを出すかを余儀なくされた時代です。 さておき、最近はスマートフォンでのゲーム開発も進化しており、C++iPhoneAndroidの両方で動くということもあ

    本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために
    rin51
    rin51 2013/12/25
  • ネイティブ開発アンチパターン - 神様なんて信じない僕らのために

    ということで、最近はC++触ったりObjective-C触ったりJava触ったり、Lua触ったりしているわけですが、cocos2d-xに関してgumi Studyで話しました。とはいっても、中身は殆どcocos2d-xに関係ありません。 割と当たり前のことしか書いてないのですが、コンシューマゲームでも踏んだ「基的な罠」について書いてあります。 cocos2d-xを触っていると、かなりの人たちがC++を知らずにC++を書いているという現実に出くわします。そういうとき「動いているから」で突き進むのではなく、1度止まって、自分がそれを理解しているのかを考えて見てはどうでしょうか。 ネイティブ開発アンチパターン from Isoparametric !

    ネイティブ開発アンチパターン - 神様なんて信じない僕らのために
    rin51
    rin51 2013/12/16
    C++とLuaとかいろいろ
  • デザインパターンにまつわるエトセトラ - 神様なんて信じない僕らのために

    社内でデザパタが盛り上がっていたので、社内勉強会でLTしました。 その資料です! 基的に自分はデザインパターンは「言語に依存しない設計に名前をつけたもの」だと定義しています。 なので、よくある「デザインパターンってJavaじゃないと役に立たないよね」なんていう意見には反対です。 勿論、言語によっては適応する意味の無いパターン、意味の薄いパターンもありますが、 GoFのパターンだけがすべてではないですし、 "設計に名前をつけて共有する"というスタンスこそが最高のものだと思っています。 (酒井姐さんは社内のエンジニアです) デザインパターンとは何か? View more presentations from Isoparametric ! 最後でも紹介していますが、このが超オススメです! デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns serie

    デザインパターンにまつわるエトセトラ - 神様なんて信じない僕らのために
  • 開発に必要な力は二つしかない - 神様なんて信じない僕らのために

    最近開発をしてきて開発者に重要だと思うのは、 ・問題を発見する力 ・問題を解決する力 の二つだと思っている。 実際にコードが綺麗とか、技術が卓越している、というのは個人の手腕であり、 持ちうるスキルではあるのだけれど、 それは「問題を解決する際に使われる力」だ。 そして、これには「コミュニケーション力」や「交渉力」、 「論理的思考」や、「選択肢の中から成否を見据える力」も含まれている。 そして、これを行うためには「問題を発見する力」が欠かせない。 「何が問題なのか?」を考えずにこれらの力をふるうことはできない。 いかな高い技術力があっても、それを使う場所や使うべき場面が解らなければ何の意味もない。 要するに重要なのは「問題を発見し、解決する力」だ。 これが出来れば職場も個人の問題も、何でも解決できる。 そして、組織が強いのは沢山の眼があること、沢山の思考があること。 要するに重要な力は2つ

    開発に必要な力は二つしかない - 神様なんて信じない僕らのために
    rin51
    rin51 2012/02/08
  • 長く座るつもりでリープチェアを買うなら、ミラチェアかアーロンチェア - 神様なんて信じない僕らのために

    ということでキーボード話に次いでよくありがちな椅子の話題です。 お手軽に生産性向上させるなら椅子ですよね! ってな話で。 この手の話によく挙がるのはアーロンチェア。 ハーマンミラー アーロンチェア ポスチャーフィット フル装備 AE113AWB PJG1BBBK3D01 出版社/メーカー: HermanMiller (ハーマンミラー)発売日: 2007/08/22メディア: ホーム&キッチン購入: 3人 クリック: 1,162回この商品を含むブログ (45件) を見る 自分が愛用しているのは、ミラチェア。 ハーマンミラー ミラチェア グラファイト(バック)Xグラファイトダーク(シート) MR113AAM AJG1BBG1BK7Q01 出版社/メーカー: HermanMiller (ハーマンミラー)メディア: ホーム&キッチン クリック: 42回この商品を含むブログ (5件) を見る そして

    長く座るつもりでリープチェアを買うなら、ミラチェアかアーロンチェア - 神様なんて信じない僕らのために
    rin51
    rin51 2012/01/31
    高すぎワロタ
  • 僕と契約してPythonistaになってよ! - 神様なんて信じない僕らのために

    すっかり更新が滞ってましたが、 弊社が東京(都庁前)にてPythonアジャイル開発できる仲間を募集しています。 開発対象は、大規模アクセスをさばくソーシャルアプリおよびその環境周りです。 基Python、Django、Flask、Redis、memcached、MySQL、Git、Capistoranoなどを用いた軽量な開発です。 軽量開発もスクラムマスター研修などを通じて軽量化、効率化を心がけ、 かつ、お互いにとって刺激ある開発環境を目指しています。 自分でサービスを書いたり、Webゲームを書いているメンバもおりますし、 社内勉強会なども積極的に行っています。 開発環境について自分は「ゆとりの法則」「ピープルウエア」を意識してはいるのですが、 何が最適か、は組織やチームによって変わってくるので、 常に改善し続けること、楽しくあろうとすることかなあ、と思っています。 そういう意味で変

    僕と契約してPythonistaになってよ! - 神様なんて信じない僕らのために
    rin51
    rin51 2012/01/20
  • Luaにおける継承 - 神様なんて信じない僕らのために

    オブジェクト指向ではないLuaだが継承も実現できる。 Base = {} function Base.new(value) local base = { value_ = value, hoge = function(self) return self.value_; end, toString = function(self) return "base" end, } return base end Derivation = {} function Derivation.new(value) local derivation = { toString = function(self) return "derivation" end, } local extends = Base.new(value) setmetatable(derivation,{__index=extends})

    Luaにおける継承 - 神様なんて信じない僕らのために
  • Luaのクラス表現 - 神様なんて信じない僕らのために

    と、Luaにはクラスがない。 クラスがないので、連想配列とクロージャを使ってクラスオブジェクトを表現する。 Hoge = {} function Hoge.new(value) local hoge = { value_ = value, getValue = function(self) return self.value_ end, setValue = function(self,value) self.value_ = value end, } return hoge end o = {} o[0] = Hoge.new(1) o[0]:setValue(666) o[1] = Hoge.new(2) print (o[0]:getValue()) print (o[1]:getValue()) と実行すると、 666 2 と出力される。 要するにlocal hogeはクロージャに

    Luaのクラス表現 - 神様なんて信じない僕らのために
  • Boost.勉強会#4で「ゲーム開発のC++」を話してきました - 神様なんて信じない僕らのために

    とりま、 アップロードしました。 スタッフの皆さん、参加者の皆さんお疲れ様でした。 アキラさんには直前まで資料作っていてご心配をおかけいたしました。orz... Boost study#4View more presentations from Isoparametric !.

    Boost.勉強会#4で「ゲーム開発のC++」を話してきました - 神様なんて信じない僕らのために
    rin51
    rin51 2011/02/26
  • 使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために

    C++AdventCalendarの記事です。 さて、 生配列使ってますか? tr1::array(boost::array) 使ってますか? 生配列使っていると答えた貴方、 →まず死ね。 はい、arrayが常識ですよね。 さて、とはいえ、 「テンプレートを使うと遅いしコードがでかいし」 「生配列が一番速いしコードが小さいし」 「なのでテンプレート禁止」 なんて話を聞くこともあるかと思いますが、 こういう事をいう人は大抵「テンプレートを書いたことがない」のに言ってます。 なぜか? こういう人が当に心配しているのは「テンプレートが肥大化すること」じゃないのです。 「テンプレートが書けないし読めないのを認めたくないからです」 多くはCの老害だからですが、そういう人は放っておいてC++な人はきちんとテンプレートを使いましょう。 だって多くのテンプレートのコードは大きくもなければ非効率でもないか

    使いもしないのにC++のtemplateを毛嫌いする全ての人に - 神様なんて信じない僕らのために
    rin51
    rin51 2010/12/20
    テンプレートが書けないし読めないのを認める。ほんと読めない。しぬる
  • PythonのWebフレームワーク使うなら知っておきたいデコレータ - 神様なんて信じない僕らのために

    最近「オワタ\(^o^)/」で有名なDjangoしか触ってないダメ人間です。 こんにちは。 Djangoとかどうでもいいがな、 Webフレームワークとかめんどくさいがな、 という最近なのでDつながりでDecoratorの話をします。 ナウでヤングなPythonistaのホットな話題はGCの参照カウンタ、 ではなくてFlaskとかかもしれないですが、 @app.route("/") def hello(): return "Hello World!" こいつも多分に漏れずDecoratorを使います。 Djangoでも、 @require_GET とか @require_POST とか使ったり見たことがあるんじゃないかと思います。 で、意外と魔法っぽいデコレータですが、 これっていったいどうなってんの? って事を知らない人が割といたりします。 「とりあえず指定しろって言われたから指定してます

    PythonのWebフレームワーク使うなら知っておきたいデコレータ - 神様なんて信じない僕らのために
    rin51
    rin51 2010/12/09
    > 次はとらドラ好きで有名な渋川さんがいいのかなあとか
  • Python Hack-a-thon 2010.11でDjangoの話をしてきました - 神様なんて信じない僕らのために

    オラクルさんで行われたPython Hack-a-thon 2010.11でDjangoの話をしてきました。 スタッフの皆さん、参加された皆さんお疲れ様でした! Python x D jango x AWSで作るソーシャルアプリのお話です。 当日の直前まで資料をつくっていたので、時間配分ができませんでした!orz... 次はもっと頑張ります。 Djangoを使うと何が嬉しいか、というお話がメインです。 Djangoの話View more presentations from Isoparametric.

    Python Hack-a-thon 2010.11でDjangoの話をしてきました - 神様なんて信じない僕らのために
    rin51
    rin51 2010/11/15
  • 「最短経路の本 レナのふしぎな数学の旅」を読みました - 神様なんて信じない僕らのために

    きしださんの日記で紹介されていたので、つい買ってみました。 2010-06-18 - きしだのはてな きむら(K)さんに 「今まで読んでなかったんかい」 Twitter / finalfusion: @isoparametric 「今ま�� と突っ込まれるくらい必読でした。がはっ。 ということで、感想。 要するにグラフ理論の初歩を学ぶためのなのですが、 一般のプログラマ/エンジニアからしたらグラフ理論って、何か意味あるの? って感じかもしれないです。 でも、 「最短経路を見つける」というアルゴリズムを書くことは結構あるんじゃないでしょうか? 最短経路を求める方法として、ダイクストラ法なんかが有名ですが、 ゲームなんかだとA*(AStar)アルゴリズムがよく使われます。 でも、これはアルゴリズムだけ知っていれば使えたりするので 実際に最短経路を求めるためにどのようなことをしているか? と

    「最短経路の本 レナのふしぎな数学の旅」を読みました - 神様なんて信じない僕らのために
    rin51
    rin51 2010/07/20
  • 面白かったので怖い話の反応に反応してみる - 神様なんて信じない僕らのために

    id:Dr_Caligariさんから面白い反応があったので、 俺も思ったことに対してつらつら反応してみます。 普通にコメントしようと思ったのですが長くなったのでTB返しで。 私が書くのはゲーム業界のプログラマーという狭い世界で生きている人間が思った事 ということで、俺もゲーム業界の片隅で生きていた事はあるのでその観点で反応してみます。 ディレクトリ構成が機能単位でなくプログラマの名前幽霊 これ実際に見たことあります。 アセンブラを使っていて、プロジェクトの規模が小さかった時代の名残らしいです。 恐らく俺が見たプロジェクトもアセンブリの頃の名残でした。 プロジェクト管理とかソース管理という構成管理の概念がなかったころなら、 別に良いとは思うのですが、今でもこれを引き継いでいてこれを「気で」良いと思っている人がいることが恐ろしくもあります。 バージョン管理システムを使わない幽霊 そろそろ分散

    面白かったので怖い話の反応に反応してみる - 神様なんて信じない僕らのために
  • Python Hack-a-thon 2010.07で「本当にあった怖い話」をしてきました - 神様なんて信じない僕らのために

    土曜日のPython Hack-a-thon 2010.07で「当にあった怖い話」をしてきました。 会場を提供してくださったオラクルさん、 そして、スタッフの皆さん、色々準備ありがとうございました。 また、参加者の皆さんお疲れ様でした! (レポートは別途書きます) で、俺のプレゼンは完全にネタなので、ご了承ください。(特にC++erの皆さん) 前半は前振りなので、あまり気にしないでください。 プレゼン中で某C++な人達の写真や、Twitter発言が引用してありますが、 もし問題があればお知らせください。 「ソースを読もう」とか意味ないですので飛ばすの推奨。 また、なんか話したいなあ。 C++の話(当にあった怖い話)View more presentations from Isoparametric . あと、プレゼン中で「C++の設計と進化」を勧めていますが、 C++のことわからないと

    Python Hack-a-thon 2010.07で「本当にあった怖い話」をしてきました - 神様なんて信じない僕らのために
    rin51
    rin51 2010/07/12
  • VSSが相変わらずフルボッコすぎる件について - 神様なんて信じない僕らのために

    ゲームコーディング・コンプリート」より引用。 常識的に考えて嫌われすぎだろ……。 Microsoft製Visual SourceSafe Visual SourceSafeはMicrosoftのVisual Studioで使われているソースリポジトリである。「安かろう悪かろう」の良い例だ。 多くの人がこの製品に惹かれるのは、GUIインターフェイスが使いやすく、セットアップがとても簡単だからだ。タイプするのが遅くなければ、10分で起動できる。 SourceSafeの一番の問題点は、ソースリポジトリをどうやって格納するかだ。リポジトリが格納された共有ファイルを探ってみると、AAAAAAAB.AAAとかAAACCCAA.AABのような奇妙な名前のついたファイルからなる大きなツリー構造のデータディレクトリがある。こうしたファイルの中身はプレーンテキスト(バイナリ化されていない)かそれに近い形だ。

    VSSが相変わらずフルボッコすぎる件について - 神様なんて信じない僕らのために
    rin51
    rin51 2010/04/28
  • GC読書会 - 神様なんて信じない僕らのために

    そういえば、土曜日ですが、 『ガベージコレクションのアルゴリズムと実装』読書会@関東 : ATND これに参加してきました。 主にマークスイープGCとインクリメンタルGCを読み合わせして、 各所で質疑的な何かをしていました。 詳しくは、きむら(K)さん参照。 ときどきの雑記帖 shinhさんも記憶をダンプしておられました。 2010-04-25 - 兼雑記 で、なんでガベージコレクションかというと、 「ほら、ガベコレある言語って楽じゃん?」 って、日頃思っているとガベコレが羨ましくて調べたくなるからです。 実体験としてはLuaのときにインクリメンタルGCには凄くお世話になって、 かつ、ステップ実行できることを知っていたのですが、 それがどういう仕組みで行われているかはいまいち把握してなかったので、 (GCしている最中にオブジェクトの関連は変わるわけで、これどうなるんだ? みたいな) そうい

    GC読書会 - 神様なんて信じない僕らのために
    rin51
    rin51 2010/04/27
  • 第三回カーネル/VM探検隊で「LuaVM」について話しました - 神様なんて信じない僕らのために

    第三回カーネル/VM探検隊でLuaVMについて話してきました。 カーネルとか、仮想化技術に関しては素人も良いところなので、非常に勉強になりました! 低レイヤは世界が広すぎてついていけない! とりあえずVMということで、LuaのVMで話しました。 高レベルな話が飛び交うなか、 ありなんか、これ……みたいな感じでドキドキLTしてましたが、 LTへの突っ込みが鋭く、良い経験になりました。(日々是勉強成) 会場を用意してくださったIIJの皆さん、また開催者、参加者の皆様、当にお疲れ様でした。 会場質問を受けた ・TAILCALLはなぜあるの? と、 ・クロージャを利用した場合にスタックが穴あきになってしまうがどうしているのか? (クロージャはLuaがUpvalueと呼ぶ上位関数の値を束縛してしまうので、クロージャの場合にはそれをスタックから退避する処理が入ってる) は、その場できちんと答えられま

    第三回カーネル/VM探検隊で「LuaVM」について話しました - 神様なんて信じない僕らのために
  • Visual Source Safeを使用するのは狂気の沙汰 - 神様なんて信じない僕らのために

    きっかけ。 元ネタ。 俺はVSSを使用しようというプログラマを信用しない。(と宣言しておく) 割と適当訳なのでご了承ください。 時々現れる、どのバージョン管理ツールをつかうのかという宗教的議論の中で、 私はマイクロソフトのVisualSourceSafeが一貫して叩かれている事に気付きました。 私はこれほどまでに憎悪を集めるような別のソフトウェアプロダクトを考えることができません。 私のプログラミングキャリアの日々では幸運なことに、svnを使う場所で働いていおり、さらに最近ではgitだったので、私はVSSを一度も経験したことがないということです。 VSSは当に皆が主張するくらいに悪いものですか? はい、そのとおりです!! 私はgit、svn、cvs、tfs、及びvssを使いましたが、VSSは最も悪かったです。 それには、みんなで作業を分離するという概念が全くありません。 ファイルを操作す

    Visual Source Safeを使用するのは狂気の沙汰 - 神様なんて信じない僕らのために