Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Luis Colorado
±Û¾´ÀÌ ¼Ò°³:

Luis Colorado´ÔÀº ½ºÆäÀο¡ ÀÖ´Â Telefonica Sistemas S.A.¿¡¼­ À¯´Ð½º½Ã½ºÅÛ°ú ÀÎÅͳÝÁ¢±ÙÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â °ü¸®ÀÚ·Î ÀÏÇÏ°í °è½Ê´Ï´Ù. ±Û¾´ÀÌ´Â Universidad Complutense of Madrid¿¡¼­ ¹°¸®ÇÐÀ» Àü°øÇÏ¿´À¸¸ç ¸î¸î À¯´Ð½º À¯Æ¿¸®Æ¼¸¦ ¿ÀǼҽºÀÇ ÇüÅ·Π°³¹ßÇØ¿À°í °è½Ê´Ï´Ù.

±Û¾´ÀÌ¿¡°Ô ÆíÁö¾²±â

¼ø ¼­:
µé¾î°¡´Â ±Û
°³¹ßµ¿±â
M4
ÀÛµ¿¿ø¸®
»ç¿ëÀÚ°¡ CGI·Î Á¤º¸Àü´ÞÇϱâ
´Ù¿î·Îµå

PG2CGI¸¦ ÀÌ¿ëÇÑ À¥¿¡¼­ µ¥ÀÌÅͺ£À̽º Á¢±Ù

[Ilustration]

¿ä¾à:

ÀÌ ±Û¿¡¼­´Â HTMLÆäÀÌÁö¿¡¼­ µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â »õ·Î¿î ÇÁ·Î±×·¥¿¡ ´ëÇØ À̾߱âÇÏ°íÀÚ ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥ÀÌ ¼³°èµÈ ¸ñÀûÀº µ¥ÀÌÅÍÁ¢±ÙÀ» ÅëÁ¦ÇÏ°í, ȯ°æ¼³Á¤¿¡¼­ À¯¿¬¼ºÀ» ȹµæÇϸç, ·¹À̾ƿô Çü½Ä¿¡ µ¶¸³ÀûÀ¸·Î ¸¸µé¾îÁÖ´Â °ÍŸã´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÃÖ±Ù 1³âµ¿¾È Linux Journal°ú LinuxFocus (www.linuxfocus.org) ¿¡¼­ ¸¹ÀÌ µîÀåÇÏ´Â M4¿¡ ´ëÇÑ ¸î¸î ±â»ç¸¦ Àдٰ¡ ¶°¿À¸¥ »ý°¢µéÀ» ¸ð¾Æ¼­ °³¹ßÇÑ °ÍÀÔ´Ï´Ù.


µé¾î°¡´Â ±Û

ÀÌ ±ÛÀ» ÅëÇØ ³ª´Â ¿©·¯ºÐ²² À¥À» ÅëÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ°ÔÇÏ´Â ÆÐÅ°Áö¸¦ °³¹ßÇÏ°Ô µÈ ¾ÆÀ̵ð¾î¿Í ±Ùº»¿ø¸®¿¡ ´ëÇØ À̾߱âÇÏ°íÀÚ ÇÑ´Ù. Áï PG2CGIÆÐÅ°Áö¿¡ ´ëÇÑ »ç¿ë¼³¸í¼­¸¦ ¾²±â À§ÇÏ¿© Àû´Â °ÍÀÌ ¾Æ´Ï¶ó °£´ÜÇÑ ¼Ò°³¿Í ¼ÒÇÁÆ®¿þ¾î¸¦ »ç¿ëÇØ º¸°í µ¶ÀÚµéÀÌ Æò°¡¸¦ Çغ» ´ÙÀ½ ¿©·¯ºÐÀÇ Çǵå¹éÀ» º¸³»Áֱ⸦ ±â´ëÇϸ鼭 ÀÌ ±ÛÀ» Àû´Â´Ù. (ÀÌ¹Ì Âü°íÇÒ¸¸ÇÑ °¡À̵尡 ÇÁ·Î±×·¥ÀÇ ¹èÆ÷ÆÇ¿¡ µé¾î ÀÖ´Ù. ÀÌ ¹èÆ÷ÆÇÀÌ ÀÖ´Â URLÀº ÀÌ ±Û µÚ¿¡ ÀÖ´Ù.)

