Tuesday, June 03, 2008

IT人应有的30个技能



这不是不相关的东西,在这个时代里不管干什么想不跟IT打交道是不可能的事。就算你只是个在实验室里修电脑的,本文也值得一看。


中文是我简单翻译的,可能与原意并不完全相同。


The 30 skills every IT person should
have


An IT manager's guide on how to be better
at what you do, no matter how experienced you are




By Richard Casselberry


June 02, 2008

On MSN the other day, I noticed an article
called "75 skills every man should master." It included some skills
I have and some I don't. For example, I can tie a knot and hammer a
nail, but frankly I can't recite a poem from memory, and bow ties
still confuse me.


It was an interesting read and made me
realize I could be more well-rounded than I am. To be honest, we
all could be.


So in the spirit of personal growth, I
developed a list of skills every IT person should have.


1. Be able to fix basic PC issues.
These can be how to map a printer, back up files, or add a network
card. You don't need to be an expert and understand how to
overclock a CPU or hack the registry, but if you work in IT, people
expect you to be able to do some things.


[ Ifyou have IT staffers who
aren't up to snuff, fire them.
Learn how to do it right.
]


懂得配置电脑。你要知道怎样配置一个打印机,备份文件,添加网卡。不必懂得如何去超频CPU或去做hacker,但总得知道些什么。


2. Work the help desk. Everyone,
from the CIO to the senior architect, should be able to sit down at
the help desk and answer the phones. Not only will you gain a new
appreciation for the folks on the phones, but you will also teach
them more about your process and avoid escalations in the
future.


接受咨询。从CIO到资深设计师,都应该坐在咨询台前面去接受咨询。要听的话不只是感激,也要告诉他们关于你的工程,避免未来的升级。(为什么避免升级?大概译错了?)


3. Do public speaking. At least
once, you should present a topic to your peers. It can be as simple
as a five-minute tutorial on how IM works, but being able to
explain something and being comfortable enough to talk in front of
a crowd is a skill you need to have. If you are nervous, partner
with someone who is good at it, or do a roundtable. This way, if
you get flustered, someone is there to cover for you.


作公开讲话。至少应有一次对你的同事陈述你的观点,尽管聊天软件可能更简单,但在人前自在地讲话是一个必备的技能。


4. Train someone. The best way to
learn is to teach.


培训。最好的学习方式是去教别人。


5. Listen more than you speak. I
very rarely say something I didn't already know, but I often hear
other people say things and think, "Darn, I wish I knew that last
week."


听多于说。


6. Know basic networking. Whether
you are a network engineer, a help desk technician, a business
analyst, or a system administrator, you need to understand how
networks work and simple troubleshooting. You should understand DNS
and how to check it, as well as how to ping and trace-route
machines.


基本的网络工作原理。应该懂得如何配置DNS,怎样去ping网络中其他的电脑。


7. Know basic system administration.
Understand file permissions, access levels, and why machines talk
to the domain controllers. You don't need to be an expert, but
knowing the basics will avoid many headaches down the
road.


基本系统管理。了解文件权限,级别,如何在域中工作。这可以避免很多令人头痛的问题。(文件打不开?共享中的文件别人打不开?看看权限吧。)


8. Know how to take a network trace.
Everyone in IT should be able to fire up wireshark, netmon, snoop,
or some basic network capturing tool. You don't need to understand
everything in it, but you should be able to capture it to send to a
network engineer to examine.


网络追踪。至少能把像样的问题报告发给网管。(不要发一堆浆糊过来。)


9. Know the difference between latency
and bandwidth.
Latency is the amount of time to get a packet
back and forth; bandwidth is the maximum amount of data a link can
carry. They are related, but different. A link with high-bandwidth
utilization can cause latency to go higher, but if the link isn't
full, adding more bandwidth can't reduce latency.


延迟和带宽。二者是相关的,高利用率的带宽必定会增加延迟,但是如果连接不满,增大带宽也不会降低延迟。(不要作无谓的猜想。)


10. Script. Everyone should be able
to throw a script together to get quick results. That doesn't mean
you're a programmer. Real programmers put in error messages, look
for abnormal behavior, and document. You don't need to do that, but
you should be able to put something together to remove lines, send
e-mail, or copy files.


