বিয়ারওয়ে ভিত্তিক প্রোগ্রামিং এফ # [2]

ভূমিকা

এই ব্লগ পোস্টে আমরা পূর্বের ব্লগ পোস্টটি থেকে যেখানেই রেখে এসেছি সেখানে চালিয়ে যাই। আমরা নিম্নলিখিতটি করতে চাই:

  1. আক্ষরিকরটি কনফিগার করুন যাতে অত্যধিক হার্ড-কোডেড মম্বো জম্বো কোনওটিই অবিরত না হয়ে। প্রক্রিয়া শুরু হওয়ার সাথে সাথে আমরা আমাদের কনফিগারেশনগুলি সংরক্ষণ করি যা মোঙ্গোডিবি থেকে এমএলএবির মাধ্যমে লোড হয়। মঙ্গো সার্ভারের সাথে সংযোগ করতে ব্যবহৃত সংযোগ স্ট্রিংয়ের একমাত্র হার্ড-কোডিং মান value
  2. বিভিন্ন ব্রুয়ারির জন্য পাইপলাইনটি কার্যকর করার জন্য শিডিয়ুলার সাধারণকরণ।
  3. সময় মতো প্রক্রিয়া চালানোর পরিকল্পনা করুন।
  4. মঙ্গোডিবির উপর স্থায়ী স্ক্র্যাচগুলি।

আমরা এক্সপেক্টোর ব্যবহার পরীক্ষা করব এবং এই সিরিজের তৃতীয় ব্লগ পোস্টে লোগারি দিয়ে লগিং যুক্ত করব।

উদ্যতি

নোডিফারেন্স কেসের চিকিত্সা সম্পর্কে আমি অ্যাটল রুডশাগের কাছ থেকে একটি দুর্দান্ত টিপ পেয়েছি। আমাদের নোডিফারেন্স কেসটিকে সাফল্য হিসাবে ধরা উচিত। কোনও পার্থক্য না পাওয়া গেলে, কোনও পাঠ্য প্রেরণ করবেন না।

আমাদের পরিবর্তিত ত্রুটি মডিউলটি এখন এটির মতো দেখাচ্ছে:

ফাংশনটির সাথে তুলনা করুন, যা এখন কেবল বর্তমান এবং পূর্ববর্তী স্ক্র্যাচের মধ্যে পার্থক্য গণনা করে।

সেট করার পার্থক্যটির কার্ডিনালটির ভিত্তিতে কোনও পাঠ্য প্রেরণ করা উচিত কিনা তা বিজ্ঞপ্তি ফাংশনটি অবশ্যই নির্ধারণ করতে হবে।

পাইপলাইনের সাধারণীকরণের দিক নির্ধারণ করতে আমরা "নাম" নামে আমাদের ডেটা সেটে একটি নতুন "স্ট্রিং" টাইপ উপাদান যুক্ত করি, যা পরে হাইলাইট করা হবে।

আপডেট হওয়া রেকর্ড টাইপ এবং চিরনের স্থির উপাদান সহ আমাদের বিয়ারআইএনএফ.এফ.এস ফাইলটি এখন এ জাতীয় দেখাচ্ছে:

কনফিগারেশন এবং সাধারণীকরণ

আসুন সমস্ত হার্ড-কোডড আক্ষরিক হাত থেকে মুক্তি দিন এবং পাইপলাইনটিকে কেবল ক্লান্ত হাতের পরিবর্তে ব্রুয়ারির তালিকায় সাধারণীকরণ করুন। এখন পর্যন্ত আমরা সাধারণ উপাদানগুলি পৃথক করার জন্য একটি ভাল কাজ করেছি। আমরা আরও ভাল করতে পারি! আসুন সমস্ত কনফিগারেশন মেঘে সরানো যাক এবং পাইপলাইনটিকে সাধারণীকরণ করুন।

গঠন

সমস্ত কনফিগারেশন বিশদ রাখতে আমরা এমএলএবির বিনামূল্যে স্তর ব্যবহার করব। প্রথমে আমরা "বিয়ারওরিয়েন্টেড প্রোগ্রামিং" নামে একটি ডাটাবেস তৈরি করি এবং কনফিগারেশন সংগ্রহটি যুক্ত করি। এটি মোটামুটি সহজ প্রক্রিয়া হওয়া উচিত। এমএলএব ইউজার ইন্টারফেস দুর্দান্ত! আপনার যদি কোনও সমস্যা হয় তবে নির্দ্বিধায় আমার সাথে যোগাযোগ করুন।

কনফিগারেশন সংগ্রহে প্রাথমিকভাবে আমাদের টিউলিও বিশদ সহ একটি দস্তাবেজ থাকা উচিত। আমরা এখানে আরও ক্ষেত্র যুক্ত করতে চাইলে আমরা পরে সিদ্ধান্ত নিতে পারি।

