Jan 20 2006

一年又一年

Category: 乱up当秘笈ssmax @ 23:07:32

又一年的团年饭,有一次的自助餐,不知不觉工作了2年,但是没有了一人一揸生啤,没有了一起对欢欢,当初并肩的已经没有几个,什么时候我也离开这里呢。

 

今年大奖,夜宵好伴侣,方便面


Jan 19 2006

WOW里的”守财奴”

Category: Gamesssmax @ 09:35:48

我想说,当有一天我们离开WOW的时候,会发现身上曾经拿来炫耀的一件件其实都轻如烟,薄如纸.这不禁让我想起了”格朗台”–传统的守财奴,当其灵魂离开了躯体,生前的财富也随之灰飞湮灭.我不希望在WOW的最后,我们也悔恨,曾经多少个通宵换来的却并不曾被我们真正意义上的使用过.毕竟,一个一身力量的战士,要是不抗BOSS的话,就跟奥城门口的NPC没有区别了.


Jan 13 2006

!!!

Category: Gamesssmax @ 18:57:38

诺莫瑞根副本外的机器人还会发乱七八糟的牢骚
如果你去打他的话
其中有一句是:
我告诉你
没有奶牛关了
……
好吧
也许有


Jan 13 2006

Category: Gamesssmax @ 18:49:40

暗黑2里面有维特的腿~~
WAR3里面有维特的第2条腿~~
当我在WOW里面看见维特的第3条腿的时候我笑翻了~~~


Jan 13 2006

无题

Category: Gamesssmax @ 18:36:13

神:我可以实现你两个愿望
我:我去美国玩mf,你给我建个桥从中国到美国,还有……
神:停。。。。这个太有难度,说2个简单的
我:我想让盗贼穿板甲。还想9c出月卡。
神:算了,我给你修桥吧,8车道的?


Jan 13 2006

使用public-private key pair登陆SSH服务器

Category: 技术ssmax @ 15:59:11

最近公司的服务器终于强制要求使用key来登陆了,总结了一些要点归纳如下:

要使用key登陆,首先每个人都要有一对keys吧,我就喜欢所有服务器都用同一组keys,这样维护方便(其实我懒,哈哈),就这对keys是怎么来的呢?

生成keys一般有几种方法

一般服务器端都自带有生成程序ssh-keygen

>ssh-keygen -b1024 -tdsa -C注释
Generating public/private dsa key pair.
Enter file in which to save the key (/home/用户名/.ssh/id_dsa): 这里写保存路径
Enter passphrase (empty for no passphrase):key密码
Enter same passphrase again: key密码
Your identification has been saved in /home/用户名/.ssh/id_dsa.
Your public key has been saved in /home/用户名/.ssh/id_dsa.pub.
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

这样就生成一组keys了

私钥:/home/用户名/.ssh/id_dsa

公钥:/home/用户名/.ssh/id_dsa.pub

类型:DSA 1024bit

passphrase 是 key密码,为了防止有人拿到了你的私钥,在使用私钥的时候需要输入密码,这样别人拿到也用不了

 

注意,由于服务器端的不同,ssh-keygen这个程序生成的私钥和公钥的格式也不相同

比较常用的服务器端有OpenSSHSSH Communications

openssh生成的过程就如上面所述,然后将这对keys下载到本机备用,再在服务器端执行:

>cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 

>chmod 700 ~/.ssh

