নোড.জেএস কি? [বন্ধ]


506

নোড.জেএস এর সম্পর্কে যা আছে তা আমি পুরোপুরি পাই না। এটি সম্ভবত কারণ আমি মূলত ওয়েব ভিত্তিক ব্যবসায়িক অ্যাপ্লিকেশন বিকাশকারী। এটি কী এবং এর ব্যবহার কী?

আমার বোঝার এখনও অবধি:

  1. প্রোগ্রামিং মডেল ইভেন্ট চালিত হয়, বিশেষত এটি আই / ও পরিচালনা করে ।
  2. এটি জাভাস্ক্রিপ্ট ব্যবহার করে এবং পার্সারটি ভি 8
  3. এটি সহজেই একযোগে সার্ভার অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হতে পারে।

আমার বোঝাপড়া কি সঠিক? যদি হ্যাঁ, তবে সন্ধ্যাকৃত I / O এর সুবিধাগুলি কী, এটি সম্মতিযুক্ত স্টাফগুলির জন্য আরও কি বেশি? এছাড়াও, জাভাস্ক্রিপ্ট ভিত্তিক (ভি 8 ভিত্তিক) প্রোগ্রামিং মডেলের মতো ফ্রেমওয়ার্কে নোড.জেসের দিকনির্দেশনা কি পরিণত হবে?

উত্তর:


213

আমি মনে করি সুবিধাগুলি হ'ল:

  1. অবিশ্বাস্যরূপে দ্রুত (ভি 8) একটি ভিএম-তে ডায়নামিক ভাষায় (জাভাস্ক্রিপ্ট) ওয়েব বিকাশ। এটি রুবি, পাইথন বা পার্লের চেয়ে অনেক দ্রুত।

  2. একটি একক প্রক্রিয়াতে ন্যূনতম ওভারহেড সহ কয়েক হাজার সাম্প্রতিক সংযোগগুলি পরিচালনা করার ক্ষমতা।

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

  4. ইতিমধ্যে অনেক লোক জাভাস্ক্রিপ্ট জানেন, এমনকি এমন লোকেরা যারা প্রোগ্রামার হিসাবে দাবি করেন না। এটি যুক্তিযুক্তভাবে সর্বাধিক জনপ্রিয় প্রোগ্রামিং ভাষা।

  5. ব্রাউজারের পাশাপাশি একটি ওয়েব সার্ভারে জাভাস্ক্রিপ্ট ব্যবহার করা দুটি প্রোগ্রামিং এনভায়রনমেন্টের মধ্যে যে প্রতিবন্ধকতা মেলে তা কমিয়ে দেয় যা সমীকরণের উভয় পক্ষের একই কাজ করে এমন JSON এর মাধ্যমে ডেটা স্ট্রাকচার যোগাযোগ করতে পারে। সদৃশ ফর্ম বৈধকরণ কোডটি সার্ভার এবং ক্লায়েন্ট ইত্যাদির মধ্যে ভাগ করা যায় etc.


1
@ পোষ্টফিউচারিস্ট: এটি আসলে প্রচুর বিকল্পের বিরুদ্ধে ভাল অভিনয় করে। এটি জাভা 6 কে হস্তান্তরিত করে বেশ কয়েকটি ক্ষেত্রে hand ঝরঝরে!
অ্যাডাম ক্রসল্যান্ড

1
@ পোষ্টফিউচারিস্ট আমি মনে করি আপনি জাভা 6-সিন্টের সাথে তুলনা করেছেন। জাভা 6-সার্ভারের সাথে তুলনা করার চেষ্টা করুন
ফেডিসিলভা

@iJK yammer.com নোড.জেএস-এর একটি কার্যকরী অ্যাপ্লিকেশন
জেরার্ড বনাসিগ

