เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจธเจพเจกเฉ€ เจฌเฉ‡เจจเจคเฉ€ 'เจคเฉ‡, เจนเจพเจฌเจฐ เจจเฉ‡ เจ‡เฉฑเจ• เจนเฉฑเจฌ เจฌเจฃเจพเจ‡เจ† เจ•เจฌเจฐเจจเฉ‡เจŸเจฟเจธ เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพ เจชเฉเจฐเจ•เจพเจธเจผเจจ เจฐเฉฑเจ– เจ•เฉ‡ เจ–เฉเจธเจผ เจนเจพเจ‚เฅค เจ—เจพเจนเจ• เจฌเจฃเฉ‹!

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ†เจธเจพเจจ เจนเฉˆเฅค เจฌเฉˆเจ‚เจ• เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจธ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเจพ เจชเฉˆเจธเจพ เจ•เจฟเจ‰เจ‚ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ•เฉ‹เจˆ เจตเฉ€ เจ‡เจธ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจตเจฟเฉฑเจš เจ•เฉเจ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจฎเฉเจนเจพเจฐเจค เจนเจพเจธเจฒ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ?

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจœเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจผเฉฑเจ• เจนเฉˆ เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเฉ‚เฉฐ เจ‡เฉฐเจจเฉ€ เจœเจฒเจฆเฉ€ เจธเจฟเฉฑเจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจฎเฉˆเจ‚ เจธเฉเจเจพเจ… เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‹. เจ…เจฐเจฅเจพเจค, เจ‡เจธ เจธเจฎเฉฑเจ—เจฐเฉ€ เจตเจฟเฉฑเจš เจฎเฉเจนเจพเจฐเจค เจนเจพเจธเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจธเฉ€เจ‚ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเจฒเจพเจ‰เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‹เจ—เฉ‡เฅค เจฎเฉˆเจ‚ เจ‡เจธเจฆเฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเฉ‡ เจธเจ•เจฆเจพ เจนเจพเจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจ‰เจนเฉ€ เจตเจฟเจงเฉ€ เจนเฉˆ เจœเฉ‹ เจฎเฉˆเจ‚ เจ‡เฉฑเจฅเฉ‡ เจตเจฐเจคเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจธเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเจพเจ‚เฅค เจ‡เจธ เจ—เจพเจˆเจก เจจเฉ‚เฉฐ เจฆเฉ‚เจœเจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจ–เจฐเจพ เจ•เฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ? เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจšเฉ€เจœเจผเจพเจ‚. เจ‡เจธ เจฒเจˆ, เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฌเจนเฉเจคเฉ€เจ†เจ‚ เจธเจฎเฉฑเจ—เจฐเฉ€เจ†เจ‚ เจธเจงเจพเจฐเจจ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ€ เจตเจฟเจ†เจ–เจฟเจ† เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ - เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€เจ†เจ‚ เจงเจพเจฐเจจเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉเจฌเฉˆเจ•เจŸเจฒ เจ•เจฎเจพเจ‚เจก เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚เฅค เจ‡เจนเจจเจพเจ‚ เจฒเฉ‡เจ–เจพเจ‚ เจฆเฉ‡ เจฒเฉ‡เจ–เจ• เจฎเฉฐเจจเจฆเฉ‡ เจนเจจ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจชเจพเจ เจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเจฟเจตเฉˆเจฒเจชเจฎเฉˆเจ‚เจŸ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจฆเฉ‚เจœเฉ‡ เจชเจพเจธเฉ‡ เจœเจพเจตเจพเจ‚เจ—เฉ‡เฅค เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเฉ€เจ เจ•เจฟ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆเฅค เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจนเจฐเฉ‡เจ• เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจฐเจตเจฟเจธ เจฒเจˆ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ‡ เจจเจฟเจฐเจฎเจพเจฃ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡เฅค เจ…เจคเฉ‡ เจ‰เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจพเจฒ เจœเจพเจฃเฉ‚ เจนเฉ‹เจตเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ‡เจน เจชเจนเฉเฉฐเจš, เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฒเจˆ เจ‡เฉฑเจ• เจนเฉŒเจฒเฉ€-เจนเฉŒเจฒเฉ€ เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจจเจพเจฒ, เจ‡เจน เจธเจฎเจเจฃ เจฆเฉ€ เจกเฉ‚เฉฐเจ˜เจพเจˆ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเฉ‡เจ—เฉ€ เจ•เจฟ เจ•เฉ€ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจ”เจธเจค เจตเจฟเจ…เจ•เจคเฉ€ เจจเฉ‚เฉฐ เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจธเจญ เจ•เฉเจ เจ•เจฟเจตเฉ‡เจ‚ เจตเจฟเจตเจธเจฅเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจจเจฟเจธเจผเจšเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจนเฉˆ, เจฌเจธเจผเจฐเจคเฉ‡ เจ•เจฟ เจœเฉ‹ เจ•เฉ‹เจˆ เจ‡เจธ เจตเจฟเฉฑเจš เจฎเฉเจนเจพเจฐเจค เจนเจพเจธเจฒ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ‰เจน เจœเจพเจฃเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เจฟเฉฑเจฅเฉ‡ เจ…เจคเฉ‡ เจ•เจฟเจตเฉ‡เจ‚ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจนเฉเจฃ, เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจฐเฉเจ•เจพเจตเจŸ เจฆเฉ‡, เจ†เจ“ เจ•เฉฐเจฎ 'เจคเฉ‡ เจšเฉฑเจฒเฉ€เจ เจ…เจคเฉ‡ เจ‰เจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเฉ€เจ เจœเจฟเจธ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจชเฉเจฐเจฏเฉ‹เจ—เจพเจคเจฎเจ• เจเจช

เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจ•เจฐเฉ‡เจ—เฉ€เฅค เจ‡เจน, เจ‡เจจเจชเฉเจŸ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡, เจ‡เฉฑเจ• เจตเจพเจ• เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจชเจพเจ  เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจธเจพเจงเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เจน เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจตเจธเจคเฉ‚ เจชเฉเจฐเจคเฉ€ เจตเจพเจ• เจฆเฉ‡ เจฒเฉ‡เจ–เจ• เจฆเฉ‡ เจญเจพเจตเจจเจพเจคเจฎเจ• เจฐเจตเฉฑเจˆเจ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เจธ เจตเจพเจ• เจฆเจพ เจ‡เฉฑเจ• เจญเจพเจตเจจเจพเจคเจฎเจ• เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจฎเฉเฉฑเจ– เจตเจฟเฉฐเจกเฉ‹ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
เจญเจพเจตเจจเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ

เจคเจ•เจจเฉ€เจ•เฉ€ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจคเจฟเฉฐเจจ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจ•เฉฐเจฎ เจฆเฉ‡ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ:

  • SA-Frontend เจ‡เฉฑเจ• Nginx เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจนเฉˆ เจœเฉ‹ เจฐเฉ€เจเจ•เจŸ เจธเจŸเฉˆเจŸเจฟเจ• เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • SA-WebApp เจœเจพเจตเจพ เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ€ เจ‡เฉฑเจ• เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจซเจฐเฉฐเจŸเจเจ‚เจก เจคเฉ‹เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฆเฉ€ เจนเฉˆเฅค
  • SA-Logic เจ‡เฉฑเจ• เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจŸเฉˆเจ•เจธเจŸ เจญเจพเจตเจจเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจ‡เจน เจจเฉ‹เจŸ เจ•เจฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจ‡เจ•เฉฑเจฒเจคเจพ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‰เจน "เจซเจผเจฐเจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเจจ" เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ, เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ.

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเจพ เจชเฉเจฐเจตเจพเจน

