Partkeepr: ์ƒˆ ๋ฒ„์ „ ๊ฐœ๋ฐœ ๊ณผ์ •

์— ๋งŒ๋“  2019๋…„ 01์›” 25์ผ  ยท  20์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: partkeepr/PartKeepr

partkeepr์˜ ์ƒˆ ๋ฒ„์ „์— ๋Œ€ํ•œ "ETA" :) ? ๋ˆ„๊ตฐ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฏธ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๊ถ๊ธˆํ•˜๋‹ค

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…• ํŽ ๋ฆฌ์‹œ์•„

์‘๋‹ตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ดˆ๊ธฐ์— ์›น ๊ธฐ์ˆ ๊นŒ์ง€ ๋งŽ์€ ๊ฒƒ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ PartKeepr์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ๋Š” ์ƒ๋‹นํžˆ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ๋œ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์€ Windows ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๋งํ–ˆ๋“ฏ์ด ํ•™์Šต ๊ณก์„ ์€ ๋„ˆ๋ฌด ๊ฐ€ํŒŒ๋ฅด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทผ๋ณธ์ ์ธ ์งˆ๋ฌธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ํšจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋ชฉํ‘œ๋Š” ๋ฌด์—‡์ด๋ฉฐ ์‚ฌ์šฉ๋œ ๊ธฐ์ˆ ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์–ด๋–ป๊ฒŒ ๋ถˆ๋ฆฌ๋“  ์ƒ๊ด€์—†์ด.

ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ํŠนํžˆ Symfony2์™€ ๊ฐ™์ด ๋„๋ฆฌ ์‚ฌ์šฉ, ์ฑ„ํƒ ๋ฐ ์œ ์ง€๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ:

  • ์ฝ”๋“œ ์ค‘๋ณต ๋ฐฉ์ง€
  • ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ
  • ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
  • ์ž‘์—… ๊ฐ์†Œ

PartKeepr 0.1.9๊นŒ์ง€๋Š” ์ง€์†์„ฑ์„ ์œ„ํ•ด Doctrine์„ ์ œ์™ธํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(๋‹น์‹œ์—๋Š” Symfony2๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค). ์œ ์ง€ ๋ณด์ˆ˜๋Š” ์•…๋ชฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

PartKeepr์— SQL ์ธ์ ์…˜์ด ์—†๋Š” ์ด์œ ๋Š” Doctrine ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 0.1.9 ์ดํ›„์— ์งง์€ ์‹œ๊ฐ„์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ๋งŽ์ด ๋‚˜์˜จ ์ด์œ ๋Š” ๊ฐœ๋ฐœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— Symfony2์™€ API ํ”Œ๋žซํผ ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. PartKeepr์ด ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋’ค์—์„œ ์ง€์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•˜๋Š” ์ด์œ : Symfony2. PartKeepr์ด ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด nginx์—์„œ ์ž‘๋™ํ•˜๋Š” ์ด์œ : Symfony2.

Symfony2์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด๋„ ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์›น์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PartKeepr์ด ์ž์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋ผ๋„ ๋…์ž์ ์œผ๋กœ ๋งŽ์€ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์— Bug Genie๋ฅผ ์ด์Šˆ ํŠธ๋ž˜์ปค๋กœ ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ž์ฒด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์‚ฌ์šฉ ์ค‘์— ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด 8๊ฐœ ์ด์ƒ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. 6๊ฐœ์˜ ๋ฒ„๊ทธ๊ฐ€ ๋” ๋ฐœ์ƒํ•œ ํ›„(ํ•œ ๋‹ฌ์— 30๋ถ„ ์ •๋„๋งŒ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค) ์‚ฌ์šฉ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐœ๋ฐœ ์ง€์›์„ ๊ฑฐ์˜ ๋ฐ›์ง€ ๋ชปํ•œ ์ด์œ ์— ๋Œ€ํ•œ ๋‹ต์„ ์ œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ข‹์€ ์‚ฌ๋žŒ์€ ์•„๋งˆ๋„ ๋‹น์‹ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ.

๋‚ด๊ฐ€ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€: ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์€ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜๊ณผ ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ๋Š”๋ฐ ์™œ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ• ๊นŒ์š”?

๋‚ด๊ฐ€ ์Šค์Šค๋กœ์—๊ฒŒ ํ•˜๊ณ  ์žˆ๋Š” ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ฆ๊ฑฐ์šธ๊นŒ์š”? ๋‚ด ๊ฒฝํ—˜์ด ๋„์›€์ด ๋ ๊นŒ์š”? ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‚ด ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๊นŒ? ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์Šต๋‹ˆ๊นŒ?

