مقالات

5.1: مقدمة للوظائف


5.1: مقدمة للوظائف

الدرس 5.1: مقدمة في الهندسة المعمارية بدون خادم في Azure

في السنوات القليلة الماضية ، أصبح مفهوم الحوسبة بدون خادم أكثر بروزًا ، ولكن ماذا يعني ذلك في الواقع؟ من الواضح أن هناك خوادم في كود التشغيل السحابي لتنفيذ تطبيق الويب أو الخدمة الخاصة بنا. ولكن مع تطبيقات السحابة بدون خادم ، نحرر المطورين من إدارة البنية التحتية ونسمح لموفري الخدمات السحابية بإدارة وتوسيع نطاق الخدمة اعتمادًا على حركة المرور الخاصة بها.

في مقال على موقع MartinFowler.com ، يقدمون هذا التعريف:

البنى بدون خادم هي تصميمات تطبيقات تتضمن خدمات "Backend as a Service" (BaaS) من جهات خارجية ، و / أو التي تتضمن تعليمات برمجية مخصصة يتم تشغيلها في حاويات مُدارة سريعة الزوال على نظام "Functions as a Service" (FaaS). باستخدام هذه الأفكار ، والأفكار ذات الصلة مثل التطبيقات أحادية الصفحة ، تزيل هذه البنى الكثير من الحاجة إلى مكون خادم تقليدي دائم التشغيل. قد تستفيد البنى بدون خادم من التكلفة التشغيلية المنخفضة بشكل كبير ، والتعقيد ، والمهلة الهندسية ، بتكلفة زيادة الاعتماد على تبعيات البائعين وخدمات الدعم غير الناضجة نسبيًا.

في Azure ، المصطلح بدون خادم له معنيان متميزان لكنهما مرتبطان:

  • الخلفية كخدمة (BaaS). توفر الخدمات السحابية الخلفية ، مثل قواعد البيانات والتخزين ، واجهات برمجة التطبيقات التي تمكن تطبيقات العميل من الاتصال مباشرة بهذه الخدمات. لكنهم لا يحتاجون إلى إدارة تكوين هذه الأنظمة أو تشغيلها.
  • وظائف كخدمة (FaaS). في هذا النموذج ، تعد & # 8220function & # 8221 جزءًا من التعليمات البرمجية التي يتم نشرها في السحابة ويتم تشغيلها داخل بيئة استضافة تقوم بتجريد الخوادم التي تقوم بتشغيل الكود تمامًا.

يشترك كلا التعريفين في فكرة أن المطورين وموظفي DevOps لا يحتاجون إلى نشر أو تكوين أو إدارة أو توسيع الخوادم على أساس منتظم. بعض الخصائص الهامة الإضافية هي:

  1. يتم تخصيص موارد الحساب ديناميكيًا حسب الحاجة بواسطة النظام الأساسي.
  2. التسعير المستند إلى الاستهلاك: يتم محاسبتك فقط على موارد الحساب المستخدمة لتنفيذ التعليمات البرمجية الخاصة بك.
  3. مقياس موارد الحوسبة حسب الطلب بناءً على حركة المرور ، دون حاجة المطور للقيام بأي تكوين.

تتمثل فوائد التكلفة لهذه البنية الخالية من الخوادم في أننا ندفع فقط مقابل الموارد التي نستخدمها. نحن لا نحتفظ بالخوادم (في شكل أجهزة IaaS الافتراضية) أو السعة (كما هو الحال في Cloud Service AppPlans) بناءً على ما نقدر أننا سنحتاجه.

في البنى القائمة على الخادم ، يحتاج المطورون إلى أن يكونوا مدركين تمامًا للبنية التحتية للخادم ويحتاجون إلى تخطيط وإدارة توسيع نطاق تلك الخوادم. من خلال طلب الحد الأدنى من السعة ، يتم إهدار دورات عند عدم استخدام جميع الموارد & # 8217t. في واقع الأمر ، قد يخطط المطورون لسعة أعلى مما يتعين عليهم فعلاً توفير مساحة للنمو ، لذا فهم ينفقون أكثر مما هو مطلوب لتكاليف استضافة Azure. ومع ذلك ، فإن IaaS و PaaS هما أكثر نماذج البرمجة شيوعًا لمعظم المطورين.

بالنسبة لعميل اللعبة لدينا ، يتم تشغيل Blazor ومنطق اللعبة فعليًا على العميل ، لذا فهو & # 8217s باستخدام قوة حوسبة الجهاز & # 8217s. وتتقاضى وظائف Azure رسومًا عن الوقت والذاكرة اللازمين لمعالجة كل طلب. لذلك نحن لا نواجه أبدًا حالة نهدر فيها موارد حسابية لا نستخدمها.

وهذا يجعل بيئة إدارة ونشر فعالة من حيث التكلفة.


5.2 تركيب دالة بايثون

يشار إلى وظائف بايثون بالاسم (تقنيًا هي قيم مثل أي متغير آخر). كما هو الحال في العديد من لغات البرمجة ، نحن مكالمة دالة عن طريق كتابة اسم الوظيفة متبوعًا على الفور (بدون مسافة) بأقواس (). داخل الأقواس ، نضع الحجج (المدخلات) إلى الوظيفة مفصولة بفواصل. وهكذا تبدو وظائف الكمبيوتر تمامًا مثل الوظائف الرياضية ، ولكن بأسماء أطول من f ().

  • ملحوظة: للإبقاء على الدوال والمتغيرات مميزة ، نحاول دائمًا تضمين أقواس فارغة () عند الإشارة إلى اسم دالة. هذا لا ليس يعني أن الوظيفة لا تأخذ أي حجج ، إنها مجرد اختصار مفيد للإشارة إلى أن شيئًا ما هو وظيفة وليس متغيرًا.

يمكن تمرير بعض الدوال (مثل min () أو print ()) بأي عدد تريده من الوسائط: سيجد min () الحد الأدنى من الكل الحجج ، والطباعة () ستطبع الكل الوسيطات (بالترتيب) مفصولة بمسافات:

إلى جانب أمر الحجج الموضعية، وظائف قد تأخذ أيضا وسيطات الكلمات الرئيسية، وهي وسيطات لمدخلات دالة محددة. هذه مكتوبة مثل التخصيصات المتغيرة (باستخدام = ، على الرغم من عدم وجود مسافات حولها) ، ولكن ضمن قائمة معلمات الوظيفة:

تكون وسيطات الكلمات الرئيسية اختيارية دائمًا (لها قيم "افتراضية" ، مثل كيفية تعيين الفاصل لـ print () افتراضيًا على مسافة واحدة ''). يتم تحديد القيم الافتراضية في وثائق الوظيفة (على سبيل المثال ، للطباعة ()).

إذا اتصلت بأي من هذه الوظائف بشكل تفاعلي (على سبيل المثال ، في غلاف تفاعلي أو دفتر ملاحظات Jupyter) ، فستعرض Python تم إرجاع القيمة. ومع ذلك ، فإن الكمبيوتر غير قادر على "قراءة" ما هو مكتوب على وحدة التحكم أو خلية الإخراج — وهذا ليتمكن البشر من عرضه! إذا أردنا أن يكون الكمبيوتر قادرًا على ذلك استعمال قيمة تم إرجاعها ، سنحتاج إلى إعطاء هذه القيمة اسمًا حتى يتمكن الكمبيوتر من الرجوع إليها. أي أننا نحتاج إلى تخزين القيمة المُعادة في متغير:

5.2.1 طرق الكائن

في Python ، تكون جميع قيم البيانات شاء، وهي مجموعات من البيانات (تسمى صفات) والسلوكيات - أي معلومات عن القيم و المهام التي يمكن تطبيقها على تلك البيانات. على سبيل المثال ، قد يكون لكائن الشخص اسم (على سبيل المثال ، "Ada") وبعض السلوك الذي يمكنه القيام به لتلك البيانات (على سبيل المثال ، say_name ()). تُعرف أيضًا الوظائف التي يتم تطبيقها على بيانات الكائن باسم أساليب. نقول أن الطريقة يدعوه هذا الكائن.

بينما سنناقش الكائنات بمزيد من التفصيل لاحقًا ، في الوقت الحالي تحتاج فقط إلى فهم أن بعض الوظائف يتم استدعاؤها على قيم معينة. يتم ذلك باستخدام ملفات تدوين النقطة: تكتب اسم المتغير الذي ترغب في استدعاء الطريقة عليه (أي تطبيق الوظيفة عليه) ، متبوعًا بنقطة (نقطة) . ، متبوعًا باسم الطريقة والوسيطات:

هذه طريقة شائعة لاستخدام وظائف بايثون المدمجة.

  • لاحظ أن تدوين النقطة يستخدم أيضًا للوصول إلى ملف صفات أو الخصائص من كائن. لذلك إذا كان كائن الشخص لديه سمة الاسم ، فيمكنك الإشارة إليه على أنه اسم _ الشخص. بهذا المعنى ، يمكنك التفكير في ملف عامل نقطة على أنه مثل المالك في اللغة الإنجليزية: يشير the_person.name إلى " الشخص اسم"، وسيشير the_person.say_name () إلى" الشخص say_name () الإجراء”.

وظائف رياضية

تحتوي MATLAB على جميع الوظائف الرياضية المعتادة الموجودة في الآلة الحاسبة العلمية بما في ذلك الجذر التربيعي واللوغاريتم والجيب.

تُرجع الرقم 3.1416. للعثور على جيب الزاوية ، اكتب

الحجج في الدوال المثلثية بوحدات الراديان. اضرب الدرجات في pi / 180 لتحصل على الراديان. على سبيل المثال ، لحساب sin (90) ، اكتب

تُرجع اللوغاريتم الطبيعي للقيمة. للعثور على ln 10 ، اكتب log (10) واضغط على Enter ، (ans = 2.3026).

تدرب على الأمثلة التالية لتتعرف على الوظائف الرياضية الشائعة. تأكد من قراءة صفحات المساعدة والمستندات ذات الصلة للوظائف التي لا تشرح نفسها بنفسها.

احسب الكميات التالية:

مدخلات ومخرجات MATLAB هي كما يلي:

1. ( frac <2 ^ <3>> <3 ^ <2> -1> ) يتم إدخالها عن طريق كتابة 2 ^ 3 / (3 ^ 2-1) (ans = 1)

2. (5 ^ <0.5> -1 ) يتم إدخالها بكتابة sqrt (5) -1 (ans = 1.2361)

3. يتم إدخال ( frac < pi> <4> d ^ <2> ) من أجل (d = 2 ) عن طريق كتابة pi / 4 * 2 ^ 2 (ans = 3.1416)

احسب الكميات الأسية واللوغاريتمية التالية:

مدخلات ومخرجات MATLAB هي كما يلي:

احسب الكميات المثلثية التالية:

مدخلات ومخرجات MATLAB هي كما يلي:


جافا سكريبت

نحن دائمًا (نعم ، دائمًا & mdashlaziness يولد أمانًا ضعيفًا في عالمنا) نريد أن نلقي نظرة على أي شيء يقدمه لنا المستخدم قبل أن نتفاعل معه. هذا لسببين: أولاً ، ربما يكون المستخدم قد ارتكب خطأ. ربما أخطأوا في كتابة عنوان بريد إلكتروني ، أو تركوا حقلاً مطلوبًا فارغًا. أو ربما يكون المستخدم شخصًا ضارًا أو برنامج نصي يحاول القيام بشيء آخر غير ما ننوي الوصول إليه من خلال الوصول إلى موقعنا. قد تستخدم نماذجنا لإرسال رسائل غير مرغوب فيها للآخرين أو الوصول إلى بياناتنا أو إجراء تغييرات غير مرغوب فيها على موقعنا. لقد ناقشنا هذا بالفعل في PHP ولكن يمكننا مهاجمة مشكلة JavaScript أيضًا.

