2010年1月4日月曜日

EXEの構造について

PEヘッダ の
 FileAlignmentは0x200(512B) ~ 0x10000(64KiB)ですので、それ以下それ以上だとエラーでます。

皆さんお気をつけて。。。

はぁ。。。

もう少しで冬休みも終わりです。。。宿題・課題をやらなければ。。。

2009年3月28日土曜日

インターネットと電話線

おとといの夕方から突然インターネットに接続できなくなってしまいました。

電話の方も同時刻から雑音がひどくてまともに通話できるような状態ではありませんでした。

今日NTTに電話したら 特殊な車(電柱をとかの高さまで人を乗せて上げるようなの)が二台
ウチに来て 電話機・配線・保安器をみて回りました。 結局 ウチまで来ている電話線が途中で切れていたそうです。(最近風が強くてなんか当たったのか・・・?)

電柱電柱間での断線だったので 修理費用はかかりませんでした。

今までネットの回線が切断されやすかったのはその所為だったのかなと・・・(まぁ回線復帰しましたが 前と変わんない・・・)

基地局からかなり離れているので 光とか に(できれば)したいな と。

保安器を新しいのにしたからといって回線の安定性が保証されるわけじゃないから 工事するのも なんだな。。。

2009年2月25日水曜日

IRCでリバーシっぽいもの。

limeChatでリバーシするjavascriptこしらえました。

javascriptをいじるのは初体験でしたが、ハマってしまいそうです^^


以下 リーバシする スプリクト^^(わざとですよ)

var turn=0;//0黒 1 白 ターン
var data = new Array(8*8);
var data2 = new Array(8*8);
var channel_g;
var end=0;

function event::onChannelText(prefix, channel, text){
channel_g=channel;
if(text.match(/^#/i)){

cmd=""+text.match(/[a-z]+$/i);
var ddd=text.match(/(\d)/g);

if(ddd!=null){

x=ddd[0];
y=ddd[1];
if(end==1){
send(channel,"<color navy,silver><ゲームを再開してください>");
return(0);
}
if(x>8||x==0||y>8||y==0){
send(channel,"<color navy,silver><不正な入力です>");
}else{
if(putable(x-1,y-1)==0){
send(channel,"<color navy,silver><そこには打てません>");

}else{
copyArr12();
put(x-1,y-1);
turnChange()
if(numberOfPutable()==0){
turnChange()
if(numberOfPutable()==0){

if(black_n()>white_n()){
send(channel,"<color navy,silver><黒の勝ち>");
}
if(black_n()<white_n()){
send(channel,"<color navy,silver><白の勝ち>");
}
if(black_n()==white_n()){
send(channel,"<color navy,silver><引き分け>");
}
draw();
end=1;
return(0);
}else{
send(channel,"<color navy,silver><打つ手がないのでパス>");
}
}
draw();

}
}
}

if(cmd!=null){
if(cmd.search(/^new$/i)!=-1){
send(channel,"<color navy,silver><ゲームを開始します>");
newGame();
draw();
end=0;
}
if(cmd.search(/^matta$/i)!=-1){
if(matta_ok==1){
send(channel,"<color navy,silver><\"待った\"しました>");
copyArr21();
turnChange()
draw();
end=0;
matta_ok=0;
}else{
send(channel,"<color navy,silver><\"待った\"できません>");
}
}
}
}
}

function newGame(){
turn=0;
for(ix=0;ix<8;ix++){
for(iy=0;iy<8;iy++){
data[(ix)*8+(iy)] = 0;
}
}
data[(3)*8+(3)]=1; //1黒?
data[(4)*8+(4)]=1; //2白
data[(4)*8+(3)]=2;
data[(3)*8+(4)]=2;
}
function draw(){
send(channel_g,"<color white,white>,/<color gray,white>1<color white,white>,,<color gray,white>2<color white,white>,,<color gray,white>3<color white,white>,,<color gray,white>4<color white,white>,,<color gray,white>5<color white,white>,,<color gray,white>6<color white,white>,,<color gray,white>7<color white,white>,,<color gray,white>8");
for(iy=0;iy<8;iy++){
str="";
str+="<color gray,white>"+(iy+1);
for(ix=0;ix<8;ix++){

if(data[(ix)*8+(iy)]==0){
if(putable(ix,iy)==0){
str+=""+"<color green,green>.<color black,green>・<color green,green>.";
}else{
str+=""+"<color green,green>.<color red,green>・<color green,green>."
}
}
if(data[(ix)*8+(iy)]==1){
str+=""+"<color black,green>●";
}
if(data[(ix)*8+(iy)]==2){
str+=""+"<color white,green>●";
}
}
if(iy==5){
str+="<color> balck "+black_n();
}
if(iy==6){
str+="<color> white "+white_n();
}
if(iy==7){
if(turn==0){
str+="<color> 黒の番です";
}else{
str+="<color> 白の番です";
}
}
send(channel_g,str);
}
}

function black_n(){
amount=0;
for(i=0;i<64;i++){
if(data[i]==1){
amount++;
}
}
return(amount);
}

function white_n(){
amount=0;
for(i=0;i<64;i++){
if(data[i]==2){
amount++;
}
}
return(amount);
}

function putable(x,y){
rr=0;
if(data[(x)*8+(y)]==0){
if(turn==0){
a1=2;
a2=1;
}else{
a1=1;
a2=2;
}
if(x!=0&&y!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y-m)]==a1){
a=1;
}
if(data[(x-m)*8+(y-m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x-m)*8+(y-m)]==0){
break;
}
if(x-m==0||y-m==0){
break;
}
m++;

}
}

