ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : joinc_func_module
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
1 ±³Á¤ °úÁ¤2 Åä·Ð¹× Àâ´ã3 ¼Ò°³
joinc¿¡¼´Â ÇÔ¼ö»çÀüÀ» Á¦°øÇϴµ¥, »çÀüÀÇ ³»¿ëÀ» ¸ðµÎ À§Å°·Î ¿Å±â´Â ÀÛ¾÷À» Çϱâ·Î Çß´Ù. ¿©±â¿¡¼´Â ¿Å±â´Â °úÁ¤¿¡ ´ëÇØ¼ ±â¼úÇÑ´Ù. 3.1 ¿Ö À§Å°ÆäÀÌÁö·Î ¿Å±â´Â°¡3.1.1 google¿¡¼ÀÇ °Ë»ö¿ëÀ̸¦ À§Çؼ
¾î¶² ÀÌÀ¯¿¡¼ÀÎÁö ¸ð¸£°ÚÁö¸¸ google¿¡¼ ÇÔ¼ö»çÀü¿¡ ÀÖ´Â ÇÔ¼öµéÀÇ ³»¿ëÀÌ °Ë»öµÇÁö ¾Ê´Â´Ù´Â °ÍÀ» È®ÀÎÇß´Ù. ºñ·Ï ³»ºÎÀûÀ¸·Î Joinc ÅëÇÕ°Ë»ö¿£Áø ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇϰí ÀÖ±ä ÇÏÁö¸¸ googleµîÀÇ °Ë»ö¿£Áø¿¡¼µµ ½±°Ô °Ë»öµÉ ¼ö ÀÖ´Ù¸é ÁÁÀ» °ÍÀÌ´Ù. Áö±Ý ¿î¿µÁßÀÎ À§Å°¿¡ ÀÖ´Â ÆäÀÌÁöµéÀº googleÀ» ÅëÇÑ °Ë»öÀÌ Àß ÀÌ·ç¾î Áö°í ÀÖÀ½À» È®ÀÎÇß°í, ±×·±ÀÌÀ¯·Î À§Å° ÆäÀÌÁö·Î ¿Å±â±â·Î °áÁ¤Çß´Ù. 3.1.2 À§Å° ÆäÀÌÁö¿¡¼ Á÷Á¢ÀûÀÎ ÇÔ¼öÂüÁ¶ °¡´ÉÇϵµ·Ï
»çÀÌÆ®ÀÇ Æ¯¼º»ó À§Å° ÆäÀÌÁö¿¡ ÇÔ¼öµéÀÌ ÀÚÁÖ µîÀåÇÏ°Ô µÇ´Âµ¥, ÇÔ¼öÀÇ ³»¿ëÀÌ ±Ã±ÝÇÒ°æ¿ì joincÀÇ ÇÔ¼öã±â ±â´ÉÀ» ÀÌ¿ëÇØ¼ ÇÔ¼ö¸¦ ÂüÁ¶Çؾ߸¸ ÇÑ´Ù. 4-5¹ø Á¤µµÀÇ ¸¶¿ì½º Ŭ¸¯ÀÛ¾÷ÀÌ µé¾î°¼¾ß Çϴµ¥, ½Ã°£µµ ¸¹ÀÌ °É¸®°í ¸Å¿ì ºÒÆíÇÏ´Ù.
À̵é ÇÔ¼ö»çÀüÀÇ ³»¿ëÀ» À§Å°·Î ¸¸µé¸é °ü·Ã ¸ÞÅ©·Î¸¦ ¸¸µé¾î¼ ¿øÅ¬¸¯À¸·Î ÇÔ¼ö¿¡ ´ëÇÑ ³»¿ëÀÇ È®ÀÎÀÌ °¡´ÉÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼ gets(3)¿¡ ´ëÇÑ ÇÔ¼ö¿¡ ´ëÇÑ ¸µÅ©¸¦ ¸¸µé±â¸¦ ¿øÇÑ´Ù¸é [func:gets(3)]À§¿Í °°Àº °£´ÜÇÑ ¹æ¹ýÀ¸·Î ¸µÅ©¸¦ ¸¸µé ¼ö ÀÖ´Ù. 3.1.3 »ç¿ëÀÚ Çǵå¹éÀÇ ¿ëÀ̼º
À§Å°ÀÇ Æ¯¼ºÀ¸·Î ¿ëÀÌÇÑ »ç¿ëÀÚ Çǵå¹éÀÌ °¡´ÉÇÒ °ÍÀÌ´Ù. ÇÊ¿äÇÏ´Ù¸é wikiÀü¿ëÀÇ ´ñ±Û ½Ã½ºÅÛÀ» ¸¸µé ¼öµµ ÀÖ´Ù. 4 ÇÔ¼ö»çÀüÀ» À§Å°ÆäÀÌÁö·Î4.1 ±âº» ¾ÆÀ̵ð¾î
ÇöÀç ÇÔ¼ö»çÀüÀÇ ¸ðµç ³»¿ëÀº DB¸¦ ÅëÇØ¼ °ü¸®µÈ´Ù. °£´ÜÇÑ ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇØ¼ °¢°¢ÀÇ ÇÔ¼öÀ̸§°ú ÇÔ¼öÀ̸§¿¡ ´ëÇÑ ¼³¸íÀÌ µé¾î ÀÖ´Â ÇʵåÀÇ Á¤º¸¸¦ °¡Á®¿Ã ¼ö ÀÖ´Ù. ±×·¯¸é ÀÌµé ³»¿ëÀ» Åä´ë·Î wikiÆäÀÌÁö¸¦ ¸¸µç´Ù. 4.2 DB¿¡¼ ÇÔ¼ö»çÀü Å×ÀÌºí ³»¿ë °¡Á®¿À±â
DB¿¡¼ ³»¿ëÀ» °¡Á®¿À±â À§Çؼ ÇÔ¼ö»çÀü¿¡ »ç¿ëµÇ´Â Å×À̺íÀÇ ±¸Á¶¸¦ ºÐ¼®ÇÒ Çʿ䰡 ÀÖ´Ù. ÇÔ¼ö»çÀü¿¡´Â joinc_encyclopedia¿Í joinc_encyclopedia_text µÎ°³ÀÇ Å×À̺íÀÌ »ç¿ëµÈ´Ù. 4.2.1 ÇÔ¼ö »çÀü °ü·Ã Å×À̺í
4.3 wikiÆäÀÌÁö·Î ÀúÀåÇϱâ
DB¸¦ µÚÁ®¼ ÇÔ¼ö»çÀü ³»¿ëÀ» ¾ò¾î¿Ô´Ù¸é, ¾ò¾î¿Â ³»¿ëÀ» Åä´ë·Î À§Å°ÆäÀÌÁö¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. À§Å°ÆäÀÌÁö´Â ÆÄÀϱâ¹ÝÀ¸·Î RCS¸¦ ÅëÇØ¼ °ü¸®µÈ´Ù.
ÆÄÀÏ¿¡ ÀúÀåÇÒ ¶§´Â ¸ðµç³»¿ëÀ» ÀúÀåÇÏÁö ¾Ê°í DBÀÇ ³»¿ëÀ» È£ÃâÇÏ´Â wiki macro¸¸À» µî·Ï½Ãų °ÍÀÌ´Ù. [printency(2,111)]
ÆÄÀÏ·Î ÀúÀåµÇ¹Ç·Î ÆÄÀÏÀ̸§À» Á¤ÇØ¾ß Çϴµ¥ Áߺ¹À» ÇÇÇϱâ À§Çؼ ÇÕ¼ö¸í¾Õ¿¡ function_À» ºÙÀ̵µ·Ï ÇÑ´Ù. ½ÇÁ¦ ÀúÀåµÇ´Â À§Å°ÆäÀÌÁö´Â _¸¦ _5f·Î ġȯµÈ´Ù. ¶ÇÇÑ (, )´Â °¢°¢ _28, _29·Î ġȯµÈ´Ù. ¸¸¾à fgets(3)À» µî·Ï½ÃŰ±æ ¿øÇÑ´Ù¸é function_5ffgets_283_29¶ó´Â À̸§ÀÇ ÆÄÀÏ·Î µî·ÏµÈ´Ù.
µî·ÏµÈ ÈÄ¿¡´Â ÀÌ°É RCS·Î º¸³»¾ß ÇÑ´Ù. À̸¦ À§Çؼ ci¸í·ÉÀ» »ç¿ëÇÑ´Ù. # ci -tfunction_5ffgets_283_29 function_5ffgets_283_29±×·¯¸é RCSÆÄÀÏÀÌ »ý¼ºµÈ´Ù. ÀÌÈÄ co¸í·ÉÀ» ÀÌ¿ëÇØ¼ RCSÆÄÀÏÀ» ´Ù½Ã ¹Þ¾Æ¿Í¼ ¿øº»ÆÄÀÏÀ» À¯ÁöÇÏ¸é µÈ´Ù. co function_5ffgets_283_29
À§ÀÇ ³»¿ëÀÌ Àß ÀÌÇØµÇÁö ¾Ê´Â´Ù¸é RCS·¹ÆÛ·±½º ¹®¼¸¦ ÀÐ¾î º¸±â ¹Ù¶õ´Ù. 5 ÇÁ·Î±×·¥ ÀÛ¼º
ÇÁ·Î±×·¥Àº C¸¦ ÀÌ¿ëÇØ¼ ÀÛ¼ºµÈ´Ù. 5.1 Àüü ÇÁ·Î¼¼½º
ÇÁ·Î¼¼½º´Â °£´ÜÇÏ´Ù.
int main()
{
nobody ±ÇÇÑÀ¸·Î º¯°æÇÑ´Ù.
mysqldb¿¡ Á¢±Ù
ÇÔ¼ö»çÀüÀ» ¾ò±â À§ÇÑ Äõ¸® ¼öÇà
while(´õÀÌ»ó »çÀü³»¿ëÀÌ ¾øÀ» ¶§ ±îÁö)
{
list(title, text)¸¦ ¾ò¾î¿Â´Ù.
function_5ftitle À̸§À¸·Î ÆÄÀÏÀ» ¸¸µç´Ù.
ÆÄÀÏ¿¡ text¸¦ Àû´Â´Ù.
{
write wiki¸ÞÅ©·Î
}
co¸í·ÉÀ» ÀÌ¿ëÇØ¼ RCS¿¡ µî·ÏÇÑ´Ù.
ci¸í·ÉÀ» ÀÌ¿ëÇØ¼ RCSÀÇ ³»¿ëÀ» °¡Á®¿Â´Ù.
}
}
5.2 ÄÚµå
ÄÚµå ¿ª½Ã ¸Å¿ì ´Ü¼øÇÏ´Ù. ÀÌ ÄÚµå´Â ±×·°Àú·° µ¹¾Æ°¡Áö¸¸ ¼öÁ¤ÇØ¾ßµÉ ºÎºÐ°ú Ãß°¡ÇØ¾ßµÉ ¸î °¡Áö ±â´ÉµéÀÌ ÀÖ´Ù. °£´ÜÇÑ ÁÖ¼®À¸·Î ¼³¸íÀ» ´ë½ÅÇÑ´Ù.
#include <mysql.h>
#include <string.h>
#include <stdio.h>
#include "jdb.h"
#include <stdlib.h>
static char page_name[80];
// ( ==> _28
// ) ==> _29
char * replace_tag(char *str)
{
char null[12];
char fu[80];
char num[12];
sscanf(str,"%[^(]%[(]%[^)]", fu, null, num);
sprintf(page_name, "%s%s%s%s", fu, "_28", num, "_29");
return &page_name[0];
}
int main(int argc, char **argv)
{
MYSQL *connection = NULL, conn;
MYSQL_RES *sql_result;
MYSQL_ROW sql_row;
int query_stat;
char wiki_macro[80];
char wiki_page[80];
char *perfect_page;
char man_section[16];
FILE *fp;
// MysqlDB¿¡ ¿¬°á
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;
}
query_stat = mysql_query(connection,
"select title, eid, tid from nuke_encyclopedia_text where eid=2");
if(query_stat != 0)
{
fprintf(stderr, "Mysql query error : %s\n", mysql_error(&conn));
return 1;
}
sql_result = mysql_store_result(connection);
while((sql_row = mysql_fetch_row(sql_result)) != NULL)
{
char ci_command[120];
char co_command[120];
char title[80];
if(strlen(sql_row[0]) > 3)
{
// wikipage¿¡ µé¾î°¥ ¸ÞÅ©·Î¹®ÀÚ¿°ú
sprintf(wiki_macro, "[[printency(%s,%s)]]\n", sql_row[1], sql_row[2]);
// wikipage À̸§
sprintf(wiki_page, "function_5f%s", sql_row[0]);
// wikipage ŸÀÌÆ²
sprintf(title, "#title %s\n", sql_row[0]);
// wikipageÀ̸§À» wiki½ºÅ¸ÀÏ¿¡ ¸Âµµ·Ï º¯°æÇÑ´Ù.
perfect_page = replace_tag(wiki_page);
// RCSµî·ÏÀ» À§ÇÑ ¸í·É
sprintf(ci_command, "/usr/bin/ci -t%s %s", perfect_page, perfect_page);
sprintf(co_command, "/usr/bin/co %s", perfect_page);
if((fp = fopen(perfect_page, "w")) != NULL)
{
fputs(title,fp);
fputs(wiki_macro, fp);
fclose(fp);
// RCSµî·ÏÀ» ÇÑ´Ù.
system(ci_command);
system(co_command);
}
}
}
mysql_free_result(sql_result);
mysql_close(connection);
return 0;
}
´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏ Çß´Ù. # gcc -o wikifunc main.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient -Wall 5.3 wiki ¸ÞÅ©·Î ÀÛ¼º
ÀÌÁ¦ ³²Àº ÀÏÀº prientency ¸ÞÅ©·Î¸¦ ÀÛ¼ºÇÏ´Â ÀÏÀÌ´Ù. moniwiki´Â php±â¹ÝÀ̹ǷΠ¾à°£ÀÇ phpÇÁ·Î±×·¡¹ÖÀÌ ÇÊ¿äÇÏ´Ù. moniwiki/plugin¿¡ printency.php¸¦ ¸¸µé¾ú´Ù. ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
<?php
function macro_printency($formatter,$value='2,1')
{
global $DBInfo, $dbi;
$content;
list($eid, $tid) = split(",", $value);
if (eregi("[^0-9]", $tid) || eregi("[^0-9]", $eid))
{
$content = "À߸øµÈ ID";
return $content;
}
$query = "select text from nuke_encyclopedia_text where tid = $tid and eid = $eid";
$result = sql_query($query, $dbi);
if (!$result)
{
$content = "Á¸ÀçÇÏÁö ¾Ê´Â ÇÔ¼ö";
return $content;
}
list ($text) = sql_fetch_row($result, $dbi);
$content = $text;
return $content;
}
?>
5.4 Å×½ºÆ® |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|