مونتاژ وب باید یک هدف باینری پیش فرض باشد

ساخت وبلاگ

WebAssembly (WASM) دیگر یک محیط اسباب بازی برای نسخه های نمایشی خنک نیست. این یک اکوسیستم پر رونق است که برنامه های وب با کارایی بالا را با قابلیت های غنی امکان پذیر می کند. این یک سیستم کد قابل حمل است که می تواند باینری ها را در ابر یا دستگاه محلی شما اجرا کند. این ممکن است مانند یک موقعیت افراطی به نظر برسد ، اما من را بشنوید: اگر یک کتابخانه ، زبان یا ابزار دیگری را تهیه کنید ، باید در نظر داشته باشید که WASM را به یک هدف باینری پیش فرض تبدیل کنید.

در اینجا دلایل اصلی من وجود دارد:

برنامه های وب جلویی می توانند بارهای کاری را که قبلاً برای پس زمینه رزرو می کردیم ، تحمل کنند. مانند پردازش تصویر یا رمزگذاری پرونده. این باعث کاهش پهنای باند و سرعت بخشیدن به برنامه ها می شود.

WASM فقط در مرورگر اجرا نمی شود ، می توانید از آن از اتصال به زبان یا یک مترجم استفاده کنید. این امر آن را به یک فرمت قابل حمل تبدیل می کند که نیازی به گردآوری یا نسخه های خاص پلتفرم ندارد.

WASM در یک محیط ماسهبازی کنترل شده توسط میزبان اجرا می شود. میزبان می تواند مطمئن باشد که یک کتابخانه دسترسی به شبکه یا پرونده نخواهد داشت مگر اینکه ارائه شود.

با قابلیت حمل آزادی می گیریم. آزادی برای اجرای نرم افزار در هر مکانی که می خواهیم بدون فرآیند دشوار برای فهمیدن نحوه کامپایل و اجرای آن.

بیایید کمی بیشتر به آن شیرجه بزنیم.

آنچه با WASM تغییر کرده است

هنگامی که کل مفهوم WASM شروع شد ، این یک هک بزرگ بود. یک ترفند شسته و رفته برای تهیه برنامه های C به طوری که آنها در زمان اجرا JavaScript سریع اجرا می شوند. Emscripten واقعاً محدودیت های آنچه را که فکر می کردیم در اینجا امکان پذیر است ، تحت فشار قرار داد و ما نمایش های بسیار شگفت انگیزی را دیدیم: برخی از افراد که زبانهای تفسیر شده مانند پایتون تا WASM را گردآوری کرده اند ، افسانه های موجود در Unreal موتور خود را در حال کار در داخل مرورگر قرار داده اند ، بسیار جالب بود. گری برنارد حتی در مورد چگونگی خوردن دنیا در جهان صحبت کرد. اما WASM از آن زمان تغییر زیادی کرده است.

Screen Shot 2021-08-20 at 7.46.03 pm

گری در مورد موتور غیر واقعی در WASM صحبت می کند

مهمترین تغییری که برای WASM اتفاق می افتد رابط سیستم WebAnsembly (WASI) است. WASI یک رابط سیستم برای یک سیستم عامل مفهومی است. این امکان را به توسعه دهندگان نرم افزار سیستم می دهد تا به تماس های سیستم مانند POSIX وصل شوند و میزبان بتوانند آن عملکرد را به گونه ای پیاده سازی کنند که برای زمان اجرا آنها معنی داشته باشد. نتیجه انعطاف پذیر است ، اما نه چندان دور از لینوکس ، مکوس و ویندوز که نمی توان آن را اجرا کرد.

آنچه در مورد WASI واقعاً شسته و رفته است این است که مبتنی بر یک سیستم ماسهبازی با قابلیت محور است. میزبان که باینری را اجرا می کند ، می تواند به پرونده دسترسی به فایل ، دسترسی به شبکه پروکسی و تماس های سیستم را در صورت مناسب بودن غیرفعال کند. این نوع ماسهبازی می تواند از کل دسته های امنیتی جلوگیری کند زیرا یک لایه اضافی بین کاربرد شما و وابستگی های آن ایجاد می کند و در صورت به خطر انداختن وابستگی ، دامنه تأثیر احتمالی را کاهش می دهد.