1
মজার বিষয় হচ্ছে, আমি 10 বছর আগে এএসপিতে জেএসক্রিপ্ট লিখছিলাম যাতে আমি (ক) ভিবিএসক্রিপ্টের ঘৃণ্যতা এড়াতে পারি, (খ) ক্লায়েন্ট এবং সার্ভারে একই ভাষা ব্যবহার করতে পারি এবং (গ) আমার নিজের এবং অন্যদের জেএস লাইব্রেরি পুনরায় ব্যবহার করতে পারি স্ট্রিং হ্যান্ডলিংয়ের জন্য ... ইত্যাদি।
এন্টনি কুইন

4
@ আপনি কেন "লিগ্যাসি বুলশিট" এর জন্য এই পোস্টটি সম্পাদনা করেছেন? আমি মনে করি না 212 জন এই পোস্টের পক্ষে ভোট দিলে যদি আপনি এটি শুরু থেকে লিখেন।
জুলিয়েন ফুইল

619

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

উত্পাদনে নোড.জেগুলি অবশ্যই নিশ্চিত, তবে "টার্ন-কী" মোতায়েন থেকে দূরে সম্ভবত ডকুমেন্টেশন দ্বারা প্রতিশ্রুতি দেওয়া হয়েছিল। নোড.জেএস ভি .6.x.x এর সাহায্যে "ক্লাস্টার" প্ল্যাটফর্মের সাথে একীভূত করা হয়েছে, প্রয়োজনীয় বিল্ডিং ব্লকগুলির একটি সরবরাহ করে, তবে আমার "প্রোডাকশন.জেএস" স্ক্রিপ্টটি লগ তৈরির মতো জিনিসগুলি পরিচালনা করার জন্য এখনও যুক্তিবিদ্যার 150 ডলার লাইন ডিরেক্টরি, মৃত শ্রমিকদের পুনর্ব্যবহার করা ইত্যাদি "গুরুতর" উত্পাদনের পরিষেবার জন্য আপনাকে আগত সংযোগগুলি থ্রটল করার জন্য এবং পিএইচপি-র জন্য অ্যাপাচি সমস্ত স্টাফ করার জন্য প্রস্তুত থাকতে হবে । সত্য কথা বলতে গেলে, রুবি অন রেলে এই সঠিক সমস্যাটি রয়েছে। এটি দুটি পরিপূরক ব্যবস্থার মাধ্যমে সমাধান করা হয়: 1) রুবেলকে রেল / নোডে লাগানো।লাইটড )। ওয়েবসার্ভার দক্ষতার স্ট্যাটিক কন্টেন্ট, অ্যাক্সেস লগিং লেখা URL গুলি পরিবেশন করতে পারেন, বিনষ্ট করা SSL , অ্যাক্সেস নিয়ম বলবত্, এবং একাধিক উপ-সেবা পরিচালনা করুন। প্রকৃত নোড পরিষেবাটিকে হিট করে এমন অনুরোধগুলির জন্য, ওয়েবসভারটি অনুরোধটি প্রক্সী করে। 2) ইউনিকর্নের মতো কাঠামো ব্যবহার করা যা শ্রমিক প্রক্রিয়া পরিচালনা করতে পারে, পর্যায়ক্রমে তাদের পুনর্ব্যবহার করা ইত্যাদি etc. আমি এখনও কোনও নোড.জেএস পরিবেশনকারী কাঠামো খুঁজে পাইনি যা সম্পূর্ণ বেকড বলে মনে হচ্ছে; এটি উপস্থিত থাকতে পারে তবে আমি এটি এখনও পাইনি এবং এখনও আমার হাতে রোলড "product.js" এ 150 ডলার লাইন ব্যবহার করছি।