مع أخذ ذلك في الاعتبار ، قبل استخدام أي شيء قدمه لنا المستخدم ، نحتاج إلى التأكد (قدر الإمكان) من أنها بيانات آمنة للتفاعل معها. عادةً ما نرغب في القيام بأكبر قدر ممكن من هذا على جانب المستخدم (أو العميل) ، لذلك لا يحتاجون إلى النقر فوق إرسال وانتظار استجابة من الخادم لمعرفة أن شيئًا ما ليس صحيحًا تمامًا. للقيام بذلك ، يمكننا استخدام البرمجة النصية من جانب العميل مثل JavaScript للتأكد من أن الأمور على ما يرام أثناء تقدمنا. عند تغيير الحقول ، يمكن لـ JavaScript الاطلاع على المحتوى والتأكد من تنسيق العناوين بشكل صحيح وملء الحقول المطلوبة وما إلى ذلك. تلوين أو تمييز أو تقديم رسائل للمستخدم عند حدوث مشكلات. يمكننا تحقيق ذلك بسهولة من خلال النقر على مكتبة التحقق من صحة jQuery & rsquos:

  1. & ltscript src = & quot / lib / js / jquery.validate.js & quot & gt & lt / script & gt
  2. & ltscript & GT
  3. $ (document) .ready (function () <$ (& quot # commentForm & quot) .validate (
  4. cname:
  5. )>
  6. )
  7. & lt / النصي & GT

سينفذ هذا المثال عملية التحقق بمجرد تحميل النموذج ، موضحًا أن حقل cname مطلوب وأن الحد الأدنى للطول هو حرفان. لا يمكن لـ jQuery مساعدتنا فقط في عرض هذه المتطلبات على النموذج نفسه ، بل يمكننا استدعاء المدقق عند تغيير الحقول و / أو عند إرسال النموذج قبل مغادرة الصفحة لفرض القواعد التي قدمناها.

فيما يتعلق بتجربة المستخدم ، يتم ذلك عادةً في الوقت الفعلي. بمجرد أن يغادر المستخدم حقلاً ، يتأكد البرنامج النصي من أنه على ما يرام ، ويقدم تأكيدًا للحقيقة (عادةً ما يكون تمييزًا أخضر أو ​​نوع العلامة & ldquoOK! & rdquo) أو عن طريق عدم وضع علامة على الحقل على أنه سيئ (عادةً ما يكون أحمر ، أو المطالبة المستخدم لإعادة إدخال الحقل).

بمجرد اكتمال النموذج ، يجب أن تتأكد JavaScript من أن إرسال المستخدم & rsquos سيكون جيدًا في المحاولة الأولى (على الأقل محتوى الحكمة و mdash لا يمكننا تأكيد أشياء مثل اسم المستخدم وكلمة المرور دون التحدث إلى الخادم). هذا يفسر قلقنا الأول: أخطاء من المستخدم. على الرغم من أننا تحققنا من الإرسال ، إلا أننا نريد تكرار هذه العملية على جانب الخادم بمزيد من العمق. إذا كان المستخدم ضارًا ، فقد يتحايل على صفحتنا ، أو ربما يكون المستخدم قد عطّل جافا سكريبت.

يجب أن يأخذ البرنامج النصي من جانب الخادم في الاعتبار المستخدم الشرير. إذا حاول شخص ما تخريب نموذجنا ، فمن المحتمل أن جافا سكريبت قد اكتشفت ذلك. ومع ذلك ، إذا كنا نستخدم GET أو يستخدمون برنامجًا نصيًا لإرسال البيانات مباشرة إلى صفحة الإجراء الخاصة بنا من نموذجنا (الذي يمكنهم العثور عليه بسهولة في مصدر صفحتنا) ، فيمكنهم الالتفاف حول JavaScript.


19.5 حجج الوظيفة

تنقسم الحجج الخاصة بوظيفة ما عادةً إلى مجموعتين عريضتين: مجموعة واحدة توفر الامتداد بيانات لحسابها ، وحجج الإمدادات الأخرى التي تتحكم في تفاصيل من الحساب. على سبيل المثال:

في السجل () ، البيانات هي x ، والتفاصيل هي أساس اللوغاريتم.

في المتوسط ​​() ، البيانات هي x ، والتفاصيل هي مقدار البيانات المراد اقتطاعها من النهايات (القطع) وكيفية التعامل مع القيم المفقودة (na.rm).

في t.test () ، البيانات هي x و y ، وتفاصيل الاختبار تكون بديلة ، mu ، زوجية ، var.equal ، و conf.level.

في str_c () يمكنك تزويد أي عدد من السلاسل. ، ويتم التحكم في تفاصيل التسلسل بفصل وانهيار.

بشكل عام ، يجب أن تأتي الحجج المتعلقة بالبيانات أولاً. يجب أن تستمر الوسيطات التفصيلية في النهاية ، ويجب أن تحتوي عادةً على قيم افتراضية. أنت تحدد قيمة افتراضية بنفس الطريقة التي تستدعي بها دالة ذات وسيطة مسماة:

يجب أن تكون القيمة الافتراضية هي القيمة الأكثر شيوعًا دائمًا. الاستثناءات القليلة لهذه القاعدة تتعلق بالسلامة. على سبيل المثال ، من المنطقي أن تقوم na.rm بالتخلف عن القيمة FALSE لأن القيم المفقودة مهمة. على الرغم من أن na.rm = TRUE هي ما تضعه عادةً في شفرتك ، إلا أنها فكرة سيئة أن تتجاهل بصمت القيم المفقودة افتراضيًا.

عندما تستدعي دالة ، فإنك تحذف عادةً أسماء وسيطات البيانات ، لأنها شائعة الاستخدام. إذا تجاوزت القيمة الافتراضية لوسيطة التفاصيل ، فيجب عليك استخدام الاسم الكامل:

يمكنك الرجوع إلى وسيطة من خلال بادئتها الفريدة (على سبيل المثال ، الوسيط (x، n = TRUE)) ، ولكن من الأفضل تجنب هذا بشكل عام نظرًا لاحتمالات حدوث ارتباك.

لاحظ أنه عند استدعاء دالة ، يجب أن تضع مسافة حول = في استدعاءات الوظيفة ، وأن تضع دائمًا مسافة بعد فاصلة ، وليس قبلها (تمامًا كما هو الحال في اللغة الإنجليزية العادية). يجعل استخدام المسافات البيضاء من السهل تخطي الوظيفة للمكونات المهمة.

19.5.1 اختيار الأسماء

أسماء الحجج مهمة أيضًا. R لا يهتم ، لكن قراء شفرتك (بما في ذلك أنت في المستقبل!) سيفعلون. بشكل عام ، يجب أن تفضل الأسماء الأطول والأكثر وصفًا ، ولكن هناك عدد قليل من الأسماء الشائعة جدًا والقصيرة جدًا. يجدر حفظ هذه:

  • س ، ص ، ض: نواقل.
  • w: متجه للأوزان.
  • df: إطار بيانات.
  • i، j: مؤشرات رقمية (عادة الصفوف والأعمدة).
  • n: طول أو عدد الصفوف.
  • p: عدد الأعمدة.

