Thread: [Aimmath-developers] installlin.html
Brought to you by:
gustav_delius,
npstrick
From: Gustav W D. <gu...@ma...> - 2003-08-30 17:29:31
|
Dear Greg, I have looked at your new linux installation instructions. Very nice! I have to now polish the windows installation instructions to be able to compete. I have two comments: 1) Tth no longer needs to be installed because it comes bundled with the AiM release. Section 4 of the installation instructions can therefore go. 2) In the section about AiM towards the end of step 2 you say that Tomcat's server.xml file is overwritten during installation. That is no longer the case. I will make sure that I upload the java and tomcat installation files to aimmath.sourceforge.net. It may have to wait until Monday though. Gustav |
From: Greg G. <gr...@ma...> - 2003-08-30 18:17:54
|
On Sat, 30 Aug 2003, Gustav W Delius wrote: > Dear Greg, > > I have looked at your new linux installation instructions. Very nice! I have > to now polish the windows installation instructions to be able to compete. Thanks! > I have two comments: > > 1) Tth no longer needs to be installed because it comes bundled with the AiM > release. Section 4 of the installation instructions can therefore go. I wondered why you had left that out of the Windows instructions ... I had thought it had something to do with the MathML though Moodle discussions etc. I just had a look in AutoConf.mpl, I see that it looks in all the default places on the system (/usr/local/bin, /usr/bin/, /bin) and then checks in the webapps/AiM directory ... very nice. I guess the only thing to say is something along those lines. > 2) In the section about AiM towards the end of step 2 you say that Tomcat's > server.xml file is overwritten during installation. That is no longer the > case. I guess I didn't understand all the discussion about this. Are you saying that the default server.xml that Tomcat provides was ok as it was? Does it by default use port 8080? Is that why the default has been changed from 80 to 8080? I was going to add some comments about this, as if one already has an installation using port 80, one has to remember to set that in ManualConfig.mpl ... otherwise admin.html, index.html and DefaultZone.mpl (in root/) are set with :8080 in their paths, and if one adds port 80 to ManualConfig.mpl afterwards and reruns AutocConfig.mpl these files are not rewritten (and you have to manually change them). Is there an advantage to using port 8080 instead of port 80? > I will make sure that I upload the java and tomcat installation files to > aimmath.sourceforge.net. It may have to wait until Monday though. Great! Thanks. Regards, Greg |
From: Gustav W D. <gu...@ma...> - 2003-08-30 18:55:42
|
> I guess I didn't understand all the discussion about this. Are you saying > that the default server.xml that Tomcat provides was ok as it was? At least in current versions of Tomcat, yes. > Does it by default use port 8080? Is that why the default has been changed > from 80 to 8080? During the installation Tomcat gave me the option to set the port. The default value provided by the installation was 8080. I don't know whether the Tomcat installation script was so intelligent to notice that I already had a web server on port 80. I just assumed Tomcat would always choose 8080. What default port did it give you? >I was going to add some comments about this, as if one > already has an installation using port 80, one has to remember to set that > in ManualConfig.mpl ... otherwise admin.html, index.html and > DefaultZone.mpl (in root/) are set with :8080 in their paths, and if one > adds port 80 to ManualConfig.mpl afterwards and reruns AutocConfig.mpl > these files are not rewritten (and you have to manually change them). Yes, you are right, something like that should be added to the instructions. > Is there an advantage to using port 8080 instead of port 80? Probably not if 80 is still free. However I have heard that on unix one needs superuser privileges to install a server on port 80 but not for installing one on port 8080. But as I said, I know nothing about unix. > > I will make sure that I upload the java and tomcat installation files to > > aimmath.sourceforge.net. It may have to wait until Monday though. Actually, I changed my mind. I would prefer not to upload the JDK with its 35MB. Sourceforge only gives us 100MB alltogether for the site. It seems to me that users who are sophisticated enough to want to be able to recompile the java sources will be competent enough to get the installation file directly from sun. I have uploaded the JRE and Tomcat already. You might want to check that they are alright. Gustav |
From: Manolis M. <ma...@ma...> - 2003-08-30 19:40:11
|
> During the installation Tomcat gave me the option to set the port. the windows version does that > > Is there an advantage to using port 8080 instead of port 80? > > Probably not if 80 is still free. However I have heard that on unix one > needs > superuser privileges to install a server on port 80 but not for installing > one > on port 8080. But as I said, I know nothing about unix. no that's not a problem... after all in linux there is always the solution to use the tomcat4 user. > >I was going to add some comments about this, as if one > > already has an installation using port 80, one has to remember to set that > > in ManualConfig.mpl ... otherwise admin.html, index.html and > > DefaultZone.mpl (in root/) are set with :8080 in their paths, and if one > > adds port 80 to ManualConfig.mpl afterwards and reruns AutocConfig.mpl > > these files are not rewritten (and you have to manually change them). > > Yes, you are right, something like that should be added to the instructions. they are not rewritten because you already had a DeafultZone... otherwise for new users its fine. As I said to my other email it will be very difficult to instruct them how to change settings .. its better if they keep their old ones. Another comment on the installation instructions: AIM it doesn't start any more from startaim.sh but from the tomcat directory/bin/startup.sh to ease testing and not stop tomcat completely one can use the following: http://localhost:8080/manager/stop?path=/AIM http://localhost:8080/manager/start?path=/AIM Manolis ps. I 'll be out of reach for a few hours... You may know that the festival is finishing and the fireworks in Edinburgh are a no-miss. More later |
From: Greg G. <gr...@ma...> - 2003-08-30 20:16:49
|
On Sat, 30 Aug 2003, Manolis Mavrikis wrote: > > During the installation Tomcat gave me the option to set the port. > > the windows version does that > > > > Is there an advantage to using port 8080 instead of port 80? > > > > Probably not if 80 is still free. However I have heard that on unix one > > needs > > superuser privileges to install a server on port 80 but not for installing > > one > > on port 8080. But as I said, I know nothing about unix. > > no that's not a problem... after all in linux there is always the solution > to use the tomcat4 user. Can you explain that please? Have you created a group or user for tomcat4? ... so that it need not run as root, or something? Up 'til now tomcat here has been running as root and hence writes various things like compiled AIM questions with root permissions. Do you avoid that? > > >I was going to add some comments about this, as if one > > > already has an installation using port 80, one has to remember to set > that > > > in ManualConfig.mpl ... otherwise admin.html, index.html and > > > DefaultZone.mpl (in root/) are set with :8080 in their paths, and if one > > > adds port 80 to ManualConfig.mpl afterwards and reruns AutocConfig.mpl > > > these files are not rewritten (and you have to manually change them). > > > > Yes, you are right, something like that should be added to the > instructions. > > they are not rewritten because you already had a DeafultZone... otherwise > for new users its fine. Are you saying that if I had run AutoConf.mpl having forgotten to set the port and so generated a DefaultZone.mpl file, that it would have been sufficient to delete the DefaultZone.mpl file, edit ManualConfig.mpl with the right port and the run AutoConf.mpl again, that admin.html, index.html and DefaultZone.mpl would be regenerated? > As I said to my other email it will be very difficult to instruct them how > to change settings .. its better if they keep their old ones. > > Another comment on the installation instructions: > AIM it doesn't start any more from startaim.sh but from the tomcat > directory/bin/startup.sh > > to ease testing and not stop tomcat completely one can use the following: > > http://localhost:8080/manager/stop?path=/AIM > http://localhost:8080/manager/start?path=/AIM Is this with any Tomcat e.g. 4.1.18 (what I currently have) ... and with port 80, I guess that becomes http://localhost/manager/stop?path=/AIM etc. ... and I guess that won't work remotely will it? i.e. with localhost replaced with the full URL. Do you have to run this as the tomcat4 user you mentioned? > ps. I 'll be out of reach for a few hours... You may know that the festival > is finishing and the fireworks in Edinburgh are a no-miss. More later I'm going to bed now ... it's late enough. I'll catch your reply tomorrow. Regards, Greg |
From: Manolis M. <ma...@ma...> - 2003-08-31 01:30:13
|
Greg asked: > Can you explain that please? Have you created a group or user for tomcat4? > ... so that it need not run as root, or something? Up 'til now tomcat here > has been running as root and hence writes various things like compiled AIM > questions with root permissions. Do you avoid that? The linux I was testing things was not so clean as I thought it would be and now I am quite confused and I can't test more things here at the moment. What happened is at some point I installed tomcat 4.1.something that came with an RPM. This creates a tomcat4 user and a tomcat4 group who has privildges to start, stop tomcat etc. Also when an application starts it gives ownership of all files to tomcat4 user. There is no RPM for 4.1.27 so I am not sure they still want things to happen this but when I installed tomcat4.1.27 I gave ownership to tomcat4 and my user (manolis) belongs to the tomcat4 group as well so I am able to copy, move, delete files etc. Perhaps all of these work with any created user and for instance one could create a user (perhaps a special one, I am not a good linux admin sorry) on their own and chown -R the whole dir to it and have the same effect... why don't you try it ? I would really want to know. > Is this with any Tomcat e.g. 4.1.18 (what I currently have) ... and with > port 80, I guess that becomes > > http://localhost/manager/stop?path=/AIM > the manager application is usually disabled you have to add something at the server.xml see http://jakarta.apache.org/tomcat/tomcat-4.1-doc/manager-howto.html and then you can do lots of goodies > I guess that won't work remotely will it? i.e. with > localhost replaced with the full URL. Do you have to run this as > the tomcat4 user you mentioned? it works remotely but it's pretty safe as it needs a password (which you set at the users xml in conf directory BTW if you do the tomcat4 user chmod then it's better to leave this directory to root) I usually have it enabled during development and then I disable it. Manolis |
From: Greg G. <gr...@ma...> - 2003-08-31 16:42:16
|
On Sun, 31 Aug 2003, Manolis Mavrikis wrote: > Greg asked: > > Can you explain that please? Have you created a group or user for tomcat4? > > ... so that it need not run as root, or something? Up 'til now tomcat here > > has been running as root and hence writes various things like compiled AIM > > questions with root permissions. Do you avoid that? > ... > What happened is at some point I installed tomcat 4.1.something that came > with an RPM. This creates a tomcat4 user and a tomcat4 group who has > privildges to start, stop tomcat etc. Also when an application starts it > gives ownership of all files to tomcat4 user. ... > Perhaps all of these work with any created user and for instance one could > create a user (perhaps a special one, I am not a good linux admin sorry) on > their own and chown -R the whole dir to it and have the same effect... why > don't you try it ? I would really want to know. Ahh! ... all makes complete sense now. Thanks Manolis for all the explanations, (sorry for the delay of my reply). Indeed, I'm sure there is nothing special about the `tomcat4' user and/or group. It could just as easily be `tomcat' or `aim' for that matter. I just checked the tomcat doc file RUNNING.txt and it explains that ports <= 1024 require root permissions to bind to (hence why with port 80, I've actually needed to run tomcat as root, as many including Gustav had suggested). What had confused me was that with 8080 being the default port that tomcat binds to, I had some sort of muddled notion that 80 was somehow an abbreviation (since that used to be the default port used in previous incarnations of AIM). Anyway, I'm sure that if you leave server.xml specifying port 8080 then all that one needs to do is add the manager to the group for tomcat (whatever was decided) ... I think I'd recommend (given the usual scenario that tomcat is used exclusively for AiM), that the user and group for the whole /usr/local/tomcat directory be set to aim. Then the manager could login as aim to start up tomcat and edit anything in the webapps directory as well. Also, if the manager as an ordinary user is in the group for aim then he/she will be able to read/write/execute anything that has those group permissions, which may actually mean that he/she will need to login as aim and do a `chmod g+..' on files (where .. is the appropriate substring or rwx needed) occasionally. > > Is this with any Tomcat e.g. 4.1.18 (what I currently have) ... and with > > port 80, I guess that becomes > > > > http://localhost/manager/stop?path=/AIM > > the manager application is usually disabled you have to add something at the > server.xml see > > http://jakarta.apache.org/tomcat/tomcat-4.1-doc/manager-howto.html > > ... > it works remotely but it's pretty safe as it needs a password (which you set > at the users xml in conf directory BTW if you do the tomcat4 user chmod then > it's better to leave this directory to root) That was easy ... as the howto explained I added a line <user name="..." password="..." roles="manager" /> for appropriate ...s in /usr/local/tomcat/conf/tomcat-users.xml and the lines <Context path="/manager" debug="0" privileged="true" docBase="/usr/local/tomcat/server/webapps/manager"/> in server.xml to activate the manager, and restarted tomcat. Then http://.../manager/stop?path=/AiM where ... is our server's URL, etc. worked fine. The beauty of this is that it closes down just AiM and leaves the other parallel installations alone ... very nice! BTW I find the stopaim.sh and startaim.sh scripts in the original webapps/ROOT/WEB-INF still happily (shuts down)/(starts up) tomcat ... I think you suggested that you needed to use /usr/local/tomcat/bin/shutdown.sh etc. ... as far as I can work out stopaim.sh and startaim.sh are simply simplified versions of shutdown.sh and startup.sh. I'm not sure how much of this we want to tell an installer of AiM. I guess I'll write some of it and if it starts looking too long and complicated, just suggest that he/she read the appropriate docs of tomcat. Regards, Greg |
From: Manolis M. <ma...@ma...> - 2003-08-31 02:19:13
|
Greg said: >>I was going to add some comments about this, as if one >>already has an installation using port 80, one has to remember to set >>that in ManualConfig.mpl ... otherwise admin.html, index.html and >> DefaultZone.mpl (in root/) are set with :8080 in their paths, and if one >> adds port 80 to ManualConfig.mpl afterwards and reruns AutocConfig.mpl >> these files are not rewritten (and you have to manually change them). Manolis said > > they are not rewritten because you already had a DeafultZone... otherwise > > for new users its fine. Greg said: > Are you saying that if I had run AutoConf.mpl having forgotten to set the > port and so generated a DefaultZone.mpl file, that it would have been > sufficient to delete the DefaultZone.mpl file, edit ManualConfig.mpl > with the right port and the run AutoConf.mpl again, that admin.html, > index.html and DefaultZone.mpl would be regenerated? If we are talking about a fresh installation then yes (I think) deleting the DefaultZone.mpl will do the job. This is from my understanding of what Neil told me before and from what I see in the code. The problem comes when you have previous subjects in this. But I 've noticed that when you use first time admin.html the subejcts will be hiden so one just needs to unhide them. Everything will work provided you kept your previous seetings ... it's ok for now. Also you have to use your previous password and email as I think that changes are not propagated to all subjects. Neil could perhaps explain this once more ... (I attach his previous email at the bottom) also I made I change that I want to consult you about. At AutoConf.mpl I changed the line setconfig('ServletURL', cat("http://",Config['FullContext'],"/Alice")): to setconfig('ServletURL', "/Alice"); I think this is better as it define the link relative to the current installation anyway and apart from helping if you tunnnel connections like I do and myserver:8080 is not the correct URL anymore it could have also reduced the problem now as one could just use the same old admin.html that she had. I think the same could happen to the DocumentURL and maybe some paths in the .m files ? Manolis Neil said: index.html and admin.html are written by the MakeLoginPage method of the DefaultZone object. This method is defined in aim/Zone.mpl, and it is invoked from aim/admin/Zone.mpl, aim/admin/ZoneAdminHome.mpl and aim/admin/ZoneStudentHome.mpl. The index.html file is constructed by gluing together the files studenthead.html and studentfoot.html, and inserting a table of subjects built from the Subjects field in the DefaultZone object. The web interface allows you to edit studenthead.html and studentfoot.html directly. Similarly, admin.html is built from zone{head,foot}.html, which can be edited directly. Currently there is no good way to copy information from an old AIM setup to a new clean installation; you just have to set up the subjects and quizzes again by hand and copy the question files across manually. Of course this is not satisfactory. |
From: Greg G. <gr...@ma...> - 2003-08-31 17:44:52
|
On Sun, 31 Aug 2003, Manolis Mavrikis wrote: > Greg said: > > Are you saying that if I had run AutoConf.mpl having forgotten to set the > > port and so generated a DefaultZone.mpl file, that it would have been > > sufficient to delete the DefaultZone.mpl file, edit ManualConfig.mpl > > with the right port and the run AutoConf.mpl again, that admin.html, > > index.html and DefaultZone.mpl would be regenerated? > > If we are talking about a fresh installation then yes (I think) deleting the > DefaultZone.mpl will do the job. This is from my understanding of what Neil > told me before and from what I see in the code. ... > Neil could perhaps explain this once more ... (I attach his previous email > at the bottom) Thanks for that ... I recall having trouble finding exactly where the writing of these files happened. > also I made I change that I want to consult you about. At AutoConf.mpl I > changed the line > > setconfig('ServletURL', cat("http://",Config['FullContext'],"/Alice")): to > setconfig('ServletURL', "/Alice"); > > I think this is better as it define the link relative to the current > installation anyway ... Ah! ... that's an interseting idea, change the definition of ServletURL to be relative instead of absolute ... that ought to work oughtn't it, since one never descends into deeper directories. How far have you tested it? Regards, Greg |
From: Greg G. <gr...@ma...> - 2003-09-01 09:07:21
|
On Sun, 31 Aug 2003, Manolis Mavrikis wrote: > > I'm not sure how much of this we want to tell an installer of AiM. > > I guess I'll write some of it and if it starts looking too long and > > complicated, just suggest that he/she read the appropriate docs of > > tomcat. > > yes .. maybe just what you wrote at the email before briefly or not at all. > > I 'll wait for your changes and after you commit I 'll comment Sorry, for the delay ... I only (just now) committed my further changes. Regards, Greg |
From: Greg G. <gr...@ma...> - 2003-09-02 03:16:17
|
On Mon, 1 Sep 2003, Greg Gamble wrote: > Sorry, for the delay ... I only (just now) committed my further changes. I don't know if you all experienced the lag ... but I sent the email some 18 hours before I received it back again. (just now) = (a little before Monday, 1 September 2003 5:07 PM WST) = (a little before Monday, 1 September 2003 9:07 AM GMT) Regards, Greg |
From: Greg G. <gr...@ma...> - 2003-09-02 07:14:58
|
Dear all, I was just formulating a multipart question not too dissimilar to Neil's primes example in doc/format.html and it occurred to me: `What happens if, for a question, the answers are all examples of the same type, in such a way that they can be entered in the answer boxes in any order, and we are using the av> tag to ensure the answers are distinct ... *but* the student can only think up one example and so enters that example for the last part, marks it, then enters the same example in the 2nd last answer box, marks it, etc. until all parts are answered?' Answer: the student gets full marks if one does not have an explicit test in each part to check that the previous parts have been answered, though once the student has finished this procedure all but the first part has red feedback saying the answer to that part is not distinct from those of the previous parts. (This is because AIM does not remark a question that has been previously marked correct and so the previous perfect score stands.) In fact, the marking algorithm of the 2nd part of Neil's example as it stood (I've since added some code to prevent it) runs into error if the first part is not answered. However, the question that I had been working would have simply allowed the student to get full marks with one example. Thus one needs to have explicit checks in each part to ensure that previous parts have been answered (if this is the rationale for the question). In Neil's example, the av> tag sets p1 to be the answer of the first part. I have added a check that p1 is of type posint (the type declared for the first part's answer) in the marking algorithm for the second part. name> primes local> lowerbound,ans1,p1,p2 shift> 7645848653 t> Recall that Euclid proved that their are infinitely many primes h> lowerbound := rnd(20..40); note> sprintf("p2>p1>%a",lowerbound) sq> t> Find a prime $p_1$ such that $p_1 > @lowerbound@$ c> posint av> p1 ap> $p_1 =$ s> ... esq> sq> t> Find another prime $p_2$ such that $p_2 > p_1$ c> posint av> p2 ap> $p_2 =$ s> [proc(ans) if not type(p1, posint) then # Make sure the student did in fact answer the first part!! `aim/t`("You haven't answered the first part yet!"); RETURN(0); elif isprime(ans) then ... Initially, I thought that perhaps some extra code should be included to prevent a student from answering later parts if the former parts were not already answered, but I think there are plenty of cases where it makes sense for students to answer the parts in any order ... so the quiz coder just needs to be aware of the potential problem and write questions accordingly. Regards, Greg |
From: Gustav W D. <gu...@ma...> - 2003-09-02 08:48:11
|
> Initially, I thought that perhaps some extra code should be included to > prevent a student from answering later parts if the former parts were > not already answered, but I think there are plenty of cases where it > makes sense for students to answer the parts in any order ... so the > quiz coder just needs to be aware of the potential problem and write > questions accordingly. I am strongly in favour of imposing the requirement on the student to answer the parts of a multi-part question in the correct order. I would be happy to have this requirement on all multi-part questions. I do not quite see the need for multi-part questions that can be answered in any order. Even in those cases where it would make sense to answer them in any order, what is wrong with following the given order? So I think the AiM code should be changed. Writing AiM questions is complicated enough as it is, having to put in extra checks into the question code is not desirable. What do others think? Many thanks to Greg for discovering this issue. Gustav |
From: Greg G. <gr...@ma...> - 2003-09-02 10:27:37
|
On Tue, 2 Sep 2003, Gustav W Delius wrote: GG> Initially, I thought that perhaps some extra code should be included to GG> prevent a student from answering later parts if the former parts were GG> not already answered, but I think there are plenty of cases where it GG> makes sense for students to answer the parts in any order ... so the GG> quiz coder just needs to be aware of the potential problem and write GG> questions accordingly. > > I am strongly in favour of imposing the requirement on the student to answer > the parts of a multi-part question in the correct order. I would be happy to > have this requirement on all multi-part questions. I do not quite see the > need for multi-part questions that can be answered in any order. Even in > those cases where it would make sense to answer them in any order, what is > wrong with following the given order? So I think the AiM code should be > changed. Writing AiM questions is complicated enough as it is, having to put > in extra checks into the question code is not desirable. > > What do others think? One of the advantages one now has is that a student, not knowing the answer to a part, can skip onto the next part. In many of my multipart I don't need to use av>, and so the parts are essentially independent. I would not want to force a student to enter a nonsense answer just so they can get onto the next part. However, what would be nice if it could be simply coded is a depends> tag to complement the av> tag, that would prevent a student answering a question part if another part's answer needed to be provided first. This would essentially do what I had done manually, i.e. have something like: sq> av> p1 s> [ ... ] esq> sq> depends> p1 av> s> [ proc(ans) if ans > p1 ... ] esq> Regards, Greg |
From: Chris S. <san...@fo...> - 2003-09-02 12:40:35
|
Gustav I disagree with the suggestion that all parts must be answered. I intend to use the multi-part questions to allow intermediate steps to be answered *if needed* by the student, under some circumstances. This will not hinder good students who can work through the multi-part problem unaided. But will allow a weak student to gain some partial credit (and feedback I hope) for intermediate answers. Chris On Tue, 2 Sep 2003, Gustav W Delius wrote: > > > Initially, I thought that perhaps some extra code should be included to > > prevent a student from answering later parts if the former parts were > > not already answered, but I think there are plenty of cases where it > > makes sense for students to answer the parts in any order ... so the > > quiz coder just needs to be aware of the potential problem and write > > questions accordingly. > > I am strongly in favour of imposing the requirement on the student to answer > the parts of a multi-part question in the correct order. I would be happy to > have this requirement on all multi-part questions. I do not quite see the > need for multi-part questions that can be answered in any order. Even in > those cases where it would make sense to answer them in any order, what is > wrong with following the given order? So I think the AiM code should be > changed. Writing AiM questions is complicated enough as it is, having to put > in extra checks into the question code is not desirable. > > What do others think? > > Many thanks to Greg for discovering this issue. > > Gustav > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Aimmath-developers mailing list > Aim...@li... > https://lists.sourceforge.net/lists/listinfo/aimmath-developers > |
From: Gustav W D. <gu...@ma...> - 2003-09-02 08:56:12
|
I had noticed the same delay with some of my messages. One message that I sent on Saturday afternoon arrived yesterday night. That is a delay of over 30 hours! I hope SourceForge gets its act together soon or we will have to move our mailing list. Gustav > -----Original Message----- > From: aim...@li... > [mailto:aim...@li...]On Behalf Of Greg > Gamble > Sent: 02 September 2003 04:16 > To: AIM developers > Subject: Re: [Aimmath-developers] installlin.html > > > On Mon, 1 Sep 2003, Greg Gamble wrote: > > Sorry, for the delay ... I only (just now) committed my further changes. > > I don't know if you all experienced the lag ... but I sent the email some > 18 hours before I received it back again. > > (just now) = (a little before Monday, 1 September 2003 5:07 PM WST) > = (a little before Monday, 1 September 2003 9:07 AM GMT) > > Regards, > Greg > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Aimmath-developers mailing list > Aim...@li... > https://lists.sourceforge.net/lists/listinfo/aimmath-developers > |