এক্সপ্রেসের মতো ফ্রেমওয়ার্কগুলি পড়ার থেকে মনে হয় স্ট্যান্ডার্ড অনুশীলনটি হ'ল নড.জেএস পরিষেবার একটি জ্যাক-অফ-ট্রেডের মাধ্যমে সমস্ত কিছু পরিবেশন করা ... "অ্যাপ্লিকেশন (এক্সপ্রেস.স্ট্যাটিক (__ ডাইরনম + '/ পাবলিক'))" । লো-লোড পরিষেবা এবং উন্নয়নের জন্য, এটি সম্ভবত ঠিক আছে। তবে আপনি যখনই আপনার পরিষেবাতে বড় সময় বোঝা চাপানোর চেষ্টা করবেন এবং এটি 24/7 চালিয়ে যাবেন, আপনি দ্রুত প্রেরণাগুলি আবিষ্কার করবেন যা বড় সাইটগুলিকে ভাল বেকড, কঠোর সি-কোডের মতো চাপ দেয় like এনগিনেক্সের তাদের সাইটটিকে সামনে রেখে সমস্ত কিছু পরিচালনা করে hand স্থিতিশীল কন্টেন্ট অনুরোধগুলির (... আপনি অ্যামাজন ক্লাউডফ্রন্টের মতো সিডিএন স্থাপন না করা পর্যন্ত ))। কিছুটা হাস্যকর এবং উদ্বেগজনকভাবে নেতিবাচক এটিকে গ্রহণ করার জন্য, এই লোকটি দেখুন

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

পেশাদারদের / কনস:

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

একটি সাধারণ এক-প্রক্রিয়া-প্রতি-অনুরোধ মডেলের তুলনায় ( এলএএমপি) ) এর :

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

জাভা / সি # / সি (সি? সত্যই?) তে একটি "আসল" পরিষেবা লেখার তুলনায়

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

জাভাস্ক্রিপ্ট এবং নোড.জেএস সম্পর্কে অন্য দৃষ্টিভঙ্গির জন্য, জাভা থেকে নোড.জেএস , জাভা বিকাশকারীদের ইমপ্রেশন এবং নোড.জেএস শেখার অভিজ্ঞতার উপর একটি ব্লগ পোস্ট দেখুন check


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

সহায়ক / জাভাস্ক্রিপ্ট চিনি:

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

অ্যাসিঙ্ক্রোনাস প্যাটার্ন মডিউল:

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

বা অ্যাসিক্রোনাস লাইব্রেরি সম্পর্কে সমস্ত পড়তে, লেখকদের সাথে এই প্যানেল-সাক্ষাত্কারটি দেখুন

ওয়েব ফ্রেমওয়ার্ক:

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

