¿À´ÃÀÇ ¸í·É¾î ¸ðµâ¸¸µé±â
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

"¿À´ÃÀÇ ¸í·É¾î" ¸ðµâ¸¸µé±â

1절. ¼Ò°³

»çÀÌÆ®¿¡ »ç¶÷ÀÇ ½Ã¼±À» ºÙµé¾îµÎ°í ÀÚÁÖ ¹æ¹®ÇÏ°Ô ¸¸µé±â À§Çؼ­´Â »çÀÌÆ®°¡ Á¤ÀûÀÎ ´À³¦À» ÁÖ¸é ¾ÈµÇ¸ç, ¹«¾ð°¡ ÀÏÁ¤½Ã°£ÈÄ¿¡ ³»°¡ ÇÊ¿ä·Î ÇÒ¼öµµ ÀÖÀ» ¾î¶² ÇÊ¿äÇÑ Á¤º¸°¡ »çÀÌÆ®¿¡ ¾÷µ¥ÀÌÆ® µÇ´õ¶ó´Â ´À³¦, Áï ÀÌ »çÀÌÆ®´Â µ¿ÀûÀÎ »çÀÌÆ®À̱¸³ª ¶ó´Â »ý°¢À» ¹æ¹®ÀÚ°¡ ´À³¥¼ö ÀÖµµ·Ï »çÀÌÆ®ÀÇ ³»¿ëÀ» ±¸¼ºÇÏ°í ¾÷µ¥ÀÌÆ® ½ÃÄÑÁà¾ß ÇÑ´Ù.

ƯÈ÷ ÀÌ »çÀÌÆ®¿Í °°ÀÌ ÄÁÅÙÃ÷ÀÇ ¾ç°ú ÁúÀ» Áß¿ä½Ã ÇØ¾ßÇÏ´Â »çÀÌÆ®Àϼö·Ï "¹«¾ð°¡ »õ·Î¿î Á¤º¸°¡ ¿Ã¶ó¿À´Â±¸³ª" ¶ó´Â ´À³¦À» °¡Áú¼ö ÀÖµµ·Ï ¸¸µé¾î Áà¾ß ÇÑ´Ù. ±×·¡¼­ ÈçÈ÷ ÀÌ¿ëÇÏ´Â ±â¹ýÀÌ °Ô½ÃÆÇÀÇ °Ô½Ã¹°Áß ÃÖ±ÙÀÇ °Ô½Ã¹°À» ȨÆäÀÌÁö index È­¸é¿¡ °è¼ÓÀûÀ¸·Î Ç¥½ÃÇØ¼­, »çÀÌÆ® ¹æ¹® ¶§¸¶´Ù »õ·Î¿î °Ô½Ã¹°ÀÌ °»½ÅµÇ°í ÀÖÀ½À» ¹æ¹®ÀÚ¿¡°Ô ÀÎÁö ½ÃÄÑÁÖ´Â ¹æ¹ýÀÌ´Ù.

ÇÊÀÚ°¡ »ý°¢ Çϱ⿡ ÀÌ »çÀÌÆ®´Â °­ÁÂÀÇ ³»¿ëÀÌ weblog Çü½ÄÀ¸·Î ¹æ¹®ÀÚ¿¡°Ô º¸¿©Áö´Â ÇüÅÂÀε¥, °­Á¶ó´Â°Ô ¸ÅÀϸÅÀÏ ¿Ã¶ó¿Àµµ·Ï Çϱ⿡´Â ¾Æ¹«·¡µµ ¹÷Â÷¹Ç·Î, 2ÀÏ¿¡¼­ 3ÀÏ °£°ÝÁ¤µµ·Î ÀÚ·á ¾÷µ¥ÀÌÆ®°¡ ÀÌ·ç¾îÁö°Ô µÈ´Ù. ±×³ª¸¶ ¹Ù»ÛÁÖ°£À̰ųª, ½ÃÇè°øºÎ¸¦ ÇØ¾ß ÇѴٰųª ÇÏ´Â ÀÏÀÌ ÀÖÀ»¶§´Â 1ÁÖÀÏ¿¡ 1¹ø Á¤µµ ²Ã·Î ¾÷µ¥ÀÌÆ®°¡ µÇ´Â »çÅÂ?°¡ ¹ß»ýÇÒ¼öµµ ÀÖ´Ù.

