هشِ یک فایل بهتنهایی نمیگوید همهٔاقلامِ تحویل حاضر و همان نسخهاند. برای تحویلِ چند فایل صوتی، یک مانفیستِ مرجعِ قابلاعتماد و verifier لازم است که فایلِ سالم، گمشده، تغییرکرده وکوتاهشده را جدا گزارش کند. این صفحه آن کار را واقعاً روی پنج WAV موقتیِ ساختِ کد اجرا میکند؛ هیچ فایلِ کاربر خوانده نمیشود.
مرجعِ مورداعتماد را از مشاهده جدا کنیم
مانفیستِ تمرین برایهرقلم، شناسهٔمنطقی، نسخه، مسیرِ نسبی، قالبِ اعلامشده، تعدادِ بایت و SHA-256 دارد. نخست پنج فایلِ WAV اصیل درپوشهٔموقت ساخته و مشخصاتِ مرجع ثبت میشوند؛ بعد تغییرهایِ کنترلشده اعمال میشوند. قالبِ اعلامشده یک فیلدِ توضیحیِ مرجع است؛ verifier ازروی آن کیفیتِ صوت یااعتبارِ تمامِ سرآیندِ WAV را تأیید نمیکند.
فایلِ اول ۶۰۴۴ بایت است و تابعِ هش آن را در دو قطعهٔحداکثر ۴۰۹۶ بایتی میخواند. فایلها برای نشاندادنِ سازوکار ساخته شدهاند؛ گفتارِ واقعی، دادهٔحساس یا نسخهٔآرشیویِ مشتری نیستند. JSON همراه، مرجع و نتایجِ همین اجرایِ ساختگی را جدا دارد.
پنج حالت را واقعاً ایجاد کنیم
| تغییرِ تمرین | وضعیتِ مشاهدهشده | چه چیزی میدانیم؟ |
|---|---|---|
| فایلِ اول دستنخورده | verified_bytes | طول و هش با مرجع برابرند |
| حذفِ فایلِ دوم | missing | مسیرِ مرجع فایلِ موجود ندارد |
| تعویضِ یکبیتِ آخرِ سوم | hash_mismatch | طول برابر است ولی بایتها برابر نیستند |
| حذفِ آخرینبایتِ چهارم | size_mismatch | طول و هش با مرجع فرق دارند |
| تغییرنامِ پنجم | missing درنامِ قدیم؛ unexpected درنامِ تازه | نامِ تازه ازنظرِ بایت با مرجعِ پنجم برابر است |
برای نامِ تازه، برابریِ بایت را گزارش میکنیم، اما verifier خودش نمیتواند ثابت کند علتِ پیدایشش حتماًrename بوده است. ما فقط چون عملیاتِ تمرین را خودمان اجرا کردیم، علتِ ایننمونه را میدانیم. فایلِ unexpected خودکار حذف یا به قلمِ گمشده نسبت داده نمیشود.
مسیرِ نسبی و دامنهٔخواندن را مهار کنیم
کد مسیرِ POSIX نسبی میخواهد و مسیرِ مطلق، درایوِ Windows، backslash و..را رد میکند. بعداز resolve نیز مقصد باید داخلِ ریشهٔهمان fixture بماند. چهارورودیِ مسیرِ نامعتبر واقعاً رد شدهاند. تعدادِ اقلام و اندازهٔهر فایل هم سقفِ محلی دارد؛ این سقفها شرایطِ سرویسِ اپرا نیستند.
اجرایِ بدونِ ورودیِ اسکریپت فقط selftest را اجرا میکند:پنج WAV را داخلِ پوشهٔموقت میسازد، حالتهایِ آزمایش را اعمال ونتیجه راچاپ میکند؛ درپایان همان پوشهٔموقت پاک میشود. فایلِ دانلودیِ JSON بهتنهایی به فایلهایِ صوتیِ رایانهٔشما اشاره ندارد. برای کاربردِ واقعی، مرجع ودامنهٔفایلهایِ مجاز را آگاهانه تعیین کنید؛ این نسخه سامانهٔنصبشدهٔتحویل نیست.
برابریِ بایت با اصالت یا شنیدن فرق دارد
اگر فایل ومانفیست هر دو ازمنبعِ نامطمئن عوض شده باشند، هشِ برابر بهتنهایی اصالت را ثابت نمیکند. این نمونه امضایِ دیجیتال، اجازهٔاستفاده ازصدایِ فرد، مالکیت، عدمِ دستکاریِ مانفیست یا سلامتِ شنیداری را بررسی نمیکند. وضعیتِ verified_bytes فقط برابریِ طول وهش باهمان مرجع است.
همچنین دو ظرفِ متفاوت میتوانند PCM برابر ولی هشِ کلِ فایلِ متفاوت داشته باشند؛تفاوتِ هشِ فایل و PCM آن مسئله را جدا نشان میدهد. خروجیِ مستقلِ اینجا verifierِ اقلامِ واقعاًموجود، گمشده ونامِ تازه است، نه صرفاً گرفتنِ هشِ دوفایل.
پیش ازتحویلِ صوت چه چیزی همراه باشد؟
در برنامهٔتحویلِ صوتِ چندفصلی متن، فصل ونسخهٔصدا کنارهم قرار میگیرند؛ این ابزار بخشی ازکنترلِ اقلامِ تحویل را اجرا میکند. برای درخواستِ اپراگو دربارهٔنوعِ خروجی ومرجعِ نسخه توافق کنید؛ وجودِ چنین verifier یاامضایِ فایل درمحصول ازاینآموزش نتیجه نمیشود.
فایل تمرین و منبع
verifier چندفایلی؛ پنج WAV ساختگیِ واقعاًموجود با تغییرهایِ معلوم · مانفیستِ مرجع و وضعیتهایِ مشاهدهشدهٔهمین آزمایش، نه فایلِ مشتری
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.