۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

۱۱ روش شگفت‌انگیز که توسعه‌دهندگان از Wasm استفاده می‌کنند

با Wasm چه کاری می توانید انجام دهید؟ لیست همچنان در حال رشد است. در اینجا برخی از بهترین روش هایی که امروزه توسعه دهندگان از WebAssembly استفاده می کنند آورده شده است.

با Wasm چه کاری می توانید انجام دهید؟ لیست همچنان در حال رشد است. در اینجا برخی از بهترین روش هایی که امروزه توسعه دهندگان از WebAssembly استفاده می کنند آورده شده است.

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

جاوا، جاوا اسکریپت و CSS همه اینها را تغییر دادند. فقط اضافه کردن مقداری عملکرد کامل تورینگ کافی بود، و برنامه نویسان باهوش راه هایی برای کپی کردن پیدا کردند. واژه‌پردازها، بازی‌ها و موارد دیگر در داخل جایی که زمانی محفظه‌ای برای کلمات و تصاویر ثابت بود.

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

اما داستان به همین جا ختم نمی شود. توسعه دهندگان در حال یافتن راه هایی برای انجام کارهای بیشتر با WebAssembly از ارائه صفحات وب متحرک و افزودن فایل فشرده به تبلیغات هستند. WebAssembly یا Wasm یک فناوری بنیادی است که در ابزارها و زیرساخت ها در بالا و پایین همه پشته ها جایگاهی دارد. در اینجا برخی از جالب‌ترین نمونه‌های اخیری که پیدا کرده‌ایم آمده است.

۱۱ مورد استفاده جدید برای WebAssembly 

لیست راه حل های هوشمندانه همچنان در حال افزایش است. به آرامی شروع شد، اما اکنون صدها برنامه شگفت‌انگیز برای WebAssembly وجود دارد. شاید یکی از اینها الهام بخش پروژه بعدی شما باشد:

  • برنامه های کاربردی
  • رمزگشایی گفتار
  • قوانین مدولاریت
  • نوت بوک Wasm
  • تحلیل داده
  • بازی‌های ویدیویی قدیمی
  • به عنوان یک سرویس عمل می کند
  • پایگاههای اطلاعاتی بزرگتر و نزدیکتر
  • نقف کردن در پایگاه داده
  • پیشرفت هوش
  • افزونه ها در همه جا

انکور برنامه‌ها

آیا تا به حال شنیده اید که کسی نسبت به روزهایی که کد جاوا به عنوان اپلت در مرورگر شما اجرا می شد، نوستالژیک شود؟ احتمالا نه. این قابلیت بومی هرگز ارائه نشد و تقریباً سالها پیش ناپدید شد. اما اکنون می‌توانید با CheerpJ، نسخه‌ای از ، جادو را دوباره به دست آورید. JVM در WebAssembly کامپایل شده است. مانند بازگشت به گذشته و تماشای ماتریکس یا ویل هانتینگ خوب، اما بدون هیچ‌کدام از دردسرهای دهه ۹۰ مانند اینکه نوار VHS را قبل از بازگرداندن آن به عقب برگردانید.< /p>

چگونه WebAssembly محاسبات لبه را تغییر می دهد

رمزگشایی گفتار

اگر فکر می کنید که مرورگر فقط برای کد اسباب بازی است، Ermine AI مثال خوبی است. چگونه توسعه دهندگان Wasm به چنین محدودیت های قدیمی اهمیت نمی دهند. این ابزار یک مدل هوش مصنوعی کامل را برای تشخیص گفتار جمع‌آوری می‌کند که به صورت محلی اجرا می‌شود، احتمالاً در بین لحظاتی که بقیه کد مرورگر در حال سرویس‌دهی برخی از برچسب‌های قدیمی هستند. صفحه وب مدل هشدار می دهد که راه اندازی ممکن است کمی کند باشد زیرا دانلود همه چیز به زمان نیاز دارد.

قوانین مدولاریت

