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

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

 

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

  • নড জেএস প্যাকেজ বা মডিউলের জন্য অনলাইন সংগ্রহস্থল তৈরি করে যা 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)

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

 

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

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

নিচের কোডের সাথে 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!


 

ইউনিক্সঃ সিস্টেম লগিং (Unix – System Logging)

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

 

ইউনিক্স সিস্টেমের খুব শক্তিশালী ও স্থিতিস্থাপক লগিং সিস্টেম আছে যার মাধ্যমে আমাদের কল্পনাযোগ্য সব কিছুই আমরা রেকর্ড করে রাখতে ও পরবর্তীতে ব্যবহার করতে পারি।

ইউনিক্সের বেশিরভাগ ভার্সন syslog নামক জেনারেল পারপাস লগিং ফ্যাসিলিটি দিয়ে থাকে। স্বতন্ত্র প্রোগ্রাম যাদের তথ্য লগড অবস্থায় থাকতে হয় তারা এটিতে তথ্য প্রেরণ করে থাকে। এই সিস্টেম একটি কেন্দ্রীভূত সিস্টেম লগড প্রসেস ব্যবহার করে যা /etc/syslogd বা /etc/syslog নামক প্রোগ্রাম সম্পন্ন করে। প্রোগ্রাম তাদের লগ এন্ট্রিকে syslogd এ পাঠায় যা /etc/syslogd.conf বা /etc/syslog ফাইল কনফিগার সংক্রান্ত কাজগুলো করে। কোনও মিল পাওয়া গেলে কাঙ্খিত লগ ফাইলে লগ ম্যাসেজ লিখে রাখে।

মূলত চার ধরণের syslog টার্ম আছে,

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

 

সিসলগ ফ্যাসিলিটিজ

সিলেক্টরের জন্য প্রাপ্ত সুবিধাগুলো নিচে দেয়া হল, অবশ্য সব ইউনিক্স ভার্সন সবগুলো সুবিধা পায় না।

প্রায়োরিটি বর্ণনা
emerg জরুরী অবস্থা
alert সংশোধন করতে হবে এমন অবস্থা
crit জটিল পরিস্থিতি, যেমন হার্ডওয়ারে ক্রুটি
err সাধারণ এরর
warning সতর্কবাণী
notice এরর না, তবু সাবধানে কাজ করতে হবে
info তথ্যমূলক ম্যাসেজ
debug প্রোগ্রাম ডিবাগের ম্যাসেজ
none নট টু লগ ম্যাসেজ নির্ধারণের জন্য সিউডো লেভেল ব্যবহার করা

 

/etc/syslog.conf ফাইল

ম্যাসেজ লগড থাকার সময় এই ফাইল কন্ট্রোল করে।


*.err;kern.debug;auth.notice   /dev/console
daemon,auth.notice             /var/log/messages
lpr.info                       /var/log/lpr.log
mail.*                         /var/log/mail.log
ftp.*                          /var/log/ftp.log
auth.*                         @prep.ai.mit.edu
auth.*                         root,amrood
netinfo.err                    /var/log/netinfo.log
install.*                      /var/log/install.log
*.emerg                        *
*.alert                        |program_name
mark.*                         /dev/console

 

ফাইলের প্রতিটা লাইনের দুটি করে অংশ আছে,

  • ম্যাসেজ সিলেক্টর যা নির্ণয় করে কোন ধরণের ম্যাসেজ লগড হবে
  • একশন ফিল্ড যা ঠিক করে ম্যাসেজ নিয়ে ঠিক কি করা হবে।
  • উপরের কনফিগারেশনের কয়েকটি গুরুত্বপূর্ণ পয়েন্ট আছে,
  • ম্যাসেজ সিলেক্টরের দুটি পার্ট আছে, ফ্যাসিলিটি আর প্রাইওরিটি
  • kern.debug নামের ম্যাসেজ সিলেক্টর ডিবাগের চেয়ে বড় প্রাইওরিটি নির্বাচন করে।
  • ফ্যাসিলিটি আর প্রাইওরিটির স্থলে তারকাচিহ্ন সবগুলোকেই নির্দেশ করে।
  • মাল্টিপল ফ্যাসিলিটি নির্ধারণ করতে কমা ও ব্যবহার করা যায়।

