はてなキーワード: Visual Studioとは
C++において多倍長整数,多倍長浮動小数点を扱うライブラリとしてGMPが有名だ.
Visual C++を使っているのなら,GMPと互換のあるMPIRが導入しやすくて良い.
以下,VC10 (Visual Studio 2010)環境での話.
このMPIRはどうもC++の複素数クラスstd::complexと相性が悪いようだ.
#include <complex> #include <iostream> #include <iomanip> #include <mpirxx.h> int main() { std::complex<mpf_class> a(1.0, 2.0); std::complex<mpf_class> b(0.0, 1.0); std::complex<mpf_class> c1 = a + b; std::complex<mpf_class> c2 = a - b; std::complex<mpf_class> c3 = a * b; // std::complex<mpf_class> c4 = a / b; // error std::cout << "a =" << a << std::endl << "b =" << b << std::endl << "c1 =" << c1 << std::endl << "c2 =" << c2 << std::endl << "c3 =" << c3 << std::endl; // std::cout << "c4 =" << c4 << std::endl; return 0; }
「operator/=」から呼び出される「_Div」内部でエラーが出る.
そこでテンプレートの特殊化をする.
#pragma once #include <mpirxx.h> #if defined(_MSC_VER) &amp;&amp; (_MSC_VER == 1500) /* VC9 (Visual Studio 2008) */ #pragma comment(lib, "C:\\lib\\MPIR\\vc9\\mpirxx.lib") #pragma comment(lib, "C:\\lib\\MPIR\\vc9\\mpir.lib") #else if defined(_MSC_VER) &amp;&amp; (_MSC_VER == 1600) /* VC10 (Visual Studio 2010) */ #pragma comment(lib, "C:\\lib\\MPIR\\vc10\\mpirxx.lib") #pragma comment(lib, "C:\\lib\\MPIR\\vc10\\mpir.lib") #endif #include<complex> namespace std { template<> complex<mpf_class>&amp; complex<mpf_class>::operator/=(const complex<mpf_class>&amp; _Right) { // divide by other complex //this->_Div(_Right); mpf_class _Rightreal = (mpf_class)_Right.real(); mpf_class _Rightimag = (mpf_class)_Right.imag(); mpf_class bunbo = _Rightreal * _Rightreal + _Rightimag * _Rightimag; mpf_class re = ( this->real() * _Rightreal + this->imag() * _Rightimag ) / bunbo; mpf_class im = ( this->imag() * _Rightreal - this->real() * _Rightimag ) / bunbo; this->real(re); this->imag(im); return (*this); } }
これでとりあえずは割り算もできるようになった.
計算精度については何も考えていない.
#突っ込みお待ちしてます.
http://anond.hatelabo.jp/20100217113611 の明治版?長文書き慣れて無いんで雑です。すいません。
なんか「明治受かった」とか言ってる人が出始めてるし、もしかしたら需要あるかもしれないんで
俺は理系なんで、お茶の水とか和泉(明大前)のことはほとんどわかりません。だから、ここに書いてあることは生田校舎の周りでしか通用しません。文系の人ごめんね!
受験で校舎に来たことがある人は知っているかもしれませんが、生田駅側から生田校舎に入るためには凄まじい傾斜の坂を登らねばなりません。あれを通称≪生田坂≫と言います。ただ登る以外にも体育会系の部活がトレーニングに使ったり、悪乗りした先輩が酔い潰れた後輩を転がすなど多彩な使い方をされています。
溜まり場になるのが嫌であれば、大学周辺を避けるのが無難。もし住むのであれば、生田坂を登らずに済むように生田丘陵に建っている物件を選ぶと良いかもしれない。
小田急線のこのあたりはほとんど住宅街なので物件は腐るほどあります。自転車圏内なら、よみうりランド前あたりも良い。向ケ丘遊園や新百合ヶ丘は急行が止まり利便性も高いが、家賃は少々高くなります。
基本的に、新宿に近づくほど家賃は上がり、遠ざかるほど下がります。
新百合ヶ丘から町田方面へ下っても良いが、定期代を考えると生田周辺に住むのとさほど変わらないので、余り意味はないです。
生田周辺の単身向け物件家賃相場は4万~6万である。これでも築浅でバストイレ別という要求に応えられる物件が多い。
ただし、これはどこの私立大学周辺にも言えることなのだが、国立の結果を見てから部屋探しをすると優良な物件は押さえられてしまう。
生田校舎では、情報処理室と図書館でパソコンが使えます。ですが、情報処理室は18時に、図書館は22時で閉まるので、締め切り直前のレポートを複数抱え込んでたりすると軽く死ねます。
なので、10万くらいので良いんでパソコンは1台持っておいた方が良いです。生田校舎に設置してあるパソコンのOSは全てWindowsなので、基本的にはWindowsが載っているマシンをお勧めします。知識のある人は、Macでも自作でも好きにして良いですよ。
だけど、Officeは付いてない奴を買った方が良いです。
なぜなら、明治大学がMSとライセンス契約をしてOffice全部入りが1000円ちょっとで買えるようになってるからです。他にもVisual studioとかUPG版Windows 7もそのくらいで買えるようになってます。
明治の理系はゆるゆるやってても進級できたりするんですが、真面目にやらないと3年、4年で厳しくなります。
最近は理系でも就職活動の開始が早まっていて、数年前は3年生の2月くらいから本格的に動き出せばOKだったのが、12月、11月と開始時期が早まってます。また、電機メーカーの多くは4月から採用活動を始めるので、4年前期に講義を取るのは元々きついです。
4年後期まで卒業に必須な科目を残しちゃったりすると、卒研のプレッシャとそもそも卒業できるかどうか?というプレッシャに悩みます。
まあ大学院に行くって決めちゃってる人はこの限りではないです。ちゃんと進級してればそのままエスカレーターです。今年はリーマンショックで相当ヤバかったらしく、多いところで5,6割の人が大学院に進学を希望したようです。
言い忘れてましたが、教職を取る人は要注意。生田では教職に必要な科目が全て取れないので、和泉やお茶の水に講義を受けに行く羽目になります。どちらに行くにも30~1時間程はかかる上、教職は卒業単位に含まれないので、途中で諦めると悲惨です。よく考えてから履修してください。教師になることを考えている人は、別の大学を勧めます。
大学は縦のつながりが薄いです。だから、学年が上(自分が先輩になった時は下)の知り合いを作りたいならサークルに入るしかない。好みが似通った友達を作るのにも良いし、地雷授業、地雷講師、単位の取り易い講義の情報とか、過去問はサークル周りからゲットするにもサークルに入るのは非常に良いこと。
オタだからテニサー無理とか思う人も居ると思うけど、アニ声研、漫研みたいのもあるし、逃げずに新歓に参加してみて。大抵タダだから。
あ、左翼とか宗教には要注意ですよ。≪大学公認団体≫以外は新歓ビラ配ったり、ブース出しちゃいけないことになってるから、基本的には引っかからないはずなんですけどね。学生有志や学生課が協力して頑張った結果、生田からはほぼ排除されている。はず。
後、お茶の水にサークルの本部があって、生田は支部であんま活動してないってところもあるから、それは注意。
ぼっち化だけは絶対に避けて欲しい。明治っつても理系は理系なので、実験レポートや演習課題が毎週何かしら課されます。全部自分一人の力でできないこともないですが、効率が悪すぎる。まともな奴は人海戦術で過去問・過去レポを集めてサックリ解決して、バイトやサークルに充てています。
友達をいっぱい作れとは言いませんが、友達が多い奴とそれなりに仲良くなって、人海戦術の隅っこに居られるようになった方が何かと便利ですよ。
1年生で受ける授業の多くは専門科目のための基礎が多くどれも大切です。でも、「これ、自分でやった方がはやくね?」って思う授業が多々あるのも事実です。自分でやって単位を取る自信があり、かつ出席を取らない授業ならばどんどん切れば良いと思います。
でも、テストの情報など、授業を聞かないとわからない情報があるのも事実ですし、質問しに行ったりできるのも基本的には授業の終了直後です。(研究室まで聞きに行くとなるとアポイントを取ったりしなくてはならないので、結構めんどい)
よく考えて授業の出欠は決めましょう。
毒ガス作ってただの、人体実験をしていただの色んな噂がありますが、誰も本当のことなんざ知りません。
俺はハイテクリサーチセンターの地下に巨大ロボの工場があるという説の方を支持します。
キャンパスの外れに当時の建物が残っているので、そういうのが好きな人は行ってみると良いですよ。
ああ、後、生田坂を登ってすぐのところに、黒い鳥居の神社があります。珍しいですよね。黒い鳥居。
農学部では世にも珍しいメカヤギというのを飼っています。メカですよ。気になった人はググるか実際に見せてもらってみてね。
オレも、といてみた。
もっとも苦労したのがVisual Studio 2008のインスコというのは秘密だ・・・
つ http://d.hatena.ne.jp/kokorohamoe/20100112
名にも考えない力技を駆使してみた
ちゃんと、経路が無い、空間だけの太い通路にも対応しているぉ?
入力もできるぉ?
http://www.nicovideo.jp/watch/sm9373562
みにくくて、スマソ
「HAHAHA、メーン、Visual Studio 2010 が動かないだって? ならばハイエンドマシンと Win7 を買っちゃいなyo!」
「マシンを買う金が無い? そんなメーンのための Visual Studio 2010 というソリューション! きみの生産性はこれで150%アップDA!」
を繰り返すから嫌い。どっかで金借りろってか。この日本でたがが VS2010 のためだけに誰が金を貸すんだよボケが。
「VS2010 を使って素晴らしい利益を上げるプロセスを銀行のボスにプ☆レ☆ゼ☆ンしちゃえばいいんだよメーン!」
卵を立たせるにはコロンブスの卵をやればいいんだよ!的なノリで銀行の頭取とヤり合えとか言ってんじゃねえよ。そんな能力があるなら VS 使うような IT ドカタなぞやっとらんわボケが。
「HAHAHA!イッツァアメリカンジョーク!ここはジョーク・エヴェニューです」
ちきしょう。
俺IT業界の人だけど、俺もそれには疑問。
例えば「.NET(どっとねっと) が業界を変える!!!!1123」とか言われていたけど、何が何だかさっぱりわからん。「C# での開発だから Visual Studio 入れなきゃいけないけど .NET じゃないとだめだ」なんてな話をまれに聞く。何を以って「これは .NET である」「これは .NET じゃない」なんだろう? 俺の VS 2008 Express は .NET とやらじゃないの?
さっぱり分からんし、分からなくても、動くモノさえ作る事が出来れば年収800万。
まあ彼らの口車には別に乗らなくてもいいよって事だね。ひひひ。
何いってるのやら
与えられた自由を探しもせず、頭の上から降ってくるもんだとおもってる奴は
結局何もできないって事さ
Visual Studio 2008
Visual Studio 2005
Windows Server 2008
SQL Server 2008 Developer Edition
Microsoft Robotics Developer Studio
http://www.microsoft.com/japan/academic/dreamspark/default.mspx
少し前、Microsoftアップデート → どういうわけか Office 2000 および PowerPoint Viewer 逝去。再インストールするも起動せず。泣く泣くマシン自体を前線より外す。
先月、あと1日で PowerPoint(試用版) の必要な仕事が終わるぜ!といったタイミングで、試用版が期限切れ。まあこれはそう予定された運命だったわけだけども。残り 1 日のためだけに泣く泣く OpenOffice を入れた後、「PowerPoint2007試用版」とは別に「Offce2007試用版」をインストールできる事を知ってうぎゃー。
昨日、Microsoftアップデート → Visio Viewer 逝去。.vsd ファイルをダブルクリックするも、IE は起動するが画像を開けない時のアイコンが出るのみ。再インストールも効果なし。号泣す。
次は何だ? Visual Studio 2008 Express が潰れるか? SQL Server Express か? 俺の明日はどっちだ!? 左か!?
それはあくまでもそういう流行が今起こっているだけで、それがずーっとスタンダードになるという事ではない。
現に、PS3でストリートファイター4、龍が如く3、バイオハザード5、無双OROCHI、KILLZONE2が出てた2~4月はWiiよりもPS3の方が売れてた。
手軽なゲームしか楽しまない客層ってのは、ちょっと退屈するとあっさりと飽きて見向きもしなくなってしまう。今お茶の間でホコリ被ってるWiifitとか全国に何枚あるんだろうな。
しかもこれまでの同シリーズと比べて売上どうなの?
ゲームの将来を語る上で、つなぎとしては十分だろうけど未来なくね?
手軽なゲームしか楽しまない客層って言うけど、20代以上でゲーム卒業しましたって人たちを回帰させなきゃ、ゲームの将来ないじゃん。
主観入ってるけど、これくらいのキラーソフト出さなきゃお茶の間どころか倉庫でホコリ被ったままになる
こればかりは「絶対に行かない」と断言できる。アメリカですらPC用よりもコンシューマ用の方が遥かに多く本数稼いでるわけだし。
ハイスペックPCを自分で運用できるような人間だけを相手にしてたら商売なりたたない。それこそ1本100万円くらいの価格設定なら話は別だけど。
いきなりハイスペックじゃなくて、PCでゲームをするということから広めよう!
MSにセカンドPC用としてゲーム向けOS出してもらって、さらにゲーム作成用Visual Studioを利用して簡単にゲームの作成、.net上でプレイとか無理かな?
・snes9x-1.5.1-srcフォルダを入れるまとめフォルダを作る(ここにzlibとlibpngとfmodとnasmのフォルダを突っ込むため)。
・zlibはソースをDLして解凍する。できたフォルダをzlibにリネームしてまとめフォルダに突っ込む。zlibフォルダ内のcrc32.cをemucrc32.cにリネームする。
・libpngはコンパイル済みバイナリをDLして解凍する。できたフォルダをlibpngにリネームしてまとめフォルダに突っ込む。ソリューションエクスプローラでlibPNGフォルダ内の*.cをプロジェクトから除外する。プロジェクトのプロパティで追加の依存ファイル一覧にあるlibpngmt.libをlibpng.libにリネームする。
・fmodはver.3系(ver.4系でのビルドは未確認)のコンパイル済みバイナリをDLして解凍する。できたフォルダの中のフォルダをfmodにリネームしてまとめフォルダに突っ込む。
・nasmはコンパイル済みバイナリをDLして解凍する。できたフォルダの中のフォルダをnasmにリネームしてまとめフォルダに突っ込む。nasmはプロジェクト中の*.asmのビルドに必要になる。後の*.asmのビルド設定との整合性のためこの通りに配置すること。
・プロジェクトのプロパティでDirectX SDKのIncludeとLibフォルダにパスを通す。
・プロジェクトのプロパティで、「リンク前のイベント」に次のコマンドを追加する。
pushd "$(SolutionDir)..\"
del "i386\*.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\2xsaimmx.asm" "-oi386\2xsaimmx.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\bilinear.asm" "-oi386\bilinear.obj"
rem "$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\c4.asm" "-oi386\c4.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2.asm" "-oi386\fxemu2.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2b.asm" "-oi386\fxemu2b.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxemu2c.asm" "-oi386\fxemu2c.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\fxtable.asm" "-oi386\fxtable.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\sfxproc.asm" "-oi386\sfxproc.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\spc.asm" "-oi386\spc.obj"
"$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\zsnes.asm" "-oi386\zsnes.obj"
rem "$(SolutionDir)..\..\nasm\nasm.exe" -f coff "i386\zsnesc4.asm" "-oi386\zsnesc4.obj"
popd
上記のコマンドに出てくる11個の*.objファイルをプロジェクトに追加する。ただしコマンドがコメントアウトされている2つ(c4.objとzsnesc4.obj)はビルドから除外しておくこと。
・SARマクロ(sar.h)が原因でコンパイラが死ぬので、このマクロを不使用にするためにport.hの277行のRIGHTSHIFT_IS_SARマクロ定義を未定義にする。
ここまでの手順でビルドが通る。
TODO:
・プリプロセッサZSNES_C4を有効にする時の設定
自分のための覚え書き。知ってる人からすれば全然当たり前のことかも…
IIS上で、Visual Studio 2008で開発したASP.NETなWebサイトを動かす時に、SQLiteを使う方法
IISの動作しているマシンに「SQLite for ADO.NET 2.0」をインストール。
それだけで良いと思ったけれど、以下のエラーが発生。
ArgumentException: 要求された .Net Framework データ プロバイダが見つかりません。これは、インストールされていない可能性があります。
いろいろ調べたら、手動でmachine.configを書き換える必要があるみたい。
<system.data> <DbProviderFactories> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> </DbProviderFactories> </system.data>
無事に動くようになりました。
丁度,同じようなこと書こうとしていたところだ.
昔,IT系の学校に行って,情報技術やプログラミングなど勉強していたんだけど,
それで何が出来るのか分からなくて,卒業はしたが今は全く別の仕事をしている.
最近,それが懐かしくなって,頭もあまり使ってないし,日曜プログラマにでもなろうかと思っていたところ.
# 以下,何年も前の話で,うろ覚えなので些細な間違いは見逃してほしい.
学生時分は,プログラミングだったら C, Java, はとりあえず一通り勉強した.
C だと手続き型で.変数の宣言の話から配列,ポインタ,構造体と進む.
Java ならオブジェクト指向で,手続き型と違って,汎用的なクラスを作成すれば
再利用できて…とか,それを継承できて…とかで開発効率・生産性が高い云々とか,
そういう話から,で実際それをプログラムにするとこうなりますよ.という流れ.
これで一通り言語自体の知識は身に付くのだけれど,で?っていう状況になったのは,
元記事の増田と同じだ.結局,それらの言語にどういう特徴があるのかは,
仕事などで本格的に開発をする人たちにとっては重要なことかもしれないけれど,
初心者にとっては,とりあえず,そんなことはどうでもよくて,何が出来るのかが分からない.
逆に言えば何を作りたいかが分からなければ勉強しても何の意味もない(これが昔の私かも)
でも,とにかく何か作りたい.何故だかよく覚えていないけれど,
C でテトリス作りたいと思っていたのは今でも記憶に鮮明に残っていて,
当時も試みたのだけれど,コマンドプロンプトでしか動かせないようなプログラムしか書けなくて
どうしてウィンドウを作って表示するようなプログラムが書けるのか分からなかったし,今でも分からない.
(今もあるのか知らないけれど)VB とか Visual Studio とか Eclipse みたいな統合開発環境を使えば
そんなこと知らなくても,ウィンドウは作れたし,ボタン配置したり,その他色々簡単にできるんだろう.
でも,先に言ったように,開発効率などどうでもいいし,出来ればいいということでもない.
どうしてウィンドウが出来るのかが,分からないのが気持悪くて統合開発環境使う気になれなかった.
仕事ではないのだから,ただひたすらキーボード叩いて全部一から手打ちでプログラム書きたい.
タイプ数カウントするプログラム常駐させて今日は何千何万打も叩いたぜ!!というただの自己満足だけ.
とにかく,ソース汚くてもいいから「これを作りたい」ってのがないと続かないんだろうなと思う.
別にプログラムだけでなく,何に関しても言えることかもしれないけどね.
全然質問の解答になってないな.長文失礼.
3Kだの7Kだの言われるプログラマー1年目のオレが
プログラミング言語の種類にはC、VB、JAVA、Delphi、PHP、Perlとか無数にあるが
どれでもいいからひとつ好きなの選んで学べ。
どれにしようかと迷うぐらいならCかJAVAやっとけ。
いきなり難しいことしようとは考えず、入門書通りに文字を表示したり
掛け算したりそういうのを確実にやれ。
FizzBuzzっていう基礎さえできてれば屁をこく方が難しいプログラミングがある。
1からどんどん数を増やしていくプログラミングだ。
3の倍数になった場合は数字の変わりに「Fizz」と表示させて
5の倍数になった場合は数字の変わりに「Buzz」と表示させる。
3と5の公倍数になった場合は数字の変わりに「FizzBuzz」と表示させるシンプルなプログラムだ。
プログラミングできるって言っておいてこれもできない奴が結構いるわけだ。
とりあえず入門書買って順々に進んで行け。
大抵のサイトはやり方と簡単な説明だけで詳細な説明が載ってないから本は買え。
そして一気にやろうとするな。先週やったことを30分でもいいから今週にもしろ。
あと、目標を立てろ。1日10ページとか1章とかそんなんでいいから
そして最後の5分は今日やったことをノートでもブログにでも書け。
本とかの練習問題では目標タイムとか書いてあるからそれを守るように解いていけ。
時間を多めにとってある入門書の練習問題程度で目標タイムに届かなかったら前の章からやり直せ。
仕事は生産性が非常に大切だ。 仕事遅いのにできる人より残業して給料貰ってる汚い大人にはなるなよ。
とりあえず基礎だ基礎。
普通なら応用に進むのが普通だろうと思うが、これからプログラマになるわけだから
環境を変えてやってみるのもいいと思う。基礎さえ確実にマスターしておけば
応用的なものはその都度調べることの繰り返しで結構覚えれるもの。
ここからはメモ帳からサクラエディタや秀丸エディタに変えてプログラミングしてみたり
EclipseやVisual Studioを使ってこういったツールが非常に便利であることを体験しろ。
仕事はこういったツールがないとやっていけない。
そして意外とこういったツールを使いこなせていないプログラマが沢山いる。
使いこなすことによって仕事量が増えるだけでなく、ミスも減らすことができる。
いろいろ間違ってるかもしれないが、力尽きた
| 分類 | 開発環境 | 開発言語 | メーカー | GPU | OS | API | 備考 | URL |
|---|---|---|---|---|---|---|---|---|
| シェーダ言語 | _ | Cg | NVIDIA | GeForce | Linux Windows Mac OS X XBOX |
OpenGL DirectX 8/9 |
C言語ライクな言語 グラフィック用途向け シェーダープログラムの最適化 |
http://developer.nvidia.com/page/cg_main.html |
| シェーダ言語 | _ | HLSL | Microsoft | GeForce RADEON |
Windows | DirectX | グラフィック用途向け シェーダープログラムの最適化 |
|
| シェーダ言語 | _ | GLSL | OpenGL ARB | _ | _ | OpenGL | C言語ライクな言語 グラフィック用途向け シェーダープログラムの最適化 |
|
| GPGPU言語 | CUDA | C言語 | NVIDIA | GeForce GeForce 8100 mGPU以上 |
Linux Windows XP/Vista Mac OS X |
_ | 標準C言語 | http://www.nvidia.com/object/cuda_home.html |
| GPGPU言語 | Stream SDK | Brook+ | AMD | RADEON R600世代以降 (=RADEON HD2400以降) |
Linux Windows |
OpenCL(対応予定) DirectX 11(対応予定) |
C言語ライクな言語 | http://ati.amd.com/technology/streamcomputing/index.html |
| GPGPU言語 | Brook for GPU | Brook | スタンフォード大学 | GeForce RADEON |
Linux Windows |
OpenGL DirectX 9 |
C++ライクな言語 | |
| GPGPU言語 | Close to Metal(CTM) | アセンブリ言語 | AMD | RADEON | _ | Stream SDKのCALに移行 | ||
| GPGPU言語 | _ | Sh | _ | _ | _ | _ | C++ライクな言語 | |
| GPGPU言語 | RapidMind | C++ | _ | GPU マルチコアCPU Cell |
_ | _ | Shの商用化版 |
参考文献
CUDAを使う:tech.ckme.co.jp
http://tech.ckme.co.jp/cuda.shtml
【特集】超並列プロセサ - GeForceアーキテクチャとCUDAプログラミング
http://journal.mycom.co.jp/special/2008/cuda/menu.html
Windows環境は、Visual Studioを用いてmakeを行うようになっている
http://japan.cnet.com/interview/story/0,2000055954,20376901,00.htm
のブクマより。
http://b.hatena.ne.jp/entry/http://japan.cnet.com/interview/story/0,2000055954,20376901,00.htm
2008年07月11日 nicht-sein apple, game "「ここまで整ったプラットフォームは世界初」"プラットフォーム、の前に「携帯電話では」が抜けとる。
あとは開発環境がVSに比べちゃうとどうしてもねぇ(苦笑)
(「VS」はVisual Studioでしょうか。)
Visual Studio 2005しかインストールしてない場合、Python 2.5だとdistutilsが正しく動かないっぽいので、どうにかしたいYO!
distutilsでVisual Studioを使うときのコンパイル環境は、sysモジュールのversionプロパティを参照して環境を選択をしているようです。Pythonのインタプリタを起動して、以下のような命令を実行してみると、sys.versionプロパティが確認できます。
import sys;print sys.version
Python 2.5.2だと、以下のようになっています。Visual Studio 2003の環境が使われるようです。
2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)]
Python 2.6a1だと、以下のようになっています。Visual Studio 2008の環境が使われるようです。
2.6a1 (r26a1:61155, Mar 1 2008, 12:11:56) [MSC v.1500 32 bit (Intel)]
以上から察するに、Python 2.5.2とPython 2.6のどちらでも、Visual Studio 2005の環境が選択されることはないっぽいです。うーん、困った!
「Python 2.6とVisual Studio 2008をインストールしよう!」というのを真っ先に思いつきましたが、あんまり環境を変えたくないんだよなー。というわけで、環境の変更を最低限に抑えてどうにかしてみました。簡単に言うと、distutilsだけの置き換えをしました。
Python 2.6の公式ダウンロードページから、Windows版のインストーラーをダウンロードして、適当な場所にインストールしてください。
"Python-2.5.2/Lib/distutils"を別の場所に移動し、"Python-2.6a1/Lib/distutils"を"Python-2.5.2/Lib"以下にコピーしてください。以降はPython 2.6は必要ないので、アンインストールして構いません。
上記の2点の変更を行います。distutilsディレクトリに、以下のパッチをあててください。
Index: msvccompiler.py =================================================================== --- msvccompiler.py +++ msvccompiler.py @@ -170,6 +170,7 @@ if majorVersion == 6: minorVersion = 0 if majorVersion >= 6: + return 8 return majorVersion + minorVersion # else we don't know what version of the compiler this is return None Index: msvc9compiler.py =================================================================== --- msvc9compiler.py +++ msvc9compiler.py @@ -128,7 +128,7 @@ "sdkinstallrootv2.0") else: raise KeyError("sdkinstallrootv2.0") - except KeyError as exc: # + except KeyError, exc: # raise DistutilsPlatformError( """Python was built with Visual Studio 2008; extensions must be built with a compiler than can generate compatible binaries. @@ -172,6 +172,7 @@ if majorVersion == 6: minorVersion = 0 if majorVersion >= 6: + return 8 return majorVersion + minorVersion # else we don't know what version of the compiler this is return None @@ -455,7 +456,7 @@ try: self.spawn([self.rc] + pp_opts + [output_opt] + [input_opt]) - except DistutilsExecError as msg: + except DistutilsExecError, msg: raise CompileError(msg) continue elif ext in self._mc_extensions: @@ -482,7 +483,7 @@ self.spawn([self.rc] + ["/fo" + obj] + [rc_file]) - except DistutilsExecError as msg: + except DistutilsExecError, msg: raise CompileError(msg) continue else: @@ -495,7 +496,7 @@ self.spawn([self.cc] + compile_opts + pp_opts + [input_opt, output_opt] + extra_postargs) - except DistutilsExecError as msg: + except DistutilsExecError, msg: raise CompileError(msg) return objects @@ -520,7 +521,7 @@ pass # XXX what goes here? try: self.spawn([self.lib] + lib_args) - except DistutilsExecError as msg: + except DistutilsExecError, msg: raise LibError(msg) else: log.debug("skipping %s (up-to-date)", output_filename) @@ -598,7 +599,7 @@ self.mkpath(os.path.dirname(output_filename)) try: self.spawn([self.linker] + ld_args) - except DistutilsExecError as msg: + except DistutilsExecError, msg: raise LinkError(msg) else:
python.exeと同じディレクトリに、以下のXMLを"python.exe.manifest"として保存してください。
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>
これで終わりです。
gccの構文解析の結果(構文木)を、XMLとして出力してくれるツールです。C++の構文解析はやたらと面倒らしいので、こういうのがあるとうれしいみたいよ。
「Py++」というC++のPytyonバインディングで使われていたので、必要になりました。gcc-xml 0.6はバイナリで配布されてるんだけど、MSVC7.1までしか対応してないようで、Visual Studio 2005だと使えませんでした。うーん、困った。というわけで、最新版のソース一式を取得してビルドしてみます。
gcc-xmlのビルドには、CMakeというツールが必要になります。CMakeは、オープンソースでクロスプラットフォームのビルドシステムなんだとか。CMakeの公式サイトから、Windows版のインストーラーをダウンロードしてインストールしよう。
実は最初は、ここでcygwinのsetup.exe経由でのインストールをしてたんですけど、これだとgcc-xmlのビルドの段階でエラーが発生しちゃいました。この原因がどうしてもわかんなかったので、あきらめて公式サイトのインストーラーを使うことにした次第です。
ソース一式はCVSから取得できます。CVSクライアントはいろんなのがあるので、好きなクライアントを使って取得しよう。ここではcygwinのCVSを使って、シェルから以下の命令を実行して取得しました。40MBくらいあるみたい。
$ cvs -d :pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML co gccxml
「Visual Studio 2005 コマンドプロンプト」を起動してください。起動したら、さきほど取得したソース一式が格納されているディレクトリに移動して、以下の命令を実行します。
$ cmake .
cmake.exeにはあらかじめパスを通しておくか、パスを直接指定するのを忘れずにね。
gcc-xmlのビルドはまだ終了してなかった! 一度ビルドが終了しても、第二第三のビルドが必要となって…。などと恐れおののきましたが、二段階でいいみたい。
さきほどの処理が終了すると、同じディレクトリに"gccxml.sln"というソリューションファイルが新しくできあがっているかと思います。これをVisual Studio 2005から開いて、Releaseビルドしよう。ビルドが終了したら、以下の5つの実行ファイルができあがっているはずです。
まずは環境変数の設定です。Visual Studio 2005を使っていることを、gcc-xmlに高らかに宣言しておこう。
$ set GCCXML_COMPILER=msvc8
つぎに、gccからVisual Studio 2005のインクルードファイルを使えるよう、パッチをあてます。ありがたいことに、"GCC_XML/VcInstall"ディレクトリ以下にVisual Studioのバージョンによってパッチが用意されています。そのディレクトリと、パッチを当てたファイルを出力するディレクトリ("gccxml.exe"が置いてあるディレクトリ)を指定して、"gccxml_vcconfig.exe"を実行してください。
$ bin/release/gccxml_vcconfig GCC_XML/VcInstall/ bin/release
あとはbin/releaseにパスを通せば、gcc-xmlが使えるようになったはずです。bin/release以下をどこか適当なディレクトリにコピーして、そこにパスを通してもオッケイです。やったね! というわけで、さっそく試してみましょう。
$ gccxml eample1.cpp -fxml=example1.xml
ここでは、解析するC++のソースファイルとしてeample1.cppを入力し、eample1.xmlを出力しています。ちゃんと出力できたかな? できたー! やったー!
以上で終わりです。
以上のような組み合わせで出くわした困ったことと、その解決策をメモしておきます。
Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.
setup.pyに.iファイルとか.cppファイルを記述して実行すると、こんな感じのエラーメッセージが表示されました。うーん、困った!
http://labs.cybozu.co.jp/blog/mitsunari/2007/08/vc2005boostpython.html
上記のページを参考にして、"%Pythonをインストールしたフォルダ%/Lib/distutils/msvcompiler.py"を以下のように修正してみたら解決できました。ありがとうありがとう!
--- msvccompiler.py 2007-04-04 17:17:12.000000000 +0900 +++ @@ -126,7 +126,7 @@ self.set_macro("FrameworkDir", net, "installroot") try: if version > 7.0: - self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1") + self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0") else: self.set_macro("FrameworkSDKDir", net, "sdkinstallroot") except KeyError, exc: # @@ -252,7 +252,10 @@ def initialize(self): self.__paths = [] - if os.environ.has_key("DISTUTILS_USE_SDK") and os.environ.has_key("MSSdk") and self.find_exe("cl.exe"): + if self.__version >= 7.1 or ( + os.environ.has_key("DISTUTILS_USE_SDK") and + os.environ.has_key("MSSdk") and + self.find_exe("cl.exe")): # Assume that the SDK set up everything alright; don't try to be # smarter self.cc = "cl.exe" @@ -288,10 +291,16 @@ self.preprocess_options = None if self.__arch == "Intel": - self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GX' , - '/DNDEBUG'] - self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GX', - '/Z7', '/D_DEBUG'] + if self.__version >= 7.1: + self.compile_options = [ + '/nologo', '/Ox', '/MD', '/W3', '/EHsc', '/DNDEBUG'] + self.compile_options_debug = [ + '/nologo', '/Od', '/MDd', '/W3', '/EHsc', '/Z7', '/D_DEBUG'] + else: + self.compile_options = [ + '/nologo', '/Ox', '/MD', '/W3', '/GX', '/DNDEBUG'] + self.compile_options_debug = [ + '/nologo', '/Od', '/MDd', '/W3', '/GX', '/Z7', '/D_DEBUG'] else: # Win64
setup.pyを実行するとcl.exeが見つからないみたいなエラーが表示されました。これは、アレだ。「パス通せ!」ということですね。bashを起動するときのバッチファイル(たぶん"cygwin.bat"とか)で、以下のような行を入れてやれば解決しました。
call "%VS80COMNTOOLS%vsvars32.bat"
d:\python25\include\pyconfig.h(189) : fatal error C1083: include ファイルを開けません。'basetsd.h': No such file or directory
setup.pyを実行すると、上のようなエラーが表示されました。
http://d.hatena.ne.jp/ousttrue/20070531/1180556273
上記のサイトを見るとインクルードパスが通っていない場所に"basetsd.h"があるのが原因なので、"cygwin.bat"にインクルードパスの設定をしておきました。
call "%VS80COMNTOOLS%vsvars32.bat" set INCLUDE=C:\Program Files\Microsoft Platform SDK\Include;%INCLUDE%
link: extra operand `/INCREMENTAL:NO'
詳しくは `link --help' を実行して下さい.
これは、cygwinのほうのlink.exeが実行されてるのが原因でした。スマートな解決策ではありませんが、cygwinのほうのlink.exeをリネームして解決。パスの設定順序とかでどうにかできるといいんだけど、どうすればいいんかな。
MSVCR80.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
SWIGが生成した.pyファイルをimportしたら、こんな感じのエラーダイアログが表示されたよ。うーん、困った!
http://d.hatena.ne.jp/moriyoshi/20070525
上記のページを参考にして、"%Pythonをインストールしたフォルダ%/python.exe.manifest"として以下のようなファイルを新しく作ったら、解決できました。ありがとうありがとう!
あとこれ、bashから実行したらエラーダイアログが表示されず、importするモジュールが見つからないみたいなエラーメッセージが出力されるだけだったよ。
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>
だいぶ前にTurbo Delphi Explorerを試してみたが、添付ファイルは送られてきたよ。メーラーとかファイアーウォールが添付ファイルを剥ぎ取ってない?
もともとTurbo Pascal 2.xあたりからのユーザーなんだが、Delphi 5.xくらいでアップデートを止めてしまった。久しぶりにDelphiの無料版をインストールしてみた時には悲しくなったよ。
ヘルプがアップデートされていないので、あちこちつじつまが合わないんだよ。おまけに、ヘルプのトップに堂々と昔の日付が書いてあったりして、「もうわれわれにはこれを続ける余力はありません」って無言のメッセージが伝わってくる。
昔Delphiに触った連中が、あきらめ切れず今でも愛し続ける理由はわかるんだよ。でも、これからはじめるなら俺はC#を薦めるね。Delphiのチーフエンジニアが開発を率いたので、Delphiの良いところがいろいろ盛り込まれているし、悪いところも改善されている。
Visual Studioも無料版がある。
Cはお勧めしない。なぜかと言うと、Cは言語使用があまりにいい加減だから。特に型関係がひどいのだが、型の概念をきちんとつかめないと、問題をプログラムに落とすのが下手になるので、俺はCはお勧めしない。
C#かJavaがいいよ。どちらもC言語に似ているといわれるが、とっつきやすいように字面を似せているだけで、どちらもCとはまったく違う言語になっている。Cの悪いところはばっさり切り落としているので、その分勉強しやすい。これはC++を薦めない理由でもある。C++はCと互換性を維持しているので、ぐちゃぐちゃになってしまった。CとC++は本当にそれじゃないとダメな局面にきたときに勉強すればいい。
C#もJavaも入門コンテンツがネットに転がっているので、好きな奴を読めばいい。
C#とJavaを薦める別の理由は、そのライブラリが極端に充実していることがある。Cでプログラムを書いていると、たまに、何で俺がこんなことをやらないといけないんだ?世の中で何万人が同じことを回転だよ?、と思うようなことがある。言葉を変えると、非常に基本的な機能が無かったりする。C#とJavaは、基本的な機能の膨大なライブラリを含むのでそれを利用できる。
C#もJavaも良質の統合開発環境がある。C#にはVisual Stuido .Net Express for C#が、JavaにはEclipseが無料で提供されている。Javaには.net版もあるが、もうサポート停止だし互換性もよくないのでお勧めしない。
C#もJavaも型に厳しい。世の中には型に寛容な言語というものもあって、そういう言語が活躍する局面もあるが最初にきちんとした型を覚えておくというのは、スポーツや他の勉強と同じく他の言語と同じ。
Visual Studio express for C#には膨大な日本語オンラインヘルプが付いてくる。これは心強い。言語の基本からライブラリまでカバーしているので、旅先に本を持っていかなくてもPCがあればプログラミングには事足りる。
バカすぎる。俺は学生なんだが、
こんな質問に答えられるわけがないだろ。「お客様の主な役割について最も適したものをお聞かせください。」という質問に「学生」って答え作ってるんだから、学生にしたら上の質問を無効にしろよ。「システムを導入するにあたっての、あなたの立場を教えてください。」は確実に答えが選択肢にないんですが。学生は不可なのかと思って対象ユーザーをしらべたけど、ちゃんと学生も対象に入っている。
Visual C# 2005 Express Edition は、学生や、プロフェッショナルではない開発者を対象ユーザーと想定して作成されています。Visual C# 2005 Express Edition には、Visual Studio 2005 Professional Edition と同じ機能が多数用意されていますが、アプリケーション開発を簡単に始めることができるようにシンプル化されてもいます。学生向けを意識してるなら、質問もそれ向けに作ってくれよ。あれか製品自体は学生向けだけど、無料ダウンロードは学生禁止なのか?もうどうでもいいや。http://www.microsoft.com/japan/msdn/vstudio/express/faq/default.aspx#vcsharp
あ、あと
どのプログラミング言語の話題に興味がありますか。にHTMLやXMLが入ってるのもアレ。HTMLがプログラミング言語って言うのは意外とマイクロソフトが広めてるのかもしれない。