Tag Archives: Node.js

Node.js – কলব্যাক এর ধারণা। কলব্যাক কি? (Callbacks Concept)

Huge Sell on Popular Electronics

মোহাম্মদ আব্দুল্লাহ

 

Callback কি ?

Callback একটি ফাংশনের জন্য একটি asynchronous সমতূল্য । একটি কলব্যাক ফাংশন একটি নির্দিষ্ট কাজের শেষে সাধারনত কল করা হয়ে থাকে । Node.js এ callback ফাংশন প্রচুর পরিমানে ব্যবহার হয়ে থাকে । Node.js এর সকল API গুলি এমনাভাবে তৈরী করা হয়েছে যাতে করে তারা callbacks সমর্থন করে ।

উদাহরণস্বরূপ, একটি ফাইল পড়ার ফাংশন ফাইল পড়ার পর আবার আগের জায়গায় ফিরে আসে যাতে করে পরবর্তী নির্দেশ execute করতে পারে । ফাইলটি পড়ার পর ফাইলের কন্টেন্ট প্যারামিটার হিসেবে callback ফাংশন এ আসবে । এই কারনেই Node.js এত জনপ্রিয় কারন এটি কোন ধরনের ফাংশন call ছাড়াই অনেক request প্রক্রিয়া করতে পারে ।

 

উদাহরণ (Blocking Code)

input.txt নামে একটি ফাইল তৈরী করুন এবং তাতে নিম্নের text টি copy/paste করে দিন ।


Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!


একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


 var fs = require("fs");

 var data = fs.readFileSync('input.txt');

 console.log(data.toString());
 console.log("Program Ended");

এখন main.js ফাইলটি রান করান


$ node main.js


নিম্নের আউটপুট দেখুন


Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Program Ended


 

 

উদাহরণ (Non-Blocking Code)

.txt নামে একটি ফাইল তৈরী করুন এবং তাতে নিম্নের text টি copy/paste করে দিন ।


Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!


 

 

main.js এ নিম্নের কোড copy/paste করে দিন


var fs = require("fs");

 fs.readFile('input.txt', function (err, data) {
        if (err) return console.error(err);
        console.log(data.toString());
 });
console.log("Program Ended");

 

 

এখন main.js ফাইলটি রান করান


$ node main.js


নিম্নের আউটপুট দেখুন


Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!


 

 

এই দুটি উদাহরণ Blocking এবং Non-Blocking Code ধারণার ব্যাখ্যা করে । প্রথম উদাহারনে, প্রথমে ফাইল পড়ে এবং ফাইল পড়া শেষ হলে বাকি কোড execute করে । অন্যদিকে দ্বিতীয় উদাহারনে ফাইল পড়া শেষ হওয়ার আগেই অন্যান্য কোড execute করে ফেলে । এইভাবেই Blocking কোড sequencely program রান করে থাকে অন্যদিকে Non-Blocking Code sequencely program রান করে না ।

http://www.tutorialspoint.com/nodejs/nodejs_callbacks_concept.htm

Node.js – সার্বজনীন অবজেক্ট (Global Objects)

Huge Sell on Popular Electronics

মোহাম্মদ আব্দুল্লাহ

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

__filename

__filename, যেই ফাইল থেকে কোড রান করা হচ্ছে সেই ফাইলের নাম প্রকাশ করে থাকে । এটি কোড ফাইলের সম্পূর্ণ পথ প্রিন্ট করে থাকে ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


console.log( __filename );

 

এখন main.js ফাইলটি রান করান


$ node main.js

 

আপনার প্রোগ্রামের সঠিক অবস্থান অনুযায়ী নিম্নের ফাইল নাম প্রকাশ করবেঃ


/web/com/1427091028_21099/main.js

 

__dirname

__dirname সাধারনত যেই ডিরেক্টরী থেকে স্ক্রীপ্ট রান করা হচ্ছে ওই ডিরেক্টরীর নাম প্রকাশ করে থাকে ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


console.log( __dirname );

 

এখন main.js ফাইলটি রান করান


$ node main.js

 

আপনার প্রোগ্রামের সঠিক অবস্থান অনুযায়ী নিম্নের ডিরেক্টরীর নাম প্রকাশ করবেঃ


/web/com/1427091028_21099

 

 

setTimeout(cb, ms)

setTimeout(cb, ms) গ্লোবাল ফাংশন দিয়ে অন্তত ' ms ' মিলিসেকেন্ড বিলম্বে কলব্যাক ফাংশন ' cb ' কে কল করা হয়ে থাকে । এই বিলম্ব কিছু বাহ্যিক ফাক্টর এর উপর নির্ভরশীল উদাহারন স্বরুপ OS timer granularity এবং system load । একটি টাইমারের ব্যাপ্তি ২৪.৮ দিনের বেশী হতে পারবে না ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


function printHello(){
     console.log( "Hello, World!");
 }
 // Now call above function after 2 seconds
 setTimeout(printHello, 2000);

 

এখন main.js ফাইলটি রান করান


$ node main.js

 

যাচাই করে দেখুন আউটপুট কিছুটা বিলম্বে আসছে কিনা


Hello, World!

 

clearTimeout(t)

clearTimeout( t ) গ্লোবাল ফাংশন দিয়ে পূর্বে setTimeout(cb, ms) দিয়ে যেই টাইমার সেট করা হয়েছে তা বন্ধ করতে ব্যবহার করা হয় ।

উদাহরণ
একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


function printHello(){
       console.log( "Hello, World!");
 }
 // Now call above function after 2 seconds
 var t = setTimeout(printHello, 2000);
 // Now clear the timer

 

clearTimeout(t)

এখন main.js ফাইলটি রান করান


$ node main.js

যাচাই করে দেখুন আউটপুটে কিছু প্রিন্ট করছে কিনা

 

setInterval(cb, ms)

