·Î±×ÀÎ | ȸ¿ø°¡ÀÔ (´º½º·¹ÅͽÅû) | SITEMAP
   
  °³¹ß   Ç÷§Æû   ½Ã½ºÅÛ   ¸Å´ÏÁö¸ÕÆ®   Àüü±â»ç  
ÀÚ¹Ù
´å³Ý
C/C++
DB
¸ðµ¨¸µ
À¥°³¹ß
±âŸ
À¯´Ð½º/¸®´ª½º
À©µµ¿ì
±âŸ
¼­¹ö
³×Æ®¿öÅ©
º¸¾È
±âŸ
BM
PM
±âŸ
 
±â»çÀúÀå
0
 
¸¶ÀÌ ½ºÅ©·¦
[ÆÄÀÌ¾îÆø½ºÀÇ ´ëÇ×ÇØ] ¨ê ½ÇÀü! È®Àå±â´É °³¹ß

±è°í¸í (¿µ¹®Çеµ)   2005/04/27
¿¬Àç¼ø¼­
1. À¥ ºê¶ó¿ìÀú Çõ¸í±º, ÆÄÀÌ¾îÆø½º
2. IE °³¹ßÀÚ ½Ã°¢À¸·Î º» ÆÄÀÌ¾îÆø½º °³¹ß Ç÷§Æû
3. ÆÄÀÌ¾îÆø½º, ±× ¾È¿¡ ¼ûÀº ´õ Å« °¡´É¼º
4. LiveLines·Î ½ÃÀÛÇÏ´Â ÆÄÀÌ¾îÆø½º È®Àå±â´É °³¹ß
5. ÆÄÀÌ¾îÆø½º È®Àå±â´É º£½ºÆ® 5
6. ÃÖÈÄÀÇ ¹Ì¼Ç! ¾×ƼºêX¸¦ ³Ñ¾î¶ó
[Áöµð³ÝÄÚ¸®¾Æ]ÆÄÀÌ¾îÆø½ºÀÇ °¡Àå Å« ÀåÁ¡ °¡¿îµ¥ Çϳª´Â ¡®È®Àå±â´É¡¯ÀÌ´Ù. ¿©±â¼­´Â ÀÌ È®Àå±â´ÉÀÌ ¾î¶»°Ô ¸¸µé¾îÁö´ÂÁö ±¸Á¶¿Í Á¦ÀÛ ¹æ¹ýÀ» °£·«ÇÏ°Ô »ìÆì º¸°í, LiveLines¶ó´Â ÆÄÀÌ¾îÆø½º¿ë RSS È®Àå±â´ÉÀ» Á÷Á¢ °³¹ßÇØ º»´Ù. ¶ÇÇÑ À¥ Ç¥ÁØ ±â¼ú¿¡ Ãæ½ÇÇÑ °³¹ß Ç÷§Æû¿¡¼­ ½ÇÇàµÇ´Â µ¶¸³ÀûÀÎ °æ·® ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î¼­ È®Àå±â´ÉÀ» ÀçÁ¶¸íÇØ º»´Ù.

ÈçÈ÷ »ç¿ëÇÏ´Â ³ëÆ® ÆÐµå, °è»ê±â °°Àº ÇÁ·Î±×·¥À» °³¹ßÇÏ·Á¸é C/C++¸¦ ÀÍÈ÷°Å³ª ¾î·Á¿î °³¹ß µµ±¸¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °æ¿ì°¡ ¸¹´Ù. ƯÈ÷ À¥ ºê¶ó¿ìÀúÀÇ ºÎ°¡ ±â´É °³¹ß¿¡ »ç¿ëµÇ´Â ÀÀ¿ë ¾ÖÇø®ÄÉÀ̼Ç(rich internet application)Àº ÀÎÅÍ³Ý ÀͽºÇ÷η¯ Áß½ÉÀÇ ¾×ƼºêX ±â¼ú¿¡ ±¹ÇѵŠÀü¹® ÇÁ·Î±×·¡¸Ó°¡ ¾Æ´Ï¸é °³¹ßÇϱⰡ ¸¸¸¸Ä¡ ¾Ê¾Ò´Ù.

¹Ý¸é ÆÄÀÌ¾îÆø½º¿¡¼­ ºÎ°¡ ±â´ÉÀ» Á¦°øÇÒ ¼ö ÀÖ´Â È®Àå±â´É(extensions)Àº À¥À» ±¸¼ºÇÏ´Â ±âº» Áö½Ä°ú Ç¥ÁØ À¥ ±â¼ú ¸î °¡Áö¸¸ ÀÍÈ÷¸é °£´ÜÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù. È®Àå±â´ÉÀÇ ¼Ò½º´Â ¾ÐÃุ Ç®¸é ÅØ½ºÆ® ¿¡µðÅÍ·Î ¹Ù·Î ¿­¾î º¼ ¼ö ÀÖ°í, °¡º±°í Å©±â°¡ ÀÛ¾Æ ½±°Ô ´Ù¿î·ÎµåÇØ ¼³Ä¡, »ç¿ëÇÒ ¼ö ÀÖ°í, ¹öÀüÀÌ ¾÷±×·¹À̵åµÇ¸é ¾÷µ¥ÀÌÆ®µµ ÀÚµ¿À¸·Î Áö¿øÇÑ´Ù.

½ÇÁ¦·Î HTML, CSS, ÀÚ¹Ù ½ºÅ©¸³Æ® µî ÅØ½ºÆ® ±â¹ÝÀÇ °£°áÇϸ鼭µµ ÀÌÇØÇϱ⠽¬¿î À¥ ÀúÀÛ ¹æ¹ýÀº À¥À» ¼ºÀå½ÃŰ´Â µ¥ ¿øµ¿·ÂÀ̾ú´Ù. °£ÆíÇÑ °³¹ß°ú »ç¿ë¹ý¿¡ ºñÇØ ¸Å¿ì °­·ÂÇÑ ±â´ÉÀ» Áö¿øÇØ ÀÀ¿ë ¹üÀ§°¡ Åø¹Ù¿Í °Ë»ö ±â´É, À¥ »çÀÌÆ® Áö¿ø µîÀ» ¸ðµÎ ¸Á¶óÇϰí ÀÖ´Ù.

È®Àå±â´ÉÀÇ ±¸Á¶ ¶â¾îº¸±â
È®Àå±â´ÉÀ» ±¸¼ºÇÏ´Â ¿ä¼Ò´Â <¸®½ºÆ® 1>°ú °°´Ù. ÀϹÝÀûÀ¸·Î CSS, ÀÚ¹Ù ½ºÅ©¸³Æ®¸¦ ºñ·ÔÇØ XML ±â¹Ý À¯Àú ÀÎÅÍÆäÀ̽º ±¸Çö ¾ð¾îÀÎ XUL, ÀÚ·á¿Í ³»¿ë ±¸Á¶¸¦ ¼³¸íÇÏ´Â À¥ Ç¥ÁØÀÎ RDF·Î ±¸¼ºµÇ¸ç, ¿©±â¿¡ ¿ÜºÎ ¶óÀ̺귯¸®¿Í ¿¬°áÀ» ´ã´çÇÏ´Â XPCOM°ú ³×Æ®¿öÅ© ¿¬°áÀ» À§ÇÑ SOAP, XML-RPC, XMLHTTP µîÀ» Áö¿øÇÑ´Ù. ½ÉÁö¾î ÆÄÀ̽ã(Python), ÆÞ(Perl), ·çºñ(Ruby)°°Àº ½ºÅ©¸³Æ® ¾ð¾î¿¡ ´ëÇÑ ¹ÙÀεùµµ Áö¿øÇÑ´Ù.
 <¸®½ºÆ® 1> È®Àå ±â´ÉÀÇ ±âº» ±¸Á¶

È®Àå±â´ÉÀÇ µð·ºÅ丮 ±¸Á¶´Â ¸ðÁú¶ó³ª ÆÄÀÌ¾îÆø½º ºê¶ó¿ìÀúÀÇ °Í°ú °ÅÀÇ ¶È°°´Ù. ºê¶ó¿ìÀú ³»¿¡ ÀÖ´Â °Íó·³ UI ¿ä¼Ò(content), ½ºÅ² ȤÀº Å׸¶¿Í °°Àº ¿Ü¾ç(skin), ´Ù±¹¾î Áö¿ø(locale) µîÀ¸·Î ³ª´²Áö´Â µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀϵéÀ» ¸ð¾Æ¼­ XPI¶ó´Â ¾ÐÃà ÆÄÀÏ ÇüÅ·ΠÁ¦°øµÈ´Ù. ¿©±â¿¡ È®Àå±â´ÉÀÇ °¢ µð·ºÅ丮 ³»¿ëÀ» ¼³¸íÇÏ´Â RDF ÆÄÀϰú ¼³Ä¡ ÆÄÀÏ µîÀÌ Ãß°¡µÅ ÀÖ´Ù. ½ÇÁ¦·Î ÆÄÀÌ¾îÆø½º ÇÁ·Î±×·¥ Æú´õÀÇ chrome/browser.xpi °°Àº ÇÁ·Î±×·¥À» À©Áý µîÀ¸·Î Ç®¾îº¸¸é ÀÌ·¯ÇÑ ±¸Á¶¿Í ¶È°°ÀÌ ±¸¼ºµÇ¾î ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº È®Àå±â´Éµµ ¸ðÁú¶óÀÇ °øÅë °³¹ß Ç÷§ÆûÀ» ±âÃÊ·Î Çϰí Àֱ⠶§¹®ÀÌ´Ù.