เจ‰เจชเจฐเฉ‹เจ•เจค เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจชเฉเจฐเจตเจพเจน เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹เจ, เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจจเฉฐเจฌเจฐ เจตเจพเจฒเฉ‡ เจชเฉœเจพเจ… เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ†เจ“ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉ‹เฉœเฉ€เจ:

  1. เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ index.html (เจœเฉ‹ เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš React เจเจช เจชเฉˆเจ•เฉ‡เจœ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจฆเจพ เจนเฉˆ)เฅค
  2. เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‡เจธ เจจเจพเจฒ เจธเจชเจฐเจฟเฉฐเจ— เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจตเฉˆเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค
  3. เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจŸเฉˆเจ•เจธเจŸ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจชเจพเจ‡เจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฆเฉ€ เจนเฉˆเฅค
  4. เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจŸเฉˆเจ•เจธเจŸ เจฆเฉ€ เจญเจพเจตเจจเจพ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจœเจตเจพเจฌ เจตเจœเฉ‹เจ‚ เจจเจคเฉ€เจœเจพ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค
  5. เจธเจชเจฐเจฟเฉฐเจ— เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฐเฉ€เจเจ•เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจœเจตเจพเจฌ เจญเฉ‡เจœเจฆเฉ€ เจนเฉˆ (เจœเฉ‹ เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เฉ€เจคเฉ‡ เจŸเฉˆเจ•เจธเจŸ เจฆเจพ เจจเจคเฉ€เจœเจพ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ)เฅค

เจ‡เจนเจจเจพเจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ•เฉ‹เจก เจฒเฉฑเจญเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ‡เฉฑเจฅเฉ‡. เจฎเฉˆเจ‚ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจนเฉเจฃเฉ‡ เจ†เจชเจฃเฉ‡ เจฒเจˆ เจ•เจพเจชเฉ€ เจ•เจฐเฉ‹, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจกเฉ‡ เจ…เฉฑเจ—เฉ‡ เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฆเจฟเจฒเจšเจธเจช เจชเฉเจฐเจฏเฉ‹เจ— เจนเจจ.

เจธเจฅเจพเจจเจ• เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจ†เจงเจพเจฐเจฟเจค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเจฒเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจคเจฟเฉฐเจจเฉ‹เจ‚ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ†เจ‰ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจธเฉเฉฐเจฆเจฐ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ - เจซเจฐเฉฐเจŸ-เจเจ‚เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเฅค

โ–เจธเจฅเจพเจจเจ• เจตเจฟเจ•เจพเจธ เจฒเจˆ เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ

เจฐเฉ€เจเจ•เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ Node.js เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจ…เจคเฉ‡ NPM เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจน เจธเจญ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจŸเจฐเจฎเฉ€เจจเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจœเจพเจ“ sa-frontend เจ…เจคเฉ‡ เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ“:

npm install

เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉเจ†เจฐเจพ node_modules React เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจฒเฉ‹เจก เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€, เจœเจฟเจธ เจฆเฉ‡ เจฐเจฟเจ•เจพเจฐเจก เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจนเจจ package.json. เจ‰เจธเฉ‡ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ“:

npm start

เจ‡เจน เจธเจญ เจนเฉˆ. React เจเจช เจนเฉเจฃ เจšเฉฑเจฒ เจฐเจนเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจชเจคเฉ‡ 'เจคเฉ‡ เจจเฉˆเจตเฉ€เจ—เฉ‡เจŸ เจ•เจฐเจ•เฉ‡ เจ‡เจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ localhost:3000. เจคเฉเจธเฉ€เจ‚ เจ‰เจธเจฆเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉเจ เจฌเจฆเจฒ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจคเฉเจธเฉ€เจ‚ เจคเฉเจฐเฉฐเจค เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ‡เจนเจจเจพเจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเจพ เจชเฉเจฐเจญเจพเจต เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡เฅค เจ‡เจน เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ‡ เจ…เจ–เฉŒเจคเฉ€ "เจ—เจฐเจฎ" เจฌเจฆเจฒเจฃ เจฒเจˆ เจธเฉฐเจญเจต เจงเฉฐเจจเจตเจพเจฆ เจนเฉˆ. เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ, เจซเจฐเฉฐเจŸ-เจเจ‚เจก เจตเจฟเจ•เจพเจธ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจฎเจœเจผเฉ‡เจฆเจพเจฐ เจ…เจจเฉเจญเจต เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจœเจพเจ‚เจฆเจพ เจนเฉˆ.

โ–เจ‰เจคเจชเจพเจฆเจจ เจฒเจˆ เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจเจช เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ

เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฐเฉ€เจเจ•เจŸ เจเจช เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจตเฉˆเจฌ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

React เจเจช เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจฆเฉเจฌเจพเจฐเจพ เจŸเจฐเจฎเฉ€เจจเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡, เจซเฉ‹เจฒเจกเจฐ 'เจคเฉ‡ เจจเฉˆเจตเฉ€เจ—เฉ‡เจŸ เจ•เจฐเฉ‹ sa-frontend เจ…เจคเฉ‡ เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ“:

npm run build

เจ‡เจน เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจเจ—เจพ build. เจ‡เจธ เจตเจฟเฉฑเจš เจฐเฉ€เจเจ•เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚เฅค

โ– Nginx เจจเจพเจฒ เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจจเจพ

เจชเจนเจฟเจฒเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ Nginx เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ. เจ‡เจน เจ‡เจธ เจฒเจˆ เจนเฉˆ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจซเฉ‹เจฒเจกเจฐ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจชเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ sa-frontend/build เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš [your_nginx_installation_dir]/html.

เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ, เจฐเฉ€เจเจ•เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฆเฉŒเจฐเจพเจจ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจซเจพเจˆเจฒ index.html 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจตเฉ‡เจ—เจพ [your_nginx_installation_dir]/html/index.html. เจ‡เจน เจ‰เจน เจซเจพเจˆเจฒ เจนเฉˆ เจœเฉ‹ เจกเจฟเจซเฉŒเจฒเจŸ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, Nginx เจธเจฐเจตเจฐ เจ‡เจธ เจจเฉ‚เฉฐ เจเจ•เจธเฉˆเจธ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ 'เจคเฉ‡ เจธเฉเจฃเจจ เจฒเจˆ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ 80, เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจ•เฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€ เจฎเจฐเจœเจผเฉ€ เจ…เจจเฉเจธเจพเจฐ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ [your_nginx_installation_dir]/conf/nginx.conf.

