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

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

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

881774さん:2008/11/22(土) 19:06:56 ID:CENbthlg0
態々constに代入しなおしているのは、最適化されないかなあ?という甘い期待。

882774さん:2008/11/22(土) 19:43:32 ID:CENbthlg0
気分でJavaScriptに移植してみた。

function check(x, y){
var ret = 0;
var len = Math.min(x.length, y.length);
for(var i = 0; i < len; ++i){
if(x.charAt(i) == y.charAt(i)){
++ret;
}else{
break;
}
}
return ret;
}

function mmmmax(x_, y_){
var x, y, x_len, y_len;
if(x_.length > y_.length){
x = y_; y = x_;
}else{
x = x_; y = y_;
}
x_len = x.length; y_len = y.length;

var max = 0;

for(var i = 0; i < x_len; ++i){
var current_max = x_len - i;
var func = function(a, b){
var ret = check(x.substring(a), y.substring(b));
if(ret == current_max){
return ret;
}
if(max < ret){
max = ret;
}
};
if(current_max > max){
var ret;
for(var j = 0; j < i; ++j){
ret = func(j, y_len - current_max);
if(ret) return ret;
}
for(var j = 0; j < y_len - current_max + 1; ++j){
ret = func(i, j);
if(ret) return ret;
}
}else{
break;
}
}

return max;
}

883774さん:2008/11/22(土) 20:07:52 ID:CENbthlg0
>>564
が滅茶苦茶早くて吹いた。
すげえええええええええええ

884774さん:2008/11/22(土) 20:41:35 ID:CENbthlg0
Programming Contests, Software Development, and Employment Services at TopCoder
http://www.topcoder.com/

885774さん:2008/11/23(日) 14:08:42 ID:CENbthlg0
パイプ自体は面白いが、待ち受けとかの処理は確かに大変そうである。

886774さん:2008/11/23(日) 14:09:14 ID:CENbthlg0
#include <iostream>
#include <functional>
#include <algorithm>
#include <iterator>

#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <tchar.h>

#include <windows.h>

#include <boost/scoped_array.hpp>

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

int len = lstrlenA(argv[0]);

boost::scoped_array<char> exename(new char[len + 1]);
lstrcpyA(exename.get(), argv[0]);

int i;
for(i = len - 1; i >= 0; --i){
if(exename[i] == '\\'){
exename[i + 1] = '\0';
break;
}
}
if(i == 0) return -1;
SetCurrentDirectoryA(exename.get());
}

HANDLE hRead, hWrite;
SECURITY_ATTRIBUTES sap = {sizeof(sap)};
sap.bInheritHandle = TRUE;
CreatePipe(&hRead, &hWrite, &sap, 0);

STARTUPINFO si = {sizeof(si)};
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = hWrite;
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
PROCESS_INFORMATION pi;

if(CreateProcess(_T("test_test2.exe"), NULL, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)){
WaitForSingleObject(pi.hProcess, INFINITE);
char buff[1024];
DWORD dummy;
ReadFile(hRead, buff, sizeof(buff), &dummy, NULL);
std::cout.write(buff, dummy);

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
CloseHandle(hRead);
CloseHandle(hWrite);
}

887774さん:2008/11/23(日) 16:04:05 ID:CENbthlg0
おい。
valarrayなんて初めて聞いたぞ。
-----
boost::serializationの使い方
http://hw001.gate01.com/eggplant/tcf/cpp/boost_serialization.html
---
>それぞれ必要なヘッダー名は、boost/serialization/<クラス名>.hppです。 私としてはC++標準にもかかわらず無視されているvalarrayとbitsetが可哀想で可哀想で……。
-----
これは酷いww

888774さん:2008/11/23(日) 16:36:30 ID:CENbthlg0
STLは便利♪
http://blogs.wankuma.com/episteme/archive/2008/11/13/161237.aspx
-----
何!
C++には標準で、順列を発生させるSTLが入っているだと・・・

std::next_permutation

889774さん:2008/11/23(日) 17:12:17 ID:CENbthlg0
本の虫: C++0x N2601 60進数リテラル
http://cpplover.blogspot.com/2008/05/n2601-60.html
---
>もし君の環境に、楔形文字フォントがインストールしてあるならば、これは読めるはずだ。Unicodeで表現できるすべての文字のフォントをインストールしておくことは、とても重要だ。マイクロソフトは、その重要さがわかっているからこそ、Windows Vistaに、300メガバイト以上ものフォントを標準で入れておくことを決断したのだ。
-----
wwwwwwwww

890774さん:2008/11/24(月) 10:47:51 ID:CENbthlg0
Minefieldを入れたんだけれども、全てのタブを閉じると終了するのはどうにかして欲しい。

891774さん:2008/11/24(月) 11:11:52 ID:CENbthlg0
C++0xを皆使うようになーあれ!

892774さん:2008/11/24(月) 11:49:02 ID:CENbthlg0
此れからはMinefieldとSleipnir3を使っていくことにしよう。
取り敢えず、Sleipnir3が、あまりにも頻繁に落ちすぎるので、ちゃっちゃと改造してしまおう。

893774さん:2008/11/24(月) 11:51:01 ID:CENbthlg0
dword ptr[ecx]とか言う感じの命令で落ちてしまっているので、ecxが0だったら参照しないようにしようかな。
いや、やっぱりここは念のためにecxが64k以下だったら参照しないようにしよう。
Windowsが64kまではリザーブしているからである。

894774さん:2008/11/24(月) 11:58:04 ID:CENbthlg0
必要じゃないときに落ちて、必要なときに落ちない。
ばかやろう。

895774さん:2008/11/24(月) 12:12:04 ID:CENbthlg0
Minefieldいいんだけれども、タグを選択する際にちょっとでもドラッグしたようになっちゃうと、他のウィンドウで開くようになっちゃうのはどうにかして欲しい。
というか、他のウィンドウで開くようなことをする機会なんてあるのか?
正直要らない機能。
全てのタブを閉じるとウィンドウも閉じるのも何とかして欲しい。