์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์™€ ๊ธฐ๋ณธ ๊ธฐ์ˆ ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ์˜์ง€๊ฐ€ ์—†๋‹ค๋ฉด ๊ทธ๋‹ค์ง€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ์„ ํƒ์— ๋Œ€ํ•ด ํ•œ๋ฐœ ๋” ๋‚˜์•„๊ฐ€ ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋‚˜์œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ํ”„๋กœ์ ํŠธ์˜ ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋‚˜ ๊ฐœ๋ฐœ ์กฐ์ •์— ์ฐธ์—ฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  20 ๋Œ“๊ธ€

2018๋…„ 7์›” 20์ผ ์ดํ›„๋กœ ์ปค๋ฐ‹๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ETA๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ์ฃผ์š” ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•œ ETA์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋ฅผ ๊ฐ€์งˆ ๋•Œ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ๋ฆด๋ฆฌ์Šค๋„ ํ™•์‹คํžˆ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์–ด๋–ค์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ตœ์‹  ํ”„๋กœ์ ํŠธ ์ •๋ณด๋Š” ์—ฌ๊ธฐ: https://www.patreon.com/posts/its-end-for-me-22527966
๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์—๋Š” ๋” ์ด์ƒ ๊ด€๋ฆฌ์ž๊ฐ€ ์—†์ง€๋งŒ ์ง„์ง€ ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ @christianlupus ๊ฐ€ ์˜ณ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ƒˆ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊นŒ์ง€ ETA์ž…๋‹ˆ๋‹ค.

.

5๋ช…์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์€ ๊ฒฌ๊ณ ํ•œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ(๋ฐ ์•„๋งˆ๋„ ์ด ๋‹จ๊ณ„์—์„œ ์ž๊ธˆ ์ง€์›) ์—†์ด๋Š” ๋ฌด์šฉ์ง€๋ฌผ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ํ•œ๋‘ ๋ช…์œผ๋กœ ์ƒ์กดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋…€๊ฐ€ ์ง€์ ํ•œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ๋ฌธ์ œ ๊ด€๋ฆฌ์™€ ๋‚˜์œ ํ–‰๋™์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋Š” ๊ฑด๊ฐ• ๋ฌธ์ œ๊ฐ€ ์žˆ๋”๋ผ๋„ ๋ฌธ์ œ ๋ถ„๋ฅ˜ ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š” ์—†์ด ์ž‘์—…์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๋‘ ๋ช…์˜ ๊ฐœ๋ฐœ์ž์™€ ํ•จ๊ป˜ ํ–‰๋ณตํ•˜๊ฒŒ ์‚ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.

PartKeepr์€ ๋™์ผํ•œ ์ฃผ์žฅ์ด ์ ์šฉ๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Symphony๋Š” ์‹ค์ œ๋กœ ํ‹ˆ์ƒˆ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์˜ˆ, ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๋ฅผ ์•Œ๊ณ  ์žˆ๊ฑฐ๋‚˜ ๋ฐฐ์šฐ๋ ค๋Š” ์‚ฌ๋žŒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ํ‹ˆ์ƒˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ปจํ…์ŠคํŠธ๋Š” ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตํ–ฅ๊ณก์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ฃฝ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•  ๋™๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ ์•„๋‹™๋‹ˆ๋‹ค.

.

์ •๋ง ๊ณ ๊ธ‰ ๊ธฐ์„ฑ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ๋” ๋ฐœ์ „๋œ ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๋‹จ์ง€ ํ”„๋ ˆ์ž„์›Œํฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์˜ˆ, ๋งค์šฐ ๊ฐ€๋ฒผ์šด ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•˜๋ฃจ๊ฐ€ ๋๋‚˜๋ฉด ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•ด ์ˆ˜๋งŽ์€ ํ™•์žฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŒ๋“ค๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. "๊ณ ๊ธ‰ ํ”„๋ ˆ์ž„ ์›Œํฌ"๋งŒํผ ๋ฌธ์„œํ™”๋˜๊ณ  ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ข‹์€ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋งŽ์€ ์žฌ์„ค๊ณ„๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์•„๋งˆ๋„ Symphony ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ์„ฑํ’ˆ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” Win32 ์•ฑ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ํ˜„์žฌ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•  POC๊ฐ€ ์—†๋Š” ํ•œ BS์ž…๋‹ˆ๋‹ค.
๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜๋ฉด ๋•Œ๋•Œ๋กœ ํšจ๊ณผ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•ญ์ƒ ์ž‘๋™ํ•˜๋Š” ์†”๋ฃจ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค.

"๊ตํ–ฅ๊ณก ํ•™์Šต ๊ณก์„ ์ด ๋„ˆ๋ฌด ๊ฐ€ํŒŒ๋ฅด๋‹ค"๊ณ  ๋งํ•˜๋ฉด ๋งž์ถค ์ œ์ž‘์ด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ?

