স্ক্রিপ্ট তৈরির সুবিধা কী কী?


97

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

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

স্ক্রিপ্টগুলি বিকাশকারী হিসাবে বুঝতে গুরুত্বপূর্ণ যে অনুভূতিটি আমি কাঁপতে পারি না তবে আমি একটি অর্থপূর্ণ ব্যাখ্যা চাই; আমার কেন নির্মিত / স্ক্রিপ্টগুলি লিখতে হবে?

বিল্ড স্ক্রিপ্ট এবং বিল্ড সার্ভারের দায়িত্বগুলি একটি বিস্তৃত ক্ষেত্রের মধ্যে এটি যে ভূমিকা পালন করে তা নিয়ে আলোচনা করে। আমি কোনও আইডিইর "বিল্ড / রান" কমান্ড বা অনুরূপ সহজ পদ্ধতিগুলির তুলনায় বিল্ড স্ক্রিপ্ট দ্বারা প্রদত্ত নির্দিষ্ট সুবিধাগুলি সন্ধান করছি।


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

6
আপনার নিজের বিল্ড স্ক্রিপ্টটি লেখার এবং ভাগ করার অর্থ হ'ল অন্য ব্যক্তি আলাদা আইডিই ব্যবহার করে এমনকি আপনার প্রক্রিয়াটির অনুরূপ একটি প্রক্রিয়া সহ যে কেউ এটিকে তৈরি করতে পারে। এটি ধারাবাহিকতায় সহায়তা করে।
উড্রো বারলো


1
বিল্ড স্ক্রিপ্টগুলি প্রায়শই হয় important to understand as a developerতবে অবশ্যই সর্বদা তা নয়। এমনকি এমন পরিবেশে যেখানে স্ক্রিপ্টগুলি তৈরি করা ব্যবহারিক প্রয়োজনীয়তা, অনেকগুলি "বিকাশকারী" সামান্যতম সময়ে সেগুলি যত্ন করে না। তবে স্ক্রিপ্টগুলি তখন বিকাশকারীদের চেয়ে 'বিল্ডারদের' পক্ষে গুরুত্বপূর্ণ। আমি যে সর্বশেষ স্থানগুলিতে কাজ করেছি, বেশিরভাগ বিকাশকারীদের স্ক্রিপ্ট তৈরির জন্য কার্যত শূন্য সংযোগ ছিল।
ব্যবহারকারী 2338816

3
প্রত্যেকে "বিল্ড" বোতামের আইডিই ব্যবহার করছেন না
ভ্লাদিমির স্টারকভ

উত্তর:


112

অটোমেশন।

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

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

  • আপনি যখন সংস্করণ নিয়ন্ত্রণে পরিবর্তনের প্রতিশ্রুতি দেন, তখন সার্ভারের মাধ্যমে একটি নতুন বিল্ড স্বয়ংক্রিয়ভাবে চালু করা যায়। এটি নিশ্চিত করবে যে আপনি বিল্ডের জন্য প্রয়োজনীয় কিছু প্রতিশ্রুতি দিতে ভোলেন নি।

  • একইভাবে, বিল্ডটি সম্পন্ন হওয়ার পরে, আপনি কিছু ভঙ্গ করেছেন কিনা তা পরীক্ষা করে স্বয়ংক্রিয়ভাবে চালানো যেতে পারে।

  • এখন বাকি সংস্থার (কিউএ, সিসাদমিনস) একটি বিল্ট প্রোডাক্ট রয়েছে যা

    ক) নিয়ন্ত্রণ সংস্করণ থেকে পুরোপুরি পুনরুত্পাদনযোগ্য।

    খ) তাদের সকলের কাছে সাধারণ is

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


4
এটি সেরা উত্তর IMHO। প্রত্যেকেই তাদের ধারণার সাথে সঠিক, তবে আপনি কেন স্ক্রিপ্ট তৈরি করতে চান তা এটি সত্যিই দেখায়। কারণ তারা অটোমেশনকে সমর্থন করে যা আপনার প্রজেক্টটি প্রসারিত হওয়ার সাথে সাথে এগিয়ে চলছে যা আপনার অনেক সময় সাশ্রয় করবে।
অ্যালেক্সাস

