ํธ๋ฌ๋ธ ์ํ
๐ข ์๋ฒ์์ https ์ ์ฉ์ ํ๋ ๋์ค์ ppa์๋ฌ๊ฐ ๋ฌ๋ค.. E: The repository 'https://ppa.launchpadcontent.net/certbot/certbot/ubuntu jammy Release' does not have a Release file. ๐ช ํด๊ฒฐ ๋ฐฉ์ sudo add-apt-repository --remove ppa:certbot/certbot ์ ์ฝ๋๋ฅผ ์
๋ ฅํ๋ฉด ๋๋ค!! ๋ง์ผ ์์ ๊ด๋ จ๋ ์๋ฌ์ธ๋ฐ certbot/certbot์ด ์๋ ๋ค๋ฅธ ๋ฌธ์ฅ์ผ๋ก ๋์ด์๋ค๋ฉด ํด๊ฒฐ ์ฝ๋ ppa:๋ค์์ ํด๋น ๋ฌธ์ฅ์ ๋์ฒดํด์ ๋ฃ์ผ๋ฉด ๋๋ค!
Spring
Service์ ServiceImpl์ ๋ถ๋ฆฌํด์ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๋๋ฐ ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ๋ง์ด ๋ด์ ํ ๋ฒ ์กฐ์ฌํด ๋ดค๋คโ๏ธ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ฅผ ๋ฐ๋ก ๋๋ ๊ฑด OCP(๊ฐ๋ฐฉ-ํ์ ์์น) ๋๋ฌธ์ด๋ค. ๐ธ OCP๋? ์ํํธ์จ์ด ๊ฐ์ฑ๋ ํ์ฅ์ ๋ํด ์ด๋ ค์์ด์ผ ํ๊ณ , ์์ ์ ๋ํด์๋ ๋ซํ์์ด์ผ ํ๋ค๋ ํ๋ก๊ทธ๋๋ฐ ์์น์ด๋ค. ์ด ์์น์ด ์ ์ ์ฉ๋๋ฉด, ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒจํด์ผ ํ ๋ ์ด๋ฏธ ์ ๋๋ก ๋์ํ๊ณ ์๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์๋ ๊ธฐ์กด์ ์ฝ๋์ ์๋ก์ด ์ฝ๋๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค. ๐ธ Service์ ServiceImpl sevice๋ฅผ ๋จผ์ ์ ์ํ๊ณ , serviceimpl์ด service ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์์ ๊ตฌํํ๋ ๊ฒ์ด๋ค. Controller์์๋ service๋ฅผ ํธ์ถํ๋ค!! ํ๋ก์ ํธ์์๋ ์ ์ฉ..
Spring
์บก์คํค ์ค๊ณ๋ฅผ ํ๋ฉด์ ํด์ํ๊ทธ ๊ธฐ๋ฅ์ ๊ตฌํํ์ด์ผ ํ๋๋ฐ ์ด๋ป๊ฒ ์ค๊ณ๋ฅผ ํด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋์๋ค..๐ค ๋ด๊ฐ ๊ณ ๋ฏผํ๋ ๊ฒ ๐ธ ๊ธ์ ์ฌ๋ฌ ๊ฐ์ ํด์ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์๋ค. ๐ธ ํด์ํ๊ทธ๋ ์ฌ๋ฌ ๊ธ์ ์ฌ์ฉ ๋ ์ ์๋ค. ๐ ๊ทธ๋ผ DB ์์
๋ค์์ ๋์ฒ๋ผ N:M ๊ด๊ณ๋ฅผ ์จ์ผ ํ๋...?๋ผ๊ณ ๊ณ ๋ฏผํ์ง๋ง N:M๊ด๊ณ๋ ์ ๋์ ๋์ ๋ ์ฌ์ฉํ๋ฉด ์ ๋๋ค๊ณ ํด์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ดค๋ค! โ๏ธ ๋ค๋๋ค๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๋๋ฉ์ธ ๋ชจ๋ธ์ด ๋จ์ํด์ง๊ณ ํธ๋ฆฌํ ์ฅ์ ์ด ์๋ค. ํ์ง๋ง ์ํฐํฐ์ ์ฌ๋ฌ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๋๋ฐ ์ถ๊ฐํ ์นผ๋ผ๋ค์ ๋งคํํ ์ ์๋ค๊ณ ํ๋ค..! ๊ฒฐ๊ตญ @ManyToMany๋ฅผ ์ฌ์ฉํ์ง ๋ชปํจ.. ํด๊ฒฐํ ๋ฐฉ๋ฒ ๐ธ ์ผ๋๋ค, ๋ค๋์ผ ๊ด๊ณ๋ฅผ ๋ง๋ค์! ๐ธ ๋งคํ ์ํฐํฐ๋ฅผ ๋ง๋ค์ด ๊ธ๊ณผ ๋งคํ์ํฐํฐ๋ ์ผ๋๋ค, ๋งคํ์ํฐํฐ์ ํด์ํ๊ทธ๋ ๋ค๋์ผ ๊ด๊ณ๋ก ์ค๊ณํ..
ํธ๋ฌ๋ธ ์ํ
ubuntu๋ฅผ ์
๋ฐ์ดํธํ๋ฉด์ ์์ ์๋ redis ํจํค์ง๊ฐ ์ญ์ ๋์๋์ง ๋ค์ ์ค์ ํ๊ณ ์ ์ํ๋ ์ค์ ๊ณ์ ์ค๋ฅ๊ฐ ๋์ ์์ฒญ ํค๋งธ๋ค...ใ
ใ
ใ
ใ
sudo systemctl start redis-server ์ด ๋ช
๋ น์ด๋ก๋ง ์์ํ์ ๋ ์ ๋๋๊ฒ ๊ฐ์๊ธฐ restartํ๋๊น ์ค๋ฅ๊ฐ ๋๋ ๊ฒ!!! ์ด๋ด ๋๋ ๋ก๊ทธ ํ์ธ์ ํด์ผํ๋ค! redis ๋ก๊ทธ ํ์ธ์ ํ ์ ์๋์ง ์ฒ์ ์์๋ค๐
์๋ ๋ช
๋ น์ด๋ฅผ ์ณ์ค๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ก๊ทธ ํ์ธ๋ ๊ฐ๋ฅํ์ง๋ง ์๋ ๋ช
๋ น์ด๊ฐ ๊ฐ์ฅ ์ ํํ๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ฒ ๊ฐ์๋ค!! journalctl -f -u redis-server redis-server.service: Failed with result 'exit-code'. Failed to start Advanced key-value store...
AWS
AWS์์ ๋ฐ๋ก Redis๋ฅผ ์์ฑํด์..? ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ๋๋ ๊ทธ๋ฅ ์๊ธ ๊ฑฑ์ ์ํ๋ ค๊ณ ec2๋ด๋ถ์ redis๋ฅผ ์ค์นํ๋ค! EC2 ์ฐ๊ฒฐ ์ฌ๊ธฐ์ ์ฐ๊ฒฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋ฌ๋ค ์๋์ ๋ฐ์ค ์น ๋ฌธ์ฅ์ ํตํด์ ๋ก๊ทธ์ธํด์ฃผ๋ ๊ฒ์ด๋ค. ec2๋ฅผ ์์ฑํ ๋ ๋ณด๊ดํด๋จ๋ pem keyํ์ผ์ด ์์๊ฑฐ๋ค! ์ด๊ฑธ ์ ๋ณด๊ดํด๋จ์ด์ผ ํ๋ค ใ
ใ
git bash (๋๋ ec2์ฐ๊ฒฐ ํฐ๋ฏธ๋์ ์ ์) chmod 400 [pem] ssh -i [pem] [ubuntu~~~] ์ฒซ๋ฒ์งธ ์ฝ๋๋ ํค๋ฅผ ๊ณต๊ฐ์ ์ผ๋ก ๋ชป๋ณด๋๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด๊ณ , ๋๋ฒ์งธ์ค์ ์์ ๋ฐ์ค์ ๋ณต์ฌํ๋ฉด ๋๋ค! ๋ง์ฝ์ pemํค๊ฐ ๋ค๋ฅธ ํด๋์ ์ ์ฅํด๋จ์ ๊ฒฝ์ฐ์๋ ๊ทธ ํด๋์ ๋ค์ด๊ฐ์ ์์น์ ๋ณด๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์ค๋ฉด ๋๋ค!! ๋๊ฐ์ ๊ฒฝ์ฐ์๋ e๋๋ผ์ด๋ธ์ ์ ์ฅํด๋จ๊ธฐ ..
Spring
์ด๋ฏธ์ง๋ dto๋ ๊ฐ์ด ์
๋ ฅ ๋ฐ๊ณ ์ถ์๋ฐ postman์์๋ multipartFile์ ์ด๋ฏธ์ง๋ก dto๋ json์ผ๋ก ๋ฐ๋ก ์
๋ ฅ์ด ๊ฐ๋ฅํ์ง๋ง ์ค์จ๊ฑฐ์์ ์คํํ ๋๋ ํ ๋ฒ์ ์๋ฌ๋ค....๐ญ ๊ทธ๋์ @RequestBody๋์ ์ @ModelAttribute๋ฅผ ์ฌ์ฉํด์ ์
๋ ฅ ๋ฐ๊ธฐ! Controller @PostMapping(value = "/write") public BaseResponse uploadPosting(@RequestPart MultipartFile image, @ModelAttribute PostingDto postingDto) throws IOException { try { postingService.uploadPosting(image, createPostingDto); return new Ba..
Spring
redis๋ฅผ ์ฌ์ฉํ๊ณ ec2์ ๋ฐฐํฌ๋ฅผ ํ๋๋ฐ io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.์ด๋ฐ ์๋ฌ๊ฐ ๋ด๋ค ์ฐพ์๋ณด๋๊น redis.conf ์์ ํ ๋ ์ค์ ํ๋ ๋น๋ฐ๋ฒํธ๊ฐ ํ์ํ๋ค๋ ๋ง! requirepass์ ์ ์๋ ๋น๋ฒ์ spring ํ๋ก์ ํธ application.yml์ ์ถ๊ฐ์ํค๋ฉด ๋๋ค! (local๋ก ํ ๋๋ ๋น๋ฒ์ด ํ์์์ง๋ง ec2๋ฅผ ํตํด ์ธ๋ถ์์ ์ ์ํ ๊ฒฝ์ฐ์๋ ๋น๋ฐ๋ฒํธ๊ฐ ์์ด์ผ ์ ์์ด ๊ฐ๋ฅ) redis: port: 6379 host: password: ์ password์ ์ค์ ํ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๊ณ ์ ์ํ๋ฉด ๋!
Books
์๋๋ฅผ ๋ถ๋ช
ํ ๋ฐํ๋ผ ์ข์ ์ด๋ฆ์ ์ง๊ธฐ ์ํด์๋ ์๊ฐ์ด ๋ง์ด ๋ค์ง๋ง ์ข์ ์ด๋ฆ์ผ๋ก ์ ์ฝํ๋ ์๊ฐ์ ํจ์ฌ ๋ ๋ง๋ค. ๋ณ์, ํจ์๋ ํด๋์ค์ ๊ฐ์ด ์กด์ฌ ์ด์ , ์ํ ๊ธฐ๋ฅ์ ๋ฐ๋ก ์ฃผ์์ฒ๋ฆฌํด์ผ ํ๋ค๋ฉด ์๋๋ฅผ ๋ถ๋ช
ํ ๋๋ฌ๋ด์ง ์์๋ค๋ ๊ฒ์ด๋ค. int d; ์ด๊ฒ์ ๋ฌด์์ ์๋ฏธํ ๊น? ์๊ฐ? ๊ฑฐ๋ฆฌ? ์์ ์ค๋ช
ํ ๊ฒ์ฒ๋ผ ์ฃผ์์ด ์์ผ๋ฉด ๋ณ์์ ์๋์ ์๋ฏธ๋ ์์์ฑ๊ธฐ ํ๋ค๋ค. ๋ฐ๋ผ์ ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก ์ง์ด์ผ ํ๋ค. int fileAgeInDays; ๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ํ์. public list getThem(){ List list1 = new ArrayList(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; } ..
Books
๋์ ์ฝ๋ 80๋
๋ ํ๋ฐ ํฌ๋ฌ ์ฑ์ ๊ตฌํํ ํ์ฌ๊ฐ ์์๋ค. ์ด๋ฐ์ ํฅํํ๋ ๋ฏ ํ์ผ๋ ์ ์ ์ ํ ์ถ์ ์ผ์ด ๋ฆ์ถฐ์ง๊ณ ์ด์ ๋ฒ๊ทธ๊ฐ ๋ค์ ๋ฒ์ ์๋ ๋จ์์์์ + ํ๋ก๊ทธ๋จ ์๋ ์๊ฐ ์ฆ๊ฐ + ํ๋ก๊ทธ๋จ ๋ค์ด ํ์ ์ฆ๊ฐ ๊ฒฐ๊ตญ, ํ์ฌ๋ ๋งํ๋ค. ๐ Why? ๋์ ์ฝ๋ ๋๋ฌธ์ด๋ค. ๋ฅด๋ธ๋์ ๋ฒ์น ๋์ค์ ๊ฒฐ์ฝ ์ค์ง ์๋๋ค. → ์ ๋์๊ฐ๋ ํ๋ก๊ทธ๋จ๋ณด๋ค ๋์๊ฐ๋ ์ฐ๋ ๊ธฐ๋ก ์์์ผ์ผ๋ฉฐ ๋์ค์ ์ ๋ฆฌํ๊ฒ ๋ค๋ ์๊ฐ์ ๋ฒ๋ฆฌ์! ๋์ ์ฝ๋๋ก ์น๋ฅด๋ ๋๊ฐ "๋์ ์ฝ๋๊ฐ ์์ ์๋ก ํ ์์ฐ์ฑ์ ๋จ์ด์ง๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๋ง์นจ๋ด 0์ ๊ทผ์ ํ๋ค" ์๋ํ ์ฌ์ค๊ณ์ ๊ฟ ์๊ฐ์ ๋ค์ฌ ๊นจ๋ํ ์ฝ๋๋ฅผ ๋ง๋๋ ๋
ธ๋ ฅ์ด ๋น์ฉ์ ์ ๊ฐํ๋ ๋ฐฉ๋ฒ์ผ ๋ฟ๋ง ์๋๋ผ ์ ๋ฌธ๊ฐ๋ก์ ์ด์๋จ๋ ๊ธธ์ด๋ผ๋ ์ฌ์ค์ ์ธ์ ํ๋ผ ํ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ๋ฐ์ ์์๋ ์ด์ ๋ ๋ฌด..
ํธ๋ฌ๋ธ ์ํ
work bench๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๋ฅผ ์ฒ์ํด๋ด์ ์ด์ ๊น์ง ์ ์๋ํ๋๊ฒ ์ ์๋๋ ์ถ์๋ค...!!! ์ด๋ ๊ฒ 1046 ์๋ฌ๊ฐ ๋ด์๋๋ฐ ๊ธฐ๋ณธ ์คํค๋ง๋ฅผ ์ง์ ํด์ฃผ๊ณ ๋๋๊น ํด๊ฒฐ๋๋ค ใ
ใ
์ด๋ ๊ฒ ์คํค๋ง๋ฅผ ์ฐํด๋ฆญํด์ Set as Default Schema๋ฅผ ํด๋ฆญํด์ฃผ๋ฉด ๋๋ค.