°³¹ßµ¿±â

³ª´Â ¸®´ª½ºÀú³Î°ú ¸®´ª½ºÆ÷Ä¿½º¿¡¼­ HTML¼Ò½º¸¦ °ü¸®Çϱâ À§ÇÏ¿© M4¸¦ »ç¿ëÇÏ´Â °Í¿¡ ´ëÇÑ ¿¬Àç±â»çÀÇ °á°ú¹°·Î ÀÌ ÇÁ·Î±×·¥À» °³¹ßÇÏ¿´´Ù. ¿¬ÀçµÈ ±ÛµéÀº À¥ÆäÀÌÁö¸¦ °ü¸®ÇÏ´Â µ¶¸³½ÇÇàÇü µµ±¸·Î¼­, µ¿ÀûÀ¸·Î ³»¿ëÀ» »ý¼ºÇÏ´Â µµ±¸·Î¼­ÀÇ M4ÀÇ ÀáÀ缺°ú À¯¿ë¼ºÀ» º¸¿©ÁÖ¾ú´Ù.

¹Ý¸é ¸Å¿ì ´Ù¾çÇÑ À¥ ¼­¹ö³ª µ¥ÀÌÅͺ£À̽º¸¦ ÀÌ¿ëÇÏ´Â °ÍÀº ¾çÂÊ È¯°æ»çÀ̸¦ ¿¬°áÇØÁÖ´Â À¯Æ¿¸®Æ¼ÀÇ ºÎÁ·À» °¡Á®¿Ô´Ù.(´ëºÎºÐÀÇ ÀÌ·± ´Ù¸® ¿ªÇÒÀ» ÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥µéÀº »ó¾÷¿ëÀ̰ųª ´Ù·ê ¼ö Àִ ƯÁ¤ Çü½Ä¿¡ µû¶ó¾ß ÇÏ´Â ½É°¢ÇÑ ÀÇÁ¸¼ºÀ» °¡Áö°í ÀÖ´Ù.)

ÀÌ·¯ÇÑ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°ÁöµéÀº µ¥ÀÌÅͺ£À̽º¿Í À¥ ȯ°æÀ» Çϳª·Î ÅëÇÕÇØÁØ´Ù. ±×·¯±â À§Çؼ­ ´ÙÀ½°ú °°Àº ¿ä±¸Á¶°ÇÀ» ¸¸Á·ÇÏ¿©¾ß ÇÑ´Ù.:

ÀÌ ¶§ À¯Æ¿¸®Æ¼´Â ¿ä±¸Á¶°ÇµéÀ» ¸¸Á·½ÃÅ°±â À§ÇÏ¿© È¿À²¼º¸é¿¡¼­ ¾à°£ÀÇ Á¶±×¸¶ÇÑ ºÒÀÌÀÍÀ» °¨¼öÇÑ´Ù.(À¯Æ¿¸®Æ¼´Â ½ÇÇàµÇ´Â µ¿¾È M4¸¦ ¿©·¯ºÐ È£ÃâÇÏ°Ô µÈ´Ù.) ±×·¯³ª ±× °á°ú´Â ´ëºÎºÐÀÇ °æ¿ì ¸¸Á·½º·´´Ù.(´ëºÎºÐÀÇ °æ¿ì¸¦ °í·ÁÇغ¸¸é HTML¹®¼­¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇϱâ À§ÇÏ¿© µ¥ÀÌÅͺ£À̽ºÀÇ ÁúÀÇ´Â ÀÌ¹Ì ¿©·¯ºÐ ¼öÇàµÇ¾î ÀÖ´Ù.)

M4

M4´Â ¿À·¡Àü¿¡ °³¹ßµÈ ¸ÅÅ©·Î ó¸® µµ±¸ÀÌ´Ù. ¿ì¸®°¡ ¸¸µç ¼ÒÇÁÆ®¿þ¾î´Â ÀÌ ¸ÅÅ©·Î󸮱⸦ ¸Å¿ì À¯¿ëÇÏ°Ô »ç¿ëÇÑ´Ù.:

ÀÌ·¯ÇÑ ¸ÅÅ©·Î󸮱âÀÇ ¹Ýº¹»ç¿ëÀº GNUÀÇ M4À¯Æ¿¸®Æ¼·Î °Ë»çÇÏ´Â °ÍÀ» Àß ¸¸Á·½ÃÄÑÁÖÁö¸¸ °á±¹ È¿À²¼º¸é¿¡¼­ ¼Õ½ÇÀ» °¡Á®¿Â´Ù.

¿Ã¹Ù¸¥ Ç¥Çö½Ä(Á¤±Ô Ç¥Çö½Ä):

ÀÌ À¯Æ¿¸®Æ¼´Â ÁÖ¾îÁø ¼³Á¤±ÔÄ¢ÀÌ ¿ÇÀºÁö ±×¸¥Áö¸¦ È®ÀÎÇϱâ À§ÇÏ¿© Á¤±ÔÇ¥Çö½ÄÀ» ¾ö°ÝÈ÷ »ç¿ëÇÑ´Ù. Á¤±ÔÇ¥Çö½ÄÀº ¿ì¸®¿¡°Ô ¸Å¿ì Æí¸®ÇÑ ±â´ÉÀ» Á¦°øÇϱ⠶§¹®¿¡ °£´ÜÇÑ ºñ±³º¸´Ù ´õ ¼±È£µÇ°í ÀÖ´Ù. Á¤±ÔÇ¥Çö½ÄÀº ´ÙÀ½°ú °°Àº ÀåÁ¡À» °¡Áö°í ÀÖ´Ù.:

PG2CGI´Â »ç¿ëµÈ ¼³Á¤±ÔÄ¢À» °ËÁõÇÒ ¶§ Á¤±ÔÇ¥Çö½ÄÀ» ÀÌ¿ëÇÑ´Ù.

ÇϳªÀÇ Á¤±ÔÇ¥Çö½Ä¿¡¼­ º¹¼öÀÇ ÇÏÀ§Ã¼Àεé·Î ±×·ìÈ­ÇÒ ¼ö Àֱ⶧¹®¿¡ Ç¥Çö½ÄÀÇ ¹®¹ý°ú Á¤±ÔÇ¥Çö½Ä¿¡¼­ µå¶óÀ̹ö·Î Àü´ÞÇϱâ À§ÇÑ µ¥ÀÌÅÍÀÇ ÆĽÌÀº ½±°Ô ÀÌ·ç¾îÁø´Ù.

ÇÑ ¿¹¸¦ »ìÆ캸ÀÚ: Ŭ¶óÀ̾ðÆ®°¡ ÀßÀǹ®¿¡ ¾î¶² Á¤º¸¸¦ Àü´ÞÇÏ·Á ÇÑ´Ù¸é ±× µ¥ÀÌÅ͵éÀº ´ÙÀ½ ¹®¹ý¿¡ ¾Ë¸Â°Ô ¹Ù²î¾îÁ®¾ß ÇÑ´Ù.:

Ç׸ñ=°ª
    

ÁúÀǹ®Àº ÀÌ Çü½ÄÀ» ¸¸Á·ÇØ¾ß Çϱ⠶§¹®¿¡ ¹®Àå¿¡ ºÎ°¡Àû Á¤º¸°¡ ÀÖÀ» ¼ö ¾ø´Ù.

¼±ÅñÔÄ¢¿¡¼­ ´ÙÀ½ Á¶°ÇÀ» ¾µ ¶§ ÀÌ ¹®¹ýÀ» ¹Ýµå½Ã »ç¿ëÇÏ´Â °ÍÀº ½¬¿î ÀÏÀÌ´Ù.:

  QUERY_STRING: "^FIELD=[^&]*$";
	  

