Web Worker-ийн зураг боловсруулах үндэс
Вэб ажилтан нь засварлагчийн үндсэн хэлхээг бүх ажлыг хийхгүйгээр үнэтэй тооцоолол хийх боломжтой тусдаа JavaScript гүйцэтгэх контекст юм. Хөтөчийн зураг боловсруулахын тулд товчлуурууд, явцын мэдээ, сойз оруулах, дэлгэцийн шинэчлэлтийг хариуцдаг утаснуудаас загварын тохиргоо, дүгнэлт гарах боломжтой гэсэн үг.
Үр дүн нь “үнэгүй дэвсгэр боловсруулалт” биш юм. Ижил төхөөрөмж нь тооцоолол хийж, санах ой ашигладаг хэвээр байна. Архитектурын давуу тал нь салгах явдал юм: хүнд загвартай ажиллагаа нь ажиллаж байх үед интерфэйсийн хариу бүрийг хаах магадлал багатай.
Үндсэн thread нь хэрэглэгчийн интерфейсийн ажилтай
Хөтөч хуудас нь ихэвчлэн JavaScript-ийг үндсэн хэлхээ дээр ажиллуулдаг. Энэ утас нь зураг төсөл, зураг, оролт зэргийг зохицуулдаг. Хэрэв нэг урт тооцооллыг эзэлвэл товшилтууд удааширч, хөдөлгөөнт дүрс зогсч магадгүй бөгөөд хөтөч нь хуудас хариу өгөхгүй байгааг анхааруулж магадгүй юм.
Дүгнэлт эхлэхээс өмнө зураг засварлагч олон үндсэн үүрэг хариуцлагатай байдаг:
- файлын сонголтыг хүлээн авах, буулгах, буулгах;
- дүрсийг тайлж, харуулах;
- явц, алдааны төлөвийг шинэчлэх;
- урьдчилан харах зураг зурах;
- сойзны хөдөлгөөнийг нэмэх, устгах;
- татаж авах эсвэл санах ойн үйлдлийг бэлтгэх.
Сегментчлэлийн загварын тоон ажлыг ижил утас дээр байрлуулах нь эдгээр ажлуудыг шууд өрсөлдүүлэх болно. Ажилчин илүү тодорхой хил хязгаарыг бий болгодог.
Мессежид суурилсан хил хязгаар
Редактор болон ажилтан энгийн хувьсагчдыг хуваалцдаггүй. Тэд мессеж илгээх замаар харилцдаг. Хялбаршуулсан урсгал дараах байдалтай байна.
- Редактор нь ажилчин үүсгэх эсвэл дахин ашигладаг.
- Энэ нь ажилчнаас дүгнэлт хийх хугацаа болон загварыг эхлүүлэхийг хүсдэг.
- Зургийн өгөгдөл бэлтгэж, дүгнэлтийн хүсэлтийг илгээдэг.
- Ажилчин өгөгдлийг загварын хүлээгдэж буй оролт болгон хувиргадаг.
- Ажилчин загварыг ажиллуулж, маскын утгыг үйлдвэрлэдэг.
- Энэ нь маск эсвэл үр дүнгийн өгөгдлийг буцааж илгээдэг.
- Засварлагч нь урьдчилан харахыг нэгтгэж, сайжруулах эсвэл экспортлох боломжийг олгодог.
Мессежүүд нь зөв хүсэлтийн хариулттай тохирох хангалттай контекст агуулсан байх ёстой. Өмнөх ажил дуусахаас өмнө хэрэглэгч өөр зураг сонгосон тохиолдолд энэ нь чухал юм. Интерфэйс нь шинэ эх сурвалж дээр хуучин үр дүнг харуулахаас зайлсхийх ёстой.
Зургийн өгөгдлийг хуулж, дамжуулах
Жижиг мессеж илгээх нь хямдхан. Хөтөч буферийг бүхэлд нь хуулах шаардлагатай бол сая сая пикселийн утгыг илгээх нь үнэтэй байж болно. Вэб API нь оронд нь тодорхой хоёртын буферийн эзэмшлийг шилжүүлэх боломжтой. Шилжүүлсэн буфер нь илгээгчийн талд ашиглах боломжтой хуулбарыг хадгалахгүйгээр хүлээн авагчид боломжтой болно.
Энэ оновчлол нь дизайны хязгаарлалттай хамт ирдэг: шилжүүлгийн дараа илгээгч нь өгөгдлийг эзэмшсэн хэвээр байгаа мэт буферийг үргэлжлүүлэн ашиглах боломжгүй. Засварлагч нь тусдаа дэлгэцийн дүрслэлийг хадгалж, тусгай дүгнэлтийн буфер үүсгэх эсвэл дараа нь хэрэгтэй зүйлээ сэргээж болно.
Хэрэгжилт бүр яг ижил газар шилжүүлгийг ашигладаггүй. Ерөнхий сургамж бол утас тусгаарлах нь өгөгдлийн хөдөлгөөнийг арилгадаггүй. Зургийн хэмжээ, буферийн хэмжээ, хөрвүүлэлтийн тоо нь хоцролт болон санах ойд нөлөөлсөн хэвээр байна.
Easy Background Remover ажилчинд юу тавьдаг
Easy Background Remover нь төхөөрөмж дээрх сегментчилэлд зориулж хөтчийн дүгнэлтийн ажиллах хугацаа бүхий Web Worker ашигладаг. Хүнд автомат хайчлах алхам нь маск үүсгэдэг. Дараа нь засварлагч нь нэгтгэсэн үр дүнг харуулж, CPU-canvas сойзны сайжруулалтыг дэмждэг.
Энэ тусгаарлалт нь бүтэлгүйтэлд илүү ашигтай хил хязгаарыг өгдөг. Хэрэв ажилчин эхлүүлж чадахгүй эсвэл дүгнэлт хийх явцад гацсан бол интерфэйс нь цорын ганц дохио болгон байнгын царцсан таб дээр найдахын оронд ажилтантай холбоотой алдааг мэдээлэх боломжтой.
Энэ нь мөн орон нутгийн боловсруулалтын нэхэмжлэлийг ойлгомжтой байлгадаг. Өргөтгөлийн хуудаснаас өөрийн ажилтан руу пиксел илгээх нь алсын хайчлах API руу байршуулах биш харин хөтчийн орчин дахь харилцаа холбоо юм. Эхний сесс нь дахин ашиглах боломжтой загварын хөрөнгийг тусад нь татаж авч болно; Яагаад эхлээд татаж авах загварыг ажиллуулж байна харна уу.
Ажилчин шууд тооцоолол хийдэггүй
Ажилчид түүхий төхөөрөмжийн чадавхийг биш харин хариу үйлдэл үзүүлэх чадварыг сайжруулдаг. Энэхүү загвар нь хөтөчийн өгч чадах зүйлээс хамааран CPU, GPU эсвэл бусад ажиллах үеийн нөөцийг ашигладаг хэвээр байна. Том оролт нь жижиг оролтоос илүү их санах ой шаарддаг хэвээр байж болно.
Хэд хэдэн хязгаарлалт хэвээр байна:
- загварыг эхлүүлэх нь бодит өртөгтэй;
- пикселийн буфер нь хуулсан тохиолдолд хоёр талдаа санах ойг эзэлдэг;
- хэмжээг өөрчлөх, форматыг хөрвүүлэхэд цаг хугацаа шаардагдана;
- санах ой багатай төхөөрөмжүүд том хэмжээтэй зурагтай тэмцэж болзошгүй;
- Илүү олон ажилчид маргааныг багасгахын оронд нэмэгдүүлэх боломжтой;
- Экспорт болон зотон шинэчлэлтүүд нь үндсэн хэлхээг агуулж болно.
Таван зураг дээр дүгнэлт гаргах таван ажилчдыг эхлүүлэх нь автоматаар тав дахин хурдан биш юм. Ажилчид нэг машиныг хуваалцдаг. Зэрэгцээ ажлууд нь санах ойн зурвасын өргөн болон гүйцэтгэлийн нөөцийн төлөө өрсөлдөж чаддаг бол загвар бүр өөрийн санах ойн өртөгтэй байж болно.
Явцыг тайлагнах нь хамтын ажиллагаа юм
Ажилтан статусын мессеж илгээх боломжтой боловч ахиц дэвшлийн хувь нь үнэн зөв болохыг автоматаар мэддэггүй. Загвар татаж авах, ажиллах цагийг эхлүүлэх, оруулах бэлтгэл, дүгнэлт, маск хувиргах, урьдчилан харах зэрэг нь өөр өөр хугацаатай тусдаа үе шатууд юм.
Зарим үе шатууд нь хэмжигдэхүйц байт тоотой байдаг. Нэг загварын гүйцэтгэл нь зөвхөн “эхэлсэн” болон “дууссан”-ыг харуулж чадна. Тиймээс жигд урагшлах гөлгөр хувь нь нарийн хэмжилтээс илүү гоо сайхны бүтээгдэхүүн байж болно.
Ашигтай ахиц дэвшил UI нь боломжтой үед үе шатыг нэрлэнэ: загвар бэлтгэх, зураг боловсруулах эсвэл үр дүнг бий болгох. Энэ нь мөн ямар ч тайлбаргүйгээр спиннер үлдээхийн оронд бүтэлгүйтэл, цуцлалтыг зохицуулдаг.
Цуцлах нь спиннер нуухаас ч илүү юм
Хэрэв хэрэглэгч зургийг хааж эсвэл дахин эхлүүлбэл интерфэйс нь хуучирсан хүсэлтийн эцсийн хариуг үл тоомсорлож болно. Үндсэн тооцооллыг нэн даруй зогсоохын тулд ажиллах хугацаанаас нэмэлт дэмжлэг авах эсвэл ажилчдыг дуусгаж, дахин үүсгэх шаардлагатай байж болно.
Ажилтныг ажлаас халах нь шийдэмгий боловч түүний эхлүүлсэн төлөвийг устгадаг. Дараагийн ажил нь загварыг дахин ачаалж, эхлүүлэх шаардлагатай байж магадгүй. Богино хагалгааны хувьд хуучирсан үр дүнг тэмдэглэх нь бүх зүйлийг нураахаас хамаагүй хямд байх болно.
Зөв сонголт нь санах ойн даралт, үйл ажиллагааны үргэлжлэх хугацаа, ажиллах цагийн чадвараас хамаарна. Хэрэглэгчийн үүднээс авч үзвэл хуучирсан ажил нь одоогийн засварыг дарж бичихгүй байх нь чухал дүрэм юм.
Алдаа ч гэсэн хил давах хэрэгтэй
Ажилчин доторх үл хамаарах зүйл нь ердийн үндсэн хэлхээний үл хамаарах зүйл болдоггүй. Ажилтан ашиглах боломжтой алдаануудыг мэдээлэх ёстой бөгөөд редактор нь ажилчдын түвшний алдааг сонсох ёстой.
Алдааг сайн зохицуулах нь дор хаяж дараахь зүйлийг ялгадаг.
- загварын өмч боломжгүй;
- загварыг эхлүүлэх амжилтгүй болсон;
- зургийн код тайлах эсвэл оруулах бэлтгэл амжилтгүй болсон;
- дүгнэлт амжилтгүй болсон;
- ажилчин гэнэт зогссон;
- үр дүн нь одоогийн хүсэлтэд хамаарахаа больсон.
Энэ нь ерөнхий “ямар нэг алдаа гарлаа” гэхээс илүү үйлдэл хийх боломжтой, ялангуяа анхны тохиргоо болон ердийн зураг боловсруулах нь өөр өөр арга замтай үед.
Ажилчдын гаралт зөвхөн эхний маск хэвээр байна
Thread архитектур нь тодорхой бус ирмэгийг өөрөө сайжруулдаггүй. Ажилчин үслэг эдлэл, ил тод материал, нарийн оосор эсвэл хүссэн сүүдэрээ орхигдуулсан техникийн хүчинтэй маскыг буцааж өгөх боломжтой. Эдгээр нь сегментчилэл болон зорилгын асуултууд юм.
Дүгнэлт хийсний дараа засварлагчийн ажил үргэлжлэх болно: маскыг ажлын координатын систем болгон томруулж, урьдчилан харахыг нэгтгэж, хэрэглэгчдэд үүнийг сайжруулж, одоогийн төлөвийг экспортлох. Маскны нягтрал ба урьдчилан харах хэмжээ яагаад тэдгээр координатын системийг андуурч болохгүйг тайлбарладаг.
Товч сэтгэхүйн загвар
Ажилчдыг мессежийн цонхны ард байгаа орон нутгийн мэргэжилтэн гэж бодоорой.
- редактор харилцан үйлчлэлийг эзэмшдэг;
- ажилчин хүнд дүгнэлт хийх ажлыг эзэмшдэг;
- хоёртын зургийн өгөгдөл нь тодорхой хил хязгаарыг давах;
- ажилчин ирмэг бүрийн талаар эцсийн дүгнэлт биш харин маск буцааж өгдөг;
- редактор нь одоогийн байдал, тойм, сайжруулалт, экспортыг хариуцдаг.
Загварын пикселүүдийг харахын тулд Төхөөрөмжийн зүсэлтийн загвар юу хардаг вэ хэсгээс үргэлжлүүлнэ үү. Төгсгөлийн практик тоймыг Орон нутгийн дэвсгэр арилгах хэрхэн ажилладаг вэ хэсгээс үзнэ үү.