پلگ ایبل گولنگ ایپلی کیشن کیسے بنائیں اور AWS لیمبڈا پرتوں سے فائدہ حاصل کریں۔

گولنگ۔ یہ آپ کی توجہ کے قابل کیوں ہے؟

گولانگ ایک اوپن سورس پروگرامنگ زبان ہے جسے گوگل نے تیار کیا اور نافذ کیا۔ یہ جدید استعمال میں خاص طور پر بادل میں بہت وسیع پیمانے پر استعمال ہوتا ہے۔ وہ سب سے نمایاں خصوصیات ہیں:

  • گولنگ مستحکم لکھا گیا ہے - یہ کم لچک پیش کرتا ہے لیکن غلطیوں سے بچاتا ہے ،
  • یہ اعتراض پر مبنی نہیں ہے۔ تاہم ، آپ ڈھانچے اور انٹرفیس تشکیل دے سکتے ہیں ، اور اس کے نتیجے میں 4 میں سے 3 او او پی اصول ہوتے ہیں: ڈیٹا کو خلاصہ کرنے ، انکپولیشن اور پولیورفزم۔ یہ سب کچھ وراثت سے محروم ہے
  • گورٹائنز! - روشنی کے تاروں کا بہترین نفاذ جو میں نے کبھی استعمال کیا ہے۔ گو آپریٹر کے ذریعہ آپ آسانی سے ایک نیا تھریڈ تشکیل دے سکتے ہیں اور مختلف گورٹائنز کے مابین چینلز کے ذریعے بات چیت کرسکتے ہیں۔
  • یہ تمام انحصار والی ایک بائنری فائل میں مرتب کیا گیا ہے - مزید پیکیج تنازعات نہیں!

ذاتی طور پر ، میں گولانگ کو ہر روز استعمال کرنے والی سب سے بڑی زبان سمجھتا ہوں۔ تاہم ، یہ مضمون آپ کا پہلا فنکشن تخلیق کرنے یا "ہیلو ورلڈ" پرنٹ کرنے کے بارے میں نہیں ہے۔ میں آپ کو تھوڑی بہت زیادہ جدید چیزیں دکھاتا ہوں۔ اگر آپ ابتدائی ہیں اور گولانگ کے بارے میں مزید معلومات حاصل کرنا چاہتے ہیں تو براہ کرم مرکزی صفحہ دیکھیں۔

AWS لیمبڈا اور گولنگ

ایم ڈبلیو ایس لیمبڈا عوامی بادل میں ایک انتہائی مقبول سرور لیس کمپیوٹنگ خدمات میں سے ایک ہے ، جسے ایمیزون ویب سروسز نے نومبر 2014 میں جاری کیا تھا۔ آپ ڈائنوموڈبی ، ایس این ایس یا ایچ ٹی ٹی پی ٹرگرز جیسے واقعات کے جواب میں اپنا کوڈ چلا سکتے ہیں بغیر سرور بنائے یا انتظام کیے بغیر! کیا آپ جانتے ہیں کہ واقعی میں کیا عمدہ ہے؟ یہ جنوری 2018 سے گولنگ کی اصطلاح کی حمایت کر رہا ہے۔ او ڈبلیو ایس لیمبڈا کے ساتھ کام کرنا واقعی آسان ہے۔ اپنے کوڈ اور تمام انحصار (صرف بائنری اگر آپ گولانگ استعمال کررہے ہیں) کے ساتھ کمپریسڈ پیکیج اپ لوڈ کریں۔

فاسٹ فارورڈ ، 4 سال بعد ، 2018 دوبارہ: ایجاد کریں AWS لیمبڈا پرتوں کی ریلیز کرتی ہے جو آپ کو ایک سے زیادہ AWS اکاؤنٹس میں مختلف افعال کے لئے شیئر کردہ ڈیٹا کو اسٹور اورمینج کرنے کی سہولت دیتی ہے! مثال کے طور پر ، اگر آپ ازگر استعمال کر رہے ہیں تو ، آپ انحصار کو ایک اضافی پرت میں ڈال سکتے ہیں جو بعد میں دوسرے لیمبڈاس کے ذریعہ استعمال ہوسکتی ہے۔ اب ہر زپ پیکیج میں مختلف انحصار ڈالنا ضروری نہیں ہے! گولنگ دنیا میں صورتحال مختلف ہے کیونکہ او ڈبلیو ایس لامبڈا کو مرتب شدہ بائنریز اپ لوڈ کرنے کی ضرورت ہے۔ ہم اے ڈبلیو ایس لیمبڈا پرتوں سے کیسے فائدہ اٹھا سکتے ہیں؟ جواب آسان ہے۔ گولانگ پلگ ان کے ساتھ ماڈیولر ایپلی کیشن بنائیں!