896774さん:2008/11/24(月) 12:13:45 ID:CENbthlg0
勿論良い部分もあって、アドレスバーにnicoとか入力するだけでサジェストしてくれるのは非常に使いこなせれば重宝しそうな機能である。
だけれども、検索したときに新しいウィンドウに出てきて欲しいというのは俺の正直なところである。
アドレスバーでエンターしたときに新しいウィンドウで開けるようになるとさらに良いかもしれないが、基本機能は此れだけなのか?Firefoxさん。
しょぼすぎだろJK

897774さん:2008/11/24(月) 20:29:36 ID:CENbthlg0
滅茶時間かかった。
一時間ぐらいかかったんじゃね?
ecxが0x10000より小さいときは関数を呼び出さないようにしてみた。
此れで落ちないはず。

898774さん:2008/11/24(月) 20:38:48 ID:CENbthlg0
winips用のパッチを作ってみた。
Sleipnir3のunicode版だけなのです。

50 41 54 43 48 02 9B A2 00 04 E9 28 A0 03 02 9B A7 00 00 00 0B CC 06 3B CF 00 04 C7 01 C8 7E 06 3B D4 00 06 41 8B 49 04 81 F9 06 3B DC 00 01 10 06 3B DE 00 09 72 06 8B 01 51 FF 50 08 C3 45 4F 46

899774さん:2008/11/24(月) 20:49:10 ID:CENbthlg0
ActivePerl入れた。
此れでスクリプトを書ける。

900774さん:2008/11/24(月) 20:53:28 ID:CENbthlg0
まあ、バッチファイルという手もあるんだけどね!

901774さん:2008/11/24(月) 21:00:50 ID:CENbthlg0
PerlからJavaScriptは構文を取り入れたのか?

902774さん:2008/11/25(火) 14:52:33 ID:CENbthlg0
確かに
~=と=~は間違えるわwwwwwwwww

903774さん:2008/11/25(火) 14:55:51 ID:CENbthlg0
Perlきもいきもいきもい。

904774さん:2008/11/25(火) 15:14:04 ID:CENbthlg0
ふと思ったんだけれども、SnapCrabで、画像を取得する範囲を引数で渡せればいいな。

905774さん:2008/11/25(火) 16:12:29 ID:CENbthlg0
Perlはちゃんとeqとか==とか使い分けないといけないなあ。まんどくせ。

906774さん:2008/11/25(火) 16:16:50 ID:CENbthlg0
パールは神か?
いやどっちでもない。

907774さん:2008/11/25(火) 18:34:40 ID:CENbthlg0
とりあえず、SleipnirもVC++見たいに、色々な所にサイドバーというか、まあ色々と置けるべきだと思う。

908774さん:2008/11/25(火) 18:34:57 ID:CENbthlg0
そう。Sleipinrはパクリまくればいいのだ!

909774さん:2008/11/25(火) 18:37:50 ID:CENbthlg0
色々とあって、結局Minefieldがメインブラウザになってねーよwww
お気に入りとか使いにくい。
Lunascapeのフローティングもいいが、左右の場所を結構取るのが駄目。
Sleipnirは全くとらないように出来るのがいい!

910774さん:2008/11/25(火) 18:39:42 ID:CENbthlg0
Firefoxのブックマークって、一箇所に入れることしか考えてないよね。
まあタグが使えるから当然か。

911774さん:2008/11/25(火) 20:11:58 ID:CENbthlg0
適当な機会があったら、Sleipnirに欲しい機能を全て纏めたい。

912774さん:2008/11/25(火) 20:59:40 ID:CENbthlg0
俺的Sleipnir要望
http://www.google.com/notebook/public/16824235701148830092/BDRfMDAoQkO_zm90j

Publishした。

913774さん:2008/11/25(火) 21:00:21 ID:CENbthlg0
俺はもうMinefield使いなのですwwww
Googleツールバーも入れて、ブックマークもそこに登録するようにする。
気になったら直ぐ登録を心がける。

914774さん:2008/11/26(水) 18:49:53 ID:CENbthlg0
文字列クラスへのキャストの必要性 - Lispのひび
http://d.hatena.ne.jp/tazant/20081126/1227687807
-----
あれ・・・・
-----
t216::string s;
double i = 8.5;

s = d;
std::cout << "s = " << s << std::endl;
-----
見たいなことって出来たっけなあ・・・・?

915774さん:2008/11/26(水) 18:50:47 ID:CENbthlg0
あ。
別に普通にoperator =(int)とかを用意すればいいか。アホス。

916774さん:2008/11/26(水) 18:56:36 ID:CENbthlg0
class Test{
private:
int i;

public:
Test(int _i)
: i(_i)
{}

int operator=(int _i){
return i = _i;
}

void Show(){
std::cout << i << std::endl;
}
};

int main(int argc, char **argv){
Test o = 12;
o = 30;
o.Show();
}

917774さん:2008/11/26(水) 19:16:23 ID:CENbthlg0
Perlキモイな本当に。
なんか$/if書けるみたい。
ちゃんと勉強しようっと。