È®Àå±â´ÉÀÇ Àüü ±¸Á¶¸¦ ¼³¸íÇÏ´Â RDF
È®Àå±â´ÉÀ» ¸¸µå´Â ù¹øÂ° ´Ü°è´Â <¸®½ºÆ® 1>°ú °°Àº µð·ºÅ丮 ±¸Á¶¸¦ ±¸¼ºÇÏ´Â °ÍÀÌ´Ù. (¸¶Áö¸·¿¡ ¸¸µé±âµµ ÇÏÁö¸¸) À̸¦ ¼³¸íÇÏ´Â °ÍÀÌ ¹Ù·Î <¸®½ºÆ® 2>ÀÇ install.rdf ÆÄÀÏÀÌ´Ù

 <¸®½ºÆ® 2> È®Àå±â´ÉÀÇ Àüü ±¸Á¶¸¦ ¼³¸íÇÏ´Â RDF

<description> ºÎºÐ¿¡´Â È®Àå±â´É¿¡ ´ëÇÑ Á¦ÀÛÀÚ, ¹èÆ÷ URL, ÇÁ·Î±×·¥¸í, ¹öÀü µî ±âº» ¼³¸íÀÌ ´ã±â´Âµ¥, ÀÌ °¡¿îµ¥ <em:id> ºÎºÐÀº È®Àå±â´ÉÀ» °íÀ¯ÇÏ°Ô ³ªÅ¸³»´Â Ŭ·¡½º ¾ÆÀ̵𸦠Àû¾î¾ß ÇÑ´Ù. ÀÌ Å¬·¡½º ¾ÆÀ̵ð´Â Guidgen(www.microsoft.com/downloads/details.aspx?FamilyId=94551F58-484F-4A8C-BB39-ADB270833AFC)À̶ó´Â ÇÁ·Î±×·¥À» »ç¿ëÇÏ¸é µÈ´Ù. <em:targetApplication>¿¡´Â ÆÄÀÌ¾îÆø½º¿¡ ´ëÇÑ ±âº» Á¤º¸°¡ µé¾î°£´Ù. ¼³Ä¡µÉ ÇÁ·Î±×·¥ÀÌ ÆÄÀÌ¾îÆø½ºÀÎÁö ½ã´õ¹öµåÀÎÁö¿¡ µû¶ó¼­ Ŭ·¡½º ¾ÆÀ̵ð¿Í ¹öÀü Á¤º¸¸¦ ³Ö¾î ÁÖ¸é µÈ´Ù. ¸¶Áö¸·À¸·Î <em:file> ºÎºÐ¿¡¼­ ¼³Ä¡µÉ chrome µð·ºÅ丮ÀÇ jar ÆÄÀϸíÀ» ³Ö¾î ÁØ´Ù.

ÀÌÁ¦ °¢ µð·ºÅ丮¿¡ Æ÷Ç﵃ Á¤º¸¸¦ ±â¼úÇÏ´Â RDF ÆÄÀÏÀÎ contents.rdf ÆÄÀÏ¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. contents.rdf ÆÄÀÏÀº ÆÄÀÏÀÌ Æ÷ÇԵǾî ÀÖ´Â ¸ðµç µð·ºÅ丮¿¡ ¼³Ä¡µÇ´Â °ÍÀÌ ±âº»ÀÌ´Ù.

 <¸®½ºÆ® 3> µð·ºÅ丮¿¡ Æ÷Ç﵃ Á¤º¸¸¦ ±â¼úÇÏ´Â contents.rdf

<¸®½ºÆ® 3>ó·³ ÇÁ·Î±×·¥ ÆÐŰÁö¿¡ ´ëÇÑ Á¤º¸¿Í È®Àå±â´É¿¡¼­ óÀ½À¸·Î ½ÇÇàÇÒ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§ »ç¿ëÇÏ´Â chrome:// ÇÁ·ÎÅäÄÝÀº È®Àå±â´ÉÀÌ »ç¿ëÇÒ ÆÄÀÏÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ ±â¼úÇÏ¸é ÆÄÀÏÀÇ ½ÇÁ¦ °æ·Î´Â È®Àå±â´É ÆÄÀÏÀÎ simple.xpi ³»ÀÇ chrome µð·ºÅ丮ÀÇ simple.jar¿¡ ÀÖ´Â content/simpleOverlay.xul°¡ µÈ´Ù.

<RDF:li>chrome://simple/content/simpleOverlay.xul</RDF:li>

À¯Àú ÀÎÅÍÆäÀ̽º¿Í ±â´É ±¸Çö
½ÇÁ¦ ºê¶ó¿ìÀú¿¡¼­ Ç¥ÇöµÇ´Â À¯Àú ÀÎÅÍÆäÀ̽º´Â XUL·Î Ç¥ÇöÇÑ´Ù. XUL°ú ÀÚ¹Ù ½ºÅ©¸³Æ®ÀÇ ¼ÂÆ®·Î ±¸¼ºµÇ´Âµ¥, <¸®½ºÆ® 4>°¡ ¹Ù·Î simple.xul ÆÄÀÏ ¿¹Á¦ÀÌ´Ù.

¿©±â¿¡´Â <È­¸é 1>ó·³ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇßÀ» ¶§ ³ªÅ¸³ª´Â ¸Þ´º¿Í ºê¶ó¿ìÀúÀÇ µµ±¸(tool) ¸Þ´º¿¡ °¢°¢ ¡®Hello, wolrd!¡¯¶ó´Â ¸Þ´º¸¦ Ãß°¡ÇÏ´Â ³»¿ëÀÌ µé¾î ÀÖ°í, ÀÌ ¸Þ´º¸¦ Ŭ¸¯Çϸé simpleOverlay.js ÆÄÀÏ ¾È¿¡ ÀÖ´Â hello() ÇÔ¼ö¸¦ ½ÇÇàÇϵµ·Ï µÅ ÀÖ´Ù. Simple.js ÆÄÀÏ¿¡´Â ´ÙÀ½°ú °°Àº °£´ÜÇÑ Äڵ尡 µé¾î ÀÖ´Ù. hello() ÇÔ¼ö´Â Hello, world!¶ó´Â ±ÛÀÚ¸¦ °æ°íâ ÇüÅ·Πȭ¸é¿¡ ¶ç¿öÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù.

function hello() {
    alert("Hello, world!");
}

<È­¸é 1> simpleOverlay.xulÀ» ½ÇÇàÇÑ °æ¿ìÀÇ UI Ç¥½Ã

 <¸®½ºÆ® 4> À¯Àú ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â XUL ÆÄÀÏ

¸¸¾à XUL ÆÄÀÏ ³»¿¡ ÀÖ´Â ¿ä¼Ò¿¡ ½ºÅ¸ÀÏÀ» »ç¿ëÇÏ·Á¸é CSS ¼Ó¼º ȤÀº CSS ÆÄÀÏÀ» ÀÌ¿ëÇÏ¸é µÈ´Ù. ´ÙÀ½Àº skin/classic/simple ¹Ø¿¡¼­ CSS ÆÄÀÏÀ» ã´Â °æ¿ì´Ù.

<?xml-stylesheet href="chrome://simple/skin/simple.css"
type="text/css"?>

CSS ÆÄÀÏ¿¡ ÀÖ´Â ¼Ó¼ºÀ» »ç¿ëÇϰųª ¹Ù·Î ½ºÅ¸ÀÏ ¼Ó¼ºÀ» »ç¿ëÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÏ¸é µÈ´Ù. ¿©±â¼­ º¼¼ö ÀÖµíÀÌ class="url"À̶ó´Â ¼Ó¼ºÀ» simple.css¿¡¼­ ãÀ» ¼ö ÀÖÀ¸¸ç, style="font-weight: bold;"¶ó´Â ±¸¹®À» ³Ö¾î Á÷Á¢ ½ºÅ¸ÀÏÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. ±×¸²À» Ç¥ÇöÇÏ°í ½ÍÀ¸¸é skin/classic/simple/hello.png¿¡¼­ ÆÄÀÏÀ» Àоî¿Â´Ù.

<window title="Hello, World Title">
<vbox>
<text value="Created By:" style="font-weight: bold;"/>
    <text value="Tester" class="url"
        onclick="window.open('http://hello.com'); window.close();"/>
</vbox>
<spring flex="1"/>
<image src="chrome://simple/skin/hello.png"/>
</window>

¸¸¾à hello, world °°Àº ¹®±¸¸¦ ¡°¾È³ç¡±, ¡°ª³ªóªËªÁªÏ¡±À̶ó´Â ´Ù±¹¾î·Î Ç¥ÇöÇϰíÀÚ ÇÑ´Ù¸é localeÀ̶ó´Â µð·ºÅ丮¸¦ »ç¿ëÇÑ´Ù. locale¿¡ ¡®¾ð¾îÄÚµå-±¹°¡Äڵ塯 ÇüÅÂÀÇ µð·ºÅ丮¸¦ ¸¸µé°í »ç¿ëÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. ¿¹¸¦ µé¾î Çѱ¹Àº ko-KR, ¹Ì±¹Àº en-US, ÀϺ»Àº ja-JP µîÀÌ´Ù. ÀÌ ¶§ ¸ðÁú¶ó³ª ÆÄÀÌ¾î Æø½º´Â ºê¶ó¿ìÀúÀÇ ¾ð¾î ¹öÀü ȤÀº »ç¿ëÀÚ°¡ ¼³Á¤ÇÑ ¾ð¾î locale¿¡ µû¶ó ´Ù¸¥ ¾ð¾î·Î ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÏ°Ô µÈ´Ù.

