RSII 进度

Steam模块需要再写。 Preference Editor这块需要给OpenFileDialogue怎么打开文件安排一下。然后是各处的File.Copy,File.Delete操作加上try{}catch{} block,因为不曾验证过文件存在性。Bloom模块需要review一下,因为没搞明白启动方式。

全部写好后需要进行一个测试。

 

功能测试通过后,回过头来处理界面透明以及窗口移动的问题。 还有就是将两个自定义控件的dll给弄到exe程序本体里面去,尽可能不要多出文件来。

 

一切都OK后,看看能否加入背景音乐的播放。

To do list of near future

1.Java:

1.1.Read Thinking in Java. I do not know it will take how much time, but it must be done.

1.2.After finished reading Thinking in Java, study Java Servlet.

1.3.Read the source code of Spring, ibatis and mina.

 

2.C:

2.1. Study C again, using K&R.

 

3.Oracle:

3.1.Compile the kernel of Gentoo and make the system to be usable.

3.2.Install Oracle in Gentoo. Install and uninstall it many times until get familiar with this.

3.3.Learn and test, with the book of Expert one on one.

3.4.Implement my achievements to producting environment.

 

4.Programming

4.1.Finish the launcher of RSII as soon as possible.

4.2. An system of automatically generating daily report and weekly report.

4.3. Read through the code of CallCenter, have a main idea of writing documents in detail.

4.4. The new system of SMS.

4.5. TDD and Design pattern.

4.6. Think more.

 

5. Physics

5.1. Restart the daily practice of press-up.

10 ways to show you're a programming rockstar

HOW MANY PROGRAMMERS DO YOU KNOW WHO ARE ROCK STARS? WHAT CHARACTERISTICS DO THEY HAVE?

It seems nowadays that programmers are a dime a dozen, but how do you pick the best programmers from the rest of the crowd.

It's not just about coding (although that is a big factor). It's about building your skill set over the years and nurturing them so you can stand out from the programming "collective."

What characteristics makes them stand out? Are they easy to get along with? How long have they been programming? Are they teaching you things you never knew were possible? Here's how to find out if you are a programming rock stars!

  1. Master your language and tools. Whether it's Visual Studio, Eclipse, or even Aptana, your programming tools should be second nature to you when developing that next web application. Just like a plumber or carpenter, if you don't have the proper tools, you won't get the job done right. 
     
  2. Enhance your tools and environment. With that said, even though you've mastered your tools, always strive to find ways to enhance your environment. This may include plug-ins to Visual Studio or Eclipse or a code generation tool that works along side your environment. If you're not looking for better ways to enhance your productivity, you may be working yourself into an early grave.
     
  3. Research new technologies. While your primary language may do everything you need, make time to research your craft and experiment with new frameworks that wrap around your existing technologies. For example, while programming in web forms with C#, I heard about a new framework from Microsoft called MVC. Since I've started working with MVC, I've been programming in MVC for more than 2 years now and I haven't looked back or regretted my decision since.
     
  4. Leverage your existing code you wrote. Programmers who write code and then immediately disregard it are missing out on the most exceptional tip on this list: start building your library of routines and techniques. If you are in a corporate environment, yes, you will have a corporate library to pull from for your projects. If you are an individual programmer, yes, you will have your own collection of routines or libraries that you can use in your "outside" projects. As the object-oriented saying goes, the routines are reusable.
     
  5. Automate like crazy. If you've been around the programming block for a while, you know that there are always quicker ways to accomplish certain tasks. It's now getting to the point in this industry where if someone asks you for a web site, you can build one relatively quick. Then they start asking for features. It's the features part that makes the difference and slows you down.
     
  6. Perform proper analysis. New developers always shoot first (start coding) and ask questions later. Take the time to analyze the project and ask as many questions as you can. The more questions you ask upfront, the better your ability to complete a more thorough and clear design of your application.
     
  7. Perform Unit Testing. Along with preceding your coding with proper analysis, always finish your coding by performing unit tests. This not only tests the quality of your code but will also let you know when your system fails on regression testing. Unit Testing should be the "checks and balances" of your programming.
     
  8. Extend your reach. Most developers keep to their code and that's all they do. Break out of your comfort zone and read up on usability studies, how to document your code better, and/or using better design techniques. Expanding your skills into other areas will do three things: 1. Make you more visible to other people; 2. Make you more valuable to others because of your thirst for knowledge; and 3. Provide you with more opportunities than just programming.
     
  9. Communicate effectively. This is in regards to project management, coding, documentation, and impromptu meetings. If you can't explain an extremely awesome cool coding technique to your peers or communicate why a particular feature shouldn't be in the project to a project manager because of a time constraint, you may need to work on your verbal skills instead of your coding skills.
     
  10. Make time to assist others. You will seem as a definite team player by taking the time to help a fellow programmer in need. Help them understand a new concept or technique that is unclear to them and they will be grateful for the help and see you as a definite resource and go to guy.

