ບລັອກ

ຂ້ອຍສ້າງ Baby Monitor Timmy ດ້ວຍ GitHub Copilot ແນວໃດ

AI ຊ່ວຍໃຫ້ຂ້ອຍເຮັດວຽກໄວຂຶ້ນ. ແຕ່ຄວາມຮັບຜິດຊອບຕໍ່ Timmy ຍັງຢູ່ກັບຂ້ອຍ.

Baby Monitor Timmy ເລີ່ມຈາກແນວຄິດງ່າຍໆ: ເຄື່ອງເບິ່ງແຍງລູກນ້ອຍທີ່ເຄົາລົບຄວາມເປັນສ່ວນຕົວຢູ່ເຮືອນ. ບໍ່ມີການບັນທຶກໄວ້ໃນຄລາວ, ບໍ່ມີເສັ້ນທາງຂໍ້ມູນທີ່ບໍ່ຈຳເປັນອອກຈາກຫ້ອງລູກ. ສິ່ງທີ່ຫຼາຍຄົນບໍ່ເຫັນ: ຂ້ອຍສ້າງ Timmy ຢູ່ຄົນດຽວໃນ Zurich, ແລະ GitHub Copilot ແມ່ນຄູ່ຮ່ວມຂຽນໂປຣແກຣມທີ່ໄວຫຼາຍຂອງຂ້ອຍ.

ວິທີເຮັດວຽກຮ່ວມກັນລະຫວ່າງຄົນ ແລະ AI

ການແບ່ງໜ້າທີ່ແມ່ນຊັດເຈນ: ຂ້ອຍກຳນົດຟີເຈີ, ຈັດລຳດັບຄວາມສຳຄັນ ແລະຕັດສິນໃຈດ້ານສະຖາປັດຕະຍະກຳ. Copilot ຊ່ວຍໃນການພັດທະນາ: ຂຽນໂຄດ, ເພີ່ມການທົດສອບ, ຊອກຫາສາເຫດຂອງບັກ ແລະກະກຽມຂັ້ນຕອນປ່ອຍເວີຊັນ.

ຮອບພັດທະນາປົກກະຕິຂອງຂ້ອຍໂດຍປະມານເປັນແບບນີ້:

  1. ຄຳອະທິບາຍຟີເຈີ: ຂ້ອຍອະທິບາຍວ່າຟີເຈີຄວນເຮັດຫຍັງ, ລວມທັງກໍລະນີພິເສດ ແລະຂໍ້ຈຳກັດ.
  2. ການລົງມືເຮັດ: Copilot ແນະນຳໂຄດ ແລະເຮັດຕາມແນວທາງທີ່ໂຄງການໃຊ້ຢູ່ແລ້ວ.
  3. ການທົດສອບ: ການທົດສອບ end-to-end ອັດຕະໂນມັດເຮັດວຽກໃນ emulator ສອງເຄື່ອງ ແລະກວດເບິ່ງການເຊື່ອມຕໍ່ລະຫວ່າງເຄື່ອງຝັ່ງລູກ ແລະຝັ່ງພໍ່ແມ່ຈິງໆ.
  4. ການແຈກຈ່າຍ: ເມື່ອການທົດສອບຜ່ານ, ຈະກະກຽມແອັບເວີຊັນ Android ແລະ iOS ສຳລັບຮ້ານແອັບ ແລະຊ່ອງທາງທົດສອບທີ່ເໝາະສົມ.

ວົງຈອນນີ້ເຮັດຊ້ຳສຳລັບຟີເຈີ ແລະການແກ້ບັກ. ຂ້ອຍບໍ່ໄດ້ຂຽນທຸກບັນທັດດ້ວຍຕົນເອງ, ແຕ່ຂ້ອຍເປັນຄົນຕັດສິນໃຈ ວ່າຫຍັງ ຈະຖືກສ້າງ, ເປັນຫຍັງ ຈຶ່ງສ້າງມັນ, ແລະວ່າຂໍ້ແນະນຳນັ້ນເໝາະກັບ Timmy ຫຼືບໍ່.

ຈາກແນວຄິດສູ່ WebRTC