مطمئناً، کانتینرها برای استقرار نرم‌افزار در سرورها عالی هستند، اما در مورد مکان‌های دیگر چطور؟ Container2Wasm هنوز یک آزمایش است، اما همه فایل‌های شما را به یک Wasm blob تبدیل می‌کند که می‌تواند در هر جایی اجرا شود که قابل اجرا باشد. باینری های WebAssembly. اگر کد برای شبیه‌سازی به کمک نیاز دارد، ابزار در شبیه‌ساز سمت راست x86 یا RISK-V نیز قرار می‌گیرد.

نوت بوک Wasm

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

پیکربندی نوت بوک معمولاً برای محاسبه به سرور متکی است. از دیدگاه سرپرست، این به معنای راه‌اندازی آن و اطمینان از اجرای Python است. اکنون، ابزارهای مبتنی بر Wasm مانند Marimo و اسفینکس با اجازه دادن به شما برای اجرای کد پایتون مستقیماً در مرورگر، کار را آسان‌تر می‌کند. تنها چیزی که نیاز دارید یک نسخه Wasm از Python است، Pyodide. پیکربندی سرور بسیار ساده تر است و نیازی به انجام محاسبات همه برای آنها نیست.

تحلیل داده

کار دیگری که دانشمندان داده دوست دارند انجام دهند این است که از R برای تجزیه و تحلیل داده های خود استفاده کنند و سپس از ابزارهایی مانند Sweve برای قالب بندی آن ها استفاده کنند. معمولاً این به معنای نصب R در دستگاه محلی یا سرور است. اکنون ابزارهای مبتنی بر Wasm مانند WebR و R-universe آن کد R را مستقیماً به Wasm تبدیل کنید، بنابراین درست در مرورگر اجرا می شود. هر کسی که تجزیه و تحلیل شما را می خواند می تواند کد R شما را بدون نصب زبان یا نیاز به اطمینان از در دسترس بودن نسخه مناسب اجرا کند.

بازی‌های ویدیویی قدیمی

همه بازی های دوران جوانی از دست رفته خود را به یاد می آورند. خبر خوب این است که شما هنوز هم می‌توانید تمام تعطیلات آخر هفته را با اجرای این آثار کلاسیک از دست بدهید، همه اینها بدون زحمت تلاش برای کامپایل کردن کدهای قدیمی C یا پاسکال است. پروژه‌هایی مانند Wasm-4 تضمین می‌کنند که همه شبیه‌سازهای پرواز و بازی‌های ماجراجویی قدیمی‌تان درست در مرورگر شما فعال هستند. چه کسی قلمروهای دوبعدی ترسیم شده با گرافیک های ۸ بیتی یا وایرفریم را دوست ندارد؟

به عنوان یک سرویس عمل می کند

بسیاری از سرویس‌های ابری اصلی که از سرویس‌های میکرو و راه‌حل‌های به اصطلاح بدون سرور پشتیبانی می‌کنند، طبیعتاً علاقه‌مند به پشتیبانی از Wasm هستند. این یک راه ایده‌آل برای بسته‌بندی مقدار کمی از کد است که می‌تواند به سرعت راه‌اندازی شود، زیرا نزدیک به کامپایل شدن کامل است. ارائه دهندگان ابر مانند Fermyon، Cloudflare و  Wasmer از ماژول های WebAssembly به روش های مختلف پشتیبانی می کند. . سایر ارائه دهندگان ماژول ها را با ابزارهایی مانند WasmEdge ترکیب می کنند و آنها را با استفاده از ویژگی های Node Runtime< اجرا می کنند. /a> برای فعال کردن کد WebAssembly.

پایگاه‌های اطلاعاتی بزرگ‌تر و نزدیک‌تر

در مدل سنتی، پایگاه داده یک فرآیند مقدس است که در یک ماشین مجزا اجرا می‌شود—ترجیحاً در فضای مجازی محافظت‌شده خود در برخی از شرکت‌های زرهی. این ممکن است همچنان واقعیتی باشد که ما می دانیم، اما توسعه دهندگان شروع به تعجب متفاوت کرده اند. چرا یک پایگاه داده کامل و پر از ویژگی را در یک مرورگر جابجا نکنید تا کد بتواند از همه ویژگی ها استفاده کند؟ مطمئناً، W3 سیستم‌هایی با ارزش کلید مانند WebStorage API یا مدل های سریع تر و عمیق تر مانند IndexedDB، اما هر دو < a href="https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria" rel="nofollow">محدود. پروژه هایی مانند PGLite، DuckDB و SQLite 3 آماده ذخیره مجموعه های بسیار بزرگتری از داده ها و تجزیه و تحلیل آنها با طیف بسیار بیشتری از توابع SQL هستند. آنها سریع‌تر هستند و همچنین APIهای سطح پایین‌تری ارائه می‌دهند تا بتوانید آنها را به پروژه‌های Wasm دیگر پیوند دهید.