পরীক্ষামূলক:

  • জেএসহিন্ট - অবশ্যই ব্যবহার করা উচিত; আমি প্রথমে এটি ব্যবহার করি নি যা এখন বোধগম্য মনে হয়। জেএসলিন্ট জাভা-র মতো সংকলিত ভাষার সাথে আপনি যে মৌলিক যাচাইকরণগুলি পেয়েছেন তা গুচ্ছ যোগ করে। মেলানো বন্ধনী, অঘোষিত ভেরিয়েবল, অনেকগুলি আকার এবং আকারের টাইপ os আমি যাকে বলে "এনাল মোড" বলি তার বিভিন্ন রূপ আপনিও চালু করতে পারেন যেখানে আপনি শ্বেতক্ষেত্রের শৈলী যাচাই করেন এবং কোনটি নয়, যা আপনার চায়ের কাপের মতো হলে ঠিক - তবে আসল মানটি সঠিক লাইন নম্বরটিতে তাত্ক্ষণিক প্রতিক্রিয়া পাওয়া থেকে আসে যেখানে আপনি আপনার কোডটি চালনা না করে এবং আপত্তিকর লাইনে আঘাত না করে ")" ... একটি ক্লোজিং ভুলে গেছেন। "JSHint" র আরো-কনফিগারযোগ্য বৈচিত্র হয় ডগলাস Crockford এর JSLint
  • মানতগুলির প্রতি মোচা প্রতিযোগী যা আমি পছন্দ করতে শুরু করি। উভয় ফ্রেমওয়ার্কগুলি বেসিকগুলি যথেষ্ট ভালভাবে পরিচালনা করে তবে জটিল প্যাটার্নগুলি মোচায় প্রকাশ করা সহজতর হতে থাকে।
  • মানত মানত সত্যিই বেশ মার্জিত। এবং এটি একটি সুন্দর প্রতিবেদন (--spec) প্রিন্ট করে যা আপনাকে দেখায় যে কোন পরীক্ষার কেস পাস / ব্যর্থ হয়েছে। এটি শিখতে 30 মিনিট ব্যয় করুন এবং আপনি ন্যূনতম প্রচেষ্টা দিয়ে আপনার মডিউলগুলির জন্য প্রাথমিক পরীক্ষা তৈরি করতে পারেন।
  • বোকচন্দর - মস্তিষ্কহীন HTML এবং জাভাস্ক্রিপ্ট ব্যবহার করার জন্য পরীক্ষা JSDom একটি ভার্চুয়াল "ব্রাউজার" হিসাবে। খুব শক্তিশালী জিনিস। ইন-ব্রাউজার কোডের বজ্রপাতের দ্রুততম ডিস্ট্রিমেন্টিক পরীক্ষাগুলি পেতে এটি রিপ্লির সাথে একত্রিত করুন ।
  • কীভাবে পরীক্ষার "সম্পর্কে" চিন্তা করতে হবে তার একটি মন্তব্য:
    • পরীক্ষাটি অ-.চ্ছিক। জাভাস্ক্রিপ্টের মতো গতিময় ভাষার সাথে, খুব কম স্ট্যাটিক চেক রয়েছে। উদাহরণস্বরূপ, এমন একটি পদ্ধতিতে দুটি পরামিতি পাস করা 4 যা প্রত্যাশা করে কোডটি কার্যকর না হওয়া পর্যন্ত ভাঙবে না। জাভাস্ক্রিপ্টে বাগ তৈরি করার জন্য খুব কম বার। সংকলিত ভাষাগুলির সাথে যাচাইয়ের ফাঁক তৈরি করতে প্রাথমিক পরীক্ষাগুলি প্রয়োজনীয়।
    • বৈধতা ভুলে যান, কেবল আপনার কোডটি কার্যকর করুন। প্রতিটি পদ্ধতির জন্য, আমার প্রথম বৈধতা কেসটি "কিছুই বিরতি না" এবং এটিই প্রায়শই প্রায়শই জ্বলতে থাকে। আপনার কোডটি ৮০% বাগের ছোঁড়া ছাড়াই চলে বলে প্রমাণ করে এবং আপনার কোডের আত্মবিশ্বাসকে উন্নত করতে এমন অনেক কিছু করবে যে আপনি নিজেকে পিছনে ফিরে যাবেন এবং আপনাকে এড়িয়ে যাওয়া সংখ্যক বৈধতা যাচাই করতে পারবেন adding
    • ছোট শুরু করুন এবং জড় বাঁধা ভেঙে দিন। আমরা সবাই অলস, এবং সময়ের জন্য চাপা পড়েছি এবং "অতিরিক্ত কাজ" হিসাবে টেস্টিং দেখতে সহজ easy তাই ছোট শুরু। পরীক্ষার কেস 0 লিখুন - আপনার মডিউলটি লোড করুন এবং সাফল্যের প্রতিবেদন করুন। আপনি যদি নিজেকে এই আরও অনেক কিছু করতে বাধ্য করেন তবে পরীক্ষার ক্ষেত্রে অন্তর্নিহিত বাধা ভেঙে যায়। ডকুমেন্টেশন পড়া সহ এটি আপনার প্রথম বার করতে <30 মিনিট। এখন পরীক্ষার কেস 1 লিখুন - আপনার পদ্ধতিগুলির মধ্যে একটিতে কল করুন এবং "কিছুই ভাঙবে না" যাচাই করুন, এটি হ'ল আপনি কোনও ত্রুটি ফিরে পান না। পরীক্ষার ক্ষেত্রে 1 আপনাকে এক মিনিটেরও কম সময় নেয়। জড়তা চলে যাওয়ার সাথে সাথে আপনার পরীক্ষার কভারেজটি ক্রমবর্ধমানভাবে বাড়ানো সহজ হয়ে যায়।
    • এখন আপনার কোডগুলি দিয়ে আপনার পরীক্ষাগুলি বিকাশ করুন। মক সার্ভার এবং এই সমস্ত কিছুর সাথে "সঠিক" শেষ-শেষের পরীক্ষাটি দেখতে কেমন তা দেখে ভয় দেখাবেন না। কোড সহজ শুরু হয় এবং নতুন কেসগুলি পরিচালনা করতে বিকশিত হয়; পরীক্ষাও করা উচিত। আপনি আপনার কোডে নতুন কেস এবং নতুন জটিলতা যুক্ত করার সাথে সাথে নতুন কোডটি ব্যবহারের জন্য পরীক্ষার কেসগুলি যুক্ত করুন। আপনি বাগগুলি খুঁজে পেতে, ত্রুটিযুক্ত কোডটি coverাকতে যাচাইকরণ এবং / অথবা নতুন কেস যুক্ত করুন। আপনি যখন ডিবাগিং করছেন এবং কোনও কোডের টুকরোয় আত্মবিশ্বাস হারিয়ে ফেলছেন, ফিরে যান এবং পরীক্ষাগুলি যুক্ত করে প্রমাণ করুন যে এটি আপনাকে যা মনে করে তা করছে। উদাহরণস্বরূপ ডেটার স্ট্রিং ক্যাপচার করুন (আপনি যে কলগুলিতে কল করেন এমন অন্য পরিষেবাদি থেকে, ওয়েবসাইটগুলি যা আপনি স্ক্র্যাপ করেন, যাই হোক না কেন) এবং আপনার পার্সিং কোডে এগুলি খাওয়ান। এখানে কয়েকটি কেস, সেখানে উন্নত বৈধতা এবং আপনি অত্যন্ত নির্ভরযোগ্য কোড সহ শেষ করবেন।

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