เจนเฉเจฃ เจ†เจชเจฃเจพ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจ–เฉ‹เจฒเฉเจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธ 'เจคเฉ‡ เจœเจพเจ“ localhost:80. เจคเฉเจธเฉ€เจ‚ React เจเจช เจชเฉ‡เจœ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡เฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
Nginx เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจธเฉ‡เจตเจพ เจ•เฉ€เจคเฉ€ เจเจช เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจ•เจฐเฉ‹

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจนเฉเจฃ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจ•เฉเจ เจฆเจพเจ–เจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ Type your sentence เจ…เจคเฉ‡ เจฌเจŸเจจ เจฆเจฌเจพเจ“ Send -เจ•เฉเจ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจชเจฐ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ•เฉฐเจธเฉ‹เจฒ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‰เฉฑเจฅเฉ‡ เจ—เจฒเจคเฉ€ เจธเฉเจจเฉ‡เจนเฉ‡ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจ•เจฟ เจ‡เจน เจ—เจฒเจคเฉ€เจ†เจ‚ เจ•เจฟเฉฑเจฅเฉ‡ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจ†เจ“ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเฉ€เจเฅค

โ– เจซเจฐเฉฐเจŸ-เจเจ‚เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจ•เฉ‹เจก เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ

เจซเจพเจˆเจฒ เจฆเจพ เจ•เฉ‹เจก เจฆเฉ‡เจ– เจฐเจฟเจนเจพ เจนเฉˆ App.js, เจ…เจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจฌเจŸเจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจจเจพ Send เจ‡เฉฑเจ• เจขเฉฐเจ— เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ analyzeSentence(). เจ‡เจธ เจตเจฟเจงเฉ€ เจฒเจˆ เจ•เฉ‹เจก เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจงเจฟเจ†เจจ เจฆเจฟเจ“ เจ•เจฟ เจนเจฐเฉ‡เจ• เจฒเจพเจˆเจจ เจฒเจˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจซเจพเจฐเจฎ เจฆเฉ€ เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจนเฉˆ # ะะพะผะตั€, เจ•เฉ‹เจก เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจ‡เฉฑเจ• เจตเจฟเจ†เจ–เจฟเจ† เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚, เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฐ เจ•เฉ‹เจก เจฆเฉ‡ เจŸเฉเจ•เฉœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

analyzeSentence() {
    fetch('http://localhost:8080/sentiment', {  // #1
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
                       sentence: this.textField.getValue()})// #2
    })
        .then(response => response.json())
        .then(data => this.setState(data));  // #3
}

1. เจ‰เจน URL เจœเจฟเจธ 'เจคเฉ‡ POST เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจ‡เจน เจชเจคเจพ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

2.เจฌเฉ‡เจจเจคเฉ€ เจธเฉฐเจธเจฅเจพ เจจเฉ‡ เจ…เจฐเจœเจผเฉ€ 'เจคเฉ‡ เจญเฉ‡เจœเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฌเฉ‡เจจเจคเฉ€ เจฌเจพเจกเฉ€ เจนเฉˆ:

{
    sentence: "I like yogobella!"
}

3.เจœเจฆเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจœเจตเจพเจฌ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจฐเฉˆเจ‚เจกเจฐ เจ•เจฐเจจ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ (เจ…เจฐเจฅเจพเจค, เจ‡เฉฑเจ• JSON เจ†เจฌเจœเฉˆเจ•เจŸ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจ•เฉ€เจคเจพ เจกเฉ‡เจŸเจพ เจ…เจคเฉ‡ เจ—เจฃเจฟเจค เจŸเฉˆเจ•เจธเจŸ เจธเจ•เฉ‹เจฐ เจนเฉเฉฐเจฆเจพ เจนเฉˆ), เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡ Polarityเจœเจฟเฉฐเจจเจพ เจšเจฟเจฐ เจธเจผเจฐเจคเจพเจ‚ เจชเฉ‚เจฐเฉ€เจ†เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

const polarityComponent = this.state.polarity !== undefined ?
    <Polarity sentence={this.state.sentence} 
              polarity={this.state.polarity}/> :
    null;

เจ•เฉ‹เจก เจ•เจพเจซเจผเฉ€ เจตเจงเฉ€เจ† เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจœเจพเจชเจฆเจพ เจนเฉˆ. เจ‡เฉฑเจฅเฉ‡ เจ•เฉ€ เจ—เจฒเจค เจนเฉˆ, เจซเจฟเจฐ เจตเฉ€? เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจฎเฉฐเจจเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจœเจฟเจธ เจชเจคเฉ‡ 'เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ‡เฉฑเจ• POST เจฌเฉ‡เจจเจคเฉ€ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจนเฉ€ เจนเฉˆ, เจ‰เฉฑเจฅเฉ‡ เจ…เจœเฉ‡ เจคเฉฑเจ• เจ…เจœเจฟเจนเจพ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจนเฉˆ เจœเฉ‹ เจ‡เจธ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจฌเจฟเจฒเจ•เฉเจฒ เจธเจนเฉ€ เจนเฉ‹เจตเฉ‹เจ—เฉ‡เฅค เจ…เจฐเจฅเจพเจค, เจชเจคเฉ‡ 'เจคเฉ‡ เจ†เจ‰เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจ เจฒเจˆ http://localhost:8080/sentiment, เจธเจพเจจเฉ‚เฉฐ เจฌเจธเฉฐเจค 'เจคเฉ‡ เจ†เจงเจพเจฐเจฟเจค เจ‡เฉฑเจ• เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเจธเฉฐเจค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• POST เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐ เจธเจ•เฉ‡

โ–เจฌเจธเฉฐเจค เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจตเฉˆเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ

เจ‡เฉฑเจ• เจธเจชเจฐเจฟเฉฐเจ— เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ JDK8 เจ…เจคเฉ‡ Maven เจ…เจคเฉ‡ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจธเฉฐเจฐเจšเจฟเจค เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจน เจธเจญ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจธเฉ€เจ‚ เจธเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

โ– เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจœเจพเจฐ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจชเฉˆเจ• เจ•เจฐเจจเจพ

เจŸเจฐเจฎเฉ€เจจเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจจเฉˆเจตเฉ€เจ—เฉ‡เจŸ เจ•เจฐเฉ‹ sa-webapp เจ…เจคเฉ‡ เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจฆเจฟเจ“:

mvn install

เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ sa-webapp เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจˆ เจœเจพเจตเฉ‡เจ—เฉ€ target. เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ Java เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฅเจฟเจค เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจ‡เฉฑเจ• เจœเจพเจฐ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจชเฉˆเจ• เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€, เจœเฉ‹ เจ•เจฟ เจซเจพเจˆเจฒ เจฆเฉเจ†เจฐเจพ เจฆเจฐเจธเจพเจˆ เจ—เจˆ เจนเฉˆ sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

โ–เจœเจพเจตเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ

เจซเฉ‹เจฒเจกเจฐ เจคเฉ‡ เจœเจพเจ“ target เจ…เจคเฉ‡ เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเจฒเจพเจ“:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar

เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉŒเจฐเจพเจจ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจ†เจตเฉ‡เจ—เฉ€เฅค เจ‡เจธเจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจธเจŸเฉˆเจ• เจŸเจฐเฉ‡เจธ เจกเฉ‡เจŸเจพ เจตเจฟเฉฑเจš เจ…เจชเจตเจพเจฆ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"

