したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

1みみず★:2008/08/10(日) 23:28:15
あまりにもプログラミングの内容が増えすぎた。
よって隔離スレの中を更に隔離。

712774さん:2008/11/04(火) 00:00:38 ID:CENbthlg0
クラスの最後には;いらない。
此れはC++とは違うね。
C++はクラスの宣言の後に変数の宣言を付け加えれるからだよな。
Javaはグローバル変数は宣言できないのか?

713774さん:2008/11/04(火) 00:01:13 ID:CENbthlg0
多分それは静的なメンバ変数に該当するのか?

714774さん:2008/11/04(火) 00:11:40 ID:CENbthlg0
Javaの道:クラス(6.コンストラクタ)
http://www.javaroad.jp/java_class6.htm
-----
明日はここから読む。

715774さん:2008/11/04(火) 00:14:17 ID:CENbthlg0
やっぱりJavaとC++は似ているしJavaScriptとも似ている。
面白い。

716774さん:2008/11/04(火) 00:18:23 ID:CENbthlg0
GUI書きたい気がする。
まあ、それは基本押さえてから。

717774さん:2008/11/04(火) 00:18:56 ID:CENbthlg0
Java出来たらC#も押さえてみる?
でパールやってフラッシュやって。
おおおおお。
一杯言語あるぜえええええええ

718774さん:2008/11/04(火) 00:37:31 ID:CENbthlg0
初心者がJavaを“超高速”で学ぶためのコツ:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060927/249181/

719774さん:2008/11/04(火) 01:34:15 ID:CENbthlg0
eclipseってプラグインで拡張できるんでしょ。
どうやるんだよ。

720774さん:2008/11/04(火) 01:36:00 ID:CENbthlg0
ダウンロード中・・・

721774さん:2008/11/04(火) 21:15:10 ID:CENbthlg0
Javaに飽きたのでC#勉強中。

722774さん:2008/11/04(火) 21:19:04 ID:CENbthlg0
C#のビットシフトJavaみたいに勝手にint型に拡張しないんだよな?
(Javaはint型に拡張します。)

723774さん:2008/11/04(火) 21:23:39 ID:CENbthlg0
Javaではラベルでbreakとかcontinueが出来るがgotoがない。
C#ではラベルが無いのかは分からないが、gotoが出来る。
なんかswitch中で、goto case 1;とか出来るみたいだが、これはC/C++では出来ないよね?

724774さん:2008/11/04(火) 21:26:03 ID:CENbthlg0
試したけれども、やっぱり出来ないようだ。
これはC#のみ、っと。

725774さん:2008/11/04(火) 21:27:30 ID:CENbthlg0
if()とかfor()とかwhile()とかdo{}while();とかはbool型を要求してくる。
これはJavaと一緒。
だから
if(1)とかは書けない。

726774さん:2008/11/04(火) 21:34:02 ID:CENbthlg0
Javaならば
int[] array = {0, 1, 2};
int[] array = new int[2];
と書く。
C#ならば
int[] array = new int[]{0, 1, 2};
int[] array = new int[2];
と書く。
JavaScriptならば
var array = [0, 1, 2];
var array = new Array(2);
と書く。
Cならば
int array[] = {0, 1, 2};
int array[2];
と書く。
C++ならば
(書きようがない)
std::vector<int> array(2);
と書く。

727774さん:2008/11/04(火) 21:37:08 ID:CENbthlg0
Javaの多次元配列の方法は、配列の配列。つまり
int[][] array = new int[10][];
for(int i = 0; i < array.length; ++i) array[i] = new int[10];
と作るしかない。

728774さん:2008/11/04(火) 21:39:22 ID:CENbthlg0
C#ならば
int[,] array = new int[10,10];
と書ける。
またJava的な方法でも書ける。
int[][] array = new int[][]{
new int[]{1,2,3},
new int[]{2,3,4}
};
とか?

729774さん:2008/11/04(火) 21:39:52 ID:CENbthlg0
>「配列の配列」は「多次元配列」と比べ、 動作が少しだけ高速であるという事と、列数を自由に変えられるという利点がありますが、 メモリ利用効率が少々悪いという事と、宣言・初期化が面倒であるという欠点があります。
だそうです。

