AWS
๋๋ฐ์ด์ค ๋ฑ๋ก ์์์ธ์ฆ์ ์์ฑDB์ ์ธ์ฆ์ ์ ์ฅ์ธ์ฆ์์ ์ ์ฑ
์ฐ๊ฒฐthing ์์ฑthing์ ์ธ์ฆ์ ๋ฐ ์ ์ฑ
์ฐ๊ฒฐ device shadow ๋ฑ๋กDB์ ๋๋ฐ์ด์ค ์ ์ฅ ๐ ์ด ๊ณผ์ ์ ๊ฑฐ์ณ์ ๋๋ฐ์ด์ค๊ฐ AWS์ DB ๋ชจ๋์ ์ ์ฅ๋๋๋ก ํ์๋ค. 1. ์ธ์ฆ์ ์์ฑ ๋ฐ DB์ ์ธ์ฆ์ ์ ์ฅimport software.amazon.awssdk.services.iot.IotAsyncClient;import software.amazon.awssdk.services.iot.model.*;public Mono createCertificate() { // ์ธ์ฆ์ ํ์ฑํ์ํค๊ธฐ CreateKeysAndCertificateRequest request = CreateKeysAndCertificateRequest.build..
AWS
๋๋ฐ์ด์ค๋ฅผ ๋ฑ๋กํ๊ธฐ ์ ์ ํด์ผํ ์ผ์ด ์๋ค. ์ธ์ฆ์๋ฅผ ์์ฑํด์ ํด๋น ๋๋ฐ์ด์ค์ ๋ฑ๋กํด๋น ์ธ์ฆ์์ ์ ์ฑ
์ฐ๊ฒฐ ์ด ๊ณผ์ ์ ๋๋ด๊ณ ๋๋ฐ์ด์ค๋ฅผ ๋ฑ๋กํ๊ณ ์ ํ๋ค. ์ธ์ฆ์๋ ์ ์ฑ
์ด ๋ญ๋ฐ ์ธ์ฆ์์ ์ ์ฑ
์ ๊ด๋ จํด์ ์ด์ ๊ธ์ ๊ธฐ๋กํ๋ค. ์ฌ์ค ์ด ๋์ ๋ํด ๊น๊ฒ ์์ง๋ ๋ชปํ์ง๋ง.. ๊ฐ๋จํ ์์ฝํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ๐ถ ์ธ์ฆ์๋๋ฐ์ด์ค๋ฅผ ์ธ์ฆํ๊ณ AWS IoT Core์ ์์ ํ๊ฒ ํต์ ํ ์ ์๋๋ก ์ค์ (๋๋ฐ์ด์ค ์ ์ ํ์ธ)์๋ง์ ๋๋ฐ์ด์ค๊ฐ ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋๋ฏ๋ก ์ธ์ฆ์๋ฅผ ํตํด ๋๋ฐ์ด์ค ์ธ์ฆํ๊ณ , ํต์ ์์ ํ๊ฒ ๋ณดํธ ๐ถ ์ ์ฑ
์ธ์ฆ์๋ฅผ ๊ฐ์ง ๋๋ฐ์ด์ค๊ฐ ์ด๋ค ์์
์ ์ํํ ์ ์๋์ง์ ๋ํ ๊ถํ ์ ์MQTT ๋ฉ์์ง ๊ฒ์ ๋ฐ ๊ตฌ๋
, HTTP ์์ฒญ ๋ฑ ๋๋ฐ์ด์ค๊ฐ ํ์ฉ๋ ์์
์ ์ํํ๋๋ก ์ ํ{ "Version": "2012-10-..
AWS
๋๋ฐ์ด์ค(์์ด์ปจ, ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ๋ฑ๊ณผ ๊ฐ์ ๊ฐ์ ๊ธฐ๊ธฐ)์ ์ธ์ฆ์์ ์ ์ฑ
๋ฑ์ ์ฐ๊ฒฐํ๊ณ ํด์ ํ๋ ๊ณผ์ ์ AWS IoT ์ฝ์์์ ์ง์ ํ๋ ๊ฒ์ด ์๋ AWS sdk๋ฅผ ํ์ฉํด java ์ฝ๋๋ก ๊ฐ๋ฐํ๋ ์์
์ ๋งก๊ฒ ๋์๋ค. AWS IoT API reference๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ์งํํ ์์ ์ด์ง๋ง, ๊ทธ ์ ์ AWS IoT Core์์ ์ฌ์ฉํ๊ณ ์๋ ์ฉ์ด์ ์๋ ๋ฐฉ์์ ์ด๋ ์ ๋ ํ์
ํ๊ณ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์๋ฏธ์์ ๊ฒ์ผ๋ก ๋ณด์ ๋ชจ๋ฅด๋ ํน์ ํท๊ฐ๋ฆฌ๋ ๊ฐ๋
๋ค์ ์ ๋ฆฌํ๊ฒ ๋ค ! ๐ AWS IoT Core์ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ๊ทธ ์ ์ ๊ธฐ๋กํ ๊ฒ์ด ์์ผ๋ฏ๋ก ๊ฐ๋ฐํ๊ฒ ๋๋ฉด์ ์ฌ์ฉํ๊ฒ ๋ ๊ฐ๋
์์ฃผ๋ก ์ ๋ฆฌํ ๊ฒ์ด๋ค. ๋๋ฐ์ด์ค ๊ด๋ฆฌAWS IoT๋ ์ฌ๋ฌผ(Thing)์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค.AWS IoT์ ๋ค์ด๊ฐ๋ฉด ์ข..
Java/๐ Effective Java
61. ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
๋ณด๋ค๋ ๊ธฐ๋ณธ ํ์
์ ์ฌ์ฉํ๊ธฐint, double, boolean ๐ ๊ธฐ๋ณธํ์
String, List ๐ ์ฐธ์กฐํ์
Integer, Double, Boolean ๐ ๊ฐ๊ฐ์ ๊ธฐ๋ณธ ํ์
์ ๋์ํ๋ ์ฐธ์กฐํ์
๐ ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
โณ๏ธ ๊ธฐ๋ณธ ํ์
๊ณผ ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ์ฐจ์ด์ ๊ธฐ๋ณธ ํ์
์ ๊ฐ๋ง ๊ฐ์ง๊ณ ์์ผ๋, ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ๊ฐ์ ๋ํด ์๋ณ์ฑ์ด๋ ์์ฑ์ ๊ฐ์ง ๐ ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ๋ ์ธ์คํด์ค๋ ๊ฐ์ด ๊ฐ์๋ ์๋ก ๋ค๋ฅด๋ค๊ณ ์๋ณ๋ ์ ์์๊ธฐ๋ณธ ํ์
์ ๊ฐ์ ์ธ์ ๋ ์ ํจํ๋, ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ์ ํจํ์ง ์์ ๊ฐ์ธ null์ ๊ฐ์ง ์ ์์๊ธฐ๋ณธ ํ์
์ด ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
๋ณด๋ค ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฉด์์ ๋ ํจ์จ์ โณ๏ธ ์ฃผ์ํด์ผํ ์ Comparator naturalOrder = (i, j) ..
Java/๐ Effective Java
57. ์ง์ญ๋ณ์์ ๋ฒ์๋ฅผ ์ต์ํํ๊ธฐ์ง์ญ๋ณ์์ ์ ํจ ๋ฒ์๋ฅผ ์ต์๋ก ์ค์ฌ ์ฝ๋ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ณ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ถ์๐ ๊ทธ ๋ฐฉ๋ฒ์ "๊ฐ์ฅ ์ฒ์ ์ฐ์ผ ๋ ์ ์ธํ๊ธฐ" & ๋ฉ์๋๋ฅผ ์๊ฒ ์ ์งํ๊ณ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ง์คํ๊ธฐ โณ๏ธ ์ง์ญ๋ณ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ธํด๋๋ฉด...? ๋ฏธ๋ฆฌ ์ ์ธํด๋๋ฉด ์ฝ๋๊ฐ ์ด์์ ํด์ ธ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง ๋ณ์๋ฅผ ์ค์ ๋ก ์ฌ์ฉํ๋ ์์ ์๋ ํ์
๊ณผ ์ด๊น๊ฐ์ด ๊ธฐ์ต๋์ง ์์ ์ ์์ ๐ ๊ฑฐ์ ๋ชจ๋ ์ง์ญ๋ณ์๋ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํํด์ผ ํจ๋ง์ฝ, ์ด๊ธฐํ์ ํ์ํ ์ ๋ณด๊ฐ ์ถฉ๋ถํ์ง ์๋ค๋ฉด ์ถฉ๋ถํด์ง ๋๊น์ง ์ ์ธ์ ๋ฏธ๋ค์ผ ํจ๋ค๋ง try-catch ๋ฌธ์์๋ ์์ธ์ธ๋ฐ, ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ํํ์์์ ๊ฒ์ฌ ์์ธ๋ฅผ ๋์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด try ๋ธ๋ก ์์์ ์ด๊ธฐํํด์ผ ํจ ๐ ๊ทธ๋ ์ง ์์ ์ ์์ธ๊ฐ ๋ธ๋ก์ ๋์ด ๋ฉ์๋์๊น์ง ์ ..
CS/๐ ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ
์ค๊ณ ๊ธฐ์ด
1. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ URL ๋จ์ถ ๐ ์ฃผ์ด์ง ๊ธด URL์ ์งง๊ฒ ์ค์ด๊ธฐURL redirection ๐ ์ถ์ฝ๋ URL๋ก HTTP ์์ฒญ์ด ์ค๋ฉด ์๋ URL๋ก ์๋ด๋์ ๊ฐ์ฉ์ฑ๊ณผ ๊ท๋ชจ ํ์ฅ์ฑ, ์ฅ์ ๊ฐ๋ด ์๊ตฌ๋จ์ฐ๊ธฐ ์ฐ์ฐ : ๋งค์ผ 1์ต ๊ฐ์ ๋จ์ถ URL ์์ฑ์ด๋น ์ฝ๊ธฐ ์ฐ์ฐ : 1์ต/24/3600 = 1160์ฝ๊ธฐ ์ฐ์ฐ : ์ฝ๊ธฐ ์ฐ์ฐ๊ณผ ์ฐ๊ธฐ ์ฐ์ฐ์ ๋น์จ = 10 : 1 ๐ 11,600ํ10๋
๊ฐ ์ด์ํ๋ค๋ฉด 1์ต x 365 x 10 = 3650์ต ๊ฐ์ ๋ ์ฝ๋ ๋ณด๊ด์ถ์ฝ ์ URL์ ํ๊ท ๊ธธ์ด = 10010๋
๋์ ํ์ํ ์ ์ฅ ์ฉ๋ = 3650์ต x 100๋ฐ์ดํธ = 36.5TB 2. ๊ฐ๋ต์ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐโณ๏ธ API ์๋ํฌ์ธํธ URL ๋จ์ถ์ฉ ์๋ํฌ์ธํธ : ์ ๋จ์ถ URL์ ์์ฑํ๊ณ ์ ํ๋ ..
Java/๐ Effective Java
38. ํ์ฅํ ์ ์๋ ์ด๊ฑฐ ํ์
์ด ํ์ํ๋ฉด ์ธํฐํ์ด์ค ์ฌ์ฉํ๊ธฐ์ด๊ฑฐ ํ์
์์ฒด๋ ํ์ฅํ ์ ์์ง๋ง, ์ธํฐํ์ด์ค์ ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ธฐ๋ณธ ์ด๊ฑฐ ํ์
์ ํจ๊ป ์ฌ์ฉํด ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์ public interface Operation { double apply(double x, double y);}public enum BasicOperation implements Operation { PLUS("+") { public double apply(double x, double y) { return x + y; } }, MINUS("-") { public double apply(double x, double y) { return x - y; } }, TIMES("*"..
CS/๐ ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ
์ค๊ณ ๊ธฐ์ด
auto_increment ์์ฑ์ด ์ค์ ๋ RDB์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋๊ฑฐ ์๋๊ฐ...?๐ ๋ถ์ฐํ๊ฒฝ์์๋ ํตํ์ง ์๊ณ DB ์๋ฒ ํ ๋๋ก๋ ์๊ตฌ ๊ฐ๋น X, ์ฌ๋ฌ DB ์๋ฒ๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ์๋ ์ง์ฐ์๊ฐ์ ๋ฎ์ถ๊ธฐ ํ๋ฆ ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ID๋ ์ ์ผ์ซ์๋ก๋ง ๊ตฌ์ฑ64 ๋นํธ๋ก ํํ๋ ์ ์๋ ๊ฐ๋ฐ๊ธ ๋ ์ง์ ๋ฐ๋ผ ์ ๋ ฌ ๊ฐ๋ฅ์ด๋น 10000๊ฐ์ ID๋ฅผ ๋ง๋ค ์ ์์ด์ผ ํจ ๊ฐ๋ต์ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐโณ๏ธ ๋ค์ค ๋ง์คํฐ ๋ณต์ auto_increment ๊ธฐ๋ฅ ํ์ฉํ์ง๋ง ๋ค์ ID์ ๊ฐ์ ๊ตฌํ ๋ 1๋งํผ ์ฆ๊ฐ์ํค๋ ๊ฒ์ด ์๋๋ผ k๋งํผ ์ฆ๊ฐ์ํด(k๋ ํ์ฌ ์ฌ์ฉ ์ค์ธ DB ์๋ฒ ์)๋จ์ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ์ ๊ฑธ์ณ ๊ท๋ชจ๋ฅผ ๋๋ฆฌ๊ธฐ ์ด๋ ค์ID์ ์ ์ผ์ฑ์ ๋ณด์ฅ๋๋ง ๊ทธ ๊ฐ์ด ์๊ฐ ํ๋ฆ์ ๋ง์ถ์ด ์ปค์ง๋๋ก ๋ณด์ฅ X์๋ฒ๋ฅผ ..