রিদওয়ান বিন শামীম
পিউর জাভাস্ক্রিপ্ট ইউনিকোড বান্ধব কিন্তু বাইনারি ডাটায় তেমন নিখুঁত নয়। টিসিপি সিস্টেম বা ফাইল স্ট্রিম নিয়ে কাজ করার সময় অক্টেট স্ট্রিম নিয়ন্ত্রণের প্রয়োজন হয়। নড বাফার ক্লাস প্রভাইড করে যা কিনা পূর্ণসংখ্যার অ্যারির সদৃশ ‘র’ ডাটা সংরক্ষণের সুযোগ দেয় কিন্তু ভি৮ হিপের(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 মেথড
- new Buffer(size)
- new Buffer(buffer)
- new Buffer(str[, encoding])
- buf.length
- buf.write(string[, offset][, length][, encoding])
- buf.writeUIntLE(value, offset, byteLength[, noAssert])
- buf.writeUIntBE(value, offset, byteLength[, noAssert])
- buf.writeIntLE(value, offset, byteLength[, noAssert])
- buf.writeIntBE(value, offset, byteLength[, noAssert])
- buf.readUIntLE(offset, byteLength[, noAssert])
- buf.readUIntBE(offset, byteLength[, noAssert])
- buf.readIntLE(offset, byteLength[, noAssert])
- buf.readIntBE(offset, byteLength[, noAssert])
- buf.toString([encoding][, start][, end])
- buf.toJSON()
- buf[index]
- buf.equals(otherBuffer)
- buf.compare(otherBuffer)
- buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])
- buf.slice([start][, end])
- buf.readUInt8(offset[, noAssert])
- buf.readUInt16LE(offset[, noAssert])
- buf.readUInt16BE(offset[, noAssert])
- buf.readUInt32LE(offset[, noAssert])
- buf.readUInt32BE(offset[, noAssert])
- buf.readInt8(offset[, noAssert])
- buf.readInt16LE(offset[, noAssert])
- buf.readInt16BE(offset[, noAssert])
- buf.readInt32LE(offset[, noAssert])
- buf.readInt32BE(offset[, noAssert])
- buf.readFloatLE(offset[, noAssert])
- buf.readFloatBE(offset[, noAssert])
- buf.readDoubleLE(offset[, noAssert])
- buf.readDoubleBE(offset[, noAssert])
- buf.writeUInt8(value, offset[, noAssert])
- buf.writeUInt16LE(value, offset[, noAssert])
- buf.writeUInt16BE(value, offset[, noAssert])
- buf.writeUInt32LE(value, offset[, noAssert])
- buf.writeUInt32BE(value, offset[, noAssert])
- buf.writeInt8(value, offset[, noAssert])
- buf.writeInt16LE(value, offset[, noAssert])
- buf.writeInt16BE(value, offset[, noAssert])
- buf.writeInt32LE(value, offset[, noAssert])
- buf.writeInt32BE(value, offset[, noAssert])
- buf.writeFloatLE(value, offset[, noAssert])
- buf.writeFloatBE(value, offset[, noAssert])
- buf.writeDoubleLE(value, offset[, noAssert])
- buf.writeDoubleBE(value, offset[, noAssert])
- buf.fill(value[, offset][, end])
ক্লাস মেথড
SN মেথড
- Buffer.isEncoding(encoding)
- Buffer.isBuffer(obj)
- Buffer.byteLength(string[, encoding])
- Buffer.concat(list[, totalLength])
- Buffer.compare(buf1, buf2)