خلافًا لذلك ، ضع في اعتبارك مطابقة أسماء الوسائط في دالات R الحالية. على سبيل المثال ، استخدم na.rm لتحديد ما إذا كان يجب إزالة القيم المفقودة.

19.5.2 فحص القيم

عندما تبدأ في كتابة المزيد من الوظائف ، ستصل في النهاية إلى النقطة التي لا تتذكر فيها بالضبط كيف تعمل وظيفتك. في هذه المرحلة ، من السهل استدعاء وظيفتك بمدخلات غير صالحة. لتجنب هذه المشكلة ، من المفيد غالبًا توضيح القيود. على سبيل المثال ، تخيل أنك كتبت بعض الوظائف لحساب إحصائيات الملخص المرجحة:

ماذا يحدث إذا لم يكن x و w بنفس الطول؟

في هذه الحالة ، نظرًا لقواعد إعادة التدوير الخاصة بشركة R ، فإننا لا نحصل على خطأ.

من الممارسات الجيدة التحقق من الشروط المسبقة المهمة ، وإلقاء خطأ (مع علامة التوقف ()) ، إذا لم تكن صحيحة:

احرص على عدم المبالغة في هذا الأمر. هناك مفاضلة بين مقدار الوقت الذي تقضيه في جعل وظيفتك قوية ، مقابل المدة التي تقضيها في كتابتها. على سبيل المثال ، إذا أضفت أيضًا وسيطة na.rm ، فمن المحتمل ألا أتحقق منها بعناية:

هذا كثير من العمل الإضافي لتحقيق مكاسب إضافية قليلة. حل وسط مفيد هو stopifnot () المدمج: فهو يتحقق من أن كل وسيطة هي TRUE ، وينتج رسالة خطأ عامة إذا لم يكن كذلك.

لاحظ أنه عند استخدام stopifnot () فإنك تؤكد ما يجب أن يكون صحيحًا بدلاً من التحقق مما قد يكون خطأ.

19.5.3 نقطة نقطة (...)

تأخذ العديد من الوظائف في R عددًا عشوائيًا من المدخلات:

كيف تعمل هذه الوظائف؟ يعتمدون على حجة خاصة:. (وضوحا نقطة نقطة). تلتقط هذه الوسيطة الخاصة أي عدد من الحجج غير المتطابقة.

إنه مفيد لأنه يمكنك بعد ذلك إرسالها. إلى وظيفة أخرى. يعد هذا أمرًا مفيدًا إذا كانت وظيفتك تلتف بشكل أساسي بوظيفة أخرى. على سبيل المثال ، عادةً ما أقوم بإنشاء هذه الوظائف المساعدة التي تلتف حول str_c ():

هنا . يتيح لي إعادة توجيه أي حجج لا أريد التعامل معها من أجل str_c (). إنها تقنية مريحة للغاية. لكنها تأتي بثمن: أي حجج بها أخطاء إملائية لن تثير خطأ. هذا يجعل من السهل على الأخطاء الإملائية أن تمر دون أن يلاحظها أحد:

إذا كنت تريد فقط التقاط قيم ملف. ، استخدم قائمة (.).

19.5.4 التقييم الكسول

يتم تقييم الحجج في R بشكل كسول: لا يتم حسابها حتى يتم الاحتياج إليها. هذا يعني أنه إذا لم يتم استخدامها مطلقًا ، فلن يتم الاتصال بها مطلقًا. هذه خاصية مهمة لـ R كلغة برمجة ، ولكنها ليست مهمة بشكل عام عندما تكتب وظائفك الخاصة لتحليل البيانات. يمكنك قراءة المزيد عن التقييم البطيء على http://adv-r.had.co.nz/Functions.html#lazy-evaluation.

19.5.5 تمارين

ماذا تفعل الفواصل (الحروف ، الانهيار = "-")؟ لماذا ا؟

سيكون من الجيد أن تقدم عدة أحرف إلى وسيطة اللوحة ، على سبيل المثال القاعدة ("العنوان" ، لوحة = "- +"). لماذا لا يعمل هذا حاليا؟ كيف يمكنك اصلاحها؟

ماذا تعني حجة القطع التي تعني () أن تفعل؟ متى يمكنك استخدامه؟

القيمة الافتراضية لوسيطة الطريقة لـ cor () هي c ("بيرسون" ، "كيندال" ، "سبيرمان"). ماذا يعني ذلك؟ ما هي القيمة المستخدمة بشكل افتراضي؟


تقديم وظائف CloudFront - قم بتشغيل التعليمات البرمجية الخاصة بك على حافة الهاوية مع زمن انتقال منخفض على أي مقياس

باستخدام Amazon CloudFront ، يمكنك توفير البيانات ومقاطع الفيديو والتطبيقات وواجهات برمجة التطبيقات بشكل آمن لعملائك على مستوى العالم بزمن انتقال منخفض وسرعات نقل عالية. لتقديم تجربة مخصصة وأقل زمن انتقال ممكن ، تنفذ العديد من التطبيقات الحديثة شكلاً من أشكال المنطق على الحافة. يمكن تجميع حالات الاستخدام لتطبيق المنطق على الحافة معًا في فئتين رئيسيتين:

  • أولاً ، العمليات المعقدة والمثقلة بالحسابات التي يتم تنفيذها عندما لا تكون الكائنات في ذاكرة التخزين المؤقت. أطلقنا Lambda @ Edge في عام 2017 لتقديم بيئة حوسبة حافة بدون خادم قابلة للبرمجة بالكامل لتنفيذ مجموعة متنوعة من التخصيصات المعقدة. يتم تنفيذ وظائف Lambda @ Edge في ذاكرة تخزين مؤقت إقليمية (عادةً في منطقة AWS الأقرب إلى موقع حافة CloudFront الذي وصل إليه العميل). على سبيل المثال ، عندما تقوم ببث فيديو أو صوت ، يمكنك استخدام Lambda @ Edge لإنشاء وخدمة المقاطع الصحيحة أثناء التنقل مما يقلل من الحاجة إلى قابلية التوسع الأصلية. حالة الاستخدام الشائعة الأخرى هي استخدام Lambda @ Edge و Amazon DynamoDB لترجمة عناوين URL المختصرة سهلة الاستخدام إلى صفحات مقصودة كاملة لعناوين URL.
  • الفئة الثانية من حالات الاستخدام هي عمليات طلب / استجابة بسيطة لـ HTTP (s) يمكن تنفيذها بواسطة وظائف قصيرة العمر للغاية. بالنسبة لحالات الاستخدام هذه ، فأنت بحاجة إلى تجربة برمجة مرنة مع الأداء والحجم والفعالية من حيث التكلفة التي تمكنك من تنفيذها عند كل طلب.

