You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(16) |
Nov
(10) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(34) |
Feb
(12) |
Mar
(21) |
Apr
|
May
(5) |
Jun
(13) |
Jul
(50) |
Aug
(62) |
Sep
(72) |
Oct
(17) |
Nov
(16) |
Dec
(19) |
2006 |
Jan
(26) |
Feb
(9) |
Mar
|
Apr
(8) |
May
(5) |
Jun
(7) |
Jul
(21) |
Aug
(33) |
Sep
(17) |
Oct
(4) |
Nov
(9) |
Dec
|
2007 |
Jan
|
Feb
(4) |
Mar
|
Apr
|
May
(6) |
Jun
(16) |
Jul
(8) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(2) |
Dec
(2) |
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
(11) |
Aug
(6) |
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
2014 |
Jan
(2) |
Feb
(4) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2016 |
Jan
(4) |
Feb
(4) |
Mar
(3) |
Apr
|
May
(1) |
Jun
(1) |
Jul
(1) |
Aug
(2) |
Sep
(1) |
Oct
(1) |
Nov
(1) |
Dec
|
2017 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: John J. <jj...@as...> - 2005-09-16 17:14:43
|
Oops, I meant to send this to the list originally. John |
From: Arnold P. <ap...@ma...> - 2005-09-16 14:59:20
|
At 10:02 AM 9/16/2005, P Gavin LaRose wrote: Hi, This sounds like a good idea and a number of people have asked for something along these lines. Another method of doing this would be to have $mail{feedbackRecipients} be a ref to a user defined procedure which takes as parameters e.g. [CourseName] [SectionNum] [RecitationNum] [User Name] [setNum] [probNum] and outputs a ref to an array of email addresses. If we do this, the procedure should also allow the cc field to be filled in (e.g. send email to a TA with a cc to a prof). Also the procedure could generate a subject line (say with a default subject line as we do now with the addition of [section] [recitation] if the generated subject line is null). The default procedure would do just what we do now except that I would add [section] [recitation] to the subject line. This would be more flexible, but I'm not sure it's worth the trouble --- how many people would make use of it. If we do it, we should provide a few standard examples (e.g. email goes to prof a or b depending on course/section). Just doing what Gavin suggests would satisfy most users. Arnie >Hi all, > >I'd like opinions on the desirability of the following, and, if it's >desirable, suggestions for a better way of doing it. > >Currently the WeBWorK system generates feedback e-mails with the subject line >WeBWorK feedback from [coursename]: [User Name] set [setNum]/prob [probNum] > >We always have some big courses where there are multiple sections of >the course which have different instructors or TAs. It would be >convenient for those courses to have the subject line to be something like > >WeBWorK feedback [CourseName] ([SectionNum]-[RecitationNum]): [User >Name] set [setNum]/prob [probNum] > >so that instructors could filter their incoming WeBWorK feedback >e-mail to isolate those from students in their section(s). > >In the past I've done this by just hacking the code in Feedback.pm >to accomplish this, but it seems it might be better to have a >setting in global.conf or course.conf that allows the customization >of the feedback subject line. e.g., using some sort of format >characters---say, > %c = course name > %u = user name > %s = set number > %p = problem number > %x = section number > %r = recitation number >then the default subject line could be > $mail{subjectLine} = 'WeBWorK feedback from %c: %u set %s/prob %p'; >and in course.conf it could be reset, if desirable, to something else (for me, > $mail{subjectLine} = 'WeBWorK feedback %c (%x-%r): %u set %s/prob %p'; >). > >This would require adding the $mail{subjectLine} value to >global.conf file, and doing some substitutions on that in Feedback.pm. > >Does this seem like a good idea? If so, is there a better way of doing it? > >(The other option to resolve my problem would be to associate >instructors in a course with sections within the course, thereby >allowing e-mail to be directed to them, rather than to all >instructors of the course. Would this be better or worse than the above?) > >Thanks, >Gavin > >-- >P. Gavin LaRose, Ph.D. Program Manager (Instructional Tech.) >Math Dept., University of Michigan >gl...@um... "There's no use in trying," [Alice] >734.764.6454 said. "One Can't believe impossible >http://www.math.lsa.umich.edu/~glarose/ things." "I daresay you haven't had > much practice," said the Queen. > - Lewis Carrol > > >------------------------------------------------------- >SF.Net email is sponsored by: >Tame your development challenges with Apache's Geronimo App Server. >Download it for free - -and be entered to win a 42" plasma tv or your very >own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php >_______________________________________________ >OpenWeBWorK-Devel mailing list >Ope...@li... >https://lists.sourceforge.net/lists/listinfo/openwebwork-devel Prof. Arnold K. Pizer Dept. of Mathematics University of Rochester Rochester, NY 14627 (585) 275-7767 |
From: P G. L. <gl...@um...> - 2005-09-16 14:02:36
|
Hi all, I'd like opinions on the desirability of the following, and, if it's desirable, suggestions for a better way of doing it. Currently the WeBWorK system generates feedback e-mails with the subject line WeBWorK feedback from [coursename]: [User Name] set [setNum]/prob [probNum] We always have some big courses where there are multiple sections of the course which have different instructors or TAs. It would be convenient for those courses to have the subject line to be something like WeBWorK feedback [CourseName] ([SectionNum]-[RecitationNum]): [User Name] set [setNum]/prob [probNum] so that instructors could filter their incoming WeBWorK feedback e-mail to isolate those from students in their section(s). In the past I've done this by just hacking the code in Feedback.pm to accomplish this, but it seems it might be better to have a setting in global.conf or course.conf that allows the customization of the feedback subject line. e.g., using some sort of format characters---say, %c = course name %u = user name %s = set number %p = problem number %x = section number %r = recitation number then the default subject line could be $mail{subjectLine} = 'WeBWorK feedback from %c: %u set %s/prob %p'; and in course.conf it could be reset, if desirable, to something else (for me, $mail{subjectLine} = 'WeBWorK feedback %c (%x-%r): %u set %s/prob %p'; ). This would require adding the $mail{subjectLine} value to global.conf file, and doing some substitutions on that in Feedback.pm. Does this seem like a good idea? If so, is there a better way of doing it? (The other option to resolve my problem would be to associate instructors in a course with sections within the course, thereby allowing e-mail to be directed to them, rather than to all instructors of the course. Would this be better or worse than the above?) Thanks, Gavin -- P. Gavin LaRose, Ph.D. Program Manager (Instructional Tech.) Math Dept., University of Michigan gl...@um... "There's no use in trying," [Alice] 734.764.6454 said. "One Can't believe impossible http://www.math.lsa.umich.edu/~glarose/ things." "I daresay you haven't had much practice," said the Queen. - Lewis Carrol |
From: John J. <jj...@as...> - 2005-09-15 04:07:33
|
It doesn't happen for me with the cvs version. That function is defined in several places, so it would make sense to just use one of them (like the one in ContentGenerator.pm) and remove the rest. That would probably also cure the problem. John William Ziemer wrote: > I just wiped my webwork clean (it was a mishmash of custom code and > webwork) and did a fresh 2.1.3 install via cvs. > > Clicking on "Statistics" brings up the error message that > underscore2nbsp is undefined. Go back, click again and no problems. > This happens the first time students stats are requested as well. > (multiple platforms, multiple browsers) > I am thinking that this a mod_perl problem/feature. Have you seen it? > > Error message: > > Warning messages > > Error messages > > Undefined subroutine > &WeBWorK::ContentGenerator::Instructor::Stats::underscore2nbsp called > at /var/www/webwork/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ > Stats.pm line 115. > Call stack > > The information below can help locate the source of the problem. > > in WeBWorK::ContentGenerator::Instructor::Stats::siblings called at > line 152 of /var/www/webwork/webwork2/lib/WeBWorK/Template.pm > in WeBWorK::Template::template called at line 439 of /var/www/webwork/ > webwork2/lib/WeBWorK/ContentGenerator.pm > in WeBWorK::ContentGenerator::content called at line 174 of /var/www/ > webwork/webwork2/lib/WeBWorK/ContentGenerator.pm > in WeBWorK::ContentGenerator::go called at line 303 of /var/www/ > webwork/webwork2/lib/WeBWorK.pm > > ---------------------------------- > William Ziemer > Dept. of Mathematics and Statistics > CSULB > wz...@cs... > > > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. > Download it for free - -and be entered to win a 42" plasma tv or your > very > own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > _______________________________________________ > OpenWeBWorK-Devel mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/openwebwork-devel |
From: William Z. <wz...@cs...> - 2005-09-14 22:02:37
|
I just wiped my webwork clean (it was a mishmash of custom code and webwork) and did a fresh 2.1.3 install via cvs. Clicking on "Statistics" brings up the error message that underscore2nbsp is undefined. Go back, click again and no problems. This happens the first time students stats are requested as well. (multiple platforms, multiple browsers) I am thinking that this a mod_perl problem/feature. Have you seen it? Error message: Warning messages Error messages Undefined subroutine &WeBWorK::ContentGenerator::Instructor::Stats::underscore2nbsp called at /var/www/webwork/webwork2/lib/WeBWorK/ContentGenerator/Instructor/ Stats.pm line 115. Call stack The information below can help locate the source of the problem. in WeBWorK::ContentGenerator::Instructor::Stats::siblings called at line 152 of /var/www/webwork/webwork2/lib/WeBWorK/Template.pm in WeBWorK::Template::template called at line 439 of /var/www/webwork/ webwork2/lib/WeBWorK/ContentGenerator.pm in WeBWorK::ContentGenerator::content called at line 174 of /var/www/ webwork/webwork2/lib/WeBWorK/ContentGenerator.pm in WeBWorK::ContentGenerator::go called at line 303 of /var/www/ webwork/webwork2/lib/WeBWorK.pm ---------------------------------- William Ziemer Dept. of Mathematics and Statistics CSULB wz...@cs... |
From: Davide P. C. <dp...@un...> - 2005-09-14 01:28:04
|
> I think it would be good idea to make a news announcement on the > bulletin board telling those experiencing problems with > numerical compare with strings to either set useOldAnswerEvaluators > to 0 or to update the appropriate files. (which are?) Just pg/macros/PGanswermacros.pl should do it. > I'm still a little overwhelmed getting things back on an even keel > with hosted.webwork, so it may be a day or two before I can > do this. You can do in advance if you have time, or if you have > time to write up the explanation I'll post it. Otherwise I can > write up the explanation of how to make the fix and post it > sometime Thursday or Friday. OK, I'll see if I have time tomorrow. Davide |
From: Michael G. <ga...@ma...> - 2005-09-14 01:22:16
|
I think it would be good idea to make a news announcement on the bulletin board telling those experiencing problems with numerical compare with strings to either set useOldAnswerEvaluators to 0 or to update the appropriate files. (which are?) I'm still a little overwhelmed getting things back on an even keel with hosted.webwork, so it may be a day or two before I can do this. You can do in advance if you have time, or if you have time to write up the explanation I'll post it. Otherwise I can write up the explanation of how to make the fix and post it sometime Thursday or Friday. Thanks much. Take care, Mike On Sep 13, 2005, at 9:03 PM, Davide P. Cervone wrote: >> Thanks, Davide. Sorry to have caused the trouble. >> > > No problem; I didn't mean to accuse you of anything, just pointing > out where the trouble creeped in. > > Do you have a sense of how many sites are using the parser-based > versions of num_cmp versus the traditional versions? This error > will affect any problem that uses strings and has a string-valued > answer, so could potentially cause problems for a lot of people if > they are using the old answer macros. (This was in the 2.1.3 > release, wasn't it?) Do they need to be informed? > > Davide > > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App > Server.Download it for free - -and be entered to win a 42" plasma > tv or your very > own Sony(tm)PSP. Click here to play: http://sourceforge.net/ > geronimo.php > _______________________________________________ > OpenWeBWorK-Devel mailing list > Ope...@li... > https://lists.sourceforge.net/lists/listinfo/openwebwork-devel > "Only dead fish swim with the stream." |
From: Davide P. C. <dp...@un...> - 2005-09-14 01:03:57
|
> Thanks, Davide. Sorry to have caused the trouble. No problem; I didn't mean to accuse you of anything, just pointing out where the trouble creeped in. Do you have a sense of how many sites are using the parser-based versions of num_cmp versus the traditional versions? This error will affect any problem that uses strings and has a string-valued answer, so could potentially cause problems for a lot of people if they are using the old answer macros. (This was in the 2.1.3 release, wasn't it?) Do they need to be informed? Davide |
From: Michael G. <ga...@ma...> - 2005-09-14 00:34:08
|
Thanks, Davide. Sorry to have caused the trouble. When I get a chance I'll grep through the code and see if there are any other uses of str_cmp which are affected by this change. Take care, Mike On Sep 13, 2005, at 10:10 AM, Davide P.Cervone wrote: >> I'm hoping you can help me out. I'm getting a bug on the >> following problem below whenever 'DNE' is entered as an answer. >> > > It turns out this is a result of your having updated the str_cmp > answer checker to return an AnswerEvaluator object rather than a > CODE reference. The check_string filter uses str_cmp the check the > answer, but uses it as a CODE reference, so I changed that to > $ans_eval->evaluate($ans) and that took care of it. I haven't > looked to see that there aren't other places where this might occur. > > Davide > > "Only dead fish swim with the stream." |
From: John J. <jj...@as...> - 2005-09-13 22:15:31
|
Michael Gage wrote: > There is a typo in > > /ProblemLibrary/ma117DB/set1/srw1_1_57.pg > > There is an extra left brace in the first expression. dvipng glides > right over it, but jsMath and TeX output catch it. For the moment, the procedure is to e-mail me. I just removed the extraneous brace and updated the tarball I have posted. We had talked about setting up a cvs at Rochester. At one time, we were thinking of multiple categories of files (untagged, tagged but not cleaned, tagged and cleaned) and then moving files around. The last I recall, I said that we just needed a simple cvs, in part, because it looked like there was not going to be funds for extensive cleaning of problems. Currently, I keep tagged problems away from untagged ones. But, it would not be a big problem to have them together. Untagged problems would not be visible through the problem library interface, but they would not be causing much harm either. So, maybe we should go ahead and make a ProblemLibrary cvs at Rochester, and I can populate it with what I currently have. John |
From: Michael G. <ga...@ma...> - 2005-09-13 19:06:52
|
There is a typo in /ProblemLibrary/ma117DB/set1/srw1_1_57.pg There is an extra left brace in the first expression. dvipng glides right over it, but jsMath and TeX output catch it. Take care, Mike |
From: Davide P.C. <dp...@un...> - 2005-09-13 14:10:43
|
> I'm hoping you can help me out.=A0 I'm getting a bug on the following=20= > problem below whenever 'DNE' is entered as an answer. It turns out this is a result of your having updated the str_cmp answer=20= checker to return an AnswerEvaluator object rather than a CODE=20 reference. The check_string filter uses str_cmp the check the answer,=20= but uses it as a CODE reference, so I changed that to=20 $ans_eval->evaluate($ans) and that took care of it. I haven't looked=20 to see that there aren't other places where this might occur. Davide |
From: Michael G. <ga...@ma...> - 2005-09-13 04:19:15
|
Thanks very much John. That was the problem. I was pretty sure it was a flag set somewhere. I'm not sure why the old macros couldn't handle this, but I'm not going to worry too much about it. Things seem to be working well now. Take care, Mike On Sep 12, 2005, at 11:30 PM, John Jones wrote: > Hi Mike, > > For what its worth, this works fine if I use the parser based > version of the macros. I get the errors only if I have > useOldAnswerMacros=1. > > John > > > Michael Gage wrote: >> Hi Davide, >> >> I'm hoping you can help me out. I'm getting a bug on the >> following problem below whenever 'DNE' is entered as an answer. >> >> Do you recognize this as some configuration flag I'm missing? I >> have the pg directory up to the latest CVS HEAD. >> I'm also seeing this error on devel which wasn't affected by the >> latest crash. >> >> Rolling back the pg directory a month doesn't seem to affect the >> problem -- it is there in either case. >> >> I've listed the error message below the problem. It would help if >> you could try this out >> on your machine and let me know whether it works. I'm puzzled as >> to why these problems >> have stopped working on all three machine (devel, hosted and math) >> particularly since not much has been going on >> on devel. >> >> Thanks much. >> >> Take care, >> >> Mike >> >> >> DOCUMENT(); # This should be the first executable line in >> the problem. >> >> loadMacros( >> "PG.pl", >> "PGbasicmacros.pl", >> "PGchoicemacros.pl", >> "PGanswermacros.pl", >> "PGgraphmacros.pl", >> "PGauxiliaryFunctions.pl" >> ); >> >> TEXT(beginproblem()); >> $showPartialCorrectAnswers = 1; >> BEGIN_TEXT >> Enter DNE or a number \{ans_rule\} >> $PAR >> Enter DNE or a number \{ans_rule\} >> >> END_TEXT >> >> ANS(num_cmp('DNE', strings=>['DNE'])) ; >> ANS(num_cmp(5, strings=>['DNE'])) ; >> >> ENDDOCUMENT(); # This should be the last executable line in >> the problem. >> >> ##### >> Warning messages >> >> Error in Translator.pm::process_answers: Answer AnSwEr1: |dne| >> Not a CODE reference at line 4015 of (eval 366) >> Died within main::check_strings called at line 545 of [PG]/lib/ >> AnswerHash.pm >> from within AnswerEvaluator::evaluate called at line 1 of (eval 785) >> Error in Translator.pm::process_answers: Answer AnSwEr1: >> Answer evaluators must return a hash or an AnswerHash type, not >> type || at /home/gage/webwork/pg/lib/WeBWorK/PG/Translator.pm line >> 1158 >> Use of uninitialized value in numeric ge (>=) at /home/gage/ >> webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm >> line 252. >> Use of uninitialized value in pattern match (m//) at /home/gage/ >> webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm >> line 253. >> Use of uninitialized value in numeric ge (>=) at /home/gage/ >> webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm >> line 254. >> Use of uninitialized value in numeric gt (>) at /home/gage/webwork/ >> webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm line 254. >> Use of uninitialized value in numeric gt (>) at /home/gage/webwork/ >> webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm line 257. >> >> "Only dead fish swim with the stream." >> >> > "Only dead fish swim with the stream." |
From: John J. <jj...@as...> - 2005-09-13 03:29:03
|
Hi Mike, For what its worth, this works fine if I use the parser based version of the macros. I get the errors only if I have useOldAnswerMacros=1. John Michael Gage wrote: > Hi Davide, > > I'm hoping you can help me out. I'm getting a bug on the following > problem below whenever 'DNE' is entered as an answer. > > Do you recognize this as some configuration flag I'm missing? I have > the pg directory up to the latest CVS HEAD. > I'm also seeing this error on devel which wasn't affected by the > latest crash. > > Rolling back the pg directory a month doesn't seem to affect the > problem -- it is there in either case. > > I've listed the error message below the problem. It would help if you > could try this out > on your machine and let me know whether it works. I'm puzzled as to > why these problems > have stopped working on all three machine (devel, hosted and math) > particularly since not much has been going on > on devel. > > Thanks much. > > Take care, > > Mike > > > DOCUMENT(); # This should be the first executable line in the > problem. > > loadMacros( > "PG.pl", > "PGbasicmacros.pl", > "PGchoicemacros.pl", > "PGanswermacros.pl", > "PGgraphmacros.pl", > "PGauxiliaryFunctions.pl" > ); > > TEXT(beginproblem()); > $showPartialCorrectAnswers = 1; > BEGIN_TEXT > Enter DNE or a number \{ans_rule\} > $PAR > Enter DNE or a number \{ans_rule\} > > END_TEXT > > ANS(num_cmp('DNE', strings=>['DNE'])) ; > ANS(num_cmp(5, strings=>['DNE'])) ; > > ENDDOCUMENT(); # This should be the last executable line in the > problem. > > ##### > > *Warning messages* > > * Error in Translator.pm::process_answers: Answer AnSwEr1: |dne| > * Not a CODE reference at line 4015 of (eval 366) > Died within main::check_strings called at line 545 of > [PG]/lib/AnswerHash.pm > from within AnswerEvaluator::evaluate called at line 1 of (eval 785) > * Error in Translator.pm::process_answers: Answer AnSwEr1: > * Answer evaluators must return a hash or an AnswerHash type, not > type || at /home/gage/webwork/pg/lib/WeBWorK/PG/Translator.pm > line 1158 > * Use of uninitialized value in numeric ge (>=) at > /home/gage/webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm > line 252. > * Use of uninitialized value in pattern match (m//) at > /home/gage/webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm > line 253. > * Use of uninitialized value in numeric ge (>=) at > /home/gage/webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm > line 254. > * Use of uninitialized value in numeric gt (>) at > /home/gage/webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm > line 254. > * Use of uninitialized value in numeric gt (>) at > /home/gage/webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm > line 257. > > > "Only dead fish swim with the stream." > > |
From: Michael G. <ga...@ma...> - 2005-09-13 03:00:20
|
Hi Davide, I'm hoping you can help me out. I'm getting a bug on the following problem below whenever 'DNE' is entered as an answer. Do you recognize this as some configuration flag I'm missing? I have the pg directory up to the latest CVS HEAD. I'm also seeing this error on devel which wasn't affected by the latest crash. Rolling back the pg directory a month doesn't seem to affect the problem -- it is there in either case. I've listed the error message below the problem. It would help if you could try this out on your machine and let me know whether it works. I'm puzzled as to why these problems have stopped working on all three machine (devel, hosted and math) particularly since not much has been going on on devel. Thanks much. Take care, Mike DOCUMENT(); # This should be the first executable line in the problem. loadMacros( "PG.pl", "PGbasicmacros.pl", "PGchoicemacros.pl", "PGanswermacros.pl", "PGgraphmacros.pl", "PGauxiliaryFunctions.pl" ); TEXT(beginproblem()); $showPartialCorrectAnswers = 1; BEGIN_TEXT Enter DNE or a number \{ans_rule\} $PAR Enter DNE or a number \{ans_rule\} END_TEXT ANS(num_cmp('DNE', strings=>['DNE'])) ; ANS(num_cmp(5, strings=>['DNE'])) ; ENDDOCUMENT(); # This should be the last executable line in the problem. ##### Warning messages Error in Translator.pm::process_answers: Answer AnSwEr1: |dne| Not a CODE reference at line 4015 of (eval 366) Died within main::check_strings called at line 545 of [PG]/lib/ AnswerHash.pm from within AnswerEvaluator::evaluate called at line 1 of (eval 785) Error in Translator.pm::process_answers: Answer AnSwEr1: Answer evaluators must return a hash or an AnswerHash type, not type || at /home/gage/webwork/pg/lib/WeBWorK/PG/Translator.pm line 1158 Use of uninitialized value in numeric ge (>=) at /home/gage/webwork/ webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm line 252. Use of uninitialized value in pattern match (m//) at /home/gage/ webwork/webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm line 253. Use of uninitialized value in numeric ge (>=) at /home/gage/webwork/ webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm line 254. Use of uninitialized value in numeric gt (>) at /home/gage/webwork/ webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm line 254. Use of uninitialized value in numeric gt (>) at /home/gage/webwork/ webwork-modperl/lib/WeBWorK/ContentGenerator/Problem.pm line 257. "Only dead fish swim with the stream." |
From: Davide P. C. <dp...@un...> - 2005-09-10 16:11:47
|
> here are the file-scoped lexicals that are hanging around, > potentially causing similar problems. (That is, if they get > modified. If they're just being used as constants, then in most > cases we can replace them with 'use constant', or maybe use a real > constant class that uses a tied scalar.) Fortunately, most of it is > in WebworkWebservice, which isn't production code yet, or in PG, > where I'm not sure if it's a problem, since every problem has its > own environment. The ones in Parser and Value are almost all constants, plus a few that are computed and then retain their same value. There is one exception, however, which is is $Value::context, that is a reference to the current Context hash. (This is changed by the Context() function.) It would take some doing to convert that to a thread-safe mechanism, I think. Davide |
From: Sam H. <sh...@ma...> - 2005-09-10 13:32:27
|
On Sep 9, 2005, at 21:03, Davide P.Cervone wrote: >>>>> (I'm not sure why it is necessary to make a local variable for >>>>> LOG, but at least it works now.) >>>> We want WW to be thread safe, so that when we port it to Apache >>>> 2 (my next major project), people can run it under the threaded >>>> MPM. >>> OK. I'll keep that in mind as I work on other parts. I guess >>> that means most of the other file access code will have to be >>> modified similarly. >> Most of the file access code already uses lexical variables. > > A quick grep in webwork2/lib/WeBWorK turned up the following file > references that don't seem to be localized: > > [snip -- 27 examples of thread-unsafe filehandles] > > So it looks like there are still a few out there to be taken care of. Yikes -- it appears so. In addition to those places, we should look at the places where the filehandle's typeglob has been localized before the open() call -- these are threadsafe, but dynamic scope isn't really what we want here. Also, here are the file-scoped lexicals that are hanging around, potentially causing similar problems. (That is, if they get modified. If they're just being used as constants, then in most cases we can replace them with 'use constant', or maybe use a real constant class that uses a tied scalar.) Fortunately, most of it is in WebworkWebservice, which isn't production code yet, or in PG, where I'm not sure if it's a problem, since every problem has its own environment. -sam [sh002i@devel] work$ grep -r '^my\b' webwork2/lib pg/lib webwork2/lib/PSH.pm:my() variables. webwork2/lib/WeBWorK/ContentGenerator/Instructor/FileManager.pm:my % uploadDir = ( webwork2/lib/WeBWorK/ContentGenerator/Instructor/SendMail.pm:my $UPDATE_SETTINGS_BUTTON = "Update settings and refresh page"; # handle submit value idiocy webwork2/lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm:my % problib; ## filled in in global.conf webwork2/lib/WeBWorK/ContentGenerator/Instructor/SetMaker.pm:my % ignoredir = ( webwork2/lib/WebworkWebservice/MathTranslators.pm:my $debugOn = 1; webwork2/lib/WebworkWebservice/MathTranslators.pm:my $PASSWORD = $WebworkWebservice::PASSWORD; webwork2/lib/WebworkWebservice/MathTranslators.pm:my $TEMPDIRECTORY = $ce->{webworkDirs}->{htdocs_temp}; webwork2/lib/WebworkWebservice/MathTranslators.pm:my $TEMP_BASE_URL = $ce->{webworkURLs}->{htdocs_temp}; webwork2/lib/WebworkWebservice/MathTranslators.pm:my $externalLatexPath = $ce->{externalPrograms}->{latex}; webwork2/lib/WebworkWebservice/MathTranslators.pm:my $externalpdflatexPath = $ce->{externalPrograms}->{pdflatex};; webwork2/lib/WebworkWebservice/MathTranslators.pm:my $tmp_directory_permission = $Global::tmp_directory_permission; webwork2/lib/WebworkWebservice/MathTranslators.pm:my $numericalGroupID =$Global::numericalGroupID; # group ID for webadmin webwork2/lib/WebworkWebservice/RenderProblem.pm:my $debugXmlCode=1; # turns on the filter for debugging XMLRPC and SOAP code webwork2/lib/WebworkWebservice/RenderProblem.pm:my $COURSE_TEMP_DIRECTORY = $ce->{courseDirs}->{html_tmp}; webwork2/lib/WebworkWebservice/RenderProblem.pm:my $COURSE_TEMP_URL = $HOSTURL.$ce->{courseURLs}-> {html_tmp}; webwork2/lib/WebworkWebservice/RenderProblem.pm:my $pgMacrosDirectory = $ce->{pg_dir}.'/macros/'; webwork2/lib/WebworkWebservice/RenderProblem.pm:my $macroDirectory =$ce->{courseDirs}->{macros}.'/'; webwork2/lib/WebworkWebservice/RenderProblem.pm:my $templateDirectory = $ce->{courseDirs}->{templates}; webwork2/lib/WebworkWebservice/RenderProblem.pm:my % PG_environment = $ce->{pg}->{specialPGEnvironmentVars}; pg/lib/AnswerHash.pm:my %fields = ( 'score' => undef, pg/lib/Circle.pm:my %fields =( pg/lib/Complex1.pm:my ( $i, $ip2, %logn ); pg/lib/Complex1.pm:my @trig = qw( pg/lib/Complex1.pm:my $package = 'Complex1'; pg/lib/Complex1.pm:my $display = 'cartesian'; # Default display format pg/lib/Complex1.pm:my $eps = 1e-14; # Epsilon pg/lib/Complex1.pm:my %gcd; pg/lib/Fraction.pm:my %fields = ( pg/lib/Fun.pm:my $GRAPH_REFERENCE = "WWPlot"; pg/lib/Fun.pm:my $FUNCTION_REFERENCE = "Fun"; pg/lib/Fun.pm:my %fields =( pg/lib/Label.pm:my %fields =( pg/lib/List.pm:my %fields = ( pg/lib/PGrandom.pm:my $multiplier = 69069; pg/lib/PGrandom.pm:my $translate = 1; pg/lib/PGrandom.pm:my $modulus = 2**32; pg/lib/Parser.pm:my $pkg = "Parser"; pg/lib/Regression.pm:my $nan= "NaN"; pg/lib/Units.pm:my %fundamental_units = ('factor' => 1, pg/lib/Units.pm:my $PI = 4*atan2(1,1); pg/lib/Units.pm:my %known_units = ('m' => { pg/lib/Value.pm:my $pkg = 'Value'; pg/lib/VectorField.pm:my $GRAPH_REFERENCE = "WWPlot"; pg/lib/VectorField.pm:my $VECTORFIELD_REFERENCE = "VectorField"; pg/lib/VectorField.pm:my %fields =( pg/lib/WWPlot.pm:my $last_image_number=0; #class variable. Keeps track of how many images have been made. pg/lib/WWPlot.pm:my %fields = ( # initialization only!!! pg/lib/ww_strict.pm:my %bitmask = ( pg/lib/ww_strict.pm:my $default_bits = bits(qw(refs subs vars)); pg/lib/Parser/Context.pm:my $pkg = "Parser::Context"; pg/lib/Parser/Context.pm:my $userContext; pg/lib/Parser/Context/Default.pm:my $infinity = Value::Infinity->new(); pg/lib/Parser/Context/Functions.pm:my %Category = ( pg/lib/Parser/Legacy/LimitedNumeric.pm:my $context = $Parser::Context::Default::context{Numeric}->copy; pg/lib/Parser/Legacy/Numeric.pm:my $context = $Parser::Context::Default::context{Numeric}->copy; pg/lib/Parser/List/Vector.pm:my $ijk_string = ['i','j','k','0']; pg/lib/Parser/List/Vector.pm:my $ijk_TeX = ['\boldsymbol {i}','\boldsymbol{j}','\boldsymbol{k}','\boldsymbol(0)']; pg/lib/Value/AnswerChecker.pm:my %tth_delim = ( pg/lib/Value/AnswerChecker.pm:my @ans_defaults = (showCoodinateHints => 0, checker => sub {0}); pg/lib/Value/Complex.pm:my $pkg = 'Value::Complex'; pg/lib/Value/Context.pm:my $pkg = "Value::Context"; pg/lib/Value/Formula.pm:my $pkg = 'Value::Formula'; pg/lib/Value/Formula.pm:my $UNDEF = bless {}, "UNDEF"; pg/lib/Value/Infinity.pm:my $pkg = 'Value::Infinity'; pg/lib/Value/Interval.pm:my $pkg = 'Value::Interval'; pg/lib/Value/List.pm:my $pkg = 'Value::List'; pg/lib/Value/Matrix.pm:my $pkg = 'Value::Matrix'; pg/lib/Value/Point.pm:my $pkg = 'Value::Point'; pg/lib/Value/Real.pm:my $pkg = 'Value::Real'; pg/lib/Value/Set.pm:my $pkg = 'Value::Set'; pg/lib/Value/String.pm:my $pkg = 'Value::String'; pg/lib/Value/Union.pm:my $pkg = 'Value::Union'; pg/lib/Value/Union.pm:my %subCall = ( pg/lib/Value/Vector.pm:my $pkg = 'Value::Vector'; pg/lib/Value/Vector.pm:my $ijk_string = ['i','j','k','0']; pg/lib/Value/Vector.pm:my $ijk_TeX = ['\boldsymbol{i}','\boldsymbol {j}','\boldsymbol{k}','\boldsymbol{0}']; pg/lib/Value/WeBWorK.pm:my @wwEvalFields = qw( pg/lib/WeBWorK/PG/Translator.pm:my %shared_subroutine_hash = ( |
From: Davide P.C. <dp...@un...> - 2005-09-10 01:03:18
|
>>>> (I'm not sure why it is necessary to make a local variable for >>>> LOG, but at least it works now.) >>> We want WW to be thread safe, so that when we port it to Apache 2 >>> (my next major project), people can run it under the threaded MPM. >> OK. I'll keep that in mind as I work on other parts. I guess >> that means most of the other file access code will have to be >> modified similarly. > Most of the file access code already uses lexical variables. A quick grep in webwork2/lib/WeBWorK turned up the following file references that don't seem to be localized: Utils.pm:606: if (open LOG, ">>", $logFile) { Utils.pm:623: if (open LOG, ">>", $logFile) { ContentGenerator/Grades.pm:98: } elsif ( open(FILE, "$filePath") ) { ContentGenerator/Grades.pm:141: open FILE, "$filePath" || return("Can't open $filePath"); ContentGenerator/Hardcopy.pm:495: open TEX, ">", $hardcopyFilePath or die "Failed to open $hardcopyFilePath: $! \n".CGI::br(); ContentGenerator/Hardcopy.pm:553: open TEX, ">", $texFile or die "Failed to open $texFile: $!\n".CGI::br(); ContentGenerator/Hardcopy.pm:636: open(LOGFILE,"<$filePath") or die "Can't read $filePath"; ContentGenerator/Hardcopy.pm:648: open (TEXFILE, "$texFilePath") DBv3/Utils.pm:70: sysopen LOCK, $lockfile, O_RDONLY|O_CREAT Utils/CourseManagement.pm:252: open(INSTRUCTOR,">> $courseDir/ instructor.txt") || warn "Can't create 'instructor.txt': $!"; Utils/CourseManagement.pm:256: open(TITLE,">> $courseDir/ coursetitle.txt") || warn "Can't create 'coursetitle.txt': $!"; ContentGenerator/Instructor/FileManager.pm:474: if (open (OUTFILE,">$file")) { ContentGenerator/Instructor/FileManager.pm:716: if (open(NEWFILE,">$file")) { ContentGenerator/Instructor/FileManager.pm:818: open(UPLOAD,"> $file") || $self->addbadmessage("Can't create file '$name'"); ContentGenerator/Instructor/PGProblemEditor.pm: 1024: open OUTPUTFILE, ">", $outputFilePath ContentGenerator/Instructor/ProblemSetEditor.pm:618: open (PROBLEM, ">$probFileName") || ContentGenerator/Instructor/ProblemSetList.pm:1477: if ( open (SETFILENAME, "$filePath") ) { ContentGenerator/Instructor/ProblemSetList.pm: 1673: open SETDEF, ">$filePath" or die "Failed to open $fileP ContentGenerator/Instructor/SendMail.pm:758: open (PROBLEM, "> $probFileName") || ContentGenerator/Instructor/SendMail.pm:775: open FILE, "$filePath" || do { $self->addbadmessage(CGI::p("Can't open $filePath")); return}; ContentGenerator/Instructor/SetMaker.pm:204: if ( open (SETFILENAME, "$filePath") ) { and in pg/lib, we have AnswerIO.pm:52: open(LOG, ">>$accessLog") or $error.= "Can't open course access log $accessLog"; WeBWorK/EquationCache.pm:93: sysopen(DB, $db, O_RDWR|O_CREAT) WeBWorK/PG/IO.pm:114: open(INPUT, "<$filePath") || die "$0: readWholeProblemFile subroutine: <BR>Can't read file $filePath"; WeBWorK/PG/IO.pm:173: open(TEMPCREATEFILE, ">$fileName") WeBWorK/PG/ImageGenerator.pm:75: open FILEH, "<$filename" or die "Unable to read $filename"; WeBWorK/PG/Translator.pm:508: if ( open(SOURCEFILE, "< $filePath") ) { So it looks like there are still a few out there to be taken care of. Davide |
From: Davide P. C. <dp...@un...> - 2005-09-10 00:44:20
|
> Anyone seen this before? Yes. > Ambiguous use of -i resolved as -&i() at (eval 8172) line 1. This is from cplx_cmp when a complex number of the form 1-i appears in the answer. The -i could be treated as some kind of file test (don't know what it is off hand) and perl is telling you it has decided to use the (implicit) function call to i() instead so is treating it as 1-&i(). If the Complex1 package had stringified 1-i as "1 - i" or "1-i" you would not see this problem. It was this error that prompted me to Paser-ize the cplx_cmp macros. > Unquoted string "n" may clash with future reserved word at (eval > 8172) line 1. > Operator or semicolon missing before *n at (eval 8172) line 1. > Ambiguous use of * resolved as operator * at (eval 8172) line 1. I don't know specifically where these ones are coming from, but it looks like something is calling eval on an expression that has not been parsed by AlgParser. I know the cplx_cmp does that with the professor's answer, so check to see if someone is passing strings that contain expressions with n, f, t or x to cplx_cmp. The cplx_cmp macro calls PG_answer_eval with the (unprocessed) professor's answer, so errors like this could easily be produced in the log, but are trapped by the PG_answer_eval; cplx_cmp simply ignores the errors, so the professor simply doesn't know they are occurring. I don't know if other answer checkers call PG_answer_eval or PG_restricted_eval under similar circumstances. Davide |
From: Sam H. <sa...@uo...> - 2005-09-09 23:06:08
|
Anyone seen this before? We're getting this in our logs on math.webwork.rochester.edu occasionally, since we rebuilt the server. -sam Ambiguous use of -i resolved as -&i() at (eval 8172) line 1. Unquoted string "n" may clash with future reserved word at (eval 8172) line 1. Operator or semicolon missing before *n at (eval 8172) line 1. Ambiguous use of * resolved as operator * at (eval 8172) line 1. Unquoted string "f" may clash with future reserved word at (eval 8172) line 1. Operator or semicolon missing before *f at (eval 8172) line 1. Ambiguous use of * resolved as operator * at (eval 8172) line 1. Unquoted string "n" may clash with future reserved word at (eval 8172) line 1. Operator or semicolon missing before *n at (eval 8172) line 1. Ambiguous use of * resolved as operator * at (eval 8172) line 1. Unquoted string "t" may clash with future reserved word at (eval 8172) line 1. Operator or semicolon missing before *t at (eval 8172) line 1. Ambiguous use of * resolved as operator * at (eval 8172) line 1. Unquoted string "n" may clash with future reserved word at (eval 8175) line 1. Operator or semicolon missing before *n at (eval 8175) line 1. Ambiguous use of * resolved as operator * at (eval 8175) line 1. Unquoted string "f" may clash with future reserved word at (eval 8175) line 1. Operator or semicolon missing before *f at (eval 8175) line 1. Ambiguous use of * resolved as operator * at (eval 8175) line 1. Unquoted string "n" may clash with future reserved word at (eval 8175) line 1. Operator or semicolon missing before *n at (eval 8175) line 1. Ambiguous use of * resolved as operator * at (eval 8175) line 1. Unquoted string "t" may clash with future reserved word at (eval 8175) line 1. Operator or semicolon missing before *t at (eval 8175) line 1. Ambiguous use of * resolved as operator * at (eval 8175) line 1. Unquoted string "x" may clash with future reserved word at (eval 8850) line 1. Operator or semicolon missing before *x at (eval 8850) line 1. Ambiguous use of * resolved as operator * at (eval 8850) line 1. Unquoted string "x" may clash with future reserved word at (eval 8850) line 1. Operator or semicolon missing before *x at (eval 8850) line 1. Ambiguous use of * resolved as operator * at (eval 8850) line 1. Unquoted string "x" may clash with future reserved word at (eval 8850) line 1. Operator or semicolon missing before *x at (eval 8850) line 1. Ambiguous use of * resolved as operator * at (eval 8850) line 1. Argument "x" isn't numeric in multiplication (*) at (eval 8850) line 1. Argument "x" isn't numeric in multiplication (*) at (eval 8850) line 1. Argument "x" isn't numeric in multiplication (*) at (eval 8850) line 1. |
From: Sam H. <sh...@ma...> - 2005-09-08 15:57:30
|
On Sep 8, 2005, at 11:33, Davide P. Cervone wrote: >>> (I'm not sure why it is necessary to make a local variable for >>> LOG, but at least it works now.) >> >> We want WW to be thread safe, so that when we port it to Apache 2 >> (my next major project), people can run it under the threaded MPM. > > OK. I'll keep that in mind as I work on other parts. I guess that > means most of the other file access code will have to be modified > similarly. Most of the file access code already uses lexical variables. -sam |
From: Davide P. C. <dp...@un...> - 2005-09-08 15:33:28
|
>> (I'm not sure why it is necessary to make a local variable for >> LOG, but at least it works now.) > > We want WW to be thread safe, so that when we port it to Apache 2 > (my next major project), people can run it under the threaded MPM. OK. I'll keep that in mind as I work on other parts. I guess that means most of the other file access code will have to be modified similarly. > Thanks for fixing this btw. No problem. One of the faculty here wondered why she couldn't get past answers. Davide |
From: Sam H. <sh...@ma...> - 2005-09-08 15:19:55
|
On Sep 7, 2005, at 22:54, dpvc via activitymail wrote: > (I'm not sure why it is necessary to make a local variable for LOG, > but at least it works now.) We want WW to be thread safe, so that when we port it to Apache 2 (my next major project), people can run it under the threaded MPM. Thanks for fixing this btw. -sam |
From: Sam H. <sh...@ma...> - 2005-09-08 15:03:02
|
On Sep 8, 2005, at 9:15, Michael Gage wrote: > There is one source of recovery that we haven't explored yet. The > transaction logs in each course have the student responses to > problems. The answer_log also has similar data. > > In some cases if we can recover the exact structure of > the problem sets we might be able determine if the student > answered the quesition correctly. > > Sam, could you think about ways of automating the recovery of this > data? Mike, We can parse the transaction log pretty easily, although we have to watch out for multiline base64-encoded answers. ;) It looks like the transaction log actually contains most of the data we would need to reconstruct sets and problems: We should look at the most recent line in the log for each <user_id, set_id, problem_id> tuple. We can use user_id, set_id, problem_id, source_file, value, max_attempts, and problem_seed to recreate the "skeletons" of problems. However, for source_file, value, and max_attempts, we won't know if a user has an overridden value for their UserProblem, although we can do some analysis to determine the most popular values, and assume that these are the global ones. We can create skeletal User, Set, and UserSet objects from the user_ids and set_ids mentioned. We can't get any details about the user (name, email, password, permission level, etc.) out of this, nor any about the set (header files, dates, published). We can set the status, attempted, last_answer, num_correct, and num_incorrect fields in the UserProblem as well. We know nothing about problems that no one has attempted, or users who have attempted no problems. This definitely seems worth looking into though. I can take a look at it today if there's nothing else that's more urgent. -sam |
From: Davide P. C. <dp...@un...> - 2005-09-07 11:01:12
|
Folks: I have added a new Parser-based answer checker to replace cplx_cmp ass part of the Legacy package. Upate your pg/lib/Parser/Legacy.pm and pg/lib/Parser/Legacy directory to get it, then move pg/lib/Parser/ Legacy/PGcomplexmacros.pl to pg/macros and restart the server. You can use $useOldAnswerMacros to control which version of the answer checker is used (as with num_cmp and fun_cmp). This is a bit more delicate than the num_cmp or fun_cmp replacements, as the strict modes need to allow operations in some circumstances and not others, but I think I have it worked out. Let me know if you see any problems. A question arose when I was working on the strict-numeric modes. Both the original and the new versions accept e^(pi i), since there are no operations performed within the real numbers involved, but e^ (pi/2 i) is not allowed because of the division by 2. Would it be reasonable to allow expressions of the form a*pi/b within the exponent even in strict_numeric mode? Should there be new modes (or a new flag) to allow/disallow this? The old checker would SHOW answers in this form, even though the student couldn't type them in that way (but the new one won't). In any case, try out the new checker and see if it works for you. Davide |