কোন বিন্যাসে কোন প্রোগ্রামিং প্রোগ্রামিং ভাষাতে পরিণত হয়?


92

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

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

আমি যখন মঞ্চটি নির্ধারণ করতে ছুটে এসেছি, আমার প্রশ্নগুলি এখানে:

  1. কনফিগার ফাইলের আসল উদ্দেশ্য কী?
  2. কনফিগারেশন ফাইলগুলি সরল রাখার চেষ্টা করা উচিত?
  3. তাদের (বিকাশকারী, ব্যবহারকারী, প্রশাসক, ইত্যাদি) পরিবর্তন করার জন্য দায়বদ্ধ হওয়া উচিত কে?
  4. তাদের উত্স নিয়ন্ত্রিত করা উচিত (প্রশ্ন 3 দেখুন)?

যেমন আমি আগে বলেছি এই প্রশ্নগুলির আমার উত্তরগুলি ক্রমাগত স্থানান্তরিত হয়, তবে এখনই আমি ভাবছি:

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

23
যখন তারা টুরিং-সম্পূর্ণ হয়, অবশ্যই!
এআইব

4
নিয়মিত এক্সপ্রেশন টিউরিং-সম্পূর্ণ নয়, তবে এখনও কম্পিউটারের ভাষা হিসাবে বিবেচিত হয়।
চস ওয়েন্স

"ফাইলগুলি" কিছু কনফিগার অবস্থার জন্য সত্যই পর্যাপ্ত নয়। অতএব gconf এর মতো সিস্টেমের অস্তিত্ব।
আলী আফশার

4
Gconf এবং একটি ফাইলের মধ্যে কোনও আসল পার্থক্য নেই। Gconf মেমরির প্রতিনিধিত্বমূলক ফাইলগুলির সাথে কেবলমাত্র ডাইরেক্টরিগুলির একটি সিরিজ। এমনকি আপনি যদি কোনও আরডিবিএমএস আনতে চান তবে এটি একটি একক ফাইল দ্বারা উপস্থাপন করা যেতে পারে। সমস্যাটি হ'ল একটি কনফিগার ফাইলে কতটা জটিলতা নিরাপদ / ভাল।
চস ওয়েন্স

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

উত্তর:


40

খুব মজার প্রশ্ন!

আমি আমার কনফিগার ফাইলগুলিকে খুব সাধারণ "কী = মান" ফর্ম্যাটে সীমাবদ্ধ রাখি, কারণ কনফিগার ফাইলগুলি খুব দ্রুত পূর্ণ-বর্ধমান প্রোগ্রামে পরিণত হতে পারে বলে আমি আপনার সাথে পুরোপুরি একমত। উদাহরণস্বরূপ, যে কেউ ওপেনএসইআর "কনফিগার" করার চেষ্টা করেছেন সে আপনার অনুভূতিটি সম্পর্কে জানে: এটি কনফিগারেশন নয়, এটি (বেদনাদায়ক) প্রোগ্রামিং।

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

