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

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

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

593774さん:2008/10/13(月) 11:24:44 ID:CENbthlg0
けっこうソースがシンプルになった。
良かった良かった。
----
var begin, last;
if(maxpage <= 7){
begin = 1; last = maxpage;
}else{
if(page <= 3){
begin = 1; last = 7;
}else if(page >= maxpage - 3){
begin = maxpage - 6; last = maxpage;
}else{
begin = page - 3; last = page + 3;
}
}
p.appendChild(MakePageList(begin, last));

594774さん:2008/10/13(月) 11:31:23 ID:CENbthlg0
IEPanelExで、コンテキストメニューの表示も文字列の選択も出来なくすると、IEぽくなくなる。
いい感じ。

595774さん:2008/10/13(月) 11:32:03 ID:CENbthlg0
選択できなくなると情報のコピーとかが出来なくなるので、URLとタイトルをコピーできるようにした。

596774さん:2008/10/13(月) 11:48:05 ID:CENbthlg0
U.N.オーエンは管弦楽なのか? - 最終鬼畜オーケストラ
http://www.nicovideo.jp/watch/sm4915337

597774さん:2008/10/13(月) 11:51:52 ID:CENbthlg0
後は、削除と編集を何とかすれば、使い物にはなるだろう。
完成度が3%ぐらいになった。

598774さん:2008/10/13(月) 12:19:03 ID:CENbthlg0
JOI2006模擬試験1 問題5@C++(未完)(19) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081013/1223866809

599774さん:2008/10/13(月) 18:13:26 ID:CENbthlg0
JOI2008予選 問題1@C(15) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081013/1223881846
---
番兵法か・・・
なるほど。

600774さん:2008/10/13(月) 18:34:04 ID:CENbthlg0
そうだ!
今適当に書いている、ニコニコ動画のマイリストの管理の奴に、マイリストのマイリストの機能を付けよう!

601774さん:2008/10/13(月) 20:54:00 ID:CENbthlg0
ちゃっちゃと削除機能を付けた。
なんか今日だけで随分と進んだ。
面倒だと思っていたので、そこを避けて進んでいたが、実際にやってみると簡単なもんだ。
削除をしてもまだ、画面に即反映という風にはなっていない。これはどうしようもないかもしれない。
現状画面の更新間隔を1000smにしているので、もうちょっと長く出来るようにするかな。
まあ、削除の処理とリストの処理は分けわけするべきなので、もうちょっと設計を考えたほうが良いかもしれない。

602774さん:2008/10/14(火) 14:34:23 ID:CENbthlg0
削除機能でタグの管理を全く念頭に置いていなかった。
まあ、作っているときからタグの処理面倒くせー、とか思っていたので後から対応しよう。
実は、自分のマイリストにもタグを付けてないので、実際に試してどのように保存されているかを調べなければ。

603774さん:2008/10/14(火) 16:30:04 ID:CENbthlg0
おっおっおwww
開発中に仕様を変更するとかニコニコ動画自重汁。
ナビゲーターにCSSが適応されなくなってびびっただろう。

604774さん:2008/10/14(火) 16:34:07 ID:CENbthlg0
はぁ。
書き直しか・・・

605774さん:2008/10/14(火) 16:37:50 ID:CENbthlg0
三行修正して正しく表示されるようになった。

606774さん:2008/10/14(火) 18:44:40 ID:CENbthlg0
JOI2008予選 問題3@C++(12) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081013/1223893215
「Silverlight 2」、米国時間の14日にダウンロード提供開始 | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2008/10/14/003/index.html
---
僕の今には有用性が分かりません。

607774さん:2008/10/14(火) 19:33:54 ID:CENbthlg0
あっ。
開発中に今までのマイリストガ消えた・・・
バックアップとってなかった俺涙目wwwwww
絶対完成させてやる。

608774さん:2008/10/15(水) 11:26:59 ID:CENbthlg0
JOI2008予選 問題5@C++(7) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081014/1223981320
JOI2008予選 問題6@C++(5) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081014/1223988441