if(y!=0){
m=1;
a=0;
while(1){
if(data[(x)*8+(y-m)]==a1){
a=1;
}
if(data[(x)*8+(y-m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x)*8+(y-m)]==0){
break;
}
if(y-m==0){
break;
}
m++;

}
}

if(x!=7&&y!=0){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y-m)]==a1){
a=1;
}
if(data[(x+m)*8+(y-m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x+m)*8+(y-m)]==0){
break;
}
if(x+m==7||y-m==0){
break;
}
m++;

}
}

if(x!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y)]==a1){
a=1;
}
if(data[(x+m)*8+(y)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x+m)*8+(y)]==0){
break;
}
if(x+m==7){
break;
}
m++;

}
}

if(x!=7&&y!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y+m)]==a1){
a=1;
}
if(data[(x+m)*8+(y+m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x+m)*8+(y+m)]==0){
break;
}
if(x+m==7||y+m==7){
break;
}
m++;

}
}

if(y!=7){
m=1;
a=0;
while(1){
if(data[(x)*8+(y+m)]==a1){
a=1;
}
if(data[(x)*8+(y+m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x)*8+(y+m)]==0){
break;
}
if(y+m==7){
break;
}
m++;

}
}
if(x!=0&&y!=7){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y+m)]==a1){
a=1;
}
if(data[(x-m)*8+(y+m)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x-m)*8+(y+m)]==0){
break;
}
if(x-m==0||y+m==7){
break;
}
m++;

}
}
if(x!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y)]==a1){
a=1;
}
if(data[(x-m)*8+(y)]==a2){
if(a==1){rr=1;}
break;
}
if(data[(x-m)*8+(y)]==0){
break;
}
if(x-m==0){
break;
}
m++;

}
}
}
return(rr);
}

function put(x,y){
if(turn==0){
a1=2;
a2=1;
}else{
a1=1;
a2=2;
}
if(x!=0&&y!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y-m)]==a1){
a=1;
}
if(data[(x-m)*8+(y-m)]==a2){
if(a==1){lineChange(x,y,x-m,y-m);}
break;
}
if(data[(x-m)*8+(y-m)]==0){
break;
}
if(x-m==0||y-m==0){
break;
}
m++;

}
}

if(y!=0){
m=1;
a=0;
while(1){
if(data[(x)*8+(y-m)]==a1){
a=1;
}
if(data[(x)*8+(y-m)]==a2){
if(a==1){lineChange(x,y,x,y-m);}
break;
}
if(data[(x)*8+(y-m)]==0){
break;
}
if(y-m==0){
break;
}
m++;

}
}