As you can see, there are a lot of factors to take into account when deciding who is a programming rock star and how they will be perceived by other team members or by clients.

Come to think of it, you could even use some of these factors for general interview questions.

Discussion and reconsideration

Had a discussion with a classmate of University. I shall admit, it is a great help to make me get out of the confusion about the career in future.

 


He said:
如果要想在技术上一直做下去,然后也想做的好的话  
在设计的思维上很重要
做技术一路下来,你会用到很多语言,很多框架
如果来一个新的就按找新的东西一路学下去会学的很慢
新技术跟起来也会很费力
所以你要学会用自己的思维方式来学一门语言或一个框架
一般一个语言或者一个框架的出现总是为了解决一个或者一些问题,而解决这些问题的方法有好多种,它只是选择了其中的一种
 
I:
你刚刚说的给了我一个启发
我之前一直纠结于到底是做个Java程序员呢还是做个Oracle DBA呢还是做个SA呢还是 去做 操作系统开发。
 
He:
我现在一般习惯于以解决问题的方式来思考一个框架或一门语言,感觉比以前在理解上要深入一些
嗯,然后现在是什么
 
I:
现在我觉得, 我们是工程师,是解决实际问题的。那些语言啊框架啊或者别的什么,都只是采用的解决方案不同罢了
不需要分的太清楚
 
He:
嗯,是这样的,他们只是工具
 
He:
不过话又说回来,你要用好这些工具,就需要对它们有足够的了解
 
I:
工具是不同的,工具上面的思维是相同的。把握住了解决问题的思路,采用什么样的工具完全就看哪个自己用起来最顺手
我需要打的基础就是精通我需要的工具
 
He:
不过当你从上层往下看的时候,你看到的东西会全面一些,这就是看问题的角度不同
另外一个,我现在的想法是,要精通工具并不是一味的看工具本身
因为工具太多了
看不完的,所以要去钻研制造工具的基础
 

 
I have a lot to learn, so having a method to learn quickly is the urgent priority. Gather information, fetch knowledge and make it be my own. This is what I need to think about.

Reckoning

 

Aspects of Current Work
 
1.Oracle Database Admin
2.Oracle Database develop
3.Java develop
4.Server Admin
5.Web Front end develop
 
Is that all?
So why bother?  What I should do is only 5 things.
 
The majority of maintaince is dirty work of Java. But the vital one to make improvements is Oracle. Thinking in Java, and Expert one on one.

Something needs to do and some thinking

 

1.Personal daily report:----Any System change must be recorded. Any bugs must be recorded. Any exception must be recorded.
 
2.Software develop: ----Maintaince one git repository for each project AS Master. Every change build a branch. After test, merge it into Master then tag it and release.
 
3.Software release: ---- Try to use Git or any other branch-cheap Version Control Tools
 
4.Document Build: ---- Basicly include Needs, Structures, some details.
 
 
 
extension:
 
@1: An Online Check System. Every day generate a todo list with blanks. Just fill in blanks after daily system status checking. It should include at least 3 modules: Todo list with blanks; Todo list setup; User control.
 