setInterval(cb, ms) দিয়ে অন্তত ' ms ' মিলিসেকেন্ড বিলম্বে বারবার কলব্যাক ফাংশন ' cb ' কে কল করতে থাকে । এই বিলম্ব কিছু বাহ্যিক ফাক্টর এর উপর নির্ভরশীল উদাহারন স্বরুপ OS timer granularity এবং system load । একটি টাইমারের ব্যাপ্তি ২৪.৮ দিনের বেশী হতে পারবে না ।

একটি javascript (main.js) এ নিম্নের কোড copy/paste করে দিন


function printHello(){
     console.log( "Hello, World!");
 }
 // Now call above function after 2 seconds
 setInterval(printHello, 2000);

 

এখন main.js ফাইলটি রান করান


$ node main.js


উপরের প্রোগ্রামটি প্রতি ২ সেকেন্ড পরপর printHello() ফাংশন কে কল করতে থাকবে ।

 

নোড.জেএস (Node. Js) টিউটোরিয়াল

Huge Sell on Popular Electronics

মীর তাওহীদুল ইসলাম

ওয়েব ডেভেলপার

 

আজকে আপনাদের সামনে হাজির হলাম নোড জে এস এর টিউটোরিয়াল নিয়ে। আশা করি আপনাদের ভাল লাগবে।

নোড জে এস জাভাস্ক্রিপ্ট এর উপর ভিত্তি করে গড়ে ওঠা খুবই শক্তিশালী একটি ফ্রেমওয়ার্ক বা প্লাটফর্ম যা গুগল ক্রোমের জাভাস্ক্রিপ্ট ভি এইট ইঞ্জিনে (V8 Engine) এ তৈরি করা হয়েছে।

এই নোড জে এস ব্যাবহার হয় বিভিন্ন ধরনের ওয়েব অ্যাপলিকেশন তৈরিতে যেমনঃ অনলাইনে ভিডিও দেখার সাইট তৈরিতে, এক পেইজের অ্যাপলিকেশন তৈরিতে বা অন্যান্য ওয়েব অ্যাপলিকেশন তৈরিতে।

এই নোড জে এস একটি মুক্ত উৎস, সম্পূর্ণ ফ্রী এবং এটা সারা বিশ্বের হাজার হাজার ডেভেলপার এর ব্যাবহারের একটি উৎস।

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

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

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

আর এই টিউটোরিয়ালে যে উদাহারন গুলো থাকবে তা অবশ্যই নিজে নিজে চেষ্টা করতে হবে।

তাই প্রাথমিক ভাবে নিচে একটা উদাহারন কোড দেওয়া হলঃ


/*Hello World ! My First Programme In Node. Js*/

Console.log (“Hello World !”) ;


 

নোড.জেএস । Node.js – আরইএসটি সম্পন্ন এপিআই

Huge Sell on Popular Electronics

নোড . জে এস । Node.js - আরইএসটি সম্পন্ন এপিআই
রিদওয়ান বিন শামীম

আরইএসটি আর্কিটেকচার কীঃ আরইএসটির মানে হল, রিপ্রেজেন্টেশনাল স্টেট ট্রান্সফার। এটি ওয়েব স্ট্যান্ডার্ডভিত্তিক আর্কিটেকচার এবং এইচটিটিপি প্রটোকল ব্যবহার করে। Roy Fielding এটিকে ২০০০ সালে প্রবর্তন করেন।

আরইএসটি সার্ভার রিসোর্সে এক্সেস নিশ্চিত করে, ক্লায়েন্ট এইচটিটিপি প্রটোকল ব্যবহার করে এর পরিবর্তন ও পরিবর্ধন করে থাকেন। আরইএসটি টেক্সট, জেএসওএন ও এক্সএমএলভিত্তিক রিপ্রেজেন্টেশন ব্যবহার করে রিসোর্স রিপ্রেজেন্ট করতে। এদের মধ্যে জেএসওএন সবচেয়ে জনপ্রিয়।

আরইএসটি ভিত্তিক আর্কিটেকচারে চারটি এইচটিটিপি মেথড ব্যবহার করা হয়,
• গেট
• পুট
• ডিলিট
• পোস্ট

আরইএসটি সম্পন্ন ওয়েব সার্ভারঃ এপ্লিকেশন ও সিস্টেমের প্রটোকল ও স্ট্যান্ডার্ডের সমন্বয়ে ওয়েব সার্ভার গঠিত হয়।

লাইব্রেরীর জন্য আরইএসটি তৈরি করাঃ জেএসওএন ডাটাবেসে users.json নামক ফাইলের ক্ষেত্রে

{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}

এসবের ভিত্তিতে যে আরইএসটি এপিআই পাই তাদের তালিকা,

S. N. URI HTTP Method POST body Result
1 listUsers GET empty সব ইউজারের তালিকা দেখায়
2 addUser POST JSON String নতুন ইউজারে বিবরণ সংযুক্তি
3 deleteUser DELETE JSON String বিদ্যমান ইউজার ডিলিট করা
4 :id GET empty ইউজারের বিবরণ প্রদর্শন

লিস্ট ইউজারঃ আমাদের প্রথম আরইএসটি এপিআই listUsers এপিআই server.js ফাইলে নিচের কোড ব্যবহার করে পাই,

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log( data );
res.end( data );
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)

})

লোকাল মেশিনে নির্দিষ্ট http://127.0.0.1:8081/listUsers এপিআইতে ব্যবহার করে আমরা পাই,

{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}

ইউজার সংযুক্ত করাঃ নিচের এপিআই দ্বারা নতুন ইউজার সংযুক্ত করা হয়,

user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}

addUser এপিআই দ্বারা ডাটাবেসে নতুন ইউজার সংযুক্ত করা হয়,

var express = require('express');
var app = express();
var fs = require("fs");

var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}