لمساعدتك في هذه الفئة الثانية من حالات الاستخدام ، يسعدني الإعلان عن توفر وظائف CloudFront، منصة برمجة نصية جديدة بدون خادم تتيح لك تشغيل كود JavaScript خفيف الوزن في 218+ مواقع حافة CloudFront بسعر 1/6 تقريبًا من سعر Lambda @ Edge.

وظائف CloudFront مثالية للمعالجة الخفيفة لطلبات الويب ، على سبيل المثال:

  • التلاعب في ذاكرة التخزين المؤقت والتطبيع: تحويل سمات طلب HTTP (مثل عنوان URL ، والعناوين ، وملفات تعريف الارتباط ، وسلاسل الاستعلام) لإنشاء مفتاح ذاكرة التخزين المؤقت ، وهو المعرف الفريد للكائنات الموجودة في ذاكرة التخزين المؤقت ويستخدم لتحديد ما إذا كان الكائن قد تم تخزينه مؤقتًا بالفعل. على سبيل المثال ، يمكنك التخزين المؤقت استنادًا إلى رأس يحتوي على نوع جهاز المستخدم النهائي ، مما يؤدي إلى إنشاء نسختين مختلفتين من المحتوى لمستخدمي الجوّال وسطح المكتب. من خلال تحويل سمات الطلب ، يمكنك أيضًا تسوية طلبات متعددة إلى إدخال واحد لمفتاح ذاكرة التخزين المؤقت وتحسين نسبة عدد مرات الدخول إلى ذاكرة التخزين المؤقت بشكل ملحوظ.
  • URL يعيد كتابة وإعادة التوجيه: قم بإنشاء استجابة لإعادة توجيه الطلبات إلى عنوان URL مختلف. على سبيل المثال ، أعد توجيه مستخدم غير مصدق عليه من صفحة مقيدة إلى نموذج تسجيل دخول. يمكن أيضًا استخدام عمليات إعادة كتابة عناوين URL لاختبار A / B.
  • معالجة رأس HTTP: عرض أو إضافة أو تعديل أو حذف أي من رؤوس الطلبات / الاستجابة. على سبيل المثال ، أضف رؤوس HTTP Strict Transport Security (HSTS) إلى استجابتك ، أو انسخ عنوان IP للعميل في رأس HTTP جديد بحيث تتم إعادة توجيهه إلى الأصل مع الطلب.
  • إذن الوصول: تنفيذ التحكم في الوصول والترخيص للمحتوى المقدم من خلال CloudFront من خلال إنشاء الرموز المميزة التي ينشئها المستخدم والتحقق منها ، مثل الرموز المميزة لـ HMAC أو رموز الويب JSON (JWT) ، للسماح / رفض الطلبات.

لمنحك الأداء والنطاق الذي تتطلبه التطبيقات الحديثة ، تستخدم وظائف CloudFront نموذج عزل جديدًا قائمًا على العمليات بدلاً من العزلة القائمة على الجهاز الظاهري (VM) كما هو مستخدم بواسطة AWS Lambda و Lambda @ Edge. للقيام بذلك ، كان علينا فرض بعض القيود ، مثل تجنب الوصول إلى الشبكة ونظام الملفات. أيضًا ، تعمل الوظائف لأقل من مللي ثانية. وبهذه الطريقة ، يمكنهم التعامل مع ملايين الطلبات في الثانية مع منحك أداءً رائعًا في كل تنفيذ وظيفة. لا تضيف الوظائف أي تأثير ملموس تقريبًا على الأداء العام لشبكة توصيل المحتوى (CDN).

على غرار Lambda @ Edge ، تقوم وظائف CloudFront بتشغيل التعليمات البرمجية الخاصة بك استجابةً للأحداث التي تم إنشاؤها بواسطة CloudFront. وبشكل أكثر تحديدًا ، يمكن تشغيل وظائف CloudFront بعد تلقي CloudFront طلبًا من العارض (طلب المشاهد) وقبل إعادة توجيه CloudFront الرد إلى العارض (استجابة المشاهد).

يمكن أيضًا تشغيل Lambda @ Edge قبل إعادة توجيه CloudFront الطلب إلى الأصل (طلب الأصل) وبعد تلقي CloudFront الاستجابة من الأصل (استجابة الأصل). يمكنك استخدام وظائف CloudFront و Lambda @ Edge معًا ، اعتمادًا على ما إذا كنت بحاجة إلى معالجة المحتوى قبل أو بعد تخزينه مؤقتًا.

إذا كنت بحاجة إلى بعض إمكانيات Lambda @ Edge غير المتوفرة مع وظائف CloudFront ، مثل الوصول إلى الشبكة أو وقت تنفيذ أطول ، فلا يزال بإمكانك استخدام Lambda @ Edge قبل وبعد تخزين المحتوى مؤقتًا بواسطة CloudFront.

لمساعدتك على فهم الفرق بين وظائف CloudFront و Lambda @ Edge ، إليك مقارنة سريعة:

وظائف CloudFront لامدا @ الحافة
دعم وقت التشغيل جافا سكريبت
(متوافق مع ECMAScript 5.1)
Node.js و Python
موقع التنفيذ 218+ CloudFront
مواقع الحافة
13 كلاود فرونت
مخابئ الحافة الإقليمية
مشغلات CloudFront المدعومة طلب عارض
استجابة المشاهد
طلب عارض
استجابة المشاهد
طلب المنشأ
استجابة المنشأ
أقصى وقت للتنفيذ أقل من 1 مللي ثانية 5 ثوانٍ (مشغّل العارض)
30 ثانية (مشغلات الأصل)
الذاكرة القصوى 2 ميغا بايت 128 ميجابايت (مشغلات العارض)
10 جيجابايت (المشغلات الأصلية)
الحجم الإجمالي للحزمة 10 كيلو بايت 1 ميجابايت (مشغلات العارض)
50 ميجابايت (مشغلات الأصل)
الوصول إلى الشبكة رقم نعم
الوصول إلى نظام الملفات رقم نعم
الوصول إلى نص الطلب رقم نعم
التسعير الطبقة المجانية المتاحة
مشحونة لكل طلب
لا توجد فئة مجانية مشحونة لكل طلب
ومدة الوظيفة

