**[์ฝ๊ธฐ ์ข์ ์ฝ๋๊ฐ ์ข์ ์ฝ๋๋ค.]**๋ฅผ ๋ณด๊ณ ๋ฉ๋ชจํ ๋ถ๋ถ์ ์ ๋ฆฌํ์ต๋๋ค.
๋ชฉ์ฐจ
- ์ฝ๋๋ ์ดํดํ๊ธฐ ์ฌ์์ผ ํ๋ค. โ
- ์ด๋ฆ์ ์ ๋ณด ๋ด๊ธฐ โ
- ์คํดํ ์ ์๋ ์ด๋ฆ๋ค โ
- ๋ฏธํ โ
- ์ฃผ์์ ๋ด์์ผ ํ๋ ๋์ โ
- ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ฃผ์ ๋ฌ๊ธฐ โ
์๋ก
์ข์ ์ฝ๋๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ฌํด์ค๋ค.
์ฌ์ฉํ๊ธฐ์๋ ์ฆ๊ฒ๊ณ ,
์์ ์๊ฒ๋ ๋ ์ข์ ์ฝ๋๋ฅผ ๋ง๋ค์ด์ผ ํ๊ฒ ๋ค๋ ์๊ตฌ๋ฅผ ๋ถ๋ฌ์ผ์ผํค๊ธฐ๋ ํ๋ค.
PART 1 ) ํ๋ฉด์ ์์ค์์์ ๊ฐ์
1. ์ฝ๋๋ ์ดํดํ๊ธฐ ์ฌ์์ผ ํ๋ค.
- ์ฝ๋๋ ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ๊ฒ์ ์ดํดํ๋ ๋ฐ ๋ค์ด๋ ์๊ฐ์ ์ต์ํํ๋ ๋ฐฉ์์ผ๋ก ์์ฑ๋์ด์ผ ํ๋ค.
โ ๋ฐ๋ก ์ธ์ง ๊ฐ๋ฅํ๋๋ก
time-til-understanding - ๋ถ๋์ด ์ ์ผ๋ฉด ํญ์ ๋ ์ข์๊ฐ?
๋ ๋ถ๋์ด ์ ์ ์ฝ๋๋ก ๋๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ๊ทธ๊ฒ์ด ๋ ๋ซ๋ค. - ์ดํด๋ฅผ ์ํ ์๊ฐ์ ๋ค๋ฅธ ๋ชฉํ์ ์ถฉ๋๋๋๊ฐ?
์ ๋ฆฌ๊ฐ ๋์ง ์์ ์ฝ๋๋ฅผ ๊ณ ์น๊ณ ์ถ์ ๋๋
๋ค๋ก ํ๊ฑธ์ ๋ฌผ๋ฌ๋์ ์ค์ค๋ก์๊ฒ ๋ฌผ์ด๋ณด๋ ๊ฒ ์ค์ํ๋ค.
์ด ์ฝ๋๋ ์ดํดํ๊ธฐ ์ฌ์ด๊ฐ?
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
5for(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 | const start = (new Date()).getTime(); |
2-4-2. ๋ค๋ฅธ ์ค์ํ ์์ฑ ํฌํจํ๊ธฐ (ex. ์ธ์ฝ๋ฉ๋ data : data_urlenc
)
- ๋ณด์ ์ทจ์ฝํ, ๋ถ์์ ํจ์ ์ธ์งํ๊ณ ์ถ์ ๋
- untrustedUrl / unsafeMessageBody โฆ
โ ์์ ํ๊ฒ ๋ง๋๋ ํจ์ ํธ์ถ ํ์๋
โ trustedUrl, safeMessageBody์ ๋ด๋๋ค.
- untrustedUrl / unsafeMessageBody โฆ
- ๋ณ์์ ์๋ฏธ๋ฅผ ์ ๋๋ก ์ดํดํ๋ ๊ฒ์ด ์ค์ํ ์ํฉ์ผ๋ ์ฌ์ฉํ๊ธ
- ์์
- ํจ์ค์๋๊ฐ plaintext์ ๋ด๊ฒจ ์๊ณ , ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ ์ ๋ฐ๋์ ์ํธํ๋์ด์ผ ํ๋ค.
- password ๋ณด๋ค๋ โ plaintext_password
- ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์ค๋ช ๋ฌธ์ด ํ๋ฉด์ ๋ํ๋๊ธฐ ์ ์ ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๊ฐ ๋์ด์ผํ๋ค.
- comment ๋ณด๋ค๋ โ unescaped_comment
- html์ ๋ฐ์ดํธ๊ฐ UTF-8์ผ๋ก ๋ณํ๋์๋ค.
- html โ html_utf8
- ์ ๋ ฅ๋ฐ์ดํฐ๊ฐ url encoded ๋์๋ค.
- data ๋ณด๋ค๋ โ data_urlenc
2-5. ์ด๋ฆ์ด ์ผ๋ง๋ ๊ธธ์ด์ ธ๋ ์ข์์ง ๊ฒฐ์ ํ๊ธฐ
- ์ข์ ๋ฒ์์์๋ ์งง์ ์ด๋ฆ์ด ๊ด์ฐฎ๋ค.
2-5-1. ์ฝ์ด์ ์ถ์ฝํ
ํน์ ํ๋ก์ ํธ์ ๊ตญํ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ฝ์ด ์ฌ์ฉ์ ์ข์ ์๊ฐ์ด ์๋๋ค.
ํ์ ์๋ก ํฉ๋ฅํ ์ฌ๋์ด ์ด๋ฆ์ด ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ดํดํ ์ ์์๊น?
์ถ์ฝํ ๋๋ ๋ณดํธ์ ์ธ ๊ฒ์ ๊ด์ฐฎ๋ค.
string ๋์
str
, evaluation ๋์eval
2-5-2. ๋ถํ์ํ ๋จ์ด ์ ๊ฑฐํ๊ธฐ
- convertToString()๋ณด๋ค๋
ToString()
- DoServeLoop()๋ณด๋ค๋
ServeLoop()
2-6. ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๊ฒ ์ด๋ฆ ๊ตฌ์ฑํ๊ธฐ
< ๋ค๋ฅธ ํฌ๋งทํ **๊ด์ต** >
- jQuery ํจ์ ํธ์ถ์ jQuery์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ณ์ ์์
$
๋ถ์ด๊ธฐ1
var $all_images = $("img");
- ๋ฐ์ค๋ก 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
2// ์ด ํด๋์ค๋ ์ ์ ์๋ง์ด ๋์ด๊ฐ๊ณ ์๋ค. ์ด์ฉ๋ฉด 'ResourceNode'
// ํ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์ ๋ฆฌํด์ผํ ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. - ์ฝ๋์ ์๋ ๊ฒฐํจ์ ์ค๋ช
ํ๋ผ
1
2// TODO: ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ผ.
// TODO(๋์คํด): JPEG๋ง๊ณ ๋ค๋ฅธ ์ด๋ฏธ์ง ํฌ๋งท๋ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํ๋ค.
- ์ฝ๋๊ฐ ๋ถ์์ ํ ๋๋ ๊ฐ์ ์์ด๋์ด๋ฅผ ์ค๋ช ํ๋ ๊ฒ๋ ์ข๋ค.
- ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์
TODO:
์์ง ํ์ง ์์ ์ผFIXME:
์ค์๋์ ์ผ์ผํจ๋ค๊ณ ์๋ ค์ง ์ฝ๋HACK:
์๋ฆ๋ต์ง ์์ ํด๊ฒฐ์ฑXXX:
์ํ! ์ฌ๊ธฐ ํฐ ๋ฌธ์ ๊ฐ ์๋คTextMate:
ESC
- ์์์ ๋ํ ์ค๋ช
- ๊ทธ ์์๊ฐ ๋ฌด์์ ํ๋์ง, ๊ทธ๊ฒ์ด ์ ํน์ ํ ๊ฐ์ ๊ฐ๊ฒ ๋์๋์ง โ์ฌ์ฐโ์ด ์กด์ฌํ๊ธฐ ๋ง๋ จ
- ์ฌ์ฐ์ ์ฃผ์์ ๋จ๊ธฐ๋ฉด ์ข๋ค. ๋ช ํํ ๋ณ์๋ช ์ด๋ฉด ๊ตฌ์ง ์๋ถ์ฌ๋ ๋จ.
5-3. ์ฝ๋์ฝ๋ ์ฌ๋์ ์ ์ฅ์์ ํ์ํ ์ ๋ณด๊ฐ ๋ฌด์์ธ์ง ์ ์ถํ๊ธฐ
- ๋์ฌ ๊ฒ ๊ฐ์ ์ง๋ฌธ ์์ธกํ๊ธฐ
- ์ฌ๋๋ค์ด ์ฝ๊ฒ ๋น ์ง ๊ฒ ๊ฐ์ ํจ์ ์ ๊ฒฝ๊ณ ํ๊ธฐ
5-3-1. ํฐ ๊ทธ๋ฆผ์ ๋ํ ์ฃผ์
ํ์ ์๋กญ๊ฒ ํฉ๋ฅํ ์ฌ๋๋ค์ โํฐ ๊ทธ๋ฆผโ์ ์ดํดํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๋๋ค. ํด๋์ค๋ค์ด ์ด๋ป๊ฒ ์ํธ์์ฉํ๊ณ , ์ ์ฒด ์์คํ ์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ํ๋ฌ ๋ค๋๊ณ , ์ถ๋ฐ์ ์ด ์ด๋์ธ์ง ๋ฑ์ ํ์ ํด์ผํ๋ค.
- ์ด๋ **์์ ์์ค ์ฃผ์**์ ํฌํจ๋์ด์ผ ํ๋ค.
- ํ์ผ ์์ค์ ์ฃผ์์ ์ค๋ช
์
- ํ์ผ ์์คํ ์ ํธ๋ฆฌํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํฌํผ ํจ์๋ค์ ๋ด๊ณ ์๋ค.
- ํ์ผ์ ํผ๋ฏธ์ ๊ณผ ๋ค๋ฅธ ์์ธํ ์ธ๋ถ ์ฌํญ์ ์ฒ๋ฆฌํ๋ค.
5-3-2. ์์ฝ ์ฃผ์
- ํจ์๊ฐ ์ํํ๋ ๊ธฐ๋ฅ์ ๊ธ๋จธ๋ฆฌ ์์ฝ ์ญํ ์ ์ํํ ์ ์๋ค.
- ์ฃผ์์ ๋ณด๊ณ ์์ ์ ํ์
ํ ์ ์๋ค.
1
2
3
4
5
6
7
8def GenerateUserReport():
# ์ด ์ฌ์ฉ์๋ฅผ ์ํ lock์ ์ป๋๋ค.
...
# ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ฝ๋๋ค.
...
# ์ ๋ณด๋ฅผ ํ์ผ์ ์์ฑํ๋ค.
...
# ์ฌ์ฉ์๋ฅผ ์ํ lock์ ๋๋๋ ค ๋ฃ๋๋ค.
6. ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ฃผ์ ๋ฌ๊ธฐ
- ์ฃผ์์ ๊ฐ๊ฒฐํ๊ฒ ํ๋ผ
- ๋ชจํธํ ๋๋ช ์ฌ๋ ํผํ๋ผ
- ์ํฐ๋ฆฌ ๋ฌธ์ฅ์ ๋ค๋ฌ์ด๋ผ
- ํจ์์ ๋์์ ๋ช ํํ๊ฒ ์ค๋ช ํ๋ผ
- ์ฝ๋์ผ์ด์ค๋ฅผ ์ค๋ช
ํด์ฃผ๋ ์
/์ถ๋ ฅ ์๋ฅผ ์ฌ์ฉํ๋ผ
- ์์๋ฅผ ์ฃผ์์ ์ ๋ ๊ฒ๋ ์ข๋ค.
- ์ธ์๋ก ์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๊ณ (์
๋ ฅ)
์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋์ง๋ฅผ ์ ์ผ๋ฉด ๋๋ค. (์ถ๋ ฅ)
- ์ฝ๋์ ์๋๋ฅผ ๋ช ์ํ๋ผ โ ๋ฒ๊ทธ๋ฅผ ์ก์ ์ ์๋ค.
- ์ด๋ฆ์ ๊ฐ์ง ํจ์ ํ๋ผ๋ฏธํฐ ์ฃผ์
- ์ ๋ณด ์ถ์ฝํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ผ
- ๊ฒฝํ์ ์ธ, ์ฃผ๋จน๊ตฌ๊ตฌ์, ์์งํ ํด๋ฒ๊ณผ ๊ฐ์ด ๋ค์ํ ์๋ฏธ๋ฅผ ํจ์ถํ๋ ๋จ์ด๋ ํํ์ด ๋ง๋ค.