<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nerwa</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nerwa"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Nerwa"/>
	<updated>2026-04-16T13:17:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=30079</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=30079"/>
		<updated>2009-04-10T03:16:12Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - Apr. 23: Build a basic frame work which can generate most of Chart. And build the pre-define chart generation patterns.&lt;br /&gt;
&lt;br /&gt;
Apr.24 - May. 1: Build the user-select chart generation system.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
Milestone May 1: Pre-define charts are done and the basic user-select system is almost done.&lt;br /&gt;
&lt;br /&gt;
May.1 - May. 15: Test and debug .&lt;br /&gt;
&lt;br /&gt;
May. 16 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun.1 - Jul. 10 : Design the aggregate table.&lt;br /&gt;
&lt;br /&gt;
Jul. 11 - Jul. 1: Implement the aggregate table and test.&lt;br /&gt;
&lt;br /&gt;
Milestone Jul. 1: A framework for the aggregate table is finished.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
*Turns statistic - The average turns for each scenario. (Bar charts)&lt;br /&gt;
&lt;br /&gt;
*Gold statistic - The average gold left for each scenario. (Bar charts) The average gold for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
*Time statistic - Average time of each scenario. (Bar charts) The average time for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
* Special unit statistic (level and exp, Pie charts)&lt;br /&gt;
&lt;br /&gt;
* Unit count (Bar charts)&lt;br /&gt;
&lt;br /&gt;
* Unit upgrade trends. (Pie charts)&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is a framework based on MVC. I will describe the implement details in models and controllers.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
&lt;br /&gt;
Game, special units and units are models. Each game has many special units and units, each special unit and unit belongs to a game. Models maintain the data in the database and relationship between them.&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
There are 2 controllers in the project. One is to generate the pre-define charts and the other is to generate a user-select charts. &lt;br /&gt;
&lt;br /&gt;
Each pre-define pattern is corresponding to a unique action in the first controller. The parameter of the action can be a timestamp or a campaign/scenario name. Then the action makes a query and get data from database. A helper method is invoked after to generate a Google Charts API URL and display in the views.&lt;br /&gt;
&lt;br /&gt;
The second controller has a create_chart action, a generate_chart action and a display_chart action. The create_chart action is for user to create a pattern to generate the chart he/she want to see. Then submit the pattern to the generate_chart action to generate the URL. The URL is displayed in the display_chart action.&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29965</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29965"/>
		<updated>2009-04-07T15:10:44Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
Milestone May 1: Pre-define charts are done and the basic user-select system is almost done.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Jul. 1: A framework for the aggregate table is finished.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
*Turns statistic - The average turns for each scenario. (Bar charts)&lt;br /&gt;
&lt;br /&gt;
*Gold statistic - The average gold left for each scenario. (Bar charts) The average gold for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
*Time statistic - Average time of each scenario. (Bar charts) The average time for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
* Special unit statistic (level and exp, Pie charts)&lt;br /&gt;
&lt;br /&gt;
* Unit count (Bar charts)&lt;br /&gt;
&lt;br /&gt;
* Unit upgrade trends. (Pie charts)&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is a framework based on MVC. I will describe the implement details in models and controllers.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
&lt;br /&gt;
Game, special units and units are models. Each game has many special units and units, each special unit and unit belongs to a game. Models maintain the data in the database and relationship between them.&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
There are 2 controllers in the project. One is to generate the pre-define charts and the other is to generate a user-select charts. &lt;br /&gt;
&lt;br /&gt;
Each pre-define pattern is corresponding to a unique action in the first controller. The parameter of the action can be a timestamp or a campaign/scenario name. Then the action makes a query and get data from database. A helper method is invoked after to generate a Google Charts API URL and display in the views.&lt;br /&gt;
&lt;br /&gt;
The second controller has a create_chart action, a generate_chart action and a display_chart action. The create_chart action is for user to create a pattern to generate the chart he/she want to see. Then submit the pattern to the generate_chart action to generate the URL. The URL is displayed in the display_chart action.&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29964</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29964"/>
		<updated>2009-04-07T15:08:26Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Implement Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