app.get('/addUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
data["user4"] = user["user4"];
console.log( data );
res.end( JSON.stringify(data));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

লোকাল মেশিনে এপিআইতে http://127.0.0.1:8081/addUsers ব্যবহার করে যে ফলাফল আমরা পাব তা হল,

{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user2:
{ name: 'suresh',
password: 'password2',
profession: 'librarian',
id: 2 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 },
user4:
{ name: 'mohit',
password: 'password4',
profession: 'teacher',
id: 4 }
}

শো ডিটেইলঃএর জন্য যে এপিআই ব্যবহার করতে হবে তা হল,

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
var user = users["user" + req.params.id]
console.log( user );
res.end( JSON.stringify(user));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

উপরের সার্ভিসকে http://127.0.0.1:8081/2 ব্যবহার করে লোকাল মেশিনে কল দেয়াতে হয়।

{
"name":"suresh",
"password":"password2",
"profession":"librarian",
"id":2
}

ইউজার ডিলিট করার জন্যঃ এক্ষেত্রে যে এপিআই ব্যবহৃত হয় তা হল,

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.get('/deleteUser', function (req, res) {

// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + 2];

console.log( data );
res.end( JSON.stringify(data));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

উপরের সার্ভিসকে http://127.0.0.1:8081/deleteUser ব্যবহার করে লোকাল মেশিনে কল দিলে যে ফলাফল আসবে,

{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 }
}

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_restful_api.htm

নোড.জেএস : Node.js – বাফার

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

পিউর জাভাস্ক্রিপ্ট ইউনিকোড বান্ধব কিন্তু বাইনারি ডাটায় তেমন নিখুঁত নয়। টিসিপি সিস্টেম বা ফাইল স্ট্রিম নিয়ে কাজ করার সময় অক্টেট স্ট্রিম নিয়ন্ত্রণের প্রয়োজন হয়। নড বাফার ক্লাস প্রভাইড করে যা কিনা পূর্ণসংখ্যার অ্যারির সদৃশ ‘র’ ডাটা সংরক্ষণের সুযোগ দেয় কিন্তু ভি৮ হিপের(V8 heap)বাইরে ‘র’ মেমোরি এলোকেশনের সাথে সুসংহত থাকে।

বাফার ক্লাস গ্লোবাল ক্লাস, এটি বাফার মডিউল ইমপোর্ট করা ছাড়াই এপ্লিকেশনে ব্যবহার করা সম্ভব।

বাফার তৈরি করা

কয়েকটি উপায়ে বাফার তৈরি করা যেতে পারে,

প্রথম পদ্ধতিঃ ১০ অক্টেটের আনইনিসিয়েটেড বাফার তৈরির সিনট্যাক্স,


var buf = new Buffer(10);


 

দ্বিতীয় পদ্ধতিঃ প্রদত্ত অ্যারি থেকে বাফার তৈরির সিনট্যাক্স,


var buf = new Buffer([10, 20, 30, 40, 50]);


 

তৃতীয় পদ্ধতিঃ প্রদত্ত স্ট্রিং থেকে বাফার তৈরির সিনট্যাক্স ও অপশনাল এনকোডিং টাইপ,


var buf = new Buffer("Simply Easy Learning", "utf-8");


 

যদিও ডিফল্ট এনকোডিং হল "utf8" , আমরা "ascii", "utf8", "utf16le", "ucs2", "base64" বা "hex" ইত্যাদিও ব্যবহার করতে পারি।

বাফারে লেখা

নড বাফারে লেখার জন্য সিনট্যাক্স,


buf.write(string[, offset][, length][, encoding])


 

প্যারামিটারঃ সংশ্লিষ্ট প্যারামিটারগুলো হল,

  • স্ট্রিং
  • অফসেট
  • লেন্থ
  • এনকোডিং

রিটার্ন ভ্যালু

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


buf = new Buffer(256);
len = buf.write("Simply Easy Learning");

console.log("Octets written : "+ len);


 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


Octets written : 20


 

বাফার থেকে পড়াঃ এজন্য প্রয়োজনীয় সিনট্যাক্স হল,
buf.toString([encoding][, start][, end])

এর প্যারামিটারগুলো হল,

  • এনকোডিং
  • স্টার্ট
  • এন্ড

উদাহরণ,


 buf = new Buffer(26);
 for (var i = 0 ; i < 26 ; i++) {
 buf[i] = i + 97;
 }
console.log( buf.toString('ascii')); // outputs: abcdefghijklmnopqrstuvwxyz
 console.log( buf.toString('ascii',0,5)); // outputs: abcde
 console.log( buf.toString('utf8',0,5)); // outputs: abcde
 console.log( buf.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde
 এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,
 abcdefghijklmnopqrstuvwxyz
 abcde
 abcde
 abcde

 

বাফার থেকে জেএসওএনে রূপান্তরের সিনট্যাক্স,


buf.toJSON()


 

এটির উদাহরণ,


var buf = new Buffer('Simply Easy Learning');
 var json = buf.toJSON(buf);
console.log(json);

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


[ 83, 105, 109, 112, 108, 121, 32, 69, 97, 115, 121, 32, 76, 101, 97, 114, 110, 105, 110, 103 ]


 

কনকাটেনাট বাফারঃ কনকাটেনাট নড বাফার থেকে সিঙ্গেল নড বাফারে রূপান্তর করার সিনট্যাক্স,


Buffer.concat(list[, totalLength])


 

এর প্যারামিটারগুলো হল,

  • লিস্ট
  • টোটাললেন্থ

রিটার্ন ভ্যালুঃ বাফার ইন্সটেন্স রিটার্ন করায়।
উদাহরণ,


var buffer1 = new Buffer('TutorialsPoint ');
 var buffer2 = new Buffer('Simply Easy Learning');
 var buffer3 = Buffer.concat([buffer1,buffer2]);
 console.log("buffer3 content: " + buffer3.toString());

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


buffer3 content: TutorialsPoint Simply Easy Learning

 

বাফার তুলনাঃ এর জন্য ব্যবহৃত সিনট্যাক্স,


buf.compare(otherBuffer);

 

উদাহরণ,


var buffer1 = new Buffer('ABC');
 var buffer2 = new Buffer('ABCD');
 var result = buffer1.compare(buffer2);
if(result < 0) {
 console.log(buffer1 +" comes before " + buffer2);
 }else if(result == 0){
 console.log(buffer1 +" is same as " + buffer2);
 }else {
 console.log(buffer1 +" comes after " + buffer2);
 }

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


ABC comes before ABCD


 

বাফার কপি করাঃ এর সিনট্যাক্স হল,


buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])


 

এর প্যারামিটারগুলো হল,

  • টার্গেট বাফার
  • টার্গেট স্টার্ট
  • সোর্স স্টার্ট
  • সোর্স এন্ড

উদাহরণ,


var buffer1 = new Buffer('ABC');
 //copy a buffer
 var buffer2 = new Buffer(3);
 buffer1.copy(buffer2);
 console.log("buffer2 content: " + buffer2.toString());

 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer2 content: ABC

 

স্লাইস বাফারঃ এর সিনট্যাক্স হল,


buf.slice([start][, end])

 

প্যারামিটারঃ এর প্যারামিটার কোল,

  • স্টার্ট
  • এন্ড

উদাহরণ,


var buffer1 = new Buffer('TutorialsPoint');
 //slicing a buffer
 var buffer2 = buffer1.slice(0,9);
 console.log("buffer2 content: " + buffer2.toString());

 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer2 content: Tutorials


 

বাফার লেন্থঃ এর জন্য আমাদের যে সিনট্যাক্স ব্যবহার করতে হবে তা হল,


buf.length;


 

উদাহরণ,


var buffer = new Buffer('TutorialsPoint');
//length of the buffer
console.log("buffer length: " + buffer.length);


 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer length: 14


 

রেফারেন্স

নড জেএসে প্রাপ্ত বাফার মডিউলের রেফারেন্স নিচে দেয়া হল,

SN মেথড

  1. new Buffer(size)
  2. new Buffer(buffer)
  3. new Buffer(str[, encoding])
  4. buf.length
  5. buf.write(string[, offset][, length][, encoding])
  6. buf.writeUIntLE(value, offset, byteLength[, noAssert])
  7. buf.writeUIntBE(value, offset, byteLength[, noAssert])
  8. buf.writeIntLE(value, offset, byteLength[, noAssert])
  9. buf.writeIntBE(value, offset, byteLength[, noAssert])
  10. buf.readUIntLE(offset, byteLength[, noAssert])
  11. buf.readUIntBE(offset, byteLength[, noAssert])
  12. buf.readIntLE(offset, byteLength[, noAssert])
  13. buf.readIntBE(offset, byteLength[, noAssert])
  14. buf.toString([encoding][, start][, end])
  15. buf.toJSON()
  16. buf[index]
  17. buf.equals(otherBuffer)
  18. buf.compare(otherBuffer)
  19. buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])
  20. buf.slice([start][, end])
  21. buf.readUInt8(offset[, noAssert])
  22. buf.readUInt16LE(offset[, noAssert])
  23. buf.readUInt16BE(offset[, noAssert])
  24. buf.readUInt32LE(offset[, noAssert])
  25. buf.readUInt32BE(offset[, noAssert])
  26. buf.readInt8(offset[, noAssert])
  27. buf.readInt16LE(offset[, noAssert])
  28. buf.readInt16BE(offset[, noAssert])
  29. buf.readInt32LE(offset[, noAssert])
  30. buf.readInt32BE(offset[, noAssert])
  31. buf.readFloatLE(offset[, noAssert])
  32. buf.readFloatBE(offset[, noAssert])
  33. buf.readDoubleLE(offset[, noAssert])
  34. buf.readDoubleBE(offset[, noAssert])
  35. buf.writeUInt8(value, offset[, noAssert])
  36. buf.writeUInt16LE(value, offset[, noAssert])
  37. buf.writeUInt16BE(value, offset[, noAssert])
  38. buf.writeUInt32LE(value, offset[, noAssert])
  39. buf.writeUInt32BE(value, offset[, noAssert])
  40. buf.writeInt8(value, offset[, noAssert])
  41. buf.writeInt16LE(value, offset[, noAssert])
  42. buf.writeInt16BE(value, offset[, noAssert])
  43. buf.writeInt32LE(value, offset[, noAssert])
  44. buf.writeInt32BE(value, offset[, noAssert])
  45. buf.writeFloatLE(value, offset[, noAssert])
  46. buf.writeFloatBE(value, offset[, noAssert])
  47. buf.writeDoubleLE(value, offset[, noAssert])
  48. buf.writeDoubleBE(value, offset[, noAssert])
  49. buf.fill(value[, offset][, end])

