`launch` : ์์
์คํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์์`async` : ์ฝ๋ฃจํด์ผ๋ก๋ถํฐ ๊ฒฐ๊ด๊ฐ์ ์์ → Deferred ๊ฐ์ฒด ๋ฐํ async ์ฌ์ฉํด ๊ฒฐ๊ณผ๊ฐ ์์ ํ๊ธฐasync ์ฌ์ฉํด Deferred ๋ง๋ค๊ธฐfun CoroutineScope.async( context: CoroutineContext = EmptyCoroutineContext, // CoroutineDispatcher ์ค์ ๊ฐ๋ฅ start: CoroutineStart = CoroutineStart.DEFAULT, // ์ง์ฐ์์ ์ค์ ๊ฐ๋ฅ block: suspend CoroutineScope.() -> T): DeferredDeferred์ฝ๋ฃจํด์ ์ถ์ํํ ๊ฐ์ฒด์ฝ๋ฃจํด์ผ๋ก๋ถํฐ ์์ฑ๋ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ธ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ฒฐ๊ณผ๊ฐ์ ํ์
์ ์ ๋ค๋ฆญ ํ์
a..
๐ป ๊ฐ๋ฐ ์ผ์ง
๐ก OpenAI Embedding์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์
๋ ฅ๊ณผ ๊ฐ์ฅ ์ ์ฌํ ๋ฌธ์๋ฅผ ๊ฒ์ํ๋ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ค.โ๏ธ ์ด์ ๋ฒ์ : https://doteloper.tistory.com/114Flow ๊ฐ๋ฐํ๊ฒฝ๋ชจ๋ธ: OpenAI Embedding - text-embedding-3-small๋ฒกํฐ DB: elastic searchflask / python3์ฐธ๊ณ : openai cookbookEmbedding ์์ฑopenai package๋ฅผ ์ฌ์ฉํ์ฌ Embedding ๊ฐ ์์ฑ (document)client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"))def get_embedding(text, model="text-embedding-3-small"): text = text.r..
๐ก SNS ๋ก๊ทธ์ธ(์นด์นด์ค)์ ์ํ Rest API ์์ฑโก๏ธ 1ํ ๋ฐ๋ก๊ฐ๊ธฐ: ์ค์ ๋ฐ ํ์๊ฐ์
โก๏ธ 2ํ ๋ฐ๋ก๊ฐ๊ธฐ: JWT ๋ก๊ทธ์ธ ๋ฐ ํ์ ์ ๋ณด ์กฐํโก๏ธ 3ํ ๋ฐ๋ก๊ฐ๊ธฐ: Refresh TokenSNS ๋ก๊ทธ์ธ Flowํด๋น ํ๋ก์ ํธ์์๋ ๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ Rest API๋ฅผ ๊ตฌํํ๋ค.Client SDK์์ ์นด์นด์ค ๋ก๊ทธ์ธ ์๋ฃ ํ 3rd๋ก๋ถํฐ ์ ํด๋ฐ๋ accesToken์ Server์ ์ ๋ฌํ๋ค.ํด๋น AccessToken์ผ๋ก ๋ค์ํ๋ฒ 3rd์ ์กฐํํ์ฌ, ํ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.์กฐํํ ํ์ ์ ๋ณด๊ฐ ์์ ๊ฒฝ์ฐ, ๋ฐ๋ก ๋ก๊ทธ์ธ ๋ก์ง์ ์คํํ์ฌ ์ฑ๊ณต ์๋ต์ ๋ณด๋ธ๋ค.์กฐํํ ํ์ ์ ๋ณด๊ฐ ์์ ๊ฒฝ์ฐ, ํ์ ์ ๋ณด๋ฅผ ์๋ก ์ ์ฅ(ํ์๊ฐ์
)ํ๊ณ ๋ก๊ทธ์ธ๊น์ง ์ฑ๊ณต์์ผ ์๋ต์ ๋ณด๋ธ๋ค.๊ฐ๋ฐ ํ๊ฒฝSpring Boot 3.x.x / Ko..
๐ก SpringMail์ ์ฌ์ฉํ์ฌ ๋ฉ์ผ ์ ์ก ๊ตฌํ GitHub - jeongum/spring-mail Contribute to jeongum/spring-mail development by creating an account on GitHub. github.com ๊ฐ๋ฐํ๊ฒฝ SpringBoot 3.1.4 kotlin / java 17 build.gradle.kts ์ค์ ์ฌ์ฉํ springframework mail ์ค์ ์ถ๊ฐ implementation("org.springframework.boot:spring-boot-starter-mail") application.yml ์ค์ ๋ฉ์ผ ์ ์ก์ ํ์ํ smtp ์ค์ spring: mail: host: smtp.gmail.com port: 587 username:..