2007年10月21日星期日

[捷报]

kao,第一轮竟然侥幸刚刚过了

2007年10月20日星期六

[随记]自由了

今天好像blog解封了,纪念一下,毕竟是千年一遇的事情,虽然也许是昙花一现
不用代理就是舒服啊,速度快... ...画面好像也变得清晰了

[随记]dididi...dododo

牙终于拆了,一年的痛苦终于彻底的画上了逗号...

"保持器要带2年"
"什么!!2年??!!!"

唉~~~苦命的人儿今天面试了,连蒙带骗终于弄到了华为的面试机会(本来是会计学专业注册资料的时候说的计算机;没有学位证骗他说有),不过第一轮技术面试好像还不错,那个面试官年龄看起来也就是二十八九岁,对我面试的时间挺长,技术好像挺满意,还多问了我一些别的东西,可能是后面几轮的问题,感动死我了;笔试题很简单,主要是技术之外的比如对一些事情的认识,看法,以及问题的处理方法,人与人之间,唉,总之是对一个人全面的了解,现在要等通知了
问题是还没弄到学位证,面试官说这个月弄不到也不太好办,如果弄不到要给他通知一声,让他也别出岔子;唉~~`人人都说要爱国,可是我一个会计系的学生好不容易有一个机会去大公司做软件开发却因为没有会计系的学位证而失之交臂,人生最大的遗憾莫过于此,,,,为什么社会要这么不懈的折磨一个大好青年???
所以我想大声的喊:I HATE THIS COUNTRY!
唉~~听天由命吧~~

2007年10月5日星期五

[转]jvm opcode instruction

A.3 Instructions by Category

This section contains a listing of the instructions and what they do, grouped by category. Here is a key to the descriptions:

aThe top slot of the stack. May be an int, float, or reference.
bThe second stack slot. May be an int, float, or reference.
cThe third stack slot. May be an int, float, or reference.
dThe fourth stack slot. May be an int, float, or reference.
abThe long or double on top of the stack, made up of slots a and b.
cdThe long or double second on the stack, made up of slots c and d.

A.3.1 Arithmetic

MnemonicArgumentsDescription
daddAdd double (ab+cd)
dcmpgCompare double
dcmplCompare double
ddivDivide double (ab/cd)
dmulMultiply double (ab*cd)
dnegNegate double (-ab)
dremRemainder double (ab%cd)
dsubSubtract double (ab-cd)
faddAdd float (a+b)
fcmpgCompare float
fcmplCompare float
fdivDivide float (a/b)
fmulMultiply float (a*b)
fnegNegate float (-a)
fremRemainder float (a%b)
fsubSubtract float (a-b)
i2bConvert int to byte
i2cConvert int to char
i2sConvert int to short
iaddAdd int (a+b)
iandBitwise and ints (a & b)
idivDivide ints (a/b)
imulMultiply ints (a*b)
inegNegate int (-a)
iorBitwise or ints (a b)
iremRemainder int (a%b)
ishlShift int left (a << b)
ishrShift int right (a >> c)
isubSubtract int (a-b)
iushrUnsigned shift int right (a >>> c)
ixorBitwise xor ints (a ^ b)
laddAdd long (ab+cd)
landBitwise and longs (ab & cd)
lcmpCompare longs
ldivDivide long (ab/cd)
lmulMultiply long (ab*cd)
lnegNegate long (-ab)
lorBitwise or longs (ab cd)
lremRemainder longs (ab%cd)
lshlShift long left (bc << 9)
lshrShift long right (bc >> 9)
lsubSubtract long (ab-cd)
lushrUnsigned shift long right (bc >>> 9)
lxorBitwise x or longs (ab ^ cd)

A.3.2 Array

MnemonicArgumentsDescription
aaloadPush array element a from array b
aastoreStore a in array element b of array c
anewarrayclassCreate array of class, length a
arraylengthLength of array a
athrowThrow exception a
baloadPush array element a from array b
bastoreStore a in array element b of array c
caloadPush array element a from array b
castoreStore a in array element
daloadPush array element a from array b
dastoreStore ab in array element
faloadPush array element a from array b
fastoreStore a in array element b of array c
ialoadPush array element a from array b
iastoreStore a in array element
laloadPush array element a from array b
lastoreStore ab in array element c of array d
multianewarrayclass nCreate multidimensional array with first n dimensions initialized to lengths a, b, c. . .
newarraytypeCreate array of type, length a
saloadPush array element a from array b
sastoreStore a in array element b of array c

A.3.3 Constant

MnemonicArgumentsDescription
aconst_nullPush null reference
bipushnPush int between ?28 and 127
dconst_0Push 0 (double)
dconst_1Push 1 (double)
fconst_0Push 0 (float)
fconst_1Push 1 (float)
fconst_2Push 2 (float)
iconst_0Push 0 (int)
iconst_1Push 1 (int)
iconst_2Push 2 (int)
iconst_3Push 3 (int)
iconst_4Push 4 (int)
iconst_5Push 5 (int)
iconst_m1Push ?(int)
lconst_0Push 0 (long)
lconst_1Push 1 (long)
ldcxPush x (a constant int, float, or String)
ldc_wxPush x (a constant int, float, or String)
ldc2_wxPush x (a constant long or double)
sipushnPush int between ?2,768 and 32767

A.3.4 Control

MnemonicArgumentsDescription
areturnReturn reference from method
dreturnReturn double from method
freturnReturn float from method
gotolabelBranch always
goto_wlabelBranch always to label
if_acmpeqlabelBranch if a == b
if_acmpnelabelBranch if a != b
if_icmpeqlabelBranch if a > b
if_icmpgelabelBranch if a >= b
if_icmpgtlabelBranch if a > b
if_icmplelabelBranch if a <= b
if_icmpltlabelBranch if a < b
if_icmpnelabelBranch if a != b
ifeqlabelBranch if a == 0
ifgelabelBranch if a >= 0
ifgtlabelBranch if a > 0
iflelabelBranch if a <= 0
ifltlabelBranch if a < 0
ifnelabelBranch if a != 0
ifnonnulllabelBranch if a is not null
ifnulllabelBranch if a is null
ireturnReturn int from method
jsrlabelBranch to label; push return location
jsr_wlabelJump to label
lookupswitch

tag1: label1

tag2: label2...

default: labeln

Branch to label1 on tag1, label2 on tag2, . . . , labeln otherwise
lreturnReturn long from method
nopDo nothing
retnBranch to location in variable n
returnReturn from method
tableswitch

n

label1

label2

. . .

default: labeln

Branch to label1 on n, label2 on n+1, . . . , labeln otherwise

A.3.5 Data Type Conversion

MnemonicArgumentsDescription
d2fConvert double ab to float
d2iConvert double ab to int
d2lConvert double ab to long
f2dConvert float a to double
f2iConvert float a to int
f2lConvert float a to long
i2dConvert int a to double
i2fConvert int a to float
i2lConvert int a to long
l2dConvert long ab to double
l2fConvert long ab to float
l2iConvert long ab to int

A.3.6 Object

MnemonicArgumentsDescription
checkcastclassThrow exception if a is not an instance of class
getfieldclass/field descPush object field from object a
getstaticclass/field descPush static field
instanceofclassPush 1 if a is class, 0 otherwise
invokeinterfaceclass/method desc nInvoke method through interface with n argument words
invokespecialclass/method descInvoke method directly
invokestaticclass/method descInvoke static method
invokevirtualclass/method descInvoke method virtually
newclassCreate new object of class
putfieldclass/field descStore a in object field
putstaticclass/field descStore a in static field

A.3.7 Stack Manipulation

MnemonicArgumentsDescription
dupDuplicate a
dup_x1Duplicate a, insert under b
dup_x2Duplicate a, insert under c
dup2Duplicate ab
dup2_x1Duplicate ab, insert under c
dup2_x2Duplicate ab, insert under d
popRemove a
pop2Remove ab
swapSwap a and b

A.3.8 Synchronization

MnemonicArgumentsDescription
monitorenterGain control of monitor of a
monitorexitRelease monitor of a

A.3.9 Variable

MnemonicArgumentsDescription
aloadnPush local variable n
aload_0Push local variable 0
aload_1Push local variable 1
aload_2Push local variable 2
aload_3Push local variable 3
astorenStore a in local variable n
astore_0Store a in local variable 0
astore_1Store a in local variable 1
astore_2Store a in local variable 2
astore_3Store a in local variable 3
dloadnPush local variable n
dload_0Push local variable 0
dload_1Push local variable 1
dload_2Push local variable 2
dload_3Push local variable 3
dstorenStore ab in local variable n
dstore_0Store ab in local variable 0
dstore_1Store ab in local variable 1
dstore_2Store ab in local variable 2
dstore_3Store ab in local variable 3
floadnPush local variable n
fload_0Push local variable 0
fload_1Push local variable 1
fload_2Push local variable 2
fload_3Push local variable 3
fstorenStore a in local variable n
fstore_0Store a in local variable 0
fstore_1Store a in local variable 1
fstore_2Store a in local variable 2
fstore_3Store a in local variable 3
iincn incrementIncrement local variable
iloadnPush local variable n
iload_0Push local variable 0
iload_1Push local variable 1
iload_2Push local variable 2
iload_3Push local variable 3
istorenStore a in local variable n
istore_0Store a in local variable 0
istore_1Store a in local variable 1
istore_2Store a in local variable 2
istore_3Store a in local variable 3
lloadnPush local variable n
lload_0Push local variable 0
lload_1Push local variable 1
lload_2Push local variable 2
lload_3Push local variable 3
lstorenStore ab in local variable n
lstore_0Store ab in local variable 0
lstore_1Store ab in local variable 1
lstore_2Store ab in local variable 2
lstore_3Store ab in local variable 3
wideinstruction argumentsLike instruction, except using wider range of values

2007年10月3日星期三

[原]oxygen.xml.editor.8.2.keygen&patch

今天下了一个好插件,处理xml的,注册机混淆了,研究了下jvm的opcode,把oxygen的xml editor(eclipse plugin)注册机发上来,
只要把plugin下的oxygenEclipse.jar中的ro.sync.D.A.class反编译一下,替换里边的数组为注册机中的数组,这个注册机就能用了.代码:

package cn.com;
import java.io.*;
import java.security.*;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.text.SimpleDateFormat;
import java.util.Date;
import sun.misc.BASE64Encoder;

public class OxygenKeygen {

public static void main(String args[]) {
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println(z[5]);
System.out.println(z[7]);
System.out.println(z[5]);
System.out.println();
String s = a(bufferedreader, z[3]);
String s1 = a(bufferedreader, z[6]);
System.out.println();
System.out.println(z[5]);
System.out.println(z[4]);
System.out.println(z[5]);
System.out.println();
System.out.println((new OxygenKeygen(s, s1)).d());
System.out.println();
System.out.println(z[5]);
} catch (Exception exception) {
exception.printStackTrace();
}
try {
bufferedreader.close();
} catch (IOException _ex) {
}
}

private static PrivateKey a() throws InvalidKeySpecException, NoSuchAlgorithmException {
PKCS8EncodedKeySpec pkcs8encodedkeyspec = new PKCS8EncodedKeySpec(d);
return KeyFactory.getInstance(z[23]).generatePrivate(pkcs8encodedkeyspec);
}

private static String a(String s) {
StringBuffer stringbuffer;
int i;
int j;
boolean flag;
flag = f;
stringbuffer = new StringBuffer(s);
i = stringbuffer.length();

for (j = 0; j < i; j++) {
char ch = Character.toUpperCase(stringbuffer.charAt(j));
if (z[2].indexOf(ch) == -1)
stringbuffer.setCharAt(j, '_');
}
return stringbuffer.toString();
// if(!flag) goto _L2; else goto _L1
// _L1:
// z[2]; //z[2]
// _L7:
// Character.toUpperCase(stringbuffer.charAt(j)); //z[2],CH
// indexOf();
// -1;
// JVM INSTR icmpne 53; // 判断ch是否在z[2]中,在goto L4,continue;不在则break到line:102
// goto _L3 _L4
// _L3:
// break MISSING_BLOCK_LABEL_46;
// _L4:
// continue; /* Loop/switch isn't completed */
// stringbuffer.setCharAt(j, '_'); //maybe here is MISSING_BLOCK_LABEL_46;
// j++;
// _L2:
// if(j < i) goto _L1; else goto _L5
// _L5:
// stringbuffer.toString();
// if(flag) goto _L7; else goto _L6
// _L6:
// return;
}

private static String a(BufferedReader bufferedreader, String s) throws IOException {
boolean flag;
flag = f;
Object obj = null;
// _L2:

String s1;
do {
System.out.print(s);
System.out.flush();

s1 = bufferedreader.readLine();
} while (s1 == null || s1.trim().length() == 0);
// _L4:
// // JVM INSTR ifnull 6;
// // goto _L1 _L2
// _L1:
// s1.trim();
// if(flag) goto _L4; else goto _L3
// _L3:
// if(flag) goto _L6; else goto _L5
// _L5:
// length();
// JVM INSTR ifeq 6;
// goto _L7 _L2
// _L7:
// s1;
// _L6:
return s1;
}

public OxygenKeygen(String s, String s1) {
b = null;
c = null;
b = s;
c = s1;
}

private String b() throws Exception {
StringBuffer stringbuffer = new StringBuffer();
stringbuffer.append(a(b));
stringbuffer.append(a(c));
stringbuffer.append(a);
stringbuffer.append("0");
stringbuffer.append(z[16]);
stringbuffer.append(a(z[20]));
stringbuffer.append(a(z[22]));
stringbuffer.append(a(z[21]));
return stringbuffer.toString();
}

private String c() throws Exception {
Signature signature = Signature.getInstance(z[0]);
signature.initSign(a());
signature.update(b().getBytes(z[1]));
return (new BASE64Encoder()).encode(signature.sign());
}

private String d() throws Exception {
StringBuffer stringbuffer = new StringBuffer();
stringbuffer.append((new StringBuilder(z[8])).append(b).toString()).append('\n');
stringbuffer.append((new StringBuilder(z[13])).append(c).toString()).append('\n');
stringbuffer.append(z[11]).append(a).append('\n');
stringbuffer.append(z[15]).append('\n');
stringbuffer.append(z[9]).append(z[16]).append('\n');
stringbuffer.append(z[18]).append(z[20]).append('\n');
stringbuffer.append(z[12]).append(z[10]).append('\n');
stringbuffer.append(z[19]).append(z[14]).append('\n');
stringbuffer.append((new StringBuilder(z[17])).append(c()).toString());
return stringbuffer.toString();
}

private static final String a;
private String b;
private String c;
private static final byte d[];
public static boolean e;
public static boolean f;
private static String z[];

static {
String as[];
as = new String[25];
as[0] = "1G\b\026\020\013{!c4#";
as[1] = "7[\017\037";
as[2] = " N\rd\"$H\001n-)C\007j(2^\033t37Y\036\177=;?x\025TV:\177\020_[/\026\nI\"";
as[3] = "0j.N\024\026}(S\016\raiI\006\017ji\035G";
as[4] = ".f*B\t\021js\007";
as[5] = "_2t\032Z_2t\032Z_2t\032Z_2t\032Z_2t\032Z_2t\032Z_2t\032Z_2t\032Z_2t\032Z_2t\032Z";
as[6] = "!`$W\006\fvi\007GB/i\007GB/i\035G";
as[7] = "_2t\007[\rW0@\002\f w\177*./\fC\016\026`;\007\021Z!{\007\013\013l,I\024\007/.B\t\007}(S\b\020/t\032Z";
as[8] = "0j.N\024\026}(S\016\ra\026i\006\017jt";
as[9] = ",z$E\002\020P&A8.f*B\t\021j:\032";
as[10] = ":B\005\n\"\006f=H\025NW\032k3OK,E\022\005h,U";
as[11] = "&n=BZ";
as[12] = "!`$W\b\fj'SZ";
as[13] = "!`$W\006\fvt";
as[14] = "Z#{";
as[15] = "&z;F\023\013`'\032J";
as[16] = "S?y\027";
as[17] = "1H\007\032";
as[18] = "!n=B\000\r}0\032";
as[19] = "4j;T\016\rat";
as[20] = "'a=B\025\022} T\002";
as[21] = "97e\007U?";
as[22] = "9W\004kJ'k S\b\020#i\1774.[dc\002\000z.@\002\020R";
as[23] = "&\\\b";
as[24] = "/BdC\003Ov0^\036";
z = as;