ÀÌ·¯ÇÑ ¾÷µ¥ÀÌÆ® ½Ã°£Àº ³Ê¹«³ªµµ ±ä ½Ã°£À̸ç, ¹æ¹®ÀÚ¸¦ ÁöÄ¡°Ô ¸¸µé¼ö ÀÖ´Ù. ±×·¸´Ù°í °Ô½ÃÆÇÀÇ °»½Å³»¿ëÀ» index È­¸é¿¡ °É¸é »çÀÌÆ®°¡ Á» ÁöÀúºÐÇØ Áú°Å¶ó°í »ý°¢ÀÌ µÇ¾ú´Ù. ¹«¾ùº¸´Ù ÀÌ »çÀÌÆ®ÀÇ ¼º°ÝÀÌ °Ô½ÃÆÇ Áß½ÉÀº ¾Æ´Ï¹Ç·Î index È­¸é¿¡ °Ô½ÃÆÇÀÇ ³»¿ëÀ» º¸¿©ÁÖ´Â°Ç Àû´çÇÏÁö ¾Ê´Ù°í »ý°¢Çß´Ù. ±×·¡¼­ »ý°¢ÇѰÍÀÌ "¸ÅÀϸÅÀÏ ÇÏ·ç¿¡ ÇѰ¡Áö¾¿ Unix ¸í·ÉÀ» »ç¿ëÀÚ¿¡°Ô Á¦°øÇÏ´Â ±â´ÉÀÇ ±¸Çö" ÀÌ¿´´Ù.

그림 1. ¿À´ÃÀÇ ¸í·É¾î

ÀÌ ¹®¼­´Â ÀÌ·¯ÇÑ ±â´ÉÀ» ±¸ÇöÇÑ °úÁ¤À» °­Á Çü½ÄÀ¸·Î ´ã°í ÀÖ´Ù.

ÀÌ ¹®¼­´Â sql ¿¡ ´ëÇÑ °¡Àå ±âº»ÀûÀÎÀÌÇØ¸¦ °¡Áö°í ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ¾²¿©Á³´Ù. sql À» ¾ËÁö ¸øÇÏ´õ¶óµµ Å©°Ô ¹®Á¦ µÉ°Ç ¾ø°ÚÁö¸¸ select Á¤µµÀÇ ¹®¹ý¸¸ÀÌ¶óµµ ÀÍÈ÷°í ÀÌ °­Á¸¦ Àдµ¥ Á»´õ µµ¿òÀÌ µÉ°ÍÀÌ´Ù. ÀÌ °­Á¿¡¼­ »ç¿ëµÈ sql À» ÀÌÇØÇϴµ¥¿¡´Â ¾Æ¸¶ Çѽð£ Á¤µµ¸¸ sql °øºÎ¿¡ ÅõÀÚÇϸé ÃæºÐÇÒ°ÍÀÌ´Ù.


2절. ÇÁ·Î±×·¥ Á¦ÀÛ

2.1절. ÇÊ¿ä·Î ÇÏ´Â ±â´É

ÀÌ ÇÁ·Î±×·¥¿¡°Ô ¿ä±¸ µÇ´Â ±â´ÉÀº °£´ÜÇÏ´Ù. "À¯´Ð½º ¸í·É¾î »çÀü" µéÀÌ ÀúÀåµÇ¾î ÀÖ´Â mysql Å×ÀÌºí¿¡ Á¢±ÙÇØ¼­ ÇÏ·ç¿¡ ÇѰ¡Áö¾¿ ·£´ýÇÏ°Ô ¸í·É¾î ¸ñ·ÏÀ» °¡Á®¿À°Ô Çϰí ÀÌ ¸í·É¾î¿¡ ¸µÅ©¸¦ °É¾îÁÖµµ·Ï html Äڵ带 ¸¸µé¸é µÈ´Ù.


