| Database: |
Oracle 7 & 8i, SQL Server, MYSQL, Access, Foxpro
|
| Languages: |
C, VC++, Java, perl, VB, Javascript, VB script, ASP, PHP, JSP, HTML
|
| Development Tools: |
Visual Studio, Sun Java workshop, cc, gcc, javac
|
| Software: |
MS Office, rsync, rcp, rsh, apache, SQL Server, ErWin, SQL-plus,
Mysql, JBuilder, a testing tools for STB, matlab, PhotoShop,
MS paint, clipboard viewer, Frame Maker, sendmail, cron
|
| Hardware: |
PC, Motorola STB (Set Top Box, also called Black Bird), Sun Workstation, Modem, Hub
|
| Operating Systems: |
DOS, Windows3.1/95/NT/2000, BSD Unix, Linux, Sun Soloris, Novell, Cisco IOS, Motorola operating system for Black Bird
|
| Other: |
ActiveX,OpenGL, TCP/IP, Socket, Multi_thread server(C on Unix and Java),
client using socket on Unix and NT, COM, DCOM, EJB, J2EE, COBRA, PL/SQL, RIP, OSPF, IGRP, EIGRP, BGP, SSL, FTP, APPLE TALK, IPX, SPX,
Understand quite some Linux kernel
|
Experience:(click to view detail)
Sept 2001 --- now TelePresence Inc. and Microroad Inc.
For Telepresence:
Project I Prototype a map viewing System.
Contribution:
This is a prototype project. I am the author, the program includes the following features:
TTS(Text to Speech), animation, zooming, gif showing, sound playing etc.
take a look?
Environment: Windows 98, 2000, VC++ 6.0, MFC, MS Speech SDK, COM
Project II Nii Solution.
Contribution:
I am not the author, but I am the person take over every thing, from VB to SQL server,
maybe later to ASP.
take a look?
Environment: Windows 2000, VB 6.0, SQL Server 2000, Infragistic Ultragrid, Tree and UltraToolbar control
Project III Nii Solution--Java.
Contribution:
Rewrite the whole client using Java(Swing). Communicate with serial port using third party java package.
take a look?
Environment: Windows 2000, JDK1.3.1, SQL Server 2000, Thirty party COM communicate Java package
For Microroad:
A restaurant mangement tool.
Contribution:
I am the author, This is by VB, Access, using "Word", "Excel" automation to
do printing, and send fax through email.
take a look?
Environment: Windows 98, 2000, VB 6.0, Access
A restaurant website---www.thefoodstreet.com.
Contribution:
I am the author. It is a complete online restaurant e_commerce system.
Features include online purchasing, restaurant owner management system,
online order, fax notification, changing restaurant interface automatically.
take a look?
Environment:Linux, Perl, mysql, javascript
Microsoft Online Support---www.webpss.com.
Contribution:
This is for Microsoft China Branch. I am the author. It is a complete online support system.
Features include secure online purchasing, supporter system, customer system, management System.
take a look?
Environment:Linux, Perl, mysql, javascript, verisign pay pro system.
I am the system administrator myself as well, install and configure
the following staff: perl, mysql, proftp, cron, versign pay pro system,
httpsd(including the certificate generating and installation), perl modules,
sendmail, pop3 mail server, and write a bulkmail
sender(Can send 20,000 10k size mails/hour in a shaw cable connection to
internet)
For Fun:
A 3D game and a game scene editor.
May. 2001 ---August. 2001 Dai Systems Inc. Consultant
Project I Prototype a real time online trading system.
Contribution:This is a prototype project. I do everything from database design to server and client programming. The mechanism goes like this: The server is a multithread server programmed by Java. The server contact Oracle database to retrieve and update information, also, the server listens to a port, waiting for the client request. The client contacts server through socket sending request and retrieving result. It is quite similar to the three layer modal, the difference is that both the server and client are our own code, not web server and browser. The effect in our lab is pretty good, and the response to a client request is almost instant. The server's connections to Oracle Database are maintained by our own connection pool. Other work includes writing servlet to input and retrieve the administrative data from the Oracle Database, setting up JRun and IBM Websphere to establish the run environment.
take a look?
Environment: WinNT, Oracle, JRun, Websphere, Apache, Java, Servlet, Swing
Nov. 2000 ---March. 2001 RenRen.com Tech Lead
Project I Develop the research channel in the news publish system.
Contribution: I am the technical leader in this project (though the original author is not me).
This is the new channel on our web site (cn.renren.com/contents/research/), similar to the previous channels. The basic mechanism goes like this: the news publishers publish a piece of news through browser, my perl program put the news and related information into mysql database, at the same time, generates the .shtml file on the hard disk of our staging server. Because our web site use several machines as web servers in a round robin manner, my perl program also copies the .shtml file to other web servers at the same time using rcp and rsh(this is later replaced by rsync). Other features includes encrypted password in mysql database, only one user can use the same account at a given time, the representation of the news to customers is automatically generated by the perl program.
Environment: Linux, mysql, perl, rsync, win98, ultraedit
Project II Make our web site from dynamic to static
Contribution: I am the designer and author of this project. Our website consist of a lot of dynamic content generated by perl, servlet, etc. This put a big burden to our web server and the site is greately slowed down by the processing of the .shtml file at peak time. My program map the dynamic web pages to static ones, that is, from .shtml to .htm. This greatly increase the speed our web site at peak time( at least 5~10 times). The mechanism is very simple: my perl program act as a common web browser, retrieving the .shtml content from our web server, then write down the retrieved content to a .htm file. All done! Other things include organizing everything well in the publishing interface and mysql database, configure apache to let the .htm file go before the .shtml file, etc.
Environment: Linux, mysql, perl, rsync, win98, ultraedit, apache
Project III Change the synchronization method from rsh, rcp to rsync
Contribution: This is not a very big change in terms of programming, but it benefits greatly to our web site. Rsync seems to be more secure and more powerful than rcp and rsh. It is faster because it only transmits the different thing, another important feature of rsync is that it can synchronize the whole directory rather than a single file. The programming is pretty easy, though it takes me a little bit trouble of me to learn, install, and play with rsync.
Environment: Linux, mysql, perl, rsync, win98, ultraedit
Project IV A ftp program through the web browser.
Contribution: This is the most interesting project I got in renren.com. I am the designer and the author. The whole program is written in perl, using HTTP protocol rather FTP protocol. The program is not very big, but the effect is great, looks much better than the common used command line FTP program, even better in some aspect than those GUI based FTP program. The mechanism is very simple, the perl program under the background does everything, including listing files, directories, file date, file attribute, file time and file size, listing current directory, parent directory, etc. and most important, upload files using CGI-Lite. Other features including security in our web site, certain users have right to certain directories and only authorized users can use it, also, user can choose to synchronize the uploaded files to other machines on our web site. User can not make directories and delete files in this program, this is required by our web site manager.
Environment: Linux, mysql, perl, rsync, win98, ultraedit
Project V An E-mail program using servlet.
Contribution: This is a very simple program, gathering information from web browser, then sending the information to our web master through E-mail. The whole program is written in Java using servlet, sending E-mail through predefined Java class. Other features include client side validating using Javascript. I also write a simple VC++ program to display Chinese character correctly.
Environment: Linux, Java(servlet), win98, ultraedit
Project VI An online survey system.
Contribution: This is a challenging project, but this project is not finished. The reason is that the renren.com branch in Beijing is dismissed. I am the technical leader in this project and our team consists of four to five persons. The mechanism goes like this: the survey publishers publish the survey content through web browser interface to the oracle database, including single choice question, multi choice question, open question, table question etc. Then our program presents these questions to the surveyed persons through web browser, validates input, gathers information and put the information to the Oracle database for further analyzing.
Environment: Oracle, Java(servlet), SQL Plus, win98, ultraedit
Sept 1999 ---May 2000 Software Center, Motorola China, Senior Software Engineer
Project I Reverse engineering on STB(Set Top Box) device driver of Motorola Black Bird(also called Smart Box) project. Test device drivers of STB.
Contribution: I play a key role in getting this project for SCMC(Software Center Motorola China) by reverse engineering on the drivers. My work include reading the source code of the drivers and applications, understanding them, writing input, output, meaning and the function of every function in the drivers and applications. Because of my excellent work, the customer gives us this testing project.
Other works include writing test cases for this project. I know something about ATM in this project.
Environment: OS9000, Windows NT work Station, C, script language in OS9000; VC++5.0, a testing tool designed for STB, hyper terminal
Project II Design driver for USB(Universal Serial Bus)
Contribution: I am rather new in terms of writing device drivers and USB. My major job is to write related document and find bug for my peers. But all coding are done by me, about 4,500 lines. Work includes getting information from registers, handles interrupts, write registers and hardware buffers to send data, handle parameters provided by operating system and provide read and write functions.
Environment: Windows NT work Station, C, VC++5.0, Assembly
Project III Write document for a DSP project
Contribution: This is a temporary work for me. Write about 100 HTML files and 50 .m files. The work description: getting the gif picture of the dialog box by cutting it from the screen and manipulating it through PhotoShop. Convert the help file format from Frame Maker to HTML format and .m file format. Seek broken links by Front Page. Change many files at the same time by writing and running small perl script.
Environment: Windows NT work Station, matlab, FrontPage, perl, PhotoShop, MS paint, clipboard viewer, Frame Maker
May 1998 --- Sept 1999 Sina.com Senior Software Engineer, Tech Lead
Project I Build JAVA Chinese controls, including TextField, TextArea, ListBox, ComboundBox, Label)
Contribution: This project is finished by myself except the part of character displaying on the screen. These controls are build from the basic Java Class: Panel, Scroll Bar, and Canvas. My job is to catch the event such as mouse down, mouse move, mouse up, key down, etc. and control the display and manner the control respond to user input.
Environment: Soloris 3.51 on Sun Workstation , JAVA, Java Workshop 2.05
Project II Chinese JAVA browser(aborted because the incompatibility of JVM on Soloris and Win95)
Contribution: Fixing bugs in the program and programing on such things as table, map, etc.
Environment: Soloris 3.51 on Sun Workstation?JAVA ,Java Workshop 2.05
Project III Chinese internet E-mail(please visit www.richmail.com)
Contribution: This project is finished by me independently under the direction of my leader. The skeleton of the program is to give user a GUI through Java applet. After the user have pressed the send button, the applet contact a c program on the web server through HTTP protocol; this c program then contact a mail server, using SMTP protocol to actually send the user's mail through that mail server.
Environment: Soloris 3.51 on Sun Workstation, BSDi UNIX, JAVA, C, Java Workshop2.05, VC++ 4.0, gcc, cc, gdb
Project IV IRC(Chinese Internet relay chat)
Contribution: The prototype of this program is done by my leader. My job is to port the server from Windows to Unix and make the server run stable. Also, I do some client side programming. The mechanism of this program is as follows: Using Java applet to give user a GUI interface, from which people can chat with each other, either two people have private chat or several people chat together; also, users can see who others is online and select persons to chat. The key of this program is the server, the server maintain a list of the online people, a list of the sentences the clients said and tell the client if anything new is coming(the server side is the initiative side). The communication method between the client and the server is socket on TCP/IP. The server is a multithreaded program, listen to a port, accept a client request, start a thread to serve the client until the client quit or communication break.
Environment: Soloris 3.51 on Sun Workstation, BSDi UNIX, JAVA, C, Java Workshop 2.05, gcc, cc, gdb
Project V Mahjong game on Internet
Contribution: This a rather big project. It was a five person's job, the skeleton is also done by my leader. My job is to combine all the person's job into a whole and lead other two programmers to extend the functions of it and get rid of the bugs in it, then make it run stable on the internet. This program is also a client-server implementation, the client side is a Java applet to give a GUI to user, the multithreaded server does the real job and it is a C program on Unix.
Environment: Soloris 3.51 on Sun Workstation, BSDi UNIX Win95, JAVA, C, perl, Javascript, HTML, Java Workshop 2.05,Visual J++ 1.0, gcc, cc, gdb
Project VI Internet Chat server and client
Contribution: This is a project finished by me independently. I program on both the server and the VC++ client. The server is written in C, using multithread and socket technology. Several servers can communicate with each other to share information. Servers retrieve information from MySQL database to validate user ID, and if one server is busy, this server can redirect the client request to other servers. Both VC++ client and perl client can use this server. Client side is written in VC++(perl client is written by someone else, but use the server I write), using owner draw style list box to interpret HTML tags, also, using socket technology to communicate with server.
Environment: Soloris 3.51, BSDi UNIX, Linux Win95, C, VC++5.0, gcc, cc, gdb.
Project VII Configure sendmail as a mailserver serving special purpose, and coordinate the free Internet e-mail project.
Contribution: Stone richsight company is a new internet company. I am quite familiar with internet technology and perl, so that I have this extra job beside my own project. I write a little C program to get information from MySQL database, output proper values, and change sendmail.cf to call my C program every time a new mail comes in, so that the new mail can be forwarded to other proper servers according to the receiver's name. Other things include helping to install q_mail, install the perl program, etc.
Environment: Soloris 3.51, C, sendmail, gcc, cc, gdb, perl
Project VIII Transfer clipboard and URL over internet.
Contribution: My job is part of a teamwork. I write two dlls for the pager developed by Stone Richsight. One is to transfer the content of clipboard over internet. The dll works as both a server and a client. The client get the current content of the clipboard and send it to the server. When the server receives the data, the server asks the user if he want to replace the content of the clipboard with the content received from the client (another user's clipboard content). If the user's answer is yes, the clipboard content of the user is replaced with that of the other user. The mechanism is also socket and multithread technology. Transferring URL is even simpler. Just transfer the URL as text, then open the URL on target computer using the default browser (most probably, Netscape or IE).
Environment: win98, VC++5.0
Project IX Real time stock information (please visit www.finance.sina.com.cn).
Contribution: I am technical leader of this project. We retrieve data from stock information provider, put the parsed data into database, then the user can retrieve these data through perl. The data retrieving is through HTTP and FTP protocol by perl. The real time data is retrieved once a minute or once every two minutes through HTTP protocol. The other data is retrieved once an hour or in other frequency through FTP or HTTP protocol. Because our web site is a very popular one, the adjustment of MySQL is very important. We have to adjust it carefully and fix trivial bugs in programs related to database operation. Further more, wisely even the flow of the data is also very important. Other jobs include configuring apache, configuring cron table, etc.
Environment: Linux, perl, mySQL, apache, cron table
July 1996 --- May 1998 Contract to Several Small Companies
Project I Internet commercial database application using MS-SQL server and IIS.
Contribution: This project is for Japan Sheido Company intranet software. My work is focused on data input, data display and printing. The technology used in this project include SQL Server6.5 administration, creating table, creating SQL sentence, creating view, keeping data integration, consistency, and using VBA to print forms through EXCEL. My job include 31 tables and all their related HTML forms and EXCEL print forms. Though not much, I also touched some thing related to ActiveX control.
Environment: SQL Server6.5, VBScript, HTML, Windows NT, Interdev1.0, FrontPage 97, Excel, VB4.0
Project II Manage Information System of JinLin Electricity factory.
Contribution: My work is to create databases, tables, views using Visual Foxpro3.0. Handle user' input by such things as text box, check box etc. Show the data to user using both grid and form. Print the data using the tool provided together with Visual Foxpro3.0. Tip the user when something goes wrong when input data using trigger.
Environment: Windows 95, Novell network, Visual Foxpro3.0
Project III A table program in Visual C++
Contribution: The Visual C++ part of the finance software of China North Electricity Group Company. The table program I write is quite similar to the table used in Microsoft Word. The functions include merge cells, choose font, print and print preview, move the grid to adjust cell size, read from file, and save to file etc. But this program is specific to this project, so also include some specific functions, one of them is to get data from our Visual Foxpro part of the program through the data format defined by us. I also write part of the Visual Foxpro3.0 code in this project.
Environment: SQL Server6.0, Windows NT, Visual C++ 1.5, Visual Foxpro
Other:
Project I Electronic Information Collecting System
Contribution: I am the author totally responsible for this project. The mechanism goes like this: The PC acts as the central server, the CPU in the device that monitors the flow of the electricity acts as the client. PC communicates with client through a modem on the PC and dials the clients one by one through telephone line. Once connected, the PC will send commands to the client to retrieve data through our own protocol, and after everything is done, close the connection and dial the next client. The key point in this project is the Microsoft COMM control, it make the work to communicate through serial port much easier. Now, this system is ready to use. Once the data is retrieved, I store it in the Access database. The presentation of data is through forms of VB, data grid control, etc., also, the primary-detail technology is used. The scheduled printing is to be done through Microsoft Excel using the automation technology. Creating an Excel Application object, load a template sheet, fill data in the sheet, and then instruct Excel to print preview or print the sheet. The publishing disks are made through the tool provided together with Visual Basic 6.0
Environment: win98, Visual Basic 6.0, Access 97, Microsoft Excel, MS COMM control, modem, telephone line, client device (this is designed and programmed by another person), MS dialup network.
Project II A MIS system by Java and Oracle
Contribution: This is a project using three layer model on the internet. The middle layer is not a web server, instead, it is a multithread Java server written by ourselves. The mechanism goes like this. The client(Java application) packages the request into data stream and send it to the server through socket. The server listens to a port, start a thread for each client, getting the client request through socket, unpacking the data stream, querying the Oracle database at the back end, then packaging and sending the result back to the client. My job is part of the teamwork, but rather comprehensive, including the code in both client side and the server side and querying the Oracle database.
Environment: Oracle 8i, win98, linux, Jbuilder3.0, Visual J++
Project III Involved in a business information publishing system.
Contribution: This also a three layer project. PHP is used in the middle layer to communicate with the background Oracle database according to the user input. Java Script is used to response to the user actions, validate user input. This is a typical internet application and pretty easy. The difficult point is to combine the server side PHP with the client side Java Script. My work includes all the three layers. Briefly, creating tables, views, sequences in Oracle database, retrieving information from database and putting information entered by user into database using PHP, validating user input and response to user using Java Script.
Environment: Oracle8i, SQL-plus, other Oracle tools, PHP, Java Script, Windows NT, Linux
Prouds :
I am a member of National Physics Olympic Training Team of China
I am from Peking University
Reading through DOS 2.10 version assembly source code when in University.
Reading through MFC source code when it is VC++ 1.5
Reading through Java source code when it is AWT
Reading through Linux kernel.