নোড বোঝার জন্য, কয়েকটি মূল নকশা পছন্দ বিবেচনা করা সহায়ক:

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

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

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

তবে আমি কীভাবে আমার 16 কোর বাক্সটির সুবিধা নেব?

দুটি উপায়:

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

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

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end(myJavascriptObject.getSomeStatusInfo());
}).listen(1337, "127.0.0.1");

এখন আপনি একটি ইউআরএল হিট করতে পারেন এবং আপনার চলমান প্রক্রিয়ার স্থিতি পরীক্ষা করতে পারেন। কয়েকটি বোতাম যুক্ত করুন এবং আপনার একটি "পরিচালনা পোর্টাল" রয়েছে। আপনার যদি চলমান পার্ল / পাইথন / রুবি স্ক্রিপ্ট থাকে তবে কেবল "পরিচালনা পোর্টালে নিক্ষেপ করা" ঠিক সহজ নয়।

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

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

জাভাস্ক্রিপ্টের কথা বলতে গেলে, "ক্লোজার" কী? - আপনি কল চেইনগুলি জুড়ে লেক্সিকালি স্কোপড ভেরিয়েবলগুলি বজায় রাখার জন্য খুব সুন্দর অভিনব উপায়। ;) এটার মত:

var myData = "foo";
database.connect( 'user:pass', function myCallback( result ) {
    database.query("SELECT * from Foo where id = " + myData);
} );
// Note that doSomethingElse() executes _BEFORE_ "database.query" which is inside a callback
doSomethingElse();

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

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


"'মাইডাটা' ভেরিয়েবলটি কেবল পঠনযোগ্য হবে না" - মনে হচ্ছে আপনি সম্মতিযুক্ত সমস্যাগুলি রোধ করতে বেশিরভাগ সময় একে অপরিবর্তনীয় রাখতে চান, ঠিক?
নিক