@1: To record any changes usually we use Changelog. But changelog just put everything in the order of time/version. If we want something, it is difficult to find it from a long long log list. We can mark "important" or some other signs but the importance of the change itself to system is changing. I need to find a way to maintain the system easily, both programs and documents.
Record a change and update the main document at once may be a solution. But most of the time we do not look at the document because reading the full and accurate document costs too much time. Instead, we just follow our memories. "I remember it is ..." How to synchornize the snapshot in our memories with the real system?
 
@2:Is there any tools to revision control a database?

时髦的技术

UI设计,绝对是现下最时髦的技术。一样再古老的东西,经过好的UI设计包装之后,也会让人有耳目一新的感觉。

目前的UI设计,有几个流行趋势:

1.动态平滑;

2.自由拖放,挂靠;

3.嵌套

 

在色彩上,带有质感的大色块给人一种精致而大气的感觉。

Feeling down

I want to do something, to finish my left two projects or just to do something fun, but I can not...  It seems so tired, that I have no energy, no power to do any thinking, even I am not able to do any reading...

Tomorrow is Wednesday. Oh no, Wednesday is today now. I must complete two projects this week. A WebSite built in python with django, and a launcher of a mod of Rome TotalWar. Neither of  them is easy to deal with. I am new to python, and new to C#. I want to try my best, but it seems I will fail, definitely... And I am upset.

Twitter, xiami, clanlong forum, linuxsir, and other Tech websites... I am still trying to avoid the real difficult part, by nonsensical net surfing. That is the way how I fail, just as usual. So many years and so many times, even I know that clearly, still I fail in that way.

 

I am still watching other's life, I am still waiting for death. My own story is still void and null...

WTF am I doing?!!!!

今君が好きで

"Looking for members, Upper Blackrock Spire need."

--"Hey! Need a Rogue?"

--"Nah."

--"Of cource you don't. Who needs a rogue? The most nerfed class in this game..."

"Wait wait wait. You say rogue is the most nerfed class in this game?"

Above is the beginning of World of RogueCraft: Episode I, the third video of this series produced by Mute. Mute is a famouse warlock but  showed excellent rogue skill in this video, in order to prove what imbalance is. Unfortunately, the imba still exists in the game of World of Warcraft, even those bullshit designers give up to make improvements.

One of the background music in this video is Gun N' Rose' s Welcome to the jungle, impressed me much.

 

These days, there are always  lines sounding around me. Games, videos, movies... all kinds of. Sometimes run out of my mind, and I recite them.

 

"Today, we are not only here to defend the mighty capital of ironforge; we are not only here to show the world what the alliance is made of. Today, we are here, to claime the revenge for the ones that had fallen. And I  tell you, do not fear death, for your names shall live in eternality! So I ask you, Will You, Follow Me, Into the Legend?! Then Follow Me!

-- the speech before the final war, by the Alliance leader, Drawf genernal Serphentos, Tales of the Past II

"Did you think an agent of the Lichking would be bested in the field of your pathetic little tournament? I've come to finish my task."

--Black knight,  Tournament of Crusade Trial.

 

 

Something bothered me around. I have lost interests to continue this text...

2011

时间过得很快。20年前不是很记得了,10年前却还历历在目。这10年的真正的青春岁月是一晃而过啊。

可在工位在我身后的大我十岁的同事眼里,我依然是年轻的,有着众多年轻人的特质。的确啊,这十年就跟没过一样,我好像还是只有十六岁,而不是连用十六进制也比“16”要大个3的年纪。

如果什么都不去想的话,如果一切都能永远如此下去的话,倒也挺好的。可世界终究是会变的,我已经缺失了十年,每一日的钟点都似乎在催促着什么,让我再也淡定不了。

年少的时候总会憧憬着未来,各种各样的。因为想想并不费什么力气。可真当到了该为某个未来费力的时候,却再也不想了。各种各样的未来,真正属于我的只有一个,选择什么样的未来呢?没有Save和Load,也没有重练小号的机会。也许是这样的选择太过重大了,所以不由自主地逃避了,尽可能地不去考虑这样的事情,埋藏着埋藏着,直到过期的那天么……

