U E D R , A S I H C RSS

Zero Page_200_OK/note


  • ฐ•˜ …ธํŠธŠ” ‚ งœ‚˜ š” „กœ ตฌ„ํ•˜€ •Šณ  ํฐ  œ„กœ „ฆฌํ•  ƒฐž…‹ˆ‹ค. ทธ ‡ฒŒ ํ•˜Š” ํŽธด ‚˜ค‘— ฐพ•„ณดธฐ— ข‹„ฒƒ ฐ™Šต‹ˆ‹ค -•ˆํ˜€
  •  €˜ € ธ €„ด งŽด “ค–ด ฐˆˆ˜ žˆœ€กœ €ํ•˜‹ค ƒฐ˜Š” €„€ „›Œ„š”.
  • ฐ•˜ …ธํŠธŠ” ฐ™ด งŒ“ค–ด ‚˜€Š” ฒƒด€กœ ชจ‘“ค ํ•จป˜ „›Œ‚˜ฐ‘‹œ‹ค.

1. HTTP

1.1. HTTP Method

1.1.1. POST

  • uploder—ฒŒ ฆฌ†ŒŠค ˜ฌฆด•Œ ‚ฌšฉ กœ ƒˆ€„ “ธ•Œ งŽด ‚ฌšฉํ•œ‹ค.

1.1.2. PUT

  • resource— ‚ฌšฉ ทธ url— ” ˜ฌฐˆ •Œ “ด‹ค. กœ ˆ˜ •— ‚ฌšฉœ‹ค ดธ ID •Œณ  žˆœ€กœ.

2. JavaScriptž€?


2.1. Prototype ธฐฐ˜ –ธ–ด

  • prototype–ธ–ด?
    • oop˜ ํ„€ class™€ prototypeœกœ ‚˜Šฐ‹ค.
    • prototype€ ํดž˜Šค€ “คณ  žˆ–ด•ํ•˜Š” ํ•จˆ˜“ค„ ํŠ • ธŠคํ„Šค€ “คณ  žˆฒŒ งŒ“œŠ” ฒƒด‹ค.
    • ด ํŠ • ธŠคํ„Šค prototypeด €ฅธ‹ค.

2.2. ํ•จˆ˜ํ˜• –ธ–ด

  • ํ•จˆ˜ ธ‰ฐฒดกœ ‹คฃจŠ” –ธ–ด
    • ธ‰ฐฒดž€?
      • €ˆ˜ •ˆ— ‹ด„ˆ˜ žˆณ ,
      • ํŒŒธํ„กœ  „‹ฌํ• ˆ˜ žˆœฉฐ,
      • ฐ˜ํ™˜ฐ’„ ‚ฌšฉํ• ˆ˜ žˆณ 
      • ํ• ‹œด„ €„—†ด ตฌ„ํ• ˆ˜ žˆ‹ค
  • ํ•จˆ˜ งˆ˜ ฐ˜ ธ ธŠคํ„Šคฒ˜Ÿ ‹คฃจŠ” –ธ–ด

3. Javascript ฌธฒ•


3.1. ํดกœ ธ

  • ํดกœ ธ : ‚ด€˜ žˆŠ” ™ธ€— žˆŠ” ํ•จˆ˜˜ €—ญ €ˆ˜ “ธˆ˜ žˆŠ”ฒƒ. •Œฌธ— ˜„ํ•˜€ •Š€ ฒฐ € ธ˜ฌˆ˜ žˆ‹ค.
    ˜ˆ‹œถ”€ฐ”žŒ

3.2. Excuteion Context

  • this
    • p.do() —„œ p€ ‹คํ–‰ฌธงฅด‹ค. ทธŸฌ‚˜ ด ํ•จˆ˜€ˆ˜กœ ฐ›œฉด var f = p.do; f(); ดŸฐ‹œกœ ทธŸฌฉด fŠ” ‹คํ–‰ฌธงฅด —†ธฐ •Œฌธ—  „—ญฐฒด€ ‹คํ–‰ฌธงฅœกœ „œ‹ค.
  • ฒฐก  œกœ ํ•จˆ˜ •ž งˆ€ง‰ . •ž— žˆŠ” ฒƒด ค‘š”ํ•˜‹ค.
  • func.apply(ec, arguments) ‚˜ func.call(ec, arg1, arg2, ... )œกœ func•ˆ—„œ˜ ‹คํ–‰ฌธงฅ(this) ช…‹œ œกœ €ฒฝํ• ˆ˜ žˆ‹ค.