locale¿¡ ¸Þ½ÃÁö¸¦ Ç¥ÇöÇÏ´Â ÆÄÀÏÀº °¢±¹ ¾ð¾î¸¦ Á¦´ë·Î Ç¥ÇöÇϱâ À§ÇØ À¯´ÏÄڵ带 »ç¿ëÇØ¾ß ÇÑ´Ù. XUL¿¡¼­ »ç¿ëµÇ´Â ¸Þ½ÃÁö Ç¥ÁØÀÎ .dtd ÆÄÀÏÀº ¹®ÀÚ ÀÎÄÚµùÀ» BOM Äڵ尡 µé¾î ÀÖÁö ¾Ê´Â UTF-8·Î ¼³Á¤ÇØ¾ß Çϸç, properties ÆÄÀÏÀº À¯´ÏÄÚµå Ç¥Çö¹æ½ÄÀ» \uXXXX·Î ¼³Á¤ÇÑ ÈÄ ÀúÀåÇØ¾ß ÇÑ´Ù(À©µµ¿ìÀÇ ³ëÆ® ÆÐµå´Â UTF-8 ÀÎÄÚµù¿¡ BOMÀÌ Æ÷ÇԵǹǷΠÁÖÀÇÇØ¾ß ÇÑ´Ù. Unired ¹®¼­ ÆíÁý±â¸¦ »ç¿ëÇÏ´Â °ÍÀ» ±ÇÇÑ´Ù).

<!ENTITY hello.title "Hello, World Title">
<!ENTITY hello.createdby "Created By">

¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ simple.dtd ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ.

<!DOCTYPE dialog SYSTEM "chrome://simple/locale/simple.dtd">
<window title="&hello.title;">
<vbox>
<text value="&hello.createby" style="font-weight: bold;"/>
</vbox>
</window>

ÀÌÁ¦ Contents Æú´õ ¾Æ·¡ÀÇ contents, skin, locale µîÀÇ ÆÄÀϵéÀ» simple.jar·Î ¹­°í install.rdf¿Í ¾ÐÃàÇØ simpe.xpi·Î ¸¸µå´Â °ÍÀ¸·Î, ¿À¸¥ÂÊ Å¬¸¯ ¸Þ´º¿¡ Hello world âÀ» ¶ç¿ì´Â °£´ÜÇÑ È®Àå±â´ÉÀ» ¿Ï¼ºÇÒ ¼ö ÀÖ´Ù.

¸¶Áö¸· °úÁ¤Àº ¼³Ä¡ ½ºÅ©¸³Æ®´Ù. ¸ðÁú¶ó 1.x ¹öÀü°ú ÆÄÀÌ¾îÆø½º 0.8 ÀÌÇÏ ¹öÀüÀº RDF ±â¹ÝÀÇ ¼³Ä¡ ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇÏÁö ¾Ê°í <¸®½ºÆ® 4>¿Í °°ÀÌ ÀÚ¹Ù ½ºÅ©¸³Æ® ±â¹ÝÀÇ XPInstall ±â´ÉÀ» »ç¿ëÇÑ´Ù.

 <¸®½ºÆ® 5> ÀÚ¹Ù ½ºÅ©¸³Æ® ±â¹ÝÀÇ XPInstall

È®Àå±â´ÉÀ» À§ÇÑ ¸î °¡Áö ÆÁ  
È®Àå±â´ÉÀ» Àß ¸¸µé±â À§ÇÑ °¡Àå ÃÖÀûÀÇ ¹æ¹ýÀº ±âÁ¸ÀÇ È®Àå±â´ÉÀ» Àß ºÐ¼®ÇØ ³ª¸¸ÀÇ ºñ¹ýÀ» ½×¾Æ °¡´Â °ÍÀÌ´Ù. ¸ðÁú¶ó ¾÷µ¥ÀÌÆ®(update.mozilla.org)³ª ÇÑ±Û È®Àå±â´É »çÀÌÆ® (update.mozilla.or.kr)¸¦ ÂüÁ¶Çϸé ÁÁÀº È®Àå±â´ÉÀ» ãÀ» ¼ö ÀÖ´Ù. ¿©±â¼­´Â È®Àå±â´ÉÀ» ¸¸µé ¶§ ¾Ë¾Æ µÎ¸é ÁÁÀº ¸î °¡Áö ÆÁÀ» ¼Ò°³ÇÑ´Ù.

¡ß ¸¸µé¾îÁø È®Àå±â´ÉÀ» ¹èÆ÷ÇÒ ¶§ XPI¶ó´Â ÆÄÀÏ Æ÷¸ËÀ» °¡Áö°í Àֱ⠶§¹®¿¡ ´Ù¸¥ À̸§À¸·Î ÀúÀåÀ» ÇÏ´Â ´Ù¿î·Îµå âÀÌ ¶ã ¶§°¡ ÀÖ´Ù. ÀÌ·² ¶§´Â »ç¿ëÇÏ´Â À¥ ¼­¹ö¿¡ XPI¿¡ ´ëÇÑ mime-typeÀ» Á¤ÇØ ÁÙ Çʿ䰡 ÀÖ´Ù. ¸¸¾à À¥ ¼­¹ö°¡ ¾ÆÆÄÄ¡¶ó¸é ´ÙÀ½°ú °°´Ù.

AddType application/x-xpinstall .xpi

¡ß È®Àå±â´ÉÀ» ÀϺΠ¼öÁ¤ÇÑ ÈÄ °è¼ÓÇØ¼­ XPI¸¦ ¸¸µå´Â °ÍÀº ¸Å¿ì ¹ø°Å·Î¿î ÀÏÀÌ´Ù. ÀÌ ¶§´Â 7-zip(www.7-zip.org)À̶ó´Â ¾ÐÃà ÇÁ·Î±×·¥À» ±âÃÊ·Î ÇÏ´Â ¹èÄ¡ ÆÄÀÏÀ» ÀÌ¿ëÇÏ¸é Æí¸®ÇÏ´Ù. ¾Æ·¡´Â makexpi.bat ÆÄÀÏÀÇ ³»¿ëÀÌ´Ù.

set x=%cd%
md build\chrome
cd chrome
7z a -tzip "%x%.jar" * -r -mx=0
move "%x%.jar" ..\build\chrome
cd ..
copy install.* build
cd build
7z a -tzip "%x%.xpi" * -r -mx=9
move "%x%.xpi" ..\
cd ..
rd build /s/q

¡ß install.rdf¸¦ ¸¸µå´Â ÀÛ¾÷ ¿ª½Ã ¹ø°Å·Ó´Ù. ÀÚµ¿À¸·Î install.rdf¸¦ ¸¸µé¾î ÁÖ´Â À¥ »çÀÌÆ® (ted.mielczarek.org/code/mozilla/ffinstall/index.html)¸¦ ÀÌ¿ëÇÏ¸é Æí¸®ÇÏ´Ù.

¡ß È®Àå±â´ÉÀ» °³¹ßÇϴµ¥ Æí¸®ÇÑ È®Àå±â´É(?)µµ ÀÖ´Ù. Extension Developer's ExtensionµéÀ» ÀÌ¿ëÇÏ¸é ½Ç½Ã°£À¸·Î XULÀ» ÆíÁýÇØ È®ÀÎÇÒ ¼ö ÀÖ°í ÀÚ¹Ù ½ºÅ©¸³Æ® ±â´ÉÀ» ±¸ÇöÇϰųª install.rdf¸¦ ÀÚµ¿À¸·Î »ý¼ºÇÏ´Â ±â´É µî ´Ù¾çÇÑ È®Àå±â´ÉÀ» ¸¸³ª º¼ ¼ö ÀÖ´Ù(ted.mielczarek.org/code/mozilla/extensiondev/index.html)

ÆÄÀÌ¾îÆø½º Å׸¶ ¸¸µé±â  
È®Àå±â´É°ú ÇÔ²² ºê¶ó¿ìÀúÀÇ ¿Ü¾çÀ» ÀÚÀ¯ÀÚÀç·Î ¹Ù²ãÁÖ´Â Å׸¶ ±â´É ¿ª½Ã ÆÄÀÌ¾îÆø½ºÀÇ ÁÖ¿ä ±â´É Áß ÇϳªÀÌ´Ù. ±Í¿©¿î ÀÏ¹Ý Å׸¶ºÎÅÍ Ãʱ⠳ݽºÄÉÀÌÇÁ Å׸¶, ÀÎÅÍ³Ý ÀͽºÇ÷η¯ Å׸¶±îÁö ¸Å¿ì ´Ù¾çÇÑ Á¾·ùÀÇ Å׸¶µéÀÌ ¸ðÁú¶ó ¾÷µ¥ÀÌÆ® »çÀÌÆ®¿¡ Á¸ÀçÇÑ´Ù.