609774さん:2008/10/15(水) 13:20:12 ID:CENbthlg0
IEPanelExって、中で外部のJavaScriptを読み込めば、使用している本人が更新しなくても表示方法とかを変更出来るよね。
問題は何処にそのスクリプトをおくかだけれども。

610774さん:2008/10/15(水) 13:42:13 ID:CENbthlg0
削除しようとした動画以外が消えて笑ったwww
まあ、今色々なところ弄くっているから仕方ないけれども。

611774さん:2008/10/15(水) 14:59:22 ID:CENbthlg0
取り敢えず、タグも考慮に入れた削除を実装完了した。
物凄く時間がかかった。
JavaScriptの恐ろしさをある意味で知った。
本当に予想外のところから参照があった。
-----
this._DeleteTag = function(n, id){ //n:タグ削除する動画のmylistのインデックスかオブジェクト, id:削除するタグのid
if(typeof(n) != "number"){
var i, len, vid = n.id;
for(i = 0, len = mylist.length; i < len; ++i){
if(mylist[i].id == vid){
break;
}
}
if(i == len) return; //そんな動画無い
n = i;
}

var i, len = mylist[n].tags.length;
for(i = 0; i < len; ++i){
if(mylist[n].tags[i] == id){
mylist[n].tags.splice(i, 1);
break;
}
}

if(i == len) return; //そんなタグ無い

var j, len, flag = true;

out:
for(j = 0, len = mylist.length; j < len; ++j){
if(j != n){
var k, tlen;
for(k = 0, tlen = mylist[j].tags.length; k < tlen; ++k){
if(mylist[j].tags[k] == id){
flag = false;
break out;
}
}
}
}

if(flag){
var k, tlen;
for(k = 0, tlen = tag.length; k < tlen; ++k){
if(tag[k].id == id){
tag.splice(k, 1);
break;
}
}
}
};

612774さん:2008/10/15(水) 15:02:28 ID:CENbthlg0
単純化すると、以下のようなことが起こっていた。
-----
var a = [0, 1, 2, 3, 4];
var b = a;
b[0] = 3;
alert(a); //[3, 1, 2, 3, 4];
-----
ぐはあ。
此れが、配列の中に収められているオブジェクトの中の配列だったから気づくのに時間がかかった。
という事で、削除される可能性のある前に
a.concat([]);してコピーするようにした。

613774さん:2008/10/15(水) 15:03:43 ID:CENbthlg0
this._Deleteはこんな感じになった。
-----
this._Delete = function(l){
var id = l.id;

var i, len;
for(i = 0, len = mylist.length; i < len; ++i){
if(mylist[i].id == id){
break;
}
}

//タグを全て削除
var j, len, l_tags = l.tags.concat([]); //ここでl.tagsをコピーしておかないとthis._DeleteTag内で変更される可能性がある
for(j = 0, len = l_tags.length; j < len; ++j){
this._DeleteTag(i, l_tags[j]);
}

mylist.splice(i, 1);
};

614774さん:2008/10/15(水) 18:41:57 ID:CENbthlg0
日本語技術資料のダウンロード
http://www.intel.com/jp/download/
-----
探すの疲れた。

615774さん:2008/10/16(木) 16:11:40 ID:CENbthlg0
JOI2008本選 問題4@C++(-5) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081015/1224068881
JOI2007予選 問題1@C(-9) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081015/1224074337
JOI2007予選 問題2@Perl(-10) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081015/1224075312

616774さん:2008/10/16(木) 16:32:22 ID:CENbthlg0
ブログとかで配信しているRSSは全文を配信していない。
大抵、続きを読むが出るところまでか、前何文字とかそんな風である。
前者の場合は、ブログの管理人が続きを読む機能を知らないで使っていれば、全文と同じである。
だが、後者の場合はほぼ確実に全文ではなくなる。
どちらにせよ全文を表示できない可能性が十分にあるので、あまり美味しくない。
つまりどうせならばRSSリーダーで全文を読みたい、保存したい。と言うことだ。

さて、どうすれば良いか。
RSSにはそのページへのパーマリンクがまず含まれている。
よって、そのページに行けば確実に全文が含まれているだろう。
そして、大抵のサイトではデザインが同じはずなので、何処の要素に本文の全文があるかが分かれば良い。
つまり、サイトごとに何か要素を指すものを作ればいいわけである。(これはXPathでも良いし、独自の方法でも良い。)
しかし、その情報を一体どのように入手するか、保存するかが問題である。

