๐Ÿ““ ์ฝ๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ๋‹ค. || part1. ํ‘œ๋ฉด์  ์ˆ˜์ค€์—์„œ์˜ ๊ฐœ์„ 

๐Ÿ““ ์ฝ๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ๋‹ค. || part1. ํ‘œ๋ฉด์  ์ˆ˜์ค€์—์„œ์˜ ๊ฐœ์„ 

[์ฝ๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ๋‹ค.]๋ฅผ ๋ณด๊ณ  ๋ฉ”๋ชจํ•œ ๋ถ€๋ถ„์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

  1. ์ฝ”๋“œ๋Š” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค. โ‡’
  2. ์ด๋ฆ„์— ์ •๋ณด ๋‹ด๊ธฐ โ‡’
  3. ์˜คํ•ดํ•  ์ˆ˜ ์—†๋Š” ์ด๋ฆ„๋“ค โ‡’
  4. ๋ฏธํ•™ โ‡’
  5. ์ฃผ์„์— ๋‹ด์•„์•ผ ํ•˜๋Š” ๋Œ€์ƒ โ‡’
  6. ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฃผ์„ ๋‹ฌ๊ธฐ โ‡’

์„œ๋ก 
์ข‹์€ ์ฝ”๋“œ๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•ด์ค€๋‹ค.
์‚ฌ์šฉํ•˜๊ธฐ์—๋„ ์ฆ๊ฒ๊ณ ,
์ž์‹ ์—๊ฒŒ๋„ ๋” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ฒ ๋‹ค๋Š” ์š•๊ตฌ๋ฅผ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๊ธฐ๋„ ํ•œ๋‹ค.



PART 1 ) ํ‘œ๋ฉด์  ์ˆ˜์ค€์—์„œ์˜ ๊ฐœ์„ 

1. ์ฝ”๋“œ๋Š” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค.

  1. ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋“ค์ด๋Š” ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.
    โ‡’ ๋ฐ”๋กœ ์ธ์ง€ ๊ฐ€๋Šฅํ•˜๋„๋ก
    time-til-understanding
  2. ๋ถ„๋Ÿ‰์ด ์ ์œผ๋ฉด ํ•ญ์ƒ ๋” ์ข‹์€๊ฐ€?
    ๋” ๋ถ„๋Ÿ‰์ด ์ ์€ ์ฝ”๋“œ๋กœ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค.
  3. ์ดํ•ด๋ฅผ ์œ„ํ•œ ์‹œ๊ฐ„์€ ๋‹ค๋ฅธ ๋ชฉํ‘œ์™€ ์ถฉ๋Œ๋˜๋Š”๊ฐ€?
    ์ •๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๊ณ  ์‹ถ์„ ๋•Œ๋Š”
    ๋’ค๋กœ ํ•œ๊ฑธ์Œ ๋ฌผ๋Ÿฌ๋‚˜์„œ ์Šค์Šค๋กœ์—๊ฒŒ ๋ฌผ์–ด๋ณด๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.

    ์ด ์ฝ”๋“œ๋Š” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€?

1-1. ํ‘œ๋ฉด์  ์ˆ˜์ค€

  • ์ข‹์€ ์ด๋ฆ„์„ ์ง“๊ณ ,
  • ์ข‹์€ ์„ค๋ช…์„ ๋‹ฌ๊ณ 
  • ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•˜๋Š” ๋”ฐ์œ„๋ฅผ ์˜๋ฏธ

โ‡’ ์ด๋Ÿฐ ์ˆ˜์ •์€ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๊ทธ ์ž๋ฆฌ์—์„œ ๊ณง๋ฐ”๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ • ๋ฐ˜์˜์ด ์‰ฝ๋‹ค.
โ‡’ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํ”๋“œ๋Š” ํ–‰์œ„์ด๋ฏ€๋กœ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.


2. ์ด๋ฆ„์— ์ •๋ณด ๋‹ด๊ธฐ

๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํ˜น์€ ํด๋ž˜์Šค ๋ช…์„ ๊ฒฐ์ •ํ•  ๋•Œ
โ‡’ ์ด๋ฆ„์— ์ •๋ณด๋ฅผ ๋‹ด์•„๋‚ด๋ผ

2-1. ํŠน์ •ํ•œ ๋‹จ์–ด ๊ณ ๋ฅด๊ธฐ

