কারাগারের রেলস ডাউনসাইড এবং ক্যাভেটে রুবি [বন্ধ]


25

এটি আরআর বাশিংয়ের জন্য উদ্বোধনী গাম্বিট নয় - সত্য!

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

যাইহোক, এটিতে গিয়ে, এই কাঠামো বা ভাষা নিয়ে আমার কোনও অভিজ্ঞতা নেই এবং আমি কৌতূহলী - বর্তমান উত্থান দিকগুলি বা জিনিসগুলি আপনি কী শুরু করতে শুরু করতেন তা জানতে চাইলে কী কী হবে?

(সম্ভবত এটি একটি সম্প্রদায়ের উইকি করা উচিত?)


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

5
avdi.org/devblog/2011/08/22/your-code-is-my-hell পড়ার মতো। আমি যুক্ত করব যে কোনও গতিশীল টাইপযুক্ত ভাষার সাথে এটির জন্য 80% বা তার বেশি পরীক্ষার কভারেজ থাকা অত্যন্ত গুরুত্বপূর্ণ, বা পুনর্নির্মাণগুলি প্রায় অসম্ভব হয়ে উঠবে।
এরিক উইলসন

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

2
@ থমাস কিন্তু এটি আমার প্রশ্ন নয়! পিএইচপি এর উপকারিতা এবং কনসগুলি সত্যই সুপরিচিত। আরআর এর পেশাদারগুলি খুঁজে পাওয়া বেশ সহজ। তবে, আরআর এর ডাউনসাইডগুলি একজন নতুন আগত হিসাবে আবিষ্কার করা সহজ নয় এবং আমার সন্দেহ হয় যে তারা কেবল বহু বছরের অভিজ্ঞতার সাথেই আবিষ্কার করা হয়েছিল। অন্যের উপার্জিত অভিজ্ঞতা থেকে শিক্ষা নেওয়া এর উদ্দেশ্য। আমি যে সিডব্লিউটি পড়েছি তাদের অনেকেই তাদের প্রকৃতিতে বেশ সুনির্দিষ্ট।
ম্যাটি

উত্তর:


32

এটি অভিজ্ঞতা শিখতে, শেখা চালিয়ে যাওয়া এবং রিলে একটি অপেক্ষাকৃত সহজ অ্যাপ্লিকেশন লেখা।

1) বক্ররেখা শেখা

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

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

রেলগুলি হ'ল, আমি যেমন এটি একটি প্রেমময় উপায়ে কল করতে পছন্দ করি, নাম্বার প্রোগ্রামিং দ্বারা আঁকুন । যদি আপনি কনভেনশনগুলিতে 100% লেগে থাকেন (যেমন লাইনগুলির মধ্যে থাকুন এবং আপনি যে রঙগুলি ব্যবহার করতে বলেছেন তা ব্যবহার করেন) তবে আপনি দ্রুত এবং সহজেই শালীন অ্যাপ্লিকেশন তৈরি করতে পারেন। যদি এবং কখন আপনাকে বিচ্যুত করতে হয়, তখন রেলগুলি আপনার সেরা বন্ধু থেকে আপনার নিকৃষ্টতম শত্রুতে যেতে পারে।

2) যখন আপনার সমস্ত একটি হাতুড়ি ...

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

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

3) এটা নতুন

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

4) অগ্নি এবং গতি

রেলগুলি সর্বদা পরিবর্তনশীল। এটি উভয়ই ভাল এবং খারাপ জিনিস; এটি ভাল কারণ সম্প্রদায়টি নতুন ধারণাটি বিকশিত হয় এবং গ্রহণ করে। এটি খারাপ কারণ সম্প্রদায়টি নতুন ধারণাটি বিকশিত হয় এবং গ্রহণ করে। এটি একটি রেল নবজাতকের পক্ষে অত্যন্ত উদ্বেগজনক হতে পারে কারণ সাধারণত আপনি যখন কোনও সমস্যা নিয়ে চলে যান এবং চারপাশে তাকাবেন তখন আপনি দেখতে পাবেন লোকেরা এটিকে এবং এই জাতীয় রত্নকে এটির সমাধান করার জন্য পরামর্শ দিচ্ছে বা বলছে যে কোনওভাবেই খারাপ এবং আপনাকে তা করা উচিত নয় ' এটি ব্যবহার না করে, এখানে একটি আরও ভাল উপায় ... এবং আপনার কাছে রেলগুলির সাথে জ্ঞাত রাখার জন্য রেলগুলির সাথে শেখার জন্য অতিরিক্ত সরঞ্জামগুলির লন্ড্রি তালিকা রয়েছে। ভীষণ পছন্দ Git, BDD/RSpec, Cucumber,Haml/Sass, এবং অন্যান্য জিনিসগুলির কর্নোকোপিয়াটি চারপাশে ভাসমান এবং জেলাগুলিতে "জিনিসগুলি করার সঠিক উপায়" হিসাবে ঠেলাঠেলি করুন এবং অভিজ্ঞতার কথা বলার পরে আপনি রেলগুলি ছাড়াও এক ডজন বা আরও বেশি প্রযুক্তি শেখার চেষ্টা করতে পারেন , কারণ স্ট্যান্ডার্ড রেলস টুলকিট ব্যবহার করা "ভুল" বোধ করে।

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