脚本。写一个脚本加快你的工作。这不是说你要做一个程序员,真正的程序员能够做更多的东西。你需要的大致是快速移除你文档中的空行,自动发送E-Mail,复制文件等。(不会写的话叫人帮你写吧。)


11. Back up. Before you do anything,
for your own sake, back it up.


备份。在你要做重大修改之前。


12. Test backups. If you haven't
tested restoring it, it isn't really there. Trust me.


测试备份。这份备份真的能恢复吗?(你要修改的是不是你用来恢复备份的那个脚本?)


13. Document. None of the rest of us
wants to have to figure out what you did. Write it down and put it
in a location everyone can find. Even if it's obvious what you did
or why you did it, write it down.


文档。其他人不会知道你做过什么。记录下来,即使你对它很清楚。


14. Read "The Cuckoo's Egg." I don't
get a cut from Cliff Stoll (the author), but this is probably the
best security book there is -- not because it is so technical, but
because it isn't.


“杜鹃的蛋”。这个故事出色地描述了一个安全问题,说它出色是因为正确的做法与故事中的完全相反。(这是个什么故事?)


15. Work all night on a team
project.
No one likes to do this, but it's part of IT. Working
through a hell project that requires an all-nighter to resolve
stinks, but it builds very useful camaraderie by the time it is
done.


通宵的小组工作。这是IT行业的一部分。


16. Run cable. It looks easy, but it
isn't. Plus, you will understand why installing a new server
doesn't really take five minutes -- unless, of course, you just
plug in both ends and let the cable fall all over the place. Don't
do that -- do it right. Label all the cables (yes, both ends), and
dress them nice and neat. This will save time when there's a
problem because you'll be able to see what goes where.


电缆。把你的电缆两端都做上明显的标记。(此外,不要在不插电缆时问“为何共享无法打开”这样的问题。)


17. You should know some energy rules of
thumb.
For example: A device consuming 3.5kW of
electricity requires a ton of cooling to compensate for the heat.
And I really do mean a ton, not merely "a lot." Note that 3.5kW is
roughly what 15 to 20 fairly new 1U and 2U servers consume. One ton
of cooling requires three 10-inch-round ducts to handle the air; 30
tons of air requires a duct measuring 80 by 20 inches. Thirty tons
of air is a considerable amount.


了解一些电学知识。比如你需要多少空气去冷却一个电源,用什么设备去驱动空气。(这个问题谁想过?)


18. Manage at least one project.
This way, the next time the project manager asks you for a status,
you'll understand why. Ideally, you will have already sent the
status report because you knew it would be asked for.


管理至少一个工程。下次工程经理问你,你就会知道他需要的是什么。


19. Understand operating costs versus
capital projects.
Operating costs are the costs to run the
business. Capital equipment is made of assets that can have their
cost spread over a time period -- say, 36 months. Operating costs
are sometimes better, sometimes worse. Know which one is better --
it can make a difference between a yes and no.


了解经费与资本项目。(这句不是很懂。)


20. Learn the business processes.
Being able to spot improvements in the way the business is run is a
great technique for gaining points. You don't need to use fancy
tools; just asking a few questions and using common sense will
serve you well.


了解业务流程。(同上)


21. Don't be afraid to debate something
you know is wrong
. But also know when to stop arguing. It's a
fine line between having a good idea and being a pain in the
ass.


不要害怕辩论的东西是错的。但是要懂得何时结束争辩。


22. If you have to go to your boss with
a problem, make sure you have at least one solution.


问你老板问题时你需要有一个自己的答案。


23. There is no such thing as a dumb
question, so ask it ... once.
Then write down the answer so
that you don't have to ask it again. If you ask the same person the
same question more than twice, you're an idiot (in their
eyes).


问答案显而易见的问题并没什么,但是只问一次。之后写下答案。如果问的太多,会被认为是白痴。


24. Even if it takes you twice as long
to figure something out on your own versus asking someone else,
take the time to do it yourself.
You'll remember it longer. If
it takes more than twice as long, ask.


如果一个问题你自己做会比问别人需要花费两倍的时间,那就自己做。这会使你记得更深。但是如果超过两倍了,还是去问吧。