2-1.1 ๋ณดํŽธ์ ์ธ ๋‹จ์–ด ํ”ผํ•˜๊ธฐ

get์€ ์ง€๋‚˜์น˜๊ฒŒ ๋ณดํŽธ์ ์ด๋‹ค.

  • fetch
  • download

2-1-2. ๋” ํ™”๋ คํ•œ ๋‹จ์–ด ๊ณ ๋ฅด๊ธฐ

send ๋ณด๋‹ค๋Š”

  • deliver
  • dispatch(๋ณด๋‚ด๋‹ค)
  • announce
  • distribute(๋ถ„๋ฐฐํ•˜๋‹ค)
  • route

find ๋ณด๋‹ค๋Š”

  • search
  • extract
  • locate
  • recover

start ๋ณด๋‹ค๋Š”

  • launch
  • create
  • begin
  • open

make ๋ณด๋‹ค๋Š”

  • create
  • set up
  • build generate
  • compose
  • add
  • new

2-1-3. ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์ด๋ฆ„์ด ๋” ์ข‹๋‹ค.


2-2. (tmp, retval, foo๊ฐ™์€)๋ณดํŽธ์ ์ธ ์ด๋ฆ„ ํ”ผํ•˜๊ธฐ (ํ˜น์€ ์–ธ์ œ ๊ทธ๋Ÿฐ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๊นจ๋‹ซ๊ธฐ)

  • tmp, retval(: ๋ฐ˜ํ™˜๋œ ๊ฐ’), foo ๊ฐ™์€ ์ด๋ฆ„์€
    ๋‚ด ๋จธ๋ฆฌ๋กœ๋Š” ์ด๋ฆ„์„ ์ƒ๊ฐํ•ด๋‚ผ์ˆ˜ ์—†์–ด์š”..

  • ๋” ์ข‹์€ ์ด๋ฆ„์€
    ๋ณ€์ˆ˜์˜ ๋ชฉ์ ์ด๋‚˜ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ’์„ ์„ค๋ช…ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.
  • tmp : ๋ณ€์ˆ˜ ๋ชฉ์  ์ž์ฒด๊ฐ€ ์ฝ”๋“œ ๋ช‡ ์ค„์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š”
    ์ž„์‹œ์ €์žฅ์†Œ์˜ ์—ญํ• ์„ ํ•  ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•ด๋„ ok

  • ๋ฃจํ”„๋ฐ˜๋ณต์ž

    • i, j, iter, it ์ธ๋ฑ์Šค๋‚˜ ๋ฃจํ”„ ๋ฐ˜๋ณต์ž๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

    • ๋ฐฐ์—ด์ด๋ฆ„๊ณผ + ์ธ๋ฑ์Šค๋ฅผ ํ•ฉ์นœ ๋ฐ˜๋ณต์ž๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

      1
      2
      3
      4
      5
      for(let i = 0; i < clubs.size(); i++)
      for(let j = 0; j < clubs[i].members.size(); j++)
      for(let k = 0; k < users.size(); k++)
      if(clubs[i].members[k] == users[j])
      cout << "user[" << j << "] is in club["<< i <<"]" <<endl;
    • i, j, k๋ณด๋‹ค๋Š” โ‡’ club_i, members_i, users_i

    • ํ˜น์€ ci, mi, ui

  • tmp, it, retval ๊ฐ™์€ ๋ณดํŽธ์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด,
    ๊ผญ ๊ทธ๋Ÿฌ๊ฒŒ ํ•ด์•ผํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.


2-3. ์ถ”์ƒ์ ์ธ ์ด๋ฆ„ ๋Œ€์‹  ๊ตฌ์ฒด์ ์ธ ์ด๋ฆ„ ์‚ฌ์šฉํ•˜๊ธฐ


2-4. ์ ‘๋‘์‚ฌ ํ˜น์€ ์ ‘๋ฏธ์‚ฌ๋กœ ์ด๋ฆ„์— ์ถ”๊ฐ€์ ์ธ ์ •๋ณด ๋ง๋ถ™์ด๊ธฐ

2-4-1. ๋‹จ์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ’๋“ค (ex. ๋ฐ€๋ฆฌ์„ธ์ปจ์ฆˆ : ~_ms)