ক্লাস মেথড

SN মেথড

  1.   Buffer.isEncoding(encoding)
  2. Buffer.isBuffer(obj)
  3. Buffer.byteLength(string[, encoding])
  4. Buffer.concat(list[, totalLength])
  5. Buffer.compare(buf1, buf2)

 

নোড.জেএস । Node.js – ইভেন্ট লুপ (Node.js – Event Loop)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

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

ইভেন্টভিত্তিক প্রোগ্রামিং

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

ইভেন্টভিত্তিক এপ্লিকেশনে একটি মেইন লুপ থাকে যা ইভেন্টের সন্ধান করে, পাওয়া গেলে তাকে কলব্যাক ফাংশনের সাথে সমন্বয় করিয়ে দেয়।

Event Driven Programming

ইভেন্টকে কলব্যাকের সমতুল্য মনে হতে পারে, মূলত পার্থক্য হল, অসমন্বিত ফাংশনের ফলাফল ফেরত আসলে কলব্যাক ফাংশন কাজ করে, আর ইভেন্ট অবজারভার প্যাটার্নে কাজ করে। যেসব ফাংশন ইভেন্টকে শোনে তারা অবজারভাররূপে কাজ করে। কোনও ইভেন্ট বাদ পরলে তার লিসনার ফাংশন সম্পাদন শুরু করে।

