Technology and Fairness

I read an article about Craigslist and found a particular opinion very interesting. Here is the quote:

Universal search subverts craigslist’s mission to enable local, face-to-face transactions; it increases the risk of scams and can be exploited to snatch up bargains, giving technically sophisticated users an advantage over casual browsers

How interesting. Many Internet and new tech application tried hard to make things easier and more convenient for people, but in a marketplace like craigslist, that convenience and ability to “snatch up bargains” is not necessarily a good thing. By giving the power to a small group of people actually hurt other people.

Hospital Reservation System

We had a Shanghai Medical Card (issued by a public service platform 91985.com), and by paying a small annual fee, you can make hospital reservation online. It is extremely convenient for us, because it is so hard to make a reservation at the hospital gate (I talked about the long lines in this article Hospital is Badly Needed). When we make the reservation with a click of mouse to directly go to the Zhongshan Hospital nurse station to pick up our number, and by pass the lines to directly see a doctor, many others asked me where I got the ticket, and I taught them to use the website. I didn’t think too much about it when I enjoyed the “benefit of high-tech”, and wondered why other patient would rather spend 8 hours to wait in line instead of going online.

Inspired by the craigslist’s approach and seeing the long line myself, I now feel happy that Shanghai has forced the online reservation system to discontinue its service. It is not about application of new technology, it is about fairness in this society.

How Technology can Solve Social Problems

I am not anti-technology and anti-Internet person (look at my professional life!), but we can either let technology solve the root cause of the problem or just make a workaround to create unfairness.

In the hospital example, the key problem is the high demand for doctors vs the very limited supply of resources. If technology can solve this problem (more efficient patient handling, and diagnostic), that is great. When this is still the biggest problem, and it is getting worse, to allow some people like myself who can use Internet and know the trick to make reservation does not make sense.

Many people complained about there is no online train ticket reservation system. I believe it is partly because of this reason. When there is more supply than demand (there are just few days in the year), that makes a great sense (just like the airline industry). However, in times like Spring Festival, how can it be allowed for someone to make reservation online with 5 minutes to snatch those tickets, while millions of others waited in the train station days and nights but still cannot get a ticket?

Money and Fairness

We just talked about technology. Money is the other factor that can brake the fairness.

If a person has the money to afford a Rolex watch, it is OK, since that is part of the fairness of this market economy. It does not revoke other people’s right to buy a cheap watch.

In the race for the same social resources, like education, and healthcare, if someone can pay more money to get to the SAME hospital or the SAME school, that breaks the fairness. Again, in this case, I don’t think there is any problem if someone can AFFORD a private school, or private clinic, since their money helps to DEVELOP social resources, not SNATCHING from other people’s hand.

What do you think?

MP4 is Cheap

I am not a big fan of MP4, or movie or music, but today, Wendy surprised me with some good hi-tech toys – the MP4 players that have been popular in the market for several years in China.

Our favorite is a MP4 player with many functions – Mahdi. It has 4GB of storage (many has much bigger than this), and can play HD MP4, display pictures, play music and record sound. The screen is very big – like two typical mobile phone combined (I mean the size of two phone, not their screen). The price is 299 RMB (40 USD). It is not bad at all.

With the cost of LCD and chip/processing going down, you can easily spend several hundred RMB to get a pretty decent player.

The usability is terrible, compared to iPhone or iPod, but on the function side, comparable!

The next big question is, when the Chinese manufacturer start to work on the design and software to leverage the cheap hardware.

Review of Selected Demo by TechCrunch

Isaac shared a link to ideasfactorychina mail-list: TechCrunch » A Taste of DEMO 2006. I posted back my review of several demos. According to Michale, “70 companies gather at a hotel in Phoenix, Arizona to compete head on for our attention. $15,000 buys you 5 minutes in front of 700 people, and a chance to make history.” The fact of how expensive the 5 minutes is sounds interesting already.

Review of Selected Demo by TechCrunch

Credit: The demo was quoted from Michael Arrington‘s TechCrunch.com.

Table of Content

Online Storage – Giving a URL to an object

I don’t know exactly how Zingee works. My guess is, it turn the client computer into a server, or use some kind of P2P technology. It is impossible for them to load the files into their web server, since they have don’t limit the size of the file.

The idea is simple. I am more interested in the idea to assign a URL to something that does not really exist on the server (in Zingee.com’s case, a file in users’ computer).

What if someone can assign a URL to physical object? For example, if someone can assign a URL to the lamp on my desk in my read room, I will be happy. Then I can click the URL and turn the lamp on or off. This requires some physical connector to the lamp from an Internet-enabled PC. We don’t have these kinds of device handy yet. So Zingee.com is smart to assign a URL to someone in an Internet connected PC.

Making Books – Combining a Traditional Business with a New Customer Base

http://www.blurb.com/learn.html

In China, there are enough printing companies. In China, there are enough bloggers.

How to match the two can be a big business. The problem is, the entrance barrier is not that high – it is the common problem for many businesses that has huge demand. It is something like restaurant business.

They start with downloading software – a good way to turn visitors into customers. Since it is free to create the book, people will create the book. Since the book is ready, many people will pay to get it printed out.

