タグ

programmingに関するsourcekのブックマーク (78)

  • C++ コンパイラにおける値渡しの最適化 - kazuhoのメモ置き場

    プリミティブ型でなくとも小さな構造体 (or 共用体) ならレジスタ渡しになる、ってのは C で最適化されたコードを書く際に、しばしば使われるテクニック。でも C++ だと、コピーコンストラクタやデストラクタがある場合はこの最適化が不可能。他にも言語仕様的に細かな条件はあるのかな。ともかくコンパイラの実装でこの可否判断はどうなっているのか、と SUN のドキュメントを読んでいたら、とても頑張っていて驚いた。 In compatibility mode (-compat[=4]), a class is passed indirectly if it has any one of the following: A user-defined constructor A virtual function A virtual base class A base that is passed ind

    C++ コンパイラにおける値渡しの最適化 - kazuhoのメモ置き場
  • ロベールのC++入門講座を読んで C++ を初歩の初歩から再入門するよ - 前編 - ひげぽん OSとか作っちゃうかMona-

    前置き 自分の C++ レベルに絶望したので「ロベールのC++入門講座」を読んで再入門していく過程を日記に書いていきます。 「おまえはそんなことも知らずにコードを書いていたのか!」「それは間違い!」など叱咤激励募集中です:-) 読んでみたら、たくさんの驚きがありました。 スルーせずに読んでもらえると1つくらい役に立つことを提供できるかもしれません。 例えば5章のデフォルト引数に関数を使える例とか。 ルール 前置きはともかくはじめましょう。13:48にスタバで始めました。 読んで行くうえでいくつかルールを決めます。 知らなかったことは正直に知らなかったと書き、自分が読んで分かる説明を書く。 知識が曖昧だった所も同様に明確な説明を書く。 悩んだ内容を書く。 理解が怪しい所は必ずコードを書く。 さあ1章から読んでみよう。 1章 まずは使い方(13:50) 各 OS 毎に C++ の開発ツールを紹

  • プログラマの壁 - あどけない話

    プログラマに向いている人と向いていない人がいるそうです。 Jeff Atwood さんの「どうしてプログラマに・・・プログラムが書けないのか?」: プログラムを書ける者とプログラムを書けない者の間にある大きな溝についてはよく知られているが、プログラマの職に応募してくる人間は、すでにこの溝を飛び越えているものだとばかり思っていた。明らかにこれは妥当な仮定ではないらしい。プログラムを書けないプログラマの面接で時間を無駄にしないために、FizzBuzzスタイルのふるい分けが必要ということだ。 どんなことでも向き不向きはあるでしょうから、これには納得いきます。しかし、プログラマになれる人の中にも、溝があるようです。 Joel Spolsk さんの「Javaスクールの危険」: 私のささやかな経験から言わせてもらうと、伝統的に大学のコンピュータサイエンスのカリキュラムで教えられているもので、多くの人が

    プログラマの壁 - あどけない話
  • cl.pocari.org - オープンソースになった Fastladder の ER 図を描いてみた

    オープンソースになった Fastladder の ER 図を描いてみた 2008-02-10-1: [SQLite] Livedoor の Fastladder がオープンソースになったということで、勉強を兼ねて ER 図を描いてみました。 (クリックで大きくなります) 使ったツールは DBDesigner 4 (日語版) です。 DBDesigner 4 では、SQLite 3.x のデータが読めないようなので、SQLite ODBC Driver を使って、ODBC で読み込み、リバースエンジニアリングしました。 テーブルの定義はソースを見ながら作成中ですが、あまり Ruby が分かっていないので時間がかかりそうです。。。そのうち公開します。 - Fastladder Open Source http://fastladder.org/

  • 11年前のPSソフト『カルネージハート』に教わった私の原点と言えるプログラムの基礎*ホームページを作る人のネタ帳

    11年も前のプレステゲームの話などをしてもわかる方は少ないだろうけど、私のプログラムに対する考え方を教えてくれたものなので書き記しておきます。 ソフトウェアをプログラムする事が、いったい何を意味しているのかという基的な部分がそのゲームには詰まっていたからです。 そして、はてなブックマーカー達には、なぜプログラマや技術屋が多いのかというのも、この結論でなんとなく納得してしまいました。 その前にまず、カルネージハートって何よという人のために説明しておきます。 書いて気がついたのですが、かなりマニアックな話になりますので、ゲームに興味のない方は見るのつらいかもしれませんので先に言っておきます。 無人ロボット作成ゲーム 初代カルネージハートは、3対3のロボット同士を戦わせるゲームでした。 高校のときにはまり4~5年やってましたがこれが面白い。 今ではPSP版が出てますね。 ゲーム内容としては、ハ

    11年前のPSソフト『カルネージハート』に教わった私の原点と言えるプログラムの基礎*ホームページを作る人のネタ帳
  • ソフトウェアの欠陥はなぜ無くならないのか : らばQ

    ソフトウェアの欠陥はなぜ無くならないのか 先日、公衆電話がうるう年を処理できなくてサービス停止というニュースが流れました。 自己診断プログラムに欠陥があり、次の診断日時を設定する際、うるう年を考慮できなかったことがきっかけで、障害が発生したのだそうです。 こういったソフトウェア──機械的・物理的なもの(ハードウェア)以外の部分──の欠陥は、日増しに増えています。 2005年には証券取引所で単純なプログラムミスで半日取引停止になっていますし、同年にウィルス対策ソフトウェアが障害を起こしてパソコンがまともに動かなくなるなどの症状を出しました。 普通に使われてるパソコンに入ってるOSと呼ばれるソフトウェアも、毎月のように欠陥を見つけては修正を配布しています。 さて、こういった問題はなぜ起こるのでしょうか? ちょうど先日、NHKのクローズアップ現代でソフトウエア危機〜誤作動相次ぐハイテク製品〜とい

    ソフトウェアの欠陥はなぜ無くならないのか : らばQ
  • 開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi

    なかなかrootにならせてくれない、ハードウェアを選ばせてくれない、設定ファイルをviでいじらせてくれないなど、不自由なUNIX : Mac OS Xですが、それ故の自由が何物にも代え難い今日この頃。Leopardになってcron+pdumpfsの仕事まで持って行かれてしまいました。 前回のTiger版カスタマイズメモに引き続いて、Mac OS Xのカスタマイズを書いておこうと思います。 Terminal.app タブ機能が実装されたりssh-agentがKeychainと統合されたりと、Leopardで驚異的なアップデートが行われたターミナル周りですが、まだまだ改善できる余地があります。問題は以下の3点。 HomeキーとEndキーが使えない 色が見にくい ショートカットキーが使いにくい まずHomeキーやEndキーですが、これは環境設定で変更できます。Terminal.appの環境設定の

    開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi
  • コメント: PHPは駄目な言語なのか? - スラッシュドット・ジャパン

    趣味でやっている人のことは、まあ、いいとして(踏み台にされる可能性はあるけど)、仕事PHPを使うときの注意を書いておこう。 コーディング規約を守る。組織にコーディング規約がないなら、Zend Framework PHP標準コーディング規約 [zend.com]を使う。オレ流コーディングスタイルは禁止。 内部コードにはEUC-JPかUTF-8を使う。入出力もできるだけShift JISを避ける。Shift JISを使う場合には2byte目に0x5Cを含む文字の動作を忘れずに確認する。 開発環境の警告レベルをE_STRICTにする。番環境ではdisplay_errorsをオフにする。 register_globals、magic_quotesはオフにする。 type hintingを積極的に使う。 スコープの長い配列をクラスでラップする。 プレゼンテーションとロジックを分割すること。プレゼ

  • 採用面接ゲリラガイド(version 3.0) - The Joel on Software Translation Project

    Joel Spolsky / 青木靖 訳 2006年10月25日 水曜 無政府主義者とフリーラブの提唱者とバナナの権利の擁護者の寄せ集めの一団が、プエルト・バリャルタを出たラブボート号をハイジャックし、7日以内に要求が受け入れられなければ616人の乗客と327人の乗員もろとも、船を沈めると脅している。要求は何か? 番号を控えていない小額紙幣で100万ドルと、評価の高いWaterloo Fortran IVコンパイラ、WATFIVのGPL実装だ。(フリーラブの連中がバナナの権利の連中と合意できることがいかに少ないかは驚くばかりだ。) フェスティバルクルーズ社のプログラミングチームのチーフプログラマとして、あなたはFortranコンパイラを7日間でスクラッチから作れるか判断しなければならない。あなたには2人のプログラマがサポートにつく。 どうだ、できるか? 「条件によりますね」とあなたは答える

  • ゲーマーでなくても仕組みぐらいは知っておきたいアルゴリズムx40

    高校生の時、数学の先生がこう言いました。 ゲームなんて、開発者が作ったルールの上で遊ばれるだけだ。 と。 その時、ゲーマーな自分はこう思いました。 ゲーマーは、開発者が作ったルールの上で遊ばれたい。 と。 というわけで、普段何気なくプレイしているゲームには、どのようなルール(アルゴリズム)があるのか。それを知るために、いろいろなゲームのアルゴリズムなどを解析しているページへのリンク集を作りました。 ほとんどのゲームのアルゴリズムは正式に発表されていないので、ユーザーの手による逆解析だったり、大学の研究による真面目な考察だったりします。(リンク先には、一部アルゴリズムと呼べないものも含まれています) 各種ゲームのプログラム解析 ドラクエ、FF、ロマサガのプログラム解析 DQ調査報告書(リンク切れ) ドラクエの物理ダメージ計算式は質的にどれも同じだが、細かい部分で微妙に違う RPG INST

    ゲーマーでなくても仕組みぐらいは知っておきたいアルゴリズムx40
  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
  • スラッシュドット・ジャパン | 初代SimCityのソースコードが公開される

    家/.のストーリーより。初代SimCityのソースコードがGPLv3で公開された。権利を持つElectronic Artsが、SimCityをOLPCで利用できるようにと公開を認めたことによって実現したもの。 今回公開されたのは、UnixやOLPC上で動作するTcl/Tk版と、それを元にPythonモジュールへ移植中のソース。OLPC版とLinux版のバイナリも公開されている。作業を行ったのはUnix移植を手がけたDon Hopkins。今回公開されたバージョンでは、UIが修正され、911事件を受けて飛行機墜落イベントが削除されているので、完全にオリジナルと同一ではない。 なお、SimCityの商標は放棄されていないので、SimCityを名乗れるのはElectronic Artsの品質管理チェックを経てお墨付きを得たもののみとのこと。それによりGPL版はMicropolisと改称されてい

  • いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な

    いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 現場で遭遇するかも知れない、こんなプログラマ達:Geekなぺーじ

    「10 types of programmers you'll encounter in the field」という面白い記事がありました。 ひたすら毒ばかりで笑えました。 以下、要約です。 誤訳などの可能性があるため、詳細は原文をご覧下さい。 1. ガンダルフ 指輪物語のガンダルフのような風体をしていて、コードの世界において魔法が使える。 細かくどうでも良い事を議論するのが大好きという欠点はあるが、絶望を救うものとしてチームにキープしたい人材。 2. 殉教者 仕事中毒。 家では風呂と寝るだけ。 会社で寝ることにプライドを持っている。 3. マニア少年 語りだしたら止まらない。 ドラゴンボールZとガンダムWの違いについて熱く語る。 何故プレステ3がXBox360より優れているのかを熱く語る。 多くのものが日からの輸入。 職場が趣味で占拠されている。 そして、仕事中も趣味の事を考えている。

  • ひげぽん OSとか作っちゃうかMona- - Subversionの話

    Subversion を使うようになって数年が経ちますが、最近 svn diff/status/log/merge などのコマンドに熟達してきた。 気軽に ブランチを作る マージする コードを元のバージョンに戻す 問題となるコードを diff で調べる などができるようになって、作業効率が上がったり、こまめにコミットさえしておけば、あとからどうにでもなるので精神的にもかなり楽になった。 この「気軽に」ってのがとても重要。 以前だって、マージの概念やいつでも好きなバージョンに戻せること、diff を表示することが出来るのは知っていたし、たまに使っていたりもした。 ただ使う場合は コマンドをWebで調べる おそるおそる試してみる 失敗して check out しなおしで時間をロス などがありストレスがたまりがちで、結果的にこれら有用な機能を使うのを無意識に避けていたなと、振り返ってみると気づく

    ひげぽん OSとか作っちゃうかMona- - Subversionの話
  • 機械語ではマシンの挙動は理解できない - 未来のいつか/hyoshiokの日記

    実のところ機械語はマシンに対する高レベルな挙動を示す命令であって実行を厳密に写像したものではない。(何を言っているんだわたしは?) 「マシン語ってどんな感じか知りたくなった方へ」という大人気のエントリと、ニコニコ動画を見て、昨今の最新マイクロプロセッサでは機械語がもはや機械の挙動と一対一に対応しなくなっちゃったのである、というツッコミをしたくなった。http://d.hatena.ne.jp/shi3z/20070913 「水野拓宏のTK-80講座」これが素敵すぎる。http://www.nicovideo.jp/watch/sm1048903 最近のプロセッサ(Pentium 4とかXeonとか)は機械語を機械が直接実行するのではなく(じゃあ、なんで機械語というだよというツッコミは諸般の事情で却下(w))、機械語をμOPという機械語と一対Nに対応する命令に変換し実行するのである。Java

    機械語ではマシンの挙動は理解できない - 未来のいつか/hyoshiokの日記
  • Life is beautiful: 私のとっておきのプログラミングスタイル

    404 Blog Not Found の「LiveCoding に学ぶプログラミングの三原則」を読んでいたらどうしても書きたくなったので。あくまで私のスタイルなので、参考にするもしないもご自由に。 1. スタードダッシュでできるだけはやくめどをつける 学生時代から夏休みの宿題は7月中に終わらせていた私とすれば、ラストスパートよりはスタートダッシュで勝負する。どのみち、どこかで思いっきり頑張らなければならないのであれば、締め切り間際ではなく、スタート間際に頑張るべきというのが私のポリシー。十週間のプロジェクトであれば、最初の二週間が勝負。そこで八割がたのめどをつけておき、後は流す。最初の二週間がめどが立てられなければ、十週間で完成できる可能性は低いと考える。常にそういう姿勢でいれば、締め切りぎりぎりになって致命的な欠陥が見つかって痛いめにあったり、当は大幅な設計変更をすべきなのに応急処置で

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • スマッシュブラザーズXに物理エンジン「Havok」が採用 - わぱのつれづれ日記

    次世代ゲーム機において向上された処理能力により、ゲーム性に影響を与える要素として注目されるものに「AI」、そして「物理演算」があります。「AI」は特に大量に敵キャラが出たときにそれぞれが個性的な動きをすることでリアリティや臨場感を高めることにつながり、物理演算もキャラクターが攻撃を受けた際の吹っ飛び方やぶつかり方、障害物の壊れる際のリアリティの向上などにつながります。また、PS3の「LittleBigPlanet」なんかは、ゲーム性の中心に物理演算を据えて注目されているゲームですよね。 こうした演算処理を多く要するものは、次世代ゲーム機の中では圧倒的に処理性能が劣るWiiは不利な部分だと思われていましたが、そんなWiiで、この冬最大の注目作の「スマッシュブラザーズX」に、物理エンジンである「Havok」が利用されているという情報が入ってきました。 Havok公式サイトに「スマブラX」の名前

    スマッシュブラザーズXに物理エンジン「Havok」が採用 - わぱのつれづれ日記
  • ユメのチカラ: ソースコードの読み方

    ソフトウェア工学の標準的なカリキュラムにソースコードの読み方というのがあるのかないのか知らないが、プログラマとして最も重要な資質の一つにコードの読解力というのがある。 ついでに言えば、大学や専門学校であまり教えられているとはいえないけど、実践では常に必要とされているものとして、テストの方法論、デバッグの方法論、性能向上の方法論、メモリなど各種資源の削減方法論などなどがある。国際化、移植性なども重要な単元であるがソフトウェア工学の中で教授されていると言う話はあまり聞かない。コードのハック一般についてどこかで議論されているのだろうか。経団連あたりで議論しているのだろうか? 閑話休題。 ソースコードの読み方ということで、最近では「コード・リーディング」というそのものずばりの教科書も出ているので状況は好転しつつある。コードの読み方はオープンソースの時代になり、間違いなく広く情報を共有できるようにな