0222 - 0229
# 0222 - 0229
# 0222 - DATA ์์ฑ
# html ํ๊ทธ ๋ด์์ data๋ฅผ ๋ค๋ฃธ
- data-{name} ๋ก์์
- ํ์ดํ์ผ๋ก ๊ตฌ๋ถ, ์ ๊ทผ์ ๋์๋ค์ camelCase๋ก ๋ณํ
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ๊ทผ
- document.getElementById('selector').dataset.{name}
- ์ฐ๋ ๊ฒฝ์ฐ๋ = ๋ก ๊ฐ ๋์
- ์ ์ด์ฟผ๋ฆฌ์์ ์ ๊ทผ
- $('selector').data(key, value);
- $('selector').data(key);
- $('selector').removeData('key');
- css์์ ์ ๊ทผ
'selector'[data-{name=๊ฐ}] {
}
# 0223 - HTML ์ด๋ฉ์ผ ํ ํ๋ฆฟ ๋ง๋ค๊ธฐ
1. ๊ธฐ๋ณธ htmlํ ์์ฑ
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Demystifying Email Design</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
</html>
2. ๋๋ถ๋ถ์ ๋ฉ์ผ์์ body์ div๋ฅผ ์ง์ ํ์ง ์๊ธฐ ๋๋ฌธ์ tableํ๊ทธ๋ฅผ ์์ฑ
<body style="margin: 0; padding: 0;">
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
Hello!
</td>
</tr>
</table>
</body>
3. html ํ๊ทธ์์ ์ง์ํ๋ ์์ฑ์ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉ
<table align="center" border="1" cellpadding="0" cellspacing="0" width="600">
<tr>
<td bgcolor="#70bbd9">
Row 1
</td>
</tr>
<tr>
<td bgcolor="#ffffff">
Row 2
</td>
</tr>
<tr>
<td bgcolor="#ee4c50">
Row 3
</td>
</tr>
</table>
4. ์ด๋ฏธ์ง ํ๊ทธ ์ฌ์ฉ์
<td align="center" bgcolor="#70bbd9" style="padding: 40px 0 30px 0;">
<img src="images/h1.gif" alt="Creating Email Magic" width="300" height="230" style="display: block;" />
</td>
5. ์์ญ์ ๋ ๋๋๋
<td bgcolor="#ffffff" style="padding: 40px 30px 40px 30px;">
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
Row 1
</td>
</tr>
<tr>
<td>
Row 2
</td>
</tr>
<tr>
<td>
Row 3
</td>
</tr>
</table>
</td>
6. style์ inline ์คํ์ผ๋ก
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="260" valign="top">
Column 1
</td>
<td style="font-size: 0; line-height: 0;" width="20">
</td>
<td width="260" valign="top">
Column 2
</td>
</tr>
</table>
# 0224 - C๋์ ํ ๋น
# void *malloc(size t size)
- ๋ฐํ์ ํ๊ฒฝ์์ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น
- ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ํ ๋๋ Heap์์ญ์ ํ ๋น
- ์ฑ๊ณต ํ๋ฉด ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ์ ์ฒซ๋ฒ์งธ ์ฃผ์ ๋ฆฌํด
- ์คํจํ๋ฉด NULL์ ๋ฆฌํด
# void free(ํด์ ํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ)
- malloc์ผ๋ก ์์ฑ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ฑฐํจ.
# 0225 - JavaScript - $.each / forEach / some / map
# $.each()
- $.each(Array, callback function(index, value){
});
- ๋ฐํ๊ฐ ํด๋น ๋ฐฐ์ด
# forEach
- Array.forEach(callback function (value, index, array) {
});
- ๋ฐํ๊ฐ ์์
# some
- Array.some(callback function (value, index, array) {
});
- ์ฐพ๋ ๊ฐ๊ณผ ๋น๊ตํ์ฌ return true ์ ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ
# map
- Array.map(callback(currentValue[, index[, array]])[, thisArg]);
- return์ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด callback์ ์คํํ๊ณ ์คํ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์ ๋ฐฐ์ด์ ๋ฆฌํดํจ
# 0226 - Spring AOP
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก "๊ธฐ๋ฅ์ ํต์ฌ ๋น์ง๋์ค ๊ธฐ๋ฅ๊ณผ ๊ณตํต ๊ธฐ๋ฅ์ผ๋ก ๊ตฌ๋ถํ๊ณ , ๊ณตํต๊ธฐ๋ฅ์ ๊ฐ๋ฐ์์ ์ฝ๋ ๋ฐ์์ ํ์ํ ์์ ์ ์ ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ"์ด๋ค.
# advice / pointcut / joinpoint
# aspect ๊ตฌ์ฑ
- @Aspect์ ๋ฑ๋ก
- advice ๋ฉ์๋๋ฅผ ์์ฑ
- advice์ joinpoint๋ฅผ ๋ฑ๋ก
- joinpoint์ pointcut์ ์ง์
# 0227 - lombok
# ์ฃผ์์ฌํญ
- @Data ์ง์ํ๊ธฐ
- ๋ฌด๋ถ๋ณํ @Setter ์ง์ํ๊ธฐ
- @ToString ์๋ฐฉํฅ ์ํ ์ฐธ์กฐ ๋ฌธ์ ํผํ๊ธฐ
- @EqualsAndHashCode ๋จ๋ฐ ์ง์ํ๊ธฐ
- ์ฑ๋ฅ ์ด์ ๋ฐ์ํ ์ ์์ (Set ์๋ฃ๊ตฌ์กฐ)
- ํด๋์ค ์๋จ์ @Builder๋ ์ง์ํ๊ธฐ
- ํด๋์ค ์์ @Builder ์ฌ์ฉ ์ @AllArgsConstructor ํจ๊ณผ ๋ฐ์
- ์์ฑ์ ์ @Builder์ ์ ์ ํ ๊ถํ ๋ถ์ฌ
- ์์ฑ์์ ์ ๊ทผ ์ง์์๋ ์ต์ํ
- @NoArgsConstructor(access = AccessLevel.PRIVATE)
# 0228 - ์์กด์ฑ ์ฃผ์ ๋ฐฉ๋ฒ
# ์์ฑ์ ์ฃผ์ (Constructor Injection)
์์ฑ์๋ฅผ ํตํด ์์กด ๊ด๊ณ๋ฅผ ์ฃผ์
- ์์ฑ์์ ํธ์ถ ์์ ์ 1ํ ํธ์ถ ๋๋๊ฒ์ด ๋ณด์ฅ
- ์ฃผ์ ๋ฐ์ ๊ฐ์ฒด๊ฐ ๋ณํ์ง ์๊ฑฐ๋, ๋ฐ๋์ ๊ฐ์ฒด์ ์ฃผ์ ์ด ํ์ํ ๊ฒฝ์ฐ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉ
- ์์ฑ์๊ฐ 1๊ฐ๋ง ์์๊ฒฝ์ฐ @Autowired๋ฅผ ์๋ตํด๋ ์ฃผ์ ๊ฐ๋ฅ
# ์์ ์ ์ฃผ์ (Setter ์ฃผ์ , Setter Injection)
์ฃผ์ ๋ฐ๋ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ
# ํ๋ ์ฃผ์ (Field Injection)
ํ๋์ ๋ฐ๋ก ์์กด ๊ด๊ณ ์ฃผ์
- ์ธ๋ถ์์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅ
- ํ๋ ์ฃผ์ ์ ๋ฐ๋์ DI ํ๋ ์์ํฌ๊ฐ ์กด์ฌํด์ผํจ ๋ฐ๋ผ์ ์ง์ํด์ผํจ
# ์ผ๋ฐ ๋ฉ์๋ ์ฃผ์
# ์์ฑ์ ์ฃผ์ ์ ์ฌ์ฉํด์ผ ํ๋ ์ด์
Spring์ ํฌํจํ DI ํ๋ ์์ํฌ์ ๋๋ถ๋ถ์ด ์์ฑ์ ์ฃผ์ ์ ๊ถ์ฅ
- ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ ํ๋ณด
- ์์กด๊ด๊ณ ์ฃผ์ ์ ๋ณ๊ฒฝ์ด ํ์ํ ์ํฉ์ ๊ฑฐ์ ์๋ค. ์์ฑ์ ์ฃผ์ ์ ํตํด ๋ณ๊ฒฝ์ ๊ฐ๋ฅ์ฑ์ ๋ฐฐ์ ํ๊ณ ๋ถ๋ณ์ฑ์ ๋ณด์ฅ
- ํ ์คํธ ์ฝ๋์ ์์ฑ
- ํ๋ ์ฃผ์ ์ผ๋ก ์์ฑ๋ ๊ฒฝ์ฐ์๋ ์์ํ ์๋ฐ ์ฝ๋๋ก ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅ
- final ํค์๋ ์์ฑ ๋ฐ Lombok๊ณผ์ ๊ฒฐํฉ
- ์ปดํ์ผ ์์ ์ ๋๋ฝ๋ ์์กด์ฑ์ ํ์ธ ํ ์ ์์
- ์์ฑ์ ์ฃผ์ ์ ์ ์ธํ ๋ค๋ฅธ ์ฃผ์ ๋ฐฉ๋ฒ๋ค์ ๊ฐ์ฒด์ ์์ฑ ์ดํ์ ํธ์ถ ๋๋ฏ๋ก final ํค์๋๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค.
- finalํค์๋๋ฅผ ๋ถ์ผ ์ ์์์ผ๋ก Lombok๊ณผ ๊ฒฐํฉ, ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑ ํ ์ ์๋ค.
- ์ํ ์ฐธ์กฐ ์๋ฌ ๋ฐฉ์ง
- ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋ ์์ (๊ฐ์ฒด์ ์์ฑ ์์ )์ ์ํ ์ฐธ์กฐ ์๋ฌ๋ฅผ ๋ฐฉ์ง