>chmod 600 ~/.ssh/*

openssh默认用户登陆时候使用的公钥列表就保存在

 ~/.ssh/authorized_keys(~是用户目录,ssh2方式)

,当然这些可以通过服务器配置文件sshd_config修改。

注意这些目录的权限,如果group或者other可以写的,这些公钥就会被视作无效!

 

SSH Communications的设置方式大同小异,注意的是openssh生成的key,SSH Communications是不能用的,需要用转换工具转换或者用SSH Communications自带的ssh-keygen(ssh-keygen2)生成。

 把生成或者转换后的公钥cp到

~/.ssh2/identity.pub

>echo “Key identity.pub” >> ~/.ssh2/authorization

就可以了,如果是ssh1的话就和OpenSSH的一样,直接是~/.ssh/authorized_keys

 

现在服务器端就配置好了,如果你是直接在服务器那边(或者你的主机是linux),就可以直接用ssh来连接其他服务器,怎么使用私钥id_dsa,自己man ssh看看应该就清楚了,我最喜欢就是使用scp来站对站copy文件了(在没有rsync的情况下,哈哈)

如果你是使用win登陆服务器的,一般大家是使用SecureCRT或者Secure SSH Client作为客户端的吧

SecureCRT现在是支持OPENSSH格式的钥匙keys,还有自己的VanDyke格式的钥匙(就是用它的keygen生成的,不建议使用),在Session Options的SSH2选项里面,选定PublicKey验证方式,然后在属性里面选择你的私钥文件(id_dsa),就可以使用了(最好把id_dsa和id_dsa.pub放在同一个目录下面)

Secure SSH Client现在一定要收费才能使用,好久没有用过了,现在能用到的都是3.xx的版本吧应该。大概设置应该也差不多,不过估计不能使用OpenSSH格式的钥匙,需要转换。

 

另外还有一些应用,比如WinCVS,是这两种格式的钥匙都不支持的,这里就引出一个比较强的工具:

putty

WinCVS支持这个格式的钥匙,而且putty可以用来登陆ssh、telnet,不过就是界面弱了点,还能转换上面2种格式的钥匙,哈哈

下载装好putty之后,找到PUTTYGEN.EXE

双击打开程序,选择Conversions标签里面的Import Key,把你从OpenSSH服务器端生成的公钥id_dsa导入,然后选择Conversions->Export ssh.com key就能拿到ssh.com格式的私钥

另外File->Save private key,就可以拿到putty格式的私钥

拿到putty格式的私钥就能在wincvs 2.0之后的版本直接使用,也是在连接方式里面选,慢慢看看吧

如果是wincvs 1.3和之前的版本,需要用plink作为ssh代理,详细的设置方法有很多文章介绍,这里就不说了。

以后一有新服务器(一般用OpenSSH的)就直接把id_dsa.pub扔上去,就能玩SSH登陆啦。

oh,忘记说了,如果把openssh的公钥用到ssh.com的服务器上,直接copy中间那段你看不懂的东西过去就可以了,自己研究一下两者的格式吧,哈哈,有些东西始终是要自己动手di~


Jan 09 2006

1.9服务器史诗任务详细流程(附图)

Category: Gamesssmax @ 17:50:00

1.9服务器史诗任务详细流程(附图)
如果不相信的有外国的工会已经完成前面几步了
http://www.lrguild.org/

这才叫任务啊 ,我决定去farm虫子和看电影,如果服务器不挂就肯定要去打小伊,哇哈哈


Jan 06 2006

浅谈HTTP中的Session与Cookie

Category: 技术ssmax @ 11:08:01

session是保存在服务器端没错,但是要知道哪个用户是使用什么session,通过http协议这么知道的呢?

举个例子,服务器是resin,sessionid格式是使用cookie,session失效期是30分钟,这些可以通过服务器配置文件resin.conf设置:

<session-config>
        <session-max>4096</session-max>
        <session-timeout>30</session-timeout>
        <enable-cookies>true</enable-cookies>
        <cookie-domain>yourdomain</cookie-domain>
        <enable-url-rewriting>true</enable-url-rewriting>
</session-config>

进去一个使用session的jsp页面,检查response头,发现:
Set-Cookie: JSESSIONID=b5a86TcEnktd; domain=yourdomain; path=/
第一次访问的时候jsp发现这个请求没带有JSESSIONID,所以生产一个,并且set进去浏览器的cookie里面

然后第二次访问这个页面(不关闭浏览器)浏览器发现有这个cookie,对应这个domain和path,ok,
请求头包括这一行:
Cookie:  JSESSIONID=b5a86TcEnktd
服务器通过这个JSESSIONID到session池里面拿session,如果拿到,证明是有效的session(因为命名随机,所以很难撞),如果没有这个session,就证明sessionid无效,生成一个新的session,然后想上面一样set进cookie

此时关闭浏览器,再打开,访问同样的页面,由于浏览器发现刚才那个cookie已经过期(存活期是浏览器期限),所以请求头并没有加上Cookie:  JSESSIONID=b5a86TcEnktd这一行,服务器解释这个请求,找不到JSESSIONID,自然帮他生产一个新的,然后又通过response设置成Set-Cookie。
Set-Cookie: JSESSIONID=adqOWayWfard; domain=yourdomain; path=/

好了,这个cookie的id是adqOWayWfard,原来的那个是b5a86TcEnktd,服务器并不知道b5a86TcEnktd已经没有人使用了,所以它还是会存活到30分钟后才消失,但是此时如果有请求是使用了b5a86TcEnktd的JSESSIONID,服务器会认为是有效请求,此时的session就已经被别人盗用了~当然这种可能性很低。

但是楼主说的情况,是外部提交的问题,用session是解决不了的!
只要你访问过一次需要提交的页面,生成可提交的session,记录sessionid,然后在30分钟内,你可以用这个session提交,你可以用程序set入去http请求里面,也可以用url代session方式:
http://yourdomain/test.jsp;jsessionid=b5a86TcEnktd
服务器一样可以拿到session。
当然你可以在session里面设置一个值,比如时间,没session和间隔太短的都不许提交,这样可能有效一点,呵呵,但是httpservletreaeust.getsession(false)这个东西是没有用di,只要有sessionid就能让他get出东西出来,哈哈。

记住,http协议能让人提交,就不能防止别人用同样的http协议提交,因为http协议是没有验证和数据持续的东西的,所有东西都是通过request header、body来传送,只要我能写程序,分析你的http响应,然后做到和平常人的提交一模一样,你是没有办法禁止的,就算使用了图片验证码,我也可以取得图片来分析,得出验证码提交,这就是为什么现在图片验证码要很多干扰线、gif动态,为的就是防止ocr分析,只是数字的ocr识别率是很高的,也很容易做(用java,做过一个),所以我们要干扰干扰干扰~~~~


Jan 06 2006

陪审团的筛选

Category: 技术ssmax @ 10:45:14

Jury Compromise

Time Limit:1000MS  Memory Limit:10000K
Total Submit:987 Accepted:246 Special Judged

Description
In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general public. Every time a trial is set to begin, a jury has to be selected, which is done as follows. First, several people are drawn randomly from the public. For each person in this pool, defence and prosecution assign a grade from 0 to 20 indicating their preference for this person. 0 means total dislike, 20 on the other hand means that this person is considered ideally suited for the jury.
Based on the grades of the two parties, the judge selects the jury. In order to ensure a fair trial, the tendencies of the jury to favour either defence or prosecution should be as balanced as possible. The jury therefore has to be chosen in a way that is satisfactory to both parties.
We will now make this more precise: given a pool of n potential jurors and two values di (the defence’s value) and pi (the prosecution’s value) for each potential juror i, you are to select a jury of m persons. If J is a subset of {1,…, n} with m elements, then D(J ) = sum(dk) k belong to J
and P(J) = sum(pk) k belong to J are the total values of this jury for defence and prosecution.
For an optimal jury J , the value |D(J) – P(J)| must be minimal. If there are several jurys with minimal |D(J) – P(J)|, one which maximizes D(J) + P(J) should be selected since the jury should be as ideal as possible for both parties.
You are to write a program that implements this jury selection process and chooses an optimal jury given a set of candidates.

Input
The input file contains several jury selection rounds. Each round starts with a line containing two integers n and m. n is the number of candidates and m the number of jury members.
These values will satisfy 1<=n<=200, 1<=m<=20 and of course m<=n. The following n lines contain the two integers pi and di for i = 1,...,n. A blank line separates each round from the next. The file ends with a round that has n = m = 0. Output For each round output a line containing the number of the jury selection round ('Jury #1', 'Jury #2', etc.). On the next line print the values D(J ) and P (J ) of your jury as shown below and on another line print the numbers of the m chosen candidates in ascending order. Output a blank before each individual candidate number. Output an empty line after each test case. Sample Input 4 2 1 2 2 3 4 1 6 2 0 0 Sample Output Jury #1 Best jury has value 6 for prosecution and value 4 for defence:  2 3 Hint If your solution is based on an inefficient algorithm, it may not execute in the allotted time. Source Southwestern European Regional Contest 1996


Jan 01 2006

传说的RP服务器

Category: Gamesssmax @ 20:26:32

pvp
[综合]刷荣誉的吼,已经和部落联系好了!
rp
[综合]啊,我亲爱的朋友,为了共同抵抗燃烧军团的再次入侵,为了我们的azeroth更加美好,让我们和部落携手在阿拉西共同建立起伟大的友谊吧!