byte[] con=new byte[] {0x62,15,73,39,103};
for (int k = 0; k < z.length; k++) {
char[] ch = z[k].toCharArray();
// if (ch.length < 1) {
// if (k < 0) {
// }
//
// }
for (int i = 0; i < ch.length; i++) {
ch[i] ^= con[i%5];
}
z[k] = new String(ch);
}

// for (int l = 0; l < z.length; l++) {
// System.out.println("" + l + ": " + z[l]);
// }

// break MISSING_BLOCK_LABEL_343;
// local;
// toCharArray();
// JVM INSTR dup ;
// JVM INSTR arraylength .length;
// JVM INSTR swap ;
// int i = 0;
// JVM INSTR swap ;//ca,length
// JVM INSTR dup_x1 ;//len,ca,len
// 1; //len,ca,len,1
// JVM INSTR icmpgt 322;//len,ca
// goto _L1 _L2
// _L1:
// JVM INSTR dup ;//len,ca,ca
// i; //len,ca,ca,i
// _L4:
// JVM INSTR dup2 ; //len,ca,ca,i,ca,i
// JVM INSTR caload ;//len,ca,ca,i,ca[i]
// byte byte0;
// switch(i % 5)
// {
// case 0: // '\0'
// byte0 = 0x62;
// break;
//
// case 1: // '\001'
// byte0 = 15;
// break;
//
// case 2: // '\002'
// byte0 = 73;
// break;
//
// case 3: // '\003'
// byte0 = 39;
// break;
//
// default:
// byte0 = 103;
// break;
// }
// byte0; //len,ca,ca,i,ca[i],byte0
// JVM INSTR ixor ;//len,ca,ca,i,ca[i]^byte0
// (char); //len,ca,ca,i,char
// JVM INSTR castore ;//len,ca {ca[i]=char} *****
// i++;
// JVM INSTR swap ; //ca,len
// JVM INSTR dup_x1 ; //len,ca,len
// JVM INSTR ifne 322;//if (len!=0) len,ca
// goto _L3 _L2
// _L3:
// JVM INSTR dup2 ;
// JVM INSTR swap ;
// goto _L4
// _L2:
// JVM INSTR swap ; //ca,len
// JVM INSTR dup_x1 ;//len,ca,len
// i; //len,ca,len,i
// JVM INSTR icmpgt 245; //len,ca
// goto _L5 _L1
// _L5:
// JVM INSTR new #153 ; //len,ca
// JVM INSTR dup_x1 ; //ca,len,ca
// JVM INSTR swap ; //ca,ca,len
// String();
// intern();
// JVM INSTR swap ;
// JVM INSTR pop ;
// JVM INSTR ret 0;
a = (new SimpleDateFormat(z[24])).format(new Date());
d = (new byte[] { 48, -126, 1, 76, 2, 1, 0, 48, -126, 1, 44, 6, 7, 42, -122, 72, -50, 56, 4, 1, 48, -126, 1, 31, 2, -127, -127, 0, -3, 127, 83, -127,
29, 117, 18, 41, 82, -33, 74, -100, 46, -20, -28, -25, -10, 17, -73, 82, 60, -17, 68, 0, -61, 30, 63, -128, -74, 81, 38, 105, 69, 93, 64, 34,
81, -5, 89, 61, -115, 88, -6, -65, -59, -11, -70, 48, -10, -53, -101, 85, 108, -41, -127, 59, -128, 29, 52, 111, -14, 102, 96, -73, 107, -103,
80, -91, -92, -97, -97, -24, 4, 123, 16, 34, -62, 79, -69, -87, -41, -2, -73, -58, 27, -8, 59, 87, -25, -58, -88, -90, 21, 15, 4, -5, -125,
-10, -45, -59, 30, -61, 2, 53, 84, 19, 90, 22, -111, 50, -10, 117, -13, -82, 43, 97, -41, 42, -17, -14, 34, 3, 25, -99, -47, 72, 1, -57, 2, 21,
0, -105, 96, 80, -113, 21, 35, 11, -52, -78, -110, -71, -126, -94, -21, -124, 11, -16, 88, 28, -11, 2, -127, -127, 0, -9, -31, -96, -123, -42,
-101, 61, -34, -53, -68, -85, 92, 54, -72, 87, -71, 121, -108, -81, -69, -6, 58, -22, -126, -7, 87, 76, 11, 61, 7, -126, 103, 81, 89, 87, -114,
-70, -44, 89, 79, -26, 113, 7, 16, -127, -128, -76, 73, 22, 113, 35, -24, 76, 40, 22, 19, -73, -49, 9, 50, -116, -56, -90, -31, 60, 22, 122,
-117, 84, 124, -115, 40, -32, -93, -82, 30, 43, -77, -90, 117, -111, 110, -93, 127, 11, -6, 33, 53, 98, -15, -5, 98, 122, 1, 36, 59, -52, -92,
-15, -66, -88, 81, -112, -119, -88, -125, -33, -31, 90, -27, -97, 6, -110, -117, 102, 94, -128, 123, 85, 37, 100, 1, 76, 59, -2, -49, 73, 42,
4, 23, 2, 21, 0, -106, -49, 66, -124, -79, -94, -48, -108, 26, -46, -57, -110, -117, 14, -38, 1, -77, -127, 0, 14 });
}
}

ps:今天上午又看了下注册原理,其实就是A.class里边是公钥,注册时程序将注册码base64decode为密文,然后再用公钥解开,明文内容应该和注册名一致;
而注册码是作者用用户的注册名+作者的私钥生成的.
因此只需要用程序生成一对密钥,私钥放入keygen里边,公钥放入A.class里边覆盖原来的公钥byte[],就ok了.这次终于明白签名注册的原理了 :-)

2007年10月2日星期二

[原]MB开发环境安装手册(Linux)

MB开发环境安装手册(Linux)

(最终版已经丢失,现将以前放在网上的初稿贴过来)

一. 安装环境
操作系统:

fedora5
数据库:

DB2 8.2

开发环境:

Websphere Message Broker Runtime 6.0 ,MQ Series 6.0



二. 软件安装及参数配置

OS…………(fedora5) 安装mq后会有错误:
AMQ8101: WebSphere MQ error (893) has occurred.


以下内容OS为redhat9.0

首先解包,将software中的mb,mq,db2分别解包到mb,mq,db2文件夹中
1. Db2在linux上的安装:
./install
选择第一个和第三个包
Useradd db2ins1
Passwd db2ins1
修改文件opt/IBM/db2/V8.1/instance/db2iutil中的tail为tail –n (版本不一样,限于fedora5,rh9.0无此问题)

opt/IBM/db2/V8.1/instance/db2icrt -u db2ins1 db2ins1
su – db2ins1
db2start(此时如果说权限不够,是因为db2icrt执行失败)
db2 create database jjjj