918774さん:2008/11/26(水) 20:39:38 ID:CENbthlg0
やっぱり、ブラッディ・マンデイか忘れたけれども、あれ都合よすぎだよな。
というか、まず、シリアルナンバーと顧客情報が対応しているはずがねーんだよ。
もうその時点でSQLインジェクションなんて(ry
-----
SQLインジェクションが出来るシステムなんて脆弱すぎだろJK

919774さん:2008/11/27(木) 13:45:57 ID:CENbthlg0
俺のSleipnirでGoogle Maps言って、そのウィンドウを閉じようとするととてつもなく重くなる。
どうさ中は軽いのにな・・・

920774さん:2008/11/27(木) 19:29:05 ID:CENbthlg0
動画の再生はエコノミーモードでいい。
だけれどもダウンロードは通常画質がいい。

921774さん:2008/11/27(木) 19:42:48 ID:CENbthlg0
Minefield流石!
alpha以前だけあって、常用には耐えかねるよね!
という事で、タブの移動が出来なくなった・・・

922774さん:2008/11/28(金) 13:48:07 ID:CENbthlg0
なぜ外部からWindowsマシンに侵入できるのか?:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20081022/317467/
画面で見るLinux「Ubuntu 8.10 Desktop 日本語 Remix CD」:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20081104/318475/
Linuxコマンド集 INDEX:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230573/
なぜネットワーク通信を盗聴できるのか?:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20081022/317465/

923774さん:2008/11/28(金) 15:23:25 ID:CENbthlg0
Amazon.co.jp: Short Coding ~職人達の技法~: Ozy, やねうらお: 本
http://www.amazon.co.jp/exec/obidos/ASIN/4839925232/
-----
驚愕のソースらしい。

924774さん:2008/11/28(金) 16:42:37 ID:CENbthlg0
連載:C# 3.0入門 − @IT
http://www.atmarkit.co.jp/fdotnet/csharp30/index/index.html

925774さん:2008/11/28(金) 17:10:25 ID:CENbthlg0
ActionScript3 最適化・高速化Tips 簡易まとめ - ConquestArrow.addEventListener(); - actionscriptグループ
http://actionscript.g.hatena.ne.jp/ConquestArrow/20070621/1182359767

926774さん:2008/11/28(金) 18:27:21 ID:CENbthlg0
@IT:連載 改訂版 C#入門
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/

927774さん:2008/11/28(金) 18:29:47 ID:CENbthlg0
統計科学のための電子図書システムのWebページ
http://www.sci.kagoshima-u.ac.jp/~ebsa/index.html

928774さん:2008/11/28(金) 18:31:59 ID:CENbthlg0
web book
http://www.sun-inet.or.jp/~yaneurao/webbook/
-----
本がただでよめるよー。
プログラミング関連の本一杯。

929774さん:2008/11/28(金) 19:50:34 ID:CENbthlg0

http://www.amazon.co.jp/exec/obidos/ASIN/4320017382/

930774さん:2008/11/28(金) 19:50:52 ID:CENbthlg0
Amazon.co.jp: これなら分かる応用数学教室―最小二乗法からウェーブレットまで: 金谷 健一: 本
http://www.amazon.co.jp/exec/obidos/ASIN/4320017382/
-----
タイトルがなくなってしまった・・・
もう一度。

931774さん:2008/11/29(土) 11:13:00 ID:CENbthlg0
Wataru's memo(2003-10-01)
http://memo.wnishida.com/?date=20031001
-----
ぬ!
RDTSC 命令だと・・・
64bitで1Hz毎にインクリメントとか・・・・
どんだけええええええええええええええええ

932774さん:2008/11/29(土) 11:19:10 ID:CENbthlg0
どんだけ高性能だよwwwwwwwwwwwwwwwwwwwwwwwww
-----
#include <iostream>

unsigned long long int _clock(){
__asm{
rdtsc
}
}

int main(int argc, char **argv){
unsigned long long int t = _clock();
std::cout << _clock() << std::endl;
std::cout << _clock() << std::endl;
std::cout << _clock() << std::endl;
std::cout << _clock() << std::endl;
}

933774さん:2008/11/29(土) 11:25:59 ID:CENbthlg0
出来るだけ、呼び出す間隔を小さくしてみた。
-----
#include <iostream>

unsigned long long int _clock(){
__asm{
rdtsc
}
}

int main(int argc, char **argv){
#define baka(x) unsigned long long int x = _clock()
#define aho(x) std::cout << (x) << std::endl
baka(i);
baka(j);
baka(k);
baka(l);
baka(m);
baka(n);
baka(o);
baka(p);
baka(q);
baka(r);
baka(s);
baka(t);
baka(u);
baka(v);
baka(w);
baka(x);
baka(y);
baka(z);

aho(i);
aho(j);
aho(k);
aho(l);
aho(m);
aho(n);
aho(o);
aho(p);
aho(q);
aho(r);
aho(s);
aho(t);
aho(u);
aho(v);
aho(w);
aho(x);
aho(y);
aho(z);

#undef aho
#undef baka
}

934774さん:2008/11/29(土) 11:33:18 ID:CENbthlg0
C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\test_te
st\Release>test_test & test_test & test_test
4659306301320
4659306301364
4659306301408
4659306301452
4659306301496
4659306301540
4659306301584
4659306301628
4659306301672
4659306301716
4659306301760
4659306301804
4659306301848
4659306301892
4659306301936
4659306301980
4659306302024
4659306302068
4659343833528
4659343833572
4659343833616
4659343833660
4659343833704
4659343833748
4659343833792
4659343833836
4659343833880
4659343833924
4659343833968
4659343834012
4659343834056
4659343834100
4659343834144
4659343834188
4659343834232
4659343834276
4659372103020
4659372103064
4659372103108
4659372103152
4659372103196
4659372103240
4659372103284
4659372103328
4659372103372
4659372103416
4659372103460
4659372103504
4659372103548
4659372103592
4659372103636
4659372103680
4659372103724
4659372103768

935774さん:2008/11/29(土) 11:49:56 ID:CENbthlg0
おおこれいいね!
-----
>その場合、問題になるのが静的変数の実体を記述する場所です。
>C++では、実体はヘッダファイル(.h)ではなくソースファイル(.cpp)に記述する必要があります。
>ヘッダファイルに実装を全て記述しているのに、静的変数のためにソースファイルを作るのも
>バカバカしいですよね。
>
>そういう場合、__declspec(selectany)を使うと、ヘッダファイル内に実体を記述することができます。
>うーーーん、便利。なお、当然ですが、VC++の独自拡張です。
---
__declspec(selectany) declarator - VC++
http://www.ailight.jp/blog/sha256/archive/2005/03/22/5258.aspx

936774さん:2008/11/29(土) 11:56:21 ID:CENbthlg0
京都観光を終えて - mala‐ニコニコ動画(秋)
http://www.nicovideo.jp/watch/sm5377545
-----
ほうほう、LivedoorReaderは人気ブログは一時間程度、そうじゃないブログは三時間程度でクロールしているらしい。
直ぐ更新というのは不可能ということは分かっているんだけれども(ry

937774さん:2008/11/29(土) 12:19:20 ID:CENbthlg0
mixiがこの時期に年齢制限を緩和した本当の理由
http://anond.hatelabo.jp/20081129010631
-----
ほうほう。こういう解釈の方法もありか。

938774さん:2008/11/29(土) 12:53:25 ID:CENbthlg0
基礎からC++
http://mukun_mmg.at.infoseek.co.jp/mmg/cpp.html
----
番外編のアルゴリズムでも。

939774さん:2008/11/29(土) 14:14:30 ID:CENbthlg0
INVALID_ATOM
っていう定数があるじゃん。まあ0なんだけど。

940774さん:2008/11/29(土) 14:30:09 ID:CENbthlg0
VC++でデバッグしたときに
0xFFFFFFFFが0FFFFFFFFと出てびびった。
0がついてるから、0x0FFFFFFF(Fが七個)だと思っただけなのだが。

941774さん:2008/11/29(土) 14:39:43 ID:CENbthlg0
があああああああああああああ
sizeof(Data::mutexName)
とか出来ないのがもどかしいいいいいいいいいいい

942774さん:2008/11/29(土) 14:41:51 ID:CENbthlg0
lstrlenAとlstrlenWとlstrlenは使い分けましょうね!

943774さん:2008/11/29(土) 14:46:59 ID:CENbthlg0
そういえば、
sizeof(STRUCTURE::ARRAY[0])
とか言う書き方は出来るのか?出来ぬのか?

944774さん:2008/11/29(土) 15:47:34 ID:CENbthlg0
おお。
色々とちょっと上のほうの_clock関数を利用して遊んでいるのだが、本当にプロセスのプライオリティを変更すると出る値が大きくなる(差を表示している。)

945774さん:2008/11/29(土) 15:49:12 ID:CENbthlg0
こんな感じ。

#define STRICT 1

#include <iostream>
#include <functional>
#include <algorithm>
#include <iterator>
#include <string>

#include <valarray>

#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <tchar.h>

#include <windows.h>

unsigned long long int _clock(){
__asm{
rdtsc
}
}

int main(int argc, char **argv){
for(;;){
long long int a = _clock();
Sleep(0);
long long int b = _clock();

if(b - a >= 1000000){
std::cout << b - a << std::endl;
}
}

return 0;
}

946774さん:2008/11/29(土) 15:49:58 ID:CENbthlg0
なんかこう表示してみると、CPUって結構暇なんだね。

947774さん:2008/11/29(土) 15:53:07 ID:CENbthlg0
タスクマネージャでプライオリティを高にしてみたら、音楽の再生が止まりそうになった。
というか、レコード見たいに同じところを再生するって言う。
これはハードウェアのキャッシュの関係って言うことでいいのかな?

948774さん:2008/11/29(土) 16:41:26 ID:CENbthlg0
せっかく小学四年のころからパソコンに触ってワードとか弄くっているぐらいだったら、プログラミングに興味を持ってそのころからパソコンを色々と弄くって遊んでいたほうが面白かったかもしれないなあと、過去の自分を否定してみる。
いや、それより前に中学の時からでもCとかC++に触れておくべきだったと思う。もうねVBなんて駄目なんですよ。

949774さん:2008/11/29(土) 16:58:14 ID:CENbthlg0
0b
ってC++0xで却下されたんですか。そうですか。

950774さん:2008/11/29(土) 17:43:40 ID:CENbthlg0
コンピュータアーキテクチャの話 | コラム | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/column/architecture/index.html

951774さん:2008/11/29(土) 18:41:07 ID:CENbthlg0
正規表現エンジンを作ろう:CodeZine(コードジン)
http://codezine.jp/article/corner/237
-----
本当にインターネットというものは面白いものが一杯転がっている。

952774さん:2008/11/29(土) 20:26:24 ID:CENbthlg0
法的に危ないファイルを配布するときはさ、zipで圧縮した上でさ、なんか適当なファイルの差分を掲載すればいいと思う。
確か、Windows XPには全て0x00な大きなファイルを作るコマンドがあるから(※)これとの差分をとればいいと思う。
でパッチを作ってファイル名を“パッチを作ったときに使ったファイル名.圧縮形式の拡張子”にすれば良いと思う。
まあ、これをここで書く時点でだめなんだけれどもね。
256通りあるしいろいろと試すといいかもしれないね!

-----

@IT:Windows TIPS -- Tips:巨大なサイズのファイルを簡単に作る方法
http://www.atmarkit.co.jp/fwin2k/win2ktips/243largefile/largefile.html

953774さん:2008/11/29(土) 20:29:05 ID:CENbthlg0
最近コマンドプロンプトを使うことが気のせいか増えた。きっと気のせいだ。
そこで気になっていることがあって、
cd Documents and Settings
というのが通るんですね。意外ですね。で
cd..
もいけるし、
cd\
もいけるんだ。凄いね。

954774さん:2008/11/29(土) 22:16:43 ID:CENbthlg0
ほうほう。
Firefoxはフレームによる拡大縮小をOSに任せて、ステータスバーの右側にある名前知らないけれども、それを掴んで大きさを変えるときはFirefox側で拡大縮小を行っているみたい。

955774さん:2008/12/01(月) 14:58:56 ID:CENbthlg0
微妙にMinefieldのメニューの処理がもっさりする。
それ以上にSleipnirはもっさりする。

956774さん:2008/12/01(月) 19:52:05 ID:CENbthlg0
[HTTP headers]
In = FALSE
Out = TRUE
Key = "URL: test"
Match = "http://extensions.tabbrowser.jp/skins/files/christmas2.si&quot;
Replace = "$RDIR(http://mimizu.karou.jp/christmas2.si)&quot;

-----
これをProxomitronに入れて、クリスマスの奴をインストールすれば楽勝。
まあ、siファイルを直ぐに消すから意味は無いんだけれども。

957774さん:2008/12/01(月) 19:53:04 ID:CENbthlg0
Proxomitronで、ファイルへのリダイレクトがうまくいかない。
というか、普通に置き換えたほうが良かったかもしれない。
まあ、これは今後の懸案事項って言うことでいいや。
直ぐに出来そうなんだけれども。

958774さん:2008/12/01(月) 21:15:28 ID:CENbthlg0
という事で、汎用的に書いてみた。
Proxomitronの正規表現使いにくい・・・
------
[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Type: SleipnirTest"
URL = "extensions.tabbrowser.jp/?++.si"
Match = "text/plain"
Replace = "text/css; fake"

[Patterns]
Name = "Sleipnir Version"
Active = TRUE
URL = "extensions.tabbrowser.jp/?++.si"
Limit = 256
Match = "SleipnirVersion=[0-9]+"
"$STOP()"
Replace = "SleipnirVersion=2000000"

959774さん:2008/12/02(火) 19:08:11 ID:CENbthlg0
とわいらいと・せれなーで: Windows API プログラミング序説 DAW 製作への遠く長い道程 その2
http://yukki-ts.spaces.live.com/Blog/cns!5DF20734B33AF47A!510.entry

960774さん:2008/12/02(火) 19:51:32 ID:CENbthlg0
sarファイルを処理するプログラムを書いていたんだけれども、面倒になった。やめる。

#define STRICT 1

#include <iostream>
#include <fstream>
#include <functional>
#include <algorithm>
#include <iterator>
#include <string>
#include <valarray>
#include <vector>
#include <map>

#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <tchar.h>

#include <windows.h>

unsigned long long int _clock(){
__asm{
rdtsc
}
}

typedef unsigned int uint;

class SarManager{
protected:
std::ifstream file;

public:
SarManager(const char *filename)
: file(filename, std::ios::binary | std::ios::in)
{
if(file.fail()) throw 9999;
}

void
Write(const char *path){
if(IsEOF()) throw 1;

std::ofstream ofile(path, std::ios::binary | std::ios::out);

uint size = 0;
{
char b;
while(file.read(&b, sizeof(b) / sizeof(char)), !IsEOF() && '0' <= b && b <= '9') size = size * 10 + b - '0';
if(b != 0x0A){
throw 2;
}
}
if(size == 0){
throw 3;
}

{
char *p = new char[size];
char b;
file.read(p, size);
file.read(&b, sizeof(b) / sizeof(char));
if(b != 0x0A){
throw 4;
}
ofile.write(p, size);

delete [] p;
}
}

bool
IsEOF(){
return file.eof();
}
};

int main(int argc, char **argv){
if(argc < 2) return -1;

try{
SarManager sm(argv[1]);
int i = 0;
while(!sm.IsEOF()){
char str[1024];
sprintf(str, "%05d", i);
sm.Write(str);
i++;
}
}catch(int e){
if(e == 9999){
std::cerr << "ファイルが見つかりません><" << std::endl;
}
std::cerr << "Error : NO." << e << std::endl;
return -2;
}catch(...){
std::cerr << "Error" << std::endl;
return -3;
}

return 0;
}

961774さん:2008/12/02(火) 19:54:22 ID:CENbthlg0
yesコマンド実装してみたwww

int main(int argc, char **argv){
const char *str = argc < 2 ? "y" : argv[1];
for(;;) std::cout << str << std::endl;
}

962774さん:2008/12/02(火) 19:55:41 ID:CENbthlg0
こっちの方が早いかww
----
int main(int argc, char **argv){
const char *str = argc < 2 ? "y" : argv[1];
for(;;) std::puts(str);
}

963774さん:2008/12/02(火) 20:20:56 ID:CENbthlg0
正直ファイルのエラー検出は滅茶苦茶多くないといけないと思う。
ユーザーが何を入力するか分からない。
プログラマーはユーザーなんて信用してはいけないというお話。

964774さん:2008/12/02(火) 20:50:04 ID:CENbthlg0
フーリエ変換理解できない><

965774さん:2008/12/03(水) 19:03:11 ID:CENbthlg0
パールも分からん。

966774さん:2008/12/03(水) 19:20:06 ID:CENbthlg0
暇だしsarファイルを解析する。
まあ、チェックサムの意味が分からないので、そこだけ解析する。

967774さん:2008/12/03(水) 19:21:37 ID:CENbthlg0
という事で、基本的にはファイルの関数を開くときは必ずCreateFileを利用している筈なので、そこらへんをフックする。

968774さん:2008/12/03(水) 22:12:41 ID:CENbthlg0
CPU Disasm
Address Hex dump Command Comments
410344D0 /$ 55 PUSH EBP ; FenrirLib_fx.410344D0(guessed Arg1,Arg2)
410344D1 |. 8BEC MOV EBP,ESP
410344D3 |. 51 PUSH ECX
410344D4 |. 53 PUSH EBX
410344D5 |. 33DB XOR EBX,EBX
410344D7 |. 57 PUSH EDI
410344D8 |. 8D4D FC LEA ECX,[LOCAL.2]
410344DB |. 891E MOV DWORD PTR DS:[ESI],EBX
410344DD |. E8 F949FFFF CALL ??0FString@@QAE@XZ
410344E2 |. 68 447F0041 PUSH FenrirLib_fx.41007F44 ; /Arg2 = FenrirLib_fx.41007F44
410344E7 |. FF75 0C PUSH DWORD PTR SS:[ARG.2] ; |Arg1 => [ARG.2]
410344EA |. FF15 38150041 CALL DWORD PTR DS:[<&MSVCR71._wfopen>] ; \MSVCR71._wfopen
410344F0 |. 8BF8 MOV EDI,EAX
410344F2 |. 3BFB CMP EDI,EBX
410344F4 |. 59 POP ECX
410344F5 |. 59 POP ECX
410344F6 |. 74 1D JE SHORT 41034515
410344F8 |. 56 PUSH ESI ; /Arg2
410344F9 |. 57 PUSH EDI ; |Arg1
410344FA |. E8 C6FDFFFF CALL 410342C5 ; \FenrirLib_fx.410342C5
410344FF |. 84C0 TEST AL,AL
41034501 |. 57 PUSH EDI ; //Arg1
41034502 |. 75 08 JNE SHORT 4103450C ; ||
41034504 |. FF15 30150041 CALL DWORD PTR DS:[<&MSVCR71.fclose>] ; |\MSVCR71.fclose
4103450A |. EB 08 JMP SHORT 41034514 ; |
4103450C |> FF15 30150041 CALL DWORD PTR DS:[<&MSVCR71.fclose>] ; \MSVCR71.fclose
41034512 |. B3 01 MOV BL,1
41034514 |> 59 POP ECX
41034515 |> 8D4D FC LEA ECX,[LOCAL.2]
41034518 |. E8 584AFFFF CALL ??1FString@@QAE@XZ ; [FenrirLib_fx.??1FString@@QAE@XZ
4103451D |. 5F POP EDI
4103451E |. 8AC3 MOV AL,BL
41034520 |. 5B POP EBX
41034521 |. C9 LEAVE
41034522 \. C2 0800 RETN 8

969774さん:2008/12/03(水) 22:13:31 ID:CENbthlg0
>>968
ここでgzを解凍するようである。
本当の処理はここの中で呼び出されてる関数かな。

970774さん:2008/12/03(水) 22:15:55 ID:CENbthlg0
>>969
違った。全然違った。
この中で、sarファイルを展開している。

971774さん:2008/12/03(水) 22:16:54 ID:CENbthlg0
CPU Disasm
Address Hex dump Command Comments
410342C5 /$ 55 PUSH EBP ; FenrirLib_fx.410342C5(guessed Arg1,Arg2)
410342C6 |. 8BEC MOV EBP,ESP
410342C8 |. 81EC 40080000 SUB ESP,840
410342CE |. 8365 F0 00 AND DWORD PTR SS:[LOCAL.5],00000000
410342D2 |. 8365 F4 00 AND DWORD PTR SS:[LOCAL.4],00000000
410342D6 |. 53 PUSH EBX
410342D7 |. 56 PUSH ESI
410342D8 |. 57 PUSH EDI
410342D9 |. 8D85 C0F7FFFF LEA EAX,[LOCAL.529]
410342DF |. 50 PUSH EAX ; /Buffer => OFFSET LOCAL.529
410342E0 |. 68 04010000 PUSH 104 ; |Bufcount = 260.
410342E5 |. C645 FF 00 MOV BYTE PTR SS:[LOCAL.2+3],0 ; |
410342E9 |. FF15 30140041 CALL DWORD PTR DS:[<&KERNEL32.GetTempPat ; \KERNEL32.GetTempPathW
410342EF |. FF75 08 PUSH DWORD PTR SS:[ARG.1]
410342F2 |. 8D85 C8F9FFFF LEA EAX,[LOCAL.399]
410342F8 |. 68 00040000 PUSH 400
410342FD |. 50 PUSH EAX
410342FE |. FF15 D4140041 CALL DWORD PTR DS:[<&MSVCR71.fgets>]
41034304 |. 83C4 0C ADD ESP,0C
41034307 |. 85C0 TEST EAX,EAX
41034309 |. 0F84 A1010000 JE 410344B0
4103430F |. 8B3D 34150041 MOV EDI,DWORD PTR DS:[<&MSVCR71.fread>]
41034315 |. 33DB XOR EBX,EBX
41034317 |. 43 INC EBX
41034318 |> 8D85 C8F9FFFF /LEA EAX,[LOCAL.399]
4103431E |. 68 1C930041 |PUSH FenrirLib_fx.4100931C ; /Arg2 = ASCII "CheckSum="
41034323 |. 50 |PUSH EAX ; |Arg1 => OFFSET LOCAL.399
41034324 |. FF15 D0140041 |CALL DWORD PTR DS:[<&MSVCR71.strspn>] ; \MSVCR71.strspn
4103432A |. 85C0 |TEST EAX,EAX
4103432C |. 59 |POP ECX
4103432D |. 59 |POP ECX
4103432E |. 0F85 85010000 |JNE 410344B9
41034334 |. 8D85 C8F9FFFF |LEA EAX,[LOCAL.399]

972774さん:2008/12/03(水) 22:17:40 ID:CENbthlg0
4103433A |. 50 |PUSH EAX ; /Arg1 => OFFSET LOCAL.399
4103433B |. FF15 CC140041 |CALL DWORD PTR DS:[<&MSVCR71.atoi>] ; \MSVCR71.atol
41034341 |. 8B75 0C |MOV ESI,DWORD PTR SS:[ARG.2]
41034344 |. FF36 |PUSH DWORD PTR DS:[ESI] ; /<%08d>
41034346 |. 8945 F8 |MOV DWORD PTR SS:[LOCAL.3],EAX ; |
41034349 |. 8D85 C0F7FFFF |LEA EAX,[LOCAL.529] ; |
4103434F |. 50 |PUSH EAX ; |<%s> => OFFSET LOCAL.529
41034350 |. 8D85 C8FDFFFF |LEA EAX,[LOCAL.143] ; |
41034356 |. 68 E8920041 |PUSH FenrirLib_fx.410092E8 ; |Format
4103435B |. 50 |PUSH EAX ; |Buf => OFFSET LOCAL.143
4103435C |. FF15 B0170041 |CALL DWORD PTR DS:[<&USER32.wsprintfW>] ; \USER32.wsprintfW
41034362 |. 83C4 14 |ADD ESP,14
41034365 |. E8 4962FFFF |CALL ?IsWinNT@FMisc@@SG_NXZ
4103436A |. 84C0 |TEST AL,AL
4103436C |. 74 79 |JE SHORT 410343E7
4103436E |. 8D85 C8FDFFFF |LEA EAX,[LOCAL.143]
41034374 |. 50 |PUSH EAX ; /Arg1 => OFFSET LOCAL.143
41034375 |. E8 C059FFFF |CALL ?IsFileExist@FMisc@@SG_NPB_W@Z ; \FenrirLib_fx.?IsFileExist@FMisc@@SG_NPB_W@Z
4103437A |. 84C0 |TEST AL,AL
4103437C |. 75 69 |JNE SHORT 410343E7
4103437E |. 6A 0C |PUSH 0C
41034380 |. 5E |POP ESI
41034381 |. 56 |PUSH ESI ; /Arg3 => 0C
41034382 |. 8D45 E4 |LEA EAX,[LOCAL.8] ; |
41034385 |. 6A 00 |PUSH 0 ; |Arg2 = 0
41034387 |. 50 |PUSH EAX ; |Arg1 => OFFSET LOCAL.8
41034388 |. E8 D7FC0000 |CALL <JMP.&MSVCR71.memset> ; \MSVCR71.memset
4103438D |. 83C4 0C |ADD ESP,0C

973774さん:2008/12/03(水) 22:17:53 ID:CENbthlg0
41034390 |. 53 |PUSH EBX ; /Arg2
41034391 |. 8D45 D0 |LEA EAX,[LOCAL.13] ; |
41034394 |. 50 |PUSH EAX ; |Arg1 => OFFSET LOCAL.13
41034395 |. FF15 18100041 |CALL DWORD PTR DS:[<&ADVAPI32.Initializ ; \ADVAPI32.InitializeSecurityDescriptor
4103439B |. 53 |PUSH EBX ; /Arg4
4103439C |. 6A 00 |PUSH 0 ; |Arg3 = 0
4103439E |. 53 |PUSH EBX ; |Arg2
4103439F |. 8D45 D0 |LEA EAX,[LOCAL.13] ; |
410343A2 |. 50 |PUSH EAX ; |Arg1 => OFFSET LOCAL.13
410343A3 |. FF15 1C100041 |CALL DWORD PTR DS:[<&ADVAPI32.SetSecuri ; \ADVAPI32.SetSecurityDescriptorDacl
410343A9 |. 8365 EC 00 |AND DWORD PTR SS:[LOCAL.6],00000000
410343AD |. 6A 00 |PUSH 0 ; /hTemplate = NULL
410343AF |. 6A 20 |PUSH 20 ; |Attributes = FILE_ATTRIBUTE_ARCHIVE
410343B1 |. 8D45 D0 |LEA EAX,[LOCAL.13] ; |
410343B4 |. 6A 02 |PUSH 2 ; |CreationDistribution = CREATE_ALWAYS
410343B6 |. 8945 E8 |MOV DWORD PTR SS:[LOCAL.7],EAX ; |
410343B9 |. 8D45 E4 |LEA EAX,[LOCAL.8] ; |
410343BC |. 50 |PUSH EAX ; |pSecurity => OFFSET LOCAL.8
410343BD |. 6A 03 |PUSH 3 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
410343BF |. 68 00000050 |PUSH 50000000 ; |DesiredAccess = GENERIC_WRITE|GENERIC_ALL
410343C4 |. 8D85 C8FDFFFF |LEA EAX,[LOCAL.143] ; |
410343CA |. 50 |PUSH EAX ; |FileName => OFFSET LOCAL.143

974774さん:2008/12/03(水) 22:18:08 ID:CENbthlg0
410343CB |. 8975 E4 |MOV DWORD PTR SS:[LOCAL.8],ESI ; |
410343CE |. FF15 18140041 |CALL DWORD PTR DS:[<&KERNEL32.CreateFil ; \KERNEL32.CreateFileW
410343D4 |. 8BF0 |MOV ESI,EAX
410343D6 |. 56 |PUSH ESI ; /hFile
410343D7 |. FF15 20140041 |CALL DWORD PTR DS:[<&KERNEL32.FlushFile ; \KERNEL32.FlushFileBuffers
410343DD |. 56 |PUSH ESI ; /hObject
410343DE |. FF15 1C140041 |CALL DWORD PTR DS:[<&KERNEL32.CloseHand ; \KERNEL32.CloseHandle
410343E4 |. 8B75 0C |MOV ESI,DWORD PTR SS:[ARG.2]
410343E7 |> 8D85 C8FDFFFF |LEA EAX,[LOCAL.143]
410343ED |. 68 1C7F0041 |PUSH FenrirLib_fx.41007F1C ; /Arg2 = FenrirLib_fx.41007F1C
410343F2 |. 50 |PUSH EAX ; |Arg1 => OFFSET LOCAL.143
410343F3 |. FF15 38150041 |CALL DWORD PTR DS:[<&MSVCR71._wfopen>] ; \MSVCR71._wfopen
410343F9 |. 85C0 |TEST EAX,EAX
410343FB |. 59 |POP ECX
410343FC |. 59 |POP ECX
410343FD |. 8945 F0 |MOV DWORD PTR SS:[LOCAL.5],EAX
41034400 |. 0F84 9A000000 |JE 410344A0
41034406 |. FF75 F8 |PUSH DWORD PTR SS:[LOCAL.3] ; /Arg1 => [LOCAL.3]
41034409 |. FF15 90150041 |CALL DWORD PTR DS:[<&MSVCR71.malloc>] ; \MSVCR71.malloc
4103440F |. 85C0 |TEST EAX,EAX
41034411 |. 59 |POP ECX
41034412 |. 8945 F4 |MOV DWORD PTR SS:[LOCAL.4],EAX
41034415 |. 74 79 |JE SHORT 41034490
41034417 |. FF75 08 |PUSH DWORD PTR SS:[ARG.1]
4103441A |. FF75 F8 |PUSH DWORD PTR SS:[LOCAL.3]
4103441D |. 53 |PUSH EBX
4103441E |. 50 |PUSH EAX
4103441F |. FFD7 |CALL EDI
41034421 |. 83C4 10 |ADD ESP,10
41034424 |. 3B45 F8 |CMP EAX,DWORD PTR SS:[LOCAL.3]
41034427 |. 75 67 |JNE SHORT 41034490
41034429 |. FF75 F0 |PUSH DWORD PTR SS:[LOCAL.5]

975774さん:2008/12/03(水) 22:18:27 ID:CENbthlg0
4103442C |. FF75 F8 |PUSH DWORD PTR SS:[LOCAL.3]
4103442F |. 53 |PUSH EBX
41034430 |. FF75 F4 |PUSH DWORD PTR SS:[LOCAL.4]
41034433 |. FF15 28150041 |CALL DWORD PTR DS:[<&MSVCR71.fwrite>]
41034439 |. 83C4 10 |ADD ESP,10
4103443C |. 3B45 F8 |CMP EAX,DWORD PTR SS:[LOCAL.3]
4103443F |. 75 4F |JNE SHORT 41034490
41034441 |. FF75 F4 |PUSH DWORD PTR SS:[LOCAL.4] ; /Arg1 => [LOCAL.4]
41034444 |. FF15 94150041 |CALL DWORD PTR DS:[<&MSVCR71.free>] ; \MSVCR71.free
4103444A |. FF75 F0 |PUSH DWORD PTR SS:[LOCAL.5] ; /Arg1 => [LOCAL.5]
4103444D |. FF15 30150041 |CALL DWORD PTR DS:[<&MSVCR71.fclose>] ; \MSVCR71.fclose
41034453 |. FF75 08 |PUSH DWORD PTR SS:[ARG.1]
41034456 |. 8D85 C8F9FFFF |LEA EAX,[LOCAL.399]
4103445C |. 53 |PUSH EBX
4103445D |. 53 |PUSH EBX
4103445E |. 50 |PUSH EAX
4103445F |. FFD7 |CALL EDI
41034461 |. 83C4 18 |ADD ESP,18
41034464 |. 3BC3 |CMP EAX,EBX
41034466 |. 75 28 |JNE SHORT 41034490
41034468 |. 8A45 F8 |MOV AL,BYTE PTR SS:[LOCAL.3]
4103446B |. FF75 08 |PUSH DWORD PTR SS:[ARG.1]
4103446E |. 0045 FF |ADD BYTE PTR SS:[LOCAL.2+3],AL
41034471 |. FF06 |INC DWORD PTR DS:[ESI]
41034473 |. 8D85 C8F9FFFF |LEA EAX,[LOCAL.399]
41034479 |. 68 00040000 |PUSH 400
4103447E |. 50 |PUSH EAX
4103447F |. FF15 D4140041 |CALL DWORD PTR DS:[<&MSVCR71.fgets>]
41034485 |. 83C4 0C |ADD ESP,0C
41034488 |. 85C0 |TEST EAX,EAX
4103448A |.^ 0F85 88FEFFFF \JNE 41034318
41034490 |> 837D F0 00 CMP DWORD PTR SS:[LOCAL.5],0
41034494 |. 74 0A JE SHORT 410344A0
41034496 |. FF75 F0 PUSH DWORD PTR SS:[LOCAL.5] ; /Arg1 => [LOCAL.5]
41034499 |. FF15 30150041 CALL DWORD PTR DS:[<&MSVCR71.fclose>] ; \MSVCR71.fclose
4103449F |. 59 POP ECX

976774さん:2008/12/03(水) 22:18:39 ID:CENbthlg0
410344A0 |> 837D F4 00 CMP DWORD PTR SS:[LOCAL.4],0
410344A4 |. 74 0A JE SHORT 410344B0
410344A6 |. FF75 F4 PUSH DWORD PTR SS:[LOCAL.4] ; /Arg1 => [LOCAL.4]
410344A9 |. FF15 94150041 CALL DWORD PTR DS:[<&MSVCR71.free>] ; \MSVCR71.free
410344AF |. 59 POP ECX
410344B0 |> 32C0 XOR AL,AL
410344B2 |> 5F POP EDI
410344B3 |. 5E POP ESI
410344B4 |. 5B POP EBX
410344B5 |. C9 LEAVE
410344B6 |. C2 0800 RETN 8
410344B9 |> 8D85 D1F9FFFF LEA EAX,[LOCAL.397+1]
410344BF |. 50 PUSH EAX ; /Arg1
410344C0 |. FF15 CC140041 CALL DWORD PTR DS:[<&MSVCR71.atoi>] ; \MSVCR71.atol
410344C6 |. 3845 FF CMP BYTE PTR SS:[LOCAL.2+3],AL
410344C9 |. 59 POP ECX
410344CA |.^ 75 C4 JNE SHORT 41034490
410344CC |. 8AC3 MOV AL,BL
410344CE \.^ EB E2 JMP SHORT 410344B2

977774さん:2008/12/03(水) 22:19:43 ID:CENbthlg0
http://jbbs.livedoor.jp/bbs/read.cgi/computer/38153/1218378495/971-976n
処理の全容。
今からチェックサムの求め方を解析したい。

978774さん:2008/12/03(水) 22:37:17 ID:CENbthlg0
面倒になった。
明日本格的にやる。
まあ、直ぐ分かりそうなんだけれども。

979774さん:2008/12/03(水) 22:48:56 ID:CENbthlg0
分かった。
チェックサムは、それぞれのファイルのバイト数の合計だ。
でそれの下8ビット。まあ、つまり普通にunsigned charで足せばいいのだ。
簡単簡単。
実際にそれで合うかプログラムを書く。
まあ、直ぐに出来るだろう。

980774さん:2008/12/03(水) 23:06:46 ID:CENbthlg0
#include <iostream>

#include <cstdio>

int main(int argc, char **argv){
FILE *file = std::fopen("Hawkeye.sar", "rb");
char buff[1024];
unsigned char sum = 0;
if(file){
while(1){
std::fgets(buff, sizeof(buff), file);
if(strnicmp(buff, "checksum=", 9) == 0){
unsigned char csum = (unsigned char)atoi(buff + 9);
if(sum == csum){
std::cout << "OK";
}else{
std::cout << "BAD";
}
std::cout << std::endl;
break;
}else{
unsigned int size = (unsigned int)atoi(buff);
sum += size;
fseek(file, size + 1, SEEK_CUR);
}
}
}
}


新着レスの表示


名前: E-mail(省略可)

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

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

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

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