3.3. new˜ ™ž‘

  • new Person();
    • 1. create instance
    • 2. instance.proto = Person.prototype;
      • ด•Œ˜ protoŠ” ํ”„กœํ† ํƒ€ž… ฒดธด ํ• ˆ˜žˆ‹ค.(—”„„กœ ‹คˆ˜ žˆ‹ค.)
    • 3. ‹คํ–‰ฌธงฅ„ instanceกœ ํ•œ ƒ„ž ํ˜ธถœํ•œ‹ค.

3.4. prototype


3.4.1. Class vs Prototype

  • Class : ํ•จˆ˜™€ งด„ €ˆ˜€ ฐฐ class™€ ธŠคํ„Šค— ‚˜ˆ„–ด  ธžˆŠ”ฒƒ.
  • prototype : ํ•จˆ˜™€ งด„ €ˆ˜ ชจ‘ ธŠคํ„Šค—  €žฅ˜žˆŠ”ฒƒ
    • ‹จ€ ํ•จˆ˜Š” ‹คฅธ ธŠคํ„Šค— กดžฌํ•œ‹ค.
    • ทธ ‹คฅธ ธŠคํ„ŠคŠ” prototypeด €ฅธ‹ค.
      class <-----------------> prototype
      VTable <-----------------> prototype chain (proto)

3.4.2. dispatch

  • ‹ค œ ํ˜ธถœํ•ด• ํ•˜Š” ํ•จˆ˜ ฐพŠ”  •
  • javascript—„œŠ” ‹คํ–‰‹œ„— ํ”„กœํ† ํƒ€ž… ฒดธ— ˜ํ•ด ‹คํ–‰ํ•œ‹ค.
    • instance˜ proto—„œ ฐพณ  —†œฉด ทธœ„— proto—„œ ฐพณ ...
  • ฝ”“œกœ ‚˜ํƒ€‚ดณดฉด..

for (var _proto = a; _proto; _proto = _proto.__proto__)
{
    if (("f" in _proto) && typeof _proto["f"] === "function")
        _proto["f"].apply(a, arguments]);
}
  • žฐ”ŠคํฌฆฝํŠธŠ” ํ•จˆ˜™€ ฐ˜ €ˆ˜™€˜ ตฌ„ด —†ธฐ•Œฌธ— €ˆ˜ ˜ํ•œ dispatch€ œ‹ค.

3.4.3. ƒ†

  • ƒ†„ œ„ํ•ด„œŠ” prototype chain— “กํ•˜ฉด œ‹ค.

function People(){};
function Man(){};
Man.prototype = new People();
m = new Man();

3.5. same origin policy

  • žฐ” ŠคํฌฆฝํŠธ—„œŠ” XSS ง‰ธฐ(?)œ„ํ•ด ™ํ•œ „ฉ”ธด •„‹ˆฉด javascriptฌธงฅ—  ‘ํ• ˆ˜ —†‹ค.
  • iframeด‚˜ XHRš”ฒญ€ ดฒƒ˜  šฉ„ ฐ›Š”‹ค.
  • document.domain „ กฐ •ํ•จœกœจ ™ํ•œ „ฉ”ธ˜ ฒ”œ„ ฐ”€ˆ˜ žˆ‹ค.
    • wiki.zeropage.org ™€ www.zeropage.org ™ํ•œ „ฉ”ธœกœ ทจธ‰ํ•˜ธฐ œ„ํ•ด document.domain„ zeropage.orgกœ „ •ํ• ˆ˜ žˆ‹ค.
    • ‹จ, ดฒƒ„ ํ•˜œ„ „ฉ”ธ. •ž—„œ €„งŒ งœˆ˜ žˆœฉฐ ถ™ดŠ” ฒƒ€ ํ—ˆšฉ˜€ •ŠŠ”‹ค.