๋ณ€์ˆ˜๊ฐ€ ์‹œ๊ฐ„์˜ ์–‘์ด๋‚˜ ๋ฐ”์ดํŠธ์˜ ์ˆ˜์™€ ๊ฐ™์€ ์ธก์ •์น˜๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค๋ฉด,
โ‡’ ๋ณ€์ˆ˜๋ช…์— ๋‹จ์œ„๋ฅผ ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒŒ ๋„์›€์ด ๋œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
const start = (new Date()).getTime();
...
const elapsed = (new Date()).getTime() - start;
document.writeIn("Load time was: " + elapsed + "seconds");


/** ์œ„๋ณด๋‹ค๋Š” ์•„๋ž˜ **/


const start_ms = (new Date()).getTime();
...
const elapsed_ms = (new Date()).getTime() - start_ms;
document.writeIn("Load time was: " + elapsed_ms + "seconds");

2-4-2. ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์†์„ฑ ํฌํ•จํ•˜๊ธฐ (ex. ์ธ์ฝ”๋”ฉ๋œ data : data_urlenc)

  • ๋ณด์•ˆ ์ทจ์•ฝํ•œ, ๋ถˆ์•ˆ์ „ํ•จ์„ ์ธ์ง€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ
    • untrustedUrl / unsafeMessageBody โ€ฆ
      โ‡’ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„์—๋Š”
      โ‡’ trustedUrl, safeMessageBody์— ๋‹ด๋Š”๋‹ค.
  • ๋ณ€์ˆ˜์˜ ์˜๋ฏธ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ์ƒํ™ฉ์ผ๋•Œ ์‚ฌ์šฉํ•˜๊ธ”
  • ์˜ˆ์‹œ
    1. ํŒจ์Šค์›Œ๋“œ๊ฐ€ plaintext์— ๋‹ด๊ฒจ ์žˆ๊ณ , ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ์•”ํ˜ธํ™”๋˜์–ด์•ผ ํ•œ๋‹ค.
      • password ๋ณด๋‹ค๋Š” โ‡’ plaintext_password
    2. ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ์„ค๋ช…๋ฌธ์ด ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๊ธฐ ์ „์— ์ด์Šค์ผ€์ดํ”„ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด์•ผํ•œ๋‹ค.
      • comment ๋ณด๋‹ค๋Š” โ‡’ unescaped_comment
    3. html์˜ ๋ฐ”์ดํŠธ๊ฐ€ UTF-8์œผ๋กœ ๋ณ€ํ™˜๋˜์—ˆ๋‹ค.
      • html โ‡’ html_utf8
    4. ์ž…๋ ฅ๋ฐ์ดํ„ฐ๊ฐ€ url encoded ๋˜์—ˆ๋‹ค.
      • data ๋ณด๋‹ค๋Š” โ‡’ data_urlenc

2-5. ์ด๋ฆ„์ด ์–ผ๋งˆ๋‚˜ ๊ธธ์–ด์ ธ๋„ ์ข‹์€์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ

  • ์ข์€ ๋ฒ”์œ„์—์„œ๋Š” ์งง์€ ์ด๋ฆ„์ด ๊ดœ์ฐฎ๋‹ค.

2-5-1. ์•ฝ์–ด์™€ ์ถ•์•ฝํ˜•

  • ํŠน์ • ํ”„๋กœ์ ํŠธ์— ๊ตญํ•œ๋œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ์•ฝ์–ด ์‚ฌ์šฉ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋‹ค.
  • ํŒ€์— ์ƒˆ๋กœ ํ•ฉ๋ฅ˜ํ•œ ์‚ฌ๋žŒ์ด ์ด๋ฆ„์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • ์ถ•์•ฝํ•  ๋•Œ๋Š” ๋ณดํŽธ์ ์ธ ๊ฒƒ์€ ๊ดœ์ฐฎ๋‹ค.
  • string ๋Œ€์‹  str, evaluation ๋Œ€์‹  eval

2-5-2. ๋ถˆํ•„์š”ํ•œ ๋‹จ์–ด ์ œ๊ฑฐํ•˜๊ธฐ

  • convertToString()๋ณด๋‹ค๋Š” ToString()
  • DoServeLoop()๋ณด๋‹ค๋Š” ServeLoop()

2-6. ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ์ด๋ฆ„ ๊ตฌ์„ฑํ•˜๊ธฐ