নড জেএসের অনেকগুলি বিল্ট ইন ইভেন্ট আছে যা events মডিউলের মাধ্যমে পাওয়া যায় এবং EventEmitter ক্লাস ইভেন্ট ও ইভেন্ট লিসনারের মধ্যে সমন্বয় সাধন করে।


// Import events module
 var events = require('events');
 // Create an eventEmitter object
 var eventEmitter = new events.EventEmitter();

 

নিচের সিনট্যাক্স ইভেন্ট ও ইভেন্ট হ্যান্ডলারের মধ্যে সমন্বয় সাধন করে,


// Bind event and even handler as follows
 eventEmitter.on('eventName', eventHandler);

 

প্রোগ্রামিঙের মাধ্যমে কোনও ইভেন্ট বাদ দিতে,


// Fire an event
 eventEmitter.emit('eventName');

 

উদাহরণ,
main.js নামের জেএস ফাইল তৈরি করি যাতে নিচের কোড থাকবে,


// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();
// Create an event handler as follows
var connectHandler = function connected() {
     console.log('connection succesful.'); 

     // Fire the data_received event 
     eventEmitter.emit('data_received');
}
// Bind the connection event with the handler
eventEmitter.on('connection', connectHandler);
 
// Bind the data_received event with the anonymous function
eventEmitter.on('data_received', function(){
     console.log('data received succesfully.');
});
// Fire the connection event 
eventEmitter.emit('connection');
console.log("Program Ended.");

 

প্রোগ্রামটি রান করিয়ে আউটপুট পাব,


$ mnode main.js

 

এটি যে ফলাফল দেখাবে,


 connection succesful.
 data received succesfully.
 Program Ended.

 

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


Tutorials Point is giving self learning content
 to teach the world in simple and easy way!!!!!

 

main.js নামের ফাইল তৈরি করি যাতে নিচের কোড থাকবে।


var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err){
      console.log(err.stack);
      return;
   }
   console.log(data.toString());
});
console.log("Program Ended");

এখানে fs.readFile() অসমন্বিত ফাংশন যার কাজ হল ফাইল পড়া। এক্ষেত্রে ভুল হলে err অবজেক্ট দ্বারা সেটি readFile এর মাধ্যমে কলব্যাক ফাংশনে যাবে।

 Program Ended
 Tutorials Point is giving self learning content
 to teach the world in simple and easy way!!!!!

 

 

নোড.জেএস – প্রথম এপ্লিকেশন (Node.js – First Application)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

নড জেএসের মাধ্যমে ‘হ্যালো ওয়ার্ল্ড’ তৈরির আগে নড জেএসের এপ্লিকেশনের অংশগুলো দেখে নেয়া যাক, এর তিনটি খুব গুরুত্বপূর্ণ অংশ আছে,

  • ইমপোর্ট রিকোয়ারড মডিউল
  • ক্রিয়েটিভ সার্ভার
  • রিড রিকোয়েস্ট, রিটার্ন রেসপন্স

 

নড জেএস এপ্লিকেশন তৈরি করা

প্রথম ধাপ, প্রয়োজনীয় মডিউল ইমপোর্ট করা

আমরা require ডিরেকটিভ ব্যবহার করব এইচটিটিপি মডিউল লোড করতে, আর রিটার্নড এইচটিটিপি ইন্সটেন্সকে এইচটিটিপি ভেরিয়েবলে নিচের মত করে স্টোর করব,


var http = require("http");

 

দ্বিতীয় ধাপ, সার্ভার তৈরি করা

পরবর্তী ধাপে আমরা তৈরি করা এইচটিটিপি ইন্সটেন্স ব্যবহার করি ও http.createServer() তে কল করা হয় সার্ভার ইনটেন্স তৈরি করতে। এরপরlisten মেথড ব্যবহার করে আমরা একে port 8081এর সাথে সংযুক্ত করি। একটি ফাংশনকে প্যারামিটার রিকোয়েস্ট ও রেসপন্সসহ পাস করানো হয়। নিচের ব্যবহারিক প্রয়োগ ‘হ্যালো ওয়ার্ল্ড’ ফলাফল দেখাবে।


http.createServer(function (request, response) {
     // Send the HTTP header
     // HTTP Status: 200 : OK
     // Content Type: text/plain
     response.writeHead(200, {'Content-Type': 'text/plain'});
     // Send the response body as "Hello World"
     response.end('Hello World\n');
}).listen(8081);
// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

 

উপরের কোড এমন এইচটিটিপি সার্ভার তৈরির জন্য যথেষ্ট যা লোকাল মেশিনের 8081 portএর সাথে সমন্বয় সাধন করে।

 

তৃতীয় ধাপ, রিকোয়েস্ট ও রেসপন্স টেস্ট করা

main.js ফাইলে পূর্বে উল্লেখিত দুটি ধাপের সমন্বয় করে নিচের নত করে এইচটিটিপি সার্ভার চালু করতে হয়,


var http = require("http");
http.createServer(function (request, response) {
    // Send the HTTP header
    // HTTP Status: 200 : OK
    // Content Type: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});
    // Send the response body as "Hello World"
    response.end('Hello World\n');
}).listen(8081);
// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

 

এখন সার্ভার চালুর জন্য main.jsকে সম্পাদন করতে হয় নিচের মত করে,


$ node main.js

 

আউটপুট ভেরিফাই করলে দেখব, সার্ভার চালু হয়ে গেছে।