1
@ নিক - এটি মিথ্যা। নোড একক থ্রেডেড এই বিষয়টি দ্বারা "একত্রীকরণ বিষয়গুলি" হ্রাস করা হয়। নোডে লক করা সহজভাবে বিদ্যমান নয়; এটি একক থ্রেডযুক্ত দৃষ্টান্তে প্রয়োজন হয় না।
ডেভ ডপসন

ক্লাস্টার নোডের 0.6 মধ্যে নোড কোর মধ্যে একত্রিত করা হয়েছে stackoverflow.com/a/8470986/212702 nodejs.org/docs/latest/api/cluster.html#cluster_cluster
লরেন্ট Debricon

1
পিএস, পার্শ্ব নোট - আমি এটি পর্যাপ্ত সময়ে সম্পাদনা করেছিলাম যে পোস্টটি "সম্প্রদায় উইকি" হয়ে গেছে (প্রান্তিকরটি 10 ​​টি সম্পাদনা)। আমি ভুল করে ভেবেছিলাম এটি এক প্রকার সম্মান, যখন এটি কেবল উত্স থেকে সুনাম অর্জনকে অবরুদ্ধ করে। অবশেষে, সিডাব্লু-পূর্বের স্থিতির একজন ভোটার "আনভোট" ক্লিক করেছেন (আশা করি দুর্ঘটনার ফলে :) এবং আমি খ্যাতি হারিয়ে ফেলেছি ... বিভ্রান্ত হয়ে আমি মেটা.স্ট্যাকেক্সেঞ্জ / ক্রোয়েশনস / १२৯৪৪৪/২ দায়ের করেছি এবং "সম্প্রদায়" তে তাকে ফাঁকি দেওয়া হয়েছিল উইকি "এর অর্থ আসলে। মোডগুলি সিডাব্লু স্ট্যাটাসটি সরাতে যথেষ্ট দয়ালু ছিল। :)
ডেভ ডপসন

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

85

ভি 8 জাভাস্ক্রিপ্টের একটি বাস্তবায়ন। এটি আপনাকে একক জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন চালাতে দেয় (অন্যান্য জিনিসগুলির মধ্যে)।

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

// Pseudo code
stat( 'somefile' )

এটি কয়েক মিলিসেকেন্ড সময় নিতে পারে, বা এটি কয়েক সেকেন্ড সময় নিতে পারে। সন্ধ্যায় I / O দিয়ে আপনি কেবল অনুরোধটি সরিয়ে ফেলুন এবং আপনার চারপাশের অপেক্ষার পরিবর্তে আপনি একটি কলব্যাক সংযুক্ত করুন যা অনুরোধটি শেষ হয়ে গেলে চলে:

// Pseudo code
stat( 'somefile', function( result ) {
  // Use the result here
} );
// ...more code here

এটি ব্রাউজারে জাভাস্ক্রিপ্ট কোডের মতো করে তোলে (উদাহরণস্বরূপ, এজাক্স শৈলীর কার্যকারিতা সহ)।

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


4
লক ব্যবহার না করে, থ্রেডিং, প্রক্রিয়া, ক্লোজার ব্যবহার না করে কীভাবে সপ্তম আইও প্রয়োগ করা হয়? এবং আমার অনুভূতি আছে যে ধারণাগুলি কার্যকরী প্রোগ্রামিং এবং এরলংয়ের সাথে বেশ মিল similar
জেফ

1
আমি যতদূর জানি এটি একটি সাধারণ ইভেন্ট লুপ হিসাবে প্রয়োগ করা হয়েছে। কোনও জাভাস্ক্রিপ্ট প্রয়োগের মতোই ইতিমধ্যে ভি 8 এর কলব্যাক / ইত্যাদি কার্যকারিতা রয়েছে।
rfunduk

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