লগিং একশন

পাঁচটি একশনের যে কোনও একটি একশন ফিল্ডে প্রযোজ্য হবে,

  • কোনও ফাইল বা ডিভাইসে লগ ম্যাসেজ
  • ইউজারের কাছে ম্যাসেজ পাঠানো
  • সব ইউজারের কাছে ম্যাসেজ পাঠানো
  • প্রোগ্রামে ম্যাসেজ পাইপ করা
  • অন্য হোষ্টের syslog এ ম্যাসেজ প্রেরণ

লগার কম্যান্ড

লগার কম্যান্ডের ফরম্যাট হল,


logger [-i] [-f file] [-p priority] [-t tag] [message]...

 

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

-f filename
-i
-p priority
-t tag
message

লগ রোটেশন

লগ রোটেশনের জন্য newsyslog বা logrotate টুল ব্যবহার করা যায়।
গুরুত্বপূর্ণ লগ লোকেশনঃ কিছু গুরুত্বপূর্ণ এপ্লিকেশন ও তাদের লগ ডিরেক্টরি নিচে দেয়া হল,

এপ্লিকেশন ডিরেক্টরি
httpd /var/log/httpd
samba /var/log/samba
cron /var/log/
mail /var/log/
mysql /var/log/

 

ডট নেট নিউক ডিএনএন – ৬ (DNN 6 – Quick Start Guide)

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

 

ডটনেট নিউক ৬ ডেভেলপার কুইক স্টার্ট

ডটনেট নিউক ৬ ডেভেলপার কুইক স্টার্ট পেজ ডটনেট নিউক এক্সটেনশন ডেভেলপারদের সাহায্যার্থে ব্যবহৃত হতে পারে। স্কিন অবজেক্ট, মডিউল বা প্রভাইডার ডেভেলপমেন্টে নতুনরা মডিউল ডেভলাপমেন্ট পেজ দেখতে পারেন।

অ্যাজিউর উপযোগিতা

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

কন্ট্রোল প্যানেল

রিবন বার নামক কন্ট্রোল প্যানেল যা ডটনেট নিউক ৫এ ছিল তা বর্তমান সংস্করণে আরও বেশি আপডেট করে আনা হয়েছে।

সিএসএসের গুরুত্বপূর্ণ নোট

নতুন ইউজার ইন্টারফেসের জন্য ডিফল্ট সিএসএস ফাইল গুরুত্বপূর্ণ স্টাইল ডেফিনেশন সংরক্ষণ করে। সংশ্লিষ্ট ফর্ম প্যাটার্ন ও জেকুয়েরি প্লাগিন ডিফল্ট সিএসএস ফাইলের উপর নির্ভর করে।

ডিডিআর মেনু

ডিডিআর মেনু একটি ডিফল্ট মেনু যা ফ্রেমওয়ার্কের সাথে আসে।

ডটনেট নিউক এক্সটেনশন ফিড

এটি ডটনেট নিউক ৬ এর নতুন সংযোজন।

ডিএসটি সাপোর্ট- টাইম জোনে নতুন সংস্করণ

এটি কোর ফ্রেমওয়ার্কে নতুন সংস্করণ।

ফোল্ডার প্রভাইডার এপিআই

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

ফর্ম প্যাটার্ন

ডটনেট নিউক ৬তে ইউজার ইন্টারফেসের আপডেট ফর্ম প্যাটার্ন সংশ্লিষ্ট।

জেড ইনডেক্স

  • মডেল পপ আপ 1000 থেকে বেশি
  • কন্ট্রোল প্যানেল 950 – 999
  • মডিউল একশন 900 – 949
  • বাকি সব কিছু 0 – 899
  • টেলিরিক কন্ট্রোল

