Posts
Q&A
synchronized ๋ฌธ์
๋ค, ์ ๋ฐฐ์ ์ต๋๋ค. ์์ธํ ๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
- 0
- 4
- 450
Q&A
babel-loader ๊ถ๊ธ์ฆ
๊ฐ์ฌ๋ ์๋ ํ์ธ์. Vite ๊ฐ์ ๋ ธ๋ฒ๋ค ๋๊ตฌ๋ฅผ ์๋ ค์ฃผ์ ์, ๋ก์ปฌ๊ฐ๋ฐํ๊ฒฝ๋ง Vite ๋ก ํ ์คํธ๋ฅผ ํด๋ณด๊ณ ์์ต๋๋ค. ๋ง์ํด์ฃผ์ ๋๋ก, Vite ๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ๊ฐ ๋ฐ๋ก Start ๋๋ ์ฅ์ ์ด ์๊ณ ์์ค ์ผ๋ถ๋ง ์์ ํ์ ๋๋ ๋น ๋ฅด๊ฒ ํ์ธํด๋ณผ ์ ์์ด์ ๊ฐ๋ฐ์์ฐ์ฑ์ ๋์์ด ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ ธ๋ฒ๋ค ๋๊ตฌ๋ผ์ ๊ทธ๋ฐ์ง, ์๋ฒ ์ฌ๋ฆฌ๊ณ localhost:3000 ์ ์ ์ํ๋ฉด Webpack compile ์์๋ ๊ฐ๋ฐ์๋๊ตฌ์ ๋คํธ์ ํญ์์ Request ๊ฐฏ์๊ฐ ๋ง์ง ์์๋๋ฐ Vite ์ ๊ฒฝ์ฐ๋ 2000๊ฐ ์ด์์ Request ๊ฐ ๋ฐ์ํ์ฌ, ํ ์คํธ๋ฅผ ์ํด ์ฒซํ์ด์ง๊ฐ ๋ก๋๋๊ธฐ๊น์ง๋ ๋ค์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋๋ผ๊ตฌ์. ๋ ธ๋ฒ๋ค๋๊ตฌ์ ํน์ฑ์, ์ด๋ถ๋ถ์ ์ข ๊ฐ์ํด์ผํ๋ ๋ถ๋ถ์ผ๊น์?
- 1
- 2
- 271
Q&A
JobParametersIncrementer ๋ฌธ์๋๋ฆฝ๋๋ค.
๊ฐ์ ๋ด์ฉ์ ์์ ๊ฐ์ ์ค๋ช ์ด ์์ด์ ์ดํด๋ฅผ ๋ชปํ๊ณ ์์์ต๋๋ค. ์์ธํ๊ฒ ์ค๋ช ์ ํด์ฃผ์ ์ ์ ์ดํดํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 4
- 952
Q&A
JobParametersIncrementer ๋ฌธ์๋๋ฆฝ๋๋ค.
JobLauncher ๊ฐ์ ์ค๋ช ํ์ค ๋, ์์ฑํ์ ๋น๋๊ธฐ์ ๋์ ์์ค๋ฅผ ๊ทธ๋๋ก ํ์ฉํ์ต๋๋ค.. Job ์ ๊ฐ์ฌ๋ ์์ค์ ์์ ๋์ผํ๊ณ ์.. @RestController @RequiredArgsConstructor public class JobLauncherController { private final Job job; private final BasicBatchConfigurer basicBatchConfigurer; @PostMapping("/execute") public String executeJob(@RequestBody Member member) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException { JobParameters jobParameters = new JobParametersBuilder() .addLong("id", member.getId()) .addString("name", member.getName()) .toJobParameters(); // ๋น๋๊ธฐ์์ผ๋ก Job์ํ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ค์ SimpleJobLauncher jobLauncher = (SimpleJobLauncher)basicBatchConfigurer.getJobLauncher(); jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor()); jobLauncher.run(job, jobParameters); return "batch success!"; } }
- 0
- 4
- 952
Q&A
์คํ๋ง ๋น ๋ฌธ์๋๋ ค์
์๋ ค์ฃผ์ ๋ด์ฉ์ ๊ฐ์ ๋ด์ฉ์ ์ ๊ฐ ๋ฃ๊ธฐ ์ ์ ์ง๋ฌธ์ ๋๋ ธ๋ค์. ์์ธํ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 343
Q&A
action ์ ์ฌํ์ฉ
๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. jQuery ๊ฐ๋ฐํ๋ ๋์๋ ๋ก์ง ์์ฒด์๋ง ์ง์ค์ ํ๋ ๊ฒ ๊ฐ์๋ฐ ๋ฆฌ์กํธ ๊ฐ๋ฐํ ๋๋ ์ํ๊ฐ ๋ฐ๋๋ฉด์ ๋ ๋๊ฐ ์์ฃผ ๋ฐ์ํ๋ฉด ๋ฌธ์ ๊ฐ ๋์ง ์์๊น ๋ผ๋ ์๊ฐ์ ํญ์ ํ๊ณ ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ ๊ฑฐ ๊ฐ์์. ๊ทธ๋ฌ๋ค๋ณด๋ ๋ฆฌ์กํธ๊ฐ ์ด๋ ต๊ฒ ๋๊ปด์ง๋ ๊ฑฐ ๊ฐ๊ณ ์.. ์ต์ํด์ง ๋๊ฐ ์ค๊ฒ ์ฃ ใ ใ
- 0
- 2
- 178
Q&A
๋ก๋๋ฐธ๋ฐ์ฑ ๋ฌธ์
Endpoints: 10.32.0.4:8080,10.32.1.9:8080,10.32.2.5:8080 ์์ ๊ฐ์ด pod ip 3๊ฐ๊ฐ ์ ์กฐํ๋๋๋ฐ๋ ์ด์ํ๊ฒ ๊ณ์ ํ๋๋ง ์กฐํ๋๋ค์. (ctrl+f5 ๋ ๋ง์ฐฌ๊ฐ์ง) ๊ทธ๋ฅ ๊ถ๊ธํจ์ด ํด๊ฒฐ๋์ง ์์ผ๋ ์ข ๋ต๋ตํ๋ค์ ใ
- 0
- 2
- 244
Q&A
Redux saga ๋ฌธ์
์ ๋ ๊ฐ์ฌ๋ ๊ฐ์๋ฅผ ๋ณด๋ฉด์ ๊ทธ๋ ๊ฒ ์ดํด๋ฅผ ํ๋๋ฐ ํ ์คํธ๋ฅผ ํด๋ณด๋ Reducer ๊ฐ ๋จผ์ ์ํ๋๊ณ Saga ํจ์๊ฐ ์งํ๋๋ ๋ฏํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด์์.. ์๋ ๊ธ๋ ์ฝ๊ฐ ๊ทธ๋ฐ ๋ด์ฉ ๊ฐ๊ณ ์.. https://github.com/redux-saga/redux-saga/issues/148
- 0
- 3
- 202
Q&A
์ปดํฌ๋ํธ ์ธ๋ถ ๋ณ์ ๋ฌธ์
์ ์ดํดํ์ต๋๋ค. ์ข์ ๋ต๋ณ ๊ฐ์ฌ๋๋ ค์~
- 0
- 2
- 335
Q&A
makeFetchSaga ๋ฌธ์๋๋ฆฝ๋๋ค.
๊ฐ์ฌ๋ ์ ๊ฐ ์ค๋ช ์ ์๋ชป ์์ฑํด ๋๋ฆฐ ๊ฒ์ธ์ง ์ ์๋์ ์กฐ๊ธ ๋ค๋ฅธ ๋ต๋ณ์ ํด์ฃผ์ ๊ฑฐ ๊ฐ์์. "์ํ ์กฐํ" ๋ผ๋ Action ์ Dispatch ํ๋ฉด fetchGetItem ์ด๋ผ๋ Saga ํจ์๊ฐ ํธ์ถ๋๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.fetchGetItem ์์์๋ ์๋ก ๋ค๋ฅธ 2๊ฐ์ API ๋ฅผ call ํด์ผ ํฉ๋๋ค.(2๊ฐ์ API ๋ฅผ ๊ฒฐ๊ณผ๋ฅผ ์กฐํฉํด์ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ผ๋ก ์ ๋ฌํด์ผ ํ๋ค๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.) function* fetchGetItem() { const { itemApi, itemSaleApi } = yield all({ itemApi: call(callApi, { url: '/item/...', method: 'post', }), itemSaleApi : call(callApi, { url: '/itemSale/....', method: 'post', }), }); ... ์ดํ ์๋ต ๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ Case ๋ ์์ ๊ฑฐ ๊ฐ์์. fetchGetItem ์์์ ๋๊ธฐ์์ผ๋ก 2๋ฒ์ ์๋ก ๋ค๋ฅธ API ๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ function* fetchgetItem() { const { isSuccess, data } = yield call(callApi, { url: '/item/....', method: 'post', }); if (data.saleId){ const { isSuccess, data } = yield call(callApi, { url: '/itemSale/....', method: 'post', data: { saleId: data.saleId }, }); } .. ์ดํ ์๋ต ์ฆ, Saga ํจ์ ์์์ ์๋ก๋ค๋ฅธ API ๋ฅผ ๋ค์ํ๊ฒ ํธ์ถํ๋ ๊ฒฝ์ฐ, ์ง๊ธ์ makeFetchSaga ๋ ์ํ๊ด๋ฆฌ๊ฐ์ ๋๋ก ๋์ง ์์ ๋ฏ ํ๋ฐ์.. ์ด๋ฐ ๋ถ๋ถ์ ๋ํด์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๊ณ ๊ณ์ ์ง๊ฐ ๊ถ๊ธํฉ๋๋ค.
- 1
- 3
- 269