验证安装是否正确可用connect to database,然后选择表查看


2.安装mq

mqlicense.sh –text_only …??
rpm -ivh MQSeriesRuntime-5.3.0-1.i386.rpm
rpm -ivh MQSeriesSDK-5.3.0-1.i386.rpm
rpm -ivh MQSeriesServer-5.3.0-1.i386.rpm
/opt/mqm/bin/amqiclen -x

//也可以安装man 用于了解命令

配置脚本:

crtmqm -lc -lf 8192 -lp 2 -ls 1 -q MB00

strmqm MB00

runmqsc MB00



define channel(SYSTEM.ADMIN.SVRCONN) chltype(SVRCONN) trptype(TCP)

define channel(CHANNEL1) chltype(SVRCONN) TRPTYPE(TCP)



def ql(deadq) defpsist(yes) maxdepth(20000) replace

def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace

alter qmgr deadq(deadq)



def ql(in) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace

def ql(out) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace

def qr(99_IN) rname(IN) rqmname(MB99) xmitq(MB00_99) defpsist(yes) replace

def ql(MB00_99) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(00_99) initq(system.channel.initq) replace

def chl(00_99) chltype(sdr) discint(1800) conname('192.168.1.199(6666)') xmitq(MB00_99) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace

def chl(99_00) chltype(rcvr) trptype(tcp) replace

def listener(MB00) trptype(tcp)

alter listener(MB00) trptype(tcp) port(6666) control(qmgr)

alter qmgr ccsid(819)

end
如果不通可以复位接收方的通道


3.安装MB runtime
Setup 即可


准备mb runtime参数:

1. 创建实例: /opt/IBM/db2/V8.1/instance/db2icrt –u kongpeng kongpeng

2. 创建数据库: su – kongpeng

db2start

db2 create database MBDB

db2 connect to MBDB

db2 bind ~/sqllib/bnd/@db2cli.lst grant public CLIPKG 5db2

db2 update database configuration for MBDB using dbheap 900

edit .odbc.ini

export ODBCINI

(odbc环境变量参数已经在profile中设定,因此无需再次设定.)

set lib path add ~/instance dir/sqllib/lib32

export LANG=EN (放入profile中)

将mqbrk里边的profile拷贝到root下,合并原先的默认profile.

将root用户加入组mqm,mqbrkrs就ok了

DB2 authorization ???

mqsicreatebroker MB -i kongpeng -a kongpeng -q MB00 -n MBDB -u kongpeng -p kongpeng

mqsicreateconfigmgr MB_MANAGER -i kongpeng -a kongpeng -q MB00

mqsistart MB

mqsistart MB_MANAGER



db2set db2codepage=1386

db2 terminate

db2 connect to sample



mqsilist

mqsilist brokername (此命令验证执行组是否能部署到此broker中)

(如果显示BIP8029E错误,说明broker没有建好,toolkit发布的信息不能部署到执行组中)

为什么mqsistop/mqsideletebroker会无响应呢? 可能是一开始建立broker的时候有错误………….



验证:

用本机上的toolkit建立一个简单的项目,消息流为从IN放入消息,OUT队列会收到消息,归档部署,linux机器上amqsput放入,amqsget查看!

注意:

因为用命令方式建立的队列名称默认是大写,所以toolkit中控件的属性名称以及linux中进行队列操作时要注意队列名称要大写,否则会找不到相应的队列.



4.安装cvs

rpm –ivh cvs-1.11.2-17.i386.rpm

groupadd cvs

useradd –g cvs –G cvs –d /cvsroot cvsroot

passwd cvsroot

chmod –R 770 /cvsroot

su - cvsroot

cd /cvsroot

mkdir project1

cvs –d /cvsroot/project1 init

cd /etc/xinetd.d

vi cvspserver (root)

将server_args去掉,server改为server = /cvsroot/cvs.run

su – cvsroot

建立cvs.run文件:

#!/bin/bash

/usr/bin/cvs –f --allow-root=/cvsroot/project1 pserver

chmod +x cvs.run

加入cvs服务:

vi /etc/services

cvspserver 2666/tcp #pserver cvs service

cvspserver 2666/udp #pserver cvs service

/etc/init.d/xinetd restart

/cvsroot/passwdgen.pl 生成密码的脚本

#!/usr/bin/perl

srand (time());

my $randletter = "(int (rand(26)) + (int (rand(1) + .5) % 2 ? 65 : 97))";

my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);

my $plaintext = shift;

my $crypttext = crypt ($plaintext, $salt);

print "${crypttext}\n";

/cvsroot/project/passwd username:passwd:cvsroot



验证: cvs -d :pserver:username@192.168.1.31:/cvsroot/project1 login

三. 系统配置



(Aix分区/安装,用户的建立,权限的分配,密码… …安装mq,db2,mb runtime,agent controller可能还要涉及到cvs的安装,使用

安装mq的时候要先装eclipse,java1.4.2,环境变量的设置,安装db2的时候要将计算机用户加入到db2admin组中)

















=====原始数据=====

本机配置:

========MQ===========

crtmqm -lc -lf 8192 -lp 2 -ls 1 -q MB99

strmqm MB99

runmqsc MB99



define channel(SYSTEM.ADMIN.SVRCONN) chltype(SVRCONN) trptype(TCP) mcauser('mqm')

define channel(CHANNEL1) chltype(SVRCONN) TRPTYPE(TCP) mcauser('mqm')



def ql(deadq) defpsist(yes) maxdepth(20000) replace

def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace

alter qmgr deadq(deadq)



def ql(in) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace





def qr(29_IN) rname(IN) rqmname(MB) xmitq(MB) defpsist(yes) replace //29的远程队列

def qr(00_IN) rname(IN) rqmname(MB00) xmitq(MB00) defpsist(yes) replace //00的远程队列



def ql(MB) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(99_29) initq(system.channel.initq) replace //29传输队列

def ql(MB00) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(99_00) initq(system.channel.initq) replace //00传输队列



def chl(99_29) chltype(sdr) discint(1800) conname('192.168.1.29(6666)') xmitq(MB) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace

def chl(29_99) chltype(rcvr) trptype(tcp) replace //29的发送及接受通道



def chl(99_00) chltype(sdr) discint(1800) conname('192.168.1.31(6666)') xmitq(MB00) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace

def chl(00_99) chltype(rcvr) trptype(tcp) replace //00的发送及接受通道





def listener(MB99) trptype(tcp)

alter listener(MB99) trptype(tcp) port(6666) control(qmgr)

alter qmgr ccsid(819)

end

============MB=========

mqsicreateconfigmgr -i kongpeng -a $$ -q MB99 MB_MANAGER

mqsistart MB_MANAGER





192.168.1.29配置:

========MQ===========

crtmqm -lc -lf 8192 -lp 2 -ls 1 -q MB

strmqm MB

runmqsc MB



define channel(SYSTEM.ADMIN.SVRCONN) chltype(SVRCONN) trptype(TCP) mcauser('mqm')

define channel(CHANNEL1) chltype(SVRCONN) TRPTYPE(TCP) mcauser('mqm')



def ql(deadq) defpsist(yes) maxdepth(20000) replace

def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace

alter qmgr deadq(deadq)



def ql(in) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace



def qr(99_IN) rname(IN) rqmname(MB99) xmitq(MB99) defpsist(yes) replace



def ql(MB99) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(29_99) initq(system.channel.initq) replace

def chl(29_99) chltype(sdr) discint(1800) conname('192.168.1.199(6666)') xmitq(MB99) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace

def chl(99_29) chltype(rcvr) trptype(tcp) replace



def listener(MB) trptype(tcp)

alter listener(MB) trptype(tcp) port(6666) control(qmgr)

alter qmgr ccsid(819)

end

============MB=========

mqsicreatebroker MB -i kongpeng -a $$ -q MB -n MBDB

mqsistart MB

mqsicreateconfigmgr -i kongpeng -a $$ -q MB MB_MANAGER

mqsistart MB_MANAGER











---------------------------------------------------------------------------------------------------------------------

mqsicreateaclentry MB_MANAGER -u kongpeng -a -x F -p





Add an access control list (ACL) entry to the Configuration Manager for the user with the Message Brokers Toolkit local user ID. For example, if USERA connects to the Message Brokers Toolkit on COMPUTERA, which belongs to DOMAINA, and is trying to connect to Configuration Manager CMA:

USERA must exist as a user on the Configuration Manager system and belong to the mqm group

USERA could have one of the following ACL entries:

To create an ACL entry for USERA to connect with full Configuration Manager Proxy authority from any computer or domain, issue the following command:

mqsicreateaclentry CMA -u USERA -a -x F -p

To create an ACL entry for USERA to connect with full Configuration Manager Proxy authority from COMPUTERA only, issue the following command:

mqsicreateaclentry CMA -u USERA -m COMPUTERA -x F -p

To create an ACL entry for USERA to connect with full Configuration Manager Proxy authority from DOMAINA only, issue the following command:

mqsicreateaclentry CMA -u USERA -m DOMAINA -x F -p

If a domain name and computer name match, and an ACL entry specified the -m parameter, connection from either the domain or computer is acceptable because they are not considered to be different users.

ACLs are necessary for all connections to the Configuration Manager so the user who issues a command such as mqsideploy from the command line must also have appropriate ACL entries.







setmqaut -m MB -t qmgr -p kongpeng +all

dspmqaut -m MB -t qmgr -p kongpeng

[转]关于Java栈与堆的思考

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

3. Java中的数据类型有两种。
一种是基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char(注意,并没有string的基本类型)。这种类型的定义是通过诸如int a = 3; long b = 255L;的形式来定义的,称为自动变量。值得注意的是,自动变量存的是字面值,不是类的实例,即不是类的引用,这里并没有类的存在。如int a = 3; 这里的a是一个指向int类型的引用,指向3这个字面值。这些字面值的数据,由于大小可知,生存期可知(这些字面值固定定义在某个程序块里面,程序块退出后,字段值就消失了),出于追求速度的原因,就存在于栈中。
另外,栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义

int a = 3;
int b = 3;

编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址。接着处理int b = 3;在创建完b的引用变量后,由于在栈中已经有3这个字面值,便将b直接指向3的地址。这样,就出现了a与b同时均指向3的情况。
特别注意的是,这种字面值的引用与类对象的引用不同。假定两个类对象的引用同时指向一个对象,如果一个对象引用变量修改了这个对象的内部状态,那么另一个对象引用变量也即刻反映出这个变化。相反,通过字面值的引用来修改其值,不会导致另一个指向此字面值的引用的值也跟着改变的情况。如上例,我们定义完a与b的值后,再令a=4;那么,b不会等于4,还是等于3。在编译器内部,遇到a=4;时,它就会重新搜索栈中是否有4的字面值,如果没有,重新开辟地址存放4的值;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b的值。
另一种是包装类数据,如Integer, String, Double等将相应的基本数据类型包装起来的类。这些类数据全部存在于堆中,Java用new()语句来显示地告诉编译器,在运行时才根据需要动态创建,因此比较灵活,但缺点是要占用更多的时间。

4. String是一个特殊的包装类数据。即可以用String str = new String("abc");的形式来创建,也可以用String str = "abc";的形式来创建(作为对比,在JDK 5.0之前,你从未见过Integer i = 3;的表达式,因为类与字面值是不能通用的,除了String。而在JDK 5.0中,这种表达式是可以的!因为编译器在后台进行Integer i = new Integer(3)的转换)。前者是规范的类的创建过程,即在Java中,一切都是对象,而对象是类的实例,全部通过new()的形式来创建。Java中的有些类,如DateFormat类,可以通过该类的getInstance()方法来返回一个新创建的类,似乎违反了此原则。其实不然。该类运用了单例模式来返回类的实例,只不过这个实例是在该类内部通过new()来创建的,而getInstance()向外部隐藏了此细节。那为什么在String str = "abc";中,并没有通过new()来创建实例,是不是违反了上述原则?其实没有。

