タグ

ブックマーク / yaneurao.hatenadiary.com (21)

  • Code Reading ――― 他人のコードを読む! - やねうらおブログ(移転しました)

    自分ではソースがすらすら書けるのに他人のソースをほとんど理解できないという人が居る。 他人のソースを理解できないという傾向は仕事でしかプログラムに関わっていないという人に顕著だ。仕事の過程であまり他人のソースを読むことはないから(他人のソースを読む作業は直接的な生産作業ではないから)、そういう能力が養われない。おまけに資料(ハウツー)は会社のお金で買ってもらえたり、理解の及ばない部分を前任者に説明を求めたり、あまつさえフローを書いてもらったりできる。はっきり言って生ぬるい。そういうことをする限り、コードを読む力が養われるはずがない。そういった環境に自分の身を投じること自体が、技術者としての自分をダメにしているというのに多くの人はそれがわかっていないのだ。 この、他人のソースを読む力というのは、うちの会社でやっているような移植作業だと特に重要視されるものである。今回のアルバイト募集でそのへ

    Code Reading ――― 他人のコードを読む! - やねうらおブログ(移転しました)
  • やねうらお-よっちゃんイカを買いに行ったついでに家を買う男 -プログラミング名著100選(2)

    「ほげほげのプログラムが書ける」と言った場合、プログラミング言語そのものを理解しているというよりは、何かやりたいことがあって、それをプログラムとして書き起こせる、ということを意味する場合が多い。プログラミング言語の構文をいかに習得しようとも、プログラムが書けないことは多々ある。 少しでもプログラミング言語を勉強した者ならば実感しているだろうが、プログラミング言語そのものにはわずか数十のkeywordしか出てこない。せいぜい、1時間か2時間勉強すれば覚えられるはずだ。だけど、それだけでプログラムが書けるようになるわけではない。一体、何が足りないのだろうか? これにはいろんな要因があるのだが、まず「データ構造とアルゴリズム」に対する理解が不十分だということが挙げられる。 私はN.ヴィルト先生の『アルゴリズム+データ構造=プログラム』で勉強したが、このは、いまや入手困難だ。その後、このをベー

    やねうらお-よっちゃんイカを買いに行ったついでに家を買う男 -プログラミング名著100選(2)
  • プロとして恥ずかしくない - やねうらおブログ(移転しました)

    MdNから「プロとして恥ずかしくない」シリーズが出ていて書店でも結構売り上げを伸ばしている。なんとも憎らしいタイトルだが、ひげぽんに紹介したところ気に入ってくれたようだった。(id:higepon:20051009) このシリーズは全ページカラーで値段のわりにページ数は少ないばかりだ。屋で立ち読みしてもいいし、会社にあるならそれを読めばいいと思う。 それにしてもMdNは、悔しいぐらいに編集がしっかりしている。 この出版社のには、いつも圧倒されっぱなしだ。

    プロとして恥ずかしくない - やねうらおブログ(移転しました)
    alcus
    alcus 2015/05/18
  • 新刊紹介 - やねうらおブログ(移転しました)

    シアトルで知り合った吉岡さんがPowerShellのを出されたので紹介しておく。(id:newpops:20070319) PowerShellっていうのは、Windowsのシステム管理者向けのコマンドシェル環境らしいのだが名前しか知らなかった。 LispハッカーであるPaul Graham氏がインターネット上で公開していた文章の訳が出た。マシンが高速になってきた昨今、昔は遅くて実用としてはほとんど使い物にならなかったような言語が実用になる時代になった。Lispもその一つなんじゃないかと勝手に思っている。 「ゼロからはじめる」シリーズの新刊4冊。このシリーズはイラストが豊富で説明が大変わかりやすいので新人の教育にどうぞ。 リファクタリング2冊。結城先生のはいつもながらわかりやすい。リファクタリングを通じて、良いプログラムの書き方を学んでみてはどうだろう。 私は結城先生ののなかでは

    新刊紹介 - やねうらおブログ(移転しました)
    alcus
    alcus 2015/05/18
  • iPhone 3Dプログラミング - やねうらおブログ(移転しました)

    オライリーの編集の人からiPhone 3Dプログラミング ―OpenGL ESによるアプリケーション開発を献していただいた。 内容を手短に言うと、OpenGL ES 1.1/2.0の使い方を解説するために、線形代数の説明をしながらObjective-Cを使ってサンプルプログラムを書いてみました、という感じのだ。 OpenGL ES 1.1/2.0で開発しているiPhone以外のプラットフォームの人にも役に立つと思う。 ありがちな解説書かと思いきや、書の後半には結構実践的なことが書いてある。 例えば、文字を拡大したときにも綺麗に表示させたいときに、距離場を使えばいいだとか。これは、Chris Green氏が2007年に発表した論文*1に書かれているテクニックで、グリフ(≒文字)に対して符号付き距離場を作成する方法だ。 グリフからの距離をグレースケールのテクスチャで表す。例えば距離0を灰

    iPhone 3Dプログラミング - やねうらおブログ(移転しました)
  • タスクマネージャーの起動方法について - やねうらお

    先日、私はプレゼンのときにマウスしか手元になくて、Windowsのタスクマネージャーが起動できずに困ったんだ。 言うまでもなく、キーボードさえあれば、Ctrl + Shift + ESCで一発起動だ。Ctrl + Alt + Delなんて軟弱なことはしない。 マウス操作の場合でもタスクバー領域で右クリックすればいいのだけど、タスクバーにはアイコンが溢れててクリックする空間がなかった。 では、どこでクリックすればいいのか。 普通は、タスクバーの一番下ならどこでも右クリックすればコンテキストメニューにタスクマネージャーが出てくるはずなのだけど、そのマシンは非力なマシンでAeroがオフになっていた。するとタスクバーの一番下の領域では右クリックしても出てこないのだ。 ちょうど同席していた生意気な少年が、ここを右クリックするといいですよと教えてくれた。(下図) 上図の赤い領域だ。スタートボタンの左上

    タスクマネージャーの起動方法について - やねうらお
    alcus
    alcus 2011/02/16
  • 美しすぎるプログラムを解読せよの巻 - やねうらおブログ(移転しました)

    #include <iostream> #include <cstring> using namespace std; long long dp[18][4][4][4][4][4][4][4][4][4][4]; #define FORN( n ) for ( int i##n = 0; i##n < 4; i##n ++ ) int main() { memset( dp, 0, sizeof( dp ) ); FORN( 0 ) FORN( 1 ) FORN( 2 ) FORN( 3 ) FORN( 4 ) FORN( 5 ) FORN( 6 ) FORN( 7 ) FORN( 8 ) FORN( 9 ) dp[0][i0][i1][i2][i3][i4][i5][i6][i7][i8][i9] = 1; for ( int r = 1; r <= 17; r ++ ) { FORN

    美しすぎるプログラムを解読せよの巻 - やねうらおブログ(移転しました)
  • 3回に1回出力するだけの簡単ではないお仕事 - やねうらおブログ(移転しました)

    なんかさ、3回に1回出力するだけの簡単なプログラムのお仕事ってあるじゃん。 if ( (++counter % 3) == 0) printf("Fizz\n"); これって意外と難しいんだよね。 ……なんてことを言うと「おいおい、天下のやねうらお、ついに頭おかしくなったか」とか言われるだろうけど、これ実際うちの仕事であった話で、このコードが原因でお客さんと大きなトラブルになった。 あまり具体的には言えないので、ちょっと別のものに置き換えて話すけど、それは、ひよこの餌やりプログラム(仮)だったわけ。 上のプログラムは、3回に1回だけど、このソフトには、N時間に1回、餌をやるロジックが書いてあった。 if ( (++counter % N) == 0) printf("餌やるでー\n"); なんかこんな感じな。それでNの値は、UI(ユーザーインターフェース)で調整できる作りにしてあった。一度

    3回に1回出力するだけの簡単ではないお仕事 - やねうらおブログ(移転しました)
    alcus
    alcus 2010/10/12
  • やねうらお―よっちゃんイカを買いに行ったついでに家を買う男 - プログラミング名著100選

    プログラミングの書籍のなかから、100冊を選りすぐってみたい。 まずはC/C++言語系。 「Effective C++」「More Effective C++」「Effective STL」この3冊は外せないだろう。持ってなければモグリだ。(「Effective C++」「More Effective C++」は、原著第3版が出たのでリンク差し替えた。) 「Modern C++ Design」に関しては、どうせ使えもしない(?)lokiの解説がてらtemplateの解説をしてあるだけなので、いまであれば、boostのtemplate解説である「C++ Template Metaprogramming」のほうがいいような気もするが、これまだ邦訳されてないので英語の苦手な人は「Modern C++ Design」以外の選択肢は無い。 あと例外安全について書いてあるとして「Exception

    やねうらお―よっちゃんイカを買いに行ったついでに家を買う男 - プログラミング名著100選
    alcus
    alcus 2009/11/24
  • 2カラーせんせいで打ち合わせ - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術

    2カラーせんせいposted with amazlet at 09.02.12タカラトミー (2006-08-25) 売り上げランキング: 661 Amazon.co.jp で詳細を見る タカラトミーのおもちゃで「せんせい」という子供用のホワイトボードがある。先端にマグネットのついたペンでこのホワイトボードに絵を描くことが出来る。誰もが一度は手にしたことがあるだろう。 これの2色のペンが使えるものが発売された。「2カラーせんせい」はアマゾンで2,980円である。これが打ち合わせのときにちょっとした図を描いて説明するのにとても便利なので私は活用している。赤いペンで描くと赤い色になり、黒いペンで描くと黒い色になる。線の太さも太くとても見やすい。普通のホワイトボードと違い、消すのが容易だし水性ペンと異なり、ペンは消耗しないのでいつまでも使える。 マグネット式なのに色が使い分けられるだなんてとても

    2カラーせんせいで打ち合わせ - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術
    alcus
    alcus 2009/03/18
  • Excel VBA アクションゲーム作成入門 - やねうらおブログ(移転しました)

    Excel VBA アクションゲーム作成入門 Excel 2007/2003/2002 対応posted with amazlet at 09.03.17近田 伸矢 谷 孝一 武藤 玄 USA【うさ】 影斬 インプレスジャパン 売り上げランキング: 399 Amazon.co.jp で詳細を見る まったく凄いが出ました。ExcelVBAゲームを作っちゃうです。 こんな、どれだけ需要があるのかわかりませんが、ExcelVBAの底力を知る貴重な資料だと思います。ExcelVBAのテクニック満載なので、ExcelVBAをある程度使いこなしている方も、「こんなことが出来るのか!」と参考になります。 とは言え、このはあまり売れないのではないかと思います。もちろんExcel好きな私は速攻買いましたが。 以下、紹介動画。

    Excel VBA アクションゲーム作成入門 - やねうらおブログ(移転しました)
    alcus
    alcus 2009/03/18
  • プログラマが1ヶ月でWebデザイナーに転身する方法 - やねうらおブログ(移転しました)

    サイトを構築していると、プログラマはWebデザイナーと共同作業をしなければならない。 しかし高度なRIAを実現しようとすると思っているようにWebデザイナーに素材を作成してもらうだけでもとても骨の折れる作業だ。 そこで、一層、「すべてのプログラマはWebデザイナーになればいいんじゃね?」と思った。 今回は、私の実体験に基づき、「プログラマが1ヶ月でWebデザイナーに転身する方法」というのを考えてみた。 ■ HTML,CSSを覚えよう まず、HTMLCSS。いくら私でもW3C( http://www.w3.org/ )のすべてに目を通せとは言わない。 ブラウザ間で挙動が違うのでそれぞれのタグがどのブラウザで使えるのか一覧がまず欲しい。手軽なのは詳解HTML & CSS & JavaScript辞典。このハンドブックは見やすいのでお勧め。また、よく使うタグに関してはすべて覚えよう。覚えている

    プログラマが1ヶ月でWebデザイナーに転身する方法 - やねうらおブログ(移転しました)
    alcus
    alcus 2009/03/18
  • 将棋方程式を発見した! - やねうらおブログ(移転しました)

    このタイトルの「将棋方程式を発見した!」はよくある誇大広告なのでそこは読者の方々の生暖かい目で見守っていただくとして、今回は、以下のエントリに触発されて将棋では序盤で玉を囲ったほうが何故有利なのかを考えてみた。 なぜ美濃や穴熊が堅いのか? をCOMが理解できると理想なんですが、 攻めるには、駒が何枚いるとか、そういう見積もりみたいなモノで、 囲いの堅さって評価できるもんなんですかねえ? http://d.hatena.ne.jp/mkomiya/20080403 私は将棋はアマ三段程度の棋力*1しか無いので偉そうなことは言えないが、私は将棋と言うゲームを以下のようにシステマティックに捉えている。 1) 将棋の駒は、飛車・角を除けば、すべて移動が遅い駒である。(この点、チェスとは異なる) 話を単純化するために歩と金だけしかない将棋をイメージするとわかりやすい。 2) 1)により、普通は、持ち

    将棋方程式を発見した! - やねうらおブログ(移転しました)
    alcus
    alcus 2008/04/03
  • ENTERキーの壊れたおっさん - やねうらおブログ(移転しました)

    知り合いのおっさんが、ENTERキーを壊した。そのおっさんは、いつも力をこめてENTERキーを押すので、ENTERキーを押すときだけパコン、パコンと高い音が鳴っていた。 なんでも急いで伝票を印刷しなければならないらしく「どないしたらいいですか、助けてください」と私に電話がかかってきた。 「そんなん知らんがな!」と思いながらもキーバインドを変更するフリーソフトを紹介したが、今度はインターネットのつなげ方は娘しかわからないとかぬかしやがる。 「ほんとに面倒くさい人だなぁ」と思いながら、「そしたら、いいですか。ALTキーを押し下げて、押し下げたまま、テンキーで 1 , 3と入力して、そのあとALTキーから指を離してください」と言った。*1 どうやら、そのおっさんはそれで事足りたらしく満足げだった。 というのは、2年ほどの前の話で、最近になって知ったのだが、そのパソコンはいまだにENTERキーが壊

    ENTERキーの壊れたおっさん - やねうらおブログ(移転しました)
    alcus
    alcus 2007/11/15
  • C#で書いたソフトの配布と7-Zipのライセンス - やねうらおブログ(移転しました)

    VisualStudio2005では、セットアッププロジェクトと言うのが作成できて、インストーラが簡単に作れるのだけども、そのときに.NET Framework2.0やWindowsInstallerも自動的にインストールされるように設定できる。C#で書いたアプリをCD-ROMなどで配布する場合は、これを利用するのがお手軽である。 以前、Windows2000の場合、Windows Installer3.0をインストールする必要がある(→id:yaneurao:20060524)と書いたが、これは、マイクロソフト公式でそう書かれていたのだけども、実際はWindows Installer2.0のほうをWindows2000にインストールすることが出来るようなので、こちらを指定しておけば良いようだ。 インターネット経由で自分の作ったアプリを配布したい場合、.NET Framework2.0もバ

    C#で書いたソフトの配布と7-Zipのライセンス - やねうらおブログ(移転しました)
  • GPU Gems 2 日本語版 - やねうらおブログ(移転しました)

    GPU Gems 2 日語版」が発売になった。GPUはいまや携帯ハードにも搭載されていて、今後、3Dをごりごりやっていこうという人にとっては必読の書ではあるのだが、このシリーズや「Game Programming Gems」シリーズは日語版は高いので、英語が読めるならば英語版のほうがいいだろう。 ←こちらは英語版。

    GPU Gems 2 日本語版 - やねうらおブログ(移転しました)
  • 単方向linked listの循環参照判定をO(n)で行なう - やねうらおブログ(移転しました)

    「諸悪の根源は物理的」より。(id:ladybug:20051116経由) http://www.cotton-tree.com/garyu/archives/2005/11/post_156.html 単方向リンクリスト(連結リスト)がある。ノード数を n とするが、n の値は 分からない。リスト中にループ(循環参照)が存在するか否かを O(n) で判定する アルゴリズムを示せ。ただし、リストの各ノードの内容を変更してはならない。 つまり、単純にポインタが指したノード全てにマーキングをしておいて、 新しいノードに移るたびにマーキングされているかを調べることで判定することは 出来ない。 no markingが条件として与えられているが、当然、no labeling,no recursionで求めなければならない。labelingありなら、たとえば以下のように簡単に求まる。 bool isC

    単方向linked listの循環参照判定をO(n)で行なう - やねうらおブログ(移転しました)
  • Real-Time Rendering読書会 - やねうらおブログ(移転しました)

    3D関係全般(大域照明、ピクセルシェーダー等)までを扱った手ごろな(中級者向けの)入門書というと、「Real-Time Rendering」(洋書)が有名だ。id:ryoko_komachi:20051112:1131877398が読書会のレポートを書いている。興味のある人は参加してみてはどうだろう? ところで、CG技術の花形である大域照明と言えば「Advanced Global Illumination」(洋書)が有名。SIGGRAPHカンファレンスの同名コースのコースノートがベースとなっている。 このに関してはspinの紹介記事が詳しいので、割愛。 http://spin.s2c.ne.jp/news0301.html あとは「Physically Based Rendering」(洋書。通称pbr) スタンフォード大学での3Dレンダリングの講義で用いられてきたテキストをまとめてあ

  • 5×5 プロフェッサールービックキューブ - やねうらおブログ(移転しました)

    5×5のルービックキューブが発売された。その名も「5×5 プロフェッサールービックキューブ」 3×3ならflashで遊べるものがある。 http://www.rubytooth.com/media/37407/ 5×5のも↑のような操作性のものを作ればいいのだが、あまりやりすぎてしまうとルービックキューブの特許に抵触しかねないし、「どうせ底面から揃えていくのだから、展開図で十分では?」とロベールさん(C++講座で有名な http://www1.kcn.ne.jp/~robe/ )と話していたら、速攻作ってくれはった。 http://www1.kcn.ne.jp/~robe/soft/index.html ちなみに、3×3のルービックキューブの解法に関しては、ツクダ式の解法(これは誰でも手順通りにやれば出来る)のほかに、トッププレイヤーが用いているLBL法などがある。最近、それらをまとめた

    5×5 プロフェッサールービックキューブ - やねうらおブログ(移転しました)
  • やねうらお-よっちゃんイカ(ry - リアルタイム衝突判定

    3Dプログラマ必携の書「Real-Time Collision Detection」の訳が出た。その名も「ゲームプログラミングのためのリアルタイム衝突判定」である。間違いなく良書なので3Dをやるつもりならば迷わず買っておいて損はない。 ちなみに3Dプログラミングをやる上で、一番まとまっているは「ゲームプログラミングのための3Dグラフィックス数学」だろう。こので3Dをやるのに必要な知識の大半は得られる。 あとは、3Dゲームのエンジン部分をどう設計するかという問題があるのだが、私は「3D Game Engine Design」(洋書)で勉強した。この著者のEberly氏は数学者であり、こののなかでは衝突判定についても数学的にかなり詳しく解説がされている。いま買うのであれば、Eberly氏がそのあとに出した「3D GAME ENGINE ARCHITECTURE」(洋書)もセットでお勧め

    やねうらお-よっちゃんイカ(ry - リアルタイム衝突判定
    alcus
    alcus 2005/11/15
    3D関連の本の紹介