اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا
Tikhon Uskov، زيبڪس انضمام ٽيم انجنيئر

Zabbix هڪ ڪسٽمائيز پليٽ فارم آهي جيڪو ڪنهن به قسم جي ڊيٽا جي نگراني ڪرڻ لاء استعمال ڪيو ويندو آهي. Zabbix جي ابتدائي ورزن کان وٺي، نگراني منتظمين کي مختلف اسڪرپٽ ذريعي هلائڻ جي صلاحيت حاصل ڪئي وئي آهي. ڪارناما ٽارگيٽ نيٽ ورڪ نوڊس تي چڪاس لاءِ. ساڳي ئي وقت، اسڪرپٽ جي شروعات ڪيترن ئي مشڪلاتن جو سبب بڻيو، جهڙوڪ اسڪرپٽ کي سپورٽ ڪرڻ جي ضرورت، انهن کي ڪميونيڪيشن نوڊس ۽ پراڪسيز تائين پهچائڻ، انهي سان گڏ مختلف نسخن جي مدد.

Zabbix لاءِ جاوا اسڪرپٽ

اپريل 2019 ۾، Zabbix 4.2 متعارف ڪرايو ويو جاوا اسڪرپٽ پري پروسيسنگ سان. ڪيترائي ماڻهو لکڻ جي اسڪرپٽ کي ڇڏي ڏيڻ جي خيال تي پرجوش ٿي ويا جيڪي ڊيٽا کي ڪٿي کڻي وڃن، ان کي هضم ڪن ۽ ان کي هڪ فارميٽ ۾ مهيا ڪن جيڪي Zabbix سمجهي، ۽ سادي چيڪن کي انجام ڏيو جيڪي ڊيٽا حاصل ڪندا جيڪي Zabbix پاران اسٽوريج ۽ پروسيسنگ لاءِ تيار نه آهن، ۽ پوءِ ھن ڊيٽا اسٽريم کي پروسيس ڪريو Zabbix ۽ JavaScript اوزار استعمال ڪندي. زبڪس 3.4 ۾ ظاهر ٿيندڙ گھٽ-سطح جي دريافت ۽ منحصر شيون سان گڏ، اسان حاصل ڪيل ڊيٽا کي ترتيب ڏيڻ ۽ منظم ڪرڻ لاء ڪافي لچڪدار تصور حاصل ڪيو.

Zabbix 4.4 ۾، جاوا اسڪرپٽ ۾ اڳ-پروسيسنگ جي منطقي تسلسل جي طور تي، هڪ نئون نوٽيفڪيشن طريقو ظاهر ٿيو آهي - Webhook، جيڪو آساني سان ٽئين پارٽي جي ايپليڪيشنن سان Zabbix اطلاعن کي ضم ڪرڻ لاءِ استعمال ڪري سگهجي ٿو.

جاوا اسڪرپٽ ۽ ڊڪٽيپ

جاوا اسڪرپٽ ۽ ڊڪٽيپ ڇو چونڊيو ويو؟ ٻولين ۽ انجڻين لاء مختلف اختيارن تي غور ڪيو ويو:

  • لوا - لوا 5.1
  • Lua - LuaJIT
  • جاوا اسڪرپٽ - ڊڪٽيپ
  • جاوا اسڪرپٽ - جيري اسڪرپٽ
  • ايمبيڊڊ پٿون
  • ايمبيڊڊ پرل

مکيه چونڊ معيار هئا اڳڀرائي، پراڊڪٽ ۾ انجڻ جي انضمام ۾ آساني، گهٽ وسيلن جو استعمال ۽ انجڻ جي مجموعي ڪارڪردگي، ۽ نگراني ۾ ڪوڊ متعارف ڪرائڻ جي حفاظت. اشارن جي ميلاپ جي بنياد تي، جاوا اسڪرپٽ ڊڪٽيپ انجڻ تي حاصل ڪئي.

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا

چونڊ معيار ۽ ڪارڪردگي جاچ

ڊڪٽيپ جون خاصيتون:

- معياري ECMAScript E5/E5.1
- Duktape لاء Zabbix ماڊلز:

  • Zabbix.log() - توهان کي اجازت ڏئي ٿو ته تفصيل جي مختلف سطحن سان سڌو سنئون Zabbix سرور لاگ ۾ پيغامن کي، جيڪو اهو ممڪن بڻائي ٿو ته غلطين کي ڳنڍڻ، مثال طور، ويب هوڪ ۾، سرور اسٽيٽ سان.
  • CurlHttpRequest() - توھان کي اجازت ڏئي ٿو HTTP درخواستون نيٽ ورڪ تي، جنھن تي Webhook جو استعمال ٻڌل آھي.
  • atob() ۽ btoa() - توهان کي بيس 64 فارميٽ ۾ تارن کي انڪوڊ ۽ ڊيڪوڊ ڪرڻ جي اجازت ڏئي ٿو.

نوٽيس. ڊڪٽيپ ACME معيار سان مطابقت رکي ٿي. Zabbix اسڪرپٽ جو 2015 ورزن استعمال ڪري ٿو. بعد ۾ تبديليون معمولي آهن، تنهنڪري انهن کي نظرانداز ڪري سگهجي ٿو..

جاوا اسڪرپٽ جادو

جاوا اسڪرپٽ جو سمورو جادو متحرڪ ٽائپنگ ۽ ٽائپ ڪاسٽنگ ۾ آهي: اسٽرنگ، عددي، ۽ بوليان.

ان جو مطلب اهو آهي ته اهو ضروري ناهي ته اڳ ۾ اعلان ڪيو وڃي ته ڪهڙي قسم جي متغير کي قيمت واپس ڪرڻ گهرجي.

رياضياتي عملن ۾، فنڪشن آپريٽرز پاران واپس ڪيل قدر انگن ۾ تبديل ڪيا ويا آهن. اهڙين عملن جي استثنا اضافي آهي، ڇاڪاڻ ته جيڪڏهن گهٽ ۾ گهٽ هڪ اصطلاح هڪ اسٽرنگ آهي، اسٽرنگ ڪنورشن سڀني شرطن تي لاڳو ٿئي ٿو.

نوٽيس. اهڙين تبديلين جا ذميوار طريقا عام طور تي اعتراض جي والدين پروٽو ٽائپس ۾ لاڳو ڪيا ويندا آهن، قدر и اسٽارنگ. قدر عددي تبادلي دوران ۽ هميشه طريقي کان اڳ سڏيو ويندو آهي اسٽارنگ. طريقو قدر لازمي قدر واپس ڪرڻ گھرجي، ٻي صورت ۾ ان جو نتيجو نظرانداز ڪيو ويندو.

هڪ طريقو هڪ اعتراض تي سڏيو ويندو آهي قدر. جيڪڏهن اهو نه مليو آهي يا هڪ ابتدائي قدر واپس نٿو اچي، طريقو سڏيو ويندو آهي اسٽارنگ. جيڪڏهن طريقو اسٽارنگ نه لڌو، ڳولهيو قدر اعتراض جي پروٽوٽائپ ۾، ۽ هر شيء کي بار بار ڪيو ويندو آهي جيستائين قيمت جي پروسيسنگ مڪمل ٿي وڃي ۽ اظهار ۾ سڀئي قيمتون ساڳئي قسم ۾ اڇلائي وڃن.. جيڪڏهن اعتراض هڪ طريقو لاڳو ڪري ٿو اسٽارنگ، جيڪو هڪ ابتدائي قدر واپس ڪري ٿو، پوءِ اهو ئي آهي جيڪو اسٽرنگ ڪنورشن لاءِ استعمال ٿيندو آهي. بهرحال، هن طريقي کي لاڳو ڪرڻ جو نتيجو لازمي طور تي هڪ تار نه آهي.

مثال طور، if for object 'اوج'طريقو بيان ڪيو ويو آهي اسٽارنگ,

`var obj = { toString() { return "200" }}` 

طريقو اسٽارنگ واپس اچي ٿو بلڪل هڪ اسٽرنگ، ۽ جڏهن هڪ انگ سان هڪ اسٽرنگ شامل ڪيو وڃي، اسان کي هڪ ڳنڍي تار ملي ٿي:

`obj + 1 // '2001'` 

`obj + 'a' // ‘200a'`