5. 关于String str = "abc"的内部工作。Java内部将此语句转化为以下几个步骤:
(1)先定义一个名为str的对String类的对象引用变量:String str;
(2)在栈中查找有没有存放值为"abc"的地址,如果没有,则开辟一个存放字面值为"abc"的地址,接着创建一个新的String类的对象o,并将o的字符串值指向这个地址,而且在栈中这个地址旁边记下这个引用的对象o。如果已经有了值为"abc"的地址,则查找对象o,并返回o的地址。
(3)将str指向对象o的地址。
值得注意的是,一般String类中字符串值都是直接存值的。但像String str = "abc";这种场合下,其字符串值却是保存了一个指向存在栈中数据的引用!

为了更好地说明这个问题,我们可以通过以下的几个代码进行验证。

String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); //true

注意,我们这里并不用str1.equals(str2);的方式,因为这将比较两个字符串的值是否相等。==号,根据JDK的说明,只有在两个引用都指向了同一个对象时才返回真值。而我们在这里要看的是,str1与str2是否都指向了同一个对象。
结果说明,JVM创建了两个引用str1和str2,但只创建了一个对象,而且两个引用都指向了这个对象。

我们再来更进一步,将以上代码改成:

String str1 = "abc";
String str2 = "abc";
str1 = "bcd";
System.out.println(str1 + "," + str2); //bcd, abc
System.out.println(str1==str2); //false

这就是说,赋值的变化导致了类对象引用的变化,str1指向了另外一个新对象!而str2仍旧指向原来的对象。上例中,当我们将str1的值改为"bcd"时,JVM发现在栈中没有存放该值的地址,便开辟了这个地址,并创建了一个新的对象,其字符串的值指向这个地址。
事实上,String类被设计成为不可改变(immutable)的类。如果你要改变其值,可以,但JVM在运行时根据新值悄悄创建了一个新对象,然后将这个对象的地址返回给原来类的引用。这个创建过程虽说是完全自动进行的,但它毕竟占用了更多的时间。在对时间要求比较敏感的环境中,会带有一定的不良影响。

再修改原来代码:

String str1 = "abc";
String str2 = "abc";

str1 = "bcd";

String str3 = str1;
System.out.println(str3); //bcd

String str4 = "bcd";
System.out.println(str1 == str4); //true

str3这个对象的引用直接指向str1所指向的对象(注意,str3并没有创建新对象)。当str1改完其值后,再创建一个String的引用str4,并指向因str1修改值而创建的新的对象。可以发现,这回str4也没有创建新的对象,从而再次实现栈中数据的共享。

我们再接着看以下的代码。

String str1 = new String("abc");
String str2 = "abc";
System.out.println(str1==str2); //false

创建了两个引用。创建了两个对象。两个引用分别指向不同的两个对象。

String str1 = "abc";
String str2 = new String("abc");
System.out.println(str1==str2); //false

创建了两个引用。创建了两个对象。两个引用分别指向不同的两个对象。

以上两段代码说明,只要是用new()来新建对象的,都会在堆中创建,而且其字符串是单独存值的,即使与栈中的数据相同,也不会与栈中的数据共享。

6. 数据类型包装类的值不可修改。不仅仅是String类的值不可修改,所有的数据类型包装类都不能更改其内部的值。

7. 结论与建议:

(1)我们在使用诸如String str = "abc";的格式定义类时,总是想当然地认为,我们创建了String类的对象str。担心陷阱!对象可能并没有被创建!唯一可以肯定的是,指向String类的引用被创建了。至于这个引用到底是否指向了一个新的对象,必须根据上下文来考虑,除非你通过new()方法来显要地创建一个新的对象。因此,更为准确的说法是,我们创建了一个指向String类的对象的引用变量str,这个对象引用变量指向了某个值为"abc"的String类。清醒地认识到这一点对排除程序中难以发现的bug是很有帮助的。

(2)使用String str = "abc";的方式,可以在一定程度上提高程序的运行速度,因为JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。而对于String str = new String("abc");的代码,则一概在堆中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象,从而加重了程序的负担。这个思想应该是享元模式的思想,但JDK的内部在这里实现是否应用了这个模式,不得而知。

(3)当比较包装类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==。

(4)由于String类的immutable性质,当String变量需要经常变换其值时,应该考虑使用StringBuffer类,以提高程序效率。

[原]MB开发环境安装手册(AIX)

MB开发环境安装手册

一. 安装环境

操作系统:
Aix P520 (开发机)
CPU. 1.5G
RAM. 1G
HD. 36G
数据库:
DB2 8.2
开发环境:
Websphere Message Broker Runtime 6.0 ,MQ Series 6.0

二. 软件安装及参数配置
将安装文件拷贝到/software下

1. Db2在aix上的安装:
gzip –d ese.dbcs.tar.gz
tar xvf ese.dbcs.tar
cd ese.dbcs
./install
三个包全部选择
Useradd db2inst1
Passwd db2inst1
mkdir /home/db2inst1
/usr/opt/db2_08_01/instance/db2icrt -u db2inst1 db2inst1(一开始处失败,原因可能为磁盘空间不足)
su – db2inst1
db2start
db2 create database jjjj
验证安装是否正确可用connect to database,然后选择表查看

[db2的实例及数据库安装在/home下,所以可以适当增加/home文件系统的大小]