گولانگ پلگ ان۔ ماڈیولر ایپلی کیشن بنانے کا ایک طریقہ

گولانگ پلگ انز Go1.8 میں جاری کردہ خصوصیت ہے جو آپ کو مشترکہ لائبریریوں (.so فائلیں) کو متحرک طور پر لوڈ کرنے کی اجازت دیتی ہے۔ آپ کے پاس یہ اختیار ہے کہ آپ اپنے کوڈ میں سے کچھ کو الگ لائبریری میں ایکسپورٹ کریں یا پلگ ان کو استعمال کریں جو کسی اور نے تشکیل یا مرتب کیا ہے۔ تاہم ، یہ حوصلہ افزا ہے کہ کچھ حدود ہیں:

  • آپ کا پلگ ان ایک واحد مرکزی ماڈیول ہونا چاہئے ،
  • آپ صرف ان افعال اور متغیرات کو لوڈ کرسکتے ہیں جو ELF علامت کے بطور برآمد ہوتے ہیں۔
  • جامد ٹائپنگ کی وجہ سے ، آپ کو ہر بھری ہوئی علامت کو صحیح قسم میں تبدیل کرنا ہوگا۔ بدترین صورتحال میں ، آپ کو اپنے کوڈ میں صحیح انٹرفیس کی وضاحت کرنے کی ضرورت ہے ،
  • یہ صرف لینکس اور میک او ایس پر کام کرتا ہے۔ ذاتی طور پر ، میں اسے کسی نقصان کے طور پر نہیں دیکھ رہا ہوں :)

اپنا پہلا پلگ ان بنائیں اور جانچیں

اب ہم اپنا پہلا پلگ ان بنائیں۔ ایک مثال کے طور پر ہم اسٹرنگ انکرپشن کے لئے ایک آسان ماڈیول بنائیں گے۔ آئیے مبادیات کی طرف واپس جائیں اور دو آسان خفیہ کاری الگورتھم Ce سیسار اور ورمان۔

  • قیصر سائفر وہ الگورتھم ہے جو جولیس سیزز نے سب سے پہلے استعمال کیا۔ یہ متن میں ہر خط کو مقامات کی مخصوص تعداد میں منتقل کرتا ہے۔ مثال کے طور پر ، اگر آپ کلید 4 کے ساتھ لفظ گولنگ کو انکرپٹ کرنا چاہتے ہیں تو ، آپ کو کے ٹی پییک ملے گا۔ ڈکرپشن اسی طرح کام کرتی ہے۔ آپ سبھی کو خطوط کو مخالف سمت میں منتقل کرنا ہے۔
  • ورمان سیفر اسی شفٹنگ خیال پر مبنی ، سیزر سائفر کی طرح ہے۔ فرق یہ ہے کہ آپ ہر خط کو مختلف مقامات پر منتقل کرتے ہیں۔ متن کو ڈکرپٹ کرنے کے ل you ، آپ کو ان پوزیشنز کی کلید کی ضرورت ہوگی جہاں متن کو مرموز کیا گیا تھا۔ مثال کے طور پر ، اگر آپ لفظ گولنگ کو کلید [-1، 4، 7، 20، 4، -2] کے ساتھ خفیہ کرنا چاہتے ہیں تو آپ کو مستقبل مل جائے گا۔

اس مثال کا مکمل نفاذ یہاں پایا جاسکتا ہے۔

پلگ ان کا نفاذ

مندرجہ ذیل ٹکڑوں میں مذکورہ دو الگورتھم پر عمل درآمد ہے۔ ہر ایک کے ل we ، ہم اپنے متن کو خفیہ کاری اور خفیہ کاری کے دو طریقوں کو نافذ کرتے ہیں:

جیسا کہ آپ دیکھ سکتے ہیں ، ہم نے یہاں 3 مختلف علامتیں برآمد کیں (گولانگ صرف ان شناخت کاروں کو برآمد کرتا ہے جو اوپر والے خط سے شروع ہوتے ہیں):

  • اینکرپٹ سییسر - فنک (انٹ ، سٹرنگ) وہ سٹرنگ جو سیزر الگورتھم کا استعمال کرتے ہوئے متن کو خفیہ کرتا ہے۔
  • ڈیکریپٹ سیزر - فنک (انٹریٹ ، سٹرنگ) سٹرنگ جو کیسر الگورتھم کا استعمال کرکے متن کو ڈی کوڈ کرتی ہے ،
  • ورمان سیفر - متغیر کی قسم vermanCipher ، جو 2 طریقوں کو لاگو کرتا ہے: انکرپٹ: فنک (تار) تار اور ڈکرپٹ: فنک () (* تار ، غلطی)

اس پلگ ان کو مرتب کرنے کے لئے آپ کو مندرجہ ذیل کمانڈ کو چلانے کی ضرورت ہے۔

build -buildmode = پلگ ان - پلگ ان / cipher.so پلگ ان / cipher.go پر جائیں

ابھی کچھ خاص بات نہیں ہے - صرف کچھ آسان افعال تشکیل دیئے گئے ہیں اور ایک ماڈیول کو پلگ ان کی طرح بِلڈمڈ = پلگ ان دلیل شامل کرکے مرتب کیا گیا ہے۔

پلگ ان کو لوڈ اور ٹیسٹ کریں

لطف اس وقت شروع ہوتا ہے جب ہم اپنی ایپ میں مرتب شدہ پلگ ان استعمال کرنا چاہتے ہیں۔ آئیے ایک آسان مثال بنائیں:

پہلے آپ کو گولانگ پلگ ان پیکیج درآمد کرنے کی ضرورت ہے۔ اس میں صرف دو افعال شامل ہیں - پہلا مشترکہ لائبریری لوڈ کرنا اور دوسرا برآمد شدہ علامت تلاش کرنا۔ اپنی لائبریری کو لوڈ کرنے کے ل you ، آپ کو اوپن فنکشن کا استعمال کرنا ہوگا ، جس کے ل your آپ کے مشترکہ پلگ ان کا راستہ اور پلگ ان ٹائپ پلٹ ان کی واپسی متغیر بتانا ضروری ہے۔ اگر لائبریری کو لوڈ نہیں کیا جاسکتا (جیسے کہ غلط راستہ یا خراب فائل) ، تو یہ فعل اس خامی کو واپس کرتا ہے جسے سنبھالنے کی ضرورت ہے۔

اگلا مرحلہ تلاش کے طریقہ کار کا استعمال کرتے ہوئے ہر برآمد شدہ علامت کو لوڈ کرنا ہے۔ ایک چھوٹا سا نقصان یہ ہے کہ آپ کو ہر برآمد شدہ فنکشن الگ سے لوڈ کرنا پڑتا ہے۔ تاہم ، آپ ایک سے زیادہ افعال کو اسی طرح جوڑ سکتے ہیں جس طرح آپ نے ورمان سیفر علامت کے لئے کیا تھا۔ اب چونکہ آپ نے ان تمام علامتوں کو استعمال کیا ہے جو آپ استعمال کرنا چاہتے ہیں ، لہذا آپ کو انہیں صحیح قسم میں تبدیل کرنے کی ضرورت ہے۔ گولنگ ایک مستحکم ٹائپ شدہ زبان ہے ، لہذا ان علامتوں کو کاسٹ کیے بغیر استعمال کرنے کا کوئی دوسرا راستہ نہیں ہے۔ یاد رکھنا ، اگر آپ کسی ایسے متغیر کی برآمد کر رہے ہیں جس میں کچھ طریقوں کا اطلاق ہوتا ہو تو آپ کو اسے صحیح انٹرفیس کی قسم پر ڈالنا پڑتا ہے (اس کو سنبھالنے کے لئے مجھے خفیہ کاری انجین انٹرفیس کی وضاحت کرنی پڑتی تھی)۔ \ نئی لائن \ نئی لائن

ایپ کو مرتب کرنے اور چلانے کے لئے درج ذیل کمانڈ کا استعمال کریں:

بلڈ ایپ.گو۔ / ایپ پر جائیں

آؤٹ پٹ میں ، آپ کو خفیہ شدہ اور ڈکرپٹ شدہ متن کو بطور ثبوت دیکھنا چاہئے کہ الگورتھم ٹھیک طرح سے کام کر رہا ہے۔