これにはもう前例があって、AutoPagerizeやLDRize等で利用しているSiteInfoという手が一番美味しいと思っている。
つまり、使用者全員で作る巨大データベースと言うことである。
これならば個人が参照方法を考えなくても良くなるし、負担が減るであろう。

実はまず、この全文受信したいと思っている要望時点に問題があって、全文を手に入れるには必ず一時サイトに接続しなければいけないという問題である。
その本文を読まないのに、そのページを取得しに行く。そしてそのサーバーに負担がかかる。
まあ、此れには全文を保存するキャッシュサーバーを用意するという手が考えられる。
ある意味でのプロキシである。
まあ、そのプロキシは誰が設置するんだという問題があるだろうが、それはどうにもならない問題である。
よって、この計画は駄目であるということだ。

617774さん:2008/10/16(木) 16:38:37 ID:CENbthlg0
もともと俺には書くスキルがないから大丈夫だけれど。

618774さん:2008/10/16(木) 18:58:48 ID:CENbthlg0
STL Algorithm 詳解
http://www.wakhok.ac.jp/~sumi/stl/manual/man_algorithm.html

619774さん:2008/10/16(木) 19:04:43 ID:CENbthlg0
>upper_bound()は、lower_bound()とよく似ています。upper_bound()の場合には、 指定した値より"大きい"の要素が最初に現れる位置を返します。つまり「以上」と「大きい」の違いです。これは言い換えると、ソート状態を崩さずに値を挿入できる最後の位置を返すということになります。
>lower_bound()は、指定した値"以上"の要素が最初に現れる位置を返します。この位置は、現在のソート済みの状態を崩すことなく、指定した値を挿入できる最初の位置になります。

>ある値と一致する範囲の一番最初を返す- lower_bound()
>ある値と一致する範囲の一つ後ろを返す- upper_bound()

微妙に表現が違う・・・

620774さん:2008/10/17(金) 05:59:43 ID:CENbthlg0
うん、下の方が表現が正しい。

lower_bound()しか試してないけれども、存在しない値は指定しないほうがいいみたい。
存在しない値の場合は、その次を指すみたい。
だから、0〜10の配列で-1を指定すると0の場所が返る。
まあ、そんな感じ。

621774さん:2008/10/17(金) 06:01:26 ID:CENbthlg0
でも本当は
std::binary_search(v.begin(), v.end(), 5);
みたいにして、存在するかどうかを確かめてやったほうが良い。

622774さん:2008/10/17(金) 17:39:54 ID:CENbthlg0
std::binary_search()がlower_bound()を使って実装されていたwwwwww

623774さん:2008/10/17(金) 17:53:10 ID:CENbthlg0
ブラッディー・マンデイの分散コンピューティングで、お前には出来ないだろうと言われた、という話があった。
で、その人の答えは超最小モデルならば出来るということだそうです。

確かに俺でも出来そうだな。
パイプでプロセス同士を繋いで分散させて何かを計算させればいいわけだ。
実際に実装するにはどうすればいいだろうか・・・
親を作って、子を作る。
で、全部にデータ送って待つ。で、データが返ってきたらまだ処理していないデータを送る。
まあ、此れの無限ループと。そういうことですね。

これを拡張したのが、ということですか。

624774さん:2008/10/17(金) 22:19:11 ID:CENbthlg0
黄金比 - 素人がプログラミングを勉強するブログ
http://d.hatena.ne.jp/javascripter/20081017/1224241834
---
フィボナッチ数列の二項間の比は、黄金比φに収束する。
-----
JOI2007予選 問題4@C++(-18) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081017/1224248155

625774さん:2008/10/17(金) 22:20:00 ID:CENbthlg0
でも黄金比使うんだったら、ハードコートすれば良いだろ・・・
常識的に考えて。
-----
Geekなぺーじ : 優秀なプログラマを雇う方法
http://www.geekpage.jp/blog/?id=2008/10/17/3