16
@ অ্যালেক্সাস কেবল সময় নয়, বোবা ভুলগুলিও। ;) "পুনরাবৃত্তি বিরক্তির দিকে নিয়ে যায়। একঘেয়েমি ভয়াবহ ভুলের দিকে পরিচালিত করে। ভয়াবহ ভুলগুলি বাড়ে, 'আমি আশা করি আমি এখনও বিরক্ত হয়ে থাকি।' "(আপনি সময় মতো বোবা
ভুলগুলিও

@ jpmc26 সেখানে রয়েছেন - যা করেছেন: ডি
অ্যালেক্সাস

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

4
@ জোনাসগ্রিগার অটোমেশন সবচেয়ে বড় পরিবর্তনশীলগুলির একটি গ্রহণ করে: মানুষ।
কার্টিসএইচএক্স

34

কোডের মতো, একটি বিল্ড স্ক্রিপ্ট কম্পিউটার দ্বারা সম্পাদিত হয়। কম্পিউটার নির্দেশাবলী একটি সেট অনুসরণ করতে ব্যতিক্রমী ভাল । প্রকৃতপক্ষে, (স্ব-সংশোধনকারী কোডের বাইরে), কম্পিউটারগুলি একই ইনপুট প্রদত্ত নির্দেশের একই ক্রমটি ঠিক একইভাবে কার্যকর করবে। এটি ধারাবাহিকতার একটি স্তর সরবরাহ করে যা ভাল, কেবলমাত্র একটি কম্পিউটারই মেলে।

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

"দ্য প্রগমেটিক প্রোগ্রামার" থেকে:

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

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

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

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

আমি এটি স্থির করে রেখেছি, তবে এটি কখনও সেই বোর্ডে যেতে পারে নি। কেন? কারণ আমার কাছে একটি স্বয়ংক্রিয় বিল্ড প্রক্রিয়া নেই যা প্রতি ক্লিক করে প্রতিটি সংস্করণ তৈরি করে।


2
বিল্ড স্ক্রিপ্ট চলমান থাকাকালীন আপনি কফির জন্য যেতে পারেন!
পিটার মর্টেনসেন

15

যদি সব আপনি কি কখনো কাজ করতে চান হয় <compiler> **/*.<extension>স্ক্রিপ্ট সামান্য উদ্দেশ্য পরিবেশন (যদিও এক তর্ক করতে পারেন যে যদি আপনি একটি দেখতে নির্মাণের Makefileপ্রকল্পে আপনি কি জানেন আপনার সাথে এটা নির্মাণ করতে পারেন make)। জিনিসটি হ'ল - তুচ্ছ প্রকল্পগুলি সাধারণত এর চেয়ে বেশি প্রয়োজন - খুব কমপক্ষে, আপনাকে সাধারণত লাইব্রেরি যুক্ত করতে হয় এবং (প্রকল্পটি পরিপক্ক হিসাবে) বিল্ড প্যারামিটারগুলি কনফিগার করে।

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

আপনাকে দলটির দ্বারা ব্যবহৃত প্রতিটি আইডিইতে কীভাবে এই পরিবর্তনটি করা যায় তাও সনাক্ত করতে হবে এবং যদি তাদের মধ্যে কেউ যদি সেই নির্দিষ্ট সেটিং সমর্থন না করে ...

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

এমনকি যদি আপনি সমস্ত বিকাশকারীকে একই আইডিই ব্যবহার করতে পান - তবে সৌভাগ্য যে বিল্ড সার্ভারটি এটি ব্যবহারের জন্য নিশ্চিত করে ...

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

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


2
এটি কেবল বিভিন্ন আইডিইয়ের বিষয় নয়। কিছু বিকাশকারী সকল ধরণের আইডিইকে ঘৃণা করে এবং ঘৃণা করে।
ডেভিড হামেন

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

আমিও সেই বিকাশকারীদের মধ্যে একজন। আমি চাই না যে আমার আঙ্গুলগুলি কীবোর্ডটি ছেড়ে চলে যেতে পারে। এটি করা আমার চিন্তার প্রক্রিয়াগুলিকে বাধা দেয়।
ডেভিড হামেন

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

মুল বক্তব্যটি হ'ল বিল্ড স্ক্রিপ্টগুলির সাহায্যে দলের প্রতিটি বিকাশকারী তার পছন্দমতো ব্যবহার করতে পারে, যখন আইডিইর বিল্ড কার্যকারিতা সহ আপনি সবাইকে কেবল একটি আইডিই ব্যবহার করতে বাধ্য করেন না, তবে খুব নির্দিষ্ট আইডিই ব্যবহারের জন্য প্রকল্পটি কনফিগার করা হয় (যদি না আপনি এটি একাধিক আইডিইগুলির জন্য কনফিগার করেছে, এবং এটি সৌভাগ্য কামনা ...)
ইদন আরে

13

অনেক আইডিই কেবল কিছু তৈরির জন্য ব্যবহৃত কমান্ডগুলি প্যাকেজ করে এবং তারপরে একটি স্ক্রিপ্ট তৈরি করে এবং কল করে!

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

আজকাল, এটি সমস্ত এমএসবিল্ড , তবে এটি এখনও আইডিই দ্বারা চালিত।

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

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

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


9
make

মনে রাখা এবং টাইপ করা অনেক সহজ

gcc -o myapp -I/include/this/dir -I/include/here/as/well -I/dont/forget/this/one src/myapp.c src/myapp.h src/things/*.c src/things/*.h

এবং প্রকল্পগুলির মধ্যে খুব জটিল সংকলন কমান্ড থাকতে পারে। একটি বিল্ড স্ক্রিপ্টে কেবল পরিবর্তিত জিনিসগুলিকে পুনরায় সংযোগ করার ক্ষমতা রয়েছে has আপনি যদি একটি পরিষ্কার বিল্ড করতে চান,

make clean

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

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


4

আর কীভাবে করবেন? আর একমাত্র উপায় হ'ল একটি দীর্ঘ কমান্ড লাইন কমান্ড নির্দিষ্ট করা।

আর একটি কারণ হ'ল মেকফাইলগুলি ইনক্রিমেন্টাল সংকলনের অনুমতি দেয়, যা সংকলনের সময়কে অনেক গতি দেয়।

মেকফাইলস একটি বিল্ড প্রক্রিয়া ক্রস প্ল্যাটফর্মও তৈরি করতে পারে। প্ল্যাটফর্মের উপর ভিত্তি করে সিএমকে বিভিন্ন বিল্ড স্ক্রিপ্ট তৈরি করে।

সম্পাদনা:

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

এমনকি যারা আইডিই ব্যবহার করছেন তাদের ক্ষেত্রেও আপনি সত্যিই জানতে চাইবেন কী চলছে, তাই বিল্ড স্ক্রিপ্ট আপনাকে জিইউআই পদ্ধতির কাছে নেই এমন বাস্তবায়নের নিম্ন-বিবরণ সরবরাহ করে।

আইডিই এর নিজেরাই অভ্যন্তরীণভাবে প্রায়শই স্ক্রিপ্টগুলি তৈরি করে; রান বোতামটি মেক কমান্ড চালানোর আরও একটি উপায়।


4

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

আমি একজন পেশাদার অ্যানড্রইড / iOS / উইন্ডোজ ফোন ডেভেলপার, এবং আমি Google পরিষেবাগুলি API গুলি (বেশিরভাগই Google মানচিত্র) একটি ব্যবহার অনেক

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

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

বিল্ড অটোমেশন যেমন বিল্ডসকে সংশ্লেষিত রাখে, এবং যখন আমরা একটি নতুন বিকাশকারী, একটি নতুন মেশিন পাই বা যখন আমাদের কোনও মেশিনকে পুনরায় চিত্রিত করতে হয় তখন সেট আপের সময়টি হ্রাস করে প্রযুক্তিগত debtণ হ্রাস করে।


1

স্ক্রিপ্ট সুবিধা তৈরি করুন:

  • পরিবর্তনগুলি কোডের মতো দেখায় (উদাহরণস্বরূপ, গিট ডিফ কমান্ডে), কোনও ডায়ালগের বিভিন্ন পরীক্ষিত বিকল্পের মতো নয়

  • একটি সাধারণ বিল্ডের চেয়ে বেশি আউটপুট তৈরি করা

আমার আগের কয়েকটি প্রকল্পে আমি বিল্ড স্ক্রিপ্টগুলি এতে ব্যবহার করেছি:

  • প্রকল্পের ডকুমেন্টেশন তৈরি করুন (অক্সিজেন-ভিত্তিক)
  • নির্মাণ করা
  • ইউনিট পরীক্ষা চালান
  • ইউনিট পরীক্ষা কভারেজ রিপোর্ট উত্পন্ন
  • একটি রিলিজ সংরক্ষণাগারটিতে বাইনারিগুলি প্যাক করুন
  • অভ্যন্তরীণ রিলিজ নোট তৈরি করুন ("গিট লগ" বার্তাগুলির উপর ভিত্তি করে)
  • স্বয়ংক্রিয় পরীক্ষা

0

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

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

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