2.安装mq
mount cdrom
smitty
install jdk1.4.2
install mqm.base
install mqm.server
install mqm.java
[安装的时候要将smitty选项.accept new license 改为yes
[mq建立的queue manager放在/var/mqm下边,加大容量]

配置脚本:
crtmqm -lc -lf 8192 -lp 2 -ls 1 -q QM00
strmqm QM00
runmqsc QM00

define channel(SYSTEM.ADMIN.SVRCONN) chltype(SVRCONN) trptype(TCP)
define channel(CHANNEL1) chltype(SVRCONN) TRPTYPE(TCP)

def ql(deadq) defpsist(yes) maxdepth(20000) replace
def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace
alter qmgr deadq(deadq)

def ql(00_1) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(00_2) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace

def qr(199_1) rname(199_1) rqmname(QM199) xmitq(QM199) defpsist(yes) replace

def ql(QM199) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(00_199) initq(system.channel.initq) replace
def chl(00_199) chltype(sdr) discint(1800) conname('192.168.1.199(6666)') xmitq(QM199) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
def chl(199_00) chltype(rcvr) trptype(tcp) replace

def listener(QM00) trptype(tcp)
alter listener(QM00) trptype(tcp) port(6666) control(qmgr)
alter qmgr ccsid(819)
end

如果不通可以复位接收方的通道

3.安装MB runtime

mkgroup mqbrkrs
setupaix –console

[mb安装在/opt,加大容量]
准备mb runtime参数:
{aix创建用户的时候没有profile文件,所以在创建实例之前要建立.profile文件在用户目录下}
1. 创建实例: /usr/opt/db2_08_01/instance/db2icrt -u kongpeng kongpeng
2. 创建数据库: su – kongpeng
db2start
db2 create database MBDB
db2 connect to MBDB user kongpeng(重要,aix有时密码会过期)
db2 bind ~/sqllib/bnd/@db2cli.lst grant public CLIPKG 5
db2 update database configuration for MBDB using dbheap 900

set lib path add ~/instance dir/sqllib/lib32 (aix自动加上了,lib和lib32都指向/usr/opt/db2_08_01/lib/)
export LANG=EN (放入profile中)
将安装目录/bin里边的mqsiprofile拷贝到/home/kongpeng下,合并原先的默认profile.
将root用户加入组mqm,mqbrkrs就ok了
mqsicreatebroker MB -i kongpeng -a kongpeng -q QM00 -n MBDB -u kongpeng -p kongpeng
mqsicreateconfigmgr MB_MANAGER -i kongpeng -a kongpeng -q QM00
mqsistart MB
mqsistart MB_MANAGER

db2set db2codepage=1386
db2 terminate
db2 connect to sample

mqsilist
mqsilist brokername (此命令验证执行组是否能部署到此broker中)
(如果显示BIP8029E错误,说明broker没有建好,toolkit发布的信息不能部署到执行组中)
为什么mqsistop/mqsideletebroker会无响应呢? 可能是一开始建立broker的时候有错误………….

验证:
用本机上的toolkit建立一个简单的项目,消息流为从IN放入消息,OUT队列会收到消息,归档部署,linux机器上amqsput放入,amqsget查看!
注意:
因为用命令方式建立的队列名称默认是大写,所以toolkit中控件的属性名称以及linux中进行队列操作时要注意队列名称要大写,否则会找不到相应的队列;建立好数据库后不要乱改登陆用户的密码,否则会连不上数据库!

4.安装cvs
rpm –ivh cvs-1.11.2-17.i386.rpm
groupadd cvs
useradd –g cvs –G cvs –d /cvsroot cvsroot
passwd cvsroot
chmod –R 770 /cvsroot
su - cvsroot
cd /cvsroot
mkdir project1
cvs –d /cvsroot/project1 init
cd /etc/xinetd.d
vi cvspserver (root)
将server_args去掉,server改为server = /cvsroot/cvs.run
su – cvsroot
建立cvs.run文件:
#!/bin/bash
/usr/bin/cvs –f --allow-root=/cvsroot/project1 pserver
chmod +x cvs.run
加入cvs服务:
vi /etc/services
cvspserver 2666/tcp #pserver cvs service
cvspserver 2666/udp #pserver cvs service
/etc/init.d/xinetd restart
/cvsroot/passwdgen.pl 生成密码的脚本
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand(26)) + (int (rand(1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}\n";
/cvsroot/project/passwd username:passwd:cvsroot

验证: cvs -d :pserver:username@192.168.1.31:/cvsroot/project1 login
三. 系统配置

增加/software文件系统,大小为5G
smitty jfs












[本机配置]
crtmqm -lc -lf 8192 -lp 2 -ls 1 -q QM199
strmqm QM199
runmqsc QM199

define channel(SYSTEM.ADMIN.SVRCONN) chltype(SVRCONN) trptype(TCP)
define channel(CHANNEL1) chltype(SVRCONN) TRPTYPE(TCP)

def ql(deadq) defpsist(yes) maxdepth(20000) replace
def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace
alter qmgr deadq(deadq)

def ql(199_1) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace

def qr(00_1) rname(00_1) rqmname(QM00) xmitq(QM00) defpsist(yes) replace

def ql(QM00) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) trigger trigtype(first) trigdata(199_00) initq(system.channel.initq) replace
def chl(199_00) chltype(sdr) discint(1800) conname('192.168.1.33(6666)') xmitq(QM00) trptype(tcp) shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
def chl(00_199) chltype(rcvr) trptype(tcp) replace

def listener(QM199) trptype(tcp)
alter listener(QM199) trptype(tcp) port(6666) control(qmgr)
alter qmgr ccsid(819)
end

2007年9月5日星期三

[原]JBookPro 0.9(with jbookpromaker 1.0)

制作手机电子书的小软件,这次重写了文本显示代码,800多KBfree内存的手机可以看400K的小说,速度还可以,还是只有基本功能,有时间再加吧

下载地址:
http://disk22.sh.com/pick.aspx?code=295916107

or
http://221.10.252.36/myspace.aspx?username=test119

笑话

以前,有个地主有很多地,找了很多长工干活,地主给长工们盖了一批团结楼住着,一天,地主的谋士对地主说:东家,长工们这几年手上有点钱了,他们住你的房子,每月交租子,不划算,反正他们永远住下去,你干脆把房子卖给他们起个名堂叫做-----公房出售!告诉他们房子永远归他们了,可以把他们这几年攒的钱收回来,地主说:不错,那租金怎么办?谋士说:照收不误,起个日本名儿,叫物业费!地主很快实行了,赚了好多钱,长工们那个高兴啊!
过了几年,地主的村子发展成城镇了,有钱人越来越多,没地方住,谋士对地主说:东家,长工们这几年手上又有钱了,咱们给他们盖新房子,起个名堂叫做旧城改造,他们把手上的钱给我们,我们拆了房子盖新的,叫他们再买回去,可以多盖一些卖给别人,地主又实行了,这次,有些长工们不高兴了,地主的家丁派上用途了,长工们打掉牙只好往肚子里咽,地主又赚了好多
又过了几年,地主的村子发展成大城市了,有钱人更多了,地主的土地更值钱了,谋士对地主说:东家,咱们把这些长工的房子拆了,在这个地方建别墅,拆出来的地盖好房子卖给那些有钱的大款还能赚一笔,地主说:长工们不干怎么办?谋士说:咱给他们钱多点儿,起个名堂叫货币化安置,咱再到咱们的猪圈旁边建房子,起个名堂叫经济适用房,给他们修个马车道让他们到那边买房住,地主说:他们钱不够怎么办?谋士说:从咱家的钱庄借前给他们,一年6分利,咱这钱还能生钱崽,又没风险,地主又实行了,长工们拿到钱,地主的经济适用房到现在才建了一间,长工们只好排队等房子,直到现在,还等着呢------
于是,长工们开始闹事了,地主有点慌,忙问谋士怎么办?谋士说:赶紧通知长工们,房子要跌价了,别买了,租房住吧,正好把我们的猪圈租给他们 ...

2007年8月19日星期日

[原]可访问任意网站之终极方法

我们亲爱的party爱民如子,害怕我们我们了解不健康的事实,故好多网都上不去,今将好方法共享之

①.下载vidalia Bundle,地址:http://www.vidalia-project.net/download.php
②.装好后设置浏览器的代理为127.0.0.1:8118,然后就ok了,因为用代理网速比较慢所以此方法只适用上不去的网站,如果能上去就不要用代理了

转换方法:
用ie的不说了,maxthon的代理设置里用的时候点代理地址,不用的时候点不用代理菜单即可;
用firefox的用户需要下载一个插件叫"tor button",然后点右下角切换即可
很是方便

比较精彩~不知哪个强人写的

死神界的对话——死亡笔记结束时
死神界的对话——死亡笔记结束时一片荒漠中。流克独自站立在俨然一副巨兽骨架的通道上,出神地窥视着一个巨蛋般浑圆的球体。球体中央透出淡淡的光芒,犹如高倍显微镜上的目镜。死神透过这里可以觊觎人间一切。   流克似乎是看得过于专注了,连他身边渐渐刮起了沙暴都浑然不知,依然张开着早已裂至耳根后的嘴巴偷偷发笑。直到有人从背后叫住了他,他才不情愿地转过了脸。   “流克!”叫他的人身披着一件硕大的斗篷,几乎有两个人长的后摆被风吹得腊腊作响。套在那人头上的连衣帽把他的样子完全遮蔽了,唯独帽子前端暗黑色的标徽唤起了流克的记忆,那是大死神殿下直属部下的标志。   为了防止风沙,他再次抻了抻斗篷上高耸的衣领,缓缓地说道:“死神流克,吾奉大死神陛下谕旨特地告知,一年前死神流克私自将死亡笔记投入人间界,造成了人类世界的巨大变迁,更导致了大量死神仿效汝之做法,造成不可逆转的后果。为此,大死神陛下谕旨没收汝之笔记,不得再踏入人间界半步。以上。”   对方背诵般的说辞并未在流克心中激起任何涟漪,他从容地将笔记交到了来者手中。被没收了笔记的死神就等于只能生存到预定寿命终结为止,流克当然知道。死神之所以能够长期存在也是因为夺取了人类的应有寿命。即使是这样,流克还是觉得时间太长了。   “就算大死神殿下不没收笔记,我也已经决定了不在笔记上写名字了。当然也不会再往人间投笔记。人间界已经再没有人能达到那家伙的程度了。就像吃了人间界的苹果后就不会再想吃死神界的苹果一样,经历了那段有趣的时间后,生存也就没有任何意义了。”   “……”来者似乎没有听懂流克的语意,伫立着一语不发。此时,风沙停了下来,来者的下摆铺开在橘黄色干涸的地上,像一把巨大的扇子。   “对了,既为死神,你叫什么名字?大死神殿下现在如何了?”   “吾名埃里克。由于汝等死神接连投下笔记造成的人间不可逆转的混乱,大死神陛下正为回收笔记一事心力交瘁……”   “呵呵……不过也没办法,现在死神界一片荒芜,几乎可称的上拥有长生的我们根本没有可为生存意义的支撑点,而在人间寻找乐趣就是唯一的消遣方法了。当我把我在人间发生的趣事告知了他们后,就自然趋之若鹜了。”   埃里克沉默了一段时间,之后突然改变语调问。   “流克,汝知道死神界最初的模样吗?”   仿佛可以看到他沉浸在帽子下阴沉的表情,正流露出得意的笑意。   流克摇头表示否定。   “于没人记得清到底是多久的遥远时代,死神界曾与人间界毫无二致,到处皆是一派生机,众死神也并未拥有操纵死亡之能力。可是,突变于一天发生了——死亡笔记掉落死神界,造成了巨大的混乱,死神界的腐化速度也因此被提升到前所未有的高度,经过许多岁月的变迁逐渐演变,终成如今此副模样。大死神殿下由于知道这点,正着力阻止事态的发展。”   “呵呵……”流克笑了起来。“这样的话看来还真如那家伙所言呢,没有他的话,世界的腐化就无可避免。世人都只知道用死亡笔记满足私欲,却没有一个有足够的智慧能够利用笔记号令天下,结果当然造成了混乱。”   流克将他在人间的经历以及夜神月的崛起和死亡经过全部告诉了来者。   “什么叫魅惑众生,我也是在遇到那家伙才真正理解了。神一般的意志力,锐不可当的操纵力以及对理想的狂热程度,这些都一度使他成为神灵一样的存在,几乎全人类都俯首在他的脚下,信从了他的意念。”   “然而此人却还是死在了自己手上?”   “呵呵……可以这么说啦。如果他还没有死的话,现在的人间界也许就不至于像现在这样了吧。”   “汝相信此人的意志真的能导世界向善吗?”   “呵呵……如果是那家伙的话……应该不会有错吧。直到他死之前,世界一直都按照他的剧本展开着,正因为他抛弃了人类种种愚昧的思维,才能使他超越人本身,甚至连死神也能杀死。” “汝是说他抛弃了作为人类应有的同情心及对于生命的起码的尊重吗?”   “在他的眼中的确任何人的生命都不值得一提,正如人类对非己生物的生命视为草芥一样。但同时也不是这样……他所抛弃的是人类对自身命运的不确定以及对自身能力的怀疑,这种愚昧在捡到笔记直到他死去都没有出现过,这种自信使得他能够从容杀人。如果说将生命视为草芥是超越人类局限性的条件的话,对自己的绝对自信则是成为神的不可或缺的能力。”   “看来汝十分了解此人。但最后此人还是难逃一劫,在刚踏上神的殿堂就止步了。”   流克单手托腮,露出了妖异的神情。这时风沙又大了起来,来者身上的披风随之发出飒飒响声。   “表面上的确如此。然而一切却仍然没有逃脱他的计算。现在的人间界正面临着前所未有的灾难,因为死亡笔记的滥用而导致的犯罪正快速侵蚀着世界,个人的私欲不同,彼此无法臣服对方的思想,这就是人类的愚昧之处。但这时却没有一个绝对的力量来梳理这些混乱的关系。所以那家伙一死。立刻证明了他的正确性。”   埃里克伸手拨了拨身上的尘埃,继而说到:   “汝真的认为夜神月这个绝对的力量作为净化世界是正确的?当然,吾等现在都正以旁观者姿态而言的。若是作为人类,也是如此吗?”   “人类……老实说是一种十分有趣的生物呢。他们虽从不服从任何人,并且执拗地认为自己就是正义的,但是却同时拥有信仰,相信强大的未知力可以导己脱离苦海。而夜神月,作为惊天动地的审判之神基拉,正具有这样的实力……人类不相信人类,但却相信神的力量。夜神月将自己异化成神,正好达到了这个目的。”   “人类吗……也许正是这样的矛盾体。然而,如果当初没有汝投下的笔记,可能事情也不会演变至这等情况吧。”   “呵呵,埃里克……难道你还不明白人类吗?人类所说的罪恶其实就是指异己的行径。战争中的输家会被看作罪恶,而胜利者就算杀人满盈仍会被当作正义,不孚大潮的教会被看作邪教,大多数人接受的教会则被视为正义。在人类社会中,罪犯会被判以刑罚,但导致他们犯罪的社会环境则没有人理会,任凭其腐化。因为对社会大众产生不利而将其定为罪恶,但却从未扭转造成这样的社会原因。无论逮捕了多少的罪犯,社会仍旧继续腐化。这么说来,我投下的笔记则不过是一瓶催化剂,为人间界提供了一个转折的契机而已。”   “这样的话,人类的存在到底有什么意义?作为人类被送至世上又有什么目的?”   流克回想起自己看到的人类的一切丑恶以及正义,没有表情的脸上突然一颤,若有所悟。这时,风沙再度停了下来,埃里克稍稍松了领子。   “呵呵……是啊,其实人类现在的情况跟我们死神并没太大的区别呢。活着就是一种罪,这是大多数死神的想法,因为生命过于枯燥和漫长,找不到存在的意义。这也是其他死神纷纷将笔记投向人间的因由呢。人类说实话也是这样,虽不像我们般对生命感到厌恶,但是他们却对人生感到迷茫,时常感到无所事事,不知道自己终日忙碌的目的,这其实跟我们死神是相同的道理呢……人类最终会迷失在自己创造的迷宫中。”   流克继续说。   “对于人类,有一种能够战胜罪恶的品质,那就是他们所说的爱。然而,爱却有时也是衍生罪的渊薮。曾经有许多女人死心塌地地爱上了夜神月,却也因此而死,造成了罪的回馈。归根到底,爱还是根本改变不了什么……所谓的正义也不过是为了消灭自认为恶的东西而不择手段的意念罢了。”   “如此说来,人类的救赎在哪里呢?”   “呵呵……这样的事你问我也没用,就算是神也难以回答吧。归根到底,消灭人类的正是人类自身。夜神月曾想以自己的方式找出问题的答案,却差一步失败了。”   “谢谢你,流克!”埃里克说。这时四周的风沙再度刮了起来,来者的斗篷飒飒作响。他动作轻盈地从斗篷中掏出一个圆形的物体,红通通的颜色流入了流克的眼中。是一个苹果。   “作为奖励,这个送给你吧……”来者说,随即竖起衣领,转过身准备离去。   “呵呵……谢谢,但是,你到底是谁?”   “……流克,你说的没错呢。使用过死亡笔记的人类,休想自己能上天堂或下地狱……”   “月吗?”流克波澜不惊的脸上显然吃惊不少。   “你应该猜到才对呢,流克。将埃里克转过来念的话……我必须开始工作了,为了能够看到人类的最终结局,我需要足够的生命才行,所以,再见了,流克。”去者挥了挥衣袖,消失在一片尘埃中。   “‘Arik’,转过来就是‘Kira’,基拉吗……真有你的,月。”流克边咬着苹果说,随即转向了通往人间的入口。

2007年7月24日星期二

什么是HDTV

最近发现HDTV格式的电影看起来是非常非常的爽.找了点资料现贴出来:

HDTV是Hign Definition Television的简称,翻译成中文是“高清晰度电视”的意思,HDTV技术源之于DTV(Digital Television)“数字电视”技术,HDTV技术和DTV技术都是采用数字信号,而HDTV技术则属于DTV的最高标准,拥有最佳的视频、音频效果。HDTV与当前采用模拟信号传输的传统电视系统不同,HDTV采用了数字信号传输。由于HDTV从电视节目的采集、制作到电视节目的传输,以及到用户终端的接收全部实现数字化,因此HDTV给我们带来了极高的清晰度,分辨率最高可达1920×1080,帧率高达60fps,是足够让目前的DVD汗颜的。除此之外,HDTV的屏幕宽高比也由原先的4:3变成了16:9,若使用大屏幕显示则有亲临影院的感觉。同时由于运用了数字技术,信号抗噪能力也大大加强,在声音系统上,HDTV支持杜比5.1声道传送,带给人Hi-Fi级别的听觉享受。和模拟电视相比,数字电视具有高清晰画面、高保真立体声伴音、电视信号可以存储、可与计算机完成多媒体系统、频率资源利用充分等多种优点,诸多的优点也必然推动HDTV成为家庭影院的主力。 HDTV的高清晰度主要表现在它支持1280×720逐行扫描、1920×1080隔行扫描,1920×1080逐行扫描三种显示模式。而传统电视的解晰度仅仅是300线而已,相当于二三倍的图像质量。在整个DTV规范内,HDTV所提供的图像是电影级图像,代表用户完全可以在家里感觉影院级视像的效果。 打个相当简单的比喻,早期录像带与传统电视一样,采用模似技术,VCD开始采用数字技术,只是图像差一些,而 DVD就是通过高清晰度这一优点,超高速地替代了VCD及录像带,成为现代家庭的标准电器之一。HDTV相比DVD,直接一步跨跃了数字信号及高清晰度两大障碍,直接进入数字高清的最高标准,用数字信号及高质量的图像,提供用户完美的视觉享受! 所以,如果你拥有一块直接支持HDTV解码及输出的显示卡,不需要更换任何配件就能够观赏到高清晰的HDTV视频或音频了,只要你愿意,还可以通过一根分量转接线就能够使自家的电视机也能通过你的显卡接收到高清晰的HDTV数字信号,用34寸的大屏幕电视机上网,看电影或玩3D游戏,是会比17寸显示器要爽的多。 http://www.silu.info/ 提供了很多HDTV下载

ps:附上几个今天刚找到的hdtv片源地址:
http://www.jpoppv.com/bbs/forumdisplay.php?fid=70&sid=tRuTQl
http://bbs.hd-tv.cn/index.php
http://bbs.100kan.com/forum-66-1.html

2007年6月18日星期一

jbook pro 测试版(手机电子书)

最近很烦躁,不想更新了,已经实现了基本功能,可全屏阅读,里边有好看的电子书.
示例下载:
http://www.flypicture.com/files/MjI1MTc3

2007年6月14日星期四

五十一 当 今 中 国 震 惊 世 界 的 25 个 第 一  

   
    1 中国教育投资不及非洲的乌干达,失、辍学儿童人数世界第一
      
      2 中国贫困家庭子弟考上大学,因为贫穷而导致父母自杀、家破人亡的案件数,世界第一
      
      3 中国九亿农民几乎没有任何医疗社会保障,世界第一
      
      4 中国每年的矿--难发生次数和死难人数,世界第一
      
      5 中国近10年贪官转移国家财产500亿美元到海外,且几乎永久性无法追回,世界第一
      
      6 中国Z F每年公款大吃大喝铺张浪费折算的金钱损失在3000亿人民币以上(02年为2000亿,等于一个三峡),世界第一
      
      7 中国Z F每年公务用车费用折算的金钱数目高达2000亿人民币以上,世界第一
      
      8 中国在其农村尚存在无数失学儿童和破旧危房校舍的情况下,其中央电视台修一座新楼预算就达70亿,堪称世界之最
      
      9 中国国民目前的人均收入是1090美元,位居全球第100位
      
      10 中国曾经彻底消除了色情业、解救了无数妇女,但目前中国被胁迫的风尘女人数和发生的逼良为*案件,世界第一
      
      11 中国扫除色情业的行动,一般仅仅针对最弱势的妇女施用暴力和法律,堪称世界仅有
      
      12 中国的大中城市发达程度与欧美相当,但绝大部分农村和非洲穷国的农村在一个发展水平,反差之强烈堪称世界奇观
      
      13 中国完全不具有城市人身份和福利待遇,但却在帮助建设城市和服务城市的所谓农民工人数,世界第一
      
      14 中国是目前世界上唯一还在针对初、中等教育征收高昂学费的大国(其他大国都免费向其国民提供)
      
      15 中国作为联合国常任理事国和历史、区域性大国,是唯一 一个尖端武器净进口国
      
      16 中国那些在现代工厂工作的打工者们,其工资待遇远低于墨西哥甚至远低于其邻国越南等国家,堪称世界最低
      
      17 中国与非洲小国一样,只能*出口衬衫、裤衩之类产品换取其急需的民航飞机等工业品,堪称世界一景
      
      18 中国各级Z F办公大楼的豪华程度令人咂舌,连自称最富有的美、曰Z F也相形见绌,世界第一
      
      19 中国官方公布的其官/民比例目前达到了1:28(一说1:15),绝对创世界第一
      
      20 中国目前处于分裂状态没有实现国家统一,另有大片领土/海被印度和曰本侵占而没有收复,世界唯一(另有朝韩未实现统一)
      
      21 中国各部委监督处理地方Z F违法行为的“中央/部委督察小组”工作最勤勉、常年奔波在外,堪称世界公务员典范
      
      22 中国农民进入北京、深圳等大中城市,必须办理“暂住证”暂住在中国,堪称世界奇观
      
      23 中国有官员和参正议正代表提出“人口城市准入制”限制所谓“低素质国民进城”,创“种族内歧视”之最
      
      25 中国大学四年学费相当于一个农民家庭不吃不喝41年的劳动所得,是世界学费第二高的曰本的3倍,全球第一

2007年6月13日星期三

经典游戏PK:魔兽争霸VS星际争霸VS红警

魔兽娱乐性强 比较搞笑 你常常越玩越轻松
星际竞技性强 比较严肃 你常常越玩越紧张
红警政治性强 比较偏激 你常常越玩越气愤

玩魔兽 就像唱卡拉ok 普通人练一首歌半个月 已经能赢得同伴的掌声
玩星际 就像唱京戏 曲不离口的练上一年 可能还唱不上调子
玩红警 就像说话 不用练就差不多水平 练了很多年说话的水平不见得
高多少

学习魔兽 你能打赢两家疯狂电脑的时候 你和真人打就能取胜了
学习星际 你能打赢七家电脑 你还纳闷怎么还打不过真人
学习红警 你能打赢七家电脑1000000次 不见得和真人玩过

学习魔兽 两个小时你能死在相同的战术上八次 毫无还手之力
学习星际 两个小时你能死在迥异的战术上八次 毫无还手之力
学习红警 两年你都死在相同的得战术上无数次 毫无还手之力

魔兽里面 你专心练一个族往往就能够应付对同族异族4种情况打法
星际里面 人打虫的高手往往曾经就是虫打人的高手
红警里面 你学会一个国家就等于学会了所有国家

魔兽里面 熟练了几种套路就可以取胜
星际里面 熟练了几种套路还是被随机应变的对手牵着鼻子走
红警里面 熟练了几种套路,你会发现根本没用,只要熟练一种就可以了

魔兽里面 你利用计谋伏击或者包围了对方主力 对方却掏出回程扬长而走
星际里面 你会发现不仅有游击战还有阵地战、伏击战、空投战……
红警里面 你会发现什么战都是多余的,人多才是硬道理

魔兽里面 敌人无论离家多远都可以十秒内回救被你偷袭的基地
星际里面 你稍不留神就中了声东击西的诡计
红警里面 你必须时刻留神你得矿车

魔兽里面 你5分钟侦察一次还能对敌人兵种搭配了如指掌
星际里面 你5分钟侦察五次说不定得到的还是假情报
红警里面 你5分钟侦查一次,然后就再也用不着侦查了

魔兽里面 5分钟不侦察你还能猜出来敌人部队构成
星际里面 3分钟不侦察出门就可能全是克制你的兵种
红警里面 不用你去侦查地图上就能看见敌人的情况

魔兽里面 赢了一场大战就可以松口气 因为几乎稳操胜券
星际里面 赢了一场大战 正得意一下却发现刚刚大战中被一支奇兵偷袭得
经济全毁
红警里面 赢了一场大战 你会觉得很幸运 你好多天都没有打过大战了。

魔兽里面 大战对决常常形势一边倒
星际里面 大战对决常常双方两败俱伤
红警里面 大战对决常常就像已经知道了结局颁奖典礼

魔兽里面 一次全军覆没99%可以打GG
星际里面 十次全军覆说不定都不知鹿死谁手
红警里面 经常全军覆没是一种战斗方式

魔兽里面 你郁闷于虽然有顽强精神却在难以劣势中翻盘
星际里面 你郁闷于虽然有优势却被有顽强精神的对手翻盘
红警里面 你郁闷于必须有对方不知道的战术才能翻盘

魔兽里面 录像看到一半往往能知道结局
星际里面 录像看到结局你才发现开始的判断错了
红警里面 录像是什么都不知道

魔兽里面 初始的基地被拆毁就失去了希望
星际里面 两个人鏖战到调换基地位置甚至四海为家也不稀奇
红警里面 初始基地不仅可以被拆 还可以被占 被偷 被炸 自己还可以逃


魔兽里面 初始矿采完基本胜负就见分晓
星际里面 全地图的资源耗尽说不定才换来一个平局
红警里面 大家一直在抢资源很少出现平局

魔兽里面 你可以龟缩防守、偏安一隅
星际里面 你如果不及时扩张 除了初始矿点 其他矿点都有对方采矿的农

红警里面 你必须去抢矿 这也是一种必须走的形势

魔兽里面 你把基地门口造满防御 敌人骂你猥琐赖皮
星际里面 你把基地门口造满防御 敌人不是直接空投到你家里就是直接
一颗核弹敲开大门
红警里面 你必须在基地里面造满防御 敌人的飞机 飞行兵才不会占到
便宜

魔兽里面 你可以用高级兵种轻松欺负低级兵种
星际里面 你发现原来小机枪也能"以小反上"地打航母
红警里面 你发现只有高级兵种才是王

魔兽里面 没有对空部队看到空军常常就要选择逃跑
星际里面 你刚出来4个飞龙却被3队不对空的小狗强拆了基地
红警里面 飞行兵就是制胜的关键,别的都是摆设

魔兽里面 你会质疑"量变引起质变"的法则
星际里面 你会验证"量变引起质变"的法则
红警里面 你会质疑"有名气的公司比较负责"

魔兽里面 死掉一个兵会心痛半天
星际里面 你知道什么叫做前仆后继
红警里面 兵就是为了死掉的

魔兽里面 作战部队不敢过于分散
星际里面 作战常常要地图各点全面开花
红警里面 作战就是在几个特殊的地方进行

魔兽里面 即使知道敌人什么兵种配置有时候也赢不了
星际里面 知己知彼才真的百战不殆
红警里面 看到对方的兵种配置就知道对方的水平了

魔兽里面 规矩多 玩家发挥余地小 按部就班往往比突发奇想更奏效
星际里面 规矩少 玩家发挥余地大 按部就班往往陷于被动
红警里面 没规矩 玩家战术就一种 突发奇想只有在对菜鸟的时候才能用

魔兽里面 以不变应万变
星际里面 以万变应不变
红警里面 永远不变

魔兽里面 1个英雄、道具可以四两拨千斤
星际里面 1个隐形的单位可以四两拨千斤
红警里面 1个高手对菜鸟可以四两拨千斤

魔兽里面 你为那个用光环照耀部队、高人一等的英雄而感到骄傲
星际里面 你发现引爆地雷和对方坦克同归于尽的那个小狂徒才是真正
的英雄
红警里面 你为飞行兵拿下矿区而骄傲

魔兽里面 你会发现操作被人性化设计之后 如同一部傻瓜相机
星际里面 你会发现最简单的细节你也要亲手去处理
红警里面 你会发现可以自己处理的事情不是很多。可以边吃零食,边
和高手对战

魔兽里面 你会发现apm150(点击速率)的时候已经会无聊到插旗
星际里面 你会发现apm150的时候才能勉强用用神族
红警里面 你会发现apm150是什么你都不知道,只知道手快很有用

魔兽里面 你觉得12个女巫按了12次O之后同时变了对方12个羊很有成就感
星际里面 你发现原来12运输机的地毯式空降也仅仅是操作的基本功而已
红警里面 你认为可以让12个坦克移动中躲掉攻击,就是操作了

魔兽里面 你觉得操作2队多部队围杀、齐射、魔法、道具是多么华丽
星际里面 你才知道就连让4队雷车、2队坦克整齐行进都不容易
红警里面 你盯着炮弹看,快落地的时候让自己的坦克躲,炮弹多的时候
还真不容易

魔兽里面 连流星陨石都认识自己人和友军
星际里面 一个闪电放不好 可能自己被电死的比敌人的还多
红警里面 除了少数几个枪法好的兵种,其他都经常误伤自己人

魔兽里面 常常讲这是理所当然
星际里面 常常讲这也不是不可能
红警里面 常常讲这是不可能的

魔兽里面 常有某个玩家用某某流战术把所用的种族用成所在版本的者之

星际里面 你突然发现昨天似乎无敌的偶像今天就输在某个黑马手
红警里面 你知道自己只剩下一种战术的时候,你就是高手了

魔兽玩久了 才知道 效率是第一
星际玩久了 才知道 数量是第一
红警玩久了 才知道 经验是第一

魔兽玩久了 才知道 等级是第一
星际玩久了 才知道 经济是第一
红警玩久了 才知道 兵力是第一

魔兽玩久了 才知道 稳定娴熟是第一
星际玩久了 才知道 侦察应变是第一
红警玩久了 才知道 对偷袭方法了解是第一

魔兽玩久了 才知道什么叫做战斗
星际玩久了 才知道什么叫做战略
红警玩久了 才知道什么叫做按部就班

魔兽玩久了 你发现地图到现在为止还停留在陆战
星际玩久了 你发现从WCG2001开始官方地图就有岛战
红警玩久了 你发现地图是永远不变的

魔兽玩久了 你发现看rep要变换版本和收集地图实在厌烦
星际玩久了 你发现一个400k的rep记录了一场3小时的比赛
红警玩久了 你发现rep是什么你都不知道

魔兽玩久了 你会发现总有或多或少冷板凳单位
星际玩久了 你会发现没有一个单位是多余的
红警玩久了 你发现高手对战大多数单位都是多余的

魔兽玩久了 你会发现你所了解的魔兽知识越来越多
星际玩久了 你会发现你所不懂的星际知识越来越多
红警玩久了 你发现你所知道的红警知识没用的越来越多

魔兽玩久了 仿佛在考验你的耐心和熟练程度一般
星际玩久了 总有出乎你意料的东西令你眼前一亮
红警玩久了 想睡觉

魔兽玩久了 你发现刚练熟的高效打法随着版本更新、单位修改而不再应

星际玩久了 你发现不但新战术发明的越来越快,而且被破解的也越来越

红警玩久了 你发现战术越来越单一,破解方法越来越无用

魔兽玩久了 你发现战术大多跟着补丁变
星际玩久了 你发现战术大多跟着玩家变
红警玩久了 你发现战术就是偷袭和反偷袭

魔兽玩久了 你发现魔兽的未来掌握在补丁手里
星际玩久了 你发现星际的未来掌握在玩家手里
红警玩久了 你发现红警的未来掌握在新游戏手里

魔兽玩久了 觉得人在被魔兽玩
星际玩久了 觉得是人在玩星际
红警玩久了 觉得人和红警都在被游戏公司玩

魔兽玩久了 天天盼望下一个版本升级补丁调整单位属性
星际完久了 天天盼望不要出现bug这样就不用再有新补丁诞生
红警玩久了 天天盼望不要出新补丁,要不bug就没了

魔兽玩久了 忽然想起冰封王座1.07诞生到1.20几乎版版不同
星际玩久了 回忆起母巢之战1.04到1.08只做过两次单位属性变动就稳定
至今
红警玩久了 算了一下10年了就出过一次补丁,还没把bug改掉

魔兽玩久了 才知道魔兽三确实比星际一画面好
星际玩久了 才知道魔兽在用孙子辈的游戏和星际一代的产品比较画面
红警玩久了 才知道同样是爷爷辈的游戏,差距怎么就那么大呢?

魔兽玩久了 才知道魔兽玩家说魔兽好却很多都没玩过甚至听说过魔兽III
的爷爷和爸爸
星际玩久了 才知道星际的第一代已经快八岁了
红警玩久了 才知道红警已经六年每人玩了

魔兽玩久了 避免不了争论种族平衡性、英雄兵种单位bug性的口水战
星际完久了 你问哪个族最强 大家会告诉你三族一样厉害 根据兴趣爱好
选择
红警玩久了 总是想说,咱们出飞行兵了,换种打法吧

魔兽玩久了 你不知道为什么魔兽玩家似乎也分了种族
星际玩久了 你会发现三族来自不同星球但各族玩家却似兄弟
红警玩久了 你会觉得每个国家几乎没有区别

魔兽玩久了 你发现各族玩家往往在为维护自己所用种族而争辩
星际玩久了 你发现无论何族玩家都在为维护共同的星际而争辩
红警玩久了 你会发现这个游戏一直在维护某些国家的政治利益

魔兽玩久了 你会品味什么是流行
星际玩久了 你会体会什么是经典
红警玩久了 你会明白什么是猥琐

魔兽玩久了 你才知道为什么魔兽如此热门
星际玩久了 你才知道为什么星际如此经典
红警玩久了 你才知道为什么红警如此冷门并且没有人玩

魔兽玩久了 你会喜欢上魔兽 别人说魔兽不好 你会火冒三丈 恨不得打骂

星际玩久了 你会喜欢上星际 别人说星际不好 你会一笑而过 不屑和他争

红警玩久了 你会喜欢上红警 别人说红警不好 你会火冒三丈 不知道怎么
争辩

魔兽玩久了 你慢慢体会到魔兽真的是一款好游戏
星际玩久了 你慢慢体会到星际越来越不像一款游戏
红警玩久了 你慢慢体会到一个好的公司比一款好的游戏重要的多

魔兽玩久了 你发现魔兽是如此精彩的游戏 给我们带来快乐
星际玩久了 你发现生活和思维方式已经有了星际的烙印
红警玩久了 你发现思维方式越来越简单了

魔兽玩久了 才发现原来有很多初中小朋友加入魔兽玩家行列
星际玩久了 才发现原来有很多成家立业的"大叔"还没退出星际玩家行列
红警玩久了 才发现原来有很多初中的小朋友和成家立业的大叔,不断加
入和迅速退出这红警玩家的行列

魔兽玩久了 才知道世界上最远的距离不是中国电信和网通 而是魔兽精灵
玩家和兽人玩家的心
星际玩久了 才知道 星品不好人品就不好
红警玩久了 利用bug在红警里不算人品太不好

魔兽玩久了 才知道 魔兽是暴雪(Blizzard)制造出来的最流行的精品大作
星际玩久了 才知道 星际是上帝借暴雪之手赐予玩家们的经典杰作
红警玩久了 才知道 西木(Westwood)为什么会输给暴雪

2007年5月22日星期二

我的新装备

上周6中午的到的货:

我的包,今天上午到的货:
这次购买装备还算比较成功,笔记本没有坏点,硬盘噪音很小,晚上睡觉听不到,: ),包也比较理想,在taobao上买的........呵呵,舒服~~~