پر جيڪڏهن توهان ٻيهر لکندا آهيو اسٽارنگ، انهي ڪري ته طريقو هڪ عدد واپس ڪري ٿو، جڏهن اعتراض شامل ڪيو ويندو، هڪ رياضياتي عمل کي عددي تبديلي سان انجام ڏنو ويندو ۽ رياضياتي اضافو جو نتيجو حاصل ڪيو ويندو.

`var obj = { toString() { return 200 }}` 

`obj + 1 // '2001'`

انهي حالت ۾، جيڪڏهن اسان هڪ اسٽرنگ سان اضافو ڪندا آهيون، هڪ اسٽرنگ جي تبديلي ڪئي ويندي آهي، ۽ اسان کي هڪ ڳنڍي تار ملي ٿي.

`obj + 'a' // ‘200a'`

اهو ئي سبب آهي جو نئين جاوا اسڪرپٽ استعمال ڪندڙن پاران وڏي تعداد ۾ غلطيون.

طريقو اسٽارنگ توهان هڪ فنڪشن لکي سگهو ٿا جيڪو اعتراض جي موجوده قيمت کي وڌائيندو 1.

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا
اسڪرپٽ جي عملدرآمد، مهيا ڪئي وئي ته متغير 3 جي برابر آهي، ۽ اهو پڻ 4 جي برابر آهي.

جڏهن ڪاسٽ سان مقابلو ڪيو وڃي (==)، طريقو هر وقت تي عمل ڪيو ويندو آهي اسٽارنگ قدر وڌائڻ جي فنڪشن سان. ان جي مطابق، هر ايندڙ مقابلي سان، قدر وڌائي ٿو. اهو غير ڪاسٽ مقابلي (===) استعمال ڪندي بچائي سگهجي ٿو.

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا
بغير قسم جي ڪاسٽنگ جي مقابلي ۾

نوٽيس. غير ضروري طور تي Cast Comparison استعمال نه ڪريو.

پيچيده اسڪرپٽ لاءِ، جيئن پيچيده منطق سان Webhooks، جن کي ٽائپ ڪاسٽنگ سان ڀيٽ ڪرڻ جي ضرورت آهي، اها سفارش ڪئي وئي آهي ته اڳي لکڻ جي چيڪن لاءِ انهن قدرن لاءِ جيڪي متغيرن کي واپس ڪن ۽ تضادن ۽ غلطين کي سنڀالي.

Webhook ميڊيا

2019 جي آخر ۾ ۽ 2020 جي شروعات ۾، Zabbix انٽيگريشن ٽيم فعال طور تي Webhooks ۽ آئوٽ آف دي باڪس انضمام کي ترقي ڪري رھي آھي جيڪي Zabbix تقسيم سان گڏ اچن ٿيون.

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا
سان ڳنڍيو دستاويز

اڳڀرائي ڪرڻ

  • جاوا اسڪرپٽ ۾ اڳڀرائي جي اچڻ سان اڪثر خارجي اسڪرپٽ کي ختم ڪرڻ ممڪن ٿيو، ۽ في الحال Zabbix ۾ توهان ڪا به قيمت حاصل ڪري سگهو ٿا ۽ ان کي مڪمل طور تي مختلف قدر ۾ تبديل ڪري سگهو ٿا.
  • Zabbix ۾ پري پروسيسنگ جاوا اسڪرپٽ ڪوڊ پاران لاڳو ڪيو ويو آهي، جيڪو، جڏهن بائيٽ ڪوڊ ۾ مرتب ڪيو ويندو آهي، هڪ فنڪشن ۾ تبديل ڪيو ويندو آهي جيڪو هڪ واحد قيمت کي پيٽرولر طور وٺندو آهي قدر هڪ اسٽرنگ جي طور تي (هڪ اسٽرنگ هڪ عدد ۽ انگ ٻنهي تي مشتمل ٿي سگهي ٿو).
  • جيئن ته آئوٽ هڪ فنڪشن آهي، اسڪرپٽ جي آخر ۾ گهربل آهي موٽڻ.
  • ڪوڊ ۾ ڪسٽم ميڪرو استعمال ڪرڻ ممڪن آهي.
  • وسيلن کي محدود ڪري سگهجي ٿو نه رڳو آپريٽنگ سسٽم جي سطح تي، پر پروگرام جي لحاظ کان پڻ. اڳواٽ پروسيسنگ قدم وڌ ۾ وڌ 10 ميگا بائيٽ ريم ۽ 10 سيڪنڊن جي رن ٽائيم حد مختص ڪئي وئي آهي.

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا

نوٽيس. 10 سيڪنڊن جو ٽائم آئوٽ قدر تمام گهڻو آهي، ڇاڪاڻ ته 1 سيڪنڊن ۾ مشروط هزارين ڊيٽا شيون گڏ ڪرڻ بجاءِ ”ڀاري“ اڳڀرائي واري منظرنامي مطابق زبڪس کي سست ڪري سگهي ٿو. تنهن ڪري، اها سفارش نه ڪئي وئي آهي ته اڳي پروسيسنگ استعمال ڪرڻ لاءِ مڪمل جاوا اسڪرپٽ اسڪرپٽ تي عمل ڪرڻ لاءِ نام نهاد شيڊ ڊيٽا عنصرن (ڊمي آئٽمز) ذريعي، جيڪي صرف پري پروسيسنگ انجام ڏيڻ لاءِ هلن ٿيون..

توھان پنھنجو ڪوڊ چيڪ ڪري سگھوٿا اڳي پروسيسنگ ٽيسٽ ذريعي يا استعمال ڪندي استعمال ڪندي zabbix_js:

`zabbix_js -s *script-file -p *input-param* [-l log-level] [-t timeout]`

`zabbix_js -s script-file -i input-file [-l log-level] [-t timeout]`

`zabbix_js -h`

`zabbix_js -V`

عملي ڪم

مقصد 1

تبديل ڪريو ڳڻپيوڪر شين کي اڳڀرائي سان.

حالت: حاصل ڪريو درجه حرارت فارن هائٽ ۾ سينسر کان سيلسيس ۾ ذخيرو ڪرڻ لاءِ.

اڳي، اسان هڪ شيء ٺاهي سگهنداسين جيڪا درجه حرارت کي درجا فارنهائيٽ ۾ گڏ ڪري. ان کان پوء، هڪ ٻيو ڊيٽا شيون (حساب ڪيو ويو) جيڪو فارمولا استعمال ڪندي فارنهائيٽ کي سيلسيس ۾ تبديل ڪندو.

پريشاني:

  • اهو ضروري آهي ته ڊيٽا عناصر کي نقل ڪرڻ ۽ ڊيٽابيس ۾ سڀني قدرن کي ذخيرو ڪرڻ لاء.
  • توهان کي "والدين" ڊيٽا آئٽم لاءِ وقفن تي متفق ٿيڻ گهرجي جيڪو حساب ڪيو ويو آهي ۽ فارمولا ۾ استعمال ڪيو ويو آهي، ۽ حساب ڪيل ڊيٽا جي شيءِ لاءِ. ٻي صورت ۾، ترتيب ڏنل شيون هڪ غير معاون رياست ۾ ٿي سگھي ٿو يا پوئين قيمت جي حساب سان، جيڪو نگراني جي نتيجن جي اعتبار کي متاثر ڪندو.

هڪ حل اهو هو ته لچڪدار چيڪ وقفن کان پري وڃڻ لاءِ مقرر وقفن جي حق ۾ ان ڳالهه کي يقيني بڻائڻ لاءِ ته ڪمپيوٽيڊ آئٽم جو جائزو ورتو وڃي ان شئي کان پوءِ جيڪا ڊيٽا حاصل ڪري ٿي (اسان جي صورت ۾، درجه حرارت درجا فارنهائيٽ ۾).

پر جيڪڏهن، مثال طور، اسان وڏي تعداد ۾ ڊوائيسز کي چيڪ ڪرڻ لاء ٽيمپليٽ استعمال ڪندا آهيون، ۽ چيڪ هر 30 سيڪنڊن ۾ هڪ ڀيرو ڪيو ويندو آهي، زيبڪس "هيڪس" 29 سيڪنڊن لاء، ۽ آخري سيڪنڊ تي اهو چيڪ ڪرڻ ۽ حساب ڪرڻ شروع ٿئي ٿو. اهو هڪ قطار ٺاهي ٿو ۽ ڪارڪردگي کي متاثر ڪري ٿو. تنهن ڪري، اها سفارش ڪئي وئي آهي ته مقرر وقفن کي استعمال ڪرڻ لاء صرف جيڪڏهن اهو واقعي ضروري آهي.