3.5.1. Same Origin Policy ณตํ•˜ธฐ œ„ํ•œ ฐฉฒ•

  • proxy
    • ‹คฅธ „ฉ”ธ—  ‘ํ•˜ธฐ œ„ํ•ด ™ „ฉ”ธ „œ„— ‹คฅธ ํŽ˜ด€˜ ฒฐ ทธŒ€กœ ฝ–ด™€ ‚ด คŠ” proxy „˜ํ•œ‹ค.
    • €ํ•˜€ งŽด ฆฌณ (š”ฒญงˆ‹ค „œ„— š”ฒญ„ ณด‚ดณ  ทธ‹ค‹œ ‚ด ค€กœ „คํŠธ›Œํฌ „šฉฐ ธฐํƒ€ „šฉด ฆ€)
    • ธฆ ฌธ œ€ ฆดฒฝšฐ ณด•ˆด •ฝํ™” ˆ˜ žˆ‹ค.
  • Image
    • ›ž˜ same origin policy  šฉฐ›€ •ŠŒœกœ ณตํ• ˆ˜ žˆœ‚˜ ฐ”ด„ˆฆฌ€กœ • ‹œ‹ดˆ šฐฆฌ€ “ธˆ˜ —†‹ค.
  • Ifreame
    • ‚ด€—„œ ‹คฅธ žฐ”ŠคํฌฆฝํŠธ ฝ”“œ€ ž‘™ํ• ˆ˜ žˆœ‚˜ ‹คฅธ „ฉ”ธดฉด  ‘ด ถˆ€ํ•˜‹ค.
    • ํ”Œž˜‰ฌกœ ณตํ• ˆ˜ žˆœ‚˜ ํดด–ธํŠธ— €ํ•˜€ žˆณ  žฐ”ŠคํฌฆฝํŠธ ณ œ ํ•œ ฐฉ‹œกœ ํ•ดฒฐํ•˜Š”ฒƒด •„‹ˆ„œ ข‹€•Š‹ค.
  • Script tag
    • Same origin policy  šฉฐ›€ •Šณ  žฐ”ŠคํฌฆฝํŠธ ถˆŸฌ˜ฌˆ˜ žˆœ‚˜ ฐ”กœ ‹คํ–‰ด ˜€กœ ‹คฅธ ฐฉ‹„ จ•ํ•œ‹ค.
    • script tag ฝ–ด กœ”ฉด ‚˜ฉด ฐ”กœ ‹คํ–‰ ํ•˜ธฐ •Œฌธ— —ฌŸฌฐœ ™‹œ— ถˆŸฌ˜ฌฒฝšฐ  „—ญ€ˆ˜ ดšฉํ•œ ฐฉ‹€ ถˆ€.
    • ”ฐ„œ callbackํ•จˆ˜กœ ํ•ดฒฐํ•œ‹ค.
    • ด•Œ ‚ด ค„ ‘‹ต€ JSONŠ” กฐธˆ ‹คฅด‹ค.

__callback({ "json" : "data"});
  • œ„™€ ฐ™€ ํ˜•‹œกœ ‚ด ค„ฒฝšฐ ํดด–ธํŠธ(š”ฒญํ•œ ชฝ)—„œ _callbackํ•จˆ˜งŒ  •˜ํ•ด‘ฉด กœ”ฉด ‚จ ™‹œ— ถˆฆฌฒŒ œ‹ค.
  • ด ‘‹ต€ งˆ˜ JSON— ํ•จˆ˜งŒ ฐ‹ํ˜•‹ดธฐ –„ฌธ— JSON with Padding, JSONP €ฅธ‹ค.

4. server


4.1. ข…ฅ˜

  • Apache http server (httpd)
    • „ฆฌ “ฐดณ  žˆŠ” „œ„ดณ  €žฅ •ˆ „„ด ›ฐ–ด‚˜‹ค.
  • IIS
    • windows —„œ “ฐดณ  —ญ‹œ •ˆ •„ด ›ฐ–ด‚˜ณ  GUI€ฆฌ€ €Šฅํ•˜‹ค.
  • lighttpd
    • event driven ฐฉ‹˜ „œ„
  • nginx
    • evnet driven ฐฉ‹ดฉฐ nodejs •Œฌธ— œ ช…ํ•ดกŒ‹ค.

4.2. ดˆธฐ˜ ›„œ„

  • static ํ•œ ํŒŒ„ ‚ด ค€‹ค.
  • ํ™•žฅž ํŒŒ•…ํ•ด„œ ˜Š” ํŒŒ˜ ํ—ค” ฝ–ด งžŠ” MIME TYPE ํ—ค”—  –ด€‹ค.
  • static ํ•œ ํŒŒ„ —…กœ“œ ฐ›Š”‹ค.

4.3. กฐธˆ ‚˜€ ›„œ„

  • ญ”€ ‹คด‚˜ํ•˜ฒŒ งŒ“ค–ดณดž.