আইকন এপিআই

ফ্রেমওয়ার্কের আইকনে প্রবেশ্যতা পেতে একটি ইউনিফাইড এপিআই ব্যবহারের ব্যবস্থা করা হয়েছে।

ওয়েব কন্ট্রোলের আইকন কী প্রপার্টি

ওয়েব কন্ট্রোলের কিছু নতুন আইকন কী প্রপার্টি থাকে ।

  • asp:Image
  • asp:ImageButton
  • asp:HyperLink
  • asp:HtmlImage
  • dnn:CommandButton
  • dnn:ImageCommandColumn
  • dnn:DnnGridButtonColumn
  • dnn:DnnImage
  • dnn:DnnImageButton

জেকুয়েরি ও জেকুয়েরি ইউআই

ডটনেট নিউক ৬ এর সব সংস্করণ জেকুয়েরি ও জেকুয়েরি ইউআই উপযোগী ও কোর এডমিন ও হোস্ট মডিউলের সব ইন্টারফেস দ্বারা ব্যবহৃত হয়।

লগ ফর নেট

ডটনেট নিউক ৬ ফ্রেমওয়ার্কের সব ভার্সনে লগ ফর নেট এসেম্বলি ( ভার্সন 1.2.10) সংযোজিত আছে।

মেনিফেস্ট আপডেট

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

মডেল পপ আপ

ডটনেট নিউক ৬ তে মডেল পপ আপের সাপোর্ট সংযোজিত হয়েছে।

মডিউল একশন

বর্তমানে ডটনেট নিউক ৬ তে পূর্ববর্তী সংস্করণের মত মডিউল একশন প্রদর্শিত হয় না।

মডিউল ব্র্যান্ডিং

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

মডিউল ক্যাটাগরাইজ করা

এটি হোস্ট ইউজারকে মডিউল ক্যাটাগরাইজ করতে সাহায্য করে যাতে কন্ট্রোল প্যানেলে মডিউলকে সহজে খুঁজে পাওয়া যায়।

নতুন মডিউল, টেলিরিক ও আপডেট করা মডিউল ও প্রভাইডার ডটনেট নিউক ৬ এর অন্যতম অনুষঙ্গ।

 

ডটনেট নিউককে আপগ্রেড করা (Upgrade DNN)

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

 

ডটনেট নিউককে আপগ্রেড করা মূলত একটি সরল প্রক্রিয়া। নতুন সংস্করণের ফাইল পুরনো ইন্সটল করা সংস্করণে নিয়মমত কপি করে এপ্লিকেশনকে আপগ্রেড করা সংক্রান্ত নির্দেশনা দিতে দেয়া হয়।

সবসময় ব্যাকআপ ঠিক রাখতে হবে।

  • ব্যাকআপের ভিত্তিতে ডুপ্লিকেট ওয়েব সাইট তৈরি করে আপগ্রেড করা যায়।
  • ওয়েবসাইটে আপগ্রেড পোর্টাল অ্যালি তৈরি করতে হয়,
  • ওয়েবসাইট ফাইল ব্যাকআপ করতে হয়,
  • ডাটাবেস ব্যাকআপ করতে হয়
  • এর সর্বশেষ সুস্থিত সংস্করণের ফাইল DotNetNuke_Community_XX.XX.XX.UPGRADE.zip
  • ডাউনলোড করতে হয়,
  • ওয়েব সার্ভারের নিউ ফোল্ডার পাথে ব্যাকআপ ওয়েবসাইট পুনরায় স্থাপন করতে হয়,
  • হোস্ট হিডারের সাথে আইআইএস কনফিগার করা,
  • ফাইল সিস্টেমের সেটআপ পারমিশন,
  • নতুন ডাটাবেস নামে ডাটাবেস রিস্টোর করানো,
  • নতুন ওয়েবসাইটের web.configমডিফাই করা
  • অটো আপগ্রেড ফলসে সেট করা,
  • আপগ্রেড প্যাকেজের উপাদানকে কম্পিউটারের কোনও ফোল্ডারে কপি করা,সরাসরি ওয়েবসাইটে কপি করা ঠিক নাও হতে পারে।
  • এরপর আপগ্রেড প্যাকেজের উপাদানকে ওয়েবসাইটে কপি করা
  • ওয়েব ব্রাউজারের মাধ্যমে নতুন ওয়েবসাইটে প্রবেশ করা, ইউআরএলকে http://MYWEBSITE/install/install.aspx?mode=upgrade
  • তে পরিবর্তন করে নিতে হয়।
  • আপগ্রেড করার পর আইআইএসে থেকে নতুন ওয়েবসাইট সেটিং পরিবর্তন করা যায়।