Server running at http://127.0.0.1:8081/

 

নড জেএস সার্ভারে রিকোয়েস্ট করা

যেকোনো ব্রাউজারে http://127.0.0.1:8081/ ওপেন করে রেজাল্ট দেখব, ‘হ্যালো ওয়ার্ল্ড’ ।

Node.js server

অভিনন্দন! আমাদের প্রথম এইচটিটিপি সার্ভার তৈরি ও চালু হল যা port 8081 এর সকল এইচটিটিপি রিকোয়েস্টের সাড়া দেয়।

 

নোড.জেএস – এনপিএম (Node.js – NPM)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

নড প্যাকেজ ম্যানেজার বা এনপিএম দুটি ফাংশনালিটির প্রবর্তন করে,

  • নড জেএস প্যাকেজ বা মডিউলের জন্য অনলাইন সংগ্রহস্থল তৈরি করে যা search.nodejs.orgতে খোঁজা হবে।
  • নড জেএস প্যাকেজ ইন্সটলের জন্য কম্যান্ড লাইন ইউটিলিটি, নড জেএস প্যাকেজের ভার্সন ও সংশ্লিষ্ট নির্ভরতা বিষয়ক ব্যবস্থাপনা নিয়ন্ত্রণ করে।

এনপিএম v0.6.3 এর পরবর্তী সংস্করণগুলোতে নড জেএস ইন্সটলেশন প্যাকেজের সাথে বাণ্ডিল আকারে আসে। ভেরিফাই করার জন্য কনসোল ওপেন করে নিচের কম্যান্ড লিখে দেখতে পারি,


 $ npm --version
 2.7.1

 

যদি এনপিএমের পুরনো সংস্করণ ব্যবহার করে থাকি তাহলে এটি আপডেট করা অনেক সহজ হবে, নিচের কম্যান্ড ব্যবহার করে আমরা এটি করতে পারি,


$ sudo npm install npm -g
 /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
 npm@2.7.1 /usr/lib/node_modules/npm

 

এনপিএম ব্যবহার করে মডিউল ইন্সটল করা

এজন্য একটি সহজ সিনট্যাক্স আমরা ব্যবহার করতে পারি,


$ npm install <Module Name>

 

যেমন, নিচের কম্যান্ড express নামের একটি পরিচিত নড জেএস ওয়েব ফ্রেমওয়ার্ক মডিউল ইন্সটলের জন্য ব্যবহৃত হতে পারে,


$ npm install express

 

এখন আমরা জেএস ফাইলে এই মডিউল ব্যবহার করতে পারব,


var express = require('express');

 

গ্লোবাল বনাম লোকাল ইন্সটলেশন

বাই ডিফল্ট এনপিএম যেকোনো ডিপেন্ডেন্সিকে লোকাল মোডে ইন্সটল করে। এখানে লোকাল মোড বলতে বোঝায় node_modules ডিরেক্টরিতে প্যাকেজ ইন্সটলেশন যা কিনা নড জেএস এপ্লিকেশন যে ফোল্ডারে আছে সেখানে বিদ্যমান। লোকাল মোডের প্যাকেজগুলো require() মেথডে প্রবেশযোগ্য। যেমন, এক্সপ্রেস মডিউল ইন্সটল করার সময় এটি কারেন্ট ডিরেক্টরিতে node_modules ডিরেক্টরি তৈরি করেছে।


$ ls -l
 total 0
 drwxr-xr-x 3 root root 20 Mar 17 02:23 node_modules

 

অন্যভাবে, লোকালভাবে ইন্সটলড মডিউলকে আমরা npm ls কম্যান্ড ব্যবহার করে তালিকাবদ্ধ করতে পারি,

গ্লোবালভাবে ইন্সটলড প্যাকেজ বা ডিপেন্ডেন্সি সিস্টেম ডিরেক্টরিতে সংরক্ষিত থাকে। এসব ডিপেন্ডেন্সি যেকোনো নড জেএসের সিএলআই বা কম্যান্ড লাইন ইন্টারফেস ফাংশনে ব্যবহৃত হতে পারে কিন্তু require()ব্যবহার করে নড এপ্লিকেশনে সরাসরি ইমপোর্ট করা যায় না। গ্লোবাল ইন্সটলেশন ব্যবহার করে এক্সপ্রেস মডিউল ইন্সটল করা যাক,


$ npm install express -g

 

এটি একই ফলাফল দেবে কিন্তু মডিউল গ্লোবালি ইন্সটলড হবে। এখানে প্রথম লাইন মডিউলের ভার্সন ও ইন্সটলের লোকেশন নির্দেশ করবে।


express@4.12.2 /usr/lib/node_modules/express
 ├── merge-descriptors@1.0.0
 ├── utils-merge@1.0.0
 ├── cookie-signature@1.0.6
 ├── methods@1.1.1
 ├── fresh@0.2.4
 ├── cookie@0.1.2
 ├── escape-html@1.0.1
 ├── range-parser@1.0.2
 ├── content-type@1.0.1
 ├── finalhandler@0.3.3
 ├── vary@1.0.0
 ├── parseurl@1.3.0
 ├── content-disposition@0.5.0
 ├── path-to-regexp@0.1.3
 ├── depd@1.0.0
 ├── qs@2.3.3
 ├── on-finished@2.2.0 (ee-first@1.1.0)
 ├── etag@1.5.1 (crc@3.2.1)
 ├── debug@2.1.3 (ms@0.7.0)
 ├── proxy-addr@1.0.7 (forwarded@0.1.0, ipaddr.js@0.1.9)
 ├── send@0.12.1 (destroy@1.0.3, ms@0.7.0, mime@1.3.4)
 ├── serve-static@1.9.2 (send@0.12.2)
 ├── accepts@1.2.5 (negotiator@0.5.1, mime-types@2.0.10)
 └── type-is@1.6.1 (media-typer@0.3.0, mime-types@2.0.10)

 