সুতরাং, আপনার প্রশ্নের উত্তর দিতে:

  1. কনফিগার ফাইলের আসল উদ্দেশ্য কী?

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

  2. কনফিগারেশন ফাইলগুলি সরল রাখার চেষ্টা করা উচিত?

    স্পষ্টভাবে. আপনি প্রস্তাব হিসাবে, একটি কনফিগার ফাইলে "প্রোগ্রামিং" ভয়ঙ্কর। আমি বিশ্বাস করি এটি এড়ানো উচিত।

  3. তাদের (বিকাশকারী, ব্যবহারকারী, প্রশাসক, ইত্যাদি) পরিবর্তন করার জন্য দায়বদ্ধ হওয়া উচিত কে?

    সাধারণভাবে, আমি অ্যাডমিনদের বলব, যারা অ্যাপ্লিকেশন স্থাপন করেন।

  4. তাদের উত্স নিয়ন্ত্রিত করা উচিত (প্রশ্ন 3 দেখুন)?

    আমি সাধারণত কনফিগারেশন ফাইলগুলিকে নিজেরাই সোর্স-নিয়ন্ত্রণ করি না , তবে সমস্ত পরামিতি এবং তাদের ডিফল্ট মানগুলি এবং তারা কী করে তা বর্ণনা দিয়ে আমি কোনও টেম্পলেট কনফিগারেশন ফাইল উত্স-নিয়ন্ত্রণ করি। উদাহরণস্বরূপ, যদি কোনও কনফিগারেশন ফাইলটির নাম দেওয়া হয় তবে database.confআমি সাধারণত একটি ফাইল উত্স-নিয়ন্ত্রণ করি database.conf.template। এখন অবশ্যই আমি ডেভেলপার হিসাবে কী করি সে সম্পর্কে বলছি । প্রশাসক হিসাবে , আমি প্রতিটি ইনস্টলেশনের জন্য যে আসল সেটিংসটি বেছে নিয়েছি তার উত্স-নিয়ন্ত্রণ করতে চাই। উদাহরণস্বরূপ, আমরা কয়েক শতাধিক সার্ভারকে দূর থেকে পরিচালনা করি এবং আমাদের তাদের কনফিগারেশনগুলি ট্র্যাক করে রাখা দরকার: আমরা উত্স-নিয়ন্ত্রণ দিয়ে এটি করতে বেছে নিয়েছি।