if(x!=7&&y!=0){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y-m)]==a1){
a=1;
}
if(data[(x+m)*8+(y-m)]==a2){
if(a==1){lineChange(x,y,x+m,y-m);}
break;
}
if(data[(x+m)*8+(y-m)]==0){
break;
}
if(x+m==7||y-m==0){
break;
}
m++;

}
}

if(x!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y)]==a1){
a=1;
}
if(data[(x+m)*8+(y)]==a2){
if(a==1){lineChange(x,y,x+m,y);}
break;
}
if(data[(x+m)*8+(y)]==0){
break;
}
if(x+m==7){
break;
}
m++;

}
}

if(x!=7&&y!=7){
m=1;
a=0;
while(1){
if(data[(x+m)*8+(y+m)]==a1){
a=1;
}
if(data[(x+m)*8+(y+m)]==a2){
if(a==1){lineChange(x,y,x+m,y+m);}
break;
}
if(data[(x+m)*8+(y+m)]==0){
break;
}
if(x+m==7||y+m==7){
break;
}
m++;

}
}

if(y!=7){
m=1;
a=0;
while(1){
if(data[(x)*8+(y+m)]==a1){
a=1;
}
if(data[(x)*8+(y+m)]==a2){
if(a==1){lineChange(x,y,x,y+m);}
break;
}
if(data[(x)*8+(y+m)]==0){
break;
}
if(y+m==7){
break;
}
m++;

}
}
if(x!=0&&y!=7){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y+m)]==a1){
a=1;
}
if(data[(x-m)*8+(y+m)]==a2){
if(a==1){lineChange(x,y,x-m,y+m);}
break;
}
if(data[(x-m)*8+(y+m)]==0){
break;
}
if(x-m==0||y+m==7){
break;
}
m++;

}
}
if(x!=0){
m=1;
a=0;
while(1){
if(data[(x-m)*8+(y)]==a1){
a=1;
}
if(data[(x-m)*8+(y)]==a2){
if(a==1){lineChange(x,y,x-m,y);}
break;
}
if(data[(x-m)*8+(y)]==0){
break;
}
if(x-m==0){
break;
}
m++;

}
}
}

function lineChange(x1,y1,x2,y2){
if(turn==0){
a=1;
}else{
a=2;
}
mx=0
my=0
while(1){
data[(x1+mx)*8+(y1+my)]=a;
if(x2==x1+mx&&y2==y1+my){break;}
if(x2-x1>0){mx++;}
if(x2-x1<0){mx--;}
if(y2-y1>0){my++;}
if(y2-y1<0){my--;}
}
}

function numberOfPutable(){
amount=0;
for(ix=0;ix<8;ix++){
for(iy=0;iy<8;iy++){
if(putable(ix,iy)==1){amount++;}
}
}
//send(channel_g,""+amount);
return(amount);
}

function turnChange(){
if(turn==0){
turn=1;
}else{
turn=0;
}
}
matta_ok=0;
function copyArr12(){
matta_ok=1;
for(i=0;i<64;i++){
data2[i]=data[i];
}
}
function copyArr21(){
for(i=0;i<64;i++){
data[i]=data2[i];
}
}

2009年2月7日土曜日

ケンタッキーフライドチキンについて

時々ケンタッキーを食べる機会が自分にはあります。

個人的にケンタッキーを目の前にするとテンション上がります。


だって、おいしいじゃないですか。^^


ただ、鳥をミンチとかにせずそのままカットして揚げているので
それぞれ肉に、ばらつきあったりしますよね。


何でも ウィング サイ キール ドラム リブ の五種類があるそうです。


やっぱり一番大きな肉が食べたいですよね。


なんとケンタッキーでは部位が選択できる かも なのです。

(部位を指定して買えるか。 に対して)「ご来店時に、ご相談ください。
少数であれば、その時の商品の状況によって、お受けできる場合もありますので、
ご来店の際にご相談ください。
なお、必ずご希望にそえるということではございませんのでご了承願います。


だそうです。

リブ 10個!! とか無理そうですけど 常識の範囲内であれば 偏った注文もできそうです。

勝手な推測ですが、"オリジナルチキン" 5ピース を頼めば、 上で言った 
五種類全部 "かぶり"なしで買えるんでしょうかね?

