[ manifest.json ] ์ฌ์ฉ์์ Tab ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ํ๋ฉด์ ์ ์ดํ๊ธฐ ๋๋ฌธ์, permissions์ ์ถ๊ฐ /* manifest.json */ ... "permissions": [ "...", "tabs", "scripting" ], "host_permissions":[ /* ํน์ URL์ script ์ฃผ์
์ ์ํ ๊ถํ */ "http://*/", "https://*/" ], ... [ Background JS ] ๋ค์ํ ๋ธ๋ผ์ฐ์ event๋ค์ monitoringํ์ฌ ์์
์ ์ํํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค ํญ URL ๋ณ๊ฒฝ ๊ฐ์ง chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab)=>{ if(changeInfo.status === 'complete')..
Chrome Extension ๋ง๋ค๊ธฐ - 1 ๐ก Chrome Storage๋ฅผ ํ์ฉํ Extension์ CRUD [ ํ๊ฒฝ ] [FE] HTML / CSS [BE] Javascript / JQuery [DB] Chrome Storage Chrome Extension ( MV3 ) [ manifest.json ] Chrome Extension์ ๋ผ๋๊ฐ์ ์กด์ฌ์ธ manifest.json ์์ฑ! manifest๋ง ์์ฑํด๋ Chrome Extension์ ์ฌ๋ ค ์ฑ์ ํ์ธํ ์ ์๋ค. { "name": "Docong", "description": "Docong Extension", "version": "1.0", "manifest_version": 3", "action": { "default_popup": "pop..
[ ์ ์ ] ์ ์ ํ์
์ ์ด์ฉํด์ SQL๋ฑ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ๋ ํ๋ ์์ํฌ → ์ฟผ๋ฆฌ๋ฅผ ์๋ฐ์ฝ๋๋ก ์์ฑํ ์ ์๊ฒ ๋์์ค Spring Data JPA๋ก ํด๊ฒฐํ์ง ๋ชปํ๋ ์ฟผ๋ฆฌ ํด๊ฒฐ ๊ฐ๋ฅ ์ฝ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํจ์ผ๋ก์จ, ์ปดํ์ผ ์์ ์ ๋ฌธ๋ฒ ์ค๋ฅ๋ฅผ ์ฝ๊ฒ ํ์ธ ๊ฒฐ๊ณผ์ ์ผ๋ก, QueryDsl๋ก ์์ฑํ ์ฝ๋๋ JPQL์ด ๋จ [ QueryDSL Config ์ค์ ] @Configuration public class QueryDslConfig { @Bean public JPAQueryFactory jpaQueryFactory(EntityManager em){ return new JPAQueryFactory(em); } } JPAQueryFactory๋น์ ๋ฑ๋ก → QueryRepository์์ ์ฌ์ฉ [ Query Reposit..
[ Controller ์์ฑ ] ์์ฒญ์ ๋ฐ๋ฅธ ์ ์ ํ ์๋ต์ ๋ณด๋ @RequiredArgsConstructor ํ๋ ์ฃผ์
(@Autowired) ๋์ ์ฌ์ฉํ๋ ์์ฑ์ ์ฃผ์
! ์ํ ์ฐธ์กฐ ๋ฐฉ์ง ํ
์คํธ ์ฝ๋ ์์ฑ ์ฉ์ด ๊ฐ์ฒด ๋ณ์ด ๋ฐฉ์ง ( final ํค์๋ ์ฌ์ฉ ) More: https://zorba91.tistory.com/238 @RequestBody ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ๋ Json ํํ์ HTTP Body ๋ด์ฉ์ Java Object๋ก ๋ณํ ๋ฉ์ธ์ง๋ฅผ ๋ณํํ๋ ๊ณผ์ ์์ ๊ฐ์ฒด์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๋ด๋ถ์ ์ผ๋ก Reflection์ ์ฌ์ฉํด ๊ฐ์ ํ ๋น → ๊ธฐ๋ณธ ์์ฑ์๋ ํ์ํ๊ณ Setter๋ ํ์ํ์ง ์์ ์ด์ ! @PathVariable URI ๊ฒฝ๋ก์ ์ผ๋ถ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ ๋ ์ฌ์ฉ @RequestP..