๐ฅ Web
[FCM] Firebase Cloud Messaging Vanilla JS + FastAPI์ ์ ์ฉํ๊ธฐ
FCM ์ค์ ๊ณต์ ์์ ์์๋ Node JS ๊ธฐ์ค์ผ๋ก ์ค๋ช ๋์ด ์์https://firebase.google.com/docs/cloud-messaging/js/client?hl=ko&_gl=1*16582yh*_up*MQ..*_ga*MTk1Nzk3ODc5Mi4xNzEzMjI3MTcy*_ga_CW55HF8NVT*MTcxMzIyNzE3Mi4xLjAuMTcxMzIyNzE3Mi4wLjAuMA..#web-modular-apiVanilla JS ํ๊ฒฝ์์ ํ๋ ๋ฒ ์ ๋ฆฌ ์๋ฐ์คํฌ๋ฆฝํธ Firebase ํด๋ผ์ฐ๋ ๋ฉ์์ง ํด๋ผ์ด์ธํธ ์ฑ ์ค์ Google I/O 2023์์ Firebase์ ์ฃผ์ ์์์ ํ์ธํ์ธ์. ์์ธํ ์์๋ณด๊ธฐ ์๊ฒฌ ๋ณด๋ด๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ Firebase ํด๋ผ์ฐ๋ ๋ฉ์์ง ํด๋ผ์ด์ธํธ ์ฑ ์ค์ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ..
[etc] Logout ํ ๋ค๋ก ๊ฐ๊ธฐ ๋ฐฉ์ง - BF Cache
๋ฌธ์ logout์ ํ ๋ค์ ๋ก๊ทธ์ธ ๊ถํ์ด ํ์ํ ํ์ด์ง๋ก ๋ค๋ก ๊ฐ๊ธฐ๋ฅผ ๋๋ ์ ๋, ๋ฐ์ดํฐ๊ฐ ๊ทธ๋๋ก ๋ ธ์ถ๋๋ ๋ฌธ์ ๋ณด์์์ ๊ฒฐํจ์ผ๋ก ์์ ํด์ผํ๋ ๊ฒฝ์ฐ ์์ธ ๋ธ๋ผ์ฐ์ ์์ ๊ด๋ฆฌํ๋ BF Cache(Back-Forward Cache) ์น ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด ํด๋น ํ์ด์ง์ css/html/javascript/image ๋ฑ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์บ์์ ์ ์ฅ ๋ค๋ก๊ฐ๊ธฐ / ์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฒ์ ๋ค์ ์์ฒญํ์ง ์๊ณ ์บ์ ๋ฆฌ์์ค ํ์ฉํด์ ๋ก๋ฉ ๋ก๊ทธ์์ ์ดํ์๋ BF Cache๊ฐ ๋จ์์๊ธฐ ๋๋ฌธ์ ๋ค์ ํ์ด์ง๊ฐ ๋ณด์ผ ์ ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ(Fast API ๊ธฐ์ค) Jinja Template response ์ฌ์ฉ ๋ก๊ทธ์ธ ํด์ผ ์ด์ฉํ ์ ์๋ ํ์ด์ง์ ์ ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ผ์ฐํฐ์์ access token ํ์ธ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ..
[SciChart] Vanilla Javascript์์ SciChart ์ฌ์ฉํ๊ธฐ
Javascript์์ SciChart ์ฌ์ฉํ๊ธฐ script๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ฏธ๋ฆฌ ํ์ํ ๊ฒ๋ค ์ ์ํ๊ธฐ ... const { SciChartSurface, NumericAxis, DateTimeNumericAxis, FastLineRenderableSeries, XyDataSeries, XyScatterRenderableSeries, EllipsePointMarker, EZoomState, SweepAnimation, SciChartJsNavyTheme, RolloverModifier, RubberBandXyZoomModifier, NumberRange, LegendModifier, MouseWheelZoomModifier, ZoomPanModifier, ZoomExtentsModifier } = SciCha..
[PostgreSQL] Windows ์ธ๋ถ ์ ์ ํ์ฉ ์ค์ ๋ฐ ์ธ๋ถ ์ ์ ๋ฐฉ๋ฒ
postgresql.conf ์์ C:\Program Files\PostgreSQL\15\data_ ๊ฒฝ๋ก์ postgresql.conf listen_addresses = '*' ๋ก ์ค์ - ๋ชจ๋ ip ์ฃผ์์์ ์ ์ ํ์ฉ white list ip ์ค์ ํ๊ณ ์ถ์ผ๋ฉด ip ์ฃผ์ ์ฐ๊ธฐ ps_hba.conf ์์ C:\Program Files\PostgreSQL\15\data ๊ฒฝ๋ก์ pg_hba.conf # IPv4 local connections: host all all 0.0.0.0/0 scram-sha-256 IPv4 local connection address 0.0.0.0/0 ์ผ๋ก ์์ (์๋๋ 127.0.0.1) ๋ฐฉํ๋ฒฝ ์ค์ ๊ณ ๊ธ ๋ณด์์ด ํฌํจ๋ windows defender ๋ฐฉํ๋ฒฝ ์ธ๋ฐ์ด๋ ๊ท์น - ์ ๊ท..
[Spring ์ ๋ฌธ] 5. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ
1. ํ์ ์น ๊ธฐ๋ฅ - ํ ํ๋ฉด ์ถ๊ฐ localhost:8080 ์ผ๋ก ํธ์ถ container์์ ๋ค์ง localhost:8080/ < ์ปจํธ๋กค๋ฌ ์์ ์ฐ๊ฒฐ! package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String Home() { return "home"; } } 2. ํ์ ์น ๊ธฐ๋ฅ - ๋ฑ๋ก package hello.hellospring.controller; import he..
[Spring ์ ๋ฌธ] 4. ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ
1. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์ ํ์ ์ปจํธ๋กค๋ฌ๊ฐ ์๋น์ค์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ → ์์กด๊ด๊ณ ์์ฑ package hello.hellospring.controller; import org.springframework.stereotype.Controller; @Controller public class MemberController { } @Controller ๋ก annotation์ ํ๊ฒ๋๋ฉด ์คํ๋ง ๋น์์ ์๋ฅผ ๊ด๋ฆฌํ๊ฒ ํ ์ ์์. private final MemberService memberService; ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋กํด์ ํ๋๋ฅผ ์ฌ๋ฌ ๊ฐ๊ฐ ๊ณต์ @Controller public class MemberController { private final MemberService m..
[Spring ์ ๋ฌธ] 3. ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ
1. ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ์ ๋ฆฌ ๋ฐ์ดํฐ ํ์ ID ์ด๋ฆ ๊ธฐ๋ฅ ํ์ ๋ฑ๋ก ์กฐํ ์์ง DB ์ ์ ํ์ง ์์ ์ํฉ ← ์ด๋ผ๋ ์ค์ ์ปจํธ๋กค๋ฌ : ์น MVC์ ์ปจํธ๋กค๋ฌ (API ์์ฑ ๋ฑ) ์๋น์ค : ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ๋๋ฉ์ธ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ / ๊ด๋ฆฌ๋๋ ๊ฒ ๋ฆฌํฌ์งํ ๋ฆฌ : ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ๊ทผ / ๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ DB์ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ ์ธํฐํ์ด์ค๋ก ๊ตฌํ ํด๋์ค ๋ณ๊ฒฝ ๊ฐ๋ฅํ๊ฒ ์ค๊ณ(DB ์ ์ ์ ํจ) ๊ตฌํ์ฒด๋ก ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ๊ฐ๋ฒผ์ด ๋ฐ์ดํฐ ์ ์ฅ์๋ก ๊ฐ๋ฐ ์งํ 2. ํ์ ๋๋ฉ์ธ๊ณผ ๋ ํฌ์งํ ๋ฆฌ ๋ง๋ค๊ธฐ 1. Member ํด๋์ค ์์ฑ package hello.hellospring.domain; public class Member { private Long id; // database index์ ๊ฐ๊น์ private String ..
[Elasticsearch] Index Template ๊ตฌ์ฑํ๊ธฐ with Kibana & Logstash (2) - Mapping ๊ธฐ์ด
2023.07.06 - [Web/Back-end \ etc.] - [Elasticsearch] Index Template ๊ตฌ์ฑํ๊ธฐ with Kibana & Logstash (1) - Setting [Elasticsearch] Index Template ๊ตฌ์ฑํ๊ธฐ with Kibana & Logstash (1) - Setting Elasticsearch์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ ๋, ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ ์ง์ ๋ํ ์ธํ ์ ํด์ค ์ ์๋ค. Elasticsearch๋ ์ญ์์ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ฑํ๊ธฐ ๋๋ฌธ์, ์ญ์์ธ์ ๊ธฐ์ค์ด ๋๋ ๋จ์ด(token) dnai-deny.tistory.com ์ด์ ํฌ์คํ ์ ์ด์ด ์ด๋ฒ์๋ Index Template์ ๋ ๋ฒ์งธ ์ฃผ์ ๊ตฌ์ฑ์ธ Mapping ์์ญ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค. M..
[Elasticsearch] Index Template ๊ตฌ์ฑํ๊ธฐ with Kibana & Logstash (1) - Setting
Elasticsearch์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ ๋, ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ ์ง์ ๋ํ ์ธํ ์ ํด์ค ์ ์๋ค. Elasticsearch๋ ์ญ์์ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ฑํ๊ธฐ ๋๋ฌธ์, ์ญ์์ธ์ ๊ธฐ์ค์ด ๋๋ ๋จ์ด(token)๋ค์ ์ด๋ป๊ฒ ํ ํฐํํ๋์ง์ ๋ฐ๋ผ์ ๊ฒ์์ ๊ฒฐ๊ณผ๋ ๋ฌ๋ผ์ง ์ ์๋ค. ์ด๋ ๊ฒ Token์ ์์ฑํ๋ ๊ท์น์ ๋ด์ ์ค์ ์ Index Template๋ผ๊ณ ๋ถ๋ฅธ๋ค. Elasticsearch์ Index Template์ ํฌ๊ฒ Setting์ ์์ญ๊ณผ Mapping์ ์์ญ์ผ๋ก ๋๋์ด์ง๋ค. ์ค๋์ Setting์ ๊ตฌ์ฑ์์์ธ Analyzer, Tokenizer, Filter์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๋ ค๊ณ ํ๋ค! logstash์์ elasticsearch๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค ๋ json ํํ๋ก ๋ฏธ๋ฆฌ setting ..
[Spring ์ ๋ฌธ] 2. ์คํ๋ง ์น ๊ฐ๋ฐ ๊ธฐ์ด
์ ์ ์ปจํ ์ธ = ํ์ผ์ ๊ทธ๋๋ก ๊ณ ๊ฐ์๊ฒ ์ ๋ฌ MVC & ํ ํ๋ฆฟ ์์ง = html์ ์๋ฒ์์ ๊ฐ๊ณตํด์ ๋์ ์ปจํ ์ธ ๋ก ์ ๋ฌ API = json ๋ฐ์ดํฐ ํฌ๋งท์ผ๋ก ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ ์ ๋ฌ Vue.js, React ๋ฑ์์ ์ฌ์ฉ ์๋ฒ๋ผ๋ฆฌ ํต์ ํ ๋ 1. ์ ์ ์ปจํ ์ธ Spring boot๋ static/ ํด๋์์ ์ ์ ์ปจํ ์ธ ๋ฅผ ์ฐพ์์ ์ฌ์ฉํ๋ค. ex) resources/static/hello-static.html ์ ์ ์ปจํ ์ธ ์ ๋๋ค. ํ๋ฆ๋ ์ฃผ์ ์์ฒญ ๋ณด๋ ํฐ์บฃ ์๋ฒ์์ ์ ์ ๋จผ์ ์คํ๋ง ์ปจํ ์ดํฐ์์ ์ปจํธ๋กค๋ฌ ์๋์ง ํ์ธ ์์ผ๋ฉด static ํ์์ ํ์ผ ์ฐพ์ ์์ผ๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ก ๋ฆฌํดํด์ค 2. MVC์ ํ ํ๋ฆฟ ์์ง MVC = Model View Controller ๊ณผ๊ฑฐ view์ controller๊ฐ ๋๋์ด์ง์ง ์์..