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

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

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

1009774さん:2008/12/06(土) 17:25:27 ID:CENbthlg0
面倒だしバッチ書いた。
適当すぎww
メイクファイル・・・?
-----
del *.exe
del *.obj
nasm -fwin32 aaa.asm && golink -entry start aaa.obj

1010774さん:2008/12/06(土) 17:36:04 ID:CENbthlg0
いかんいかん。
アセンブルするためにバッチファイルを書くのだが、そのためにバッチファイルを勉強するという本末転倒の状態になってしまった。
動けば良いんだよ、動けば。

1011774さん:2008/12/06(土) 17:44:50 ID:CENbthlg0
そんなこと言って改造してしまった。
-----
@echo off
if "%1" == "" exit /b
if not exist "%1.asm" exit /b
del %1.exe > nul
del %1.obj > nul
nasm -fwin32 %1.asm && golink -entry start %1.obj

1012774さん:2008/12/06(土) 17:47:28 ID:CENbthlg0
@echo off
if "%1" == "" exit /b
if not exist "%1.asm" goto error


del %1.exe > nul
del %1.obj > nul
nasm -fwin32 %1.asm && golink -entry start %1.obj
exit /b

:error
echo %1は存在しないようです。
exit /b

1013774さん:2008/12/06(土) 19:19:24 ID:CENbthlg0
アセンブリ入れたのは良いんだけれども、書くものがないので結局何も。