সম্পাদনা করুন: যদিও আমি বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য উপরেরটিকে সত্য বলে বিশ্বাস করি তবে অবশ্যই সর্বদা ব্যতিক্রম রয়েছে। উদাহরণস্বরূপ, আপনার অ্যাপ্লিকেশনটি তার ব্যবহারকারীদেরকে জটিল নিয়মগুলি গতিশীলভাবে কনফিগার করার অনুমতি দিতে পারে। বেশিরভাগ ইমেল ক্লায়েন্ট ব্যবহারকারীদের তাদের ইমেল পরিচালনার জন্য নিয়মগুলি সংজ্ঞায়িত করার অনুমতি দেয় (উদাহরণস্বরূপ, "জন দো 'থেকে আসা সমস্ত ইমেল এবং আমাকে: ক্ষেত্রের মধ্যে না রেখে" বাতিল করা উচিত ")। আরেকটি উদাহরণ হ'ল একটি অ্যাপ্লিকেশন যা ব্যবহারকারীকে একটি নতুন জটিল বাণিজ্যিক অফার সংজ্ঞায়িত করতে দেয়। আপনি কোগনসের মতো অ্যাপ্লিকেশনগুলি সম্পর্কেও ভাবতে পারেন যা তাদের ব্যবহারকারীদেরকে জটিল ডাটাবেস প্রতিবেদন তৈরি করতে দেয়। ইমেল ক্লায়েন্ট সম্ভবত ব্যবহারকারীকে নিয়মগুলি সংজ্ঞায়িত করার জন্য একটি সাধারণ ইন্টারফেস প্রস্তাব করবে এবং এটি একটি জটিল কনফিগারেশন ফাইল (বা এমনকি কোডের একটি বিট) তৈরি করবে। অন্য দিকে, বাণিজ্যিক অফারগুলির জন্য ব্যবহারকারী-সংজ্ঞায়িত কনফিগারেশনটি কোনও কাঠামোগত উপায়ে (কোনও সাধারণ কী = মান কাঠামো বা কোডের কোনও অংশ নয়) কোনও ডাটাবেজে সংরক্ষণ করা যেতে পারে। এবং কিছু অন্যান্য অ্যাপ্লিকেশন এমনকি অজগর বা ভিবি, বা অন্য কোনও অটোমেশন-সক্ষম ভাষায় কোড দেওয়ার অনুমতি দেয়। অন্য কথায় ... আপনার মাইলেজ আলাদা হতে পারে।


10

ঠিক আছে. আপনার এমন কিছু ব্যবহারকারী থাকবে যা প্রকৃতপক্ষে একটি সাধারণ কনফিগারেশন চায়, তাদের এটি দেওয়া উচিত। একই সময়ে, আপনার কাছে "আপনি কি এটি যুক্ত করতে পারেন? কনফিগার ফাইলে আমি কীভাবে করব?" এর ক্রমাগত অনুরোধ থাকবে, কেন আপনি উভয় গ্রুপকে সমর্থন করতে পারবেন না তা আমি দেখছি না।

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

আপনি লক্ষ করবেন যে এটি মূলত কী = মান বিবৃতি, যেখানে মান লুয়ার অন্তর্নির্মিত যে কোনও ধরণের হতে পারে। সবচেয়ে জটিল জিনিস তালিকাগুলি রয়েছে এবং সেগুলি আসলে জটিল নয় (এটি সিনট্যাক্সের বিষয় মাত্র)।

এখন আমি অপেক্ষা করছি কারও কাছে জিজ্ঞাসার জন্য কীভাবে তাদের সার্ভারের বন্দরটি এলোমেলো মান হিসাবে সেট করা যায় প্রতিবার ...


4
একটি আসল প্রোগ্রামিং ভাষা ব্যবহারের জন্য +1, একটি কনফিগার ফাইল থেকে একজনকে বাড়িয়ে দেওয়ার চেয়ে অনেক
নিকৃষ্ট

+1 - এটি সঠিক পদ্ধতির। যারা নতুন তাদের জন্য লুয়ার খুব "কনফিগার-মত" সিনট্যাক্স রয়েছে। এবং যারা নেই তাদের জন্য শক্তিশালী ম্যানিপুলেশনগুলির অনুমতি দেয়।
অ্যান্ড্রু ওয়াই

8

সম্প্রতি আমি একটি প্রকল্পে কাজ করছিলাম এবং আমি বুঝতে পেরেছিলাম যে আমার কনফিগারেশন ফাইলের ভিতরে শর্তসাপেক্ষ রাখতে চাই - যা ফর্মটির মধ্যে আগে খুব সহজ ছিল:


key = val
key2 = val
name = `hostname`

আমি একটি মিনি-ভাষা লিখতে চাইনি, কারণ আমি এটি খুব যত্ন সহকারে না করলে আমি যে নমনীয়তাটি কার্যকর হব তা করতে পারতাম না।

পরিবর্তে আমি সিদ্ধান্ত নিয়েছি যে আমার দুটি ফর্ম রয়েছে:

  1. যদি ফাইল "#" দিয়ে শুরু হয়! এবং কার্যকর ছিল আমি এটি চালানোর ফলাফল পার্স।

  2. অন্যথায় আমি এটি যেমনটি পড়তাম

এর অর্থ হ'ল আমি এখন লোকেদের "কনফিগারেশন ফাইলগুলি" লেখার মঞ্জুরি দিতে পারি যা দেখতে দেখতে এটি:

 #!/usr/bin/perl
if ( -x /bin/foo ) 
{
   print <<EOF;
foo=me
bar=you
EOF
}
else
{
   print <<EOF;
foo=bar
bar=foo
EOF
}

এইভাবে আমি ব্যবহারকারীর এটি ব্যবহার করতে চাইলে একটি গতিশীল কনফিগারেশন ফাইলের শক্তি এবং আমার নিজের মিনি-ভাষা না লেখার সরলতা পেয়েছি।


5

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


3

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

আমি কেবল ডেটা স্টোরগুলিতে নির্দেশ করার জন্য কনফিগার ফাইল ব্যবহার করি।


3

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

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


2

এখানে আমার চিন্তাভাবনাগুলি:

  1. কোনও অ্যাপ্লিকেশনটির রানটাইম আচরণ সহজেই সংশোধন করা যায়। এটি প্রয়োজনীয়তার উপর নির্ভর করে প্রোগ্রামার বা নন প্রোগ্রামারদের দ্বারা হতে পারে। এটি বিকাশের সময় হতে পারে তবে কোনও প্রোগ্রামে যে কোনও সময়ে আরও নমনীয় করে তুলতে সহায়তা করার উপায় হিসাবে আমি প্রায়শই কনফিগারেশন ফাইলগুলি দেখি।

  2. হ্যাঁ. আমি মনে করি কনফিগারেশন ফাইলগুলি যথাসম্ভব সহজ হওয়া উচিত, এই প্রতিবন্ধকতার কারণে যে আপনার রানটাইমের বিভিন্ন আচরণ নিয়ন্ত্রণ করতে আপনার বিভিন্ন বিকল্পের প্রয়োজন হতে পারে। আমি গ্রুপিং কনফিগারেশন সেটিংস পছন্দ করি এবং তাদের যথাসম্ভব সরলকরণ করি।

  3. কী এবং কেন পরিবর্তন করা হচ্ছে তার উপর নির্ভর করে। যদি ব্যবহারকারীরা এটি পরিবর্তন করতে চলেছে, তবে তাদের বিশদ থেকে আড়াল করার জন্য একটি ফ্রন্ট-এন্ড তৈরি করা উচিত। সাধারণভাবে অ-বিকাশকারীদের ক্ষেত্রেও একই ঘটনা ঘটে।

  4. আমি প্রায়শই সোর্সটি "ডিফল্ট" কনফিগারেশন নিয়ন্ত্রণ করি তবে প্রকৃত রানটাইমের জন্য প্রতি সিস্টেমটিকে এই ওভাররাইড করার উপায় আছে।

কনফিগ ফাইলে যুক্তি যুক্ত করার জন্য - আমি এটি এড়াতে চাই। আমি মনে করি আপনার অ্যাপ্লিকেশনটিতে যুক্তিটির জন্য কনফিগারেশন ফাইল স্যুইচ করা ভাল। কনফিগার ফাইলগুলিতে আচরণ আমার অভিজ্ঞতায় রক্ষণাবেক্ষণযোগ্যতা এবং বোঝার অভাবকে ডেকে আনে। আমি দৃ configuration়ভাবে কনফিগারেশন ফাইলগুলি যথাসম্ভব সহজ রাখা পছন্দ করি।


2

আমি এই প্রশ্নের ভিত্তিতে একমত হতে ঝোঁক। এটি ঘটতে চলেছে এমন প্রাথমিকভাবে ভবিষ্যদ্বাণী করে আমি নিজেকে সমস্যায় পড়তে এড়াচ্ছি এবং তাই আমার নিজের কনফিগারেশন সিস্টেমটি কখনই রোল করব না

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

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

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


1

এটি দলের অন্যান্য বিকাশকারীদের সাথে আপনি কী সম্মত হন তার উপর নির্ভর করে। আপনি কি কনফিগারেশন ফাইলগুলি কনফিগার ফাইল হিসাবে ব্যবহার করছেন বা আপনি একটি মডেল চালিত তৈরি করছেন অ্যাপ্লিকেশন ?

কনফিগারেশন ফাইলের প্রোগ্রামিং ভাষায় পরিণত হওয়ার লক্ষণসমূহ:

  • নাম = মান জোড়া একে অপরের উপর নির্ভর করতে শুরু করে
  • আপনার প্রবাহ নিয়ন্ত্রণের প্রয়োজন মনে হয় (উদাঃ যদি (এটি এর চেয়ে ))
  • কনফিগারেশন ফাইলের জন্য ডকুমেন্টেশন আরও বিকাশ করার জন্য প্রয়োজনীয় হয়ে ওঠে (কেবল অ্যাপ্লিকেশনটি ব্যবহারের পরিবর্তে)
  • কনফিগারেশন থেকে মান পড়ার আগে এটিতে কিছু প্রসঙ্গ থাকা প্রয়োজন (অর্থাত কনফিগার ফাইলের জন্য মানগুলি বাহ্যিক কোনও কিছুর উপর নির্ভর করে)

1

কনফিগারেশন ফাইলগুলি অদৃশ্য, অযৌক্তিক "পূর্ণাঙ্গ প্রোগ্রামিং ল্যাঙ্গুয়েজ" হওয়ার পথে তাদের ইঞ্চি করে দেয়। ভাল প্রোগ্রামিং ল্যাঙ্গুয়েজ ডিজাইন করতে শিল্প এবং দক্ষতা লাগে এবং কনফিগার ভাষাগুলি প্রোগ্রামিংয়ের ভাষাটিকে ঘোরতর করে।

একটি ভাল পদ্ধতির হ'ল একটি সুন্দরভাবে ডিজাইন করা ভাষা ব্যবহার করা, পাইথন বা রুবি বলুন এবং আপনার কনফিগারেশনের জন্য ডিএসএল তৈরি করতে এটি ব্যবহার করুন। এইভাবে আপনার কনফিগারেশন ভাষা পৃষ্ঠে সহজ থাকতে পারে তবে বাস্তবে সম্পূর্ণ প্রোগ্রামিং ভাষা হতে পারে।


1

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

আপনার প্রশ্নের আমার উত্তর এখানে:

  • কনফিগার ফাইলের আসল উদ্দেশ্য কী?

একটি কনফিগার ফাইল ফাইলকে রান-টাইমে তাদের প্রোগ্রামের আচরণটি কাস্টমাইজ করতে দেয় to

  • কনফিগারেশন ফাইলগুলি সরল রাখার চেষ্টা করা উচিত?

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

  • তাদের (বিকাশকারী, ব্যবহারকারী, প্রশাসক, ইত্যাদি) পরিবর্তন করার জন্য দায়বদ্ধ হওয়া উচিত কে?

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

  • তাদের উত্স নিয়ন্ত্রিত করা উচিত (প্রশ্ন 3 দেখুন)?

আমি এই উত্তরটি অন্য কারও কাছ থেকে চুরি করব :) আমি উত্স নিয়ন্ত্রণে একটি টেম্পলেট কনফিগারেশন সংরক্ষণ এবং প্রতিটি স্থানীয় ব্যবহারকারীর প্রয়োজনের জন্য এটি সংশোধন করার ধারণাটি পছন্দ করি। সম্ভাবনা হ'ল একজন বিকাশকারীর কনফিগার ফাইলটি অন্য বিকাশকারীর দুঃস্বপ্ন তাই উত্স নিয়ন্ত্রণের বাইরে থাকা ব্যবহারকারীদের দ্বারা পরিবর্তিত জিনিসগুলি রাখা ভাল। অ্যাপ্লিকেশন মোতায়েনকারী ব্যক্তিকে (বা অন্যান্য বিকাশকারী) কনফিগার ফাইলের জন্য ঠিক কোন মানগুলি বৈধ কিনা তা দেখতে একটি টেম্পলেট থাকাও একটি দুর্দান্ত উপায়।