4.3.1. Unix File

  • Unix—„œ Fileดํ•จ€ ‹คŒ„ ชจ‘ ˜ธํ•œ‹ค.
    • šฐฆฌ€ •Œณ  žˆŠ” ทธ ํŒŒ (Process - Disk)
    • ํ”„กœ„Šค„ ํ†ต‹ — ‚ฌšฉ˜Š” Pipe
    • ›ฒฉ จธ‹ — กดžฌํ•˜Š” ํ”„กœ„Šค™€ ํ†ต‹ ํ•˜Š” Socket
    • ธฐ„žฅ˜™€ ํ†ต‹ ํ•˜Š” “œด„
  • UnixŠ” Cž„—„ ถˆตฌํ•˜ณ  ฐ• ฅํ•œ ถ”ƒํ™” ํ†ตํ•ด ญ”€ ฝณ  “ฐŠ” ฒƒœกœ File„ งŒ“ค—ˆ‹ค.
  • งˆ˜ ‹คŒ ฐ™€ Š‚Œด‹ค.

FILE f = new Pipe();

4.3.2. CGI

  • Common Gateway Interface
  • Unix—„œŠ” Pipe„ Fileด€กœ staticํ•œ file Œ€‹  Pipe “ฐฉด ญ”€ ‹คด‚˜ํ•œฒŒ ˜€•Š„Œ?
  • ›„œ„Š” ‘ณ  ธฐ— ‹คฅธ ํ”„กœ„Šค ‹คํ–‰ํ•ด„œ ทธ ‹คํ–‰ ฒฐ ฝ–ด“คดž.
  • ด•Œ˜ ทœ•ฝ„ CGI €ฅธ‹ค.
    • standard Input—Š” request body„ €‹ค.
    • standard Output—Š” response body „˜ธด‹ค.
    • ทธ™ธ— ธฐํƒ€ ““˜  •ณดŠ” ํ™˜ฒฝ€ˆ˜กœ „˜ธด‹ค.
  • ํ‘œ€€ RFC3875ดฉฐ IETF—„œ €ฆฌํ•œ‹ค.
  • งค ‹คํ–‰‹œงˆ‹ค ƒˆกœšด ํ”„กœ„Šค ƒ„ํ•˜ธฐ•Œฌธ— ฉ”ชจฆฌ †Œชจ€ ‹ฌํ•˜ณ  disk ‘ด งŽ‹ค.

4.4. € ดœฐฎ€ › „œ„

  • ƒˆกœšด ํ”„กœ„Šค งŒ“œŠ” „šฉ„ „—ฌณดž.
  • ณตšฉดธŒŸฌฆฌŠ” ํ”„กœ„Šค€ ‹คํ–‰ •Œ ํ•œฒˆงŒ ถˆŸฌ™€„‹ค.
    • ISAPI(ISS) : DLLดšฉ)
    • mod (apache : soดšฉ)
  • ํ˜„žฌ €žฅ งŽด ‚ฌšฉ˜Š” ฐฉ‹
  • process per request ฐฉ‹ด–ด„œ fork „šฉ€ —ฌ „ํžˆ กดžฌํ•˜ณ  š”ฒญงˆ‹ค ฉ”ชจฆฌ งŽด Š”‹ค.
  • ํ•˜€งŒ ชจ“ˆ„ š”ฒญงˆ‹ค ””Šคํฌ—„œ ฝ€ •Šธฐ •Œฌธ— กฐธˆ€ ‚˜•„กŒ‹ค.

4.5. งŽด ดœฐฎ€ ›„œ„

  • fork„šฉ„ —†• ž
  • ‹ต€ Thread

4.5.1. MPM

  • forkํ•˜Š” €„„ moduleกœ งŒ“ค–ด —ฌŸฌ ฐฉ‹„ „ ํƒํ• ˆ˜ žˆ‹ค.
  • fork Œ€‹  Thread “ธˆ˜„ žˆณ  šด˜ฒด œ„กœ ‹คฅธ ฐฉ‹„ “ธˆ˜„ žˆณ  fork ทธŒ€กœ “ธˆ˜„ žˆ‹ค.
  • ธฐกด— ํ•˜˜ ฐฉ‹€ pre-forkฐฉ‹
  • mpm-worker ฐฉ‹€ ํ”„กœ„Šค Œ€‹ — “ฐ ˆ“œ “ฐŠ” ฐฉ‹ด‹ค.
    • ํ•˜‚˜˜ ํ”„กœ„Šค— —ฌŸฌฐœ˜ “ฐ ˆ“œ งŒ“ค–ด Œ€ธฐํ•˜‹ค€ š”ฒญด ˜คฉด ํ•˜‚˜”ฉ Œ€‘ํ•˜Š” ฐฉ‹
    • thread per request ฐฉ‹
    • ‹คงŒ ชจ“ˆด Thread•ˆ „ํ•ด• ํ•œ‹ค.
  • —ฌ „ํžˆ CPU ž›„ งŽด “ด‹ค.
  • Servlet„ ฐ™€ ฐฉ‹ด‹ค.
  • context switch€ งŽด –ด‚˜„œ ํšจœจ ด€ •Šณ  ํ‰ท  ‘‹ต‹œ„ด ธธ–ด„‹ค.