1
"কীভাবে ... ক্লোজার ব্যবহার না করে সপ্তম আইও প্রয়োগ করা হয়?" জাভাস্ক্রিপ্ট ক্লোজারগুলিকে সমর্থন করে এবং সেগুলি নোড.জেজে সর্বদা ব্যবহৃত হয় (উদাহরণ হিসাবে বেনাম ফাংশন উত্তর)।
পানজি

@ পাঞ্জি: জেফ্রি নোড.জেসকে 'ছাড়াই' প্রয়োগ করা হয়েছে এমন বিষয়গুলির তালিকায় ক্লোজার অন্তর্ভুক্ত করার বিষয়টি লক্ষ্য করেননি। স্পষ্টতই জাভাস্ক্রিপ্টের প্রতিটি ক্রিয়াকলাপ তার সুযোগের চারপাশে বন্ধ হয়ে যায় :)
rfunduk

35

নোড.জেএস সার্ভার সাইড জাভাস্ক্রিপ্ট কোডের জন্য নির্মিত একটি ওপেন সোর্স কমান্ড লাইন সরঞ্জাম। আপনি একটি টারবাল ডাউনলোড করতে পারেন, উত্সটি সংকলন এবং ইনস্টল করতে পারেন। এটি আপনাকে জাভাস্ক্রিপ্ট প্রোগ্রাম চালাতে দেয়।

গুগল দ্বারা তৈরি করা একটি জাভাস্ক্রিপ্ট ইঞ্জিন ভি 8 দ্বারা জাভাস্ক্রিপ্ট কার্যকর করা হয়েছে যা ক্রোম ব্রাউজারে ব্যবহৃত হয় । এটি নেটওয়ার্ক এবং ফাইল সিস্টেম অ্যাক্সেস করতে একটি জাভাস্ক্রিপ্ট এপিআই ব্যবহার করে।

এটি এর কর্মক্ষমতা এবং সমান্তরাল ক্রিয়াকলাপ সম্পাদনের দক্ষতার জন্য জনপ্রিয়।

Node.js বুঝুন শ্রেষ্ঠ ব্যাখ্যা Node.js আমি এতদূর খুঁজে পেয়েছি।

নিম্নলিখিত বিষয়টিতে কিছু ভাল নিবন্ধ দেওয়া হল।


13

ক্লোজারগুলি কোডটি কোডটি কার্যকর করার একটি উপায় যা এটি তৈরি হয়েছিল in

কনক্যুরেন্সির জন্য এর অর্থ হ'ল আপনি ভেরিয়েবলগুলি সংজ্ঞায়িত করতে পারেন, তারপরে একটি নন-ব্লকিং I / O ফাংশন শুরু করতে পারেন এবং এর কলব্যাকের জন্য এটি একটি বেনামী ফাংশন প্রেরণ করতে পারেন।

টাস্কটি শেষ হয়ে গেলে কলব্যাক ফাংশনটি ভেরিয়েবলের সাথে প্রসঙ্গে কার্যকর করা হবে, এটি বন্ধ the

ক্লোজারগুলি আই / ও-কে নন-ব্লক করে অ্যাপ্লিকেশন লেখার পক্ষে এতটাই ভাল কারণ এটি অ্যাসিঙ্ক্রোনালি সম্পাদন করে ফাংশনগুলির প্রসঙ্গটি পরিচালনা করা খুব সহজ।


8

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

আমি দৃ strongly়ভাবে আপনাকে এই নিবন্ধগুলি দেখার এবং পড়ার পরামর্শ দিচ্ছি:

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

নোড.জেএস সহ এটি ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট কোডে করার মতোই সহজ। আপনার ডোম নোড পান এবং এতে আপনার সিএসএস ক্লাস প্রয়োগ করুন। আপনার ডোম নোড এবং অভ্যন্তরীণ এইচটিএমএল আপনার সামগ্রী পান (এটি করার জন্য আপনার কিছু অতিরিক্ত জাভাস্ক্রিপ্ট কোডের প্রয়োজন হবে more আরও জানতে নিবন্ধটি পড়ুন)।

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


