|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
"¿À´ÃÀÇ ±â»ç" ¸ðµâ¸¸µé±â
ÀÌ »çÀÌÆ®´Â phpnuke ¸¦ ÅëÇØ¼ ¸¸µé¾î Á³À¸¸ç, weblog ÇüŸ¦ ÃëÇϰí
ÀÖ´Ù. ±×·± ÀÌÀ¯·Î Çѹø Áö³ª°£ ±â»ç´Â Ưº°È÷ °Ë»öÀ» ÇÏÁö ¾Ê´ÂÇÑ
Á¢ÇϱⰡ ¾î·Æ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù.
±×·¡¼ À̹ø¿¡ °ú°Å Áö³ª°£ ±â»ç¸¦ ·£´ýÇÏ°Ô °¡Á®¿À´Â ¸ðµâÀ» ¸¸µé±â·Î
Çß´Ù. ÀÌ ¸ðµâÀº mysql ¿¡ ¿¬°áÇØ¼ ¸î°³ÀÇ ±â»ç¸¦ ·£´ýÇÏ°Ô °¡Á®¿Í¼
webpage ÇüÅ·Π¸¸µé¾îÁÖ´Â ¿ªÇÒÀ» ÇÏ°Ô µÇ¸ç, ÇÏ·ç ´ÜÀ§·Î
±â»ç¸¦ ±³Ã¼ÇÏ°Ô µÈ´Ù.
ÀÌÀü¿¡µµ ¿À´ÃÀÇ ¸í·É¾î ¸ðµâ Á¦À۱⠸¦ ÅëÇØ¼ ÀÌ¹Ì mysql ¿¡ Á¢±ÙÇØ¼
·£´ýÇÏ°Ô DB³»¿ëÀ» °¡Á®¿À´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑÀûÀÌ ÀÖ´Ù.
±×·¯¹Ç·Î À̹ø¿¡´Â ±×¶§¿Í´Â Á¶±Ý ´Ù¸¥ ¹æ¹ýÀ¸·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰÔ
µÉ°ÍÀÌ´Ù. ¸¸µé¾îÁø ¸ðµâÀº ¾Æ·¡¿Í °°ÀÌ ¼ºñ½ºµÈ´Ù.
¸¸µé¾î¾ß µÉ ÇÁ·Î±×·¥ÀÇ À̸§Àº
random_article ·Î Á¤Çß´Ù.
ÀÌ ÇÁ·Î±×·¥Àº ÇÏ·ç ´ÜÀ§·Î ½ÇÇàÀÌ µÇ¾î¼ ·£´ýÇÏ°Ô ±â»çÀÇ Á¤º¸¸¦
°¡Á®¿Í¼ html ÆäÀÌÁö·Î ¸¸µé¾îÁØ´Ù.
ÇÏ·ç´ÜÀ§·Î ÀÏÁ¤ÇÏ°Ô ½ÇÇàÇϱâ À§Çؼ cron À» »ç¿ëÇÏ´Â ´ë½Å¿¡,
ÇÁ·Î±×·¥ ³»ºÎ¿¡¼ À̸¦ ±¸ÇöÇϵµ·Ï ÇßÀ¸¸ç, ±×·¯±â À§Çؼ
ÀÌ ÇÁ·Î±×·¥Àº µ¥¸ó¸ðµå·Î ÀÛµ¿µÇ°Ô µÉ°ÍÀÌ´Ù.
¶ÇÇÑ ¾Æ±Ô¸ÕÆ®¸¦ ó¸®ÇÒ¼ö ÀÖ¾î¾ß Çϸç, ¾Æ±Ô¸ÕÆ®¸¦ ÅëÇÏ¿©¼
¿©·¯°¡Áö »çÇ×µé(¾î¶² ¼³Á¤ÆÄÀÏÀ» ÂüÁ¶ÇÒ°ÍÀÎÁö,
µ¥¸ó¸ðµå·Î ½ÇÇà½Ãų°ÍÀÎÁö µî)À» ÁöÁ¤Çϵµ·Ï
ÇÁ·Î±×·¡¹Ö ÇÒ°ÍÀÌ´Ù.
¼³Á¤ÆÄÀÏÀ» Áö¿øÇØ¾ß ÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¼³Á¤ÆÄÀÏÀ» °¡Áö¸ç
¼³Á¤ÆÄÀÏÀÇ ³»¿ëÀ» ÅëÇÏ¿©¼ ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» Á¦¾îÇÏ°Ô µÉ°ÍÀÌ´Ù.
¼³Á¤ÆÄÀÏ¿¡´Â ¾÷µ¥ÀÌÆ® ½Ã°£, °¡Á®¿Ã ±â»çÀÇ ¼ýÀÚ, html ÆäÀÌÁöÀÇ
À§Ä¡, db ¿¡ ¿¬°áÇϱâ À§ÇÑ °¢Á¾ Á¤º¸ - È£½ºÆ®, À¯ÀúÀ̸§, ÆÐ½º¿öµå,
db À̸§ - µîµµ ¸ðµÎ ¼³Á¤ÆÄÀÏÀÇ ³»¿ë¿¡ µé¾î°¡°Ô µÉ°ÍÀÌ´Ù.
Áï ÇϵåÄÚµùÀ» Áö¾çÇÏ°í ¼³Á¤ÆÄÀÏÀ» ÅëÇØ¼ À¯µ¿ÀûÀ¸·Î ÇÁ·Î±×·¥ÀÇ
½ÇÇà ȯ°æÀ» º¯°æÇÒ¼ö ÀÖµµ·Ï ÇÒ°ÍÀÌ´Ù.
random_article Àº ÃÖÃÊ¿¡ ¼³Á¤ÆÄÀÏÀ» Àоîµé¿©¼, Á¢±ÙÇØ¾ßÇÒ DB
Á¤º¸, °¡Á®¿Í¾ßµÉ ±â»çÀÇ ¼ö, ±â»ç ¾÷µ¥ÀÌÆ® ½Ã°£ µîÀÇ ±âº»Á¤º¸¸¦
¾ò¾î¿Â´Ù. ÀÏ´Ü Á¢±ÙÀ» Çß´Ù¸é DB ¿¡ ¿¬°áÇØ¼ ±â»çµéÀ» °¡Á®¿Í¼
html ÆäÀÌÁö¸¦ ¸¸µç´Ù. ±×ÈÄ¿¡ ±â»ç ¾÷µ¥ÀÌÆ® ½Ã°£±îÁö sleep ¿¡
µé¾î°¡°Ô µÇ°í, ¾÷µ¥ÀÌÆ® ½Ã°£ÀÌ µÇ¸é ±ú¾î³ª¼ ±â»çÀÇ ³»¿ëÀ»
¾÷µ¥ÀÌÆ® ÇÏ°Ô µÉ°ÍÀÌ´Ù.
+------------------+
| ½ÃÀÛ |
+------------------+
| <------- ¼³Á¤ÆÄÀÏ
|
+------------------+ query +------+ +---+ +---+
+----->| ±â»ç°¡Á®¿À±â | <--------> | DB | | | | |
| +------------------+ +------+ | | | B |
| | | W | | R |
| +------------------+ +------+ | | | O |
| | HTML ÆäÀÌÁö ÀÛ¼º | ---------> | HTML |--| E |-->| W |--> Client
| +------------------+ +------+ | | | S |
| | | B | | E |
| +------------------+ | | | R |
| | SLEEP | | | | |
| +------------------+ +---+ +---+
| |
+---------------+
|
¿©±â¿¡¼´Â random_article ¸¦ ±¸¼ºÇÏ´Â °¢ ¸ðµâµéÀ»
Á¤ÀÇ ÇÒ°ÍÀ̸ç, °¢°¢ÀÇ ¸ðµâµéÀ» ±¸¼ºÇÏ´Â ¹æ½ÄÀ¸·Î
ÇÁ·Î±×·¡¹Ö ÀÛ¾÷ÀÌ ÁøÇà µÉ°ÍÀÌ´Ù.
¾Æ±Ô¸ÕÆ®¸¦ Àоîµé¿©¼ À̸¦ ¸Þ¸ð¸®¿¡ ÀûÀçÇÏ´Â ¸ðµâÀÌ´Ù.
getopt¸¦ ÅëÇØ¼ ±¸ÇöÀ» Çϸç,
µ¥¸ó¸ðµåÀÎÁö ¾Æ´ÑÁö¿Í ¼³Á¤ÆÄÀÏÀÇ À§Ä¡¸¦ ¾Æ±Ô¸ÕÆ®¸¦ ÅëÇØ¼
¹Þ¾ÆµéÀδÙ. ¶ÇÇÑ help ¿Í version µîÀÇ Á¤º¸¸¦ º¸¿©ÁÖ±â À§ÇÑ
¾Æ±Ô¸ÕÆ®µµ ¹Þ¾ÆµéÀδÙ.
¼³Á¤ÆÄÀÏÀ» ÀоîµéÀÌ°í ºÐ¼®Çؼ ±¸Á¶Ã¼¿¡ ÀúÀåÇÑ´Ù. ¼³Á¤ÆÄÀÏ
¿¡´Â db Á¤º¸¿Í ±â»ç ¾÷µ¥ÀÌÆ® ½Ã°£, °¡Á®¿Ã ±â»çÀÇ ¼öµîÀ»
ÁöÁ¤Çϸç csv ½ºÅ¸ÀÏÀ» µû¸¥´Ù. ±¸Á¶Ã¼´Â STL ÀÇ map À»
ÀÌ¿ëÇÒ°ÍÀÌ´Ù.
# ¼³Á¤ÆÄÀÏÀÇ ¿¹
db_host,127.0.0.1
db_user,yundream
db_pass,password
db_name,mydb
# ¾÷µ¥ÀÌÆ® ½Ã°£ HH
up_time,4
article,2
|
ÀÌ ¼³Á¤ÆÄÀÏÀº ÁÖ¼® '#' ¿ª½Ã Áö¿øÇÏ°Ô µÉ°ÍÀÌ´Ù. ¶ÇÇÑ ºó ¶óÀÎÀº ±×³É ³Ñ¾î°¡°Ô µÉ°ÍÀÌ´Ù.
±×·¯³ª ¿©·¯°¡Áö ¿¹¿Ü »çÇ×µé ¿¹¸¦ µé¾î ºóĵڿ¡ '#' ÀÌ ¿À°Å³ª, '\t' ' ' ´ÙÀ½¿¡ '\n' ÀÌ ¿À´Â
µîÀÇ ¶óÀο¡ ´ëÇØ¼´Â üũÇÏÁö ¾ÊÀ»°ÍÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº »ç¿ëÀÚ°¡ ¼³Á¤ÆÄÀÏÀ»
Á¤È®ÇÏ°Ô ÀÔ·ÂÇÒ°ÍÀ̶ó´Â°É °¡Á¤Çϰí ÇÁ·Î±×·¡¹Ö µÉ°ÍÀÌ´Ù.
¿¹¿Ü »çÇ× Ã³¸®´Â °¢ÀÚÀÇ ¸òÀÌ´Ù.
DB ¿¡ Á¢±Ù Çϰí, Äõ¸®¸¦ ½ÇÇà ±× °á°ú¸¦ ¹Þ¾Æ¿À´Â ÀÏÀ» ÇÑ´Ù.
¹Þ¾Æ¿Â °á°ú¸¦ ÀÌ¿ëÇØ¼ ·£´ýÇÑ ±â»ç ¹øÈ£¸¦ ÃßÃâÇØ³½´Ù.
±â»ç¹øÈ£¸¦ ÀÌ¿ëÇØ¼ html ÆäÀÌÁö¸¦ »ý¼ºÇس½´Ù. html ÆäÀÌÁö¿¡
´ã±â´Â ³»¿ëÀº ±â»ç¿¡ ¸µÅ©ÇÒ¼ö ÀÖ´Â Á¤º¸ÀÌ´Ù.
sleep ½Ã°£À» Á¶Á¤Çϱâ À§Çؼ »ç¿ëÇÑ´Ù.
ÃÖÃÊ ÇÁ·Î±×·¥À» ½ÃÀÛÇϸé ÇöÀçÀÇ ½Ã°£¿¡¼ ¼³Á¤ÆÄÀÏ¿¡
ÁöÁ¤µÈ ½Ã°£±îÁöÀÇ ½Ã°£À» 'ÃÊ' ´ÜÀ§·Î °è»êÇØ¼ sleep Àû¿ëÇÑ´Ù.
±× µÚ¿¡´Â ¹«Á¶°Ç ÇÏ·ç(60*60*24 ÃÊ)¸¦ ±â´Ù¸°´Ù.
½Ã°£ °è»ê ¹æ¹ýÀº °£´ÜÇÏ´Ù. ¸¸¾à Áö±Ý ½Ã°£ÀÌ ¼³Á¤ÆÄÀÏ¿¡
ÁöÁ¤µÈ ½Ã°£º¸´Ù Å©´Ù¸é, (Áö±Ý½Ã°£ - ¼³Á¤½Ã°£) * 60 À» Çϰí,
±×·¸Áö ¾ÊÀ»°æ¿ì (¼³Á¤½Ã°£ - Áö±Ý½Ã°£) * 60 À» ÇÒ°ÍÀÌ´Ù.
¾à°£ÀÇ ½Ã°£ ¿ÀÂ÷(ÃÖ´ë 59ºÐ) ´Â ¹«½ÃÇϱâ·Î ÇÑ´Ù.
½ÇÁ¦ÄÚµùÀº À§ÀÇ ¸ðµâÀ» ÄÚµùÇϱ⸸ ÇÏ¸é µÈ´Ù.
»õ·Î¿î ¸ðµâÀÌ ¾øÀ¸¹Ç·Î ÀÌÇØÇϴµ¥ Å©°Ô ¾î·Á¿òÀÌ ¾øÀ»°ÍÀÌ´Ù.
°¢ ¸ðµâ¿¡ ¾²ÀÎ ±â¼ú ¿ª½Ã ÀÌ »çÀÌÆ®¿¡¼ ´ëºÎºÐ ´Ù·ç¾ú´ø °ÍÀ̹ǷÎ
¸¶Âù°¡Áö·Î ½±°Ô ÀÌÇØ °¡´ÉÇÒ°ÍÀÌ´Ù.
table À̸§Àº nuke_stories ÀÌ´Ù.
ÀÌ Å×ÀÌºí ³»¿ëÀ» desc ÇÑ °á°ú´Â ´ÙÀ½°ú °°´Ù.
Âü°í·Î desc ´Â Å×ÀÌºí ±¸Á¶¸¦ º¸¿©ÁÖ±â À§Çؼ mysql
¿¡¼ Á¦°øÇÏ´Â ¸í·É¾îÀÌ´Ù.
mysql> desc nuke_stories;
+-----------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-----------------------+------+-----+---------+----------------+
| sid | int(11) | | PRI | 0 | auto_increment |
| catid | int(11) | | | 0 | |
| aid | varchar(30) | | | | |
| title | varchar(80) | YES | | NULL | |
| time | datetime | YES | | NULL | |
~~
~~
| ratings | int(10) | | | 0 | |
+-----------+-----------------------+------+-----+---------+----------------+
|
Å×À̺í Çʵ尡 ²Ï ¸¹À¸¹Ç·Î Áß¿äÄ¡ ¾ÊÀº°ÍµéÀº »ý·«Çß´Ù.
¿ì¸®´Â À§ÀÇ ÇõåÁß¿¡¼ ±â»çÀÇ ¹øÈ£¸¦ ³ªÅ¸³»´Â sid ¿Í,
title ¸¦ °¡Áö°í ¿À¸é µÈ´Ù.
¿©±â¿¡¼´Â 2°³ÀÇ Äõ¸®°¡ »ç¿ëµÉ°ÍÀÌ´Ù.
nuke_stories Å×ÀÌºí¿¡ Æ÷ÇÔµÈ tuple ÀÇ ¼ö¸¦ °¡Á®¿À´Â Äõ¸®¿Í
½ÇÁ¦ tuple ¸¦ °¡Á®¿À´Â Äõ¸®ÀÌ´Ù.
query> select count(sid) from nuke_stories;
query> select sid, title from nuke_sotires limit 10, 1;
|
ÄÄÆÄÀÏ·¯´Â ¸î°³ÀÇ STL ÅÛÇø´°ú, string À» »ç¿ëÇϱâ À§Çؼ
C++ À» ÀÌ¿ëÇß´Ù. ±×·¯³ª ÄÚµåÀÇ ÇüÅ´ ÀüÀûÀ¸·Î CÀÇ ±¸Á¶¸¦
µû¸£°í ÀÖ´Ù.
¼³Á¤ÆÄÀϳ»¿ëÀ» ÀúÀåÇϱâ À§ÇÑ ÀڷᱸÁ¶·Î STL ÀÇ
map ¸¦ »ç¿ëÇÏ¿´´Ù. perl À̳ª php ¸¦ »ç¿ëÇØ º¸¾Ò´Ù¸é
¸¹ÀÌ »ç¿ëÇØ º¸¾ÒÀ» ÀڷᱸÁ¶ÀϰÍÀÌ´Ù. map Àº
index key ¸¦ int ÇüÀÇ ¼ýÀÚ¸»°íµµ ¹®ÀÚ¿µîÀ» index key
·Î °¡Áú¼ö ÀÖ´Â ÀڷᱸÁ¶ ÇüÅÂÀÌ´Ù.
±×¹ÛÀÇ ³»¿ëµéÀº ÀϹÝÀûÀÎ ³»¿ëÀ̹ǷΠÄÚµå ÁÖ¼®À» ÅëÇØ¼
¼³¸íÇϵµ·Ï ÇϰڴÙ. ÀÌÇØÇϴµ¥ ÀüÇô ¾î·Á¿òÀÌ ¾øÀ»°ÍÀÌ´Ù.
¿¹Á¦: random_article.cc
#include <mysql.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
#include <unistd.h>
#include <map>
#include <string>
#include <vector>
void opt_parser(int, char **, char **);
void help();
void version();
void initdaemon();
map<string, string> cfg_parser(FILE *fp);
FILE *open_cfgfile(char *config_filename);
void close_cfgfile(FILE *fp);
int get_sleep_time(int cfgtime);
vector<int> article_num(int num, int total_num);
int main(int argc, char **argv)
{
MYSQL *connection=NULL, conn;
MYSQL_RES *sql_result;
MYSQL_ROW sql_row;
int query_stat;
char query[255];
char *config_filename;
map<string, string> cfg_data;
FILE *fp, *html_fp;
int late_time;
int loop;
vector<int> list_num;
// ¾Æ±Ô¸ÕÆ®¸¦ ÇØ¼®ÇÑ´Ù.
opt_parser(argc, argv, &config_filename);
// ¼³Á¤ÆÄÀÏÀ» OPEN ÇÑ´Ù.
fp = open_cfgfile(config_filename);
if (fp == NULL)
{
perror("file open error : ");
exit(0);
}
// ¼³Á¤ÆÄÀÏÀ» ºÐ¼®ÇÑ´Ù.
cfg_data = cfg_parser(fp);
close_cfgfile(fp);
// ÃÖÃÊ ±â»ç ¾÷µ¥ÀÌÆ® ½Ã°£À» °è»êÇÑ´Ù.
late_time = get_sleep_time(atoi(cfg_data["up_time"].c_str()));
// DB ¿¬°áÇØ¼ ÇÊ¿äÇÑ ·£´ýÇÑ ±â»çÁ¤º¸¸¦ °¡Á®¿Â´Ù.
while(1)
{
mysql_init(&conn);
connection =mysql_real_connect(&conn, cfg_data["db_host"].c_str(),
cfg_data["db_user"].c_str(),
cfg_data["db_pass"].c_str(),
cfg_data["db_name"].c_str(),
3306,
(char *)NULL, 0);
if (connection == NULL)
{
fprintf(stderr, "Mysql connection error : %s", mysql_error(&conn));
exit(0);
}
// Àüü ±â»çÀÇ row(Æ©ÇÃ) °¹¼ö¸¦ °¡Á®¿Â´Ù.
query_stat = mysql_query(connection,
"select count(sid) from nuke_stories");
if (query_stat != 0)
{
fprintf(stderr, "Mysql query erro : %s", mysql_error(&conn));
return -1;
}
sql_result = mysql_store_result(connection);
if ((sql_row = mysql_fetch_row(sql_result)) == NULL)
{
fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
return -1;
}
// ·£´ýÇÑ ¹øÈ£¸¦ °¡Á®¿Â´Ù.
list_num = article_num(atoi(cfg_data["article"].c_str()), atoi(sql_row[0]));
mysql_free_result(sql_result);
html_fp = fopen(cfg_data["html"].c_str(),"w");
if (html_fp == NULL)
{
perror("file open error 1: ");
exit(0);
}
// ·£´ýÇÑ ±â»ç ¹øÈ£¸¦ ÀÌ¿ëÇØ¼ html ÆäÀÌÁö¸¦ ÀÛ¼ºÇÑ´Ù.
fputs("<?\n", html_fp);
for (loop = 0; loop < list_num.size(); loop ++)
{
char url_query[255];
sprintf(query, "select sid, title from nuke_stories limit %d, 1",
list_num[loop]);
query_stat = mysql_query(connection, query);
sql_result = mysql_store_result(connection);
sql_row = mysql_fetch_row(sql_result);
sprintf(url_query, "$content .= \"<a href=modules.php?name=News&"
"file=article&sid=%d"
"&mode=&order=0&thold=0>%s</a><br>\";\n"
,atoi(sql_row[0])
,sql_row[1]);
fputs(url_query, html_fp);
}
fputs("?>\n", html_fp);
fclose(html_fp);
mysql_free_result(sql_result);
mysql_close(connection);
sleep(late_time);
late_time = 60*60*24;
}
}
// ¾Æ±Ô¸ÕÆ®¸¦ ºÐ¼®ÇÑ´Ù.
void opt_parser(int arg_num, char **arg_str, char **config_file)
{
int opt;
int opt_ok = 0;
while((opt = getopt(arg_num, arg_str, "vhdf:")) != -1)
{
switch(opt)
{
case 'h':
help();
break;
case 'v':
version();
break;
case 'd':
initdaemon();
break;
case 'f':
*config_file = optarg;
opt_ok = 1;
break;
default:
help();
break;
}
}
if (opt_ok != 1)
{
help();
}
}
// µµ¿ò¸»À» Ãâ·ÂÇÑ´Ù.
void help()
{
printf("Usage: random_article -[hvd] -f [cfg file]\n");
exit(0);
}
// ¹öÁ¯Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù.
void version()
{
printf("random_article\nVersion 1.0\n");
exit(0);
}
// ÇÁ·Î¼¼½º¸¦ µ¥¸ó »óÅ·Π¸¸µç´Ù.
void initdaemon()
{
pid_t pid;
if ((pid = fork()) < 0)
exit(0);
else if (pid !=0)
exit(0);
setsid();
chdir("/");
}
// config ³»¿ëÀ» Àоîµé¾î¼Å scanf ·Î ÆÄ½ÌÇÑ´Ù.
// ÆÄ½ÌÇÑ ³»¿ëÀº map ÇüÅ·Π¸®ÅÏÇÑ´Ù.
map<string, string> cfg_parser(FILE *fp)
{
char buf[80];
char null[2];
char key[20], value[80];
map<string, string> cfg_data;
string s_key, s_value;
while(fgets(buf, 80, fp) != NULL)
{
if ((buf[0] != '#' && buf[0] != '\n'))
{
sscanf(buf,"%[a-zA-Z_]%[,]%s", key, null, value);
s_key = key;
s_value = value;
cfg_data[s_key] = s_value;
}
}
return cfg_data;
}
// config ÆÄÀÏÀ» ¿¬´Ù.
FILE *open_cfgfile(char *config_filename)
{
FILE *fp;
fp = fopen(config_filename, "r");
return fp;
}
// config ÆÄÀÏÀ» ´Ý´Â´Ù.
void close_cfgfile(FILE *fp)
{
fclose(fp);
}
// sleep ½Ã°£À» °Ë»çÇÑ´Ù.
// ½Ã°£(hour) ´ÜÀ§À̸ç,
// sec ¸¦ ³Ñ±ä´Ù.
int get_sleep_time(int cfgtime)
{
time_t now_time;
struct tm *tm_ptr;
int late_time;
time(&now_time);
tm_ptr = localtime(&now_time);
late_time = abs(tm_ptr->tm_hour - cfgtime);
return late_time * 60 * 60;
}
// ·£´ýÇÏ°Ô °¡Á®¿Ã ±â»ç¹øÈ£ÀÇ ¸®½ºÆ®¸¦ ³Ñ±ä´Ù.
// ±â»ç¹øÈ£°¡ 0À̰ųª, µ¿ÀÏÇÑ ±â»ç¹øÈ£°¡ ³ª¿À´ÂÁö
// °Ë»çÇÑ´Ù.
vector<int> article_num(int num, int total_num)
{
vector<int return_num;
int random_number;
int check_number = 1;
int count=0, i=0;;
time_t now_time;
time(&now_time);
srandom((unsigned int)now_time);
while(count < num)
{
check_number = 1;
random_number = random()%total_num;
if (random_number == 0)
continue;
for (i = 0; i < return_num.size(); i++)
{
if (random_number == return_num[i])
{
check_number = 0;
break;
}
}
if (check_number != 0)
{
return_num.push_back(random_number);
count++;
}
}
return return_num;
}
|
´ÙÀ½Àº ¼³Á¤ÆÄÀÏÀÇ ³»¿ëÀÌ´Ù.
db_host,127.0.0.1
db_user,test
db_pass,password
db_name,mydb
up_time,4
article,2
html,/home/html/blocks/block-random_article.php
|
½î¾² ÄÄÆÄÀÏÀº g++ À» ÀÌ¿ëÇØ¼ ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏÇÑÈÄ
½ÇÇàÇÑ´Ù. -d ¿É¼ÇÀ» ÁÙ°æ¿ì daemon ¸ðµå·Î ½ÇÇàµÈ´Ù.
library ¿Í incldue ÆÐ½º´Â ½Ã½ºÅÛ¿¡ µû¶ó¼ ´Þ¶óÁú¼ö ÀÖ´Ù.
[root@localhost source]# g++ -o random_article random_article.cc -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient
[root@localhost source]# ./random_article -f /etc/article.cfg
|
ÀÌ»ó random_article ÇÁ·Î±×·¥Á¦À۱⿡ ´ëÇØ¼ ¾Ë¾Æº¸¾Ò´Ù.
Å×½ºÆ®¸¦ ¿øÇÑ´Ù¸é Àû´çÇÏ°Ô db Å×À̺íÀ»±¸¼ºÇÑ´ÙÀ½ Å×½ºÆ®ÇÏ¸é µÈ´Ù.
¹°·Ð mysql ¼¹ö°¡ ¶°ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡¼ ÀÌ´Ù.
À§ ÇÁ·Î±×·¥Àº ¿©·¯°¡Áö ¿¡·¯Ã³¸® µîÀº º°·Î ½Å°æÀ» ¾²Áö ¾Ê¾ÒÀ¸¸ç,
È¿À²ÀûÀÎ ÄÚµù¹æ¹ýÀ» ã±â À§Çؼ Ưº°È÷ ³ë·ÂÇÑ Äڵ尡 ¾Æ´Ñ, Áö±ØÈ÷
º¸¿©ÁÖ±â À§ÇÑ ¸ñÀûÀ¸·Î ÀÛ¼ºµÈ ÄÚµåÀ̹ǷÎ, °³¼±ÇÒ ¿©Áö°¡ ¸¹ÀÌ
ÀÖÀ»°ÍÀÌ´Ù. ¿©±â¿¡ ´ëÇØ¼´Â °¢ÀÚ ½Ã°£ÀÌ ³²À»¶§ »ý°¢ÇØ º¸±â ¹Ù¶õ´Ù.
|
|