4.5.2. MPM + Queue

  • ํ งŒ“ค–ด„œ context switch„šฉ„ „—ฌณด คณ  …ธ ฅํ–ˆ‹ค.
  • connection„ ํ— Œ“•„‘ณ  worker€ ํ•˜‚˜”ฉ ‚ด–ด ฒ˜ฆฌ
  • ธฐกด—„ ํ•˜ณ  žˆŠ” ฐฉ‹ดธด ํ•˜‚˜ —ฌ „ํžˆ context switchŠ” –ด‚œ‹ค.

4.6.  •ง ˜„ก ดœฐฎ€ ›„œ„

  • ํ•œ ปค„…˜ (=job)„ ž„ธํžˆ ‚ดํŽดณด•˜”‹ˆ...File I/O DB ‘ ““ Œ€ธฐงŒ ํ•˜Š” ‹œ„ด ธธ”.
  • ทธŸด I/O€„งŒ „™ธฐกœ ฒ˜ฆฌํ•ฉ‹œ‹ค.
  • กœงด ตœ†Œ ‹จœ„กœ ‚˜‰˜–ด€ณ  ‹œ„ด ˜คž˜ ฆฌŠ” ž‘—…€ „™ธฐ ฒ˜ฆฌ.
  • ˆœ„œŠ” กดžฌํ•ด•ํ•˜ธฐ •Œฌธ— Event-driven˜ ํƒ„ƒ.
  • ‹œ„ด ˜คž˜ฆฌŠ” ž‘—…€ „™ธฐกœ ฒ˜ฆฌํ•ด• ํ•˜ธฐ •Œฌธ— ‹œ„ด ˜คž˜ ฆฌŠ” ž‘—…€ ‹คฅธ ํ”„กœ„Šคกœ „˜ธฐŠ”ฒƒด ‚ซ‹ค.
  • ทธž˜„œ fork˜ •…ชฝด ‹œž‘˜Š” „ •Œ•˜œ‚˜.

4.6.1. fast CGI

  • ทธ ํ”„กœ„Šค demonœกœ งŒ“ญ‹œ‹ค!
  • ด „—Š” CGI“ค„ ‹จ… ‹คํ–‰ด €Šฅํ–ˆ‹ค!
  • fast CGIŠ” ‹จ…‹คํ–‰ Œ€‹  deamon(service)กœ ‹คํ–‰œ‹ค.
  • ํ•œฒˆ ‹คํ–‰˜–ด Œ€ธฐํ•˜ธฐ •Œฌธ— ํ”„กœ„Šค งค š”ฒญงˆ‹ค ‹ค‹œ ””Šคํฌ—„œ ถˆŸฌ˜ค€ •Š•„„ œ‹ค.
  • ํ†ต‹ ฐฉ‹€ socket
    • ”ฐ„œ ํ”„กœ„Šค€ ฌด—‡ด˜ „— †Œ“งŒ งŒ“œฉด ˜€กœ ›„œ„˜ ชจ“ˆˆ˜€ ํ™•—ฐํžˆ „–ด“ ‹ค.
    • †Œ“ด€กœ CGI€ ‹คฅธ „œ„— กดžฌํ•ด„ œ‹ค.
    • กœ“œฐธŸฐ‹ด ํŽธํ•ด„‹ค. (CGI€ ‹คฅธฐ žˆ–ด„ ˜‹ˆŒ.)
    • ฐ CGIชจ“ˆด ”ฐกœ ”ฐกœ žˆ–ด„ œ‹ค.
    • ด—„—ฐํžˆ ‹คฅธ ํ”„กœ„Šคด€กœ ชจ“ˆด “ฐ ˆ“œ •ˆ „ ํ•˜€ •Š•„„ œ‹ค!
  • ํ˜„กดํ•˜Š” €žฅ  ฅธ ฐฉ‹.

event-driven ฐฉ‹˜ ›„œ„™€ event-drivenฐฉ‹˜ WAS€ งŒ‚˜ฉด
nginx + nodejs
”ดƒ˜ž„ธํ•œ„ช…€ƒžตํ•œ‹ค.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:33
Processing time 0.0393 sec