เจธเจพเจกเฉ‡ เจฒเจˆ, เจ‡เฉฑเจฅเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ—เฉฑเจฒ เจ…เจฐเจฅ เจธเจชเฉฑเจธเจผเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ…เจธเฉฐเจญเจตเจคเจพ เจฆเจพ เจœเจผเจฟเจ•เจฐ เจนเฉˆ sa.logic.api.url. เจ†เจ‰ เจ•เฉ‹เจก เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเฉ€เจ เจœเจฟเฉฑเจฅเฉ‡ เจ—เจฒเจคเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

โ–เจœเจพเจตเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ

เจ‡เฉฑเจฅเฉ‡ เจ•เฉ‹เจก เจธเจจเจฟเฉฑเจชเจŸ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ—เจฒเจคเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
    @Value("${sa.logic.api.url}")    // #1
    private String saLogicApiUrl;
    @PostMapping("/sentiment")
    public SentimentDto sentimentAnalysis(
        @RequestBody SentenceDto sentenceDto) 
    {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.postForEntity(
                saLogicApiUrl + "/analyse/sentiment",    // #2
                sentenceDto, SentimentDto.class)
                .getBody();
    }
}

  1. เจตเจฟเจš เจเฉฑเจธentimentController เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ เจนเฉˆ saLogicApiUrl. เจ‡เจธเจฆเจพ เจฎเฉเฉฑเจฒ เจธเฉฐเจชเจคเฉ€ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ sa.logic.api.url.
  2. เจฒเจพเจˆเจจ saLogicApiUrl เจฎเฉเฉฑเจฒ เจจเจพเจฒ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ /analyse/sentiment. เจ‰เจน เจ‡เจ•เฉฑเจ เฉ‡ เจฎเจฟเจฒ เจ•เฉ‡ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจฐเจตเจฟเจธ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเจคเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ เจœเฉ‹ เจŸเฉˆเจ•เจธเจŸ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

โ–เจชเฉเจฐเจพเจชเจฐเจŸเฉ€ เจฆเจพ เจฎเฉเฉฑเจฒ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ

เจฌเจธเฉฐเจค เจตเจฟเฉฑเจš, เจธเฉฐเจชเฉฑเจคเฉ€ เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเจพ เจฎเฉ‚เจฒ เจธเจฐเฉ‹เจค เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจนเฉˆ application.properties'เจคเฉ‡ เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ sa-webapp/src/main/resources. เจชเจฐ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเฉฐเจชเฉฑเจคเฉ€ เจฎเฉเฉฑเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL

เจ‡เจธ เจธเฉฐเจชเจคเฉ€ เจฆเจพ เจฎเฉเฉฑเจฒ เจธเจพเจกเฉ€ เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจชเจคเฉ‡ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจธเจชเจฐเจฟเฉฐเจ— เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจŸเฉˆเจ•เจธเจŸ เจชเจพเจฐเจธเจฟเฉฐเจ— เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ•เจฐเจจ เจฒเจˆ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเฉฑเจฅเฉ‡ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจธเจพเจกเฉ€เจ†เจ‚ เจœเจผเจฟเฉฐเจฆเจ—เฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจจเจพ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ‡เฉฑเจฅเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจตเฉ‡เจ—เฉ€ localhost:5000 เจ…เจคเฉ‡ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจญเฉเฉฑเจฒ เจจเจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‹. เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจชเจฐเจฟเฉฐเจ— เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เจฎเจพเจ‚เจก เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
เจธเจพเจกเฉ‡ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ—เฉเฉฐเจฎ เจนเฉˆ

เจนเฉเจฃ เจธเจพเจจเฉ‚เฉฐ เจชเจพเจ‡เจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจ‰เจฎเฉ€เจฆ เจ…เจจเฉเจธเจพเจฐ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค

โ–เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ

เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ Python 3 เจ…เจคเฉ‡ Pip เจ‡เฉฐเจธเจŸเจพเจฒ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจขเฉเจ•เจตเฉ‡เจ‚ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจธเฉˆเฉฑเจŸ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจเฅค

โ–เจจเจฟเจฐเจญเจฐเจคเจพ เจธเจฅเจพเจชเจค เจ•เจฐเฉ‹

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ 'เจคเฉ‡ เจœเจพเจ“ sa-logic/sa เจ…เจคเฉ‡ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจšเจฒเจพเจ“:

python -m pip install -r requirements.txt
python -m textblob.download_corpora

โ–เจเจช เจฒเจพเจ‚เจš

เจจเจฟเจฐเจญเจฐเจคเจพ เจธเจฅเจพเจชเจฟเจค เจนเฉ‹เจฃ เจฆเฉ‡ เจจเจพเจฒ, เจ…เจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเจพเจ‚:

python sentiment_analysis.py

เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจธเจพเจจเฉ‚เฉฐ เจนเฉ‡เจ  เจฒเจฟเจ–เจฟเจ†เจ‚ เจฆเฉฑเจธเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ:

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเฉฑเจฒ เจฐเจนเฉ€ เจนเฉˆ เจ…เจคเฉ‡ 'เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐ เจฐเจนเฉ€ เจนเฉˆ localhost:5000/

โ–เจ•เฉ‹เจก เจ–เฉ‹เจœ

เจ†เจ‰ เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ‡เจน เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเจพ เจ•เจฟเจตเฉ‡เจ‚ เจœเจตเจพเจฌ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:

from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__)                                   #1
@app.route("/analyse/sentiment", methods=['POST'])      #2
def analyse_sentiment():
    sentence = request.get_json()['sentence']           #3
    polarity = TextBlob(sentence).sentences[0].polarity #4
    return jsonify(                                     #5
        sentence=sentence,
        polarity=polarity
    )
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)                #6

  1. เจ†เจฌเจœเฉˆเจ•เจŸ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ Flask.
  2. เจ‡เจธ เจจเฉ‚เฉฐ POST เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ•เจฐเจจ เจฒเจˆ เจชเจคเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพเฅค
  3. เจ•เจฟเจธเฉ‡ เจœเจพเจ‡เจฆเจพเจฆ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ sentence เจฌเฉ‡เจจเจคเฉ€ เจธเฉฐเจธเจฅเจพ เจคเฉ‹เจ‚.
  4. เจ…เจ—เจฟเจ†เจค เจตเจธเจคเฉ‚ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค TextBlob เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ polarity เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจญเจพเจ— เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ เจชเจนเจฟเจฒเฉ‡ เจชเฉเจฐเจธเจคเจพเจต เจฒเจˆ (เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจน เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจชเฉเจฐเจธเจคเจพเจต เจนเฉˆ)เฅค
  5. เจ‡เฉฑเจ• เจœเจตเจพเจฌ เจตเจพเจชเจธ เจ•เจฐเจจเจพ, เจœเจฟเจธเจฆเฉ‡ เจฎเฉเฉฑเจ– เจญเจพเจ— เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผเจ•เจธเจผ เจฆเจพ เจชเจพเจ  เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ—เจฟเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ‚เจšเจ• เจนเฉเฉฐเจฆเจพ เจนเฉˆ polarity.
  6. เจซเจฒเจพเจธเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจตเฉ‡เจ—เฉ€ 0.0.0.0:5000 (เจคเฉเจธเฉ€เจ‚ เจซเจพเจฐเจฎ เจฆเฉ‡ เจจเจฟเจฐเจฎเจพเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเฉ€ เจ‡เจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ localhost:5000).