دعونا نرى كيف يعمل هذا في الممارسة.

استخدام وظائف CloudFront من وحدة التحكم
أريد تخصيص محتوى موقع الويب الخاص بي بناءً على بلد منشأ المشاهدين. للقيام بذلك ، أستخدم توزيع CloudFront الذي قمت بإنشائه باستخدام حاوية S3 كأصل. بعد ذلك ، أقوم بإنشاء سياسة ذاكرة التخزين المؤقت لتضمين رأس CloudFront-Viewer-Country (الذي يحتوي على رمز البلد المكون من حرفين لبلد العارض) في مفتاح التخزين المؤقت. يمكن لوظائف CloudFront رؤية الرؤوس التي تم إنشاؤها بواسطة CloudFront (مثل تحديد الموقع الجغرافي لـ CloudFront أو رؤوس اكتشاف الجهاز) فقط إذا تم تضمينها في سياسة الأصل أو سياسة مفتاح التخزين المؤقت.

في وحدة تحكم CloudFront ، أختار المهام على الشريط الأيسر ثم إنشاء وظيفة. أعطي الوظيفة اسم و يكمل.

من هنا ، يمكنني متابعة دورة حياة وظيفتي من خلال الخطوات التالية:

  1. يبني الوظيفة من خلال توفير الرمز.
  2. اختبار الدالة مع عينة الحمولة.
  3. ينشر الوظيفة من مرحلة التطوير إلى المرحلة الحية.
  4. مساعد الدالة مع واحد أو أكثر من توزيعات CloudFront.

1. في يبني علامة التبويب ، يمكنني الوصول إلى مرحلتين لكل وظيفة: أ تطوير مرحلة للاختبارات ، و يعيش المرحلة التي يمكن استخدامها بواسطة توزيع CloudFront واحد أو أكثر. مع تحديد مرحلة التطوير ، أكتب رمز وظيفتي و يحفظ:

تبحث الوظيفة في محتوى رأس CloudFront-Viewer-Country الذي تم تعيينه بواسطة CloudFront. إذا كان يحتوي على أحد البلدان المدعومة ، وكان عنوان URL لا يحتوي بالفعل على بادئة البلد ، فإنه يضيف البلد في بداية مسار URL. خلاف ذلك ، فإنه يسمح للطلب بالمرور دون تغييرات.

2. في اختبار علامة التبويب ، أحدد نوع الحدث (طلب عارض)، المسرح (تطوير، في الوقت الحالي) وعينة من الأحداث.

أدناه ، يمكنني تخصيص ملف إدخال عن طريق تحديد طريقة HTTP ، ثم تحرير مسار عنوان URL ، واختياريا عنوان IP الخاص بالعميل المراد استخدامه. يمكنني أيضًا إضافة رؤوس أو ملفات تعريف ارتباط أو سلاسل استعلام مخصصة. في حالتي ، أترك جميع القيم الافتراضية وأضف رأس CloudFront-Viewer-Country مع قيمة FR (لفرنسا). اختياريًا ، بدلاً من استخدام المحرر المرئي ، يمكنني تخصيص حدث الإدخال عن طريق تحرير حمولة JSON التي تم تمريرها إلى الوظيفة.

أنقر على ملف اختبار زر وإلقاء نظرة على انتاج |. كما هو متوقع ، تتم إعادة توجيه الطلب (رمز حالة HTTP 302). في ال رؤوس الاستجابة، أرى أن موقعك حيث يتم إعادة توجيه الطلب يبدأ بـ / fr / لتوفير محتوى مخصص للمشاهدين المقيمين في فرنسا. إذا كان هناك شيء لا يسير كما هو متوقع في اختباراتي ، يمكنني إلقاء نظرة على سجلات الوظائف. يمكنني أيضًا استخدام console.log () في الكود الخاص بي لإضافة المزيد من معلومات التصحيح.

في ال انتاج |، فقط فوق حالة HTTP ، أرى ملف استخدام الحساب لهذا الإعدام. استخدام الحساب هو رقم بين 0 و 100 يشير إلى مقدار الوقت الذي استغرقته الوظيفة للتشغيل كنسبة مئوية من الحد الأقصى للوقت المسموح به. في حالتي ، يعني استخدام الحوسبة 21 أن الوظيفة اكتملت في 21٪ من الحد الأقصى للوقت المسموح به.

3. أجري المزيد من الاختبارات باستخدام تكوينات مختلفة لعناوين URL والرؤوس ، ثم انتقل إلى ملف ينشر علامة التبويب لنسخ الوظيفة من مرحلة التطوير إلى مرحلة البث المباشر. الآن ، الوظيفة جاهزة للارتباط بتوزيع موجود.

4. في مساعد علامة التبويب ، أحدد ملف توزيع، ال نوع الحدث (طلب عارض أو رد عارض) و سلوك ذاكرة التخزين المؤقت (لدي فقط ملف تقصير (*) سلوك التخزين المؤقت للتوزيع الخاص بي). أنا أنقر إضافة اقتران والتأكيد في مربع الحوار.

الآن ، أرى ارتباط الوظيفة في الجزء السفلي من ملف مساعد التبويب.

لاختبار هذا التكوين من موقعين مختلفين ، أبدأ مثيلين Amazon Elastic Compute Cloud (Amazon EC2) ، أحدهما في منطقة شرق الولايات المتحدة (شمال فيرجينيا) والآخر في منطقة أوروبا (باريس). أقوم بالاتصال باستخدام SSH واستخدم cURL للحصول على كائن من توزيع CloudFront. في السابق ، قمت بتحميل كائنين إلى حاوية S3 المستخدمة كأصل للتوزيع: أحدهما للعملاء المقيمين في فرنسا ، باستخدام fr / بادئة ، والآخر للعملاء غير المتواجدين في بلد مدعوم ، باستخدام en / اختصار.

أدرج الكائنين باستخدام واجهة سطر أوامر AWS (CLI):