Kaboodle – the secret of a piece of Javascript

 

Just as the Del.icio.us Javascript code started a completely new world for social book mark, this small application starts with a piece of Javascript and help people to create their own pages.

The time from a standard Yahoo! Homepage to pages like this was greatly reduced with the spread of Google Adsense program. Now developers know, the more content they create, the more revenue they have. The rule of thumb is, the unique visitor number you have per day is the number of RMB you can get from AdSense program per year.

javascript:var _mg56v=’0.2′;

(function()

{

var d=document;var s;try

{s=d.standardCreateElement(‘script’);}

catch(e){}if(typeof(s)!=’object’)s=d.createElement(‘script’);

s.type=’text/javascript’;

s.src=’http://www.kaboodle.com/zg/g.js’;

s.id=’c_grab_js’;

d.getElementsByTagName(‘head’)[0].appendChild(s);

})();

The site has more than just great idea. They are using AJAX in a very experienced way.

Kosmix – How did they know the categories?

http://www.kosmix.com/search?q=Shanghai&t=vtravel.restaurants&out=travel&lid=leftnav

How did they know the types of information they have? I believe they must have combined the vertical knowledge entered by human, and clustering technology.

P.S. Incomplete reported that Demo China will be held in Beijing this Sept.

P.S. Incomplete’s tag line about other resources is interesting:

screen-incomplete.png

Image in courtesy of Incomplete. (src)

Shanghaixp.com

Wiki is Weak-y

Wiki spam is worse the email spam.

Look at this picture: I receive about more than 10 Wiki author request within every minute and it never stopped since two days ago.

screen-wiki-spam.PNG

The page they created contains link to their porn website. That means, they are creating hundreds of garbage pages on my server, day and night, linking to their site – until the disk on my site are used up.

This is the weakest point of Wiki, something others can easily spam…

Web 2.0, With Whose Name We Gather

I share the pain Mao had for frequently being asked about comment on Web 2.0.

Web 2.0 started from a conference in San Francisco about 1 year ago, and now Web 2.0 is the hottest buzz words in the IT world in China. Something I cannot understand is that so many magazine, whether IT related or not, put so many effort on the concept of Web 2.0. People say: Web 2.0 = RSS + Blog + SNS + (anything new, you name it)… Well. I just have strong feeling that when non-IT magazine care about some new stuff in IT world, it means the Internet penetration has arrived to a new level. This is interesting – just as non-IT magazines and newspapers start to focus on Internet several years ago.

Web 2.0 is a new concept, but a very comercialized concept. I just learnt that several thousand people attended the web 2.0 conference last year, no doubt why so many media knows this word. The Internet market in China is different from the U.S, – completely different – I am not talking about how new the idea is, I am talking about the user base. I wrote an article on this on my Chinese blog, and it got some attention. My point is, the reality of Internet in China has nothing to do with the concept and buzz word in America…

Web 2.0 is a buzz word. To use this word to get some money (short term) is a good idea, but to bet our business in the next two years on it may not be wise.

Shanghai

I often forget the fact that I still live in the city of Shanghai. Recently my thinking and my talk are completed around the classified business and the business mode, the new trends we need to pay attention. It is not easy and occupies 100% of my time. Maybe the only time I remember I am in Shanghai is when the weather changes – when it becomes hot or it rains heavily, just like this afternoon…

I hope I will resume the lifestyle and continue the “real person reporter in Shanghai” role soon.

Some Technical – AJAX

I haven’t been touching code for quite some time. It was amazing that I even worked with my laptop for two months without knowing that I am not an administrator for the Windows system. At that time, I know, I cannot call myself a technical person any more.

However, I am still passionate about technology. Recently, I noticed that there are great changes around the web. A new revolution is coming, led by the application of Flickr, Google Map, and Gmail. It is very inspiring. AdoptivePath gives it a name called AJAX.

I setup a sample application below.

Sajax

is a very interesting concept. This page is adopted from the SAJAX example wall. Just try to posted it. I suggest you to open

two or more windows to see the result. It can be very interesting.

Loading..

Note: Here is the full script of the conversation

I don't know if you noticed or not, this is just a simple static HTML page, but you can write on it, and change the content of this page. This application cannot be simpler, but it is a great change in mindset many web developers. It is simply a Javascript version of SOAP (without complicated codes), but it works great.

Sorry for technical terms in this entry. I know someone will jump out and post "No, No" as my previous technical post. Excuse me for one day. AJAX is just so inspiring for me.

I know the world of web will not be the same as before. Just as HTML is so simple, but it changes the world. Keep it simple and stupid is always a good way to use technology. It is simpler than SOAP, and cooler than other XML application.

Don’t Let Social Software Become Spam Ware

It was claimed that 2004 was the Year of Social Software. Flickr, Del.icio.us and LinkedIn are all wonderful applications that became hot in the last year, UUZone in China also got the lead. Everything went on well.

Meanwhile, I am not sure if I am 100% comfortable about the emails sent out by some social software.

Here is one example:

“Can You Believe it?”

From : name of my friend <Name of my friend@invitation.sms.ac>

Sent : Thursday, February 3, 2005 5:21 AM

To : <My email address>

Subject : name of my friend (4th request)