< ๋‹ค๋ฅธ ํฌ๋งทํŒ… ๊ด€์Šต >

  1. jQuery ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ jQuery์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜ ์•ž์— $ ๋ถ™์ด๊ธฐ

    1
    var $all_images = $("img");
  2. ๋ฐ‘์ค„๋กœ id์•ˆ์—๋Š” ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ๋Œ€์‹œ๋กœ ํด๋ž˜์Šค ์•ˆ์— ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    1
    <div id="middle_column" class="main-content"> ...


3. ์˜คํ•ดํ•  ์ˆ˜ ์—†๋Š” ์ด๋ฆ„๋“ค

๋ณธ์ธ์ด ์ง€์€ ์ด๋ฆ„์„
โ€˜๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?โ€™๋ผ๋Š” ์งˆ๋ฌธ์„ ๋˜์ ธ๋ณด๋ฉฐ
์ฒ ์ €ํ•˜๊ฒŒ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

Filter()

  • ๊ณ ๋ฅด๋Š” ํ–‰์œ„์ธ์ง€ ์ œ๊ฑฐํ•˜๋Š” ํ–‰์œ„์ธ์ง€ ๋ชจํ˜ธํ•˜๋‹ค.
    โ‡’ ๋ณดํŽธ์ ์ธ ๋œป์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉ์„ ์ž์ œํ•˜์ž.
  • select()๋‚˜ exclude()

์ ‘๋‘์–ด**

  • ๊ฒฝ๊ณ„๋ฅผ ํฌํ•จํ•˜๋Š” ํ•œ๊ณ„๊ฐ’์„ ๋‹ค๋ฃฐ ๋•Œ๋Š” min๊ณผ max๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
  • ๊ฒฝ๊ณ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฒ”์œ„์—๋Š” first์™€ last๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
  • ๊ฒฝ๊ณ„๋ฅผ ํฌํ•จํ•˜๊ณ /๋ฐฐ์ œํ•˜๋Š” ๋ฒ”์œ„์—๋Š” begind๊ณผ end๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
  • ๋ถˆ๋ฆฌ์–ธ ๋ณ€์ˆ˜์— ์ด๋ฆ„ ๋ถ™์ด๊ธฐ
    • is / has / can / should
  • ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋Œ€์— ๋ถ€์‘ํ•˜๊ธฐ
    • get*() : ๊ฐ€๋ฒผ์šด์ ‘๊ทผ์ž(lightweight accessors)๋กœ์„œ ๋‹จ์ˆœํžˆ ๋‚ด๋ถ€ ๋ฉค๋ฒ„๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ๊ด€ํ–‰์ ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค.
  • ์ด๋ฆ„์„ ์ง“๊ธฐ ์œ„ํ•ด์„œ ๋ณต์ˆ˜์˜ ํ›„๋ณด๋ฅผ ํ‰๊ฐ€ํ•˜๊ธฐ
    • ์˜ˆ ) template, reuse, copy, inherit


4. ๋ฏธํ•™

์ข‹์€ ์†Œ์Šค ์ฝ”๋“œ๋Š” โ€˜๋ˆˆ์„ ํŽธํ•˜๊ฒŒโ€™ ํ•ด์•ผํ•œ๋‹ค.

  • ์ฝ”๋“œ์˜ ์—ด์„ ๋งž์ถฐ๋ผ
  • ์˜๋ฏธ ์žˆ๋Š” ์ˆœ์„œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•˜๋ผ
    โ‡’ ๊ฐœ์ธ์ ์ธ ๊ธฐ์ค€์ด ์žˆ์œผ๋ฉด ์ข‹์„๋“ฏ
    โ‡’ ์ค‘์š”ํ•œ ๊ฒƒ ๋จผ์ € ๋“ฑ๋“ฑ..
  • ์„ ์–ธ๋ฌธ์„ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑํ•˜๋ผ

    • ์šฐ๋ฆฌ์˜ ๋‡Œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ทธ๋ฃน๊ณผ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ผ์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ,
      ์ฝ”๋“œ๋ฅผ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์กฐ์ž‘ํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.
  • ์ฝ”๋“œ๋ฅผ ๋ฌธ๋‹จ์œผ๋กœ ์ชผ๊ฐœ๋ผ

    • ๋ฌธ๋‹จ ์ฒซ์ค„์—๋Š” ์ฃผ์„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ•ธ๋“ค๋Ÿฌ, ํ—ฌํผํ•จ์ˆ˜

    • ํ•ธ๋“ค๋Ÿฌ
      ์ด๋ฒคํŠธ์— ์‘๋‹ตํ•ด์„œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    • ํ—ฌํผํ•จ์ˆ˜
      ํ•จ์ˆ˜๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ—ฌํผํ•จ์ˆ˜