7

একটি খুব ভাল ফাস্ট ফুড প্লেসের উপমা রয়েছে যা নোড.জেএস এর ইভেন্ট চালিত মডেলটিকে সর্বোত্তমভাবে ব্যাখ্যা করে, পুরো নিবন্ধটি দেখুন নোড.জেএস, চিকিত্সকের অফিস এবং ফাস্ট ফুড রেস্তোরাঁ - ইভেন্ট-চালিত প্রোগ্রামিং বোঝা

এখানে একটি সংক্ষিপ্তসার দেওয়া হল:

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

নোড.জেএস ইভেন্ট-চালিত, তবে বেশিরভাগ ওয়েব সার্ভারগুলি থ্রেড-ভিত্তিক Y ইয়র্ক ব্যাখ্যা করে যে নোড.জেস কীভাবে কাজ করে:

  • আপনি একটি নোড.জেএস ওয়েব সার্ভারে "/about.html" এর জন্য একটি অনুরোধ করতে আপনার ওয়েব ব্রাউজারটি ব্যবহার করেন।

  • নোড.জেএস সার্ভার আপনার অনুরোধ গ্রহণ করে এবং ডিস্ক থেকে ফাইলটি পুনরুদ্ধার করার জন্য একটি ফাংশন কল করে।

  • নোড.জেএস সার্ভারটি ফাইলটি পুনরুদ্ধারের জন্য অপেক্ষা করছে, এটি পরবর্তী ওয়েব অনুরোধটি সরবরাহ করে।

  • ফাইলটি পুনরুদ্ধার করা হলে, একটি কলব্যাক ফাংশন থাকে যা নোড.জেএস সার্ভারস সারিতে সন্নিবেশ করা হয়।

  • নোড.জেএস সার্ভার সেই ফাংশনটি সম্পাদন করে যা এই ক্ষেত্রে "/about.html" পৃষ্ঠাটি রেন্ডার করে এটি আপনার ওয়েব ব্রাউজারে ফেরত প্রেরণ করে ""


6

ঠিক আছে, আমি এটা বুঝতে পারি

  • নোডের লক্ষ্য হল স্কেলযোগ্য নেটওয়ার্ক প্রোগ্রামগুলি তৈরি করার একটি সহজ উপায় সরবরাহ করা।
  • নোড ডিজাইনের অনুরূপ এবং রুবির ইভেন্ট মেশিন বা পাইথনের টুইস্টের মতো সিস্টেম দ্বারা প্রভাবিত।
  • ভি 8 জাভাস্ক্রিপ্টের জন্য I / O সন্নিবিষ্ট।

আমার জন্য এর অর্থ এই যে আপনি তিনটি অনুমানেই সঠিক ছিলেন। গ্রন্থাগারটি নিশ্চিত আশাব্যঞ্জক!


1
পৃষ্ঠাটি সম্পর্কে আমি বেশিরভাগ সময় খুঁজে পাই বেশ অস্পষ্ট।
জেফ

6

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


3

প্রশ্ন: প্রোগ্রামিং মডেলটি ইভেন্ট চালিত হয়, বিশেষত যেভাবে এটি I / O পরিচালনা করে

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

প্রশ্ন: এটি জাভাস্ক্রিপ্ট ব্যবহার করে এবং পার্সারটি ভি 8।

হ্যাঁ

প্রশ্ন: এটি সহজেই একযোগে সার্ভার অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হতে পারে।

হ্যাঁ, যদিও আপনাকে জাভাস্ক্রিপ্টের অনেকগুলি হ্যান্ড-কোড দরকার to Http://www.easynodejs.com/ - এর মতো কোনও ফ্রেমওয়ার্কটি দেখার চেয়ে আরও ভাল হতে পারে - এটি সম্পূর্ণ অনলাইন ডকুমেন্টেশন এবং একটি নমুনা অ্যাপ্লিকেশন সহ আসে।

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