2.2절. ±â´É ±¸Çö ¹æ¹ý ¼±ÅÃ

ÀÌ·¯ÇÑ ±â´É±¸ÇöÀ» À§Çؼ­ ÇÊÀÚ´Â 2°¡ÁöÀÇ ¹æ¹ýÁß Çϳª¸¦ ÅÃÇϱâ·Î Çß´Ù. Çϳª´Â php ÇÁ·Î±×·¡¹ÖÀ» ÀÌ¿ëÇÑ ¹æ¹ýÀ̰í, ´Ù¸¥ Çϳª´Â C ¸¦ ÀÌ¿ëÇØ¼­ mysql db ¿¡ Á÷Á¢Á¢±ÙÇÏ´Â ¹æ¹ýÀÌ¿´´Ù. À̹øÀå¿¡¼­´Â ÀÌ µÎ°¡Áö ÇÁ·Î±×·¡¹Ö ¹æ¹ýÁß ¾î´À¹æ¹ýÀ» ¿Ö ¼±ÅÃÇß´ÂÁö¿¡ ´ëÇØ¼­ ¾ð±ÞÇϵµ·Ï ÇϰڴÙ.


2.2.1절. php ÇÁ·Î±×·¡¹Ö

php ¸¦ ÀÌ¿ëÇØ¼­ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ°æ¿ì °³¹ß½Ã°£ÀÌ ¸Å¿ì ºü¸£°í ¶ÇÇÑ °£´ÜÇÏ´Ù´Â ÀåÁ¡À» °¡Áö°í ÀÖ´Ù.

¹Ý¸é ´ÜÁ¡µµ Àִµ¥, »ç¿ëÀÚ°¡ index ÆäÀÌÁö¸¦ Ŭ¸¯ÇÒ¶§ ¸¶´Ù, query ¸¦ Àç½ÇÇàÇØ¾ß ÇÑ´Ù´Â ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù. ½ÇÁúÀûÀ¸·Î ¿À´ÃÀÇ ¸í·É¾î·Î ¼±ÅÃµÈ ¸í·É¾î´Â ¿À´Ã ÇϷ絿¾ÈÀº ¹Ù²ðÇʿ䰡 ¾ø´Â Á¤ÀûÀÎ µ¥ÀÌŸÀ̹ǷΠindex ÆäÀÌÁö¸¦ Ŭ¸¯ÇÒ¶§ ¸¶´Ù, ¸í·É¾î À̸§°ú ¸µÅ© Á¤º¸¸¦ °¡Áö°í ¿À±â À§ÇÑ query ¸¦ ½ÇÇàÇÑ´Ù´Â °ÍÀº ¸Å¿ì ºñÈ¿À²ÀûÀÎ ¹æ¹ýÀ̱⠶§¹®ÀÌ´Ù.

¹°·Ð ´Ù¸¥ ÇØ°á¹æ¹ýÀÌ ÀÖ±â´Â Çß´Ù. °è¼ÓÇØ¼­ query ¸¦ ³¯¸± ÇÊ¿ä ¾øÀÌ, Çѹø query ¸¦ ³¯¸®¸é ±× Á¤º¸¸¦ html ÆÄÀÏ·Î ÀúÀåÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í ±×ÈÄ¿¡´Â Äõ¸®¸¦ ³¯¸®±âÀü¿¡ ÆÄÀÏÀÇ »ý¼º³¯Â¥¸¦ È®ÀÎÇØ¼­ 24 ½Ã°£ÀÌ Áö³ªÁö ¾Ê¾Ò´Ù¸é, Äõ¸®¸¦ ³¯¸®Áö ¾Ê°í, ±×³É ¸¸µé¾îÁø html ÆÄÀÏÀÇ Á¤º¸¸¦ ±×´ë·Î »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ±×·¯¸é ÇÏ·ç¿¡ Çѹø¾¿ html ÆÄÀÏÀÌ º¯°æµÇ´Â°É º¸Àå ¹ÞÀ»¼ö ÀÖÀ»°ÍÀÌ´Ù.