1

আমি পাইথন প্রোগ্রাম দেখেছি যেখানে কনফিগ ফাইল হয় কোড। আপনার যদি বিশেষ কিছু করার প্রয়োজন না (শর্তসাপেক্ষে ইত্যাদি) এটি অন্য কনফিগার শৈলীর চেয়ে অনেক বেশি আলাদা দেখাচ্ছে না। যেমন আমি config.pyস্টাফ দিয়ে একটি ফাইল তৈরি করতে পারি :

num_threads = 13
hostname = 'myhost'

এবং (বলুন) আইএনআই ফাইলগুলির সাথে তুলনা করে কেবলমাত্র ব্যবহারকারীকে বোঝা হ'ল তাদের 'স্ট্রিংগুলির চারপাশে' 'লাগানো দরকার। কোনও সন্দেহ নেই যে আপনি একই কাজ অন্যান্য ব্যাখ্যামূলক ভাষায় করতে পারেন। এটি আপনাকে আপনার ব্যবহারকারীদের সম্ভবত ভীতি প্রদর্শন করার ঝুঁকিতে আপনার কনফিগার ফাইলটি জটিল করার জন্য সীমাহীন ক্ষমতা দেয় ability


0

হ্যাঁ, কনফিগারেশন ফাইলগুলি সহজ হওয়া উচিত। এগুলিতে তাদের কোনও 'যুক্তি' থাকতে হবে না - এগুলিকে বিবৃতিতে অভিব্যক্তিগুলির তালিকা হিসাবে ভাবেন, তাদের পুরোপুরি শর্তাধীন বিবৃতি নয়।

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