個人的にドラムとリブは苦手なので、 、"オリジナルチキン" 4ピース ドラムとリブはなしで と言う注文がしたいですね。

食べ物の話をしていると、おなかが減ってきました。。。 そんなこんなで I love KFC.

2009年2月1日日曜日

文字列を延々と歪ませる  ピクセル間 補正 有り

文字列を延々と歪ませる ピクセル間 補正 有り。
この前のは変形するたびに、汚くなっていったので ピクセル間で補正してみました。



#module
#uselib "gdi32.dll"
#func GetTextExtentPoint32 "GetTextExtentPoint32A" int,int,int,int
#deffunc messize var tBuf,array tSize
notesel tBuf
repeat notemax
noteget tBuf2,cnt
tBuf3=tBuf2
txtLen=strlen(tBuf3)
dim tSize,2
GetTextExtentPoint32 hdc,varptr(tBuf3),txtLen,varptr(tSize)
if cnt=0:x=tSize(0)
if x<tSize(0):x=tSize(0)
loop
tSize(0)=x
tSize(1)=tSize(1)*notemax
return
#global

#include "hspmath.as"
#define ctype stogx(%1) (( (%1)-offsetx )*(bai)+ginfo_winx/2)
#define ctype stogy(%1) (((%1)-offsety )*(-1.0)*(bai)+ginfo_winy/2)
#define e 2.718281828459045235360287471352
#define pi 3.1415926535897932384626433832795028841971
bai=1.0 //表示倍率
offsetx=0 //表示中心 X
offsety=0 //表示中心 Y
randomize
title "文字列を延々と歪ませる ピクセル間補正有り"
onexit *exit
goto *sake
*exit
end
*sake

screen 3

skx=-320.0
sky=-240.0
smx=320.0
smy=240.0

dialog ".bmp;*.jpg",16,""
if stat!=0{
picload refstr,1



color 255,128,128
}else{color 128,128,128}
repeat
x+=30
line x,-1,x,ginfo_winy
if x>ginfo_winx:break
loop

repeat
y+=30
line -1,y,ginfo_winx,y
if y>ginfo_winy:break
loop


font "",50

buf=""

repeat 8
f=rnd(2)
buf+=strf("%c",f*(rnd(26)+65)+(f!1)*(rnd(26)+97))
loop
messize Buf,textSize

pos stogx(-textSize(0)/2)-1,stogy(-textSize(1)/2)-1
color 255,255,255
mes buf
pos stogx(-textSize(0)/2)-1,stogy(-textSize(1)/2)+1
color 255,255,255
mes buf
pos stogx(-textSize(0)/2)+1,stogy(-textSize(1)/2)-1
color 255,255,255
mes buf
pos stogx(-textSize(0)/2)+1,stogy(-textSize(1)/2)+1
color 255,255,255
mes buf

pos stogx(-textSize(0)/2),stogy(-textSize(1)/2)
color 0,0,0
mes buf

gsel 0,1


repeat

x_=skx
y_=sky
xx=0
yy=0
ox=1.0*rnd(300)-150
sx=1.0*rnd(60)+5
bx=1.0*rnd(100)+5
rad=1.0*rnd(360)*pi/180

repeat
x__=x_*cos(rad)-y_*sin(rad)
y__=x_*sin(rad)+y_*cos(rad)
x=x__*cos(rad)+(1.0/(pow(e,(x__-ox)/sx)+pow(e,-(x__-ox)/sx))*bx+y__)*sin(rad)
y=-x__*sin(rad)+(1.0/(pow(e,(x__-ox)/sx)+pow(e,-(x__-ox)/sx))*bx+y__)*cos(rad)

gsel 3
pget stogx(x),stogy(y)
r1=ginfo_r
g1=ginfo_g
b1=ginfo_b
pget stogx(x-1),stogy(y)
r2=ginfo_r
g2=ginfo_g
b2=ginfo_b
pget stogx(x),stogy(y-1)
r3=ginfo_r
g3=ginfo_g
b3=ginfo_b
pget stogx(x-1),stogy(y-1)
r4=ginfo_r
g4=ginfo_g
b4=ginfo_b