À­ ÁÙÀº ÁúÀǹ®ÀÌ ÀûÀýÇÑ ¹®¹ýÀ» ¸¸Á·ÇÒ °æ¿ì¿¡¸¸ ±ÔÄ¢µéÀÌ È£ÃâµÇ´Â °ÍÀ» º¸ÀåÇÑ´Ù. À§ÀÇ ¿¹¿¡¼­ Ç׸ñÀÇ °ªÀ» °ýÈ£·Î ¹­À» °æ¿ì ÇÁ·Î±×·¥Àº ÀÏÄ¡ÇÏ´Â °ªÀ» ÆĽÌÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.:

  QUERY_STRING: "^FIELD=([^&]*)$";
    

ÀÌ °úÁ¤¿¡¼­ ÇÁ·Î±×·¥Àº ³×ºñÄÉÀÌÅÍ¿¡ ÀÇÇØ ¸¸µé¾îÁö´Â %xxÇü½ÄÀ¸·Î Àü´ÞµÇ´Â °ªÀ» ÀûÀýÇÑ °ªÀ¸·Î º¯È¯½ÃÄÑÁØ´Ù.

ÀÛµ¿¿ø¸®

ÀÌÁ¦ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö À̾߱â Çغ¸ÀÚ. óÀ½À¸·Î ½ÇÇàµÇ¸é ÇÁ·Î±×·¥Àº À¥¼­¹ö·ÎºÎÅÍ È¯°æº¯¼öµéÀÇ °ªÀ» ¹Þ¾Æ¼­ ±× °ªµéÀ» ÀÌ¿ëÇÏ¿© ½º½º·Î ÀûÀýÇÑ È¯°æ¼³Á¤À» ÇØÁØ´Ù. ȯ°æº¯¼ö´Â ÇÁ·Î±×·¥ÀÌ È®ÀÎÇغ¸´Â ¸ðµç °ÍµéÀÌ´Ù.:Ŭ¶óÀ̾ðÆ®°¡ ¹«¾ùÀΰ¡? ¾î¶² ¿äûÀÌ ÀÌ·ç¾îÁ³´Â°¡? ¿äûÀÇ ³»¿ëÀº ¹«¾ùÀΰ¡? Ŭ¶óÀ̾ðÆ®°¡ Áö¿øÇÏ´Â Á¤º¸ÀÇ Çü½Ä(MIMEÇü½Ä)Àº ¹«¾ùÀΰ¡?µîµî.... PG2CGI´Â ±× ´ÙÀ½ ±ÔÄ¢ÀÇ ¿ÞÂÊ¿¡ »ç¿ëµÇ´Â ±ÔÄ¢À» ¼±ÅÃÇÑ´Ù. ÇöÀç´Â ¼¼°¡ÁöÇü½ÄÀÇ ±ÔÄ¢ÀÌ Á¦°øµÈ´Ù.:

ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ±ÔÄ¢À» ¸¸µé¼ö ÀÖ´Ù. ´ÙÀ½¿¡´Â ¿ì¸®´Â ±ÔÄ¢¿¡¼­ À¯È¿ÇÑ ¿ÞÂÊÇ׸ñÀ» Á¤Çϱâ À§ÇÏ¿© ¸¹Àº Á¶°ÇµéÀ» ¹­´Â´Ù. Á¶°ÇµéÀº Áß°ýÈ£ "{}"»çÀÌ¿¡ À§Ä¡ÇÑ´Ù.

±ÔÄ¢ÀÇ ¿À¸¥ÂÊ°ú ¿ÞÂÊÀº Áß°ýÈ£"{}"·Î ±¸ºÐÀ» ÇÔÀ¸·Î½á °æ°è¸¦ ³ªÅ¸³½´Ù. ±×¸®°í ¿ÞÂÊ°ú ¿À¸¥ÂÊÀº '->'±âÈ£¸¦ ÀÌ¿ëÇÏ¿© ±¸ºÐµÈ´Ù.

¿À¸¥ÂÊ Ç׸ñµéÀº µ¿ÀÏÇÑ ±¸¹®À» °¡Áø Á¶°ÇµéÀÌ µé¾îÀÖ´Ù.: º¯¼öÀÇ À̸§,':'¹®ÀÚ, ¹®ÀÚ¿­°ú Á¾°áÀ» ÀǹÌÇÏ´Â ';'¹®ÀÚ. ¿À¸¥ÂÊ¿¡ ÀÖ´Â ¸ðµç Á¶°ÇÀº M4¿¡ ÀÇÇØ ¼öÇàµÇ¾îÁ® ÁÖ¾îÁø °ªÀ» º¯¼ö¿¡ ÇÒ´çÇÏ´Â °ÍÀÌ´Ù.:

´Ù¸¥ º¯¼ö´Â ÅÛÇø´ÆÄÀÏÀ̳ª ÀûÀýÇÑ µå¶óÀ̹ö¿¡ ÀÇÇØ »ç¿ëµÇ¾îÁú ¼öµµ ÀÖ´Ù.

Á¤º¸°¡ ¾î¶»°Ô »ç¿ëÀڷκÎÅÍ CGI·Î Àü´ÞµÇ³ª?

¸Å¿ì °£´ÜÇÏ´Ù. °¢°¢ÀÇ ±ÔÄ¢¿¡¼­ ¿ÞÂÊ¿¡ ÀÖ´Â Á¤±ÔÇ¥Çö½ÄÀ¸·ÎºÎÅÍ ±×·ìµéÀÌ ¸¸µé¾î Áö´Âµ¥ ÀÌ ±×·ìµéÀº °¢°¢ º¯¼ö·Î º¯È¯µÇ¾îÁø´Ù.(ÀÌ »õ·Î¿î º¯¼öµéÀÇ À̸§Àº `term_<i>_match_<j>'°ú °°Àº Çü½ÄÀÌ´Ù. À̶§ <i>´Â ±ÔÄ¢¿¡ »ç¿ëµÈ ¼ø¼­¹øÈ£ÀÌ´Ù.(°á±¹ ù Á¶°ÇÀº 1À», µÎ¹ø° Á¶°ÇÀº 2¸¦ °¡Áö´Â ÇüÅ°¡ µÈ´Ù.) ¸¸¾à Ŭ¶óÀ̾ðÆ®·Î ºÎÅÍ ´ÙÀ½°ú °°Àº ÁúÀǹ®ÀÌ Àü´ÞµÇ¾ú´Ù°í ÇÏÀÚ.:

`NAME=JOSE&FAMNAME1=DE+LA+FUENTE&FAMNAME2=LOPEZ'

À¥½ÎÀÌÆ®¿¡ ¼±¾ðµÈ ±ÔÄ¢Àº ´ÙÀ½°ú °°´Ù.:

     QUERY_STRING: "NAME=([^&]*)";
     QUERY_STRING: "FAMNAME1=([^&]*)";
     QUERY_STRING: "FAMNAME2=([^&]*)";
°á°ú´Â ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÌ´Ù.::
     term_0_match_0  <- "NAME=JOSE";
     term_0_match_1  <- "JOSE";
     term_1_match_0  <- "FAMNAME1=DE LA FUENTE";  
           (°ø¹éÀº +¹®ÀÚ·Î ¹Ù²î¾îÁüÀ» ¾Ë ¼ö ÀÖ´Ù.)
     term_1_match_1  <- "DE LA FUENTE";
     term_2_match_0  <- "FAMNAME2=LOPEZ";
     term_2_match_1  <- "LOPEZ";
µå¶óÀ̹ö:

ÀÌ ±Û¿¡¼­ ±¸Ã¼ÀûÀ¸·Î µå¶óÀ̹ö¿¡ °üÇÑ À̾߱â´Â ÇÏÁö ¾Ê¾Ò´Ù. ±×·¯³ª ÀÌ¹Ì PG2CGI¹èÆ÷ÆÇ¿¡ µé¾î ÀÖ´Â ¹®¼­ÀڷḦ ÅëÇØ µå¶óÀ̹öÀÇ »ç¿ë¹æ¹ýÀ» ¼³¸íÇß´Ù. °ü½ÉÀÌ ÀÖ´Â µ¶ÀÚ¶ó¸é ²À Âü°í¼³¸í¼­¿¡ Æ÷ÇԵǾî ÀÖ´Â ±ÛÀ» Àо±â ¹Ù¶õ´Ù.

POSTGRESQL·Î ¿î¿µµÇ´Â µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÏ´Â °æ¿ì¿¡´Â ´Ü ÇϳªÀÇ µå¶óÀ̹ö°¡ »ç¿ëµÈ´Ù ±×·¯³ª ÀÌ¹Ì °³¹ßÀÚ´Â LDAPÇü½ÄÀÇ µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ ´Ù¸¥ µå¶óÀ̹ö¸¦ °³¹ßÇÒ °èȹÀ» °¡Áö°í ÀÖ´Ù.

º¸±â:

ÀüüÀûÀÎ ¿¹Á¦ ¼Ò½º¸¦ »ìÆ캸ÀÚ

slug.ctv.es¿¡ ÀÖ´Â °øÁö»çÇ×°ú °ü·ÃµÈ µ¥ÀÌÅͺ£À̽º¿¡¼­ °øÁö»çÇ× Å×À̺íÀ» ¸¸µé¾îº¸ÀÚ. ÀÌ´Â Å×ÀÌºí¿¡¼­ °¢°¢ÀÇ ·¹Äڵ带 ã¾Æº¸°Å³ª Àüü ¸ñ·ÏÀ» ¸¸µé±â À§ÇÏ¿© µÎ°³ÀÇ ÅÛÇø´À» »ç¿ëÇÏ´Â °¡Àå ´Ü¼øÇÑ ¿¹ÀÌ´Ù.

/etc/html2sql.cfg
{
  PATH_INFO: "^/avisos/?$"; # PATH_INFOº¯¼ö¿¡ ÀÇÇØ ¼±ÅõȴÙ.
  [SERVER_ADMIN: ".*"];     # SERVER_ADMINÀ¸·ÎºÎÅÍ Á¤º¸¸¦ ¾ò´Â´Ù. ¼±ÅûçÇ×
} -> {
  DRIVER:   "POSTGRESQL";
  PGTTY:    "/dev/console";  # ÄַܼΠ·Î±×Çϵµ·Ï ÇÑ´Ù.
  PGDATABASE:     "postgres";
# ¿ì¸®´Â Ç×»ó ÁúÀǸ¦ ÇÑ´Ù.(´Ã ³»ºÎÀûÀ¸·Î ÅÛÇø´ÆÄÀÏ¿¡¼­ °³º°ÀûÀÎ ·¹ÄÚµåµéÀ»
# ¿¬°áÇϱâ À§ÇÏ¿© ÁúÀǹ®À» »ç¿ëÇÑ´Ù.)
  PGQUERY:  "select oid,ct,titulo,texto,mt"
      " from avisos"
      " where (dt is NULL or dt > 'now')"
      " order by mt desc";
# ÆÄÀÏÀº ÅÛÇø´À» °¡Áö°í ÀÖ´Ù.
  M4FILE:    "/usr/local/etc/httpd/plantillas_m4/avisos.m4";
  WEBMASTER: "term_1_match_0";
  #TESTMODE: "TRUE";
}

# ´ÙÀ½ ¼±ÅñÔÄ¢Àº ¾Ë·ÁÁø ¿ì¼±Å°°ªÀÎ OID¸¦ °¡Áö´Â °øÁö»çÇ×(aviso)¸¦ ¼±ÅÃÇÒ ¼ö
# ÀÖµµ·Ï ÇØÁØ´Ù. ÀÌ Á¤º¸´ÂCGIÀÇ PATH_INFOº¯¼ö¿¡ Æ÷ÇԵǾî ÀÖ´Ù.

{
  PATH_INFO: "^/avisos/([0-9]+)/?$";
  SERVER_ADMIN: ".*";
} -> {
  DRIVER:   "POSTGRESQL";
  PGTTY:    "/dev/console";  # ¾Õ¿¡¼­ ó·³ ÄַܼΠ·Î±×ÇÑ´Ù.
  PGDATABASE:     "postgres";
  OID:      "term_0_match_1"; # OID¸¦ ºÎ¿©ÇÑ´Ù.

# Çѹø´õ ¼±ÅÃÀÌ Áß¿äÇÏ´Ù. ¿ì¸®´Â ÇʵåÀÇ ½ÃÀۺκп¡ OID¸¦ Æ÷ÇÔ½ÃÅ°¸ç
# ÀÌ°æ¿ì ¿ì¸®´Â ÀÌ ·¹Äڵ带 Áö¿ì±â À§ÇÑ ÇÏÀÌÆÛ¸µÅ©¸¦ Àû°Ô ÇÏ°í ½Í´Ù.

  PGQUERY:  "select oid,ct,titulo,texto,mt,dt,autor"
            " from avisos"
            " where (dt is NULL or dt > 'now') and oid=OID";
# ÀÌÁ¦ ÅÛÇø´ÀÌ ¼­·Î ´Ù¸£´Ù.
  M4FILE:    "/usr/local/etc/httpd/plantillas_m4/avisos_oid.m4";
  WEBMASTER: "term_1_match_0";
  #TESTMODE: "TRUE";
}

/usr/local/etc/httpd/plantillas_m4/avisos.m4
define(<<<for>>>, <<<dnl
ifelse(eval((<<<$2>>>) <= (<<<$3>>>)), 1,
<<<define(<<<$1>>>,<<<$2>>>)$4<<<>>>dnl
for(<<<$1>>>,eval(<<<$2>>>+1),<<<$3>>>, <<<$4>>>)dnl
>>>)dnl
>>>)dnl
divert(0)dnl
Mime-Version: 1.0
Content-type: text/html

<HTML>
  <BODY BGCOLOR="#ffffff">
    <CENTER>
      <H1>AVISOS A LOS NAVEGANTES QUE PASAN POR SLUG</h1>
    </center>
    <B>Nota:</b> Esta secci&oacute;n ha sido creada para dar a conocer
    cualquier noticia de inter&eacute;s relacionada con
    <A HREF="http://slug.ctv.es/">SLUG</a>,
    <A HREF="http://LuCAS.ctv.es/">LuCAS</a>,
    <A HREF="http://www.HispaLinux.ctv.es/">HispaLinux</a>
    y en general, cualquier servicio prestado por <B>slug.ctv.es</b>.<p>
    <CENTER><HR WIDTH=100></center>
ifelse(PGRES_RESULTSTATUS, <<<PGRES_TUPLES_OK>>>,<<<dnl
ifelse(PGRES_NTUPLES, 0,<<<dnl

      <!-- la tabla est\xe1 vac\xeda -->
      No hay avisos.<p>

>>>,<<<dnl /* PGRES_NTUPLES != 0 )( */
      <CENTER>
        <!-- contenido de la tabla -->
        <TABLE>
          <TR>
            <TH></th>
            <TH ALIGN="LEFT">Fecha-Hora&nbsp;</th>
            <TH ALIGN="LEFT">Asunto&nbsp;</th>
          </tr>

for(<<<i>>>,0,eval(PGRES_NTUPLES-1),<<<dnl
          <TR>
            <TD>
              <A HREF="/cgi-bin/pg2cgi/avisos/cell(i,0)">
                <IMG SRC="/icons/burst.gif">
              </a>
            </td>
            <TD><B>cell(i,1)&nbsp;</b></td>
            <TD>cell(i,2)&nbsp;</td>
          </tr>
>>>)dnl /* for */

        </table>
      </center>

>>>)dnl /* PGRES_NTUPLES */

>>>,<<<dnl /* ifelse PGRES_RESULTSTATUS )(*/

      Error en el resultado: <B>PGRES_RESULTSTATUS</b><BR>
      Mensaje del servidor: PGRES_ERRORMSG<P>

>>>)dnl

      <CENTER><HR WIDTH=100></center>
      <FONT SIZE=-2>
        <A HREF="mailto:WEBMASTER?subject=TABLON DE ANUNCIOS"><CODE>WEBMASTER</code></a>
      </font>
  </body>
</html>


/usr/local/etc/httpd/plantillas_m4/avisos_oid.m4
divert(-1)
$Id: generic_list.m4,v 1.1 1998/07/06 17:13:33 luis Exp $
define(<<<cell>>>, <<<PGRES_CELL_$1_$2>>>)
define(<<<field>>>, <<<PGRES_FNAME_$1>>>)
define(<<<for>>>, <<<dnl
ifelse(eval((<<<$2>>>) <= (<<<$3>>>)), 1,
<<<define(<<<$1>>>,<<<$2>>>)$4<<<>>>dnl
for(<<<$1>>>,eval(<<<$2>>>+1),<<<$3>>>, <<<$4>>>)dnl
>>>)dnl
>>>)dnl
divert(0)dnl
Mime-Version: 1.0
Content-type: text/html

<HTML>
  <BODY BGCOLOR="#ffffff">
    <CENTER>
      <H1>AVISO OID</h1>
    </center>
    <CENTER><HR WIDTH=100></center>

ifelse(PGRES_RESULTSTATUS, <<<PGRES_TUPLES_OK>>>,<<<dnl
ifelse(PGRES_NTUPLES, 0,<<<dnl

      <!-- la tabla est\xe1 vac\xeda -->
      No existe el aviso OID, o ha caducado.<p>

>>>,<<<dnl /* PGRES_NTUPLES != 0 )( */
      <CENTER>
        <!-- contenido de la tabla -->
        <TABLE>
          <TR VALIGN="BASELINE">
            <TD ALIGN="RIGHT" NOWRAP><font color="#808000"><B>Fecha de entrada:</b></font> </td>
            <TD width="80%">cell(0,1)</td>
          </tr><TR VALIGN="BASELINE">
            <TD ALIGN="RIGHT" NOWRAP><font color="#808000"><B>Fecha &uacute;ltima modif:</b></font> </td>
            <TD>cell(0,4)</td>
          </tr><TR VALIGN="BASELINE">
            <TD ALIGN="RIGHT" NOWRAP><font color="#808000"><B>Fecha eliminaci&oacute;n:</b></font> </td>
            <TD WIDTH=*>cell(0,5)</td>
          </tr><TR VALIGN="BASELINE">
            <TD ALIGN="RIGHT" NOWRAP><font color="#808000"><B>Autor:</b></font> </td>
            <TD><font size=+1><a href="mailto:cell(0,6)?subject=[TABLON-SLUG] cell(0,2)">cell(0,6)</a></font></td>
          </tr><TR VALIGN="BASELINE">
            <TD ALIGN="RIGHT" NOWRAP><font color="#808000"><B>Asunto:</b></font> </td>
            <TD><font size=+1><B>cell(0,2)<B></font></td>
          </tr><TR>
            <TD COLSPAN=2 BGCOLOR="#c0ffff"><font color="#404040">cell(0,3)</font></td>
          </tr>
        </table>
      </center>

>>>)dnl /* PGRES_NTUPLES */

>>>,<<<dnl /* ifelse PGRES_RESULTSTATUS )(*/

      Error en el resultado: <B>PGRES_RESULTSTATUS</b><BR>
      Mensaje del servidor: PGRES_ERRORMSG<P>

>>>)dnl

      <CENTER><HR WIDTH=100></center>
      <FONT SIZE=-2>
        <A HREF="mailto:WEBMASTER?subject=TABLON DE ANUNCIOS"><CODE>WEBMASTER</code></a>
      </font>
  </body>
</html>

°á°ú´Â ÀÌ URL¿¡¼­ º¼ ¼ö ÀÖ´Ù.:
http://slug.ctv.es/cgi-bin/pg2cgi/avisos/
http://slug.ctv.es/cgi-bin/pg2cgi/avisos/20384

´Ù¿î·Îµå

PG2CGIÇÁ·Î±×·¥Àº ´ÙÀ½ URLµé¿¡¼­ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù.:

http://slug.ctv.es/~luis/utils/pg2cgi.tar.gz
http://slug.ctv.es/~luis/utils/pg2cgi.README
ftp://slug.ctv.es/pub/slug/luis/pg2cgi.tar.gz
ftp://slug.ctv.es/pub/slug/luis/pg2cgi.README

¹ø¿ª : ÀÌÁÖÈ£


º» À¥½ÎÀÌÆ®´Â Miguel Ángel Sep?veda´Ô¿¡ ÀÇÇØ °ü¸®µÇ°í ÀÖ½À´Ï´Ù.
© Luis Colorado 1998
LinuxFocus 1999