3
ডাব্লুআরটি রেলস ৩.১ সাস এবং কফিস্ক্রিপ্ট এমন ডিফল্ট যা সহজেই বন্ধ করা যায়। প্রকৃতপক্ষে "সাধারণ" সিএসএস কেবলমাত্র কাজ করবে যেহেতু রেল ৩.১ এসএএসএসএসের এসএসএসএস সিনট্যাক্স ব্যবহার করে। আপনি এগুলি ব্যবহার করতে পারেন তবে আপনি কোনও বাধ্যবাধকতায় নেই। ডাব্লুআরটি গিট আমি মনে করি লিনাস আপনাকে আরও কাঠামো ব্যবহার না করেই কেন সত্যই গিটের মতো ডিভিসিএস ব্যবহার করা উচিত তা এটি আরও ভাল ব্যাখ্যা করেছে think youtube.com/watch?v=4XpnKHJAok8
শ্রেয়াস সতীশ

ওহ আমি সম্মতি জানাই, কেবল বলছি যে রেলস ডিফল্টটি সাধারণত প্রচুর পরিমাণে হাইপাইড হয় তাই কোনও নবজাতক এটি ব্যবহারের জন্য চাপ অনুভব করবেন (আমি জানি আমি সেভাবে অনুভব করেছি)
ওয়েন মোলিনা

3
# 4 এর জন্য +1 ... আপনি যদি এক বছরের জন্য রেলগুলি ছেড়ে যান, আপনি ফিরে আসার সময় সবাই স্পেসশিপগুলিতে ঘুরে বেড়াবেন এবং আপনি আপনার রোবোটে ভাবছেন wtf? রেল 3 প্রকাশের আগে 2 টি সিনট্যাক্স পুরানো অনুভূত হয়েছিল।
জিমওয়ার্ম

-1 ভাল রেল পোস্ট দেওয়ার জন্য পোস্ট করা তবে আপনি কোনও বিকল্প প্রস্তাবও দেন না। "নেস্টেড ফর্ম" একটি কঠিন সমস্যা এবং রেলস সম্ভবত এটি কারও চেয়ে ভাল সমাধান করে।
স্কটসক্ল্যাথেস

13

নথিপত্র।

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

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


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

9

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

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

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

আমার অন্তর্ভুক্ত অনেক টিডিডি অ্যাডভোকেটরা এটি আরআর এর অন্যতম শক্তি এবং এর অভিশাপ হিসাবে বিবেচনা করবে। আপনি একবার টিডিডি লেখা শুরু করলে, আপনি দেখতে পাবেন যে পরীক্ষার কভারেজ দ্বারা প্রদত্ত সুরক্ষাটি একটি সংকলক দ্বারা প্রদত্ত সুরক্ষার চেয়ে ভাল। তারপরে একটি সংকলককে খুশি করতে JUST কোড লিখতে বোঝা হয়ে যায়।

টিডিডি আরআর-তে কোনও অতিরিক্ত কাজ মনে করে না, এটি কাজ করার একমাত্র উপায় বলে মনে করে।

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

কয়েলগুলি কন্টেন্ট সিস্টেমগুলি খুব ভালভাবে পরিচালনা করার জন্য ডিজাইন করা হয়েছে, যা নিখরচায় অনেকটা ইন্টারনেট। ওয়েব গেম বা ইকমার্স সিস্টেমের মতো কিছুটা আরও জটিল কিছু করা মানে নতুন রত্ন শেখা। আপনি তাড়াতাড়ি শিখবেন যে সমস্ত রত্নগুলি সেখানে রয়েছে, তবে আপনি যে জিনিসটি করতে চান তার বিষয়টি যত বেশি অস্পষ্ট করবেন, ভাল ডকুমেন্টেশন খুঁজে পাওয়া তত বেশি কঠিন।