Can you believe it — this is the fourth request to be in name of my friend‘s friend

network.

If this means that you do not care to be in name of my friend‘s mobile friend network, then just say so – and save both of you the hassle. It only takes a few seconds!

Just click here to confirm or reject your relationship with name of my friend

http://www.sms.ac/registration/Intro.aspx?InviteId= some random number

If you don’t want to be invited by your friends, just click on the link above and choose block future invitations from family and friends.

Well. They started the letter with “Can you believe it”. You know what, my immediate response was, can you believe it that after I deleted their emails for three times, they are still sending out the so-called invitation to me to ask me to accept, or reject. If I didn’t reply the previous three emails, are you smart enough to know that I am not interested in that? Do I have to open the email, navigate to your site and click reject so that I can get peace? You certainly know I don’t want to click reject and have them say “NO” to my closet friends. Do I have the right to keep silence?

I have about 20 mails from the this website in my inbox. For some friends, it is the 3rd or 4th invitation and for some, it was the 1st or 2nd… Well. I had about 10% of my inbox filled up of all kinds of invitation, some of which started with “Can you believe it”.

Where is My Right and My Privacy?

When more and more of my friends join all kinds of social software websites, my contact information was shared to more and more websites by my closest friends. They started to send out invitation to me to grow our THEIR network at the cost of MY time and MY privacy.

One member to their network means more than 20 people got spammed. The website may argue it is not Spam, because it was my friend who initiated the distribution of the email, not the site. Well. I accept the explaination. It was not Spam, but this does not help me to feel less annoyed of their letters.

Social Network! But Whose Network?

Social software started with the good intention to help people to manage their social networks and social relationships. With traditional methods, people will forget to say hi to friends at holidays. With the software, it can automatically remind you about the important days and the important friends. This is what the Social Software should do. I guess at this time, there is a good balance of what the software do and what human being do.

If the software goes one step further to send the “hi” letter to their friends automatically, even without the awareness of the sender, and worse, if the reception can automatically reply something like “thank you” without the reception’s action, I start to wonder whether it is the relationship of the two sites, the two program or the relationship of the two real person?

I Discourage New Social Software Websites

Remember the man in Manhattan who posted to hire a social software coordinator?

Future duties may include discouraging companies and individuals from starting new social networking sites so that additional staff won’t be necessary in the future

I have the same idea.

Conclusion

  • One person can run very nice blog, or personal website. This is why blog became so hot.
  • 20 persons can run very nice BBS. So BBS was popular.
  • 100 well-educated people with passion and ethical behavior can support a PUBLIC wiki site, so there are not as many famous Wiki site as blog sites, or BBS.
  • If a social network requires 10,000+ registered user before it becomes useful, you bet the result.

Daily Build Script Sample

These days, I still get query about my article 7 steps of daily build process I posted at the end of 2002. I have not posted to devmanclub.com for a long time. I feel guilty that lots of people are asking for the daily build script I mentioned. I’d like to post the article I wrote two years ago here and share with my readers who are interested in development management processes.

Seven steps of build and release process

1. The builder (part of development team) is primarily responsible for managing the build release.

2. A build is made after the check-in deadline. Typically build will be made at mid-night.

3. The builder creates a share point on a well-known server for releasing the builds. The share point to be used will be \\servername\builds [1]

4. Under this share point, each build is released. The process of release would be a copy of all the relevant binaries, files and necessary setup scripts from the build machine to a corresponding directory under the share point. The build release directories would be named as the build number. \\servername\builds\buildnumber.[2]

5. The most recent build will always be mapped to the release point of \\servername\builds\current [3]. This enables easy location of the current release and also helps in the development of automated scripts by the development and testing community to install the most current build on their test machines etc.

6. At any time, the last 20 will be kept on the build release server. As new builds are released, the old ones falling outside this range will be archived.

7. All key milestone builds will be kept on the release machines until the product is released. The release directories would be appropriately named. For example, \\servername\builds\beta1 would contain the Beta1 of the application.

================================================================================

[1] This is a typical file share. Right click a folder in Windows Explorer and select Share…

[2] The folder will be created by build script.

[3] You can archive this using DFS (Distributed File System) that comes with Windows 2000

作者:王建硕

声明:本脚本及注释仅代表个人观点,不代表任何组织或公司。

它以”现状”提供且没有任何担保,同时也没有授予任何权利

Author: Jian Shuo Wang

Disclaimer: This scripts and comments only represent personal opinion and do not represent any organization or company. This post is provided as-is with no warranties and confers no rights.

整体上讲,这个编译脚本做了几件事情:

拿到最新的版本

通过更改配置文件把版本号加到DLL中

编译

把结果拷贝到发布服务器中指定编译版本号的目录中

Basically, the build script did the following things:

Get the latest version of the source code

Add the version number into the DLL by modifying the configuration files

Build

Copy the build result to the folder for the specified build on the release server

我尝试加入中文注解,并补充行号,以便引用

I added Chinese comment (and English translation) and line numbers, for sake of easy reference

1 @REM ===============================================================================

2 @REM Build script

3 @REM Author: Jian Shuo Wang

4 @REM Created: 12:04 PM 3/12/2002

5 @REM Modified:

6 @REM 1.1 SD Label added at 12:04 PM 3/12/2002

7 @REM 1.2 Fix the bug to delete .css file from release server

8 @REM 1.3 Add version numbers to both DLLs and web page

9 @REM 1.4 Added facade server and moved all webclient

10 @REM to web folder.

11 @REM 1.5 Fixed bug 258 [Build] Build script doesn’t provide label description

12 @REM 1.6 Reorged the folder and added WinUI to builds]

13 @REM 1.7 Add build number to all EXEs and DLLs

14 @REM 1.8 Depress prompt by echo D to web.config.

15 @REM

16 @REM

17 @REM ===============================================================================

18

编译脚本的变化有可能产生编译结果的变化或产生新的Bug,编译脚本也可能产生Bug,所以编译脚本的也要有版本号

Changes of build script may affect the compile result or cause new bug. There may be bugs in the build script itself. So we need to give a version to the build script.

19 @SET BuildScriptVersion=1.8

20

21 @REM ===============================================================================

22 @REM Usage:

23 @REM copybuilds.bat

24 @REM is the revision number. In case you need

25 @REM to create a build with revision number other

26 @REM then 0, you can use

27 @REM copybuilds.bat 1

28 @REM to create builds like 2295.1

29 @REM ===============================================================================

30

建议Build号的格式:

a.b.cccc.d, 如2.0.2533.0

a – 主版本号

b – 副版本号

cccc – 每日编译号

d – 更新号