نقف کردن در پایگاه داده

Wasm فقط یک مکانیسم تحویل برای افزودن پایگاه داده های بزرگتر و توانمندتر به صفحات وب شما نیست. برخی از توسعه دهندگان این دیدگاه را معکوس می کنند و کد Wasm را داخل پایگاه های داده برای اضافه کردن توابع تعریف شده توسط کاربر (UDF) تعبیه می کنند. به عنوان مثال، SingleStore به توسعه دهندگان اجازه می دهد هر دو UDF و پسرعموهایشان، توابع با ارزش جدول. سایر ابزارهای جریان داده مانند InfinyOn و Redpanda به شما این امکان را می دهد که اطلاعات را با استفاده از توابع Wasm هنگام عبور از سیستم تغییر دهید. Wasm ممکن است در نهایت قالب غالب برای جاسازی توانایی‌های محاسباتی جدید در هر کجا که داده‌ها ذخیره می‌شوند، باشد.

پیشرفت هوش

در حالی که WebAssembly ممکن است برای جاسازی عمیق در داخل LLMs یا شبکه‌های عصبی که بخشی از AI مولد هستند مناسب نباشد، یعنی جایی در پشته ندارد. به عنوان مثال، WasmEdge دارای دو سیستم پلاگین برای TensorFlow است (اینجا و اینجا) و یکی برای PyTorch، بنابراین کد شما می تواند به خوبی با محاسبات هوش مصنوعی تعامل داشته باشد. Dylibso با اتصال هوش مصنوعی مانند ChatGPT با ماژول های Extism آزمایش داشته است. به عبارت دیگر، Wasm می تواند ابزاری باشد که برای چسباندن کد خود با هوش مصنوعی به آن نیاز دارید.

افزونه ها در همه جا

WebAssembly فقط برای پایگاه داده یا هوش مصنوعی نیست. بسیاری از بسته‌های نرم‌افزاری می‌خواهند کار کاربران نهایی را برای افزودن کمی قابلیت برای گسترش مجموعه ویژگی‌های پیش‌فرض آسان کنند. این به معنای توسعه یک API است که کد جدید را قادر می سازد بدون ایجاد حفره های امنیتی یا از بین بردن کارایی، با کدهای قدیمی ترکیب شود. به نظر می رسد Wasm یک سیستم بسیار خوب برای انجام این کار است، زیرا برای انجام کمابیش همین کار با صفحات وب طراحی شده است. امنیت، اختصار و کارایی آن به خوبی مهندسی شده است.

بسیاری از بسته های نرم افزاری در حال حاضر این را ارائه می دهند. یک مرور سریع آنها را در همه جا از Apache پیدا می کند پروژه‌ها به  Zendesk انتقال داده. برنامه نویسان برای پشتیبانی از همه زبان های اصلی و برخی که چندان رایج نیستند، به ابزارهای پایه مانند Extism متکی هستند. SDK ها و کتابخانه های PDK. Wasmi گزینه دیگری است که بر روی سیستم‌های محدود یا جاسازی شده تمرکز می‌کند. هنگامی که زمان تولید اتصالات فرا می رسد، برنامه نویسان به fp-bindgen، wasm-bindgen، یا wit-bindgen برای انجام کار اسکوت.

نتیجه گیری

آیا محدودیتی برای کارهایی که می توانید با WebAssembly انجام دهید وجود دارد؟ نه واقعا. این تقریباً نکته است. Wasm درها را باز می کند تا کاربران بتوانند آنچه را که می خواهند از نرم افزار بدست آورند. ماژولار بودن آن سریع، قدرتمند و فراگیر است.