ÇÏÁö¸¸ À̹æ¹ýµµ ´ÜÁ¡À» °¡Áö°í ÀÖ¾úÀ¸´Ï, ¹Ù·Î ±ÇÇÑ ¹®Á¦ ¿´´Ù. nobody ±ÇÇÑÀ¸·Î ÀÐ°í ¾µ¼ö ÀÖµµ·Ï, ¸¸µé¾îÁø html ÆÄÀÏ¿¡ ´ëÇÑ ±ÇÇÑÀ» ÁÖ¾î¾ß ÇßÀ½À¸·Î º¸¾È¹®Á¦¸¦ ¾ß±â½Ãų¼ö ÀÖ¾ú´ø °ÍÀÌ´Ù. ¹°·Ð ÀÌ·¯ÇÑ º¸¾È¹®Á¦¸¦ ÇÇÇØ°¥¼ö ÀÖ´Â ¹æ¹ýµéÀÌ Á¸ÀçÇϱä ÇßÁö¸¸, ³Ê¹« º¹ÀâÇϵµ°í »ý°¢ÇÑ ÇÊÀÚ´Â php ÇÁ·Î±×·¡¹ÖÀ» ÀÌ¿ëÇÑ ±¸ÇöÀº »ç¿ëÇÏÁö ¾Ê±â·Î Çß´Ù.


2.2.2절. C++°ú Mysql API¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö

±×·¡¼­ ¼±ÅÃÇѰÍÀÌ ±×³É C++·Î Çϴ°ÍÀÌ ¿´´Ù. C++·Î mysql DB¿¡ Á¢±ÙÇϵµ·Ï ÇÁ·Î±×·¡¹ÖÀ» ÇØ¼­, À¯´Ð½º ¸í·É¾î »çÀü Å×ÀÌºí¿¡ ¼­ Á¤º¸¸¦ ·£´ýÇÏ°Ô ¼±ÅÃÇØ¼­ À̰ÍÀ» html ÆÄÀÏ·Î ÀúÀåÇØ¼­ ¹æ¹®ÀÚ¿¡°Ô º¸¿©ÁÖ´Â ¹æ¹ýÀÌ¿´´Ù.

ÀÌ ÇÁ·Î±×·¥Àº ÇÏ·ç¿¡ Çѹø ÁÖ±âÀûÀ¸·Î ½ÇÇàµÇ¾î¾ß Çߴµ¥, crontab(1) À» ÀÌ¿ë ÇØ¼­ ÇØ°áÇϱâ·Î Çß´Ù. ÇÁ·Î±×·¥ÀÇ ½ÇÇà½Ã°£Àº »õº® 3½Ã 01 ºÐÀ¸·Î Á¤Çß´Ù. À̽ð£ÀÌ µÇ¸é crontabe Àº C++·Î ¸¸µé¾îÁø ÇÁ·Î±×·¥À» ½ÇÇà½Ã۰í, ÀÌ ÇÁ·Î±×·¥Àº mysql DB¿¡¼­ À¯´Ð½º ¸í·É¾î Áß Çϳª¸¦ ·£´ýÇÏ°Ô °¡Á®¿Í¼­ html ÆäÀÌÁö¸¦ ¸¸µç´Ù.

C ¸¦ ÀÌ¿ëÇØ¼­ mysql DB ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ¹æ¹ýÀº mysql ÇÁ·Î±×·¡¹ÖÀ» Âü°íÇϱ⠹ٶõ´Ù.


2.3절. ±â´É±¸Çö