0

মাইক্রোসফ্টে "অসলো" কাজের অন্যতম উদ্দেশ্য হ'ল এই সমস্যার সমাধানের অনুমতি দেওয়া (যদিও প্রয়োজন নেই)।

  1. একটি অ্যাপ্লিকেশন এতে অন্তর্ভুক্ত থাকা কোনও নতুন উপাদানগুলির মডেল সহ প্রেরণ করবে। এটি বিদ্যমান মডেলগুলিও ব্যবহার করবে। উদাহরণস্বরূপ, এটিতে কোনও ওয়েব পরিষেবা অন্তর্ভুক্ত থাকতে পারে, সুতরাং এটি কোনও ওয়েব পরিষেবার সিস্টেম মডেল পুনরায় ব্যবহার করতে পারে।
  2. মডেলগুলিতে টেক্সটিকাল বা গ্রাফিকভাবে তাদের অ্যাক্সেসের জন্য পর্যাপ্ত তথ্য সহ, তাদের বর্ণনা করে মেটাটাটা অন্তর্ভুক্ত করা হবে।
  3. মডেলগুলির অংশগুলি "কনফিগারেশন" এর সাথে মিলবে

এর অর্থ হ'ল আজকের কনফিগারেশন ফাইলগুলির সমতুল্য তাদের কনফিগারেশনের পাঠ্য এবং গ্রাফিকাল সম্পাদনা উভয় সমর্থন করার জন্য যথেষ্ট সমৃদ্ধ হতে পারে। গ্রাফিকাল সরঞ্জামটি "অসলো" (কোডের নাম "চতুষ্কোণ") সরবরাহ করা হবে।