2007年5月19日星期六

我回来了~~

刚辞职了,今天刚拿到笔记本,明天把我的新note发几张照片上来,今天太晚了好累,程序尽量早写完发上来,要恶补日语一段时间,好紧张啊~~~ : )

2007年4月28日星期六

侍魂 零-SP 出招表

侍魂 零-SP 出招表/系统介绍
1:系统
按键:
A:轻斩 B:中斩 AB:重斩 C:踢 D:特殊动作

特殊操作:
D:冥想、 ←D:下段回避、 →D:前方小跳、 ↙D:后滚、 ↘D:前滾 、↓D:伏身
防御破坏:接近←/→+CD(防御破坏中·斩=防御破坏斩)
不意打:B+C
倒地追击:↓/↘B+C
倒地追击(大):= ↑B+C
→→= 前冲
←←= 疾退
移动起身= 倒地中←或→
快速起身= 倒地中↑
当身:↓↙←→ D
空手入白刃:(武器脱手时)↓↙←→ D
自杀:←→↓ START
挑拨:START×3
怒气爆发:ABC
绝命奥义:↓↙←+CD
无之境地:BCD
一闪:无之境地中 BCD
------------------------------------------
一、
德川 庆寅 YOSHITORA
壹の太刀 抚子 :↓↘→·斩
贰の太刀 白百合 :→↓↘·斩
叁の太刀 牡丹 :(空中)↓↘→·斩
四の太刀 椿 :←↓↙·斩
伍の太刀 朝顔 :↓↙←·斩
六の太刀 夕颜 :(近距离)→↓↘·C
七の太刀 遊蝶華  :(前六式击中敌人后)→↘↓↙←→·BC
★ 葵 :↓↘→·CD
*绝命奥义:百花缭乱
-----------------------
二、
霸王丸 HAOHMARU
奥义 旋风裂斩 :↓↘→·斩
奥伪 旋风裂斩 :↓↘→·C
奥义 弧月斩 :→↓↘·斩
奥义 疾风弧月斩 :(前冲中)→↓↘·斩
烈震斩 :←↓↙·斩
酒壶击 :↓↙←·C
斩钢闪 :→↘↓↙←→·AB
★ 天霸封神斩 :↓↘→·CD
*绝命奥义:天霸凄煌斩
----------------------
三、
橘 右京 UKYO
残像踏前斩 :↓↘→·斩
秘剑 燕返 :(空中)↙↓↘→·斩
秘剑 细雪 :↓↙←·斩
非剑 细雪 :↓↙←·C
★ 燕六连 :↓↘→·CD
*绝命奥义:梦想残光霞
-----------------------
四、
真镜名 弥那 MINA
地弓心 :←(蓄)→·斩
天弓心 :←(蓄)→·C
死神的诱惑 :←↓↙·A
死神的欢迎 :(上式中)←↓↙·B
死亡的叹息 :→↓↘·斩
台风 :(跳跃中)↓·C
查布尔 过来 :↓↙←·B
查布尔 晚安 :↓↙←·C
★ 火神之怒 :↓↘→·CD
*绝命奥义:
----------------------------
五、
娜可露露 NAKORURU
特殊技: ? :空中↓·C
空中投: ? :空中接近时C
胜利之刃 :←↙↓·斩
风之刃 :↓↘→·斩
神之轮舞 :←↓↙·斩
神之祈舞 :(无武器时) ↘↓↙←→↓↘·BC
鹰之锐目 :↓↙←·斩
飞鹰吊挂 :↓↙←·C
吊挂攻击 :(吊挂中)斩
飞鹰突击 :(吊挂中)BC
★ 辉神之轮舞:↓↘→·CD
*绝命奥义:
---------------------
六、
牙神 幻十郎 GENJURO
樱华斩 :↓↙←·斩
里樱华·菖蒲 :樱华斩被防御后按住键
桐霸 光翼刃 :→↓↘·斩
三连杀 :↓↘→·斩
霞刃 :(接近)→↓↘·C
百鬼杀 :←↓↙·斩
★ 五光斩 :↓↘→·CD
*绝命奥义:札死舞
-------------------
七、
服部 半藏 HANZO
空转击 :空中投的场合→·C
忍法 爆炎龙 :↓↙←·斩
忍法 烈风手里剑 :(空中)↓↘→·斩
忍法 影分身 :→←↙↓↘→·A/B
雀落 :(接近)→↓↘·斩
雀落 飒 :(前冲接近时)→↓↘·斩
忍法替身之术=佛(天舞):→↘↓↙←·AC(受伤中→←→←→←↓·AC)
忍法替身之术=鬼(地斩):→↘↓↙←·BC(受伤中→←→←→←↓·BD)
忍法 影·静音 :↓↓·斩
猿舞 :←↓↙·A/B/C/D
★ 真·雀落 :(接近)↓↘→·CD
*绝命奥义:
-------------------------
八、
加尔福特 GALFORD
重力牵引 :空中投场合→·C
电光镖 :↓↘→·斩
陨石摔 :(接近)→↓↘·斩
影分身 :→←↙↓↘→·A/B
反击斩杀 :→↘↓↙←·AC/BC(受伤中→←→←→←↓·AC/BC)
突袭忍犬 :↓↙←·A
机枪忍犬 :↓↙←·B
陨石忍犬 :↓↙←·AB
强袭忍犬 :↓↙←·C
★ 超级双重狙击:↓↘→·CD/BC
*绝命奥义:
-------------------
九、
绯雨 闲丸 SHIZUMARU
绯刀流 雾雨刃 :↓↘→·斩
绯刀流 雾雨刃 豪雨 :↓↘→·AB
绯刀流 梅雨圆杀阵 :→↓↘·斩
绯刀流 五月雨斩 :↓↙←·斩
绯刀流 冰雨返 :↓↘→·C
真·雨流狂落斩 : 任意键押住一会后放开
时雨 :(空中)↓·C
小雨 :(空中顶点时)↑·斩
雷雨 :(小雨中)A/B
★ 绯刀流禁手 暴雨狂风斩 :↓↘→·CD
*绝命奥义:鬼之记忆 无限炮
------------------
十、
花讽院 骸罗 GAIRA
喝~! :↓↘→·斩
地震丸 :↓↓·A/B/C
百贯落 :(空中)↑·AB
抓~天花板 :←↓↙·A
抓~石头 :←↓↙·B
抓~尻 :←↓↙·C
圆心杀 :(接近)←↖↑↗→·AB
★ 仁王爆震杀 :↓↘→·CD
*绝命奥义:
--------------------
十一、
风间 火月 KAZUKI
焦热魂 :↓↘→·A/B/AB/C
大爆杀 :→↓↘·A/B/AB/C
灾炎 :↓↙←·C
炎灭 :←↓↙·A/B/C
炎返 :(倒地时/灾炎附加动作中)AC
★ 暴爆 火炎击 :↓↘→·CD
*绝命奥义:挟击 火达磨大突进
-----------------------
十二、
风间 苍月 SOUGERSU
浮月 :↓↘→·斩
浮月操水 :浮月后按住用方向移动
月光 :→↓↘·斩
月隐 :↓↙←·斩
★ 消破 风月斩 ::↓↘→·CD
*绝命奥义:湖月
---------------------------
十三、
刘云飞 YUNFEI
天慧跳陷 :空中投场合→·C
天威太保 :↓↘→·A/B
天哭封罗 :(接近)→↓↘·C
天杀太岁 :(上式中)→↓↘·AB
天机七曜 月 :↓↙←·A
天机七曜 火 :↓↙←·B
天机七曜 水 :(空中)↓↙←OR↓↘→A
天机七曜 木 :(空中)↓↙←OR↓↘→B
天机七曜 金 :(空中)↓↙←OR↓↘→C
天机七曜 土 :(空中)↓↙←OR↓↘→D
天机七曜 日 :(空中)AC同押
天猛金翅 前 :(空中)↓↙←OR↓↘→·AB
天猛金翅 后: (空中)↓↙←OR↓↘→·CD
★ 天魁雪震 :↓↘→·CD
*绝命奥义:天罪丧门
----------------------
十四、
莉姆露露 RIMURURU
冻气弓 :↓↘→·A/B
冻气弓 地 :↓↘→·AB
冰之花 :→↓↘·C
冰之泉 :↓↙←·斩
神之壁 :←↓↙·斩
冰之岩 :(空中顶点)↓·斩
吹雪之枪 :→·斩连打
加路加路赛 :(赤手/赤手·怒) 前冲中AC/BC
★ 冻神之刃 :↓↘→·CD
*绝命奥义:
----------------
十五、
柳生 十兵卫 JUBEI
喝咄 水月刀 :↓↘→·斩
冽 水月刀 :↓↘→·AB
二相 角罗刀 :→↓↘·斩
柳生 心眼刀·水月 :↓↙←·A
柳生 心眼刀·相破 :↓↙←·B
柳生 心眼刀·天罗 :↓↙←·C
八相发破 :斩连打
★ 绝·水月刀 :↓↘→·CD
*绝命奥义:柳生新阴流密传 无二罗天
---------------------
十六、
腐れ外道 KUSAREGEDO