25. Learn how to speak without using
acronyms.


不要用缩写词讲话。记住它们的全名。


26. IT managers: Listen
to your people.
They know more than you. If not, get rid of
them and hire smarter people. If you think you are the smartest
one, resign.


作为领导,听自己手下的意见。他们比你了解的更多。如果不是这样,解雇他们再雇更聪明的人。如果你认为你是最聪明的一个,辞职。


27. IT managers: If you
know the answer, ask the right questions for someone else to get
the solution; don't just give the answer.
This is hard when you
know what will bring the system back up quickly and everyone in the
company is waiting for it, but it will pay off in the long run.
After all, you won't always be available.


作为领导,如果你知道答案,用适当的问题去问其他人而不是直接给出答案。如果你知道怎样使系统备份更快的方法而其他人都在等,那你也许会自己去做,但是这不是好主意。今后你的空闲时间会变少。


28. IT managers: The
first time someone does something wrong, it's not a mistake -- it's
a learning experience.
The next time, though, give them hell.
And remember: Every day is a chance for an employee
to learn something else. Make sure they learn something valuable
versus learning there's a better job out there.


作为领导,你的手下第一次做错时,不应视为错误——他们在学习经验。下一次,让他们知道什么是地狱。每天都是积累经验的机会。确保你的雇员了解有用的东西而不是认为别处有一个更好的工作。


29. IT managers: Always
give people more work than you think they can handle.
People
will say you are unrealistic, but everyone needs something to
complain about anyway, so make it easy. Plus, there's nothing worse
than looking at the clock at 2 p.m. and thinking, "I've got nothing
to do, but can't leave." This way, your employees won't have that
dilemma.


作为领导,给你的手下多于你认为他能力所限的工作。不要担心他们抱怨,否则他们也会抱怨别的。至少他们不会在下午两点的时候就没事干。


30. IT managers: Square
pegs go in square holes.
If someone works well in a team but
not so effectively on their own, keep them as part of a
team.


作为领导,知人善用。如果某人适合团体工作而单独工作时没有效率,让他做团体工作。


Friday, May 23, 2008

All Heros in Kam Yung 's Stories -- 苍龙逐日 复刻版

此版本仅是复刻版,所有情节,设置等与小小猪制作的DOS版《苍龙逐日》基本一致。
需要下载exe文件和DLL文件放到原目录。
需要kaiu.ttf和consola.ttf两个字体文件。

与原来版本的不同:

没有初始密码;
不能刷武功;
结尾动画不全;
战斗中某些公式与原版不一致;
无防御拐点的设置,所以初期可能比原版要难;
对修改器支持不好;
场景内动态效果有问题,所以屏蔽了;
无大地图飘云效果;
大地图少数贴图有错误;
可能存在未知的BUG;
可以使用鼠标,但是不推荐走路时使用;
可以使用mp3文件代替mid文件作为背景音乐;
可以升级到60;
我私自作了一张简单的图作为标题画面。

2008-5-25
升级时中毒和受伤清零;
更正万鳄岛战斗时跳出;
更正解毒时不显示数字;
更正AI在使用面攻击类武功的错误;
更正物品选单光标在选单外面的错误;
微调速度。

2008-5-27
更新抗毒效果;
更新了修改事件的效率;
重写RLE8绘制子程,从分别绘制改为对基本过程的封装;
用可变记录封装R属性,这可能会降低效率,因此可能会引发未知的bug;
可用FishEdit修改存档;
当名字为某个特殊字串时可获得全满的起始属性。

更正显示状态时防御与轻功顺序错误;
更正离队事件错误;
不再支持mid格式;
更正修炼药品的错误。

2008-5-28
更正大地图某些显示的错误;
更正抗毒过高时中毒值为负的错误;
更正已有此项武功时,可能不能修炼对应秘笈的错误;
更正自动战斗时增加武功级别的错误;
更正品德可能为负的错误;
大地图加入主角动作;
修正某些事件触发位置的错误*;
增加主角走动效果。