xt=1*x
if x>0:xt+=1
yt=1*y
if y>0:yt+=1
xx=1.0*xt-x
yy=1.0*yt-y

r=((1.0-xx)*(1.0-yy))*r1+((xx)*(1.0-yy))*r2+((1.0-xx)*yy)*r3+(xx*yy)*r4
g=((1.0-xx)*(1.0-yy))*g1+((xx)*(1.0-yy))*g2+((1.0-xx)*yy)*g3+(xx*yy)*g4
b=((1.0-xx)*(1.0-yy))*b1+((xx)*(1.0-yy))*b2+((1.0-xx)*yy)*b3+(xx*yy)*b4


gsel 0
color r,g,b
pset stogx(x_),stogy(y_)

x_+
if x_>=smx:x_=skx:y_+:if y_>=smy:y_=sky:break

wait 0
loop
gsel 3
gmode 0,640,480,0
pos 0,0
gcopy 0,0,0,640,480

loop


2009年1月31日土曜日

文字列を延々と歪ませる

文字列(&画像&線)を延々と歪ませる ソースコードをこしらえました。
x'=x , y'=1/(e^(x)+e^(-x))+y という式を使って あとは、行列を使って回転移動させたりしただけです。




#module
#uselib "gdi32.dll"
#func GetTextExtentPoint32 "GetTextExtentPoint32A" int,int,int,int
#deffunc messize var tBuf,array tSize
notesel tBuf
repeat notemax
noteget tBuf2,cnt
tBuf3=tBuf2
txtLen=strlen(tBuf3)
dim tSize,2
GetTextExtentPoint32 hdc,varptr(tBuf3),txtLen,varptr(tSize)
if cnt=0:x=tSize(0)
if x<tSize(0):x=tSize(0)
loop
tSize(0)=x
tSize(1)=tSize(1)*notemax
return
#global

#include "hspmath.as"
#define ctype stogx(%1) (( (%1)-offsetx )*(bai)+ginfo_winx/2)
#define ctype stogy(%1) (((%1)-offsety )*(-1.0)*(bai)+ginfo_winy/2)
#define e 2.718281828459045235360287471352
#define pi 3.1415926535897932384626433832795028841971
bai=1.0 //表示倍率
offsetx=0 //表示中心 X
offsety=0 //表示中心 Y
randomize
title "文字列を延々と歪ませる"
onexit *exit
goto *sake
*exit
end
*sake

screen 3

dialog "",16,""
picload refstr,1
skx=-320.0
sky=-240.0
smx=320.0
smy=240.0

color 255,128,128

repeat
x+=30
line x,-1,x,ginfo_winy
if x>ginfo_winx:break
loop

repeat
y+=30
line -1,y,ginfo_winx,y
if y>ginfo_winy:break
loop


font "",30

buf=""

repeat 8
f=rnd(2)
buf+=strf("%c",f*(rnd(26)+65)+(f!1)*(rnd(26)+97))
loop
messize Buf,textSize

pos stogx(-textSize(0)/2),stogy(-textSize(1)/2)
color 0,0,0
mes buf

gsel 0,1


repeat

x_=skx
y_=sky

ox=1.0*rnd(300)-150
sx=1.0*rnd(60)+5
bx=1.0*rnd(100)+5
rad=1.0*rnd(360)*pi/180

repeat
x__=x_*cos(rad)-y_*sin(rad)
y__=x_*sin(rad)+y_*cos(rad)
x=x__*cos(rad)+(1.0/(pow(e,(x__-ox)/sx)+pow(e,-(x__-ox)/sx))*bx+y__)*sin(rad)
y=-x__*sin(rad)+(1.0/(pow(e,(x__-ox)/sx)+pow(e,-(x__-ox)/sx))*bx+y__)*cos(rad)

gsel 3
pget stogx(x),stogy(y)
r=ginfo_r
g=ginfo_g
b=ginfo_b

gsel 0
color r,g,b
pset stogx(x_),stogy(y_)

x_+
if x_>=smx:x_=skx:y_+:if y_>=smy:y_=sky:break

wait 0
loop
gsel 3
gmode 0,640,480,0
pos 0,0
gcopy 0,0,0,640,480

loop