5. ์ฃผ์„์— ๋‹ด์•„์•ผ ํ•˜๋Š” ๋Œ€์ƒ

5-1. ์„ค๋ช…ํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฒƒ

  • ๋ฌด๊ฐ€์น˜ํ•œ ์ฃผ์„์€ ๋‹ฌ์ง€ ๋ง์ž
    • ์ฝ”๋“œ์—์„œ ๋น ๋ฅด๊ฒŒ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์€ ์ฃผ์„์œผ๋กœ ๋‹ฌ์ง€ ๋ง์ž
    • ์ฆ‰, ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด ๋ฌด์Šจ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉด..
    • ์„ค๋ช… ์ž์ฒด๋ฅผ ์œ„ํ•œ ์„ค๋ช…์€ ๋‹ฌ์ง€ ๋ง์ž
  • ๋‚˜์œ์ด๋ฆ„์— ์ฃผ์„์„ ๋‹ฌ์ง€๋งˆ๋ผ!! โ‡’ ๋Œ€์‹  ์ด๋ฆ„์„ ๊ณ ์ณ๋ผ
    • ์ข‹์€ ์ฝ”๋“œ > ๋‚˜์œ์ฝ”๋“œ + ์ข‹์€ ์ฃผ์„

5-2. ์ฝ”๋”ฉ์„ ํ–‰ํ•˜๋ฉด์„œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ

  1. ๊ฐ๋…์˜ ์„ค๋ช…์„ ํฌํ•จํ•˜๋ผ
    ์ค‘์š”ํ•œ ํ†ต์ฐฐ์€ ๊ธฐ๋กํ•˜์ž.

    1
    2
    // ์ด ํด๋ž˜์Šค๋Š” ์ ์  ์—‰๋ง์ด ๋˜์–ด๊ฐ€๊ณ  ์žˆ๋‹ค. ์–ด์ฉŒ๋ฉด 'ResourceNode' 
    // ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ •๋ฆฌํ•ด์•ผํ• ์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋‹ค.
  2. ์ฝ”๋“œ์— ์žˆ๋Š” ๊ฒฐํ•จ์„ ์„ค๋ช…ํ•˜๋ผ

    1
    2
    // TODO: ๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ผ.
    // TODO(๋”์Šคํ‹ด): JPEG๋ง๊ณ  ๋‹ค๋ฅธ ์ด๋ฏธ์ง€ ํฌ๋งท๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • ์ฝ”๋“œ๊ฐ€ ๋ถˆ์™„์ „ ํ•  ๋•Œ๋Š” ๊ฐœ์„  ์•„์ด๋””์–ด๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.
    • ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์‹œ
      • TODO: ์•„์ง ํ•˜์ง€ ์•Š์€ ์ผ
      • FIXME: ์˜ค์ž‘๋™์„ ์ผ์œผํ‚จ๋‹ค๊ณ  ์•Œ๋ ค์ง„ ์ฝ”๋“œ
      • HACK: ์•„๋ฆ„๋‹ต์ง€ ์•Š์€ ํ•ด๊ฒฐ์ฑ…
      • XXX: ์œ„ํ—˜! ์—ฌ๊ธฐ ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค
      • TextMate: ESC
  3. ์ƒ์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช…

    • ๊ทธ ์ƒ์ˆ˜๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€, ๊ทธ๊ฒƒ์ด ์™œ ํŠน์ •ํ•œ ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋Š”์ง€ โ€˜์‚ฌ์—ฐโ€™์ด ์กด์žฌํ•˜๊ธฐ ๋งˆ๋ จ
    • ์‚ฌ์—ฐ์„ ์ฃผ์„์— ๋‚จ๊ธฐ๋ฉด ์ข‹๋‹ค. ๋ช…ํ™•ํ•œ ๋ณ€์ˆ˜๋ช…์ด๋ฉด ๊ตฌ์ง€ ์•ˆ๋ถ™์—ฌ๋„ ๋จ.