মনে রাখা দরকার, যদি default.css, portal.css বা menu.css পরিবর্তন করে সাইট আপগ্রেড করা হয় তবে আপগ্রেড প্যাকেজ কপির পরে এসব ফাইলকে ওয়েবসাইটের ফোল্ডারে কপি করতে হবে।

এডভান্সড কিছু কৌশল

ডাটাবেস ও ওয়েবসাইটের সম্পূর্ণ ব্যাকআপ ছাড়া আপগ্রেড প্রক্রিয়া চালানো ঠিক নয়। এডভান্সড কৌশলের সাথে সংশ্লিষ্ট কিছু বিষয় হল,

APP_OFFLINE.HTM
SQL BACKUP TO APP_DATA
IN-PLACE UPGRADES
IIS ROOT FOLDER

আপগ্রেড সংক্রান্ত কিছু ভিডিও,

A Simple way to Upgrade DotNetNuke
Upgrading Via FTP
Upgrading DotNetNuke on WebMatrix
Customizing the App_Offline.htm File

ডটনেট নিউকের ইন্সটলেশন (Install DNN. Install Dot Net Nuke)

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

 

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

ডটনেট নিউকের ইন্সটলেশন রিকয়ারমেন্টঃ ডটনেট নিউক ৭ প্রকাশের সাথে এর সিস্টেম রিকয়ারমেন্ট বৃদ্ধি পেয়েছে। রিকয়ারমেন্ট বৃদ্ধির অফিশিয়াল লিস্ট দেখতে সিস্টেম রিকয়ারমেন্ট পেজ দেখা যেতে পারে।

ডটনেট নিউক ইন্সটলেশন সিনারিও

ইউজার ইন্সটেনস ডাটাবেসসহ এসকিউএল সার্ভার ২০০৫/২০০৮/২০০৮ ২য়/২০১২ ব্যবহার করে ইন্সটলেশনের জন্য ডটনেট নিউকের সর্বশেষ ভার্সন ডাউনলোড করে নিতে হয়। জিপ প্যাকেজ এক্সট্র্যাক্ট করে নিতে হয় কম্পিউটারে, c:\inetpub\wwwroot\ folder তে একটি ডিরেক্টরি তৈরি করতে হয় DotNetNuke নামে, যা দেখতে হবে c:\inetpub\wwwroot\dotnetnuke\ এমন। এই ফোল্ডারে জিপ কন্টেন্টগুলো কপি করে c:\inetpub\wwwroot\dotnetnuke\ folder এর প্রপার্টিজে গিয়ে সিকিউরিটি ট্যাবে ঢুকতে হবে। ইউজারের পারমিশন নিশ্চিত করা থাকতে হবে। ওয়েব সার্ভার আইআইএস কনসোল খুলতে হবে, (start->run->INETMGR)। ওয়েবসাইট নড ও ডিফল্ট ওয়েবসাইট নড এক্সপান্ড করতে হবে। ইন্সটলেশন উইজারডের ধাপগুলো পার হতে হবে। ডাটাবেস স্ক্রিনের জন্য কোনও কিছু কনফিগার করার দরকার নেই। এসব সম্পন্ন হলে হোমপেজে ডিফল্ট লগইন একাউন্ট দেখাবে।