Å׸¶¸¦ °³¹ßÇÏ´Â °Íµµ ¿ø¸®´Â È®Àå±â´É°ú µ¿ÀÏÇÏ´Ù. ±×·¯³ª È®Àå±â´ÉÀÌ ±âÁ¸ ºê¶ó¿ìÀú ±â´É¿¡ »õ·Î¿î ±â´ÉÀ» Ãß°¡ÇÏ´Â °ÍÀ̶ó¸é Å׸¶´Â ±âÁ¸ ºê¶ó¿ìÀúÀÇ ¿Ü¾ç¸¸À» º¯°æÇÏ´Â °ÍÀ̹ǷΠµð·ºÅ丮 ±¸Á¶¿Í ¿Ü¾ç º¯°æ ¹æ¹ýÀÌ Á¶±Ý ´Ù¸¦ »ÓÀÌ´Ù.

Å׸¶ ¼³Ä¡¸¦ À§ÇÑ xpi ÆÄÀÏÀ» Ç®¾î º¸¸é È®Àå±â´É°ú ¶È°°Àº ±¸Á¶·Î µÇ¾î ÀÖ°í ½ÇÁ¦·Î È®Àå±â´É°ú °°Àº ÇüÅ·ΠÇÁ·ÎÇÊ Æú´õ¿¡ ÀúÀåµÈ´Ù. ½ÇÁ¦ ¿Ü¾ç Á¤º¸°¡ µé¾î ÀÖ´Â jar ÆÄÀÏÀ» ¿­¾î º¸¸é browser, communicator, global °°Àº µð·ºÅ丮°¡ ÀÖ°í ±× ¾È¿¡ ÁÖ·Î css ÆÄÀϰú ±×¸² ÆÄÀÏÀÌ ÀÖ´Ù. ÆÄÀÌ¾îÆø½º ºê¶ó¿ìÀúÀÇ ¸ðµç ¸Þ´º¿Í Ç׸ñ°ú ¿Ü¾çÀº ¸ðµÎ css·Î ½ºÅ¸ÀÏ Á¤Àǰ¡ µÇ¾î ÀÖÀ¸¸ç À̸¦ ¾à°£¸¸ º¯°æÇÏ¸é ½±°Ô ³ª¸¸ÀÇ Å׸¶¸¦ ¸¸µé ¼ö ÀÖ´Ù.

½ÇÀü! LiveLines È®Àå±â´É °³¹ß
LiveLines´Â ÆÄÀÌ¾îÆø½ºÀÇ ¶óÀÌºê ºÏ¸¶Å©(Live Bookmark) ¹öưÀÇ ±â´ÉÀ» ¼öÁ¤ÇØ »ç¿ëÀÚ°¡ ¿øÇÏ´Â ÇÁ·Î±×·¥¿¡ RSS Çǵ带 Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â È®Àå±â´ÉÀÌ´Ù. ÀÌ È®Àå±â´ÉÀº ÀÌ¹Ì ¹ßÇ¥µÈ °ÍÀÌÁö¸¸ ¿©±â¼­ »ìÆìº¸´Â ¼Ò½º´Â ±âÁ¸ÀÇ ¼Ò½º¸¦ ´õ ´ÙµëÀº °ÍÀÌ´Ù.

¶ÇÇÑ º»·¡ È­¸é¿¡ Ç¥½ÃµÇ´Â ¹®±¸µéÀº ´Ù±¹¾î Áö¿øÀ» À§ÇØ XULÀ̳ª ½ºÅ©¸³Æ® ÆÄÀϰú ºÐ¸®ÇØ locale¿¡ ÀúÀåÇØ¾ß ÇÏÁö¸¸ »ç¿ëÇÏ´Â ¹®±¸°¡ ¸¹Áö ¾Ê±â ¶§¹®¿¡ ¼Ò½º¸¦ ´õ Á÷°üÀûÀ¸·Î ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ¼Ò½º¿¡ ±×´ë·Î ³Ö¾ú´Ù(¿©±â¿¡ ½Ç¸° ¼Ò½º´Â www.heygom.com/misc/livelines_src.zip¿¡¼­ ±¸ÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌ ¼Ò½º·Î ¸¸µé¾îÁø È®Àå±â´ÉÀº www.heygom.com/misc/livelines_0.3.3_mod.xpi·Î ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù.)

RSS¿¡ ´ëÇÑ ÀÌÇØ  
- RSS : Really Simple SyndicateÀÇ ¾àÀÚ·Î À¥ »çÀÌÆ®¿¡ Á¢¼ÓÇÏÁö ¾Ê°íµµ ÇØ´ç À¥ »çÀÌÆ®ÀÇ ³»¿ëÀ» ¿­¶÷ÇÒ ¼ö ÀÖ´Â ±â¼úÀÌ´Ù. ¸ÞÀÏ ¼Ò½ÄÁö°¡ ÁøÈ­ÇÑ ÇüŶó°íµµ º¼ ¼ö ÀÖ´Ù. ±¹³»¿ÜÀÇ ¾ð·Ð »çÀÌÆ®¿Í ºí·Î±×¿¡¼­ ½±°Ô ã¾Æº¼ ¼ö Àִµ¥, RSS ±¸µ¶±â¸¦ ÀÌ¿ëÇØ ¿øÇÏ´Â »çÀÌÆ®ÀÇ ÃֽŠ±ÛµéÀ» ½±°Ô ¹Þ¾Æº¼ ¼ö ÀÖ´Ù. RSS´Â XML Çü½ÄÀÇ ÆÄÀÏ·Î ¸¸µé¾îÁö¸ç ÀÌ·± ÆÄÀÏ ÇϳªÇϳª¸¦ ¡®Çǵ塯¶ó°í ÇÑ´Ù.

- ¶óÀÌºê ºÏ¸¶Å© : ÆÄÀÌ¾îÆø½ºÀÇ ºÏ¸¶Å©¸¦ ÅëÇØ RSS¸¦ ±¸µ¶ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ±â´ÉÀÌ´Ù. RSS Çǵ带 ¶óÀÌºê ºÏ¸¶Å©·Î Ãß°¡ÇÏ¸é ÆÄÀÌ¾îÆø½ºÀÇ ºÏ¸¶Å©¿¡ ÇØ´ç RSSÀÇ ³»¿ëÀÌ Ç¥½ÃµÈ´Ù.

<È­¸é 1> ÆÄÀÌ¾îÆø½º°¡ ±âº»À¸·Î Á¦°øÇÏ´Â ¶óÀÌºê ºÏ¸¶Å©

- Sage / Habari Xenu : ÆÄÀÌ¾îÆø½º¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â RSS ±¸µ¶±â·Î RSS ¸ñ·ÏÀ» ¼Õ½±°Ô °ü¸®ÇÒ ¼ö ÀÖ°í »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ °£°ÝÀ¸·Î RSS¸¦ ÀÚµ¿À¸·Î °»½ÅÇÒ ¼ö ÀÖ´Â µî ¶óÀÌºê ºÏ¸¶Å©º¸´Ù °­·ÂÇÑ ±â´ÉÀ» Á¦°øÇÑ´Ù. RSS Çǵå´Â »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ºÏ¸¶Å© Æú´õ¿¡ ºÏ¸¶Å© Çü½ÄÀ¸·Î ÀúÀåµÈ´Ù.

<È­¸é 2> ÆÄÀÌ¾îÆø½º¿¡¼­ »ç¿ëÇÏ´Â RSS ±¸µ¶±â Sage

- Bloglines(www.bloglines.com) : À¥ ±â¹ÝÀÇ RSS ±¸µ¶±â·Î RSS ¸ñ·ÏÀÌ À¥¿¡ ÀúÀåµÇ±â ¶§¹®¿¡ ¾ðÁ¦ ¾îµð¼­µç »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ ÀåÁ¡ÀÌ´Ù. ±¹³»¿¡´Â ºñ½ÁÇÑ ±â´ÉÀ» ÇÏ´Â RSS³Ý(rss.daum.net)ÀÌ ¾ó¸¶ Àü¿¡ ¹®À» ¿­¾ú´Ù.

<È­¸é 3> À¥ ±â¹ÝÀÇ RSS ±¸µ¶±â Bloglines


ÆÄÀÌ¾îÆø½º 1.0ºÎÅÍ´Â RSS¸¦ Á¦°øÇÏ´Â »çÀÌÆ®¿¡ Á¢¼ÓÇÏ¸é »óŸ·´ë ¿À¸¥ÂÊ¿¡ ¶óÀÌºê ºÏ¸¶Å© ¹öư()ÀÌ Ç¥½ÃµÇ´Âµ¥ À̰ÍÀ» Ŭ¸¯Çϸé ÇØ´ç »çÀÌÆ®°¡ Á¦°øÇÏ´Â RSS ÇǵåÀÇ ¸ñ·ÏÀÌ ÆË¾÷ ¸Þ´º·Î ³ªÅ¸³­´Ù. ¿©±â¼­ ¿øÇÏ´Â RSS Çǵ带 ¼±ÅÃÇÏ¸é ¶óÀÌºê ºÏ¸¶Å©·Î Ãß°¡ÇÒ ¼ö ÀÖ´Ù. LiveLines´Â ÀÌ ¹öưÀÇ ±â´ÉÀ» ¼öÁ¤ÇØ ¶óÀÌºê ºÏ¸¶Å© ¿Ü¿¡ »ç¿ëÀÚ°¡ ¿øÇÏ´Â ±¸µ¶±â¿¡ RSS Çǵ带 Ãß°¡ÇÏ´Â ±â´ÉÀ» °®°í ÀÖ´Ù.