我真心希望“现在就开始,永远不会晚”这样的说法能够应验。忆往昔,不堪回首。所以就不忆了 吧。忘记过去意味着背叛,那叛就叛了,还是砍断了的好,省得心神不宁的。也不要再等待明天了,等啊等,等死而已。从现在开始,从现在开始,想到什么就去做吧,不要犹豫了。成功或者失败,有那么重要吗。要的只是一个中间的过程罢了,反正不论做什么最后的结果都是一样的。

 

这几天的状态还算挺好的,注意力集中地写了不少东西。兴趣依然广泛。结合当前的状况,挑选个几样作为未来的一个方向吧。

1.主要方向:Oracle DBA。 之所以是这个,一方面是听说钱多,一方面是因为目前跟这个关系最紧密。不过老实说,这事情责任过于重大,一着不慎就会闯下大祸。而且是个要“时刻准备着”的岗位,会严重影响生活质量。在技术观点上,也跟我的理念所冲突。我崇尚完全控制,自主开发,而不是被一个商业公司牵着鼻子走。公司如果是Google也就罢了,偏偏还是名声不咋的Oracle……

2.脚本语言。主要是Python,Perl系列。对这些小巧方便的脚本语言一直很喜爱。可以经常做点自己喜欢的东西,也可以用来当作很多程序序列之间的粘合。语言轻松自然,写起来就像是一种很好的休息。

3.Java。 虽然并不喜欢Java,但是现在必须的,必须要掌握与精通这个。恐怕还会是安身立命的根本……

4.操作系统。 这个是兴趣的所在,却不知道从何开始。一直都只是个User而已,偶尔算个不称职的Administrator。将一堆机器变成思想的载体,逻辑电路之上,当属操作系统为根本了。这就是当年选择进入这个专业领域的初衷啊啊啊啊啊。

5. Web前端。 恐怕也会是安身立命的根本……虽然并不喜欢,甚至厌恶编写网页。但是长期的Chrome使用,越来越漂亮与强大的各种Web程序,似乎是整个行业发展的一个方向?

Git的ignore

开始使用git。对着在线文档读了几天,一边还试着用。今天要提交一份有.svn文件的工程到git里面,想把.svn给无视掉。我是用命令行方式操作的,一开始很自然地想到 是否可以在 git add XXX 后面跟个什么选项什么的把.svn给exclude掉,或者是否可以用正则 ,比如 src/*!(.svn/*) 这样的。结果发现正则是不行的,不论我用哪种shell的正则方式。查了下 git add的命令手册,也没发现有exclude的选项……于是接着搜索,看到相关讨论还不少,stackoverflow上面的确有点不错的料。仔细看了会大致上了解了,得到.git/info/exclude里面去写,或者在.gitignore里面写,或者在core.excludefile里面写。 那么写就写吧,于是切进exclude文件,直接加进了“*/.svn/*”,然后先git rm -r --cached src/ 然后git add src/, 然后git status

。。。

居然不行!.svn目录居然还存在!!难道是匹配错了?我又改成正则的方式,试验还是不成!再改别的一些匹配方式,都不成!!

这让我很郁闷,只能接着搜答案,读文档。

 

在仔细地读了一遍gitignore的manpage之后,总算搞清楚了。它的匹配方式根本就是wildcard,并且*不表示“/”,也就是说.svn/*只能囊括.svn下的一级文件,子文件夹根本无能为力。同样的*/.svn也有毛病。正确的匹配方式应当是直截了当干干净净的

.svn/

文档建设

作为维护工程师,似乎到了做些本职工作的时候了。

现在的情况是,什么文档都缺。不论是开发用的还是测试用的,更别说维护阶段使用的了。在这种状况下如果直接离职的话毫无疑问是不负责任的。当初我来的时候得到的交接文档几乎等于没有,以后我走的时候绝不能让历史重演,否则我的存在意义就没有了。