恶灵呼 :↓↘→·斩
吐胃液 :↓↙←·斩
肉举上 :←↓↙·C
刻下外道的烙印 :→←↓↑·C
泥丸投 :↘←↙↓↘→←↓↙·BC
★ 飞头击 :↓→·CD
★ 狩猎外道的猎物 :(接近)→↗↑↖←↙↓↑·CD
*绝命奥义:外道的晚餐
-----------------------
十七、
莱拉 RERA
特殊技: ? :空中↓·C
空中投: ? :空中接近时C
乘狼 :↓↙←·C
闪光之牙 :(乘狼后)←↓↙·斩
天之牙 :(乘狼后)→↓↘·斩
雷之牙 :↓↘→·斩
稻妻之牙 :(乘狼后,空中)↓↘→·斩
分离攻击 :分离时除了↓↑之外·C
? :空中·C
★ 辉神之牙 :↓↘→·CD
*绝命奥义:
-----------------------
十八、
罗刹 丸 RASERSUMARU
旋风烈斩·刹 :↓↘→·斩
旋风破 :↓↘→·C
夙刃 :→↓↘·斩
刚破 :→↓↘·C
死祟 :↓↙←·C
★ 天霸断空烈斩 :↓↘→·CD
*绝命奥义:脏腑之掘
------------------
十九、
千两 狂死郎 KYOSHIRO
血烟曲轮 :(空中)↓·斩
大津波 :↓↘→·斩
回天曲舞 :→↓↘·斩
跳尾狮子 :↓↙←·A/B
跳尾狮子·乱心 :↓↙←·AB
火炎曲舞 :←↓↙·斩
虾蟆地狱 :↓↙←·C
★ 荒事师狂死郎 “血肉之舞” :↓↘→·CD
*绝命奥义:独坛场 “鬼之舞”
-------------------
二十、
首斩 破沙罗 BASARA
特殊技: 刺足 :(空中)↓·C
头骨割 :(空中)↙OR↘·C
地刺 :↓↘→·斩
空刺 :(空中)↓↘→·斩
影出 :→↓↘·斩
友引 :(接近)→↓↘·C
夜鸟魂 :↓↘→·C
影吸 :↓↙←·C
影骗 前跳 :←↓↙·A
影骗 直跳 :←↓↙·B
影骗 后跳 :←↓↙·C
影骗 前进 :←↓↙·AB
影骗 前转 :←↓↙·AC
影骗 影吸前行 :←↓↙·BD
影骗 前冲 :←↓↙·BC
★ 影舞·梦弹 :↓↘→·CD
*绝命奥义:狱门
----------------------
二十一、
塔姆塔姆 TAM TAM
? :↓↘→·A/B
? :→↓↘·斩
? :←↓↙·斩
? :↓↘→·C
? :→·斩连打
★ 图腾之柱 :↓↘→·CD
*绝命奥义:
--------------------