์ด์ œ "๊ตํ–ฅ๊ณก์€ ๋‚˜์˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์“ฐ์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ์ ํŠธ๋Š” ํŒŒ๋ฉธ"์ด๋ผ๊ณ  ์™ธ์น˜๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ๋‚˜์•„๊ฐ€๊ฒŒ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ, PR๊ณผ ๊ธฐ์—ฌ์ž๋“ค๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ณ„๋‹จ์‹ ์‚ฌ์–‘์ด ์žˆ๋Š” ๋ฒ”์ฃผ๋ฅผ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฒ”์ฃผ๋Š” ํ•ด๋‹น ๋ฒ”์ฃผ ๋‚ด์˜ ๊ตฌ์„ฑ ์š”์†Œ์—๋„ ๊ณ„๋‹จ์‹์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค(์žฌ์ •์˜ ๊ฐ€๋Šฅ์„ฑ ํฌํ•จ). ๊ทธ๋ฆฌ๊ณ  ๊ตฌ์„ฑ ์š”์†Œ ์œ ํ˜•์— ๋”ฐ๋ผ ๊ฒฐํ•ฉ๋œ ๋ชจ๋“  ์‚ฌ์–‘์— ๋Œ€ํ•œ ๋ฉ‹์ง„ ํ˜•์‹์˜ ์„ค๋ช…์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค. Symfony์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”. ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋„ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ๊ณ„์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ ๊ตฌํ˜„์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ์ผ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Symphony๋‚˜ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‚˜์˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์žฌ๊ณ  ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์œผ๋ฉด ํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ทธ๋“ค์€ ์‚ญ๊ฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ BS๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ด€๋ จ๋œ ๋ณต์žก์„ฑ์— ๋Œ€ํ•œ ์ข‹์€ ์ดํ•ด์ž…๋‹ˆ๋‹ค.

ํŠน์ • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋„๋Œ€์ฒด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ถ•ํ•  ๊ณ„ํš, ์ฒ ํ•™ ๋ฐ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ฐธ๊ณ  ์‚ฌํ•ญ: ์˜ˆ, ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ €์žฅ์†Œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ PartKeepr UG์˜ ์ฒญ์‚ฐ์œผ๋กœ ๊ฝค ๋ฐ”์ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ณง ๊ทธ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

.

์•ˆ๋…• ํŽ ๋ฆฌ์‹œ์•„

ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์„œ์˜ Symphony์— ๋Œ€ํ•œ ๋‚˜์˜ ์ดํ•ด๋Š” -๋งํ–ˆ๋“ฏ์ด- ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ด๋ธ”, ์ฟผ๋ฆฌ์—์„œ ์ง์ ‘ ์ฝ์–ด UI ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ ๊ธ‰ ๋ฐฉ์‹์œผ๋กœ ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์ž˜๋ชป๋œ ๊ฐ€์ •์„ ํ•˜๋Š” ๋Œ€์‹  Symfony๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ฝ๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ PartKeepr์—์„œ๋Š” ์•„๋‹Œ Symfony์—์„œ ์ƒ์„ฑ๋œ UI ๋ณด๊ธฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ ๊ณ„๋‹จ์‹ ๋ฐ ์ƒ์†๋œ ์ •๋ณด๋Š” ์ฟผ๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฏ€๋กœ (ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜) ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๋‹น์‹ ์€ ๋ฌผ๊ฑด์„ ์˜คํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Symfony๋Š” ํƒ€์‚ฌ ๋ฒˆ๋“ค์„ ํ†ตํ•ด ๊ทธ๋Ÿฌํ•œ ๊ฒƒ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹ค์‹œ PartKeepr์€ ์ด๋Ÿฌํ•œ ๋ฒˆ๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Symfony๋Š” ์ฃผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ ์•„ํ‚คํ…์ฒ˜, ์ง๋ ฌํ™” ๊ธฐ๋Šฅ(ํ•จ๊ป˜ API ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” JSON-LD ์ƒ์„ฑ) ๋ฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ Doctrine์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

https://wiki.partkeepr.org/wiki/Developers/Architecture ์ฐธ์กฐ

.

์•ˆ๋…• ํŽ ๋ฆฌ์‹œ์•„