เจนเฉเจฃ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจนเจจเฅค เจ‰เจน เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเจจ. เจ•เฉฐเจฎ เจฆเฉ‡ เจ‡เจธ เจชเฉœเจพเจ… 'เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเจพเจ‡เจ—เฉเจฐเจพเจฎ เจ•เจฟเจนเฉ‹ เจœเจฟเจนเจพ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ‡เจน เจ‡เฉฑเจฅเฉ‡ เจนเฉˆเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจฎเจพเจˆเจ•เจฐเฉ‹เจธเจฐเจตเจฟเจธเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฟเจนเจคเจฎเฉฐเจฆ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจฒเจฟเจ†เจ‚เจฆเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ

เจนเฉเจฃ, เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เฉ€เจ, เจ‡เฉฑเจ• เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš React เจเจช เจ–เฉ‹เจฒเฉเจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจ•เฉเจ เจตเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‹เฅค เจœเฉ‡ เจธเจญ เจ•เฉเจ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ - เจฌเจŸเจจ เจจเฉ‚เฉฐ เจฆเจฌเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ Send เจคเฉเจธเฉ€เจ‚ เจŸเฉˆเจ•เจธเจŸ เจฌเจพเจ•เจธ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจจเจคเฉ€เจœเฉ‡ เจตเฉ‡เจ–เฉ‹เจ—เฉ‡เฅค

เจ…เจ—เจฒเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจธเจพเจกเฉ€เจ†เจ‚ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆเฅค Kubernetes เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจšเฉฑเจฒเจฃ เจฒเจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค

เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจ•เจฌเจฐเจจเฉ‡เจŸเจฟเจธ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผเจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจคเฉˆเจจเจพเจคเฉ€, เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจ…เจคเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจนเฉˆเฅค เจ‡เจธเจจเฉ‚เฉฐ "เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ†เจฐเจ•เฉˆเจธเจŸเจฐเฉ‡เจŸเจฐ" เจตเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจธเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจนเจจเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจชเจฐ เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเฉ€เจ เจ•เจฟ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ•เฉ€ เจนเจจ. เจธเจผเจพเจ‡เจฆ เจ‡เจน เจ•เฉ€ เจนเฉˆ เจ‡เจธ เจธเจตเจพเจฒ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจœเจตเจพเจฌ เจ‡เจธ เจตเจฟเฉฑเจš เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจกเฉŒเจ•เจฐ เจจเฉ‚เฉฐ:

เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจ‡เฉฑเจ• เจนเจฒเจ•เจพ, เจธเจตเฉˆ-เจจเจฟเจฐเจญเจฐ, เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจชเฉˆเจ•เฉ‡เจœ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เจธเจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก, เจฐเจจเจŸเจพเจˆเจฎ เจตเจพเจคเจพเจตเจฐเจฃ, เจธเจฟเจธเจŸเจฎ เจŸเฉ‚เจฒ เจ…เจคเฉ‡ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚, เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚เฅค เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผเจก เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉ€เจจเจ•เจธ เจ…เจคเฉ‡ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฆเฉ‹เจจเจพเจ‚ เจตเจพเจคเจพเจตเจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจชเจฐเจตเจพเจน เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ เจšเจฒเจพเจ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจกเจ•เจธเจผเจจ เจธเจฐเจตเจฐ เจตเฉ€ เจธเจผเจพเจฎเจฒ เจนเจจ, เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš, เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจจเฉฑเจฅเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจจเจ—เฉ€เจ†เจ‚เฅค

เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เจฐเจจ เจ…เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ‡ เจนเฉ‹เจฐ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐเจจ เจฒเจˆ, เจ†เจ‰ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจฐเฉ€เจเจ•เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเฉ‡เจ–เฉ€เจเฅค

โ–เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เฉฑเจ• เจฐเฉ€เจเจ•เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจจเจพ

เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจฐเฉฑเจ–-เจฐเจ–เจพเจ… เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจธเจพเจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจจเฉเจ•เจธเจพเจจเจพเจ‚ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพ:

  1. เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ…เจ•เฉเจธเจผเจฒ เจตเจฐเจคเฉ‹เจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจนเจฐเฉ‡เจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจ‡เฉฑเจ• เจธเฉฐเจชเฉ‚เจฐเจจ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจนเฉˆเฅค
  2. เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจจเจฟเจฐเจญเจฐเจคเจพเฅค เจœเฉ‹ เจ•เฉเจ เจธเจฅเจพเจจเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฐเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจคเจชเจพเจฆเจจ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจจเจพ เจ•เจฐเฉ‡เฅค
  3. เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจนเฉฑเจฒ เจฆเฉ€ เจนเฉŒเจฒเฉ€ เจ…เจคเฉ‡ เจธเฉฐเจธเจพเจงเจจ เจคเฉ€เจฌเจฐ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ—เฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
Nginx เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจฆเจพ เจนเฉˆ

เจœเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจธเจฎเจพเจจ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚, เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡, เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจธเจผเจ•เจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ:

  1. เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจ•เฉเจธเจผเจฒ เจตเจฐเจคเฉ‹เจ‚: เจกเฉŒเจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‹เฅค
  2. เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฆเฉ€ เจธเฉเจคเฉฐเจคเจฐเจคเจพเฅค เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ เจšเจฒเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เจฟเจคเฉ‡ เจตเฉ€ เจšเฉฑเจฒเฉ‡เจ—เจพเฅค
  3. เจšเจฟเฉฑเจคเจฐ เจฒเฉ‡เจ…เจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฐเจพเจนเฉ€เจ‚ เจนเจฒเจ•เจพ เจคเฉˆเจจเจพเจคเฉ€เฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
Nginx เจตเฉˆเฉฑเจฌ เจธเจฐเจตเจฐ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจฆเจพ เจนเฉˆ

เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจ•เฉเจ เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ 'เจคเฉ‡ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เฉ€เจคเฉ€ เจนเฉˆ, เจชเจฐ เจ‡เจน เจตเฉ€ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเจผเจ•เจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฎเจนเจฟเจธเฉ‚เจธ เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจซเฉ€ เจนเฉˆเฅค เจ‡เจน เจ‡เจธ เจฒเจˆ เจนเฉˆ เจคเฉเจธเฉ€เจ‚ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฌเจพเจฐเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

โ–เจ‡เฉฑเจ• เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจเจช เจฒเจˆ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเจพ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจฌเจฟเจฒเจกเจฟเฉฐเจ— เจฌเจฒเจพเจ• เจซเจพเจˆเจฒ เจนเฉˆ Dockerfile. เจ‡เจธ เจซเจพเจˆเจฒ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš, เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเจพ เจ‡เฉฑเจ• เจ…เจงเจพเจฐ เจšเจฟเฉฑเจคเจฐ เจฐเจฟเจ•เจพเจฐเจก เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจ•เฉเจฐเจฎ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เจน เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡ เจœเฉ‹ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจœเจผเจฐเฉ‚เจฐเจคเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจซเจพเจˆเจฒ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ Dockerfile, เจฏเจพเจฆ เจฐเฉฑเจ–เฉ‹ เจ•เจฟ เจ…เจธเฉ€เจ‚ Nginx เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ…เจชเจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจฐเฉ€เจเจ•เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€ เจ•เฉ€เจคเจพ:

  1. เจ‡เฉฑเจ• เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ† เจเจช เจชเฉˆเจ•เฉ‡เจœ เจฌเจฃเจพเจ‰เจฃเจพ (npm run build).
  2. Nginx เจธเจฐเจตเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค
  3. เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ€ เจจเจ•เจฒ build เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ เจคเฉ‹เจ‚ sa-frontend เจธเจฐเจตเจฐ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš nginx/html.