【*】:这个是原游戏本身的bug,在修改事件的时候如果修改了坐标,但是并不在当前场景,会导致S文件与D文件中记录的坐标位置不一致,而《苍龙逐日》恰好有数条语句满足这个条件,却导致了正确的结果。
在使用正确逻辑之后,却反而会使某些事件无法触发。

2008-5-30
分辨率改为640*440;
调整部分选单的显示位置;
增加开头和结局的字幕(均是作者原文)。

Font files.

DLL files.

Executable files.

 

image

image

image

image

Sunday, May 11, 2008

All Heros in Kam Yung's Story 复刻测试版


四川发生地震,呼吁大家关心此事。用行动支援我们的同胞。

游戏已经有两个复刻版,分别是SwimmingFish用VB和tianua用SDL制作的。但是现在这两个复刻版都存在着很多不足。其中最大的就是不能支持MOD以及没有继续发展的空间。

此次复刻的目的是用新的技术复刻整个游戏,在某些地方使用新的技术,并且提供对新指令的解释。

图像引擎:基本不会变化,但是文字的显示直接使用ttf字体。
音频引擎:添加对其他音频格式(主要是mp3文件)的支持。
事件系统:对原有指令和扩充指令基本完整复刻,少数难以实现的就不支持了。

下载地址:Click here.

需要合并场景贴图文件,不知道是什么的就到这里下载:http://swimmingfish.ys168.com/。

我不清楚Google的空间是否有流量限制,如果你喜欢的话,欢迎提供转载和分流。但请保留SDL引擎的版权信息。

测试版已经完成大部分功能。还有一些与原版不同:

韦小宝去其他客栈这个事件我嫌麻烦,就让他一直呆在一个地方卖所有的物品。
少数复杂的动画暂时不支持。有些动画可能有贴图上的错误,主要是什么时候有主角,什么时候没主角我还没搞清楚怎么判断。
内场景的动态效果,主地图的飘云效果暂时不支持。
武林大会相关指令基本完成,但是判断是否放好天书这个指令我偷了懒,游戏能正常结束。
未设定需要自宫的物品。
公式和原版并不完全一致,主要是我比较懒。
可以使用鼠标,但是用鼠标走路不太方便。其实这种45度视角游戏并不适合用鼠标走路,但是选物品和战斗时会方便一点。
基本支持全部50指令,包括扩展战斗指令,不包括直接读写内存的两个指令。
敌人的AI很简单,基本是猛攻,我方的也一样。自动战斗的时候连点ESC可以回到手动状态。
背景音乐放弃了对原有格式的支持,改用MP3格式。把你喜欢的音乐放在游戏目录里面,命名为1.mp3,2.mp3……即可在游戏中作为背景音乐。
标题画面实际上是游戏目录下面的open.bmp文件,你可以自己编辑,但是注意给文字留出位置。
可能存在未知BUG,所以你的重要存档就不要用它了。

注意事项:

此复刻版使用SDL作为基本引擎,因此压缩包里面有很多SDL相关的DLL文件,有些可能是无用的。
默认使用的字体:中文是标楷体,英文是Consolas,压缩包里面已经包含了这些字体。文字的位置是特别对这两种字体优化的,可以换成其他字体,但是位置会有些问题。
使用effect.bin,leave.bin,levelup.bin,match.bin保存游戏中的列表。实际上是把z.dat中的对应部分复制了出来。这4个列表均对应原版。
输入姓名时请直接输入繁体中文。尽管游戏实际的内码是Unicode,但是存档文件中仍是Big5码,是没有简体中文字符的。
虽然有5个位置可以存储进度,但是一开始读取进度4、5会出错。你需要先把进度保存到这两个位置才能读取。

截图:

image

image

image

image

《笑梦游记》系统增强补丁


看状态能看到更多,可以显示物品的属性,伤害公式略有调整(可自行修改)。

仅能用于1.11版,置于游戏目录直接运行z1.exe即可,推荐使用dosbox。

可能有音效文件的bug,但不确定是否存在以及产生原因。

 

Click here.

Thursday, May 08, 2008

All Heros in KYS 复刻计划


计划是使用新的引擎复刻整个游戏,包含对新添加指令的支持。

贴图系统保留,增加对其他格式的支持;
音频系统重写;
战斗系统基本保留;
指令系统保留,可以扩充;
文字系统直接使用TTF格式。

