السلام عليكم..
عادةً عندما أكتب "سكريبت" برمجي ولو بسيط أهتم بشدة عن أنجع الطرق (أمناُ و سرعةً) لفعل ماأريد... سواءً عند محاولة كتابة "function" أو كلاس أو حتى مجرد loop أو جملة شرطية... وهذا عادي بل بالعكس هي ميزة حسنة مع أنها تجعل التقدم بطيئ..
إذن فشقا هذا التوسوس هما؛ الشق الأمني والشق الذي له علاقة بسرعة تنفيذ الكود... (سأدعوهما بجانب الأمن وجانب السرعة)، لكن دائما مايتعارضان في أبسط وأعقد الأمور... [في النهاية؛ عادة ماأنتصرُ لجانب الأمان.. لكن مستر "جانب السرعة" لايصمت؛ وينفجر أن ماأنتصرُ له غير منطقي].. كيف ذلك!؟
أبسط الأمثلة على ذلك، هو عندما يتاح لمستخدم عادي؛ إدخالَ حقلٍ معين ليتم حفظه في قاعدة البينات؛ فإن "جانب الأمن" يلحُ أن أقوم بالتأكد وفرترة نصوص الحقول من الHTML قبل التخزين وكذلك الأمر عند الإستدعاء (من قاعدة البيانات)... وهذا نوعا ما غير منطقي!! (<= يصيح "جانب السرعة") إذا كان السبيل الوحيد إلى تعبئة ذلك الحقل يتم فلترته، فلماذا سأقوم بإعادة الفلترة عند الإستدعاء (أو العكس)... ولأنه حتى لوحة تحكم قاعدة البيانات تتيح لنا أن نقوم بتخزين ماهو HTML من خلال الأوامر (أوامر أوتوماتيكية ب SQL تتيحها لوحة phpMyadmin) فإنه لاعيب في عدم الفلترة عند الإدخال (أي التخزين)، وسيكفي الفلترة عند الإخراج... [نعم لايبدو الفرق كبيراً هنا حول السرعة لكن لذلك سميته وسواس--لكن للأمانة أحيانا يكون للأمور تأثيرات وفرق جلي-- فدائما ما يتحجج مستر "جانب السرعة" بأن ربما الفرق هو 0.000001 من الثواني لكن ماذا إذ كانت هنالك أمور loop و عدة إختلافات إنتصرتَ بها للجانب الأمان (هذا كلام مستر جانب السرعة) فقد يصير الفرق هو 0.00001 وعندما يكون هنالك العديد من المستخدمين فقد يصير الفرق 0.0001 أو أكثر (نعم هي أرقام صغيرة لكن مستر جانب السرعة كعادته شخص عنيد)]... {يطول الجدال في الأمر عن أمور أخرى وأخرى وأخرى لاتنتهي... لكن في الأخير أنتصرُ لجانب الأمان عند التعارض.. وأحاول القيام بأكثر الأمور الأمنة السريعة وهذا يرهق...}
لكن للأمانة فأنا أمتن لجانب السرعة لنظرته الثاقب... مع أنه يهدر الوقت فإنه كثيراً مايجعلني أفتخر به للغاية... يدفعني للتساؤل أحيانا عن بعض الخواص الخاصة بالمستخدمين وكيفية تحسينها أفضل... ربما أكثرهم التي أستيطع عرضها (وستصل الفكرة) هي حول المواقع ذات Duotype (أنا من أطلقت هذا الإسم) وهي مثل أغلب مواقع التواصل الإجتماعي كفيس بوك وتويتر... فهي تتيح خاصيتين رئيسيتين التصفح و الدردشة؛ لكن عادة هناك أشخاص يميلون إلى إستخدام الدردشة أكثر وأخرين إلى التصفح أكثر (مثلي مثلا... نادرا ماأقوم بمحادثات على الفيس..) لذلك يمكن الإستفادة من هذا، وربط المستخدمين برقم معين من 0 إلى 1.. كل مستخدم ورقمهم الذي يتراوح بين الإثنين... مثلا إن كان رقمي على قاعدة الينات أقرب ل 0 كثيراً مثلا أن يعني ذلك أنني شخص أهتم بالتصفح أكثر لذلك على الفيس أن يولي أولوية لخصائص التصفح... وإن كان أقرب ل1 بكثير أن يتم إعطاء الأولويات لخصائص الدردشة... وأن يكون هذا الرقم يحدده ال cronjob... (ضروري من الكرونجوب فالمتحدث هنا جانب السرعة فهو مهوس بالسرعة...)... فبكرونجوب يمكن عمل نظام خاص بتصفح معلومات كل مستخدم في فترات متباعدة وأن يتم إعطاء لكلٍ قيمته "المزعومة"... بالنسبة للي لن يجد ذلك النظام مشكلة كبيرة وسيعطيني رقم قريب جدا جدا من ال0 لأن معلوماتي ستقول أنني معجب بكثير من الصفحات ومهتم بها كثيراً في حين لاأتحدث عبر الفيس ربما إلا مرة كل شهر ومع أشخاص محددين قليلين.. أما صديقي الذي صرح للي أنه لايهتم إلا بالدردشة مع معارفه بل إنه مهووس بالدردشة فقط ويكفيه رابط خاص بعرض الدردشات بدون أخر الأخبار كثيراً من الأحيان (كما تطبيق ماسنجر..) فهو لن أحير أنا في إعطائه قيمة قريبة جدا من 1 فما بالك بنظام... وماذا لو كان يعتمد على التعلم العميق والذكاء الصنعي (جانب السرعة ينتشي عندما يسمع عن التعلم العميق والذكاء الصنعي مع أنه لايعلم عندهم إلا القليل جدا)... بل يذهب لأكثر من ذلك في إقتراح أن الأشخاص الذين رقمهم قريب من 0 يجب أن يتم إعطاء الأولية للخصائص التصفح (أخر الأخبار) بالإضافة إلى أن يتم إستغلال الوقت بينما هم يتصفحون أخر الأخبار أن يتم تحميل (المزيد) من أخر الأخبار ولايتم عرضها إلى عندما يضغط الشخص على المزيد.. وهذا سيوحي للمستخدم كما لو أن الإستجابة تمت في نفس الوقت وسيغنيه عن الإنتظار ولو قليلا وبهذا سيحسن تجربته... وبينما وهو يتصفح التالي أن تعطى الأولوية لتحميل المزيد من الأخبار... وهكذا... {وهذه الطريقة ستحسن تجربة المستخدم في التصفح-- بما أنه موقع خاص بالتصفح غالبا جدا فهذا يغني عن تحديد رقم لكن مستخدم وأن يتم الإهتمام بتحسين الموضوعات وأن يتم تحميل للمستخدم المزيد من الموضوعات بينما هو يقرأ موضوعات أخرى... ويتم الإهتمام أكثر بهل نفضل باقي التعليقات أم باقي المقالات.......} وطبعا عند إستخراج ذلك الرقم (مابين 0 و 1) وإن كانت الرقم الخاص بالعدد الرسائل أكبر من 0.. فيجب أن أي يتم ضرب عددنا في رقم كبير فإن كان (0.109) -إنه قريب من رقمي الخاص على الأغلب- وإن كان هنالك عدد رسائل 2 جديدة فالأجدر أن يتم ضرب العدد في 5 مثلا ليصير (0.545) والرقم الجديد يوحي أن الشخص (مع أنه لايهتم بالرسائل) فإنه سيهتم بالرسائل... طبعا يمكن حتى ذلك الرقم (الذي ضرب فيه رقمنا والذي هو 5) أن يتم إختيارهم ليس عبثا وإنما أيضا بخورزميات خاصة تستحدث ب الكرونجوب.... هل هذا الشخص إن وجد رسالة جديدة سيهتم بها مع أن إهتماماته بليس بأخر الأخبار أم لا.. هل هو متصل للتو ك OFFCHAT أم لا... وهذا الأخير يساعد على إختيار الرقمين على السواء.. لأن المهتم بالدردشة بالمقام الأول من الأجذر أنه لايقوم ب OFFCHAT.... وهكذا
طبعا فيس بوك متقدمة للغاية في السرعة.. وهذا يوحي أنهم يعملون بطرق وخورزميات أنجع وأفضل... وربما حتى هذا الإقتراح ولطبيعة الفيس بوك لايكون مناسبا لهم... فهناك عوامل عديدة ستؤثر على هل سيساعد في تحسين تجربة المستخدم أم لا... ومستر "جانب السرعة" يعرف ذلك جيدا، بل يقترح دائما أن تكون هنالك دراسة موسعة وتجارب عديدة وأرقام وإحصائيات ليتم التوصل للأفضل... وأعتقد أن الفيس ناجحة في ذلك كثيراُ جدا...
ماذا عنك؟ هل تحدث معك أمور مشابهة؟ هل تجد الأمر عادي؟
أعتذر؛ فلم أراجع كما يجب.. لم أراجع الأخطاء اللغوية وهل توجد جمل غير سليمة...
التعليقات