首先是要整理所有的源代码。现在各个项目的源码因为时日久远,经手人众多,经历了太多改动,各种适用的不适用的临时的非临时的都混杂在一起。需要进行一个梳理,将能砍的都砍掉,能优化的都优化掉,该添加注释就添加。实在垃圾的没法忍受的就重写。在版本管理上,公司用的是SVN。我打算在我本地开始使用GIT。本地电脑和代码也需要清理,规范得从己做起。

其次是开始撰写各项目的维护文档。第一步是相关程序的说明,从体系结构到性能需求。第二步是业务说明。第三步是维护的日常工作。

再次是通过各种方法将维护工作简化再简化,通过各种脚本和程序的配合,让一般性的日常事务都能交到运维组手里去。

相关的文档内容准备用wiki的形式发布在内部网上,因为经常会更新。wiki会是目前来看最合适的形式。

對NVL(),Decode()等幾個Oracle函數的猜測

今天有個需求,要在存儲過程中取出當天的一些配置進行比較。但是這個配置是每天輸入的,那麼當尚未輸入的時候,這個比較會報出“NO_DATA_FOUND”的錯誤。解決辦法當然也有,在之前做個判斷或者在之後的exception裡進行一些操作都可以。但是兩者都會有更多的語句要寫,讓我很煩躁。我於是想用NVL來實現。

select nvl(replyexpected,'1') from USR_DFW_SCHE where SendDay=trunc(sysdate)

今天的配置已經輸入了,自然這條語句可以正確取出值。為了測試尚未輸入記錄的情況,我將sysdate改成了sysdate+1,也就是:

select nvl(replyexpected,'1') from USR_DFW_SCHE where SendDay=trunc(sysdate+1)

結果返回的不是我預想中的'1',而是什麼也沒有。

採用Decode()函數也一樣:

select decode(replyexpectd,NULL,'1',replyexpected) from USR_DFW_SCHE where SendDay=trunc(sysdate+1)

結果無任何返回。

將語句分解,在當天記錄存在的情況下,select '1' from USR_DFW_SCHE where SendDay=trunc(sysdate) 返回 ‘1’,而 select '1' from USR_DFW_SCHE where SendDay=trunc(sysdate+1) 這樣連滿足條件的記錄都沒有的查詢,則不返回任何結果。

由此,我想大致可以推斷Oracle的NVL()和Decode()函數的內部實現應該是這樣的過程:

 

 select A  from TB_C where cond=D;

 if (A is null) then

    select B into result from TB_C where cond=D;

   return B;

end if;

 

 

Google与Facebook也开启争端了

报道原文在此

由头还是数据导出的问题。前几天我打算导出163的邮件到Gmail时就发现了,曾经可以导出的,现在被163给屏蔽了。但是Gmail依然可以导出到163。这次跟Facebook的争端也一样。Google要求Facebook允许用户导出好友列表而Facebook不愿意。但是Google并没有因此而如何反制,依然故我的坚持着。“As passionate believers that people should be able to control the data they create, we will continue to allow our users to export their Google contacts”。

这也许可以称得上一个伟大之处。不过考虑到Google是靠搜索引擎起家的,它所坚持的“Open”原则多少还是有自己的缘由的。

全面倒向Google

在尝试了新版Picasa之后,深深为之折服。居然图像识别到了这样强大的地步。

从今天开始,全面倒向Google。浏览器用Chromium,输入法用谷歌拼音输入法,谷歌日语输入法。侧边栏不再使用windows的,改用谷歌桌面。邮箱正式启用Gmail。图片管理器使用Picasa。并且这些都通过Gmail帐号共享设置。

服务器未能识别 HTTP 标头 SOAPAction 的值

前几天跟金华方面做一个WebService接口,对方是.NET的,我是Java的,用cxf从wsdl中生成代码,然后直接调用.非常顺利.

因为开始的是个测试用的接口,于是昨天那边换了个正式的地址,据对方本人说,他只是把一模一样的程序换了个地方部署罢了.然而我拿到wsdl然后生成了新的接口Java文件后,就死活不成了,一直报错:服务器未能识别HTTP标头SOAPAction的值:XXXXXX