ھن مسئلي ۾، بھترين حل ھڪڙو لڪير جاوا اسڪرپٽ پري پروسيسنگ آھي جيڪو درجا فارن ھائيٽ کي درجا سينس ۾ تبديل ڪري ٿو:

`return (value - 32) * 5 / 9;`

اهو تيز ۽ آسان آهي، توهان کي غير ضروري ڊيٽا شيون ٺاهڻ ۽ انهن تي تاريخ رکڻ جي ضرورت ناهي، ۽ توهان چيڪن لاءِ لچڪدار وقفو پڻ استعمال ڪري سگهو ٿا.

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا

`return (parseInt(value) + parseInt("{$EXAMPLE.MACRO}"));`

پر، جيڪڏهن هڪ فرضي صورتحال ۾ اهو ضروري آهي ته حاصل ڪيل ڊيٽا عنصر کي شامل ڪيو وڃي، مثال طور، ميڪرو ۾ بيان ڪيل ڪنهن به مسلسل سان، ان کي لازمي طور تي غور ڪيو وڃي ته پيٽرولر قدر تار ۾ وڌائي ٿو. هڪ اسٽرنگ اضافي آپريشن ۾، ٻه تار صرف هڪ ۾ گڏيل آهن.

اسان جاوا اسڪرپٽ استعمال ڪندي Zabbix ۾ عملي مسئلا حل ڪريون ٿا

`return (value + "{$EXAMPLE.MACRO}");`

رياضياتي آپريشن جو نتيجو حاصل ڪرڻ لاء، حاصل ڪيل قدرن جي قسمن کي عددي شڪل ۾ تبديل ڪرڻ ضروري آھي. هن لاء توهان فنڪشن استعمال ڪري سگهو ٿا parseInt()، جيڪو هڪ عدد، هڪ فعل پيدا ڪري ٿو parseFloat()، جيڪو هڪ decimal، يا هڪ فنڪشن پيدا ڪري ٿو نمبر، جيڪو هڪ عدد يا اعشاريه ڏي ٿو.

ڪم 2

سرٽيفڪيٽ جي آخر تائين سيڪنڊن ۾ وقت حاصل ڪريو.

حالت: هڪ خدمت "فيبروري 12 12:33:56 2022 GMT" فارميٽ ۾ سرٽيفڪيٽ جي ختم ٿيڻ جي تاريخ جاري ڪري ٿي.

ECMAScript5 ۾ date.parse() ISO 8601 فارميٽ ۾ تاريخ قبول ڪري ٿي (YYYY-MM-DDTHH:mm:ss.sssZ). اهو ضروري آهي ته ان کي فارميٽ MMM DD YYYY HH:mm:ss ZZ ۾ ڪاسٽ ڪيو وڃي

مسئلو: مهيني جو قدر متن جي طور تي ظاهر ڪيو ويو آهي، نه هڪ نمبر جي طور تي. هن فارميٽ ۾ ڊيٽا Duktape طرفان قبول نه آهي.

حل جو مثال:

  • سڀ کان پهريان، هڪ متغير جو اعلان ڪيو ويو آهي جيڪو هڪ قدر وٺندو آهي (سڄو اسڪرپٽ متغيرن جو اعلان آهي جيڪو ڪاما سان الڳ ٿيل فهرست آهي).

  • پهرين لڪير ۾ اسان کي تاريخ ملي ٿي پيٽرول ۾ قدر ۽ طريقو استعمال ڪندي ان کي اسپيس سان الڳ ڪريو تقسيم. اهڙيء طرح، اسان هڪ صف حاصل ڪندا آهيون، جتي صف جو هر عنصر، انڊيڪس 0 تي شروع ٿئي ٿو، هڪ جڳهه کان اڳ ۽ بعد ۾ هڪ تاريخ عنصر سان ملندو آهي. ورهاڱو (0) - مهينو، ورهاڱو (1) - نمبر، ورهاڱو (2) - وقت سان گڏ هڪ اسٽرنگ، وغيره. ان کان پوء، تاريخ جي هر عنصر کي ترتيب ۾ انڊيڪس ذريعي پهچائي سگهجي ٿو.