์‘๋‹ตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ดˆ๊ธฐ์— ์›น ๊ธฐ์ˆ ๊นŒ์ง€ ๋งŽ์€ ๊ฒƒ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ PartKeepr์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ๋Š” ์ƒ๋‹นํžˆ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ๋œ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์€ Windows ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๋งํ–ˆ๋“ฏ์ด ํ•™์Šต ๊ณก์„ ์€ ๋„ˆ๋ฌด ๊ฐ€ํŒŒ๋ฅด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทผ๋ณธ์ ์ธ ์งˆ๋ฌธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ํšจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋ชฉํ‘œ๋Š” ๋ฌด์—‡์ด๋ฉฐ ์‚ฌ์šฉ๋œ ๊ธฐ์ˆ ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์–ด๋–ป๊ฒŒ ๋ถˆ๋ฆฌ๋“  ์ƒ๊ด€์—†์ด.

ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ํŠนํžˆ Symfony2์™€ ๊ฐ™์ด ๋„๋ฆฌ ์‚ฌ์šฉ, ์ฑ„ํƒ ๋ฐ ์œ ์ง€๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ:

  • ์ฝ”๋“œ ์ค‘๋ณต ๋ฐฉ์ง€
  • ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ
  • ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ
  • ์ž‘์—… ๊ฐ์†Œ

PartKeepr 0.1.9๊นŒ์ง€๋Š” ์ง€์†์„ฑ์„ ์œ„ํ•ด Doctrine์„ ์ œ์™ธํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(๋‹น์‹œ์—๋Š” Symfony2๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค). ์œ ์ง€ ๋ณด์ˆ˜๋Š” ์•…๋ชฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

PartKeepr์— SQL ์ธ์ ์…˜์ด ์—†๋Š” ์ด์œ ๋Š” Doctrine ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 0.1.9 ์ดํ›„์— ์งง์€ ์‹œ๊ฐ„์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ๋งŽ์ด ๋‚˜์˜จ ์ด์œ ๋Š” ๊ฐœ๋ฐœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— Symfony2์™€ API ํ”Œ๋žซํผ ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. PartKeepr์ด ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๋’ค์—์„œ ์ง€์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•˜๋Š” ์ด์œ : Symfony2. PartKeepr์ด ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด nginx์—์„œ ์ž‘๋™ํ•˜๋Š” ์ด์œ : Symfony2.

Symfony2์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด๋„ ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์›น์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

PartKeepr์ด ์ž์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋ผ๋„ ๋…์ž์ ์œผ๋กœ ๋งŽ์€ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์— Bug Genie๋ฅผ ์ด์Šˆ ํŠธ๋ž˜์ปค๋กœ ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ž์ฒด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์‚ฌ์šฉ ์ค‘์— ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด 8๊ฐœ ์ด์ƒ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. 6๊ฐœ์˜ ๋ฒ„๊ทธ๊ฐ€ ๋” ๋ฐœ์ƒํ•œ ํ›„(ํ•œ ๋‹ฌ์— 30๋ถ„ ์ •๋„๋งŒ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค) ์‚ฌ์šฉ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐœ๋ฐœ ์ง€์›์„ ๊ฑฐ์˜ ๋ฐ›์ง€ ๋ชปํ•œ ์ด์œ ์— ๋Œ€ํ•œ ๋‹ต์„ ์ œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ข‹์€ ์‚ฌ๋žŒ์€ ์•„๋งˆ๋„ ๋‹น์‹ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ.

๋‚ด๊ฐ€ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€: ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์€ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜๊ณผ ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ๋Š”๋ฐ ์™œ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ• ๊นŒ์š”?

๋‚ด๊ฐ€ ์Šค์Šค๋กœ์—๊ฒŒ ํ•˜๊ณ  ์žˆ๋Š” ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ฆ๊ฑฐ์šธ๊นŒ์š”? ๋‚ด ๊ฒฝํ—˜์ด ๋„์›€์ด ๋ ๊นŒ์š”? ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‚ด ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๊นŒ? ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์Šต๋‹ˆ๊นŒ?

์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์™€ ๊ธฐ๋ณธ ๊ธฐ์ˆ ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ์˜์ง€๊ฐ€ ์—†๋‹ค๋ฉด ๊ทธ๋‹ค์ง€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ์„ ํƒ์— ๋Œ€ํ•ด ํ•œ๋ฐœ ๋” ๋‚˜์•„๊ฐ€ ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋‚˜์œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ํ”„๋กœ์ ํŠธ์˜ ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋‚˜ ๊ฐœ๋ฐœ ์กฐ์ •์— ์ฐธ์—ฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ symfony 3.4๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•ฝ๊ฐ„์˜ ์ง„์ „์„ ์ด๋ฃจ๋ฉด ๋‚˜๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ์ค„ ๊ฒƒ์ด๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š” @JelleDijkhuizen
symfony 3.x ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ ํฌํฌ๋ฅผ ์–ด๋””์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@martonmiklos , @adlerweb ์ด ํฌํฌ์˜ ์ „์šฉ ๋ถ„๊ธฐ์—์„œ PartKeepr์„ Symphony 4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค... :-)

@ZupoLlask ์•Œ๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํ† ๋ก ์ด ๊ธธ์—ˆ๊ณ  ์ฃผ์š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. #1059๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ž˜์„œ ์ผ๋‹จ ์ด ๊ธ€์„ ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