¶ÇÇÑ ÀÌ È®Àå±â´É¿¡´Â RSS Çǵå ã±â ±â´ÉÀÌ µé¾î ÀÖ´Ù. ÆÄÀÌ¾îÆø½º´Â HTML ¹®¼­ÀÇ <head> ¾È¿¡ <link> ű׸¦ ÅëÇØ ÁöÁ¤µÈ RSS Çǵ常À» ÀνÄÇÑ´Ù. ÇÏÁö¸¸ <link> ű׸¦ »ç¿ëÇÏÁö ¾Ê°í <a> ű׷ΠRSS Çǵ带 ¸µÅ©ÇØ ³õÀº »çÀÌÆ®°¡ ¸¹´Ù. ÀÌ·± »çÀÌÆ®¸¦ À§ÇØ LiveLines´Â <a> ű׷Π¿¬°áµÈ RSS Çǵ带 ã¾Æ³½´Ù.

LiveLinesÀÇ ±âº» Á¤º¸¸¦ ´ãÀº contents.rdf
contents.rdf ÆÄÀÏ¿¡´Â LiveLinesÀÇ ±âº» Á¤º¸°¡ ´ã°Ü ÀÖ´Ù. <¸®½ºÆ® 5>¿¡¼­ ´«¿©°Ü º¼ °ÍÀº ±½°Ô Ç¥½ÃµÈ ºÎºÐÀÌ´Ù. À̰ÍÀº ºê¶ó¿ìÀúÀÇ ¼Ò½º ÆÄÀÏ(browser.xul)¿¡ livelines.xulÀ» ¿À¹ö·¹ÀÌ(overlay)ÇÑ´Ù´Â ¼±¾ðÀÌ´Ù. ¿À¹ö·¹ÀÌ´Â ÇÑ ÆÄÀÏ¿¡ ´Ù¸¥ ÆÄÀÏÀ» Àû¿ë½ÃŲ´Ù´Â Àǹ̷Î, ¿©±â¼­´Â ¶óÀÌºê ºÏ¸¶Å© ¾ÆÀÌÄÜ¿¡ ´ëÇÑ Á¤º¸°¡ browser.xul¿¡ ±â·ÏµÅ ÀÖ¾î À̰ÍÀ» livelines.xul·Î Á¦¾îÇÒ ¼ö ÀÖµµ·Ï ¿À¹ö·¹ÀÌÇß´Ù.

 <¸®½ºÆ® 6> LiveLines È®Àå±â´ÉÀÇ contents.rdf

¿À¹ö·¹À̸¦ ¼±¾ðÇÒ ¶§´Â ÀÌó·³ ¸ÕÀú ¿À¹ö·¹ÀÌÀÇ ´ë»óÀÌ µÇ´Â ÆÄÀÏ(browser.xul)À» ÁöÁ¤ÇÏ°í ±× ´ÙÀ½¿¡ ÇØ´ç ÆÄÀÏ¿¡ Àû¿ëµÉ ÆÄÀÏ(livelines.xul)À» ÁöÁ¤ÇÑ´Ù. Âü°í·Î browser.xulÀº ÆÄÀÌ¾îÆø½º°¡ ¼³Ä¡µÈ µð·ºÅ丮 /chrome/browser.jar/content/browser¾È¿¡ ÀÖ´Â ÆÄÀÏ·Î ºê¶ó¿ìÀú ÀüüÀÇ »À´ë¸¦ ´ã°í ÀÖ´Ù.

LiveLinesÀÇ ¿À¹ö·¹ÀÌ Á¤º¸¸¦ ´ãÀº livelines.xul
livelines.xul´Â LiveLinesÀÇ ¿À¹ö·¹ÀÌ Á¤º¸¸¦ ´ãÀº ÆÄÀÏÀÌ´Ù. <overlay> ¿ä¼Ò¿¡ ¿À¹ö·¹ÀÌÇÒ ¿ä¼ÒµéÀÌ ´ã°Ü ÀÖ´Ù. ±½Àº ±Û¾¾·Î Ç¥½ÃµÈ ºÎºÐÀÌ ¶óÀÌºê ºÏ¸¶Å© ¹öư¿¡ ´ëÇÑ Á¤ÀÇÀÌ´Ù. <statusbarpanel>¿¡ id°¡ ÁöÁ¤µÅ Àִµ¥ ¸¸¾à ´ë»ó ÆÄÀÏ(browser.xul)¿¡ °°Àº id¸¦ °¡Áø ¿ä¼Ò°¡ ÀÖ´Ù¸é °Å±â¿¡ °ãÃÄÁú °ÍÀ̰í, ±×·¸Áö ¾Ê´Ù¸é »õ·Î¿î <statusbarpanel>·Î Ãß°¡µÉ °ÍÀÌ´Ù.

 <¸®½ºÆ® 7> ¿À¹ö·¹ÀÌ Á¤º¸¸¦ ´ãÀº livelines.xul

browser.xul¿¡´Â ¶óÀÌºê ºÏ¸¶Å© ¹öư¿¡ ÇØ´çÇÏ´Â ºÎºÐÀÌ ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.

<statusbarpanel id="livemark-button" type="menu" class="statusbarpanel-menu-iconic" chromedir="&locale.dir;">
    <menupopup onpopupshowing="return livemarkFillPopup(this);"
        oncommand="livemarkAddMark(window._content, event.target.getAttribute('data'));" />
</statusbarpanel>

livelines.xul°ú browser.xulÀÇ ³»¿ëÀ» ºñ±³ÇØ º¸¸é, <statusbarpanel>Àº id°¡ °°À¸¹Ç·Î °ãÃÄÁöÁö¸¸ <menupopup>Àº id°¡ ÁöÁ¤µÅ ÀÖÁö ¾Ê¾Æ ¼­·Î ¿µÇâÀ» ÁÖ°í ¹ÞÁö ¾Ê°í º°°³ÀÇ ¿ä¼Ò·Î Ãß°¡µÈ´Ù. µû¶ó¼­ °ãÃÄÁø(overlay) ÈÄ¿¡´Â ±âÁ¸ÀÇ <statusbarpanel id="livemark-button">ÀÌ ´ÙÀ½°ú °°ÀÌ º¯°æµÈ´Ù. ±½Àº ±Û¾¾·Î µÈ ºÎºÐÀÌ livelines.xulÀÇ ¿µÇâÀ» ¹ÞÀº °ÍÀÌ´Ù.

<statusbarpanel id="livemark-button" type="menu" class="statusbarpanel-menu-iconic" chromedir="&locale.dir;" onclick="objLiveLines.doPopup(window._content);">
    <menupopup position="1" onpopupshowing="livemarkFillPopup(this);"
        oncommand="objLiveLines.addWithLiveLines(window._content, event.target.getAttribute('data'));" />
    <menupopup onpopupshowing="return livemarkFillPopup(this);"
        oncommand="livemarkAddMark(window._content, event.target.getAttribute('data'));" />
</statusbarpanel>

¿ø·¡ »õ·Ó°Ô Ãß°¡µÇ´Â ¿ä¼Ò´Â ±âÁ¸ ¿ä¼ÒÀÇ µÚ¿¡ Ãß°¡µÇÁö¸¸ position ¼Ó¼ºÀ» ÁöÁ¤ÇØ livelines.xulÀÇ <menupopup>ÀÌ ±âÁ¸ÀÇ <menupopup>º¸´Ù ¾Õ¿¡ À§Ä¡Çϵµ·Ï Çß´Ù. ÀÌ´Â »ç¿ëÀÚ°¡ <statusbarpanel id="livemark-button">À» Ŭ¸¯ÇÏ¿´À» ¶§ livelines.xulÀÇ <menupopup>ÀÌ ³ªÅ¸³ªµµ·Ï Çϱâ À§Çؼ­´Ù. ±âÁ¸ÀÇ <menupopup>¿¡ id°¡ ÁöÁ¤µÅ ÀÖÁö ¾Ê¾Æ livelines.xul°¡ Á¦¾îÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÀÌ·± Æí¹ýÀ» »ç¿ëÇß´Ù.

°¢ ¿ä¼ÒÀÇ À̺¥Æ®¿¡ ÁöÁ¤µÈ ÇÔ¼öÀÇ ±â´ÉÀº ´ÙÀ½°ú °°´Ù.

¡ß objLiveLines.doPopup : »ç¿ëÀÚ°¡ ¶óÀÌºê ºÏ¸¶Å© ¹öư(<statusbarpanel id="livemark-button">)À» Ŭ¸¯Çϸé ÇØ´ç »çÀÌÆ®ÀÇ RSS ÇÇµå ¸ñ·ÏÀÌ ÆË¾÷ ¸Þ´º(<menupopup>)·Î ³ªÅ¸³ª°í, ¿©±â¼­ »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ Çǵ尡 ±¸µ¶±â¿¡ µî·ÏµÇ´Âµ¥, ÀÌ °úÁ¤À» »ý·«ÇÏ°í ¸ñ·ÏÀÇ °¡Àå ù ¹øÂ° Çǵ尡 µî·ÏµÇµµ·Ï ÇÏ´Â ÇÔ¼ö´Ù.