730774さん:2008/11/04(火) 21:41:13 ID:CENbthlg0
関数 (C# によるプログラミング入門)
http://ufcpp.net/study/csharp/st_function.html
-----
明日はここから。

731774さん:2008/11/05(水) 22:37:42 ID:CENbthlg0
プリプロセス (C# によるプログラミング入門)
http://ufcpp.net/study/csharp/sp_preprocess.html

732774さん:2008/11/05(水) 23:07:27 ID:CENbthlg0
静的コンストラクタがあると、実行時にウィンドウクラスが一回登録できてうまーなのです。
つまり、bool変数が必要なくなるということです。
だけれどもC#だと必ず一回呼ばれちゃうみたいなのです。つまりそのクラス一回も利用していなくても呼び出されると。
だけれども、そのウィンドウクラスを利用するクラスが一度も生成されなかったら、それは実行する必要は無いと思うんです。
だから、コンパイル時にチェックして、そのクラスもしくは派生クラスが生成しているようならばそのコードを入れるようにすると。
動的に生成される場合が多いので、作られない場合も在るかもしれませんが、その場合は最初に行っちゃえば良いんです。ソース上で生成処理があったら行うと。

733774さん:2008/11/06(木) 22:04:16 ID:CENbthlg0
うーん。
やっぱりC#難しい。
使おうと思わないからかなあ。
GUIを簡単に開発するためにはちゃんと頑張りたい。
でもJavaもやらないとなあ。

取り敢えず自分の家で実行できるプログラミング言語は、
C/C++
Java
C#
JavaScript
VB
だけか。
少ないなあ。
パールも動かせるようにするか。

734774さん:2008/11/07(金) 20:39:53 ID:CENbthlg0
ISPへの支払いは何に使われる? インターネットのお値段(1)?インターネット-最新ニュース:IT-PLUS
http://it.nikkei.co.jp/internet/news/index.aspx?n=MMIT39000005112008
払ったりもらったり、力で決まるISPの接続料 インターネットのお値段(2)?インターネット-最新ニュース:IT-PLUS
http://it.nikkei.co.jp/internet/news/index.aspx?n=MMIT39000006112008

735774さん:2008/11/07(金) 20:46:47 ID:CENbthlg0
取り敢えずC++0xでは#defineをデフォで使えなくすべきだと思うんだ。
そうすれば、オートコンプリートが使えそうである。

C#もネイティブに落ちればいいのだが。

736774さん:2008/11/07(金) 20:49:07 ID:CENbthlg0
定数の宣言ならば
const int
とか使えば良いし、関数形式のマクロだってinline関数で事足りるだろう。
それ以外の処理は変になるから使うな!ということです。
つまり
#define STR(a) #a
とか言うのはなしにしようぜということ。
まあ、これは俺もお世話になっていたりするのだが、無いならないで書き直せば良いだけなので。
(でもやっぱり面倒だな・・・)

737774さん:2008/11/07(金) 20:50:50 ID:CENbthlg0
ふと思ったのだがJavaって

int[][] v = {
{
1,2,3
},
{
1,2,3
}
};
とか書けるのか?
なんだか無理っぽい気がしてきた。

738774さん:2008/11/07(金) 20:53:54 ID:CENbthlg0
せっかくSleipnirにハック、じゃなくてフックするためのDLLを導入できたんだから何とかしたい。
何をするといわれても困る。
取り敢えず、Sleipnirから渡されるオブジェクトから利用できる関数を列挙せねば・・・

739774さん:2008/11/07(金) 23:00:55 ID:CENbthlg0
まとめてみた。
左からアドレス,RET *。
多分COMだから、最後にthisポインタをプッシュしている。

004CF9D0 //バージョン 8
004CF970 //8
004CF940 //4
004D3DF0 //4
004CF910 //4
004CF6E0 //QueryInterfaceっぽいけれども・・・? 0C
004D32B0 //QueryInterfaceっぽいけれども・・・? 0C
004D5590 //8
004CF390 //4
004D03B0 //8
004D0EE0 //GetSpecialFolderみたいな? 0C
004D2C50 //ttp://とかと比較している 10
004D2910 //上と同じような感じ 14
004D25A0 //上と同じような感じ 1C
004D4CA0 //10
004D4C80 //8
004D4630 //14
004D4610 //0C
004D5A50 //10
004D5850 //14
004D3F90 //8
004CF4A0 //8
004CF430 //8
004D0980 //8
004D0860 //14
004D0810 //GetMenuItemCountを呼び出している 4
004D06F0 //GetMenuItemCountを呼び出している 0C
004D0660 //GetMenuItemCountもGetSubMenuを呼び出している 8
004D3EF0 //上と同じ 14
004D53B0 //0C
004D0250 //GetWindowとGetClientRextとClientToScreenを(ry 14
004D0460 //4
004D0450 //4
004D0440 //4
004D0430 //4
004D0420 //4
004D0410 //4
004D0400 //4
004D03F0 //4
004D0210 //8
004D0200 //4
004D01F0 //4
004D01E0 //4
004D01D0 //4
004D3EA0 //10
004D01C0 //4
004D01B0 //4
004D5C70 //内側でなんかSleipnir.APIの登録っぽいものをやっているっぽい気がする 0C
004D5C50 //上のことと、なんか内側でsleipnir,_document,_windowの登録を行っている気がする 0C
004D5C20 //なんかスクリプトの実行ですか? 18
004D5BF0 //上に同じ 18
0042EE10 //なんかfreeしている 4
0042EDE0 //上に同じ 4
0042EBA0 //上に同じ 4

740774さん:2008/11/07(金) 23:02:12 ID:CENbthlg0
ブレークポイントを設置してそれぞれの呼び出しについて研究すべきだと思う。

741774さん:2008/11/08(土) 20:12:29 ID:CENbthlg0
Sleipnir3のブックマークがデータベースで管理されるようになったので、某巨大掲示板で独自バイナリより早いんじゃない?とか言っていたが、間違えなくデータベースの方が遅いと思う。
ただ、現状では一度読み込んだらそんなに頻繁に読みに行っていないと思うので、そんなに速さに違いは無いと思う。
つまり一度読みに言ってメモリ上に保存していると。
だけれどもこれだと沢山ブックマークがあるとメモリをとりすぎる。まあ、データベースの方がかなり楽だし、スクリプトからも弄くれるのでウマーということです。
明らかにXML的に弄くるよりも楽。
だけれどもSQLを勉強しなければいけないのは大変だorz...

742774さん:2008/11/08(土) 20:13:03 ID:CENbthlg0
上のほうに出てきたやつ。
SQL講座 [Smart]
http://www.rfs.jp/sb/sql/

743774さん:2008/11/08(土) 23:03:35 ID:CENbthlg0
正直SleipnirでもFirefoxでも何でも良いんですよ。
ちゃんとブラウザとして利用できるならば。
だけれども、俺がSleipnirにこだわる理由はと聞かれても困る。
正直趣味の問題だ。

744774さん:2008/11/08(土) 23:15:39 ID:CENbthlg0
取り敢えず、最近思った要望。
検索バー、アドレスバーにフォーカスがあるときは、クライアントにフォーカスを移さない。

745774さん:2008/11/08(土) 23:27:01 ID:CENbthlg0
SQLをちゃんと勉強しよう!
C#もちゃんと勉強しよう!
Javaもちゃんと勉強しよう!
国語もちゃんと勉強しよう!
英語もちゃんと勉強しよう!
古典もちゃんと勉強しよう!

746774さん:2008/11/09(日) 01:14:12 ID:CENbthlg0
簡単なSQLならば出来そうな気がしてきた。
別にテーブルの結合(JOIN)なんて覚えなくても良いよね。
覚えればそれはそれで使えるのだが。

747774さん:2008/11/09(日) 01:22:45 ID:CENbthlg0
SELECT ParentId, AVG(Id) FROM FenrirBookmark GROUP BY ParentId
こんな意味の無いSQLを書いてみたり・・・?
どちらにせよ、この技術はそのままMySQLとかのサーバー用のソフトウェアにも利用できるので、覚えておいてそんは無いと思う。

748774さん:2008/11/09(日) 01:24:31 ID:CENbthlg0
SELECT ParentId, AVG(Id) FROM FenrirBookmark WHERE ParentId != -1 GROUP BY ParentId
今更ながら、WHEREとかGROUP BYにはちゃんと指定する順番があるようである。

749774さん:2008/11/09(日) 01:25:04 ID:CENbthlg0
SELECT ParentId, AVG(Id) FROM FenrirBookmark WHERE ParentId != -1 GROUP BY ParentId ORDER BY ParentId DESC
なるほどなるほど・・・

750774さん:2008/11/09(日) 01:27:05 ID:CENbthlg0
Sleipnir3では消したはずのお気に入りがデータベース上には残ったままになっているので、
DELETE FROM FenrirBookmark WHERE Deleted == 1
見たいなSQLを実行すればいいと思う。

751774さん:2008/11/09(日) 01:31:13 ID:CENbthlg0
上は間違え
DELETE FROM FenrirBookmark WHERE Deleted = 1
が正しい。
-----
また、
UPDATE FenrirBookmark SET Deleted = 0 WHERE Deleted = 1
とすれば復元も出来るがArrayNumberが被らないように注意。
此れは頑張れば、SQLだけで出来るかも。
MAXとかSELECTとかの合わせ技で。

昆布だし(ry

752774さん:2008/11/09(日) 01:33:16 ID:CENbthlg0
キー(でよかったっけ?)を演算子の対象に出来るのは面白い。

753774さん:2008/11/09(日) 01:33:32 ID:CENbthlg0
ベクトルっぽいね。

754774さん:2008/11/09(日) 20:59:51 ID:CENbthlg0
MSXMLを本当に簡単に弄くったんだけれども、面倒すぎるだろ。
まあ、簡単な方法もあるんだけれども、一応ネイティブのC++だけで触ってみたかったので。

#include <iostream>
#include <windows.h>
#include <windowsx.h>
#include <tchar.h>
#include <shlobj.h>

#include <msxml.h>

int main(int argc, char **argv){
HRESULT hr = CoInitialize(NULL);
if(SUCCEEDED(hr)){
IXMLDOMDocument *pDoc;

hr = CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC, IID_IXMLDOMDocument, (void **)&pDoc);
if(SUCCEEDED(hr)){
IXMLDOMElement *pRoot;
hr = pDoc->createElement(OLESTR("root"), &pRoot);
if(SUCCEEDED(hr)){
VARIANT_BOOL b;
pRoot->hasChildNodes(&b);
IXMLDOMNode *pRootNode;
pDoc->appendChild(pRoot, &pRootNode);
BSTR p;
pDoc->get_xml(&p);
int i = 0;
i++;
}

pDoc->Release();
CoUninitialize();
}
}
}

755774さん:2008/11/09(日) 21:02:21 ID:CENbthlg0
本当ならばpRootとかpRootNodeとか全部Releaseしなきゃいけないのかなあ?

756774さん:2008/11/10(月) 20:55:02 ID:CENbthlg0
Lunascapeいいなあ。
だけれどもデザインにこだわりすぎ。
俺的には場所をとらないほうがいいのだが、デフォルトでそういうのがない。
でも、いいところ一杯。

757774さん:2008/11/10(月) 20:56:37 ID:CENbthlg0
>>751
ほんの少し最後のところについて頑張ったんだけれども、やっぱり無理っぽい。
SQL使えねえ。
せっかくネイティブで動くんだから、複雑なところはSQLにやらせたいところである。

758774さん:2008/11/10(月) 21:11:09 ID:CENbthlg0
MessageBoxをやると、モーダルダイアログボックスが出るわけだが、このモーダルダイアログボックスってどうやって動いているのだろう。
非常に気になったり気にならなかったり。
なんか最近プログラミングをしたくない。
というかSleipnirのPDKが出るまでなんか書きたくない。
まだ何も決まってないのだけれども、なんかSleipnirハック的なものを書きたいと思っている。多分。

759774さん:2008/11/10(月) 21:14:21 ID:CENbthlg0
最近はFirefoxも落ちるしSleipnirも落ちるんだなあ。
Sleipnirは~FValue+0x09で落ちてる。
なんか、[eax]を参照している命令だった気がする。
開放したのに読み込みに言っているのかな?しらないけれどm。

760774さん:2008/11/11(火) 20:20:32 ID:CENbthlg0
取り敢えず、何時落ちても良いように、OllyDbgでアタッチしておく。

761774さん:2008/11/11(火) 20:25:05 ID:CENbthlg0
やっぱり、デストラクタはdeleteに指定されている型を見て、呼び出せているんだよなあ。
だからvoid*にキャストして渡すと、呼び出されない。

762774さん:2008/11/11(火) 20:27:43 ID:CENbthlg0
やっぱり、デストラクタはdeleteに指定されている型を見て、呼び出せているんだよなあ。
だからvoid*にキャストして渡すと、呼び出されない。

763774さん:2008/11/11(火) 20:28:13 ID:CENbthlg0
二重書き込みしてしまった・・・

764774さん:2008/11/11(火) 20:38:18 ID:CENbthlg0
C/C++でプログラミングを書くとmain関数から始まるが、此れ以前に実は他のソースコードが走っている。
何故ならば、argc,argvを得るためのソースとかが必要だからであり、またCのライブラリとか、グローバル変数の初期化などが行われるためである。
つまり、本当のエントリーポイントは別にあるということだ。

765774さん:2008/11/11(火) 20:40:28 ID:CENbthlg0
こうすると、mainに入る前に、testと表示される。当たり前である。

#include <iostream>

int a = (std::cout << "test" << std::endl, 0);

int main(int argc, char **argv){
//std::cout << a << std::endl;
}

766774さん:2008/11/11(火) 20:52:42 ID:CENbthlg0
前も見たことあるんだけれども、これで動くもんなあ。
int main(){
char *p = "\xC3";
((void(__cdecl *)(void))p)();
}

767774さん:2008/11/12(水) 17:48:38 ID:CENbthlg0
[CSS]ブラウザのスタイルをリセットするスタイルシート集 | コリス
http://coliss.com/articles/build-websites/operation/css/1799.html
C++ 12年ぶりに次世代スタンダードへ - "C++0x" 策定進み草案公開へ | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2008/11/12/003/index.html

768774さん:2008/11/12(水) 18:16:15 ID:CENbthlg0
C++0xの仕様書を読んでいるのだが、英語むずい。

769774さん:2008/11/12(水) 18:51:17 ID:CENbthlg0
まあ、いい。
Wikipediaで俺には十分だ。
それにしてもラムダ式にはかなりそそられる所がある。
JavaScript的に(本当はLispだが、俺は使えない。)
somefunc(function(){
//なんとかかんとか〜
});
とかかけるのが美味しすぎる。

770774さん:2008/11/12(水) 18:56:09 ID:CENbthlg0
template<typename LHS, typename RHS>
[]AddingFunc(const LHS &lhs, const RHS &rhs) -> decltype(lhs+rhs) {return lhs + rhs;}
-----
微妙だよなあ。格好じゃなくて、lhs + rhsというのを二回書かなきゃいけないのが。

771774さん:2008/11/12(水) 18:57:02 ID:CENbthlg0
つまり、これからのC++は“->”とか“decltype()”とか“[]”が頻出なんですね。

772774さん:2008/11/12(水) 18:58:35 ID:CENbthlg0
どのようにアセンブリに落とされるのかがkwtk。
[=]とかにすると、とても重そう。
[]とか[&]だったら、問題なさそうなんだけれども。
多分&はESPをコピーするだけで良いし、[]に関しては何もコピーしなくていい。
だけれども[=]は全てコピーしなければいけない。(まあ中で何も利用してなかったらコピーしないだろうし、必要な数だけしかコピーしないと思うのだが。)

773774さん:2008/11/12(水) 19:01:56 ID:CENbthlg0
concept,concept_mapおもしろー。

774774さん:2008/11/12(水) 19:02:44 ID:CENbthlg0
ちょwwwwwwwwwww
コンセプトマップのテンプレートとか。

775774さん:2008/11/12(水) 19:04:55 ID:CENbthlg0
全ての機能を使い込む自信ないなあ。

776774さん:2008/11/12(水) 19:05:57 ID:CENbthlg0
スタンダードコンセプトマップライブラリとか出ないかなあ。
デフォルトで、いくつかのコンセプトが入っているとか、そういうのが良いなあ。

777774さん:2008/11/12(水) 19:10:14 ID:CENbthlg0
コンストラクタの委譲が出来るようになるのだが、多分コンパイラでは派生コンストラクタを呼び出すかどうかの引数をプッシュして行うようなシステムになるのだろう。
つまり、現状でも一つ引数を渡すようになる場合がある(仮想継承)のに更に増えるということか。
まあ使わなければそんな事は一切無いのだけれども。

意味分からない文章でスイマセン。
それとVC++だけけもね。そういう実装をしているのは。

778774さん:2008/11/12(水) 19:30:24 ID:CENbthlg0
typenameはNoDoubleだけれども、int型しか渡せないよ。
-----
struct NoDouble
{
void f(int i);
template<class T> void f(T) = delete;
};

779774さん:2008/11/12(水) 19:34:21 ID:CENbthlg0
標準ライブラリで正規表現を使えるのは美味しいよなあ。

780774さん:2008/11/13(木) 18:40:48 ID:CENbthlg0
うーん。
Sleipnirでタブを400ぐらい開くテスト中なんだけれども、開けば開くほど遅くなる。
Firefoxならばそんなこと無いのに・・・
だから俺はFirefoxにのりかえるかも?

781774さん:2008/11/13(木) 18:45:11 ID:CENbthlg0
Firefoxだと、クライアントの場所でマウスを動かしても6%ぐらいしか使わないけれども、Sleipnirは60%も使う。
フックをしているせいですかね?

782774さん:2008/11/13(木) 18:48:34 ID:CENbthlg0
Sleipnirはタブを開きすぎると消えるよー

783774さん:2008/11/13(木) 19:28:16 ID:CENbthlg0
やっぱりSleipnirは捨てられない。
タブ右クリックからタイトルとURLコピーが無いのは痛すぎる。

784774さん:2008/11/14(金) 01:34:14 ID:CENbthlg0
ゲームプログラミングの一歩として、単純なパズルゲームを作ってみたい。
まずは画像集めから入る。

785774さん:2008/11/14(金) 01:34:31 ID:CENbthlg0
まあ、今日は寝るんだけれども。

786774さん:2008/11/14(金) 01:39:39 ID:CENbthlg0
なんかC++0xのソースコードを考えるだけでwktkする希ガス。
-----
#include <iostream>

[]main() -> int
{
std::cout << "test" << std::endl;
}
-----
これでコンパイルが通るんだよね。まあ、まだ実験できないんだけれども。
他にも
-----
#include <iostream>
#include <string>
[]main(int argc, char **argv) -> int
{
[]show(char *str){std::cout << str << std::cout}
show("test");
}
-----
でもコンパイル通るんだよね。
きもい><

787774さん:2008/11/14(金) 01:45:37 ID:CENbthlg0
ラムダ!ラムダ!ラムダ!ラムダ!
Lispからの拝借ありがとうございます><

auto func = [](int c){return c};
とするとfuncの型は
int (*)(int)
なんだよね。
auto func = [&](int c){return c};
とすると、書き下せなくなるはず。
(void *)でキャストできるようになるかな。
もしかして、
decltype([&](int c){return c}) func = [&](int c){return c};
とかいけるんですか?どうなんですか?

788774さん:2008/11/14(金) 01:46:52 ID:CENbthlg0
>>784
書くならばJavaScript+Canvasになる予定。
つまりIEでは動かない。
GoogleからCanvasのライブラリが出ていたので、それを使えば何とかなるのかもしれない。
だけれども、此れまでの俺の感じから行くと、作らない気がしてならない。
それが俺のクオリティー。

789774さん:2008/11/14(金) 01:49:38 ID:CENbthlg0
>>787
どちらにせよ、このおかげでクロージャとか出来るようになってうまー。
別に[&]だったら、現在のebpとかespをコピーするだけだからそんなに速度の低下も無いだろうし、
[]だったら、今までの関数と何一つ変わらない。
[=]は、とても重たそうです。

[=]で疑問なのは、そのラムダ関数の中で値を変更したら、次にそのラムダ関数を呼んだときにその値が保持されているかということである。
なんか、保持されていない気がするが、まあ、そっちの方が良い場合の方が多い気がするのでそれで良いのです。

790774さん:2008/11/14(金) 01:52:05 ID:CENbthlg0
というか
-----
template<typename T, typename U>
[]Func(T t, U u) -> decltype(t + u)
{
return t + u;
}
-----
とか書くのは二度手間だから、
-----
template<typename T, typename U>
[]Func(T t, U u) -> decltype(t + u)
{
}
-----
だけで、returnに達しない場合はt + uをreturnするようにして欲しい。
何か問題があるんですか?そうですか。知らないけれども。

791774さん:2008/11/14(金) 01:54:47 ID:CENbthlg0
だけれども、別に
-----
template<typename T, typename U>
decltype(t + u) Func(T t, U u){
return t + u;
}
-----
でも今のコンパイラは困らないと思うんだけれども。
どうせ、最初に全ての変数をチェックしてから、上から翻訳するだろうから。
だから、多少戻るのは問題ないと勝手に思っている。

それとtemplateはスタティックライブラリ化できないから、ヘッダとかで持つしかないのが困るなあ。
まあ、それは仕方ないことなんだけれども。
だけれども、HINSTANCEとかvoid *とかで別々の実体を持つのはどうにかならないものか。

792774さん:2008/11/14(金) 01:55:25 ID:CENbthlg0
どうせ、同じポインタ同士なんだから、一括で管理できるでしょ、というお話な訳です。
まあ、CPUによっても違うのだろうが。

793774さん:2008/11/14(金) 18:48:11 ID:CENbthlg0
CSS 3における新しいレイアウト手法:ボックスレイアウト - builder by ZDNet Japan
http://builder.japan.zdnet.com/sp/css-firefox-safari/story/0,3800083423,20383633,00.htm

794774さん:2008/11/14(金) 19:04:19 ID:CENbthlg0
HTMLがぬるぬる動くときもいなwww

795774さん:2008/11/14(金) 19:51:02 ID:CENbthlg0
window.onload = function(){
var canvas = document.getElementById("base");
var width = canvas.width, height = canvas.height;
var c = canvas.getContext("2d");

var size = 10;
var x = size, y = size;
var speed_x = 3, speed_y = 2;

window.setInterval(function(){
c.clearRect(0, 0, width, height);

c.beginPath();
c.rect(0, 0, width, height);
c.stroke();

c.beginPath();
c.arc(x, y, size, 0, Math.PI * 2, false);
c.fill();

x += speed_x; y += speed_y;

if(x - size < 0){
x = size;
speed_x *= -1;
}else if(x + size > width){
x = width - size;
speed_x *= -1;
}
if(y - size < 0){
y = size;
speed_y *= -1;
}else if(y + size > height){
y = height - size;
speed_y *= -1;
}
}, 1);
};

796774さん:2008/11/14(金) 20:10:58 ID:CENbthlg0
オブジェクト指向にしてみた。withも使ってみた。

window.onload = function(){
var canvas = document.getElementById("base");
var width = canvas.width, height = canvas.height;
var c = canvas.getContext("2d");

var ball = function(c, size){
this.size = size;
this.c = c;
this.x = this.y = size;
this.speed_x = this.speed_y = -1;

this.Next = function(){
with(this.c){
beginPath();
arc(this.x, this.y, this.size, 0, Math.PI * 2, false);
fill();
}

this.x += this.speed_x; this.y += this.speed_y;

if(this.x - this.size < 0){
this.x = this.size;
this.speed_x = Math.floor(Math.random() * 16) + 1;
}else if(this.x + this.size > width){
this.x = width - this.size;
this.speed_x = -(Math.floor(Math.random() * 16) + 1);
}
if(this.y - this.size < 0){
this.y = this.size;
this.speed_y = Math.floor(Math.random() * 16) + 1;
}else if(this.y + this.size > height){
this.y = height - this.size;
this.speed_y = -(Math.floor(Math.random() * 16) + 1);
}
};
};

var a = [];
for(var i = 0; i < 10; ++i)
a.push(new ball(c, i));

window.setInterval(function(){
with(c){
clearRect(0, 0, width, height);

beginPath();
rect(0, 0, width, height);
stroke();
}

for(var i = 0; i < a.length; ++i)
a[i].Next();
}, 1);
};

797774さん:2008/11/14(金) 20:43:09 ID:CENbthlg0
>>796を実際に動かしてみるサンプル。
http://mimizu.karou.jp/static/javascript/00001/

798 ◆rCEzuNnL0g:2008/11/14(金) 20:49:07 ID:CENbthlg0
>>797
実は微妙に改変しているのだが、気にしない。

799774さん:2008/11/14(金) 21:03:58 ID:CENbthlg0
取り敢えず、一個のマスで何pixelとるかを考えて、画像を用意して、適当に表示できるようにして、
setIntervalでまわしまくる、と。

ああ、だけれどもそれだといけないか。
まあ、色々と頑張ろう。

800774さん:2008/11/14(金) 21:07:53 ID:CENbthlg0
IEで動かすと、滅茶苦茶CPU時間をとるっていう。
まあ、良いか。
さて、風呂でゆっくり考えるか。
明日の土曜学習の時間もあるし、随分と設計に時間をかけれそうである。

ちなみにパズルゲームとか言ってますが、多分あんまり知らないゲームだと思います。
兄と最近遊んでいて作りたくなっただけなのです。
くねくね動く奴も作るか?

801 ◆rCEzuNnL0g:2008/11/14(金) 21:40:06 ID:CENbthlg0
単純なsetTimeoutにすると62fpsぐらいになってしまう。
さて、どうしよう。

802 ◆rCEzuNnL0g:2008/11/14(金) 21:47:42 ID:CENbthlg0
うーん。
五十個玉を動かしただけで32fpsから40fpsぐらいまで下がってしまう。
やっぱり、少し滑らかじゃないけれども、30fpsで作ったほうが良いな。

803 ◆rCEzuNnL0g:2008/11/14(金) 21:52:15 ID:CENbthlg0
1000個動かしたら8fpsになった。

804 ◆rCEzuNnL0g:2008/11/14(金) 21:59:13 ID:CENbthlg0
10000個動かしたらFxだと0.8fpsぐらい。
Google Chromeだと3.3fps出た。
Google Chromeはえええ

805 ◆rCEzuNnL0g:2008/11/14(金) 22:01:20 ID:CENbthlg0
お。やっぱりGoogleChromeはそれぞれのタブが、別々のプロセスになってるんだな。
早いわけだ。

806774さん:2008/11/14(金) 22:30:24 ID:CENbthlg0
色々実験してたら、Sleipnirのバグを発見した。
document.titleでタイトルを弄くっても上のタブに反映されないって言う。
なんか上の0002を二つ開くと再現する。
もうちょっと簡単なコードに落とせると良いかもしれないが、別にそこまでして調べようとは思わないので、暇があったら調べよう。

というか、なんかタブの再描画自体が行われてないみたいだ。此れは酷いバグwwww

807774さん:2008/11/14(金) 22:31:01 ID:CENbthlg0
http://mimizu.karou.jp/static/javascript/00002/
二つ目。
これからどんどん増えていくよ。多分。

808774さん:2008/11/15(土) 18:24:29 ID:CENbthlg0
循環参照を含むオブジェクトのディープコピー - 素人がプログラミングを勉強するブログ
http://d.hatena.ne.jp/javascripter/20081115/1226739628
-----
面白いけれども、何故循環するオブジェクトを作る?

809774さん:2008/11/15(土) 18:28:53 ID:CENbthlg0
シングルクォートもきちんとエスケープする - 素人がプログラミングを勉強するブログ
http://d.hatena.ne.jp/javascripter/20081113/1226573185

810774さん:2008/11/15(土) 19:17:14 ID:CENbthlg0
std::copy(ar.begin(), ar.end(), std::ostream_iterator(std::cout, "\n"));
---
これはありだな。

811774さん:2008/11/15(土) 19:19:43 ID:CENbthlg0
こう書けば、

for(std::vector<int>::const_iterator it = ar.begin(); it != ar.end(); ++it){
std::cout << *it << "\n";
}
std::cout << std::flush;
とか書かなくて良い!


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板