প্রকল্প সম্পর্কে
Hummingbird হলো Node.js-এর জন্য লেখা একটি সেলফ-হোস্টেড সাইট ট্র্যাকিং এবং অ্যানালিটিক্স স্টোরেজ সার্ভার। এটি ভিজিটরদের জন্য একটি ১x১ ট্র্যাকিং পিক্সেল প্রদান করে; ব্রাউজারের GET রিকোয়েস্টটি একটি ছোট JavaScript স্নিপেট দ্বারা তৈরি ট্র্যাকিং ডেটা বহন করে।
প্রয়োজনীয়তা এবং ইনস্টলেশন
এর জন্য node.js v0.8.0 বা তার উচ্চতর সংস্করণ প্রয়োজন। README-এর সেটআপ ধাপগুলো হলো রিপোজিটরি ক্লোন করা, ডিপেন্ডেন্সি সংগ্রহের জন্য npm install চালানো এবং ম্যাপ ফিচারটি চাইলে রুট ডিরেক্টরিতে MaxMind-এর GeoLiteCity.dat GeoIP ডেটাবেস ডাউনলোড করা। সার্ভারটি `node server.js` কমান্ডের মাধ্যমে চালু করা হয়।
ড্যাশবোর্ড এবং ডেপ্লয়মেন্ট
ডিফল্টভাবে একটি ড্যাশবোর্ড পোর্ট ৮০৮০-তে চলে এবং প্রোডাকশন ব্যবহারের জন্য config/config.js-এ এটি নিষ্ক্রিয় করা যেতে পারে। ড্যাশবোর্ডটি public/ থেকে পরিবেশিত সাধারণ HTML, তাই যেকোনো ওয়েব সার্ভার এটি হোস্ট করতে পারে। README সতর্ক করে যে, ড্যাশবোর্ডটি যদি জনসমক্ষে দৃশ্যমান না করতে হয় তবে এটিকে সুরক্ষিত করা উচিত, সাধারণত basic auth সহ nginx বা apache-এর পেছনে রেখে। ড্যাশবোর্ডের 'listen' ফাংশনটি ইন্টারফেস বাইন্ড করার জন্য একটি দ্বিতীয় আর্গুমেন্ট গ্রহণ করে — উদাহরণস্বরূপ শুধুমাত্র লোকালহোস্টের জন্য "127.0.0.1", অথবা সব ইন্টারফেসের জন্য "0.0.0.0" — এবং ট্র্যাকিং পিক্সেলটি একটি আলাদা পোর্টে চালানো উচিত যাতে এটি বাইরের বিশ্ব থেকে অ্যাক্সেসযোগ্য থাকে।
ট্র্যাকিং সেটআপ করা
client/hummingbird.js-এ একটি ছোট স্ক্রিপ্ট রয়েছে যা একটি Hummingbird ইভেন্ট ট্রিগার করে। এটি পেজ বডিতে পেস্ট করা যেতে পারে অথবা আপলোড করে স্ক্রিপ্ট ট্যাগের মাধ্যমে রেফারেন্স করা যেতে পারে। কোনো আর্গুমেন্ট ছাড়াই HummingbirdTracker.track() কল করলে পেজ URL-এর মতো স্ট্যান্ডার্ড প্যারামিটার পাঠানো হয়; এখানে ইচ্ছামতো ডেটা যুক্ত করা যেতে পারে, উদাহরণস্বরূপ HummingbirdTracker.track({logged_in: true}), এবং সেই ডেটা ব্যাকএন্ডে ইভেন্ট ফিল্টার করতে Hummingbird-এর মেট্রিক্সে ব্যবহার করা যেতে পারে।
আর্কিটেকচার
Hummingbird দুটি অংশে বিভক্ত: একটি Node.js ট্র্যাকিং সার্ভার যা ট্র্যাকিং পিক্সেলের মাধ্যমে ব্যবহারকারীর কার্যকলাপ রেকর্ড করে, এবং এক সেট JavaScript উইজেট যা সেই কার্যকলাপ প্রদর্শন করে। সার্ভারটি সম্ভব হলে WebSockets-এর মাধ্যমে ক্লায়েন্টদের কাছে সমস্ত কার্যকলাপ ব্রডকাস্ট করে, অন্যথায় Flash sockets বা long polling-এ ফিরে যায়। Hummingbird.WebSocket অবজেক্টটি সার্ভার থেকে JSON অবজেক্ট হিসেবে WebSocket ইভেন্ট গ্রহণ করে এবং ব্যক্তিগত উইজেটগুলো একটি মেট্রিকের জন্য সাবস্ক্রাইব করে এবং হ্যান্ডলার ফাংশন রেজিস্টার করে যা সেই মেট্রিক উপস্থিত থাকলেই কল হয়।
কাস্টম মেট্রিক্স এবং উইজেট
মেট্রিক্সগুলো lib/metrics-এ থাকে এবং অটো-লোড হয়। প্রতিটি মেট্রিক্সে একটি হ্যান্ডলার ফাংশন থাকে যা প্রতিবার নতুন ব্যবহারকারী ইভেন্ট ঘটার সময় কল হয় এবং একটি `data` অবজেক্ট প্রপার্টিতে ডেটা সংরক্ষণ করে যা মেট্রিক দ্বারা নির্দিষ্ট বিরতিতে ক্লায়েন্টদের কাছে পাঠানো হয়। total_views.js একটি মৌলিক উদাহরণ হিসেবে এবং cart_adds.js কুয়েরি প্যারামিটারের উপর ফিল্টারিংয়ের উদাহরণ হিসেবে দেওয়া হয়েছে। স্টক উইজেটগুলো (Counter, Logger, Graph) দেখায় কীভাবে সার্ভারের ডেটার সাথে যুক্ত হতে হয়; একটি ন্যূনতম উইজেট উদাহরণ হলো public/js/widgets/logger.js। একটি উইজেট হলো এমন একটি অবজেক্ট যার প্রোটোটাইপ Hummingbird.Base-কে এক্সটেন্ড করে এবং onMessage ইমপ্লিমেন্ট করে।
README-তে একটি টিপস দেওয়া হয়েছে: প্রোডাকশন সার্ভার থেকে ডেটা স্ট্রিম করার সময় লোকালি UI চালানোর জন্য http://localhost:8080/?ws_server=your-host.com&ws_port=12345-এর মতো URL ব্যবহার করুন।
প্রজেক্ট নোটস
Hummingbird MIT লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত। README-তে Michael Nutt, Benny Wong এবং আরও বেশ কিছু অবদানকারীর নাম তালিকাভুক্ত করা হয়েছে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.