プログラムに関するkennakのブックマーク (654)

  • ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない? - 神様なんて信じない僕らのために

    ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない C++では基底クラスにvirtualデストラクタを書こう - *「ふっかつのじゅもんがちがいます。」withぬこ はよくある間違い。あるいはC++初心者の勘違い。 継承する可能性のあるクラスにはすべてvirtualデストラクタを作る C++では基底クラスにvirtualデストラクタを書こう - *「ふっかつのじゅもんがちがいます。」withぬこ ということが否定されていることは言われるようにEffective C++を読んでいればわかること。 C++では、コピー不可にするために以下のようなクラスを書いたりするが、 (コピーコンストラクタとコピー代入演算子を無効にする) class Uncopyable { protected: Uncopyable() {} ~ Uncopyable() {}

    ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない? - 神様なんて信じない僕らのために
  • Shader.jp - Articles-第3回「輪郭線処理」

    第3回「輪郭線処理」 1.はじめに 今回は,トゥーンシェーディングなどのノンフォトリアリスティックレンダリング(NPR)でよく使われる輪郭線処理をRenderMonkeyを使って解説します. 2.輪郭線抽出 輪郭線抽出というと,2次元画像処理ではラプラシアンフィルタやSobelフィルタなどの方法が思い当たります.ですので,こうした手法をレンダリング後シーンに適用してやればいいんじゃないかと思われます.この方法で出来たのが,Fig 1です.ただ,これだと単色のモデルだとシルエット部分しか輪郭線が描画できません.これでは内部の構造を考慮して輪郭線を描くことができません. そこで,今回は,Fig 2のような感じのモデル内部の構造を考慮した輪郭線を描くシェーダを解説します.このシェーダでは,Fig 3の法線をレンダリングしたテクスチャとFig 4の深度をレンダリングしたテクスチャを用いて,そ

  • List::FrontCode - naoyaのはてなダイアリー

    先日 Array::Gap という Variable Byte Codes による整列済み整数の圧縮の実装を作りました。(id:naoya:20080906:1220685978) 今日は Front Coding を使った同じような圧縮リストクラス、List::FrontCode を作ってみました。Front Coding は辞書式順に整列済みの文字列リストなどを圧縮する手法です。WEB+DB PRESS Vol.42 のアルゴリズム&データ構造の記事で PFI の岡野原さんによる解説があったので、それを参考に実装しました。 Front Coding Front Coding は http://www.hoge.jp http://www.hoge.jp/a.htm http://www.hoge.jp/index.htm http://www.fuga.com/ http://www.

    List::FrontCode - naoyaのはてなダイアリー
  • Cowboy Programming » Debugging Memory Corruption in Game Development

    Definition:   Memory corruption is an unexpected change in the contents of a memory location. The symptoms of memory corruption can range from hard crashes, all the way through minor glitches, to no symptoms at all. The causes of memory corruption are many and varied, and include memory corruption itself.     In this article I attempt to classify the various ways in which memory corruption can man

  • Shibuya.lisp

    Mahjong Ways 3 adalah permainan slot online yang menarik yang menghidupkan permainan ubin klasik Tiongkok dengan sentuhan modern. Dikembangkan oleh PlayStar, game ini menawarkan pengalaman unik dan menarik dengan sistem pembayaran kluster dan gulungan berjatuhan. Gambaran Umum Permainan Gameplay dan Fitur Mahjong Ways 3 menonjol dengan mekanisme permainan inovatifnya: Fitur Bonus Permainan ini men

  • steps to phantasien(2008-09-07) v8祭り

    ウェブっ子の間では Google Chrome の JS 処理系である V8 祭りが絶賛開催中らしい. いつもは出遅れる私もたまにはやんやしたいと思っていろいろ読んでみたものの, VM に傷気味な自分に気付いた. けれど, そうは言っても祭りは別腹. 一通り騒いでみます. 販促マンガ や 資料 によれば, V8 は以下のような特徴を備えている. hidden class transition と fast property access generational accurate GC accurate だから incremental GC もできる オブジェクトの rellocation はするけど handle は使わず参照元書き換え 中間表現のインタプリタなしの native code 生成. instruction cache コードをみたところ, incremental GC

  • V8 祭りつづき - Backnumbers: Steps to Phantasien

    前回の続きです. コードは飽きないうちに読め. これまでのあらすじ: プロパティアクセスを速くしたいから JIT をしようぜ. コンパイラ概観 V8 のコンパイラは JavaScript の AST を機械語に変換する. (AST はパーサがつくる.) AST のツリー構造は, Node クラスのサブクラス一族で構成されている (ast.h) コンパイラは関数の AST である FunctionLiteral オブジェクトをうけとって Code オブジェクトを生成する. AST とコンパイラは(またしても) Visitor パターンでつながる. (Visitor 好きは Strongtalk からの伝統らしい. Strongtalk VM のコンパイラも同じようなことをしている. 20 世紀の残り香が...) AST 側は Vistor のインターフェイスを提供する: //ast.h cl

  • デストラクタの振る舞い - 神様なんて信じない僕らのために

    職場で 継承先でデストラクタを省略したり、 virtualとつけなかったらどうなるの? って言われたので、 「基底クラスに従うんだぜふじこ!」(ふじこは長いので略) とかいう話をした。 質問者が何を心配してたかっていうと、 基底Aを継承したB、 Bを継承したCがあるとき、 Aはvirtualなデストラクタを持っているが、 Bにはデストラクタがなく、 Cにはvirtualを省略したデストラクタがある。 この場合、 A* ac = new C(); delete ac; B* bc = new C(); delete bc; はCのデストラクタを正しく呼び出すのか? ということだ。 呼び出されなかったらえらいことだろふじこ!! Bには暗黙のデストラクタがあるんだふじこ!! Cで省略してもAの状態を引き継ぐんだぜふじこ!! だけど、省略すると読み手が混乱するから省略しないようにしなさいよねふじこ

    デストラクタの振る舞い - 神様なんて信じない僕らのために
  • Tag/XPath - Humming Via Kitchen

    XPathでnamespaceにハマった。 lxml で XPath 使ってる時に namespace でハマったのでメモ。 ありがちなところでハマった。 恥さらしの為にもメモりますです。 どんなところでハマったかと言うと、 例えばこんな感じの test.xml なXMLがありまして、 <?xml version="1.0" encoding="UTF-8"?> <root xmlns="http://example.com/hoge/1.0"> <child> <type>1</type> <name>hoge</name> </child> <child> <type>1</type> <name>hige</name> </child> <child> <type>0</type> <name>hage</name> </child> </root> >>> from lxml im

  • IBM Developer

  • Xalan-Java 2.7.1: Class XPathAPI

  • 第 36 回 ~ 拡張for文とIterator ~ (株式会社イーブ|未経験・転職の方も就職可能。Javaプログラマー育成のエキスパート)

    今回のテーマは「拡張for文とIterator」です。 Java5で導入された拡張for文を使うと、コレクションの走査が非常に簡単になります。 拡張for文の内部ではIteratorが使われていて、処理の内容自体はこれまでのIteratorを利用したループと変わりません。 では、拡張for文があればIteratorはもう使う必要がないのでしょうか。 実は拡張for文ではできない処理があり、Iteratorはまだまだ現役なのです。 以下のサンプルで、拡張for文ではできない処理を検証してみましょう。 import java.util.ArrayList; import java.util.Collection; public class Main { public static void main(String[] args) { Collection<Integer> sam

  • Iteratorより基本forループでArrayListのget()を使ったほうがいいなんて話はもはや百害あって一利なしです。 - 矢野勉のはてな日記

    Java yoshioriさんがいいこと書いてるのを発見しました。私も大賛成。今までArrayListが返ってきていたから getでfor文を書いていたとき。 フレームワークをバージョンアップして もしもそこがLinkedListになっていたら それだけでかなりのパフォーマンスの低下になる。 (Iteratorの誤差など遙か彼方へ吹き飛ぶほどに) そのリストを使っているfor文を全部調べ上げて すべて書式を変更するのはかなりの作業になるだろう。 だから、JavaではIteratorを使うべきだ。 関連記事はこのあたりかな。 http://d.hatena.ne.jp/BlacksmithMirai/20061017/1161081012LinkedListに関する不適切な説明J2SE 5.0虎の穴 拡張 for 文 Iteratorと基forループとの話は、櫻庭さんまで上記虎の穴のリンク

  • JavaのXPath実装の比較 (2007-05-05)

    いままで日語のAPIドキュメントがあるという理由でjavax.xml.xpath.XPathを使っていたのだけれども、隣の芝生であるところのorg.apache.xpath.XPathAPIが異様に青く見えて仕方ないので違いを調べてみた。 一番の違いは、前者はファクトリクラスで生成したオブジェクトを使ってXPath式を評価するのに対し、後者はスタティックメソッドを使ってXPath式を評価する点だと思った。あとはメソッドに渡す引数の型が java.lang.Object か org.w3c.dom.Node かの違いとか、返ってくるのが java.lang.Object か org.w3c.dom.NodeList かの違いとかそんなところ。ちょっと細かく見ていってみよう。 こういうXMLを処理させたい。 <?xml version='1.0' encoding='UTF-8' ?> <d

  • プログラミングの力を生み出す本 - bkブログ

    プログラミングの力を生み出す 知人がお勧めしていた『プログラミングの力を生み出す』を読みました。 読みはじめてすぐに、このは異色なプログラミングの入門書であることがわかりました。普通のプログラミングの入門書は「プログラミングとは」という序論が終わったら hello, world 的なものからコードを書き始めるものが多いと思うのですが、書の導入はまるっきり異なります。1章の目次は以下の通りです(カッコ内は私のコメント)。 1章 プログラミングへの導入 プログラミングことはじめ(なぜか例が x-y プロッタ) プログラミングの構造(なぜかフローチャート登場) データ(整数、文字列、論理型など) プログラミング言語の構造(コンパイラ、リンカの説明とか) x86 CPU の概要(レジスタの説明とか) GCC と GNUPLOT(なぜか GNUPLOT が導入に登場...) GNU アセンブ

  • J2SE5.0

    J2SE 5.0 J2SEの次期リリース版である5.0。 今までのようなマイナーバージョンアップではなく、大幅な言語仕様修正が入りました。 なんたって(1.5ではなく)5.0ですから。 以下、その主な内容です。 Generics これが、一番大きな修正点でしょう。 簡単に言うと、コレクションの「型」を指定できるようになりました。 以下のようなロジックがあったとします。 List list = new ArrayList(); list.add("abc"); list.add("def"); for (Iterator it = list.iterator() ; it.hasNext()) { String s = (String)it.next(); System.out.println(s); } これが Generics を適用すると以下のようになります。 List<String>

  • Java SE 6 Mustang新機能

    [ Topページへ戻る ] [ Java SE SDKをビルドする ] Java SE 6 Mustang新機能 2005.10.20よりアクセス はじめに Mustang開発の主要テーマ リリース予定 JSR-270(Java SE 6追加仕様)で定義された新機能 JSR-199 コンパイラAPI JSR-269 アノテーションプロセッサー 参考URL JSR-250 標準アノテーション 新機能 コアクラス 文字列 ファイルI/O ネットワークI/O ユーティリティ JFC/Swing 全般 OSネイティブなルック&フィールにSwing対応を強化 Swingのサンプルプログラムを強化 レイアウト機能の改善 Swingのドラッグ&ドロップ改善 真のダブルバッファリングを提供 JTableでソート機能、ハイライト、フィルター機能を提供 Swingで別スレッドを扱うユーティリティクラスSwin

  • Java Programming Tipsクラスローダーを自作する方法

    【概要】 クラスローダーを自作する方法の紹介。クラスローダーの自作が有効なケースとして代表的なものは次の通り。 ・同一 FQN で異なるクラスを扱いたい(複数バージョンのライブラリを同一 JVM 上で取り扱いたいときなど) ・クラスの定義を Jar ファイルからの読み込み / HTTP からのクラス定義のロードなどの標準的な方法ではなく、独自の方法で動的にロードできるようにしたい。 【キーワード】 クラスローダー、ClassLoader、自作、つくり方 1. DirectoryClassLoader の作成 今回はクラスローダー作成のはじめの一歩として、極めてシンプルで原始的、かつ不完全なクラスローダーを作成する。具体的には指定されたディレクトリに格納されているクラスファイルを動的にロードするだけの DirectoryClassLoader を作成する。 import java.io.Bu

    Java Programming Tipsクラスローダーを自作する方法
  • 「=>」の読み方、Rubyでは「hash rocket」、Javaでは「fat arrow」、C++では「goes to」 - Servlet Garden @はてな

    プログラムやコマンドの使い方を言葉で、たとえば電話越しで説明しないといけない状況に陥ったときにハタと困ったんですよ。「これ、どう発音すれば相手はわかってくれるのか‥?」と。プログラムと言えば、{}だの、^だの、なんとも言い表しがたい記号があちこちに散在しています。調べてみたら、こんなブログがありました。英語のネイティブスピーカでもけっこう困っているんですねぇ。 » Coding Horror 冒頭には "I responded with a single line of Ruby to do the same, and a single line of Lisp." "He wrote back: "Underscores, pipes, octothorpes, curly braces -- "、、、"What the heck is an octothorpe?" とあり、笑えます。

    「=>」の読み方、Rubyでは「hash rocket」、Javaでは「fat arrow」、C++では「goes to」 - Servlet Garden @はてな
    kennak
    kennak 2008/08/29
    読み方
  • パターンマッチと項書き換え - Mathematica で非可換なシンボル計算 - NyaRuRuが地球にいたころ

    状態遷移のテスト法 - 東方算程譚 状態遷移のテスト法(そのに) - 東方算程譚 遷移行列てのはある状態からある状態に遷移させるのに必要な事象の行列。 断 弱 中 強 断 風 電 弱 電 風 中 電 風 強 電 風 わかるよね。縦に並ぶのが今の状態、横に並ぶのが次の状態。 この表によると、弱から中にするには風ボタンを押せばいい。 さて、この遷移行列をTとし、T^2 (=T×T) を求めると: 断 弱 中 強 断 風風+電電 風電 電風 弱 電風+風電 電電 風風 中 電風+風電 電電+風風 強 電風+風電 電電 風風 こんなのができます。 これは二回の操作で状態を遷移させるときの事象の列すなわち操作の列が表になってます。 たとえば中状態から二回の操作で断にするには電・風または風・電の順にボタンを押せばいい。 遷移行列の掛け算を繰り返して T^n (= T×T×T×....×T) を求めると

    パターンマッチと項書き換え - Mathematica で非可換なシンボル計算 - NyaRuRuが地球にいたころ