*Turns statistic - The average turns for each scenario. (Bar charts)&lt;br /&gt;
&lt;br /&gt;
*Gold statistic - The average gold left for each scenario. (Bar charts) The average gold for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
*Time statistic - Average time of each scenario. (Bar charts) The average time for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
* Special unit statistic (level and exp, Pie charts)&lt;br /&gt;
&lt;br /&gt;
* Unit count (Bar charts)&lt;br /&gt;
&lt;br /&gt;
* Unit upgrade trends. (Pie charts)&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is a framework based on MVC. I will describe the implement details in models and controllers.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
&lt;br /&gt;
Game, special units and units are models. Each game has many special units and units, each special unit and unit belongs to a game. Models maintain the data in the database and relationship between them.&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
There are 2 controllers in the project. One is to generate the pre-define charts and the other is to generate a user-select charts. &lt;br /&gt;
&lt;br /&gt;
Each pre-define pattern is corresponding to a unique action in the first controller. The parameter of the action can be a timestamp or a campaign/scenario name. Then the action makes a query and get data from database. A helper method is invoked after to generate a Google Charts API URL and display in the views.&lt;br /&gt;
&lt;br /&gt;
The second controller has a create_chart action, a generate_chart action and a display_chart action. The create_chart action is for user to create a pattern to generate the chart he/she want to see. Then submit the pattern to the generate_chart action to generate the URL. The URL is displayed in the display_chart action.&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29963</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29963"/>
		<updated>2009-04-07T15:00:14Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
*Turns statistic - The average turns for each scenario. (Bar charts)&lt;br /&gt;
&lt;br /&gt;
*Gold statistic - The average gold left for each scenario. (Bar charts) The average gold for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
*Time statistic - Average time of each scenario. (Bar charts) The average time for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
* Special unit statistic (level and exp, Pie charts)&lt;br /&gt;
&lt;br /&gt;
* Unit count (Bar charts)&lt;br /&gt;
&lt;br /&gt;
* Unit upgrade trends. (Pie charts)&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is a framework based on MVC. I will describe the implement details in models, views and controllers.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
&lt;br /&gt;
Game, special units and units are models. Each game has many special units and units, each special unit and unit belongs to a game. Models maintain the data in the database and relationship between them.&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29962</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29962"/>
		<updated>2009-04-07T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Unit Stats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
*Turns statistic - The average turns for each scenario. (Bar charts)&lt;br /&gt;
&lt;br /&gt;
*Gold statistic - The average gold left for each scenario. (Bar charts) The average gold for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
*Time statistic - Average time of each scenario. (Bar charts) The average time for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
* Special unit statistic (level and exp, Pie charts)&lt;br /&gt;
&lt;br /&gt;
* Unit count (Bar charts)&lt;br /&gt;
&lt;br /&gt;
* Unit upgrade trends. (Pie charts)&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is a framework based on MVC. I will describe the implement details in models, views and controllers.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29959</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29959"/>
		<updated>2009-04-07T13:54:53Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Campaign Stats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