এটাচড ডাটাবেসসহ এসকিউএল সার্ভারে ইন্সটলেশনের জন্য এসকিউএল ম্যানেজমেন্ট স্টুডিয়ো (২০০৫/২০০৮/২০০৮২য়/২০১২) ওপেন করে ডাটাবেস সার্ভারের সাথে (লোকাল সার্ভারও হতে পারে)কানেক্ট করাতে হয়। এরপর এসকিউএল ইউজার একাউন্ট ও সিকিউরিটি কনফিগার করতে হবে। http://localhost/dotnetnuke ব্যবহার করে ওয়েবসাইট ব্রাউজ করতে হবে, টিপিকাল বা কাস্টম অপশন ব্যবহার করে ইন্সটলেশন উইজার্ডের ধাপগুলো পার হতে হয়। ডাটাবেস কানেকশন চেক করে দেখতে হয় ঠিকমত কাজ করছে কিনা। হোস্ট ও এডমিনের একাউন্ট কনফিগার করতে ইন্সটলেশন উইজারডের রিমাইন্ডার অতিক্রম করতে হয়।

ভিডিও রিসোর্স

ডটনেট নিউক কর্পোরেশনের ভিডিও টিউটোরিয়াল আছে,

Installing DotNetNuke video available in the video library
Installing DotNetNuke with the Microsoft platform installer

বিশ্বে বাংলাদেশের ক্রিকেট তাদের অবস্থান সুদৃঢ় করেছে

বিশ্বে বাংলাদেশের ক্রিকেট তাদের অবস্থান সুদৃঢ় করেছে

সৈয়দ আলী শাফিন

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

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

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

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

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

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

ইউনিক্সঃ সেল গুরুত্বপূর্ণ রিসোর্স (Unix – Shell Useful Resources)

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

 

ইউনিক্স সেলের গুরুত্বপূর্ণ রিসোর্স

  • বেল ল্যাবঃ ইউনিক্স অপারেটিং সিস্টেমের সূতিকাগার, ইউনিক্স অপারেটিং সিস্টেমের সারসংক্ষেপ ,ইতিহাস ও বর্ণনা এখানে পাওয়া যাবে।
  • বিডিএস ইউনিক্সঃ বর্তমান সময়ের সার্ভার, কম্পিউটার ও সংশ্লিষ্ট সিস্টেমের জন্য FreeBSD একটি ভাল অপারেটিং সিস্টেম।
  • লিনাক্স অনলাইনঃ লিনাক্স ইউনিক্স টাইপ ফ্রী একটি প্লাটফর্ম।
  • Unix @ Wikipedia : ইউনিক্স অপারেটিং সিস্টেমের সংক্ষিপ্ত বিবরণের জন্য।
  • The Unix Forums : ইউনিক্সপ্রিয় প্রোগ্রামারদের ফোরাম।

 

ইউনিক্সের উপর কিছু বই

http://www.amazon.com/exec/obidos/ASIN/0131480057/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0596009658/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0596005954/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0130424110/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0672324903/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0201877589/httpwwwtuto0a-20

 

ইউনিক্স, লিনাক্স কমান্ড তালিকা (List of Unix, Linux Commands)

এই পোষ্টটি অতিশীগ্রই উন্মুক্ত করা হবে……………

ইউনিক্স, লিনাক্স সিস্টেম কল এর তালিকা (List of Unix, Linux System Calls)

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