0

আমি কনট্রিয়িয়ান হব এবং এটি কেবলমাত্র একটি ভাষা জমা দেব যখন এটি এক্সএমএল দ্বারা প্রতিনিধিত্ব করা যায় না তার চেয়ে বেশি সংমিশ্রণ ঘটে; অন্যথায় যখন এক্সএমএলকে ভাষা হিসাবে বিবেচনা করা হয়।

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

শেষ পর্যন্ত, "ভাষা" একটি স্কোভি বিমূর্ততা, তবে হ্যাঁ, প্রান্তগুলি অস্পষ্ট।


এএনটি কনফিগারেশন ফাইলগুলি এক্সএমএল, এবং জটিল কাঠামো যেমন যেমন এবং এর জন্য থাকে। XML এ কনফিগারেশন ফাইলগুলি লেখার কোনও গ্যারান্টি নেই যে কনফিগার ফাইলগুলি কমপ্যাক্ট হবে এবং কোনও মানুষের পড়ার পক্ষে আরামদায়ক হবে।
হিউ পার্কিনস

0

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

এই জটিল পরিবেশটি মোকাবেলায় আমাদের আরও ভাল কোড লিখতে হবে, তাই আমাদের অ্যাপ্লিকেশনগুলির কোড আরও গুরুত্বপূর্ণ হয়ে ওঠে ...


0

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


0