ວຽກດ້ານເຕັກນິກຫຼັກແມ່ນຊັດເຈນຕັ້ງແຕ່ເລີ່ມ: ສຽງ ແລະວິດີໂອແບບເວລາຈິງລະຫວ່າງໂທລະສັບສອງເຄື່ອງ. WebRTC ເປັນຕົວເລືອກທີ່ຊັດເຈນ, ແຕ່ການເຊື່ອມມັນເຂົ້າກັບ Flutter ບໍ່ງ່າຍ: ICE candidates, ການເຈລະຈາ SDP, TURN fallback ແລະ DataChannels ຕ້ອງເຮັດວຽກນຳກັນຕາມລຳດັບທີ່ຖືກຕ້ອງ.

Copilot ຊ່ວຍໃຫ້ຂ້ອຍລວມສ່ວນຕ່າງໆເຫຼົ່ານັ້ນເທື່ອລະຂັ້ນ: ຕັ້ງຄ່າ peer connection, ຮັກສາລຳດັບສຳຄັນໃຫ້ຖືກ (DataChannel ກ່ອນ offer, onTrack ກ່ອນ setRemoteDescription), ແລະໃຊ້ Firebase Firestore ສຳລັບ signaling. ແຕ່ລະສ່ວນຕ້ອງແລ່ນໃນ emulator ສອງເຄື່ອງກ່ອນຂ້ອຍຈະໄປຕໍ່.

ການຈັບຄູ່ທີ່ປອດໄພດ້ວຍ ECDH

ໜຶ່ງໃນຟີເຈີທີ່ສຳຄັນຫຼາຍແມ່ນ ລະບົບຈັບຄູ່ທີ່ປອດໄພ. ອຸປະກອນສອງເຄື່ອງຕ້ອງສ້າງຄວາມໄວ້ວາງໃຈຮ່ວມກັນ ໂດຍບໍ່ອາໄສ server ກາງມາຢືນຢັນ ຕົວຕົນຂອງພວກມັນ. ວິທີແກ້ໄຂ: ແລກປ່ຽນຄີ ECDH P-256 ຜ່ານ Firebase ຮ່ວມກັບ ເລກຢືນຢັນດ້ວຍຕາ (SAS) ທີ່ກວດຈັບການໂຈມຕີ man-in-the-middle.

Copilot ຊ່ວຍນຳໃຊ້ລຳດັບການເຂົ້າລະຫັດ: ສ້າງຄີ, ແລກປ່ຽນ public key, ຄຳນວນ shared secret, ຄຳນວນ SAS, ແລະເຂົ້າລະຫັດ AES-256-GCM ສຳລັບຂໍ້ມູນ signaling ທັງໝົດໃນພາຍຫຼັງ. ຂ້ອຍບໍ່ໄດ້ສົ່ງ pairing key ໄປ backend; ໃຊ້ພຽງ SHA-256 hash ຂອງມັນເປັນຕົວລະບຸ Firestore document.

ການກວດສອບຄວາມປອດໄພ: ຊອກຫາ ແລະແກ້ໄຂຊ່ອງໂຫວ່

ການພັດທະນາໂດຍມີ AI ຊ່ວຍ ບໍ່ແມ່ນພຽງການພິມໄວຂຶ້ນສຳລັບຂ້ອຍ. ມັນຍັງຊ່ວຍຊອກຫາບັກຢ່າງເປັນລະບົບ. ໃນ sprint ກວດສອບຄວາມປອດໄພທີ່ເນັ້ນຈຸດ, Copilot ໄດ້ວິເຄາະ codebase ແລະພົບ ບັນຫາຫົກຂໍ້ ທີ່ຂ້ອຍຕ້ອງແກ້ໄຂ:

ທັງຫົກຂໍ້ໄດ້ຖືກແກ້ໃນ sprint ດຽວກັນ. ນີ້ແມ່ນຈຸດທີ່ Copilot ເຮັດໄດ້ດີ: ອ່ານຫຼາຍໄຟລ໌, ປຽບທຽບຮູບແບບ ແລະໝາຍຈຸດທີ່ຂ້ອຍຕ້ອງກວດເບິ່ງລະອຽດຂຶ້ນ.

ຮອບພັດທະນາແບບປັບປຸງຕໍ່ເນື່ອງ: ແອັບພັດທະນາມາແນວໃດ

Timmy ເຕີບໂຕຜ່ານຮອບພັດທະນາທີ່ໄວ ແຕ່ມີຂອບເຂດຊັດເຈນ. ເປົ້າໝາຍສຳຄັນບາງສ່ວນມີດັ່ງນີ້:

ທຸກ sprint ເຮັດຕາມຮູບແບບພື້ນຖານດຽວກັນ: ອະທິບາຍເປົ້າໝາຍ, ກວດທານຄຳແນະນຳ, ທົດສອບອັດຕະໂນມັດ, ແລ້ວຈຶ່ງສົ່ງໃຫ້ຜູ້ທົດສອບ.

ການທົດສອບ E2E ຂ້າມອຸປະກອນ

ທ່ານທົດສອບແອັບເບິ່ງແຍງລູກໃຫ້ຖືກຕ້ອງດ້ວຍອຸປະກອນເຄື່ອງດຽວບໍ່ໄດ້. ຂ້ອຍຕ້ອງມີອຸປະກອນຝັ່ງລູກໜຶ່ງເຄື່ອງ ແລະຝັ່ງພໍ່ແມ່ອີກໜຶ່ງເຄື່ອງ. ໂຄງການເລີ່ມດ້ວຍ Android emulator ສອງເຄື່ອງແລ່ນພ້ອມກັນ ແລະຕອນນີ້ເສີມ ວົງຈອນນັ້ນດ້ວຍການກວດໃນ iOS simulator ພາຍໃນເຄື່ອງ ແລະອຸປະກອນຈິງ. script ທົດສອບ Android ອັດຕະໂນມັດ ຍັງເຮັດດັ່ງນີ້:

  1. ຕິດຕັ້ງແອັບໃນ emulator ທັງສອງເຄື່ອງ
  2. ນຳທາງຜ່ານການຈັບຄູ່ໃນອຸປະກອນທັງສອງ
  3. ກວດວ່າການເຊື່ອມຕໍ່ສຽງ ແລະວິດີໂອຖືກສ້າງຂຶ້ນແລ້ວ
  4. ທົດສອບ push-to-talk, ການຄວບຄຸມກ້ອງ ແລະຟີເຈີອື່ນໆ

ເນື່ອງຈາກ emulator ທັງສອງໃຊ້ IP address ດຽວກັນ (10.0.2.15), ການເຊື່ອມຕໍ່ peer-to-peer ໂດຍກົງຜ່ານ STUN ຈຶ່ງເປັນໄປບໍ່ໄດ້. ທຸກຮອບການທົດສອບຕ້ອງຜ່ານ Cloudflare TURN relay. ມັນໜ້າລຳຄານ, ແຕ່ກໍມີປະໂຫຍດ: ເສັ້ນທາງການເຊື່ອມຕໍ່ທີ່ຊັບຊ້ອນທີ່ສຸດຖືກທົດສອບທຸກຄັ້ງ.

ສິ່ງທີ່ຂ້ອຍໄດ້ຮຽນຮູ້

ການສ້າງແອັບທີ່ສົມບູນພ້ອມຄູ່ຮ່ວມຂຽນໂປຣແກຣມ AI ສອນຂ້ອຍຫຼາຍຢ່າງ:

ກ້າວຕໍ່ໄປ

Baby Monitor Timmy ຍັງຄົງພັດທະນາຕໍ່. ການປ່ອຍເວີຊັນ iOS ໃກ້ຈະມາເຖິງ; ຫຼັງຈາກນັ້ນຈະມີຟີເຈີ sensor ເພີ່ມເຕີມ ແລະການເສີມຄວາມປອດໄພຢ່າງຕໍ່ເນື່ອງ. ຂັ້ນຕອນເຮັດວຽກຍັງຄ້າຍເດີມ: ຂ້ອຍກຳນົດທິດທາງ ແລະຂອບເຂດ, Copilot ຊ່ວຍລົງມືເຮັດ ແລະກວດສອບໄດ້ໄວ.

ຕອນນີ້ ອົງປະກອບຫຼັກທີ່ກ່ຽວຂ້ອງກັບຄວາມປອດໄພຖືກຈັດວາງໄວ້ໂດຍມີ ຂອບເຂດທີ່ຊັດເຈນ ຢູ່ໃນຄັງໂຄດສາທາລະນະ baby-monitor-timmy-core. ຄັງໂຄດນັ້ນຍັງມີເອກະສານການຕັດສິນໃຈດ້ານສະຖາປັດຕະຍະກຳກ່ຽວກັບການຈັບຄູ່, ການສົ່ງສັນຍານ ແລະສ່ວນຕໍ່ປະສານກັບລະບົບຫຼັງບ້ານ.


ບົດຄວາມເພີ່ມເຕີມ