626774さん:2008/10/18(土) 17:37:56 ID:CENbthlg0
JOI2007予選 問題5@C++(-20) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081017/1224250213
JOI2007予選 問題6@C++(-21) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081017/1224251063

627774さん:2008/10/18(土) 21:04:07 ID:CENbthlg0
ファイルサイズの取得方法
http://homepage3.nifty.com/mmgames/c_guide/q_filesize.html

628774さん:2008/10/18(土) 21:05:58 ID:CENbthlg0
世界最小のEXEを作ってみたい!

629774さん:2008/10/19(日) 17:52:34 ID:CENbthlg0
JOI2008本選 問題5@C++(-31) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081019/1224379072
---
絶対無理だな

630774さん:2008/10/19(日) 18:23:18 ID:CENbthlg0
>>629
解読終了。

素晴らしい。
説明しろといわれても説明できません><
だけれども、理解できた。これは素晴らしい。

631774さん:2008/10/19(日) 18:24:03 ID:CENbthlg0
>>629
タグでも付けておこうww
重要
これはすごい

632774さん:2008/10/19(日) 18:25:51 ID:CENbthlg0
数え方に感動。
こういう風にスタックを使うのか・・・

633774さん:2008/10/20(月) 18:55:58 ID:CENbthlg0
FILE *fp = fopen("test.txt", "wb");
char *s = "やらないか?";
fwrite(s, strlen(s), 1, fp);
fclose(fp);

fp = fopen("test.txt", "rb");

fseek(fp, 0, SEEK_END);
fpos_t pos = 0;
fgetpos(fp, &pos);

fseek(fp, 0, SEEK_SET);

FILE *out = fopen("test_out.txt", "wb");

fpos_t pos4 = pos >> 2;
int mod = pos && 0x00000003;
for(fpos_t i = 0; i < pos4; ++i){
unsigned int p;
fread(&p, sizeof(p), 1, fp);
p ^= 0xF0F0F0F0;
fwrite(&p, sizeof(p), 1, out);
}
for(int i = 0; i < mod; ++i){
unsigned char p;
fread(&p, sizeof(p), 1, fp);
p ^= 0xF0;
fwrite(&p, sizeof(p), 1, out);
}

fclose(out);
fclose(fp);

return 0;

634774さん:2008/10/20(月) 20:40:00 ID:CENbthlg0
The GNU MP Bignum Library
http://gmplib.org/
----
多倍長計算。

635774さん:2008/10/20(月) 21:00:16 ID:CENbthlg0
SVG2Phun
http://www.geocities.jp/int_real_float/svg2phun/SVG2Phun.html

636774さん:2008/10/20(月) 22:10:34 ID:CENbthlg0
取り敢えずソートを変更できるようにしてみたのだ!

637774さん:2008/10/20(月) 22:11:17 ID:CENbthlg0
タグの一覧も表示してみたのだがまだおまけの段階です。

638774さん:2008/10/20(月) 23:49:06 ID:CENbthlg0
よし。タグでの絞り込みも実装できた。
削除もちゃんと働いている。
後は、削除時やタグ編集時の即更新処理だけである。
急激に実用度が上がったwww

639774さん:2008/10/20(月) 23:49:57 ID:CENbthlg0
全体で1100行ほどのソースになった。

640774さん:2008/10/21(火) 00:24:47 ID:CENbthlg0
 今日の時点での - Kei_9 なげやりにっき
http://d.hatena.ne.jp/Kei_9/20081020/1224510600

641774さん:2008/10/21(火) 00:42:07 ID:CENbthlg0
httpsプロトコルでもURIにパスワードとか含めたら、簡単に読まれそうだなと思っていたのだがそうではないみたい。
httpsというのはhttp + SSLということである。
で、此れは、httpで通信する前にSSLという規約で鍵を交換。
そしてhttp通信はSSLを通して通信すると。

つまり、httpのリクエスト自体がもう暗号化されているのでURLに含めても安全というわけ。
漸く安心してURLにパスワードが書けるようになりましたとさ。

まあ、POSTメソッドもリクエストに載せるから安全ではないという風に思っていたのだが、やっぱりそこまでアホじゃないよねw