কনফিগার ফাইল : "আমার উদ্দেশ্য কী?"
আপনি : "মাখনটি কনফিগার করুন।"
কনফিগারেশন ফাইল : "ওকে ..."
কনফিগারেশন ফাইল : "আমার উদ্দেশ্য কী?"
আপনি : "আপনি মাখনটি কনফিগার করেন।"
কনফিগার ফাইল : "ওহে আমার "শ্বর"

  1. কনফিগারেশন ফাইলের কোনও "সত্য উদ্দেশ্য" নেই। আপনার অ্যাপ্লিকেশনটির জন্য যা কিছু তা বোঝায়। সাধারণভাবে, মেশিনগুলির মধ্যে যেগুলি পৃথক হয় (বা আলাদা হতে পারে) এবং আপনার অ্যাপ্লিকেশন রানের মাঝামাঝি পরিবর্তিত হয় না সেগুলি সম্ভবত একটি কনফিগারেশন ফাইলের মধ্যে থাকা উচিত। ডিফল্ট, বন্দর এবং অন্যান্য পরিষেবার জন্য ঠিকানাগুলি সমস্ত দুর্দান্ত প্রার্থী। কী এবং গোপনীয়তাও দুর্দান্ত প্রার্থী তবে সুরক্ষার কারণে আপনার সাধারণ কনফিগারেশন থেকে আলাদাভাবে পরিচালনা করা উচিত। আমি একমত নই যে একটি কনফিগার ফাইলের উদ্দেশ্য হ'ল দ্রুত পরিবর্তন করা যায়। উদ্দেশ্যটি আপনার অ্যাপ্লিকেশনটির সেটআপে নমনীয়তার অনুমতি দেওয়া উচিত। যদি কোনও কনফিগারেশন ফাইলটি সেই নমনীয়তাটিকে মঞ্জুরি দেওয়ার দ্রুত উপায় হয় তবে আরও ভাল but তবে আপনার কনফিগার ফাইলগুলি ঘন ঘন পরিবর্তনের উদ্দেশ্যে করা উচিত নয়

  2. হ্যা এবং না. আপনার অ্যাপ্লিকেশনটির কোডটি সহজ করার জন্য আপনার চেষ্টা করা উচিত? হ্যাঁ. আপনার লেখার সমস্ত কিছু সহজ এবং বিন্দুতে করার চেষ্টা করা উচিত। এর চেয়ে বেশি জটিল হওয়ার দরকার নেই। আপনার কনফিগারেশন একই। তবে এটি অত্যন্ত প্রয়োগ নির্দিষ্ট application কনফিগারেশনে কী থাকতে হবে তা হার্ডকোডিং কারণ এটি আপনার কনফিগারটিকে "অত্যন্ত জটিল" করে তুলবে খারাপ ডিজাইন। প্রকৃতপক্ষে, "জিনিসগুলি সহজ রাখার" চেষ্টা করা কেন কনফিগার ফাইলগুলিকে এক বিশাল জগাখিচুড়ি হতে শুরু করে। কখনও কখনও সহজ সরল পদক্ষেপ মডুলারাইজ করা হয়। এ কারণেই আপনার কনফিগারেশন ফাইলগুলি একটি সাধারণ সাধারণ উদ্দেশ্য প্রোগ্রামিং ল্যাংগুলিতে লেখা উচিত - কোনও ভয়ানক কনফিগারেশন ভাষা নয় (পড়ুন: সমস্ত "কনফিগারেশন ভাষা" স্তন্যপান করে )।

  3. আবার, কারা কনফিগারেশন ফাইলগুলি পরিবর্তন করতে হবে তা সম্পূর্ণ অ্যাপ্লিকেশন নির্ভর। তবে আমি মিনিকার্কের সাথে একমত, যে কেউ আবেদনটি নিযুক্ত করছেন তাকে কনফিগারেশনের দায়িত্বে থাকা উচিত।

  4. উত্স আপনি যা পারেন সবকিছু নিয়ন্ত্রণ করুন control উত্স নিয়ন্ত্রণ দুর্দান্ত। আপনি জিনিসগুলি খুব সহজেই সুপার রোল করতে পারবেন এবং আপনার যে পরিবর্তন হয়েছে তার পুরো ইতিহাস এবং কে এই পরিবর্তনগুলি করেছে তার একটি রেকর্ড রয়েছে। তাই কেন না?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.