در حال اجرا در خارج از مرورگر

با پیشرفت در WASM ، علاقه بیشتری به اجرای WASM در خارج از مرورگر پیدا کرده است. این یک فضای واقعاً جالب از نوآوری است که با ابزارهای جدید WASI حتی ساده تر می شود. نامزدهای آشکار WASM را در داخل V8 Runtimes اجرا می کنند. به عنوان مثال ، پلت فرم کارگران CloudFlare از V8 (Chrome's JS) به عنوان راهی برای اجرای عملکردهای معمولی بدون سرور JavaScript و همچنین باینری های همراه با WASM از سایر زبانها استفاده می کند.

Diagram about how Cloudflare Workers works

از CloudFlare: نحوه کار کارگران

اما چرا V8 را اصلاً اجرا کنید؟سؤال خوبی بود! اجرای زمان WASM برای اجرای بسیار ساده تر از زمان اجرا JavaScript است. شما کاملاً می توانید خودتان یکی را پیاده سازی کنید. اما به جای انجام این کار ، راه حل های قفسه وجود دارد. Wasmer برای زبانهای اصلی اتصالات زمان اجرا دارد: پایتون ، روبی ، PHP ، GO ، زنگ زدگی ، C/C ++ و JavaScript. Alliance Bytecode دارای زمان اجرا خود است که در . NET ، Python ، Go ، Rust ، C و C ++ کار می کند. به علاوه من مطمئن هستم که هر دو در حال کار بیشتر هستند.

اگر یک زمان اجرا WASM برای زبان خود دارید ، می توانید در یک باینری WASM بارگذاری کنید ، برخی از پیوندهای ساده را بنویسید تا به آن باینری و presto فراخوانی کنید! شما کد سیستم را مستقل از سیستم عامل یا CPU اجرا می کنید. فقط آن پسر بد را به هر رایانه ای که می خواهید بپیچید و اجرا کنید.

حالا می دانید که می توانید از کد پایتون خود اجرا کنید ، اما چرا روی زمین خواهید بود؟در اینجا تجربه ای است که ممکن است با آن آشنا باشید:

از حالت تمام صفحه خارج شوید

شما می خواستید که دارای کتابخانه ای خنک باشید اما برای به دست آوردن آن ، به وابستگی های آن احتیاج دارید. و این وابستگی ها وابستگی دارند. در همین حال شما فریاد می زنید ، فن رایانه شما فریاد می زند ، و مدیر بسته شما در حال تهیه GCC است ، به طوری که می تواند روبی را کامپایل کند ، به طوری که برخی از وابستگی های گذرا کار می کند. در بیشتر موارد واقعاً بد نیست ، اما درست است؟

ما این مشکل را با Docker حل کرده ایم. اوضاع حداقل بهتر از گذشته است. اما این بسیار سربار است. شما فقط برای اجرای یک باینری واحد ، این سیستم جداسازی هسته مشترک را تنظیم می کنید. به نظر می رسد مانند یک باینری قابل حمل بهتر خواهد بود.

Portable binaries

برو جیمز گاسلینگ ، مخترع جاوا. این کاملاً متفاوت است.

این جایی است که WASM می درخشد! به جای آن ، با استفاده از کتابخانه ای ، یک باینری WASM را منتشر می کند ، ما آن را بارگیری می کنیم و آن را از زبان مورد علاقه خود اجرا می کنیم. نیازی به نصب تمام وابستگی های آن ، بدون نیاز به تهیه GCC ، بدون نیاز به کانتینر کردن یک سیستم عامل نیست. فقط یک باینری می توانید در هر جایی اجرا کنید. روی سرور لینوکس شما کار می کند ، روی ویندوز کار می کند ، روی Macbook M1 جدید و براق شما کار می کند. هک ، روی تراشه کوچکی که در لامپ شما اجرا می شود کار می کند که تاریک ترین رازهای شما را به آمازون منتقل می کند. در مکان های بیشتری از JavaScript اجرا می شود!

اگر فکر می کنید ایده مدیریت نسخه های باینری وحشتناک به نظر می رسد ، حتی نگران آن نباشید. WAPM مدیر بسته WASM در آنجا وجود دارد تا این مشکل را برای شما حل کند.

از حالت تمام صفحه خارج شوید

این راحت تر بود!

این فقط در اجرای WASM از زبان مورد علاقه خود متوقف نمی شود. چرا اصلاً به یک زبان احتیاج دارید؟با WAPM می توانید باینری را مستقیماً اجرا کنید ، مانند بومی. این بدان معناست که اگر یک ابزار CLI در WAPM موجود باشد ، می توانید آن را نصب کرده و آن را روی دستگاه خود اجرا کنید. بدون وابستگی ، بدون تالیف ، فقط باینری که نصب کرده و اجرا می کنید.

و اگر می خواهید آن باینری را برای تولید مستقر کنید ، مجموعه دیگری از ابزار برای انجام این کار وجود دارد. Wasmedge یک زمان اجرا است که برای محاسبات ابری ساخته شده است. یا زمان اجرا را به طور کلی پرش کنید و WASM خود را به یک باینری بومی با Lucet کامپایل کنید ، و تمام مزایای امنیت و ماسهبازی WASM و تمام مزایای عملکرد یک باینری بومی را به شما می دهد.

در حال دویدن WASI در مرورگر

خوب ، بنابراین ما می دانیم که می توانیم این باینری های سیستم را بر روی دستگاه شما یا سرورهای شما اجرا کنیم و این همه معنی دارد. اما چرا آنها را در مرورگر اجرا می کنید؟چی کار می خوای بکنی؟ffmpeg را در سمت مشتری اجرا کنید؟!

بله ، بله من خونین خوب هستم. من می خواهم هرچه می خواهم دویدم! اگر می خواهم FFMPEG را در مرورگر اجرا کنم ، باید بتوانم. اگر می خواهم Clang را در مرورگر اجرا کنم باید بتوانم. اگر می خواهم برخی از درایورهای چاپگر منبع باز را بارگیری کنم و آنها را در مرورگر اجرا کنم باید بتوانم!

قابلیت حمل یک موضوع آزادی است. کل قول محاسبات جهانی بودن است. قادر به اجرای كتابخانه در هر کجا كه من می خواهم بسیار قدرتمند است. شاید شما نتوانید تصور کنید که چرا ممکن است بخواهم ، اما این نقطه ابزارهای منبع باز است. شما آنها را در آنجا قرار داده اید و سپس افراد دیگر کارهای شگفت انگیز و باورنکردنی را با خود انجام می دهند - چیزهایی که هرگز از آنها رویای آن را نداشته اید.

از آنجا که FFMPEG در مرورگر اجرا می شود ، اکنون ویرایشگرهای ویدئویی وجود دارند که در مرورگر اجرا می شوند. این ممکن است یک ایده احمقانه به نظر برسد ، اما حتی فقط اصول اولیه ویرایش ویدیو برای بسیاری از افراد مفید است و با دویدن در سمت مشتری ، پهنای باند زیادی را ذخیره می کنید. روش سنتی برای پردازش فیلم ها این است که آنها را به سمت سرور رمزگذاری کنید ، سپس کنترل هایی را برای کاربر فراهم می کند تا ویرایش های کوچکی مانند پیرایش ویدیو را انجام دهد. از آنجا که کاربر از پرونده ویدیویی بسیار دور است ، و این تعاملی بسیار دشوار است. به علاوه شما باید ابتدا کل پرونده خام را بارگذاری کنید.

با دویدن در سمت مشتری می توانیم قبل از بارگذاری ، کدگذاری و Transcode را اصلاح کنیم. این بدان معنی است که کاربر یک رابط کاربری پیرایش تعاملی دریافت می کند که فوراً پاسخ می دهد. سپس هنگامی که آنها به پایان رسیدند ، به جای بارگذاری یک فایل خام عظیم ، می توانند به صورت محلی کدگذاری کنند و سپس فقط آنچه را که سایت نیاز دارد بارگذاری کنند. این یک خیال پردازی نیست ، گفتمان از یک گردش کار مشابه برای بهینه سازی تصاویر قبل از بارگذاری آنها استفاده می کند.

maconha

آیا دوست ندارید پهنای باند مانند گفتمان را ذخیره کنید؟

اما این فقط برای رسانه نیست. آیا تا به حال از نوت بوک های Jupyter استفاده کرده اید؟این یک قالب اسناد برای علم داده است که در آن می توانید توضیحات متن را با کدهایی که روی داده ها اجرا می شود ، در هم تن داشته باشید و نتایج متوسط را نشان دهید. این یک روش عالی برای برقراری ارتباط با نتایج تحقیق است ، زیرا نتایج تحقیق به همراه نحوه به دست آوردن این نتایج ارسال می شود. اگر می خواهید کار را بررسی کنید ، درست در آنجاست!

نوت بوک های Jupyter نیاز به اتصال به سرور دارند که می تواند کد پایتون را اجرا کند. سرور می تواند به صورت محلی اجرا شود ، اما شما باید خودتان آن را آتش بزنید. یا می توانید برای کسی که سرور را برای شما اجرا کند ، هزینه خود را بپردازید ، سند را در آنجا بارگذاری کرده و سپس آن را اجرا کنید. اما اگر فقط بخواهید نگاه سریع داشته باشید چه می کنید؟

اینگونه نیست که ما به مرور اسناد عادت کرده ایم. امروزه شما فقط یک وب سایت را باز کرده و سند را همانجا می خوانید. این دقیقاً همان کاری است که Jupyterlite به شما امکان می دهد انجام دهید. این یک نسخه کاملاً مرورگر از Jupyter است که از پروژه Pyodide از موزیلا مستقر است. پیوودید پایتون است که به WASM گردآوری شده و با یک دسته از بسته های استاندارد علمی پایتون بسته بندی شده است.

علم قابل تکرار حتی در دسترس تر است زیرا موزیلا تلاش خود را برای اجرای پایتون در WASM انجام داد. تصور کنید که با دریافت بقیه زبانهای برنامه نویسی ما بر روی WASM چه کار دیگری انجام می شود؟مستندات کتابخانه می تواند نمونه های قابل اجرا داشته باشد. گزارش های اشکال می تواند شامل یک تولید مثل قابل اجرا باشد. مقالات فنی می توانند چیز واقعی را در مرورگر شما اجرا کنند و نیازی به نصب محلی ندارند. من می توانم یک برنامه را توییت کنم ، و شما می توانید آن را درون توییت اجرا کنید!

در نهایت این در مورد آزادی است

یکی از ناامید کننده ترین قسمت های برنامه نویسی ، پیدا کردن مسابقات خوب از ابزارها و محیط ها است. شما یک کتابخانه عالی برای حل مشکل خود پیدا می کنید ، اما این برای یک زبان دیگر است. شما یک پایگاه داده را که می خواهید استفاده کنید پیدا می کنید ، اما هیچ باینری برای معماری شما وجود ندارد. شما با یک زبان برنامه نویسی آشنا هستید ، اما جایی که می خواهید اجرا نمی شود. شما کد خود را مستقر می کنید و این کار از بین می رود زیرا محیط DEV شما با محیط تولید شما مطابقت ندارد!

ما تقلید می کنیم ، کانتینر می کنیم ، بندر می کنیم ، تلاش زیادی می کنیم تا این مشکلات را حل کنیم. اما همه این موانع می توانند از بین بروند. ما می توانستیم نرم افزار را در هر کجا که می خواستیم اجرا کنیم ، اما می خواستیم.

کتاب دستیار معامله گر...
ما را در سایت کتاب دستیار معامله گر دنبال می کنید

برچسب : نویسنده : عزت‌الله انتظامی بازدید : 69 تاريخ : دوشنبه 29 اسفند 1401 ساعت: 13:47