<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.atitd.org/wiki/t5w/index.php?action=history&amp;feed=atom&amp;title=User%3ANumaris%2FTest_Pass_History</id>
	<title>User:Numaris/Test Pass History - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.atitd.org/wiki/t5w/index.php?action=history&amp;feed=atom&amp;title=User%3ANumaris%2FTest_Pass_History"/>
	<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t5w/index.php?title=User:Numaris/Test_Pass_History&amp;action=history"/>
	<updated>2026-06-06T19:02:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://www.atitd.org/wiki/t5w/index.php?title=User:Numaris/Test_Pass_History&amp;diff=86830&amp;oldid=prev</id>
		<title>Numaris: /* passes.db */</title>
		<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t5w/index.php?title=User:Numaris/Test_Pass_History&amp;diff=86830&amp;oldid=prev"/>
		<updated>2011-03-26T16:25:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;passes.db&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:25, 26 March 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot; &gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Most of the passes are held in the Passes table. Towers and Demi-Pharaoh have extra tables for holding more data. One table, TotalTowers, has no application in the Test Pass History, but could be interesting for anyone wishing to analyze the Towers history.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Most of the passes are held in the Passes table. Towers and Demi-Pharaoh have extra tables for holding more data. One table, TotalTowers, has no application in the Test Pass History, but could be interesting for anyone wishing to analyze the Towers history.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The database file needs to be &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;writable &lt;/del&gt;by the web server&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, and also needs to be located in a ''directory'' that is writable by the web server, since SQLite will create temp files there while modifying the database&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The database file needs to be &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;readable &lt;/ins&gt;by the web server.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.talescripts.org/atitdpass/dbdump.sql Nightly Database Dump]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.talescripts.org/atitdpass/dbdump.sql Nightly Database Dump]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Numaris</name></author>
	</entry>
	<entry>
		<id>http://www.atitd.org/wiki/t5w/index.php?title=User:Numaris/Test_Pass_History&amp;diff=86714&amp;oldid=prev</id>
		<title>Numaris: /* Description */</title>
		<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t5w/index.php?title=User:Numaris/Test_Pass_History&amp;diff=86714&amp;oldid=prev"/>
		<updated>2011-03-25T20:53:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Description&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:53, 25 March 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot; &gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Description ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In Tale 4, Oujoule &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;created &lt;/del&gt;a publicly-accessible CGI script that, when run, read the entirety of the System channel and parsed it into a list of test passes. It presented the results as wiki code that could be copied and pasted into a page for simple updating. Late in T4, a few changes happened in the log system, one of which was to limit the time window that can be grabbed from the log to 30 days. This broke the existing system.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In Tale 4, Oujoule &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;provided &lt;/ins&gt;a publicly-accessible CGI script that, when run, read the entirety of the System channel and parsed it into a list of test passes. It presented the results as wiki code that could be copied and pasted into a page for simple updating. Late in T4, a few changes happened in the log system, one of which was to limit the time window that can be grabbed from the log to 30 days. This broke the existing system.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As a result, this implementation is slightly more complex. It consists of two Perl scripts and an SQLite database:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As a result, this implementation is slightly more complex. It consists of two Perl scripts and an SQLite database:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Numaris</name></author>
	</entry>
	<entry>
		<id>http://www.atitd.org/wiki/t5w/index.php?title=User:Numaris/Test_Pass_History&amp;diff=86702&amp;oldid=prev</id>
		<title>Numaris: Created page with &quot;The Test Pass History is a mostly-automated collection of all test passes that are announced in-game on the System channel.  == Disclaimer ==  Source code linked below is pro...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t5w/index.php?title=User:Numaris/Test_Pass_History&amp;diff=86702&amp;oldid=prev"/>
		<updated>2011-03-25T20:21:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;The &lt;a href=&quot;/wiki/tale5/Test_Pass_History&quot; class=&quot;mw-redirect&quot; title=&quot;Test Pass History&quot;&gt;Test Pass History&lt;/a&gt; is a mostly-automated collection of all test passes that are announced in-game on the System channel.  == Disclaimer ==  Source code linked below is pro...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The [[Test Pass History]] is a mostly-automated collection of all test passes that are announced in-game on the System channel.&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
Source code linked below is provided unlicensed and without any guarantee. It is partially documented, but contains a lot of convoluted regex magic. I am not a professional programmer. If you are, the (lack of) structure/naming conventions/etc. may make you cringe.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
In Tale 4, Oujoule created a publicly-accessible CGI script that, when run, read the entirety of the System channel and parsed it into a list of test passes. It presented the results as wiki code that could be copied and pasted into a page for simple updating. Late in T4, a few changes happened in the log system, one of which was to limit the time window that can be grabbed from the log to 30 days. This broke the existing system.&lt;br /&gt;
&lt;br /&gt;
As a result, this implementation is slightly more complex. It consists of two Perl scripts and an SQLite database:&lt;br /&gt;
&lt;br /&gt;
=== getpasses.pl ===&lt;br /&gt;
&lt;br /&gt;
This script reads the last few days of the System log, checks with the database to find out which lines are new, and matches them against patterns to figure out if they represent test passes. If so, it grabs the necessary pass data and writes it to the database. I have a cron job set up that runs this script every hour. There is no output.&lt;br /&gt;
&lt;br /&gt;
[http://www.talescripts.org/atitdpass/getpasses.pl.txt Source Code]&lt;br /&gt;
&lt;br /&gt;
=== printwiki.pl ===&lt;br /&gt;
&lt;br /&gt;
This is the script that reads the pass data from the database and generates the wiki output. It is run whenever someone accesses it (via a link placed in the page itself). It obviously needs to be located where it can be executed and served by a web server.&lt;br /&gt;
&lt;br /&gt;
[http://www.talescripts.org/atitdpass/printwiki.pl.txt Source Code]&lt;br /&gt;
&lt;br /&gt;
=== passes.db ===&lt;br /&gt;
&lt;br /&gt;
This is the database. My implementation uses SQLite for simplicity. The SQL is very simple; it should be trivial to modify the scripts to use any other database back end that Perl DBI supports.&lt;br /&gt;
&lt;br /&gt;
Most of the passes are held in the Passes table. Towers and Demi-Pharaoh have extra tables for holding more data. One table, TotalTowers, has no application in the Test Pass History, but could be interesting for anyone wishing to analyze the Towers history.&lt;br /&gt;
&lt;br /&gt;
The database file needs to be writable by the web server, and also needs to be located in a ''directory'' that is writable by the web server, since SQLite will create temp files there while modifying the database.&lt;br /&gt;
&lt;br /&gt;
[http://www.talescripts.org/atitdpass/dbdump.sql Nightly Database Dump]&lt;/div&gt;</summary>
		<author><name>Numaris</name></author>
	</entry>
</feed>