في مثيل EC2 في منطقة شرق الولايات المتحدة (شمال فرجينيا) ، قمت بتشغيل هذا الأمر لتنزيل الكائن:

ثم أقوم بتشغيل نفس الأمر في منطقة أوروبا (باريس):

كما هو متوقع ، أحصل على نتائج مختلفة من نفس عنوان URL. أنا أستخدم الخيار -L بحيث يتبع cURL إعادة التوجيه التي يتلقاها. بهذه الطريقة ، ينفذ كل أمر طلبي HTTP: يتلقى الطلب الأول إعادة توجيه HTTP من وظيفة CloudFront ، ويتبع الطلب الثاني إعادة التوجيه ولا يتم تعديله بواسطة الوظيفة لأنه يحتوي على مسار مخصص في عنوان URL (/ ar / أو / الاب /).

لمعرفة الموقع الفعلي لإعادة التوجيه وجميع رؤوس استجابة HTTP ، أستخدم cURL مع الخيار -i. هذه هي رؤوس الاستجابة لمثيل EC2 الذي يتم تشغيله في الولايات المتحدة ، ويتم تنفيذ الوظيفة في موقع حافة في فرجينيا:

وهذه هي رؤوس الاستجابة لمثيل EC2 الذي يتم تشغيله في فرنسا هذه المرة ، يتم تنفيذ الوظيفة في موقع حافة بالقرب من باريس:

التوفر والتسعير
وظائف CloudFront متاحة اليوم ويمكنك استخدامها مع التوزيعات الجديدة والحالية. يمكنك استخدام وظائف CloudFront مع وحدة الإدارة في AWS وواجهة سطر أوامر AWS (CLI) ومجموعات AWS SDK و AWS CloudFormation. باستخدام وظائف CloudFront ، تدفع مقابل عدد الاستدعاءات. يمكنك بدء استخدام وظائف CloudFront مجانًا كجزء من طبقة الاستخدام المجاني لـ AWS. لمزيد من المعلومات ، يرجى الاطلاع على صفحة تسعير CloudFront.

AWS للحافة
تعد إمكانات شبكات Amazon CloudFront و AWS جزءًا من AWS لمحفظة Edge. تعمل خدمات AWS المتطورة على تحسين الأداء عن طريق نقل الحوسبة ومعالجة البيانات والتخزين بالقرب من أجهزة المستخدم النهائي. يتضمن ذلك نشر خدمات AWS وواجهات برمجة التطبيقات والأدوات المدارة في مواقع خارج مراكز بيانات AWS ، وحتى على الأجهزة والبنية التحتية المملوكة للعملاء.

تقدم لك AWS تجربة متسقة ومجموعة من القدرات من الحافة إلى السحابة. باستخدام AWS ، يمكنك الوصول إلى أوسع وأعمق القدرات لحالات استخدام الحافة ، مثل شبكات الحافة ، والبنى المختلطة ، والأجهزة المتصلة ، و 5 G ، والحوسبة متعددة الوصول.

دانيلو بوكيا

تعمل Danilo مع الشركات الناشئة والشركات من أي حجم لدعم ابتكاراتهم. في دوره كرئيس مبشر (EMEA) في Amazon Web Services ، استفاد من خبرته لمساعدة الأشخاص على إحياء أفكارهم ، مع التركيز على البنى بدون خادم والبرمجة القائمة على الأحداث ، وعلى التأثير التقني والتجاري للتعلم الآلي والحوسبة المتطورة . وهو مؤلف كتاب AWS Lambda in Action من Manning.


وظائف PAC

يوفر المستعرض الذي يدعم PAC الوصول إلى قائمة الوظائف على النحو المحدد في مواصفات Netscape الأصلية.

يقوم كل متصفح بتنفيذ PAC في وضع الحماية ، مما يسمح بالوصول إلى وظائف JavaScript المطلوبة للعمل فقط ولا شيء أكثر من ذلك. على سبيل المثال ، ليس من الممكن & # 8217t الوصول إلى سلسلة وكيل مستخدم المتصفح في ملف PAC ، وهي سلسلة متاحة لصفحة ويب عادية.

يتم توثيق الوظائف التي تدعمها وتسمح بها بيئة وضع الحماية في هذه الصفحة.

وظائف

انقر فوق اسم الوظيفة لعرض مثال (أمثلة) وصف ورمز.

DNSDomainIs

ShExpMatch

سيحاول مطابقة اسم المضيف أو عنوان URL لتعبير shell المحدد ، ويعود صحيحًا إذا تطابق.

IsInNet

تقوم هذه الوظيفة بتقييم عنوان IP لاسم مضيف ، وإذا كانت النتيجة صحيحة ضمن شبكة فرعية محددة. إذا تم تمرير اسم مضيف ، فستقوم الوظيفة بتحويل اسم المضيف إلى عنوان IP.

MyIpAddress

يُرجع عنوان IP الخاص بالجهاز المضيف.

نظام أسماء النطاقات

يحل أسماء المضيفين إلى عنوان IP. يمكن استخدام هذه الوظيفة لتقليل عدد عمليات بحث DNS ، على سبيل المثال المثال أدناه.

IsPlainHostName

LocalHostOrDomainIs

يقيم اسم المضيف ويعيد فقط صحيحًا إذا تم العثور على تطابق تام مع اسم المضيف.

غير قابل للحل

يحاول حل اسم مضيف إلى عنوان IP ويعيد صحيحًا إذا نجح. WARNING & # 8211 قد يتسبب هذا في توقف المستعرض مؤقتًا إذا لم يكن المجال قابلاً للحل & # 8217t.

DnsDomainLevels

تقوم هذه الوظيفة بإرجاع عدد مستويات مجال DNS (عدد النقاط) في اسم المضيف. يمكن استخدامها لاستثناء مواقع الويب الداخلية التي تستخدم أسماء DNS قصيرة ، على سبيل المثال http: // إنترانت

يوم من الأسبوع

يسمح للقواعد بأن تكون قائمة على الوقت ، على سبيل المثال فقط قم بإعادة الوكيل خلال أيام محددة.

نطاق الموعد

يسمح للقواعد بأن تكون قائمة على الوقت ، على سبيل المثال فقط قم بإعادة الوكيل خلال أشهر محددة.

النطاق الزمني

يسمح للقواعد بأن تكون قائمة على الوقت ، على سبيل المثال فقط قم بإعادة الوكيل خلال ساعات محددة.

