Site Technology

Software

Webserver

The HTTP server in this system is Apache, just like in virtually every other sane webserver in the world.

Scripting language

The site is running on PHP code, with a few helper programs written in C++ or C (such as the GNU Diff program).

The eAccelerator extension has been installed to make it run faster.

Database

Main article: Site technology / Database

It uses a MySQL database with the InnoDB engine. (A few non-relational tables use the MyISAM engine instead.)

Wiki engine

The author experimented a bit with PHPWiki, but deemed it too complex and the learning time for its use too long and ended up writing his own Wiki engine.
It is surprisingly small and compact.

In design aspects, he imitated other Wiki systems he has experience of, such as the Sensei's Library.

For cache, the site utilizes Memcached.

Operating system

The server is running Debian GNU Linux.

More details can be seen at Cache Control.

Questions and answers

Why PHP?

PHP was chosen because the author is experienced in PHP programming and wanted/needed to get the site running in a short time.

Why InnoDB?

InnoDB was chosen because it is the only backend in MySQL that supports "foreign key" constraints. This feature was chosen to be vital for this site.

I see .cgi and .html, even .exe. Does this site really run PHP, and Linux?

Bisqwit: I am adopting several guidelines in my website design.
Instead of writing a lengthy article here, I will provide some links. They point to articles that should give you an idea what's going on.

Most important things I can think of now are:

  • If an URL needs to be changed, I keep backward compatibility. The old address will redirect to the new.
  • If the implementation technique is not relevant for users, keep it out from URLs. That's why I chose .exe and .html instead of .php. Of course, there are no .exe or .html files on my disk. They are virtual addresses that are mapped to .php files that reside in other places. Even the /nesvideos/ part of the URL is virtual.
  • If an URL has never existed, attempting to reach it is an error and should give an error message. That's why I have agent Slash which is familiar to some MSIE users.

Why a Wiki?

Bisqwit: Because I wanted to create a Wiki :)

Seriously, I wanted to shift the responsibility and to delegate work to other people than me. A Wiki seemed to be perfectly suited for that purpose. As a side effect of the design, we have changelogs of all page edits and we can conjure up any past version of pages since they were introduced into the Wiki. It's a really cool feature.

This is not a Wiki in the sense that any random visitor can edit everything on the site. But it's close, just with some access control mechanisms added.

Are there interfaces for acquiring data from the site?

If you want to acquire data from the site for machine processing, there are two options:

Hardware

The server consists of
  • Intel Core2Quad Q6600 (quad-core 2400 MHz 64-bit cpu)
  • 6 GiB of 800 MHz RAM
  • Three serial ATA harddrives totaling 1 TB (931 GiB)

But mind you, the TASvideos site is not the only thing run by the server… For example, there is a Japanese-English online tool suite also on the same server. Also, some parts of the services run utilize resources from other computers in the LAN.

Internet

The server's internet access is through a consumer-grade ADSL line with 8192 kbps downstream and 928 kbps upstream speeds. In practise, 850 KiB/s downloads and 85 KiB/s uploads are seen at most. It has a fixed IP address.

It is provided by Netsonic Oy and fully sponsored by W-Create Oy, my employer.

Author