642774さん:2008/10/21(火) 00:42:20 ID:CENbthlg0
SSLじゃないかもwwwwwwww

643774さん:2008/10/22(水) 22:38:54 ID:CENbthlg0
JOI2006模擬試験1 問題1@Python(-48) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081022/1224676107
JOI2006模擬試験1 問題1@Java(-47) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081022/1224676108
JOI2006予選1 問題1@C++(-50) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081022/1224678188
JOI2006予選1 問題1@Java(-52) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081022/1224678951
JOI2006予選1 問題1@Ruby(-53) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081022/1224679935
JOI2006予選1 問題1@Perl(-54) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081022/1224680790

644774さん:2008/10/24(金) 18:17:53 ID:CENbthlg0
JOI2006予選 問題2@C++(-60) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081023/1224767145
JOI2006予選 問題1@C++(簡潔になったよ!)(-58) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081023/1224761884
JOI2006模擬試験1 問題5@Python(-57) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081023/1224761601

645774さん:2008/10/24(金) 19:30:58 ID:CENbthlg0
ウノウラボ Unoh Labs: シェルの仕組み(前編)
http://labs.unoh.net/2008/10/post_126.html

646774さん:2008/10/25(土) 17:05:27 ID:CENbthlg0
JOI2006予選 問題3@Perl(-65) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081024/1224853021
JOI2006予選 問題4@C++(-66) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081024/1224856862

647774さん:2008/10/25(土) 19:57:45 ID:CENbthlg0
ちょwwwwwwwwwwwwwwwwwww
コンパイラにバグ発見wwwwwwwwwwwwwwwwwwwwwwwww
VC++駄目だなwwwwwwwwwwwwwwww

648774さん:2008/10/28(火) 21:53:40 ID:CENbthlg0
?URL - URLに合い言葉認証
http://nazourl.com/
-----
base64した内容をURLに入れる。
でパスワードを適当に入れる。
これでファイル置き場になるんじゃね?

649774さん:2008/10/28(火) 22:04:34 ID:CENbthlg0
駄目だ。
base64にしても半角全角が保存されない。
それに、大きすぎるとサーバーエラーになってしまうようだ。
もうだめぽ。

650774さん:2008/10/29(水) 21:10:18 ID:CENbthlg0
Sleipnirでfavicon.icoをとりに行くときに、User-Agentを指定させない方法は
0x000649B4の52を55に変えればよいみたい。

651774さん:2008/10/29(水) 21:10:49 ID:CENbthlg0
今のバージョン情報

===========================================================
Sleipnir Version: 2.8.2 クライアント情報
Unicode Edition (Number. 2802401)
-----------------------------------------------------------

■ マシン
OS: Windows XP Home Edition Service Pack 3 (build 2600) (Japanese)
IE(Trident): 7.0.5730.13
CPU: 1 of INTEL (Intel(R) Pentium(R) M processor 1.73GHz)
RAM: 502MB (159MB Free)
FlashPlayer: 9.0.124.0
FireWall: Trend Micro Personal Firewall

■ 有効なプラグイン
CapMail: 0.0.4
FaviconCleaner: 0.1.5
FormResize: 0.1.1
Glanchip: 1.0.2
Hatena Bookmarker: 1.1.3
Headline-Reader Plugin: 1.3.2
Headline-Ticker (Dock ver.): 1.0.6
JIT Actions: 0.0.1
JIT Actions OpenLinkGecko: 0.0.1
JIT Actions SetClientTopMost: 0.0.1
Launch Extension: 0.1.0
Link Panel: 1.1.2
MemoPeta: 0.0.2
Mini Clock: 0.0.4
MixChain: 1.2.3
Mosa (Open ALPHA): 0.1.6
OpenLinkExtension: 0.1.2
RSS Bar Panel: 1.3.3
SafeBrowsing Extension: 0.2.0
Sagittarius Dock: 0.3.0
SeaHorse: 1.1.2
ShootingStar Panel: 0.1.0
ShowPanel Action: 0.0.1
SkinConnection: 1.0.0
SkyPalette: 1.0.3
SnapCrab: 1.1.5
SuperDrag Extension: 1.0.7
UserAction Extension: 1.0.1
UserDefinedTools: 1.0.0