AWS لیمبڈا میں پلگ ان کا استعمال کریں

اے ڈبلیو ایس لیمبڈا میں اپنے پلگ ان کو استعمال کرنے کے ل we ، ہمیں اپنی درخواست میں کچھ تبدیلیاں لانے کی ضرورت ہے۔

  • اے ڈبلیو ایس لامبڈا نے لیمبڈا کنٹینر میں / آپٹ ڈائریکٹری میں پرتیں چڑھا دی ہیں ، لہذا ہمیں اس ڈائریکٹری سے اپنا پلگ ان لوڈ کرنا ہے۔
  • ہمیں ایک ہینڈلر فنکشن بنانے کی ضرورت ہے جو لیمبڈا انجن کے ذریعہ ہمارے ٹیسٹ ایونٹ پر کارروائی کے ل. استعمال ہوگا۔

مندرجہ ذیل ٹکڑوں میں ہماری درخواست شامل ہے جو لیمبڈا کے استعمال کے ل to ڈھل گئی ہے۔

جیسا کہ آپ دیکھ سکتے ہیں ، نفاذ پچھلے ایک سے ملتا جلتا ہے۔ ہم نے ابھی اس ڈائریکٹری کو تبدیل کیا ہے جہاں سے ہم نے اپنے پلگ ان کو لوڈ کیا اور اقدار کو چھاپنے کے بجائے فنکشن رسپانس کو شامل کیا۔ گولنگ میں لیمبڈاس لکھنے سے متعلق مزید معلومات کے لئے ، AWS دستاویزات دیکھیں۔

AWS لیمبڈا تعیناتی

AWS لیمبڈا کے افعال اور تہوں کو تعینات کرنے کے دو طریقے ہیں۔ آپ دستی طور پر ایک سکیڑا والا پیکیج بنا یا اپ لوڈ کرسکتے ہیں یا جدید ترین فریم ورک کا استعمال کرسکتے ہیں جس کی وجہ سے یہ بہت آسان اور تیز تر ہوجائے گا۔ اپنے بیشتر منصوبوں کے لئے میں سرور لیس فریم ورک کا استعمال کرتا ہوں۔ لہذا میں نے پہلے ہی اس ٹول کے ساتھ سادہ کنفگریشن فائل سرور لیس تیار کی ہے۔