গ্লোবালি ইন্সটলড সব মডিউল চেক করে দেখতে,


$ npm ls -g

 

package.jsonব্যবহারঃ package.json যেকোনো নড এপ্লিকেশন বা মডিউলের রুট ডিরেক্টরিতে থাকে এবং প্যাকেজের বৈশিষ্ট্য বিবৃত করে। node_modules/express/তে অবস্থিত এক্সপ্রেস প্যাকেজের package.json খুলে আমরা পাই,


{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.11.2",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "tj@vision-media.ca"
  },
  "contributors": [
    {
      "name": "Aaron Heckmann",
      "email": "aaron.heckmann+github@gmail.com"
    },
    {
      "name": "Ciaran Jessup",
      "email": "ciaranj@gmail.com"
    },
    {
      "name": "Douglas Christopher Wilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "Guillermo Rauch",
      "email": "rauchg@gmail.com"
    },
    {
      "name": "Jonathan Ong",
      "email": "me@jongleberry.com"
    },
    {
      "name": "Roman Shtylman",
      "email": "shtylman+expressjs@gmail.com"
    },
    {
      "name": "Young Jae Sim",
      "email": "hanul@hanul.me"
    }
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/strongloop/express"
  },
  "homepage": "http://expressjs.com/",
  "keywords": [
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": {
    "accepts": "~1.2.3",
    "content-disposition": "0.5.0",
    "cookie-signature": "1.0.5",
    "debug": "~2.1.1",
    "depd": "~1.0.0",
    "escape-html": "1.0.1",
    "etag": "~1.5.1",
    "finalhandler": "0.3.3",
    "fresh": "0.2.4",
    "media-typer": "0.3.0",
    "methods": "~1.1.1",
    "on-finished": "~2.2.0",
    "parseurl": "~1.3.0",
    "path-to-regexp": "0.1.3",
    "proxy-addr": "~1.0.6",
    "qs": "2.3.3",
    "range-parser": "~1.0.2",
    "send": "0.11.1",
    "serve-static": "~1.8.1",
    "type-is": "~1.5.6",
    "vary": "~1.0.0",
    "cookie": "0.1.2",
    "merge-descriptors": "0.0.2",
    "utils-merge": "1.0.0"
  },
  "devDependencies": {
    "after": "0.8.1",
    "ejs": "2.1.4",
    "istanbul": "0.3.5",
    "marked": "0.3.3",
    "mocha": "~2.1.0",
    "should": "~4.6.2",
    "supertest": "~0.15.0",
    "hjs": "~0.0.6",
    "body-parser": "~1.11.0",
    "connect-redis": "~2.2.0",
    "cookie-parser": "~1.3.3",
    "express-session": "~1.10.2",
    "jade": "~1.9.1",
    "method-override": "~2.3.1",
    "morgan": "~1.5.1",
    "multiparty": "~4.1.1",
    "vhost": "~3.0.0"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/",
    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/"
  },
  "gitHead": "63ab25579bda70b4927a179b580a9c580b6c7ada",
  "bugs": {
    "url": "https://github.com/strongloop/express/issues"
  },
  "_id": "express@4.11.2",
  "_shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "doug@somethingdoug.com"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "tj@vision-media.ca"
    },
    {
      "name": "jongleberry",
      "email": "jonathanrichardong@gmail.com"
    },
    {
      "name": "shtylman",
      "email": "shtylman@gmail.com"
    },
    {
      "name": "dougwilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "aredridel",
      "email": "aredridel@nbtsc.org"
    },
    {
      "name": "strongloop",
      "email": "callback@strongloop.com"
    },
    {
      "name": "rfeng",
      "email": "enjoyjava@gmail.com"
    }
  ],
  "dist": {
    "shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
    "tarball": "http://registry.npmjs.org/express/-/express-4.11.2.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/express/-/express-4.11.2.tgz",
  "readme": "ERROR: No README data found!"
}

 

package.jsonএর এট্রিবিউট

  • name – প্যাকেজের নাম
  • version – প্যাকেজের ভার্সন
  • description – প্যাকেজের বর্ণনা
  • homepage – প্যাকেজের হোমপেজ
  • author – প্যাকেজের অথর
  • contributors – প্যাকেজের কন্ট্রিবিউটারের নাম
  • dependencies – ডিপেনডেন্সি লিস্ট
  • repository – প্যাকেজের সংগ্রহস্থলের প্রকরণ ও ইউআরএল
  • main – প্যাকেজের এন্ট্রি পয়েন্ট
  • keywords – কী ওয়ার্ড

 

মডিউল আনইন্সটল করতে

এজন্য কম্যান্ড ব্যবহার করতে পারি,


$ npm uninstall express


 

আনইন্সটল করে of /node_modules/ ডিরেক্টরি থেকে অথবা নিচের কম্যান্ড ব্যবহার করে ভেরিফাই করতে পারি


$ npm ls


 

 

মডিউল আপডেট করতে

package.json আপডেট করে ডিপেন্ডেন্সি ভার্সন পরিবর্তন করে এই কম্যান্ড রান করাতে হয়,


$ npm update express

 

মডিউল সার্চ করতে

এনপিএম ব্যবহার করে প্যাকেজের নাম সার্চ করতে হয়।


$ npm search express


 

মডিউল তৈরি করতে

এনপিএম ব্যবহার করে package.json এর কাঠামো তৈরি করা হয়,


$ npm init
 This utility will walk you through creating a package.json file.
 It only covers the most common items, and tries to guess sane defaults.
See 'npm help json' for definitive documentation on these fields
 and exactly what they do.
Use 'npm install <pkg> --save' afterwards to install a package and
 save it as a dependency in the package.json file.
Press ^C at any time to quit.
 name: (webmaster)

 

