๋ชฉ๋ก์ ์ฒด ๊ธ (105)
์ฐ์ ๊ธฐ๋ก ๐ช
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/LtIQb/btsLSPlJu1y/nOqOOiqwTFrok6LIF3qnZK/img.png)
https://www.acmicpc.net/problem/16724๋ฌธ์ ์ค๋ช UDLR(์ํ์ข์ฐ)๋ก ๊ฐ ์นธ์ ์๋ ์ฌ๋๋ค์ด ์ด๋ค ๋ฐฉํฅ์ ์๋์ง ์ฃผ์ด์ง๋ค. ์ฌ๋๋ค์ด ํ์ดํ๋ฅผ ๋ฐ๋ผ ์ญ ์ด๋ํ์ ๋ ๋ชจ๋ ์ฌ๋์ด ์์ ๊ตฌ์ญ์ผ๋ก ๋ค์ด๊ฐ ์ ์๋๋ก ํ๋ ค๋ฉด ๋ช ๊ฐ์ ์์ ๊ตฌ์ญ์ ๋ง๋ค์ด์ผ ํ๋์ง๋ฅผ ๋ฌป๋ ๋ฌธ์ ์ด๋ค. ์์ด๋์ด์ด ๋ฌธ์ ๋ ๊ทธ๋ํ์ ์ฌ์ดํด์ ๊ฐ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ฌ์ดํด 1๊ฐ๋น 1๊ฐ์ ์์ ๊ตฌ์ญ์ ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค. ๊ทธ๋์ dfs๋ฅผ ํตํด ๊ทธ๋ํ๋ฅผ ์ํํ๋ฉฐ ๋ถ๋ชจ(์ฌ์ดํด์ ์์์ )๋ฅผ ๊ธฐ๋กํด์ฃผ๊ณ , ๋ง์ง๋ง์ ๋ถ๋ชจ๊ฐ ์ด ์ข ๋ฅ๊ฐ ์๋์ง๋ฅผ ๋ฆฌํดํด์คฌ๋ค.์๋์ ๊ฒฝ์ฐ ๋ถ๋ชจ๊ฐ 2์ข ๋ฅ๊ฐ ๋์์ผ๋ 2๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค. ์ฝ๋์ ๋ต ์ฝ๋๋ ์๋์ ๊ฐ๋ค. dfs๋ฅผ ์ด์ฉํด ์ํํ๋ฉฐ ๋ค์ ๋ธ๋ญ์ด ํ์ฌ์ ๋ถ๋ชจ๊ฐ ๋ค๋ฅด๋ค๋ฉด Unionํจ์๋ฅผ ํตํด ๋ถ๋ชจ๋ฅผ ํฉ์ณ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/NGmM8/btsLPxKEYhR/ndpeYiZmDfAKFL3cJboXWk/img.png)
https://school.programmers.co.kr/learn/courses/30/lessons/258711 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.kr ๋ฌธ์ ๋ถ์์๋์ ๊ฐ์ด ๋๋๋ชจ์, ๋ง๋๋ชจ์, 8์๋ชจ์ ๊ทธ๋ํ๊ฐ ์๋ค.์ฌ๊ธฐ์ ๋ฌธ์ ์ ํต์ฌ์ “์ด ๊ทธ๋ํ๋ค๊ณผ ๋ฌด๊ดํ ์ ์ ์ ํ๋ ์์ฑํ ๋ค, ๊ฐ ๋๋ ๋ชจ์ ๊ทธ๋ํ, ๋ง๋ ๋ชจ์ ๊ทธ๋ํ, 8์ ๋ชจ์ ๊ทธ๋ํ์ ์์์ ์ ์ ํ๋๋ก ํฅํ๋ ๊ฐ์ ๋ค์ ์ฐ๊ฒฐ”ํ๋ค๋ ๋ถ๋ถ์ด๋ค.์ฆ ์๋์ ๊ฐ์ด ์ ์ ์ ์ฐพ์ผ๋ฉด ๊ฑฐ๊ธฐ์ ์ฐ๊ฒฐ๋ ๊ฒ์ ๋๋, ๋ง๋, 8์๊ทธ๋ํ ์ค ํ๋์ฌ์ผ ํ๋ค๋ ์๋ฆฌ์ด๋ค.๊ทธ๋ ๊ธฐ์ ์ ์ ์ ์๋์ ๊ฐ์ด ๋๋๊ทธ๋ํ 2๊ฐ๋ฅผ ํฉ์น ๊ฒ ๊ฐ์ ๋ชจ์์ด ๋ถ์ด์๊ฑฐ๋ ํ๋ ์ผ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/26v97/btsLLTt6NtQ/gdHfkusar0vR5mfZRHXlB0/img.png)
๐์์ฝAWS์ ๋ํด ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด SAA ์๊ฒฉ์ฆ ์ถ์ฒUdemy๊ฐ์ ์๊ฐ -> ๋คํ๋ก ๊ฐ์ก๊ธฐ+๊ฐ๋ ๋น์นธ ์ฑ์ฐ๊ธฐ์ต๋จ๊ธฐ๊ฐ์ ์๊ฒฉ์ฆ๋ง์ ๋ฐ๊ณ ์ถ๋ค๋ฉด ๋คํ ํธ์๋ ๊ฒ ์ถ์ฒ ๊ฐ์์ฐ์ฐํ ์ ์ฌ ๊ณต์ง์์ AWS ๋ฐ์ฐ์ฒ๋ฅผ ์ง์ํด์ค๋ค๋ ๊ณต์ง๋ฅผ ๋ณด๊ฒ๋์์ต๋๋ค. ๊ฐ๋ฐ์ ํ๋ฉฐ AWS ์๋น์ค๋ฅผ ์จ๋ณด๊ธฐ๋ ํ์ง๋ง(EC2, S3, Lambda, ECR ๋ฑ...) ์ ๋ง ์ ์ฐ๊ณ ์๋๊ฒ ๋ง๋? ํ๋ ๊ณ ๋ฏผ์ ํ ์ ์ด ์์ต๋๋ค. ๋น์ SAA์๊ฒฉ์ฆ์ ์กด์ฌ๋ ์์์ผ๋ ์์๋ฃ๊ฐ 150๋ฌ๋ฌ(์ฝ 20๋ง์...)๋ผ๋ ๊ฒ์ ์๊ณ ๋ ๋์ค์ ๋ฐ์๋ฉฐ ๋ฏธ๋ค๋๊ณ (์์ด๋ฒ๋ฆฌ๊ณ ) ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐจ์ ์ด๋ ๊ฒ ๊ณ๊ธฐ๊ฐ ์๊ฒผ์ผ๋ ๊ณต๋ถํด๋ณด์ํ๊ณ ์๊ฒฉ์ฆ ์ทจ๋์ ๋์ ํ๊ฒ ๋์์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ฐ๋ ์๋น์ค๋ง ์ฌ์ฉํด์ค๋ ๊ฒ์ด ์์ฌ์ AWS์ ์ ๋ฐ์ ์ธ ์๋น์ค๋ค๊ณผ ์ฌ์ฉ ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cmYQYw/btsLLDqyxgA/qkOfumcDYAMj95Sg2fJwYk/img.png)
์ด ๊ธ์ ์๋ ๊ธ์ ์ฝ์ผ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ๊ณผ, ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.https://mangkyu.tistory.com/286 [MySQL] B-Tree๋ก ์ธ๋ฑ์ค(Index)์ ๋ํด ์ฝ๊ณ ์๋ฒฝํ๊ฒ ์ดํดํ๊ธฐ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์(๋๋ ์๊ณ ๋ฆฌ์ฆ)์ ๋ฐ๋ผ B-Tree ์ธ๋ฑ์ค, Hash ์ธ๋ฑ์ค, Fractal ์ธ๋ฑ์ค ๋ฑ์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก B-Tree ๊ตฌ์กฐ๊ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ B-Tree ์ธ๋ฑ์ค๋ฅผ ํตํด ์ธ๋ฑ์ค์ ๋์mangkyu.tistory.com B- Tree๋ BinaryTree(์์์ด 2๊ฐ์ธ ํธ๋ฆฌ)์์ ๊ฐ๋ ์ ํ์ฅํด n๊ฐ์ ์์์ ๊ฐ์ง ์ ์๋๋ก ํ ๊ฒ์ด๋ค.DB์๋ ํ์ด์ง๋ผ๋ ๊ฐ๋ ์ด ์๋๋ฐ, ํ์ด์ง๋ ๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ(๋ฒํผํ)์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์ต์ ๋จ์์ด๋ค. ์ธ๋ฑ์ค์ PK, ํ ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bfNdib/btsGS3I29aL/UAudHiaXfSE2OCNK5ABBvk/img.png)
ํ์ฌ ์์กด ๊ด๊ณ๋ ์์ ๊ฐ๋ค. ์ฌ๊ธฐ์ memberController๋ง @Autowired๋ฅผ ์ด์ฉํ๊ณ memberService๊ณผ memberRepository๋ ์๋ฐ ์ฝ๋๋ฅผ ์ด์ฉํด ์คํ๋ง ๋น์ ์ง์ ๋ฑ๋กํด๋ณด๋ ค๊ณ ํ๋ค. ๋จผ์ memberService์ memberRepository๋ ๊ฐ๊ฐ ์๋์ ๊ฐ๋ค.(๋ฉ์๋ ์๋ต)public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository){ this.memberRepository=memberRepository; }}public class MemoryMemberRepos..
DI์ IoC์คํ๋ง์๋ DI(Dependency Injection, ์์กด์ฑ ์ฃผ์ )์ด๋ผ๋ ๊ฐ๋ ์ด ์๋ค. @Autowired๊ฐ ์์ผ๋ฉด ์คํ๋ง์ด ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์์ ์ฐพ์์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด๋ค. ๋ ์คํ๋ง์ @Component ์ด๋ ธํ ์ด์ ์ด ์์ผ๋ฉด ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋กํ๊ณ ์ด๋ฐ ๊ฐ์ฒด๋ค์ ์์ฑ, ์ค์ , ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ค. ์ด๋ ๊ฒ ํ๋ ์์ํฌ(์คํ๋ง)๊ฐ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ IoC(Inversion of Control, ์ ์ด์ ์ญ์ )์ด๋ผ๊ณ ํ๋ค. ์ด๋ ๊ฒ ๊ธ๋ก๋ง ์ฝ์ด์๋ ์ ์๋ฟ์ง ์๋๋ค. ์์ ๋ฅผ ํตํด DI์ IoC์ ๋ํด ์ดํดํด๋ณด๋๋ก ํ์. ์ฝ๋๋ฅผ ๋ณด๊ธฐ ์ MemberController์์ MemberService๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ํฉ์ด๋ผ๊ณ ๊ฐ์ ํ์. ์ด ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์ ์ธํด์ ์ฌ์ฉํ ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b7GxuC/btsGUW9VsaG/c3E8QELYI1EyGkPKv9YiJ1/img.png)
๊ฐ๋ฐ์ ํ๊ธฐ ์ ์คํ๋ง์์ ์น์ ๊ฐ๋ฐํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ๊ฐ๋จํ ์ดํด๋ณด๋๋ก ํ์. ํฌ๊ฒ ์ ์ ์ปจํ ์ธ , MVC์ ํ ํ๋ฆฟ์์ง, API ๋ฐฉ์์ผ๋ก ๋๋๋ค.์ ์ ์ปจํ ์ธ ์ค์ต์ ์ ์ปจํ ์ธ ๋ ์๋ฒ์์ ๋ฐ๋ก ์์ ์ ํ์ง ์๊ณ ๊ทธ๋๋ก ํ์ผ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ด๋ ค์ฃผ๋ ๊ฒ์ด๋ค. ์ ์ ์ด๋ผ๋ ๋ง ๊ทธ๋๋ก ๋ฐ๋์ง ์๋ ์ปจํ ์ธ ์ด๋ค. main/resources/staticํด๋์ hello-static.htmlํ์ผ์ ์์ฑํ๊ณ (cmd+n) ์๋ ์ฝ๋๋ฅผ ๋ฃ์ด๋ณด์. ์ ์ ์ปจํ ์ธ ์ ๋๋ค.์๋ฒ๋ฅผ ์คํํ ๋ค localhost:8080/hello-static.html๋ก ์ ์ํ๋ฉด ์ ์ ์ปจํ ์ธ ์ ๋๋ค.๋ผ๋ ํ๋ฉด์ด ๋ณด์ผ ๊ฒ์ด๋ค.๋์ ์๋ฆฌ๋ด๋ถ์ ์ผ๋ก๋ ์น ๋ธ๋ผ์ฐ์ ์์ localhost:8080/hello-static.html์์ฒญ์ด ์จ ๊ฒ์ ๋ณด๊ณ ๋ด์ฅ๋ Tomcat..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/rGn80/btsGT1Rg0m0/imjoRUIm3TDjHBkeKgl9u1/img.png)
์คํ๋ง๋ถํธ์๋ Maven๊ณผ Gradle์ด ์๋ค. ๋ ๋ค ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๊ฒจ์ค๊ณ ๋น๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํด์ฃผ๋ ์ญํ ์ ํ๋ค. ์์ฆ์ Gradle์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์คํ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฒด๋ Gradle๋ก ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ค. ์ด ๊ธ์์๋ ์คํ๋ง๋ถํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃฌ๋ค.โญ ํ๊ฒฝmacOS, IntelliJ Untimate ๋ฒ์ ์์ ์งํ 1. ํ๋ก์ ํธ ์์ฑ์ธํ ๋ฆฌ์ ์ด๋ฅผ ์ด๊ณ New Project๋ฒํผ์ ๋๋ฅธ๋ค. ์ดํ ์๋์ ๊ฐ์ด ์ค์ ํ๋ค.Language, Type, JDK, Java, Packaging๋ถ๋ถ์ ์ ๋ง์ถฐ์ค์ผ ํ๋ค.๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ๊ฒ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํด spring web๊ณผ Thymeleaf๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํด์ฃผ๋๋ก ํ์.์ฐธ๊ณ ๋ก spring boot ์ดํ๋ฆฌ์ผ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHZUbV/btsGOvk59Q5/ZxPn58GBfx5aC2CEaX3eAK/img.png)
์ปดํจํฐ ๊ตฌ์กฐ์ ํฐ 3๊ฐ์ง ์์๋ CPU, Memory, I/O์ด๋ค. ํ๋ก๊ทธ๋จ์ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋๋์ด ๋ณผ ์ ์๋ค. Application Software ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋์ด ์๋ค. System Software Compiler(์ปดํ์ผ๋ฌ): HLL(High-level language)์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ค. Operating System(์ด์์ฒด์ ): I/O๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๊ณต๊ฐ์ ๊ด๋ฆฌํ๋ค. ์ผ๋ค์ ์ค์ผ์ค๋งํ๊ณ ์์์ ๊ณต์ ํ๋ค. Hardware Processor, Memory, I/O controllers๊ฐ ํฌํจ๋๋ค. ์์ ์ปดํ์ผ๋ฌ๊ฐ HLL์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ค๊ณ ํ๋๋ฐ ํ๋ก๊ทธ๋จ ์ฝ๋๋ High-level language, Assembly language, Hardware representation ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/S7733/btsArnyYrv5/wU8yPxJsYz9JJWf8ciLGZk/img.png)
๐C/C++๋ฅผ ํ ์คํธํ๋ ํ๋ ์์ํฌ์ธ Google test๋ฅผ M1๋งฅ๋ถ์์ ์ธํ ํ๋ ๊ณผ์ ์ ๋ํด ๋ค๋ฃจ๋ ๊ธ์ ๋๋ค. ๋ณดํต WSL์ ๊น์์ ๋ง์ด ์ฌ์ฉํ๋๋ฐ M1, M2๋งฅ๋ถ์์๋ ์ ๋์ง ์๋๋ค๊ณ ํด์ docker๋ฅผ ์ด์ฉํด ํ๊ฒฝ์ ์ธํ ํ๋ค. ๋ช ๋ น์ด๋ค์ iTerm์ ์ ๋ ฅํ๋ฉฐ ์งํํ๋ค. ๋จผ์ ์๋ ์ด๋ฏธ์ง๋ฅผ pull ๋ฐ๊ณ ์ดํ ์ปจํ ์ด๋๋ฅผ ์์ฑํ์ฌ ์คํํ๋ค. https://hub.docker.com/r/srzzumix/googletest/ Docker hub.docker.com docker pull srzzumix/googletest docker run -it -v /$(pwd):/code srzzumix/googletest sh ์ฌ๊ธฐ๊น์ง ์คํํ๋ค๋ฉด ์๋์ ๊ฐ์ด #์ผ๋ก ์์ํ๋ ์ปค๋งจ๋๋ผ์ธ์ผ๋ก ์ง์ ํ๊ฒ ๋๋ค. docke..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/LnaMV/btszK926L1B/GdpZm6z4VnOnUmkbVMKvJK/img.png)
์ฒ๋ฆฌ๋(throughput) : ๋งํฌ ๋ด์์ ์ฑ๊ณต์ ์ผ๋ก ์ ๋ฌ๋ ๋ฐ์ดํฐ์ ์, bps์ง์ฐ์๊ฐ(latency) : ์์ฒญ์ด ์ฒ๋ฆฌ๋๋ ์๊ฐ. ์ด๋ค ๋ฉ์์ง๊ฐ ๋ ์ฅ์น ์ฌ์ด๋ฅผ ์๋ณตํ๋๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ๋ณ๋ชฉํ์(bottleneck) : ์ ์ฒด ์์คํ ์ ์ฑ๋ฅ์ด๋ ์ฉ๋์ด ํ๋์ ๊ตฌ์ฑ ์์๋ก ์ธํด ์ ํ ๋ฐ๋ ํ์๋คํธ์ํฌ ์ฑ๋ฅ ๋ถ์ ๋ช ๋ น์ด๋คํธ์ํฌ ๋ณ๋ชฉ ํ์์ ์๋ ์์ธ๋ค๋ก ์ธํด ์ ๋ฐ๋ ์ ์๋ค.๋คํธ์ํฌ ๋์ญํญ๋คํธ์ํฌ ํ ํด๋ก์ง์๋ฒ CPU, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋นํจ์จ์ ์ธ ๋คํธ์ํฌ ๊ตฌ์ฑ๋ง์ผ ๋คํธ์ํฌ์ ๊ด๋ จ๋ ํ ์คํธ์ ๊ด๋ จ์๋ ํ ์คํธ๋ฅผ ๊ฐ๊ฐ ์งํํ ๋ค ๋ฌธ์ ์ ์ด ๋คํธ์ํฌ์ ๊ด๋ จ๋์ด์๋ค ๋ผ๋ ๊ฒฐ๋ก ์ด ๋์๋ค๋ฉด ๋คํธ์ํฌ ์ฑ๋ฅ ๋ถ์์ ํด์ผํ๋ค.ping(Packet INternet Grouper)ping [IP address or Domain addres..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bvDRWh/btszvbNdb1b/EasH6XZj9W3cYzlZc3wFMk/img.png)
1์ฃผ์ฐจ ํผ๋๋ฐฑ ์ ๋ฆฌ ์ด ๊ธ์ ์ฐํ ์ฝ 1์ฐจ ๊ณผ์ ํผ๋๋ฐฑ์ ํตํด ๋ฐฐ์ด ์ ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. ๊ฐ์๋ฅผ ๋ณด๊ณ ์๋ก ์์ฑํ ์ฝ๋๋ ์๋ ๋งํฌ์์ ๋ณด์ค ์ ์์ต๋๋ค. https://github.com/kite707/java-baseball-6/tree/kite707_feedback GitHub - kite707/java-baseball-6 Contribute to kite707/java-baseball-6 development by creating an account on GitHub. github.com ๋จผ์ ์ด๋ฒ 1์ฃผ์ฐจ์ ๊ณตํต ํผ๋๋ฐฑ์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค. ์๊ตฌ ์ฌํญ์ ์ ํํ ์ค์ํ๋ค. ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์๋ฏธ์๊ฒ ์์ฑํ๋ค. git์ ํตํด ๊ด๋ฆฌํ ์์์ ๋ํด์๋ ๊ณ ๋ คํ๋ค. Pull Request๋ฅผ ๋ณด๋ด๊ธฐ ์ ๋ธ๋์น๋ฅผ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bkDtUn/btst6mlYAZV/5LoYRi2LbaPslr1tYIvyKK/img.png)
์ด ๊ธ์์๋ ์ฐ๋ฆฌ๊ฐ ์ง ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ์ปดํ์ผ๋์ด ์คํ๋๋์ง ์ดํด๋ณผ ๊ฒ์ด๋ค. ๋จผ์ ์๋์ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. #include #define MAX 5 int main(){ printf("hello world\n"); //hello world๋ฅผ ์ถ๋ ฅ int a = MAX; return 0; } ์ดํ ์ฐ๋ฆฌ๊ฐ gcc hello.c ๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ ๊ฐ์ด a.outํ์ผ์ด ์์ฑ๋๋ค. ์ด a.outํ์ผ์ ์คํ ๊ฐ๋ฅํ ๋ชฉ์ ํ์ผ(executable object file)์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋ณด๊ธฐ์๋ hello.cํ์ผ์ด ๋ฐ๋ก a.outํ์ผ๋ก ๋ณํ ๊ฒ์ผ๋ก ๋ณด์ฌ์ง์ง๋ง ์ฌ์ค ๋ด๋ถ์ ์ผ๋ก ์ ์ฒ๋ฆฌ, ์ปดํ์ผ, ์ด์ ๋ธ๋ฆฌ, ๋งํน ๊ณผ์ ์ ๋ชจ๋ ๊ฑฐ์น ๊ฒ์ด๋ค. ์ด์ ๋ถํฐ ๊ทธ ๊ณผ์ ์ ํ๋ํ๋ ์ดํด๋ณด๋๋ก ํ์. ์ ์ฒ๋ฆฌ(h..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b3VzCG/btstXxHwX3c/Jz07qTeDwoEPKI89DgaDP1/img.png)
SECTION1 ๋์์ธ ํจํด์ฑ๊ธํค ํจํดํ๋์ ํด๋์ค์ ์ค์ง ํ๋์ ์ธ์คํด์ค๋ง ๊ฐ์ง๋ ํจํด์ด๋ค. ๋ณดํต ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ชจ๋์ ๋ง์ด ์ฌ์ฉํ๋ฉฐ, ์ธ์คํด์ค๋ฅผ ํ๋ ๋ง๋ค๊ณ ๊ทธ ์ธ์คํด์ค๋ฅผ ๋ค๋ฅธ ๋ชจ๋๋ค์ด ๊ณต์ ํ๋ฉฐ ํจ๊ป ์ฌ์ฉํ๋ค. ๋น์ฉ์ ์ค์ง๋ง ์์กด์ฑ์ด ๋๋ค.์๋์ ๊ฐ์ด db์ ์ฐ๊ฒฐํ๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด, DB๋ผ๋ ํ๋์ ํด๋์ค์ DB.instance๋ผ๋ ํ๋์ ์ธ์คํด์ค๋ง ์กด์ฌํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.const URL = 'dbUrl' const createConnection = url => ({"url" : url}) class DB { constructor(url) { if (!DB.instance) { DB.instance = createConnection(url) ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/m3mVW/btssqwSmfMX/H1BhwuZeYjFX79jUXDlBjk/img.png)
๐ ํค์๋ ์์ฐจํ๋ก, ์กฐํฉํ๋ก, ํ๋ฆฝํ๋กญ ๐์์ฐจํ๋ก(Sequential Circuits)์ ์กฐํฉํ๋ก(Comninational Circuits) ์์ฐจํ๋ก๋ ์ถ๋ ฅ์ด ํ์ฌ์ ์ ๋ ฅ๊ณผ ์ด์ ์ ๋ ผ๋ฆฌํ๋ก ์ํ์ ์กฐํฉ์ ์ํด ๊ฒฐ์ ๋๋ ๋ ผ๋ฆฌํ๋ก, ์กฐํฉํ๋ก๋ ์ ๋ ฅ์ด ์ฃผ์ด์ง๋ฉด ๋ฐ๋ก ์ถ๋ ฅ์ด ๋์ค๋ ํ๋ก์ด๋ค. ์์ ์์ฐจํ๋ก๋ ์ด์ ์ ๋ ผ๋ฆฌํ๋ก ์ํ์ ์ํฅ์ ๋ฐ๋๋ค๊ณ ํ๋๋ฐ, ๊ทธ๋ฌ๊ธฐ ์ํด ์ด์ ์ ๊ฐ์ ๊ธฐ์ต์ฅ์น์ ์ ์ฅํด์ผํ๋ค. ์ด๋ ์ด ๊ธฐ์ต์์๋ก ๋ง์ด ์ฐ์ด๋ ๊ฒ์ด ๋ฐ๋ก ํ๋ฆฝํ๋กญ์ด๋ค. ์ฆ ์์ฐจํ๋ก๋ ์กฐํฉํ๋ก+๊ธฐ์ตํ๋ก์ธ ๊ฒ์ด๋ค. ์กฐํฉ ๋ ผ๋ฆฌํ๋ก์ ํ์ฌ ์ถ๋ ฅ๊ฐ์ ๊ธฐ์ตํ๋ก์ ์ ์ฅ๋๊ณ ์ด ์ ์ฅ๋ ๊ฐ์ ๋ค์ ๋จ๊ณ๋ฅผ ์ํด ํผ๋๋ฐฑ ๊ฒฝ๋ก๋ฅผ ํตํด ์กฐํฉ ๋ ผ๋ฆฌํ๋ก์ ์ ๋ ฅ ๋จ์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค. ๐ํ๋ฆฝํ๋กญ ๊ทธ๋ ๋ค๋ฉด ์ด ํ๋ฆฝ ํ๋กญ์ ๋ํด ์กฐ๊ธ ๋ ์์ธํ ์์..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/oGQKd/btsl4mtNwSp/s9LBPGGWHqWwvwUha5Wqg0/img.png)
๊ฐ์ api ํธ์ถ ์๋ฅผ ํธ๋ํนํ๊ธฐ ์ํด airbridge๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. ๋ณธ๋ airbridge๋ ๊ด๊ณ ์ฑ๊ณผ ๋ถ์์ ํ๋๋ฐ์ ์ฌ์ฉ๋๋ ํด์ด์ง๋ง ์ด๋ฒคํธ๋ฅผ ์์ด๋ธ๋ฆฟ์ง ์๋ฒ๋ก ๋ณด๋ด๊ณ ์ด๋ฅผ ์ฝ๊ฒ ์กฐํํ๊ณ ํํฐ๋งํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. api ํธ์ถ ์๋ฅผ ํธ๋ํนํ๊ธฐ ์ํ ๋ฐฉ์์ ์ฐพ๋ ์ค ์์ด๋ธ๋ฆฟ์ง๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๊ธฐ์ ์ด๋ฐ ๋ฐฉ๋ฒ๋ ์๋ค๋ ๊ฒ์ ์๋ฆฌ์๋ ์ทจ์ง๋ก ๊ธ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค. ์ฌ์ ์ค๋น ๋จผ์ ์์ด๋ธ๋ฆฟ์ง๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ ๊ฐ๋จํ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. ์์ด๋ธ๋ฆฟ์ง ํ์๊ฐ์ ์ฑ ๋ฑ๋ก ์์ด๋ธ๋ฆฟ์ง๋ ์๋ ํ์ด์ง์์ ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ๋ง์ผ๋ก ๊ฐํธํ๊ฒ ํ์๊ฐ์ ํ ์ ์์ต๋๋ค. https://www.airbridge.io/ko ์์ด๋ธ๋ฆฟ์ง | ๋ชจ๋ฐ์ผ ์ฑ ์ฑ์ฅ์ ๊ทน๋ํํ์ธ์. ํฉ๋ฆฌ์ ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cuIX9a/btseh7xnUah/lOaXwLpwVk2KhKzK386vYK/img.png)
๋์ ๋ก์ปฌ mysql์ ๋์ปค๋ก ๊ตฌ์ถ๋์ด์๋ค. ํด๋น ๋์ปค์ ์ ๊ทผํด์ database๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ๋ํ ๊ธฐ๋ก์ด๋ค. ์ฐ์ ๋ด ๋์ปค์ mysql์ mysql_test๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ค. database๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค. docker unpause mysql_test //mysql_test ์์ docker exec -it mysql_test bash // mysql_test์ปจํ ์ด๋์ bash์ ์คํ mysql -u root -p //mysql์ root ๊ถํ์ผ๋ก ์ ์ create database kite; // ์คํํ๊ณ ์ถ์ ๋ช ๋ น์ด, kite๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ ์ฌ๊ธฐ์ it์ ๋ํด ์ข ๋ ์์ธํ ์์๋ณด๋๋ก ํ์. i์ t๋ ๊ฐ๊ฐ ์ํธ์ ์ถ๋ ฅ๊ณผ tty ํ์ฑํ๋ฅผ ์๋ฏธํ๋ค. i : ์ํธ ์ ์ถ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b12QF4/btsd1jzDm25/0GzVfKD1XZUNvkaRSVkgVK/img.png)
๐ ๋ฌธ์ ์ํฉ require๋ฌธ์ import๋ก ๋ฐ๊พธ๋ ์์ ์ ํ๋ ๋์ค const express = require(’express’)๋ฅผ import express from ‘express’๋ก ๋ฐ๊ฟจ๋๋ ์๋ ๋ถ๋ถ์์ Property 'session' does not exist on type 'Request'.ts(2339) ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๐ก ํด๊ฒฐ ๋ฐฉ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋จผ์ @types/express-session์ ์ค์นํด์ค์ผ ํ๋ค. ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋๋ก ํ์. npm install -D @types/express-session@1.17.0 ์ดํ ๊ทธ๋ฌ๊ณ ๋๋ฉด req.logout๊ณผ req.session.destroy๊ฐ ๊ฐ๊ฐ ์ฝ๋ฐฑํจ์๋ฅผ ์๊ตฌํ๊ธฐ ๋๋ฌธ์ req.logout์ด ๋๋ฉด req.sessio..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/AyNIL/btsd4Hmdf69/gD9TK4rS6Ok2O2LDhZNdK1/img.png)
๐ ๋ฌธ์ ์ํฉ ๋ก๊ทธ์์ ํจ์์ ๋ํ ํ ์คํธ ์ฝ๋๋ฅผ ์ง๋ ๋์ค ์๋ ์๋ฌ์ ๋ง์ฃผํ๋ค. Argument of type OOO is not assignable to parameter of type 'Request'. ์๋ ํ ์คํธํ๋ ค๋ logout ํจ์๋ ์๋์ ๊ฐ์ด ์๊ฒผ๋ค. ///authService.ts const logout = async (req: Request, res: Response) => { req.logout(() => { req.session.destroy(() => { success(res, statusCode.OK, responseMessage.SUCCESS, { session: req.session, }); }); }); }; ๊ทธ๋ฆฌ๊ณ ํ ์คํธ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. //authService.t..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bcJYXX/btscP9qPF5t/4yGkW5kRpHrUkOGPiKg5g1/img.png)
์ด ๊ธ์ ์๋ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๊ณ Aptos์ Typescript SDK๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํ ๊ธ์ ๋๋ค. Mint NFTs with the SDKs | Aptos Docs Your First NFT | Aptos Docs This tutorial describes how to create and transfer NFTs on the Aptos blockchain. The Aptos implementation for core NFTs can be found in the token.move Move module. aptos.dev ์ด ๊ธ์ ํตํด ์ฝ๋ ์ ์์ฑ(ํ ํฐ์ด ๋ค์ด๊ฐ๋ ๊ณณ), ํ ํฐ ์์ฑ, ํ ํฐ ์ ์ก(๋ฏผํ ) ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค. ์ฌ์ ์ค๋น ๋จผ์ ์์ ์ฝ๋๋ฅผ ํด๋ก ๋ฐ๊ณ , ์ฝ๋๋ฅผ ์คํ์์ผ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค..
JavaScript๋ก ์์ฑ๋ ์ฝ๋๋ฅผ TypeScript๋ก ๋ณ๊ฒฝํ๋ฉด์ ๋ง๋ฌ๋ ๋ง์ ์๋ฌ์ ๋ํด ๊ธฐ๋กํด๋ณด๊ณ ์ ํ๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ export๋ import๊ฐ ์์ผ๋ฉด ์คํฌ๋ฆฝํธ๋ก ํด์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ด๋ฆ์ ๋ณ์๋ฅผ ์ ์ธํ๋ค๋ฉด(๋ค๋ฅธ ํ์ผ์์๋!!!) ์๋ฌ๋ฅผ ๋ธ๋ค. ํ์ผ์ ๋์ export {}; ๋ฅผ ์ถ๊ฐํ๋ฉด ์๋ฌ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ํจ์๋ฅผ ์ ์ธํ ๋ ์์ฑํ ์ธ์๋ฅผ ๋๊ฒจ์ฃผ์ง ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋ธ๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ๋ค. function hihi(a, b) { return a+b; } //์๋ฐ์คํฌ๋ฆฝํธ๋ ์ ๋ ์ํฉ์ ๋ํด ์๋ํฐ์์ ์๋ฌ๋ฅผ ๋ด์ง ์์ง๋ง ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฌ๋ฅผ ๋ธ๋ค. hihi(1); hihi(1,2,3); //๋ง์ฝ ์ฌ์ฉํ ์๋ ์๊ณ ์ฌ์ฉํ์ง ์์ ์๋ ์๋ ์ธ์๊ฐ ์๋ค๋ฉด ๋ช ์์ ์ผ๋ก ?๋ฅผ ๋ถ์ฌ..
์ด์ ์ ์งํํ๋ ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง์ ์งํํ๋ฉฐ javascript๋ก ์์ฑํ๋ ํ์ผ์ ํ์ฅ์๋ฅผ ts๋ก ์์ ํ๋ค. ๊ทธ๋ฌ์ Cannot redeclare block-scoped variable ‘OOO’ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๊ตฌ๊ธ๋ง์ ํตํด ์ป์ ๊ฒฐ๋ก ์ “ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ผ์ top-level์ import๋ export๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ํ์ผ์ ๋ชจ๋์ด ์๋ ์คํฌ๋ฆฝํธ ํ์ผ๋ก ์ธ์ํ๊ณ , ํ์ผ ๋ด์ ์ ์ธ๋ ๋ณ์๋ window, global๊ณผ ๊ฐ์ ์ ์ญ ์ค์ฝํ์ ์ํฅ์ ๋ฏธ์น๋ค.” ์ด๋ค. ์ฆ ์ฐ๋ฆฌ์ ํ์ฌ ์ฝ๋์๋ require๋ฌธ๋ง ์์ด์ ๋ณ์๊ฐ ์ ์ญ ์ค์ฝํ์ ์ํฅ์ ๋ฏธ์ณ ๊ฐ์ ์ด๋ฆ์ผ๋ก require๋ฅผ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ํ์ผ์ ๊ฐ์ฅ ์๋์ export {}; ๋ฅผ ์ถ๊ฐํด์ค์ ์ด ํ์ผ์..