একবার রক্ষণাবেক্ষণ করার পরে, কনফিগারেশন সংগ্রহটি এরকম কিছু দেখায়:

_ "_I will": {$ oid: 5976bcc1734d1d6202aa1556}, "মাইফোন নাম্বার": "আপনার ফোন নম্বর", "অ্যাকাউন্টসআইডি": "আপনার টুইলি অ্যাকাউন্ট সিড", "অউথটোকেন": "আপনার টুইলিও লেখার টোকেন", "আপনার পাঠানো হচ্ছে": "আপনার টুইলি ফোন নম্বর প্রেরণ করছে ""

ডাটাবেসের সাথে যোগাযোগ

এরপরে আমরা প্যাকেজের মাধ্যমে মঙ্গোকসার্পড্রাইভার এবং মঙ্গোবিবিএফএস্প শার্পের রেফারেন্স যুক্ত করব। কীভাবে এটি করবেন তা আপনি যদি নিশ্চিত না হন তবে দয়া করে পূর্ববর্তী পোস্টটি পড়ুন, এতে প্যাক ব্যবহারের তথ্য রয়েছে এবং নির্ভরতাগুলি সফলভাবে উল্লেখ করা হয়েছে কিনা তা পরীক্ষা করুন।

ত্রুটি মডিউলটির আগে, আমরা "কমন.এফএস" ফাইলটিতে "ডিবি" নামে একটি নতুন মডিউল তৈরি করি, যা আমাদের ডাটাবেস-সম্পর্কিত সমস্ত ফাংশন ধারণ করে। এছাড়াও, জেএসওএন ফাইলের ডিসিরিয়ালাইজেশন / সিরিয়ালাইজেশনের সমস্ত কোড, যা আমরা আগে তুলনা মডিউলে কাজ করেছি, তা সরানো হয়েছে।

কেবলমাত্র আক্ষরিক যা হার্ড-কোডেড তা হ'ল সংযোগ স্ট্রিং। [আপনি যদি সৃজনশীল হতে চান তবে আপনি এফএসহার্প.কনফিগারেশন লাইব্রেরি ব্যবহার করে একটি কনফিগারেশন ফাইলে রাখতে পারেন]]

সব মিলিয়ে ডিবি মডিউলটি দেখতে এমন দেখাচ্ছে:

মঙ্গো + এফ # সিআরইউডি সম্পর্কিত আরও বিবরণ আমার আগের ব্লগ পোস্টে পাওয়া যাবে, যা আপনি এখানে খুঁজে পেতে পারেন। এবং কনফিগারেশনের পরিবর্তিত অ্যালার্ম মডিউলটি এখন এটির মতো দেখাচ্ছে:

সাধারণীকরণ

কেবলমাত্র ব্রুওয়ারি-নির্দিষ্ট কোডটি মদ্যপান-নির্দিষ্ট পার্সার এবং মূল ফাংশন ফাইলে রয়েছে যা মদ্যপান করার জন্য পাইপলাইন ধারণ করে। ব্রিউয়ারের নামের উপর ভিত্তি করে জেসন ফাইল তৈরি করতে আমাদের তুলনা মডিউলটি পরিবর্তন করতে হবে।

পরিবর্তিত বিয়ারওয়েয়েন্টেড প্রোগ্রামিং মডিউলটি এখন দেখে মনে হচ্ছে:

এবং তুলনা মডিউলে পরিবর্তিত তুলনা ফাংশনটি এখন এর মতো দেখায়:

পরিকল্পক

পরবর্তী পদক্ষেপটি একটি টাইমারে ব্রুয়ারি পাইপলাইনগুলি চালনার জন্য একটি শিডিয়ুলার সেটআপ করা। এর জন্য আমরা প্যাকেজের মাধ্যমে পরিকল্পনার জন্য কোয়ার্টজ.এনইটি ডাউনলোড করি।

এই এফ # স্নিপেটের পরে, আমরা সহজেই সকল ব্রুয়ারির মধ্য দিয়ে যাওয়ার জন্য একটি পরিকল্পিত প্রক্রিয়া সেট আপ করতে পারি এবং চিরকালের জন্য প্রতি 2 সেকেন্ডের জন্য বিশদ বিশ্লেষণ করতে পারি।

আমরা আমাদের বিয়ার সংগ্রহের সাথে ঝাঁকুনি রাখি না, তবে বিয়ারটি সংস্থা পর্যায়ে বাজুকা পায় এমন প্রক্রিয়াটি তৈরি করি।

অবিচ্ছিন্ন স্ক্র্যাচগুলি