*Turns statistic - The average turns for each scenario. (Bar charts)&lt;br /&gt;
&lt;br /&gt;
*Gold statistic - The average gold left for each scenario. (Bar charts) The average gold for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
*Time statistic - Average time of each scenario. (Bar charts) The average time for each turn in a scenario. (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is a framework based on MVC. I will describe the implement details in models, views and controllers.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29958</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29958"/>
		<updated>2009-04-07T13:36:40Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Implement Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is a framework based on MVC. I will describe the implement details in models, views and controllers.&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
&lt;br /&gt;
====Views====&lt;br /&gt;
&lt;br /&gt;
====Controllers====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29957</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29957"/>
		<updated>2009-04-07T13:33:29Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Idea for the Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
===Implement Details===&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29956</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29956"/>
		<updated>2009-04-07T13:32:07Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* General Stats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic - How many games played on Mac, Windows or Linux? Which campaign is the most popular on Mac version? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Game play trends - How many games played each year/month/day/hour? (Line charts and/or bar charts)&lt;br /&gt;
&lt;br /&gt;
*Campaign trends - Which campaign is the most popular during a specific period of time? (Line charts and/or pie charts)&lt;br /&gt;
&lt;br /&gt;
*Version statistic - The distribution of game version (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Difficulty statistic - Which level of difficulty is most played? (Pie charts)&lt;br /&gt;
&lt;br /&gt;
*Result statistic - How many victories and defeats of each campaign/scenario? We can tell the difficulty of each campaign/scenario from this statistic. (Bar charts/pie charts)&lt;br /&gt;
&lt;br /&gt;
*User statistic - How many users play the game? (Line charts)&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29955</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29955"/>
		<updated>2009-04-07T12:03:52Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* General Stats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform statistic&lt;br /&gt;
&lt;br /&gt;
*Game play trends&lt;br /&gt;
&lt;br /&gt;
*Campaign trends&lt;br /&gt;
&lt;br /&gt;
*Version statistic&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29954</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29954"/>
		<updated>2009-04-07T12:01:13Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* General Stats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
General Stats contains general game information of wesnoth.&lt;br /&gt;
&lt;br /&gt;
*Platform Statistic&lt;br /&gt;
&lt;br /&gt;
*Game play trends&lt;br /&gt;
&lt;br /&gt;
*Campaign trends&lt;br /&gt;
&lt;br /&gt;
*Version Statistic&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29948</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29948"/>
		<updated>2009-04-07T03:45:30Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Charts Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
The pre-define patters for charts has 3 component: general stats, campaign stats and unit stats.&lt;br /&gt;
&lt;br /&gt;
====General Stats====&lt;br /&gt;
&lt;br /&gt;
====Campaign Stats====&lt;br /&gt;
&lt;br /&gt;
====Unit Stats====&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29943</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29943"/>
		<updated>2009-04-06T05:37:23Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Idea for the Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===Charts Details===&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29942</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29942"/>
		<updated>2009-04-06T05:36:35Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
Apr. 1 - May. 1: Build a basic frame work which can generate most of Chart.&lt;br /&gt;
&lt;br /&gt;
Apr. 16 - Apr. 20: A trip is booked.&lt;br /&gt;
&lt;br /&gt;
May. 1 - Jun. 1: improve user interface with AJAX and CSS + HTML. In this period I will write my graduating thesis in college. &lt;br /&gt;
&lt;br /&gt;
Milestone Jun. 1: The web server is finished.&lt;br /&gt;
&lt;br /&gt;
Jun. 1 - Jul. 1: Add an aggregate table to improve the performance.&lt;br /&gt;
&lt;br /&gt;
Jul. 1 - Aug. 1: Add new features and improve the performance.&lt;br /&gt;
&lt;br /&gt;
Milestone Aug. 1: The project is finished.&lt;br /&gt;
&lt;br /&gt;
Aug.1 - The End: Test and bug fix.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
===Web Server===&lt;br /&gt;
Ruby on Rails is used for implement the web server. Ruby on Rails is best for the agile web development. The MVC framework is perfect for the project. Each table in the database is a model, and we need some controllers to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails is also very convenient for AJAX. It makes AJAX very easy to write.&lt;br /&gt;
&lt;br /&gt;
Performance is an important thing in this project. But most expense is from SQL queries in database. The web server only need to submit the queries and generate a Google Chart API URL. The performance of the queries will discuss later.&lt;br /&gt;
&lt;br /&gt;
===Data Processing and Chart Generation===&lt;br /&gt;
I am planning to use Google Chart API to generate the statistic charts.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways to generate charts. &lt;br /&gt;
&lt;br /&gt;
1. Pre-define some patterns to generate charts. E.g. the current stats.wesnoth.org is pre-defined. User can view charts generated by the patterns.&lt;br /&gt;
&lt;br /&gt;
2. Build a framework that can let user to generate the charts they want to see. E.g. If a user want to see how many campaigns played in a specific day, he/she just need to submit a a pattern to the server. Then a chart is generated. The demo in additional info is an example for the framework. User can choose result/version/platform statistic information for all games or a specific campaign.&lt;br /&gt;
&lt;br /&gt;
I will define some pattern for general statistic information and build the chart generation framework for creating custom charts.&lt;br /&gt;
&lt;br /&gt;
===User Interface===&lt;br /&gt;
AJAX is used for improving the user interface. My demo shows a small AJAX example.&lt;br /&gt;
&lt;br /&gt;
For the chart generation framework, a user friendly user interface is needed. The interface can let user select the information they want easily.&lt;br /&gt;
&lt;br /&gt;
=== Performance===&lt;br /&gt;
Since the database is very large. Aggregate tables are needed to maintain the data which is needed to generate statistic charts. When a new record is inserted, there is a program running on background which update the aggregate table. E.g. in order to generate a platform statistic chart, the aggregate table's schema is:&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE PLATFORM_INFO (campaign CHAR(30), apple INT, windows INT, unknown INT);&lt;br /&gt;
&lt;br /&gt;
When a new game record is inserted, a program will update this table based on the record.&lt;br /&gt;
&lt;br /&gt;
The background program is planned to implement in C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29197</id>
		<title>SummerOfCodeIdeas</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29197"/>
		<updated>2009-03-24T13:37:50Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: /* Implement campaign statistics reports on stats.wesnoth.org */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):&lt;br /&gt;
&lt;br /&gt;
== I want to be one of your Google Summer of Code students, what should I do... ==&lt;br /&gt;
&lt;br /&gt;
Here is a quick list of things to do to get you started&lt;br /&gt;
* Create an account on gna.org&lt;br /&gt;
* Create an account on the wesnoth forum, and tell an admin on the IRC channel to mark is as a GSoC Student account (Admins are boucman, Ivanovic, mordante, Shadow_Master, Sirp and Turuk)&lt;br /&gt;
* Join the irc channel (#wesnoth-dev on irc.freenode.net) and introduce yourself. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process (basically communication via IRC is mandatory for our project! it is the main way of &amp;quot;every day communication&amp;quot; for Wesnoth. For the same reason, it's also a good idea to regularly read the [http://wesnoth.debian.net/?C=M;O=A IRC logs].).&lt;br /&gt;
&lt;br /&gt;
* Start a wiki page about your idea, add a link on the bottom of this page and add this information on it:&lt;br /&gt;
** List your account names (gna, forum, irc nick) so that we can recognize you&lt;br /&gt;
** Fill the questionnaire on this page: [[SoC_Information_for_Google#Does_your_organization_have_an_application_template_you_would_like_to_see_students_use.3F_If_so.2C_please_provide_it_now.| List of questions to answer]]&lt;br /&gt;
** Detail your idea as much as possible, look at other students pages, and please give milestones and studies you've done&lt;br /&gt;
** Add a link to the page at the bottom of this page&lt;br /&gt;
&lt;br /&gt;
* Though not mandatory, it is highly advisable to go to the [[EasyCoding]] and [[NotSoEasyCoding]] pages and implement one of these ideas (or any idea of similar scope) so we have an idea how you work. Be sure to use your gna account when submitting these patches so we know who it is coming from. You can also implement some features from our feature request database at gna. When you implement something, also list it on your own page with a reference to the patch.&lt;br /&gt;
&lt;br /&gt;
* For working on Wesnoth you have to be able to compile trunk. To do so you should have a look at the [[WesnothSVN|page about svn]] and afterwards [[CompilingWesnoth|compile Wesnoth svn]].&lt;br /&gt;
&lt;br /&gt;
* Once you have everything done here and think your idea is okay, go to [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants page at google] to submit your application. You have to submit it before '''Date to be supplied later''' or you have no chance to get in!&lt;br /&gt;
&lt;br /&gt;
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==&lt;br /&gt;
&lt;br /&gt;
Here is only a short description of possible Ideas we have, each has a page of its own with a more detailed version on it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize implementation of WML for memory usage ===&lt;br /&gt;
&lt;br /&gt;
Based on this idea: [http://dave.wesnoth.org/?p=9] optimize WML to minimize its memory usage. High memory usage has been a problem for Wesnoth, and this project will aim to reduce it.&lt;br /&gt;
&lt;br /&gt;
=== Implement campaign statistics reports on stats.wesnoth.org ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has an infrastructure which records details of campaigns that players play into a centralized MySQL database. However, we only have rudimentary reports based on this MySQL database available at this time, at [http://stats.wesnoth.org].&lt;br /&gt;
&lt;br /&gt;
This project would involve writing a stats reporting web site which would take the data from the MySQL database and produce reports in chart and table form. Campaign designers would be able to use these reports to gather feedback on their campaigns and get ideas for improvements.&lt;br /&gt;
&lt;br /&gt;
A student could largely make their choice of infrastructure for creating the Website -- whether they prefer Python, Perl, Ruby, PHP, etc. This is a great opportunity for someone who doesn't want to dive into hardcore C++ to make a valuable contribution to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Stats Server]] - Full Version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Extending the Multiplayer server ===&lt;br /&gt;
&lt;br /&gt;
Our multiplayer community is generally strong and healthy, but we believe its growth is limited by some problems in the interface of the multiplayer lobby.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Multiplayer server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Addon server ===&lt;br /&gt;
Wesnoth has an addon server which offers users to upload user &lt;br /&gt;
made content (UMC). This allows all other users of Wesnoth&lt;br /&gt;
to easily download and install this content. The server was &lt;br /&gt;
originally written for user-made campaigns but contains a lot&lt;br /&gt;
more types of addons nowadays. Both the server side and the &lt;br /&gt;
client side need to be improved.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Addon Server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== WML validation schemes ===&lt;br /&gt;
Wesnoth uses WML as basic data structure. Over the years&lt;br /&gt;
this language has evolved and got more complex. At the&lt;br /&gt;
moment the WML is validated at runtime and in case of a&lt;br /&gt;
problem the engine stops. With schemes these problems can&lt;br /&gt;
be validated when loading the WML, making it easier to find&lt;br /&gt;
problems before running into them.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Schemes]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Write a primitive library for Formula AI ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in Wesnoth: [[FormulaAI]]&lt;br /&gt;
&lt;br /&gt;
The Wesnoth AI is used as an opponent in most campaigns, and as such is an important piece of code for the Wesnoth project. Unfortunately, because the skills required to understand and modify it are rather arcane, it is also one of the most neglected parts of the Wesnoth code. This is a place where a lot of research and useful work could be done. But keep in mind that [[WhyWritingAWesnothAIIsHard|writing an AI for Wesnoth is difficult]].&lt;br /&gt;
&lt;br /&gt;
Writing a whole AI is so complicated that we believe it can't be done in a single Summer of code. All proposals should keep that in mind and try to identify an interesting subset that would be workable in the limited time of a summer of code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas FormulaAI]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Savegame reorganization ===&lt;br /&gt;
The savegame formats of Wesnoth for single player campaigns&lt;br /&gt;
and multiplayer differ from each other. And they are processed&lt;br /&gt;
differently as well. Now there is an additional request coming&lt;br /&gt;
up: Multiplayer campaigns. The task will be to unify the savegames&lt;br /&gt;
for all types of scenarios in order to provide a maintainable code&lt;br /&gt;
again.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Savegame]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible ideas to be fleshed out ===&lt;br /&gt;
A MapGenerator rewrite - better scalable for outdoor maps, plus the possibility to define areas (similar to the caverns in the cave generator) etc.&lt;br /&gt;
&lt;br /&gt;
=== Make your own ideas ===&lt;br /&gt;
If you have your own idea the best thing is to join IRC wesnoth-dev at irc.freenode.net and discuss the idea with the developers there. If the developers think your idea is interesting and like the feature you can start to turn it into a full proposal. Once done discuss it again on IRC so the developers can accept your idea.&lt;br /&gt;
&lt;br /&gt;
== Information about our Project ==&lt;br /&gt;
The information we provided google with about our project can be looked up at the site [[SoC Information for Google]].&lt;br /&gt;
&lt;br /&gt;
Also see the [[DeveloperResources]] link (from the [[Project]] page).&lt;br /&gt;
&lt;br /&gt;
== People to bug on IRC ==&lt;br /&gt;
We have prepared a list of people with their &amp;quot;area of competence&amp;quot;. This is to give you an idea on which areas those people can be of help for you. Of course you should always just ask in the IRC chan, but those are the most likely ones to answer questions in the respective area. And here is the list:&lt;br /&gt;
&lt;br /&gt;
[[SoC People to bug on IRC]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Student pages ==&lt;br /&gt;
&lt;br /&gt;
Please add a link to your wiki page below&lt;br /&gt;
&lt;br /&gt;
==== AI ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Velory| Velory - SoC Proposal]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_AI_Improvement_Crab| Crab - SoC Proposal - AI Improvement]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Sparksteel | Sparksteel - Improving the AI engine design]]&lt;br /&gt;
&lt;br /&gt;
==== Savegame reorganization ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Euschn | Euschn - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_lmg| lmg - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
==== Extending the Multiplayer server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_rubend | rubend - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
==== Addon server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Ryochan7| Ryochan7 - Addon server]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_iyonius| iyonius - Addon server]]&lt;br /&gt;
&lt;br /&gt;
==== Optimize implementation of WML for memory usage ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_res| res -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
==== Implement campaign statistics reports on stats.wesnoth.org ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Elbin| Elbin - New campaign statistics page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Munk| Munk - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_carlestyle| carlestyle - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_nerwa| NeRwa - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code|*]]&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29196</id>
		<title>SummerOfCodeProposal nerwa</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_nerwa&amp;diff=29196"/>
		<updated>2009-03-24T13:36:35Z</updated>

		<summary type="html">&lt;p&gt;Nerwa: New page: ==Contact Information== '''''Name:''''' Zhen Lu  '''''Location:''''' Shanghai, China  '''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com  '''''Skype:''''' ne_rwa  ==Answers to th...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contact Information==&lt;br /&gt;
'''''Name:''''' Zhen Lu&lt;br /&gt;
&lt;br /&gt;
'''''Location:''''' Shanghai, China&lt;br /&gt;
&lt;br /&gt;
'''''E-Mail:''''' ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''''Skype:''''' ne_rwa&lt;br /&gt;
&lt;br /&gt;
==Answers to the Questions==&lt;br /&gt;
&lt;br /&gt;
===Basics===&lt;br /&gt;
'''1.1) Write a small introduction to yourself.'''&lt;br /&gt;
&lt;br /&gt;
My name is Zhen Lu. I'm 21. I'm a senior student from Shanghai Jiao Tong University, China. I'm major in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.2) State your preferred email address.'''&lt;br /&gt;
&lt;br /&gt;
ne [DOT] rwa [DOT] lz [AT] gmail [DOT] com&lt;br /&gt;
&lt;br /&gt;
'''1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
&lt;br /&gt;
IRC:nerwa&lt;br /&gt;
&lt;br /&gt;
Wesnoth Forum: NeRwa&lt;br /&gt;
&lt;br /&gt;
GNA: NeRwa&lt;br /&gt;
&lt;br /&gt;
'''1.4) Why do you want to participate in summer of code?'''&lt;br /&gt;
&lt;br /&gt;
I want to find something to do this summer and I want to improve my programming skills. Also I want to make contributions to open source projects.&lt;br /&gt;
&lt;br /&gt;
'''1.5) What are you studying, subject, level and school?'''&lt;br /&gt;
&lt;br /&gt;
4th year in computer science and engineering.&lt;br /&gt;
&lt;br /&gt;
'''1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
&lt;br /&gt;
No, I haven't.&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
'''2.1) What programs/software have you worked on before?'''&lt;br /&gt;
&lt;br /&gt;
Most of my projects are school projects. I built a compiler, implemented a operating system on a framework, built a SQL parser and execution engine in a database management system. I also built some web applications like an ACM-ICPC online judge system and a small search engine demo. And also I participated in TREC(Text REtrieval Conference) 2009 Enterprise Search Track.&lt;br /&gt;
&lt;br /&gt;
'''2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
&lt;br /&gt;
Yes, some of my school projects are team works. I have a internship in IBM China Research Lab, the work I did there was in a team environment. &lt;br /&gt;
 &lt;br /&gt;
'''2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
&lt;br /&gt;
No, this is the first time.&lt;br /&gt;
&lt;br /&gt;
'''2.4) Open Source'''&lt;br /&gt;
'''2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
'''2.5) Gaming experience - Are you a gamer?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I'm a gamer.&lt;br /&gt;
&lt;br /&gt;
'''2.5.1) What type of gamer are you?'''&lt;br /&gt;
&lt;br /&gt;
I think I'm pretty much like a core user.&lt;br /&gt;
&lt;br /&gt;
'''2.5.2) What type of games?'''&lt;br /&gt;
&lt;br /&gt;
I like action game, role-playing, and strategy game.&lt;br /&gt;
&lt;br /&gt;
'''2.5.3) What type of opponents do you prefer?'''&lt;br /&gt;
&lt;br /&gt;
Tough ones.&lt;br /&gt;
&lt;br /&gt;
'''2.5.4) Are you more interested in story or gameplay?'''&lt;br /&gt;
&lt;br /&gt;
I prefer gameplay to story.&lt;br /&gt;
&lt;br /&gt;
'''2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I played Wesnoth before, mostly single player. And I played multiplayer for some times.&lt;br /&gt;
&lt;br /&gt;
===Communication skills===&lt;br /&gt;
'''3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
&lt;br /&gt;
My native language is Chinese, but I can read and write English well.&lt;br /&gt;
&lt;br /&gt;
'''3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
&lt;br /&gt;
Yes, I think I'm a kind person.&lt;br /&gt;
&lt;br /&gt;
'''3.3) Do you give constructive advice?'''&lt;br /&gt;
&lt;br /&gt;
Yes, I do.&lt;br /&gt;
&lt;br /&gt;
'''3.4) Do you receive advice well?'''&lt;br /&gt;
&lt;br /&gt;
Yes, of course.&lt;br /&gt;
&lt;br /&gt;
'''3.5) Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
&lt;br /&gt;
I think I can sort useful criticisms from useless ones well.&lt;br /&gt;
&lt;br /&gt;
===Project===&lt;br /&gt;
'''4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
&lt;br /&gt;
I want to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.2) If you have invented your own project, please describe the project and the scope.'''&lt;br /&gt;
'''4.3) Why did you choose this project?'''&lt;br /&gt;
&lt;br /&gt;
I'm very interested in web application development. And I also like this game. I want to make a contribution to this project. So I choose to implement the stat report site.&lt;br /&gt;
&lt;br /&gt;
'''4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
To be filled later.&lt;br /&gt;
&lt;br /&gt;
'''4.5) Include as much technical detail about your implementation as you can'''&lt;br /&gt;
&lt;br /&gt;
I plan to implement the site using Ruby on Rails. It is best for agile web development.&lt;br /&gt;
&lt;br /&gt;
I want to use Google Chart API to generate charts and using AJAX to make UI better. More details I will present in the application.&lt;br /&gt;
&lt;br /&gt;
'''4.6) What do you expect to gain from this project?'''&lt;br /&gt;
&lt;br /&gt;
Programming skills, web development experience, communication skills and team work.&lt;br /&gt;
&lt;br /&gt;
'''4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
&lt;br /&gt;
I love this game and I want to make contribution to this game. And also add new features on the stat report site.&lt;br /&gt;
&lt;br /&gt;
===Practical considerations===&lt;br /&gt;
'''5.1) Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
&lt;br /&gt;
Subversion Yes&lt;br /&gt;
&lt;br /&gt;
C++ Yes&lt;br /&gt;
&lt;br /&gt;
Python No&lt;br /&gt;
&lt;br /&gt;
build environments I used make for once or twice.&lt;br /&gt;
&lt;br /&gt;
'''5.2) Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
&lt;br /&gt;
I use Xcode for C++/Objective-C project and Eclipse for Java project. For other, I usually use a text editor (eg. Emacs, TextMate) and terminal.&lt;br /&gt;
&lt;br /&gt;
'''5.3) What programming languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
C/C++, Java, Ruby, Objective-C, PHP&lt;br /&gt;
&lt;br /&gt;
'''5.4) What spoken languages are you fluent in?'''&lt;br /&gt;
&lt;br /&gt;
Chinese(native), English.&lt;br /&gt;
&lt;br /&gt;
'''5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
&lt;br /&gt;
I am awake from 2:00~18:00 in UTC. I will be able to be in IRC about 8~10 hours during 2:00~18:00.&lt;br /&gt;
&lt;br /&gt;
'''5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
&lt;br /&gt;
I don't mind.&lt;br /&gt;
&lt;br /&gt;
==Idea for the Project==&lt;br /&gt;
&lt;br /&gt;
to be filled.&lt;/div&gt;</summary>
		<author><name>Nerwa</name></author>
		
	</entry>
</feed>