سروس: سیفرسروس فریم ورک ورزن: "> = 1.28.0 <2.0.0" فراہم کنندہ: نام: اوز رن ٹائم: go1.x
پرتیں: سیفر لائر: راستہ: بن / پلگ ان ہم آہنگ رن ٹائم: - go1.x
افعال: انجن: ہینڈلر: بن / سائفرجین پیکیج: خارج کریں: - ./** شامل کریں: - ./bin/cipherEngine پرتیں: - {ریفر: سائفر لایرلمبڈا لایر}

پرت کے علاقے میں ، ہم نے پلگ ان کے راستے کے ساتھ ایک واحد پرت کی وضاحت کی ہے جو پہلے ہی تشکیل دے دیا گیا ہے - یہ لیمبڈا فنکشن کے ساتھ مل کر فراہم کی گئی ہے۔ آپ 5 مختلف سطحوں تک کی وضاحت کرسکتے ہیں ، جس کی ترتیب واقعی اہم ہے۔ وہ ایک ہی / آپٹ ڈائرکٹری میں سوار ہیں ، لہذا زیادہ تعداد والی پرتیں ماؤنٹ شدہ پرتوں سے فائلوں کو اوور رائٹ کرسکتی ہیں۔ ہر سطح کے ل you آپ کو کم از کم 2 پیرامیٹرز کی وضاحت کرنی ہوگی: سطح کے ذریعہ والی ڈائریکٹری کا راستہ (آپ کے معاملے میں بائنری فائل میں پلگ ان کی راہ میں) اور موافق رن ٹائم کی فہرست۔

اگلا فنکشن سیکشن ایک ایسی جگہ ہے جہاں آپ نافذ کیے جانے والے افعال کی فہرست کی وضاحت کرتے ہیں۔ ہر فنکشن کے ل you آپ کو کم از کم مرتب کردہ ایپلیکیشن کا راستہ بتانا ہوگا۔ اس کے علاوہ ، ہمیں اوپر والے پرت کے حوالے سے پرت پیرامیٹر کی وضاحت کرنے کی ضرورت ہے۔ یہ تعیناتی کے دوران ہمارے لیمبڈا فنکشن میں خود بخود پرت کو جوڑ دے گی۔ مضحکہ خیز بات یہ ہے کہ اگر آپ اس وسیلہ کی طرف رجوع کرنا چاہتے ہیں تو آپ کو اپنے لیمبڈا پرت کا نام ٹائٹل کیسیس میں تبدیل کرنا ہوگا اور لیمبڈا لائر کا لاحقہ جوڑنا ہوگا۔ ایسا لگتا ہے کہ سرور لیس ٹیم نے اس کو وسائل کی مختلف اقسام سے متعلق تنازعہ کو حل کرنے کے لئے اس طرح نافذ کیا ہے۔

جیسے ہی ہماری کنفگریشن فائل سرور لیس۔ ایم ایل تیار ہے ، آپ کو آخری چیز مرتب کرنا ، پلگ ان کرنا اور ہماری ایپ کو تعینات کرنا ہے۔ اس کے لئے ہم سادہ میک فائل استعمال کرسکتے ہیں۔

.فونی: بلڈ پلگ ان کو صاف ستھری تعینات کریں
build: dep Safe -v env GOOS = Linux go build -ldflags = "-s -w" -o / bin / cipherEngine cipherEngine / main.go
buildPlugin: env GOOS = Linux go build -ldflags = "- s -w" -buildmode = پلگ ان- bin / پلگ ان / cipher.so ../plugin/cipher.go
صاف: rm -rf ./bin ./vendor Gopkg.lock
تعینات: صاف buildPlugin build sls تعینات --verbose

آپ مندرجہ ذیل کمانڈ کو چلانے کے ذریعہ اپنے فنکشن کی تشکیل اور تعینات کرسکتے ہیں۔

فراہم کرتے ہیں

AWS لیمبڈا آزمائیں

جیسا کہ پہلے ذکر ہوا ، ای ڈبلیو ایس لیمبڈا کوڈ ایونٹ کے جواب میں چلتا ہے۔ تاہم ، ہم نے ایونٹ کے کسی محرک کو تشکیل نہیں دیا ہے لہذا ان کو ہماری مدد کے بغیر نہیں بلایا جاسکتا ہے۔ ہمیں سرور لیس فریم ورک یا ایس آر ایس سی ٹول کا استعمال کرکے دستی طور پر یہ کرنا ہے:

ایس ایل ایس کالز - فنکشن نام آو لیمبڈا انوائس - فنکشن نام فنکشن-نام آؤٹ پٹ فائل

جواب میں ، آپ کو پہلے کی طرح وہی آؤٹ پٹ دیکھنا چاہئے ، جس سے یہ ثابت ہوتا ہے کہ ہماری لامبڈا فنکشن صحیح طریقے سے کام کررہی ہے اور پلگ ان اضافی پرت سے بھری ہوئی ہے۔ اب آپ دوسرے افعال تشکیل دے سکتے ہیں جو ایک ہی پرت کا استعمال کرتے ہیں یا اسے دوسرے AWS اکاؤنٹس کے ساتھ بھی بانٹ سکتے ہیں۔

خلاصہ

گولانگ ماڈیولز کا استعمال کرتے ہوئے اور یہ جانچ کر بہت خوشی ہوئی کہ ان کو نئی جاری کردہ AWS لیمبڈا پرتوں کے ساتھ کس طرح ضم کیا جاسکتا ہے۔ پلگ ان لائبریری واقعی بہت عمدہ ہے ، لیکن یہ صرف اس کی حدود اور گولنگ کی تصریح کی وجہ سے کچھ مخصوص منظرناموں میں استعمال ہوسکتی ہے۔ میں سمجھتا ہوں کہ معیاری منصوبوں پر کام کرنے والے زیادہ تر ڈویلپرز کے لئے ، پلگ ان کی ضرورت نہیں ہے یا اس سے بھی ممکن نہیں ہے۔ میں صرف دو وجوہات کے بارے میں سوچ سکتا ہوں:

  • پیچیدہ الگورتھم کا نفاذ جو دوسری ایپلیکیشنز کے ذریعہ استعمال کیا جاسکتا ہے ، جیسے۔ ویڈیو کوڈنگ یا خفیہ کاری الگورتھم۔
  • اپنے الگورتھم کو کوڈ شائع کیے بغیر دوسروں کے ساتھ بانٹیں۔