¡ß livemarkFillPopup : À̹ø ¼Ò½º¿¡´Â ÆË¾÷ ¸Þ´ºÀÇ ³»¿ë Áï, ¸Þ´º Ç׸ñ(<menuitem>)ÀÌ Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù. ¼­·Î ´Ù¸¥ »çÀÌÆ®¿¡ Á¢¼ÓÇÒ ¶§¸¶´Ù RSS ÇǵåÀÇ Á¤º¸°¡ ´Þ¶óÁö±â ¶§¹®ÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ÆË¾÷ ¸Þ´º°¡ Ç¥½ÃµÉ ¶§ ÇØ´ç »çÀÌÆ®ÀÇ RSS Çǵå Á¤º¸¸¦ ´ãÀº ¸Þ´º Ç׸ñ(<menuitem>)À» ¸¸µç´Ù. ÇØ´ç RSS ÇǵåÀÇ ÁÖ¼Ò´Â <menuitem>ÀÇ data ¼Ó¼º¿¡ ÀúÀåµÈ´Ù. ÀÌ ÇÔ¼ö´Â ÆÄÀÌ¾îÆø½º°¡ Á¦°øÇÏ´Â °ÍÀ¸·Î browser.js(browser.xul°ú °°Àº °æ·Î¿¡ À§Ä¡)¿¡ Á¤ÀǵŠÀÖ´Ù.

¡ß objLiveLines.addWithLiveLines : »ç¿ëÀÚ°¡ RSS Çǵ带 ¼±ÅÃÇϸé(Áï <menuitem> ¿ä¼Ò¸¦ Ŭ¸¯Çϸé) È£ÃâµÇ´Â ÇÔ¼ö·Î ÇÔ¼ö¸í¿¡¼­ ¾Ë ¼ö ÀÖµí »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ RSS Çǵ带 »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ±¸µ¶±â¿¡ µî·ÏÇÑ´Ù.


 <¸®½ºÆ® 8> livelines_setting.xul

¼³Á¤Ã¢À» ±¸ÇöÇÏ´Â livelines_setting.xul
livelines_setting.xulÀº LiveLines ¼³Á¤Ã¢ÀÇ XUL ÆÄÀÏÀÌ´Ù. <¸®½ºÆ® 7>°ú °°ÀÌ <dialog> ¿ä¼ÒÀÇ onload À̺¥Æ®¿¡ ÁöÁ¤µÈ ÇÔ¼ö´Â ÀÌ Ã¢ÀÌ ¿­·ÈÀ» ¶§ ½ÇÇàµÇ¸ç, ondialogaccept À̺¥Æ®¿¡ ÁöÁ¤µÈ ÇÔ¼ö´Â »ç¿ëÀÚ°¡ È®ÀÎ ¹öưÀ» ´­·¶À» ¶§ ½ÇÇàµÈ´Ù. À̵é ÇÔ¼ö´Â livelines.js¿¡ Á¤ÀǵŠÀÖ´Ù.

setMenu ÇÔ¼ö´Â »ç¿ëÀÚ°¡ <groupbox> ¾ÈÀÇ Ç׸ñ(<radio>)À» ¼±ÅÃÇßÀ» ¶§(oncommand) ½ÇÇàµÇ´Âµ¥, »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ Ç׸ñ¿¡ µû¶ó ƯÁ¤ Ç׸ñÀÇ »ç¿ë °¡´É ¿©ºÎ¸¦ º¯°æÇÏ´Â ±â´ÉÀ» ÇÑ´Ù. ¿¹¸¦ µé¾î »ç¿ëÀÚ°¡ ¡®Bloglines¿¡ Ãß°¡ÇÕ´Ï´Ù¡¯¸¦ ¼±ÅÃÇßÀ» °æ¿ì, RSS Ãß°¡ È­¸éÀÌ ¿­¸± °÷À» ¼±ÅÃÇÏ´Â ¸Þ´º(<menulist id="OpenSubPageIn">)¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ¸¸µç´Ù. »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ Ç׸ñÀÌ ¹«¾ùÀÎÁö´Â <radiogroup id="addto"> ¿ä¼ÒÀÇ selectedIndex °ªÀ¸·Î ¾Ë ¼ö ÀÖ´Ù. <È­¸é 4>´Â ½ÇÁ¦ ½ÇÇà È­¸éÀÌ´Ù.

<È­¸é 3> LiveLines ¼³Á¤Ã¢


 <¸®½ºÆ® 9> livelines.js

LiveLinesÀÇ ±âº» ±¸Á¶ livelines.js
<¸®½ºÆ® 8>Àº livelines.jsÀÇ ±âº» ±¸Á¶´Ù. <a>·Î ¸µÅ©µÈ RSS Çǵ带 ã±â À§Çؼ­´Â À¥ ÆäÀÌÁö°¡ ¿­¸± ¶§¸¶´Ù °Ë»ç¸¦ ÇØ¾ß ÇϹǷΠload À̺¥Æ®¿¡ ¸®½º³Ê¸¦ Ãß°¡Çß´Ù. LiveLinesÀÇ ½ÇÁ¦ ±â´ÉÀº °ü¸®¸¦ ½±°Ô ÇÒ ¼ö ÀÖµµ·Ï objLiveLines¿¡ ³Ö¾î µ×´Ù. objLiveLines ³»ºÎ¸¦ »ìÆìº¸¸é, ¸ÕÀú prefService´Â ´ÙÀ½°ú °°ÀÌ ¼³Á¤ °ªÀ» °ü¸®ÇÏ´Â ¿ªÇÒÀ» ¸Ã´Â´Ù.

prefService: Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('livelines.')

LiveLines°¡ »ç¿ëÇÏ´Â ¼³Á¤µéÀº ´ÙÀ½°ú °°´Ù.

¡ß livelines.addto :Á¤¼ö·Î ±â·ÏµÇ¸ç RSS Çǵ带 µî·ÏÇÒ ±¸µ¶±â(¶óÀÌºê ºÏ¸¶Å©, Bloglines, Sage, Habari Xenu, Ŭ¸³º¸µå º¹»ç)¸¦ °¡¸®Å²´Ù.
¡ß livelines.OpenSubPageIn : Á¤¼ö·Î ±â·ÏµÇ¸ç RSS Çǵ带 Bloglines¿¡ µî·ÏÇÒ °æ¿ì ÇÇµå µî·Ï ÆäÀÌÁö¸¦ ¿­ °÷(ÇöÀç ÅÇ, »õ ÅÇ, »õ â)À» °¡¸®Å²´Ù.
¡ß livelines.OpenBookmarkWindow_Sage : °ªÀÌ ÂüÀ̸é RSS Çǵ带 Sage·Î µî·ÏÇÒ ¶§ »ç¿ëÀÚ°¡ ºÏ¸¶Å© Æú´õ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï ºÏ¸¶Å© ´ëÈ­»óÀÚ¸¦ ¿¬´Ù.
¡ß livelines.OpenBookmarkWindow_Xenu : livelines.OpenBookmarkWindow_Sage¿Í °°Àº ±â´ÉÀ» Çϸç Sage ´ë½Å Habari Xenu¿¡ Àû¿ëµÈ´Ù.
¡ß livelines.PassPopup: °ªÀÌ ÂüÀ̸é RSS Çǵ带 ¼±ÅÃÇÏ´Â ÆË¾÷ ¸Þ´º¸¦ Ç¥½ÃÇÏÁö ¾Ê°í °¡Àå ù ¹øÂ° Çǵ带 ±¸µ¶±â¿¡ µî·ÏÇÑ´Ù.
¡ß livelines.FindRSS : °ªÀÌ ÂüÀ̸é <a>·Î ¿¬°áµÈ RSS Çǵ带 °Ë»öÇÑ´Ù.

ÀÌ·¯ÇÑ ¼³Á¤ °ªµéÀº ÆÄÀÌ¾îÆø½ºÀÇ ¼³Á¤ °ªµé°ú ÇÔ²² ÀúÀåµÇ´Âµ¥ À̸¦ ÀÐ°í ±â·ÏÇÒ ¶§´Â ÆÄÀÌ¾îÆø½º°¡ Á¦°øÇÏ´Â nsIPrefService¸¦ ÀÌ¿ëÇÑ´Ù. LiveLinesÀÇ ¼³Á¤Àº ¸ðµÎ ¡®livelines.¡¯ ¾Æ·¡¿¡ ÀÖÀ¸¹Ç·Î getBranch ¸Þ½îµå·Î ¡®livelines.¡¯·Î ½ÃÀÛÇÏ´Â ¼³Á¤µé¸¸ Àеµ·Ï Çß´Ù. ÀÌó·³ ¼±¾ðÇÏ¸é ¾ÕÀ¸·Î prefService¸¦ ÀÌ¿ëÇØ ¼Õ½±°Ô ¼³Á¤ °ªÀ» °ü¸®ÇÒ ¼ö ÀÖ´Ù.

getPrefernces´Â ÇÊ¿äÇÑ ¼³Á¤ °ªÀ» ÀÐ¾î ¹ÝȯÇÏ´Â ÇÔ¼öÀÌ´Ù. <¸®½ºÆ® 9>ó·³ µÎ °³ÀÇ ÀÎÀÚ¸¦ ¹Þ´Âµ¥ pref_nameÀº ¼³Á¤ÀÇ À̸§, pref_typeÀº ¼³Á¤ °ªÀÇ Çü½Ä(Á¤¼öÇü, ¹®ÀÚÇü, Âü°ÅÁþÇü)ÀÌ´Ù. ¼³Á¤ °ªÀÇ Çü½Ä¿¡ µû¶ó ¼³Á¤ °ªÀ» Àд ¸Þ½îµå(getIntPref, getCharPref, getBoolPref)°¡ ´Ù¸£±â ¶§¹®¿¡ ¹Ýµå½Ã ¼³Á¤ °ªÀÌ ¾î¶² Çü½ÄÀ¸·Î ÀúÀåµÅ ÀÖ´ÂÁö ¾Ë¾Æ¾ß ÇÑ´Ù. ¶Ç Á¸ÀçÇÏÁö ¾Ê´Â ¼³Á¤ °ªÀ» ÀÐÀ¸·Á ÇÏ¸é ¿À·ù°¡ ¹ß»ýÇϹǷΠ¼³Á¤À» Àбâ Àü¿¡´Â prefHasUserValue ¸Þ½îµå·Î ¼³Á¤ÀÇ Á¸Àç ¿©ºÎ¸¦ È®ÀÎÇÒ Çʿ䰡 ÀÖ´Ù.

 <¸®½ºÆ® 10> ÇÊ¿äÇÑ ¼³Á¤ °ªÀ» ÀÐ¾î ¹øÈ¯ÇÏ´Â getPrefernces ÇÔ¼ö

