0823 - 0829
# 0823 - 0829
# 0824 - @ConfigurationProperties
# @ConfigurationProperties
ConfigurationProperties๋ properties ํ์ผ์ ์ค์ ํ property ๊ฐ์ ์๋ฐ object์ ๋งคํํ์ฌ ํด๋น ๊ฐ์ ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ ํด์ค๋ค.
@Data @ConfigurationProperties(prefix = "test.sample") public class TestSampleProperties {
private String testStr;
private int testInt;
}
- java class์ ๋ณ์๋ช ์ camel case
- properties๋ -ํ์ดํ์ ์ฌ์ฉํ snake case
test.sample.test-str=ํ
์คํธ ๋ฌธ์์ด ๊ฐ test.sample.test-int=1234
@Configuration
@EnableConfigurationProperties(TestSampleProperties.class)
@PropertySource("classpath:TestSample.properties")
public class TestSampleConfiguration {
}
- @EnableConfigurationProperties ์ ์ธ์ ํด๋น Properties class๋ก object๋ฅผ ์์ฑ.
- @PropertySource๋ properties ํ์ผ์ ํธ์ถ
- ์ฌ๋ฌ๊ฐ ์ ์ธ ๊ฐ๋ฅ prefix๋ก ๊ตฌ๋ถ
@Service public class TestSampleService {
@Autowired
private TestSampleProperties testSampleProperties;
public void test() {
String testStr = testSampleProperties.getTestStr(); // ํด๋น ๊ฐ์ ์ฌ์ฉ
}
}
# @Conditional*
# @ConditionalOnClass
@ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class, AnnotatedElement.class })
- ํด๋น ์ค์ ๋ class๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธ. ์ฐธ์กฐ๋ jar๊ฐ ์๋์ง ํ์
@ConditionalOnProperty(prefix = "spring.aop", name = "auto", havingValue = "true", matchIfMissing = true)
- ์ค์ ๋ property๊ฐ์ด ์๋์ง ํ์ธ
# 0825 - git hub ์ธ์ฆ ๊ด๋ จ ์ด์
# ์์คํธ๋ฆฌ ๊ณ์ ์ ๋ณด ์๋ ์ญ์
- ์์คํธ๋ฆฌ๋ฅผ ์ด์ฉํ ์ ๊ถํ ์ค๋ฅ๋ก ์คํจ
remote: HTTP Basic: Access denied fatal: Authentication failed for https://gitlab.com/{{project}}
- ์ค์ ํ์ผ ์ ๊ฑฐ
* Windows
~\AppData\Local\Atlassian\SourceTree\userhost ~\AppData\Local\Atlassian\SourceTree\passwd
* Mac OS
~/Library/Application Support/SourceTree
hostusernamemap
,{๊ณ์ }@STAuth-github.com
ํ์ผ ์ญ์
# ์์คํธ๋ฆฌ ํ ํฐ์ผ๋ก ์ธ์ฆํ๊ธฐ
8์ 13์ผ ์ดํ github ์ธ์ฆ ์ ์ฑ ๋ณ๊ฒฝ
Github
Settings
Developer settings
Personal access tokens
Generate new token
- ํ ํฐ ๋ฐํ
๊ณ์ ์ถ๊ฐ
๊นํ๋ธ ์ ํ
๋ฒ ์ด์ง ์ ํ
์ฌ์ฉ์ ์ด๋ฆ
์ํธ = Access token
ํ๋กํ ์ฝ SSH
- ์์คํธ๋ฆฌ ๊ณ์ ์ถ๊ฐ
# 0826 - ์ด๋ ธํ ์ด์
# ์ด๋ ธํ ์ด์ ์ด๋?
์ด๋ ธํ ์ด์ ์ด๋ ๋ฉํ๋ฐ์ดํฐ๋ผ๊ณ ๋ณผ ์ ์๋ค. ํ๋ก๊ทธ๋จ ์คํ ๊ด์ ์์ ๋ณด๋ฉด ํ๋ก๊ทธ๋จ์ด ์ฒ๋ฆฌํ ๋ฉ์ธ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ์คํ๊ณผ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง ์๋ ค์ฃผ๋ ์๋ธ๋ฐ์ดํฐ๋ผ๊ณ ๋ณผ ์ ์๋ค.
# ์ด๋ ธํ ์ด์ ์ ๊ธฐ๋ฅ
์ปดํ์ผ๋ฌ์ ์ฝ๋ ๋ฌธ๋ฒ ์๋ฌ๋ฅผ ์ฒดํฌํ๋๋ก ์ ๋ณด ์ ๊ณต
๊ฐ๋ฐ ํด์์ ๋น๋๋ ๋ฐฐ์น์ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์๋์ง ์ ๋ณด ์ ๊ณต
์คํ ์ ํน์ ๊ธฐ๋ฅ์ ์คํํ๋๋ก ์ ๋ณด ์ ๊ณต
์ฌ์ฉ์ด์ ?
=> ์ฝ๋์ ๋ถ๊ฐ์ ์ธ ์ค๋ช ์ ์ญํ . ๋ฐ๋ณต์ ์ผ๋ก ์ฒ๋ฆฌํด์ผํ๋ ์ผ๋ค์ ์๋ํ
# ์ด๋ ธํ ์ด์ ์ ์
@Target({ElementType.[์ ์ฉ๋์]})
@Retention(RetentionPolicy.[์ ๋ณด์ ์ง๋๋ ๋์])
public @interface [์ด๋
ธํ
์ด์
๋ช
]{
public ํ์
elementName() [default ๊ฐ]
...
}
@Target({ElementType.[์ ์ฉ๋์]}) : ์ด๋ ํ ๊ฐ์ ์ด๋ ธํ ์ด์ ์ ์ ์ฉํ ๊ฒ์ธ์ง
- TYPE : ํด๋์ค, ์ธํฐํ์ด์ค, ์ด๊ฑฐ ํ์
- ANNOTATION_TYPE : ์ด๋ ธํ ์ด์
- FIELD : ํ๋
- CONSTRUCTOR : ์์ฑ์
- METHOD : ๋ฉ์๋
- LOCAL_VARIABLE : ๋ก์ปฌ ๋ณ์
- PACKAGE : ํจํค์ง
@Retention(RetentionPolicy.[์ ๋ณด์ ์ง๋๋ ๋์]) : ์ด๋ ธํ ์ด์ ๊ฐ๋ค์ ์ธ์ ๊น์ง ์ ์งํ ๊ฒ์ธ์ง ๊ฐ์ ์ ๋ ฅ. ๋๋ถ๋ถ ์ด๋ ธํ ์ด์ ์ Runtime์์ ์ฌ์ฉ
- SOURCE : ์์ค์์์๋ง ์ด๋ ธํ ์ด์ ์ ๋ณด๋ฅผ ์ ์งํ๋ค. ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ ๋๋ง ์๋ฏธ๊ฐ ์์ผ๋ฉฐ, ๋ฐ์ดํธ ์ฝ๋ ํ์ผ์๋ ์ ๋ณด๊ฐ ๋จ์ง ์๋๋ค.
- CLASS : ๋ฐ์ดํธ ์ฝ๋ ํ์ผ๊น์ง ์ด๋ ธํ ์ด์ ์ ๋ณด๋ฅผ ์ ์งํ๋ค. ํ์ง๋ง ๋ฆฌํ๋ ์ ์ ์ด์ฉํด์ ์ด๋ ธํ ์ด์ ์ ๋ณด๋ฅผ ์ป์ ์๋ ์๋ค.
- RUNTIME : ๋ฐ์ดํธ ์ฝ๋ ํ์ผ๊น์ง ์ด๋ ธํ ์ด์ ์ ๋ณด๋ฅผ ์ ์งํ๋ฉด์ ๋ฆฌํ๋ ์ ์ ์ด์ฉํด์ ๋ฐํ์์ ์ด๋ ธํ ์ด์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.
# 0827 - HTTP Live Streaming (HLS)
# HLS๋?
HTTP ๊ธฐ๋ฐ ์ ์ ๋นํธ๋ ์ดํธ ์คํธ๋ฆฌ๋ฐ ํต์ ํ๋กํ ์ฝ.
์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ฅผ MPEG-2 Transport Stream์ ๋ด์ ์๊ฐ ๋จ์๋ก ์๊ฒ ์ชผ๊ฐ์ ์ ์กํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ํ์ผ์ ์ฌ์ํด์ผ ํ๋ ์ง์ ๋ํ ์ ๋ณด๋ m3u8 ํ์ผ์ ์ด์ฉํ์ฌ ํ๋ ์ด์ด์ ์ ๋ฌํ๋ค.
# ํน์ง
- HTTP๋ฅผ ์ ์ก ์ฑ๋๋ก ์ฌ์ฉ. HTTP๋ ์๋ฐฉ ๋ฐฉ์์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ์ ์ํด์๋ ๋จ์ ์ ๊ทน๋ณตํ ๋ณ๋์ ๋ฐฉ์์ด ํ์ํ์ง๋ง, ๋ฐฉํ๋ฒฝ์์ HTTP ์๋ฒ๋ก์ ์์ฒญ๋ง ํต๊ณผ์ํค๊ธฐ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐฉํ๋ฒฝ์ ์ค์ ์ด ๋จ์.
- ์์ฒญ๊ณผ ์๋ต์ด 1:1๋ก ๋์๋๋ฏ๋ก NAT ํ๊ฒฝ์์๋ ์๋ฒ์ ๋์ ํ๋๊ฒ์ด ์ฝ๋ค.
- ์น ์๋น์ค๋ฅผ ์ํ ์บ์ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๊ณ , ๊ธฐ์กด์ ๊ตฌ์ถ๋์ด ์๋ CDN(Content Delivery Network)๋ ํน๋ณํ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ทธ๋๋ก ์ด์ฉ.
# 0829 - ๋ฐฑ์ค๋ ๊ฐ๋ฐ์ ๋ก๋๋งต
# ๋ฐฑ์ค๋ ๊ฐ๋ฐ์ ๋ก๋๋งต(ํ์ฌ ์์ ํ์ ํ๊ธฐ)
ํ์ต๊ณผ ์ ์ฉ, ์์ฉ์ ๋ํ ํ๋ ->
ํด๋ฆฐ ์ฝ๋, ์ข์ ์ค๊ณ๋ฅผ ์ด๋๋ ๋จ์ ํ
์คํธ ->
์น ๊ธฐ์ ๊ณผ ์น ํ๋ก๊ทธ๋๋ฐ ->
์คํ๋ง ํ๋ ์์ํฌ ->
๋ฐ์ดํฐ๋ฒ ์ด์ค ->
ORM ํ๋ ์์ํฌ ->
โฆ ->
CI/CD๋ฅผ ์ํ ์ธํ๋ผ์คํธ๋ญ์ฒ ->
ํด๋ฆฐ ์ํคํ
์ฒ ->
DDD ->
๋ถ์ฐ ์์คํ
->
์ธํ๋ผ์คํธ๋ญ์ฒ ->
MSA ->
โฆ