在网上查了下,大多说这是Java作为客户端连接.NET的服务端时出的问题,然后给出了两种方法.一种是.NET上加一个一句话,一个是Java这边加一起.我折腾了很久,两边都加上试了试,发现均不起作用.

今天接着搞这个问题.在修改了多次代码后,出的错误终于开始显现出区别.最后,在一条报错日志中我找到了我设定的CXF在Spring中的配置文件.打开一看,恍然大悟.

 

<jaxws:client 
id="clientSoap" 
address="http://XXXXXXX" 
serviceClass="xxxxxx.ws.CDMASMSSoap"/>
 
这个位置的address值,我用的依然是之前那个测试接口的,并没有改过来! 当我改成现在用的地址后,马上就正常了.
 
看来引起"服务器未能识别HTTP标头的SOAPAction的值"这个错误的可能原因还得加一个:地址配错.

Beyond the Great Fire Wall, we can reach every corner in the world.

五月份的时候翻出去在twitter上建了个号,然后顺便就发了标题的这么一句话,句式仿照我国第一封Internet的Email,不过多加了个Fire罢了。以示讽刺。

五月份之后转眼又很多天过去了。昨天无意中点进了Autoproxy的网站,然后不知道为什么心就痒痒了,今天于是又从Minch那弄了个FG,并且设置了Autoproxy,开始实现无缝翻墙!

有土鳖,2008年一别,又大变样了啊。这速度比当初是好得多了。播放器也换了个好得多的。看来Google实力实在是强劲啊。脸书就没去注册了,没工夫去弄。晚上在twitter上倒是从Minch的Following里挑了几个看上去有点意思的一起follow,包括著名的德艺双馨的Aoi_sora哦~~

是时候Thinking in Java了

去年初学Java时看这本书,看得吐血…… 完全不知道在说些什么。现在一年过去了,对Java多少也不再那么陌生了,能写代码,能改代码,还能应用框架,只是总觉得自己基础不扎实。是时候研读下这本书了吧。顺带着还需要看看GOF的那本设计模式。

前几个月的Oracle学习,因为上个月写程序的关系,又给停掉了。可是时间不等人,不管我学没学好,使用的时候马上就要到了。我的学习效率似乎太低了点,并且过于无序随心所欲。

不要再想东想西的了,专注一点吧。弄通一个是一个。Java,Oracle,PHP等脚本语言,这几个是当务之急。

标题党真多

订阅了 The Code Project 和 InfoQ 的电子杂志,于是邮箱里基本上每天都能收到几份. 浏览了一下,基本上每份都有一些吸引人点击下去的标题.可是每次读完文章内容后差不多都会大呼上当.完全就是标题党. 以为有些什么真知灼见,结果都是些废话.

"iPad as the new Flash",下面还有一行小字:"Never have so many embraced a great product for exactly the wrong reasons". 我以为这篇文章会说些iPad在技术上的不足之处,没想到全文都是在说些付费啊对传统出版业的冲击啊之类的东西.让人一阵阵的恶心.

"Desktop Linux: The Dream is Dead", 我以为它能说些什么不一样的东西,结果全是现状的罗列,主要观点无非是说在Vista,这个Windows近期最弱的时候Linux都不曾跃起,现状Win7已出,Linux再无机会了.然而这个观点却一直不进行论证.文章最后还提到了移动平台,提到了Android,大意是这个将会是Linux在大众应用上的方向.我所感到恼火的是,这个标题让我以为这会是一篇议论文,完了是篇说明文...

"Programming is for Stupid People",这篇文章是标准的标题党!一看题目,我很自然地产生疑惑,难道不编程才算聪明人?于是点过去看文章,结果完全不是这么回事.它只是在说OO比所谓的"Functional"语言更简单,需要记忆的东西更少,更适合不聪明的人用.完全是篇正确无比的废话.毫无营养.题目里的Programming其实是亲自编码的意思,说的是自己亲手写的东西比Library更容易记住.我就毛了,尽会取些耸人听闻的名字!

字符集和编码

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。 开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20以下的字节状态称为"控制码"。

Read all