JSP ±â¼ú°ú LateX°¡ ¿Â¶óÀÎ °úÇÐ ±³À°°ú ¿¬±¸¸¦ µ½´Â´Ù
Michael
Juntao Yuan ¹Ú»ç°úÁ¤ , University of Texas at
Austin 2002³â 2¿ù
±ÛÀÚÀÇ À§¿Í ¾Æ·¡¿¡ ºÙ¾îÀÖ´Â ¹®ÀÚµé°ú Ư¼öÇÑ ±âÈ£¸¦ °¡Áø ¼öÇÐ °ø½ÄÀ» HTML·Î
º¯È¯Çϱâ´Â ¾öû³ª°Ô ¾î·Á¿î ÀÏÀÌ´Ù. ´ëºÎºÐÀÇ °úÇÐÀÚ¿Í ¼öÇÐÀÚµéÀº ¹ÌÀûÀ¸·Î º¸±â ÁÁÀº °ø½ÄÀ» ¸¸µé¾î³»±â À§ÇØ
À¯¿¬ÇÑ LateX ÅؽºÆ® 󸮱⸦ »ç¿ëÇÑ´Ù. ±×·±µ¥ ÀÌ °á°ú¹°µéÀ» ¾î¶»°Ô À¥¿¡ Ä£±ÙÇÑ ÇüÅ·Πº¯È¯ÇÒ ¼ö
ÀÖÀ»±î ? ÀÌ ±Û¿¡¼ Michael YuanÀº JSP ÆäÀÌÁö¿Í Ä¿½ºÅÒ Å±׸¦ ÀÌ¿ëÇØ LateX Æ÷¸ËÀÇ °ø½ÄÀ»
ÀÛ¼ºÀÚ°¡ »ç¿ëÇϱ⠽±°í Ŭ¶óÀ̾ðÆ®¿¡µµ Ưº°ÇÑ ¼ÒÇÁÆ®¿þ¾î°¡ ÇÊ¿äÁö ¾Êµµ·Ï À¥¿¡ ¿Ã¸± ¼ö ÀÖ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.
±×°¡ Á¡Â÷ È¿À²¼ºÀÌ ³ô¾ÆÁö´Â ±â¹ýµéÀ» ¹Ýº¹ÇÔ¿¡ µû¶ó ¿©·¯ºÐÀº ¼¹öÃø ÀÚ¹Ù ±â¼úÀÌ ¼·Î À̱âÁ¾ÀÇ
third-party µµ±¸µéÀÇ ÈûÀ» ÀÌ¿ëÇÏ¿© ¿Ü°ü»ó ±î´Ù·Ó±â ±×Áö¾ø´Â ¹®Á¦µéÀ» ¾î¶»°Ô ÇØ°áÇØ°¡´ÂÁö¸¦ º¸°ÔµÉ
°ÍÀÌ´Ù.
ÀÎÅͳݰú À¥Àº ¿ø·¡ °úÇÐÀÚµéÀÌ °úÇаú ¼öÇÐ ¿¬±¸ Á¤º¸¸¦ ±³È¯Çϱâ À§ÇØ ¼³°èÇÑ °ÍÀÌ´Ù. ¾ÆÀÌ·¯´ÏÄÃÇÏ°Ôµµ
ÀÎÅͳÝÀÌ ³ª¿Â Áö 30¿©³âÀÌ Áö³µ°í À¥ÀÌ °³¹ßµÈÁö´Â 10³âÀÌ Áö³ Áö±Ý±îÁöµµ À¥¿¡ ¼öÇÐÀû ³»¿ëÀÌ ¸¹Àº ÄÁÅÙÃ÷¸¦
°ø°³ÇÏ´Â °ÍÀº ¿©ÀüÈ÷ ½¬¿î ÀÏÀÌ ¾Æ´Ï´Ù. W3CÀÇ MathML ±ÇÀå»çÇ×°ú °°ÀÌ À¥¿¡¼ÀÇ ¼öÇÐ Á¤º¸ ±³È¯À» À§ÇÑ
Ç¥ÁØÀÌ °³¹ßµÇ±ä ÇßÁö¸¸, À̵éÀ» »ç¿ëÇÏ·Á¸é ÀúÀÛÀÚ¿Í µ¶ÀÚ ¸ðµÎ IBM¿¡¼ Netscape Navigator¿Í
Internet Explorer¿ëÀ¸·Î ¸¸µç ¼öÇÐ¿ë ºê¶ó¿ìÀú Ç÷¯±×ÀÎÀÎ techexplorer¿Í °°Àº Ư¼ö
¼ÒÇÁÆ®¿þ¾î°¡ ÇÊ¿äÇÏ´Ù. (Âü°íÀÚ·á) . »ç¿ëÀÚµéÀº
±â¼úÀûÀÎ ¾î·Á¿ò, ºñ¿ë ¹× º¸¾È»óÀÇ À§Çè ¶§¹®¿¡ ÀÌ·± Ư¼öÇÑ Å¬¶óÀ̾ðÆ®Ãø ¼ÒÇÁÆ®¿þ¾î¸¦ ¼³Ä¡ÇÏ´Â °ÍÀ» ²¨·ÁÇÑ´Ù.
µû¶ó¼ ±×·¯ÇÑ Ç¥ÁØÀÇ Àû¿ëÀº ¼Ò±Ô¸ð ¿¬±¸ ´Üü¿¡ ±¹ÇѵǾî ÀÖÀ¸¸ç, °ÅÀÇ ´ë´Ù¼öÀÇ ÀÎÅÍ³Ý »ç¿ëÀÚ°¡ À̸¦ »ç¿ëÇÏÁö
¸øÇÑ´Ù. ¿À´Ã³¯ À¥¿¡¼ ¼öÇÐ Á¤º¸¸¦ °øÀ¯Çϱâ À§ÇÑ °¡Àå Æí¸®ÇÑ ¹æ¹ýÀº ÅؽºÆ® ÇüÅ°¡ ¾Æ´Ñ °ø½ÄµéÀ» À̹ÌÁö·Î
Æ÷ÂøÇÏ°í ÀÌ À̹ÌÁöµéÀ» Ç¥ÁØ HTML ÆäÀÌÁö¿¡ »ðÀÔÇÏ´Â °ÍÀÌ´Ù.
´ëºÎºÐÀÇ ÃֽŠGUI ±â¹Ý ¼öÇÐ ÀúÀÛ µµ±¸µéÀº ¹®¼¸¦ À¥ ÆäÀÌÁö·Î ÀúÀåÇÏ´Â ¿É¼ÇÀ» °¡Áö°í ÀÖ´Ù.; ÀÌ
µµ±¸µéÀº °ø½ÄÀÇ À̹ÌÁö¿Í Á¤ÀûÀÎ HTML ÆäÀÌÁö¸¦ »ý¼ºÇÑ´Ù. ÀÌ°ÍÀº ´ÜÁö ¿©·¯ºÐÀÇ ³í¹®°ú °°Àº Á¤ÀûÀÎ ÄÁÅÙÃ÷¸¦
À¥¿¡ ¿Ã·Á³õ±â À§Çؼ´Â Æí¸®ÇÑ ¹æ¹ýÀÌ´Ù. ±×·¯³ª »ç¿ëÀÚ Âü¿©°¡ ´ëºÎºÐÀÇ »çÀÌÆ®¿¡¼ ÇʼöÀûÀÌ µÇ°í Àֱ⠶§¹®¿¡
Á¤ÀûÀÎ À¥ »çÀÌÆ®ÀÇ ½Ã´ë´Â ¿À·¡ Àü¿¡ Áö³µ´Ù. °í±Þ ¼öÇÐ À¥ »çÀÌÆ®´Â ¹é¾ØµåÀÇ µ¥ÀÌŸº£À̽º·ÎºÎÅÍ ÄÁÅÙÃ÷¸¦
µ¿ÀûÀ¸·Î À¥¿¡ °ø°³ÇÒ ¼ö ÀÖ¾î¾ß Çϸç, »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ ÄÁÅÙÆ®¸¦ ´Ù¸¥ »ç¿ëÀÚ¿Í °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù.
(¿¹¸¦ µé¾î, ¾ç¹æÇâ ½ÃÇè ½Ã½ºÅÛ°ú ¿¬±¸ Çù¾÷ ½Ã½ºÅÛµîÀÌ ÀÌ¿¡ ÇØ´çÇÑ´Ù)
ÀÌ ±ÛÀº ÀÌ·¯ÇÑ ¹®Á¦¿¡ ´ëÇÑ ÇϳªÀÇ ÇØ°á ¹æ¹ýÀ» Á¦½ÃÇÒ °ÍÀÌ´Ù. »ùÇà ÄÚµå´Â ¼öÇÐ °ø½ÄÀÌ Ç¥ÇöµÈ ¸¶Å©¾÷
ÅؽºÆ®¸¦ ±× °ø½ÄÀ» ³ªÅ¸³»¸ç À¥¿¡ ¿Ã¸± ¼ö ÀÖ´Â ±×·¡ÇÈ ÆÄÀÏ·Î ½Å¼ÓÇÏ°í ½±°Ô º¯È¯½Ãų ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.
ÀÌ ±ÛÀ» Àд٠º¸¸é ¿©·¯ºÐÀº º¸´Ù ÀϹÝÀûÀÎ ¼ö¼ö²²³¢¸¦ Ǫ´Â Á¢±Ù ¹æ½ÄÀ» º¸°Ô µÉ °ÍÀÌ´Ù. ¿ì¸®´Â ¿©·¯ °³ÀÇ »óÈ£
ÀÌÁúÀûÀÌ°í ¿¬°áµÇÁö ¾Ê´Â µµ±¸µéÀ» ÇϳªÀÇ ÇÁ·Î±×·¥À¸·Î °áÇÕ½ÃÅ°±â À§ÇØ JSP ÆäÀÌÁö¿Í Ä¿½ºÅÒ Å±׸¦ »ç¿ëÇÒ
°ÍÀÌ´Ù. ´Ù·ç±â Èûµç µ¿Àû À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¾÷ÇÒ ¶§ ÀØÁö ¸»¾Æ¾ß ÇÒ °ÍÀº ¸Ç ¶¥¿¡¼ ½ÃÀÛÇÏÁö ¸»¶ó´Â °ÍÀÌ´Ù;
¼Ö·ç¼ÇÀº ´Ù¸¥ ÇüÅ·Π¿©·¯ºÐÀÌ ÀÌ¿ëÇϱ⸦ ±â´Ù¸®°í ÀÖÀ» ¼öµµ ÀÖ´Ù.
JSP ±â¼ú º¹½À
µ¿ÀûÀÎ ¼¹öÃø ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇϱâ À§ÇÑ ¾Õ¼± ±â¼úÁß Çϳª±â JSP (JavaServer Pages)
±â¼úÀÌ´Ù. JSP ÆäÀÌÁö´Â ¹é¾ØµåÀÇ µ¥ÀÌÅÍ°¡ ÇÁ·±Æ® ¾ØµåÀÇ À¥ ÆäÀÌÁö(ÇÁ¸®Á¨Å×ÀÌ¼Ç ·ÎÁ÷)¿¡ ¾î¶»°Ô Ç¥½ÃµÇ´ÂÁö¸¦
Á¦¾îÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. JSP ÆäÀÌÁö´Â ÀÚ¹Ù µ¥ÀÌÅÍ °´Ã¼¸¦ HTML ȸé Ãâ·Â ¿¤¸®¸ÕÆ®¿Í °áÇÕ½ÃÅ°±â À§ÇØ
HTML°ú À¯»çÇÑ ÅÂ±× ¾ð¾î¸¦ »ç¿ëÇÑ´Ù.
JSP ±â¼úÀÇ °¡Àå Å« °Á¡Àº È®Àå°¡´ÉÇÏ´Ù´Â Á¡ÀÌ´Ù. JSP ÅÂ±× ¾ð¾î´Â Ä¿½ºÅÒ Å±׷ΠȮÀåµÉ ¼ö Àִµ¥,
ÀÌ´Â ÅÂ±× Çڵ鷯 Ŭ·¡½º¿¡¼ ÇÁ¸®Á¨Å×ÀÌ¼Ç ·ÎÁ÷À» ó¸®ÇÏ´Â ÀÚ¹ÙÄڵ带 ĸ½¶È½ÃÅ°µµ·Ï ÇØÁÖ´Ù. À¥ ÀúÀÛÀÚµéÀº ¾Æ¹«·±
ÀÚ¹Ù Äڵ带 ÀÛ¼ºÇÏÁö ¾Ê°íµµ ¹Ì¸® Á¤ÀÇµÈ ÅÂ±× ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇØ º¹ÀâÇÑ ÇÁ¸®Á¨Å×ÀÌ¼Ç ÀÛ¾÷À» ¹Ù·Î ¼öÇàÇÒ ¼ö
ÀÖ´Ù.Ä¿½ºÅÒ Å±׵éÀº ÇÁ¸®Á¨Å×ÀÌ¼Ç Á¦¾î Äڵ带 Àç»ç¿ë ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ¸ç À¥ ÆäÀÌÁö ÀÛ¼ºÀÚÀÇ ÀÛ¾÷À» »ó´çÈ÷
°£ÆíÇÏ°Ô ÇØÁØ´Ù. JSP Ä¿½ºÅÒ Å±×ÀÇ °¡Àå º¸ÆíÀûÀÎ ÇüÅ´ ÄÁÅÙÃ÷ ¹ø¿ª ű×(content
translation tag)Àε¥, ÅÂ±× º»¹®¿¡ µé¾î ÀÖ´Â ÀÛ¼ºÀÚ Áß½ÉÀÇ ³»¿ëÀ» ¹æ¹®ÀÚ À§ÁÖÀÇ Ç¥½Ã ¿¤¸®¸ÕÆ®µé·Î
º¯È¯½ÃÄÑÁØ´Ù.
¿ì¸®ÀÇ ¼öÇÐ À¥ »çÀÌÆ®¿¡¼ ¿ì¸®´Â ³»¿ë ¹ø¿ª ű׸¦ »ç¿ëÇÏ¿© Àǹ̷ÐÀû ¼öÇРǥÇöµéÀ» À¥ À̹ÌÁö·Î º¯È¯ÇÒ ¼ö
ÀÖ´Ù. ´ÙÀ½ ¼½¼Çµé¿¡¼ ÀÌ ±â¹ýµé¿¡ ´ëÇØ »ó¼¼È÷ ¼³¸íÇÏ°Ú´Ù.
¹«¾ùÀÌ ÇÊ¿äÇÑ°¡
¿©±â¿¡¼´Â ÄÁÅÙÃ÷ ¹ø¿ª űװ¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¸¦ ¼³¸íÇÏ°Ú´Ù. JSP ÄÁÅ×À̳ʰ¡ Ä¿½ºÅÒ Å±׸¦ ¹ß°ßÇϸé
ÇöÀç ÆäÀÌÁöÀÇ taglib µð½ºÅ©¸³ÅÍ ÆÄÀϵ鿡¼ ÅÂ±× À̸§À» ã´Â´Ù. ÀÏÄ¡µÇ´Â °ÍÀ» ã°ÔµÇ¸é JSP ÄÁÅ×À̳ʴÂ
ÅÂ±× Çڵ鷯 Ŭ·¡½º¿¡°Ô ¹®¸Æ Á¤º¸¸¦ Àü´ÞÇÑ´Ù. JSP ÅÂ±× Çڵ鷯´Â ¸ÕÀú Ä¿½ºÅÒ Å±×ÀÇ º»¹®À¸·ÎºÎÅÍ ¼öÇÐ °ø½ÄÀ»
Ç¥½ÃÇÏ´Â ÅؽºÆ® ¹®ÀÚ¿À» ÃßÃâÇÑ´Ù. ±×¸®°í Àǹ̷ÐÀûÀÎ ÅؽºÆ® °ø½ÄÀ» ±â¹ÝÀ¸·Î À̹ÌÁö¸¦ ¸¸µé¾î³»°í, ±× À̹ÌÁö¿¡
´ëÇÑ <IMG>¶ó´Â HTML ¸¶Å©¾÷ Ç¥½Ã¸¦ ºê¶ó¿ìÀú¿¡°Ô º¸³½´Ù. ÅÂ±× Çڵ鷯¿¡¼ ÇÊ¿äÇÑ ¼öÇÐ À̹ÌÁö
»ý¼º µµ±¸´Â ´ÙÀ½ÀÇ ±â´ÉÀ» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù.:
- ¼öÇÐ °ø½ÄÀº ¹Ýµå½Ã JSP ű×ÀÇ º»¹®¿¡¼ Áö¿øµÇ´Â À¯ÀÏÇÑ ÇüÅÂÀÎ ÆòÀÌÇÑ ÅؽºÆ®·Î Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.
ÀÌ ÆòÀÌÇÑ ÅؽºÆ®´Â ¶ÇÇÑ HTTP ÇÁ·ÎÅäÄÝÀ» ÅëÇÏ¿© Á¤º¸¸¦ Àü´ÞÇÏ°í µ¥ÀÌÅͺ£À̽º ȤÀº XML ¹®¼¿¡ Á¤º¸¸¦
ÀúÀåÇϱâ À§ÇÑ Ç¥ÁØ Æ÷¸ËÀÌ´Ù.
- ¼öÇÐ °ø½ÄÀ» ÆòÀÌÇÑ ÅؽºÆ®·Î Ç¥±âÇÏ´Â ¹æ¹ýÀº À¥ ÀúÀÛÀÚµéÀÌ ¸¹Àº ÈƷþøÀ̵µ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¹Ýµå½Ã
Àǹ̷ÐÀûÀÌ°í Á÷°üÀûÀ̾î¾ß ÇÑ´Ù. À̸¦ À§ÇØ ±× Àǹ̷ÐÀûÀÎ ¼öÇРǥ±â ½Ã½ºÅÛÀÌ Àü¼¼°è ÇÐÀڵ鿡 ÀÇÇØ À̹Ì
»ç¿ëµÇ°í ÀÖ¾ú´ø °ÍÀ̶ó¸é ´õÇÒ ³ªÀ§¾ø´Ù.
- ¼öÇРǥ±â µµ±¸µéÀº ¿©·¯ Ç÷§Æû¿¡¼ »ç¿ëµÉ ¼ö ÀÖ´Â ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÌÁ¡À» »ì¸®±â À§ÇØ ¸¹Àº
Ç÷§Æû¿¡¼ »ç¿ë°¡´ÉÇØ¾ß ÇÑ´Ù.
LateX ¼Ò°³
À§ÀÇ ¸ðµç ¿ä°ÇÀ» ÃæÁ·ÇÏ´Â ¼öÇÐ ÀúÀÛ ¼ÒÇÁÆ®¿þ¾î´Â ½ÄÀÚ µµ±¸µéÀÇ ÁýÇÕÀÎ ¾÷°è Ç¥ÁØÀÇ TeX/LateX(ÈÄ¿¡
Latex)ÀÌ´Ù. LateX´Â ´ÙÀ½°ú °°Àº ±â´ÉÀ» Á¦°øÇÑ´Ù.:
LaTex°¡ »ý¼ÒÇÑ µ¶ÀÚ´Â º»¹®À» °è¼Ó ÁøÇàÇϱâ Àü¿¡ LaTex¿Í ±× ±¸¹®¿¡ Àͼ÷ÇØ µÎ´Â ÆíÀÌ ÁÁÀ»
°ÍÀÌ´Ù. ¾Æ·¡ÀÇ Âü°í
ÀÚ·á ¼½¼Ç¿¡ À¯¿ëÇÑ Á¤º¸·ÎÀÇ ¸µÅ©°¡ ÀÖ´Ù.
LaTex¿¡¼ GIF À̹ÌÁö »ý¼ºÇϱâ
LaTeX´Â Àǹ̷ÐÀûÀÎ ¼öÇÐ °ø½ÄÀ» À̹ÌÁö·Î ó¸®ÇÒ ¼ö ÀÖÁö¸¸, ÀÌ À̹ÌÁöµéÀº
´ëºÎºÐÀÇ À¥ ºê¶ó¿ìÀú¿¡¼ ¹Ù·Î Ãâ·ÂµÉ ¼ö´Â ¾ø´Ù. ¸ðµç À¥ ºê¶ó¿ìÀú´Â GIF À̹ÌÁö¸¦ Áö¿øÇϱ⠶§¹®¿¡
LaTeX·Î µÈ °ø½Ä À̹ÌÁö¸¦ GIF Æ÷¸äÀ¸·Î º¯È¯ÇØ¾ß ÇÑ´Ù. À̹ø ¼½¼Ç¿¡¼´Â Third-party µµ±¸¸¦
»ç¿ëÇØ LaTex ÀÔ·Â ±¸¹®À¸·ÎºÎÅÍ GIF À̹ÌÁö¸¦ »ý¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ »ìÆ캼 °ÍÀÌ´Ù. ¿ì¸®ÀÇ ±Ã±ØÀûÀÎ ¸ñÇ¥´Â
ÀÌ ÀýÂ÷¸¦ °¡´ÉÇÑÇÑ ¸¹ÀÌ ÀÚµ¿È½ÃÅ°´Â °ÍÀÌÁö¸¸, ¿ì¸®°¡ ÀÛ¾÷ÇØ¾ß ÇÏ´Â ±âº» ¿øÄ¢À» º¸´Â °Íµµ µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
¿ì¸®´Â Linux/Unix ¸í·ÉÇà ÅøÀ» ¿¹Á¦·Î »ç¿ëÇÏÁö¸¸, µ¿ÀÏÇÑ ±â´ÉÀ» °¡Áø µµ±¸°¡ WiIndows¿Í Mac
OS¿ëÀ¸·Î ³ª¿Í ÀÖ´Ù. PNG¿Í JPEG °°Àº ´Ù¸¥ Æ÷¸äÀÇ À̹ÌÁöµµ ºñ½ÁÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù. ´ÙÀ½ ´Ü°èµéÀ»
µû¸£¸é GIF À̹ÌÁö Æ÷¸äÀ¸·Î µÈ ¼öÇÐ ÄÁÅÙÃ÷°¡ ¸¸µé¾îÁú °ÍÀÌ´Ù.::
- ±¸¹® ÀÔ·Â ÆÄÀÏ (¿©±â¼´Â »ùÇà ÆÄÀÏÀ» sample.tex¶ó°í ºÎ¸£ÀÚ)¿¡ LaTeX ±¸¹® µÚ¿¡ ¼öÇÐ
³»¿ëÀ» ÀÛ¼ºÇÑ´Ù.
- ±×¸² 3°ú °°ÀÌ LaTeX ÇÁ·Î±×·¥À» »ç¿ëÇØ sample.tex¸¦ ÀåÄ¡ µ¶¸³ÀûÀÎ ÆÄÀÏ
(sample.dvi)·Î ó¸®ÇÑ´Ù. ¸í·É¹®Àº
latex sample.tex ÀÌ´Ù. ó¸®
Áß¿¡ LaTeX´Â ¶ÇÇÑ ·Î±× ÆÄÀÏ°ú º¸Á¶ ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
±×¸² 3. LaTeX ½ÇÇàÇϱâ
- ±×¸² 4¿Í °°ÀÌ Dvips À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇØ .dvi ÆÄÀÏÀ» Æ÷½ºÆ®½ºÅ©¸³Æ® ÆÄÀÏ·Î º¯È¯ÇÑ´Ù. ¸í·É¹®Àº
dvips -o sample.ps sample.dvi ÀÌ´Ù. (Dvips¿¡ °üÇÑ »ó¼¼
»çÇ×Àº Âü°í
ÀÚ·á ¸¦ ÂüÁ¶ÇÑ´Ù.)
±×¸² 4. Dvips ½ÇÇàÇϱâ
- ImageMagick ÅøÀÎ
convert ¸¦ »ç¿ëÇØ Æ÷½ºÆ®½ºÅ©¸³Æ® ÆÄÀÏ
sample.ps¸¦ GIF Æ÷¸äÀ¸·Î º¯È¯ÇÑ´Ù. (ImageMagick¿¡ °üÇÑ »ó¼¼ »çÇ×Àº Resources¸¦
ÂüÁ¶ÇÑ´Ù.) ¸í·É¹®Àº convert -antialias -crop 0x0 sample.ps
sample.gif ÀÌ´Ù. ¿ì¸®´Â Æ÷½ºÆ®½ºÅ©¸³Æ® ÆäÀÌÁö¿¡ ÀÖ´Â °ø½Ä ÁÖÀ§ÀÇ ¿©¹éÀÌ GIF¿¡
³ªÅ¸³ªÁö ¾Êµµ·Ï ÇÏ°í ½Í´Ù. µû¶ó¼ ¸í·ÉÇà¿¡ -crop 0x0 ¿É¼ÇÀ» ½á¼ ¿©¹éÀÌ
¾ø¾îÁöµµ·Ï ÇÏ¿´´Ù. ¶ÇÇÑ -antialias ¸¦ »ç¿ëÇÏ¿© ¸Å²öÇÑ ÆùÆ®°¡ ¸¸µé¾îÁöµµ·Ï
ÇÏ¿´´Ù.
±×¸² 5. ImageMagick ½ÇÇàÇϱâ
¿©·¯ºÐÀÌ ¸í·ÉÇà¿¡¼ ImageMagick¿¡ ºÙÀÎ Ãâ·Â ÆÄÀÏ¸í¿¡
´õÇØÁø ÆÄÀÏ È®ÀåÀÚ´Â Ãâ·Â À̹ÌÁö Æ÷¸äÀ» °áÁ¤ÇÑ´Ù. À§ÀÇ ¿¹Á¦¿¡¼ Ãâ·Â À̹ÌÁö´Â
sample.gif ·Î ÁöÁ¤µÇ¾ú´Âµ¥, ÀÌ´Â ImageMagick¿¡°Ô GIF À̹ÌÁö¸¦
Ãâ·ÂÇ϶ó´Â Áö½ÃÀÌ´Ù. Æ÷½ºÆ®½ºÅ©¸³Æ®¸¦ GIF·Î º¯È¯ÇÏ´Â µ¥ °üÇÑ »ó¼¼ »çÇ×Àº º¸Ãæ ÀÚ·á "º¤ÅÍ
±×·¡ÇÈ ´ë ºñÆ®¸Ê ±×·¡ÇÈ"À» ÂüÁ¶ÇÑ´Ù.
º¤ÅÍ ±×·¡ÇÈ ´ë ºñÆ®¸Ê ±×·¡ÇÈ
LaTeX/Dvips°¡ »ý¼ºÇÑ Æ÷½ºÆ®½ºÅ©¸³Æ® ÆäÀÌÁö ´Â º¤ÅÍ¿¡ ±â¹ÝÇÑ À̹ÌÁöÀ̸ç, ¾î¶² Å©±â·Îµµ
ÀÚ¿¬½º·´°Ô Å©±â Á¶Á¤ÀÌ °¡´ÉÇÏ´Ù. ±×·¯³ª GIF, PNG, JPEC°ú °°Àº À¥ À̹ÌÁö´Â ¸ðµÎ ºñÆ®¸Ê
À̹ÌÁö¿¡ ±â¹ÝÇÏ°í ÀÖ´Ù. MageMagick»ùÇÃÀº Ãß°¡ÀûÀΠó¸® °úÁ¤À» °ÅÄ¡±â Àü¿¡´Â ±âº»ÀûÀ¸·Î
Æ÷½ºÆ®½ºÅ©¸³Æ® ÆäÀÌÁö¸¦ 612 x 792 Çȼ¿ ºñÆ®¸Ê À̹ÌÁö·Î »ùÇøµÇÑ´Ù. ºñÆ®¸Ê À̹ÌÁöÀÇ ÇÑ °¡Áö
Å« ´ÜÁ¡Àº »çÀÌÁ Á¶ÀýÇϸé ƯÈ÷ »çÀÌÁ Å°¿ï °æ¿ì º¸±â ½È¾îÁø´Ù´Â °ÍÀÌ´Ù. µû¶ó¼ °ø½ÄÀÇ À̹ÌÁö¸¦
ImageMagicÀÌ »ùÇøµÇÑ °Íº¸´Ù ÈξÀ Å©°Ô´Â ÀÚ¿¬½º·´°Ô Ç¥½ÃÇÒ ¼ö ¾ø´Ù.
ImageMagick ÆÐÅ°Áö´Â ¿ÀÇ ¼Ò½º ¶óÀ̼±½º·Î Ãâ½ÃµÇ¾îÀֱ⠶§¹®¿¡ ¼Ò½º Äڵ带 º¯°æÇÏ¿©
Æ÷½ºÆ®½ºÅ©¸³Æ® ÆäÀÌÁö¿¡ ´ëÇØ º¸´Ù ³ªÀº Çػ󵵸¦ °¡Áø À̹ÌÁö¸¦ »ý¼ºÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù.
magick/image.h ÆÄÀÏ¿¡¼ ±âº»°ªÀ¸·Î ¼³Á¤µÇ¾î ÀÖ´Â 612 x 792 Çػ󵵸¦ º¯°æÇÏ°í Àüü
ÆÐÅ°Áö¸¦ ÀçÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù . ´õ ³ª¾Æ°¡ º¯È¯ ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ带 ÆíÁýÇÏ¿© ·±Å¸Àӽÿ¡ ÁöÁ¤µÈ
Æ÷½ºÆ®½ºÅ©¸³Æ® »ùÇøµ Çػ󵵸¦ »ç¿ëÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ¼Ò½º Äڵ带 ¼öÁ¤ÇÏ´Â °ÍÀº ´ëºÎºÐÀÇ
»ç¿ëÀÚ¿¡°Ô ¸Å¿ì ¾î·Æ´Ù.
°íÇ°ÁúÀÇ ´ëÇü À̹ÌÁö ÀÛ¼ºÀ» ½±°Ô ÇØÁÖ´Â ´Ù¸¥ À̹ÌÁö º¯È¯ Åøµéµµ ³ª¿Í ÀÖ´Ù.
Unix/Linux ÇÁ·Î±×·¥ÀÎ Textogif (Âü°í
ÀÚ·á ÂüÁ¶)´ÂÆ÷½ºÆ®½ºÅ©¸³Æ® Çؼ®±âÀÎ GhostScript¿Í À̹ÌÁö º¯È¯ ¶óÀ̺귯¸®ÀÎ
Netpbm°ú °áÇÕÇÏ¿© Æ÷½ºÆ®½ºÅ©¸³Æ® ÆäÀÌÁö¿¡ ´ëÇØ °íÇ°ÁúÀÇ GIF À̹ÌÁö¸¦ ¾î¶² Çػ󵵷εµ ¸¸µé ¼ö
ÀÖ´Ù. ±×·¯³ª Textogif´Â Unix/Linux ÇÁ·Î±×·¥¿¡¼¸¸ ÀÛµ¿Çϱ⠶§¹®¿¡ ÇÊÀÚ´Â À̹ø
¿¹Á¦¿¡¼´Â »ç¿ëÇÏÁö ¾Ê°Ú´Ù. |
ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ¿ÜºÎ ÇÁ·Î±×·¥ ½ÇÇàÇϱâ
Áö±Ý±îÁö ¿ì¸®°¡ °£·«ÇÏ°Ô »ìÆ캻 ÀýÂ÷µéÀº »óÈ£ ¿¬°áµÇÁö ¾ÊÀº ´Ù¼öÀÇ ¸í·ÉÇà
ÇÁ·Î±×·¥µéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. ¼öÇÐ À̹ÌÁö¸¦ À¥¿¡ ½±°Ô Ç¥ÇöÇÏ·Á¸é ÀÌ ¼öÇÐ ÀúÀÛ ÅøµéÀ» JSP À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î
ÅëÇÕÇØ¾ß ÇÑ´Ù. ÀÚ¹Ù ÇÁ·Î±×·¥Àº java.lang.Runtime API¸¦ »ç¿ëÇØ JVM
¿ÜºÎÀÇ È£½ºÆ® ¿î¿µÃ¼Á¦ÀÇ ÇÁ·Î¼¼½º¸¦ ±¸µ¿½ÃÅ°°í °ü¸®ÇÒ ¼ö ÀÖ´Ù. »õ·Î¿î ÇÁ·Î¼¼½º´Â ´ÙÀ½°ú °°ÀÌ ±¸µ¿½ÃŲ´Ù. :
Process p =
Runtime.getRuntime().exec(cmd, envp, dir);
|
À§¿¡¼ cmd ¸Å°³º¯¼ö¿¡´Â ¸í·É¾î°¡ Æ÷ÇÔµÈ ÇϳªÀÇ ¹®ÀÚ¿ÀÌ ¿Ã ¼öµµ ÀÖ°í ¸í·É¾î¿Í
¿É¼ÇÀÌ Æ÷ÇÔµÈ ÀÏ·ÃÀÇ ¹®ÀÚ¿ÀÌ ¿Ã ¼öµµ ÀÖ´Ù. envp¿¡´Â À̸§=°ª Æ÷¸äÀ¸·Î ȯ°æ º¯¼ö°¡ ¼³Á¤µÈ´Ù.;
±×¸®°í dir ¸Å°³º¯¼ö´Â java.io.File À¯ÇüÀ̸ç
ÇÁ·Î¼¼½ºÀÇ ÀÛ¾÷ µð·ºÅ丮¸¦ ³ªÅ¸³½´Ù. ÇÁ·Î¼¼½º°¡ ±¸µ¿µÇ¸é ÀÔ·Â ½ºÆ®¸²À» ÅëÇØ ÇÁ·Î¼¼½º¿¡ µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö
ÀÖ´Ù.:
InputStream ins = p.getInputStream();
|
¶ÇÇÑ Ãâ·Â ½ºÆ®¸²À¸·ÎºÎÅÍ ÇÁ·Î¼¼½ºÀÇ °á°ú¹°À» ¾òÀ» ¼ö ÀÖ´Ù. :
OutputStream ous = p.getOutputStream();
|
¿ÜºÎ ÇÁ·Î¼¼½º°¡ Á¾·áµÉ¶§±îÁö ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀ» ÁßÁö½ÃÅ°°í ½Í´Ù¸é ´ÙÀ½ Äڵ带 »ç¿ëÇÑ´Ù. :
p.waitFor(); // Move on to other tasks.
|
¿¹Á¦ Áö±Ý±îÁö
µ¿ÀûÀÎ ¼öÇÐ ÄÁÅÙÃ÷°¡ ´ã±ä À¥ »çÀÌÆ®¸¦ ±¸ÇöÇϴµ¥ ÇÊ¿äÇÑ Åø°ú ±âº» ±â¹ýµéÀ» »ìÆ캸¾Ò´Ù. ÀÌÁ¦ À̵éÀ» ÅëÇÕÇÒ
Â÷·ÊÀÌ´Ù. ±× ¹æ½ÄÀ» °¡Àå Àß º¸¿©ÁÖ´Â ¹æ¹ýÀº ÀÌ ±Û°ú ÇÔ²² Á¦°øµÇ´Â ¿¹Á¦ ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î ÀÛ¾÷ÇÏ´Â °ÍÀÌ´Ù.
¿¹Á¦ ¾ÖÇø®ÄÉÀÌ¼Ç ¹èÄ¡ ¹æ¹ý
- zip
archive Äڵ带 ´Ù¿î¹Þ¾Æ¼ Ǭ´Ù.
support , SlowMathTag ¹×
MathTag Compile ÆÐÅ°Áö¸¦ ÄÄÆÄÀÏÇÑ´Ù. Ŭ·¡½º °æ·Î¿¡ J2EE v1.3
j2ee.jar ÆÄÀÏÀ» Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù.
- ¿©·¯ºÐÀÇ JSP ¼¹ö¿¡ »õ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÑ´Ù. ¿¹¸¦ µé¾î, Tomcat ¼¹ö¿¡¼´Â Å×½ºÆ®
¾ÖÇø®ÄÉÀ̼ǿëÀ¸·Î
ebapps/JSPMath µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù.
- ÄÄÆÄÀÏµÈ ÆÐÅ°ÁöÀÎ
support , SlowMathTag
¹× MathTag¸¦
Webapps/JSPMath/WEB-INF/classes µð·ºÅ丮¿¡
º¹»çÇÑ´Ù.
- taglib µð½ºÅ©¸³ÅÍ ÆÄÀÏÀÎ
tlds/*.tld ¸¦
Webapps/JSPMath/WEB-INF/tlds µð·ºÅ丮¿¡ º¹»çÇÑ´Ù.
- JSP¿Í HTML ÆÄÀÏÀÎ
jsp/* À» Webapps/JSPMath
³»ÀÇ ÇÑ µð·ºÅ丮¿¡ º¹»çÇÑ´Ù.
- ÀÌÁ¦ ¿©·¯ºÐÀº ºê¶ó¿ìÀú·Î
Test01.htmlÀ̳ª
Test02.htmlÀ» ÁöÁ¤ÇÏ¿© Å×½ºÆ®¸¦ ½ÃÀÛÇÒ ¼ö ÀÖ´Ù.
ÀÏ´Ü ¾ÖÇø®ÄÉÀ̼ÇÀ» ¼³Ä¡ÇßÀ¸¸é º» ¼½¼ÇÀÇ ´Ü°èµéÀ» ¹â¾Æ ¿¹Á¦°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö º¼ ¼ö ÀÖ´Ù.
¿¹Á¦ ÄÚµå
½ÇÇàÇϱ⠻ùÇà ÄÚµå´Â µÎ °³ÀÇ »õ·Î¿î À¯ÇüÀÇ JSP Ä¿½ºÅÒ Å±׸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù.
<LatexRaw> ű״ ¿ø·¡ÀÇ LaTeX ÅؽºÆ®¸¦ HTML À̹ÌÁö ű׷Î
¹øȯÇÑ´Ù. ÀÌ Å±״ ÇϳªÀÇ À̹ÌÁö¿¡ ¿©·¯ °³ÀÇ °ø½Ä, Ç¥, ȤÀº ªÀº ¼³¸í¹®À» Ç¥½ÃÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.
<LatexMath> ű״ ¼öÇÐÀû ¸ðµåÀÇ LaTeX ÅؽºÆ®¸¸ HTML À̹ÌÁö
ű׷Π¹Ù²Ù¾î ÇÑ °³ÀÇ ¼öÇÐ °ø½Ä À̹ÌÁö·Î ³ªÅ¸³½´Ù. ÀÌ Å±״ °ø½ÄÀ» ½Å¼ÓÇÏ°Ô Ç¥½ÃÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
°¢ ű״ height ¿Í width¶ó´Â µÎ °³ÀÇ ¼Ó¼ºÀ»
°¡Áö°í Àִµ¥, °á°ú·Î ³ª¿À´Â <IMG> ű×ÀÇ height ¿Í
width ¼Ó¼º¿¡ ´ëÀÀµÈ´Ù. ÀÌµé ¼Ó¼ºÀº Çʼö »çÇ×Àº ¾Æ´Ï´Ù.
¾Æ·¡ÀÇ È¸éÀº ½ÇÇàÁßÀÎ Ä¿½ºÅÒ Å±׸¦ º¸¿© ÁÖ°í ÀÖ´Ù. Test01.htmlÀº LaTeX ÅؽºÆ® ¹®ÀÚ¿À»
µÎ°³ÀÇ Å« ÅؽºÆ® Çʵ忡 ÀÔ·ÂÇÑ´Ù. ÆäÀÌÁö À§ÂÊ¿¡ ÀÖ´Â µÎ °³ÀÇ ÀÛÀº ÅؽºÆ® ÀÔ·Â »óÀÚ¿¡´Â °á°ú·Î ³ª¿Ã À̹ÌÁö¿¡
´ëÇØ »ç¿ëÀÚ°¡ ¿øÇÏ´Â ³ôÀÌ¿Í ³Êºñ¸¦ ÀÔ·ÂÇÑ´Ù. Ä¿½ºÅÒ Å±׿¡¼ dimenstion ¼Ó¼ºÀ» ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö
º¸¿©ÁÖ±â À§ÇØ, ¿©±â¿¡¼ »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ¸éÀûÀ¸·Î µÈ À̹ÌÁö¿Í ImageMagickÀÌ ÁöÁ¤ÇÑ ±âº» ¸éÀûÀ¸·Î µÈ
À̹ÌÁö¸¦ Test01.jsp¿¡¼ µÑ ´Ù Ç¥½ÃÇÏ°Ú´Ù. ÀÛ¼ºµÈ HTML ¾ç½ÄÀº ºê¶ó¿ìÀú¿¡¼ ±×¸² 6°ú °°ÀÌ
³ªÅ¸³´Ù.
±×¸² 6. LaTeX ¼öÇÐ ÀÔ·Â ¾ç½Ä
Text01.htmlÀÇ ¾ç½ÄÀ» Àü¼ÛÇϸé JSP ÆäÀÌÁöÀÎ Test01.jsp·Î µ¥ÀÌÅ͸¦ °Ô½ÃÇÏ°í, ±×·¯¸é
±×¸² 7°ú °°ÀÌ ¼öÇÐ °ø½Ä À̹ÌÁö°¡ °á°ú·Î Ç¥½ÃµÈ´Ù. ù¹ø° À̹ÌÁö´Â ÀÔ·Â HTML ¾ç½ÄÀÇ MathText Çʵå
(ÇÑÁÙ·Î µÈ ÅؽºÆ® Çʵå)ÀÇ ¼öÇÐ ¸ðµå LaTeX ÅؽºÆ®¸¦ »ç¿ëÇØ
<LatexMath> űװ¡ »ý¼ºÇÑ °ÍÀÌ´Ù. ù¹ø° À̹ÌÁö¿¡ ´ëÇÑ
<LatexMath> űװ¡ µÎ°¡Áö ¼Ó¼ºÀ» °¡Áö°í ÀÖÀ½¿¡ ÁÖÀÇÇÑ´Ù. ±×·¯¸é »ç¿ëÀÚ°¡
ÁöÁ¤ÇÑ height ¿Í width ¼Ó¼º¿¡ µû¸¥ ¸éÀûÀÇ À̹ÌÁö°¡ Ç¥½ÃµÈ´Ù. µÎ¹ø°
À̹ÌÁö´Â ±âº»À¸·Î ÁöÁ¤µÇ¾î ÀÖ´Â ¸éÀûÀ¸·Î Ç¥½ÃµÇ¾ú´Ù´Â °Í ¿Ü¿¡´Â ù¹ø° À̹ÌÁö¿Í µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î »ý¼ºµÇ¾ú´Ù.
(µÎ¹ø° À̹ÌÁö¸¦ »ý¼ºÇϴ ű״ dimension ¼Ó¼ºÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù.) ¼¼¹ø° À̹ÌÁö´Â
RawMathText Çʵå (Å« ¿©·¯ÇàÀÇ ÅؽºÆ® Çʵå) ¿¡ ÀÔ·ÂµÈ LaTeX ÅؽºÆ®·ÎºÎÅÍ
<LatexRaw> ű׿¡ ÀÇÇØ »ý¼ºµÇ¾úÀ¸¸ç ÅؽºÆ®¿Í ¼öÇÐÀû ±âÈ£¿Í È¥ÇÕµÈ
¿¹Á¦ÀÌ´Ù. ÁöÁ¤µÈ ³ôÀÌ¿Í ³Êºñ Çʵå´Â ÀÌ À̹ÌÁö¿¡ Àû¿ëµÇÁö ¾Ê¾Ò´Ù.
±×¸² 7. ¼öÇÐ À̹ÌÁö Ãâ·Â
Listing 1Àº ÀÌ ¸ðµç ÀÛ¾÷À» ¼öÇàÇÏ´Â Test01.jspÀÇ ÄÚµåÀÌ´Ù.
Listing 1. Test01.jsp
<%@ taglib uri="/WEB-INF/tlds/SlowMathTaglib.tld" prefix="SlowMathTag" %>
<%
String mathText = request.getParameter( "MathText" );
String rawMathText = request.getParameter( "RawMathText" );
String height = request.getParameter( "height" );
String width = request.getParameter( "width" );
%>
<html>
<head>
<title>JSPMath test without image cache</title>
</head>
<body bgcolor=white>
<p><font color=green> Math formula in desired dimensions: </font>
<p>
<SlowMathTag:LatexMath height="<%=height%>" width="<%=width%>">
<%=mathText%>
</SlowMathTag:LatexMath>
<p><font color=green> Math formula in default dimensions: </font>
<p>
<SlowMathTag:LatexMath>
<%=mathText%>
</SlowMathTag:LatexMath>
<p><font color=green> Latex segment in default dimensions: </font>
<p>
<SlowMathTag:LatexRaw>
<%=rawMathText%>
</SlowMathTag:LatexRaw>
</body>
</html>
|
ÇÑ ¹øÀÇ ½ÇÇàÀ¸·Î JSP ÄÁÅ×À̳ʰ¡ À¥ ºê¶ó¿ìÀú¿¡°Ô º¸³»´Â ½ÇÁ¦ HTML ÄÚµå´Â Listing 2¿Í
°°´Ù.
Listing 2. Test01.jsp°¡ ºê¶ó¿ìÀú¿¡ º¸³»´Â HTML ÄÚµå
<html>
<head>
<title>JSPMath test without image cache</title>
</head>
<body bgcolor=white>
<p><font color=green> Math formula in desired dimensions: </font>
<p>
<IMG
SRC="http://localhost:8080/JSPMath/images/image1009709773390.gif"
height=20 width=150 />
<p><font color=green> Math formula in default dimensions: </font>
<p>
<IMG
SRC="http://localhost:8080/JSPMath/images/image1009709776535.gif" />
<p><font color=green> Latex segment in default dimensions: </font>
<p>
<IMG
SRC="http://localhost:8080/JSPMath/images/image1009709777612.gif" />
</body>
</html>
|
¿©±âÀÇ GIF À̹ÌÁö´Â ÅÂ±× Çڵ鷯°¡ »ý¼ºÇÑ °ÍÀÌ´Ù. ±×¸² 7¿¡¼ º¸¾ÒµíÀÌ »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ¸éÀûÀ¸·Î È®´ëµÈ
À̹ÌÁö´Â ¸Å²ô·´°Ô Ç¥ÇöµÇÁö ¾Ê´Â´Ù. ¿Ö ±×·±Áö¿Í Unix/Linux ½Ã½ºÅÛ¿¡¼ ÀÌ ¹®Á¦¿¡ ´ëÇØ ¾î¶»°Ô ´ëÀÀÇÒÁö¿¡
´ëÇؼ´Â ¾ÕÀÇ º¸Ãæ ÀÚ·á "º¤ÅÍ
±×·¡ÇÈ ´ë ºñÆ®¸Ê ±×·¡ÇÈ"À» ÂüÁ¶ÇÑ´Ù.
ÀÌ·¯ÇÑ Ä¿½ºÅÒ ÅÂ±× ÀÛ¾÷À» ¾î¶»°Ô ±¸ÇöÇÏ¿´´Â°¡? ¾Ë°í ½Í´Ù¸é °è¼Ó Àб⠹ٶõ´Ù.
°£´ÜÇÑ (ÇÏÁö¸¸ ´À¸°) ¹æ½Ä
À§ÀÇ ¿¹Á¦´Â ¸Å¿ì °£´ÜÇÏ°í Á÷Á¢ÀûÀÎ ¹æ½ÄÀ¸·Î ±¸ÇöµÉ ¼ö ÀÖ´Ù. À̱ۿ¡¼ ¿©·¯ºÐÀº À̹Ì
JSP Ä¿½ºÅÒ ÅÂ±× Çڵ鷯 ±¸Çö ¹æ¹ýÀ» ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ±â¾ïÀ» µÇ»ì¸®°í ½Í´Ù¸é ¾Æ·¡ÀÇ Âü°í
»çÇ× ¼½¼ÇÀ» ÂüÁ¶ÇÑ´Ù.
<SlowMathTag:*> ÅÂ±× Çڵ鷯´Â Á¤ÀûÀÎ ¸Þ¼ÒµåÀÎ
support.MathUtil.latex2gif()À» È£ÃâÇÏ¿© GIF À̹ÌÁö¸¦ »ý¼ºÇÑ´Ù. ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¸¦
º¸±â À§ÇØ ÀÌ ¸Þ¼ÒµåÀÇ ¼Ò½º Äڵ带 »ìÆ캸ÀÚ.
Listing 3°ú °°ÀÌ ¸Þ¼Òµå´Â ¿ì¼± ÇöÀçÀÇ Å±װ¡ »ý¼ºÇÑ GIF À̹ÌÁö¿Í ÁßÀç ÆÄÀϵéÀÇ À̸§À»
°áÁ¤ÇÑ´Ù. ÀÌ ÆÄÀϵéÀÇ ·çÆ®³×ÀÓÀº ÇöÀç ½Ã°£ÀÇ 1/1000ÃÊ °ªÀÌ´Ù.
Listing 3. ÆÄÀÏ À̸§ »ý¼ºÇϱâ
Date now = new Date ();
String filename = "image" + Long.toString(now.getTime());
// ...
File f = new File(path + filename + ".tex");
|
´ÙÀ½¿¡ ¸Þ¼Òµå´Â Listing 4¿Í °°ÀÌ ÅÂ±× º»¹®¿¡¼ ³»¿ëÀ» ÃëÇØ ¿ÏÀüÇÑ LaTeX ÀÔ·Â ÆÄÀÏÀ»
±¸¼ºÇÑ´Ù. JSP ÄÁÅ×À̳ʴ ÅÂ±× º»¹®À» ¹®ÀÚ¿ º¯¼ö latexStr ÀÇ
latex2gif() ¸Þ¼Òµå¿¡ Àü´ÞÇÑ´Ù.
\pagestyle{empty} ¸í·É¾î´Â °á°ú ÆäÀÌÁöÀÇ ÇÏ´Ü¿¡ ÆäÀÌÁö ¹øÈ£°¡ ³ª¿ÀÁö
¾Êµµ·Ï Çϴµ¥ »ç¿ëµÈ´Ù. \batchmode ¸í·É¾î´Â LaTeX ÇÁ·Î¼¼¼°¡ ºñ´ëÈÇü
¸ðµå·Î ½ÇÇàµÇµµ·Ï Çϴµ¥ »ç¿ëµÈ´Ù.
Listing 4. LaTeX ÀÔ·Â ÆÄÀÏ ±¸¼ºÇϱâ
private static String latexHead = "\\batchmode\n" +
"\\documentclass[12pt]{article}\n" +
"\\pagestyle{empty}\n" +
"\\begin{document}\n";
private static String latexEnd = "\\end{document}\n";
// ...
// String variable "latexStr" contains the body of the current tag.
// Process modes.
if ( mode.equals("displaymath") ) {
latexStr = "\\Large\n\\begin{displaymath}\n" +
latexStr.trim() +
"\\end{displaymath}\n";
} else {
// Unrecognized modes are raw latex strings.
}
// Write content into a latex file.
FileWriter fw = new FileWriter(f);
fw.write( latexHead, 0, latexHead.length() );
fw.write( latexStr, 0, latexStr.length() );
fw.write( latexEnd, 0, latexEnd.length() );
|
ÀÌÁ¦ ¸Þ¼Òµå´Â Listing 5¿Í °°ÀÌ latex , dvips ¹×
convert ¸í·É¾î¸¦ ½ÇÇàÇÏ¿© ¼¹öÃø¿¡ ¹Ì¸® ¼³Á¤µÈ µð·ºÅ丮
°æ·Î¿¡ ÃÖÁ¾ÀûÀÎ GIF À̹ÌÁö¸¦ ¸¸µç´Ù.
Now the method executes the commands latex ,
dvips , and convert to produce the
final GIF image in a preconfigured directory path
on the server side, as shown in Listing 5.
Listing 5. GIF ÆÄÀÏ »ý¼º Generating the GIF
file
private static String latexCommand = "/usr/bin/latex";
private static String dvipsCommand = "/usr/bin/dvips";
private static String convertCommand =
"/usr/X11R6/bin/convert -antialias -crop 0x0";
// ...
public static synchronized String latex2gif (String path, String mode,
String latexStr) throws Exception {
// Generate root file name and create ".tex" file
// ...
// Get Runtime.
Runtime r = Runtime.getRuntime();
Process p;
File imagePath = new File( path );
// ...
// Run latex in directory "imagePath".
p = r.exec(latexCommand + " " + filename + ".tex", null, imagePath);
if ( p.waitFor() != 0 ) throw new Exception("Error in Latex\n");
// Run dvips in directory "imagePath".
p = r.exec(dvipsCommand + " -o " + filename + ".ps " +
filename + ".dvi", null, imagePath);
if ( p.waitFor() != 0 ) throw new Exception("Error in dvips\n");
// Run convert in directory "imagePath".
p = r.exec(convertCommand + " " + filename + ".ps " +
filename + ".gif", null, imagePath);
if ( p.waitFor() != 0 ) throw new Exception("Error in convert\n");
// ...
}
|
¸¶Áö¸·À¸·Î ¸Þ¼Òµå´Â Listing 6°ú °°ÀÌ ¸ðµç ÁßÀç ÆÄÀÏÀ» »èÁ¦ÇÑ´Ù. .
Listing 6. ÁßÀç ÆÄÀÏ »èÁ¦Çϱâ
f = new File(path + filename + ".tex");
f.delete();
f = new File(path + filename + ".log");
f.delete();
f = new File(path + filename + ".aux");
f.delete();
f = new File(path + filename + ".dvi");
f.delete();
f = new File(path + filename + ".ps");
f.delete();
|
ÀÌÁ¦ ÅÂ±× Çڵ鷯´Â °á°ú·Î ³ª¿À´Â GIF À̹ÌÁö¿¡ ´ëÇÑ <IMG> HTML ű׸¦ ¼¹ö Ãâ·Â
½ºÆ®¸²¿¡ ÀÛ¼º ¼ö ÀÖ´Ù.
Áö±Ý °£·«È÷ ¼³¸íÇÑ ¹æ½ÄÀº °£´ÜÇÏÁö¸¸ ¸Å¿ì ´À¸®°í ¿¡·¯°¡ ³ª±â ½±´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼´Â ¼Ö·ç¼ÇÀÇ ¼º´É°ú
°·Â¼ºÀ» Çâ»ó½ÃÅ°´Â ¹æ¹ý¿¡ °üÇØ ¼³¸íÇÏ°Ú´Ù.
ij½ÌÀ» ÀÌ¿ëÇÑ ¼º´É
Çâ»ó½ÃÅ°±â LaTeX ÀԷ¹®À¸·ÎºÎÅÍ À̹ÌÁö¸¦ »ý¼ºÇÏ´Â ÀýÂ÷´Â ¿©·¯°³ÀÇ ¿ÜºÎ ÇÁ·Î±×·¥ÀÌ
°ü¿©µÇ¾î Àֱ⠶§¹®¿¡ ¼Óµµ°¡ ´À¸®´Ù. À§ ¼½¼Ç¿¡¼ »ìÆ캻 °£´ÜÇÑ ±¸Çö¿¡¼
<SlowMathTag:*> Ä¿ ½ºÅÒ ÅÂ±× Çڵ鷯´Â È£ÃâµÉ ‹š¸¶´Ù »õ·Î¿î
À̹ÌÁö¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù. ÀÌ´Â ¸Å¿ì ºñÈ¿À²ÀûÀÌ´Ù. ¿¹Á¦ ¾ÖÇø®ÄÉÀ̼ǿ¡¼´Â Test01.jsp³» µÎ °³ÀÇ
<SlowMathTag:LatexMath> űװ¡ ´ÜÁö ´Ù¸¥ ¸éÀûÀ¸·Î À̹ÌÁö¸¦
Ç¥½ÃÇϱâ À§ÇØ ¹æ¹®ÀÚ°¡ ÀÖÀ» ¶§¸¶´Ù µ¿ÀÏÇÑ ¼öÇÐ °ø½Ä À̹ÌÁö¸¦ µÎ ¹ø »ý¼ºÇØ¾ß ÇÑ´Ù. ½Ç¼¼°è ¾ÖÇø®ÄÉÀ̼ÇÀº ¿¹Á¦
¾ÖÇø®ÄÉÀ̼Ǻ¸´Ù ÈξÀ º¹ÀâÇÏ°í ºÒÇÊ¿äÇÑ À̹ÌÁö »ý¼ºÀ¸·Î ÀÎÇÑ ¼º´É °úºÎÇÏ°¡ ½É°¢ÇÒ ¼ö ÀÖ´Ù. ¿ì¸® »çÀÌÆ®°¡
µ¿ÀûÀÎ ¼öÇÐ ¿¹Á¦¸¦ Á¦°øÇØ¾ß ÇÏ°í ¸¹Àº ¹æ¹®ÀÚ°¡ µ¿ÀÏÇÑ Å×½ºÆ® ¹®Á¦¸¦ º¸¾Æ¾ß ÇÑ´Ù°í »ó»óÇØ º¸¶ó. µ¿ÀÏÇÑ °ø½ÄÀ»
°¢ ¹æ¹®ÀÚ¿¡ ´ëÇØ µÇÇ®ÀÌÇؼ »ý¼ºÇÏ´Â °ÍÀº ºñ¿ëÀÌ ¸Å¿ì ¸¹ÀÌ µç´Ù.
È®À强 ÀÖ´Â ¼Ö·ç¼ÇÀ» À§ÇØ ¿ì¸®´Â ¿ì¸®°¡ »ý¼ºÇÑ À̹ÌÁö¸¦ ij½¬¿¡ ÀúÀåÇÏ¿© ÇâÈÄ ÇÊ¿äÇÒ ¶§ À̸¦ Àç»ç¿ëÇÒ
ÇÊ¿ä°¡ ÀÖ´Ù. ¿ì¸®´Â LaTeX ÅؽºÆ®¸¦ À̹ÌÁö À̸§¿¡ ´ëÇÑ keys·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ű×
Çڵ鷯°¡ µ¿ÀÏÇÑ LaTeX ÅؽºÆ®¸¦ µÎ¹ø° ¸¸³ª¸é ij½ÌµÈ À̹ÌÁöÀÇ ÆÄÀϸíÀ» ¹ß°ßÇÏ¿© À̸¦ ¹Ù·Î º¸¿©ÁÙ ¼ö ÀÖ´Ù.
LaTex ÅؽºÆ®¿Í À̹ÌÁö À̸§ÀÇ ½ÖÀ» SQL µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇÏ¿© Àå±â º¸°üÇÏ°í ½Å¼ÓÇÑ °Ë»öÀ» ÇÒ ¼öÀÖ´Ù.
ij½¬¿¡ ÀúÀåµÈ À̹ÌÁö¿¡ ¾×¼¼½ºÇÏ´Â °ÍÀº ¿©·¯ ´Ù¸¥ ¹üÁÖÀÇ µ¥ÀÌÅͺ£À̽º ¾×¼¼½º JavaBeansÀ» »ç¿ëÇØ ´õ
Á¶À²µÉ ¼öÀÖ´Ù. ±×·¯ÇÑ Æ©´×Àº ÀÌ ±ÛÀÇ ¹üÀ§¸¦ ¹þ¾î³ªÁö¸¸, µ¶ÀÚ¿¡°Ô´Â ¸Å¿ì Èï¹ÌÀÖ´Â ¿¬½ÀÀÌ µÉ °ÍÀÌ´Ù.
¿©±â¼ ¿ì¸®´Â ij½ÌµÈ À̹ÌÁö¸¦ ÅÂ±× Çڵ鷯 helper Ŭ·¡½º¿¡ Á¤ÀûÀÎ µ¥ÀÌÅÍ ¸â¹ö·Î ÀúÀåÇÒ °ÍÀÌ´Ù.
±×·¯ÇÑ Á¤Àû µ¥ÀÌÅÍ ¸â¹ö´Â JSP ¼¹ö ÄÁÅ×ÀÌ³Ê¿Í µ¿ÀÏÇÑ ¼ö¸íÁֱ⸦ °¡Áø´Ù. À¥ »çÀÌÆ®¸¦ º¯°æÇÏ°í ¼¹ö¸¦
À籸µ¿½ÃÅ°¸é ÀÌÀü ij½¬¸¦ Æ÷±âÇØ¾ß ÇÑ´Ù. ij½ÌµÈ LaTeX ±¸¹®°ú À̹ÌÁö À̸§Àº µÎ°³ÀÇ Á¤ÀûÀÎ º¤ÅÍ¿¡ ÀúÀåµÈ´Ù.
ÅÂ±× Çڵ鷯°¡ LaTeX ±¸¹®À» ¸¸³ª¸é ij½¬µÈ LaTeX ±¸¹® º¤Å͸¦ ¹Ýº¹ °Ë»öÇÑ´Ù. ÀÏÄ¡µÇ´Â °ÍÀ» ãÀ¸¸é
´ëÀÀµÇ´Â À̹ÌÁö À̸§À» ¹ÝȯÇÑ´Ù. ÀÏÄ¡µÇ´Â °ÍÀÌ ¾øÀ¸¸é »õ·Î¿î °ø½Ä À̹ÌÁö¸¦ »ý¼ºÇÏ°í, »õ·Î¿î LaTeX
±¸¹®/À̹ÌÁö ½ÖÀ» ij½¬¿¡ ÀúÀåÇÑ´Ù. Listing 7¿¡ ÀÌ ¹æ½ÄÀÌ ³ª¿Í ÀÖ´Ù.
Listing 7. MathUtil.getImage()
public static synchronized String getImage (String path, String mode,
String latexStr) throws Exception {
// Formatted string stored in the latexStrVec vector.
String comp = "MODE=" + mode + "\nLaTeX=" + latexStr.trim();
// Iterate through the "latexStrVec" cache and check if any
// element matches the input string and mode.
for (int i = 0; i < latexStrVec.size(); i++) {
String l = (String) latexStrVec.elementAt(i);
if ( comp.equals(l) ) {
// Return the cached image name if a match is found.
return (String) imageNameVec.elementAt(i);
}
}
// If no match is found, generate a new image
// and store it in the cache.
return storeImage(mode, latexStr, latex2gif(path, mode, latexStr) );
}
|
Test02.html°ú Test02.jsp´Â <MathTag:*> ű׿¡
´ëÇØ Ä³½¬·Î ¼º´ÉÇâ»óµÈ ÅÂ±× Çڵ鷯¸¦ »ç¿ëÇÑ´Ù. À̸¦ ½ÃÇèÇØ º¸°í
<SlowMathTag:* > ű׿¡ ºñÇØ ¼º´É Çâ»óÀ» °æÇèÇØ º¸¶ó.
ÁßÀç ÆÄÀÏ ÁÙÀ̱â
Áö±Ý±îÁö »ìÆì ºÃµíÀÌ, À¯Æ¿¸®Æ¼ ÇÁ·Î±×·¥µéÀº ¼Óµµ°¡ ´À¸° µð½ºÅ© ÆÄÀÏÀ» »ç¿ëÇØ »óÈ£
Åë½ÅÇÏ¸ç ¿ì¸®´Â ¸¶Áö¸·¿¡ ¸ðµç ÁßÀç ÆÄÀÏÀ» »èÁ¦ÇØ¾ß ÇÑ´Ù. ±×·¯ÇÑ ÁßÀç ÆÄÀϵéÀº ºÒÇÊ¿äÇÑ °úºÎÇϸ¦ ¸¸µé¾î³¾ »Ó
¾Æ´Ï¶ó µð½ºÅ©¿Í ÆÄÀÏ ½Ã½ºÅÛÀÇ ¿¡·¯¸¦ ³»±â ½±´Ù. Unix/Linux ½Ã½ºÅÛ¿¡¼ ¿ì¸®´Â ´Ù¸¥ ÇÁ·Î±×·¥µéÀÇ ÀԷ°ú
Ãâ·ÂÀ» ¿¬°á½ÃÅ°°í ÁßÀç ÆÄÀÏÀÇ Çʿ伺À» ºÎºÐÀûÀ¸·Î ¾ø¾Ö±â À§ÇØ ÆÄÀÌÇÁ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÚ¹Ù ·±Å¸ÀÓÀº Unix
ÆÄÀÌÇÁ¸¦ Á÷Á¢ Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ Listing 8¿¡¼¿Í °°ÀÌ À̵éÀ» ½©¿¡¼ ºÒ·¯¿Í¾ß ÇÑ´Ù.
Listing 8. ÆÄÀÌÇÁ·Î ¿¬°áµÈ ÀÔ·Â/Ãâ·ÂÀ» »ç¿ëÇØ ¸í·É¾î È£ÃâÇϱâ
String convertCommand = "/usr/X11R6/bin/convert -antialias -crop 0x0";
String dvipsCommand = "/usr/bin/dvips";
// ...
Process p = Runtime.getRuntime().exec(
new String[] {
"/bin/sh",
"-c",
dvipsCommand + " -f < " + filename + ".dvi | " +
convertCommand + " - " + filename + ".gif"
},
null,
imagePath
);
|
±×·¯³ª LaTeX ÇÁ·Î±×·¥Àº Ç¥ÁØ ÀÔ·Â/Ãâ·Â ÆÄÀÌÇÁ¸¦ Áö¿øÇÏÁö ¾Ê°í Dvips´Â ÀÔ·ÂÀ» °Ë»öÇÒ ¼ö ÀÖµµ·Ï
¿ä±¸ÇÑ´Ù (Áï ÆÄÀÌÇÁ¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù.). µû¶ó¼ ¿ì¸®´Â ¿©ÀüÈ÷ .tex¿Í .dvi ÁßÀç ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù.
ÀÌ ¹æ½ÄÀº Unix¿¡¼¸¸ ÀÛµ¿ÇÏ°í ¸ðµç ÁßÀç ÆÄÀÏÀ» Á¦°ÅÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÇÊÀÚ´Â ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼ ÀÌ
¹æ½ÄÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼´Â ÈξÀ ´õ ÀϹÝÀûÀÌ°í È¿°úÀûÀÎ ¹æ½ÄÀ» ¼³¸íÇÏ°Ú´Ù.
¿ÜºÎ ¾ÖÇø®ÄÉÀ̼ǿë ÀÚ¹Ù
API
À§¿¡¼ ¼öÇàÇßµíÀÌ °³º°ÀûÀÎ ÀÚ¹Ù ·±Å¸ÀÓ ÇÁ·Î¼¼½º·Î µ¶¸³Çü ÀÚ¹Ù ÇÁ·Î±×·¥À» È£ÃâÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù. ±×·¯³ª
ÀÌ ¹æ½ÄÀº ¿ì¸®°¡ ÀÌ¹Ì º»´ë·Î ÁßÀç ÆÄÀÏ ¹®Á¦¸¸ ÇØ°áÇÏÁö ¸øÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù.; º¹ÀâÇÑ ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ǰúµµ Àß
ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. ¿ÜºÎ ÇÁ·Î±×·¥À» °èÃþÀûÀÎ Àڹ٠Ŭ·¡½º ¾ÆÅ°ÅØó¿¡ ½±°Ô ÅëÇÕÇÒ ¼ö ¾ø´Ù.
LaTeX¿Í À̹ÌÁö º¯È¯ À¯Æ¿¸®Æ¼ ±â´ÉÀ» ÀÚ¹Ù ÇÁ·Î±×·¥¿¡¼ Á÷Á¢ È£ÃâÇÏ°í ÀÚ¹Ù in-memory ¹öÆÛ¸¦
ÇÁ·Î¼¼½º°£ µ¥ÀÌÅ͸¦ ±³È¯Çϴµ¥ »ç¿ëÇÏ¸é º¸´Ù ½Å¼ÓÇÏ°í Áö¼Ó¼º ÀÖ´Â Äڵ带 »ý¼ºÇÒ ¼ö ÀÖ´Ù. À̸¦ À§Çؼ´Â ÀÌ
±â´Éµé¿¡ ¾×¼¼½ºÇÏ´Â ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö API°¡ ÇÊ¿äÇÏ´Ù.
ºñ ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ ÀÚ¹Ù API¸¦ »ý¼ºÇÏ´Â ÇÑ°¡Áö Ç¥ÁØÀûÀÎ ¹æ¹ýÀº Java Native
Interface (JNI)¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. JNI¸¦ »ç¿ëÇÏ·Á¸é ºñ ÀÚ¹Ù ¾ÖÇø®ÄÉÀ̼ÇÀ» »õ·Î¿î ÀÚ¹Ù ÀνÄ
Çì´õ·Î ÀçÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù. Áö±Ý±îÁö ¾ð±ÞÇÑ ¸ðµç ¼öÇÐ µµ±¸µéÀº ¿ÀÇ ¼Ò½º ÇÁ·ÎÁ§Æ®¿¡¼ ³ª¿Â °ÍÀÌ°í µû¶ó¼ ¼Ò½º
Äڵ带 ¹Þ¾Æ ÀçÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù. ¿ì¸®´Â µµ±¸°¡ ÆÄÀϺ¸´Ù´Â ÀÔ·Â/Ãâ·Â ¹öÆÛ¸¦ Çڵ鸵ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ ¼Ò½º
ÄÚµåÀÇ ÀÔ·Â/Ãâ·Â ºÎºÐÀ» ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù. »ç½Ç JMagick°ú °°ÀÌ JNI ÀÚ¹Ù API¸¦ ImageMagick
¶óÀ̺귯¸®¿¡ Ãß°¡Çϱâ À§ÇÑ ½Ãµµ°¡ ÀÌ¹Ì ÀÖ¾ú´Ù. (ResourcesÂüÁ¶)
¸ðµç ¼öÇÐ Åø¿¡ ´ëÇÑ JNI API¸¦ ¸¸µå´Â °ÍÀº ÀÌ ±ÛÀÇ ¹üÀ§¸¦ ¹þ¾î³´Ù. ±×·¯³ª ¿©·¯ºÐÀÌ º¹ÀâÇÑ ÀÚ¹Ù
¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇØ ÀÌ¿Í °°Àº ¾ÆÅ°ÅØó ±¸ÇöÀ» °í·ÁÇÏ°í ÀÖ´Ù¸é ÀÌ ¹æÇâÀ¸·Î ¿òÁ÷ÀÌ´Â °ÍÀ» °ËÅäÇÏ°í ½ÍÀ» °ÍÀÌ´Ù.
JNI¿¡ °üÇÑ »ó¼¼ Á¤º¸´Â ¾Æ·¡ÀÇ Âü°í
ÀÚ·á ¼½¼ÇÀ» ÂüÁ¶ÇÑ´Ù.
°á·Ð º» ±â»ç¿¡¼
¿©·¯ºÐÀº JSP Ä¿½ºÅÒ Å±׸¦ »ç¿ëÇØ LaTeX À¯ÇüÀÇ ÅؽºÆ®¸¦ ¼öÇÐÀû À̹ÌÁö·Î º¯È¯ÇÒ ¶§ÀÇ È¿À²¼ºÀ» Áõ´ë½ÃÅ°´Â
¸î°¡Áö ±â¹ý¿¡ ´ëÇØ ¹è¿ü´Ù. ÀÌ ¹æ½ÄÀº XSLT¿Í
°°Àº ¿©Å¸ °í±Þ ÄÁÅÙÃ÷ °ü¸® ±â¼ú¿¡ ´ëÇÑ ÀÚ¹Ù È®ÀåÀÚ¸¦ »ý¼ºÇϴµ¥µµ ½±°Ô È®ÀåµÉ ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº ¿©·¯ºÐÀÌ
¼öÁ¤Çؼ ÀÚ½ÅÀÇ À¥ »çÀÌÆ®¿¡ ÅëÇÕÇÒ ¼ö ÀÖ´Â ´Ù¸¥ Åøµé¿¡ ¾î¶² °ÍÀÌ ÀÖ´ÂÁö¸¦ °ËÅäÇØ¾ß ÇÑ´Ù. ¿©±â¼ °£·«È÷
¼³¸íÇÑ ±â¹ýµé·Î ¿ì¸®´Â ÀÌÁ¦ dzºÎÇÑ ¼öÇÐ ÄÁÅÙÃ÷¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â °í±Þ À¥ »çÀÌÆ®¸¦ ¸¸µé ¼ö ÀÖ´Â µµ±¸¸¦ °¡Áö°Ô
µÇ¾ú´Ù.
Âü°í ÀÚ·á
- "Introduction to JSP technology" : Noel J.
Bergman, developerWorks, August 2001, JSPÀÇ ¹è°æ
- "Take control of your JSP pages with custom
tags," : Jeff K. Wilson, Ä¿½ºÅÒ ÅÂ±× ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ ÈξÀ º¹ÀâÇÑ ·ÎÁ÷À»
JSP¿¡ Ãß°¡ÇÏ°í µ¥ÀÌÅÍ È¸é Ãâ·Â¿¡ ´ëÇÑ Á¦¾î·ÂÀ» ³ôÀÌ°í űװ£¿¡ µ¥ÀÌÅ͸¦ °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ¹æ¹ý¿¡
°üÇÑ »ó¼¼ ¼³¸í
- Web Development with JavaServer Pages, 2nd
Edition, : D. K. Fields, M. A. Kolb¿Í Shawn Bayern
(Manning Publications, 2001), JSP¿¡ °üÇÑ °ÅÀÇ ¸ðµç »çÇ×À» ´Ù·ë
- JSP Tag Libraries : Gal Shachor, Adam
Chace¿Í Magnus Rydin (Manning Publications, 2001, JSP Ä¿½ºÅÒ Å±×
¶óÀ̺귯¸®¸¦ ¼³°èÇÏ°í ±¸ÇöÇÏ´Â ¹æ¹ý¿¡ °üÇÑ ÈǸ¢ÇÑ ¿¹Á¦¿Í ¼³¸í Á¦°ø
- "JSP taglibs: Better usability by design":
Noel J. Bergma, developerWorks, December 2001, JSP Ä¿½ºÅÒ ÅÂ±× ¼³°è
¹®Á¦
- JSP Ä¿½ºÅÒ Å±׸¦ VisualAge for Java¿Í WebSphere
Studio¿¡ °áÇÕ½ÃÅ°´Â ¹æ¹ý WebSphere Developer Domain
µµ±¸
- LaTeX ÇÁ·ÎÁ§Æ® ȨÆäÀÌÁö
- ImageMagick À̹ÌÁö ó¸® µµ±¸
- JMagick, ImageMagick Java APIÀÎ JMagick¿¡ °üÇÑ
ÀÛ¾÷
- Textogif Tex/Æ÷½ºÆ®½ºÅ©¸³Æ® ÆÄÀÏÀ» ¾î¶² ÇØ»óµµÀÇ GIF À̹ÌÁö·Îµµ
º¯È¯
Java Native Interface.
|