`var split = value.split(' '),`

  • هر مهيني (تاريخ جي ترتيب ۾) صف ۾ ان جي پوزيشن جي انڊيڪس سان ملندو آهي (0 کان 11 تائين). متن جي قيمت کي عددي قدر ۾ تبديل ڪرڻ لاءِ، ھڪڙو مھيني جي انڊيڪس ۾ شامل ڪيو ويو آھي (ڇاڪاڻ ته مھينن جو تعداد 1 کان شروع ٿئي ٿو). انهي حالت ۾، هڪ جي اضافي سان اظهار کي بریکٹس ۾ ورتو وڃي ٿو، ڇاڪاڻ ته ٻي صورت ۾ هڪ تار حاصل ڪيو ويندو، نمبر نه. آخر ۾ اسان ڪندا آهيون ٽڪرا () - صرف ٻه اکر ڇڏڻ لاءِ آخر کان صف کي ڪٽيو (جيڪو ٻن عددن واري نمبر سان مهينن لاءِ اهم آهي).

`MONTHS_LIST = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],`

`month_index = ('0' + (MONTHS_LIST.indexOf(split[0]) + 1)).slice(-2),`

  • اسان حاصل ڪيل قدرن مان ISO فارميٽ ۾ اسٽرنگ ٺاهيندا آهيون مناسب ترتيب ۾ اسٽرنگ جي معمولي اضافو سان.

`ISOdate = split[3] + '-' + month_index + '-' + split[1] + 'T' + split[2],`

نتيجن واري شڪل ۾ ڊيٽا 1970 کان مستقبل ۾ ڪجهه نقطي تائين سيڪنڊن جو تعداد آهي. ٽريگرز ۾ حاصل ڪيل فارميٽ ۾ ڊيٽا استعمال ڪرڻ لڳ ڀڳ ناممڪن آهي، ڇاڪاڻ ته Zabbix توهان کي صرف ميڪرو سان هلائڻ جي اجازت ڏئي ٿو. {تاريخ} и {وقت}، جيڪو صارف دوست فارميٽ ۾ تاريخ ۽ وقت واپس ڪري ٿو.

  • اسان پوءِ حاصل ڪري سگھون ٿا موجوده تاريخ جاوا اسڪرپٽ ۾ يونڪس ٽائم اسٽيمپ فارميٽ ۾ ۽ ان کي ختم ڪري سگھون ٿا نتيجي جي سرٽيفڪيٽ جي ختم ٿيڻ جي تاريخ کان وٺي مليس سيڪنڊن جو تعداد حاصل ڪرڻ لاءِ جيستائين سرٽيفڪيٽ ختم نه ٿئي.

`now = Date.now();`

  • اسان زيبڪس ۾ سيڪنڊ حاصل ڪرڻ لاءِ حاصل ڪيل قيمت کي هزار کان ورهايو.

`return parseInt((Date.parse(ISOdate) - now) / 1000);`

ٽريگر ۾، توھان بيان ڪري سگھو ٿا اظهار 'آخري' پٺيان انگن جو هڪ سيٽ جيڪو انهي عرصي ۾ سيڪنڊن جي تعداد سان ملندو آهي جنهن ۾ توهان جواب ڏيڻ چاهيو ٿا، مثال طور، هفتن ۾. اهڙيء طرح، ٽرگر کي اطلاع ڏيندو ته سرٽيفڪيٽ هڪ هفتي ۾ ختم ٿي ويندو.

نوٽيس. استعمال تي Payيان ڏيو parseInt() فنڪشن ۾ موٽڻملئي سيڪنڊن جي ورهاڱي جي نتيجي ۾ جزوي عدد کي انٽيجر ۾ تبديل ڪرڻ لاءِ. توهان پڻ استعمال ڪري سگهو ٿا parseFloat() ۽ جزوي ڊيٽا محفوظ ڪريو.

رپورٽ ڏسو

جو ذريعو: www.habr.com

تبصرو شامل ڪريو