เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ ARDrone เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ ARDrone เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจ‡เจธ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ เจตเฉˆเฉฑเจฌ เจธเจชเฉ€เจš API เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเจพเจฒ เจกเจฐเฉ‹เจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฌเจฃเจพเจ‰เจฃ เจฌเจพเจฐเฉ‡ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡เฅค เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ - เจคเฉ‹เจคเจพ เจเจ†เจฐเจกเฉเจฐเฉ‹เจจ 2.0.

เจ…เจธเฉ€เจ‚ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚: "Habr" เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจชเจพเจ เจ•เจพเจ‚ เจฒเจˆ - "Habr" เจชเฉเจฐเจšเจพเจฐ เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจ•เฉ‹เจฐเจธ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒเจพ เจฒเฉˆเจฃ เจตเฉ‡เจฒเฉ‡ 10 เจฐเฉ‚เจฌเจฒ เจฆเฉ€ เจ›เฉ‹เจŸเฅค

เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ: เจชเฉเจฐเฉˆเจ•เจŸเฉ€เจ•เจฒ เจ•เฉ‹เจฐเจธ "เจฎเฉ‹เจฌเจพเจˆเจฒ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจชเฉเจฐเฉ‹".

เจœเจพเจฃ เจชเจ›เจพเจฃ

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

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

เจ†เจ‡เจฐเจจ

เจธเจพเจจเฉ‚เฉฐ เจนเฉ‡เจ  เจฒเจฟเจ–เจฟเจ†เจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

  • เจคเฉ‹เจคเจพ เจเจ†เจฐเจกเฉเจฐเฉ‹เจจ 2.0;
  • เจˆเจฅเจฐเจจเฉˆเฉฑเจŸ เจ•เฉ‡เจฌเจฒ;
  • เจšเฉฐเจ—เจพ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจซเฉ‹เจจ.

เจตเจฟเฉฐเจกเฉ‹เจœเจผ/เจฎเฉˆเจ•/เจ‰เจฌเฉฐเจŸเฉ‚ เจฆเฉ‡ เจจเจพเจฒ เจตเจฐเจ•เจธเจŸเฉ‡เจธเจผเจจเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจ•เจพเจธ เจ…เจคเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจคเฉŒเจฐ 'เจคเฉ‡, เจฎเฉˆเจ‚ เจฎเฉˆเจ• เจ…เจคเฉ‡ เจ‰เจฌเฉฐเจŸเฉ‚ 18.04 เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ เจนเฉˆเฅค

เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ

เจคเฉ‹เจ‚ Node.js เจฆเจพ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ‹ เจ…เจงเจฟเจ•เจพเจฐเฉ€ เจจเฉ‡ เจธเจพเจˆเจŸ.

เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ—เฉ‚เจ—เจฒ เจ•เจฐเฉ‹เจฎ เจฆเจพ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ.

เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจจเฉ‚เฉฐ เจธเจฎเจเจฃเจพ

เจ†เจ“ เจ‡เจน เจธเจฎเจเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจ เจ•เจฟ เจคเฉ‹เจคเจพ เจเจ†เจฐเจกเจฐเฉ‹เจจ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจตเจฟเฉฑเจš เจšเจพเจฐ เจฎเฉ‹เจŸเจฐเจพเจ‚ เจนเจจเฅค

เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ ARDrone เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

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

เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ ARDrone เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

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

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

เจคเฉ‹เจคเจพ เจเจ†เจฐเจกเจฐเฉ‹เจจ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ

เจกเจฐเฉ‹เจจ เจ‡เฉฑเจ• Wi-Fi เจนเฉŒเจŸเจธเจชเฉŒเจŸ เจนเฉˆเฅค เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจญเฉ‡เจœเจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจชเฉเจ†เจ‡เฉฐเจŸ เจจเจพเจฒ เจœเฉเฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจตเฉฑเจ–เจฐเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจนเจจ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจตเจพเจกเจ•เฉ‹เจชเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ. เจ‡เจน เจธเจญ เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:

เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ ARDrone เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจœเจฟเจตเฉ‡เจ‚ เจนเฉ€ เจกเจฐเฉ‹เจจ เจ•เจจเฉˆเจ•เจŸ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจŸเจฐเจฎเฉ€เจจเจฒ เจ…เจคเฉ‡ เจŸเฉ‡เจฒเจจเฉˆเฉฑเจŸ 192.168.1.1 เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเฉ‹ - เจ‡เจน เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเจพ IP เจนเฉˆเฅค เจฒเฉ€เจจเจ•เจธ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจฒเฉ€เจจเจ•เจธ เจฌเจฟเจœเจผเฉ€เจฌเจพเจ•เจธ.

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ

เจธเจพเจกเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ:

  • เจตเฉŒเจ‡เจธ เจ–เฉ‹เจœ เจฒเจˆ เจธเจชเฉ€เจš API เจจเจพเจฒ เจฏเฉ‚เจœเจผเจฐ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ;
  • เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจซเจฟเจฒเจŸเจฐ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจฎเจฟเจ†เจฐเฉ€ เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจ•เจฐเจจเจพ;
  • เจกเจฐเฉ‹เจจ เจจเฉ‚เฉฐ เจนเฉเจ•เจฎ เจญเฉ‡เจœเจฃเจพ;
  • เจฒเจพเจˆเจต เจตเฉ€เจกเฉ€เจ“ เจชเฉเจฐเจธเจพเจฐเจฃ.

API เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เฉ‹เจˆ เจ‡เฉฐเจŸเจฐเจจเฉˆเจŸ เจ•เจจเฉˆเจ•เจธเจผเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจˆเจฅเจฐเจจเฉˆเฉฑเจŸ เจ•เจจเฉˆเจ•เจธเจผเจจ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจพเจ‚เฅค

เจ‡เจน เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ!

เจ•เฉ‹เจก

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ‰ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจซเฉ‹เจฒเจกเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจŸเจฐเจฎเฉ€เจจเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚เฅค

เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจจเฉ‹เจก เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค

เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚.

npm เจ‡เฉฐเจธเจŸเจพเจฒโ€Š

เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจพเจ‚เจ—เฉ‡:

  • เจ‰เจคเจพเจฐเจจเจพ;
  • เจ‰เจคเจฐเจจเจพ;
  • เจ‰เฉฑเจชเจฐ - เจกเจฐเฉ‹เจจ เจ…เฉฑเจงเจพ เจฎเฉ€เจŸเจฐ เจตเจงเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ˜เฉเฉฐเจฎเจฆเจพ เจนเฉˆ;
  • เจนเฉ‡เจ เจพเจ‚ - เจ…เฉฑเจงเจพ เจฎเฉ€เจŸเจฐ เจกเจฟเฉฑเจ—เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจœเฉฐเจฎ เจœเจพเจ‚เจฆเจพ เจนเฉˆ;
  • เจ–เฉฑเจฌเฉ‡ เจชเจพเจธเฉ‡ - เจ–เฉฑเจฌเฉ‡ เจชเจพเจธเฉ‡ เจ…เฉฑเจงเจพ เจฎเฉ€เจŸเจฐ เจœเจพเจ‚เจฆเจพ เจนเฉˆ;
  • เจธเฉฑเจœเฉ‡ เจชเจพเจธเฉ‡ - เจ…เฉฑเจงเจพ เจฎเฉ€เจŸเจฐ เจธเฉฑเจœเฉ‡ เจชเจพเจธเฉ‡ เจœเจพเจ‚เจฆเจพ เจนเฉˆ;
  • เจฐเฉ‹เจŸเฉ‡เจธเจผเจจ - เจ˜เฉœเฉ€ เจฆเฉ€ เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจš 90 เจกเจฟเจ—เจฐเฉ€ เจ˜เฉเฉฐเจฎเจฆเจพ เจนเฉˆ;
  • เจ…เฉฑเจ—เฉ‡ - เจ…เฉฑเจงเจพ เจฎเฉ€เจŸเจฐ เจ…เฉฑเจ—เฉ‡ เจœเจพเจ‚เจฆเจพ เจนเฉˆ;
  • เจชเจฟเฉฑเจ›เฉ‡ - เจ…เฉฑเจงเจพ เจฎเฉ€เจŸเจฐ เจชเจฟเฉฑเจ›เฉ‡ เจœเจพเจ‚เจฆเจพ เจนเฉˆ;
  • เจฐเฉ‚เจ•เฉ‹.

เจ‡เฉฑเจฅเฉ‡ เจ‰เจน เจ•เฉ‹เจก เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจซเจฟเจฒเจŸเจฐ เจ•เจฐเจจ เจ…เจคเฉ‡ เจกเจฐเฉ‹เจจ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

const express = require('express');
const bodyparser = require('body-parser');
var arDrone = require('ar-drone');
const router = express.Router();
const app = express();
const commands = ['takeoff', 'land','up','down','goleft','goright','turn','goforward','gobackward','stop'];
 
