You can subscribe to this list here.
| 2003 |
Jan
|
Feb
(160) |
Mar
(119) |
Apr
(111) |
May
(118) |
Jun
(101) |
Jul
(304) |
Aug
(113) |
Sep
(140) |
Oct
(137) |
Nov
(87) |
Dec
(122) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(78) |
Feb
(125) |
Mar
(131) |
Apr
(59) |
May
(121) |
Jun
(166) |
Jul
(150) |
Aug
(137) |
Sep
(73) |
Oct
(58) |
Nov
(27) |
Dec
(60) |
| 2005 |
Jan
(131) |
Feb
(84) |
Mar
(36) |
Apr
(8) |
May
(28) |
Jun
(20) |
Jul
(10) |
Aug
(72) |
Sep
(76) |
Oct
(34) |
Nov
(3) |
Dec
(29) |
| 2006 |
Jan
(13) |
Feb
(92) |
Mar
(7) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(17) |
Sep
(5) |
Oct
(2) |
Nov
(8) |
Dec
(12) |
| 2007 |
Jan
(28) |
Feb
(15) |
Mar
|
Apr
|
May
(8) |
Jun
(4) |
Jul
(5) |
Aug
(8) |
Sep
(20) |
Oct
(38) |
Nov
(65) |
Dec
(92) |
| 2008 |
Jan
(21) |
Feb
(56) |
Mar
(27) |
Apr
(174) |
May
(25) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <jgr...@us...> - 2003-09-11 22:31:31
|
Update of /cvsroot/popfile/engine/manual/jp In directory sc8-pr-cvs1:/tmp/cvs-serv18499 Added Files: nihongo_blue_ul.gif oe_filter1.gif oe_filter2.gif oe_filter3.gif oe_filter4.gif oe_filter5.gif oe_popfile1.gif oe_popfile2.gif oe_popfile3.gif oe_popfile4.gif Log Message: Added Japanese screen shots --- NEW FILE: nihongo_blue_ul.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_filter1.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_filter2.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_filter3.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_filter4.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_filter5.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_popfile1.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_popfile2.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_popfile3.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: oe_popfile4.gif --- (This appears to be a binary file; contents omitted.) |
Update of /cvsroot/popfile/engine/manual/jp
In directory sc8-pr-cvs1:/tmp/cvs-serv18285
Modified Files:
email.html firewalls.html firsttime.html installing.html
manual.html multiple.html proxies.html spa.html training.html
Log Message:
Updated Japanese manual
Index: email.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/email.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** email.html 18 Aug 2003 15:22:25 -0000 1.1
--- email.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 179,189 ****
<ul>
! <li>Outlook Express Ìj
[æèuc[v->uAJEgvðIÑÜ·BuC^[lbg AJEgvÌ_CAO{bNXªJ«Ü·B <a href=../oe_popfile1.gif>[XN[Vbg]</a>
! <li>POPFile ðgp·é½ßÉÝèðÏX·éAJEgðIÑAuvpeBvðNbNµÜ·B <a href=../oe_popfile2.gif>[XN[Vbg]</a>
! <li>uT[o[v^uðIÑÜ·BuóM[ (POP3)vÆuAJEg¼vÌlðЩ¦Ä¨«Ü·B <a href=../oe_popfile3.gif>[XN[Vbg]</a>
! <li>uóM[ (POP3)vÌlð <b>127.0.0.1</b> ÉÏXµAuAJEg¼vÌlͳÌuóM[ (POP3)vÌlƳÌuAJEg¼vÆðRÅÂȰ½lÉÏXµÜ·B <a href=../oe_popfile4.gif>[XN[Vbg]</a>
<li>ÂÜèA³ÌuóM[ (POP3)vÌlª <b>my.mail.com</b> ÅuAJEg¼vª <b>jdoe</b> ¾Æ·éÆAVµ¢uAJEg¼vÍ <b>my.mail.com:jdoe</b> ÆÈèÜ·B
--- 179,189 ----
<ul>
! <li>Outlook Express Ìj
[æèuc[v->uAJEgvðIÑÜ·BuC^[lbg AJEgvÌ_CAO{bNXªJ«Ü·B <a href=./oe_popfile1.gif>[XN[Vbg]</a>
! <li>POPFile ðgp·é½ßÉÝèðÏX·éAJEgðIÑAuvpeBvðNbNµÜ·B <a href=./oe_popfile2.gif>[XN[Vbg]</a>
! <li>uT[o[v^uðIÑÜ·BuóM[ (POP3)vÆuAJEg¼vÌlðЩ¦Ä¨«Ü·B <a href=./oe_popfile3.gif>[XN[Vbg]</a>
! <li>uóM[ (POP3)vÌlð <b>127.0.0.1</b> ÉÏXµAuAJEg¼vÌlͳÌuóM[ (POP3)vÌlƳÌuAJEg¼vÆðRÅÂȰ½lÉÏXµÜ·B <a href=./oe_popfile4.gif>[XN[Vbg]</a>
<li>ÂÜèA³ÌuóM[ (POP3)vÌlª <b>my.mail.com</b> ÅuAJEg¼vª <b>jdoe</b> ¾Æ·éÆAVµ¢uAJEg¼vÍ <b>my.mail.com:jdoe</b> ÆÈèÜ·B
***************
*** 345,359 ****
<ul>
! <li>Outlook Express Ìj
[æèuc[v->ubZ[W [v->u[...vðIÑÜ·B <a href=../oe_filter1.gif>[XN[Vbg]</a>
! <li>ubZ[W [væÊªJ«Ü·B <a href=../oe_filter2.gif>[XN[Vbg]</a>
<li>Outlook Express Í[ÌtB^Oð®SÉobNOEhÅs¤±ÆªÅ«é <b>X-Text-Classification</b> wb_[ðg¤±ÆªÅ«Ü¹ñB»±ÅAãíèÉ<i>¼Éwèµ½¾tªÜÜêéê</i>ðNbNµAܽ
! <i>wèµ½tH_ÉÚ®·é</i>àNbNµÜ·B <a href=../oe_filter3.gif>[XN[Vbg]</a>
! <li>ÂÅnCCg³ê½ <i>wèµ½¾t</i> NðNbN·éÆAuPêÌüÍv_CAO{bNXªJ«Ü·B <a href=../oe_filter4.gif>[XN[Vbg]</a>
! <li>[åÊ]ÅÍñ¾oPc̼OêÂðü͵AuOKvðNbNµÜ·B¡xÍAÂÅnCCg³ê½ <i>wèµ½tH_</i> ðNbN·éÆAuÚ®v_CAO{bNXªJ«Ü·B oPcɪ޳ê½[ÌÚ®ætH_ðIÑAuOKvðNbNµÜ·B <a href=../oe_filter5.gif>[XN[Vbg]</a>
<li>uOKvðNbNµÜ·B
--- 345,359 ----
<ul>
! <li>Outlook Express Ìj
[æèuc[v->ubZ[W [v->u[...vðIÑÜ·B <a href=./oe_filter1.gif>[XN[Vbg]</a>
! <li>ubZ[W [væÊªJ«Ü·B <a href=./oe_filter2.gif>[XN[Vbg]</a>
<li>Outlook Express Í[ÌtB^Oð®SÉobNOEhÅs¤±ÆªÅ«é <b>X-Text-Classification</b> wb_[ðg¤±ÆªÅ«Ü¹ñB»±ÅAãíèÉ<i>¼Éwèµ½¾tªÜÜêéê</i>ðNbNµAܽ
! <i>wèµ½tH_ÉÚ®·é</i>àNbNµÜ·B <a href=./oe_filter3.gif>[XN[Vbg]</a>
! <li>ÂÅnCCg³ê½ <i>wèµ½¾tªÜÜêé</i> NðNbN·éÆAuPêÌüÍv_CAO{bNXªJ«Ü·B <a href=./oe_filter4.gif>[XN[Vbg]</a>
! <li>[åÊ]ÅÍñ¾oPc̼OêÂðü͵AuOKvðNbNµÜ·B¡xÍAÂÅnCCg³ê½ <i>wèµ½tH_</i> ðNbN·éÆAuÚ®v_CAO{bNXªJ«Ü·B oPcɪ޳ê½[ÌÚ®ætH_ðIÑAuOKvðNbNµÜ·B <a href=./oe_filter5.gif>[XN[Vbg]</a>
<li>uOKvðNbNµÜ·B
***************
*** 473,481 ****
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
--- 473,481 ----
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
Index: firewalls.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/firewalls.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** firewalls.html 18 Aug 2003 15:22:25 -0000 1.1
--- firewalls.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 101,109 ****
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
--- 101,109 ----
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
Index: firsttime.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/firsttime.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** firsttime.html 18 Aug 2003 15:22:25 -0000 1.1
--- firsttime.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 55,61 ****
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
--- 55,61 ----
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
Index: installing.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/installing.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** installing.html 18 Aug 2003 15:22:25 -0000 1.1
--- installing.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 43,47 ****
<p><a href=http://sourceforge.net/project/showfiles.php?group_id=63137>POPFile Download Page</a> æè Windows CXg[[ð_E[hµÄA<tt>setup.exe</tt> ðÀsµAw¦É]ÁÄCXg[µÜ·B POPFile ðN®·éÉÍX^[gj
[(X^[g > vO > POPFile > Run POPFile in Background) ©çN®·é©ARs
[^[ðÄN®·êΩ®IÉN®µÜ·B<b>dv:</b> N®µÄàæÊÉͽà»êܹñI¿áñÆ®¢Ä¢é©Ç¤©ð`FbN·éû@ðm软êÎAȺÌuPOPFile ª¿áñÆ®¢Ä¢é©Ç¤©`FbN·évðÇñž³¢B</p>
! <p><font color="red">(óÒ: POPFile Í»ÝÌÆ±ëA»ê¾¯ÅÍú{êÌ[ð³µªÞ·é±ÆÍūܹñBú{ê»pb`ð ÄéKvª èÜ·Bú{ê»pb`ÌîñÍ<a href="http://sourceforge.net/forum/?group_id=63137">tH[</a>â<a href="http://sourceforge.net/tracker/?group_id=63137&atid=502958">pb`</a>Å©Â¯é±ÆªÅ«Ü·ÌÅAÅVÌîñðQƵľ³¢B)</font>
</p>
--- 43,47 ----
<p><a href=http://sourceforge.net/project/showfiles.php?group_id=63137>POPFile Download Page</a> æè Windows CXg[[ð_E[hµÄA<tt>setup.exe</tt> ðÀsµAw¦É]ÁÄCXg[µÜ·B POPFile ðN®·éÉÍX^[gj
[(X^[g > vO > POPFile > Run POPFile in Background) ©çN®·é©ARs
[^[ðÄN®·êΩ®IÉN®µÜ·B<b>dv:</b> N®µÄàæÊÉͽà»êܹñI¿áñÆ®¢Ä¢é©Ç¤©ð`FbN·éû@ðm软êÎAȺÌuPOPFile ª¿áñÆ®¢Ä¢é©Ç¤©`FbN·évðÇñž³¢B</p>
! <p><font color="red">(óÒ: POPFile Í»ÝÌÆ±ëA»ê¾¯ÅÍú{êÌ[ð³µªÞ·é±ÆÍūܹñBú{ê»pb`ð ÄéKvª èÜ·Bú{ê»pb`ÌîñÉ¢ÄÍ<a href="http://popfile.sourceforge.jp/">POPFile Ìú{ê»</a>y[WðQƵľ³¢B)</font>
</p>
***************
*** 79,85 ****
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
--- 79,85 ----
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
Index: manual.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/manual.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** manual.html 18 Aug 2003 15:22:25 -0000 1.1
--- manual.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 60,66 ****
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
--- 60,66 ----
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
Index: multiple.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/multiple.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** multiple.html 18 Aug 2003 15:22:25 -0000 1.1
--- multiple.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 45,51 ****
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
--- 45,51 ----
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
Index: proxies.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/proxies.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** proxies.html 18 Aug 2003 15:22:25 -0000 1.1
--- proxies.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 119,125 ****
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
--- 119,125 ----
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
Index: spa.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/spa.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** spa.html 18 Aug 2003 15:22:25 -0000 1.1
--- spa.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 65,71 ****
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
--- 65,71 ----
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
Index: training.html
===================================================================
RCS file: /cvsroot/popfile/engine/manual/jp/training.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** training.html 18 Aug 2003 15:22:25 -0000 1.1
--- training.html 11 Sep 2003 22:30:33 -0000 1.2
***************
*** 57,63 ****
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/forum/?group_id=63137">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
--- 57,63 ----
<td width=15% align=center><font size=+1><b>N:</b></font></td>
<td width=2></td>
! <td align=center bgcolor=#cccc99 width=15%><font size=+1><b> <a href="http://popfile.sourceforge.net/manual/jp/manual.html">z[y[W</a></b></font></td>
<td width=2></td>
! <td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.jp/projects/popfile/forums/">tH[</a></b></font></td>
<td width=2></td>
<td bgcolor=#ededca width=15% align=center><font size=+1><b> <a href="http://sourceforge.net/tracker/?group_id=63137&atid=502956">oOf[^x[X</a></b></font></td>
|
|
From: <jgr...@us...> - 2003-09-11 20:55:17
|
Update of /cvsroot/popfile/engine/Proxy
In directory sc8-pr-cvs1:/tmp/cvs-serv29093/Proxy
Modified Files:
NNTP.pm POP3.pm SMTP.pm
Log Message:
Remove calls to flush_extra_ for speed and also because they are not needed
Index: NNTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/NNTP.pm,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** NNTP.pm 11 Sep 2003 20:51:57 -0000 1.19
--- NNTP.pm 11 Sep 2003 20:55:10 -0000 1.20
***************
*** 257,261 ****
}
- $self->flush_extra_( $news, $client, 0 );
next;
}
--- 257,260 ----
***************
*** 269,273 ****
$self->echo_to_dot_( $news, $client, 0 ) if ( $response =~ /^2\d\d/ );
- $self->flush_extra_( $news, $client, 0 );
next;
}
--- 268,271 ----
***************
*** 278,282 ****
my $response = $self->get_response_( $news, $client, $command);
$self->echo_to_dot_( $news, $client, 0 ) if ( $response =~ /^1\d\d/ );
- $self->flush_extra_( $news, $client, 0 );
next;
}
--- 276,279 ----
***************
*** 286,290 ****
if ( $command =~ /^ *(GROUP|STAT|IHAVE|LAST|NEXT|SLAVE|MODE|XPATH)/i ) {
$self->get_response_( $news, $client, $command );
- $self->flush_extra_( $news, $client, 0 );
next;
}
--- 283,286 ----
***************
*** 306,310 ****
$self->get_response_( $news, $client, "$eol" );
- $self->flush_extra_( $news, $client, 0 );
}
next;
--- 302,305 ----
***************
*** 317,321 ****
if ( $news && $news->connected ) {
$self->get_response_($news, $client, $command, 1);
- $self->flush_extra_( $news, $client, 0 );
next;
}
--- 312,315 ----
***************
*** 326,330 ****
if ( $news && $news->connected) {
$self->echo_response_($news, $client, $command );
- $self->flush_extra_( $news, $client, 0 );
next;
} else {
--- 320,323 ----
Index: POP3.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v
retrieving revision 1.76
retrieving revision 1.77
diff -C2 -d -r1.76 -r1.77
*** POP3.pm 11 Sep 2003 20:51:57 -0000 1.76
--- POP3.pm 11 Sep 2003 20:55:10 -0000 1.77
***************
*** 195,199 ****
}
- $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 195,198 ----
***************
*** 212,216 ****
}
- $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 211,214 ----
***************
*** 236,241 ****
next;
}
-
- $self->flush_extra_( $mail, $client, 0 );
} else {
$self->tee_( $client, "-ERR No secure server specified$eol" );
--- 234,237 ----
***************
*** 254,259 ****
next;
}
-
- $self->flush_extra_( $mail, $client, 0 );
} else {
$self->tee_( $client, "-ERR No secure server specified$eol" );
--- 250,253 ----
***************
*** 271,275 ****
}
- $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 265,268 ----
***************
*** 346,350 ****
$self->echo_to_dot_( $mail, $client ) if ( $self->echo_response_($mail, $client, $command ) );
}
! $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 339,343 ----
$self->echo_to_dot_( $mail, $client ) if ( $self->echo_response_($mail, $client, $command ) );
}
!
next;
}
***************
*** 367,371 ****
}
- $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 360,363 ----
***************
*** 389,393 ****
( $command =~ /RSET/i ) ) { # PROFILE BLOCK STOP
$self->echo_response_($mail, $client, $command );
- $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 381,384 ----
***************
*** 465,470 ****
$downloaded{$count} = 1;
-
- $self->flush_extra_( $mail, $client, 0 );
}
}
--- 456,459 ----
***************
*** 491,495 ****
if ( $mail && $mail->connected ) {
$self->echo_response_($mail, $client, $command );
- $self->flush_extra_( $mail, $client, 0 );
next;
} else {
--- 480,483 ----
Index: SMTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** SMTP.pm 11 Sep 2003 20:51:57 -0000 1.20
--- SMTP.pm 11 Sep 2003 20:55:10 -0000 1.21
***************
*** 158,163 ****
last;
}
-
- $self->flush_extra_( $mail, $client, 0 );
} else {
$self->tee_( $client, "421 service not available$eol" );
--- 158,161 ----
***************
*** 199,204 ****
last;
}
-
- $self->flush_extra_( $mail, $client, 0 );
} else {
$self->tee_( $client, "421 service not available$eol" );
--- 197,200 ----
***************
*** 216,220 ****
( $command =~ /RSET/i ) ) {
$self->smtp_echo_response_( $mail, $client, $command );
- $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 212,215 ----
***************
*** 236,240 ****
my $response = <$mail>;
$self->tee_( $client, $response );
- $self->flush_extra_( $mail, $client, 0 );
next;
}
--- 231,234 ----
***************
*** 257,261 ****
if ( $mail && $mail->connected ) {
$self->smtp_echo_response_( $mail, $client, $command );
- $self->flush_extra_( $mail, $client, 0 );
next;
} else {
--- 251,254 ----
|
|
From: <jgr...@us...> - 2003-09-11 20:52:01
|
Update of /cvsroot/popfile/engine/Proxy
In directory sc8-pr-cvs1:/tmp/cvs-serv28226/Proxy
Modified Files:
NNTP.pm POP3.pm SMTP.pm
Log Message:
Flush the child pipes used to send messages up from child proxies so that when they are non-forked we have data to pull out when yield is called. This means that the messages will get dealt with at once (i.e. they will get queued in MQ) and prevent the pipe getting full which messes up on Windows
Index: NNTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/NNTP.pm,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** NNTP.pm 10 Sep 2003 18:26:29 -0000 1.18
--- NNTP.pm 11 Sep 2003 20:51:57 -0000 1.19
***************
*** 253,256 ****
--- 253,257 ----
print $pipe "CLASS:$class$eol";
print $pipe "NEWFL:$history_file$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
}
***************
*** 336,339 ****
--- 337,341 ----
close $client;
print $pipe "CMPLT$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
close $pipe;
Index: POP3.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v
retrieving revision 1.75
retrieving revision 1.76
diff -C2 -d -r1.75 -r1.76
*** POP3.pm 10 Sep 2003 18:26:29 -0000 1.75
--- POP3.pm 11 Sep 2003 20:51:57 -0000 1.76
***************
*** 177,181 ****
--- 177,183 ----
if ( $1 ne '' ) {
print $pipe "LOGIN:$4$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
+
if ( $mail = $self->verify_connected_( $mail, $client, $1, $3 || 110 ) ) {
***************
*** 337,340 ****
--- 339,343 ----
print $pipe "CLASS:$class$eol";
print $pipe "NEWFL:$history_file$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
}
***************
*** 435,438 ****
--- 438,442 ----
print $pipe "CLASS:$class$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
}
***************
*** 455,458 ****
--- 459,463 ----
print $pipe "NEWFL:$history_file$eol";
print $pipe "CLASS:$class$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
***************
*** 497,500 ****
--- 502,506 ----
close $client;
print $pipe "CMPLT$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
close $pipe;
Index: SMTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** SMTP.pm 10 Sep 2003 18:26:29 -0000 1.19
--- SMTP.pm 11 Sep 2003 20:51:57 -0000 1.20
***************
*** 231,234 ****
--- 231,235 ----
print $pipe "CLASS:$class$eol";
print $pipe "NEWFL:$history_file$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
***************
*** 267,270 ****
--- 268,272 ----
close $client;
print $pipe "CMPLT$eol";
+ flush $pipe;
$self->yield_( $ppipe, $pid );
close $pipe;
|
|
From: <xue...@us...> - 2003-09-11 18:48:12
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv31201
Modified Files:
installer.nsi
Log Message:
Add support for BerkeleyDB (NB This version does NOT backup the old corpus)
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.110
retrieving revision 1.111
diff -C2 -d -r1.110 -r1.111
*** installer.nsi 8 Sep 2003 13:26:38 -0000 1.110
--- installer.nsi 11 Sep 2003 18:48:07 -0000 1.111
***************
*** 105,109 ****
!define MUI_PRODUCT "POPFile"
! !define MUI_VERSION "0.20.0 (CVS)"
!define C_README "v0.19.1.change"
--- 105,109 ----
!define MUI_PRODUCT "POPFile"
! !define MUI_VERSION "0.20.0 (CVS BerkeleyDB)"
!define C_README "v0.19.1.change"
***************
*** 170,176 ****
!ifndef ENGLISH_ONLY
! VIAddVersionKey "Build" "Multi-Language (CVS)"
!else
! VIAddVersionKey "Build" "English-Only (CVS)"
!endif
--- 170,176 ----
!ifndef ENGLISH_ONLY
! VIAddVersionKey "Build" "Multi-Language (CVS BerkeleyDB)"
!else
! VIAddVersionKey "Build" "English-Only (CVS BerkeleyDB)"
!endif
***************
*** 739,742 ****
--- 739,759 ----
SetOutPath $INSTDIR\warnings
File "${C_PERL_DIR}\lib\warnings\register.pm"
+
+ ; Install BerkeleyDB Perl modules and libraries
+
+ SetOutPath $INSTDIR
+ File "${C_PERL_DIR}\site\lib\BerkeleyDB.pm"
+ File "${C_PERL_DIR}\lib\UNIVERSAL.pm"
+
+ SetOutPath $INSTDIR\BerkeleyDB
+ File "${C_PERL_DIR}\site\lib\BerkeleyDB\Btree.pm"
+ File "${C_PERL_DIR}\site\lib\BerkeleyDB\Hash.pm"
+
+ SetOutPath $INSTDIR\auto\BerkeleyDB
+ File "${C_PERL_DIR}\site\lib\auto\BerkeleyDB\autosplit.ix"
+ File "${C_PERL_DIR}\site\lib\auto\BerkeleyDB\BerkeleyDB.bs"
+ File "${C_PERL_DIR}\site\lib\auto\BerkeleyDB\BerkeleyDB.dll"
+ File "${C_PERL_DIR}\site\lib\auto\BerkeleyDB\BerkeleyDB.exp"
+ File "${C_PERL_DIR}\site\lib\auto\BerkeleyDB\BerkeleyDB.lib"
; Create the uninstall program BEFORE creating the shortcut to it
***************
*** 2204,2207 ****
--- 2221,2225 ----
!insertmacro SafeRecursiveRMDir "$INSTDIR\warnings"
!insertmacro SafeRecursiveRMDir "$INSTDIR\Win32"
+ !insertmacro SafeRecursiveRMDir "$INSTDIR\BerkeleyDB"
StrCmp ${L_UPGRADE} "yes" Removed
|
|
From: <jgr...@us...> - 2003-09-11 17:27:14
|
Update of /cvsroot/popfile/engine/POPFile
In directory sc8-pr-cvs1:/tmp/cvs-serv16002/POPFile
Modified Files:
Loader.pm
Log Message:
Remember to close the pipe after it's been opened
Index: Loader.pm
===================================================================
RCS file: /cvsroot/popfile/engine/POPFile/Loader.pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** Loader.pm 10 Sep 2003 03:54:15 -0000 1.6
--- Loader.pm 11 Sep 2003 17:27:11 -0000 1.7
***************
*** 292,300 ****
# hash getting the name from the module by calling name()
! my @modules = glob "$directory/*.pm";
! foreach my $module (@modules) {
! $self->CORE_load_module($module, $type);
}
print '} ' if $self->{debug__};
--- 292,304 ----
# hash getting the name from the module by calling name()
! opendir MODULES, $directory;
! while ( my $entry = readdir MODULES ) {
! if ( $entry =~ /\.pm$/ ) {
! $self->CORE_load_module( "$directory/$entry", $type );
! }
}
+
+ closedir MODULES;
print '} ' if $self->{debug__};
|
|
From: <jgr...@us...> - 2003-09-11 17:27:14
|
Update of /cvsroot/popfile/engine/Proxy
In directory sc8-pr-cvs1:/tmp/cvs-serv16002/Proxy
Modified Files:
Proxy.pm
Log Message:
Remember to close the pipe after it's been opened
Index: Proxy.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -d -r1.35 -r1.36
*** Proxy.pm 10 Sep 2003 14:00:41 -0000 1.35
--- Proxy.pm 11 Sep 2003 17:27:11 -0000 1.36
***************
*** 354,357 ****
--- 354,358 ----
$self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $writer, $reader, $$ );
$self->{flush_child_data_}( $self, $reader );
+ close $reader;
}
}
|
|
From: <jgr...@us...> - 2003-09-11 08:06:08
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv23438/Classifier
Modified Files:
Bayes.pm
Log Message:
Filter out special values from bucket data, start counting upgrade counts from 0, fix untie warnings
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.195
retrieving revision 1.196
diff -C2 -d -r1.195 -r1.196
*** Bayes.pm 10 Sep 2003 22:42:48 -0000 1.195
--- Bayes.pm 11 Sep 2003 08:06:03 -0000 1.196
***************
*** 294,300 ****
for my $bucket (keys %{$self->{matrix__}}) {
untie %{$self->{matrix__}{$bucket}};
delete $self->{matrix__}{$bucket};
- delete $self->{db__}{$bucket};
}
}
--- 294,301 ----
for my $bucket (keys %{$self->{matrix__}}) {
+ undef $self->{db__}{$bucket};
+ delete $self->{db__}{$bucket};
untie %{$self->{matrix__}{$bucket}};
delete $self->{matrix__}{$bucket};
}
}
***************
*** 633,637 ****
print "\nUpgrading bucket $bucket...";
flush STDOUT;
! my $wc = 1;
my $first = <WORDS>;
--- 634,638 ----
print "\nUpgrading bucket $bucket...";
flush STDOUT;
! my $wc = 0;
my $first = <WORDS>;
***************
*** 1447,1451 ****
my ( $self, $bucket, $prefix ) = @_;
! return grep {/^$prefix/} keys %{$self->{matrix__}{$bucket}};
}
--- 1448,1452 ----
my ( $self, $bucket, $prefix ) = @_;
! return grep {/^$prefix/} grep {!/__POPFILE__(UNIQUE|TOTAL)__/} keys %{$self->{matrix__}{$bucket}};
}
***************
*** 1464,1468 ****
my $prev = '';
! return grep {$_ ne $prev && ($prev = $_, 1)} sort map {substr($_,0,1)} keys %{$self->{matrix__}{$bucket}};
}
--- 1465,1469 ----
my $prev = '';
! return grep {$_ ne $prev && ($prev = $_, 1)} sort map {substr($_,0,1)} grep {!/__POPFILE__(UNIQUE|TOTAL)__/} keys %{$self->{matrix__}{$bucket}};
}
***************
*** 1883,1886 ****
--- 1884,1888 ----
my $bucket_directory = $self->config_( 'corpus' ) . "/$bucket";
+ undef $self->{db__}{$bucket};
untie %{$self->{matrix__}{$bucket}};
unlink( "$bucket_directory/table.db" );
|
|
From: <jgr...@us...> - 2003-09-11 08:03:54
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv22967/Classifier
Modified Files:
MailParse.pm
Log Message:
Only compile the HTML tag removal expressions once
Index: MailParse.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v
retrieving revision 1.159
retrieving revision 1.160
diff -C2 -d -r1.159 -r1.160
*** MailParse.pm 5 Sep 2003 20:38:10 -0000 1.159
--- MailParse.pm 11 Sep 2003 08:03:20 -0000 1.160
***************
*** 944,948 ****
# Content-Type header and only process mails of type text/html.
! while ( $line =~ s/(<\/?(?!(?:$spacing_tags|$non_spacing_tags)\W)[a-z0-9]+(?:\s+.*?)?\/?>)//i ) {
$self->update_pseudoword( 'html', 'invalidtag', $encoded, $1 );
print "html:invalidtag: $1\n" if $self->{debug};
--- 944,948 ----
# Content-Type header and only process mails of type text/html.
! while ( $line =~ s/(<\/?(?!(?:$spacing_tags|$non_spacing_tags)\W)[a-z0-9]+(?:\s+.*?)?\/?>)//io ) {
$self->update_pseudoword( 'html', 'invalidtag', $encoded, $1 );
print "html:invalidtag: $1\n" if $self->{debug};
***************
*** 954,958 ****
# FIXME: What about combined open and close tags such as <b />?
! while ( $line =~s/(<($non_spacing_tags)(?:\s+[^>]*?)?><\/\2>)//i ) {
$self->update_pseudoword( 'html', 'emptypair', $encoded, $1 );
print "html:emptypair: $1\n" if $self->{debug};
--- 954,958 ----
# FIXME: What about combined open and close tags such as <b />?
! while ( $line =~s/(<($non_spacing_tags)(?:\s+[^>]*?)?><\/\2>)//io ) {
$self->update_pseudoword( 'html', 'emptypair', $encoded, $1 );
print "html:emptypair: $1\n" if $self->{debug};
|
|
From: <jgr...@us...> - 2003-09-10 22:42:51
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv22890/Classifier
Modified Files:
Bayes.pm
Log Message:
Fix an error in my use of logs
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.194
retrieving revision 1.195
diff -C2 -d -r1.194 -r1.195
*** Bayes.pm 10 Sep 2003 22:33:57 -0000 1.194
--- Bayes.pm 10 Sep 2003 22:42:48 -0000 1.195
***************
*** 442,446 ****
if ( $self->{full_total__} > 0 ) {
! $self->{not_likely__} = -log( $self->{full_total__} / 10 );
foreach my $bucket (keys %{$self->{matrix__}}) {
--- 442,446 ----
if ( $self->{full_total__} > 0 ) {
! $self->{not_likely__} = -log( 10 * $self->{full_total__} );
foreach my $bucket (keys %{$self->{matrix__}}) {
|
|
From: <jgr...@us...> - 2003-09-10 22:34:01
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv21095/UI
Modified Files:
HTML.pm
Log Message:
Add new get_bucket_word_prefixesd API and use it to make the viewing of the contents of an individual bucket work; this completes the core features for v0.20.0.
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.201
retrieving revision 1.202
diff -C2 -d -r1.201 -r1.202
*** HTML.pm 10 Sep 2003 03:54:15 -0000 1.201
--- HTML.pm 10 Sep 2003 22:33:57 -0000 1.202
***************
*** 1709,1750 ****
$body .= "<tr><td colspan=2>";
- # TODO FIX THIS TO USE NEW API
-
if ( $self->{classifier__}->get_bucket_word_count( $self->{form_}{showbucket} ) > 0 ) {
! for my $i ($self->{classifier__}->get_bucket_word_list($self->{form_}{showbucket})) {
! if ( defined($i) ) {
! my $j = $i;
! $j =~ /^\|(.)/;
! my $first = $1;
!
! if ( defined( $self->{form_}{showletter} ) && ( $first eq $self->{form_}{showletter} ) ) {
! # Split the entries on the double bars
!
! my %temp;
!
! while ( $j =~ m/\G\|(.*?) L?\-?[\.\d]+\|/g ) {
! my $word = $1;
! $temp{$word} = $self->{classifier__}->get_count_for_word( $self->{form_}{showbucket}, $word );
! }
! $body .= "</td></tr><tr><td colspan=2> </td></tr><tr>\n<td valign=\"top\">\n<b>$first</b>\n</td>\n<td valign=\"top\">\n<table><tr valign=\"top\">";
! my $count = 0;
! for my $word (sort { $temp{$b} <=> $temp{$a} } keys %temp) {
! $body .= "</tr><tr valign=\"top\">" if ( ( $count % 6 ) == 0 );
! $body .= "<td><a class=\"wordListLink\" href=\"\/buckets\?session=$self->{session_key__}\&lookup=Lookup\&word=". $self->url_encode_( $word ) . "#Lookup\"><b>$word</b><\/a></td><td>$temp{$word}</td><td> </td>";
! $count += 1;
! }
! $body .= "</tr></table></td>\n</tr>\n<tr><td colspan=2> </td></tr><tr><td colspan=2>";
} else {
! $j = '';
!
! $body .= "<a href=/buckets?session=$self->{session_key__}\&showbucket=$self->{form_}{showbucket}\&showletter=" . $self->url_encode_($first) . "><b>$first</b></a>\n";
}
! }
! }
}
--- 1709,1736 ----
$body .= "<tr><td colspan=2>";
if ( $self->{classifier__}->get_bucket_word_count( $self->{form_}{showbucket} ) > 0 ) {
! for my $i ($self->{classifier__}->get_bucket_word_prefixes($self->{form_}{showbucket})) {
! if ( defined( $self->{form_}{showletter} ) && ( $i eq $self->{form_}{showletter} ) ) {
! my %temp;
! for my $j ( $self->{classifier__}->get_bucket_word_list( $self->{form_}{showbucket}, $i ) ) {
! $temp{$j} = $self->{classifier__}->get_count_for_word( $self->{form_}{showbucket}, $j );
! }
! $body .= "</td></tr><tr><td colspan=2> </td></tr><tr>\n<td valign=\"top\">\n<b>$i</b>\n</td>\n<td valign=\"top\">\n<table><tr valign=\"top\">";
! my $count = 0;
! for my $word (sort { $temp{$b} <=> $temp{$a} } keys %temp) {
! $body .= "</tr><tr valign=\"top\">" if ( ( $count % 6 ) == 0 );
! $body .= "<td><a class=\"wordListLink\" href=\"\/buckets\?session=$self->{session_key__}\&lookup=Lookup\&word=". $self->url_encode_( $word ) . "#Lookup\"><b>$word</b><\/a></td><td>$temp{$word}</td><td> </td>";
! $count += 1;
! }
+ $body .= "</tr></table></td>\n</tr>\n<tr><td colspan=2> </td></tr><tr><td colspan=2>";
} else {
! $body .= "<a href=/buckets?session=$self->{session_key__}\&showbucket=$self->{form_}{showbucket}\&showletter=" . $self->url_encode_($i) . "><b>$i</b></a>\n";
}
! }
}
|
|
From: <jgr...@us...> - 2003-09-10 22:34:01
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv21095/Classifier
Modified Files:
Bayes.pm
Log Message:
Add new get_bucket_word_prefixesd API and use it to make the viewing of the contents of an individual bucket work; this completes the core features for v0.20.0.
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.193
retrieving revision 1.194
diff -C2 -d -r1.193 -r1.194
*** Bayes.pm 10 Sep 2003 18:31:39 -0000 1.193
--- Bayes.pm 10 Sep 2003 22:33:57 -0000 1.194
***************
*** 68,71 ****
--- 68,72 ----
# Matrix of buckets, words and the word counts
$self->{matrix__} = {};
+ $self->{db__} = {};
# Total number of words in all buckets
***************
*** 295,298 ****
--- 296,300 ----
untie %{$self->{matrix__}{$bucket}};
delete $self->{matrix__}{$bucket};
+ delete $self->{db__}{$bucket};
}
}
***************
*** 614,620 ****
# tied hash from it thus performing an automatic upgrade.
! tie %{$self->{matrix__}{$bucket}}, "BerkeleyDB::Hash",
! -Filename => $self->config_( 'corpus' ) . "/$bucket/table.db",
! -Flags => DB_CREATE;
if ( !defined( $self->get_bucket_word_count( $bucket ) ) ) {
--- 616,622 ----
# tied hash from it thus performing an automatic upgrade.
! $self->{db__}{$bucket} = tie %{$self->{matrix__}{$bucket}}, "BerkeleyDB::Hash",
! -Filename => $self->config_( 'corpus' ) . "/$bucket/table.db",
! -Flags => DB_CREATE;
if ( !defined( $self->get_bucket_word_count( $bucket ) ) ) {
***************
*** 1435,1461 ****
# get_bucket_word_list
#
! # Returns a list of bucket entries, each entry corresponds to all the words with the
! # same leading character
#
# $bucket The name of the bucket for which the word count is desired
#
# ---------------------------------------------------------------------------------------------
sub get_bucket_word_list
{
! my ( $self, $bucket ) = @_;
!
! my @result;
! if ( $self->get_bucket_word_count( $bucket ) > 0 ) {
! # TODO my @entries = @{$self->{matrix__}{$bucket}};
! # TODO for my $i (0..$#entries) {
! # TODO if ( defined( $entries[$i] ) && ( $entries[$i] ne '' ) ) {
! # TODO push @result, ($entries[$i]);
! # TODO }
! # TODO }
! }
! return @result;
}
--- 1437,1468 ----
# get_bucket_word_list
#
! # Returns a list of words all with the same first character
#
# $bucket The name of the bucket for which the word count is desired
+ # $prefix The first character of the words
#
# ---------------------------------------------------------------------------------------------
sub get_bucket_word_list
{
! my ( $self, $bucket, $prefix ) = @_;
! return grep {/^$prefix/} keys %{$self->{matrix__}{$bucket}};
! }
! # ---------------------------------------------------------------------------------------------
! #
! # get_bucket_word_prefixes
! #
! # Returns a list of all the initial letters of words in a bucket
! #
! # $bucket The name of the bucket for which the word count is desired
! #
! # ---------------------------------------------------------------------------------------------
! sub get_bucket_word_prefixes
! {
! my ( $self, $bucket ) = @_;
! my $prev = '';
! return grep {$_ ne $prev && ($prev = $_, 1)} sort map {substr($_,0,1)} keys %{$self->{matrix__}{$bucket}};
}
|
|
From: <jgr...@us...> - 2003-09-10 18:31:43
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv29270/Classifier
Modified Files:
Bayes.pm
Log Message:
Remove the CDB since I don't appear to need it for the access types that I have
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.192
retrieving revision 1.193
diff -C2 -d -r1.192 -r1.193
*** Bayes.pm 10 Sep 2003 04:06:19 -0000 1.192
--- Bayes.pm 10 Sep 2003 18:31:39 -0000 1.193
***************
*** 68,72 ****
# Matrix of buckets, words and the word counts
$self->{matrix__} = {};
- $self->{db_env__} = 0;
# Total number of words in all buckets
--- 68,71 ----
***************
*** 297,304 ****
delete $self->{matrix__}{$bucket};
}
-
- if ( defined( $self->{db_env__} ) ) {
- delete $self->{db_env__};
- }
}
--- 296,299 ----
***************
*** 472,476 ****
$self->close_database__();
- $self->{db_env__} = new BerkeleyDB::Env -Flags => DB_INIT_CDB;
$self->{magnets__} = {};
--- 467,470 ----
|
|
From: <jgr...@us...> - 2003-09-10 18:26:33
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv28115/languages Modified Files: English.msg Log Message: Added UI elements for controlling forking of proxies, added sensible defaults for forking Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** English.msg 8 Sep 2003 18:03:57 -0000 1.41 --- English.msg 10 Sep 2003 18:26:29 -0000 1.42 *************** *** 100,103 **** --- 100,106 ---- Configuration_NNTPPort NNTP listen port Configuration_NNTPUpdate Updated NNTP port to %s; this change will not take affect until you restart POPFile + Configuration_POPFork Allow concurrent POP3 connections + Configuration_SMTPFork Allow concurrent SMTP connections + Configuration_NNTPFork Allow concurrent NNTP connections Configuration_POP3Separator POP3 host:port:user separator character Configuration_NNTPSeparator NNTP host:port:user separator character |
|
From: <jgr...@us...> - 2003-09-10 18:26:32
|
Update of /cvsroot/popfile/engine/Proxy
In directory sc8-pr-cvs1:/tmp/cvs-serv28115/Proxy
Modified Files:
NNTP.pm POP3.pm SMTP.pm
Log Message:
Added UI elements for controlling forking of proxies, added sensible defaults for forking
Index: NNTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/NNTP.pm,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** NNTP.pm 10 Sep 2003 14:00:41 -0000 1.17
--- NNTP.pm 10 Sep 2003 18:26:29 -0000 1.18
***************
*** 71,77 ****
my ( $self ) = @_;
! # By default we don't fork
! $self->config_( 'force_fork', 0 );
# Default ports for NNTP service and the user interface
--- 71,77 ----
my ( $self ) = @_;
! # By default we don't fork on Windows
! $self->config_( 'force_fork', ($^O eq 'MSWin32')?0:1 );
# Default ports for NNTP service and the user interface
***************
*** 97,100 ****
--- 97,104 ----
$self );
+ $self->register_configuration_item_( 'configuration', # PROFILE BLOCK START
+ 'nntp_force_fork',
+ $self ); # PROFILE BLOCK STOP
+
$self->register_configuration_item_( 'configuration',
'nntp_separator',
***************
*** 393,396 ****
--- 397,420 ----
}
+ if ( $name eq 'nntp_force_fork' ) {
+ $body .= "<span class=\"configurationLabel\">$$language{Configuration_NNTPFork}:</span><br />\n";
+ $body .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"\"><tr><td nowrap=\"nowrap\">\n";
+
+ if ( $self->config_( 'force_fork' ) == 0 ) {
+ $body .= "<form action=\"/configuration\">\n";
+ $body .= "<span class=\"securityWidgetStateOff\">$$language{No}</span>\n";
+ $body .= "<input type=\"submit\" class=\"toggleOn\" id=\"windowTrayIconOn\" name=\"toggle\" value=\"$$language{ChangeToYes}\" />\n";
+ $body .= "<input type=\"hidden\" name=\"nntp_force_fork\" value=\"1\" />\n";
+ $body .= "<input type=\"hidden\" name=\"session\" value=\"$session_key\" />\n</form>\n";
+ } else {
+ $body .= "<form action=\"/configuration\">\n";
+ $body .= "<span class=\"securityWidgetStateOn\">$$language{Yes}</span>\n";
+ $body .= "<input type=\"submit\" class=\"toggleOn\" id=\"windowTrayIconOff\" name=\"toggle\" value=\"$$language{ChangeToNo}\" />\n";
+ $body .= "<input type=\"hidden\" name=\"nntp_force_fork\" value=\"0\" />\n";
+ $body .= "<input type=\"hidden\" name=\"session\" value=\"$session_key\" />\n</form>\n";
+ }
+ $body .= "</td></tr></table>\n";
+ }
+
return $body;
}
***************
*** 436,439 ****
--- 460,470 ----
if ( $name eq 'nntp_local' ) {
$self->config_( 'local', $$form{nntp_local}-1 ) if ( defined($$form{nntp_local}) );
+ }
+
+
+ if ( $name eq 'nntp_force_fork' ) {
+ if ( defined($$form{nntp_force_fork}) ) {
+ $self->config_( 'force_fork', $$form{nntp_force_fork} );
+ }
}
Index: POP3.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v
retrieving revision 1.74
retrieving revision 1.75
diff -C2 -d -r1.74 -r1.75
*** POP3.pm 10 Sep 2003 14:00:41 -0000 1.74
--- POP3.pm 10 Sep 2003 18:26:29 -0000 1.75
***************
*** 71,76 ****
my ( $self ) = @_;
! # By default we don't fork
! $self->config_( 'force_fork', 0 );
# Default ports for POP3 service and the user interface
--- 71,76 ----
my ( $self ) = @_;
! # By default we don't fork on Windows
! $self->config_( 'force_fork', ($^O eq 'MSWin32')?0:1 );
# Default ports for POP3 service and the user interface
***************
*** 104,107 ****
--- 104,111 ----
$self ); # PROFILE BLOCK STOP
+ $self->register_configuration_item_( 'configuration', # PROFILE BLOCK START
+ 'pop3_force_fork',
+ $self ); # PROFILE BLOCK STOP
+
$self->register_configuration_item_( 'security', # PROFILE BLOCK START
'pop3_local',
***************
*** 574,577 ****
--- 578,601 ----
}
+ if ( $name eq 'pop3_force_fork' ) {
+ $body .= "<span class=\"configurationLabel\">$$language{Configuration_POPFork}:</span><br />\n";
+ $body .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"\"><tr><td nowrap=\"nowrap\">\n";
+
+ if ( $self->config_( 'force_fork' ) == 0 ) {
+ $body .= "<form action=\"/configuration\">\n";
+ $body .= "<span class=\"securityWidgetStateOff\">$$language{No}</span>\n";
+ $body .= "<input type=\"submit\" class=\"toggleOn\" id=\"windowTrayIconOn\" name=\"toggle\" value=\"$$language{ChangeToYes}\" />\n";
+ $body .= "<input type=\"hidden\" name=\"pop3_force_fork\" value=\"1\" />\n";
+ $body .= "<input type=\"hidden\" name=\"session\" value=\"$session_key\" />\n</form>\n";
+ } else {
+ $body .= "<form action=\"/configuration\">\n";
+ $body .= "<span class=\"securityWidgetStateOn\">$$language{Yes}</span>\n";
+ $body .= "<input type=\"submit\" class=\"toggleOn\" id=\"windowTrayIconOff\" name=\"toggle\" value=\"$$language{ChangeToNo}\" />\n";
+ $body .= "<input type=\"hidden\" name=\"pop3_force_fork\" value=\"0\" />\n";
+ $body .= "<input type=\"hidden\" name=\"session\" value=\"$session_key\" />\n</form>\n";
+ }
+ $body .= "</td></tr></table>\n";
+ }
+
return $body;
}
***************
*** 632,635 ****
--- 656,665 ----
return "<blockquote><div class=\"error01\">$$language{Security_Error1}</div></blockquote>";
}
+ }
+ }
+
+ if ( $name eq 'pop3_force_fork' ) {
+ if ( defined($$form{pop3_force_fork}) ) {
+ $self->config_( 'force_fork', $$form{pop3_force_fork} );
}
}
Index: SMTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** SMTP.pm 10 Sep 2003 14:00:41 -0000 1.18
--- SMTP.pm 10 Sep 2003 18:26:29 -0000 1.19
***************
*** 71,76 ****
my ( $self ) = @_;
! # By default we do fork
! $self->config_( 'force_fork', 1 );
# Default port for SMTP service
--- 71,76 ----
my ( $self ) = @_;
! # By default we don't fork on Windows
! $self->config_( 'force_fork', ($^O eq 'MSWin32')?0:1 );
# Default port for SMTP service
***************
*** 94,97 ****
--- 94,101 ----
$self );
+ $self->register_configuration_item_( 'configuration', # PROFILE BLOCK START
+ 'smtp_force_fork',
+ $self ); # PROFILE BLOCK STOP
+
$self->register_configuration_item_( 'security',
'smtp_local',
***************
*** 358,361 ****
--- 362,385 ----
}
+ if ( $name eq 'smtp_force_fork' ) {
+ $body .= "<span class=\"configurationLabel\">$$language{Configuration_SMTPFork}:</span><br />\n";
+ $body .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"\"><tr><td nowrap=\"nowrap\">\n";
+
+ if ( $self->config_( 'force_fork' ) == 0 ) {
+ $body .= "<form action=\"/configuration\">\n";
+ $body .= "<span class=\"securityWidgetStateOff\">$$language{No}</span>\n";
+ $body .= "<input type=\"submit\" class=\"toggleOn\" id=\"windowTrayIconOn\" name=\"toggle\" value=\"$$language{ChangeToYes}\" />\n";
+ $body .= "<input type=\"hidden\" name=\"smtp_force_fork\" value=\"1\" />\n";
+ $body .= "<input type=\"hidden\" name=\"session\" value=\"$session_key\" />\n</form>\n";
+ } else {
+ $body .= "<form action=\"/configuration\">\n";
+ $body .= "<span class=\"securityWidgetStateOn\">$$language{Yes}</span>\n";
+ $body .= "<input type=\"submit\" class=\"toggleOn\" id=\"windowTrayIconOff\" name=\"toggle\" value=\"$$language{ChangeToNo}\" />\n";
+ $body .= "<input type=\"hidden\" name=\"smtp_force_fork\" value=\"0\" />\n";
+ $body .= "<input type=\"hidden\" name=\"session\" value=\"$session_key\" />\n</form>\n";
+ }
+ $body .= "</td></tr></table>\n";
+ }
+
return $body;
}
***************
*** 405,408 ****
--- 429,438 ----
return "<blockquote><div class=\"error01\">$$language{Security_Error1}</div></blockquote>";
}
+ }
+ }
+
+ if ( $name eq 'smtp_force_fork' ) {
+ if ( defined($$form{smtp_force_fork}) ) {
+ $self->config_( 'force_fork', $$form{smtp_force_fork} );
}
}
|
|
From: <jgr...@us...> - 2003-09-10 18:26:32
|
Update of /cvsroot/popfile/engine/Platform
In directory sc8-pr-cvs1:/tmp/cvs-serv28115/Platform
Modified Files:
MSWin32.pm
Log Message:
Added UI elements for controlling forking of proxies, added sensible defaults for forking
Index: MSWin32.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Platform/MSWin32.pm,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** MSWin32.pm 31 Jul 2003 16:32:21 -0000 1.9
--- MSWin32.pm 10 Sep 2003 18:26:28 -0000 1.10
***************
*** 91,95 ****
my $body;
! # POP3 Listen Port widget
if ( $name eq 'windows_trayicon' ) {
$body .= "<span class=\"configurationLabel\">$$language{Windows_TrayIcon}:</span><br />\n";
--- 91,95 ----
my $body;
! # Tray icon widget
if ( $name eq 'windows_trayicon' ) {
$body .= "<span class=\"configurationLabel\">$$language{Windows_TrayIcon}:</span><br />\n";
|
|
From: <jgr...@us...> - 2003-09-10 14:00:45
|
Update of /cvsroot/popfile/engine/Proxy
In directory sc8-pr-cvs1:/tmp/cvs-serv1158/Proxy
Modified Files:
NNTP.pm POP3.pm Proxy.pm SMTP.pm
Log Message:
Add mechanism for proxies to flush child data when non-forked; this is needed by Windows Perl which has trouble with pipes getting full
Index: NNTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/NNTP.pm,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** NNTP.pm 10 Sep 2003 04:33:33 -0000 1.16
--- NNTP.pm 10 Sep 2003 14:00:41 -0000 1.17
***************
*** 120,124 ****
sub child__
{
! my ( $self, $client, $download_count, $pipe ) = @_;
# Number of messages downloaded in this session
--- 120,124 ----
sub child__
{
! my ( $self, $client, $download_count, $pipe, $ppipe, $pid ) = @_;
# Number of messages downloaded in this session
***************
*** 249,252 ****
--- 249,253 ----
print $pipe "CLASS:$class$eol";
print $pipe "NEWFL:$history_file$eol";
+ $self->yield_( $ppipe, $pid );
}
***************
*** 331,334 ****
--- 332,336 ----
close $client;
print $pipe "CMPLT$eol";
+ $self->yield_( $ppipe, $pid );
close $pipe;
Index: POP3.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v
retrieving revision 1.73
retrieving revision 1.74
diff -C2 -d -r1.73 -r1.74
*** POP3.pm 10 Sep 2003 04:33:33 -0000 1.73
--- POP3.pm 10 Sep 2003 14:00:41 -0000 1.74
***************
*** 125,135 ****
# The worker method that is called when we get a good connection from a client
#
! # $client - an open stream to a POP3 client
# $download_count - The unique download count for this session
#
# ---------------------------------------------------------------------------------------------
sub child__
{
! my ( $self, $client, $download_count, $pipe ) = @_;
# Hash of indexes of downloaded messages
--- 125,138 ----
# The worker method that is called when we get a good connection from a client
#
! # $client - an open stream to a POP3 client
# $download_count - The unique download count for this session
+ # $pipe - The pipe to the parent process to send messages to
+ # $ppipe - 0 or the parent's end of the pipe
+ # $pid - 0 if this is a child process
#
# ---------------------------------------------------------------------------------------------
sub child__
{
! my ( $self, $client, $download_count, $pipe, $ppipe, $pid ) = @_;
# Hash of indexes of downloaded messages
***************
*** 170,173 ****
--- 173,177 ----
if ( $1 ne '' ) {
print $pipe "LOGIN:$4$eol";
+ $self->yield_( $ppipe, $pid );
if ( $mail = $self->verify_connected_( $mail, $client, $1, $3 || 110 ) ) {
***************
*** 329,332 ****
--- 333,337 ----
print $pipe "CLASS:$class$eol";
print $pipe "NEWFL:$history_file$eol";
+ $self->yield_( $ppipe, $pid );
}
}
***************
*** 426,429 ****
--- 431,435 ----
print $pipe "CLASS:$class$eol";
+ $self->yield_( $ppipe, $pid );
}
***************
*** 445,448 ****
--- 451,455 ----
print $pipe "NEWFL:$history_file$eol";
print $pipe "CLASS:$class$eol";
+ $self->yield_( $ppipe, $pid );
# Note locally that file has been retrieved
***************
*** 486,489 ****
--- 493,497 ----
close $client;
print $pipe "CMPLT$eol";
+ $self->yield_( $ppipe, $pid );
close $pipe;
Index: Proxy.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -d -r1.34 -r1.35
*** Proxy.pm 10 Sep 2003 04:33:33 -0000 1.34
--- Proxy.pm 10 Sep 2003 14:00:41 -0000 1.35
***************
*** 346,350 ****
if ( !defined( $pid ) || ( $pid == 0 ) ) {
! $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $pipe );
exit(0) if ( defined( $pid ) );
}
--- 346,350 ----
if ( !defined( $pid ) || ( $pid == 0 ) ) {
! $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $pipe, 0, $pid );
exit(0) if ( defined( $pid ) );
}
***************
*** 352,356 ****
pipe my $reader, my $writer;
! $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $writer );
$self->{flush_child_data_}( $self, $reader );
}
--- 352,356 ----
pipe my $reader, my $writer;
! $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $writer, $reader, $$ );
$self->{flush_child_data_}( $self, $reader );
}
***************
*** 362,365 ****
--- 362,383 ----
return 1;
+ }
+
+
+ # ---------------------------------------------------------------------------------------------
+ #
+ # yield_
+ #
+ # Called by a proxy child process to allow the parent to do work, this only does anything
+ # in the case where we didn't fork for the child process
+ #
+ # ---------------------------------------------------------------------------------------------
+ sub yield_
+ {
+ my ( $self, $pipe, $pid ) = @_;
+
+ if ( $pid != 0 ) {
+ $self->{flush_child_data_}( $self, $pipe )
+ }
}
Index: SMTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** SMTP.pm 10 Sep 2003 04:33:33 -0000 1.17
--- SMTP.pm 10 Sep 2003 14:00:41 -0000 1.18
***************
*** 121,125 ****
sub child__
{
! my ( $self, $client, $download_count, $pipe ) = @_;
# Number of messages downloaded in this session
--- 121,125 ----
sub child__
{
! my ( $self, $client, $download_count, $pipe, $ppipe, $pid ) = @_;
# Number of messages downloaded in this session
***************
*** 227,230 ****
--- 227,231 ----
print $pipe "CLASS:$class$eol";
print $pipe "NEWFL:$history_file$eol";
+ $self->yield_( $ppipe, $pid );
my $response = <$mail>;
***************
*** 262,265 ****
--- 263,267 ----
close $client;
print $pipe "CMPLT$eol";
+ $self->yield_( $ppipe, $pid );
close $pipe;
}
|
|
From: <jgr...@us...> - 2003-09-10 04:33:36
|
Update of /cvsroot/popfile/engine/Proxy
In directory sc8-pr-cvs1:/tmp/cvs-serv1807/Proxy
Modified Files:
NNTP.pm POP3.pm Proxy.pm SMTP.pm
Log Message:
ADDITION OF FORCE_FORK PARAMETER FOR PROXIES
Proxy.pm:
Handle the force_fork parameter. If it is 1 then when we get
a connection from a client we fork, if it is 0 then we handle
the connection in line and queue up connections using the standard
TCP mechanism up to the maximum backlog for the platform.
POP3.pm:
NNTP.pm:
Default to not forking
SMTP.pm:
Default to forking
Index: NNTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/NNTP.pm,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** NNTP.pm 31 Jul 2003 16:32:21 -0000 1.15
--- NNTP.pm 10 Sep 2003 04:33:33 -0000 1.16
***************
*** 71,74 ****
--- 71,78 ----
my ( $self ) = @_;
+ # By default we don't fork
+
+ $self->config_( 'force_fork', 0 );
+
# Default ports for NNTP service and the user interface
Index: POP3.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v
retrieving revision 1.72
retrieving revision 1.73
diff -C2 -d -r1.72 -r1.73
*** POP3.pm 1 Aug 2003 02:45:42 -0000 1.72
--- POP3.pm 10 Sep 2003 04:33:33 -0000 1.73
***************
*** 71,74 ****
--- 71,77 ----
my ( $self ) = @_;
+ # By default we don't fork
+ $self->config_( 'force_fork', 0 );
+
# Default ports for POP3 service and the user interface
$self->config_( 'port', 110 );
Index: Proxy.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -d -r1.33 -r1.34
*** Proxy.pm 28 Aug 2003 15:27:56 -0000 1.33
--- Proxy.pm 10 Sep 2003 04:33:33 -0000 1.34
***************
*** 193,197 ****
}
-
# ---------------------------------------------------------------------------------------------
#
--- 193,196 ----
***************
*** 204,208 ****
#
# ---------------------------------------------------------------------------------------------
-
sub read_pipe_
{
--- 203,206 ----
***************
*** 329,346 ****
$self->global_config_( 'download_count', $self->global_config_( 'download_count' ) + 1 );
! my ($pid,$pipe) = &{$self->{forker_}};
binmode( $client );
! # If we are in the parent process then push the pipe handle onto the children list
! if ( ( defined( $pid ) ) && ( $pid != 0 ) ) {
! $self->{children__}{$pid} = $pipe;
! }
! # If we fail to fork, or are in the child process then process this request
! if ( !defined( $pid ) || ( $pid == 0 ) ) {
! $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $pipe );
! exit(0) if ( defined( $pid ) );
}
}
--- 327,357 ----
$self->global_config_( 'download_count', $self->global_config_( 'download_count' ) + 1 );
!
! # If we have force_fork turned on then we will do a fork, otherwise we will handle this
! # inline, in the inline case we need to create the two ends of a pipe that will be used
! # as if there was a child process
!
binmode( $client );
! if ( $self->config_( 'force_fork' ) ) {
! my ( $pid, $pipe ) = &{$self->{forker_}};
! # If we are in the parent process then push the pipe handle onto the children list
! if ( ( defined( $pid ) ) && ( $pid != 0 ) ) {
! $self->{children__}{$pid} = $pipe;
! }
! # If we fail to fork, or are in the child process then process this request
!
! if ( !defined( $pid ) || ( $pid == 0 ) ) {
! $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $pipe );
! exit(0) if ( defined( $pid ) );
! }
! } else {
! pipe my $reader, my $writer;
!
! $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $writer );
! $self->{flush_child_data_}( $self, $reader );
}
}
Index: SMTP.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** SMTP.pm 31 Jul 2003 16:32:21 -0000 1.16
--- SMTP.pm 10 Sep 2003 04:33:33 -0000 1.17
***************
*** 71,85 ****
my ( $self ) = @_;
! # Default port for SMTP service
$self->config_( 'port', 25 );
# Where to forward on to
-
$self->config_( 'chain_server', '' );
$self->config_( 'chain_port', 25 );
# Only accept connections from the local machine for smtp
-
$self->config_( 'local', 1 );
--- 71,85 ----
my ( $self ) = @_;
! # By default we do fork
! $self->config_( 'force_fork', 1 );
+ # Default port for SMTP service
$self->config_( 'port', 25 );
# Where to forward on to
$self->config_( 'chain_server', '' );
$self->config_( 'chain_port', 25 );
# Only accept connections from the local machine for smtp
$self->config_( 'local', 1 );
|
|
From: <jgr...@us...> - 2003-09-10 04:06:23
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv30285/Classifier
Modified Files:
Bayes.pm
Log Message:
Division is faster than log
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.191
retrieving revision 1.192
diff -C2 -d -r1.191 -r1.192
*** Bayes.pm 10 Sep 2003 04:04:27 -0000 1.191
--- Bayes.pm 10 Sep 2003 04:06:19 -0000 1.192
***************
*** 350,354 ****
if ( defined( $value ) ) {
my $total = $self->get_bucket_word_count( $bucket );
! return log( $value ) - log( $total );
} else {
return 0;
--- 350,354 ----
if ( defined( $value ) ) {
my $total = $self->get_bucket_word_count( $bucket );
! return log( $value / $total );
} else {
return 0;
***************
*** 445,449 ****
if ( $self->{full_total__} > 0 ) {
! $self->{not_likely__} = -log( $self->{full_total__} ) - log(10);
foreach my $bucket (keys %{$self->{matrix__}}) {
--- 445,449 ----
if ( $self->{full_total__} > 0 ) {
! $self->{not_likely__} = -log( $self->{full_total__} / 10 );
foreach my $bucket (keys %{$self->{matrix__}}) {
***************
*** 451,455 ****
if ( $total != 0 ) {
! $self->{bucket_start__}{$bucket} = log( $total ) - log( $self->{full_total__} );
} else {
$self->{bucket_start__}{$bucket} = 0;
--- 451,455 ----
if ( $total != 0 ) {
! $self->{bucket_start__}{$bucket} = log( $total / $self->{full_total__} );
} else {
$self->{bucket_start__}{$bucket} = 0;
|
|
From: <jgr...@us...> - 2003-09-10 04:04:30
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv29933/Classifier
Modified Files:
Bayes.pm
Log Message:
Remove some useless code
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.190
retrieving revision 1.191
diff -C2 -d -r1.190 -r1.191
*** Bayes.pm 10 Sep 2003 03:54:14 -0000 1.190
--- Bayes.pm 10 Sep 2003 04:04:27 -0000 1.191
***************
*** 840,844 ****
foreach my $word (keys %{$self->{parser__}->{words__}}) {
$word_count += 2;
- my $wmax = -10000;
foreach my $bucket (@buckets) {
--- 840,843 ----
***************
*** 847,851 ****
$matchcount{$bucket} += $self->{parser__}{words__}{$word} if ($probability != 0);
$probability = $self->{not_likely__} if ( $probability == 0 );
- $wmax = $probability if ( $wmax < $probability );
# Here we are doing the bayes calculation: P(word|bucket) is in probability
--- 846,849 ----
|
|
From: <jgr...@us...> - 2003-09-10 03:54:51
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv27765/Classifier
Modified Files:
Bayes.pm
Log Message:
PORT TO STORE CORPUS IN BERKELEYDB DATABASES
Bayes.pm:
The $self->{matrix__} hash is now a collection of tied hashes
to BerkeleyDB databases named table.db in each of the corpus
bucket subdirectories. The set_value_ and get_value_ accessors
have been modified to access the database. load_word_matrix_
and load_bucket_ now load the bucket information from the database
in concurrent mode.
prefork, forked and postfork handling closing and opening database
connections around forks to ensure that there are no threading
problems with the database.
close_database__ can be called to clean up the connection to the
database at any time.
Many API functions have been modified internally to use the new
structure. The external APIs have not changed. get_bucket_word_list
is currently not implemented.
load_bucket_ does automatic upgrade from the old flat file style
of corpus to the database.
HTML.pm:
Added a note that since get_bucket_word_list isn't working it is
not possible to view the words in a bucket.
Module.pm:
Added description and base implementation of the new postfork()
method that is called on all modules when a fork has occurred and
in the parent process. This is the parent equivalent of forked().
Loader.pm:
The forker is modified to call postfork() in the parent process
after a successful fork.
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.189
retrieving revision 1.190
diff -C2 -d -r1.189 -r1.190
*** Bayes.pm 9 Sep 2003 00:28:19 -0000 1.189
--- Bayes.pm 10 Sep 2003 03:54:14 -0000 1.190
***************
*** 37,45 ****
--- 37,53 ----
# This is used to get the hostname of the current machine
# in a cross platform way
+
use Sys::Hostname;
# A handy variable containing the value of an EOL for networks
+
my $eol = "\015\012";
+ # The corpus is stored in BerkeleyDB hashes called table.db in each
+ # of the corpus/* subdirectories. The db files are tied to Perl
+ # hashes for simple access
+
+ use BerkeleyDB;
+
#----------------------------------------------------------------------------
# new
***************
*** 60,69 ****
# Matrix of buckets, words and the word counts
$self->{matrix__} = {};
!
! # Total number of words in each bucket
! $self->{total__} = {};
!
! # Total number of unique words in each bucket
! $self->{unique__} = {};
# Total number of words in all buckets
--- 68,72 ----
# Matrix of buckets, words and the word counts
$self->{matrix__} = {};
! $self->{db_env__} = 0;
# Total number of words in all buckets
***************
*** 122,125 ****
--- 125,175 ----
# ---------------------------------------------------------------------------------------------
#
+ # prefork
+ #
+ # POPFile is about to fork, because the BerkeleyDB interface doesn't support multiple
+ # threads accessing the database we will get a nasty failure if the database is tied to
+ # the hashes when the fork occurs (actually when the child exits). So here we untie from
+ # the database
+ #
+ # ---------------------------------------------------------------------------------------------
+ sub prefork
+ {
+ my ( $self ) = @_;
+
+ $self->close_database__();
+ }
+
+ # ---------------------------------------------------------------------------------------------
+ #
+ # forked
+ #
+ # This is called inside a child process that has just forked, since the child needs access
+ # to the database we reopen it
+ #
+ # ---------------------------------------------------------------------------------------------
+ sub forked
+ {
+ my ( $self ) = @_;
+
+ $self->load_word_matrix_();
+ }
+
+ # ---------------------------------------------------------------------------------------------
+ #
+ # forked
+ #
+ # This is called inside the parent process that has just forked, since the parent needs access
+ # to the database we reopen it
+ #
+ # ---------------------------------------------------------------------------------------------
+ sub postfork
+ {
+ my ( $self ) = @_;
+
+ $self->load_word_matrix_();
+ }
+
+ # ---------------------------------------------------------------------------------------------
+ #
# initialize
#
***************
*** 190,193 ****
--- 240,244 ----
$self->write_parameters();
+ $self->close_database__();
}
***************
*** 222,226 ****
my ($self) = @_;
! for my $bucket (keys %{$self->{total__}}) {
open PARAMS, '>' . $self->config_( 'corpus' ) . "/$bucket/params";
for my $param (keys %{$self->{parameters__}{$bucket}}) {
--- 273,277 ----
my ($self) = @_;
! for my $bucket (keys %{$self->{matrix__}}) {
open PARAMS, '>' . $self->config_( 'corpus' ) . "/$bucket/params";
for my $param (keys %{$self->{parameters__}{$bucket}}) {
***************
*** 233,236 ****
--- 284,308 ----
# ---------------------------------------------------------------------------------------------
#
+ # close_database__
+ #
+ # Close all the database connections
+ #
+ # ---------------------------------------------------------------------------------------------
+ sub close_database__
+ {
+ my ( $self ) = @_;
+
+ for my $bucket (keys %{$self->{matrix__}}) {
+ untie %{$self->{matrix__}{$bucket}};
+ delete $self->{matrix__}{$bucket};
+ }
+
+ if ( defined( $self->{db_env__} ) ) {
+ delete $self->{db_env__};
+ }
+ }
+
+ # ---------------------------------------------------------------------------------------------
+ #
# get_color
#
***************
*** 247,252 ****
my $color = 'black';
! for my $bucket (keys %{$self->{total__}}) {
! my $prob = get_value_( $self, $bucket, $word);
if ( $prob != 0 ) {
--- 319,324 ----
my $color = 'black';
! for my $bucket (keys %{$self->{matrix__}}) {
! my $prob = get_value_( $self, $bucket, $word );
if ( $prob != 0 ) {
***************
*** 263,301 ****
# ---------------------------------------------------------------------------------------------
#
! # Perl hashes are a memory hog. The original implementation was a Perl hash for the word
! # matrix, but instead we use a a set of nested array and some regexps magic.
! #
! # The word paradise in the bucket spam will be found in the array element
! # matrix{spam}[p] with an entry of the form "|paradise 1234|".
#
! # TODO: replace the word matrix hash with Berkeley DB tie
#
# ---------------------------------------------------------------------------------------------
sub get_value_
{
! my ($self, $bucket, $word) = @_;
! $word =~ /^(.)/;
! my $i = ord($1);
! if ( defined($self->{matrix__}{$bucket}[$i]) ) {
! if ( ( $self->{matrix__}{$bucket}[$i] =~ /\|\Q$word\E (\d+)\|/ ) != 0 ) {
! my $newvalue = log($1/$self->{total__}{$bucket});
! return $newvalue;
! }
}
! return 0;
}
sub set_value_
{
! my ($self, $bucket, $word, $value) = @_;
! if ( $word ne '' ) {
! $word =~ /^(.)/;
! my $i = ord($1);
! $self->{matrix__}{$bucket}[$i] = '' if ( !defined($self->{matrix__}{$bucket}[$i]) );
! $self->{matrix__}{$bucket}[$i] .= "|$word $value|" if ( ( $self->{matrix__}{$bucket}[$i] =~ s/\|\Q$word\E [\-\.\d]+\|/\|$word $value\|/ ) == 0 );
}
}
--- 335,413 ----
# ---------------------------------------------------------------------------------------------
#
! # get_value_
#
! # Returns the value for a specific word in a bucket. The word is converted to the log value
! # of the probability before return to get the raw value just hit the hash directly or call
! # get_base_value_
#
# ---------------------------------------------------------------------------------------------
sub get_value_
{
! my ( $self, $bucket, $word ) = @_;
! my $value = $self->{matrix__}{$bucket}{$word};
!
! if ( defined( $value ) ) {
! my $total = $self->get_bucket_word_count( $bucket );
! return log( $value ) - log( $total );
! } else {
! return 0;
}
+ }
! sub get_base_value_
! {
! my ( $self, $bucket, $word ) = @_;
!
! my $value = $self->{matrix__}{$bucket}{$word};
!
! if ( defined( $value ) ) {
! return $value;
! } else {
! return 0;
! }
}
+ # ---------------------------------------------------------------------------------------------
+ #
+ # set_value_
+ #
+ # Sets the value for a word in a bucket and updates the total word counts for the bucket
+ # and globally
+ #
+ # ---------------------------------------------------------------------------------------------
sub set_value_
{
! my ( $self, $bucket, $word, $value ) = @_;
! # If there's an existing value then remove it and keep the total up to date
! # then add the new value, this is a little complicated but by keeping the
! # total in a value in the database it avoids us doing any sort of query
! # or full table scan
! my $oldvalue = $self->{matrix__}{$bucket}{$word};
!
! if ( !defined( $oldvalue ) ) {
! $oldvalue = 0;
! $self->{matrix__}{$bucket}{$word} = $oldvalue;
! if ( defined( $self->{matrix__}{$bucket}{__POPFILE__UNIQUE__} ) ) {
! $self->{matrix__}{$bucket}{__POPFILE__UNIQUE__} += 1;
! } else {
! $self->{matrix__}{$bucket}{__POPFILE__UNIQUE__} = 1;
! }
! }
!
! my $total = $self->get_bucket_word_count( $bucket );
!
! $total -= $oldvalue;
! $self->{full_total__} -= $oldvalue;
! $self->{matrix__}{$bucket}{$word} = $value;
! $total += $value;
! $self->{matrix__}{$bucket}{__POPFILE__TOTAL__} = $total;
! $self->{full_total__} += $value;
!
! if ( $self->{matrix__}{$bucket}{$word} <= 0 ) {
! $self->{matrix__}{$bucket}{__POPFILE__UNIQUE__} -= 1;
! delete $self->{matrix__}{$bucket}{$word};
}
}
***************
*** 333,344 ****
if ( $self->{full_total__} > 0 ) {
! # ln(10) =~ 2.30258509299404568401799145468436
!
! $self->{not_likely__} = -log( $self->{full_total__} ) - 2.30258509299404568401799145468436;
! foreach my $bucket (keys %{$self->{total__}}) {
! if ( $self->{total__}{$bucket} != 0 ) {
! $self->{bucket_start__}{$bucket} = log( $self->{total__}{$bucket} / $self->{full_total__} );
} else {
$self->{bucket_start__}{$bucket} = 0;
--- 445,455 ----
if ( $self->{full_total__} > 0 ) {
+ $self->{not_likely__} = -log( $self->{full_total__} ) - log(10);
! foreach my $bucket (keys %{$self->{matrix__}}) {
! my $total = $self->get_bucket_word_count( $bucket );
! if ( $total != 0 ) {
! $self->{bucket_start__}{$bucket} = log( $total ) - log( $self->{full_total__} );
} else {
$self->{bucket_start__}{$bucket} = 0;
***************
*** 360,365 ****
my $c = 0;
! $self->{matrix__} = {};
! $self->{total__} = {};
$self->{magnets__} = {};
$self->{full_total__} = 0;
--- 471,477 ----
my $c = 0;
! $self->close_database__();
! $self->{db_env__} = new BerkeleyDB::Env -Flags => DB_INIT_CDB;
!
$self->{magnets__} = {};
$self->{full_total__} = 0;
***************
*** 393,399 ****
$self->load_bucket_( $bucket );
$bucket =~ /([[:alpha:]0-9-_]+)$/;
$bucket = $1;
- $self->{full_total__} += $self->{total__}{$bucket};
if ( $color eq '' ) {
--- 505,511 ----
$self->load_bucket_( $bucket );
+
$bucket =~ /([[:alpha:]0-9-_]+)$/;
$bucket = $1;
if ( $color eq '' ) {
***************
*** 445,451 ****
$self->{parameters__}{$bucket}{quarantine} = 0;
- $self->{total__}{$bucket} = 0;
- $self->{unique__}{$bucket} = 0;
- $self->{matrix__}{$bucket} = ();
$self->{magnets__}{$bucket} = {};
--- 557,560 ----
***************
*** 502,541 ****
}
! # Each line in the word table is a word and a count
! $self->{total__}{$bucket} = 0;
! if ( open WORDS, '<' . $self->config_( 'corpus' ) . "/$bucket/table" ) {
! my $first = <WORDS>;
! if ( defined( $first ) && ( $first =~ s/^__CORPUS__ __VERSION__ (\d+)// ) ) {
! if ( $1 != $self->{corpus_version__} ) {
! print STDERR "Incompatible corpus version in $bucket\n";
! close WORDS;
! return 0;
! }
! } else {
! close WORDS;
! return 0;
! }
! while ( <WORDS> ) {
! s/[\r\n]//g;
! if ( /^([^\s]+) (\d+)$/ ) {
! my $word = $1;
! my $value = $2;
! if ( $value > 0 ) {
! $self->{total__}{$bucket} += $value;
! $self->{unique__}{$bucket} += 1;
! set_value_( $self, $bucket, $word, $value );
}
} else {
! $self->log_( "Found entry in corpus for $bucket that looks wrong: \"$_\" (ignoring)" );
! }
! }
! close WORDS;
}
$self->calculate_magnet_count__();
--- 611,678 ----
}
! # This code performs two tasks:
! #
! # If there is an existing table.db in the bucket directory then simply
! # tie it to the appropriate hash.
! #
! # If there is no existing table but there is a table file (the old style
! # flat file used by POPFile for corpus storage) then create the new
! # tied hash from it thus performing an automatic upgrade.
! tie %{$self->{matrix__}{$bucket}}, "BerkeleyDB::Hash",
! -Filename => $self->config_( 'corpus' ) . "/$bucket/table.db",
! -Flags => DB_CREATE;
! if ( !defined( $self->get_bucket_word_count( $bucket ) ) ) {
! $self->{matrix__}{$bucket}{__POPFILE__TOTAL__} = 0;
! }
! if ( -e $self->config_( 'corpus' ) . "/$bucket/table" ) {
! $self->log_( "Performing automatic upgrade of $bucket corpus from flat file to BerkeleyDB" );
! my $ft = $self->{full_total__};
!
! if ( open WORDS, '<' . $self->config_( 'corpus' ) . "/$bucket/table" ) {
!
! print "\nUpgrading bucket $bucket...";
! flush STDOUT;
! my $wc = 1;
!
! my $first = <WORDS>;
! if ( defined( $first ) && ( $first =~ s/^__CORPUS__ __VERSION__ (\d+)// ) ) {
! if ( $1 != $self->{corpus_version__} ) {
! print STDERR "Incompatible corpus version in $bucket\n";
! close WORDS;
! } else {
! while ( <WORDS> ) {
! if ( $wc % 100 == 0 ) {
! print "$wc ";
! flush STDOUT;
! }
! $wc += 1;
! s/[\r\n]//g;
!
! if ( /^([^\s]+) (\d+)$/ ) {
! $self->set_value_( $bucket, $1, $2 );
! } else {
! $self->log_( "Found entry in corpus for $bucket that looks wrong: \"$_\" (ignoring)" );
! }
! }
}
+
+ print "(completed $wc words)";
+ close WORDS;
} else {
! close WORDS;
! }
! unlink( $self->config_( 'corpus' ) . "/$bucket/table" );
!
! $self->{full_total__} = $ft;
! }
}
+ $self->{full_total__} += $self->get_bucket_word_count( $bucket );
+
$self->calculate_magnet_count__();
***************
*** 557,561 ****
$self->{magnet_count__} = 0;
! for my $bucket (keys %{$self->{total__}}) {
for my $type (keys %{$self->{magnets__}{$bucket}}) {
for my $from (keys %{$self->{magnets__}{$bucket}{$type}}) {
--- 694,698 ----
$self->{magnet_count__} = 0;
! for my $bucket (keys %{$self->{matrix__}}) {
for my $type (keys %{$self->{magnets__}{$bucket}}) {
for my $from (keys %{$self->{magnets__}{$bucket}{$type}}) {
***************
*** 577,581 ****
my ($self) = @_;
! for my $bucket (keys %{$self->{total__}}) {
open MAGNET, '>' . $self->config_( 'corpus' ). "/$bucket/magnets";
--- 714,718 ----
my ($self) = @_;
! for my $bucket (keys %{$self->{matrix__}}) {
open MAGNET, '>' . $self->config_( 'corpus' ). "/$bucket/magnets";
***************
*** 602,606 ****
#
# ---------------------------------------------------------------------------------------------
-
sub chi2
{
--- 739,742 ----
***************
*** 646,650 ****
# Get the list of buckets
! my @buckets = keys %{$self->{total__}};
for my $bucket (sort keys %{$self->{magnets__}}) {
--- 782,786 ----
# Get the list of buckets
! my @buckets = keys %{$self->{matrix__}};
for my $bucket (sort keys %{$self->{magnets__}}) {
***************
*** 707,711 ****
foreach my $bucket (@buckets) {
! my $probability = get_value_( $self, $bucket, $word );
$matchcount{$bucket} += $self->{parser__}{words__}{$word} if ($probability != 0);
--- 843,847 ----
foreach my $bucket (@buckets) {
! my $probability = $self->get_value_( $bucket, $word );
$matchcount{$bucket} += $self->{parser__}{words__}{$word} if ($probability != 0);
***************
*** 841,845 ****
foreach my $ix (0..($#buckets > 7? 7: $#buckets)) {
my $bucket = $ranking[$ix];
! my $probability = get_value_( $self, $bucket, $word );
my $color = 'black';
--- 977,981 ----
foreach my $ix (0..($#buckets > 7? 7: $#buckets)) {
my $bucket = $ranking[$ix];
! my $probability = $self->get_value_( $bucket, $word );
my $color = 'black';
***************
*** 1284,1288 ****
my ( $self ) = @_;
! return sort keys %{$self->{total__}};
}
--- 1420,1424 ----
my ( $self ) = @_;
! return sort keys %{$self->{matrix__}};
}
***************
*** 1300,1304 ****
my ( $self, $bucket ) = @_;
! return $self->{total__}{$bucket};
}
--- 1436,1440 ----
my ( $self, $bucket ) = @_;
! return $self->{matrix__}{$bucket}{__POPFILE__TOTAL__};
}
***************
*** 1320,1330 ****
if ( $self->get_bucket_word_count( $bucket ) > 0 ) {
! my @entries = @{$self->{matrix__}{$bucket}};
! for my $i (0..$#entries) {
! if ( defined( $entries[$i] ) && ( $entries[$i] ne '' ) ) {
! push @result, ($entries[$i]);
! }
! }
}
--- 1456,1466 ----
if ( $self->get_bucket_word_count( $bucket ) > 0 ) {
! # TODO my @entries = @{$self->{matrix__}{$bucket}};
! # TODO for my $i (0..$#entries) {
! # TODO if ( defined( $entries[$i] ) && ( $entries[$i] ne '' ) ) {
! # TODO push @result, ($entries[$i]);
! # TODO }
! # TODO }
}
***************
*** 1360,1370 ****
my ( $self, $bucket, $word ) = @_;
! my $value = $self->get_value_( $bucket, $word );
!
! if ( $value == 0 ) {
! return 0;
! } else {
! return int( exp( $value ) * $self->get_bucket_word_count( $bucket ) + 0.5 );
! }
}
--- 1496,1500 ----
my ( $self, $bucket, $word ) = @_;
! return $self->get_base_value_( $bucket, $word );
}
***************
*** 1382,1386 ****
my ( $self, $bucket ) = @_;
! return $self->{unique__}{$bucket};
}
--- 1512,1516 ----
my ( $self, $bucket ) = @_;
! return $self->{matrix__}{$bucket}{__POPFILE__UNIQUE__};
}
***************
*** 1498,1505 ****
mkdir( $self->config_( 'corpus' ) . "/$bucket" );
! if ( open NEW, '>' . $self->config_( 'corpus' ) . "/$bucket/table" ) {
! print NEW "__CORPUS__ __VERSION__ 1\n";
! close NEW;
! }
$self->load_word_matrix_();
--- 1628,1634 ----
mkdir( $self->config_( 'corpus' ) . "/$bucket" );
! tie %{$self->{matrix__}{$bucket}}, "BerkeleyDB::Hash",
! -Filename => $self->config_( 'corpus' ) . "/$bucket/table.db",
! -Flags => DB_CREATE;
$self->load_word_matrix_();
***************
*** 1519,1523 ****
my ( $self, $bucket ) = @_;
! if ( !defined( $self->{total__}{$bucket} ) ) {
return 0;
}
--- 1648,1652 ----
my ( $self, $bucket ) = @_;
! if ( !defined( $self->{matrix__}{$bucket} ) ) {
return 0;
}
***************
*** 1525,1529 ****
my $bucket_directory = $self->config_( 'corpus' ) . "/$bucket";
! unlink( "$bucket_directory/table" );
unlink( "$bucket_directory/color" );
unlink( "$bucket_directory/params" );
--- 1654,1660 ----
my $bucket_directory = $self->config_( 'corpus' ) . "/$bucket";
! $self->close_database__();
!
! unlink( "$bucket_directory/table.db" );
unlink( "$bucket_directory/color" );
unlink( "$bucket_directory/params" );
***************
*** 1550,1557 ****
my ( $self, $old_bucket, $new_bucket ) = @_;
! if ( !defined( $self->{total__}{$old_bucket} ) ) {
return 0;
}
rename($self->config_( 'corpus' ) . "/$old_bucket" , $self->config_( 'corpus' ) . "/$new_bucket");
--- 1681,1690 ----
my ( $self, $old_bucket, $new_bucket ) = @_;
! if ( !defined( $self->{matrix__}{$old_bucket} ) ) {
return 0;
}
+ $self->close_database__();
+
rename($self->config_( 'corpus' ) . "/$old_bucket" , $self->config_( 'corpus' ) . "/$new_bucket");
***************
*** 1578,1629 ****
# when making a new bucket.
! if ( !defined( $self->{total__}{$bucket} ) ) {
return 0;
}
- my %words;
-
- if ( open WORDS, '<' . $self->config_( 'corpus' ) . "/$bucket/table" ) {
- while (<WORDS>) {
- if ( /__CORPUS__ __VERSION__ (\d+)/ ) {
- if ( $1 != $self->{corpus_version__} ) {
- print STDERR "Incompatible corpus version in $bucket\n";
- close WORDS;
- return 0;
- }
-
- next;
- }
-
- s/[\r\n]//g;
-
- if ( /^([^\s]+) (\d+)$/ ) {
- my $word = $1;
- my $value = $2;
- if ( $value > 0 ) {
- $words{$word} = $value;
- }
- }
- }
-
- close WORDS;
- }
-
foreach my $file (@files) {
$self->{parser__}->parse_file( $file );
foreach my $word (keys %{$self->{parser__}->{words__}}) {
! $words{$word} += $self->{parser__}->{words__}{$word};
! }
! }
!
! if ( open WORDS, '>' . $self->config_( 'corpus' ) . "/$bucket/table" ) {
! print WORDS "__CORPUS__ __VERSION__ 1\n";
! foreach my $word (sort keys %words) {
! if ( $words{$word} != 0 ) {
! print WORDS "$word $words{$word}\n";
! }
}
- close WORDS;
}
--- 1711,1724 ----
# when making a new bucket.
! if ( !defined( $self->{matrix__}{$bucket} ) ) {
return 0;
}
foreach my $file (@files) {
$self->{parser__}->parse_file( $file );
foreach my $word (keys %{$self->{parser__}->{words__}}) {
! $self->set_value_( $bucket, $word, $self->{parser__}->{words__}{$word} + $self->get_base_value_( $bucket, $word ) );
}
}
***************
*** 1667,1716 ****
# when making a new bucket.
! if ( !defined( $self->{total__}{$bucket} ) ) {
return 0;
}
- my %words;
-
- if ( open WORDS, '<' . $self->config_( 'corpus' ) . "/$bucket/table" ) {
- while (<WORDS>) {
- if ( /__CORPUS__ __VERSION__ (\d+)/ ) {
- if ( $1 != $self->{corpus_version__} ) {
- print STDERR "Incompatible corpus version in $bucket\n";
- close WORDS;
- return 0;
- }
-
- next;
- }
-
- s/[\r\n]//g;
-
- if ( /^([^\s]+) (\d+)$/ ) {
- my $word = $1;
- my $value = $2;
- if ( $value > 0 ) {
- $words{$word} = $value;
- }
- }
- }
-
- close WORDS;
- }
-
$self->{parser__}->parse_file( $file );
foreach my $word (keys %{$self->{parser__}->{words__}}) {
! $words{$word} -= $self->{parser__}->{words__}{$word};
! }
!
! if ( open WORDS, '>' . $self->config_( 'corpus' ) . "/$bucket/table" ) {
! print WORDS "__CORPUS__ __VERSION__ 1\n";
! foreach my $word (sort keys %words) {
! if ( $words{$word} != 0 ) {
! print WORDS "$word $words{$word}\n";
! }
! }
! close WORDS;
}
--- 1762,1773 ----
# when making a new bucket.
! if ( !defined( $self->{matrix__}{$bucket} ) ) {
return 0;
}
$self->{parser__}->parse_file( $file );
foreach my $word (keys %{$self->{parser__}->{words__}}) {
! $self->set_value_( $bucket, $word, $self->get_base_value_( $bucket, $word ) - $self->{parser__}->{words__}{$word} );
}
***************
*** 1827,1831 ****
my $bucket_directory = $self->config_( 'corpus' ) . "/$bucket";
! unlink( "$bucket_directory/table" );
$self->load_word_matrix_();
--- 1884,1889 ----
my $bucket_directory = $self->config_( 'corpus' ) . "/$bucket";
! untie %{$self->{matrix__}{$bucket}};
! unlink( "$bucket_directory/table.db" );
$self->load_word_matrix_();
|
|
From: <jgr...@us...> - 2003-09-10 03:54:50
|
Update of /cvsroot/popfile/engine/POPFile
In directory sc8-pr-cvs1:/tmp/cvs-serv27765/POPFile
Modified Files:
Loader.pm Module.pm
Log Message:
PORT TO STORE CORPUS IN BERKELEYDB DATABASES
Bayes.pm:
The $self->{matrix__} hash is now a collection of tied hashes
to BerkeleyDB databases named table.db in each of the corpus
bucket subdirectories. The set_value_ and get_value_ accessors
have been modified to access the database. load_word_matrix_
and load_bucket_ now load the bucket information from the database
in concurrent mode.
prefork, forked and postfork handling closing and opening database
connections around forks to ensure that there are no threading
problems with the database.
close_database__ can be called to clean up the connection to the
database at any time.
Many API functions have been modified internally to use the new
structure. The external APIs have not changed. get_bucket_word_list
is currently not implemented.
load_bucket_ does automatic upgrade from the old flat file style
of corpus to the database.
HTML.pm:
Added a note that since get_bucket_word_list isn't working it is
not possible to view the words in a bucket.
Module.pm:
Added description and base implementation of the new postfork()
method that is called on all modules when a fork has occurred and
in the parent process. This is the parent equivalent of forked().
Loader.pm:
The forker is modified to call postfork() in the parent process
after a successful fork.
Index: Loader.pm
===================================================================
RCS file: /cvsroot/popfile/engine/POPFile/Loader.pm,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** Loader.pm 31 Jul 2003 16:32:21 -0000 1.5
--- Loader.pm 10 Sep 2003 03:54:15 -0000 1.6
***************
*** 257,260 ****
--- 257,266 ----
# process
+ foreach my $type (keys %{$self->{components__}}) {
+ foreach my $name (keys %{$self->{components__}{$type}}) {
+ $self->{components__}{$type}{$name}->postfork();
+ }
+ }
+
close $writer;
return ($pid, $reader);
Index: Module.pm
===================================================================
RCS file: /cvsroot/popfile/engine/POPFile/Module.pm,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** Module.pm 31 Jul 2003 16:32:21 -0000 1.11
--- Module.pm 10 Sep 2003 03:54:15 -0000 1.12
***************
*** 50,53 ****
--- 50,56 ----
# process and should be used to clean up
#
+ # postfork() - called in the parent process to tell it that the fork has occurred. This is
+ # like forked but in the parent
+ #
# reaper() - called when a process has terminated to give a module a chance to do
# whatever clean up is needed
***************
*** 256,259 ****
--- 259,277 ----
# ---------------------------------------------------------------------------------------------
sub forked
+ {
+ my ( $self ) = @_;
+ }
+
+ # ---------------------------------------------------------------------------------------------
+ #
+ # postfork
+ #
+ # This is called when some module has just forked POPFile. It is called in the parent
+ # process.
+ #
+ # There is no return value from this method
+ #
+ # ---------------------------------------------------------------------------------------------
+ sub postfork
{
my ( $self ) = @_;
|
|
From: <jgr...@us...> - 2003-09-10 03:54:50
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv27765/UI
Modified Files:
HTML.pm
Log Message:
PORT TO STORE CORPUS IN BERKELEYDB DATABASES
Bayes.pm:
The $self->{matrix__} hash is now a collection of tied hashes
to BerkeleyDB databases named table.db in each of the corpus
bucket subdirectories. The set_value_ and get_value_ accessors
have been modified to access the database. load_word_matrix_
and load_bucket_ now load the bucket information from the database
in concurrent mode.
prefork, forked and postfork handling closing and opening database
connections around forks to ensure that there are no threading
problems with the database.
close_database__ can be called to clean up the connection to the
database at any time.
Many API functions have been modified internally to use the new
structure. The external APIs have not changed. get_bucket_word_list
is currently not implemented.
load_bucket_ does automatic upgrade from the old flat file style
of corpus to the database.
HTML.pm:
Added a note that since get_bucket_word_list isn't working it is
not possible to view the words in a bucket.
Module.pm:
Added description and base implementation of the new postfork()
method that is called on all modules when a fork has occurred and
in the parent process. This is the parent equivalent of forked().
Loader.pm:
The forker is modified to call postfork() in the parent process
after a successful fork.
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.200
retrieving revision 1.201
diff -C2 -d -r1.200 -r1.201
*** HTML.pm 9 Sep 2003 00:28:20 -0000 1.200
--- HTML.pm 10 Sep 2003 03:54:15 -0000 1.201
***************
*** 1709,1712 ****
--- 1709,1714 ----
$body .= "<tr><td colspan=2>";
+ # TODO FIX THIS TO USE NEW API
+
if ( $self->{classifier__}->get_bucket_word_count( $self->{form_}{showbucket} ) > 0 ) {
for my $i ($self->{classifier__}->get_bucket_word_list($self->{form_}{showbucket})) {
|
|
From: <jgr...@us...> - 2003-09-09 06:34:54
|
Update of /cvsroot/popfile/engine/tests/corpus.base/personal In directory sc8-pr-cvs1:/tmp/cvs-serv27342/tests/corpus.base/personal Modified Files: magnets Log Message: English.msg: Fixed a message that had no trailing </font> and would produce incorrect HTML. HTML.pm: Further work on the performance of the loading and organizing of the history from disk. Start up is now much faster when messages have previously been cached to disk. Removal of old files is delayed until a TICKD event. Removed various lines of dead/legacy code revealed by the test suite. Changed the various checkboxes that are used for history deletion from all being called remove to having individual names, this makes them easier to test. Removed the code for invalidating the history cache, this is no longer needed because the progressive history update does away with the need to go looking on disk for changes except for at startup. Bayes.pm: Make QuickMagnets work again. Change cutoff for unsure messages to 0.4. Add some close statements to the matrix loader which were missing. TestModule.tst: Initialize the logger to prevent a Perl warning. TestConfiguration.tst: Fix tests that break with ActivePerl because sort is returning values in a different order. TestProxy.pm: Started working with ActivePerl for the test suite and discovered that it considers 0 to be a valid port number so use the port number -1 for bad port number tests. TestHTTP.pm: Started working with ActivePerl for the test suite and discovered that it considers 0 to be a valid port number so use the port number -1 for bad port number tests. TestHTML.tst/TestHTML.script: Tests for QuickMagnets, reclassification, message deletion, reading of ICO, GIF, PNG, LOG, HTML and CSS files, tests for the disk caching of history data, archiving of history files. Additional safety code in the test runner to spot bad scripts or return codes from HTTP requests. New code to follow redirects on form submission. TestHTML.tst now covers 97% of HTML.pm's code. Remaining tests needed are for the display of magnetized mails. TestMailParse009.wrd/TestMailParse023.wrd: Update words list since we now correctly add the domain name from within an img src tag. Index: magnets =================================================================== RCS file: /cvsroot/popfile/engine/tests/corpus.base/personal/magnets,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** magnets 27 Jul 2003 20:00:31 -0000 1.3 --- magnets 8 Sep 2003 18:03:58 -0000 1.4 *************** *** 2,4 **** to ba...@ba... from foo ! from oldstyle --- 2,4 ---- to ba...@ba... from foo ! oldstyle |
|
From: <xue...@us...> - 2003-09-09 05:56:49
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv22044
Modified Files:
installer.nsi pfi-library.nsh
Log Message:
Use a more elegant way to avoid relative jumps when defining macros.
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.109
retrieving revision 1.110
diff -C2 -d -r1.109 -r1.110
*** installer.nsi 20 Aug 2003 01:40:12 -0000 1.109
--- installer.nsi 8 Sep 2003 13:26:38 -0000 1.110
***************
*** 43,47 ****
;
; This version of the script has been tested with NSIS 2.0b4 (CVS) after updating it by using
! ; the 11 August 2003 (19:44 GMT) version of the NSIS CVS snapshot.
#--------------------------------------------------------------------------
--- 43,47 ----
;
; This version of the script has been tested with NSIS 2.0b4 (CVS) after updating it by using
! ; the 27 August 2003 (19:44 GMT) version of the NSIS CVS snapshot.
#--------------------------------------------------------------------------
***************
*** 2195,2207 ****
SetDetailsPrint listonly
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\auto"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\Carp"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\File"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\IO"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\MIME"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\Sys"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\Text"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\warnings"
! !insertmacro SafeRecursiveRMDir ${__LINE__} "$INSTDIR\Win32"
StrCmp ${L_UPGRADE} "yes" Removed
--- 2195,2207 ----
SetDetailsPrint listonly
! !insertmacro SafeRecursiveRMDir "$INSTDIR\auto"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\Carp"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\File"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\IO"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\MIME"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\Sys"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\Text"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\warnings"
! !insertmacro SafeRecursiveRMDir "$INSTDIR\Win32"
StrCmp ${L_UPGRADE} "yes" Removed
Index: pfi-library.nsh
===================================================================
RCS file: /cvsroot/popfile/windows/pfi-library.nsh,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** pfi-library.nsh 13 Aug 2003 16:35:55 -0000 1.11
--- pfi-library.nsh 8 Sep 2003 13:26:38 -0000 1.12
***************
*** 31,34 ****
--- 31,47 ----
#--------------------------------------------------------------------------
#
+ # Macro which makes it easy to avoid relative jumps when defining macros
+ #
+ #--------------------------------------------------------------------------
+
+ !macro PFI_UNIQUE_ID
+ !ifdef PFI_UNIQUE_ID
+ !undef PFI_UNIQUE_ID
+ !endif
+ !define PFI_UNIQUE_ID ${__LINE__}
+ !macroend
+
+ #--------------------------------------------------------------------------
+ #
# Macros used to simplify inclusion/selection of the necessary language files
#
***************
*** 89,96 ****
!macro UI_LANG_CONFIG PFI_SETTING UI_SETTING
! StrCmp $LANGUAGE ${LANG_${PFI_SETTING}} 0 +4
IfFileExists "$INSTDIR\languages\${UI_SETTING}.msg" 0 lang_done
StrCpy ${L_LANG} "${UI_SETTING}"
Goto lang_save
!macroend
--- 102,113 ----
!macro UI_LANG_CONFIG PFI_SETTING UI_SETTING
!
! !insertmacro PFI_UNIQUE_ID
!
! StrCmp $LANGUAGE ${LANG_${PFI_SETTING}} 0 skip_${PFI_UNIQUE_ID}
IfFileExists "$INSTDIR\languages\${UI_SETTING}.msg" 0 lang_done
StrCpy ${L_LANG} "${UI_SETTING}"
Goto lang_save
+ skip_${PFI_UNIQUE_ID}:
!macroend
***************
*** 101,130 ****
#
# Usage:
! # !insertmacro SafeRecursiveRMDir ${__LINE__} $(L_CORPUS}
#
- # ${__LINE__} holds the linenumber of the '!insertmacro' command
#--------------------------------------------------------------------------
! !macro SafeRecursiveRMDir UNIQUE_ID PATH
! StrCmp ${L_SUBCORPUS} "no" Label_A_${UNIQUE_ID}
Push ${L_CORPUS}
Push "${PATH}"
Call un.StrStr
Pop ${L_TEMP}
! StrCmp ${L_TEMP} "" 0 Label_C_${UNIQUE_ID}
! Label_A_${UNIQUE_ID}:
! StrCmp ${L_SUBHISTORY} "no" Label_B_${UNIQUE_ID}
Push ${L_HISTORY}
Push "${PATH}"
Call un.StrStr
Pop ${L_TEMP}
! StrCmp ${L_TEMP} "" 0 Label_C_${UNIQUE_ID}
! Label_B_${UNIQUE_ID}:
RMDir /r "${PATH}"
! Label_C_${UNIQUE_ID}:
!macroend
--- 118,148 ----
#
# Usage:
! # !insertmacro SafeRecursiveRMDir $(L_CORPUS}
#
#--------------------------------------------------------------------------
! !macro SafeRecursiveRMDir PATH
! !insertmacro PFI_UNIQUE_ID
!
! StrCmp ${L_SUBCORPUS} "no" Label_A_${PFI_UNIQUE_ID}
Push ${L_CORPUS}
Push "${PATH}"
Call un.StrStr
Pop ${L_TEMP}
! StrCmp ${L_TEMP} "" 0 Label_C_${PFI_UNIQUE_ID}
! Label_A_${PFI_UNIQUE_ID}:
! StrCmp ${L_SUBHISTORY} "no" Label_B_${PFI_UNIQUE_ID}
Push ${L_HISTORY}
Push "${PATH}"
Call un.StrStr
Pop ${L_TEMP}
! StrCmp ${L_TEMP} "" 0 Label_C_${PFI_UNIQUE_ID}
! Label_B_${PFI_UNIQUE_ID}:
RMDir /r "${PATH}"
! Label_C_${PFI_UNIQUE_ID}:
!macroend
|