পরিশেষে, আসুন আমরা "বিয়ারওয়ে-ওরিয়েন্টেড প্রোগ্রামিং" এর সাথে একই স্ক্র্যাপগুলি একই মঙ্গোডিবি ডাটাবেসে সংরক্ষণের সম্ভাবনা যুক্ত করি।

একই কারণে যে আমরা আমাদের প্রক্রিয়াটিকে সাধারণীকরণ করি যাতে অন্যান্য মদ্যপানকারী পার্সার সহজেই যুক্ত করা যায়, আমরা JSON সিরিয়ালাইজেশন অপসারণের পরে এবং একটি ফাইলের বাইরে বের করে দেওয়ার পরে ব্রিউয়ারের নামের উপর ভিত্তি করে ডাটাবেসের সংগ্রহগুলি নামকরণ করব a আছে।

প্রথমে, বিয়ারআইএনফো রেকর্ড টাইপটি যাচাই করে এবং চিরন ভিত্তিক স্ট্যাটিক উপাদানগুলি সরানোর পরে বিসনঅবজেক্টআইড মোঙ্গোডিবি আইডি যুক্ত করে সমস্ত পুরানো জেএসএন সিরিয়ালাইজেশন এবং ডিসরিয়ালাইজেশন উপাদানগুলি সরিয়ে ফেলুন।

নতুন বিয়ারআইনফোর মডিউলটি দেখতে এমন দেখাচ্ছে:

যদি আপনি খেয়াল করেন, আমরা বিয়ার টাইপটি এফশার্প তালিকা থেকে ওয়ান-এ পরিণত করেছি en জেনেরিক.কলেকশনগুলি সি # মঙ্গোডিবি ড্রাইভারের সাথে মেলে যা এফ # ওয়ান তৈরি হয়েছিল।

আমরা এখন চিরনের রেফারেন্সটি সরিয়ে ফেলব কারণ আমাদের আর এটির প্রয়োজন নেই। এটি করার জন্য, কমান্ড প্যালেট [সিএমডি + শিফট + পি] খুলুন এবং, fsproj ফাইলটি খোলার পরে, নিম্নলিখিতভাবে পকেটের অপসারণের রেফারেন্সে নেভিগেট করুন:

একবার চিরনের রেফারেন্সটি সরিয়ে ফেলা হয়ে গেলে, আমরা আমাদের ডিবি মডিউলে এমন কিছু পদ্ধতি যুক্ত করব যা নতুন আইডি তৈরি করতে এবং পূর্ববর্তী স্ক্র্যাপটি পাওয়ার জন্য প্রাসঙ্গিক।

ব্রোয়ারির নাম সহ সংগ্রহটি পাওয়ার চেষ্টা করার সময় যদি কোনও ব্যতিক্রম ঘটে, তবে ব্লক সহ এটিতে পুনরায় তৈরি করার চেষ্টা করা হচ্ছে।

আমরা শেষ স্ক্র্যাপটি ধরে স্ক্র্যাপগুলি তুলনা মডিউল থেকে ডিবি মডিউলে রাখার জটিলতা হ্রাস করেছি। আমরা শেষ স্ক্র্যাপটি নাল কিনা তা পরীক্ষা করে দেখি [ফার্স্ট ওআরডিফাল্ট () ব্যবহার করার সাথে সাথে ন্যূনযোগ্যতা পরীক্ষা করতে এটি কোনও বস্তুকে রূপান্তরিত করার পরে]।

আমাদের আপডেট হওয়া টায়ার্ডহ্যান্ডসক্র্যাপার.স্ক্র্যাপ ফাংশনটি এখন এর মতো দেখাচ্ছে:

GetBeerNamesFromTiredHands ফাংশনটি দেখতে এমন দেখাচ্ছে:

তদতিরিক্ত, আমাদের তুলনা মডিউল উল্লেখযোগ্যভাবে সরলীকৃত হয়েছে:

আমাদের স্ক্র্যাপগুলি অবিরত রয়েছে তা দুর্দান্ত, যা ক্লান্তহান্ড সংগ্রহের মধ্যে আমাদের নথিগুলি পরীক্ষা করে নিশ্চিত করা যায়:

উপসংহার

আমরা কনফিগারেশন যোগ, সাধারণীকরণ, পরিকল্পনা এবং রক্ষণাবেক্ষণের মাধ্যমে অবশ্যই অবশ্যই দীর্ঘ পথ পাড়ি দিয়েছি। ইতিমধ্যে উল্লিখিত হিসাবে, এই সিরিজের পরবর্তী এবং শেষ পোস্টে একবারের সহজ অ্যাপ্লিকেশনটিকে পুরোপুরি বিকাশযুক্ত রূপে রূপান্তর করতে কিছু পরীক্ষা এবং লগিং রয়েছে।

আমি আপনার মতামত পেয়ে সর্বদা খুশি!