■ 使用中のスキン
Lantana: 0.0.1
===========================================================

652774さん:2008/11/01(土) 18:13:06 ID:CENbthlg0
COM作るときは、objbase.hをインクルードすればいいのかな?

653774さん:2008/11/01(土) 18:22:02 ID:CENbthlg0
正直IUnknownを継承するのはC++上での意味上の問題であり、実際には特に意味はない。

654774さん:2008/11/01(土) 18:50:25 ID:CENbthlg0
よく使うASM命令ベスト100位に説明つけてみた(7/10) - KENJI’S BLOG
http://d.hatena.ne.jp/kenjiaiko/20081101/1225481451

655774さん:2008/11/01(土) 20:25:41 ID:CENbthlg0
Sleipnirのfxプラグインに俺の超適当プラグインを潜入させることに成功。
これで、弄くりまくれる。

656774さん:2008/11/01(土) 21:27:10 ID:CENbthlg0
>>650の続き
Sleipnir2の最新testだったら、0x000649C4の52を55に変更。

657774さん:2008/11/01(土) 21:28:05 ID:CENbthlg0
という事で、Sleipnirにフックモジュールを潜入させることに成功。
うまー。

658774さん:2008/11/02(日) 12:24:02 ID:CENbthlg0
Sleipnirひでええええええええええええええ
APIフック出来たのに、タイトルが弄くれない。
Sleipnir - [タイトル]
見たいになっているのだが、なんか良く分からない状況。
SetWindowTextで弄くっていないのは間違えない。

659774さん:2008/11/02(日) 15:46:17 ID:CENbthlg0
Sleipnir - [MDIタイトル]
になっているらしい。
動作を追っていったら、user32.dllでこのような文字列が作られていた。
つまりこれは、MDIウィンドウを利用しているソフトの宿命のようだ。
だけれども完全に弄くれないという訳ではないと思うなあ。

660774さん:2008/11/02(日) 17:35:25 ID:CENbthlg0
CPU Disasm
Address Hex dump Command Comments
77D1E3FF /> \33F6 XOR ESI,ESI ; Case C (WM_SETTEXT) of switch USER32.77D1088C

661774さん:2008/11/02(日) 18:44:00 ID:CENbthlg0
Fuck食場
http://d.hatena.ne.jp/arikui/

662774さん:2008/11/03(月) 17:09:11 ID:CENbthlg0
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <windows.h>
#include <tchar.h>
#include <process.h>

template<typename T>
class comp{
public:
T r, i;

comp(){
comp(0);
}
comp(T a){
comp(a, 0);
}
comp(T a, T b){
r = a;
i = b;
}

comp operator+(const comp &a){
comp b;
b.r = this->r + a.r;
b.i = this->i + a.i;
return b;
}
comp operator*(const comp &a){
comp b;
b.r = this->r * a.r - this->i * a.i;
b.i = this->r * a.i + this->i * a.r;
return b;
}
T abs(){
return this->r * this->r + this->i + this->i;
}
};

template<typename T>
T abs(T a){
return a >= 0 ? a : -a;
}

template<typename T>
T abs(comp<T> a){
return a.abs();
}

const int c = 10000;

template<typename T>
int in(T a){
T b = 0;
for(int i = 0; i < c; i++){
if(abs(b) >= 2) return i;
b = b * b + a;
}
return -1;
}

const TCHAR *className = _T("test");

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){
switch(msg){
case WM_DESTROY:
PostQuitMessage(0);
break;

case WM_PAINT:{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);

const static COLORREF ref[] = {
RGB(0xFF, 0x00, 0x00),
RGB(0x00, 0xFF, 0x00),
RGB(0x00, 0x00, 0xFF),
RGB(0xFF, 0xFF, 0x00),
RGB(0xFF, 0x00, 0xFF),
RGB(0x00, 0xFF, 0xFF),
};

for(int i = -450; i < 200; ++i){
for(int j = -300; j < 300; ++j){
//SetPixel(hdc, i + 450, j + 300, RGB(0xFF, 0xFF, 0));
int ret = in(comp<double>((double)i / (double)300, abs((double)j / (double)300)));
if(ret == -1){
SetPixel(hdc, i + 450, j + 300, RGB(0, 0, 0));
}else{
//SetPixel(hdc, i + 450, j + 300, ref[(ret / 1) % (sizeof(ref) / sizeof(ref[0]))]);
}
}
}

EndPaint(hWnd, &ps);

break;
}

default:
return DefWindowProc(hWnd, msg, wp, lp);
}
return 0;
}