RSS Çǵå Á¸Àç¿©ºÎ¸¦ È®ÀÎÇÏ´Â checkAnchors4RSS
checkAnchors4RSS´Â À¥ ¹®¼­ÀÇ <a>ÀÇ href °ªÀ» °Ë»çÇØ RSS Çǵ尡 Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏ´Â ÇÔ¼öÀÌ´Ù. <¸®½ºÆ® 10>ó·³ óÀ½¿¡ document.getElementById(¡°livemark-button¡±)¸¦ °Ë»çÇÏ´Â °ÍÀº ¶óÀÌºê ºÏ¸¶Å© ¹öư(<statusbarpanel id=¡°livemark-button¡±>)À» Á¦¾îÇÒ ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¸±â À§Çؼ­ÀÌ´Ù. LiveLines´Â livemark-buttonÀÇ ±â´ÉÀ» º¯°æÇÏ´Â ¿ªÇÒÀ» ÇϹǷΠÇÔ¼ö°¡ ½ÇÇàµÇ´Â ½ÃÁ¡¿¡¼­ livemark-button ¿ä¼Ò¸¦ ãÀ» ¼ö ¾ø´Ù¸é, ´Ù½Ã ¸»ÇØ Á¢±ÙÇÒ ¼ö ¾ø´Ù¸é ´õ ÀÌ»ó ÇÔ¼ö¸¦ ½ÇÇàÇÒ Çʿ䰡 ¾ø±â ¶§¹®ÀÌ´Ù.

 <¸®½ºÆ® 11> checkAnchors4RSS ÇÔ¼ö

±× ´ÙÀ½¿¡ gBrowser.mCurrentBrowser.livemarkLinks°¡ Á¸ÀçÇÏ´ÂÁö °Ë»çÇÏ´Â °ÍÀº ÆÄÀÌ¾îÆø½º°¡ ãÀº RSS Çǵå(<link>·Î ¿¬°áµÈ RSS Çǵå)µéÀÇ Á¤º¸°¡ ¿©±â¿¡ ÀúÀåµÇ±â ¶§¹®ÀÌ´Ù. ¶óÀÌºê ºÏ¸¶Å© ¹öưÀ» ´­·¶À» ¶§ ³ªÅ¸³ª´Â ÆË¾÷ ¸Þ´ºÀÇ °¢ Ç׸ñ(<menuitem>)Àº ÀÌ °³Ã¼¸¦ ¹ÙÅÁÀ¸·Î ¸¸µé¾îÁø´Ù. ¸¸¾à livemarkLinks°¡ Á¸ÀçÇÑ´Ù¸é ´Ù½Ã RSS Çǵ带 °Ë»çÇÒ Çʿ䰡 ¾øÀ¸¹Ç·Î ÇÔ¼öÀÇ ½ÇÇàÀ» Áß´ÜÇÑ´Ù. Âü°í·Î gBrowser´Â ÅÇ ¸·´ë¿Í ¸ðµç ÅÇÀ» Æ÷ÇÔÇÏ´Â ºê¶ó¿ìÀú âÀ», gBrowser.mCurrentBrowser´Â ÇöÀç È­¸é¿¡ Ç¥½ÃµÇ´Â ÅÇÀÇ ºê¶ó¿ìÀú âÀ» °¡¸®Å²´Ù. ¸ðµç ÅÇÀº ¼­·Î ´Ù¸¥ livemarkLinks °³Ã¼¸¦ °®°í ÀÖ´Ù.

LiveLines°¡ ã¾Æ³½ RSS ÇǵåµéÀÇ ÁÖ¼Ò´Â rssfeeds¿¡ ¹è¿­·Î ÀúÀåµÈ´Ù. À̵鵵 ÆÄÀÌ¾îÆø½º°¡ ãÀº RSS Çǵå¿Í µ¿ÀÏÇÏ°Ô Ãë±ÞµÇµµ·Ï livemarkLinks¿¡ rssfeedsÀÇ °ªµéÀ» ³Ö¾îÁà¾ß ÇÏÁö¸¸ ÅÇÀÌ ¹Ù²ð ¶§¸¶´Ù gBrowser.mCurrentBrowser°¡ °¡¸®Å°´Â °³Ã¼°¡ ¹Ù²î¹Ç·Î, gBrowser.mCurrentBrowser.livemarkLinks¿¡ Á÷Á¢ °ªÀ» ³ÖÀ¸¸é ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ÆÄÀÌ¾îÆø½º´Â RSS Çǵ带 ¾Ë¸®´Â <link> ¿ä¼Ò°¡ HTML ¹®¼­¿¡ Ãß°¡µÉ ¶§¸¶´Ù ÇØ´ç ÅÇÀÇ livemarkLinks °ªÀ» °»½ÅÇϹǷΠrssfeedsÀÇ °ªÀ» ¹ÙÅÁÀ¸·Î <link> ¿ä¼Ò¸¦ ¸¸µé¾î HTML ¹®¼­¿¡ Ãß°¡Çϸé LiveLines°¡ ãÀº RSS ÇǵåÀÇ ÁÖ¼Ò¸¦ °£Á¢ÀûÀ¸·Î livemarkLinks¿¡ µî·ÏÇÒ ¼ö ÀÖ´Ù. <¸®½ºÆ® 10>ÀÇ ¸¶Áö¸· ºÎºÐ¿¡ ÀÖ´Â for ±¸¹®ÀÇ ¿ªÇÒÀÌ ¹Ù·Î À̰ÍÀÌ´Ù.

RSS ÇÇµå ¼±Åýà ½ÇÇàµÇ´Â addWithLiveLines ÇÔ¼ö
addWithLiveLines´Â ¶óÀÌºê ºÏ¸¶Å© ¹öưÀ» ´©¸£¸é ³ªÅ¸³ª´Â ÆË¾÷ ¸Þ´º¿¡¼­, ¿øÇÏ´Â RSS Çǵå(<menuitem>)¸¦ ¼±ÅÃÇßÀ» ¶§ ½ÇÇàµÇ´Â ÇÔ¼ö·Î, »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ±¸µ¶±â¿¡ RSS Çǵ带 µî·ÏÇÏ´Â ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. µÎ °³ÀÇ ÀÎÀÚ¸¦ ³Ñ°Ü ¹Þ´Âµ¥ wincontent´Â Áö±Ý ´Ù·ç°í ÀÖ´Â HTML ¹®¼­°¡ Ç¥½ÃµÇ´Â âÀ», data´Â »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ RSS ÇǵåÀÇ ÁÖ¼Ò(<menuitem>ÀÇ data ¼Ó¼º¿¡ ÀúÀåµÈ °ª)¸¦ °¡¸®Å²´Ù. È£ÃâµÇ´Â ÇÔ¼ö Áß livemarkAddMark´Â RSS Çǵ带 ¶óÀÌºê ºÏ¸¶Å©·Î µî·ÏÇÏ´Â ÇÔ¼öÀ̸ç browser.js¿¡ Á¤ÀǵǾî ÀÖ´Ù.

addWithLiveLines: function(wincontent,data) {
    switch(this.getPreferences("addto","int")) {
        case LiveLines_AddtoLivemarks: livemarkAddMark(wincontent, data); break;
        case LiveLines_AddtoBloglines: this.addtoBlogLines(wincontent,data); break;
        case LiveLines_AddtoSage: this.addtoSage(wincontent,data); break;
        case LiveLines_AddtoXenu: this.addtoXenu(wincontent,data); break;
        case LiveLines_CopytoClipboard: this.copytoClipboard(data); break;
    }
}

RSS Çǵ带 Bloglines¿¡ Ãß°¡ÇÏ´Â addtoBloglines ÇÔ¼ö
addtoBloglines´Â RSS Çǵ带 Bloglines¿¡ Ãß°¡ÇÏ´Â ÇÔ¼öÀÌ´Ù. Bloglines´Â À¥ ±â¹ÝÀÇ RSS ±¸µ¶±âÀ̱⠶§¹®¿¡ RSS Çǵ带 Ãß°¡ÇÏ·Á¸é Çǵå Ãß°¡ ÆäÀÌÁö¸¦ ÀÌ¿ëÇØ¾ß Çϴµ¥, ±× ÁÖ¼Ò´Â http://www.bloglines.com/sub/ + RSS Çǵå ÁÖ¼Ò(¿¹: http://www.bloglines.com/sub/http://www.bloglines.com/sub/ http://forums.mozilla.or.kr/rss.php) ÇüŰ¡ µÈ´Ù.

 <¸®½ºÆ® 12> addtoBloglines