1014774さん:2008/12/06(土) 19:21:08 ID:CENbthlg0
神速(´・ω・)VIP:素敵な壁紙画像下さい(´・ω・`) その1
http://sinsoku.livedoor.biz/archives/51225987.html
ベア速 日本SUGEEEEEEEEEEEEEEEE!ってなるコピペくれ
http://vipvipblogblog.blog119.fc2.com/blog-entry-248.html

1015774さん:2008/12/06(土) 20:24:39 ID:CENbthlg0
間違えて貼ってしまった。

Firefoxはいいが、フラッシュが直ぐ止まるバグがあるので、嫌だ。

1016774さん:2008/12/06(土) 22:21:40 ID:CENbthlg0
履歴管理(失敗) - 素人がプログラミングを勉強するブログ
http://d.hatena.ne.jp/javascripter/20081206/1228566390
-----
toXMLString();に注目!
重要な構文ではないかww

1017774さん:2008/12/06(土) 22:25:47 ID:CENbthlg0
ECMAScript for XML (E4X) 仕様邦訳
http://www.ne.jp/asahi/nanto/moon/specs/ecma-357.html
------
これか。

1018774さん:2008/12/06(土) 23:04:35 ID:CENbthlg0
忍者バリアーとか出来たよー、とか忍者から送ってきたのだけれども、
JavaScriptだし効果ないじゃん。
-----
<!--shinobibarrier1-->
<script type="text/javascript" src="http://bar1.shinobi.jp/hash.js&quot;&gt;&lt;/script&gt;
<script type="text/javascript" src="http://bar1.shinobi.jp/s/42/00013.js&quot;&gt;&lt;/script&gt;
<noscript><a href="http://www.ninja.co.jp/barrier/&quot; target="_blank">アクセス制限</a></noscript>
<noscript><meta http-equiv="refresh" content="0;URL=http://bar1.shinobi.jp/hoge/NoScript?0001342&quot; />
<div style="background-color: #000000;text-align: center;vertical-align: middle;width:100%;height: 100%;margin: -10px;padding: 0px;z-index: 10;position: absolute;">
<div style="color: #ffffff;margin: 0px;padding: 0px;position: absolute;top:50%;left:47%;"><a href="http://www.ninja.co.jp/&quot;&gt;NINJA TOOLS</a></div></div></noscript>
<!--shinobibarrier2-->

1019774さん:2008/12/06(土) 23:07:35 ID:CENbthlg0
これなんてMD5?

1020774さん:2008/12/06(土) 23:09:05 ID:CENbthlg0
普通に
bar1.shinobi.jp/
に接続しないようにしたら正直全く意味が無いと思う。
JavaScript無効にしている人だったら、プロクソミトロンかなんかで、
metaタグを消しちゃえば一発だと思う。
全く意味なし、効果なし。

1021774さん:2008/12/06(土) 23:10:04 ID:CENbthlg0
というか、JavaScript無効時に飛ばすHTMLのURLがhogeとかwwww

1022774さん:2008/12/06(土) 23:12:14 ID:CENbthlg0
拒否レベルってこういうことですかwwwww
http://bar1.shinobi.jp/sample/01.html
http://bar1.shinobi.jp/sample/02.html
http://bar1.shinobi.jp/sample/03.html
http://bar1.shinobi.jp/sample/04.html
http://bar1.shinobi.jp/sample/05.html

1023774さん:2008/12/06(土) 23:13:27 ID:CENbthlg0
>忍者バリアーとは、荒らし、迷惑行為などご自分のHPに入ってほしくないユーザーの接続をJavaScriptを利用して制御するツールです。
JavaScript・・・
これに騙される人はどうかしてます。
導入しているサイトが見たいくらいです。

1024774さん:2008/12/06(土) 23:18:14 ID:CENbthlg0
>.htaccessが設置できない環境でもjavascriptさえ使えればすぐに採用出来るので、とりあえずでもアクセス制限を実施したいサイトさんにはおススメですね。
.htaccessの方が良いですよねー
まあ、俺鯖を持ってないから駄目なんだけれども。

1025774さん:2008/12/07(日) 20:04:34 ID:CENbthlg0
なんかプログラムを書きたいなあ。
ゲームを書きたい気が最近強くなっているのだが、ちゃんとそういうのを基礎からやったほうが良いと思う。

どうでも良いが、Win32APIでウィンドウに点を打つ最速の関数ってあるのか?
ActiveXは使わない方向の方が良いのだが・・・

1026774さん:2008/12/07(日) 20:57:40 ID:CENbthlg0
ブラッディーマンデイでman in the middle attackを話していたが、
これは常にプロセスやらを監視していれば気づくと思うんだがなあ。
自分のパソコンに監視用のドライバを入れれば良いと思うお。
リング0で動作するから、簡単に見つけれそうだが。
まあ、完全にWindowsクラックですが。

俺には到底出来ません。

1027774さん:2008/12/07(日) 20:59:15 ID:CENbthlg0
というか、キーボードとかのデータを送るソフトから、その送り先のパソコンで任意のコードが実行できるバグは酷くないか。
普通に書いていれば通信部分でオーバーフローとか起こさないと思うのだがなあ。

そうか、そのおかげで相手のIPアドレスが分かったんだな。
そういうことにしておこう。

1028774さん:2008/12/07(日) 21:01:03 ID:CENbthlg0
どうして、気象APIが有料なんだよ。
XMLでロハでデータを提供してくれるんじゃないのかよ。
死んで給え。

1029774さん:2008/12/07(日) 21:01:36 ID:CENbthlg0
どう考えても死にたまえの方が敬語として適切です。

1030774さん:2008/12/07(日) 21:05:34 ID:CENbthlg0
WizardBibleが全然でないなあと思ったので、掲示板を覗いてみたら今週の火曜日が原稿の締め切りだそうだ。
という事は、今週の週末には出るのかな。
最近は分量が少ないので読み応えがない気がするが、まあ理解できてないので意味ないかw

http://wizardbible.org/

1031774さん:2008/12/07(日) 21:07:11 ID:CENbthlg0
Firefoxはリンクをクリックしたりだとか、検索したときの動作が今開いているタブに対して起こるのだが、
その動作は中クリックで行えば大抵新しいウィンドウで出るみたい。
リンクバーとかも然り。

1032774さん:2008/12/07(日) 21:07:25 ID:CENbthlg0
Sleipnirもこういう風になってほしい。

1033774さん:2008/12/08(月) 19:21:02 ID:CENbthlg0
プログラマの思索: Subversionを見直せ
http://forza.cocolog-nifty.com/blog/2008/12/subversion-390f.html

1034774さん:2008/12/09(火) 18:58:17 ID:CENbthlg0
Firefox拡張機能(Extention)の簡単な作り方メモ at HouseTect, JavaScripter Blog
http://hisasann.com/housetect/2008/12/firefoxextention.html
新米Linux管理者がよくやる10の間違い - IT業界を生き抜く秘密10箇条 - ZDNet Japan
http://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20384928,00.htm
ブラウザで X86 のマシン語を動かす! Google 謹製 Native Client をさっそく試してみる - IT戦記
http://d.hatena.ne.jp/amachang/20081209/1228804423

1035774さん:2008/12/09(火) 18:58:33 ID:CENbthlg0
便利なjQueryプラグインいろいろ:phpspot開発日誌
http://phpspot.org/blog/archives/2008/12/jquery_6.html

1036774さん:2008/12/09(火) 18:58:44 ID:CENbthlg0
mixiや楽天の「中の人」、インフラエンジニアを語る − @IT
http://www.atmarkit.co.jp/news/200812/08/infla.html

1037774さん:2008/12/09(火) 19:07:06 ID:CENbthlg0
>>1034
なんかGoogleたん、俺がやったら面白いなあと思っていることをやっている気がしなくは無いが、
良くx86のエミュレータを作るなあと。
独自のコンパイラを作っているのかねえ?

FirefoxのExtensionの作り方メモ良いねえ。
だけれども、SleipnirのUserAction見たいな風に簡単に追加できないのは痛いぜ。

1038774さん:2008/12/09(火) 19:20:48 ID:CENbthlg0
http://update.fenrir.co.jp/smartupdate/version.txt

1039774さん:2008/12/09(火) 19:39:34 ID:CENbthlg0
http://update.fenrir.co.jp//smartupdate/release_detail2.php?lang=1041&amp;os=WindowsXP+Service+Pack+3&amp;charset=unicode&amp;build=2802402&amp;type=archive

1040774さん:2008/12/09(火) 20:00:29 ID:CENbthlg0
タスクマネージャさん。


---------------------------
タスク マネージャの警告
---------------------------
警告: プロセスを終了すると、データが失われたり、システムが
不安定になったりするなどの、予期しない結果になることがあります。
プロセスを終了する前に、状態またはデータを保存するかどうかの
確認メッセージは表示されません。プロセスを終了しますか?
---------------------------
はい(Y) いいえ(N)
---------------------------

とか出しているCPU時間があったら、すぐさま終了してください。

1041774さん:2008/12/09(火) 20:04:59 ID:CENbthlg0
[SmartUpdater]
LastCheckTime="14729"

[SmartUpdaterVersionInfo]
ClientVersion="2802"
IsExistNewUpdate="true"
ServerVersion="2804"
ServerKind="4"
ServerNumber="1"
ServerBuildNo="0"
LastTimeShowedUpdateDialog="14729"

1042774さん:2008/12/09(火) 20:19:53 ID:CENbthlg0
さて、Sleipnirが起動を行うたびに、バージョンチェックを行えるようにしたい。
書き換えれば良いのは、
[SmartUpdater]
LastCheckTime=""
だけで良いと思う。

1043774さん:2008/12/09(火) 20:20:29 ID:CENbthlg0
OllyDbgでSleipnir.exeを、おや、後ろから人が来たようだ。

1044774さん:2008/12/09(火) 20:36:12 ID:CENbthlg0
http://www.sleipnir-wiki.jp/index.php?Tips#other_autostart
を使うにもタイミングが・・・

1045774さん:2008/12/09(火) 20:40:44 ID:CENbthlg0
まあ、取り敢えず書いてみよう。

1046774さん:2008/12/10(水) 18:24:55 ID:CENbthlg0
#define STRICT 1

#if !defined(UNICODE) && !defined(_UNICODE)
#error UNICODE版でしかコンパイル出来んぞい。
#endif

#include <iostream>
#include <cstdio>
#include <string>
#include <windows.h>
#include <lmcons.h>
#include <tchar.h>

using namespace std;

bool IsFileExist(wstring str){
FILE *file = _wfopen(str.c_str(), L"rb");
if(!file)
return false;
fclose(file);
return true;
}

//user.iniの入っているフォルダを頑張って探す
wstring GetSettingPath(){
WCHAR cur[MAX_PATH + 1];
GetCurrentDirectoryW(sizeof(cur) / sizeof(cur[0]) - 1, cur);

wstring currentPath(cur);

int UseAppData = 0, MultiUser = 1; //デフォルトらしい。:http://www.sleipnir-wiki.jp/index.php?Tips#w534cfdd
if(IsFileExist(currentPath + L"\\Sleipnir.Property")){ //存在するか
UseAppData = (int)GetPrivateProfileIntW(L"Setting", L"UseAppData", UseAppData, (currentPath + L"\\Sleipnir.Property").c_str());
MultiUser = (int)GetPrivateProfileIntW(L"Setting", L"MultiUser", MultiUser, (currentPath + L"\\Sleipnir.Property").c_str());
}

wstring base;
switch(UseAppData){
case 0:{ //Sleipnirインストールフォルダ以下
base = currentPath + L"\\..\\settings";

break;
}

case 1:{ //各ユーザーのApplication Dataフォルダ以下
base = L"%USERPROFILE%\\..";

break;
}

default:
return wstring(L"");
}
switch(MultiUser){
case 0:{ //All Users
base += L"\\All Users";
break;
}

case 1:{
WCHAR userName[UNLEN + 1];
DWORD size = sizeof(userName) / sizeof(userName[0]) - 1;
GetUserNameW(userName, &size);
base += L"\\";
base += userName;
break;
}

default:
return wstring(L"");
}
if(UseAppData == 1){
//TODO;
return wstring(L"");
}

return base;
}

int main(int argc, char **argv){
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS); //Sleipnirの起動処理よりも早く
wstring settingPath = GetSettingPath();
if(settingPath == L"") return -1;
wstring userIniPath = settingPath + L"\\setting\\user.ini";

if(IsFileExist(userIniPath))
WritePrivateProfileStringW(L"SmartUpdater", L"LastCheckTime", L"\"14727\"", userIniPath.c_str());
}

1047774さん:2008/12/10(水) 18:26:03 ID:CENbthlg0
書いたんだけれども、意味がないことが発覚orz...........
TODOはアプリケーションデータへのパスに書き換えるだけ。
まあ、もう意味が無いことが分かったのでもう良いや。

1048774さん:2008/12/10(水) 18:42:34 ID:CENbthlg0
mootoh.log - Native Client
http://blog.deadbeaf.org/2008/12/09/google-native-client/

1049774さん:2008/12/10(水) 18:45:14 ID:CENbthlg0
find/grep/xargsコマンドを使いこなす 業務で楽するためのUNIXテクニック集「検索」編:CodeZine
http://codezine.jp/article/detail/3279

1050774さん:2008/12/10(水) 19:05:39 ID:CENbthlg0
そうだ!
アセンブリ言語も言語も勉強したんだし、Sleipnir.exeを直接書き換えてコードを直接埋め込めば良いじゃん!
俺頭良い!

アセンブリコードを書く練習にもなるし、一石二鳥!
よし頑張る。

1051774さん:2008/12/10(水) 19:06:25 ID:CENbthlg0
ああ、
だけれども辞めておこう。
ちょっと色々と、ゴフンゴフン。

1052774さん:2008/12/10(水) 19:21:53 ID:CENbthlg0
Linux のアセンブラー: GAS と NASM を比較する
http://www.ibm.com/developerworks/jp/linux/library/l-gas-nasm.html
------
今更ながらこのサイトが良いサイトだと気がついた。

1053774さん:2008/12/10(水) 19:58:33 ID:CENbthlg0
Welcome to JOI
http://www.ioi-jp.org/joiTrial/
-----
出たい!出たい!出たい!出たい!出たい!出たい!出たい!出たい!

1054774さん:2008/12/10(水) 20:42:41 ID:CENbthlg0
PEファイルについての、詳細な資料が見つからない。
だから自分で作るぜ。

1055774さん:2008/12/10(水) 22:09:17 ID:CENbthlg0
Windows の神髄 目次 - プログラミング徹底解説
http://keicode.com/windows/index.php

1056774さん:2008/12/10(水) 22:09:35 ID:CENbthlg0
>>1054
とか言って、作ってない。
まあ出来たしいいや。

1057774さん:2008/12/10(水) 23:29:23 ID:CENbthlg0
あの・・・
アセンブリ言語ってこんなに疲れるんですか?
-----
section .text
global _start
_start:
;GetBaseAddressの呼び出し
push dword [esp] ;RetAdをプッシュ
call GetBaseAddress
add esp, 4

cmp eax, 0
je error

;OreGetProcAddressの呼び出し
push psGetProcAddress
push eax
call OreGetProcAddress
add esp, 8

cmp eax, 0
je error

;終わり
xor eax, eax
ret
error:
mov eax, 1
ret

psGetProcAddress:
db "GetProcAddress", 0

;第一引数 DLLのベースポインタ
;第二引数 手に入れる関数の名前
;返却 見つかったらそのアドレス、無いならば0
OreGetProcAddress:
;スタックフレームる
;[ebp] : NumberOfNames
;[ebp - 4] : AddressOfFunctions
;[ebp - 8] : AddressOfNames
;[ebp - 0Ch] : AddressOfNameOrdinals
;[ebp - 10h] : baseAddress
push ebp
mov ebp, esp
sub esp, 14h

;IMAGE_NT_HEADERS32構造体へのアドレスを取得(edi)
mov ecx, dword [ebp + 8] ;第一引数
mov edi, dword [ecx + 3Ch] ;IMAGE_NT_HEADERS32
add edi, ecx ;ベースポインタを足す

;IMAGE_NT_HEADERS32::IMAGE_OPTIONAL_HEADER32::DataDirectoryのアドレス取得(eax)&
;エクスポートテーブル(IMAGE_EXPORT_DIRECTORY)のアドレス取得(edi)
xor eax, eax
mov ax, word [edi + 14h] ;SizeOfOptionalHeader
lea eax, [edi + eax + 18h] ;IMAGE_NT_HEADERS32全体の大きさを足す
sub eax, 80h ;DataDirectory分引く 80h == sizeof(IMAGE_DATA_DIRECTORY) * 16
mov edi, dword [eax] ;エクスポートテーブルのアドレス取得
add edi, ecx

;ここまでで
;ecx : DLLのベースポインタ, edi : エクスポートテーブル(IMAGE_EXPORT_DIRECTORY)のアドレス

;NumberOfNames格納
mov eax, dword [edi + 18h]
mov [ebp], eax

;AddressOfFunctions格納
mov eax, dword [edi + 1Ch]
add eax, ecx
mov dword [ebp - 4], eax

;AddressOfNames格納
mov eax, dword [edi + 20h]
add eax, ecx
mov dword [ebp - 8], eax

;AddressOfNameOrdinals格納
mov eax, dword[edi + 24h]
add eax, ecx
mov dword [ebp - 0Ch], eax

;ベースアドレス退避
mov dword [ebp - 10h], ecx

;API名の検索
mov esi, dword [ebp - 8]
mov edx, esi
mov edi, dword [esi]
add edi, ecx
xor ecx, ecx
mov ebx, dword [ebp + 0Ch]


OreGetP_loop:
mov esi, ebx

OreGetP_check:
;API名が一致か?
cmpsb
jne OreGetP_next

cmp byte [edi], 0 ;終端か?
jne OreGetP_check
cmp byte [esi], 0 ;終端か?
jne OreGetP_check
jmp OreGetP_found

OreGetP_next:
inc ecx
cmp ecx, dword [ebp]
jge OreGetP_notfound

add edx, 4
mov esi, edx
mov edi, dword [esi]
add edi, dword [ebp - 10h]
jmp OreGetP_loop

OreGetP_found:
mov ebx, esi
inc ebx
shl ecx, 1
mov esi, dword [ebp - 0Ch]
add esi, ecx
xor eax, eax
mov ax, word [esi]
shl eax, 2
mov esi, [ebp - 4]
add esi, eax
mov edi, dword [esi]
add edi, dword [ebp - 10h]
mov eax, edi

leave
ret

OreGetP_notfound:
xor eax, eax
leave
ret

;第一引数 適当なアドレス
;返却 PEヘッダとかが見つかったらそのアドレス、無いならば0
GetBaseAddress:
;リミッター
mov ecx, 10h
;Kernel32へのRetAd
mov eax, dword [esp + 4]
;マスク
and eax, 0FFFF0000h
GetK_roop:
;リミッターのチェック
test ecx, ecx ;cmp ecx, 0
je GetK_notfound
;MZシグネチャのチェック
cmp word[eax], 'MZ'
je GetK_check_PE
GetK_next:
;次へ
sub eax, 10000h
dec ecx
jmp GetK_roop
GetK_check_PE:
;PEのチェック
mov edi, [eax + 3Ch] ;IMAGE_DOS_HEADER::e_lfanew : File address of new exe header
add edi, eax
cmp dword [edi], 00004550h ;'PE\0\0'
je GetK_end
jmp GetK_next
GetK_notfound:
xor eax, eax
GetK_end:
ret

1058774さん:2008/12/10(水) 23:30:19 ID:CENbthlg0
GetProcAddressをアセンブリで実装する馬鹿がここに居ますよwwww
まあ、殆どが某サイトからのパクリなんですが。

1059774さん:2008/12/11(木) 00:02:36 ID:CENbthlg0
.textセクションだけで動くので、他のexeに仕込むのも簡単だね!
これでウィルスが作れる><

1060774さん:2008/12/11(木) 00:28:03 ID:CENbthlg0
何かするときにGetProcAddressで関数を読み込むのが面倒だな。
まあ、仕方ない。
それがアセンブリ言語。

1061774さん:2008/12/11(木) 00:42:23 ID:CENbthlg0
Acidテストが通ったからって、正しく表示できるとは限らない。

1062774さん:2008/12/11(木) 00:45:05 ID:CENbthlg0
ジョイントかなんかしらんが、そこらへんは間にセパレータを挟むとかそういうので判断しているのかな。

1063774さん:2008/12/11(木) 00:50:33 ID:CENbthlg0
Sleipnirも然り、Lunascapeも然りなんだけれども、まだブラウザとしては完成してない。
少なくとも、クッキーとパスワードは共有できるようにしろ。

1064774さん:2008/12/11(木) 00:58:21 ID:CENbthlg0
ClassFinderXPで覗いてみたら、凄いにはLunascapeの開発の人じゃなくてBCGToolBaraの中の人だと思った。

1065774さん:2008/12/11(木) 01:01:14 ID:CENbthlg0
つまりLunascapeすげえええええええ、って思っていたところは見当違いだったっていうことだ。

1066774さん:2008/12/11(木) 18:32:37 ID:CENbthlg0
JOI登録した!

1067774さん:2008/12/11(木) 18:32:55 ID:CENbthlg0
これで、予選に参加できるお

1068774さん:2008/12/11(木) 18:57:45 ID:CENbthlg0
ProcessIdの一覧は取得出来たのだが、そのプロセスのパスを取得する方法が分からない。

1069774さん:2008/12/11(木) 19:25:11 ID:CENbthlg0
ああ、面倒くさい。
もう辞めた。
まあ、方針としては、Sleipnirのプロセスハンドルを手に入れてWaitForSingleObjectで終了まで待って、終わったら、色々と解析して(ry
-----
#define STRICT 1

#if !defined(UNICODE) && !defined(_UNICODE)
#error UNICODE版でしかコンパイル出来んぞい。
#endif

#pragma comment(lib, "psapi.lib")

#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <windows.h>
#include <lmcons.h>
#include <tlhelp32.h>
#include <psapi.h>
#include <tchar.h>

using namespace std;

bool IsFileExist(wstring str){
FILE *file = _wfopen(str.c_str(), L"rb");
if(!file)
return false;
fclose(file);
return true;
}

//user.iniの入っているフォルダを頑張って探す
wstring GetSettingPath(){
WCHAR cur[MAX_PATH + 1];
GetCurrentDirectoryW(sizeof(cur) / sizeof(cur[0]) - 1, cur);

wstring currentPath(cur);

int UseAppData = 0, MultiUser = 1; //デフォルトらしい。:http://www.sleipnir-wiki.jp/index.php?Tips#w534cfdd
if(IsFileExist(currentPath + L"\\Sleipnir.Property")){ //存在するか
UseAppData = (int)GetPrivateProfileIntW(L"Setting", L"UseAppData", UseAppData, (currentPath + L"\\Sleipnir.Property").c_str());
MultiUser = (int)GetPrivateProfileIntW(L"Setting", L"MultiUser", MultiUser, (currentPath + L"\\Sleipnir.Property").c_str());
}

wstring base;
switch(UseAppData){
case 0:{ //Sleipnirインストールフォルダ以下
base = currentPath + L"\\..\\settings";

break;
}

case 1:{ //各ユーザーのApplication Dataフォルダ以下
base = L"%USERPROFILE%\\..";

break;
}

default:
return wstring(L"");
}
switch(MultiUser){
case 0:{ //All Users
base += L"\\All Users";
break;
}

case 1:{
WCHAR userName[UNLEN + 1];
DWORD size = sizeof(userName) / sizeof(userName[0]) - 1;
GetUserNameW(userName, &size);
base += L"\\";
base += userName;
break;
}

default:
return wstring(L"");
}
if(UseAppData == 1){
//TODO;
return wstring(L"");
}

return base;
}

int main(int argc, char **argv){
HANDLE hEnum = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hEnum == INVALID_HANDLE_VALUE) return -1;
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);

Process32First(hEnum, &pe);
HANDLE hSleipnir = NULL;
do{
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pe.th32ProcessID);
if(hProcess){
HMODULE hMod;
DWORD needed;
EnumProcessModules(hProcess, &hMod, sizeof(hMod), &needed);
WCHAR path[MAX_PATH + 1];
GetModuleFileNameEx(hProcess, hMod, path, sizeof(path) / sizeof(path[0]) - 1);
int i = 0;
i++;
}
}while(Process32Next(hEnum, &pe));
CloseHandle(hEnum);


wstring settingPath = GetSettingPath();
if(settingPath == L"") return -1;
wstring userIniPath = settingPath + L"\\setting\\user.ini";

if(IsFileExist(userIniPath))
WritePrivateProfileStringW(L"SmartUpdater", L"LastCheckTime", L"\"14727\"", userIniPath.c_str());
}

1070774さん:2008/12/11(木) 20:45:24 ID:CENbthlg0
同一フォルダ内のSleipnirが一つでも起動していると終了しないプログラム。
-----
#define STRICT 1

#if !defined(UNICODE) && !defined(_UNICODE)
#error UNICODE版でしかコンパイル出来んぞい。
#endif

#pragma comment(lib, "psapi.lib")

#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <windows.h>
#include <lmcons.h>
#include <tlhelp32.h>
#include <psapi.h>
#include <tchar.h>

using namespace std;

std::vector<DWORD> GetSleipnirProcessId(){
std::vector<DWORD> ret;

HANDLE hEnum = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hEnum != INVALID_HANDLE_VALUE){
PROCESSENTRY32W ps = {sizeof(ps)};

if(Process32FirstW(hEnum, &ps)){
WCHAR curpath[MAX_PATH + 1];
DWORD curProcessId = GetCurrentProcessId();
if(GetCurrentDirectoryW(sizeof(curpath) / sizeof(curpath[0]) - 1, curpath)){
CharLowerBuffW(curpath, lstrlenW(curpath));
do{
if(curProcessId != ps.th32ProcessID){
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ps.th32ProcessID);
if(hProcess){
DWORD dummy;
HMODULE hMod;
if(EnumProcessModules(hProcess, &hMod, sizeof(hMod), &dummy)){
WCHAR path[MAX_PATH + 1];
if(GetModuleFileNameExW(hProcess, hMod, path, sizeof(path) / sizeof(path[0]) - 1)){
unsigned int len = lstrlenW(path);
CharLowerBuffW(path, len);
if(curpath[0] == path[0]){
while(path[--len] != L'\\');
path[len] = L'\0';
if(path[len + 1] && path[len + 2] && path[len + 3] && path[len + 4] && path[len + 5] && path[len + 6] && path[len + 7] && path[len + 8] && path[len + 1] == L's' && path[len + 2] == L'l' && path[len + 3] == L'e' && path[len + 4] == L'i' && path[len + 5] == L'p' && path[len + 6] == L'n' && path[len + 7] == L'i' && path[len + 8] == 'r'){
if(lstrcmpW(path, curpath) == 0){
ret.push_back(ps.th32ProcessID);
}
}
}
}
}
}
CloseHandle(hProcess);
}
}while(Process32NextW(hEnum, &ps));
}
}
}
return ret;
}

int main(int argc, char **argv){
//SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
std::vector<DWORD> sleipnirs = GetSleipnirProcessId();
while(1){
unsigned int len = sleipnirs.size();
if(len == 0)
break;

HANDLE *p = (HANDLE *)std::malloc(len * sizeof(HANDLE));
for(unsigned int i = 0; i < len; ++i){
p[i] = OpenProcess(SYNCHRONIZE, FALSE, sleipnirs[i]);
}

WaitForMultipleObjects(len, p, TRUE, INFINITE);

for(unsigned int i = 0; i < len; ++i){
CloseHandle(p[i]);
}

std::free(p);
sleipnirs = GetSleipnirProcessId();
}

}

1071774さん:2008/12/11(木) 20:45:58 ID:CENbthlg0
lstrncmpがなかったからハードコートしてやったww

1072774さん:2008/12/11(木) 20:46:12 ID:CENbthlg0
ハードコード

1073774さん:2008/12/11(木) 21:12:12 ID:CENbthlg0
Native Clientの仕組みはどうなっているのか? - やねうらお−よっちゃんイカはしばらく買わずにiPhoneだけに注力する男
http://d.hatena.ne.jp/yaneurao/20081211#p1
Native Client必死こいて訳した1 - Yet Another Ranha
http://d.hatena.ne.jp/ranha/20081210/1228889363
jQuery を高速に使う CSS セレクタの書き方 - てっく煮ブログ
http://d.hatena.ne.jp/nitoyon/20081211/jquery_fast_css

1074774さん:2008/12/12(金) 19:02:42 ID:CENbthlg0
JOI 2006 予選 問題4
http://www.ioi-jp.org/joi/2005/2006-yo-prob_and_sol/2006-yo-t4.html
-----
こういう問題だけは出るな・・・

1075774さん:2008/12/12(金) 19:04:12 ID:CENbthlg0
Win32::GuiTest で Windows の GUI アプリをハックしよう
http://perl-users.jp/articles/advent-calendar/2008/13.html
.htaccessで使える16の技:phpspot開発日誌
http://phpspot.org/blog/archives/2008/12/htaccess16.html

1076774さん:2008/12/12(金) 20:09:16 ID:CENbthlg0
>>1074
問題読んでいなかったらミスったwwwwwwwwww

1077774さん:2008/12/12(金) 20:16:30 ID:CENbthlg0
二つ横に移動させるときに一回動かして、チェックしてもう一回(ry
見たいなことをやれば良いんだ!

1078774さん:2008/12/12(金) 20:21:43 ID:CENbthlg0
でも改造するの面倒です。

1079774さん:2008/12/12(金) 20:22:08 ID:CENbthlg0
まあ、明後日の方向に向かって頑張ろう(意味不明

1080774さん:2008/12/12(金) 20:58:43 ID:CENbthlg0
Sleipnirの更新始まったな。
まあ、Sleipnir自体はまだ始まってないんだけれども。

1081774さん:2008/12/12(金) 21:50:18 ID:CENbthlg0
だみー
http://extensions.tabbrowser.jp/labs/yasuyuki/dummy.html
-----

1082774さん:2008/12/12(金) 22:10:57 ID:CENbthlg0
こんなスクリプト作っておけば楽でしょ。
-----
for(my $i = 1; $i <= 5; ++$i){
`test_test < $i > out$i.txt`
}

1083774さん:2008/12/12(金) 22:11:37 ID:CENbthlg0
後はリダイレクトの内側のファイル名を弄くれば良い。

1084774さん:2008/12/12(金) 22:17:57 ID:CENbthlg0
落とした資料ならばおkらしいので、STLの解説を落とした。

1085774さん:2008/12/12(金) 22:25:51 ID:CENbthlg0
取り敢えず、このコンテストが終わったら、本格的に勉強する。
流石に偏差値29.5は無いわwwww

1086774さん:2008/12/12(金) 22:41:01 ID:CENbthlg0
取り敢えず、本選出場が最低ラインの方向で。
まあ、いけるか分からんがwwwwwwwwwwwwwwwwww

1087774さん:2008/12/13(土) 18:53:02 ID:CENbthlg0
JOI2006予選 問題4@C++(-66) - 簡潔で覚えやすいタイトルを3秒で思いつく程度の能力
http://d.hatena.ne.jp/qnighy/20081024/1224856862
-----
今見ると、単純な再帰的なプログラムである。

1088774さん:2008/12/13(土) 19:26:40 ID:CENbthlg0
明日の問題で、変な問題が出ませんように。

1089774さん:2008/12/14(日) 12:00:07 ID:CENbthlg0
一時間も前からログインしている俺は変な人である。

1090774さん:2008/12/14(日) 12:01:59 ID:CENbthlg0
問題まだー

1091774さん:2008/12/14(日) 12:32:58 ID:CENbthlg0
コマンドプロンプトで上を押すと、以前実行したコマンドが入力される。
これは滅茶苦茶使えるwww

1092774さん:2008/12/14(日) 12:51:01 ID:CENbthlg0
という事で、コマンドプロンプト+Visual C+++perlでいく。

1093774さん:2008/12/14(日) 12:51:55 ID:CENbthlg0
ちゃんと、テスト用のデータは用意されているのかな?
無かったら困るしwww
まあ、自分で作れば良いのだが。

1094774さん:2008/12/14(日) 12:56:23 ID:CENbthlg0
そろそろか・・・

1095774さん:2008/12/14(日) 12:57:04 ID:CENbthlg0
後三分も無いぜ!

1096774さん:2008/12/14(日) 12:57:27 ID:CENbthlg0
では、そろそろ頑張ってきます
ノシ

1097774さん:2008/12/14(日) 12:58:59 ID:CENbthlg0
誰も見ていないだろうが・・・
頑張ろう俺!

1098774さん:2008/12/14(日) 16:00:27 ID:CENbthlg0
俺にはむずかしすぎたようです

1099774さん:2008/12/14(日) 19:40:26 ID:CENbthlg0
たぶんおちたとおもふ。
まあいいや。どうせおれのじつりょくなんて・・・

1100774さん:2008/12/14(日) 20:36:07 ID:CENbthlg0
GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)
http://wiki.livedoor.jp/author_nari/d/

1101774さん:2008/12/15(月) 19:02:45 ID:CENbthlg0
絶対、Sleipnirはタブが全部閉じたらSleipnirも終了するという仕様にするなよ!
するなら、するほうを隠し設定にするんだぞ!絶対標準にするなよ!

1102774さん:2008/12/15(月) 19:09:31 ID:CENbthlg0
Ruby使わないのにRuby入れた。

1103774さん:2008/12/15(月) 23:09:08 ID:CENbthlg0
アセンブリで、memset書いてみた。
-----
memset:
mov edi, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0Ch]
and ebx, 000000FFh
xor eax, eax
or eax, ebx
shl ebx, 8
or eax, ebx
mov ebx, eax
shl ebx, 10h
or eax, ebx
mov ebx, ecx
and ebx, 00000003h
shr ecx, 2
rep stosd
mov ecx, ebx
retp stosb
xor eax, eax
ret

1104774さん:2008/12/15(月) 23:25:41 ID:CENbthlg0
retpじゃなくてrepですね。

1105774さん:2008/12/16(火) 00:33:10 ID:CENbthlg0
IE6で閲覧すると。|CSS HappyLife
http://css-happylife.com/log/zakki/000736.shtml
-----
これはwwwwwwwwwwwww

1106774さん:2008/12/16(火) 00:41:15 ID:CENbthlg0
米 Yahoo! が SQL っぽく色んなデータを取ってこれるAPIを出した - てっく煮ブログ
http://d.hatena.ne.jp/nitoyon/20081215/yql_review

1107774さん:2008/12/16(火) 19:30:04 ID:CENbthlg0
突如多発したWebページ改ざん狙いは明らかに日本:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20081209/320992/

1108774さん:2008/12/16(火) 19:53:41 ID:CENbthlg0
jQueryを使うときに気をつけるべき8のポイント : tech.kayac.com - KAYAC engineers' blog
http://tech.kayac.com/archive/jquery-checkpoints.html
IPv6 とかよくわからない人間が IPv6 対応サイトを作る際の知っておくべき 8 つの注意点 - にぽたん研究所
http://blog.livedoor.jp/nipotan/archives/51195204.html
HTTP Status Code
http://status-code.com/


新着レスの表示


名前: E-mail(省略可)

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

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

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

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