unsigned int __stdcall thread(void *){
RECT rc = {0, 0, 800, 800};
AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE);

HWND hWnd = CreateWindowEx(
0,
className,
_T("test"),
WS_OVERLAPPEDWINDOW,
rc.left, rc.top,
rc.right - rc.left, rc.bottom - rc.top,
NULL,
NULL,
GetModuleHandle(NULL),
NULL
);
ShowWindow(hWnd, SW_SHOW);

MSG msg;
while(1){
BOOL ret = GetMessage(&msg, NULL, 0, 0);
if(ret == 0 || ret == -1){
break;
}
DispatchMessage(&msg);
}

return 0;
}

int main(int argc, char **argv){

WNDCLASSEX wc = {sizeof(wc)};
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = GetModuleHandle(NULL);
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = className;
wc.hIconSm = NULL;

RegisterClassEx(&wc);

HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, thread, NULL, NULL, NULL);

std::string str;
while(1){
std::getline(std::cin, str);
if(str == "end"){
break;
}
}
}

663774さん:2008/11/03(月) 17:09:34 ID:CENbthlg0
お。
結構長かったのに書き込めた。

664774さん:2008/11/03(月) 20:53:50 ID:CENbthlg0
俺はC/C++とJavaScriptだけが使える。Lispもほんの少しだけ使える。
さて、次はJavaかC#かPerlか。
まあ、全部やりたいけれども。

665774さん:2008/11/03(月) 20:56:44 ID:CENbthlg0
やっぱり、人口の多いJavaやろう。
こんな感じ?
public class Main{
public static main(Strint[] args){
System.out.println("やらないか?");
}
}

666774さん:2008/11/03(月) 20:57:09 ID:CENbthlg0
Javaで検索したら
Javaの道(Java入門・リファレンス)
http://www.javaroad.jp/
が一番上のほうに出たから、ここでお勉強。

667774さん:2008/11/03(月) 20:59:45 ID:CENbthlg0
おっと、voidを忘れていた。

668774さん:2008/11/03(月) 21:01:25 ID:CENbthlg0
なんか、Eから始まる有名なソフトがあった気がする。

669774さん:2008/11/03(月) 21:04:44 ID:CENbthlg0
Eclipse (統合開発環境) - Wikipedia
http://ja.wikipedia.org/wiki/Eclipse_(%E7%B5%B1%E5%90%88%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83)
-----
これだ。
Javaで書かれているんだ。重そう。

670774さん:2008/11/03(月) 21:06:16 ID:CENbthlg0
@IT:連載 Eclipseを使おう!(1)
http://www.atmarkit.co.jp/fjava/rensai2/eclipse01/eclipse01.html
-----
ここ見ながら入れる。
一度入れたことがあるんだけれども、当時の俺には全く理解できませんでした。

671774さん:2008/11/03(月) 21:44:22 ID:CENbthlg0
おっおっおっ。
Java動いた。
うまー。

672774さん:2008/11/03(月) 21:52:52 ID:CENbthlg0
finalを最初に付けるとconst的になるみたい。
だけれども、一度代入できる。
つまり宣言の時に初期化してなかったら、まだ代入できる。
だけれども代入するとどうしようも出来ない。
此れならば、ifの中でconstの値を変更できるということか。

673774さん:2008/11/03(月) 21:54:01 ID:CENbthlg0
やっぱりC++に似ているな。
構文的に

674774さん:2008/11/03(月) 21:56:34 ID:CENbthlg0
public class HelloWorld {

int a = 0;

public static void main(String[] args){
HelloWorld b = new HelloWorld();
b.Show();
}

void Show(){
int c = 100;

System.out.println(a);
System.out.println(c);
}
}