var drone  = arDrone.createClient();
// disable emergency
drone.disableEmergency();
// express
app.use(bodyparser.json());
app.use(express.static(__dirname + '/public'));
 
router.get('/',(req,res) => {
    res.sendFile('index.html');
});
 
router.post('/command',(req,res) => {
    console.log('command recieved ', req.body);
    console.log('existing commands', commands);
    let command = req.body.command.replace(/ /g,'');
    if(commands.indexOf(command) !== -1) {
        switch(command.toUpperCase()) {
            case "TAKEOFF":
                console.log('taking off the drone');
                drone.takeoff();
            break;
            case "LAND":
                console.log('landing the drone');
                drone.land();
            break;
            case "UP":
                console.log('taking the drone up half meter');
                drone.up(0.2);
                setTimeout(() => {
                    drone.stop();
                    clearTimeout();
                },2000);
            break;
            case "DOWN":
                console.log('taking the drone down half meter');
                drone.down(0.2);
                setTimeout(() => {
                    drone.stop();
                    clearTimeout();
                },2000);
            break;
            case "GOLEFT":
                console.log('taking the drone left 1 meter');
                drone.left(0.1);
                setTimeout(() => {
                    drone.stop();
                    clearTimeout();
                },1000);
            break;
            case "GORIGHT":
                console.log('taking the drone right 1 meter');
                drone.right(0.1);
                setTimeout(() => {
                    drone.stop();
                    clearTimeout();
                },1000);
            break;
            case "TURN":
                console.log('turning the drone');
                drone.clockwise(0.4);
                setTimeout(() => {
                    drone.stop();
                    clearTimeout();
                },2000);
            break;
            case "GOFORWARD":
                console.log('moving the drone forward by 1 meter');
                drone.front(0.1);
                setTimeout(() => {
                    drone.stop();
                    clearTimeout();
                },2000);
            break;
            case "GOBACKWARD":
                console.log('moving the drone backward 1 meter');
                drone.back(0.1);
                setTimeout(() => {
                    drone.stop();
                    clearTimeout();
                },2000);
            break;
            case "STOP":
                drone.stop();
            break;
            default:
            break;    
        }
    }
    res.send('OK');
});
 
app.use('/',router);
 
app.listen(process.env.port || 3000);

เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ HTML เจ…เจคเฉ‡ JavaScript เจ•เฉ‹เจก เจนเฉˆ เจœเฉ‹ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจธเฉเจฃเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจจเฉ‹เจก เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจก เจญเฉ‡เจœเจฆเจพ เจนเฉˆเฅค

<!DOCTYPE html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Voice Controlled Notes App</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/shoelace-css/1.0.0-beta16/shoelace.css">
        <link rel="stylesheet" href="styles.css">
 
    </head>
    <body>
        <div class="container">
 
            <h1>Voice Controlled Drone</h1>
            <p class="page-description">A tiny app that allows you to control AR drone using voice</p>
 
            <h3 class="no-browser-support">Sorry, Your Browser Doesn't Support the Web Speech API. Try Opening This Demo In Google Chrome.</h3>
 
            <div class="app">
                <h3>Give the command</h3>
                <div class="input-single">
                    <textarea id="note-textarea" placeholder="Create a new note by typing or using voice recognition." rows="6"></textarea>
                </div>    
                <button id="start-record-btn" title="Start Recording">Start Recognition</button>
                <button id="pause-record-btn" title="Pause Recording">Pause Recognition</button>
                <p id="recording-instructions">Press the <strong>Start Recognition</strong> button and allow access.</p>
 
            </div>
 
        </div>
 
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="script.js"></script>
 
    </body>
</html>

เจ…เจคเฉ‡ เจตเฉŒเจ‡เจธ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ JavaScript เจ•เฉ‹เจก, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจจเฉ‹เจก เจธเจฐเจตเจฐ เจคเฉ‡ เจญเฉ‡เจœเจฃเจพเฅค

try {
 var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
 var recognition = new SpeechRecognition();
 }
 catch(e) {
 console.error(e);
 $('.no-browser-support').show();
 $('.app').hide();
 }
// other code, please refer GitHub source
recognition.onresult = function(event) {
// event is a SpeechRecognitionEvent object.
// It holds all the lines we have captured so far.
 // We only need the current one.
 var current = event.resultIndex;
// Get a transcript of what was said.
var transcript = event.results[current][0].transcript;
// send it to the backend
$.ajax({
 type: 'POST',
 url: '/command/',
 data: JSON.stringify({command: transcript}),
 success: function(data) { console.log(data) },
 contentType: "application/json",
 dataType: 'json'
 });
};

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจพเจ‚เจš เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ…เจจเฉเจธเจพเจฐ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ Wi-Fi เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจˆเจฅเจฐเจจเฉˆเฉฑเจŸ เจ•เฉ‡เจฌเจฒ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจจเจพเจฒ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ)เฅค

เจฌเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจฒเฉ‹เจ•เจฒเจนเฉ‹เจธเจŸ:3000 เจ–เฉ‹เจฒเฉเจนเฉ‹ เจ…เจคเฉ‡ เจธเจŸเจพเจฐเจŸ เจฐเจฟเจ•เฉ‹เจ—เจจเฉ€เจธเจผเจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹เฅค

เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ ARDrone เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจ…เจธเฉ€เจ‚ เจกเจฐเฉ‹เจจ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ–เฉเจธเจผ เจนเจพเจ‚เฅค

เจกเจฐเฉ‹เจจ เจคเฉ‹เจ‚ เจตเฉ€เจกเฉ€เจ“ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจจเจพ

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจซเจพเจˆเจฒ เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจ‡เจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‡ เจ•เจพเจชเฉ€ เจ•เจฐเฉ‹:

const http = require("http");
const drone = require("dronestream");
 
const server = http.createServer(function(req, res) {
 
require("fs").createReadStream(__dirname + "/public/video.html").pipe(res);
 });
 
drone.listen(server);
 
server.listen(4000);

เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ HTML เจ•เฉ‹เจก เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเจฌเจฒเจฟเจ• เจซเฉ‹เจฒเจกเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚เฅค

<!doctype html>
 <html>
 <head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 <title>Stream as module</title>
 <script src="/dronestream/nodecopter-client.js" type="text/javascript" charset="utf-8"></script>
 </head>
 <body>
 <h1 id="heading">Drone video stream</h1>
 <div id="droneStream" style="width: 640px; height: 360px"> </div>
 
<script type="text/javascript" charset="utf-8">
 
new NodecopterStream(document.getElementById("droneStream"));
 
</script>
 
</body>
</html>

เจซเจฐเฉฐเจŸ เจ•เฉˆเจฎเจฐเฉ‡ เจคเฉ‹เจ‚ เจตเฉ€เจกเฉ€เจ“ เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจฒเฉ‹เจ•เจฒเจนเฉ‹เจธเจŸ: 8080 เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเฉ‹เฅค

เจ…เจธเฉ€เจ‚ Node.js เจ…เจคเฉ‡ ARDrone เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจนเฉˆเจฒเฉ€เจ•เจพเจชเจŸเจฐ เจฆเฉ‡ เจตเฉŒเจ‡เจธ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

เจฎเจฆเจฆเจ—เจพเจฐ เจธเฉเจเจพเจ…

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

เจคเจฟเจ†เจฐ เจ•เฉ‹เจก เจ…เจคเฉ‡ เจกเฉˆเจฎเฉ‹

เจฒเจพเจˆเจต เจกเฉˆเจฎเฉ‹

เจกเจพเจ‰เจจเจฒเฉ‹เจก

เจนเฉ‹เจ‡เจ†!

เจ•เฉ‹เจก เจฒเจฟเจ–เจฃเจพ เจ…เจคเฉ‡ เจซเจฟเจฐ เจฎเจธเจผเฉ€เจจ เจจเฉ‚เฉฐ เจฎเฉฐเจจเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ–เฉเจธเจผเฉ€ เจฆเฉ‡เจตเฉ‡เจ—เจพ! เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพ เจฒเจฟเจ† เจนเฉˆ เจ•เจฟ เจกเจฐเฉ‹เจจ เจจเฉ‚เฉฐ เจตเฉŒเจ‡เจธ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉเจฃเจจเจพ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฟเจ–เจพเจ‰เจฃเจพ เจนเฉˆเฅค เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจ‡เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉฐเจญเจพเจตเจจเจพเจตเจพเจ‚ เจนเจจ: เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจšเจฟเจนเจฐเฉ‡ เจฆเฉ€ เจชเจ›เจพเจฃ, เจ–เฉเจฆเจฎเฉเจ–เจคเจฟเจ†เจฐเฉ€ เจ‰เจกเจพเจฃเจพเจ‚, เจธเฉฐเจ•เฉ‡เจค เจชเจ›เจพเจฃ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจ•เฉเจเฅค

เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจ•เฉ€ เจธเฉเจเจพเจ… เจฆเฉ‡ เจธเจ•เจฆเฉ‡ เจนเฉ‹?

เจธเจ•เจฟเฉฑเจฒเจฌเจพเจ•เจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ:

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

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