accept
access
acct
add_key
adjtimex
afs_syscall
alarm
alloc_hugepages
arch_prctl
bdflush
bind
break
brk
cacheflush
chdir
chmod
chown
chroot
clone2
clone
close
connect
create_module
creat
dup2
dup
epoll_create
epoll_ctl
epoll_wait
execve
exit_group
_exit
exit
_Exit
faccessat
fattch
fchdir
fchmodat
fchmod
fchownat
fchown
fcntl
fdatasync
fdetach
flock
fork
free_hugepages
fstatat
fstatfs
fstat
fstatvfs
fsync
ftruncate
futex
futimesat
getcontext
getcwd
getdents
getdomainname
getdtablesize
getegid
geteuid
getgid
getgroups
gethostid
gethostname
getitimer
get_kernel_syms
get_mempolicy
getmsg
getpagesize
getpeername
getpgid
getpgrp
getpid
getpmsg
getppid
getpriority
getresgid
getresuid
getrlimit
get_robust_list
getrusage
getsid
getsockname
getsockopt
get_thread_area
gettid
gettimeofday
getuid
getunwind
gtty
idle
inb
inb_p
init_module
inl
inl_p
inotify_add_watch
inotify_init
inotify_rm_watch
insb
insl
insw
intro
inw
inw_p
io_cancel
ioctl
ioctl_list
io_destroy
io_getevents
ioperm
iopl
ioprio_get
ioprio_set
io_setup
io_submit
ipc
isastream
kexec_load
keyctl
kill
killpg
lchown
linkat
link
listen
_llseek
llseek
lock
lookup_dcookie
lseek
lstat
madvise
mincore
mkdirat
mkdir
mknodat
mknod
mlockall
mlock
mmap2
mmap
modify_ldt
mount
move_pages
mprotect
mpx
mq_getsetattr
mremap
msgctl
msgget
msgop
msgrcv
msgsnd
msync
multiplexer
munlockall
munlock
munmap
nanosleep
_newselect
nfsservctl
nice
obsolete
oldfstat
oldlstat
oldolduname
oldstat
olduname
openat
open
outb
outb_p
outl
outl_p
outsb
outsl
outsw
outw
outw_p
path_resolution
pause
perfmonctl
personality
pipe
pivot_root
poll
posix_fadvise
ppoll
prctl
pread
prof
pselect
ptrace
putmsg
putpmsg
pwrite
query_module
quotactl
readahead
readdir
read
readlinkat
readlink
readv
reboot
recvfrom
recv
recvmsg
remap_file_pages
renameat
rename
request_key
restart_syscall
rmdir
rtas
rt_sigaction
rt_sigpending
rt_sigprocmask
rt_sigqueueinfo
rt_sigreturn
rt_sigsuspend
rt_sigtimedwait
sbrk
sched_getaffinity
sched_getparam
sched_get_priority_max
sched_get_priority_min
sched_getscheduler
sched_rr_get_interval
sched_setaffinity
sched_setparam
sched_setscheduler
sched_yield
security
select
select_tut
semctl
semget
semop
semtimedop
sendfile
send
sendmsg
sendto
setcontext
setdomainname
setegid
seteuid
setfsgid
setfsuid
setgid
setgroups
sethostid
sethostname
setitimer
setpgid
setpgrp
setpriority
setregid
setresgid
setresuid
setreuid
setrlimit
set_robust_list
setsid
setsockopt
set_thread_area
set_tid_address
settimeofday
setuid
setup
sgetmask
shmat
shmctl
shmdt
shmget
shmop
shutdown
sigaction
sigaltstack
signal
sigpending
sigprocmask
sigqueue
sigreturn
sigsuspend
sigtimedwait
sigwaitinfo
socketcall
socket
socketpair
splice
spu_create
spufs
spu_run
ssetmask
statfs64
statfs
stat
statvfs
stime
stty
swapcontext
swapoff
swapon
symlinkat
symlink
sync_file_range
sync
_syscall
syscall
syscalls
_sysctl
sysctl
sysfs
sysinfo
syslog
tee
tgkill
time
timer_create
timer_delete
timer_getoverrun
timer_gettime
timer_settime
times
tkill
truncate
tux
umask
umount2
umount
uname
undocumented
unimplemented
unlinkat
unlink
unshare
uselib
ustat
utime
utimes
vfork
vhangup
vm86
vm86old
vmsplice
vserver
wait3
wait4
wait
waitid
waitpid
write
writev