二十二、
夏洛特 CHARLOTTE
迅光三角剑 :↓↘→·斩
冲力光剑 :→↓↘·斩
? :↓↙←·斩
? :↓↘→·C
突进喷泉 :→·斩连打
? :(无武器时)前冲中C
★ 水晶玫瑰 :↓↘→·CD
*绝命奥义:七星光芒剑
--------------------
二十三、
炎邪 ENJA
愚连脚 :→↓↘·斩(追加指令:←·斩、→·斩、←·斩)
六道烈火 起式·地狱道 :↓↘→·A
六道烈火 二式·饿鬼道 : 地狱道中 ↓↘→·B
六道烈火 终式·天道 : 饿鬼道中 ↓↘→·C
炎灭 :←↓↙·A/B/C
★ 炎邪爆裂 :↓↘→·CD(追加指令)爆裂中断:炎邪爆裂中ABCD
*绝命奥义:三千大千世界全焦土
--------------------
二十四、
水邪 SUIJA
翔月 :(空中)↙↓↘→·斩
圆月 :(空中)→↓↘·斩
死月 :(空中)↓↙←·斩
月轮波 :(空中)←↓↙·斩
★ 天升·水中波 :(空中)↓↘→·CD
*绝命奥义:平等神圣之裁决
-------------
二十五、
天草四郎时贞
逢魔刻(前):↓↘→·C
逢魔刻(后):↓↙←·C
死灵刃:↓↘→·斩
汝、暗转入灭:→↓↘·斩(发动中·斩攻击、·C中断)
天照封凰擎:↓↙←·斩
戒烈掌:→↓↘·C
★ 凶冥十杀阵:↓↘→·CD
*绝命奥义:汝、忏悔,我、灭罪
----------
二十六、
凶国日轮守 我旺
熏雅:↓↙←·C
忌神乐:↓↘→·斩
兜独乐:→↓↘·斩
陇璀子:→·斩连打
铁碎:→↓↘·C
★ 奈落吼:↓↘→·CD
*绝命奥义:黄泉社
-------------
二十七、
壬无月斩红郎
无限流 疾风斩:↓↘→·斩
无限流 天崩斩:→↓↘·斩
无限流 无法拳:↓↘→·C
无限流 不动:↓↙←·C
★无限流 无限炮:↓↘→·CD
*绝命奥义:无限流极意 无双剑
------------
二十八、
罗将神 水姬
咒歌爪弹:↓↘→·斩
邪心共鸣:↓↙←·C
霸气阴灭阵:↓↙←·斩
神魔灭杀阵:→↓↘·C
魔界转生:←↓↙·斩
我神共鸣魂:→↓↘·斩
★ 天地魔境阵:↓↘→·CD
*绝命奥义:狂魔祀怨狱
free counters