Çǵå Ãß°¡ ÆäÀÌÁö´Â ¼³Á¤¿¡ µû¶ó ÇöÀç ÅÇ, »õ ÅÇ, »õ â¿¡ ¿­¸°´Ù. ÇöÀç ÅÇ¿¡ ¿©´Â °ÍÀº HTML°ú ¸¶Âù°¡Áö·Î document.location.href °ªÀ» ¹Ù²Ù¾î ÁÖ¸é µÈ´Ù. »õ â¿¡ ¿©´Â °Íµµ HTML¿¡¼­Ã³·³ window.openÀ» »ç¿ëÇÑ´Ù. »õ ÅÇÀ» ¸¸µé ¶§´Â ºê¶ó¿ìÀú(gBrowser)ÀÇ addTabÀ» ÀÌ¿ëÇÑ´Ù. getBrowser´Â gBrowser¸¦ ¹ÝȯÇÏ´Â ÇÔ¼ö·Î browser.js¿¡ Á¤ÀǵŠÀÖ´Ù. ÀÌ·¸°Ô ¿­¸° ÅÇÀÌ ¼±Åõǵµ·Ï ÇÏ·Á¸é ºê¶ó¿ìÀúÀÇ selectedTab °ª¿¡ »õ·Î ¿¬ ÅÇÀÇ À妽º¸¦ ÁöÁ¤ÇØ ÁÖ¸é µÈ´Ù.

ºÏ¸¶Å©·Î Ãß°¡ÇÏ´Â addtoSage ÇÔ¼ö
Sage´Â RSS ÇÇµå ¸ñ·ÏÀ» ºÏ¸¶Å©ÀÇ Æ¯Á¤ Æú´õ(±âº» °ªÀº Sage Feeds)¿¡ ºÏ¸¶Å©ÀÇ ÇüÅ·Πº¸°üÇÑ´Ù. addtoSage ÇÔ¼öÀÇ ¿ªÇÒÀº ±× Æú´õ¸¦ ã¾Æ³» RSS Çǵ带 ºÏ¸¶Å©·Î Ãß°¡ÇÏ´Â °ÍÀÌ´Ù. ºÏ¸¶Å©¸¦ Ãß°¡ÇÒ ¶§´Â nsIBookmarksServiceÀÇ createBookmarkInContainer ¸Þ½îµå¸¦ ÀÌ¿ëÇÑ´Ù.

createBookmarkInContainer°¡ ¹Þ´Â ÀÎÀÚ´Â 7°¡ÁöÀε¥ ºÏ¸¶Å©ÀÇ À̸§, ÁÖ¼Ò, Ű¿öµå, ¼³¸í, ¹®ÀÚ¼³Á¤(charset), Æú´õ, À妽º ¼øÀÌ´Ù. ºÏ¸¶Å©ÀÇ À̸§Àº ÇöÀç ¹®¼­ÀÇ Á¦¸ñÀ» ¾²°í, ÁÖ¼Ò´Â data¿¡ RSS ÇǵåÀÇ URLÀÌ ÀúÀåµÇ¾î ÀÖÀ¸´Ï ÀÌ °ªÀ» ¹Ù·Î ¾²¸é µÈ´Ù.

 <¸®½ºÆ® 13> RSS Çǵ带 ºÏ¸¶Å©·Î Ãß°¡ÇÏ´Â sage addtoSage

¹®Á¦´Â Sage Æú´õÀÇ IDÀÌ´Ù. À̰ÍÀº sage.folder_id ¼³Á¤¿¡ º¸°üµÅ ÀÖÁö¸¸ ÀÏ¹Ý ¹®ÀÚ¿­·Î µÇ¾î ÀÖ¾î nsIRDFServiceÀÇ GetResource ¸Þ½îµå¸¦ ÀÌ¿ëÇØ ºÏ¸¶Å©¿¡¼­ »ç¿ëÇÏ´Â RDF ¸®¼Ò½º Çü½ÄÀ¸·Î º¯È¯ÇÑ ÈÄ createBookmarkInContainer¿¡ ³Ñ°Ü Áà¾ß ÇÑ´Ù. ³ª¸ÓÁö °ªµéÀº nullÀ» ³Ñ°Üµµ »ó°ü¾ø´Ù. Âü°í·Î BMSVC¿Í RDF´Â °¢°¢ nsIBookmarksService¿Í nsIRDFResourceÀÇ °³Ã¼·Î, bookmarks.js(ÆÄÀÌ¾îÆø½º ¼³Ä¡ µð·ºÅ丮/chrome/browser.jar/content/browser/bookmarks /bookmarks.js)¿¡ Á¤ÀǵǾî ÀÖ´Ù.

Habari Xenu¿¡ Ãß°¡ÇÏ´Â addtoXenu ÇÔ¼ö
addtoXenu´Â Habari Xenu¿¡ RSS Çǵ带 Ãß°¡ÇÏ´Â ÇÔ¼ö·Î extensions. habarixenu.feeds_folder °ªÀ» ÀÌ¿ëÇÏ´Â °ÍÀ» »©¸é addtoSage¿Í Â÷À̰¡ ¾ø´Ù.

 <¸®½ºÆ® 14> Habari Xenu¿¡ RSS Çǵ带 Ãß°¡ÇÏ´Â addtoXenu ÇÔ¼ö

RSS Çǵå ÁÖ¼Ò¸¦ º¹»çÇÏ´Â copytoClipboard
copytoClipboard´Â RSS ÇǵåÀÇ ÁÖ¼Ò¸¦ Ŭ¸³º¸µå¿¡ º¹»çÇÏ´Â ÇÔ¼öÀÌ´Ù. À̰ÍÀº XulPlanet(www.xulplanet.com)ÀÇ Using the Clipboard(www.xulplanet.com/tutorials/xultu/clipboard.html)¿¡ ¼Ò°³µÈ Äڵ带 ±×´ë·Î »ç¿ëÇÑ °ÍÀ¸·Î ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº À§ ¹®¼­¿¡ Àß ³ªÅ¸³ª ÀÖ´Ù.

 <¸®½ºÆ® 15> copytoClipboard

doPopup¿Í DirectAdd ÇÔ¼ö
¿ø·¡ ¶óÀÌºê ºÏ¸¶Å© ¹öưÀ» ´©¸£¸é µî·ÏÇÒ RSS Çǵ带 »ç¿ëÀÚ°¡ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï ÆË¾÷ ¸Þ´º°¡ ³ªÅ¸³­´Ù. ´ÙÀ½°ú °°Àº doPopup ÇÔ¼ö´Â »ç¿ëÀÚ°¡ ¶óÀÌºê ºÏ¸¶Å© ¹öưÀ» Ŭ¸¯ÇßÀ» ¶§ È£ÃâµÇ´Âµ¥ livelines.PassPopupÀÌ ÂüÀÏ ¶§ ÆË¾÷ ¸Þ´º¸¦ ¼û±â°í RSS ÇÇµå ¸ñ·ÏÀÇ °¡Àå ù ¹øÂ° Ç׸ñÀÌ ¹Ù·Î ±¸µ¶±â¿¡ µî·ÏµÇµµ·Ï ÇÑ´Ù.

doPopup: function(wincontent)    {
    if (this.getPreferences("PassPopup","bool"))    {
        // ¿ä¼Ò¸¦ °¨Ãá´Ù.
        gLivemarksButton.firstChild.hidePopup();
        this.DirectAdd(wincontent);
    }
}

¿©±â¼­ gLivemarksButtonÀº ¿ä¼Ò¸¦ °¡¸®Å°´Â °ÍÀ¸·Î, browser.js¿¡ ¼±¾ðµÅ ÀÖ´Ù. gLivemarksButtonÀÇ Ã¹ ¹øÂ° ÀÚ³à(firstChild) ¿ä¼Ò´Â livelines.xulÀÇ ¿¡¼­ Á¤ÀÇÇÑ ¿ä¼ÒÀÌ´Ù. ÀÌ´Â hidePopup ¸Þ½îµå·Î °£´ÜÈ÷ °¨Ãâ ¼ö ÀÖ´Ù.
DirectAdd ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ livemarkLinks¿¡ ÀúÀåµÈ RSS Çǵå Áß °¡Àå ù ¹øÂ° ÁÖ¼Ò¸¦ addWithLiveLines ÇÔ¼ö·Î ³Ñ±ä´Ù.

DirectAdd: function(wincontent) {
    LivemarkLinks = gBrowser.mCurrentBrowser.livemarkLinks;
    data    = LivemarkLinks[0].href;
    this.addWithLiveLines(wincontent,data);
}

¼³Á¤ °ª¿¡ µû¶ó »óŸ¦ º¯°æÇÏ´Â updateOptionDialog
updateOptionDialog ÇÔ¼ö´Â LiveLines ¼³Á¤Ã¢(livelines_setting.xul)ÀÌ ¿­¸± ¶§ ¼³Á¤ °ª¿¡ µû¶ó °¢ ¿ä¼ÒµéÀÇ »óŸ¦ º¯°æÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. getPreferences ÇÔ¼ö·Î ¼³Á¤ °ªÀ» Àоî¿À´Â °ÍÀ» »©¸é ¾Õ¿¡¼­ ¼³¸íÇÑ setMenu ÇÔ¼ö¿Í ±â´ÉÀÌ ºñ½ÁÇÏ´Ù.

 <¸®½ºÆ® 16> ¼³Á¤ °ª¿¡ µû¶ó °¢ ¿ä¼ÒµéÀÇ »óŸ¦ º¯°æÇÏ´Â updateOptionDialog