675774さん:2008/11/03(月) 22:05:46 ID:CENbthlg0
public class HelloWorld {
public static void main(String[] args){
System.out.println(Integer.toString(0x74346346, 2));
}
}

676774さん:2008/11/03(月) 22:08:11 ID:CENbthlg0
演算時にはその中に含まれる最大の型に変換されて計算される。
少なくともintには拡張される。

677774さん:2008/11/03(月) 22:09:42 ID:CENbthlg0
変数が含まれる場合は上が適用されるようだが、
short x = 100 + 100;
はちゃんとコンパイルは通るようだ。

678774さん:2008/11/03(月) 22:11:15 ID:CENbthlg0
何故此れのコンパイルが通るし。

public class HelloWorld {
public static void main(String[] args){
short i = (int)(123 * 2);
System.out.println(i);
}
}

679774さん:2008/11/03(月) 22:14:57 ID:CENbthlg0
以下のように表示。
-----
468やらないか?
やらないか?123345
123やらないか?345
-----
public class HelloWorld {
public static void main(String[] args){
String a = "やらないか?";
System.out.println(123 + 345 + a);
System.out.println(a + 123 + 345);
System.out.println(123 + a + 345);
}
}

680774さん:2008/11/03(月) 22:15:54 ID:CENbthlg0
toString()を持っているのは、JavaScriptっぽいなあ。

681774さん:2008/11/03(月) 22:23:49 ID:CENbthlg0
true
false
true
-----
public class HelloWorld {
public static void main(String[] args){
String a = "やらないか?";
String b = "やらないか?";
System.out.println(a == b);

StringBuffer c = new StringBuffer("test");
StringBuffer d = new StringBuffer("test");
StringBuffer e = c;

System.out.println(c == d);
System.out.println(c == e);
}
}

682774さん:2008/11/03(月) 22:25:10 ID:CENbthlg0
JavaScriptならば多分trueのはず。だけれどもJavaはfalse
-----
public class HelloWorld {
public static void main(String[] args){
String a = new String("test");
String b = new String("test");

System.out.println(a == b);
}
}

683774さん:2008/11/03(月) 22:25:45 ID:CENbthlg0
javascript:alert(new String("test") == new String("test"));
falseだったorz............

684774さん:2008/11/03(月) 22:26:58 ID:CENbthlg0
両方ともfalse。

public class HelloWorld {
public static void main(String[] args){
String a = new String("test");
String b = new String("test");

System.out.println((a + "") == (b + ""));
System.out.println((a + "") == (a + ""));
}
}

685774さん:2008/11/03(月) 22:27:59 ID:CENbthlg0
JavaScriptならばtrueなのにね。
javascript:alert(new String("test") + "" == new String("test") + "");

686774さん:2008/11/03(月) 22:32:29 ID:CENbthlg0
ifの中にはboolean型のみ。
C/C++とかJavaScriptみたいには出来ないようだ。
つまり
if(123)は不可能と。
ちゃんと
if(123 != 0)と書けということか!
if(a = 123)
とか書けないじゃないか。馬鹿やろう!

687774さん:2008/11/03(月) 22:35:30 ID:CENbthlg0
演算はintに拡張してから行われる。まあlongは例外だけれども。
だからchar,byte,shortのビットシフトは予想外の結果になるかもね、っと。

688774さん:2008/11/03(月) 22:42:26 ID:CENbthlg0
確かにwhile(1)と書けない以上for(;;)と書く人が出てくるのも理解できる。

689774さん:2008/11/03(月) 22:43:04 ID:CENbthlg0
単文もOKだな。

690774さん:2008/11/03(月) 22:44:26 ID:CENbthlg0
while(true)?入力量多すぎww

691774さん:2008/11/03(月) 22:46:53 ID:CENbthlg0
switch出来るのはintかenumのみか・・・
longも不可っと。
そういえば、C/C++ってポインタで出来たっけ。
多分出来ないと思うけれども。

692774さん:2008/11/03(月) 22:52:10 ID:CENbthlg0
なるほど。
Objectの配列を生成してもC++で言うデフォルトコンストラクタは呼び出されないと。


新着レスの表示


名前: E-mail(省略可)

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

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

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

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