পারফরম্যান্স সম্পর্কিত সমস্যাগুলি - আমি পড়ার কথা মনে করি যাঁদের দোভাষীর v1.9 দিয়ে অনেকগুলি সমাধান করা হয়েছিল তবে আমি সম্পূর্ণ ভুল হতে পারি। এই পারফরম্যান্স সীমাবদ্ধতা কাটিয়ে উঠতে কোনও উপায় আছে?
ম্যাটি

1
@ ম্যাটি: আমি যুক্ত হিসাবে, প্রতিক্রিয়ার সময়গুলি যত তাড়াতাড়ি সম্ভব করার কোডটি। যে কোনও কিছু যা ব্যাকএন্ড প্রক্রিয়াতে ছেড়ে যায়, তাই করুন। তবে তারপরে আপনার কোনও ফ্রেমওয়ার্কের সাথে এটি করা উচিত - এটি করা সহজ নয়। এছাড়াও, jRuby আলাদাভাবে থ্রেড করা হয়েছে, তবে এটি নিজস্ব সমস্যা নিয়ে আসে এবং আমার উত্তর ইতিমধ্যে যথেষ্ট ছিল।
pdr

7

আমার ব্যক্তিগত অভিজ্ঞতায়, প্রধান মাথাব্যথা সামঞ্জস্যের কাছাকাছি ।

কখন:

  • আছে xপাগল প্রকল্প মোতায়েন,
  • প্রতিটি প্রকল্প yরত্ন ব্যবহার করে ।
  • nরেল সংস্করণ আছে যখন ,
  • মণির mসংস্করণ ইনস্টল করা,
  • severalরুবি সংস্করণ সহ ,
  • প্রোডাকশন মেশিন হিসাবে একটি একক লিনাক্স বাক্সে।
  • প্রোগ্রামার অন্য একটি ওএস এক্স ডেভেলপমেন্ট নোটবুকে কাজ করে।

ফ্রীলান্সার, যিনি আপডেটে বিলাসিতা আছে না / জিনিস সবচেয়ে আপগ্রেড অনেকটা মুখোমুখি হবে হিসাবে সাথে সঙ্গতি সমস্যাগুলির উপরে ভেরিয়েবল থেকে ... যখন rails, gemsএবং rubyপরিবর্তন রাখা / নব্য।


7
আপনি যা উল্লেখ ব্যবহার করে সংশোধন করা হয়েছে RVM (অথবা rbenv ) এবং Bundler । আপনার তখন প্রতিটি প্রকল্পের জন্য রুবি এবং রত্নের বিচ্ছিন্ন সেটগুলির নির্দিষ্ট সংস্করণ থাকতে পারে।
অ্যাশলে উইলিয়ামস

এই উত্তরটি (এখন) সম্পূর্ণ অপ্রাসঙ্গিক। রুবি সংস্করণ পরিচালনা করতে আরভিএম, রত্নের সংস্করণ পরিচালনা করতে বান্ডলার; Capistrano উৎপাদন সার্ভারে স্থাপনার হ্যান্ডেল করতে এবং ফিগারো আবেদন গোপন / বিভিন্ন পরিবেশের যত্ন নেয়। আমি [ক্লাউড 9] (সি 9.io) (একটি ওয়েব আইডিই) এ আমার অ্যাপ্লিকেশন বিকাশ করি এবং আমার স্থাপনার প্রক্রিয়াটি আক্ষরিক অর্থে হয় bundle exec cap production deploy। ক্যাপিস্ট্রানো সার্ভারে অ্যাপ্লিকেশনটির সংস্করণ করার যত্ন নেয়। যে কোনও অন্যান্য কাঠামো বেরিয়ে আসে (যেমন নোড.জেএস) এর মতো, আপনার সমস্যাগুলি সমাধান করার জন্য সরঞ্জামগুলি লেখা হয়
ক্রিস সাইরাফাইস

5

গতি অবশ্যই একটি সমস্যা। রুবির চরম নমনীয়তা একটি উল্লেখযোগ্য পারফরম্যান্স হিট নিয়ে আসে।

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

তার তুলনায়, আরআর সত্যিই ধীর। সাধারণ অনুরোধগুলি হ্যান্ডেল করার সময়টি তাৎপর্যপূর্ণ এবং তাই অনেক ক্লায়েন্টকে পরিচালনা করতে সমস্যা (এটি দ্রুত বিকল্পগুলির সাথে সম্পর্কিত হিসাবে দেখা যায়)।