ÀÌ·¸°Ô ÇØ¼­ C++¿Í Mysql API ¸¦ ÀÌ¿ëÇØ¼­ ÇÁ·Î±×·¡¹ÖÀ» Çϱâ·Î ÇßÀ¸¸ç, ½î¾²ÆÄÀÏÀÇ À̸§Àº random_command.cc ·Î Çϱâ·Î Çß´Ù.

¿©±â¿¡¼­ ¿Ö C´ë½Å C++À» »ç¿ëÇß´ÂÁö ±Ã±ÝÇØ ÇÒ¼öµµ ÀÖÀ»°ÍÀÌ´Ù. »ç½Ç ÀÌ ÇÁ·Î±×·¥Àº C++ÀÇ °´Ã¼ÁöÇâÀûÀÎ ÇÁ·Î±×·¡¹Ö ±â¹ýÀº ÀüÇô »ç¿ëÇÏÁö ¾Ê¾Ò´Ù(°´Ã¼ÁöÇâÀ» »ç¿ëÇÒ Çʿ䵵 ¾øÀ»Á¤µµ·Î ´Ü¼øÇßÀ½À¸·Î). ´Ù¸¸ ÀڷᱸÁ¶ÀÇ ¼Õ½¬¿î ±¸ÇöÀ» À§Çؼ­ STL ÀÇ vector À» »ç¿ëÇϱâ À§Çؼ­ C++ À» ±»ÀÌ »ç¿ëÇß´Ù. ÄÄÆÄÀÏ·¯ ¿ª½Ã gcc ´ë½Å g++ À» »ç¿ëÇÏ°Ô µÇ¾ú´Ù. ÄÚµå´Â vector »ç¿ëºÎºÐ¸¸ »©°í´Â ¿ÏÀüÈ÷ CÄÚµåÀÌ´Ù.

vector Àº ¹è¿­À» ÀϹÝÈ­ ½ÃŲ°ÍÀ̶ó°í º¼¼ö Àִµ¥, ¿ø¼ÒÀÇ Å©±â(¸î°³ÀÇ ¿ø¼Ò¸¦ °¡Áö°í ÀÖ´ÂÁö)¸¦ ¾Ë¼ö ÀÖÀ¸¸ç, ¸ðµç ŸÀÔÀÇ (Ŭ·¡½º, ±¸Á¶Ã¼, ¹®ÀÚ, ¹®ÀÚ¿­, ¼ýÀÚ) °´Ã¼¸¦ ±× ¿ø¼Ò·Î ÇÒ¼ö ÀÖ´Ù. STL¿¡ ´ëÇÑ Á¦»çÇÑ ³»¿ëÀº Á¤½ÂÁøÀÇ Standard C++ Libary ¿Í SGI STL HomePage¸¦ Âü°íÇϱ⠹ٶõ´Ù.

À¯´Ð½º ¸í·É¾î Á¤º¸°¡ ÀúÀåµÇ´Â Å×À̺íÀÇ À̸§Àº "nuke_encyclopedia_text" ¶ó´Â Å×À̺í·Î ´ÙÀ½°ú °°Àº Å×ÀÌºí ±¸Á¶¸¦ °¡Áö°í ÀÖ´Ù.

+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| tid     | int(10)      |      | PRI | 0       | auto_increment |
| eid     | int(10)      |      |     | 0       |                |
| title   | varchar(255) |      |     |         |                |
| text    | text         |      |     | NULL    |                |
| counter | int(10)      |      |     | 0       |                |
+---------+--------------+------+-----+---------+----------------+
			
tid ´Â PRI ŰÀ̸ç, titleÀÌ ¸í·É¾î À̸§ÀÌ´Ù. eid ´Â "»çÀüÀÇ Á¾·ù" Àε¥, À¯´Ð½º ¸í·É¾î »çÀüÀº eid=1 ÀÎ °ªÀÌ´Ù. ±×·¯¹Ç·Î ¿ì¸®´Â tid, eid, title °ª¸¸ °¡Á®¿À¸é ¿Ïº®ÇÑ html ÆäÀÌÁö¸¦ ¸¸µé¼ö ÀÖ´Ù.