เจนเฉ‡เจ เจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจธเจฅเจพเจจเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ‰เจชเจฐเฉ‹เจ•เจค เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเจฎเจพเจจเจคเจพเจตเจพเจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

โ– SA-เจซเจฐเฉฐเจŸเจเจ‚เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ

เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€เจ†เจ‚ เจนเจฆเจพเจ‡เจคเจพเจ‚ Dockerfile เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ SA-Frontend, เจธเจฟเจฐเจซเจผ เจฆเฉ‹ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ Nginx เจตเจฟเจ•เจพเจธ เจŸเฉ€เจฎ เจจเฉ‡ เจ‡เฉฑเจ• เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจนเฉˆ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ Nginx เจฒเจˆ, เจœเจฟเจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจคเจธเจตเฉ€เจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจฐเจพเจ‚เจ—เฉ‡. เจ‡เฉฑเจฅเฉ‡ เจฆเฉ‹ เจ•เจฆเจฎ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเจพ เจธเจพเจจเฉ‚เฉฐ เจตเจฐเจฃเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

  1. เจคเฉเจนเจพเจจเฉ‚เฉฐ Nginx เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจฆเจพ เจ†เจงเจพเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ.
  2. เจซเฉ‹เจฒเจกเจฐ เจธเจฎเฉฑเจ—เจฐเฉ€ sa-frontend/build เจšเจฟเฉฑเจคเจฐ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ•เจพเจชเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ nginx/html.

เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจตเจฐเจฃเจจ เจคเฉ‹เจ‚ เจซเจพเจˆเจฒ เจคเฉฑเจ• เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚ Dockerfile, เจซเจฟเจฐ เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพ:

FROM nginx
COPY build /usr/share/nginx/html

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‡เฉฑเจฅเฉ‡ เจธเจญ เจ•เฉเจ เจฌเจนเฉเจค เจธเจพเจฆเจพ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจซเจพเจˆเจฒ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจตเฉ€ เจ•เจพเจซเจผเฉ€ เจชเฉœเฉเจนเจจเจฏเฉ‹เจ— เจ…เจคเฉ‡ เจธเจฎเจเจฃ เจฏเฉ‹เจ— เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ. เจ‡เจน เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจฒเฉˆเจฃ เจฒเจˆ เจ•เจนเจฟเฉฐเจฆเฉ€ เจนเฉˆ nginx เจนเจฐ เจšเฉ€เจœเจผ เจฆเฉ‡ เจจเจพเจฒ เจœเฉ‹ เจ‡เจธ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเฉ‹ build เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจจเฉ‚เฉฐ nginx/html.

เจ‡เฉฑเจฅเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจธเจตเจพเจฒ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจœเจพเจฃเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเฉฑเจฅเฉ‡ เจ•เจพเจชเฉ€ เจ•เจฐเจจเจพ เจนเฉˆ build, เจฏเจพเจจเฉ€ เจ•เจฟ เจฐเจธเจคเจพ เจ•เจฟเฉฑเจฅเฉ‹เจ‚ เจ†เจ‡เจ† เจนเฉˆ /usr/share/nginx/html. เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจ‡เฉฑเจฅเฉ‡ เจ•เฉเจ เจตเฉ€ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจœเจพเจฃเจ•เจพเจฐเฉ€ เจตเจฟเฉฑเจš เจชเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจตเจฐเจฃเจจ เจšเจฟเฉฑเจคเจฐเฅค

โ– เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจจเจพ

เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฎเฉเจ•เฉฐเจฎเจฒ เจšเจฟเฉฑเจคเจฐ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เฉ€เจ, เจธเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจœเจฎเฉเจนเจพเจ‚ เจ•เจฐเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฎเฉเจซเจค เจ•เจฒเจพเจ‰เจก-เจ…เจงเจพเจฐเจค เจšเจฟเฉฑเจคเจฐ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจกเฉŒเจ•เจฐ เจนเฉฑเจฌ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡. เจ•เฉฐเจฎ เจฆเฉ‡ เจ‡เจธ เจชเฉœเจพเจ… 'เจคเฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

  1. เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจฒเจˆ เจกเฉŒเจ•เจฐ.
  2. เจกเฉŒเจ•เจฐ เจนเฉฑเจฌ เจธเจพเจˆเจŸ 'เจคเฉ‡ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเฉ‹เฅค
  3. เจŸเจฐเจฎเฉ€เจจเจฒ เจตเจฟเฉฑเจš เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพ เจ•เฉ‡ เจ†เจชเจฃเฉ‡ เจ–เจพเจคเฉ‡ เจตเจฟเฉฑเจš เจฒเฉŒเจ— เจ‡เจจ เจ•เจฐเฉ‹:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

เจนเฉเจฃ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจŸเจฐเจฎเฉ€เจจเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡, เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ 'เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ sa-frontend เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ“:

docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .

เจ‡เฉฑเจฅเฉ‡ เจ…เจคเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจธเจฎเจพเจจ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจตเจฟเฉฑเจš $DOCKER_USER_ID Docker Hub 'เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ เจจเจพเจฒ เจฌเจฆเจฒเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เจฎเจพเจ‚เจก เจฆเจพ เจ‡เจน เจนเจฟเฉฑเจธเจพ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡ เจธเจ•เจฆเจพ เจนเฉˆ: rinormaloku/sentiment-analysis-frontend.

เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ‡เจธ เจคเฉ‹เจ‚ เจนเจŸเจพ เจ•เฉ‡ เจ›เฉ‹เจŸเจพ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ -f Dockerfile, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเจฟเจธ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ‰เจธ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เจน เจซเจพเจˆเจฒ เจนเฉˆเฅค

เจฎเฉเจ•เฉฐเจฎเจฒ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจญเฉ‡เจœเจฃ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจน เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจ•เจฟ เจ•เฉ€ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ•เจฒเจพเจ‰เจก เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจฟเฉฑเจš เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจงเฉฑเจ•เจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจกเฉŒเจ•เจฐ เจนเฉฑเจฌ 'เจคเฉ‡ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจธเฉ‚เจšเฉ€ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹เฅค

โ–เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ

เจนเฉเจฃ เจ•เฉ‹เจˆ เจตเฉ€ เจตเจœเฉ‹เจ‚ เจœเจพเจฃเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ…เจคเฉ‡ เจšเจฒเจพ เจธเจ•เจฆเจพ เจนเฉˆ $DOCKER_USER_ID/sentiment-analysis-frontend. เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ‡ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ•เฉเจฐเจฎ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