5-3. ์ฝ”๋“œ์ฝ๋Š” ์‚ฌ๋žŒ์˜ ์ž…์žฅ์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์œ ์ถ”ํ•˜๊ธฐ

  • ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™์€ ์ง€๋ฌธ ์˜ˆ์ธกํ•˜๊ธฐ
  • ์‚ฌ๋žŒ๋“ค์ด ์‰ฝ๊ฒŒ ๋น ์งˆ ๊ฒƒ ๊ฐ™์€ ํ•จ์ •์„ ๊ฒฝ๊ณ ํ•˜๊ธฐ

5-3-1. ํฐ ๊ทธ๋ฆผ์— ๋Œ€ํ•œ ์ฃผ์„

ํŒ€์— ์ƒˆ๋กญ๊ฒŒ ํ•ฉ๋ฅ˜ํ•œ ์‚ฌ๋žŒ๋“ค์€ โ€˜ํฐ ๊ทธ๋ฆผโ€™์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๋Š”๋‹ค. ํด๋ž˜์Šค๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ , ์ „์ฒด ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜๋Ÿฌ ๋‹ค๋‹ˆ๊ณ , ์ถœ๋ฐœ์ ์ด ์–ด๋””์ธ์ง€ ๋“ฑ์„ ํŒŒ์•…ํ•ด์•ผํ•œ๋‹ค.

  • ์ด๋Š” ์ƒ์œ„ ์ˆ˜์ค€ ์ฃผ์„์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ํŒŒ์ผ ์ˆ˜์ค€์˜ ์ฃผ์„์˜ ์„ค๋ช…์€
    • ํŒŒ์ผ ์‹œ์Šคํ…œ์— ํŽธ๋ฆฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ—ฌํผ ํ•จ์ˆ˜๋“ค์„ ๋‹ด๊ณ  ์žˆ๋‹ค.
    • ํŒŒ์ผ์˜ ํผ๋ฏธ์…˜๊ณผ ๋‹ค๋ฅธ ์ž์„ธํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

5-3-2. ์š”์•ฝ ์ฃผ์„

  • ํ•จ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ๊ธ€๋จธ๋ฆฌ ์š”์•ฝ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฃผ์„์„ ๋ณด๊ณ  ์š”์ ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
    1
    2
    3
    4
    5
    6
    7
    8
    def GenerateUserReport():
    # ์ด ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ lock์„ ์–ป๋Š”๋‹ค.
    ...
    # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ฝ๋Š”๋‹ค.
    ...
    # ์ •๋ณด๋ฅผ ํŒŒ์ผ์— ์ž‘์„ฑํ•œ๋‹ค.
    ...
    # ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ lock์„ ๋˜๋œ๋ ค ๋„ฃ๋Š”๋‹ค.

6. ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฃผ์„ ๋‹ฌ๊ธฐ

  • ์ฃผ์„์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•˜๋ผ
  • ๋ชจํ˜ธํ•œ ๋Œ€๋ช…์‚ฌ๋Š” ํ”ผํ•˜๋ผ
  • ์—‰ํ„ฐ๋ฆฌ ๋ฌธ์žฅ์„ ๋‹ค๋“ฌ์–ด๋ผ
  • ํ•จ์ˆ˜์˜ ๋™์ž‘์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ผ
  • ์ฝ”๋„ˆ์ผ€์ด์Šค๋ฅผ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์ž…/์ถœ๋ ฅ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
    • ์˜ˆ์‹œ๋ฅผ ์ฃผ์„์— ์ ๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.
    • ์ธ์ž๋กœ ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  (์ž…๋ ฅ)
      ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€๋ฅผ ์ ์œผ๋ฉด ๋œ๋‹ค. (์ถœ๋ ฅ)
  • ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋ช…์‹œํ•˜๋ผ โ†’ ๋ฒ„๊ทธ๋ฅผ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ฃผ์„
  • ์ •๋ณด ์ถ•์•ฝํ˜• ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
    • ๊ฒฝํ—˜์ ์ธ, ์ฃผ๋จน๊ตฌ๊ตฌ์‹, ์ˆœ์ง„ํ•œ ํ•ด๋ฒ•๊ณผ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ์˜๋ฏธ๋ฅผ ํ•จ์ถ•ํ•˜๋Š” ๋‹จ์–ด๋‚˜ ํ‘œํ˜„์ด ๋งŽ๋‹ค.