¾Æ·¡´Â ¿¹Á¦ÀÇ ¿ÏÀüÇÑ ½î¾²ÆÄÀÏÀÌ´Ù. ¹°·Ð DBÁ¤º¸µéÀº ¼öÁ¤ÇѰÍÀÌ´Ù.

¿¹Á¦: random_command.cc

#include <mysql.h>
#include <string.h>
#include <stdio.h>
#include <vector>         // STLÀÇ vector¸¦ »ç¿ëÇϱâ À§Çؼ­  
#include <time.h>
#include <sys/types.h>
#include <unistd.h>

// DB ¿¬°áÁ¤º¸ 
#define DB_HOST "127.0.0.1"
#define DB_USER "test"
#define DB_PASS "test"
#define DB_NAME "test"

// query Á¤º¸¸¦ ÀúÀåÇϱâ À§ÇÑ 
// ±¸Á¶Ã¼
struct title_info
{
    char    *tid;     // tid ¸¦ ÀúÀåÇÑ´Ù.  
    char    *title;   // ¸í·É¾î À̸§ 
};

// ·£´ýÇÑ title ¹øÈ£¸¦ ³Ñ°ÜÁØ´Ù.  
// ÀÎÀÚ °ªÀÎ titlemaxno ´Â ÃÑ °Ë»öµÈ À¯´Ð½º¸í·É¾î °¹¼öÀÌ´Ù.    
int random_title(int titlemaxno);

int main(void)
{
    MYSQL                        *connection=NULL, conn;
    MYSQL_RES                    *sql_result;
    MYSQL_ROW                    sql_row;
    int                            query_stat;
    struct title_info            t_info;
    vector<struct title_info<    title_name;
    char                        url_query[255];
    FILE                        *fp;

    mysql_init(&conn);
    connection = mysql_real_connect(&conn, DB_HOST,
                                    DB_USER, DB_PASS,
                                    DB_NAME, 3306,
                                    (char *)NULL, 0);
    if (connection == NULL)
    {
        fprintf(stderr, "Mysql connection error: %s", mysql_error(&conn));
        return -1;    
    }

    // Äõ¸®¸¦ ³»¶õ´Ù. eid°¡ 1¹ø(À¯´Ð½º ¸í·É¾î)ÀÎ ¸ðµç Á¤º¸¸¦ 
    // °¡Á®¿Â´Ù. 
    query_stat = mysql_query(connection, "select tid, title from nuke_encyclopedia_text where eid=1");
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return -1;
    }

    // Äõ¸®¸¦ ½ÇÇàÇÑ Á¤º¸¸¦ °¡Á®¿À°í, 
    // ÀÌÁß tid °ª°ú title °ªÀ» t_info ±¸Á¶Ã¼¿¡ 
    // ÀúÀåÇϰí ÀÌ °ªÀº ´Ù½Ã title_name vector ¿¡ 
    // ÀúÀåÇÑ´Ù. 
    sql_result = mysql_store_result(connection);
    while((sql_row = mysql_fetch_row(sql_result)) != NULL)
    {
        t_info.tid = sql_row[0];
        t_info.title = sql_row[1];
        title_name.push_back(t_info);
    }

    // À§ÀÇ Á¤º¸¸¦ Åä´ë·Î ¸µÅ©¸¦ ±¸¼ºÇÑ´Ù. 
    // title_name ¿¡ ÀúÀåµÈ ÀÚ·á¿¡ ÀÓÀ¸·Î Á¢±ÙÇϱâ À§Çؼ­ 
    // random_title()ÇÔ¼ö¸¦ »ç¿ëÇß´Ù. 
    // random_title ÇÔ¼ö¸¦ »ç¿ëÇϸé ÀÓÀÇÀÇ À妽º ¹øÈ£¸¦ ³Ñ°ÜÁØ´Ù. 
    sprintf(url_query, "$content = \"<a href=/modules.php?name=Encyclopedia&op=content&tid=%s>%s</a>\";\n",
                    title_name[random_title(title_name.size())].tid, 
                    title_name[random_title(title_name.size())].title);

    fp = fopen("/home/html/public_html/blocks/block-unix_comm.php","w");

    // link ³»¿ëÀ» ÆÄÀÏ·Î ÀúÀåÇÑ´Ù.  
    if (fp == NULL)
    {
        perror("file open error ");
        exit(0);
    }
    fputs("<?\n", fp);
    fputs(url_query, fp);
    fputs("?>\n", fp);
    fclose(fp);

    // ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù. 
    mysql_free_result(sql_result);
    mysql_close(connection);
}

