Bloq

Baby Monitor Timmy-ni GitHub Copilot ilə necə hazırlayıram

Süni intellekt mənə daha sürətli irəliləməyə kömək edir. Timmy üçün məsuliyyət yenə də məndə qalır.

Baby Monitor Timmy sadə bir fikirlə başladı: evdə məxfiliyə hörmət edən uşaq izləyicisi. Buludda heç bir qeyd yoxdur, uşaq otağından kənara gedən lazımsız məlumat axınları da yoxdur. Çoxlarının görmədiyi budur: Timmy-ni Sürixdə təkbaşına hazırlayıram və GitHub Copilot mənim çox çevik proqramlaşdırma tərəfdaşımdır.

İnsan–Süni İntellekt İş Axını

Bölgü aydındır: funksiyaları müəyyənləşdirir, prioritetləri təyin edir və arxitektura qərarlarını verirəm. Copilot isə icrada kömək edir: kod yazmaq, testlər əlavə etmək, xətaların mənbəyini daraltmaq və buraxılış addımlarını hazırlamaq.

Məndə tipik sprint təxminən belə görünür:

  1. Funksiya təsviri: Funksiyanın nə etməli olduğunu, kənar halları və məhdudiyyətləri də daxil olmaqla təsvir edirəm.
  2. İcra: Copilot kod təklif edir və layihədəki mövcud qaydalara əməl edir.
  3. Test: Avtomatlaşdırılmış end-to-end testlər iki emulyatorda işləyir və uşaq/valideyn arasında real bağlantını yoxlayır.
  4. Yayım: Testlər uğurla keçəndə Android və iOS versiyaları uyğun mağaza və sınaq kanalları üçün hazırlanır.

Bu dövr funksiyalar və səhv düzəlişləri üçün təkrarlanır. Hər sətri özüm yazmıram, amma nəyin hazırlanacağına, niyə hazırlanacağına və təklifin Timmy-yə uyğun olub-olmadığına mən qərar verirəm.

Konseptdən WebRTC-yə

Əsas texniki məsələ əvvəldən aydın idi: iki telefon arasında real vaxtda səs və video. WebRTC açıq seçim idi, amma onu Flutter ilə inteqrasiya etmək sadə deyil: ICE namizədləri, SDP danışıqları, TURN ehtiyat mexanizmi və DataChannel-lər düzgün ardıcıllıqla birlikdə işləməlidir.

Copilot bu hissələri addım-addım birləşdirməyə kömək etdi: peer connection qurmaq, kritik ardıcıllığı düzgün saxlamaq (offer-dən əvvəl DataChannel, setRemoteDescription-dan əvvəl onTrack) və siqnallaşmanı Firebase Firestore üzərində qurmaq. Növbəti addıma keçməzdən əvvəl hər hissə iki emulyatorda işləməli idi.

ECDH ilə təhlükəsiz qoşalaşdırma

Ən vacib funksiyalardan biri təhlükəsiz qoşalaşdırma sistemiidi. İki cihaz öz kimliyini təsdiqləyən mərkəzi serverə güvənmədən qarşılıqlı etibar yaratmalıdır. Həll yolu: Firebase vasitəsilə ECDH P-256 açar mübadiləsi və ortadakı şəxs hücumlarını aşkar edən vizual yoxlama nömrəsi (SAS).

Copilot kriptoqrafik zəncirin hazırlanmasına kömək etdi: açarın yaradılması, açıq açarların mübadiləsi, ortaq sirrin əldə olunması, SAS hesablanması və sonrakı bütün siqnallaşma məlumatları üçün AES-256-GCM şifrələməsi. Qoşalaşdırma açarını backend-ə göndərmirəm; Firestore sənədinin identifikatoru kimi yalnız onun SHA-256 heşi istifadə olunur.

Təhlükəsizlik auditi: zəiflikləri tapmaq və aradan qaldırmaq

Süni intellekt dəstəkli inkişaf mənim üçün sadəcə daha sürətli yazmaq deyil. O, həm də sistemli şəkildə xətaları axtarmağa kömək edir. Fokuslanmış təhlükəsizlik auditi sprintində Copilot kod bazasını analiz etdi və düzəltməli olduğum altı problemi tapdı:

Altı problemin hamısı eyni sprintdə aradan qaldırıldı. Copilot-un güclü tərəfi də budur: çoxlu faylı oxumaq, nümunələri müqayisə etmək və daha diqqətlə yoxlamalı olduğum yerləri qeyd etmək.

İterativ sprintlər: tətbiq necə inkişaf etdi

Timmy sürətli, amma sərhədləri dəqiq müəyyən edilmiş sprintlərlə böyüdü. Bir neçə mühüm mərhələ:

Hər sprint eyni əsas sxemlə gedir: məqsədi təsvir et, təklifləri nəzərdən keçir, avtomatik test et, sonra test istifadəçilərinə göndər.

Cihazlar arasında E2E testləri

Uşaq izləyicisini bir cihazda düzgün test etmək olmaz. Mənə bir uşaq cihazı və bir valideyn cihazı lazımdır. Layihə eyni anda işləyən iki Android emulyatoru ilə başladı və indi bu dövrə yerli iOS simulyatoru və real cihaz yoxlamaları da əlavə olunub. Avtomatlaşdırılmış Android test skripti hələ də:

  1. Tətbiqi hər iki emulyatora quraşdırır
  2. Hər iki cihazda qoşalaşdırma mərhələlərindən keçir
  3. Səs və video bağlantılarının qurulduğunu yoxlayır
  4. Push-to-talk, kamera idarəetməsi və digər funksiyaları test edir

Hər iki emulyator eyni IP ünvanını paylaşdığı üçün (10.0.2.15), STUN vasitəsilə birbaşa peer-to-peer bağlantı mümkün deyil. Hər test işə salınması Cloudflare TURN releysi üzərindən keçməlidir. Bu, bezdiricidir, amma faydalıdır: ən mürəkkəb bağlantı yolu hər dəfə test edilir.

Öyrəndiklərim

Süni intellekt proqramlaşdırma tərəfdaşı ilə tam tətbiq hazırlamaq mənə bir neçə şey öyrətdi:

Gələcəyə baxış

Baby Monitor Timmy inkişaf etməyə davam edir. iOS buraxılışı yaxındır; ondan sonra əlavə sensor funksiyaları və davamlı təhlükəsizlik gücləndirmələri gələcək. İş axını oxşar qalır: istiqaməti və sərhədləri mən müəyyən edirəm, Copilot isə tez tətbiq etməyə və yoxlamağa kömək edir.

Təhlükəsizlik baxımından vacib əsas komponentlər indi aydın şəkildə ayrılmış sərhədlər daxilində ictimai baby-monitor-timmy-core repozitoriyasındayerləşir. Qoşalaşdırma, siqnallaşma və backend interfeysləri ilə bağlı arxitektura qərarları da orada sənədləşdirilib.


Daha çox məqalə