অস্পষ্ট দৃষ্টিভঙ্গির স্বার্থে, এখানে কিছু নম্বর রয়েছে, যা রুবির সাথে ওয়েব বিকাশের জন্য উপযুক্ত অন্যান্য বিভিন্ন ভাষার তুলনা করে:

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


4
এই উত্তরটি রানটাইমে কেবল "গতি" সম্পর্কে আলোচনা করে। রুবি (এবং রেলগুলি) উন্নয়নের গতির জন্য অনুকূলিত।
নিকোলাই

5
এটি একটি ভাল তুলনা হয় না। ওয়েব অনুরোধে ব্যয় করা বেশিরভাগ সময় ডাটাবেস থেকে I / O করছে। সিপিইউ-নিবিড় মানদণ্ডগুলির সাথে লিঙ্ক করা বিভ্রান্তিমূলক।
রাইগুয়ে

3
@pdr: টুইটার এর সমস্যা অনেক তারা রুবি ব্যবহার করা হয়েছে ছিল সবকিছু , এমনকি তাদের ব্যাকএন্ড প্রসেস যা ছিল cpu 'র নিবিড়। এর মতো অঞ্চলগুলি স্থিরভাবে টাইপ করা ভাষাগুলি জ্বলে। তার জন্য তারা এখন স্কেলা ব্যবহার করে। আমি সত্যই, সত্যই, বিশ্বাস করি যে সিআর বা জাভার চেয়ে উন্নয়নের সময়ের ক্ষেত্রে আরআর ব্যবহার করা আরও দ্রুত। আমি এটি বেশিরভাগ ওয়েব অ্যাপের জন্য ব্যবহার করব এবং তারপরে কোনও সিপিইউ নিবিড় ব্যাকগ্রাউন্ড কাজের জন্য সি # বা স্কালা ব্যবহার করব।
রাইগুয়ে

3
বৈধ পয়েন্টের জন্য +1। বলা হচ্ছে, আপনি রেল অ্যাপ্লিকেশনগুলি অনুকূল করতে অনেক কিছু করতে পারেন। র্যাক তার পরিবর্তে একটি এক্সটেনসিবল সিস্টেম হওয়ার জন্য নিজেকে ndsণ দেয় যা সবকিছুকে কীভাবে ডাকা হয় তার ক্ষেত্রে অনেক নমনীয়তার জন্য অনুমতি দেয়। উল্লেখ করার মতো নয়, রুবি ১.৯ দ্রুত, জেআরবি দ্রুত। আমি ব্যক্তিগতভাবে JRuby এর একটি বড় অনুরাগী, JVM এর ক্ষমতায় মিশতে সক্ষম হওয়া একটি দুর্দান্ত বিজয় (কেবল প্রবাহ নিয়ন্ত্রণের ক্ষেত্রে ব্যতিক্রমী রত্নগুলি সম্পর্কে সতর্ক থাকুন -> বিশাল ওভারহেড)
জাওরলেভ

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

3

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

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

আপনি যদি জেআরবি ব্যবহার করে থাকেন তবে আপনি কেবল মাল্টিথ্রেড মোডে একক রেল প্রক্রিয়া চালাতে এবং সমস্ত উপলব্ধ সিপিইউ শক্তি সম্পূর্ণরূপে ব্যবহার করতে পারেন। তবে আপনি যদি এমআরআইতে থাকেন (রুবি 1.8.x বা 1.9.x), সিপিইউগুলি সম্পূর্ণরূপে ব্যবহার করতে আপনাকে একাধিক প্রক্রিয়া চালাতে হবে, যা নোড.জেএসের ক্ষেত্রেও।


এখানে একটি স্পষ্টকরণ প্রশ্ন - কোন আইও লাইব্রেরি জিআইএল প্রকাশ করে তা খুঁজে পাওয়ার কোনও সহজ উপায় কি?
ম্যাটি

আমি মনে করি যে এটি বের করার সর্বোত্তম উপায় হ'ল এটি বেঞ্চমার্ক করা gist.github.com/35d4769d8c8c0dfafc56
প্রতীক নায়েক


কোর ডিভসগুলির একটির কাছ থেকে শুনতে ভাল! এই তথ্যটি কোনও ডকুমেন্টেশনে তালিকাভুক্ত নয় এটি কি? এটি খুঁজে বের করার জন্য গ্রন্থাগারগুলির পরীক্ষা শুরু করা একটু ক্লান্তিকর (যদিও একটি আকর্ষণীয় কার্যকলাপ)।
ম্যাটি

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

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

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

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

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


2

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

আপনি যদি সক্রিয় বিকাশে থাকেন তবে তবে আপনার ডালটিতে আপনার আঙুলটি থাকবে have

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