int random_title(int titlemaxno)
{
    time_t now_time;

    time(&now_time);
    srandom((unsigned int)now_time);
    return random()%titlemaxno;
}
			

ÀÌ ÇÁ·Î±×·¥Àº ¾Æ·¡¿Í °°Àº ¹æ¹ýÀ¸·Î ÄÄÆÄÀÏÇß´Ù.

g++ -o random_command random_command.cc -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient
			
±×¸®°í »õº® 3½Ã 01ºÐ ¸¶´Ù random_command ÇÁ·Î±×·¥À» ½ÇÇà½Ã۱â À§Çؼ­ crontab ¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀ» Ãß°¡Çß´Ù. crontab ³»¿ëÀÇ º¯°æÀº crontab -e ¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù.
[root@localhost test]# crontab -e
01 3 * * * /usr/bin/random_command
			


2.4절. ´Ù¸¥ ±¸Çöµé

ÀÌ ÇÁ·Î±×·¥Àº ¸Å¿ì ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î ±¸ÇöÀÌ °¡´ÉÇÏ´Ù.

ÇѰ¡Áö ¿¹¸¦ µé¾î¼­ À§ÀÇ ÇÁ·Î±×·¥Àº Äõ¸® °á°ú¸¦ vector ÀڷᱸÁ¶¿¡ ¸ù¶¥ ÀúÀåÇϵµ·Ï µÇ¾îÀÖ°í, ÀÌ ÀڷᱸÁ¶Áß¿¡¼­ ·£´ýÇÑ °ªÀ» °¡Á®¿Àµµ·Ï Çߴµ¥, ÀÚ·á°¡ ¸Å¿ì Ä¿Áú°æ¿ì vector ÀڷᱸÁ¶°¡ ³Ê¹« Ä¿Áú¼öµµ ÀÖÀ» °ÍÀÌ´Ù. À̸¦ ÇØ°áÇϱâ À§Çؼ­ ´ÙÀ½°ú °°Àº Äõ¸®¸¦ ¸¸µé¾î¼­

select count(tid) from nuke_encyclopedia_text where eid = 1;
			
µî·ÏµÈ À¯´Ð½º ¸í·É¾î ¼ö¸¸ ¾Ë¾Æ³»°í, ÀÌ Å©±â ¹üÀ§ ³»¿¡¼­ ·£´ýÇÑ °ªÀ» °¡Á®¿Í¼­, ÀÌ ·£´ý°ªÀÇ À§Ä¡¿¡ ÀÖ´Â À¯´Ð½º ¸í·É¾î Á¤º¸¸¸À» °¡Áö°í ¿À´Â ¹æ¹ýÀ» »ç¿ëÇÒ¼öµµ ÀÖÀ»°ÍÀÌ´Ù. À̶§ Äõ¸®ÀÇ ³»¿ëÀº ´ëÃæ ¾Æ·¡¿Í °°À»°ÍÀÌ´Ù.
select tid, title from nuke_encyclopedia_text where eid = 1 limit 4,1;
			
À§ÀÇ Äõ¸®¿¡¼­ '4' °¡ ·£´ýÇÑ index °ªÀÌ µÉ°ÍÀÌ´Ù.

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.