إنذار

لم يتم تحديد وظيفة التنبيه () في مواصفات PAC الأصلية ، على الرغم من أن الدعم كان مدعومًا مسبقًا في العديد من المتصفحات ، وهو مفيد لإخراج قيمة متغير أو نتيجة دالة بطريقة يمكن للمستخدم النهائي رؤيتها والاستفادة منها استكشاف أخطاء قواعد ملف PAC وإصلاحها.

تعتبر هذه الوظيفة الآن غير مدعومة وغير وظيفية في ملفات PAC.


سيناريوهات

في كثير من الحالات ، تتكامل الوظيفة مع مجموعة من الخدمات السحابية لتوفير تطبيقات غنية بالميزات.

ما يلي هو أمر شائع ، ولكن بأي حال من الأحوال شاملة، مجموعة من السيناريوهات لوظائف Azure.

إذا أردت أن. من ثم.
بناء واجهة برمجة تطبيقات الويب قم بتنفيذ نقطة نهاية لتطبيقات الويب الخاصة بك باستخدام مشغل HTTP
عملية تحميل الملف قم بتشغيل التعليمات البرمجية عند تحميل ملف أو تغييره في تخزين البيانات الثنائية الكبيرة
بناء سير عمل بدون خادم سلسل سلسلة من الوظائف معًا باستخدام وظائف دائمة
الاستجابة لتغييرات قاعدة البيانات قم بتشغيل منطق مخصص عند إنشاء مستند أو تحديثه في Cosmos DB
قم بتشغيل المهام المجدولة نفذ التعليمات البرمجية في أوقات محددة
إنشاء أنظمة قائمة انتظار رسائل موثوقة معالجة قوائم انتظار الرسائل باستخدام تخزين قائمة الانتظار أو ناقل الخدمة أو محاور الأحداث
Analyze IoT data streams Collect and process data from IoT devices
Process data in real time Use Functions and SignalR to respond to data in the moment

As you build your functions, you have the following options and resources available:

Use your preferred language: Write functions in C#, Java, JavaScript, PowerShell, or Python, or use a custom handler to use virtually any other language.

Automate deployment: From a tools-based approach to using external pipelines, there's a myriad of deployment options available.

Troubleshoot a function: Use monitoring tools and testing strategies to gain insights into your apps.

Flexible pricing options: With the Consumption plan, you only pay while your functions are running, while the Premium and App Service plans offer features for specialized needs.


5.1 Linear Equations and Functions - PowerPoint PPT Presentation

يعد موقع PowerShow.com موقعًا رائدًا لمشاركة العروض التقديمية / عرض الشرائح. سواء كان تطبيقك يتعلق بالعمل ، أو الكيفية ، أو التعليم ، أو الطب ، أو المدرسة ، أو الكنيسة ، أو المبيعات ، أو التسويق ، أو التدريب عبر الإنترنت أو لمجرد التسلية ، فإن موقع PowerShow.com هو مصدر رائع. والأفضل من ذلك كله ، أن معظم ميزاته الرائعة مجانية وسهلة الاستخدام.

يمكنك استخدام PowerShow.com للعثور على أمثلة على عروض PowerPoint التقديمية عبر الإنترنت وتنزيلها حول أي موضوع يمكنك تخيله حتى تتمكن من تعلم كيفية تحسين الشرائح والعروض التقديمية مجانًا. أو استخدمه للعثور على عروض تقديمية عالية الجودة لـ PowerPoint وتنزيلها مع شرائح مصورة أو متحركة ستعلمك كيفية القيام بشيء جديد ، مجانًا أيضًا. أو استخدمه لتحميل شرائح PowerPoint الخاصة بك حتى تتمكن من مشاركتها مع المعلمين أو الفصل أو الطلاب أو الرؤساء أو الموظفين أو العملاء أو المستثمرين المحتملين أو العالم. أو استخدمه لإنشاء عروض شرائح صور رائعة حقًا - مع انتقالات ثنائية وثلاثية الأبعاد ورسوم متحركة وخيارات الموسيقى التي يمكنك مشاركتها مع أصدقائك على Facebook أو دوائر Google+. هذا كله مجاني أيضًا!

مقابل رسوم رمزية ، يمكنك الحصول على أفضل خصوصية على الإنترنت في المجال أو الترويج للعروض التقديمية وعروض الشرائح ذات الترتيب الأعلى بشكل عام. لكن بصرف النظر عن ذلك فهو مجاني. سنقوم بتحويل العروض التقديمية وعروض الشرائح إلى تنسيق الفلاش العالمي بكل مجدها الأصلي للوسائط المتعددة ، بما في ذلك الرسوم المتحركة ، وتأثيرات الانتقال ثنائية وثلاثية الأبعاد ، والموسيقى المضمنة أو أي صوت آخر ، أو حتى الفيديو المضمّن في الشرائح. كل هذا مجانا. يمكن مشاهدة معظم العروض التقديمية وعروض الشرائح على PowerShow.com مجانًا ، بل إن الكثير منها مجاني للتنزيل. (يمكنك اختيار ما إذا كنت ستسمح للأشخاص بتنزيل عروض PowerPoint التقديمية الأصلية وعروض شرائح الصور مقابل رسوم أو مجانًا أم لا على الإطلاق.) تحقق من PowerShow.com اليوم - مجانًا. حقا هناك شيء للجميع!

العروض التقديمية مجانًا. أو استخدمه للعثور على عروض تقديمية عالية الجودة لـ PowerPoint وتنزيلها مع شرائح مصورة أو متحركة ستعلمك كيفية القيام بشيء جديد ، مجانًا أيضًا. أو استخدمه لتحميل شرائح PowerPoint الخاصة بك حتى تتمكن من مشاركتها مع المعلمين أو الفصل أو الطلاب أو الرؤساء أو الموظفين أو العملاء أو المستثمرين المحتملين أو العالم. أو استخدمه لإنشاء عروض شرائح صور رائعة حقًا - مع انتقالات ثنائية وثلاثية الأبعاد ورسوم متحركة وخيارات الموسيقى التي يمكنك مشاركتها مع أصدقائك على Facebook أو دوائر Google+. هذا كله مجاني أيضًا!


شاهد الفيديو: مقدمة الفصل الخامس الضغط فيزياء الاول متميزين (ديسمبر 2021).