这是对话的效果,使用的字体是标楷(好像英文标准名是DF-Kai,文件名是KaiU.ttf)。

image

Thursday, May 01, 2008

稀疏矩阵



从生成到计算,有很多无聊的记法。CG,GMRES都可以试试,但是没有一个效率高的。


Thursday, April 24, 2008

改变游戏中的字体

游戏里面用的字体文件有两个:font3.e16和font3.c16。第一个是128个ASCII字符,点阵大小为16*8;后一个为BIG5码的汉字,点阵大小为16*16。

使用工具可以将系统中的字体转为游戏可用的格式,但并不是所有字体都合适。一般字体在9pt时如果仍能够保持锐利,那么在游戏中就会有比较好的效果。最常见的这类字体就是细明体和宋体(楷体GB2312也可以,但是繁体字库不全),如果你知道其他适合的字体或者好的建议,欢迎告诉我们知道。

这个是更换了英文字体,英文字体最好是等宽的:

z_048

这个是把原来的细明体改小了一号:

z_050

这个是标楷体,效果很模糊:

z_043

这个是微软正黑,也不怎么样:

z_042

这里是我生成字库使用的工具和一个教程。

使用ts2.exe,选择字体,要选择台湾中文(Big5)。

clip_image002

调整好汉字的位置,然后高度改成32,把“上下”加上16。

clip_image004

点“生成”,即可生成点阵字库。

因软件是未注册版,所以每个字都会多出一个斜线,而使用32*16的尺寸可以使汉字刚好避开斜线。

clip_image006

使用这个程序会将字体上半部分去掉,生成font3.c16文件,可以直接用在游戏中。

这类工具的算法都很清楚,但这个软件注册费的性价比实在不怎么高,何况我只需要其中的一小部分,而不注册的话生成的字会有删除线,所以我想了一个办法避开删除线。

google的审查好严,居然禁止这个文件,可能是文件中含有木马。

Tuesday, April 22, 2008

多重循环的代码



像弯月一样。要是连续写几个,就像苏州的锦带桥。


Sunday, April 20, 2008

有关“插入事件改写系统”的碎语


这个post不是什么技术相关的,大概算是一个无聊碎语的集合。

我以前编写过一个新的伤害公式,那时是完全用十六进制代码写的,首先将汇编代码译成十六进制代码,call和jmp指令的地址还都要自己计算出来,非常麻烦也容易出错。

使用物品直接触发事件是谁最早提出来的已经搞不清楚了,最早跟我提这个的是Guest。战斗中调用事件其实也不知最早是谁的主意,总之用事件修改伤害公式也是很早之前就有人想过(但那时想怎么改,直接改汇编代码么?那样还是有很大限制的)。

用物品调用事件,就可以任意增加大地图事件了。那么自然就会想到,战斗中能不能调用事件?如果能的话,需要什么样的事件?

我看反汇编的代码时,发现有一个子程似乎是控制选择攻击目标的,这就是有了战斗指令的最早构思。最开始是想有一个选择目标的也许就够了,但后来越想越复杂。

最初只构思了法宝,后来发现也许只有法宝还是不够的,于是又增加了武功调用事件,这样有些功能就必须直接操作内存才能用,但是这时已经是战斗指令搞出来一个多月了。所以从0.10到0.20,指令没有增加,却有了非常大的变化。

后来所想的就是找许多适当的位置插入事件了,这样系统许多功能就完全可以自定,随作者的想法了。

不过我自己倒是没开放太多地方,z.dat文件里面的空间其实还有很多,插几十个事件还不成问题,但插在哪却要好好想一想。如果选的地方好可以事半功倍,选的地方糟糕就有可能没有效果甚至导致游戏功能出错。

无论如何,“插入事件”总算开了个花,希望能看到结果的那天。

Thursday, April 17, 2008

Vista SP1



看来不错。


Monday, April 14, 2008

扩展战斗指令0.20

因为目前对战斗的了解已经比刚开始计划战斗指令时深入得多,所以此次对战斗指令进行了大规模改写。

战斗指令的变化非常大:

28:这条指令用处不大,但暂时保留。
29:判定人物回合是否结束的方式有所改变。为简化武功事件增加可以跳过选择目标画面的选项(4.15)。
30:取人物R序号改为取人物战斗属性,可以获取更多的战斗属性。与原指令不兼容。
31:取人物敌友信息改为写人物战斗属性。原功能用30指令(偏移2)代替。此指令实际上在以前的版本中是错误的。

44:播放效果增强功能。
45:闪烁改为显示数字。
46:显示人物属性改为设定效果层。原功能需用49指令代替。
47:改变人物改为回复人物静止贴图。原功能用31指令(偏移0)代替。

49:不变。

此外对上个版本中插入事件导致战斗跳出的错误作了修正。添加了几个新的插入事件。
说明文档中的示例有些是较早时编写,所以某些位置可能并没使用新指令,而是直接写内存。在说明文档中附带了一个反噬效果的实现方案,可以作为增加状态效果的参考。

如果您已经开始利用原来的指令编写一些事件,那么我为此次更新对您造成的不便表示歉意。

此版本仍是测试版,主要是某些事件插入的最佳时机尚不完全确定。


4.16,增添载入进度预处理事件,测试时使用KG的改调色版指令基本成功。版本号未更改。

BattleKDEF0.20.zip

Friday, April 11, 2008

扩大队伍人数?

理论上可以把队伍的人数扩大一倍,就是把以前读字的语句改成读字节。

问题是人的名字可能没处放,战斗需要改得多些,不一定真的有用。

z_032

Sunday, April 06, 2008

反汇编z文件


我以前找到的反汇编结果可能是游泳的鱼最早注释的。

画面引擎,声音的部分基本是不可能修改的。文件后段有一大堆子程根本不知是什么鬼东西,有可能是编译器自己加上去的。

比较清晰的几个地方是:

  • 系统菜单;
  • 进入场景;
  • 事件系统;
  • 战斗系统。

这些其实也是大家最关心的几个地方,还有比较重要的是主角在大地图上行走的部分,但这个似乎没什么好改的。

Saturday, April 05, 2008

49号指令应用:“从队伍中选择一个队员”选单


下面的指令片段可以生成一个选择队员的选单,在制作新型装备的时候可以用到。


;Kdefnum=1023
50 0 0 2 0 0 0 0 ; 50(32):变量赋值 [X0]=2
数字2改成所需选单的样式,含义见下面
50 49 8336 2 0 1 0 0 ; 50(32):调用任意子程
50 48 0 1 0 0 0 0 ; 50(32):调试指令,显示变量 [X0] -- [X0]
0 ; 0(0)::空语句(清屏)
-1 ; -1(FFFF):事件结束

 

此事件直接调用游戏中22090子程,该子程有一个自变量,表示选单的样式:

0-医疗,1-解毒,2-状态,3-装备,4-修炼,5-使用,6-离队。

返回值为队伍内序号,范围是0~5,如按了esc键,返回值为-1。

如果需要一个通用的选单,建议将原版中“要谁离队”4个字改为“选择队友”,需要选择队友时即调用6号样式的选单。尽管真实的离队选单也会有相同变化,但不会产生误解。

49号指令应用:任意转换场景


目前转换场景多是用动态改写跳转口的方法。经测试,以下指令可以比较方便地改变场景,工作量小了许多。
这里没有改写大地图坐标和场景内坐标。


;Kdefnum=1022
  1 0 0 0                        ;  1(1):[xxx]说: 小兄弟,我们现在去桃花岛。
这句是对话指令,无关紧要。
  50 25 0 0 10590 29 75 0        ;  50(32):保存给定地址数据 [1D-295E+0]=75(Int)
75为桃花岛的编号,根据实际需求修改。
  50 25 0 1 -27969 2 195 0       ;  50(32):保存给定地址数据 [2-92BF+0]=195(Byte)
  50 49 -28218 2 0 1 0 0         ;  50(32):新指令,暂时没有解释
  50 25 0 1 -27969 2 233 0       ;  50(32):保存给定地址数据 [2-92BF+0]=233(Byte)
  0                              ;  0(0)::空语句(清屏)
  -1                             ;  -1(FFFF):事件结束