主副版本号在一个产品大的发布之前不变,每日编译号每天加一 (注意,开始值不一定为1,建议为一个随机的4位数,这样保证它的位数一直是4位,方便引用。

Suggested Build Number Format:

a.b.cccc.d, eg: 2.0.2533.0

a – Major Build Number

b – Minor Build Number

cccc – Daily Build Number

d – Revision number

每日编译脚本每天自动运行,不过有时当出现Build break (自动运行/编译失败),或BVT测试没有通过, 可能会临时产生新的版本,这很少见,但一旦发生,可以手动运行编译脚本,并指派更新号。如果一天有多个build, 他们会有不同的更新号,比如 2.0.2533.1, 2.0.2533.2….

Daily build runs daily automatically. However, when Build Break (auto run/build failure) happens, or BVT (Build Verification Test) does not pass, it is possible to create some temporary new build. This is rare. But when it does happen, we can run the build script manually and assign a new revision number. If there are more than one build on the same day, they have different revision number, for example, 2.0.2533.1, 2.0.2533.2….

31 @SET BuildRev=0

32

33 @REM ===============================================================================

34 @REM This script is extended to be used on sha-jswang-02 exclusively

35 @REM ===============================================================================

36

37 @REM ===============================================================================

38 @REM Define variables

39 @REM ===============================================================================

40

定义一些变量,因为编译脚本基本上只会在编译服务器上运行,所以很多东西直接写到Code里了。编译服务器可以使团队中配置最差的机器,或利用率最低的机器,最好保证没有人在上面编程,否则不小心更改了设置就会产生Build环境改变,就可能会改变最终的编译结果。

Define some variables. Since the daily build script generally only runs on the build machine, we can hard code a lot of places into the script. It is OK to use the most poorly configured machine in the team, or a computer with lowest utilization. It is important that nobody develops on it. Otherwise, the developer may change the configuration that causes Build environment change, so to change the final result of the daily build.

41 @PATH=c:\program files\Microsoft Visual Studio .NET\Common7\IDE;%PATH%;

42 @SET SCRIPTROOT=C:\WebRaid

43 @SET SDROOT=C:\webraid\workplace

44

45 @SET SLNROOT=C:\webraid\workplace\src\RAID

46 @SET WEBUIROOT=C:\webraid\workplace\src\RAID\RAID_WEBUI

47 @SET WINUIROOTDEBUG=C:\webraid\workplace\src\RAID\WinUI\bin\Debug

48 @SET WINUIROOTRELEASE=C:\webraid\workplace\src\RAID\WinUI\bin\Release

49 @SET RELEASESERVER=\\sha-calvin\WebRAID\builds\

50 @SET WINUIROOTRELEASE=C:\webraid\workplace\src\RAID\WinUI\bin\Release

51 @SET BUILDREPORT=%SCRIPTROOT%\BuildReport.txt

52

53 @REM ===============================================================================

54 @REM Database related variables

55 @REM ===============================================================================

56

57 @SET MASTER_DB_SERVER=steven02

58 @SET MASTER_DB_SA=sa

59 @SET MASTER_DB_PASSWORD=123

60 @SET BCPCMD=-U”%MASTER_DB_SA%” -P”%MASTER_DB_PASSWORD%” -S “%MASTER_DB_SERVER%”

61

62 @REM ===============================================================================

63 @REM Generate build numbers, SD Labels.

64 @REM ===============================================================================

65

66 @CSCRIPT //NoLogo %SCRIPTROOT%\GenBuildNo.vbs > %SCRIPTROOT%\SetBuildNo.bat

67 @CALL %SCRIPTROOT%\SetBuildNo.Bat

68

69 @SET SDLABEL=build%BuildNo%

70 @SET BuildName=%BuildNo%

71

72 @REM ===============================================================================

73 @REM Check whether is is parameter for this script

74 @REM ===============================================================================

就在这里加更新号

Add build revision number here.

75

76 @If A%1A==AA goto :Continue

77 @SET BUILDRev=%1

78 @SET SDLABEL=build%BuildNo%.%BuildRev%

79 @SET BuildName=%BuildNo%.%BuildRev%

80 :Continue

81

82

准备编译报告。编译报告要存放到该Build所在的目录,以便以后了解Build时的情况

Prepare compile report. Compile report should be saved into the folder of the build, so you know the situation when the build was created.

83

84 @ECHO ===============================================================================

85 @ECHO P E C K E R B U I L D S C R I P T V %BuildScriptVersion%

86 @ECHO ===============================================================================

87 @ECHO.

88 @ECHO Build Number: %BuildName%

89 @ECHO.

90

91 @REM ===============================================================================

92 @REM BUILD REPORT

93 @REM ===============================================================================

94

95 @ECHO ======================================== > %BuildReport%

96 @ECHO Build Report for Build %BuildName% >> %BuildReport%

97 @ECHO Build Script Version: %BuildScriptVersion% >> %BUILDREPORT%

98 @ECHO Builder: Jian Shuo Wang (jswang) >> %BUILDREPORT%

99 @ECHO Start Build: >> %BUILDREPORT%

100 @Date /T >> %SCRIPTROOT%\buildreport.txt

101 @TIME /T >> %SCRIPTROOT%\buildreport.txt

102

103 @REM ===============================================================================

104 @REM Get the latest source

105 @REM ===============================================================================

106

107 @C:

108 @CD %SDROOT%

109

我的这个例子中用的是自己的一个工具,VSS有自己的命令行参数

I am using our own tool in this sample. Visual SourceSafe has its own command line parameter.

110

111 @ECHO ===============================================================================

112 @ECHO Retrieving source code from SD Server

113 @ECHO ===============================================================================

114 @ECHO Please wait …

115

116 SD sync -f src… > NUL

117 @ECHO.

118

建立Label,就是把产生这个版本的所有文件的当前版本记录下来,一旦以后某天需要恢复到这个版本,只需把代码同步到这个标签就可以了,然后我们就能保证从源代码树中编译出来任何制定的版本。

Create Label, which is a record of all the version numbers of the used files that generates this build, in case one day, we need to restore this build from the source code. We can do a label synchronization to make sure we can build out the certain build from the source code tree.

119 @REM ===============================================================================

120 @REM Create label

121 @REM ===============================================================================

122

123 @REM Create Labels

124 @ECHO OFF

125 @ECHO Label: %SDLABEL% >%WEBUIROOT%\Temp.txt

126 @ECHO Owner: FAREAST\jswang >>%WEBUIROOT%\Temp.txt

127 @ECHO Description: >>%WEBUIROOT%\Temp.txt

128 @ECHO Build Number %BuildName% >>%WEBUIROOT%\Temp.txt

129 @ECHO Options: unlocked >>%WEBUIROOT%\Temp.txt

130 @ECHO View: >>%WEBUIROOT%\Temp.txt

131 @ECHO //depot/… >>%WEBUIROOT%\Temp.txt

132

133 Type %WEBUIROOT%\Temp.txt | SD label -i

134

135 @ECHO ===============================================================================

136 @ECHO Synchronizing label

137 @ECHO ===============================================================================

138 @ECHO Please wait …

139

140 SD labelsync -l %SDLABEL%

141

142 DEL %WEBUIROOT%\Temp.txt

143

144

正式开始编译。 我会产生一个release版,一个Debug版

Finally, starts to compile. I will generate a RELEASE version a DEBUG version.

145

146

147

148

149

150

151 @REM ===============================================================================

152 @REM Begin to build

153 @REM ===============================================================================

154

155 @REM ===============================================================================

156 @REM Change the version number for DLLs

157 @REM ===============================================================================

158

159 @ECHO ===============================================================================

160 @ECHO Adding build number to DLLs

161 @ECHO ===============================================================================

162

163 Call %SCRIPTROOT%\AddBuildNumber.bat %SLNROOT%\SystemFrameworks\AssemblyInfo.cs

164 Call %SCRIPTROOT%\AddBuildNumber.Bat %SLNROOT%\Common\AssemblyInfo.cs

165 Call %SCRIPTROOT%\AddBuildNumber.Bat %SLNROOT%\DataAccess\AssemblyInfo.cs

166 Call %SCRIPTROOT%\AddBuildNumber.Bat %SLNROOT%\RAID_WebUI\AssemblyInfo.cs

167 Call %SCRIPTROOT%\AddBuildNumber.Bat %SLNROOT%\BusinessFacade\AssemblyInfo.cs

168 Call %SCRIPTROOT%\AddBuildNumber.Bat %SLNROOT%\WindowsControl\AssemblyInfo.cs

169 Call %SCRIPTROOT%\AddBuildNumber.Bat %SLNROOT%\WinUI\AssemblyInfo.cs

170

171

172 @REM ===============================================================================

173 @REM Add Version Number to Default.aspx

174 @REM ===============================================================================

175

176 Attrib -R %WEBUIROOT%\Default.aspx

177 Type %SCRIPTROOT%\VersionSpanStart.txt >> %WEBUIROOT%\Default.aspx

178 @ECHO Build %BuildName% >> %WEBUIROOT%\Default.aspx

179 Type %SCRIPTROOT%\VersionSpanEnd.txt >> %WEBUIROOT%\Default.aspx

180

181 @REM ===============================================================================

182 @REM Build debug version

183 @REM ===============================================================================

184

185 @ECHO ===============================================================================

186 @ECHO Begin to Build Debug Version %BuildName%

187 @ECHO ===============================================================================

188 @ECHO It may take 1-2 minutes. Please wait …

189

190 DEVENV %SLNROOT%\RAID.SLN /rebuild “debug” >> %BUILDREPORT%

191

192 @ECHO Build completed

193 @ECHO.

194

195 @ECHO ===============================================================================

196 @ECHO Begin to Build Release Version %BuildName%

197 @ECHO ===============================================================================

198 @ECHO It may take 1-2 minutes. Please wait …

199

200 DEVENV %SLNROOT%\RAID.SLN /rebuild “release” >> %BUILDREPORT%

201

202 @ECHO Build completed

203 @ECHO.

204

205

206 @ECHO ===============================================================================

207 @ECHO Begin to Build Release Version of WindowsControl %BuildName%

208 @ECHO ===============================================================================

209 @ECHO It may take 1-2 minutes. Please wait …

210

211 DEVENV %SDROOT%\src\WindowsControl.T\WindowsControl.sln /rebuild “release” >> %BUILDREPORT%

212

213 @ECHO Build completed

214 @ECHO.

215

把开发现状的数据库结构Dump成SQL语句, 以便安装程序可以完整的复原开发现状

Dump the existing database structure into SQL scripts, so that setup program can restore the database

216

217 @REM ===============================================================================

218 @REM D A T A B A S E S E T U P

219 @REM

220 @REM The following script is provide by Jian Wu. It uses bcp tool to get all the

221 @REM data in the SQL Database and put it in files with .db.txt extension.

222 @REM ===============================================================================

223

224 @ECHO ===============================================================================

225 @ECHO Dumping databases

226 @ECHO ===============================================================================

227

228 bcp “GTECRAID.dbo.Alias” out “%SCRIPTROOT%\Alias.db.txt” -c %BCPCMD%

229 bcp “GTECRAID.dbo.BugStore” out “%SCRIPTROOT%\BugStore.db.txt” -c %BCPCMD%

230 bcp “GTECRAID.dbo.FldItems” out “%SCRIPTROOT%\FldItems.db.txt” -c %BCPCMD%

231 bcp “GTECRAID.dbo.Flds” out “%SCRIPTROOT%\Flds.db.txt” -c %BCPCMD%

232 bcp “GTECRAID.dbo.Links” out “%SCRIPTROOT%\Links.db.txt” -c %BCPCMD%

233 bcp “GTECRAID.dbo.LinkTokens” out “%SCRIPTROOT%\LinkTokens.db.txt” -c %BCPCMD%

234 bcp “GTECRAID.dbo.NotificationRules” out “%SCRIPTROOT%\NotificationRules.db.txt” -c %BCPCMD%

235 bcp “GTECRAID.dbo.StaticWebPart” out “%SCRIPTROOT%\StaticWebPart.db.txt” -c %BCPCMD%

236 bcp “GTECRAID.dbo.Tabs” out “%SCRIPTROOT%\Tabs.db.txt” -c %BCPCMD%

237 bcp “GTECRAID.dbo.TabWebParts” out “%SCRIPTROOT%\TabWebParts.db.txt” -c %BCPCMD%

238 bcp “GTECRAID.dbo.[User]” out “%SCRIPTROOT%\User.db.txt” -c %BCPCMD%

239 bcp “GTECRAID.dbo.UserAlias” out “%SCRIPTROOT%\UserAlias.db.txt” -c %BCPCMD%

240 bcp “GTECRAID.dbo.UserQueryStore” out “%SCRIPTROOT%\UserQueryStore.db.txt” -c %BCPCMD%

241 bcp “GTECRAID.dbo.WebParts” out “%SCRIPTROOT%\WebParts.db.txt” -c %BCPCMD%

242

编译完成,开始拷贝编译出来的二进制文件

Compile completed. Start to copy the binary outcome of the compilation

243

244 @REM ===============================================================================

245 @REM Begin to copy files to release server

246 @REM ===============================================================================

247

248

249 @REM ===============================================================================

250 @REM A T T E N T I O N ON A P P S E R V E R S E T U P

251 @REM

252 @REM The builder moved the file web.config from Pecker_Facade folder to

253 @REM setup folder and rename it to server.web.config during the setup.

254 @REM This helps to reduce the complexity

255 @REM of the code by reducing the number of folder needed. The setup script

256 @REM will re-build the server folder and move the web.config file there.

257 @REM

258 @REM C H A N G E S

259 @REM

260 @REM THE NOTE ABOVE IS NOT LONG VALID. I have setup a new folder named

261 @REM “Sever” in the root folder of the distribution disk that holds all server

262 @REM DLLs and configuration information

263 @REM ===============================================================================

264

265 @ECHO ===============================================================================

266 @ECHO Copying AppServer Debug Version

267 @ECHO ===============================================================================

268

269 ECHO D | XCOPY %WEBUIROOT%\..\PECKER_FACADE\web.config %RELEASESERVER%%BUILDName%\Debug\Server /I /S /Y

270 XCOPY %WEBUIROOT%\bin %RELEASESERVER%%BUILDName%\Debug\Server\Bin /S /Y /I

271

272 @ECHO ===============================================================================

273 @ECHO Copying AppServer Release Version

274 @ECHO ===============================================================================

275

276 ECHO D | XCOPY %WEBUIROOT%\..\PECKER_FACADE\web.config %RELEASESERVER%%BUILDName%\Release\Server /I /S /Y

277 XCOPY %WINUIROOTRELEASE%\*.DLL %RELEASESERVER%%BUILDName%\Release\Server\Bin /S /Y /I

278

279

280 @ECHO ===============================================================================

281 @ECHO Copying Database Data

282 @ECHO ===============================================================================

283

284 XCOPY %SCRIPTROOT%\*.db.txt %RELEASESERVER%%BUILDName%\Debug\Database /S /Y /I

285 XCOPY %SCRIPTROOT%\*.db.txt %RELEASESERVER%%BUILDName%\Release\Database /S /Y /I

286 Del %SCRIPTROOT%\*.db.txt

287

288 XCOPY %WEBUIROOT%\..\PECKER_FACADE\database.sql %RELEASESERVER%%BUILDName%\Release\Database /I /S /Y

289 XCOPY %WEBUIROOT%\..\PECKER_FACADE\database.sql %RELEASESERVER%%BUILDName%\Debug\Database /I /S /Y

290

291 @ECHO ===============================================================================

292 @ECHO Copying WebUI Debug Version

293 @ECHO ===============================================================================

294

295 XCOPY %WEBUIROOT% %RELEASESERVER%%BUILDName%\Debug\Web /S /EXCLUDE:%SCRIPTROOT%\Excludelist.txt /Y /I

296 COPY %WEBUIROOT%\*.css %RELEASESERVER%%BUILDName%\Debug\Web

297

298 @ECHO ======================================== >> %BUILDREPORT%

299 @ECHO Copy WebUI Debug Ends: >> %BUILDREPORT%

300 Date /T >> %BUILDREPORT%

301 TIME /T >> %BUILDREPORT%

302

303 @ECHO ===============================================================================

304 @ECHO Copying WebUI Release Version

305 @ECHO ===============================================================================

306

307 XCOPY %WEBUIROOT% %RELEASESERVER%%BUILDName%\Release\Web /S /EXCLUDE:%SCRIPTROOT%\Excludelist.txt /Y /I

308 COPY %WEBUIROOT%\*.css %RELEASESERVER%%BUILDName%\Release\Web

309

310 @ECHO ======================================== >> %BUILDREPORT%

311 @ECHO Copy WebUI Release Ends: >> %BUILDREPORT%

312 Date /T >> %BUILDREPORT%

313 TIME /T >> %BUILDREPORT%

314

315

316 @ECHO ===============================================================================

317 @ECHO Copying WinUI Debug Version

318 @ECHO ===============================================================================

319

320 XCOPY %WINUIROOTDEBUG% %RELEASESERVER%%BUILDName%\Debug\Win /S /EXCLUDE:%SCRIPTROOT%\Excludelist.txt /Y /I

321 COPY %WINUIROOTDEBUG%\..\..\help\*.chm %RELEASESERVER%%BUILDName%\Debug\Win /Y

322

323 @ECHO ======================================== >> %BUILDREPORT%

324 @ECHO Copy WinUI Debug Ends: >> %BUILDREPORT%

325 Date /T >> %BUILDREPORT%

326 TIME /T >> %BUILDREPORT%

327

328 @ECHO ===============================================================================

329 @ECHO Copying WinUI Release Version

330 @ECHO ===============================================================================

331

332 XCOPY %WINUIROOTRELEASE% %RELEASESERVER%%BUILDName%\Release\Win /S /Y /I

333 XCOPY %WINUIROOTDEBUG%\WinUI.exe.xml %RELEASESERVER%%BUILDName%\Release\Win /I /S /Y

334 COPY %WINUIROOTRELEASE%\..\..\help\*.chm %RELEASESERVER%%BUILDName%\Release\Win /Y

335

336 Copy %SDROOT%\src\WindowsControl.T\bin\Release\WindowsControl.dll %RELEASESERVER%%BUILDName%\Release\Win\WindowsControl.dll /Y

337

338 @ECHO ======================================== >> %BUILDREPORT%

339 @ECHO Copy WinUI Release Ends: >> %BUILDREPORT%

340 Date /T >> %BUILDREPORT%

341 TIME /T >> %BUILDREPORT%

342

343

开发过程中有简易的Setup.bat保证可以在一个崭新的机器上安装最终程序,这保证了测试的起点是一样的

Simple setup.bat to install the compiled build onto a new machine. This ensures the starting point of the test is identical every time you setup.

344

345

346

347 @ECHO ===============================================================================

348 @ECHO Moving the setup.bat script

349 @ECHO ===============================================================================

350

351 Move %RELEASESERVER%%BUILDName%\Debug\Web\Setup.bat %RELEASESERVER%%BUILDName%\Debug

352 Move %RELEASESERVER%%BUILDName%\Release\Web\Setup.bat %RELEASESERVER%%BUILDName%\Release

353

354

355 @ECHO ===============================================================================

356 @ECHO Copy the build report to release server

357 @ECHO ===============================================================================

358

359 Copy %BUILDREPORT% %RELEASESERVER%%BUILDName%

360

大功告成

Mission completed

361

362 @ECHO ===============================================================================

363 @ECHO Build completed successfully

364 @ECHO ===============================================================================

如有任何疑问,欢迎跟贴

Comments are welcome.

王建硕[微软]

本贴子以”现状”提供且没有任何担保,同时也没有授予任何权利

Jian Shuo Wang [Microsoft]

This post is provided as-is with no warranties and confers no rights.

AutoComplete in Web Page

This is an Auto Complete in Web Page demo. According to the file header (thanks to my good habbit to write long and detailed file header in all my source code), it is written on March 6, 2001. It shows how to implement the AutoComplete feature on a web page. Try to input something and see the input gets AutoCompleted. I have populate a long list of titles on this blog into the history.

Personal Social Network Management

I am thinking hard to find some good software/website, or even thinked of creating a tool myself, to management my personal social network. The problem I am facing is, I have too many contacts and I need a way to organize the relationship and keep in touch with them.

  • I have many family members. How about sending some pictures of the new apartment I just moved in or notify them when I change my job? Now I am maintaining a private maillist. But I always forget to send interesting things to them.
  • I have old high school classmates. They are all my best friends years ago, but ops, I have never dropped a single piece of email to them for several years. Where are they? What they are doing? Did they get married or have a baby, or something?
  • I am receiving emails everyday, from every corner of the world, asking me questions about Shanghai. I archived the emais. Sometimes, I got an email saying: “We exchanged email in July, 2003 before I came to Shanghai. I am here. How about we meet sometime?” Well? Who is this guy? I have totally forgotten the last email. There is no thread of emails.

How to organize all these emails, friends, and relationships? I need a system to do the job.

Personal Social Network Management

If I am a company myself, the system has a buzz word as its name: CRM (Customer Relationship Management) – a tool to record all interaction and contact information of customers. For me, it should be a system (hopefully, distributed) to manage my social network. By distributed, I mean no body a new address book application when Yahoo! or Hotmail, or Outlook is doing great already. Duplicate websites with same function increase the cost of synchronization.

Help

Anyone has any idea or best practices to management your own social network?

Social Software

Hold a minute before recommending me of social software right now. With the emerging of concept and sites of social software, I am more confused. To be honest, either Friendster, or LinkedIn helped me to solve the problem I am facing. Will I drop something to all my 40+ contacts in LinkedIn? No.

P.S. A joke on Social Network Coordinator

Look at a job in Manhattan: personal social network coordinator . The responsibility of this position is to

  • approving or rejecting invitations of friendship (in social software)
  • managing a database of usernames and passwords for each of the social networking sites
  • keeping my social network synchronized; that is, invite friends from one social networking site to be friends in all of the other social networking sites
  • various “damage control” functions when rebuffed “non-friends” become upset due to non-acceptance of their offers of friendship
  • Future duties may include discouraging companies and individuals from starting new social networking sites so that additional staff won’t be necessary in the future.
  • etc…

It is so funny. Go to the original posting site read the full article since the author said “Reposting this message elsewhere is NOT OK.“.

It is not a serious job posting. However, it described the problem of so many social software.

Blog??? Wiki??? Social Software???

20 minutes to my presentation on Blog??? Wiki??? Social Software??? in GTEC, Microsoft. Just take some time to record some URLs and meta thoughts I may be used of when I start.

Blog Tools

http://blogger.com

MovableType

Big Names in Blogging World

Scripting.com from Dave Winer

Scoblizer

GTEC bloggers:

So far as I know.

http://liuzhijian.net

Grace

Eric

Eddy

Jian Shuo Wang

Wendy

Run Liu

Fang Xie

Claire

RSS reader

FeedDemon

NewszCrawler

Wiki

Wikipedia

PMWiki

Social Software

Friendster

LinkedIn

UUZones.com

Blogs in China

CNBlog.org

BlogBus.com

Blogcn.com

BlogDrive.com

P.S. How I want this page to be Wiki page so readers can continuously contribute to this site.

Wiki

Wiki is a good idea. The idea is particularly useful in Wikipedia. I love the feature that you can create a link (the definition of a word) using the syntax of [[Shanghai]]. Shanghai will be a hyperlink to http://en.wikipedia.org/wiki/shanghai.

If the term is defined, the link will bring up the page. If the term is not defined, it will bring up the edit page to define it. This is the best idea among all the ideas in Wiki.

If it is applied to [[Blog]], I will like to create sentences like this – to use [[ and ]] to note the names I want to explain in other [[articles]]. Thus I have a good way to describe the [[world I am in]] in a extended way – create the link first and put the description later.