ভ্যালিড ইমেইল এড্রেসসহ এনপিএম সংগ্রহস্থল সাইটে রেজিস্ট্রেশন করার জন্য কম্যান্ড,


$ npm adduser
 Username: mcmohd
 Password:
 Email: (this IS public) mcmohd@gmail.com

 

মডিউল পাবলিশ করতে যে কোড ব্যবহার করব,


$ npm publish

 

সবকিছু ঠিকঠাকভাবে সম্পন্ন হলে মডিউলটি পাবলিশ হয়ে যাবেএবং এনপিএমের মাধ্যমে ইন্সটলের যোগ্য হবে অন্যান্য নড জেএস মডিউলের মত।

 

নড.জেএস এর পরিবেশ তৈরি করা (Node.js – Environment Setup)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অনলাইনে অপশন পরীক্ষা করা

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

নিচের কোডের সাথে Try it অপশন ব্যবহার করে এটি করা যায়,


/* Hello World! program in Node.js */
 console.log("Hello World!");

 

আমাদের টিউটোরিয়ালের পরবর্তী অংশে Try it অপশন প্রচুর ব্যবহার করা হবে তাই এর ব্যবহার ভালভাবে জেনে নেয়া প্রয়োজন।

লোকাল এনভায়রন সেটআপ করা

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

টেক্সট এডিটরঃ প্রোগ্রাম টাইপ করার জন্য ব্যবহার করতে হয়। অপারেটিং সিস্টেমের উপর নির্ভর করে উইন্ডোজ নোটপ্যাড, অপারেটিং সিস্টেম এডিট কম্যান্ড ব্রিফ, এপ্সিলন, ইম্যাকস, ভিআইএম বা ভিআই ইত্যাদি টেক্সট এডিটর ব্যবহৃত হয়ে থাকে। এডিটরের মাধ্যমে সোর্স ফাইল তৈরি করা হয় যার মধ্যে প্রোগ্রাম সোর্স কোড থাকে। এর এক্সটেনশনে ".js" থাকে।

প্রোগ্রামিং শুরুর আগে একটি টেক্সট এডিটর ঠিক করে কোডিঙে কিছু অভিজ্ঞতা অর্জন করে একটি ফাইলে রেখে তা সম্পাদন করতে হয়।

নড জেএস রানটাইম

সোর্স ফাইলে লেখা সোর্সকোড হল জাভাস্ক্রিপ্ট। সেই জাভাস্ক্রিপ্ট কোড ইন্টারপ্রিট ও সম্পাদন করতে নড জেএস ইন্টারপ্রিটার ব্যবহৃত হয়।

নড জেএস ডিস্ট্রিবিউশন সান ওএস, লিনাক্স, ম্যাক ওএস এক্স, এবং উইন্ডোজের জন্য ৩২ ও ৬৪ বিট এক্স৮৬ প্রসেসর আর্কিটেকচারে বাইনারি ইন্সটলেবলরূপে পাওয়া যায়।

নড জেএসএর আরকাইভ ডাউনলোড করা

এক্ষেত্রে নড জেএসএর সর্বশেষ আরকাইভ ভার্সন ডাউনলোড করে নিতে হয়, বিভিন্ন ওএসের জন্য প্রযোজ্য কিছু আরকাইভ ভার্সন নিচের ছকে দেয়া হল,

ওএস আরকাইভের নাম

Windows   node-v0.12.0-x64.msi
Linux     node-v0.12.0-linux-x86.tar.gz
Mac       node-v0.12.0-darwin-x86.tar.gz
SunOS     node-v0.12.0-sunos-x86.tar.gz

ইউনিক্স, সান ওএস, লিনাক্স ও ম্যাক ওএস এক্সে ইন্সটল করা

ওএস আর্কিটেকচার অনুযায়ী /tmp তে node-v0.12.0-osname.tar.gz আরকাইভ ডাউনলোড ও এক্সট্রাক্ট করতে হয়। এরপর সেটিকে /usr/local/nodejs ডিরেক্টরিতে সরিয়ে রাখতে হয়।


 $ cd /tmp
 $ wget http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz
 $ tar xvfz node-v0.12.0-linux-x64.tar.gz
 $ mkdir -p /usr/local/nodejs
 $ mv node-v0.12.0-linux-x64/* /usr/local/nodejs

 

পাথ এনভায়রনমেন্ট চলকে /usr/local/nodejs/bin যোগ করতে হয়,

ওএস আউটপুট
 Linux    export PATH=$PATH:/usr/local/nodejs/bin
 Mac      export PATH=$PATH:/usr/local/nodejs/bin
 FreeBSD  export PATH=$PATH:/usr/local/nodejs/bin

উইন্ডোজে ইন্সটলেশন

এমএসআই ফাইল ব্যবহার করে নড জেএসের প্রম্পট ব্যবহার করতে হয়। বাই ডিফল্ট C:\Program Files\nodejs তে নড জেএস ডিস্ট্রিবিউশন ব্যবহার করে থাকে।ইন্সটলার উইন্ডোজের পাথ পরিবেশ চলকে C:\Program Files\nodejs\bin ডিরেক্টরি সেট করে। কম্যান্ড প্রম্পট সক্রিয় করতে রিস্টার্ট করতে হয়।

ইন্সটলেশন ভেরিফাই করা- ফাইল সম্পাদন

main.js নামের জেএস ফাইল তৈরি করতে হয় নিচের কোড সহ,


/* Hello, World! program in node.js */
 console.log("Hello, World!"

 

নড জেএস ইন্টারপ্রিটার ব্যবহার করে main.js ফাইল সম্পাদন করে আমরা ফলাফল দেখতে পারি,


$ node main.js

 

ইন্সটলেশনের সবকিছু ঠিকঠাক থাকলে এটি যে ফলাফল দেখাবে তা হল,


Hello, World!