عن المشروع

Hummingbird هو خادم لتخزين تحليلات وتتبع المواقع يستضاف ذاتياً ومكتوب بلغة Node.js. يقوم بتقديم بكسل تتبع 1x1 للزوار؛ حيث يحمل طلب GET الخاص بالمتصفح بيانات التتبع التي يتم إنشاؤها بواسطة مقتطف JavaScript صغير. المتطلبات والتثبيت يتطلب البرنامج node.js الإصدار 0.8.0 أو أعلى. تتضمن خطوات الإعداد في ملف README استنساخ المستودع، وتشغيل npm install لجلب التبعيات، واختيارياً تحميل قاعدة بيانات GeoIP الخاصة بـ MaxMind (ملف GeoLiteCity.dat) في الدليل الرئيسي إذا كانت ميزة الخريطة مطلوبة. يتم تشغيل الخادم باستخدام الأمر `node server.js`. لوحة التحكم والنشر تعمل لوحة التحكم على المنفذ 8080 افتراضياً ويمكن تعطيلها للاستخدام الإنتاجي في config/config.js. لوحة التحكم عبارة عن HTML بسيط يتم تقديمه من public/، لذا يمكن لأي خادم ويب استضافتها. يحذر ملف README من ضرورة تأمين لوحة التحكم إذا كان لا ينبغي أن تكون مرئية للعامة، وعادة ما يتم ذلك بوضعها خلف nginx أو apache مع مصادقة أساسية (basic auth). تقبل وظيفة 'listen' في لوحة التحكم وسيطاً ثانياً للواجهة التي سيتم الربط بها — على سبيل المثال "127.0.0.1" للمضيف المحلي فقط، أو "0.0.0.0" لجميع الواجهات — ويجب تشغيل بكسل التتبع على منفذ منفصل ليبقى متاحاً من العالم الخارجي. إعداد التتبع يحتوي الملف client/hummingbird.js على نص برمجي صغير يطلق حدث Hummingbird. يمكن لصقه في جسم الصفحة أو رفعه والإشارة إليه باستخدام علامة script. يؤدي استدعاء HummingbirdTracker.track() بدون وسائط إلى إرسال معلمات قياسية مثل عنوان URL للصفحة؛ ويمكن إرفاق بيانات عشوائية، على سبيل المثال HummingbirdTracker.track({logged_in: true})، ويمكن استخدام هذه البيانات داخل مقاييس Hummingbird لتصفية الأحداث في الخلفية. البنية المعمارية ينقسم Hummingbird إلى جزأين: خادم تتبع Node.js يسجل نشاط المستخدم عبر بكسل التتبع، ومجموعة من أدوات JavaScript (widgets) التي تعرض هذا النشاط. يقوم الخادم ببث جميع الأنشطة إلى العملاء عبر WebSockets عندما يكون ذلك ممكناً، مع الرجوع إلى Flash sockets أو long polling في حال تعذر ذلك. يستقبل كائن Hummingbird.WebSocket أحداث WebSocket من الخادم ككائنات JSON، وتشترك الأدوات الفردية في مقياس معين وتسجل وظائف معالجة يتم استدعاؤها كلما كان هذا المقياس موجوداً. المقاييس والأدوات المخصصة توجد المقاييس في lib/metrics ويتم تحميلها تلقائياً. يحتوي كل مقياس على وظيفة معالجة يتم استدعاؤها في كل مرة يحدث فيها حدث مستخدم جديد، ويخزن البيانات في خاصية كائن `data` التي يتم إرسالها إلى العملاء على فترات يحددها المقياس. يتم تقديم total_views.js كمثال أساسي، و cart_adds.js كمثال على التصفية بناءً على معلمات الاستعلام. توضح الأدوات القياسية (Counter, Logger, Graph) كيفية الربط ببيانات الخادم؛ ويوجد مثال لأداة بسيطة في public/js/widgets/logger.js. الأداة هي كائن يمتد نموذجه الأصلي من Hummingbird.Base وينفذ onMessage. يشير ملف README أيضاً إلى نصيحة: لتشغيل واجهة المستخدم محلياً أثناء بث البيانات من خادم إنتاجي، استخدم عنوان URL مثل http://localhost:8080/?ws_server=your-host.com&ws_port=12345. ملاحظات المشروع Hummingbird مرخص بموجب رخصة MIT. يدرج ملف README كل من Michael Nutt و Benny Wong وعدد من المساهمين الإضافيين.