เจนเฉเจฃ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเฉ‹เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพ เจ•เฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจชเจฐ เจ…เฉฑเจ—เฉ‡ เจตเจงเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจกเจฟเจœเจผเจพเจˆเจจ เจจเฉ‚เฉฐ เจธเจฎเจเฉ€เจ 80:80, เจœเฉ‹ เจ•เจฟ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจก เจตเจฟเฉฑเจš เจชเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจฒเจเจฃ เจตเจพเจฒเจพ เจฒเฉฑเจ— เจธเจ•เจฆเจพ เจนเฉˆเฅค

  • เจชเจนเจฟเจฒเจพ เจจเฉฐเจฌเจฐ 80 เจนเฉ‹เจธเจŸ เจฆเจพ เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจนเฉˆ (เจœเฉ‹ เจ•เจฟ เจธเจฅเจพเจจเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจนเฉˆ)เฅค
  • เจฆเฉ‚เจœเจพ เจจเฉฐเจฌเจฐ 80 เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเจพ เจชเฉ‹เจฐเจŸ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจ‰เฉฑเจคเฉ‡ เจ—เฉŒเจฐ เจ•เจฐเฉ‹เฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
เจชเฉ‹เจฐเจŸ เจซเจพเจฐเจตเจฐเจกเจฟเฉฐเจ—

เจธเจฟเจธเจŸเจฎ เจชเฉ‹เจฐเจŸ เจคเฉ‹เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœเจฆเจพ เจนเฉˆ <hostPort> เจฌเฉฐเจฆเจฐเจ—เจพเจน เจจเฉ‚เฉฐ <containerPort>. เจฏเจพเจจเฉ€ เจชเฉ‹เจฐเจŸ เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฃเจพ 80 เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉ‹เจฐเจŸ เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ 80 เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจฌเฉฐเจฆเจฐเจ—เจพเจน เจคเฉ‹เจ‚ 80 เจธเจฅเจพเจจเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฐ 'เจคเฉ‡ เจ–เฉ‹เจฒเฉเจนเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจคเฉ‹เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ localhost:80. เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเจพ เจธเจฟเจธเจŸเจฎ เจกเฉŒเจ•เจฐ เจจเฉ‚เฉฐ เจธเจชเฉ‹เจฐเจŸ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเจฟเจธเจฆเจพ เจชเจคเจพ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค <docker-machine ip>:80. เจกเฉŒเจ•เจฐ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฆเจพ IP เจชเจคเจพ เจฒเฉฑเจญเจฃ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ docker-machine ip.

เจ‡เจธ เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡, เจ‡เฉฑเจ• เจตเจพเจฐ เจซเจฐเฉฐเจŸ-เจเจ‚เจก เจเจช เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจฒเจพเจ‚เจš เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ‡เจธเจฆเจพ เจชเฉฐเจจเจพ เจ–เฉ‹เจฒเฉเจนเจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

โ–.dockerignore เจซเจพเจˆเจฒ

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ SA-Frontend, เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฌเจนเฉเจค เจนเฉŒเจฒเฉ€ เจนเฉˆเฅค เจ‡เจน เจ‡เจธ เจฒเจˆ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจธเฉฐเจฆเจฐเจญ เจกเฉŒเจ•เจฐ เจกเฉˆเจฎเจจ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจœเฉ‹ เจฌเจฟเจฒเจก เจธเฉฐเจฆเจฐเจญ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ†เจ–เจฐเฉ€ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจตเจœเฉ‹เจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจนเฉˆ docker build. เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเจฟเฉฐเจฆเฉ€ เจนเฉˆ. เจ‡เจธ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ:

sa-frontend:
|   .dockerignore
|   Dockerfile
|   package.json
|   README.md
+---build
+---node_modules
+---public
---src

เจชเจฐ เจ‡เฉฑเจฅเฉ‡ เจฎเฉŒเจœเฉ‚เจฆ เจธเจพเจฐเฉ‡ เจซเฉ‹เจฒเจกเจฐเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚, เจธเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจซเฉ‹เจฒเจกเจฐ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ build. เจนเฉ‹เจฐ เจ•เฉเจ เจตเฉ€ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจเจพ เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจฌเจฐเจฌเจพเจฆเฉ€ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจกเฉŒเจ•เจฐ เจจเฉ‚เฉฐ เจ‡เจน เจฆเฉฑเจธ เจ•เฉ‡ เจฌเจฟเจฒเจก เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจจเจœเจผเจฐเจ…เฉฐเจฆเจพเจœเจผ เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ .dockerignore. เจคเฉเจธเฉ€เจ‚, เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจซเจพเจˆเจฒ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจนเฉ‹ .gitignore, เจ‡เจธ เจซเจพเจˆเจฒ เจฆเฉ€ เจฌเจฃเจคเจฐ เจธเจผเจพเจ‡เจฆ เจœเจพเจฃเฉ€-เจชเจ›เจพเจฃเฉ€ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€เฅค เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉ‚เจšเฉ€เจฌเฉฑเจง เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฟเจฒเจก เจธเจฟเจธเจŸเจฎ เจ…เจฃเจกเจฟเฉฑเจ  เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจธ เจซเจพเจˆเจฒ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ:

node_modules
src
public

เจซเจพเจ‡เจฒ .dockerignore เจซเจพเจ‡เจฒ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‰เจธเฉ‡ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ Dockerfile. เจนเฉเจฃ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจ•เฉเจ เจธเจ•เจฟเฉฐเจŸ เจฒเจตเฉ‡เจ—เฉ€.

เจ†เจ‰ เจนเฉเจฃ เจœเจพเจตเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจšเจฟเฉฑเจคเจฐ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฆเฉ‡ เจนเจพเจ‚เฅค

โ–เจœเจพเจตเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‰เจน เจธเจญ เจ•เฉเจ เจธเจฟเฉฑเจ– เจฒเจฟเจ† เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ เจ‡เจน เจญเจพเจ— เจฌเจนเฉเจค เจ›เฉ‹เจŸเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจซเจพเจˆเจฒ เจ–เฉ‹เจฒเฉเจนเฉ‹ Dockerfile, เจœเฉ‹ เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆ sa-webapp. เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจซเจพเจˆเจฒ เจฆเจพ เจŸเฉˆเจ•เจธเจŸ เจชเฉœเฉเจนเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจฆเฉ‹ เจจเจตเฉ‡เจ‚ เจจเจฟเจฐเจฎเจพเจฃ เจฎเจฟเจฒ เจœเจพเจฃเจ—เฉ‡ เจœเฉ‹ เจ•เฉ€เจตเจฐเจกเจธ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ ENV ะธ EXPOSE:

ENV SA_LOGIC_API_URL http://localhost:5000
โ€ฆ
EXPOSE 8080

เจ•เฉ€เจตเจฐเจก ENV เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจ˜เฉ‹เจธเจผเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ API เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• URL เจธเฉˆเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจŸเฉˆเจ•เจธเจŸ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ•เฉ€เจตเจฐเจก EXPOSE เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉ‹เจฐเจŸ เจ–เฉ‹เจฒเฉเจนเจฃ เจฒเจˆ เจฆเฉฑเจธเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‡เจธ เจชเฉ‹เจฐเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจœเจพ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจ‡เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ Dockerfile เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ SA-Frontend เจ…เจœเจฟเจนเจพ เจ•เฉ‹เจˆ เจนเฉเจ•เจฎ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจน เจธเจฟเจฐเจซเจผ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเฉ€ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจนเฉˆ, เจฆเฉ‚เจœเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจตเจฟเฉฑเจš, เจ‡เจน เจฐเจšเจจเจพ เจชเจพเจ เจ• เจฒเจˆ เจนเฉˆ Dockerfile.

เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเฉฑเจฒ เจงเฉฑเจ•เจฃเจพ เจฌเจฟเจฒเจ•เฉเจฒ เจชเจฟเจ›เจฒเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเจพเจ‚เจ— เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจ†เจชเจฃเฉ€เจ†เจ‚ เจ•เจพเจฌเจฒเฉ€เจ…เจคเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจญเจฐเฉ‹เจธเจพ เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฒเฉฑเจญเฉ€เจ†เจ‚ เจœเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ README.md เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš sa-webapp.

โ–เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจซเจพเจˆเจฒ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจœเจผเจฐ เจฎเจพเจฐเจฆเฉ‡ เจนเฉ‹ Dockerfile เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš sa-logicเจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‡ เจ•เฉเจ เจตเฉ€ เจจเจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเฉ‡เจ—เจพเฅค เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจงเฉฑเจ•เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจพเจฃเฉ‚ เจนเฉ‹เจฃเฉ€เจ†เจ‚ เจšเจพเจนเฉ€เจฆเฉ€เจ†เจ‚ เจนเจจ, เจชเจฐ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจธเจพเจกเฉ€เจ†เจ‚ เจนเฉ‹เจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‰เจน เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฒเฉฑเจญเฉ€เจ†เจ‚ เจœเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ. README.md เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš sa-logic.

โ–เจ•เจŸเฉ‡เจจเจฐเจพเจˆเจœเจผเจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพ

เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจ…เจœเจฟเจนเฉ€ เจšเฉ€เจœเจผ 'เจคเฉ‡ เจญเจฐเฉ‹เจธเจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฟเจธเจฆเฉ€ เจคเฉเจธเฉ€เจ‚ เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจนเฉˆ? เจฎเฉˆเจ‚ เจตเฉ€ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพเฅค เจ†เจ‰ เจธเจพเจกเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจเฅค

  1. เจ†เจ“ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ sa-logic เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ 'เจคเฉ‡ เจธเฉเจฃเจจ เจฒเจˆ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเฉ‹ 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. เจ†เจ“ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ sa-webapp เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ 'เจคเฉ‡ เจธเฉเจฃเจจ เจฒเจˆ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเฉ‹ 8080. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจธเจพเจจเฉ‚เฉฐ เจ‰เจธ เจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจพเจคเจพเจตเจฐเจจ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจ•เฉ‡ Java เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจธเฉเจฃเฉ‡เจ—เฉ€เฅค SA_LOGIC_API_URL:
    $ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app

เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจœเจพเจ‚ เจกเฉŒเจ•เจฐ VM เจฆเจพ IP เจชเจคเจพ เจ•เจฟเจตเฉ‡เจ‚ เจฒเฉฑเจญเจฃเจพ เจนเฉˆ, เจ‡เจน เจธเจฟเฉฑเจ–เจฃ เจฒเจˆ, เจซเจพเจˆเจฒ เจตเฉ‡เจ–เฉ‹ README.

เจ†เจ“ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ sa-frontend:

docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

เจนเฉเจฃ เจธเจญ เจ•เฉเจ เจฌเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจชเจคเฉ‡ 'เจคเฉ‡ เจจเฉˆเจตเฉ€เจ—เฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเฉˆ localhost:80 เจ…เจคเฉ‡ เจเจช เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹เฅค

เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจงเจฟเจ†เจจ เจฆเจฟเจ“ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฒเจˆ เจชเฉ‹เจฐเจŸ เจฌเจฆเจฒเจฆเฉ‡ เจนเฉ‹ sa-webapp, เจœเจพเจ‚ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• Docker VM เจšเจฒเจพ เจฐเจนเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจซเจผเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจชเจตเฉ‡เจ—เฉ€ App.js เจซเฉ‹เจฒเจกเจฐ เจคเฉ‹เจ‚ sa-frontendเจตเจฟเจงเฉ€ เจตเจฟเฉฑเจš IP เจเจกเจฐเฉˆเฉฑเจธ เจœเจพเจ‚ เจชเฉ‹เจฐเจŸ เจจเฉฐเจฌเจฐ เจฌเจฆเจฒ เจ•เฉ‡ analyzeSentence()เจชเฉเจฐเจพเจฃเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฌเจœเจพเจ เจฎเฉŒเจœเฉ‚เจฆเจพ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจ•เฉ‡เฅค เจ‰เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจœเฉ‹เฉœเจจ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ.

เจธเจพเจกเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเจพเจ‡เจ—เฉเจฐเจพเจฎ เจนเฉเจฃ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ
เจฎเจพเจˆเจ•เจฐเฉ‹ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจšเจฒเจฆเฉ€เจ†เจ‚ เจนเจจ

เจธเฉฐเจ–เฉ‡เจช: เจธเจพเจจเฉ‚เฉฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจ•เจฟเจ‰เจ‚ เจฒเฉ‹เฉœ เจนเฉˆ?

เจ…เจธเฉ€เจ‚ เจนเฉเจฃเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ† เจ•เฉ€เจคเฉ€ เจนเฉˆ Dockerfile, เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ•เจฟเจตเฉ‡เจ‚ เจงเฉฑเจ•เจฃเจพ เจนเฉˆ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เจธเฉ€เจ‚ เจธเจฟเฉฑเจ–เจฟเจ† เจ•เจฟ เจซเจพเจˆเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ€ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจคเฉ‡เจœเจผ เจ•เจฐเจจเจพ เจนเฉˆ .dockerignore. เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจพเจกเฉ€เจ†เจ‚ เจฎเจพเจˆเจ•เจฐเฉ‹ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจนเฉเจฃ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เฉฑเจฅเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจœเจพเจ‡เจœเจผ เจธเจตเจพเจฒ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจนเฉˆเฅค เจ‡เจธ เจธเจตเจพเจฒ เจฆเจพ เจœเจตเจพเจฌ เจ‡เจธ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ‡ เจฆเฉ‚เจœเฉ‡ เจญเจพเจ— เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ. เจ‡เจธ เจฆเฉŒเจฐเจพเจจ, เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจธเจตเจพเจฒ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ‹:
เจšเจฒเฉ‹ เจ‡เจน เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจธเจพเจกเฉ€ เจŸเฉˆเจ•เจธเจŸ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉเจจเฉ€เจ† เจญเจฐ เจตเจฟเฉฑเจš เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉ‹ เจ—เจˆ เจนเฉˆเฅค เจ‰เจธ เจจเฉ‚เฉฐ เจนเจฐ เจฎเจฟเฉฐเจŸ เจฒเฉฑเจ–เจพเจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ†เจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจธ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ sa-webapp ะธ sa-logic เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจคเจฃเจพเจ… เจตเจฟเฉฑเจš เจฐเจนเฉ‡เจ—เจพเฅค เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจšเจฒเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจ•เฉ‡เจฒ เจ•เจฐเจจเจพ เจนเฉˆ?

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจญเจพเจ— 1: เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ, เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