اذهب إلى المحتوى

أكاديميّة حسوب

الأعضاء
  • المساهمات

    5187
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    1

كل منشورات العضو أكاديميّة حسوب

  1. على غرار أمثالي من محبي التكنولوجيا والتجارب المختلفة المرتبطة بها اقتنيت مجموعتي الخاصة من منتجات راسبيري باي ذلك الحاسوب الرهيب الذي يمكن استخدامه كأداة خاصة بمنع الإعلانات المزعجة وبناء طابعة ثلاثية الأبعاد وإنشاء خادم ماين كرافت minecraft وغيرها، ولكن الأكثر تخصيصًا كان إعدادي راسبيري باي كخادم ويب واستخدامه لاستضافة مدونتي الخاصة وهو موضوع المقال الذي أشاركه اليوم. إن لم تكن تعرف راسبيري باي من قبل، فننصحك بالرجوع أولًا إلى مقال تعرف على جهاز راسبيري باي Raspberry Pi وهو جزء من سلسلة دليل راسبيري باي. الأسباب التي دفعتني لإعداد خادم ويب مخصص عملت في مجال بناء المواقع وتقديم الدعم الفني لها لمدة طويلة تزيد على عقدين من الزمن جربت خلالها العديد من حلول الاستضافة ولكن ارتفاع التكاليف المادية وكون العمل محدودًا دائمًا بخيارات شركة الاستضافة وأدواتها وسياساتها الأمنية كل ذلك دفعني إلى تجربة إعداد خادم ويب خاص بي أنشأته في منزلي ومجاني بالكامل بكل معنى الكلمة، ولكن هذا النوع من الاستضافة ضمن المنزل معرض دائمًا لمخاطر التوقف بسبب الظروف الطارئة التي تنجم عن انقطاع التغذية الكهربائية أو شبكة الإنترنت في مقر الاستضافة. ما نعرضه في الفقرات اللاحقة هو خطوات إعداد الخادم لمدونة مبنية عبر منصة دروبال لكن الطريقة نفسها تنطبق على أي نظام إدارة محتوى آخر يعتمد PHP. إعداد راسبيري باي كخادم ويب اخترت حاسب راسبيري باي للمشروع وهو من الجيل الرابع مع ذاكرة عشوائية بسعة 4 جيجابايت وبطاقة MicroSD للتخزين بنوعية جيدة بالإضافة إلى وحدة التغذية والصندوق وكل ذلك بتكلفة معقولة. وقد اعتمدت توزيعة سينت او اس CentOS من لينكس كنظام تشغيل أما بخصوص خادم الويب فاخترت أباتشي على الرغم وجود خيارات أخرى ممكنة مثل Nginx والذي إن فضلت اختياره يتعين عليك ضبط إعدادات الأمان الخاص به بما يكافئ ملفات htaccess التي تستخدمها دروبال، كما تم إعداد ما يلزم لاستخدام APCu (user-accessible PHP cache) كذاكرة تخزين مؤقتة من أجل PHP لفوائدها في تسريع التسليم لهذا النوع من المواقع. باختصار أيًا كانت خياراتك عليك مراجعة متطلبات PHP لمنصة دروبال والعمل على تحقيقها ضمن بيئتك وذلك بمساعدة مدير حزمة لينكس الخاص بك مثل Yum، ولا ننسى Cockpit الإضافة المميزة من راسبيري باي التي تسهل إدارة خادم الويب ومراقبة أدائه وموارده مثل سجلات الوصول والتحديثات المتاحة وغيرها عبر واجهتها الرسومية التي تتضمن أيضًا نافذة خاصة بكتابة الأوامر السطرية. تثبيت دروبال على راسبيري باي سنثبت دروبال عبر composer مدير الاعتماديات والحزم في PHP بتنفيذ الأمر التالي: composer create-project drupal/recommended-project my_site_name_dir ثانيًا اضبط الإعدادات ليكون المسار mysitename_dir المحدد في الأمر السابق هو مسار الجذر للاستضافة الافتراضية الخاصة بخادم الويب أباتشي (ويقابلها كتلة الخادم server block في Nginx). وبمجرد طلبك لمسار استضافة الويب فإن دروبال سيكمل عملية التثبيت. قررت -يقول مؤلف المقال- إنشاء موقعي على حاسب محمول منفصل ومن ثم رفعت الكود على GitLab وحملته من هناك على الخادم، في الواقع لست ملزمًا بإجراء هذه العملية إن كنت تهدف فقط لتجربة دروبال على راسبيري باي. إطلاق الموقع على الإنترنت الخطوة التالية بعد بناء الموقع وإعداد خادم الويب هي إطلاق الموقع للعلن وهذا يتطلب مجموعة من الإجراءات أولها الإعدادات على موجه الإنترنت لقبول طلبات الاتصال الخارجية الواردة على المنفذين 80 و 443، ومن ثم حجز اسم النطاق للموقع وذلك عبر مزود خدمة يقدم DNS ديناميكي وهي ميزة مناسبة لاتصالات الإنترنت الخاصة بالمنازل لأنها تستخدم عناوين IP متغيرة ولا يتم تخصيصها بعناوين ثابتة. دون أن ننسى جانب الحماية الذي يتطلب تأمين شهادة SSL لتشفير الاتصال مع الموقع، في الواقع شهادات SSL مكلفة ربما أكثر من الحاسب الذي أعددته كخادم للموقع بالأخص كونها تحتاج لتجديد سنوي مدفوع، لذلك اتجهت إلى Let's Encrypt وحصلت على شهادة مجانية، ويمكنك بالإضافة لذلك تثبيت cretbot لتجديد هذه الشهادة تلقائيًا. تقييم خادم الويب الذي تم إعداده على راسبيري باي والسؤال الآن هل خادم الويب الذي تم بناؤه يضاهي في السرعة حلول الاستضافة عالية التكاليف؟ في الواقع الإجابة هي لا، ولكنه في النهاية مجاني بالكامل باستثناء تكاليف الطاقة الكهربائية اللازمة لتشغيل الجهاز وهي في الحقيقة لا تُذكر، والأهم من مجانية الحل هي حرية إعداد المخدم بالطريقة التي ترغب بها. بعد فترة من الاستخدام قد تلاحظ تباطؤ أداء الخادم والسبب كما تبين لي من حالتي عائد لتراجع أداء بطاقة MicroSD مع الزمن. كما ننوه إلى مشكلة أخرى تواجه هذا النوع من الاستضافة الخاصة ضمن المنازل وهي أن تغيير المنزل أو صيانته أو انقطاع الكهرباء أو خدمات الإنترنت كل هذه الأمور الطارئة ستكون سببًا لخروج الموقع عن الخدمة لفترة لا بأس بها، ولكن رغم كل ما سبق يعد الخادم مناسبًا لحركة تبادل البيانات البسيطة مثل نشر المقالات. تسريع خادم الويب بناءً على التقييم السابق برزت الحاجة لتحسين الأداء ما استدعى ترقية مواصفات العتاد الصلب للخادم فاستخدمت جهاز راسبيري باي مع ذاكرة عشوائية 8 جيجابايت واستبدلت بطاقة MicroSD بقرص تخزين من النوع NVMe SSD (نوع من وحدات التخزين على شكل شريحة يعتمد تقنية SSD لكنه لا يتصل باللوحة الأم بوصلة SATA التقليدية ويستخدم لتسريع أداء الحاسب) مع حافظة USB3، ربما كلفتني وحدة التخزين هذه مع حافظتها أكثر مما دفعته لقاء حاسب راسبيري باي كاملًا مع بطاقة MicroSD ووحدة التغذية والصندوق، ولكن في الواقع أصبح الخادم يعمل جيدًا منذ ما يقارب السنة مع هذه التحسينات المكلفة. أما بالنسبة لنظام التشغيل والبرامج فقد أعدت بنائها هذه المرة باستخدام أوبونتو 64 بت كنظام تشغيل ليتناسب مع زيادة الذاكرة العشوائية إلى 8 جيجابايت وبالطبع يوجد أنظمة تشغيل أخرى مناسبة أما خطوات البناء الأساسية فهي نفسها. ولكن التحسين الأهم على البيئة كان تسريع توصيل الموقع باستخدام شبكة توصيل المحتوى CDN وهي خدمة تقدمها بعض الشركات وتعتمد على الاحتفاظ بنسخ من ملفات الموقع على خوادم الشبكة المنتشرة في عدة أماكن جغرافية حول العالم ويتوفر أحيانًا بعض العروض المجانية لهذه الخدمة كالتي توفرها Cloudflare على سبيل المثال لا الحصر. النتيجة الترقية التي تمت على الخادم أظهرت نتائج جيدة جدًا على السرعة انظر المؤشرات في الصور التالية. بحكم عملي في تطوير مواقع الويب أجريت اختبارات السرعة على العديد من المواقع معظمها من نوع دروبال للأمانة ونتائج هذا الموقع كانت من بين الأفضل، من المؤكد أن لبساطة التصميم أثرًا جيدًا على سرعة الأداء وأن الموقع نفسه كان سيسجل نتائج أقل بوجود المزيد من الصور بالأخص لتصفح الهاتف الجوال (حيث تتم ملائمة اختبار Lighthouse ليحاكي سرعة اتصالات 4G). ومن الجدير بالذكر أن ارتفاع معدل سهولة الوصول للموقع دون مجهود كبير منك كمطور هو ميزة أخرى لإنشاء المواقع باستخدام بنية مثل دروبال مختبرة مسبقًا للعمل بسهولة مع التقنيات المختلفة. خاتمة وفي الختام إن كنت تخطط لتجربة دروبال في بناء موقعك الشخصي وتوفر لديك جهاز راسبيري باي فهذه المقالة كفيلة بتشجيعك على بناء خادمك الخاص وتجربة هذا النوع من الاستضافة بنفس الخطوات التي عرضناها. ترجمة -وبتصرف- للمقال How I run my blog on a Raspberry Pi لصاحبه Martin Anderson-Clutz. اقرأ أيضًا تجميع راسبيري باي والتحضير لاستعماله مدخل إلى خادم الويب بناء موقعك واستضافته باستخدام Git أساسيات تحديد التكلفة المادية الكاملة لبناء موقع ويب.
  2. يُعَد برنامج FileZilla أداةً لتبادل الملفات مفتوح المصدر وشائع الاستخدام يدعم مختلف بروتوكولات تبادل الملفات مثل: FTP و FTPS- بروتوكول FTP عبر طبقة TLS أو SSL- بالإضافة إلى SFTP - برتوكول FTP عبر SSH، وذلك عبر واجهته الرسومية وهي ميزة لطالما فضّلها المستخدم الذي يواجه صعوبة في استخدام الأوامر عبر سطر الأوامر مثل scp و rsync. سنتعرف في هذا المقال على برنامج FileZilla ومميزاته وطريقة تثبيته. تثبيت FileZilla على لينكس لديك خيارين لتثبيت FileZilla إما تثبيته باستخدام ملفاته المصدرية أو عبر حزم مخصصة لكل توزيعة من توزيعات لينكس وهي الطريقة المفضلة، إذ يفترض توافر التطبيق في مستودع تطبيقات معظم (إن لم يكن كل) توزيعات لينكس، لذا استعن دومًا بمركز التطبيقات ومدير الحزم في عملية التثبيت. بالنسبة لأوبونتو انتقل إلى مركز التطبيقات وثبته منه أو قم بذلك باستخدام الأمر التالي: sudo apt install filezilla في حال واجهتك أي رسالة خطأ تفيد بعدم العثور على البرنامج، ففعّل المستودع Universe الخاص بأوبونتو إما من مركز التطبيقات من قائمة Ubuntu Software بتفعيل خيار community-maintained free and open-source software أو بتنفيذ الأمر التالي من سطر الأوامر: sudo add-apt-repository universe ابحث بعد انتهاء عملية التثبيت عن البرنامج وشغله وذلك من خلال كتابة اسمه في شريط البحث السريع (بعد الضغط على الزر الخاص برمز ويندوز على لوحة المفاتيح). استخدام FileZilla عند تشغيل البرنامج FileZilla لأول مرة ستشاهد الواجهة المبينة أدناه، فالجانب الأيسر منها مخصص للجهاز المحلي أي الحاسب المستضيف للبرنامج، أما الجانب الأيمن فهو مخصص للخادم البعيد وسيكون فارغًا قبل الاتصال بالخادم وفور إتمام عملية الاتصال ستظهر ملفات الخادم البعيد ضمنه، وهو ما سنعرض بالتفصيل ولكن قبل ذلك لنتعرف على واجهة استخدام البرنامج. واجهة استخدام FileZilla تنقسم واجهة استخدام البرنامج كما توضح الصورة التالية إلى ستة نوافذ أو أقسام سنشرحها بإيجاز: شريط الأدوات: ويتضمن أزرارًا لتنفيذ مهام متنوعة مثل فتح مدير الموقع أو تحديث قائمة الملفات والمجلدات المعروضة سواء في جانب الجهاز المحلي أو البعيد بالإضافة إلى إعطاء أمر البدء بنقل الملفات أو إيقاف النقل …إلخ. شريط الاتصال السريع: ويستخدم لإدخال بيانات الاتصال بالخادم البعيد وهي اسمه أو عنوانه على الشبكة واسم المستخدم وكلمة المرور. سجل الرسائل: ويعرض رسائل عن تتبع كافة الأحداث الجارية ضمن البرنامج بغض النظر عن نجاح تأسيس الاتصال من عدمه. وتُميّز هذه الرسائل بالألوان الأخطاء باللون الأحمر والأوامر التنفيذية باللون الأزرق أما الأحداث العادية فهي دون لون. الموقع المحلي: هذا الجانب من الشاشة مخصص لعرض ملفات الجهاز المحلي وتنفذ ضمنه أوامر الرفع من الموقع المحلي إلى البعيد. الموقع البعيد: يشابه تمامًا جانب الشاشة المحلي في الخصائص لكنه يعرض ملفات الجهاز البعيد وهو مخصص لأوامر التنزيل أي الإرسال من الخادم للنظام المحلي. رتل عملية النقل: ويبين كافة العناصر التي يتم تبادلها بين الطرفين مع سرعة النقل لكل عنصر. الاتصال بخادم SFTP باستخدام FileZilla قبل البدء يجب أن تتوفر متطلبات الاتصال وهي إعداد الخادم البعيد ليقبل هذا النوع من بروتوكولات الاتصال ومعرفتك عنوان بروتوكول الإنترنت للخادم البعيد واسم المستخدم وكلمة المرور للدخول إليه بالإضافة إلى توفر أذونات الوصول للمجلد الهدف، والآن ننتقل لتنفيذ عملية نقل باستخدام البرنامج. أضف اتصال SFTP جديد من خلال النقر على أيقونة مدير المواقع الموجودة في شريط الأدوات أو عبر اختيارها من قائمة ملف. وبعد أن يفتح مدير المواقع اضغط على موقع جديد ويمكنك إعادة تسميته باسم ذي دلالة، وبعد ذلك اضبط إعدادات الاتصال وفق مايلي: اختر أسفل التبويب عام General بروتوكول الاتصال المطلوب وهو في حالتنا SFTP واكتب عنوان الخادم البعيد ورقم بوابة الاتصال في الخانات المخصصة لذلك وفي حال لم تختر رقم بوابة فإن البرنامج سيستخدم البوابة 22 وهي الخاصة باتصالات SSH. وفي نفس التبويب اختر أحد أنماط تسجيل الدخول ومنها مثلاً النمط الطبيعي وفيه تحدد اسم مستخدم وكلمة مرور، ونمط Key file authentication الذي يستخدم لتحقيق المصادقة على طرفي اتصال SSH ويتطلب وجود مفاتيح تشفير عامة وخاصة. ثم اضغط على زر اتصال الموجود في أسفل النافذة وستتم عملية اتصالك مع الخادم، ولتسهيل العمل يخزن البرنامج اعدادات الاتصال الخاص بك لتستخدمه مرةً أخرى. تتبع اتصالك من خلال رسائل الأحداث الظاهرة في سجل الرسائل فهي مؤشر على نجاح الاتصال كما أن مجرد ظهور الملفات على شاشة البرنامج في جانب الخادم البعيد يعتبر مؤشر على نجاح العملية. إرسال الملفات إلى الخادم البعيد الخطوة الأهم لدقة التنفيذ هي الوجود في المسار الصحيح للملفات على كلا الجانبين المحلي والبعيد، ومن ثم يكفي لعملية الإرسال النقر المزدوج على الملف أو الضغط على الزر الأيمن من الفأرة واختيار رفع upload، فإذا ضغط على ملف من النافذة اليسرى، فسيُرسل مباشرة إلى المجلد الظاهر في النافذة اليمنى (أو يضاف إلى الطابور منتظرًا دوره ليرسل)، والأمر نفسه لنقل الملفات من النافذة اليمنى إلى اليسرى أي من الخادم البعيد إلى المحلي، وهذا سبب التأكيد على وجودك في المسار الصحيح في كلا النافذتين أي على النظام البعيد والمحلي. تنزيل الملفات من الخادم البعيد تُنزَّل الملفات بنفس آلية الإرسال أو الرفع الواردة في الفقرة السابقة بحيث يتم التأكد من فتح المسارات الصحيحة على الجانبين المحلي والبعيد ومن ثم اختيار تنزيل Download بدلًا عن رفع Upload وستجد أن الملفات نقلت للموضع المحدد في مسارك المفتوح على الجانب المحلي من الشاشة. ولو راقبت الأداء ستلاحظ أن عمليات الرفع والتنزيل تجري بشكل متناظر وأن البرنامج يدعم عمليات النقل المتبادل على التوازي ما لم يتم تقييد عدد الاتصالات المسموح بها. خاتمة وبذلك نكون قد أحطنا بأهم الأساسيات الخاصة بعمل البرنامج والتي ستمكن القارئ من إنجاز عمليات تبادل الملفات بين النظام المحلي والخادم بسهولة ويُسر. ترجمة -وبتصرف- للمقال Using FileZilla for Connecting to SFTP Server Via GUI لصاحبه Pratham Patel. اقرأ أيضًا دليل استخدام FileZilla و phpMyAdmin لإدارة ملفات وقواعد بيانات موقع ووردبريس كيفية تنصيب وإعداد خادوم FTP على أوبنتو 3 أخطاء شائعة عند رفع الملفات باستخدام بروتوكول FTP وكيفية إصلاحها النسخة الكاملة لكتاب دليل الأمان الرقمي
  3. الإصدار 1.0.0

    23826 تنزيل

    تسبق كل عملية تنفيذية عملية تصميمية تخطيطية مثل عملية تخطيط أي بناء ودراسته وتحليله ورسمه على المخططات قبل البدء ببنائه وتنفيذه على الأرض وكذلك الحال مع قواعد البيانات فقبل تنفيذها برمجيًا، يكون هنالك مرحلة تصميمية يجري فيها تصميم قواعد البيانات وتخطيط جداولها والأعمدة التي تحتويها وأنواع البيانات فيها والروابط الرابطة بينها والقيود المقيدة لها وهكذا، فلعملية التصميم تلك أهمية كبيرة لأي قاعدة بيانات، ولا يكاد يخلو أي نظام برمجي يتعامل مع البيانات من قاعدة بيانات لذا لابد من إجراء تصميم متين مناسب لقاعدة البيانات التي سيُبنى عليها النظام. يعد موضوع تصميم قواعد البيانات مادة أساسية تدرَّس في السنوات الأولى من تخصص علوم الحاسوب والتخصصات المتعلقة بهندسة الحاسوب والبرمجيات في الجامعة ولابد من تعلم الموضوع ودراسته قبل البدء بتعلم كيفية تنفيذ قاعدة بيانات برمجيًا، فلا يمكن بناء قاعدة بيانات قوية متينة الارتباطات سليمة القيود موحَّدة عديمة التكرارات دون دراسة موضوع التصميم نظريًا وإتقانه عمليًا وذلك بتصميم قواعد بيانات نموذجية والإطلاع على تصميمات أخرى لقواعد بيانات صممها مهندسون أكفَّاء. يشرح هذا الكتاب عملية تصميم قاعدة بيانات شرحًا موجزًا غير مخل، إذ يبدأ أولًا بتغطية كل المفاهيم المتعلقة بقواعد البيانات بدءًا من فكرة قاعدة البيانات بالأصل واختلافها عن أي نظام تخزين بيانات، وحتى العملية التصميمية وعمليات نمذجة البيانات وتمثيلها وعمليات الربط بين جداول البيانات وما يقوم عليها ثم يبني بعدها على ذلك كله شارحًا عملية تصميم قواعد البيانات وتطويرها حتى رسم مخطط ER النهائي لجداول قاعدة البيانات، وهو مخطط نموذج الكيان والعلاقة الواصف لقاعدة البيانات وجداولها وكل تفصيلة فيها، ثم يشرح بعدها كيفية تنفيذ المخطط الناتج عبر لغة SQL ولا يغيب عنه التطرق إلى أنظمة إدارة قواعد البيانات DBMS مع ذكر أشهرها. هذا الكتاب مترجم عن كتاب Database Design - 2nd Edition "تصميم قاعدة بيانات - الإصدار الثاني" لصاحبيه إيدرين وات Adrienne Watt ونيلسون إنج Nelson Eng وهو مبني في الأصل على عدة مصادر ركيزتها كتاب Database Design للمؤلف الأول إيدرين وات، فالمصادر المبني عليها كل فصل مدرجة في نهايته ويمكنك الرجوع إلى الكتاب الأجنبي الأصل إن أردت الإطلاع عليها، كما أن هذا الكتاب الأجنبي يُعتمد في بعض الجامعات لتدريس مادة تصميم قواعد البيانات في فصول قسم علوم الحاسوب وتصميم البرمجيات. انتبه إلى أن هذا الكتاب لا يركز على عملية تنفيذ قواعد البيانات وبرمجتها بل يركز على عملية تصميم قاعدة بيانات وكيفية نمذجتها وإن كان يتطرق إلى لغة SQL سريعًا شارحًا باقتضاب كيفية إنشاء قاعدة بيانات والعمليات الأساسية للتعديل عليها، أما إذا أردت الاستزادة والتعمق في هذا الموضوع، فننصحك بالرجوع إلى كتاب ملاحظات للعاملين بلغة SQL وكتاب الدليل العملي إلى قواعد بيانات PostgreSQL وتوثيق لغة SQL من موسوعة حسوب. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات مجموعة ضمن وسم «تصميم قواعد البيانات» وتجد روابطها تاليًا: تحليل نظام الملفات لإدارة البيانات وتخزينها واختلافه عن نظام قاعدة البيانات المفاهيم الأساسية في قواعد البيانات وتصميمها خصائص قواعد البيانات والمزايا التي تقدمها نمذجة البيانات وأنواعها في عملية تصميم قواعد البيانات مفاهيم نموذج البيانات العلائقية RDM الأساسية المهمة في تصميم قواعد البيانات نموذج الكيان والعلاقة ER لتمثيل البيانات وتخزينها في قاعدة البيانات قواعد السلامة وقيودها لضمان سلامة البيانات في قواعد البيانات نمذجة الكيان العلاقي ER عند تصميم قواعد البيانات الاعتماديات الوظيفية المستخدمة في تصميم قواعد البيانات فهم عملية التوحيد Normalization المستخدمة عند تصميم قاعدة البيانات عملية تطوير قواعد البيانات Database Development نظرة سريعة على لغة الاستعلامات الهيكلية SQL لغة معالجة البيانات DML الخاصة بلغة SQL أمثلة عملية عن كيفية تصميم قواعد البيانات
  4. لا يعني التصميم المتجاوب مع الأجهزة المحمولة ومع الأجهزة الأخرى، مثل الحاسب المحمول وحواسب سطح المكتب؛ إنتاج نفس المنتج بحجم أصغر فحسب، بل يعني التركيز على ما يهم مستخدمي الأجهزة المحمولة وتقديم تجربة مستخدم متميزة، ولكي تفلح في مرادك لابد من التركيز على المهام وكيفية تنفيذها. لم يعد التصميم المتجاوب مع الأجهزة المحمولة اختياريًا، فقد اقتنى مليارات البشر هواتفًا ذكية وبنسبة أدنى حواسيب لوحية للدخول إلى شبكة الإنترنت، لذا يحرص المصممون على تلبية احتياجات هؤلاء المستخدمين، أو المخاطرة والخروج من سوق المنتجات. يعني هذا تبوء الأجهزة المحمولة المرتبة الأولى في العديد من استراتيجيات تطوير المنتجات، ويعني استيعاب اختلاف تجربة الأجهزة المحمولة عن تجربة أجهزة سطح المكتب. على سبيل المثال، حجم شاشة الهواتف الذكية محدود أكثر، واستمرار اتصالها بالإنترنت قد لا يكون مضمونًا، وعمر بطاريتها ثمين، وهلم جرًا. يجب مراعاة مزايا هذه الأجهزة، فهي أكثر خصوصيةً من أجهزة سطح المكتب، ويمكن تشغيلها دائمًا (حسب شحن البطارية)، كما يمكنك من خلالها التحدث مباشرةً إلى المستخدم وفيها أجهزة استشعار الحركة ونظام التموضع العالمي GPS وأجهزة قياس التسارع، وغير ذلك أيضًا. إذًا كيف يمكننا تطبيق التصميم المتجاوب مع الأجهزة المحمولة؟ هيا بنا نستعرض لمحةً عامةً. التركيز على الأجهزة المحمولة يُعَد حجم شاشة الأجهزة المحمولة محدودَا، مما يعني تصغير حجم التصميم أكثر، لذا يجب عليك تصميم الميزات في أدنى حجم ممكن، ويجب عليك التركيز على المهام الرئيسية التي يريد المستخدم تنفيذها، كما يجب عليك التعامل مع منصات أخرى لممارسة العمل عبر الأجهزة المحمولة. إضافة قيمة في العصر الراهن، يُطلق الجميع تطبيقات للأجهزة المحمولة. وإذا لم تتمكن من تمييز تطبيقك بميزات فريدة لا يوفرها أي منافس، فسوف تدفن تطبيقاتك في حفرة مظلمة عند متاجر التطبيقات. ميزات التشغيل الشخصية إذا كانت الأجهزة المحمولة شخصية، فيجب أن تمتاز وظائف تشغيلها بميزات شخصية وممتعة وقابلة للتخصيص، وذلك بجعلها جزءًا لا يتجزأ من حياة مستخدمك، وليس بالضرورة أن يصبح إنجاز المهام عملًا روتينيًا. مراعاة سياق الاستخدام متى سيتمكن المستخدمون من الوصول إلى ميزات التشغيل في تصميمك؟ هل عند شعورهم بالملل؟ أو هل خلال انشغالهم؟ هل عندما يشعرون بالضياع؟ اجعل ميزات التشغيل تناسب حال المستخدمين، وكن دائمًا على تواصل معهم. ميزات التشغيل المناسبة للأجهزة يجب أن تعتمد عند تصميم ميزات التشغيل على أنماط تسمح بتجربتها على كل الأجهزة المحمولة بطريقة متجاوبة ومتسقة، وذلك من خلال الآتي: إبقاء المستخدم في الصورة: قد تستغرق معالجة البيانات بعض الوقت، ولكن يجب أن تُعلم المستخدم فور تلقى بياناته وتُخبره بالمدة التي سينتظرها. الانتباه إلى التفاصيل: ينبغي أن تُتيح التطبيقات تجارب استخدام سَلِسةً تُمكن المستخدمين من تنفيذ المهام بكفاءة، كما ينبغي أن يشعر المستخدمون ويعلموا أنها جيدة للاستخدام. مشاهدة الواجهة: مستخدمو الهواتف الذكية عبارة عن أصبعي إبهام حرفيًا، يلمسا الشاشة. فهل يمكن إكمال مهامك بسهولة بإبهامي شخص ما؟ لا؟ أعد التفكير فيها إذًا. حفظ الإعدادات التلقائية: تتعلق هذه الإعدادات بأصبعي الإبهام، حيث الحفاظ على الحد الأدنى من الأزرار وعلامات التبويب والحقول وما إلى ذلك، إلى جانب الحفاظ على سهولة المحتوى لقابلية الوصول والتنقل. الحفاظ على اتساق أدوات التحكم وترتيبها أسفل الصفحة: هذا يتيح للمستخدم التركيز على المحتوى ومعالجته كما تقتضي حاجته. مطالبة المستخدم بإدخال البيانات اللازمة فقط: انتبه إلى ما إذا كان التصحيح التلقائي يساعد في إنجاز المهام على جهازك أو يعيقها. تأكد من مساعدة المستخدم في اختيار لوحة المفاتيح المناسبة لإنجاز المهمة. لا تنسى دعم اتجاه أفقي خصوصًا إذا كنت تريد كتابة مزيدًا من النصوص. فكر في إتاحة قفل اتجاه لتسهيل الاستخدام. الاهتمام بشريط التنقل تعتمد الكثير من الأمور على مدى تعقيد مهمتك، ولكن تطبيق شريط التنقل على الهاتف يمكن أن يندرج في هذه الفئات: لا شيء مطلقًا: إذا كنت تقوم بإصدار تطبيق الطقس للحي الذي تعيش فيه، فاستعمل شاشةً واحدةً (وينبغي) لإتاحة المهمة كاملة للمستخدم. علامات تبويب بسيطة: عندما تحتاج إلى تقسيم محتوى متناسق إلى عدة حقول مثل تويتر. قوائم منسدلة: عندما تحتاج إلى تقديم مستويات أعلى من التعقيد. اجمع المحتوى وسَهِل التنقل عبر التسلسل الهرمي. (مثل قائمة إعدادات هاتفك الذكي). تمكين لغة الإشارة إذا كنت تريد تمكين التحكم باستخدام الإيماءات (وهذا سبب يُظهر رغبة مستخدميك في إتمام مهامهم)، فيجب عليك مراعاة الآتي: قابلية الاكتشاف: كيف سيعرف المستخدم أن بإمكانه استخدام الإيماءات لإنجاز مهامه؟ إيماءات بكلتا اليدين: يمكن أن تكون مفيدةً، ولكن يمكن أن تكون عائقًا. فإذا أمسكت كوب القهوة بيد؛ فكيف سيكمل المستخدم مهمته من خلال التحكم بيد واحدة فقط؟ استمرار التواصل يجب إبقاء المستخدم على دراية أثناء إنجاز مهامه. ويجب عليك: اعتماد أسلوب لتقديم الملاحظات: بدايةً من اللمس (اعتمد خاصية الاهتزاز)، إلى المؤثرات البصرية (مؤشرات مستوى التقدم)، ويجب عليك إبقاء المستخدمين على بيّنة حول ما إذا كانت الأمور تسير على ما يرام خلال إنجاز مهامهم. اطلب تأكيدًا عند الضرورة: مربعات الحوار المشروطة مزعجة، ولكن الاستثناء هنا، هو أنك تريد حماية المستخدم. إذا كنت تسأل عما إذا كان شخص ما يريد حذف صورة على سبيل المثال، فيمكنك أن تسأل عما إذا كان متأكدًا قبل تنفيذ الأمر. حفظ التعديلات على المهمة إذا خرج مستخدم من تطبيقك دون إتمام مهمته، فعندما يفتحه مرةً أخرى، يجب السماح له بالدخول مباشرةً لاستكمال نفس المهمة بحفظ آخر تعديلاته، وما عليك سوى أن تحرص على تسريع وتسهيل إعادة فتح المهمة حتى تحظى بحب المستخدمين. مراعاة رسوم الجرافيك يجب أن يكون الرمز الذي تستخدمه لتطبيقك مثاليًا ومعبرًا عن المهمة الرئيسية التي يريد المستخدمون تنفيذها، وما عليك سوى جعل تطبيقك يظهره بوضوح في لمح البصر حتى تزيد إمكانية تنزيله واستخدامه. مراعاة سلاسة الاستخدام الأول حافظ على بساطة الأمور واجعل تركيزك منصبًا على المهام الرئيسية عند بدء تشغيل تطبيقك لأول مرة. يمكنك زيادة مستوى التعقيد مع مرور الوقت لأن المستخدم إذا أحس بالارتباك والتعقيد خلال استخدام تطبيقك للمرة الأولى، فغالبًا لن يكرر استخدامه مرةً أخرى. الخلاصة يمكنك تقديم تجربة استخدام جهاز رائدة لمستخدم تطبيقك، وذلك من خلال التركيز على المهام الضرورية لذلك المستخدم من منصة تضمن قابلية الوصول وميزات التشغيل ونماذج دعم لهذه المهام. تختلف الأجهزة المحمولة عن جهاز سطح المكتب، ولكن هذا لا يعني بالضرورة صعوبة تقديم تجربة متميزة، وإنما مجرد استخدام نهج مختلف. ترجمة -وبتصرف- للمقال Functionality and Mobile Design – Don’t Shrink the Screen, Focus on the Tasks لصاحبه. اقرأ أيضًا مقدمة في تصميم الويب المتجاوب: العناصر الزائفة واستعلامات الوسائط وغيرها كيفية التصميم للأجهزة المختلفة أفضل أطر تصميم المواد لتصميم تطبيقات الويب الحديثة الخاصة بواجهات المستخدم وتجربة المستخدم التصميم للهواتف: التصميم البصري تصميم النماذج الأولية للواجهات الرسومية: نصائح للتصاميم المتجاوبة والموجهة للأجهزة المحمولة
  5. الإصدار 1.0.0

    13555 تنزيل

    أصبحت الترجمة عملًا رائجًا جدًا في هذه الأيام، فأي شاب أو فتاة في مرحلة الدراسة ربَّما يبحث أو تبحث عن وظائف حُرّة في الترجمة ظنًا منهم بأنها وظيفة سائغة لكلّ من أتقنَ لغة أجنبية (أو أكثر)، وربّما تكون الترجمة سهلة إذا كان كلّ ما يلزمها هو إتقان لغة أجنبية، لكن هذا الإتقان لا قيمة له إن لم يجتمع مع إتقان اللغة الأم (وهي العربيَّة هنا) ومع اطلاع متعمِّق على نظرية الترجمة وما اتصل بها من علوم اللغة والأدب، وبدونهما تأتي الترجمة ضعيفةً مثل بناءٍ متهالكٍ بناهُ مهندسٌ مبتدئٌ أو لوحة رسمتها يد تنقصها الخبرة. يُقدِّم هذا الكتاب دليلًا للمترجمين الجدد وأصحاب الخبرة المتوسطة ويساعدهم في استيعاب واكتساب بعض من مهارات الترجمة التي ترتقي بعملهم من "ترجمة المعنى" إلى "تعريبه" وتكييفه مع سياقه الثقافي واللغوي الصحيح، وهو موضوعٌ لم تُكرَّس له كتبٌ كثيرة في المكتبة العربية، فالكتاب مُوجَّه إلى المترجمين المبتدئين الراغبين بتعلّم الترجمة الكتابية من اللغة الإنكليزية إلى العربية، وهو لا يُعنى بالترجمة الشفهية ولا يتطرَّقُ إلى لغاتٍ غيرِ هاتين إلا في أمثلة عارضة، ولا يتطرق إلى الترجمة بالاتجاه العكسي (من العربية إلى الإنكليزية) لأن لها شروطًا وضرورات أخرى تحتاج شرحًا منفصلًا. يساعدُ الكتاب غير المختصّين على خوض غمار الترجمة نظريًا وأكاديميًا والتعرف إلى أهم المدارس الفكرية فيها، وإلى خصوصيات تطبيق هذه المناهج في سياق الترجمة من اللغة الإنكليزية إلى العربية (وهي خصوصيات تختلفُ بين كُلِّ لغتين من اللغات). وتبدأُ هذه الرحلة من سؤالٍ بسيطٍ وشيّق: فهل نقل أو "ترجمة" المعنى بين لغات الإنسان ممكنٌ أصلًا؟ وبذلك يبدأُ الكتاب بمدخلٍ إلى ظاهرة الترجمة وأساسياتها ثُمَّ يتناول مدارسها ومناهجها الكثيرة، وينتقلُ بعد ذلك إلى طُرُق التعريب وتعقيداته الشائكة في ترجمة المفردات والتراكيب والجملة وفي النهج والأسلوب، فيتطرَّقُ لأساسيات الكتابة العربية السليمة وضرورتها بالنسبة للمترجم. يُنصح بهذا الكتاب للمترجمين أصحاب الخبرة القليلة الراغبين بتطوير مهاراتهم وبناء خلفية منهجيَّة وأكاديميَّة في مجال الترجمة، على أنه لا يخلو من صعوبة للمستجدِّين في الترجمة بسببِ طرحهِ للكثير من المفاهيم والمشكلات اللغوية التي تحتاجُ إلى خبرة وتجربة تطبيقية لاستيعابها على أنه يمكن للمترجم المبتدئ قراءة الكتاب ثم الرجوع إليه كلما ازدادت خبرته إذ يمكن أن تعد هذا الكتاب مرجعًا تضعه بين متناول يديك، الهدف من الكتاب هو تأهيل المترجم الشغوف ليصبحَ خبيرًا مقتدرًا على أداء عمله وعلى خدمة لغته وثقافته، فالترجمة ليست منجم ذهبٍ وليست دائمًا مهنة مال، على أنها قوة جوهرية في التغيير والتقدُّم والنهضة، لذا أتمنَّى أن يضع بين يدَيْ المترجم العربي وسيلةً يهتدي بها إلى أصول الترجمة السليمة، وأن يساهم -ولو قليلًا- في نهوض الترجمة العربية لغةً ونوعًا لا كمًا وعددًا. وما يجعل هذا الكتاب جديدًا في المكتبة العربية أمران: الأول أنه كتاب أكاديميّ يُقدّم للقارئ منهجًا وأصولًا علميَّة متّبعة عالميًا، والثاني أنه يلاقحُ ما بينَ هذا المنهج العالمي وبينَ خصوصيَّات وسياق الترجمة العربية في زمننا وما يواجه المترجم فيها من عقبات وتحديات حاضرة. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات مجموعة ضمن وسم «الترجم والتعريب» وتجد روابطها تاليًا: الفصل الأول: اللغة ومفهوم الترجمة بين اللغات النسبية اللغوية والترجمة: هل تؤثر اللغة على أفكارنا؟ فن الترجمة وأنواعها وأساليب الترجمة الحديثة كتب تزن ذهبا: تراث العرب والترجمة بين الحرفية والتصرف: تاريخ موجز لنظرية الترجمة آفات الترجمة على اللغة من لسان العرب إلى أكسفورد: المعاجم والقواميس وأهميتها في الترجمة تعريب المفردة والمصطلح تعريب تراكيب اللغة تعريب الجملة وأقلمتها تعريب الثقافة: مسائل لغوية في الترجمة العمل في الترجمة
  6. تحظى إدارة المنتجات بدعمٍ كامل من طرف شركات التقنية الأكثر نجاحًا في العالم، لكن بعض الشركات الأخرى لم تعتمد هذا النهج حتى الآن، رغم أنها قادرةٌ على تحقيق فائدةٍ كبيرة من إدارة المنتج. ولهذا السبب، سنشرح لك في هذا المقال أهميتها، وحاجتك إليها في شركتك التقنية أو الرقمية. إدارة المنتج ليست نهجًا جديدًا، فقد كانت بدايتها نحو العام 1931، انطلاقًا من مذكرات نيل ماكيلروي في شركة بروكتر وغامبل P&G، والتي تتحدّث عن حاجة الشركة إلى تعيين أشخاصٍ يمتلكون علاماتٍ تجاريةٍ فرديّة ويفهمون المنتجات التي تقدمها الشركة كليًا، حيث اعتمدت شركة هيولت-باكارد لاحقًا هذا النهج، فكوّن جزءًا رئيسًا من نجاح الشركة، بالإضافة إلى دمجه مع طرق كايزن (التحسين المستمر) المُستمدّة من نهج شركة تويوتا. مؤخرًا، ساهم بيان منهجية التطوير السريع في تطوير وظيفة إدارة المنتج، واعتمدت شركات عديدة -مثل جوجل وAirbnb وفيسبوك ونيتفلكس وغيرها- على منهجية التطوير السريع بصورةٍ كبيرة، وقد أصبحت إدارة المنتجات وظيفةً مستقلةً إلى جانب وظائفَ أخرى، مثل الهندسة والتسويق (بدلًا من أن تنضوي تحت أقسامٍ أخرى)، وكثيرًا ما يرفع التقارير إلى المدير التنفيذي مباشرةً. فما هي إدارة المنتجات إذًا؟ اقرأ هذا التعريف البسيط قبل التعرّف على أهمية وظيفة مدير المنتج. ما هي إدارة المنتجات؟ إن جوهر هذا التعريف هو الطبيعة الشاملة لعدّة قطاعاتٍ في إدارة المنتجات، والتي تشمل الهندسة والتقنيّة واستراتيجيّة دخول السوق وقابليّة الاستخدام ونماذج الأعمال، وتُوجد نظمٌ ووظائفٌ وأدوار تركّز على كل عنصرٍ من الوظائف المطلوبة في الشركات التي لا تمتلك إدارة منتجات، لكنّ غياب هذه الوظيفية يؤدّي إلى فقدان هذا الجمع الشامل للوظائف. تُوفّر ويكيبيديا تعريفًا مفصلًا لإدارة المنتجات يركّز على نشاطاتٍ معينة، ويُساعدك على إدراك ماهيتها، ويعرفها على أساس: "إدارة المنتجات وظيفةٌ مؤسساتيةٌ داخل الشركة، تتعامل مع تطوير المنتجات الجديدة ومبررات بدء الأعمال والتخطيط والتوثيق والتنبؤ وسياسة التسعير وإطلاق المنتج وتسويق المنتج، وتشمل هذه الوظائف كامل مراحل دورة حياة المنتج". مع ذلك كثيرًا ما يخطئ البعض في فهم معنى إدارة المنتجات ويختلط الأمر مع مفهوم دراسات الجدوى، إذ يعتقد الكثيرون أنهما نفس الشيء، وهما ليسا كذلك لذا يمكن توضيح الفرق بينهما في الجدول الآتي: أوجه الاختلاف إدارة المنتجات دراسات الجدوى إنطلاقها ونهايتها تبدأ قبل بدء العمل على المنتج (عندما يكون مجرد فكرة) وتستمر خلال دورة حياته كاملة قبل بدء العمل على المنتج (عندما يكون مجرد فكرة تنتهي وهو ما يزال فكرة بظهور النتائج اانظرية التقديرية المتعلقة بنجاح المشروع أو فشله (قبل بدء دورة حياة المنتج) أساسها نظري + تطبيقي نظري فقط نتائجه دقيقة إلى حد ما افتراضية غالبًا ما تبتعد عن الواقع تناسبه مع أنواع المنتجات يتناسب مع كل المنتجات لا يتناسب مع كل أنواع المنتجات نوع الخبرات اللازمة للقيام بها (للمشاريع المتوسطة أو الكبيرة) تتطلب فريق عمل كامل من مختلف التخصصات تحتاج إلى متخصص في المالية والأعمال وقوانين الأعمال الجهة المسؤولة عن العمل على المنتج إدارة المنتجات مسؤولة عن العمل على المنتج دراسات الجدوى غير مسؤولة عن العمل على المنتج المرونة مرونة جيدة بما أنها تقوم على مراقبة المنتج خلال دورة حياته بالتالي إعادته للمسار المطلوب كلما انحرف لا توجد مرونة كافية إذ تنتهي قبل التطبيق الفعلي للمنتج، بالتالي قد تحدث متغيرات كثيرة لم تتطرق لها دراسة الجدوى من ناحية أخرى، يخطئ الكثيرون أيضًا وحتى بعض الشركات في التمييز ما بين إدارة المنتجات وإدارة المشاريع، لذا فلتسهيل فهم هذين المصطلحين، يمكن اختصار الفرق بينهما في كون أن العمل على المنتج يتطلب عدة مشاريع تحتاج بدورها إلى إدارة، ولتوضيح هذا الفرق بالتفصيل، ننصحك بالاطلاع على المقالة مقارنة بين مدير المنتج ومدير المشروع لتكون الصورة أمامك أوضح أكثر بهذا الخصوص. ما أهمية إدارة المنتجات يجب عليك تعيين مدير منتجات إذا أردت الالتزام بعرض القيمة للعملاء حصريًا، أو عرض القيمة المنتجات بصورةٍ أساسية، حيث تُعَد منصات المواقع والتطبيقات وواجهة برمجة التطبيقات منتجًا بحد ذاته بنظر الكثير من الشركات، إذ يشتري العملاء والمستخدمون تلك المنتجات بصورةٍ أساسية، ويتفاعلون مع الشركة ويجربون منتجاتها عبر تلك القنوات. يتطلب ذلك امتلاك نهج الأخذ بحاجات العملاء (أو المستخدمين أو المواطنين)، بالإضافة إلى المعرفة التقنيّة التي تتماشى مع حاجات مشروعك التجاريّ، ويُطلق على هذا النهج إدارة المنتجات، ويُؤدّي فقدان هذا النهج (أو الوظيفة) إلى اتباع منهجٍ مفكّك، حيث: تأخذ أقسام المبيعات والتسويق والدعم بوجهة نظر المستهلك، لكنّها تُعاين وجهة نظر المستهلك، وذلك انطلاقًا من الأهداف والمشكلات التي تواجهها، ولا تملك فكرةً واضحة عمّا يمكن تحقيقه باستخدام التقنية. تعمل الهندسة والتقنية والعمليات على تصميم المنتجات، لكنّها ليست ضليعةً بما يريده العميل. يضع المشروع التجاري والفريق التنفيذي أهدافًا وغاياتٍ معيّنة. مع ذلك، قد لا تأخذ بالحسبان رأي العميل أو تهتم به، وربما لا تُقدَّر جدوى المنتج بنظر العميل. لتعزيز هذه الفكرة، إليك مثالًا عمليًا عن قيمة نهج إدارة المنتجات الذي يقدّمه للشركات والمؤسسات، إذ تسمح تلك الشركات والمؤسسات لعملائها بتخصيص وإعادة تسمية الحملات التسويقية لرسائل البريد الإلكتروني التي ترسلها الشركة، فينخرط الفريق والإدارة في تلبية المتطلبات المُعدّة مسبقًا، وهو أمرٌ يستغرق عدة شهور، بهدف تقديم خيارات تخصيصٍ كاملة والتي يتطلّب بعضها مواجهة تحدياتٍ تقنيةٍ جادّة. لنفترض أن مدير منتجاتٍ خبير التحق بالفريق، أجرى مقابلاتٍ مع العديد من عملاء الشركة، فاستطاع تقليص خارطة طريق العمل إلى طلبٍ واحد، وهو السماح للعملاء بتغيير شعار الشركة، حيث تُعَد تلك عمليةً سهلة التنفيذ، وسيحبها العملاء بشدّة، لأنها أتاحت لهم إمكانية تخصيص الشعار كيفما يشاؤون، لكنّ العملاء أرادوا الحصول على الشعار فقط، لا إجراء تغييراتٍ على الخطوط أو الألوان أو التخطيط، فكان العملاء بحاجةٍ إلى هذا التخصيص قبل أن يُتاح لهم استخدام المنتج. يتجسّد مثالٌ آخر عن قيمة إدارة المنتجات في الأهداف التجاريّة للشركة، أي رغبة الشركة في طرح المنتج ضمن سوقٍ محدّدة ومتكاملة، وتريد الشركة في هذه الحالة بيع المنتج للعملاء مباشرةً، بدلًا من بيعه للشركات التجاريّة الأخرى، حيث أن الأمرَ منطقيٌ بالنسبة للشركة، وعلى مستوى الاقتصاد الجزئي، حيث يُمكنها في هذه الحالة تأسيس علاقةٍ مع العميل، واستغلال إمكاناتها التشغيليّة في نشاطٍ ماليٍ واسع النطاق. مع ذلك، يكشف النهج التخصصي في إدارة المنتجات عن وجود تحدياتٍ تقنيّة، وحاجةٍ إلى إمكاناتٍ تشغيليّةٍ لخدمة العملاء الذين لم تَحسب الشركة حسابهم، حيث أدّت إدارة المنتجات إلى فجوةٍ كبيرةٍ بين الاستراتيجيّة التي يود المشروع التجاري اتباعها من جهة، ورغبة العملاء المستهلكين من جهةٍ أخرى. عملية إدارة المنتجات تمر عملية إدارة المنتجات بعدة مراحل بحسب المرحلة التي نحن بها من تطوير المنتج، بحيث تحوي كل مرحلة منها عدة جوانب، ويمكن توضيحها في الآتي: قبل بدء العمل على المنتج (المنتج هنا ما يزال فكرة) خلال هذه المرحلة يكون من الضروري اختيار المنهج الموحد الذي سيُتبع في الإدارة، ونجد هنا منهجين رائجين هما: المنهجية الرشيقة أجايل Agile منهج تدفق المياه waterfall وهنا يمكن انتقاء المنهجية الأنسب انطلاقًا من نوع منتجك. وإلى جانب ذلك، لا بد من تحديد الأدوات اللازمة للقيام بإدارة المنتج خلال مختلف مراحله؛ بعد ذلك لا بد من وضع المعالم الرئيسية للمنتج، وذلك من خلال الآتي: البحث والتخطيط: هنا يجب تحديد الحصة السوقية المتوقعة لمنتجنا، والمنافسين الموجودين حاليًا في السوق مع مختلف بياناتهم اللازمة لمتابعتهم وتحديد ميزاتهم التنافسية وأسعارهم، وغيرها من الأمور المهمة لمنتجنا أيضًا. تحديد متطلبات المنتج وتصميمه: يجب هنا مستلزمات إنتاج المنتج نفسه وكيف يكون شكله. عند بدء العمل على المنتج (قبل إطلاقه) في هذه المرحلة يتم العمل على تطوير المنتج وإنتاجه ومتابعة مساره وملاحظة ما يناسبه فعليًا وما يمكن تعديله للوصول إلى الهدف الأساسي منه. بعد العمل على النسخة الأولى من المنتج (بعد إطلاقه) لا يكفي أن تكون هناك متابعة للمنتج فقط عندما يكون فكرة أو قيد الإنتاج، بل لا بد من متابعته خلال مسار دورة حياته في السوق أيضًا، وذلك من خلال التعرف على آراء المستخدمين حوله، والعمل على تطويره وإضافة ميزات وخصائص تتماشى واحتياجات السوق والمستهلكين أكثر، إلى جانب إدارة دورة حياته نفسها. مهارات إدارة المنتجات تحتاج إدارة المنتجات إلى بعض المهارات الأساسية التي تسهم في إنجاح عملية تطوير المنتج وإدارته، وتتمثل هذه المهارات في: اكتساب المعرفة والمهارة اللازمة لإجراء أبحاث السوق. القدرة على بناء الاستراتيجيات للعمل على المنتج. القدرة على التعامل مع المنهجية المناسبة للمنتج. التخطيط للمنتج وخارطة طريق المنتج. مهارات التحليل السليم وحل المشكلات التي تصادف المنتج خلال تطويره وخلال دورة حياته. تقييم تطور المنتج ومساره. القدرة على التفاوض. التواصل الجيد. المهارات قيادية. أدوات إدارة المنتج تتطلب عملية إدارة المنتجات وتطويرها مجموعةً من الأدوات التي تختلف حسب طبيعة المنتج، وحجم الموارد المخصصة له ومدى انتشاره؛ مع ذلك ثمة بعض الأمور المشتركة التي لا بد وأن تتوفر في كل عملية إدارة منتج، والتي سنذكرها في الآتي: أدوات البحث عن المنافسين وتحليلهم: يعتمد البعض للبحث عن المنافسين على أدوات سهلة ومجانية، مثل بحث جوجل للمنتجات الرقمية، والذي يساعدهم على تحديد أبرز المنافسين على اختلاف أنواعهم انطلاقًا من نتائج البحث لديهم، كما يلجأ البعض إلى أدوات تحليل هؤلاء المنافسين خاصةً عندما تكون المنتجات رقمية، فيلجؤون إلى أدوات تساعد على قياس سرعة مواقع المنافسين وقوتها من ناحية السيو والزوار مثلًا إذا كان المنتج الرقمي هو موقع إلكتروني مخصص لشيء معين. أدوات إدارة المشاريع وخرائط المنتجات: تحتاج إدارة المنتجات بصفة عامة إلى مجموعة من الأدوات التي تساهم في إدارة سير العمل وإنشاء خرائط منتجات متوافقة مع خصائص المنتج، ومن بين هذه الأدوات يمكن ذكر: "أداة أنا" وهي أداة باللغة العربية مخصصة لإدارة المشاريع وفرق العمل، والتي يمكن تخصيصها لبناء خرائط منتجات متوافقة مع طبيعة المنتج والمنهج المستخدم في إدارته وكذا أهدافه؛ أيضًا يمكن استخدام بعض الأدوات الاخرى الشائعة للمشاريع الكبيرة نوعًا ما، مثل أداة Roadmunk أدوات تصميم المنتج: يحتاج المنتج أيا كان نوعه إلى وجود تصميم معين له، وبطبيعة الحال تختلف الأدوات المستخدمة للتصميم على اختلاف الميزانيات والخبرات والمتطلبات اللازمة للعمل على المشروع، حيث يستخدم البعض أدوات مجانية في حين يستخدم البعض الآخر أدوات مدفوعة؛ كما يستخدم البعض أدوات بسيطة إذا كانت المتطلبات بسيطةً أيضًا، أو يلجؤون إلى أدوات معقدة تحتاج إلى خبرات عالية بالعمل. أدوات التواصل بين فريق العمل: يحتاج فريق العمل على المنتج إلى وسيلة محددة للتواصل فيما بينهم، فهم فريق متعدد التخصصات والالتزامات، لذا فاستخدام وسيلة واضحة موحدة للتواصل سيكون مهمًا جدًا، وهنا يمكن اعتماد البريد الإلكتروني، أو وسائل التواصل الاجتماعي مثلًا، لكن هذه التواصلات ستكون خارجية ومتعبة بالإدارة أحيانًا، لذا يمكن اعتماد أدوات تساهم في تقليل التنقلات مع إمكانية الاستفادة منها بأكثر من وجه، وهنا يمكن استخدام أداة أنا مثلًا التي سبق وذكرناها أعلاه، من أجل إضافة التواصلات اللازمة بين أعضاء الفريق بسلاسة. أدوات عرض المنتج وتقديمه: يحتاج العمل مع فريق متنوع على المنتج إلى وجود أدوات عرض مناسبة تستخدم للعروض التقديمية في الاجتماعات من أجل شرح الأفكار وتقدم العمل ومثال هذه الأدوات نذكر شرائح البروبوينت، كما يمكن أن يكون هناك استخدام للأدوات من أجل عرضها أمام مستثمرين؛ وأخيرًا العرض على العملاء. تختلف الأداة هنا حسب اختلاف نوع العرض من بسيط إلى احترافي، كما قد تختلف الجهة القائمة عليها، حيث يمكن اللجوء في الحالات التي تتطلب احترافيةً عالية إلى استخدام قوالب جاهزة بجودة عالية تمكن من الوصول إلى الأهداف المطلوبة مثل اقتناء قوالب جاهزة من بيكاليكا، كما قد تتطلب الحصول على قوالب احترافيةً مخصصة يمكن تحصيلها من مواقع العمل الحر مثل مستقل أو خمسات. أدوات تحليل الزوار والمستخدمين: تستمر إدارة المنتجات إلى ما بعد إطلاق المنتج وخلال كل دورة حياته، وبطبيعة الحال عملية الإدارة ستحتاج إلى وجود بيانات قابلة للقياس لتحسين مسار المنتج في كل مرة وفهم المستخدمين، وهنا يمكن الاعتماد على أدوات تحليل معينة يتم اختيارها انطلاقًا من طبيعة المنتج. نذكر هنا على سبيل المثال أدوات التحليل من جوجل google analytics الذي يسمح بمعرفة معلومات تفصيلية عن المستخدمين زوار المواقع، كما يمكن الاعتماد الاستبيانات الإلكترونية، أو على وسائل التواصل الاجتماعي لمعرفة آراء المستخدمين ومتطلباتهم. أسئلة متكررة إذا كنت وزملاؤك تتساءلون عن قيمة إدارة المنتجات في الشركة، فإليك بضع أسئلةٍ متكرّرة عن الموضوع، ومآخذَ شائعة على إدارة المنتج. لا نتعامل مع عملاء، بل مع المواطنين أو أعضاء مؤسساتٍ ومنظماتٍ أخرى: لا تُؤثّر نوعية العملاء الذين تتعامل معهم على حاجتك إلى نهج إدارة المنتجات، لذا ركّز القواعد التي تعلّمتها على هؤلاء المواطنين (أو الأعضاء) بدلًا من العملاء. العميل أو المنتج مملوكٌ لقسمٍ آخر: قد تُواجه بعض الفرق الرقميّة التي تحاول تطبيق أفضل الممارسات، مشكلةً تتمثل بامتلاك الأقسام الأخرى مدير منتجاتٍ مسؤول عن المنتج، وفي مثال عن ذلك،نجد المصارف، أين يكون مدير المنتجات مسؤولًا عن بطاقة الائتمان، وفي هذه الحالات، لا تزال بحاجةٍ إلى نهج إدارة المنتجات في الفرق الرقمية المسؤولة عن تلك المنتجات الرقميّة، وبهذا يكون المنتج الرقمي في أغلب الأحوال، سبيلًا لتفاعل العميل، أو مفتاح حصوله على التفويض، حيث يُفيد الاستثمار في إدارة المنتجات حينها في التأكّد من أن العنصر الرقمي الذي تُقدّمه يعمل بأفضل صورة، بافتراض أنّك تواجه خطرًا من ناحية الإيرادات والفرص. لدينا مدير منتجاتٍ يهتم بتحليل XYZ: تتمحّور إدارة المنتجات حول التأكّد من أداء العمل على نحوٍ صحيح، بينما تركّز إدارة المشاريع بشدّة على ضمان سير العمل على أكمل وجه، إذ يُكمّل كل منهما الآخر، وتحتاج إليهما معًا لتحقيق نتائجَ موفّقة. كيفية دخول مجال إدارة المنتج بدء شركتك الشخصية: لا شيء أفضل من بدء شركتك لتعلّم إدارة المنتجات، والسبب هو أن مؤسس الشركة يؤدي كافة الأشياء بنفسه (في مرحلة البداية على الأقل). وعندما تُؤسس شركتك، ستكون مسؤولًا عن تحليل البيانات والتسويق وإدارة المنتج وخدمة العملاء وما إلى ذلك، وستصبح قادرًا على إنجاز كافة أنواع العمل، حتى لو لم تتقنها باحترافيّة، وهذا هو السبب الذي سيجعلك مدير منتجاتٍ متفوّق، لأنك ستتفاعل يوميًا مع عددٍ متنوعٍ من أصحاب المصلحة؛ مع أنها تجربة متقلبة تحمل في طياتها الكثير من الخبرات التي ستتعلمها في هذه الرحلة، إلا أنها رحلةٌ مكلّفةٌ نوعًا ما، خصوصًا إذا كان هدفك النهائي هو إتقان إدارة المنتجات، ومع ذلك، إذا حصلت على هذه الفرصة وكنت مُؤهلًا للتحدّي، ننصحك بتجربة ريادة الأعمال ولو مرةً واحدة. فإذا بدأت شركتك الناشئة، ستتعلم الكثير من هذه العملية، خصوصًا تلك الجوانب أو الأشياء التي تُمنى بالفشل، والتي تضعك -في نهاية المطاف- على المسار الصحيح لاكتشاف الأشياء الناجحة. برامج دراسية أو برامج التدريب للحصول على وظيفة مساعد مدير منتج: يناسب هذا المسار خريجي الجامعات الجُدد، حيث تقدّم الشركات الكبرى -مثل فيسبوك وجوجل وأمازون وآبل ومايكروسوفت، وغيرها- برامج مساعد مدير المنتج التي تُهيّئ أيّ شخصٍ لا يملك خبرةً لدخول مجال إدارة المنتج، كما وتساعدك هذه البرامج الدراسية على التعلّم بسرعة لأنها تتميّز بمنهجٍ دراسيٍ مصمّم بعناية، ويشمل العمل على منتجاتٍ ذات قاعدة مستخدمين حيّةٍ وضخمة، والحصول على الإرشاد والتدريب، ودوران الموظف في عددٍ مختلف من شركات المنتجات، بالإضافة إلى فرصة بناء شبكةٍ اجتماعية، مع أن تلك البرامج الدراسية تتميّز بكونها شديدة المنافسة، إذ يمكنك اتباع مسارٍ آخر، عبر الانخراط في برنامج تدريبٍ صيفي تُقيمه إحدى الشركات الكبرى. مصدر الصورة: RocketBlocks الانتقال داخل الشركة: يُعَد الانتقال إلى وظيفة مدير المنتج داخل الشركة التي تعمل لديها أحد أسهل الطرق لدخول المجال من دون إنفاق الأموال، وذلك بصرف النظر عن الوظيفة التي تشغلها حاليًا، فلا شكّ أن وظيفتك تتطلب مسؤولياتٍ معينةٍ قابلة لإعادة الصياغة بصورةٍ مشابهة لمسؤوليات مدير المنتج، وإذا لم تستطع ذلك، يُمكنك التقرّب من فريق المنتجات في الشركة التي تعمل لديها. اجتمع مع مدير المنتجات لتفهم الدور الوظيفي الذي يلعبه، وقدّم له المساعدة قدر الإمكان، وعبّر عن رغبتك في الانضمام إلى الفريق، حيث ينتقل الموظفون إلى إدارة المنتجات قادمين من أقسامٍ مختلفة كليًا، مثل التسويق وخبرة العملاء والعمليات والتحليلات والهندسة، لذا تأكّد أن بمقدورك فعل ذلك. ماجستير في إدارة الأعمال: يسعى الكثير من الأشخاص إلى الحصول على درجة ماجستير في إدارة الأعمال، للوصول إلى منصب كبير مديري المنتجات أو مدير منتجاتٍ أوسط في الشركات الضخمة، والتي تدفع بدورها أجرًا محترمًا للخريجين الجدد الذين يحملون درجة الماجستير، حيث تُوظف الشركات المُدرجة ضمن قائمة فورتشن 500 حملة درجة الماجستير في إدارة الأعمال مباشرةً بعد التخرج، في حين تبحث شركاتٌ أخرى عن هؤلاء لملء شواغر وظيفيةٍ في منصب مدير المنتجات، فما السبب وراء هذا التهافت على حملة الماجستير؟ أحد الأسباب الرئيسة هي امتلاك هؤلاء فرصةً للتفاعل مع العديد من الأشخاص ذوي الخلفيات المتنوّعة إبان فترة دراستهم، والعمل معهم على طيفٍ واسع من المشاريع، وتقديم العروض ودراسة مواد أو مساقاتٍ إلزامية، مثل التمويل والاستراتيجيات والعمليات وتحليل البيانات وغيرها، لهذا السبب، تُعَد درجة الماجستير في إدارة الأعمال بمثابة حزمةٍ شاملة، وتُساعدك في الحصول على وظيفةٍ في إدارة المنتجات. في المقابل، تكون تكلفة هذه الدراسة كبيرة، لذا يجب عليك التفكير إذا كنت بحاجةٍ إلى درجة الماجستير أم لا. برامج أو مخيمات تدريبية لإدارة المنتجات: تُوفّر بعض الشركات برامجًا أو مخيماتٍ تدريبيّة في مجال إدارة المنتجات، مثل شركة Product School أو جنرال أسمبلي General Assembly، وتُعَد تكلفة تلك البرامج وورشات العمل أقل بكثير من تكلفة دراسة الماجستير في إدارة الأعمال، كما وتشهد اليوم رواجًا لدى الراغبين في تعلّم إدارة المنتجات، وقد تُوفّر تلك البرامج عونًا لمَنْ يرغب بالانتقال إلى منصب مدير المنتج داخل الشركة ولا يمتلك المهارات المطلوبة، أو لا يرغب في إنفاق كمٍّ هائلٍ من المال على الدراسات العليا، إذ تُساعدك المخيمات التدريبية على اكتساب المهارات والمعرفة المطلوبة في إدارة المنتجات، عبر إنشاء منتجاتٍ رقمية والحصول على الإرشاد ودراسة حالاتٍ فردية، لذا فأفضل ما يمكن أن تقدّمه تلك البرامج والمخيمات هو المساقات التعليميّة التي يدرّسها مدربون ومعلمون من شركاتٍ مُدرجة ضمن قائمة فورتشن 500. مصادر أخرى كي تتمكن من دخول إدارة المنتجات تحتاج الخطوات السابقة إلى بعض التنظيم والوقت حتى تتمكّن من تنفيذها؛ مع ذلك، لا يوجد ما يمنعك من تعلّم مدخلات ومخرجات إدارة المنتجات، كما أن هناك الكثير من الكتب التي ألفها رواد الأعمال، بعضها غني بالمعلومات والمصادر التي تُساعدك على اكتساب فكرةٍ أوضح عن مسؤوليات مدير المنتج وكيفية إجراء مقابلة عملٍ ناجحة، وإن رغبت في تعلمها باحترافية، فننصحك بالانضمام إلى دورة إدارة تطوير المنتجات المقدمة من أكاديمية حسوب. ترجمة -وبتصرُّف- للمقالين What Is Product Management And How It Can Help You Drive Growth لصاحبها Scott Middleton و‎5 Ways And Resources to Get Into Product Management لصاحبها Bisman Singh. اقرأ أيضًا التحضير لمقابلة العمل بهدف الحصول على وظيفة مدير المنتج كيف تدير قنوات توزيع المنتج؟ تطوير منتج جديد خطوة بخطوة النسخة العربية الكاملة لكتاب مدخل إلى التسويق
  7. الإصدار 1.0.0

    10301 تنزيل

    تُعد أنظمة التشغيل موضوعًا متقدمًا في العديد من برامج علوم الحاسوب، حيث يتعرف المتعلم على كيفية البرمجة بلغة C بحلول الوقت الذي يتعرف فيه على أنظمة التشغيل، وربما يأخذ المتعلم فصلًا دراسيًا في معمارية الحاسوب Computer Architecture قبل ذلك، فيصبح الهدف من تقديم هذا الموضوع عادةً هو عرض تصميم وتنفيذ أنظمة التشغيل للطلاب مع افتراض ضمني أن بعضهم سيجري بحثًا في هذا المجال، أو يكتب جزءًا من نظام تشغيل. هذا الكتاب مترجم عن الكتاب Think OS لكاتبه آلن داوني Allen B. Downey والذي يعد مسودة أولية لم تكتمل بصورة نهائية بعد إذ طُوّر لفصلٍ دراسي في كلية أولين Olin College يدعى أنظمة البرمجيات Software Systems. لا يفترض هذا الكتاب أنك قد درست معمارية الحاسوب، فيجب أن يمنحك فهمًا أفضل أثناء قراءته عن الحاسوب ومعماريته وكيف يعمل المعالج والذاكرة فيه وكيف تُدار العمليات وتُخزَّن الملفات وما يحدث عند تشغيل البرامج، وما يمكنك القيام به لجعل البرامج تعمل بصورة أفضل وأسرع بوصفك مبرمجًا. يشرح الفصل الأول بعض الاختلافات بين اللغات المُصرَّفة compiled واللغات المُفسَّرة interpreted، مع بعض الأفكار حول كيفية عمل المصرِّفات compilers، ويشرح الفصل الثاني كيف يستخدم نظام التشغيل العمليات لحماية البرامج قيد التشغيل من التداخل مع بعضها البعض. ويشرح الفصل الثالث الذاكرة الوهمية virtual memory وترجمة العناوين، ويتحدث الفصل الرابع عن أنظمة الملفات ومجرى البيانات، ويصف الفصل الخامس كيفية تشفير الأرقام والأحرف والقيم الأخرى، ويشرح أيضًا العامِلات الثنائية bitwise operators. أما الفصل السادس، فيشرح كيفية استخدام إدارة الذاكرة الديناميكية وكيفية عملها، ويدور الفصل السابع حول التخبئة caching وهرمية الذاكرة. ويشرح الفصل الثامن تعدد المهام multitasking والجدولة scheduling. ويدور الفصل التاسع حول خيوط POSIX وكائنات المزامنة mutexes، ويشرح الفصل العاشر المتغيرات الشرطية POSIX ومشكلة المنتج / المستهلك، ويدور الفصل الحادي عشر حول استخدام متغيرات تقييد الوصول POSIX وتطبيقها في لغة C. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «مدخل إلى أنظمة التشغيل»، أو تجدها مسردة بالترتيب التالي: الفصل الأول: مفهوم التصريف Compilation في لغات البرمجة الفصل الثاني: العمليات Processes في أنظمة التشغيل الفصل الثالث: الذاكرة الوهمية Virtual memory في نظام التشغيل الفصل الرابع: فهم الملفات Files وأنظمة الملفات file systems الفصل الخامس: تمثيل الأعداد والنصوص بالبتات وإجراء العمليات على مستوى البت الفصل السادس: إدارة الذاكرة Memory management في لغة C الفصل السابع: فهم عملية التخبئة Caching في معمارية الحاسوب الفصل الثامن: تعدد المهام Multitasking في الحواسيب الفصل التاسع: مفهوم الخيوط Threads في عملية المعالجة الفصل العاشر: المتغيرات الشرطية وحلها مشاكل التزامن بين العمليات في لغة C الفصل الحادي عشر: متغيرات تقييد الوصول Semaphores في لغة البرمجة سي C
  8. المحتوى هو أحد أهم العناصر في موقع الويب أيًا كان نوعه ووظيفته، إذ بنيت المواقع والتطبيقات للمستخدمين حتى يستفيدوا من محتواها سواء لقراءة أو تعلم أو تسوق وما إلى ذلك. فثبت عبر تجارب سلوكيات المستخدمين أن نصفهم يجرون عمليات البحث ضمن المواقع التي يتصفحونها، ومن هنا نشأت الحاجة إلى استخدام المطورين لأساليب بحث داخلية في مواقعهم، والأفضل من ذلك استخدام محركات بحث داخلية، حيث يوفر محرك البحث الداخلي تجربة أفضل للمستخدم تجعل الوصول إلى ما يريده من الموقع عملية سريعة وبسيطة، خاصة إذا كان الموقع يعرض منتجات تجارية مثلًا ويريد المستخدم أن يبحث عما يريد، أو إذا كان موقع محتوى متخصصًا وأراد المستخدم أن يبحث عن موضوع معين فيه. كم وافر من المحتوى الموجود على الإنترنت موجود باللغة الإنكليزية، وهنالك وسائل ومحركات بحث وفيرة تتيح إمكانية البحث باللغة الإنكليزية، ولكن عندما يأتي الأمر إلى المستخدم العربي والمحتوى العربي، نجد قصورًا في جودة البحث إلى الدرجة التي تجعل البحث الداخلي في المواقع عملية دون فائدة، فأتى محرك البحث العربي لبلب ليحل هذه المشكلة بالاعتماد على أفضل الأساليب والتقنيات، وبمجهود موجه للجمهور المتحدث بالعربية. سنبني في هذا المقال موقع ويب يعرض مقالات، بشكل مبسط، باستخدام Node.js وقاعدة بيانات MySQL (أو MariaDB) وسنرى معًا الفارق بين وظيفة البحث التي سننشئها يدويًا، وبين نتائج البحث التي يعطينا إياها لبلب عند استخدامه في الموقع، فهيا بنا. جدول المحتويات التهيئة الأولية للمشروع تصميم الصفحات تهيئة إدارة قواعد البيانات وإنشاء الموجهات Routes إضافة المقالات بناء عملية البحث اعتمادًا على قاعدة البيانات مفاهيم متعلقة بمحرك البحث الداخلي تهيئة حزمة لبلب بناء عملية الفهرسة Indexing تعديل عملية البحث وتجارب البحث تجارب البحث باستخدام لبلب الخلاصة التهيئة الأولية للمشروع سننشئ مجلدًا جديدًا باسم my-blog للمشروع ونفتحه باستخدام محرر Visual Studio Code وبعدها نفتح نافذة سطر الأوامر، وننفذ الأمر التالي فيها لإنشاء مشروع Node.js جديد: npm init اختر ملف الانطلاق app.js عند السؤال عن ذلك ثم أنشئه بعدها في جذر المجلد بإنشاء ملف جديد ضمن محرر الأكواد vscode. يجب أن ننتبه إلى أهمية تنظيم ملفات عمل المشروع، فمن المهم جدًا أن تكون أسماء المجلدات دالةً على وظيفتها، وأن تكون الملفات مقسمةً تقسيمًا صحيحًا. علينا أن ننشِئ مجلدًا للضبط باسم config ونضع بداخله ملفًا لإنشاء قاعدة البيانات والجدول articles إن لم تكن موجودةً، لكن قبل ذلك، علينا أن نثبت بعض الحزم من مدير الحزم npm لتضمين الوحدات modules التي تلزمنا في عملنا. اكتب ما يلي في سطر الأوامر: npm install express express-session body-parser sequelize uuid ejs mysql سنشرح سريعًا وظيفة كل حزمة من الحزم السابقة: express: هي إطار العمل المساعد في تطبيقات node.js، وحزمة express-session هي حزمة تعريف الجلسة لكل مستخدم حيث ستفيدنا في عملية البحث. body-parser: هي الأداة التي ستساعدنا في قراءة الطلبات requests. sequelize: هي عبارة عن orm (وسيلة تواصل بين الخادم وقاعدة البيانات تتولى جميع الاستفسارات بين التطبيق والخادم وقاعدة البيانات) سيساعدنا في إدارة عمليات قاعدة البيانات. uuid: هي أداة تولد معرفات فريدة عالميًا. ejs: هي محرك العرض الذي سنستخدمه لعرض صفحاتنا. mysql: هي حزمة للتواصل مع قواعد البيانات. يمكنك الرجوع دائمًا إلى موقع npm لمعرفة المزيد عن هذه الحزم. سننشِئ قاعدة بيانات باسم myBlog، سنبدأ بكتابة الملف dbCreation.js ضمن مجلد config كما يلي، لا تنسَ تغيير معلومات الاتصال من المستخدم الجذر root أو أي مستخدم آخر وتغيير كلمة المرور password إلى كلمة المرور الخاصة بك: //تنفذ الأوامر الموجودة فى هذا الملف فى بداية إنشاء المشروع فقط let mysql = require('mysql'); //معلومات الاتصال بالخادم المحلى let con = mysql.createConnection({ host: "localhost", user: "root", password: "password", multipleStatements: true }); //تعريف أمر إنشاء قاعدة البيانات وإنشاء الجدول المستخدم فى التطبيق let sqlCommand = ` CREATE DATABASE IF NOT EXISTS myBlog CHARACTER SET utf8 COLLATE utf8_general_ci; use myBlog; CREATE TABLE IF NOT EXISTS articles ( id int AUTO_INCREMENT, title varchar(200), author varchar(100), content text, tags varchar(500), createdAt datetime, updatedAt datetime, PRIMARY KEY (id) ); ` con.connect(function(err) { //تنفيذ إنشاء قاعدة البيانات con.query(sqlCommand, function (err, result) { if (err) throw err; }); }); تخزن قاعدة البيانات معلومات كل مقال كما يوضح الكود إذ تحتوي على جدول فيه الحقول الآتية: حقل id رقمي من النوع int والذي يمثل معرِّف المقال وهو المفتاح الرئيسي primary key للجدول، ويزداد تلقائيًا. الحقول title و author و tags لتخزين عنوان المقال واسم كتابها والوسوم المستعملة فيها وذلك على التتالي وبالترتيب، وهي من النوع varchar. الحقل content من النوع text الذي يمثل محتوى المقال. الحقلان createdAt و updatedAt لتخزين متى أُنشِئت المقالة ومتى حدثت، وهما من النوع datetime. بعد إنشاء قاعدة البيانات وضبطها، لنشغل الخادم عبر كتابة الكود التالي في ملف app.js: const express = require("express"); const bodyParser = require("body-parser"); const session = require("express-session"); const uuid = require("uuid"); const errorHandler = require("./middleware/errorHandler"); const db = require("./config/dbCreation"); // ‫لإنشاء التطبيق باستخدام express const app = express(); //تحديد محرك العرض app.set("views", `${__dirname}/views`); app.set("view engine", "ejs"); // ‫‫خيارات حزمة body-parser app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json({ extended: true })); // تعيين المجلد الحاوي للملفات القابلة للإرسال app.use('/public', express.static('public')); // تحديد المنفذ const port = process.env.PORT || 5000; // ‫تحديد session secret const sessionSecret = "keyboard cat"; // استخدام حزمة الجلسة لتمييز كل مستخدم app.use( session({ genid: (req) => { return uuid.v4(); }, secret: sessionSecret, resave: true, saveUninitialized: true }) ); // ‫استدعاء المستقبل article routes require("./routes/article.routes")(app); // معالجة الأخطاء app.use(errorHandler); app.listen(port, () => { console.log(`server is up, listening on port ${port}`); }); بناء على ما كتبناه هنا، علينا إنشاء مجلد views على جذر المشروع وهو ما سيحوي صفحات العرض والتي سيكون امتدادها ejs حيث خصصنا ejs كمحرك للعرض، كما سننشئ مجلدًا اسمه public يحوي ملفًا اسمه style.css حيث عيننا هذا المجلد على أن محتوياته قابلة للإرسال إلى حاسوب العميل. تصميم الصفحات سنحتاج في مشروعنا هذا إلى الصفحات التالية: الصفحة الرئيسية (فيها عرض للمقالات أو لنتائج البحث). صفحة عرض المقالة. صفحة إنشاء المقالة. إن أمعنا النظر فسنجد أن الترويسة والتذييل لهذه الصفحات نفسها، فلا حاجة لتكرار الشيفرات نفسها في أكثر من ملف، لذا سنقسم الملفات إلى الملفات التي سيلي ذكرها في هذا القسم. سننشئ ضمن المجلد views ملفًا نسميه header.ejs يحوي الشيفرة التالية: <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>مدونتي</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"> <link rel="stylesheet" href="../public/style.css"> </head> <body> <nav class="navbar fixed-top navbar-expand-md "> <div class="container"> <a class="navbar-brand mr-0 ml-4 " href="/">مدونتي</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <i class="fas fa-bars"></i> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav mr-md-1"> <li class="nav-item ml-md-2 active"> <a class="nav-link" href="/article/create"> <i class="fas fa-plus ml-1"></i> إنشاء مقال <span class="sr-only">(current)</span> </a> </li> </ul> <form class="form-inline mt-2 mt-md-0" action="/search" method="GET" > <input name="q" id="q" class="form-control ml-sm-2" type="text" placeholder="عن ماذا تريد أن تبحث ؟" aria-label="Search" required> <button class="btn btn-primary my-2 my-sm-0" type="submit">ابحث</button> </form> </div> </div> </nav> وهذه هي ترويسة الصفحة، استدعينا فيها مكتبة Bootstrap من نظام توصيل المحتوى CDN، واستدعينا فيها مكتبة fontawesome من نظام توصيل المحتوى CDN، واستدعينا ملف style.css الذي أنشأناه، كما بنينا شريط التنقل للموقع. سننشئ ضمن المجلد views ملفًا آخر اسمه footer.ejs وهو تذييل الصفحة، ونكتب فيه التالي: </div> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> <script src="../public/script.js"></script> </body> </html> وهنا أيضًا استدعينا مكتبة jQuery وملف JavaScript الخاص بمكتبة Bootstrap، وملف script.js الذى يحتوى على السكربت الخاص بالتطبيق، وأغلقنا الأوسمة المفتوحة الموجودة في ملف header.ejs. سنهيئ الآن الصفحة الرئيسية في الموقع والتي ستمكننا من عرض المقالات. لننشئ الآن ملف index.ejs أيضًا في مجلد views ولنكتب فيه: <%- include('_header') %> <main role="main" class="container-fluid"> <div class="jumbotron"> <div class="container"> <h1 class="text-center">أحدث المقالات</h1> </div> </div> <div class="container pt-4 pb-4"> <div class="row"> <% if(!articles || articles.length == 0) { %> <h5 class="col mt-5 pt-5 text-center">لا توجد مقالات لعرضها</h5> <% }else { %> <% articles.forEach(article => { %> <div class="mb-4 col-md-6 col-sm-12"> <div class="card shadow-sm p-3 bg-white rounded"> <div class="card-body"> <h2 class="card-title mb-3"> <a class="text-primary text-decoration-none" href="/article/<%= article.id %>"><%= article.title %></a> </h2> <p class="card-text mb-4"><i class="fas fa-user-circle"></i> <%= article.author %></p> <button class="delete-btn btn btn-danger btn-sm" data-id="<%= article.id %>">حذف المقال</button> </div> </div> </div> <% }) %> <% } %> </div> </div> </main> <%- include('_footer') %> الشيفرات المحاطة بالإشارتين <% و %> هي شيفرات JavaScript يقرؤها ejs لتنفيذ ما ضمنها، وفي حالتنا هنا نستورد الترويسة والتذييل للصفحات، ونضع ما يعبر عن المقالات في الكائن الذي سنوفره عند تنفيذ الصفحة حتى نعرض بياناته. لنضع تنسيقًا لتحسين شكل الصفحة، إذ سنكتب شيفرة التنسيق التالية في الملف style.css الذي أنشأناه في المجلد public: /*-الخط المستخدم بالموقع-*/ @import url('https://fonts.googleapis.com/css2?family=Almarai&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Almarai:wght@700&display=swap'); /*-الإعدادات العامة للموقع-*/ body { direction: rtl; text-align: right; font-family: 'Almarai', sans-serif; font-size: 16px; } .bg-light{ background-color: #e9ecef !important; } textarea{ resize: none; } .container--error{ margin-top: 70px; } .container--error p{ font-weight: 700; } .container-fluid{ padding: 0 !important; margin-top: 56px; } .navbar{ background-color: #e9ecef; padding: 15px; } .navbar-toggler{ border: 1px solid #212529; } .navbar-toggler:focus{ border:1px solid #212529 !important; } .navbar-brand{ color: #212529 !important; font-weight: 700; } .navbar .navbar-collapse form{ margin-right: auto; } .navbar .navbar-nav{ padding-right: 0; } .navbar .navbar-nav .nav-link{ color: #212529; } .navbar .navbar-nav .nav-link i{ font-size: 13px; } .jumbotron{ border-radius: 0; padding: 6rem 2rem; } .card{ border: none; height: 100%; } .card-title a{ transition: all 0.3s ease; } .form-control{ border: none; height: auto; } .article-head{ display: inline-flex; align-items: flex-start; justify-content: center; flex-direction: column; } .article-head h5{ color: #868686; } /*-responsive-*/ @media (min-width: 1100px){ .container--article-create{ max-width: 900px; } .container--article-view{ max-width: 900px; } } @media (max-width: 768px){ .navbar-nav > li:first-child{ margin-top: 20px; } .navbar > .container{ padding-right: 15px; padding-left: 15px; } } @media (max-width: 576px){ .navbar-collapse form button[type=submit]{ width: 100%; } .navbar > .container{ padding-right: 0; padding-left: 0; } } أنشأنا حتى الآن الصفحة الرئيسية التي ستعرض كل المقالات أو نتائج البحث، ولننشئ الآن الصفحة التي ستمكننا من إضافة مقالات جديدة؛ سننشئ في مجلد views ملفًا اسمه create_article.ejs ونكتب فيه: <%- include('_header'); %> <main role="main" class="container-fluid"> <div class="jumbotron"> <div class="container"> <h1 class="text-center">أنشئ مقالًا</h1> </div> </div> <div class="container container--article-create pt4 pb-4"> <form action="/article" class="pt-5 pb-5" method="POST" id="create-article-form"> <div class="form-group"> <label for="title">عنوان المقال</label> <input type="text" class="form-control pt-2 pb-2 mt-1 bg-light" id="title" name="title" placeholder="أدخل عنوانًا مناسبًا لمقالك" required> </div> <div class="form-group"> <label for="author ">الكاتب</label> <input type="text" class="form-control pt-2 pb-2 mt-1 bg-light" id="author" name="author" placeholder="ما اسم كاتب المقال؟" required> </div> <div class="form-group"> <label for="content">نص المقال</label> <textarea class="form-control pt-2 pb-2 mt-1 bg-light" id="content" name="content" placeholder="نص المقال هنا" rows="7" required></textarea> </div> <div class="form-group"> <label for="tags">الوسوم</label> <input type="text" class="form-control pt-2 pb-2 mt-1 bg-light" id="tags" name="tags" placeholder="مثال على الوسوم: الكتابة,العمل" required> </div> <div class="form-group text-center"> <input type="submit" class="btn btn-lg btn-block mt-3 btn-primary" value="أنشئ المقال"> </div> </form> </div> </main> <%- include('_footer'); %> والآن لننشئ الصفحة التي ستعرض مقالًا عند النقر على عنوانه في الصفحة الرئيسية؛ سننشئ ضمن المجلد views ملفًا اسمه article.ejs ونكتب فيه: <%- include('_header'); %> <article class="container-fluid"> <div class="jumbotron"> <div class="container text-center"> <% if(!article) { %> <h1 class="text-center">لا يوجد مقالات!</h1> <% } else { %> <div class="article-head text-right"> <h1 class="text-right mb-3"><%= article.title %></h1> <h5 class="text-right mt-1">الكاتب: <%= article.author %></h5> </div> <% } %> </div> </div> <div class="container container--article-view"> <% if(!article) { %> <h1>المقال الذي طلبته غير موجود!</h1> <a href="/" class="btn btn-secondary btn-sm">عد إلى الصفحة الرئيسية</a> <% } else { %> <div> <%-article.content%> </div> <% } %> </div> </article> <%- include('_footer'); %> والآن لننشئ الصفحة التي ستعرض الخطأ للمستخدم في حالة قام بكتابة رابط غير موجود، سننشئ ضمن المجلد views ملفًا اسمه error.ejs ونكتب فيه: <%- include("_header"); %> <div class="container-fluid"> <div class="jumbotron"> <div class="container"> <h1 class="text-center">حدث خطأ ما!</h1> </div> </div> <div class="container container--error text-center"> <h2 class="text-center">أعد المحاولة لاحقًا </h2> <a href="/" class="btn btn-lg mt-3 btn-primary">عد إلى الصفحة الرئيسية</a> </div> </div> <%- include("_footer"); %> تهيئة إدارة قواعد البيانات وإنشاء الموجهات Routes بعد أن انتهينا من تصميم الصفحات، حان الوقت الآن لإنشاء طريقة التعامل مع قواعد البيانات، وكما تحدثنا سابقًا، سنستخدم Sequelize التي هي ORM شهيرة في Node.js. سننشِئ ملفًا جديدًا باسم sequelize.js، وسنضع فيه الشيفرة الآتية لتهيئة عملية الاتصال بقاعدة البيانات، وأذكِّرك بتغيير اسم المستخدم وكلمة المرور وفقًا لبيئة العمل الخاصة بك: const { Sequelize } = require("sequelize"); const DATABASE_NAME = "myBlog"; const USER_NAME = "root"; const PASSWORD = "password"; const DIALECT = "mariadb"; const sequelize = new Sequelize(DATABASE_NAME, USER_NAME, PASSWORD, { dialect: DIALECT, dialectOptions: { connectTimeout: 1000 }, logging: false, }); module.exports = sequelize; لتستطيع حزمة sequelize التعرف على قاعدة البيانات من نوع MariaDB (أو MySQL)، علينا تثبيت الحزمة المُخصَّصة لها بتنفيذ الأمر التالي: npm install mariadb وبهذا أصبح المشروع جاهزًا لكتابة الموجهات routes؛ لننشئ مجلدًا باسم routes بداخله ملف article.routes.js يحوي الشيفرة الآتية: const controller = require("../controllers/article.controller"); module.exports = (app) => { app.get("/", controller.viewIndex); }; ولكن يجب أن ننشئ مجلدًا باسم controllers وننشئ ملف باسم article.controller.js ونكتب فيه ما يلي: const Article = require("../models/article"); exports.viewIndex = (req, res, next) => { Article.findAll() .then((articles) => { res.render("index", { articles: articles }); }) .catch((error) => { next(error); }); }; هيأنا هنا الموجه الرئيسي، وعند طلب العنوان localhost:5000 في المتصفح فسيجلب الخادم كل المقالات من قاعدة البيانات، ويفسر الصفحة index.ejs ويعطيها الكائن articles حتى يعرض معلومات المقالات. نشغل المشروع عن طريق كتابة الأمر التالي في ملف المشروع في سطر الأوامر: npm start يجدر بالذكر أننا عدلنا القسم scripts في ملف package.json ووضعنا سكربت start لبدء تشغيل التطبيق عبر node للملف app.js. [...] "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node app.js" }, [...] في الخطوة التالية لنهيئ المستقبل الذي يوجهنا إلى نموذج أو استمارة إنشاء مقال؛ سنضيف داخل ملف article.routes.js بعد الشيفرة السابقة: app.post("/article", controller.create); app.get("/article/create", controller.viewCreate); بعد ذلك نضيف الشيفرة الآتية داخل ملف article.controller.js: exports.viewCreate = (req, res) => { res.render("create_article"); }; exports.create = (req, res, next) => { Article.create(req.body) .then((article) => { article.save(); res.redirect("/"); }) .catch((error) => { next(error); }); }; وبهذا نستطيع الآن إنشاء مقالات جديدة، واستعراضها من الصفحة الرئيسية، وحتى نرى المقال بعد الضغط على بطاقته في الصفحة الرئيسية، سنضيف ما يلي داخل ملف article.routes.js بعد الشيفرة السابقة: app.get("/article/:id", controller.viewArticle); بعد ذلك نضيف الشيفرة الآتية داخل ملف article.controller.js: exports.viewArticle = (req, res, next) => { Article.findOne({ where: { id: req.params.id, }, }) .then((article) => { res.render("article", { article: article }); }) .catch((error) => { next(error); }); }; وبهذا أصبح المشروع جاهزًا لإضافة وعرض المقالات من قاعدة البيانات. لا تنسَ حفظ كل شيء ثم تشغيل المشروع، أو استخدم حزمة nodemon لتعيد تشغيل المشروع تلقائيًا عند كل تعديل تجريه على شيفراتك. إضافة المقالات سننشئ بداية مقالًا للتحقق من صحة الإدخال إلى قاعدة البيانات، وليكن بالمعلومات التالية: وبعد أن تحققت من صحة العمليات التي بنيتها، سأنشئ مجموعة من المقالات ذات المواضيع المتقاربة من أكاديمية حسوب، ولا بد أن نتحدث عن كل المقالات التي أدخلناها حتى نفهم نتائج البحث. سأدخل المقال الأول بعنوان «كيف تقدّر أجر مساعدك عن بعد» وسأدخل اسم الكاتب عدنان، وفي نص المقال سأنسخ فقط المقدمة، وفي صندوق الوسوم سأدخل كلمة أجر مساعدك. المقال الثاني بعنوان «أسس القيادة التقنية» والكاتب ابراهيم سليمان، وسأنسخ فقط المقدمة، وفي صندوق الوسوم سأدخل أسس القيادة. والمقال الثالث بعنوان «معضلة الإنتاجية والكاتب هو عمر، وسأنسخ فقط المقدمة، وفي صندوق الوسوم سأدخل الإنتاجية. إذًا حصلنا الآن على ثلاثة مقالات، مواضيعها مختلفة، بالإضافة إلى المقال الأول التجريبي، وأصبح لدينا ثلاث كُتَّاب لكل منهم مقال، ولنبن الآن مستَقبِل البحث. بناء عملية البحث اعتمادًا على قاعدة البيانات يعتمد معظم المطورين على المعامل like في عبارات SQL لبحثهم، العملية كافية بالنسبة للبحث في شيء محدد يدركه المستخدم مسبقًا ولا مجال فيه للاختلاف الكبير بين آراء مختلف المستخدمين وصياغتها لعبارة البحث، وكل مافي الأمر هنا أن تبحث باستخدام هذا المعامل عن ما يشبه عبارة البحث في حقل العنوان أو حقل الوسوم tags للمقال، وتوفير مربع بحث آخر للبحث حسب الكاتب. وتُنفّذ العملية ببساطة بمقارنة السلاسل النصية المطلوبة مع عبارة البحث التي أدخلها المستخدم، دون أدنى شكل من أشكال تحليل محتوى المقال أو تعرف أداة البحث على موضوعه ومدى فائدته للمستخدم بناء على عبارة البحث. حتى أنشئ وظيفة البحث التقليدية، سأذهب إلى قسم الموجهات routes في ملف article.routes.js وأضيف الموجه التالي: app.get("/search", controller.search); بعد ذلك نضيف الشيفرة الآتية داخل ملف article.controller.js: exports.search = (req, res, next) => { Article.findAll({ where: { [Op.or]: { title: { [Op.like]: `%${req.query.q}%` }, tags: { [Op.like]: `%${req.query.q}%` }, content: { [Op.like]: `%${req.query.q}%` }, }, }, }) .then((articles) => { res.render("index", { articles: articles }); }) .catch((err) => { next(err); }); }; سيبحث هذا التابع في حقول العنوان والمحتوى والوسوم عن ما يتضمن حرفيًا ما أدخلناه في عبارة البحث، فإذا بحثنا باستخدام إحدى العبارات: أسس القيادة التقنية، معضلة الإنتاجية، مقال تجريبي؛ فإنه سيعيد لنا نتيجة واحدة كانت قيمة وسومها تحتوي العبارة. لكن ماذا إذا بحثنا مثلًا عن "أشياء إنتاجيّة"؟ نذكر أن أحد مقالاتنا كان يتحدث عن الإنتاج وفيه فقرة عن أشياء إنتاجيّة حقيقيّة، وتعلم أن تحصيلك لنتيجة بحث دقيقة تعطي المستخدم ما هو مفيد له فقط بناء على الدالة like شيء مستحيل، جرب مثلًا البحث عن "اشياء إنتاجيّة" دون همزة ستجد أنه لا يعيد لك أي نتائج. ولربما تبحث عن أمر آخر، كلمة أسس مكتوبة مع همزة في المقال الذي عنوانه أسس القيادة التقنية، ابحث عن "اسس" دون همزة، وستجد أنه لا يعيد لك أي نتائج! مفاهيم متعلقة بمحرك البحث الداخلي يأتي هنا دور محرك البحث لبلب والذي له القدرة على تحليل النص ومعرفة موضوعه ومضمونه، وجدولة نتائج البحث على أساس هذا التحليل، لنجرب الآن بناء البحث باستخدام لبلب لنرى إن كان سينجح في إعادة نتائج لنا بناء على العبارات التي لم تعد نتائج في البحث السابق، ولكن قبل أن نبدأ ببناء الوظائف، لنفهم بعض المفاهيم الأساسية. محرك البحث لبلب هو محرك بحث سحابي، يعمل على جدولة أو فهرسة indexing المحتوى الذي يصله من الموقع، ومن ثم التفاعل مع عبارة البحث التي تصله وتوفير النتائج التي يجدها مناسبة. من هنا نعرف أنه لدينا عمليتين حتى نصل إلى المطلوب: الأولى جدولة المحتوى، والثانية هي عملية البحث. يوفِّر محرك البحث لبلب واجهة برمجية Web API للتعامل معها بشكل مباشر، كما يوفر حزمة برمجية SDK لكل من المنصات: Node.js و PHP Laravel و WordPress، حتى تسهل التعامل مع الواجهة البرمجية API الخاصة به. يمكنك الرجوع إلى التوثيق الرسمي للواجهة البرمجية وللحزم البرمجية لأي تفاصيل ومعلومات إضافية. يتطلب التعامل مع واجهة لبلب البرمجية حسابًا على موقع لبلب، ويتم الحفاظ على وثوقية وأمان المعلومات عند التعامل مع لبلب من خلال استخدام مفاتيح خاصة بمشروعك API Key تستطيع توليد مفاتيح جديدة من خلال لوحة التحكم الخاصة بمشروعك (من خلال الدخول الى لوحة التحكم -> ثم الضغط على اسم المشروع الخاص بك -> ثم الدخول الى قسم API Keys) ونلاحظ وجود مفتاحين: الأول للقيام بعملية الفهرسة عند لبلب والثاني لإجراء عمليات البحث من بإستخدام لبلب. تهيئة حزمة لبلب لدي مشروع اسمه academyhsoub في حسابي على لبلب، ولهذا المشروع جدول collection اسمه posts وله البنية التالية: أستطيع من هنا التحكم في حقول هذا الجدول بإضافة حقول جديدة ومنحها أسماء أو حذف حقول موجودة، وجعلها إلزامية بتفعيل الخاصية required لها. سنثبت حزمة لبلب بالأمر الآتي: npm install @lableb/javascript-sdk وبعدها ننشئ ملفًا باسم lableb.js داخل المجلد config ونضع به الشيفرة الآتية: const { LablebClient } = require("@lableb/javascript-sdk"); const PROJECT_NAME = "academyhsoub"; const INDEXING_TOKEN = "محتوى هذا الحقل من حسابك على لبلب"; const SEARCH_TOKEN = "محتوى هذا الحقل من حسابك على لبلب "; let lableb; LablebClient({ platformName: PROJECT_NAME, APIKey: SEARCH_TOKEN, indexingAPIKey: INDEXING_TOKEN }) .then(lablebClient => { lableb = lablebClient; }) .catch(error => { console.error(error); }) module.exports = lableb; وهكذا سنستطيع استخدام المتغير lableb لمختلف العمليات. هيأنا هذا الثابت بإعطائه اسم المشروع ومفاتيح الواجهة API KEYs الخاصة بالجدولة والبحث، حيث أن الحزمة ستوجه الطلبات إلى رابط واجهة لبلب البرمجية بالشكل التالي في حال عملية الجدولة: https://api.lableb.com/api/v2/${PROJECT_NAME}/indices/${COLLECTION_NAME}/documents?apikey=${INDEXING_TOKEN} وبالشكل التالي في عملية البحث: https://api.lableb.com/api/v2/${PROJECT_NAME}/indices/${COLLECTION_NAME}/search/default?q=${SEARCH_QUERY}&cat=Lifestyle&limit=1&apikey=${SEARCH_TOKEN} وبذلك تختصر علينا الحزمة كتابة هذه العناوين وتشكيلها يدويًا. بناء عملية الفهرسة Indexing سأضيف الآن عمليات الفهرسة بتوسيع extend صنف قاعدة البيانات حتى نعمل ببنية صحيحة. سنبني عملية فهرسة Indexing مرتبطة بالصنف Article وظيفتها جدولة كل المقالات السابقة في قاعدة البيانات، وستفيدنا هذه العملية في التأكد من فهرسة المقالات التي أضيفت إلى قاعدة البيانات قبل استخدام محرك البحث، أو عندما يكون قد جرى تعديل على المقالات ولم تتم فهرسته. وعملية الفهرسة مرتبطة بالكائن article عند إنشاء كل كائن جديد حتى تتم فهرسته بعد الإنشاء مباشرة. ولبناء العمليتان، ننشئ مجلدًا جديدًا باسم models وبداخله ننشئ ملف باسم article.js ونكتب بداخله الشيفرة التالية: const { Sequelize, Model } = require("sequelize"); const sequelize = require("../config/sequelize"); const lableb = require("../config/lableb"); class Article extends Model { //إنشاء مستند قابل للفهرسة خارج الكائن _document() { return { id: this.id, title: this.title, content: this.content, url: `/article/${this.id}`, tags: this.tags, authors: this.author, }; } // إنشاء مستندات قابلة للفهرسة لجميع المقالات static async _findAllDocuments() { return Article.findAll().map((a) => a._document()); } // فهرسة مستند واحد _index() { return lableb.index({ documents: [this._document()] }); } // حذف مستند واحد من الفهرسة async _deleteIndex() { return lableb.delete({ documentId: this.id }); } // فهرسة جميع المقالات static async indexAll() { const documents = await Article._findAllDocuments(); return lableb.index({ documents: documents }); } // تحويل نتائج البحث القادمة من لبلب إلى مقالات قابلة للعرض static async search(query, limit) { const lablebResult = await lableb.search({ query: encodeURIComponent(query), limit: limit }); const searchResults = lablebResult.response.results; return searchResults.map((searchResult) => ({ id: searchResult.id, title: searchResult.title, content: searchResult.content, author: searchResult.authors[0], tags: searchResult.tags[0], })); } } Article.init( { title: Sequelize.STRING, author: Sequelize.STRING, content: Sequelize.STRING, tags: Sequelize.STRING, }, { hooks: { afterSave: function (article) { article._index(); }, beforeDestroy: function(article) { article._deleteIndex(); } }, sequelize, modelName: "article", } ); module.exports = Article; سنشرح الشيفرة السابقة؛ أنشأنا في البداية صنفًا يحتوي على الدالة document_ ليكون وسيطًا معبرًا عن المقال الواجب جدولته. بعد ذلك أنشأنا التابع findAllDocuments_ لإنشاء مستندات قابلة للفهرسة لجميع المقالات وأنشأنا بعد ذلك التابع index_ لفهرسة مستند واحد والتابع indexAll لفهرسة جميع المقالات، ولا بد أن نذكر هنا أن خدمة لبلب تتعامل مع المعلومات المفهرسة فيها عبر حقل id، فإذا تم إرسال المقالات إلى لبلب وكانت مُعرِّفاتُها موجودة مسبقًا، فسيتم تحديثها لا تكرارها. ونلاحظ أثناء بناء المصفوفة documents_ أننا خزننا حتى روابط هذه المقالات. ونُذكِّر أننا أضفنا هذا الجزء من قبل وهو مسؤول عن عرض وجدولة كل المقالات: exports.viewIndex = (req, res, next) => { Article.findAll() .then((articles) => { res.render("index", { articles: articles }); }) .catch((error) => { next(error); }); }; تعديل عملية البحث وتجارب البحث رأينا في السابق نتائج البحث التي لم تكن ذات جدوى عالية، والآن لنعلق دالة البحث القديمة بحيث تصبح بدون تأثير على التطبيق ونضع الدالة الآتية بدلًا منها فى الملف article.controller.js وجعلها كالآتي: exports.search = (req, res, next) => { Article.search(req.query.q, 10) .then((articles) => { res.render("index", { articles: articles }); }) .catch((error) => { next(error); }); }; exports.indexAll = (req, res, next) => { Article.indexAll(); }; ونحصل من دالة بحث لبلب على نتائج البحث لنتصرف فيها. إذا علقنا كل محتوى القديم وكتبنا الأسطر التي تنفذ عملية البحث باستخدام لبلب، وتعتمد على نتائج بحث لبلب في عرض المقالات، عوضًا عن قاعدة بياناتنا وهكذا بنينا كامل عملية البحث. تجارب البحث باستخدام لبلب لدينا ثلاثة مقالات تتحدث عن مواضيع مختلفة، وموضوع واحد بعنوان مقال تجريبي، لنجرب البحث عن كلمة "اشياء إنتاجيّة": ونلاحظ أنه أعاد لنا المقالة التى تتحدث عن أشياء إنتاجية وهى "معضلة الإنتاجية "على الرغم أنها لا تبدأ بهمزة، وأعاد أيضًا مقال أسس القيادة التقنية بعدها لأنها تحتوى على كلمة الأشياء. جرب الآن البحث عن كلمة "اسس" دون همزة. و"أسس" مع همزة. ونلاحظ هنا أنه جلب لنا مقال أسس القيادة التقنية فى كلتا الحالتين، هل كنا سنستطيع برمجة دالة بحث تعطينا نفس الدقة في النتائج؟ حسنٌ، لنبحث عن عبارة مخصصة جدًا في مقال كيف تقدّر أجر مساعدك عن بعد، لنبحث عن عبارة "ميزانية مشروعك" ونلاحظ أننا حصلنا فقط على نتيجة واحدة وهي مقالة كيف تقدّر أجر مساعدك عن بعد، ويجب أن تتذكر أننا وضعنا المقدمة فقط فى المحتوى الخاص بالمقالة، لذلك اخترت عبارة من المقدمة وبحثت عنها، وسنفعل المثل فى عمليات البحث القادمة. لنبحث عن كلمة "نيويوركر" ونلاحظ مجددًا أنه أعاد مقالة "معضلة الإنتاجية" فقط إذ أنَّها المقالة الوحيدة لدينا التى تحتوى على هذه الكلمة. لنبحث الآن باستخدام عبارة أقرب لما يكتبه البشر عادة، لنبحث عن "ما هى المعضلة الانتاجية؟" وسنرى أنه أعاد لنا مقالة معضلة الإنتاجية فقط، واستثنى المقالات الأخرى: نستنتج أن محرك البحث استطاع عرض نتيجة بناء على عبارة سؤال طبيعي. لنجرب البحث عن عبارة "مقال تجريبي" وسنجد أنه أعاد المقالات التى تحتوى على كلمة مقال أو تجريبى ولكن "مقال تجريبى" فى بداية الترتيب. لنبحث عن اسم الكاتب "عدنان": ونرى أن النتيجة عادت فقط بالمقالات التي كتبها عدنان، دون أي مجهود منا لجعل عملية البحث تستهدف حقل الكاتب من كائن المقال. الخلاصة رأينا الفائدة من استخدام محرك بحث تجريبي، تخيل أن لديك موقع تجارة إلكترونية يعرض منتجاته باللغة العربية، أليس جميلًا أن تحصل على دقة كهذه في إرجاع النتائج، فضلًا عن ترتيبها حسب الأقرب للبحث؟ وهل تستطيع بناء دالة بحث بنفس القدرات باستخدام الأدوات التقليدية مثل تعليمات SQL أو مقارنة السلاسل النصية باستخدام لغة البرمجة التي بنيت موقعك بها؟ أجرينا في هذا المقال مقارنة بين البحث باستخدام دالة بدائية يدوية، والبحث باستخدام محرك بحث عربي، واخترنا لبلب لهذه المهمة، واستنتجنا أن محرك البحث يتجه أكثر نحو فهم الموضوع واستيعاب مختلف صيغ عبارات البحث التي يدخلها المستخدم بلغة طبيعية غير مصطنعة كما هو الحال في البحث باستخدام الوسوم، ونرجو أن يكون المقال مفيدًا ونرحب بأية تعليقات أو استفسارات لديكم. اقرأ أيضًا إنشاء صفحة البحث في الووردبريس نمذجة البيانات وأنواعها في عملية تصميم قواعد البيانات
  9. الإصدار 1.0.0

    11222 تنزيل

    التصميم هو مهنة العصر الحالية، هذا العصر الذي يولي أهميةً كبيرةً منقطعة النظير للعامل البصري، فيدخل مجال التصميم في كل مناحي حياتنا اليومية فكل شيء تراه حولك بدءًا من صور أغلفة المنتجات وحتى الإعلانات والملصقات والشعارات وأغلفة الكتب وكل شيء تقريبًا قد مرَّ على يدي مصمم وعولج داخل أحد تطبيقات الرسم والتصميم فسوق التصميم كبيرٌ يزداد فيه الطلب على المصممين يومًا بعد يوم. تمثلت رؤيتنا للكتاب في أن يكون المرجع الأول للمصمم العربي أو من يريد تعلم مجال التصميم الجرافيكي وذلك بجعله شاملًا لكل ما يحتاج إليه المتعلم في بداية رحلته التعليمية في هذا المجال وليتضمن العناصر الأساسية في هذا التخصص سواء كان ذلك في الأساسيات أو البرامج والتطبيقات أو أفكار التصميمات. يهدف الكتاب لإخراج أفراد متمكنين من أساسيات مجال التصميم الجرافيكي ولديهم المعلومات والخبرة الأساسية اللازمة لدخول سوق العمل وتحقيق دخل مادي عبر سوق الإنترنت الكبير وذلك من خلال تنفيذ أعمال التصميم الجرافيكي عبر منصات العمل الحر العربية مثل مستقل وخمسات. يتكون الكتاب من خمسة أقسام رئيسية: الأساسيات والمبادئ البرامج والتطبيقات مجالات التصميم الجرافيكي قواعد التصميم المسار المهني والتطوير الذاتي دخول سوق العمل هذه النقاط الخمس نعدها شاملة لما يحتاج إليه المصمم الجديد ليكون قادرًا على إنتاج تصميم وبيعه في السوق. يستهدف الكتاب جمهور المصممين المبتدئين أو من يريدون دخول هذا المجال، وعليه فإن الكتاب ليس موجهًا للمصممين المتقدمين أو المحترفين فهؤلاء في الغالب يتعلمون مباشرة من مصادر متقدمة سواءً عربية أو أجنبية ولكن قد يكون لدى البعض منهم نقص في معرفة أساسيات التصميم الفنية والأكاديمية، لذا يمكنهم آنذاك الرجوع إلى فصول بعينها من هذا الكتاب أي أنَّ فصول هذا الكتاب قد تفيد حتى من كان متقدمًا في مجال التصميم التطبيقي ولكن دون أساس أكاديمي سليم. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «أساسيات تصميم الرسوميات»، أو تجدها مسردة بالترتيب التالي: مقدمة إلى تصميم الرسوميات (التصميم الجرافيكي) عناصر تصميم الرسوميات مبادئ تصميم الرسوميات الألوان في تصميم الرسوميات ونظرية الألوان تعرف على أشهر برامج وتطبيقات تصميم الصور والرسوميات مقدمة إلى برنامج أدوبي فوتوشوب Adobe Photoshop مقدمة إلى برنامج أدوبي إليستريتور Adobe Illustrator والتعرف على واجهته مساحات وقياسات العمل التصميمي النص وأسلوب الطباعة Typography في تصميم الرسوميات قواعد التعامل مع الصور والرسوميات قواعد تصميم الأيقونات والشعارات قواعد تصميم المطبوعات والإعلانات قواعد تصميم الواجهات قواعد تصميم الرسوم البيانية قواعد تصميم الهوية البصرية دليل المسار المهني لمصمم الرسوميات مواقع العمل الحر والعمل عن بعد لتصميم الرسوميات
  10. ذكرنا في المقال السابق أهمية إطار العمل أباتشي كوردوفا في مساعدة المطوّرين على تقليل تكلفة ووقت تطوير التطبيقات الهجينة للهواتف، وبدأنا بالحديث المفصل عن كوردوفا الذي يُعَد رائدًا في مجال تطوير التطبيقات الهجينة بناءً على المهارات التي يمتلكها مطور تطبيقات الويب، وذلك لتسريع آليات بناء تطبيقات الهاتف. كما وضحنا معمارية تطبيق الهاتف المبنيّ باستخدام كوردوفا وهيكلية التطبيق المبنيّ عليه. يهدف هذا المقال إلى التعرف على الأدوات والخطوات اللازمة لتجهيز بيئة العمل المطلوبة لإنشاء تطبيقات الهاتف الهجينة باستخدام كوردوفا كي يتسنّى لنا البدء بإنشاء التطبيقات. تثبيت إطار العمل أباتشي كوردوفا يتواجد إطار العمل كوردوفا مثل حزمة في نظام إدارة الحزم الخاص بلغة جافا سكربت Node Package Manager "NPM"، لذا يتوجّب علينا في البداية تثبيت Node.js من خلال زيارة الموقع الإلكتروني لـ Node.js وتنزيل النسخة المتوافقة مع نظام التشغيل، ومن ثمَّ تثبيتها على الحاسوب. يُعَد التثبيت على أنظمة ويندوز سهلًا جدًا من خلال ملف تثبيت البرنامج الذي يُنزّل من الموقع ثم تثبيته على الجهاز، في حين نحتاج لطريقة أخرى في نظام تشغيل Linux من خلال تنفيذ بضعة أوامر في سطر الأوامر، لتثبيت Node.js على Linux، يمكنك الاطلاع على مقالة تثبيت Node.js على نظام أبونتو 18.04، والتي تتحدث بالتفصيل عن هذه النقطة بالتحديد. يمكن التأكد من نجاح التثبيت ومعرفة الإصدار المثبّت من خلال سطر الأوامر الخاص بنظام التشغيل ويندوز باستخدام الأمر node –v بعد التأكد من اكتمال تثبيت Nodejs يمكننا الانتقال للخطوة التالية، ألا وهي تثبيت كوردوفا، وذلك من خلال تنفيذ الأمر التالي في سطر الأوامر: npm install -g cordova وتكون النتيجة كما في الصورة التالية: لا يستغرق التثبيت كثيرًا من الوقت (بالاعتماد على سرعة اتصال الإنترنت لديك)، وعند اكتماله يمكن كتابة الأمر الموالي لنتأكد من سلامة التثبيت: cordova help تُعرض الخيارات المتاحة من خلال هذا الأمر مثل ضبط الإعدادات وإنشاء تطبيق وغيرها من الأوامر المتاحة، والتي نتعرف عليها في المقال القادم، حيث سنتطرق لإنشاء أول تطبيق. لا تختلف الخطوات في نظامي التشغيل Linux وOS، حيث يمكننا استخدام الأمر التالي مع ملاحظة كتابة sudo قبل تنفيذ الأمر في حال كان المستخدم الحالي محدود الصلاحيات: sudo npm install -g cordova وبهذا نكون قد تمكنًا من تثبيت كوردوفا بخطوتين فقط وبسهولة بالغة. إنشاء أول تطبيق كوردوفا يجب أولًا تحديد مسار المجلد الذي يُنشَأ التطبيق فيه، ثم تنفيذ الأمر الذي يُنشِئ تطبيق كوردوفا مع كافة الملفات والمجلدات الضرورية المطلوبة بداخله cordova create myFirstApp بهذا نكون قد نفذنا أمر إنشاء تطبيق جديد اسمه myFirstApp مباشرةً على محرك الأقراص C، وباستعراض محتويات التطبيق الجديد كما نلاحظ في الصورة التالية، نجد بداخله مجلد www والذي بدوره يحتوي مجلدات css وimg، بالإضافة إلى ملف index.html، كما هو الحال مع أساسيات الموقع الإلكتروني التي فصلنا الحديث عنها في المقال السابق، كما يمكننا فتح مجلد التطبيق من خلال برنامج بيئة التطوير VSCode الذي سنتعرف عليه لاحقًا. تثبيت بيئة التطوير المتكاملة Integration Development Kit لقد ذكرنا في هذا المقال حتى الآن بعض الخدمات التي تقدمها بيئة التطوير المتكاملة IDK ودورها في مساعدة المطوّر في إنجاز برمجة التطبيقات، وهناك بعض البيئات التي تكون مخصصةً للغة برمجة معينة، ففي حال برمجة التطبيقات الأصيلة باستخدام أندرويد مثلًا؛ فسيستخدم المطوّرون برنامج Android Studio. هناك بعض بيئات التطوير العاملة التي يمكن استخدامها بعد تخصيصها ببعض الإضافات من داخل برنامج بيئة التطوير حسب اللغة التي يعمل عليها المبرمج، وهذه الإضافات يمكن إضافتها لبعض برامج بيئة التطوير مثل Android Studio أو أي برامج تحرير النصوص البرمجية مثل برنامج Visual Studio Code من شركة MicroSoft. يمكن إنشاء تطبيقات كوردوفا من خلال برنامج Android Studio، لكننا سنحتاج إلى تثبيت إضافة كوردوفا Cordova Plugin لتدعم تطوير تطبيقات كوردوفا، ونظرًا لكون البعض يشتكي من احتياج برنامج Android Studio إلى حاسوب ذي موارد ومواصفات عالية، فلهذا سنختار في هذا المقال استخدام برنامج VS Code، ولتثبيت البرنامج يلزمنا تنزيله من موقع البرنامج visualstudio code، وتنزيل ثم تثبيت النسخة المتوافقة مع نظام التشغيل الذي يستخدمه حاسوبك. أدوات تطوير البرمجيات Software Development Kit أدوات تطوير البرمجيات SDK هي مجموعة من البرمجيات المُستخدمة لأغراض محددة مثل تطوير تطبيق لجهاز أو برنامج تشغيلي محدد، حيث تشمل منقّحًا Debugger ومكتبات، كما تحتوي على عيّنة من النصوص البرمجية التي تزوّد المطوّرين بأمثلة تشكّل فرصةً للمطورين لتعلّم كيفية إنشاء التطبيقات الاساسية باستخدام هذه الأدوات مما يمكّنهم من إنشاء وتطوير تطبيقات أكثر تعقيدًا وتطويرًا، كما توفّر خاصية التوثيق التقني والتي بدورها يمكن أن تتضمن دروسًا تعليمية وأسئلةً أكثر تكرارًا. تحتوي بعض هذه الأدوات على العديد من النماذج الرسومية مثل الواجهات والأيقونات التي يستطيع المطوّر إضافتها في التطبيقات التي تُنشَأ. ومن الأمثلة على ذلك حِزمة تطوير برامج أندرويد SDK التي تدعم أنظمة التشغيل الخاصة بالحاسوب مثل Windows وLinux وiOS، وهناك أدوات تطوير أخرى خاصة بنظام ويندوز بكافة إصداراته، وأدوات تطوير نظام التشغيل iOS، وغيرها الكثير. وبما أن معظم الشركات تشجع المطورين على إنشاء تطبيقات خاصة بمنصاتها، فإنها تُقدّم أدوات التطوير الخاصة بها مجانًا، حيث ينزّلها المطور من الموقع الرسمي للشركة ويبدأ بعملية التطوير فورًا؛ أما في حال استخدام بيئة المتصفح من أجل تطوير التطبيق الهجين للهاتف وتشغيله عبر المتصفح، فيمكنك إضافة منصة المتصفح للتطبيق والتي لا تتطلب أي حزم SDK للنظام الأساسي كما سنوضح لاحقًا. لنبدأ في الجانب العملي الآن، لإنشاء التطبيقات وتشغيلها سنحتاج إلى تثبيت حزم SDK لكل نظام أساسي نرغب في تشغيل التطبيق عليه، وبتنفيذ الأمر التالي يمكننا التحقق مما إذا كانت الحزم المثبتة تفي بالمتطلبات الأساسية لبناء التطبيق: cordova requirements وإذا لم تُثبت أيٌّ من متطلبات التطبيق فستظهر مثل هذه الرسالة: No platforms added to this project. Please use 'cordova platform add <platform>' . والتي تفيد بضرورة إضافة متطلبات التطبيق، وهو ما سنتعرف عليه الآن بالتفصيل. تثبيت SDK الخاصة بالنظام المستهدف تختلف الحِزم البرمجية المطلوبة تبعًا للنظام الي نرغب في تشغيل التطبيق عليه، ونخصص الحديث هنا عن الأدوات المطلوبة لتشغيل التطبيق على نظام أندرويد، ونؤكد على أن الخطوات المطلوبة لتشغيل التطبيق على نظام iOS متشابهة باختلاف الأدوات المطلوبة، ونحتاج هنا لأربع أدوات كما يلي: حزمة التطوير الخاصة بلغة البرمجة جافا Java Development Kit أو اختصارًا JDK، والتي يمكن تحميلها من الرابط الخاص بها على موقعهم الرسمي ثم تثبيتها. حزمة Gradle التي تساهم في تسريع إنشاء التطبيقات، وتُعَد إحدى متطلبات التطبيقات المنشأة باستخدام كوردوفا، ويمكن تثبيتها من الموقع الرسمي لـ Gradle، وللاستزادة من المعرفة عن وظائف Gradle يمكنكم زيارة مقال دليلك الكامل إلى نظام البناء Gradle. حزمة التطوير الخاصة بأندرويد Android SDK Tools التي تُثبّت من خلال برنامج Android Studio الذي يمكن تنزيله من الموقع الرسمي لـ Android Studio، وبعد تثبيت البرنامج يجب الدخول إلى إدارة SDK أين ستظهر لنا عدة خيارات للتنزيل فنختار منهما أولًا SDK Platforms، وهنا يفضل اختيار أحدث إصدار (إلا إذا كنت تنوي التطوير لإصدارات قديمة من منصة أندرويد)، ثم تثبيت Android SDK Platform-Tools كما في الصور الثلاثة التالية: نختار أولًا SDK Manager ثم نختار الإصدار الأحدث وننزله. ثم نختار Android SDK Platform-Tools لتنزيلها. تثبيت جهاز أو أجهزة وهمية Virtual Device بإصدارات مختلفة من نظام أندرويد لتشغيل واختبار التطبيق عليها، ولهذه الخطوة بدائل، إذ يمكن الاستغناء عنها بتوصيل هاتفك مباشرةً على الحاسوب والبدء بتشغيل واختبار التطبيق من خلاله. يمكن الوصول لمدير الأجهزة الوهمية من خلال خيار ADV في إعدادات برنامج Android Studio كما في الصور التالية: وعند اختيار AVD Manager ستظهر شاشة إدارة الأجهزة الوهمية كما يلي: وكما هو واضح من الصورة، فإن هذه الخاصية تمكننا من اختيار نوع الجهاز الذي نرغب في محاكاة تشغيل التطبيق عليه، مثل الشاشات الذكية والهواتف والساعات الرقمية والهاتف اللوحي، وبعد اختيار نوع الجهاز - وليكن جهاز الهاتف - ننتقل إلى الخطوة التالية لتثبيت نظام الهاتف كما يتضح في الصورة التالية: هناك برنامج مستقل لإنشاء الأجهزة الوهمية – بعيدًا عن برنامج Android Studio – يسمى Genymotion، وهو موجه للذين يستخدمون حاسوبًا ذو مواصفات محدودة، هذا البرنامج غير مجاني بالكامل لكنه يفي بالمتطلبات الأساسية لتشغيل واختبار التطبيقات من خلاله. أما بخصوص تثبيت SDK الخاصة بنظام iOS، فإننا نحتاج هنا إلى نظام iOS الذي نجده مثبتًا على أجهزة Mac، ولا يمكن تطوير تطبيقات لمنصة iOS بسهولة وفعالية إلا من خلال حاسوب Mac. في البداية يجب تثبيت برنامج Xcode وذلك بإحدى الطريقتين، إما من (متجر التطبيقات)، أو من (تنزيلات مطوري Apple) الذي يتطلب التسجيل بعضوية مطور Apple. الآن وبعد تثبيت SDK حسب نظام التشغيل الذي نستخدمه، سننتقل إلى الخطوة التالية في تجهيز بيئة العمل، وهي إضافة المنصة المراد استخدامها للتطبيق، وهنا سنستخدم الأمر التالي: cordova platform add android تظهر في الصورة أعلاه نتيجة تنفيذ الأمر السابق، والذي يضيف منصة أندرويد للتطبيق ليعمل على الهواتف العاملة بنظام التشغيل أندرويد، وكما أشرنا سابقًا يمكنك استخدام بيئة المتصفح لتطوير التطبيقات الهجينة. ولتجهيز التطبيق للعمل عبر منصة المتصفح يلزمنا إضافتها للتطبيق بتنفيذ الأمر التالي: cordova platform add browser يضيف هذا الأمر بيئة المتصفح للتطبيق كما يتضح من الصورة، حتى تكون فيه إمكانية لتشغيله عبر المتصفح كما أسلفنا في فقرة سابقة. أما إذا كنا نرغب في إضافة منصة iOS للتطبيق - بعد تثبيت SDK الخاصة بـ iOS-، فإننا ننفذ الأمر التالي: cordova platform add ios إضافة متغيرات البيئة يتعرف نظام التشغيل ويندوز على الحِزم البرمجية المضافة إليه ويمكّننا من استخدام أوامر هذه الحِزم من واجهة سطر الأوامر، وذلك من خلال إضافة قيمة لها في متغيرات البيئة Environment Variables، حيث تُضاف بعض هذه المتغيرات تلقائيًا، بينما يحتاج بعضها إلى إضافتها يدويًا. لمعرفة المزيد من التفاصيل عن متغيرات البيئة يمكنكم الاطلاع على مقال الطّريق نحو فهم مُتغير المسار ‎$PATH، والذي يتحدث عن متغيرات البيئة. يمكن إضافة متغيرات البيئة إلى ويندوز يدويًا من خلال النقر بزر الفأرة الأيمن على أيقونة "هذا الحاسوب This Computer"، واختيار عنصر "خصائص Properties" لتظهر عدة خصائص من بينها خيارات النظام المتقدمة Advanced System Settings ليظهر مربع الحوار التالي: نختار منه بند "متغيرات البيئة Environment Variables"، ومنها يظهر مربع الحوار التالي: في مربع الحوار الظاهر سنحتاج للتعامل مع عنصرين: عنصر متغيرات البيئة الخاصة بالمستخدم، وهنا نضيف المتغيرات التالية من خلال النقر على زر "جديد New": عنصر "JAVA_HOME" ويشير إلى مسار تثبيت JDK. عنصر "ANDROIDSDKROOT" ويشير إلى مسار تثبيت SDK. عنصر متغيرات البيئة الخاصة بالنظام، وهنا يجب النقر على المتغير PATH وإضافة عنصرين أحدهما خاص بـ JAVA_HOME والآخر يخص Gradle، كما يظهر آخر عنصرين في الصورة التالية، فكلاهما يشير إلى مسار التثبيت الخاص بهما. بناء التطبيق كما أسلفنا، فإن كوردوفا – افتراضيًا – ينشئ التطبيق على شاكلة تطبيقات الويب، والذي تكون صفحة البداية فيه باسم index.html بداخل مجلد يحمل اسم www، مع الأخذ بالحسبان أي تخصيصات تفاعلية من خلال ملف JavaScript أو تنسيقات من ملف CSS. ولبناء التطبيق نستخدم الأمر التالي: cordova build كما يمكننا التحكم في اللاحقة بتخصيص بناء التطبيق لمنصة معينة مثل أندرويد أو iOS كما في المثال التالي: cordova build android بتنفيذ أمر بناء تطبيق كوردوفا لمنصة أندرويد ستكون النتيجة في واجهة سطر الأوامر كما يلي: تشغيل التطبيق لأول مرة نأتي الآن لأهم نقطة في هذا المقال، وهي أننا بعد الانتهاء من التجهيزات اللازمة لبناء التطبيق، فإننا نصل لنقطة النهاية ( نهاية التجهيزات وبداية الإعدادات والخيارات اللامحدودة ) ألا وهي تشغيل التطبيق. توفّر أدوات تطوير البرمجيات SDK محاكيًا يمكّن المطوّرين من تشغيل التطبيق واختبار تفاعله مع مميزات الهاتف المحمول، وفي حال استخدام الأجهزة الوهمية – التي أشرنا لها سابقًا – فبإمكاننا الوصول إليها من خلال تنفيذ الأمر التالي: cordova emulate android بتنفيذ الأمر السابق سيعمل المحاكي المتاح - وفي حالتنا هذه يعمل محاكي نظام أندرويد - ويُعرض التطبيق عليه كما هو موضح في الصورة التالية: أما إذا كنت تفضل أن توصل هاتفك المحمول بالحاسوب لتشغيل التطبيق عليه ثم تنفيذ الأمر: cordova run android تجدر الإشارة هنا -فيما يختص بالهواتف العاملة بنظام أندرويد- إلى ضرورة تجهيز الهاتف المحمول لإمكانية تشغيل التطبيق عليه، وذلك من خلال الانتقال إلى الإعدادات حول الهاتف والنقر سبع مرات متتالية على عنصر رقم إصدار نظام التشغيل، حيث ستظهر رسالة تحذيرية تفيد بأنك على وشك تفعيل وضع المطورين، وهنا سيظهر بند جديد في قائمة الإعدادات باسم "خيارات المطورين Developer options"، حيث بالدخول إليه سنفعّل خيار "وضع التصحيح Debug mode" كما يظهر في الصورة التالية، مع الأخذ بالحسبان اختلاف مسمى البند ومكانه في الإعدادات تبعًا لنوع الهاتف وإصدار النظام فيه. الخاتمة تُعَد الخطوات اللازمة لتجهيز بيئة العمل طويلةً نوعًا ما، وتحتاج إلى الدقة في تنفيذها، مثل اختيار الحِزم المطلوبة والتركيز على إصدارها، كما يجب التنويه إلى ضرورة الانتباه عند إنشاء متغيرات البيئة للعاملين على نظام التشغيل Windows، إلا أن هذه الخطوات تُنفّذ لمرة واحدة فقط، وبعدها يبدأ العمل على وظائف التطبيق نفسه. تعرفنا في المقال على تثبيت إطار العمل كوردوفا وإنشاء أول تطبيق من خلاله، ثم بدأنا في تفصيل تجهيز بيئة العمل من خلال تثبيت IDE مناسب، وتثبيت SDK التي يتطلبها نظام التشغيل على الحاسوب، وبعدها بنينا التطبيق تمهيدًا لتشغيله كما في الخطوة الأخيرة، وسنتطرق في المقال التالي إلى إدارة القوالب الخاصة بالتطبيق، والتعرف على هيكلية (بنية) الملفات في مجلد التطبيق. اقرأ أيضًا نظرة عامة عن تطوير تطبيقات الأجهزة المحمولة عبر كوردوفا أنشئ تطبيقك الأول في Cordova نظرة هيكلية عامة لمنصة Cordova
  11. ألقينا في المقال السابق نظرةً عامةً عن تطوير تطبيقات الهاتف، وتطرقنا إلى الطّرق الأربعة المتّبعة في تطوير تطبيقات الهاتف، بحيث فصّلنا الحديث عن طبيعة كل طريقة مع سرد ميّزاتها وعيوبها، ثم وجّهنا المقال نحو طبيعة التطبيق وأجزائه، وبدأنا في تخصيص الحديث عن التطبيقات الهجينة بصفتها حلا وسطًا لمن لا يمتلكون المهارات العالية لتطوير تطبيقات أصيلة بنسخة منفردة لكل نظام تشغيل، ولتوفير الكثير من الوقت والموارد المالية المخصصة لإنشاء تطبيقات أصيلة، وسنتحدث في هذا المقال عن إطار العمل أباتشي كوردوفا Apache Cordova الذي يمكّن المطوّرين من إنشاء تطبيقات هجينة للهاتف، مع ذكر طبيعة إطار العمل وميزاته وعيوبه. لقد تطورت حاجة المؤسسات إلى وجود موقع إلكتروني يعرض أعمالها للجمهور، ومع سيطرة الأجهزة الذكية على سوق تقنية المعلومات، فقد احتاجت المؤسسات إلى المهارات والموارد اللازمة لإنشاء تطبيقات لجميع المنصات الشائعة للهواتف، وذلك للوصول إلى عملائها عبر هواتفهم في أي وقت، ومع صعوبة توفير بعض الموارد لإنشاء تطبيقات أصيلة، فقد توجهت المؤسسات نحو تطوير التطبيقات الهجينة للهواتف؛ وذلك لما توفره هذه الطريقة من إتاحة نفس التطبيق على منصات متعددة تتضمن بعض الميزات من خلالها تجاوز القيود المتعلقة بالوقت والموارد البشرية والمالية. يطور المبرمجون التطبيقات الأصيلة للهواتف عن طريق إنشاء تطبيق مستقل لكل منصة (كما وضحنا في المقال السابق في وصفنا لطرق إنشاء تطبيقات الهواتف)، بينما تطوَّر التطبيقات الهجينة للهواتف باستخدام تقنيات الويب القياسية HTML5 وCSS3 وJavaScript، من خلال أحد أُطر العمل على النقيض من تطبيقات الويب التقدمية للهاتف والتي تُنشر من خلال متاجر التطبيقات وتوفر تجربة مستخدم أصلية. إذًا فاختيار طريقة التطبيقات الهجينة للهواتف توفر كثيرًا من الوقت اللازم لإنشاء أول نسخة من التطبيق على كل المنصات. سنخصّص هذا المقال للحديث عن إطار العمل كوردوفا الذي يُستخدم على نطاق واسع لتطوير التطبيقات الهجينة للهاتف، ويقدم العديد من الإمكانيات للمطوّرين للاستفادة القصوى من إمكانيات الهاتف، مستغلين معرفتهم بتقنيات الويب القياسية التي سنبدأ الحديث عنها مباشرةً باختصار قبل الانتقال إلى الحديث بالتفصيل عن إطار العمل أباتشي كوردوفا. مفاهيم ومصطلحات للعمل بأباتشي كوردوفا تتكون تقنيات الويب القياسية من ثلاث مكونات رئيسة هي HTML وCSS وJavaScript، حيث يفهم متصفح الإنترنت هذه التقنيات ويستطيع تفسيرها compile وعرضها render على صفحاته دون أي مساعدة من برامج خارجية على العكس من بعض لغات البرمجة التي تطلب وجود خادوم Server، مثل لغة PHP التي تستخدم خادومًا مثل Apache ليفسر تعليماتها البرمجية وينتجها بإحدى أشكال تقنيات الويب القياسية التي يفهمها المتصفح ويستطيع عرضها. سنذكر بعضًا من تفاصيل هذه التقنيات كما يلي: لغة ترميز النص التشعبي HTML لغة Hyper Text Markup Language واختصارها HTML، هي الطريقة الرئيسية التي تُنشأ بها أي صفحة في المواقع الإلكترونية على شبكة الإنترنت، ولا تُعَد لغةً برمجيةً بالمعنى المتعارف عليه للغات البرمجة، ولكنها طريقة لهيكلة ووصف محتويات صفحة الويب لمتصفحات الانترنت، حيث أن أي المتصفح يحتاج لمعرفة مكونات الصفحة من عناوين ونصوص وصور وروابط وغير ذلك من محتويات الصفحة، كي يتمكن من عرضها بالشكل الصحيح. لقد أُضيفتسلسلة مقالات تتحدث بالتفصيل عن HTML في أكاديمية حسوب، حيث يمكنك الاطلاع عليه والاستفادة منها. وتتكون صفحة الويب من مجموعة من العناصر التي تُسمى وسوم Tags -جمع وسْم tag-، حيث كل وسْمٍ يمكن أن يحتوي على بعض الخصائص attributes والأصناف classes التي يمكن من خلالها تخصيص الوسم وإضافة نصوص التنسيق الخاصة CSS. لغة التنسيق CSS لغة التنسيق Cascading Style Sheet - CSS تختصّ بدورها في تصميم وتشكيل المظهر العام لصفحة الويب، مثل تحديد الخطوط والهوامش والمسافات لعناصر الموقع، وكذا تحديد لون الخلفيات وحجم العناصر، والحصول على الحركات في الموقع، والعديد من المزايا الأخرى. للتعرف على المزيد من وظائف وخصائص لغة التنسيق، يمكنك الاطلاع على سلسلة المقالات الخاصة بها على أكاديمية حسوب. جافاسكريبت JavaScript هي لغة برمجة عالية المستوى تُستخدم بالأصل في متصفحات الويب لإنشاء صفحات تفاعلية بين الموقع الإلكتروني والمستخدم، كما توجد بعض المكتبات المبنية على جافا سكربت التي تساعد على إنجاز وظائف أكثر بنصوص برمجية أقل مثل مكتبة jQuery وأُطر العمل Vue.js وAngular وReact. تتوفر مجموعة من مقالات على أكاديمية حسوب تمكّنك من الاطلاع على طبيعة لغة البرمجة هذه وخصائصها، وأطر العمل المبنية عليها. إطار العمل framework يُعَد إطار العمل أداةً تحتوي عدة مكونات تساعد المطوّر على وضع أساس التطبيق الذي يرغب في إنشائه، كما يوفر مجموعةً من النصوص والملفات البرمجية المكتوبة مسبقًا لجزء من التطبيق، ويتواجد هذا المفهوم في عدة لغات برمجية مثل لغة Java التي يتوفر لها إطار العمل Spring، ولغة PHP التي يتوفر لها عدة أطر عمل مثل CodeIgniter، وLaravel، وكذلك لغة JavaScript التي وضحنا لها في الفقرة السابقة بعض المكتبات وأطر العمل. تكمن أهمية أطر العمل في إمكانيتها لتوفير الوقت على المبرمج لأنه يجد أرضًا صلبةً لبدء تطبيقه من خلالها، مستغلًا الملفات والنصوص البرمجية المعدّة مسبقًا. هذه الميّزات تتطلب بالضرورة أن يكون المطور على علم جيّد بلغة البرمجة الأم، إضافةً إلى الخدمات والإمكانيات التي يوفر إطار العمل، مما يعني أن إطار العمل هو أداة مساعدة فقط، وعلى المبرمج تطويعها واستغلال إمكانياتها بما يخدم التطبيق الذي يعمل عليه. بيئة التطوير المتكاملة Integrated Development Kit هي تطبيق يهدف إلى جعْل عملية كتابة النصوص البرمجية أمرًا ميسّرًا، ويمكن لهذه البيئة أن تجمع بين الأدوات المختلفة التي تساعد المطورين على كتابة التعليمات البرمجية وتحريرها، وبناء الملفات التنفيذية واختبار النتيجة وتصحيحها في حال وُجِد خلل بها، مما يوفّر كثيرًا من الوقت والجهد، وبالتالي زيادة إنتاجية المطوّرين. عادة ما تتكون هذه البيئات البرمجية من أداة لكتابة وتحرير النصوص البرمجية، وتحتوي على مفسّر compiler يشكّل دور الوسيط بين المبرمج والحاسوب، وتحوي أيضًا إمكانية تتبّع الأخطاء ومساعدتك على إصلاحها، وكذا العديد من الأدوات الأخرى لإتمام تطوير البرمجيات. من الأمثلة على هذه البيئات، نجد برنامج NetBeans لتطوير البرمجيات بلغة جافا، وبرنامج Visual Studio Code لعدة لغات برمجة - حسب تخصيص الإضافات - مثل PHP وC#، وغيرها الكثير. بهذا نكون قد ذكرنا باختصار نبذةً سريعةً عن تقنيات الويب القياسية؛ لأهميتها في تطوير التطبيقات الهجينة للهاتف، ويجب على القارئ الذي يرغب في استكمال هذه السلسلة عن تطوير تطبيقات الهاتف الهجينة أن يكون متمكّنًا من هذه التقنيات، إذ أنّنا لن نتطرق لشرحها في هذه السلسلة، وسندرج في نهاية هذا المقال مراجع لشرح هذه التقنيات. عمل أباتشي كوردوفا Apache Cordova بناءً على ما سبق ذكره، تستطيع المؤسسة تسريع تطوير التطبيقات الهجينة للهاتف من خلال الاعتماد على أطر العمل المتاحة في هذا المجال، وأبرزها أباتشي كوردوفا Apache Cordova. في العام 2011 أنشأت مجموعة Nitobi فكرة إطار العمل تحت مسمى PhoneGap، ثم استحوذت عليه Adobe System وأطلقت عليه اسم Cordova، والذي يُعَد إطار عمل Framework مفتوح المصدر ومتاح لتطوير التطبيقات الهجينة للهواتف. إنّ ما يميز كوردوفا هو احتواؤه الكثير من الإمكانيات المقدَّمة للمطورين، والتي تمكّنهم من إنشاء تطبيقات هاتف تعمل على كافة الأنظمة من خلال استخدام تقنيات الويب القياسية سالفة الذّكر، بحيث تُستخدم لغة الترميز لعرض محتوى التطبيق، ولغة التنسيق لإضافة اللمسات الجمالية على المحتوى المعروض، بينما تستخدم لغة JavaScript لتنفيذ الوظائف التي يقدّمها التطبيق، وتتعامل مع تفاعل المستخدم مع التطبيق. إذًا، فإطار العمل كوردوفا يمكّن المطورين من إنشاء تطبيقات هجينة متطورة للهاتف، وذلك باستخدام العديد من مكتبات JavaScript، ومن المزايا المذهلة التي يقدمها كوردوفا أنه يوفّر للمطور آلية لتجهيز التطبيقات الهجينة للهاتف لكل منصات الهواتف، مما يعني أنه يمكن تثبيت تطبيق كوردوفا على الهواتف تمامًا مثل تطبيقات الهاتف الأصيلة، حتى لو كان مبنيًّا باستخدام تقنيات الويب. في ميّزة إضافية تشجّعك على استخدام كوردوفا لتطوير التطبيقات الهجينة للهاتف، نجد توفير إضافات برمجية متنوعة تسمح للتطبيق بالوصول إلى إمكانيات الهاتف مثل الكاميرا ومحدد المواقع وحالة البطارية، كذا الوصول للملفات والوسائط المتعددة، وغيرها الكثير سنتحدث عنها بالتفصيل في المقالات القادمة. لذا يتوجب على المطوّر فهم طبيعة عمل إطار العمل كوردوفا والاطلاع على الميزات التي يقدمها ليساعده في تطوير تطبيقاته. معالم إطار العمل أباتشي كوردوفا يدعم نظام تشغيل الهاتف التطبيقات التي تُثبّت عليه، مقدمًا لها العديد من الخدمات التي من بينها المجسات أو المستشعرات، والتعاطي مع المدخلات لتمريرها إلى التطبيق، وفي حال بناء تطبيق الهاتف من خلال كوردوفا، فإن التطبيق سيتكون من جزئيتين رئيستين - كما هو موضح في الشكل أدناه - أولها تطبيق الويب (الذي يُبنى باستخدام تقنيات الويب القياسية) الذي يتعامل مباشرةًً مع محرك عارض الويب WebView من خلال واجهة برمجيات كوردوفا API، وواجهة برمجيات HTML مرفق معه ملف الإعدادات العامة التي تتحكم في العديد من سلوكيات تطبيقات كوردوفا، وهنا يأتي دور محرك عارض الويب في التواصل مع الجزء الثاني من التطبيق وهو إضافات كوردوفا المتنوعة أو المخصصة، تُعدّ الكاميرا والوسائط وجهات الاتصال ومحدد الموقع الجغرافي وغيرها الكثير من الإضافات الجاهزة في كوردوفا، بينما يمكنه التواصل من الإضافات المخصصة التي يطوّرها المبرمجون لدعم وظائف التطبيق الذي يعملون عليه؛ أما بخصوص نظام التشغيل، فإنه يتواصل مع محرر عارض الويب من جهة، ومع الإضافات مباشرةً لتنفيذ وظائف التطبيق. يوضح الشكل أدناه بالتفصيل تركيب الشكل العام لتطبيق مبنيّ من خلال كوردوفا، وآلية التواصل بين أجزائه. نتطرق في النقاط القادمة إلى الجوانب المهمة في كوردوفا، والتي يجب على المطوّر معرفتها كي تساعده في تطوير التطبيقات قاعدة الملفات البرمجية الموحدة تدعم كوردوفا في الوقت الحالي الأنظمة الأساسية المشهورة مثل iOS وAndroid وبالتالي، يمكن للمطور استخدام إطار العمل كوردوفا لإنشاء تطبيق هاتف موحّد موجّه للأنظمة الأساسية للهاتف من خلال كتابة التطبيق بتقنيات الويب القياسية التي تحدثنا بالتفصيل أعلاه. إذًا فكوردوفا تساعد المطور في برمجة أو تطوير التطبيق لمرة واحدة، ثمّ تُنشئ حزمةً برمجيةً قابلةً للتثبيت لكل نظام من أنظمة التشغيل بطريقة مستقلة، هذه الحزمة -عند تثبيتها على الهاتف- تقدّم للمستخدِم تجربة استخدام التطبيقات الأصيلة من خلال الوصول إلى إمكانيات الهاتف مثل الكاميرا ونظام تحديد المواقع GPS والبلوتوث وجهات الاتصال. عارض الويب WebView تُشغّل واجهات التطبيقات الهجينة في الحاوية التي يوفرّها نظام التشغيل، وتُعرض هذه الحاوية في شاشة الهاتف، وبما أن أنظمة التشغيل تستخدم نفس عارض الويب WebView، فإن الحاوية تتغير تبعًا لخصائص نظام التشغيل، بينما يتبقى عرض صفحات الويب دون تغيير. وبناءً على هذه الخاصية المتوفرة في أنظمة التشغيل، فقد صُمّمت واجهة المستخدم في كوردوفا لتبدو تقنيًا مثل عرض الويب WebView، كما تقدّم كوردوفا من خلال مكتباتها وإضافاتها الرائعة تجربة مستخدم أصيلة، من خلال تفاعلها مع مكونات نظام تشغيل الهاتف، وهو ما يعطي ميّزةً مذهلةً للمطورين بإثراء تجربة المستخدم للتطبيق بطريقة مستقلة عبر كل نظام تشغيل بدون تغيير الملفات البرمجية للتطبيق طبعًا. تذكر دومًا المزية الرئيسة للتطبيقات الهجينة، وهي تطبيق واحد لكل أنظمة التشغيل. معمارية/بنية الإضافات عند استخدام إطار العمل كوردوفا، يستطيع المطورون ربط نصوص برمجية مكتوبة بلغة جافا سكربت للنصوص البرمجية التي تعمل في الواجهة البرمجية الخلفية Back-End من خلال الإضافات (المكونات الإضافية) الاختيارية القوية التي توفرها كوردوفا، إذ توفّر كوردوفا للمطورين عددًا كبيرًا من الإضافات الجاهزة حسب الوظيفة التي يرغب المطوّر بإضافتها للتطبيق، والمتوافقة مع نظام التشغيل الذي يستهدفه التطبيق. يستطيع المطوّر تمكين التطبيق من الوصول إلى إمكانيات الهاتف مستخدمًا إحدى الإضافات التي توفرها كوردوفا، على سبيل المثال يستطيع المطوّر استخدام واجهة برمجية التطبيق Application Programming Interface - API للاستفادة من خصائص الحماية من النظام الأساسي، وفي نفس الوقت، إذا لم يجد المطوّر الإضافة البرمجية التي توفر طلبه بشكل دقيق، فأن كوردوفا -من خلال API الخاصة بها- تمهّد الطريق للمطوّر لبرمجة الإضافات الخاصة به وفقًا لاحتياجاته الدقيقة. واجهة سطر الأوامر Command Line Interface تساعد واجهة سطر الأوامر الخاصة بكوردوفا المطورين على تسريع مراحل تطوير تطبيقات الهواتف وإمكانية اختبارها وتجهيزها لتعمل على الأنظمة، من خلال كتابة بعض الأوامر المعروفة، حيث يستطيع المطورون استخدام CLI لتسريع المهام الروتينية لتطوير تطبيقات الهاتف مثل إنشاء مشروع جديد وتجهيز التطبيق للعمل على الأنظمة المختلفة، كما يمكنهم أيضًا تنفيذ أوامر لاختبار التطبيق الهجين للهاتف باستخدام أجهزة حقيقية أو محاكيات وهمية Simulators تُضاف مسبقًا في بيئة العمل. يجب على المطوّر تجهيز بيئة العمل من خلال تثبيت حِزم أدوات تطوير البرمجيات Software Development Kit - SDK لكل منصة هاتف مستهدَفة قبل استخدام أدوات CLI، وسنتطرق في [المقال القادم](راب المقال) إلى تجهيز بيئة العمل، ونتعرف على الأدوات المطلوبة. مجموعة متنوعة من أدوات التطوير يتوافق إطار العمل كوردوفا مع العديد من أطر تطوير تطبيقات الهواتف وبيئات التطوير المتكاملة IDEs، كذا والأدوات المستخدمة على نطاق واسع. وبالتالي يستطيع المطورون توسيع إطار عمل كوردوفا بسهولة، وذلك من خلال الاستفادة من الأدوات شائعة الاستخدام مثل دمج أُطر عمل أخرى لبيئة التطوير مثل إطار العمل أيونيك Ionic Framework - الذي يستخدم لتطوير تطبيقات هجينة -، وبيئة التطوير التي تتوافق مع طبيعة التطبيقات التي نطوّرها مثل Android Studio وVisual Studio Code من MicroSoft، والذي تَطوّر كثيرًا في الآونة الأخيرة ليدعم مجموعةً من الأدوات لكوردوفا من بينها مُثبِّت سهل الاستخدام، ومحرر النصوص البرمجية مع دعم لتنقيح الأخطاء، وتخصيص تجربة التطبيق، بالإضافة إلى آليات لاختبار التطبيق؛ أما بخصوص برمجيات أدوات التطوير SDK فإنها توفر للمطورين خيارات متعددة لتطوير التطبيقات الهجينة للهواتف مثل دعم أيونيك Ionic لتحسين مظهر وأدوات تفاعل المستخدم مع التطبيق look and feel، ورفع جودة تجربة المستخدم. نقاط ضعف التطبيق الهجين لكوردوفا مثل جميع أدوات التطوير الأخرى للتطبيقات الهجينة للهواتف، تحتوي كوردوفا على بعض العيوب، نذكر منها ما يلي: بطء التطبيق موازنةً بالتطبيقات الأصيلة: إن الاهتمام بتوافق التطبيق الهجين عبر جميع أنظمة التشغيل يجعل تطبيقات الهاتف المنشأة بكوردوفا تعمل أبطأ من التطبيقات الأصيلة. عدم غزارة الإضافات: غالبًا ما تواجه المطورين بعض الصعوبة في العثور على إضافات تتوافق بدقة مع الوظائف المطلوب تنفيذها في التطبيق، مما يضطرهم للجوء إلى تصميم وبرمجة إضافات مخصصة لتتوافق مع احتياجات التطبيقات التي يطوّرونها. المزيد من تخصيص التطبيق: يضطر المطورون للجوء إلى تخصيص التطبيق ليتوافق أكثر مع أنظمة التشغيل المختلفة -تحديدًا iOS وأندرويد-، بتخصيص يتوافق مع طبيعة نظام التشغيل نفسه، وهذه من العيوب التي يعمل مطورو إطار العمل كوردوفا على تطويرها ومعالجة النقص فيها لتكتمل تجربة بناء تطبيقات هجينة تعمل بجودة عالية على جميع أنظمة التشغيل، وقد نجد لها بعض الحلول في الإصدارات القادمة من كوردوفا. الخلاصة إجمالًا لما سبق، فإن إطار العمل كوردوفا -عمومًا- ساعد المؤسسات على تقليل تكلفة ووقت تطوير التطبيقات الهجينة للهواتف كثيرًا، لقد وضحنا في هذا المقال بعض المصطلحات الخاصة بتقنيات الويب القياسية التي يجب على المهتمّ بتطوير التطبيقات الهجينة الاهتمام بها وإتقانها، ثم بدأنا في الحديث عن إطار العمل أباتشي كوردوفا الذي يُعَد رائدًا في مجال تطوير التطبيقات الهجينة بناءً على المهارات التي يمتلكها مطور تطبيقات الويب لتسريع آليات بناء التطبيقات، كما وضحنا معمارية تطبيق الهاتف المبنيّ باستخدام كوردوفا كي يكون المطوّر على علم بتركيب وهيكلية التطبيق. وختمنا المقال ببعض العيوب في كوردوفا، والتي تضيف بعض الاستفسارات في عقل المطوّر الذي يجب عليه دراسة وفهم إمكانيات كوردوفا ونقاط الضعف فيها ووضع ذلك في الحسبان وموازنتها وفقًا للاحتياجات الدقيقة لكل تطبيق. سنتحدث في المقال القادم عن تجهيز بيئة العمل الخاصة بإطار العمل كوردوفا قبل إنشاء أول تطبيق هجين. اقرأ أيضًا نظرة هيكلية عامة لمنصة Cordova أنشئ تطبيقك الأول في Cordova
  12. قبل عقدِ من الزمان، بدأت الهواتف الذكيّة والحواسيب اللوحية بالسيطرة على قطاع التقنية وتكنولوجيا المعلومات وبدأ سوقها بالنمو المتسارع، حتى وصلت إلى ما هي عليه الآن، بحيث بات لا يمكنك في هذه الأيام أن تجد أحدًا يستغني عن استخدامها في مجالات يصعب حصرها، مثل التجارة الإلكترونية والتعليم الإلكتروني والتسلية والترفيه والتواصل الاجتماعي والمجال الطبي والتسويقي .. إلخ، وكذا الغوص في تطبيقاتها متعددة المزايا والخدمات. وبالتوازي مع الهواتف الذكية، فقد ظهرت تطبيقاتها التي تشكّل سوقًا خاصًا له ميزاته التجارية والمالية والتقنية. لعملية إنشاء تطبيقات الهواتف الذكية - ودعنا مبدئيا نصطلح على تسميتها بتطبيقات الهاتف-، عدة منهجيات أو طرق لإنشائها بالاعتماد على التقنيات المستخدمة وشركات تصنيع الهواتف، حيث سنتطرق في هذا المقال إلى هذه الطرق الأربعة، مع الاستطراد بتوضيح الفروق بينها، ولا نغفل بذلك ذِكر الميزات والعيوب التي تخص كل من هذه الطرق. نظرة عامة عن تطوير تطبيقات الهاتف سنتعرف في هذا المقال على معلومات عامة عن تطوير تطبيقات الهواتف، وطرق التطوير المعروفة، مع توضيح الميزات والعيوب لكل طريقة. تطوير تطبيقات الهواتف هو عملية إنشاء تطبيقات برمجية تعمل على الهواتف، من خلال إنشاء حِزم برامج قابلة للتثبيت مهمتها تنفيذ خدمات في الخلفية، مثل الوصول إلى إمكانيات الهاتف أو البيانات باستخدام واجهة برمجة التطبيقات. تتطلب بعض التطبيقات، وجود اتصال شبكة للعمل مع موارد الحوسبة عن بُعد، مع مراعاة نظام التشغيل المستهدف لتشغيل التطبيق عليه. تطبيقات الهاتف وأنظمة تشغيل الأجهزة تسيطر منصتان رئيستان على سوق الهواتف الذكية، أولهما هو نظام iOS من شركة Apple، وهذه المنصة هي نظام التشغيل المتواجد في الهواتف iPhone من شركة Apple، والثاني هو Android من Google، وهو ليس حكرًا على أجهزة Google فقط كما هو الحال مع Apple، بل يُستخدم أيضًا من قِبل العديد من مصنعي الأجهزة الذكية كالساعات وشاشات العرض والأجهزة المنزلية الذكية، وكذلك الهواتف. على الرغم من وجود بعض أوجه التشابه بين هذين النظامين الأساسيين عند برمجة وتطوير التطبيقات، فإن التطوير لنظام iOS يختلف عن التطوير لنظام Android، حيث أن عملية التطوير تتضمن استخدام أدوات تطوير برامج SDKs مختلفة، بالإضافة إلى أدوات تطوير أخرى تختلف بين نظامي التشغيل، فحينما نرى أن شركة Apple تستخدم نظام iOS حصريًا للأجهزة الخاصة بها، فإن Google تجعل Android متاحًا للشركات الأخرى شرط أن تفي بمتطلبات محددة مثل تضمين بعض تطبيقات Google على الأجهزة التي تنتجها، ويمكن للمطورين إنشاء تطبيقات لمئات الملايين من الأجهزة من خلال استهداف كلا النظامين. طرق تطوير تطبيقات الهواتف هناك أربعة طرق تطوير رئيسة عند إنشاء تطبيقات الهاتف، وهي كما يلي: تطبيقات الهاتف الأصيلة Native تطبيقات الهاتف الأصيلة متعددة المنصات عبر الأنظمة الأساسية Cross-Platform Native تطبيقات الهاتف الهجين Hybrid تطبيقات الويب التقدمية Progressive Web Applications لكل من هذه الطرق المذكورة أعلاه لتطوير التطبيقات الخاصة بالهواتف، عدد من المزايا والعيوب الخاصة به، والتي يأخذها المطورون بالحسبان عند اختيار أحد طرق التطوير لمنتجاتهم البرمجية، بالإضافة إلى الاهتمام بتجربة المستخدم المطلوبة، وموارد الحوسبة والميزات الأصيلة التي يتطلبها التطبيق، والميزانية المرصودة للتطوير، والفترة الزمنية المتاحة، والموارد المرصودة للحفاظ على التطبيق من فريق عمل لتطويره وحل المشاكل العارضة وما يستلزم ذلك من تغطية مالية، وذلك ضمن دورة حياة تطوير التطبيق من بداية تحليل النظام وحتى الانتهاء باختبار التطبيق وتجربته وإطلاقه إلى سوق العمل، وسنفصل الآن توضيحًا لكل طريقة تطوير مع سرد الميزات والعيوب. أولا: تطبيقات الهاتف الأصيلة Native تُكتَب تطبيقات الهاتف الأصيلة بلغة البرمجة وأطر العمل البرمجية التي يوفرها مالك النظام الأساسي، وتعمل مباشرةً على نظام تشغيل الهاتف ذاك فقط، مثل لغة البرمجة Objective-C وSwift المستخدَمتين لتطوير تطبيقاتٍ تعمل ضمن نظام iOS وAndroid، وفي هذه الطريقة يُستخدم Android Studio على سبيل المثال لتطوير تطبيقات خاصة بنظام Android باستعمال لغات البرمجة المدعومة جافا Java أو كوتلن Kotlin، بينما يُستخدم Xcode على نظام التشغيل Mac لتطوير تطبيقات خاصة بنظام التشغيل iOS باستخدام لغات البرمجة Objective-C أو Swift. المميزات الأفضل أداءً خلال تشغيل التطبيق. الوصول المباشر إلى واجهات برمجة التطبيقات الخاصة الهاتف. العيوب ضرورة وجود اعتبار للتكلفة المادية لكل نظام تشغيل عند إنشاء التطبيق وصيانته، حيث أنه ستبنى نسخة كاملة منفصلة لأجهزة الأندرويد من قِبل مبرمج أندرويد، وبالتوازي ستبنى نسخة خاصة بأجهزة لآيفون من قِبل مبرمج iOS. ثانيا: تطبيقات الهاتف الأصيلة متعددة المنصات عبر الأنظمة الأساسية Cross-Platform Native يمكن كتابة تطبيقات الهاتف الأصيلة عبر الأنظمة الأساسية بلغات وأطر برمجة مختلفة، ولكنها تُجمَّع لاحقًا في تطبيق أصيل يعمل مباشرةً على نظام تشغيل الهاتف، وفي هذه الطريقة تُستخدم أّطر عمل متقدمة مثل Flutter وXamarin وReact Native المميزات كود رئيسي/ملفات برمجية موحدة لمنصات متعددة. سهولة وسرعة إنشاء وصيانة التطبيق الخاص بك. إمكانية إعادة الاستخدام لفقرات متعددة من النص البرمجي في وظائف مماثلة في التطبيق أو تطبيقات أخرى، مما يقلل من الوقت الذي يستغرقه إنشاء التطبيق. العيوب الاعتماد على مكتبات خارجية مخصصة للوصول إلى الميزات الأصيلة للهاتف. كود رئيسي/ملفات برمجية متعددة لكل منصة. ثالثا: تطبيقات الهاتف الهجينة Hybrid لقد صُمّمت تطبيقات الهاتف الهجينة باستخدام تقنيات الويب القياسية مثل HTML5 وCSS وJavaScript، وهي مجمعة مثل حزم تثبيت التطبيق، حيث تعمل التطبيقات المختلطة -طبعًا على العكس من التطبيقات الأصيلة- على "حاوية ويب" توفر إمكانية التشغيل عبر المتصفح، بالإضافة إلى كونها جسرًا لواجهات برمجة التطبيقات الأصيلة للهواتف، وهنا تُستخدم أُطر عمل مثل أباتشي كوردوفا Apache Cordova وأيونيك Ionic. المميزات توفير الكثير من الوقت والجهد وكذلك المال، من خلال تطوير تطبيق واحد لكل المنصات. كود رئيسي/ملفات برمجية مشتركة بين تطبيقات الويب وتطبيقات الهاتف، وتُعَد أهم الميزات لمطور التطبيق. استخدام مهارات تطوير الويب لبناء تطبيقات الهواتف. العيوب أداء أقل موازنةً بالتطبيقات الأصيلة، إضافةً إلى محدودية الأداء بسبب التجسير. يوجد اختلاف - قد لا يتفق عليه الكثير - بخصوص واجهات التطبيق وتجربة المستخدم، فلا شك أن التطبيقات الأصيلة تتفوق في الواجهات عن الهجينة. رابعا: تطبيقات الويب التقدمية Progressive Web Applications تطبيقات الويب التقدمية PWA هي تطبيقات ويب تستخدم بعضًا من إمكانيات المتصفح -مثل العمل في وضع عدم الاتصال وتشغيل بعض العمليات في الخلفية وإضافة ارتباط إلى الشاشة الرئيسية للهاتف-، لتوفر للمستخدم تجربة ما يشبه التطبيق عبر المتصفح. تشكّل هذه الطريقة نهجًا بديلًا لتطوير تطبيقات الهواتف التقليدية عن طريق تجاوز تسليم التطبيق لمتجر التطبيقات الخاصة بالمنصة، وكذلك تخطي خطوات تثبيت التطبيق. وهنا تستخدم أُطر عمل مثل Angular وReact وPolymer لإنشاء تطبيقات الويب التقدمية. المميزات التطبيق نفسه متاح لكل من الويب والهاتف. يمكن الوصول إليه من خلال عنوان الإنترنت URL، ولا يلزم التثبيت. العيوب دعم محدود للميزات الأصيلة للهاتف. اعتماد إمكانيات التطبيق على المتصفح المستخدم. موازنة التطبيقات الأصيلة مقابل التطبيقات الهجينة على أعلى مستوى، هناك أربع طرق رئيسة تختلف بها التطبيقات الأصيلة عن التطبيقات الهجينة كما هو موضح في الجدول التالي: table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } التطبيقات الأصيلة التطبيقات الهجينة المنصة المستهدفة منصة محددة حسب نظام التشغيل متعدد المنصات لغة البرمجة تستخدم لغة البرمجة التي تدعمها المنصة، مثل استخدام جافا وكوتلن في نظام أندرويد، واستخدام Objective-C وSwift في نظام iOS. لا يمكن استخدام أدوات بديلة مطلقًا. لا يمكن التعامل مع إمكانيات نظام التشغيل مباشرة إلا من خلال لغات البرمجة المذكورة، حيث يفهمها النظام ويقوم بتفسيرها Compile وتنفيذ تعليماتها تستخدم طريقة برمجية مختلفة بالاعتماد على تقنيات الويب القياسية يفهمها متصفح الويب في النظام، ويقوم المتصفح بدور الوسيط بين تطبيق الهاتف المبني بهذه الطريقة من جهة، وبين نظام تشغيل الهاتف من جهة أخرى الوصول إلى إمكانيات الهاتف مباشرةً من خلال النص البرمجي من خلال بعض الإضافات الأصيلة، أو إضافات خارجية في أغلب الحالات إطار العمل المستخدم أُطر عمل خاصة بالمنصة Platform Frameworks أُطر عمل الويب القياسية Web Frameworks لماذا تختار طريقة التطبيقات الهجينة على طريقة التطبيقات متعددة المنصات؟ تتمثل إحدى مشكلات تطوير تطبيقات الهاتف الأصيلة في أنها تتطلب مجموعة مهارات عالية التخصص، فعلى الرغم من وجود مجتمعات مطورين كبيرة ونابضة بالحياة للغة سي C (وهي اللغة الأم لتطوير تطبيقات iOS، وما بُني عليها من لغات برمجة عالية المستوى مثل Objective-C ثم Swift التي صدرت لتشكّل بديلًا عن كل ما سبقها)، وجافا Java (الخاصة بتطوير تطبيقات Android)، وكذلك لغة البرمجة Kotlin (التي اعتمدت رسميًا من جوجل منذ 2017 لتكون ثاني لغة برمجة لتطوير تطبيقات الأندرويد بعد جافا)؛ إلا أن هناك عددًا أقل من المطورين الذين يمتلكون مهارات عالية ومعرفة كبيرة بالإصدارات الخاصة بالنظام الأساسي لتلك اللغات وبيئة التطوير المتكاملة IDE الخاصة بكل لغة. لا شك أن هناك طلب كبير على المطورين المتميزين للتطبيقات الأصيلة، حيث تتعرض العديد من الشركات لضغوط شديدة فتكون الخيارات إما توظيفهم دائمًا وتحمل تكلفتهم الباهظة كما ذكرنا في عيوب هذه الطريقة من التطوير، أو اعتماد أسلوب التعهيد الذي يمكنهم من توظيف مؤقت لشركات أو مبرمجين لإنشاء التطبيقات. هذه التحديات تجعلنا نفكر في اتجاه آخر، وهو إمكانية إنشاء تطبيق يعمل على جميع المنصات بتقنيات معروفة ومهارات متوسطة، وهنا يأتي تصنيف التطبيقات الهجينة الذي يعتمد على تقنيات الويب القياسية، وسنركز على هذا التصنيف في هذه السلسلة؛ أما إن كنت من ذوي المهارات العالية في تطوير التطبيقات لمنصة محددة فهنيئًا لك، إلا أن هذه السلسلة موجهة للمهتمين بتطوير أو إنشاء تطبيقات الهاتف باستخدام الأطر الهجينة. كيف تعمل الأطر الهجينة ومتعددة المنصات عبر الأنظمة الأساسية؟ تسمح التطبيقات الهجينة للمطورين باستخدام تقنيات الويب القياسية HTML, CSS, JS، حيث يمكن من خلال هذه التقنيات إنشاء موقع ويب مثل موقع لعرض معلومات المؤسسة، أو موقع إخباري، أو موقع شخصي.. إلخ؛ أو إنشاء تطبيق ويب ليكون موقعًا ذا غرض معين مثل موقع لعرض المقالات، أو موقع لتنزيل الكتب، أو موقع لحساب السعرات الحرارية والوزن المثالي.. إلخ. تُغلّف التطبيقات الهجينة في حاوية تسمح لتطبيق الويب بالعمل مثل التطبيق الأصيل على الهاتف، حيث يمكن استخدام معظم التعليمات البرمجية من تطبيق ويب لإنشاء تطبيق هاتف بالاعتماد على أنّ تطبيقات الهواتف الهجينة هي مجرد تطبيقات ويب تعمل في بيئة متصفح الويب المضمن في نظام تشغيل الهاتف. يعتمد نظام أندرويد على عارض الويب WebView بينما يعتمد نظام iOS على UIWebView الذي يستخدم في إصدار iOS الثاني حتى الثامن، وقد طُوِّر لتسريع عرض المكونات في المتصفح بدءًا من الإصدار الثامن، وصدر باسم جديد هو WKWebView. يُعَدّ تطوير التطبيقات الهجينة بديلًا فعالًا لمطوري الويب الذين يرغبون في إنشاء تطبيقات الهواتف بسرعة، نظرًا لأن أداء طريقة عمل المتصفحات في الهواتف في تحسن مستمر من ناحية تحويل التطبيق وتشغيله وعرضه. وبالمثل، تُكتَب تطبيقات الويب التقدمية PWA باستخدام تقنيات برمجة تطبيقات الويب التقليدية، ويكون الوصول إليها مبدئيًا من خلال متصفح نظام التشغيل إما على الهاتف أو جهاز الحاسوب. توفر معظم الأطر المشتركة بين الأنظمة الأساسية مكونات أصيلة للعمل مع التعليمات البرمجية عبر الأنظمة الأساسية، بينما تعمل بعض الأطر الأخرى مثل Flutter وXamarin، على ترجمة التعليمات البرمجية عبر الأنظمة الأساسية إلى الكود الأصيل للحصول على أداء أفضل. أجزاء تطبيقات الهاتف من وجهة نظر فريق التطوير ينظر فريق التطوير إلى عملية تطوير التطبيق من خلال منظورين رئيسين، وهما الواجهات الأمامية والوظائف التي ينفذها التطبيق. بعض التطبيقات ينجزها شخص واحد مؤهل في المنظورين - بلا شك اعتمادًا على حجم التطبيق والوقت المقدر لإنشائه -، وبعض التطبيقات يحتاج إلى فريق عمل متخصص كل في جزئيته، نوضّحهما كما يلي: الواجهة الأمامية لتطبيق الهاتف Front-End الواجهة الأمامية للهاتف هي الجزء المرئي والتفاعلي من التطبيق الذي يتفاعل معه المستخدم، وعند استخدام مصطلح "مبرمج تطبيقات الهاتف"، فإننا غالبًا ما نقصد الجزء الأمامي من التطبيق، بحيث يكون هذا المبرمج مؤهلًا في اللغات، والتقنيات المستخدَمة لإنشاء هذه الواجهات، بحيث قد يكون وحده مطورًا للتطبيق، أو يشاركه أشخاص مختلفون في تصميم وتطوير الواجهات، فقد يتواجد في الفريق مصممو رسومات متخصصون مسؤولون عن إنشاء عناصر مرئية للتطبيقات مثل الرموز والخلفيات والألوان والسمات وأجزاء أخرى من التطبيق، في حالة أنواع معينة من التطبيقات مثل الألعاب مثلًا، وقد يضم الفريق مطوري الرسوم المتحركة. الواجهة الخلفية لتطبيق الهاتف Back-End بغضّ النظر عن النظام الأساسي للواجهة الأمامية أو طريقة التطوير المستخدمة ومدى جمال والتصميم، فإن تنفيذ التطبيق للوظائف المطلوبة منه تُعَد أكثر أهميةً للمستخدمين، وإلا ما الفائدة من تطبيق آلة حاسبة يبدو جيدًا، ويستخدم رموز وسمات وألوان رائعة، لكنه ينجز عمليات الحساب بطريقة خاطئة ومنافية للمنطق. نظرًا للأهمية الحاسمة للخدمات الخلفية لنجاح تطبيقات الهاتف، فإن لدى المطورين العديد من الخيارات المعمارية المهمة التي يجب عليهم الموازنة بينها واختيار أفضلها، من بينها الخدمات التي يجب أن ينشؤوها بأنفسهم، وأي الخدمات الخارجية المقدَّمة من طرف ثالث يجب أن يستفيدوا منها، وبعد ذلك يجب عليهم تشغيل وصيانة خدماتهم الخاصة أو إذا استفادوا من خدمات الطرف الثالث. خدمات تطبيقات الهاتف الرئيسية هناك المئات من الخدمات السحابية والجهات الخارجية التي يمكن لمطوري تطبيقات الهواتف الاستفادة منها لتسريع تطوير تطبيقاتهم وتسليمها، ومع ذلك فمن الصعب أن يتمكن المطور من إجمال وفهم كل هذه الخدمات، ولهذا بدلًا من ذلك، يجب على مطوري الهواتف البحث عن بيئة تطوير تسهّل عليهم دمج واستخدام القدرات المطلوبة الأكثر شيوعًا في تطبيقاتهم بسرعة وسهولة، مع الحفاظ على حرية الاستفادة من العديد من الخدمات الفردية المتاحة، وهذه الخدمات مصنفة كما يلي: خدمات أساسية إدارة إنشاء العضوية وتسجيل الدخول للمستخدمين. تسجيل الدخول عبر منصات التواصل الاجتماعي (تسجيل الدخول بحساب Facebook أو Twitter، إلخ). تحليل طريقة استخدام المستخدم للتطبيق ومتابعة سجل الأخطاء. الإشعارات الآنية/اللحظية. اختبار التطبيق على نفس الفئة من الأجهزة المستخدمة. خدمات البيانات التخزين السحابي. بيانات الحقيقية في الوقت الفعلي. منطق ووظائف التطبيق / وظائف السحابة. تعلم الآلة المحادثة الآلية (الرد التلقائي). التعرف على الصور والفيديو. التعرف على الكلام (تحويل النص إلى صوت، وبالعكس). الموازنة بين التطبيقات المذكورة لإنشاء تطبيقك الخاص من خلال ما سبق وتعرفت عليه، فما هو اختيارك من بين الطرق المذكورة أعلاه لإنشاء تطبيقك الخاص؟ يتردد المطور في استخدام الطريقة الأمثل لتطوير التطبيق، فقد يكون المطور ذو مهارات عالية لكن تطبيقه بسيط، أو العكس، فالمتغيرات في آلية اختيار طريقة التطوير كثيرة، ويتحتم على المطور الموازنة بينها. sنحاول من خلال المخطط التالي الإجابة على بعض التساؤلات التي تمر في خاطر المطور، ونخلُص من خلال الإجابات إلى طريقة التطوير المناسبة للتطبيق. إنشاء تطبيق أصيل هذه الطريقة هي المثلى، حيث تكون كل الخيارات للتطوير متاحة، وبلا شك ستُرضي كافة المستخدمين عبر تجربة مستخدم متكاملة، لكن يجب رصد ميزانية جيدة لها، إضافةً إلى زيادة عدد المطورين في فريق العمل لتشمل نظامي التشغيل Android وiOS، مع الأخذ بالحسبان الوقت الذي يتطلبه التطوير لإنشاء التطبيق وإطلاقه لمتجر التطبيقات وسوق العمل. إنشاء تطبيق متعدد الأنظمة الأساسية تُعَد هذه الطريقة حلًا وسطًا بين خيارات طرق تطوير تطبيقات الهواتف، فهي أقل تكلفةً موازنةً بالتطبيقات الأصيلة، مع أداء في مستوى جيد ومرضٍ للمستخدمين، إضافةً إلى كسب الوقت المستغرق في إنشاء نفس التطبيق لكافة أنظمة التشغيل. إنشاء تطبيق هجين ما تتميز به هذه الطريقة هو سرعة وقت تطوير التطبيق مع تكلفة متواضعة، وغالبا ما تستفيد الشركة الناشئة من إنشاء تطبيق هجين مثل حل تجريبي. إنشاء تطبيق ويب PWA رغم سرعة وقت تطوير التطبيق في هذه الطريقة، إلا أنها تُستخدم في حالات مخصصة، مثل تخطي الحاجة إلى متجر التطبيقات حيث يمكن الوصول إلى التطبيق من المتصفح، وكذا قلة الحاجة لاستخدام بيانات الإنترنت، إلى جانب إمكانية التصفح في وضع عدم الاتصال. خاتمة لقد تعرفنا في هذا المقال على تصنيف تطبيقات الهاتف، وصنّفنا طرق تطوير هذه التطبيقات في أربعة طرق، حيث وضحنا منهجية كل طريقة في إنشاء أو تطوير تطبيقات الهاتف، إضافةً إلى التركيز على بيان ميّزات كل طريقة وعيوبها، ثم تطرّقنا إلى الحديث عن تقسيمٍ لعملية تطوير تطبيق الهاتف، والتي تنقسم لفئتين أولاهما فئة تصميم واجهات التطبيق Front-End والتي تهتم بالشكل الجمالي لواجهات وصفحات التطبيق، والتي بدورها تراعي تجربة المستخدم وتعمل على تطويرها وتطويع التطبيق ليكون أسهل ما يكون للمستخدم؛ أما الفئة الثانية فتختص بتطوير وظائف وعمليات التطبيق وتسمى تطوير الواجهات الخلفية Back-End. وقد خُتم المقال بآلية توجه المستخدِم نحو اختيار الطريقة المناسبة في التطوير، متبوعةً برسم توضيحي عن المزايا التي يتطلبها المستخدم في التطبيق، والطريقة المثلى لتطوير هذه التطبيق. سنتحدث في المقال القادم عن الخطوة الأولى في تطوير تطبيقات الهاتف بالطريقة الهجينة، بالاعتماد على تقنيات الويب القياسية HTML5, CSS, JS من خلال إطار العمل أباتشي كوردوفا Apache Cordova وما تتطلبه من أدوات لتجهيز بيئة العمل والبدء بإنشاء أول تطبيق جوال من خلال كوردوفا. اقرأ أيضًا نظرة هيكلية عامة لمنصة Cordova أنشئ تطبيقك الأول في Cordova المدخل الشامل لتعلم تطوير الويب
  13. إذا كنت ستشتري سيارة غدًا، فبماذا ستفكر؟ بافتراض أن لديك ميزانيةً معقولة وبذلك لا نقصد السيارات الفارهة، فهل ستفكر في سيارة فورد أو بي إم دبليو أو ربما تسلا أو جنرال موتورز أو أودي أو جاكوار أو تويوتا؟ هناك الكثير من التصميمات المختلفة التي قد تحتويها قائمتك المختصرة، ولكنها وبدون أدنى شك ستحتوي بعض السيارات التي صنعتها إحدى الدولتين اللتين تُعَدان في صدارة صناعة السيارات، وهما ألمانيا واليابان. تنتج عدة شركات مثل بي إم دابليو ومرسيدس وفولكس فاكن وأودي وهوندا وتويوتا ومازدا ونيسان، وهي سيارات تحظى بشعبية في جميع أنحاء العالم، ولكن ما الذي مكَن هذه الشركات المصنِعة من التقدم على منافسيها الفرنسيين والإيطاليين والأمريكيين والبريطانيين والكوريين؟ لماذا اختيرت سياراتهم من العديد من السائقين؟ يكمن جزء من الإجابة في وجود هوَس وطني مشترك أعطى الشركات المصنعة في هذين البلدين ميزة الجودة المتأصلة بعمق في الثقافة الألمانية واليابانية. تشتهر شركات تصنيع السيارات اليابانية والألمانية بمنتجاتها عالية الجودة مثل هذه الطرازات من BMW ومرسيدس لا يُعَد امتلاك سيارة رائعة المظهر وسلسة القيادة الأمرًا جيدًا إذا كانت سيئة التصميم ومركبةً بطريقة غير احترافية، فهي على الأغلب ستتعطل باستمرار، وتُتركك على جانب الطريق في انتظار شاحنة سحب. عندما لا يلبي المنتج توقعات الجودة لعملائه يصبح غير ناجح، وهذا لا ينطبق فقط على المنتجات المادية مثل السيارات، ولكن أيضًا على المنتجات الرقمية. حيث سيُلغى تثبيت أي تطبيق رديء الجودة في المستقبل القريب، كما سيتوقف استخدام مواقع الويب رديئة الجودة. إذًا كيف نحافظ على مستوى الجودة المناسب دون إبطاء عملية الإنتاج ودون زيادة التكاليف زيادةً كبيرة؟ يجب أن تحكم أولًا على جهودك المبذولة في التصميم والبحث، للتأكد من أنك تبذل المستوى المناسب من الجهد المطلوب للفوز، وفي التالي، يجب أن تستخدم قائمة مراجعة تجربة المستخدم للتأكد من أن كل إصدار يخرج من أبواب المصنع الافتراضي، يفي بمعايير تجربة المستخدم المتفق عليها. سنتحدث تاليًا عن قائمة مراجعة تجربة المستخدم، وكيفية إنشائها وكيفية استخدامها للمساعدة في الحفاظ على المستوى الصحيح من الجودة. ما هي قائمة مراجعة تجربة المستخدم تتشابه طريقة الفحوصات التي يجب أن تمر بها كل سيارة صُنعت في الشركة المصنعة للسيارة من أجل فحص الجودة مع مجموعة متفق عليها من اختبارات تجربة المستخدم للتحقق من كل إصدار والتي ستُغطي عادةً مجالات، مثل: سهولة الاستخدام، والتصميم المرئي، والمحتوى، وإمكانية الوصول، وتجربة المستخدِم على الهاتف المحمول؛ إلى جانب تلبية أي معايير قبول وظيفية مثل قصص المستخدمين، كما يجب أن تفي الإصدارات بقائمة مراجعة تجربة المستخدم، ولا يمكن إصدار ما لا يستوفي جميع متطلبات تجربة المستخدم الضرورية. تحافظ قائمة مراجعة تجربة المستخدم على مستوى الجودة المطلوب أولًا من خلال حث الفريق على الاتفاق على مستوى الجودة الذي يجب أن يكون عليه، وثانيًا عن طريق مساءلة أنفسهم جماعيًا أمامه. تُوجد في العادة معايير يجب الوفاء بها، مثل: متطلبات العلامة التجارية الرئيسية، وإمكانية الوصول، واتباع مبادئ التصميم المتفق عليها. إنشاء قائمة مراجعة تجربة المستخدم يجب الموافقة على قائمة مراجعة تجربة المستخدم وعدم فرضها، كما يجب البدء من الحد الأدنى لمتطلبات تجربة المستخدم للإصدار والبناء عليها. ويُعَد إنشاء قائمة طويلة من المتطلبات، من الأخطاء المنتشرة، حيث سيصعب إيفاء جميع المتطلبات، وستخلق مأزقًا كبيرًا عند الإصدار. تُعِد ورشة عمل الفريق نقطة انطلاق جيدة لإنشاء قائمة مراجعة لتجربة المستخدم، والهيكل التالي هو مثال للهيكل الناجح: قبل إنشاء ورشة العمل، اجمع أمثلة قوائم مراجعة تجربة المستخدم واطلب اقتراحات من الفريق. احصل على المتطلبات اللازمة لتجربة المستخدم من أجل قائمة المراجعة. ضع متطلبات تجربة المستخدم في مجموعات، مثل: قابلية الاستخدام، والتصميم المرئي، وإمكانية الوصول، وإزالة أي نُسخ مكررة. أجرِ تصويتًا على متطلبات تجربة المستخدم التي يجب اتباعها. أجرِ تصويتًا على متطلبات تجربة المستخدم التي ينبغي اتباعها. بمجرد الموافقة على النسخة الأولية، يجب تفحُص قائمة المراجعة بانتظام وتعديلها إذا لزم الأمر. استخدام قائمة مراجعة تجربة المستخدم من الخطأ الاقتصار على فحص قائمة مراجعة تجربة المستخدم قبل الإصدار مباشرةً، فهذا لا يترك وقتًا كافيًا لمعالجة أي طارئ، كما لا يساعد في إعطاء طابع الجودة اللازم خلال عملية التطوير والتصميم، لهذا يجب استخدام قائمة مراجعة تجربة المستخدم للمساعدة في مراجعة التصميمات الجديدة، ومراجعة العمل أثناء تطويره، وأيضًا للمساعدة في الإجابة عن كل هذه الأسئلة المهمة: هل الفريق سعيد بالمضي قدمًا في هذا الإصدار؟ تُعَد جلسة اختبار تجربة المستخدم الاستكشافية طريقةً رائعةً لمراجعة العمل قيد التطوير وفقًا لقائمة مراجعة تجربة المستخدم. مثال على قائمة مراجعة تجربة المستخدم لقد أوجزت مثالًا لقائمة مراجعة تجربة المستخدم، والآن سيقرر الفريق ما إذا كانت العناصر ضروريةً، أو ينبغي فقط استخدامها على وجه الاستحسان، وما إذا كانت هناك أي متطلبات لتجربة المستخدم يجب إضافتها. تشمل قائمة المراجعة ما يلي: سهولة الاستخدام التصميم المرئي المحتوى إمكانية الوصول الهاتف المحمول سهولة الاستخدام من المهم أن تكون واجهة المستخدم قابلةً للاستخدام، لهذا ركّز على قابلية الاستخدام في سياق المهام الرئيسية للمستخدِم، والوظائف التي يجب أن ينفذها. إليك بعض الأسئلة المهمة المتعلقة بقابلية الاستخدام والتي يجب طرحها: هل كيفية إكمال المهام الرئيسية واضحة؟ هل سيعرف المستخدمون كيفية إكمال المهام الرئيسية؟ هل من الواضح ما يجب عليهم فعله، وكيفيته؟ هل واجهة المستخدم بسيطة ومنظَمة؟ يجب ألا تكون واجهة المستخدم مزدحمةً بالعديد من عناصر التحكم والمعلومات بل يجب أن تنظَّم بطريقة يسهل فهمها. هل واجهة المستخدم متناسقة؟ يجب أن تكون مكونات واجهة المستخدم وأنماط التصاميم فيها متناسقةً بطريقة تحقق الانسجام. هل استُخدمت المعايير والأنماط المعروفة في واجهة المستخدم؟ يجب أن تستخدِم واجهة المستخدم المعايير والأنماط التي سيكون المستخدمون على دراية بها حيثما أمكن ذلك. هل الميزات والمعلومات المهمة متوفرة؟ لا يجب إخفاء الخصائص والمعلومات المهمة أو فقدها، لأن المستخدم غير مضطر لحفظ هذه المعلومات في رأسه. هل مهام سير العمل المرغوبة مدعومة؟ يجب أن تكون مهام سير العمل متسقةً مع ما يتوقعه المستخدمون وأن يكون مكان وجود المستخدِم ضمن سير العمل واضحًا وأن تكون الخطوات التالية معروفة. هل هيكل النظام و النموذج الذهني المستخدمان واضحان؟ يجب أن يكون هيكل التطبيق أو موقع الويب واضحًا وسهل الفهم، ويجب أن يكون النموذج الذهني الذي يستخدمه المستخدمون واضحًا. هل التنقل بديهي ومتسق؟ يجب أن يكون التنقل بديهيًا ومتسقًا ويستخدم معايير وأنماط واجهة المستخدم المعروفة. هل تتوفر التغذية الراجعة السريعة والمناسبة؟ يجب تقديم ملاحظات سريعة ومناسبة بعد إجراء المستخدم، حيث يجب إعلام المستخدم مسبقًا عند تنفيذه لإجراء لا يمكن التراجع عنه مثل الحذف. هل العبارات التي تحث المستخدم على العمل واضحة؟ يجب أن تكون الروابط والأزرار واضحة، وأن تحتوي على تسميات وصفية، وتظهر بأنها قابلة للنقر. هل المشاكل والأخطاء المحتملة تُعالج بطريقة جيدة؟ يمكن للمستخدمين توقع المشكلات المحتملة وحلها والتعرف على الأخطاء عند حدوثها وتشخيصها ومعالجتها. هل المساعدة والتعليمات الكافية متوفرة؟ يجب أن تكون المساعدة والتعليمات متاحةً عند الضرورة، فإذا احتاج المستخدمون إلى مزيد من المساعدة أو كانت لديهم أسئلة مهمة، فيجب أن يكون واضحًا إلى أين يذهبون. هل واجهة المستخدم فعالة وموثوقة؟ قد يؤدي ضعف الأداء والموثوقية إلى إعاقة تجربة المستخدم إعاقةً كبيرة، فعلى سبيل المثال إذا استغرقت الصفحة وقتًا طويلًا للتحميل أو لم يحدث شيء بعد التفاعل، فيجب تحذير المستخدمين بشأن العمليات البطيئة، وتقديم التغذية الراجعة للإشارة إلى كيفية تقدم العملية. هل واجهة المستخدم متوافقة مع مبادئ التصميم؟ لابد من وجود مبادئ تصميم ثابتة تعمل مثل بوصلة لمنتجك. التصميم المرئي من المهم أن تكون واجهة المستخدم مصممةً جيدًا بصريًا إلى جانب كونها قابلةً للاستخدام. إليك بعض الأسئلة المهمة حول التصميم المرئي والتي ينبغي طرحها: هل التصميم متوافق مع نظام العلامة التجارية وإرشادات التصميم؟ يأمل الكاتب أن تكون إرشادات نظام التصميم أو العلامة التجارية في مكانها الصحيح لضمان وجود علامة تجارية وتجربة مستخدم متسقة. هل الأنماط والألوان والخطوط والصور والشعارات والأيقونات متوافقةً مع الإرشادات؟ هل تُستخدم لوحة الألوان؟ يجب أن يستخدم التصميم لوحة ألوان لضمان تناغم الألوان المستخدمة، وهناك عدد من الأدوات الرائعة التي يمكن استخدامها لإنشاء لوحة ألوان، مثل: Colourcode، وColormind، وCoolors. هل تُستخدم الشبكة للمساعدة في المحاذاة؟ تساعد المحاذاة في تحقيق النظام والتنظيم داخل التصميم، فالنصوص ذات المحاذاة الصحيحة للهامش على الصفحة أسهل في القراءة والفهم، كما يساعد التخطيط على أساس الشبكة على تحقيق محاذاة مكونات واجهة المستخدم. هل التسلسل الهرمي المرئي للتصميم واضح؟ يجب استخدام الألوان، والأنماط، والأشكال، والحجم، لإبراز أهم عناصر التصميم. هل التصميم بسيط؟ يجب ألا تحتوي واجهات المستخدم على معلومات أو مكونات غير ضرورية، حيث يتنافس كل عنصر من عناصر واجهة المستخدم على جذب انتباه المستخدم، لذلك كلما كان التصميم أبسط كان ذلك أفضل. هل التصميم متسق؟ يعتمد الاتساق داخل التصميم على تكرار الألوان والأشكال والأنماط وأنماط التصميم، كما يساعد الاتساق المستخدمين على فهم طريقة تقديم المعلومات لهم. المحتوى من المهم أن يكون المحتوى، مثل: نص المساعدة، والتصنيفات، ورسائل الخطأ، والصور؛ موجزًا وسهل الفهم ومفيدًا للمستخدمين. إليك بعض الأسئلة المهمة حول المحتوى التي ينبغي طرحها: هل المحتوى متوافق مع إرشادات أسلوب الكتابة؟ في حالة وجود دليل لأسلوب الكتابة، فعلى واجهة المستخدم أن تتبعه، مثل: تصميم النص، ونبرة الصوت، والتهجئة والغلاف، والمصطلحات، وما إلى ذلك. هل نبرة الصوت المستخدَمة مفيدة؟ هل نبرة الصوت المستخدمة مفيدة أم أنها تتحدث مع المستخدمين بطريقة غير لائقة؟ فمن الأفضل أن يتكلم المستخدم مع المستخدم الآخر كما لو أنه يحدِثه وجهًا لوجه، ولكن بتفويض شخص يمكنه المساعدة بطريقة فعالة. هل المحتوى مفيد؟ هل يساعد المحتوى المستخدم في إنجاز المهمة المطلوبة؟ إذا لم يكن المحتوى مفيدًا، فعلى المستخدم مراجعته أو إزالته تمامًا. هل المحتوى موجز؟ كلما كان المحتوى موجزًا، كان ذلك أفضل. لهذا يجب معرفة هل المحتوى كثير الكلام؟ وهل يمكن إزالة المعلومات الزائدة؟ هل المحتوى سهل الفهم؟ من المهم استخدام لغة بسيطة وسهلة الفهم، وتجنَب الجمل المعقدة والمصطلحات والاختصارات التي قد لا يكون المستخدمون على دراية بها. هل المحتوى منظم جيدًا؟ هل هناك توافق جيد بين بنية المحتوى و المهمة التي يتعين على المستخدم إنجازها؟ على سبيل المثال، هل تستخدم الوثائق هيكلًا يعتمد على المهمة أو على خصائص أخرى؟ وهل تُستخدم الأسئلة الشائعة لِجعل المحتوى أو الهيكل الذي يعتمد على المهام أكثر ملاءمة؟ هل المحتوى قابل للفحص؟ هل العناوين الوصفية والتسميات والعبارات التي تحث المستخدم على اتخاذ إجراء مستخدَمة لتسهيل فحص وفهم المحتوى المتاح؟ هل الأنماط والمحاذاة والتقارب والتباعد مستخدمة بطريقة جيدة لمساعدة المستخدمين على تفسير المحتوى المتاح؟ هل المحتوى جدير بالثقة؟ هل المحتوى دقيق ومُحدَّث وخالٍ من الأخطاء، مثل: الأخطاء المطبعية، والإملائية؟ إمكانية الوصول لا تتعلق إمكانية الوصول فقط بعدم القدرة، لأن إمكانية الوصول الجيدة تمكِّن جميع المستخدمين من الحصول على منتجات بسيطة وقابلة للاستخدام وشاملة. إليك بعض الأسئلة المهمة حول إمكانية الوصول: هل معايير الويب والنظام الأساسي مستخدَمة؟ يجب استخدام معايير الويب والنظام الأساسي المعترف بها، وكذلك عناصر التحكم في واجهة المستخدم وغيرها من العناصر، من أجل دعم خيارات إمكانية الوصول إلى النظام الأساسي واستخدام التقنية المساعدة. هل يُستخدم ترميز دلالي جيد بما في ذلك اللغة وأي بيانات وصفية؟ يوفر استخدام الترميز الدلالي الجيد والبيانات الوصفية المناسبة للمتصفحات والتقنية المساعدة المعلومات الضرورية حول عناصر التحكم في واجهة المستخدم والمحتوى.، لهذا من المهم تحديد اللغة بحيث يمكن لقارئات الشاشة تطبيق النطق المناسب. هل يمكن إكمال المهام باستخدام لوحة المفاتيح فقط؟ يجب أن يتمكن المستخدم غير القادر على استخدام الفأرة أو لوحة اللمس من إكمال مهامه باستخدام لوحة المفاتيح فقط، ويجب أن يكون استخدام الجدولة والتنقل عبر لوحة المفاتيح والتفاعل مع عناصر تحكم واجهة المستخدم ممكنًا باستخدام الأزرار والروابط وعناصر النموذج. هل المحتوى وترتيب التركيز منطقيان، وهل التركيز الحالي واضح؟ يجب أن يكون المحتوى بما في ذلك تخطيط النماذج منطقيًا عند استخدام التقنية المساعِدة مثل قارئ الشاشة، ويجب أن يكون ترتيب التركيز منطقيًا وأن يكون التركيز الحالي واضحًا عند الجدولة بين العناصر. هل يوجد تباين كافٍ لعرض المحتوى؟ يجب أن يكون هناك تباين كافٍ للمستخدمين للتمييز بين النص والصور والمحتويات الأخرى، كما يجب أن لا تقل نسبة التباين للنص الكبير عن 1:3 بين ألوان المقدمة والخلفية؛ أما بخصوص لنص بالحجم الطبيعي، فيجب أن تكون نسبة التباين 1:4.5على الأقل. يمكن لأداة مثل مدقق التباين WebAIM توفير نسبة تباين لألوان المقدمة والخلفية. هل النص قابل للقراءة ويمكن تغيير حجمه؟ يجب تحديد حجم النص وتصميمه للتأكد من أنه قابل للقراءة، ويجب استخدام حجم لا يقل عن 12 نقطة (16 بكسل). حيث قد تكون خطوط Sans serif مثل Arial أسهل في القراءة من خطوط Serif مثل Times New Roman، ويجب أن يكون المستخدمون قادرين على تغيير حجم النص باستخدام المتصفح أو خيارات الوصول. هل يمكن إكمال المهام عند تغيير نمط المحتوى أو إزالته؟ قد يكون لدى بعض المستخدمين عناصر من النمط غُيرت أو أُزيلت لتحسين وضوح المحتوى، مثل: تطبيق نمط عالي التباين، أو زيادة حجم النص بطريقة ملحوظة، فمن المهم في مثل هذه الحالة أن يظل بإمكان المستخدمين إكمال المهام. هل المعلومات الإضافية متوفرة لدعم استخدام اللون؟ يجب ألا تعتمد واجهة المستخدم على استخدام اللون وحده لنقل المعلومات، بحيث يستفيد المستخدمون المصابون بعمى الألوان أو ضعف البصر أو الذين يستخدمون الجهاز في ضوء الشمس المباشر من المعلومات الإضافية لدعم استخدام الألوان، مثل: النصوص، والأيقونات الإضافية. هل العناصر التفاعلية واضحة ومع مشغلات وأهداف مناسبة؟ من المهم أن تكون العناصر التفاعلية، مثل: الأزرار، والروابط، وعناصر تحكم واجهة المستخدم، واضحةً ولها أهداف فعالة، كما يجب أن تكون المسافة بين العناصر كافية، إلى جانب ضرورة دعم العناصر المشغلات المناسبة، مثل: النقرات، وضغطات المفاتيح. هل استُخدِمت العناوين الوصفية والعناوين الرئيسية والروابط والتسميات؟ يجب استخدام العناوين الوصفية، والعناوين الرئيسية، والروابط، والتسميات، للتأكد من أن المحتوى له معنى خارج السياق، فهذا مهم لقارئ الشاشة ومستخدمي التكبير الذين قد يفسرون المحتوى خارج النظام المعتاد، كما يجب تجنب النص غير الواصف للروابط، مثل: انقر هنا، أو قراءة المزيد. هل تفتح الروابط في نفس النافذة؟ قد يكون فتح الروابط في نافذة جديدة مربكًا للأشخاص الذين يجدون صعوبةً في إدراك المحتوى المرئي، وكذا بالنسبة لبعض الأشخاص الذين يعانون من إعاقات إدراكية، لذا فمن الأفضل فتح الروابط في نفس النافذة، وفي حالة عدم إمكانية ذلك، فيجب إخطار المستخدمين بأنه سيُفتح رابط في نافذة جديدة. هل البدائل المكافئة للصور والصوت والفيديو متاحة؟ إذا لم تكن الصورة زخرفيةً بحتة، فيجب توفير نص بديل، ولا ينبغي أبدًا استخدام الصور بدلًا من النص، كما يجب أن تكون التنسيقات البديلة، مثل: الترجمة، ولغة الإشارة، والوصف الصوتي، والنصوص؛ متاحةً للمحتوى الصوتي والمرئي. هل يمكن إيقاف تشغيل مقاطع الفيديو أو الصوت أو الرسوم المتحركة التي تُشغل تلقائيًا؟ يمكن أن يكون تشغيل مقاطع الفيديو أو الصوت أو الرسوم المتحركة التي تُشغل تلقائيًا، معطلًا لمستخدمي قارئ الشاشة ومربكًا، أو حتى مزعجًا لبعض الأشخاص ذوي الحساسية الإدراكية أو الحسية. لهذا تأكد من إمكانية إيقاف مقاطع الفيديو والصوت والرسوم المتحركة، وتجنب المحتوى الذي يومض أكثر من 3 مرات في الثانية الواحدة لأن هذا قد يسبب عدم الراحة، أو الغثيان، أو حتى حدوث نوبات للبعض. وليكون الأمر أكثر مثاليةً، فيجب أن يكون هناك خيار إلغاء الاشتراك للمستخدمين في محتوى التشغيل التلقائي. هل الإخطار بتحديثات الصفحة والتحكم بالتحديثات مُتاحان؟ يجب إخطار المستخدمين قبل التحديث التلقائي للصفحة لأن تحديثات الصفحة بأكملها قد تكون مربكةً لبعض الأشخاص مثل أولئك الذين يستخدمون قارئ الشاشة. الهاتف المحمول إن الاستخدام الأساسي للمنتج يكون على سطح المكتب، ومع لك فمن المهم تقييم قابلية استخدامه على الأجهزة الأخرى. حيث يجب أن يكون المستخدم قادرًا على إكمال المهام الرئيسية على جهاز محمول إكمالًا مثاليًا. وإليك بعض الأسئلة المهمة حول تجربة المستخدِم في الأجهزة المحمولة: هل يمكن إكمال المهام الرئيسية على جهاز المحمول؟ قد لا تكون تجربة المستخدم في الهاتف المحمول أو الجهاز اللوحي مثالية، ولكن يجب أن يكون المستخدمون قادرين على إكمال المهام الرئيسية، وأن يتوفر أيضًا نفس المحتوى والوظائف المتوفرة لمستخدمي سطح المكتب لمستخدمي الأجهزة المحمولة. هل المحتوى يستجيب ويتعدَل دون فقدان المعلومات؟ يجب أن يستجيب المحتوى ويتعدَل عبر أحجام الشاشات المختلفة، دون فقدان للمعلومات أو الوظائف، كما يجب تجنب التمرير الأفقي حيثما أمكن ذلك. هل يمكن للمستخدمين التبديل بين الاتجاه الرأسي والأفقي؟ من الناحية المثالية، يجب أن يكون المستخدم قادرًا على استخدام اتجاهه المفضل (عادةً ما يكون عموديًا)، ويجب أن يكون المحتوى نفسه متاحًا للاتجاه الرأسي والأفقي، وإذا كان المنتج يعمل فقط في اتجاه محدد، فيجب إبلاغ المستخدم بذلك. هل المحتوى قابل للقراءة على الجهاز المحمول؟ يجب أن يكون المحتوى بما في ذلك النصوص والصور قابلًا للقراءة على الجهاز المحمول، وألا يقل حجم النص عن 16 بكسل، ولا يقل ارتفاع السطر عن 1.5. يجب تطبيق التصميم المثالي للهاتف المحمول لتحسين تجربة المشاهدة عليه. هل العناصر التفاعلية واضحة والحجم والمسافات كافية عند النقر؟ من المهم أن تكون العناصر التفاعلية، مثل: الأزرار، والروابط، والتنقل؛ واضحة ويمكن النقر عليها، ويجب أن يكون التباعد والحجم كافيين للنقر بالحجم الملائم للمس الأزرار، وللأدوات الأخرى، يجب ألا يقل عن 1 سم × 1 سم (حوالي 44 بكسل × 44 بكسل). ترجمة -وبتصرّف- للمقال How to maintain quality with a UX checklist. اقرأ أيضًا دور المنهج العلمي والحدس في تجربة المستخدم. النسخة العربية الكاملة لكتاب مدخل إلى تجربة المستخدم (User Experience - UX).
  14. هل يمكن الاستفادة من قوى الحدس والتفكير العلمي التي تبدو متعارضة من أجل تغذية استكشافات تجربة المستخدم الجديدة والمبتكرة؟ يحب الكاتب أن يفكر بذهنه بطريقة تشبه لعبة كرة الطاولة، حيث يمثل الإبداع والحدس نصف الطاولة، بينما يمثل المنطق والاستدلال النصف الآخر منها، فما يترتب على هذه الطريقة هو سيل هائل من الأفكار. يؤكد الكاتب بأن زملاءه من باحثي تجربة المستخدم يمكنهم فهم هذه الفكرة وأن النظام في تجربة المستخدم بطبيعته الأولية، يستفيد كثيرًا من عقلية رياضة كرة الطاولة. إذا كان هذا صحيحًا بالفعل، فلماذا تنتشر إذًا فكرة وجود معضلة بين الحدس والتفكير العلمي؟ وهل يمكن أن تتواجد هاتين الاستراتيجيتين في وقت واحد من أجل اكتساب المعرفة القابلة للتنفيذ؟ إن الكاتب ليس وبأي حال من الأحوال أول شخص يستكشف هذين البندين، لكنه يود مشاركة بعض الأفكار الرئيسية من بحثه ليكون في صالح الحدس العلمي لتجربة المستخدم. سنشرح الأسئلة الموجودة بالأعلى خطوةً بخطوة من خلال مناقشة المجالات الرئيسية التالية: ما معنى المنهج العلمي؟ وما هي مزاياه وعيوبه؟ ما هو الحدس؟ ما هي مزاياه وعيوبه؟ التأثير الثقافي الغربي والتقليدي. التطبيق العملي للحدس العلمي في عمليات تجربة المستخدم. الاستنتاج. ما معنى المنهج العلمي؟ المنهج العلمي هو أحد العمليات المفهومة على نطاق واسع وهو الحصول على المعرفة في موضوع محدد بحيث تكون هذه المعرفة قائمة على الأدلة، فهو عبارة عن عملية جمع وتقييم الأدلة التجريبية بعناية ومنهجية من أجل اختبار الأفكار والإجابة على الأسئلة، يركز المنهج العلمي وبشدة على المنهج التجريبي وعلى العقلانية حيث يتقبل بسهولة إمكانية وجود أخطاء في الاستنتاجات السابقة وذلك عند توفُر المزيد من البيانات التي توضح وجود فرضية أكثر وضوحًا وشمولية. ومما سبق يتضح أن المنهج العلمي يتضمن عادةً التسلسل التالي: الفرضية: وهي التي لها قابلية الاختبار الضرورية لتحديد رؤية قابلة للتنفيذ في الدراسة الناجحة، كما أن الفرضيات المحددة والقابلة للقياس تحدد مقاييس النتائج الصحيحة وطرق البحث التي يلزم استخدامها والمهام اللازمة لاختبار الفرضيات. الإجرائية: تتضمن هذه الخطوة تحديد المقاييس والأساليب والمهام المقابلة بطريقة منهجية، وذلك لجمع البيانات الصحيحة وقياس سلوك المستخدم المطلوب. الاختبار والمراقبة: تتمثل الخطوة التالية في مراقبة سلوك المستخدم وتسجيله وتحديد مقداره من حيث الإجراءات التي نفذَها والمواقف التي تبناها أثناء أداء المهام المحددة في إطار محاكاة محكم أو في واقع الحياة. التحليل: تُجمع البيانات من القنوات المختلفة من أجل التحليل، والحساب، والموازنة، وتطبيق الاختبارات الإحصائية الصحيحة، وذلك لتحديد الرؤى الرئيسية التي ستثبت صحة الفرضيات الأولية أو تبطلها، وتساعد أصحاب المصالح على اتخاذ قرارات حاسمة. محددات الأسلوب العلمي محددات المنهج العلمي هي: يصعب استخدام المنهج العلمي في كثيرٍ من الأحيان، حيث قد يتطلب وقتًا طويلًا، وتخطيطًا لوجستيًا، ومصادر متعددة. قد تؤدي بيئة الاختبار التي تُراقب بشدة إلى استخلاص رؤى مؤقتة، وغير صالحة لبيئة العالم الحقيقي التي تحتوي على ترابطات وعلاقات معقدة. قد تؤثر التحيزات في تسجيل البيانات الموضوعية على موثوقية البيانات التي جُمعت وبالتالي على تقييمها. -تأثيرهوثورن، حيث يظهر تحيز المراقِب أيضًا عندما يعرف الشخص أنه يُفحص، مما يجعله يتصرف بطريقة مختلفة عن الطريقة التي يتصرف بها في عادته. يقتصر استخدام المنهج العلمي على معالجة الأسئلة التجريبية فقط، ونظرًا لصعوبة قياس ما نريد قياسه في بعض الأحيان، فإننا نطور نوعًا من المقاييس البديلة التي تحقق أفضل أداء ممكن. يُعَد المنهج العلمي محايدًا في الحكم على القيمة أو الأخلاق، فهل الأشياء جيدة أم سيئة؟ عادلة أم غير عادلة؟ جميلة أم قبيحة؟ شرعية أم غير شرعية؟ أو كيف يجب أن يكون العالم؟ غالبًا ما تكون معرفة الحالة المزاجية للمستخدم و دوافعه أمرًا صعبًا، والتي تحتوي على رؤى عميقة حول الإجراءات والمواقف الناتجة. ما هو الحدس يشعر الإنسان في لحظةٍ ما بشعور الكشف المفاجئ ويصرخ "أها"، فهو شعور غريزي يحدث في المواقف المحيرة أو غير المنطقية. لقد اشتُقّ مصطلح الحدس من الكلمة اللاتينية intuer وتعني رؤية الداخل، فهي الطريقة في اكتساب الخبرة والمعرفة ولكن دون الملاحظة أوالاستدلال، إذ يأتي الانطباع الشخصي البديهي بوجه عام، بعدة طرق، وهي: الاستبصار (الرؤية الواضحة)، والإنصات (الاستماع الجيد)، وما يعرف بالكلارسينتيس Clairsentience أي الشعور الواضح، فالحدس هو عملية غريزية وغير مدروسة تساعدنا في اتخاذ قرارات مصيرية في ثواني معدودة، ووفقًا لما وصفه دانيال كانيمان فإن نظام التفكيرالأول هو المسؤول الرئيسي عن تطور الحدس، وهو يزيد من فرصة بقائنا على قيد الحياة. يوضح مشهد من القصص المصورة اليابانية initial D كيف يتألق الحدس في المواقف الحساسة للوقت، ومن خلال مساعدة العقل، يتعامل الحدس مع سلسلة من المحفزات الخارجية، بحيث يتفاعل مع المحفزات ويراقب الردود المقابلة له، لهذا فهو لا يُعَد عمليةً غير عقلانية، أو غير منطقية، أو ليس له أساس، أو لا يحتوي على البيانات الجديرة بالثقة. الحدس هو عملية مستمرة وشاملة، يستفيد من المعرفة والتجارب السابقة لربط النقاط، وتحديد الأنماط التي لا تراها عادةً الحواس المحيطة، والتي يتعذر تفسيرها عن طريق العقل. محددات الحدس يذكر الكاتب كانيمان في كتابه "التفكير السريع والبطيء Thinking, Fast and Slow"، أنه لكي يعمل الحدس، يجب استيفاء ثلاثة شروط، وهي: الترتيب المنظم أي أن المتغيرات في بيئة معينة لا تتغير فجأةً. الكثير من الممارسة مع وجود خبرة سابقة. ردود فعل لحظية، أي عليك أن تعرف على الفور ما إذا كان ما فعلته هو خطأً أم صواب، فقد وجدت دراسة أجراها جويل بيرسون لقياس الحدس، أن المعلومات التي يُدركها الدماغ بطريقة حدسية تساعده في اتخاذ القرار فيما إذا كانت هذه المعلومات تحمل بعض القيمة، أو مجرد أدلة إضافية لا تتجاوز ما يمتلكه الناس بالفعل في أذهانهم الواعية. يقول الشرط الأول للكاتب كانيمان أن العمل سريع الخطى، والمتغير باستمرار لايحقق الترتيب المنتظم. إن التعليمات والتوجيهات من الإدارة العليا معرضة للتغير باستمرار، وتكثر الأدلة التاريخية الدالة على مدى التقلب في الأجزاء المعقدة والمترابطة الموجودة في الأسواق العالمية. يُكتسب الحدس من الخبرة السابقة، ولا يمكن الاستفادة من موقف معين إلا إذا واجه المرء نفس الموقف مرةً أخرى، ففي حالة الافتقار إلى خبرة من موقف مماثل سابق، فسيصبح من الضروري تعميم التجربة السابقة من أجل تخمين الحدث التالي. بالنسبة لشرط كانيمان الثالث، فإن ردود الفعل اللحظية ضرورية للحدس، ولكن مرةً أخرى، تتكشف الآثار المترتبة على قرارات العمل مع مرور الوقت وليس في غضون ساعات. وعلى عكس الأنظمة التي تعتمد على المنطق، فإن الحدس لا يستطيع عمل تنبؤات طويلة المدى. وفقاً لكانيمان فإن الحدس لا يستطيع عمل تنبؤات عالية الدقة. لا يمكن توليد معرفة جديدة عن طريق التلاعب بالنظرية الموجودة فعليًا، حيث لا يوجد شيء يماثل النظرية. إن الاعتماد على الحدس يزداد سوءًا عندما يميل الناس إلى المبالغة في تقدير دقة ما يعرفونه. تأثير الثقافة الغربية والتقليدية هل يمكن أن تكون عقلية رياضة كرة الطاولة الخاصة بالكاتب هي نتيجة نشأته في بيئة هندية تقليدية بجانب اندماجه مع التعليم الغربي؟ على المستوى الكلي إن الاطلاع على تطور عمليات البحث عن المعرفة وصنع القرار من منظور ثقافي، يثير بعض الأفكار الدالة على الصراع الملحوظ بين الطريقة العلمية والحدس، يقدِم فولفيو ماتزوتشي في ورقته لمحةً عامةً وموجزةً عن الاختلافات الأساسية بين الاثنين: يشتهر العلم الغربي الذي يتميز بجذوره العميقة في الفلسفة اليونانية القديمة وعصر النهضة، بأنه موضوعي. تتصل المعرفة التقليدية بالعاطفة، وقد طورت مفهومًا جديدًا للبيئة يؤكد على الطابع التكافلي المعقد بين الإنسان والطبيعة. يفضِل العلم الغربي الأساليب التحليلية والاختزالية على عكس النظرة الأكثر حدسيةً وشمولية، والتي غالبًا ما توجد في المعرفة التقليدية. العلم الغربي هو علم وضعي ومادي على عكس المعرفة التقليدية، التي هي روحية ولا تميز بين الأمور التجريبية والأمور المقدسة. العلم الغربي هو علم موضوعي وكمي على عكس المعارف التقليدية الذاتية والنوعية. يعتمد العلم الغربي على انتقال المعلومات بطريقة أكاديمية وتعليمية، في حين أن المعارف التقليدية غالبًا ما تُنقَل شفهيًا من جيل إلى جيل. يعزل العلم الغربي كائنات الدراسة عن سياقها الحيوي، من خلال وضعها في بيئات تجريبية بسيطة يمكن التحكم بها، مما يعني أيضًا أن العلماء يفصلون أنفسهم عن الطبيعة التي هي موضوع دراساتهم. وعلى النقيض من ذلك، تعتمد المعرفة التقليدية دائمًا على السياق والظروف المحلية الخاصة بها. تعجز أنظمة المعارف التقليدية عن تفسير الواقع على أساس مفهوم خطي يمثل السبب والنتيجة، بل تفسرها على أنها عبارة عن عالم مكون من مجموعة من الدورات متعددة الأبعاد والتي تكون فيها جميع العناصر جزءًا من شبكة متشابكة ومعقدة من التفاعلات. على المستوى الجزئي يقول ملخص الكوجيتو Cogito: أنا أفكر، إذًا أنا موجود، فقد أصبح البيان الشهير الذي زعمه رينيه ديكارت عنصرًا أساسيًا في الفلسفة الغربية. حيث أكد ديكارت أن عملية الشك في وجود المرء، يُعَد دليلًا على وجود العقل الخاص بالفرد. ومع ذلك، فقد تعامل العلماء مع الدماغ ووظائف الدماغ بطريقة فكرية على أنهما آخر حدود العلم الحديث وذلك لفترةٍ طويلة. حيث قال مايكل تار -وهو المدير المشارك لمركز كارنيجي ميلون للأسس العصبية للإدراك-: من ناحية أخرى، تولي المجتمعات الشرقية القليل من الاهتمام للدِماغ والتفكير مثل قاعدة أساسية للتجربة الإنسانية، بينما اقتصرت أنظمة التعليم والعلوم الحديثة إلى حد كبير على وظيفة الذكاء، ويؤدي الاستخدام المفرط لوظيفة واحدة مثل أي نظام معقد آخر إلى إجهاد هذا النظام. يعرِّف أدب اليوغا أيضًا كلًا من الحدس والتفكير المنطقي أنه وظيفة للذاكرة، لكن الحدس هو عملية أسرع حيث أنه يتخطى العديد من الخطوات اللازمة للتفكير المنطقي (تجميع البيانات، وتحليل البيانات، وإسقاط البيانات التي حُلّلَت)، إنها تعالج مجموعةً استثنائيةً من البيانات التي من الصعب إدراكها، على سبيل المثال: عملية المشي الفيزيولوجية والتي هي عملية بسيطة ومعقدة في نفس الوقت. تقدِّم الدراسة نفسها التي أجراها جويل بيرسون في عام 2016، دليلًا قويًا على أن الحدس هو في الواقع وظيفة لخوارزميات كيميائية حيوية معقدة يمكن قياسها كميًا. الحقيقة الصادمة هي أن أي شيء يعمل من الذاكرة، مثل: الفكر، أو الحدس. ومع أن القوة الحسابية المتقدمة ستتفوق عليه، إلا أن الأبعاد العبقرية للعقل في شكل ذكاء نقي هي التي ستميز دائمًا التجربة الإنسانية عن الآلات. ويضيف الكاتب بأن كونه فردًا من متخصصي تجربة المستخدم وصنَاع القرار، فمن المهم ملاحظة أن تجربة المستخدم لا تنفصل عن التجربة البشرية الكبرى، وأن ممارسة الحدس العلمي تصبح مهمةً للغاية أثناء تنقلهم في العالم المعقد والمتطور من حولهم. التطبيق العملي للحدس العلمي في عمليات تجربة المستخدم يتمثل الدور الرئيسي للحدْس لدى الكاتب -أي في عالم تجربة المستخدم-، في توفير أساس مفاهيمي يقترح الاتجاهات التي قد تتخذها استكشافات البحث والتصميم الجديدة، وهذا يشمل الحصول على معرفة بالحقائق الضرورية والأمور البديهية غير المنطقية في نظام رسمي قائم على المنطق، وكذا تفسيرات للمبادئ والقيم الأخلاقية، مثل: التنوع، والشمول في تصميم المنتج. يقول أينشتاين: إن الحدْس والعاطفة هما أمران حاسمان في عملية البحث عن المعرفة، سواءً في السياقات الغربية أو التقليدية، ويفترض دانيال كانيمان أنه حتى عندما نعتقد أننا نتخذ قرارات بناءً على أسس عقلانية، فإن معتقداتنا وتحيُزاتنا وحدْسنا الموجودة في نظامنا الأول، هي من تقودنا إلى العديد من خياراتنا. الخطوات العملية التي تزيد من دور مبادئ الحدْس العلمي في عمليات صنع القرار: إن وجود بيئة العمل الشاملة والمتنوعة ليست الشيء الجيد الوحيد الذي يحتاجه الفرد، بل من المفيد أيضًا أن يكون لديه فريق متنوع ثقافيًا، يتميز أفراده بأفكار مختلفة اختلافًا جذريًا، ويعملون معًا لحل المشكلات المعقدة. عليك أن تكون حذرًا وصارمًا بشأن السياق المطبَق والعينة المختارة أثناء إجراء التعميمات العامة. عليك أن تعرف ما الذي تقيسه، فعندما يكون الهدف هو فهم سلوك المستخدم في نظام معقد ومترابط، فعليك أن تركز أكثر على الرؤى النوعية والقصص التي تُتداول، وذلك لكشف بعض دوافع المستخدم ونواياه الأساسية، بدلًا من مجرد ملاحظة المواقف الملحوظة ومعرفة نوع وتكرار الإجراءات المنفذة. عليك (إذا كان هذا ممكنًا) مساعدة فريق العمل الصغير في بناء حدْس يمكن الاعتماد عليه، وذلك من خلال خلق بيئة مفتوحة ومستقرة، وكذا فترة تدريب، وذلك من أجل تحديد الأنماط ومعرفة علامات التغيير في بيئة الأعمال. عندما تتخذ القرارات الكبيرة، فمن الجيد أن تكون بطريقة التداول، مثل: فرضيات الاختبار، واعتماد طريقة "الفريق الأحمر" المعروف أيضًا باسم محامي الشيطان في التخمين الثاني لمعرفة نتائج القرار. حاول أن تبتعد عن العمل من وقت لآخر، وتمهل واستثمر في الأنشطة التي لها مردود طويل الأجل من المعرفة والإبداع. كن منفتحًا وتقبل الملاحظات الصادقة. الحدس قابل للتدريب، وأكثر الطرق فاعليةً لذلك هو التأمل الذاتي ليس من خلال الدورات التدريبية عبر الإنترنت أو أي تقنية، ولكن من خلال البحث عن النفس تجريبيًا، وما يعنيه الكاتب هنا هو البحث في داخل الإنسان. الاستنتاج يجب على الإنسان أن يفكر في كيفية دراسة نفسه وتعليم التفكير البديهي الذكي للمصممين والباحثين وصناع القرار، فكلا الأمرين مهمين ولا يتفوق أحدهما على الآخر، ويعبر الكاتب عن إيمانه الشديد في ضرورة تطبيق جميع مهاراتنا من أجل إنشاء تصميمات ذكية و للحدْس العلمي دور عظيم في ذلك. ترجمة -وبتصرّف- للمقال The Role of The Scientific Method & Intuition in UX لصاحبه Sujay Kotwal. اقرأ أيضًا كيفية الحفاظ على الجودة من خلال قائمة مراجعة تجربة المستخدم. مدخل إلى تجربة المستخدم (User Experience - UX).
  15. الإصدار 1.0.0

    8392 تنزيل

    إطار العمل Vue.js هو أحد إطارات جافاسكربت المخصصة لبناء تطبيقات ويب والواجهات الأمامية يتميز بأنه إطار شامل واعد سريع الأداء ذاع الصيت يتميز بالكثير من الخصائص القوية ويستحق تعلمه لبناء واجهات مواقع وتطبيقات ويب متميزة وقوية خصوصًا تطبيقات الويب ذات الصفحة الواحدة SPA، توجهت أنظارنا لإضافة محتوى عربي مميز يشمله في خطة لإضافة مصادر تعليمية عالية الجودة تشرح أشهر أطر لغة جافاسكربت لبناء الواجهات الأمامية للمواقع وتطبيقات الويب. يبدأ الكتاب فصوله الأولى بشرح مفهوم إطار العمل والتعرف على Vue.js وأخذك سريعًا وباختصار لبدء استعماله ببناء أول تطبيق عبره. ستبدأ من الفصل الثاني في Vue.js بالتعرف على إطار العمل Vue.js عن قرب وعن آلية عمله وكيفية استعماله في بناء الوجهات الأمامية ثم تنتقل بعدها إلى التعرف على الموجهات الشرطية والتكرارية واستعمالها في قوالب الواجهة الأمامية، يليها الدخول إلى عالم مكونات Vue.js وتعلم كيفية بناءها. ستبدأ بعدها في الفصل السابع الأمور المتقدمة إذ ستتعلم التعامل مع سطر أوامر Vue.js لبناء المشاريع والتطبيقات بسهولة ويسر ثم ستتعرف بعد ذلك على مفاهيم متقدمة في Vue.js وكيفية بناء تطبيقات ذات صفحة واحدة. ستتعلم في الفصول الأخيرة من الكتاب كيفية ربط تطبيقك بالإنترنت وإضافة قاعدة بيانات له وإطلاق إلى العالم الخارجي متحرين استعمال أشهر منصات النشر وأيسرها تعاملًا. حتى تستفيد أكبر استفادة من الكتاب، يجب أن تملك معرفة أساسية مسبقة بلغة HTML ولغة CSS ومعرفة جيدة بلغة جافاسكربت، إذ يركز الكتاب على إطار العمل Vue.js الذي هو أحد أطر عمل جافاسكربت ولن يتطرق الكتاب إلى شرح لغة جافاسكربت، وقد تجد صعوبة في فهم أجزاء الشيفرات والاستفادة من الكتاب دون تلك المعرفة المسبقة. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «مقدمة إلى vuejs»، أو تجدها مسردة بالترتيب التالي: مقدمة إلى Vue.js استخدام Vue.js للتعامل مع DOM الموجهات الشرطية والتكرارية في Vue.js التعرف بالتفصيل على كائن Vue.js مدخل إلى التعامل مع المكونات في Vue.js المزيد حول المكونات في Vue.js إنشاء مشاريع Vue.js باستخدام Vue CLI التعامل مع دخل المستخدم عن طريق نماذج الإدخال في Vue.js المرشحات Filters والـمخاليط Mixins في Vue.js استخدام Vue.js للاتصال بالإنترنت بناء تطبيقات ذات صفحة واحدة باستخدام التوجيه Routing في Vue.js نشر تطبيق Vue.js إلى الإنترنت
  16. سنتحدث في هذا المقال عن التصميم الجرافيكي من زوايا جديدة نحاول من خلالها تسليط الضوء على جوانب التصميم الجرافيكي الأكاديمية والتطبيقية والتي من خلالها يمكن للمصمم تطوير معرفته ومهاراته التصميمية والاستعداد لسوق العمل. العناوين التي سيناقشها المقال: ماهو التصميم الجرافيكي؟ عناصر ومبادئ التصميم الجرافيكي أهمية التصميم الجرافيكي تخصصات التصميم الجرافيكي مجالات العمل في التصميم الجرافيكي أدوات التصميم الجرافيكي لغير المصممين أدوات التصميم الجرافيكي للمصممين عوامل التصميم الجرافيكي الجيد مجتمعات التصميم الجرافيكي على الإنترنت أسئلة حول التصميم الجرافيكي ماهو التصميم الجرافيكي؟ للتصميم الجرافيكي العديد من التعاريف والتفسيرات، وبعيدًا عن الغوص في النظريات والشروحات التفصيلية له، يمكننا القول بأن التصميم الجرافيكي ببساطة هو: تنسيق العناصر البصرية لتوصيل معنى للمشاهد. وما نعنيه بهذا التعريف هو أنه بمجرد قيامك بتنسيق مجموعة من العناصر بطريقة توصل معنًى معين، فإنك بذلك قد قمت بالعملية التصميمية وحققت الهدف المطلوب منها. فيما يلي تفصيل لهذا التعريف لمعرفة ما هي العناصر اللازمة لتحقيق ما يسمى بالتصميم الجرافيكي. تنسيق: نقصد بالتنسيق هنا التحريك والتدوير والتكبير والتصغير وغيرها من العمليات التي يمكن تطبيقها على العنصر البصري. العناصر البصرية: يختص التصميم الجرافيكي بالعناصر البصرية مثل النقطة والخط والشكل واللون وهذا بالتحديد هو معنى كلمة Graphic في كلمة Graphic Design والتي تُتَرجم حرفيًا إلى (التصميم البصري)، وفي الغالب نحتاج لأكثر من عنصر في التصميم الجرافيكي حتى نستطيع إيصال معنى معين سواء كان نصًا وصورة أو مجموعة من الأشكال البصرية مثل المستطيل والدائرة وغيرها من الأشكال. توصيل معنى للمشاهد: أي أن التصميم لابد أن يوصل معنى معين يفهمه المشاهد، وهذا هو هدف التصميم الجرافيكي، وحين يكون الناتج النهائي دون معنى واضح أو رسالة مفهومة فهنا قد يسمى نوعًا من الفن التشكيلي ولكنه لا يسمى تصميمًا جرافيكيًا. حسنًا لنتحول إلى مثال بسيط نطبق فيه تعريف التصميم الجرافيكي. يتكون هذا المثال من عنصرين بصريين ومن ثم ننتقل إلى مثال بعناصر أكثر. شاهد الصورة التالية: في الصورة السابقة، نرى عنصرين بصريين متساويين في الطول والعرض أحدهما موضوع بشكل أفقي والآخر بشكل عمودي، ولكنهما لا يعطيان معنى معين بوضعيتهما الحالية. بافتراض أن لديك العناصر السابقة فقط، ما الذي يمكنك عمله من تنسيقات لإيصال معنى معبر؟ مع مراعاة التحريك والتدوير للعناصر فقط دون تغيير للحجم أو حذف أو إضافة. احضر ورقة وقلمًا أو افتح برنامج التصميم الخاص بك وحاول تكوين أشكال معبرة متواجدة في حياتنا اليومية باستخدام الاشكال الموجودة في الصورة أعلاه، ومن ثم تابع القراءة. يمكننا بتوحيد الاتجاه للعنصرين الخروج بشكلين مختلفين، فإن كان العنصران موضوعان بشكل عمودي وعلى نفس المستوى فإننا سنجد أن شكلًا جديدًا ظهر لنا وهو شكل الإيقاف المؤقت كما يظهر في شكل رقم (1) من الصورة أدناه، وفي شكل (2) نجد أن علامة المساواة ظهرت لنا من خلال وضع العنصرين بشكل أفقي، وبالمثل في بقية الأشكال نجد أن هناك معانٍ جديدة تظهر لنا كعلامة الجمع (3)، والضرب (4)، وحرف T من اللغة الإنجليزية (5)، وسهمان أحدهما لأسفل (6) والآخر لأعلى (7). تكونت كل العناصر السابقة من مجرد عنصرين قمنا بتنسيقهما وجعلهما يعبران عن معانٍ مختلفة في كل مرة، فكيف إن كانت لدينا عدة عناصر يمكننا تنسيقها بمختلف أنواع التنسيق كالتكبير والتصغير والتدوير والإضافة والحذف وغيرها من التنسيقات! وهذا هو سحر التصميم الجرافيكي والذي من خلاله يمكننا ابتكار عناصر ومعانٍ جديدة مع كل عملية تتم على العناصر البصرية. وينطبق ذات الأمر مع زيادة عدد العناصر أو نوعها أو التنسيقات المطبقة عليها، والهدف هنا هو الوصول إلى نتائج جديدة تعبر عن الرسالة التي يريد المصمم إيصالها من خلال التصميم. كم من الأشكال يمكنك تكوينها باستخدام ثلاثة خطوط؟ شاركنا النتائج الخاصة بك في التعليقات. لننتقل إلى مثال جديد بعناصر أكثر، شاهد الصورة التالية: بافتراض أن المستطيل هو حدود التصميم أو مساحة العمل، والدائرة هي صورة شخص أو شعار شركة أو أيقونة ما، والخط الطويل هو عبارة عن نص أساسي، والخط القصير هو عبارة عن نص فرعي. بعمل بعض التنسيقات على هذه العناصر وتغيير أماكنها يمكننا الخروج بعدة نماذج جرافيكية مكتملة كما يلي. التنسيقات أعلاه هي تنسيقات مريحة بصريًا وتأخذ بعين المشاهد من عنصر إلى آخر لمعرفة محتوى العمل وما الذي عليه مشاهدته، ولاحظ هنا أن هناك تنسيقات أخرى ممكنة ولكن يشترط أن تكون بترتيب منظم وغير عشوائي وأن تكون مطبقة لمبادئ التصميم الجرافيكي اللازمة والتي سنمر عليها في مقالة قادمة. وبالنسبة للتنسيقات السابقة فهنا تطبيق بصري لما يمكن أن تكون عليه في تصميمات واقعية: لاحظ أنه ومع اختلاف النصوص والأشكال والألوان إلا ان التنسيقات تظل ذاتها ويمكن تطبيقها على أكثر من شكل وأكثر من نص، ولذا تظهر أهمية التخطيط المسبق في التصميم وذلك لأن التنسيق الأولي يضع العناصر في أماكنها المطلوبة ومن ثم يتم التنفيذ النهائي كمرحلة لاحقة باستخدام اليد أو أحد برامج التصميم، ولاحظ أيضًا أنه تمت بعض التغييرات الطفيفة على التصاميم العمودية كما في تصميم "حسوب" وذلك ليتناسب طول النصوص مع مساحة العمل. وهنا نصل إلى أن التصميم الجرافيكي هو تنسيق العناصر البصرية لإيصال معنى للمشاهد، فإن أتقنت هذه العملية صرت متمكنًا من إنتاج أعمال جرافيكية ذات معنى. عناصر ومبادئ التصميم الجرافيكي لبناء منزل فإننا سنحتاج إلى العديد من العناصر كالطوب والأخشاب والمسامير والاسمنت وأدوات البناء كالمطرقة ومفك البراغي وميزان البناء ونحوها من الأدوات، وكذلك الحال في التصميم الجرافيكي، فحتى نبدء العملية التصميمية فإننا نحتاج إلى مجموعة من العناصر والمبادئ، العمل عليها يكوّن لنا التصميم الجرافيكي المطلوب، فيما يلي سنذكر هذه العناصر والمبادئ وفي مقالات لاحقة سنشرحها بالتفصل وكيفية استخدام كل منها الاستخدام المناسب في التصميم الجرافيكي. عناصر التصميم الجرافيكي يمكننا تقسيم العناصر الجرافيكية إلى قسمين: عناصر أولية، وتشمل: النقطة. خط الرسم. الشكل. العمق. الحجم. المساحة.. الملمس. عناصر مركبة، وتشمل: النصوص. الخطوط الطباعية. الصور. الرسوميات. كل من هذه العناصر تحتاج إلى شرح مفصل لها يتضمن انواعها واستخداماتها وكيفية التعامل معها في التصميم الجرافيكي وهذا ما سنتطرق إليه في مقالة قادمة. مبادئ التصميم الجرافيكي عودة إلى المثال السابق حول بناء المنزل؛ فلا يكفي أن تكون لدينا مواد البناء حتى نقوم ببناء المنزل، بل نحتاج إلى مبادئ وقواعد العمارة حتى يتم البناء بشكل سليم، وكذلك الحال مع التصميم الجرافيكي فلا يكفي توفر العناصر التصميمية للقيام بالتصميم الجرافيكي بل لابد للمصمم من معرفة قواعد وأسس التصميم والتي من خلال تطبيقها يمكن لنا الخروج بتصميم بصري مناسب ويوصل الرسالة المطلوبة بشكل سليم، نذكر من هذه المبادئ: التكرارية. التباين. الإيقاع. التوازن. البساطة. الوظيفية. التقارب. الهرمية. النسبة والتناسب. الانسيابية. المحاذاة. التكوين. التركيز. الحركة. الوحدة. هذه المبادئ تساعد على جعل التصميم متناسبًا ومريحًا للنظر حين مشاهدته، ولايشترط تطبيقها كافة على تصميم جرافيكي واحد، فكل تصميم جرافيكي يحتاج لمبادئ معينة ولكن يفضّل أن تكون على علم بها كافة حتى تحكم على العمل الجرافيكي إن كان يمكن عمله بشكل أفضل من خلال تطبيق مبدأ معين، وكما هو الحال مع عناصر التصميم الجرافيكي فسنقوم بشرح هذه المبادئ في مقالة قادمة. أهمية التصميم الجرافيكي الحديث عن التصميم الجرافيكي هو حديث عن عملية التواصل البشري بين طرفين، الطرف الأول صاحب الرسالة والطرف الثاني هو المستهدف من الرسالة. فإن أرادت إحدى الشركات الإعلان عن منتج جديد فإن التصميم الجرافيكي هو الوسيلة الأمثل لإيصال تلك الرسالة وإن أرادت إحدى الجهات نشر حملة توعوية بأهمية غسل اليدين والنظافة فإن التصميم الجرافيكي خير وسيلة أيضًا، وبالمثل مع الحملات الانتخابية، والمواد التعليمية، والمواد المطبوعة والصحفية، وذلك لأن التصميم الجرافيكي يقوم بإيصال الأفكار من خلال الصور والرسومات التوضيحية والتي بدورها تشد المشاهد وتجذبه للمشاهدة، وبتلك الطريقة فهي أكثر فعالية من الفقرات النصية المكدسة أو الفيديوهات المملة الطويلة. ويمكن توضيح أهمية التصميم من خلال ثلاث نقاط: الإيجاز والوضوح يمكن للتصميم الجرافيكي اختصار الكثير من الكلام وذلك من خلال فكرة معبرة أو تعبير إبداعي يغني عن الكثير من الشرح. شاهد الصورة التالية والتي هي إعلان لمثقب بعنوان: أسرع مما تظن! شد انتباه المشاهد يعد عامل الإبداع أحد أهم العوامل المؤثرة في نجاح التصميم الجرافيكي، وذلك لأن العالم اليوم مليء بالمواد البصرية في كل اتجاه وبالتالي فإن للتصميم الجرافيكي ذي الأفكار الجديدة القدرة على شد انتباه المشاهد وجعله ينتبه لذلك التصميم الجرافيكي. شاهد الصورة التالية والتي هي إعلان لمنظمة حماية البيئة WWF والتي يمكن ترجمتها إلى: عدم استخدامك للورق حماية للبيئة. الوصول المتعدد وإمكانية الانتشار يمكن للتصميم الجرافيكي أن يتم عرضه في مختلف المطبوعات وأماكن العرض بأكثر من سطح وأكثر من قياس، فنجد التصميم الجرافيكي على الأوراق المطبوعة وعلى لافتات الشوارع وفي صفحات الإنترنت وعلى أبواب السيارات ونوافذ المحلات، وبالتالي فقابلية التصميم الجرافيكي على الانتشار والتموضع على أي سطح تجعله أحد أهم أساليب العرض في العصر الحديث. تخصصات التصميم الجرافيكي إن كانت لديك القدرة على تنسيق العناصر البصرية وجعلها توصل معنًى معين، فأهلا بك في عالم التصميم الجرافيكي، والذي من خلاله يمكنك تطبيق هذه المهارة في مجالات عديدة سنذكرها تاليًا. هذه المجالات أو التخصصات وغيرها يمكن للمصمم الجرافيكي العمل عليها وإنجاز أعمال تصميمية سواء شخصية أو لأشخاص آخرين في مقابل مادي، وتتنوع في طرق تنفيذها والأدوات اللازمة لتنفيذ كل منها؛ فعلى سبيل المثال يحتاج مصمم الشعارات إلى جلسات نقاش مع العملاء للوصول إلى الفكرة المطلوبة للشعار ومن ثم تجسيدها في شكل بصري يتناسب مع الوسائط التي سيتم استخدام الشعار عليها، بينما يحتاج مصمم المجلات إلى القدرة على التعامل مع النصوص والصور ومعرفة مهارات فصل الألوان وفنيات الإخراج الطباعي اللازمة لإخراج المجلة بالشكل المناسب، وهكذا تختلف مجالات التصميم الجرافيكي مما ينتج عنه عادة تخصص المصمم في مجال واحد أو أكثر بحسب تقارب المجالين مع بعضهما وكذلك مع قدرة المصمم على التوفيق بين أكثر من مجال وإنتاج أعمال احترافية متوافقة مع احتياجات العملاء. تصميم الأيقونات وهي رموز بصرية بسيطة تعبر عن معنى محدد، كأيقونة الهاتف، وأيقونة الإضافة، وأيقونة الإعدادات، وتستخدم غالبًا بجوار نص توضيحي. تصميم الشعارات وهي رموز بصرية متميزة وفريدة تعبر عن نشاط أو كيان ما سواء كان فرديًا أو مؤسسيًا، وتعتبر من أهم جوانب التصميم كونها واسعة الانتشار ومتطلب أساسي للكثير من الكيانات التجارية أو المؤسسية. تصميم الهويات البصرية وهي عملية تصميمية تعمل على إعمال التصميم الجرافيكي لإيجاد وحدة بصرية بين متعلقات الكيان صاحب الشعار، وبحيث تدل تلك المتعلقات حين مشاهدتها على صاحب الكيان، وتتكون من عدة عناصر أهمها اللون والنمط والخط وغيرها. تصميم البوسترات وهي التصاميم التي تعمل على عرض معلومات متعلقة بحدث معين أو فعالية ما أو منتج جديد وغالبا ما يتم استخدامها للترويج خلال وقت معين أو حملة ما. تصميم المجلات وهي التصاميم التي تعنى بتنسيق النصوص والمعلومات مع عناصر بصرية أخرى كالصور والرسومات وإخراجها في قالب جميل يحث القارئ على القراءة وتبعد ملل النصوص المتراكمة. تصميم الواجهات وهي عملية تصميم وترتيب العناصر التي تظهر على واجهات الاستخدام كواجهات مواقع الانترنت وواجهات التطبيقات الذكية أو أنظمة التشغيل أو أي واجهات يمكن للمستخدم التفاعل معها. تصميم الانفوجرافيك وهي عملية تقديم المعلومات في قالب تصميمي جذاب غير ممل وبحيث تعمل على عرض الأشكال والرموز والصور المرتبطة بتلك المعلومات لتكوين شكل بصري معلوماتي مميز. تصميم الإعلانات وهي عملية عرض المنتجات أو الخدمات أو العروض الخاصة بالشركات والمؤسسات بشكل إبداعي يشد المشاهد ويسترعي انتباهه. مجالات العمل في التصميم الجرافيكي ذكرنا قبلا أن التصميم الجرافيكي يعتبر أحد أهم أساليب العرض في العصر الحديث، وبالتالي فقد تبنته العديد من الشركات والمؤسسات الخاصة والعامة لإيصال الرسائل التي تريدها للآخرين مما أدى إلى الطلب المتزايد على المصمم الجرافيكي القادر على إيصال تلك الرسائل بالشكل الأمثل، وبالتالي صار للمصمم الجرافيكي عدة مجالات للعمل وتحويل مهاراته في التصميم إلى مسار مهني ذي عائد مادي سواء بالعمل على أرض الواقع أو بالعمل على الانترنت، وفيما يلي مجالات العمل في التصميم الجرافيكي في العصر الحالي: العمل لدى استوديوهات التصميم والتي تقدم خدماتها للشركات الأخرى. العمل لدى إحدى الشركات والتي تحتاج إلى مختص تصميم خاص بها. العمل على الإنترنت سواء من خلال وظيفة عن بعد كما في موقع بعيد أو عبر مواقع العمل الحر كموقع مستقل ومواقع الخدمات المصغرة كموقع خمسات. إنشاء أعمال تصميمية وقوالب جاهزة للاستخدام ومن ثم بيعها على مواقع قوالب التصميم كـ Shutter Stock أو Envato أو Freepik. انظر مقال دليل المسار المهني لمصمم الرسوميات (التصميم الجرافيكي) لمزيد من التفصيل حول هذا الموضوع بشكل خاص والاستعداد لسوق العمل بشكل عام. أدوات التصميم الجرافيكي لغير المصممين إن أردت تعلم التصميم الجرافيكي فقط لتنفيذ بعض الأعمال التصميمية البسيطة كتصميم المنشورات أو توقيعات البريد الإلكتروني وغيرها من التصاميم التي لاتحتاج إلى إبداعية في العرض ولا تتطلب وقتًا طويلًا من الدراسة والبحث فقد لا تحتاج للكثير لتعلمه ففي عالم اليوم صارت هناك الكثير من الخدمات الإلكترونية التي تقدم قوالب التصميم ونماذج تصميمية جاهزة للتعديل والتحميل وتعرض عشرات أو مئات القوالب المتنوعة والتي قد تناسب احتياجاتك، وبالتالي ألق نظرة على هذه المواقع قبل أن تغوص في عالم التصميم بعيد الأعماق . 2. Freepik يتيح موقع Freepik تشكيلة واسعة من التصاميم والصور والملفات الجاهزة للتحميل بشكل مجاني، ولكنه لا يحتوي على ميزة التعديل على الانترنت وبالتالي ستحتاج لبرنامج تصميم للتعديل على تلك الملفات بما يتناسب مع احتياجاتك. 3. Infogram يتيح موقع Infogram تصميم التقارير والانفوجرافيك بشكل تفاعلي من خلال قوالب جاهزة للتعديل ومن ثم إدخال بيانات الأرقام الخاصة بتلك التصاميم لتتغير المخططات في التصميم، فإن كنت تبحث عن عمل تصميم انفوجرافيك أو تقرير دوري فهذا الموقع قد يفيدك. 4. تطبيقات التصميم على الأجهزة الذكية إن لم يكن لديك حاسب آلي ولكن لديك الرغبة في إنشاء تصاميم جرافيكية بسيطة فلا مشكلة، فيومًا بعد يوم تزداد تطبيقات التصميم المخصصة للأجهزة الذكية وتزداد قدراتها وإمكانياتها مع الوقت، من هذه التطبيقات نذكر التطبيقات الثلاثة التالية: Over: تطبيق مليء بالقوالب الجاهزة للتعديل ويدعم الصور والنصوص والتأثيرات وتحديد قياسات العمل بحسب مختلف الشبكات الاجتماعية، يمكنك استخدامه لمدة 7 أيام مجانًا ومن ثم يتطلب التطبيق الدفع مقابل الاستخدام. PicsArt: تطبيق موجه للتأثيرات على الصور وإضافة النصوص، وعلى خلاف التطبيق السابق فلا يحتوي على قوالب متعددة وجاهزة للاستخدام، ولكنه مجاني الاستخدام ويمكنك الاستفادة منه في تعديلات بسيطة على الصور والتصاميم الخاصة بك. المصمم العربي: أحد التطبيقات العربية المشهورة والمجانية أيضًا. يحتوي التطبيق على العديد من مواد التصميم كالصور والملصقات والخطوط، وبشكل عام فإنه يساعدك على إنشاء تصاميم بسيطة من خلال إتاحته لأدوات متعددة ضمن التطبيق. أدوات التصميم الجرافيكي للمصممين إن لم تكفك الأدوات السابقة وأردت أن تكون مصممًا حقيقيًا فكل ما تحتاجه هي هذه الأدوات التالية فكما أن للعديد من الأعمال أدواتها التي يتم إنجاز العمل بواسطتها فكذلك التصميم الجرافيكي له أدواته الخاصة والتي من خلالها يمكن لك إنشاء وعرض التصميم الجرافيكي الخاص بك. هذه الأدوات هي: القلم وكراسة الرسم قد يعتبر الكثير أن استخدام القلم وكراسة الرسم ليس مهمًا وأن المصمم يمكنه البدء مباشرة على الحاسوب لتنفيذ التصميم الذي يريده، ولكن ذلك كمن يريد بناء مبنى دون تخطيط أولي مرسوم على الورق مع فارق التشبيه، وتظهر أهمية هذه الأداتين بأنهما يمكنان المصمم من رسم الأفكار التي لديه بسرعة ومن ثم تطويرها وتحسينها على الورق ومن ثم حين الوصول إلى النتيجة المطلوبة يتم التنفيذ مباشرة على الحاسوب، بينما عند البدء مباشرة على الحاسوب فقد يواجه المصمم تشتت الأفكار الخاصة به، أو عدم وضوح الصورة النهائية، أو وجود العديد من العناصر في التصميم مما يشكل زحمة بصرية غير مرغوبة، وبالتالي فإن الرسم الأولي باستخدام القلم وكراسة الرسم يساعد على وضع تصور واضح للتصميم يمكن تنفيذه بسهولة، ولا يشترط بالرسم أن يكون مثاليًا أو أن يعرض جميع التفاصيل بل أن يكون صورة عامة لما سيتم تنفيذه حين استخدام البرامج. برامج التصميم يساعد الحاسوب المصمم على إنتاج الأعمال الجرافيكية بسرعة وجودة عالية، حيث يمكن التعديل والتغيير في مكونات التصميم بسرعة خلافًا لما كان عليه الأمر قبل ظهور البرامج الحاسوبية فقد كان المصممون يقومون بعمل التصميم الجرافيكي باليد وباستخدام أدوات كالمسطرة والفرجار ونحوها من الأدوات، ولكن مع التقدم التكنولوجي صار بإمكان المصمم إضافة الصور والنصوص والأشكال والتعديل عليها بسهولة ويسر، فيما يلي بعض هذه البرامج والتي يمكنك الإطلاع عليها ومن ثم العمل على ما يناسبك منها. برامج شركة Adobe توفر شركة أدوبي مجموعة واسعة من برامج التصميم لمختلف المجالات والتخصصات بدءًا من برامج تعديل الصور إلى برامج الرسم وبرامج الإخراج الصحفي وبرامج تصميم الواجهات وغيرها الكثير، وهي الأكثر استخدامًا من قبل المصممين حول العالم. برنامج Sketch يعتبر برنامج سكتش أحد البرامج المتخصصة في تصميم واجهات التطبيقات والمواقع ويزداد عدد المستخدمين الخاص به بشكل كبير نظرًا لما يقدمه من مزايا جعلته البرنامج المفضل لكثير من مصممي الواجهات، ولكن يجدر الذكر هنا بأنه حاليًا لا يتوفر إلا على أجهز الماك الخاصة بشركة آبل، وليس منه نسخة على أجهزة الويندوز. برنامج Corel Draw يعتبر برنامج كورل درو من البرامج المشهورة في مجال التصميم، ويعتبر أسهل للتعلم من برنامج ادوبي الستريتور، ولكن لمستخدمي برامج أدوبي فإن برنامج ادوبي الستريتور سيكون أسهل من ناحية تشابه الواجهات وطريقة الاستخدام، وعلى كلٍ فكلا البرنامجين مناسبان لإنشاء تصاميم رسومية. برامج التصميم على الانترنت مع انتشار الإنترنت وزيادة قدرات الأجهزة الحاسوبية، وظهور مفهوم الحوسبة السحابية صار بإمكاننا اليوم استخدام البرامج مباشرة على الانترنت دون الحاجة لتحميلها على أجهزتنا، وظهر ضمن هذا المفهوم برامج للتصميم الجرافيكي يمكننا استخدامها على الانترنت من هذه البرامج ما يلي: Lucidpress Figma Desygner inVision Vectr Gravit Designer عوامل التصميم الجرافيكي الجيد بعد إنشائك لتصميمك الأول فغالبا ما ستعتبره كتحفة فنية ولكن ما أن تراه بعد فترة من الزمن فستجد أنه كان يحتاج المزيد من العمل والتطوير. إذًا كيف تتأكد من أن تصميمك جيد ومناسب للإخراج والنشر؟ ففي الأخير كل التصاميم يراها أصحابها بأنها رائعة وكيف لا فهي من صنع أيديهم بينما قد يكون فيها بعض القصور الذي لم يلاحظوه، وعلى الطرف الآخر فقد يكون التصميم ممتازًا ولكن لا يقوم العميل بقبوله بحجة أنه ليس تصميمًا جيدًا، إذًا فكيف يتم الحكم على التصميم بأنه جيد؟ فيما يلي مجموعة من العوامل التي يمكننا اعتبار التصميم جيدًا إذا توفرت فيه. ايصاله للرسالة المطلوبة فإن كانت الرسالة المطلوبة من التصميم هي إيصال وجود تخفيضات، فمن البديهي أن تكون هذه المعلومة هي أول ما يتلقاها مشاهد التصميم، وبالمثل إن كانت عن افتتاح مركز جديد، أو نزول تشكيلات جديدة من الملابس ونحوها. جمالية الشكل واستحسان العين للعمل التصميم فرع مشتق من الفنون وبالتالي فعلى المصمم أن يجعل تصميمه ذا طابع جمالي وفني بحيث يجذب المشاهد إليه ويشده لمشاهدة التصميم، ولانعني بهذا أن يمتلئ التصميم بالألوان البراقة والتأثيرات المستهلكة، بل أن يكون جمال التصميم في تنسيقه وترتيبه وأفكاره. استخدام العناصر الضرورية لإيصال الرسالة دون زيادة أو نقصان عادةً مايقوم المصممون المبتدأون بوضع الكثير من العناصر والأشكال والتأثيرات في تصميماتهم الأولى وذلك لأنهم يريدون إظهار مهاراتهم ومعرفتهم بهذه الأدوات والتأثيرات، ولكن هذا الأمر غالبًا ما ينتج عنه زحمة بصرية مشوشة ولا تخدم فكرة التصميم الرئيسية، ولذلك عليك كمصمم الانتباه لهذا الأمر ووضع العناصر اللازمة فقط لإيصال فكرة التصميم دون زيادة أو نقصان. التزامه بمبادئ التصميم غالبا ما نجد كثيرًا من الأعمال الجرافيكية للمصممين المبتدأين غير وذلك لعدم التزامها بمبادئ التصميم كالهرمية، والتوازن، والمحاذاة، وحين تطبيق تلك المبادئ نجد أن التصميم صار أفضل بكثير، ولذلك تأكد من التزام تصميمك بمبادئ التصميم فذلك يجعلها أكثر احترافية وأكثر جودة. مجتمعات التصميم الجرافيكي على الإنترنت عند تعلمك للتصميم الجرافيكي بشكل ذاتي فقد تواجهك بعض الأسئلة والاستفسارات وقد يبدو أن المشوار طويل حتى تصل لما تريده ولكن مع وجود مجتمعات التصميم عبر الإنترنت فإن رحلة تعلمك ستكون أسهل حيث تتوفر العديد من الأماكن على الانترنت التي يجتمع فيها المصممون لطرح أسألتهم وعرض أعمالهم والاستفادة من آراء بعضهم بعضًاالبعض، وبالتالي فإن انضمامك لأحد هذه المجتمعات أو أكثر سيكون مفيدا لك أثناء رحلتك التعليمية، فيما يلي بعض من هذه المجتمعات: مجتمع التصميم على حسوب مجموعة خبرات مصمم على فيسبوك مجموعة Designers Union على فيسبوك صفحة مجلة المصمم على فيسبوك صفحة ملتقى المصممين على فيسبوك أسئلة حول التصميم الجرافيكي ختامًا، نأتي إلى إجابة أسئلة كثيرة يطرحها الكثيرون ممن يودون دخول التصميم الجرافيكي سنحاول الإجابة عنها فيما يلي: هل يتطلب التصميم الجرافيكي موهبة الرسم؟ لا تحتاج لأن تكون رسامًا حتى تقوم بأعمال تصميمية، فالعملية التصميمية في أساسها متعلقة بتنسيق العناصر، وبإمكانك توكيل هذه المهمة لشخص آخر إن احتجت رسمًا في تصميمك، كما هو الحال مع التصوير فكذلك لا يتطلب التصميم الجرافيكي أن تكون مصورًا، ويمكنك الاستعانة بمصور لالتقاط الصور التي تريد أو شرائهاشراءها من الانترنت، ولكن بطبيعة الحال كونك رسامًا أو مصورًا فهذا سيعني مهارة إضافية تساعدك في إنشاء تصاميم مميزة دون الحاجة للآخرين وبامتلاكك أكثر من مهارة فإنك ستستطيع التميز والظهور في سوق العمل بقوة. أي تخصصات التصميم الجرافيكي هو الأنسب؟ في الغالب يحتاج المصمم لأن يكون ملمًا بكافة تخصصات التصميم الجرافيكي قادرًا على إنشاء أي منها، ولكن مع ازدياد المنافسة في سوق العمل فإن على المصمم أن يظهر تميزًا وتفردًا في مجال ما وأن يحاول الإلمام به بشكل واسع حتى يستطيع المنافسة في ذلك المجال وجذب العملاء إليه خصوصًا إن كان يريد العمل الحر والابتعاد عن الوظيفة، وحتى تستطيع معرفة ذلك التخصص فعليك أن تبدأ في أي تخصص تريده وإن وجدت نفسك أحببته فقم بالمواصلة فيه ومحاولة التميز فيه وامتلاك لمستك الخاصة التي تجعلك محط أنظار العملاء ووجهة لتنفيذ أعمالهم، ولكن إن لم تجد أن لك ميزة ما في ذلك التخصص ووجدت أن أعمالك عادية مشابهة لغيرها من أعمال المصممين الآخرين فحاول تجربة تخصص آخر والتميز فيه، وإن لم تجد في ذلك التخصص أيضًا أو غيره من التخصصات فقد يكون من الأنسب أن يكون لديك إلمام بكافة التخصصات والقدرة على تنفيذ أي عمل منها وهنا ستكون هذه المهارة مناسبة لك في تنفيذ مجموعة من الأعمال لعميل واحد لايرغب بالتعامل مع عدة مصممين متخصصين، وكذلك ستفيدك حين التقديم على وظيفة مصمم جرافيك حيث يتطلب هذا الدور غالبًا الإلمام بمختلف التخصصات. هل يحتاج التصميم الجرافيكي إلى دراسة جامعية؟ توفر الجامعة الدراسة الأكاديمية النظرية للتصميم الجرافيكي بالإضافة إلى التطبيقات المتعلقة به، وبمعرفة ما تُدَرسه الجامعة فإنك تستطيع تكوين خلفية نظرية جيدة ومن ثم تطبيقها على التصاميم الخاصة بك، وما ستفيدك به الجامعة حصرًا هو الحصول على الشهادة الجامعية والتي قد تكون ميزة مساعدة في حصولك على وظيفة مصمم جرافيك، وكذلك في التعرف على مصممين آخرين وتكوين شبكة علاقات قد ينتج عنها أعمال مشتركة أو تكوين شراكات مفيدة في مسارك المهني. ما الذي أحتاجه لأكون مصمم جرافيك؟ أهم ما تحتاجه للبدء هو معرفة العناصر والمبادئ الخاصة بالتصميم ومن ثم يمكنك البدء بإنتاج أعمال تصميمة من خلال الرسم على الورق وتنسيق العناصر يدويًا أو من خلال استخدام البرامج الحاسوبية والمتخصصة في التصميم، ولكن هناك عوامل أخرى تساعد على تطويرك في مجال التصميم وأخرى تساعد على جعل أعمال التصميمة مختلفة عن الآخرين وذات بصمة مميزة، هذه العناصر هي الحس الفني باعتبار التصميم الجرافيكي من ضمن الفنون البصرية فعليك أن تملك حسًا فنيًا تقدر من خلاله قياس جمالية التصميم من عدمه وإن لم يكن لديك ذلك الحس الفني فقم بتقليد أعمال المصممين الآخرين وقم بسؤال نفسك دائمًا ما الذي يجعل أعمالهم أفضل من أعمالك ومع كثرة الممارسة فستجد أن أعمالك صارت أقرب إلى أعمال المصممين المحترفين وبالتالي تقل فرص كونها غير جيدة بصريًا، ومن الأمور المساعدة أيضًا الاهتمام بمبادئ التصميم وتطبيقها فهي القواعد التي تجعل من شكل التصميم أفضل وترشدك إلى ما يمكنك تحسينه فيه. التفكير النقدي أي القدرة على طرح أسئلة مثل: لماذا؟ وكيف؟ ولم لا؟ وذلك لأن العملية التصميمة في جوهرها هي عملية حل مشكلة ما والوصول إلى عمل له نتائجه المؤثرة على المشاهدين، وبالتالي فعليك أن تكون دائم التساؤل سواء حين تنفيذ أعمال التصميم الخاصة بك أو حين مشاهدة التصاميم الخاصة بالمصممين الآخرين. الثقافة التصميمية أي الاطلاع على علم التصميم وتاريخه ومدارسه ومشاهدة أعمال المصممين الآخرين وتكوين الذائقة الفنية والتي تتكون من خلال الاطلاع المستمر والنقد والدراسة للعمل التصميمي لمعرفة العناصر التي جعلته في صورته النهائية. القدرة على الابتكار حين العمل على مشاريع فريدة من نوعها كتصميم شعار لجهة ما أو حملة إعلانية لشد الناس لزيارة نشاط تجاري فإنك ستحتاج لابتكار أفكار مميزة غير مشابه لأعمال سابقة وبالتالي فستحتاج للبحث والإطلاع ورؤية الأمور بشكل جديد وستحتاج إلى تطبيق عمليات كالعصف الذهني للخروج بأفكار جديدة ومناسبة. الصبر والمرونة في التصميم الجرافيكي تحتاج لأن يكون لديك رحابة صدر ومرونة في التعامل خصوصًا مع العملاء ومتطلباتهم وتعديلاتهم التي ستبدو وكأنها لن تنتهي، وكذلك ستواجه العديد من العملاء الذين يريدون منك أعمالًا تعجيزية وإنجازها في أوقات قياسية، وستواجه من العملاء من لم يقرأ عن التصميم الجرافيكي ولم يمارسه ولكنهم يعتقدون بأنهم مصممون بالفطرة وأنهم ذوي مهارات وخبرات أكثر منك وأنهم قادرون على إنتاج أعمال جرافيكية إبداعية ولكنهم "للأسف ليس لديهم الوقت الكافي لعمل ذلك"، وبالتالي فإن الصبر والمرونة والقدرة على التعامل مع الآخرين من أهم العوامل للاستمرار في هذا المجال. ماهو البرنامج الأفضل للتصميم؟ تحديد نوع التصميم سيتم تحديد البرنامج، فإن كنت تود التصميم باستخدام الصور والتأثيرات فاستخدم البرامج التي تدعم تعديل الصور كالفوتوشوب، وإن كنت تود التصميم باستخدام الرسوميات فاستخدم البرامج المخصصة للرسوميات كالالستريتور وكورل درو، وعلى كلٍ برامج التصميم وأدواته متعددة وكثيرة ولكن الأساسيات تبقى نفسها، ولذلك لا تطل البحث عن البرنامج الأفضل والأنسب بل استخدم ما يقوم بإنجاز المهمة بالشكل السليم. كيف أبدأ في مجال التصميم الجرافيكي؟ بناء على مفهومك للتصميم الجرافيكي ستستطيع معرفة كيفية البدء، فإن كان ما تريده هو تنسيق العناصر للحصول على شكل بصري مميز ولكن دون استخدام الحاسوب فيمكنك ذلك من خلال العمل بالورقة والقلم ورسم ملصقات بصرية توصل رسائل معينة. أما إن أردت أن تكون مصممًا جرافيكيًا باستخدام الحاسوب فيمكنك البدء بمجرد فتح أول مستند تصميم وإنشاء أول عمل لك، ولكن الاستمرار والاحتراف في هذا المجال يحتاج الكثير من الممارسة والصبر والتعلم، فالتصميم الجرافيكي علم دائم التطور وتحتاج إلى الممارسة الدائمة والإطلاع على كل جديد لتبقى في مقدمة هذا المجال، وكما أن مشوار الألف ميل يبدأ بخطوة فمشوارك التصميمي يبدأ بأول فكرة تصميمية تخطر على بالك وترسمها على ورقة. خاتمة كانت هذه مقدمة بسيطة حول التصميم الجرافيكي فأرجو أن تكون قد حققت منها الفائدة المرجوة وهديت إلى الطريق الصحيح لهذا المجال، وأنصحك بالاطلاع على سلسلة أساسيات تصميم الرسوميات وهي سلسلة متكاملة حول التصميم الجرافيكي فيها الفائدة النظرية التأسيسية لهذا المجال. أخيرًا، وإن كانت لديك أسئلة أخرى بخصوص هذا المجال فاكتبها لنا في التعليقات للإجابة عليها.
  17. الإصدار 1.2.0

    17835 تنزيل

    انتشر مصطلح العمل الحر في الآونة الأخير انتشار النار في الهشيم، وسبب ذلك جائحة كوفيد-19 التي ضربت العالم فقلبت الموازين، فالآن وبعد إلزام الدول للشعوب بالبقاء في المنازل وفرض قيود على نمط الحياة وحتى أسلوب العمل من أجل الحد من انتشار الوباء، تعرّف أغلب الناس طوعًا أو كرهًا إلى أسلوب العمل المستقل والعمل عن بعد من المنزل، واضطر كثير منهم إلى دخول سوق الإنترنت ليقدموا خدماتهم بشكل مستقل بعد إنهاء عقودهم مع شركاتهم بسبب تقليل الشركات لنفقاتها، وحتى الذي استمروا في عملهم ووظيفتهم اضطروا إلى تبني أسلوب العمل من المنزل إذ رأينا الكثير من الشركات التي أغلقت مقراتها ونقلها إلى أسلوب العمل عن بعد وهنا وجد الموظفون أنفسهم أمام نمط عمل غريب لم يعتادوه من قبل! وبات الكثير يسأل عن كيفية الدخول إلى هذا سوق العمل الحر وكيفية تبني أسلوب العمل من المنزل ويسألنا عن تجاربنا ومن أين يبدؤون وماذا يفعلون، لذا وجب علينا تقديم المساعدة والإجابات الوافية ومدُّ يَد العون لتوفر مرجع شامل يهدي الوافدين إلى ويرشد السالكين على طريق العمل الحر ونمط العمل عن بعد من المنزل، فكان هذا الكتاب! يبدأ الكتاب في أول فصل له بشرح مفهوم ثقافة العمل الحر والعمل عن بعد من المنزل واختلافهما عن العمل التقليدي كما يعرض واقع العالم العربي من العمل المستقل، ثم ينتقل في الفصل الثاني إلى التحدث عن سوق العمل الحر وعرض مجالاته وكيفية الدخول إليه. ينتقل الكتاب بعدها في الفصول التالية إلى شرح المهارات الواجب على كل عامل مستقل أن يمتلكها حتى يصبح عاملًا مميزًا له مكانته المرموقة في السوق ليتهافت أصحاب المشاريع على تسليمه العمل كلما برز اسمه بين العاملين في السوق، فيعرِّج على التسويق الذاتي ثم ينتقل إلى شرح كيفية إدارة المشروع من الناحية الفنية والمالية والتعامل مع العملاء أصحاب المشاريع وكيفية حل أي خلافات قد تطرأ. لم ننسَ أهمية صحة العامل المستقل والعامل عن بعد من منزله، فخصَّصنا فصلين نتحدث في أولهما عن المواضيع المتعلقة بالصحة النفسية والجسدية على حد سواء، بالإضافة إلى عرض أهم التحديات التي قد تواجه العامل من المنزل مثل الإجازات وإدارة الوقت وكيفية التعامل معها. عرجَّنا بعد ذلك في الفصل الذي يليه على الأمور المتعلقة ببيئة العمل، تلك البيئة التي سيمضي العامل البعيد فيها جل وقته، فعرضنا كيفية بناء بيئة العمل المريحة المثلى وتنظيمها وكيفية فصل بيئة العمل عن بيئة المنزل والأهل الملاصقة لها. تحدثنا عن التعهيد الخارجي في فصل كامل وهو مفهوم قد يلزم العامل المستقل لاحقًا لتوسيع عمله أو إنجاز مهام خارج اختصاصه، ثم انتقلنا في الفصل الأخير إلى التحدث عن أهم منصات العمل الحر العربية بمختلف أنواعها وكيفية إنشاء حسابات عليها لتطبيق كل ما تعلمناه سابقًا في الكتاب ودخول السوق من أوسع مداخله. يمكنك قراءة فصول هذا الكتاب مباشرةً على شكل مقالات، الموسومة بوسم «دليل العامل المستقل»، وإليك العناوين: مدخل إلى ثقافة العمل الحر الدخول إلى سوق العمل الحر على الإنترنت كيفية التسويق الذاتي في العمل الحر الإدارة الفنية للمشروع للعامل المستقل فن التعامل مع العملاء في العمل المستقل العناية بالصحة الجسدية والنفسية للعامل المستقل العناية ببيئة عمل العامل المستقل الإدارة المالية في العمل الحر ما يلزم العامل المستقل معرفته عن التعهيد الخارجي تعرف على منصات العمل الحر والعمل عن بعد
  18. التثبيت تحتاج إلى تثبيت PostgreSQL قبل البدء باستخدامه، ومن الممكن أن يكون مُثبّتًا بالفعل على موقعك، إما لأنه مُضمّن في نظام التشغيل أو لأن مدير النظام قد ثبته مسبقًا، وفي هذه الحالة عليك الحصول على معلومات حول كيفية الوصول إليه إما من توثيق نظام التشغيل أو من مدير النظام. يمكنك تثبيت PostgreSQL بنفسك إذا لم تكن متأكد من أنه متاح فعلًا أو أنك تستطيع استخدامه في تجربتك، والقيام بذلك ليس صعبًا، ويستطيع أي شخص لا يتمتع بأية امتيازات تثبيته. وإذا قمت بتثبيته بنفسك، راجع مقال «تثبيت Postgres والتعرف على أساسيات إدارتها لقواعد البيانات» لمزيد من المعلومات حول كيفية التثبيت، ثم عُد إلى هذا الدليل بعد اكتمال التثبيت. تأكد تمامًا من متابعة جزء إعداد متغيرات البيئة المناسبة. عليك القيام بأعمال إضافية إذا لم يقم مدير الموقع بإعداد بعض الأشياء بالطريقة الافتراضية، مثلًا، إذا كان خادم قاعدة البيانات آلةً بعيدةً متصلةً بشبكة أخرى، فيجب وضع اسم هذا الخادم كقيمة لمتغير البيئة PGHOST. وقد يحتاج متغير البيئة PGPORT إلى تهيئة أيضًا. باختصار، إذا قمت بتشغيل تطبيقك، وظهرت مشكلة عدم القدرة على الاتصال بقاعدة البيانات، يجب أن تستعين بمدير موقعك، أو إذا كنت أنت المدير، راجع التوثيق للتأكد من إعداد بيئتك بشكل صحيح، وإذا لم تفهم الفقرة السابقة، اقرأ القسم التالي. الأساسيات البنيوية يجب أن تفهم البنية الأساسية لنظام PostgreSQL قبل المضي في هذا الفصل، حيث أن فهم طريقة تفاعل أجزاء النظام مع بعضها سيجعل هذا الفصل أكثر وضوحًا. تستخدم PostgreSQL نموذج عميل/خادم. تتألف جلسة PostgreSQL من العمليات أو البرامج التالية: عملية الخادم، وهي التي تدير ملفات قاعدة البيانات، وتقبل اتصال تطبيقات العميل بقاعدة البيانات، وتنفذ إجراءات قاعدة البيانات نيابةً عن العميل، ويدعى برنامج الخادم باسم postgres. تطبيق العميل، وهو الواجهة الأمامية التي تَوَد تنفيذ عمليات قاعدة البيانات. تتنوع تطبيقات العميل في طبيعتها، يمكن أن تكون أداة موجهة للنصوص، أو تطبيقًا رسوميًا، أو خادم ويب يصل إلى قاعدة البيانات لعرض صفحات الويب، أو أداة مخصصة لصيانة قاعدة البيانات. بعض تطبيقات العميل توزع مع نظام PostgreSQL وأغلبها تُطوّر من قبل المستخدمين. من المعتاد أن تكون تطبيقات العميل/الخادم على مضيفين مختلفين، يتصلان عبر اتصال شبكة TCP/IP، يجب أن تضع هذا في الحسبان، لأن الملفات التي يمكن الوصول اليها على العميل يمكن ألا يتم الوصل إليها على خادم قاعدة البيانات، أو ربما يمكن الوصول إليها باستخدام اسم ملف مختلف. يستطيع خادم PostgreSQL التعامل مع عدة اتصالات من الزبائن وبنفس الوقت، حيث أنه يبدأ عملية جديدة لكل اتصال، ومن هذه النقطة يتواصل العميل مع عملية الخادم الجديدة بدون تدخل عملية postgres الأساسية، ولذلك فإن عملية الخادم الأساسية تعمل بشكل مستمر، وتنتظر اتصالات العميل، بينما تأتي وتذهب عمليات العميل والخادم المرتبطة. إنشاء قاعدة البيانات إن محاولة إنشاء قاعدة البيانات هو أول اختبار لمعرفة فيما إذا كنت تستطيع الوصول إلى خادم قواعد البيانات. يستطيع خادم PostgreSQL إدارة العديد من قواعد البيانات، يوجد عادةً قاعدة بيانات منفصلة لكل مشروع أو لكل مستخدم. من المحتمل أن يُنشِئ مدير موقعك قاعدة بياناتك، وفي هذه الحالة تتجاوز هذه الخطوة إلى الخطوة التي تليها. لإنشاء قاعدة بيانات جديدة باسم mydb نستخدم الأمر التالي: $ created mydb تكون هذه الخطوة ناجحة إذا لم ينتج أي استجابة، وفي هذه الحالة تستطيع تجاوز بقية هذا القسم. أما إذا رأيت رسالة كالتالي: Createdb: command not found فهذا يعني أنه لم يتم تثبيت Postgres بدقة، فإما أنه لم يتم تثبيته على الإطلاق، أو أنه لم يتم إعداد مسار بحث الصدَفة (shell) بحيث يتضمنه، وفي هذه الحالة اكتب الأمر مع المسار الكامل كالتالي: $ /usr/local/pgsql/bin/created mydb ربما يكون مسار موقعك مختلفًا، لذلك اتصل بمدير الموقع أو تفحّص تعليمات التثبيت من أجل التصحيح. إذا كانت الاستجابة بالشكل التالي: Created: could not connect to database postgres : could not connect to server : No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/ .s.PGSQL.5432"? هذا يعني أنه لم يتم تشغيل الخادم بعد، أو أنه لم يكن قد بدأ عندما توقع الأمر created أنه قد بدأ، وفي هذه الحالة أيضا يجب مراجعة تعليمات التثبيت أو استشارة مدير النظام. وإذا كانت الاستجابة بهذا الشكل: Created: could not connect to database postgres: FATAL: role "joe" does not exist حيث يُذكر اسم المستخدم الخاص بك. يحدث هذا عندما لا يُنشِئ المدير حساب مستخدم خاص بك، حيث أن حسابات مستخدمي Postgres مختلفة عن حسابات مستخدمي نظام التشغيل. فإذا كنت المدير، انظر إلى الفصل 21 للمساعدة في إنشاء حسابات المستخدمين، ولإنشاء أول حساب مستخدم يجب أن تكون مستخدم نظام التشغيل الذي نُصّب Postgres عليه. وربما تكون المشكلة هي اختلاف اسم مستخدم Postgres الخاص بك عن اسم مستخدم نظام التشغيل الخاص بك أيضًا، وفي هذه الحالة تحتاج استخدام الراية ‎-U، أو تعيين اسم مستخدم Postgres الخاص بك كقيمة لمتغير البيئة PGUSER. إذا كان لديك حساب مستخدم بدون صلاحية إنشاء قاعدة بيانات سترى الرسالة التالية: Created: database creation failed: ERROR: permission denied to create database إذا حدث هذا يجب عليك استشارة مدير الموقع، لأنه ليس جميع المستخدمين مصرّح لهم بإنشاء قواعد بيانات جديدة، وبالتالي يجب أن يمنحك مدير موقعك صلاحية إنشاء قواعد بيانات إذا لم تتمكن من ذلك. يجب عليك تسجيل الدخول من حساب المستخدم الذي شغّل الخادم إذا قمت بتثبيت Postgres بنفسك. يمكنك إنشاء قواعد بيانات بأسماء أخرى، حيث يسمح Postgres بأي عدد من قواعد البيانات للموقع المُعطى. يجب أن تبدأ أسماء قواعد البيانات بحرف وألا يتجاوز طولها 63 بايت. وإنشاء قاعدة بيانات بنفس اسم المستخدم الخاص بك هو الخيار الأفضل، حيث تفترض عدة أدوات اسم افتراضي لقاعدة البيانات، لذلك يمكن استخدام الأمر كما يلي: $ created يمكنك حذف قاعدة البيانات إذا كنت لا تريد أن يستخدمها أحد، فإذا كنت مُنشئ قاعدة البيانات mydb يمكنك تدميرها باستخدام الأمر: $ dropdb mydb اسم قاعدة البيانات في هذا الأمر ليس افتراضيًا، حيث تحتاج دائمًا لتحديده، هذا الأمر يحذف كل الملفات المرتبطة بقاعدة البيانات، لذلك يجب تنفيذه بحذر شديد. يمكنك الحصول على المزيد من المعلومات حول إنشاء وحذف قواعد البيانات بالرجوع إلى المقال «أساسيات استخدام صدفة psql» والمقال الذي يليه «استخدام أساسيات SQL في Postgres». الوصول إلى قاعدة البيانات تستطيع الوصل إلى قاعدة البيانات بمجرد إنشاءها، وذلك عن طريق: تشغيل البرنامج الطرفي التفاعلي والذي يُدعى psql، والذي يسمح بإدخال وتعديل وتنفيذ أوامر SQL. استخدام أداة الواجهة الأمامية الرسومية، مثل pgAdmin، أو تركيبة مكتبية تدعم اتصال قاعدة بيانات مفتوح(ODBC) أو اتصال قاعدة بيانات يستخدم لغة جافا (JDBC)، وذلك من أجل إنشاء قاعدة البيانات والتعامل معها. لن نتحدث في الفصل عن هذه الإمكانيات. كتابة تطبيق مخصص يستخدم واحدة من روابط اللغة المتاحة. يتم تشغيل واجهة psql من أجل قاعدة البيانات mydb باستخدام الأمر: $ psql mydb إذا لم تضع اسم قاعدة البيانات سيتم أخذ القيمة الافتراضية المساوية لاسم المستخدم الخاص بحسابك، وسيتم استقبالك في psql بالرسالة التالية: Psql (13.1) Type "help" for help Mydb=> ويمكن أن يكون السطر الأخير بالشكل التالي: Mydb=# يعني هذا أنك مدير قاعدة البيانات، وسيحدث هذا إذا قمت بتثبيت Postgres بنفسك، كونك مدير قاعدة البيانات يعني أنك لست خاضعًا للتحكم بالوصول. هذا ليس مهمًا هنا. إذا واجهت مشكلة في تشغيل psql راجع القسم السابق، حيث أن تشخيص مشاكل إنشاء قواعد البيانات createdb وتشغيل واجهة psql واحد، وإذا نجحت العملية الأولى ستنجح الثانية. آخر سطر طُبِع باستخدام psql هو الموجّه، ويشير إلى أن psql يصغي لك وبإمكانك كتابة استعلامات SQL في مساحة عمل مُصانة من قبل psql، حاول كتابة هذه الأوامر: Mydb=> SELECT version(); ناتج الأمر السابق: |version| *** |postgreSQL 13.1 on x86_64-pc-linux-gnu، compiled by GCC (Debian 4.9.2-10) 4.9.2، 64-bit| (1 row) {> Mydb=> SELECT current_date; ناتج الأمر السابق: |Date| *** 2016-01-07|| (1 row) Mydb=> SELECT 2 + 2; ناتج الأمر السابق: |column| *** |4| (1 row) يوجد في برنامج psql عدة أوامر غير موجودة في SQL، تبدأ بالرمز \، مثلًا الحصول على مساعدة يتم بالشكل: Mydb=> \h وللخروج من برنامج psql نكتب : Mydb=> \q حيث سيتم الخروج من psql والعودة إلى الصدفة command shell. ننصحك بالرجوع إلى كتاب الدليل العملي إلى قواعد بيانات PostgreSQL لمزيد من التفاصيل حول قواعد بيانات PostgreSQL. ترجمة وبتصرف لصفحات القسم Getting Started في موقع postgreSQL
  19. قواعد بيانات PostgreSQL هي عبارة عن نظام لإدارة قواعد البيانات العلائقية الغرضية اعتمادًا على مشروع بيركلي بوستغرس (POSTGRES)، الإصدار 4.2، الذي طُوِّر في قسم علوم الحاسوب في جامعة كاليفورنيا في مدينة بيركلي، حيث ابتكر بوستغرس (POSTGRES) العديد من المفاهيم المستخدَمة فقط في بعض أنظمة قواعد البيانات التجارية. يُعَدّ PostgreSQL مفتوح المصدر، وهو منحدر من شيفرة بيركلي الأصلي، كما يدعم جزءًا كبيرًا من معيار SQL، ويقدِّم العديد من المميزات، وهي: الاستعلامات المعقدة؛ المفاتيح الأجنبية؛ القوادح (triggers)؛ العروض القابلة للتعديل؛ سلامة العمليات؛ التحكم المتزامن متعدد النسخ. ويمكن توسيعها من قِبل المستخدِم بعِدة طرق، منها إضافة أشياء جديدة، مثل: أنواع بيانات؛ توابع؛ معاملات؛ توابع تجميع؛ عمليات فهرسة؛ لغات إجرائية. حيث يمكن لأيّ شخص استخدام (PostgreSQL) وتعديلها لأيّ غرض سواءً كان خاصًا، أو تجاريًا، أو أكاديميًّا. وذلك وفقًا للترخيص الليبرالي. لمحة موجزة من تاريخ PostgreSQL لقد اشتُقّ نظام إدارة قواعد البيانات العلائقية الغرضية المعروف باسم (PostgreSQL) من حزمة بوستغرس التي كُتِبت في جامعة كاليفورنيا في بيركلي. والآن، وبعد مضي أكثر من عقدين على تطويرها، فهي تُعَد قاعدة البيانات الأكثر تطورًا على الإطلاق. مشروع POSTGRES في بيركلي كان مشروع بوستغرس بقيادة البروفيسور مايكل ستون بريكر (Michael Stonebraker)، وتحت رعاية وكالة المشاريع البحثية المتطوِّرة للدفاع (DARPA)، ومكتب بحث الجيش (ARO)، ومؤسَّسة العلوم الوطنية (NSF)، وبرنامج الإنكليزية لغةً ثانية (ESL)، وغيرها. حيث بدأ تنفيذ بوستغرس عام 1986، وقد مُثِّلت المفاهيم الأولية للنظام في ston86، كما ظهر تعريف النموذج الأولي للبيانات في rowe87. وقد وُصِف تصميم النظام في ذلك الوقت في ston87a، أمّا الأساس المنطقي وبنية مدير التخزين فقد فُصلت في ston87b، لتُصدِر بوستغرس منذ ذلك الحين عدة إصدارات رئيسية، حيث شُغِّل أول نظام ديمووير (demoware) في عام 1987، ليظهر في مؤتمر (ACM-SIGMOD) عام 1988. وقد وُصِف الإصدار الأول في ston90a، والذي أُطلِق لعدد قليل من المستخدمين الخارجيين في حزيران عام 1989. وردًا على نقد أول نظام ston1989، فقد أُعيد تصميم النظام ston90b، وإطلاق الإصدار الثاني في حزيران 1990 مع النظام الجديد؛ أمّا الإصدار الثالث فقد ظهر عام1991، وأضاف دعمًا لعدة مدراء تخزين، ولمُنفِّذ استعلام محسّن، ولإعادة كتابة النظام؛ لتُركِِّز الإصدارات اللاحقة حتى بوستغرس 95 (Postgres95) على قابلية النقل والموثوقية. استُخدِمَت بوستغرس لتنفيذ تطبيقات العديد من مشاريع البحث والإنتاج، وتتضمن هذه الأخيرة تحليل بيانات مالية، وحزمة مراقبة أداء محرِّك الطائرة النفاثة، وقاعدة بيانات تتَّبع الكويكبات، وقاعدة بيانات معلومات طبية، والعديد من أنظمة المعلومات الجغرافية. كما استُخدمت بوستغرس مثل أداة تعليمية في العديد من الجامعات. وفي النهاية، أخذت تقنيات معلومات الوسترا (Illustra) التي دُمِجت مؤخَّرًا مع Informix التي تملكها شركة IBM بأخذ الشيفرة وتسويقها، ليُصبح مشروع بوستغرس في عام 1992، مديرًا للبيانات الرئيسي لـ Sequoia 2000 scientific computing project. وفي سنة 1993، تضاعف حجم المستخدمين الخارجيين، وأصبح جليًا أنّ صيانة النموذج الأولي للشيفرة والدعم، ستستغرق وقتًا طويلًا كان من الممكن استغلاله في بحوث قواعد البيانات، وانتهى مشروع بيركلي بالإصدار 4.2 في محاولة لتقليل عبء الدعم. Postgres 95 أضاف أندرو يو (Andrew Yu) وجولي تشين (Jolly Chen)، مُفسّر (SQL) إلى بوستغرس عام 1994، حيث أُطلِق إلى الويب باسم "بوستغرس 95"، ليجد طريقه في العالم خلَفًا لشيفرة بيركلي الأصلية . اعتمدت شيفرة "بوستغرس 95" كليًّا على لغة البرمجة سي (C) التي نُشِرت من قِبل المعهد الوطني الأمريكي للمعايير (ANSI)، والتي قُلِِّصت إلى 25%. حيث كان هناك عدة تغييرات حسّنت من الأداء، وقابلية الصيانة. فقد كان الإصدار 1.0x أسرع من 30-50% على مقياس ويسكونسن بينتشمارك (Wisconsin Benchmark) بالموازنة مع بوستغرس 4.2. وبصرف النظر عن إصلاح الأخطاء، فقد كانت التحسينات التالية هي التحسينات الرئيسية : استُبدِلت لغة الاستعلام (PostQUEL) بلغة (SQL) (التي تُنفَّذ في الخادم)، وسُميت مكتبة الواجهة libpq، بعد PostQUEL. كما لم تدعَم بعض الاستعلامات الجزئية حتى (PostgreSQL)، ولكن كان يمكن تقليدها في "بوستغرس 95" من خلال توابع (SQL) المُعَرّفة من قِبل المستخدِم، إلى جانب إعادة تنفيذ عملية إضافة توابع التجميع، إلى جانب إضافة دعم لعبارة الاستعلام (GROUP BY) . زُوِّدت ببرنامج جديد (psql) من أجل استعلامات (sql) التفاعلية، حيث تستخدم قراءة الترخيص العام (GPL) الذي حلّ مكان برنامج الشاشة القديم. دُعِمت مكتبة جديدة للواجهة الأمامية، وهي مكتبة (libpgtcl)، التي تعتمد على تقنية (TCL). حيث زُوِّد (pgtclsh) بأوامر (TCL)،وذلك لمقابلة برامج (TCL)مع خادم "بوستغرس 95". أُصلِحت واجهة الكائنات الكبيرة، فقد كانت الطريقة الوحيدة لتخزين الأشياء الكبيرة هي الكائنات الكبيرة المعكوسة (حيث حُذِف نظام الملفات المعكوس). أُزيل نظام مستوى النسخة (instance-level)، كانت القواعد لا تزال متوفرة مثل قواعد إعادة الكتابة. وُزِّع برنامج تعليمي مختصر يقدم ميزات SQL العادية مع ميزات بوستغرس 95 في شيفرة المصدر. استُخدِمَ الترخيص العام (GNU) بدلًا من توزيع برمجيات بيركلي (BSD) في البناء، حيث يمكن أن تُصرّف بوستغرس 95 باستخدام مجموعة مُصرّف ترخيص عام (GCC) غير مصحح (أُصلِحت محاذاة الأعداد العشُرية مضاعفة الدقّة). PostgreSQL اختير اسم جديد في عام 1996 وهو PostgreSQL، وذلك ليعكس العلاقة بين مشروع بوستغرس الأساسي، والاصدارات الحديثة المدمجة مع امكانيات (SQL)، حيث بدأ ترقيم الإصدارات من 6.0، وذلك كي تعود الأرقام إلى السلسلة الأصلية كما كان الحال في مشروع بيركلي. وأُشير إلى PostgreSQL باسم Postgres كاسم مستعار لسهولة اللفظ. كان التركيز خلال تطوير بوستغرس 95 على تحديد وفهم المشكلات الموجودة في شيفرة الخادم، بينما تحول التركيز في PostgreSQL إلى زيادة المميزات والقدرات على الرغم من استمرار العمل في جميع المجالات. يمكن العثور على مزيد من التفاصيل حول ما حدث في PostgreSQL في Appendix E. الأعراف استخدِمت الأعراف التالية في اختصار الأوامر: الأقواس ([ ]) تشير إلى أجزاء اختيارية، واستخدمت اشارة الاستفهام (?) بدلًا منها في اختصار أمر TCI الأقواس ({ }) و الخط العمودي (|) تشير إلى أنك يجب أن تختار أحد الاختيارات. النقاط (…) تعني أنه من الممكن تكرار العنصر السابق. وبينما كانت تزيد الوضوح، فقد سُبقت أوامر SQL ب <=، وسُبقت أوامر الصدفة بالرمز$ ، ومع ذلك فإنها لا تُرى. المدير بشكل عام، هو الشخص الذي يقوم بتثبيت الخادم وتشغيله. والمستخدم يمكن أن يكون أي شخص يستخدم أو يريد أن يستخدم أي جزء من نظام PostgreSQL. المزيد من المعلومات هناك العديد من مصادر المعلومات العربية حول PostgreSQL وفرتها أكاديمية حسوب وموسوعة حسوب وهي: قسم PostgreSQL في أكاديمية حسوب: يحوي القسم على الكثير من المقالات المفيدة النافعة حول مختلف المواضيع المتعلقة بقواعد بيانات PostgreSQL. كتاب الدليل العملي إلى قواعد بيانات PostgreSQL: كتاب عملي بسيط يشرح قواعد بيانات PostgreSQL من الصفر بدءًا ويغطي أغلب حالات استعمال قواعد البيانات والأوامر فيها. توثيق SQL في موسوعة حسوب: توثيق كامل شامل للغة SQL يحوي فيه أي ملاحظات أو تفاصيل متعلقة بقواعد بيانات PostgreSQL أهمها موضوع التوافيقة. ملاحظات للعاملين بلغة SQL: كتاب متقدم بعض الشيء يتحدث حول لغة SQL بأسلوب يتوقع من القارئ أن يكون عارفًا لأساسيات لغة SQL العامة التي يمكن استعمالها مع قواعد بيانات PostgreSQL. ترجمة -وبتصرف- لصفحات القسم Preface في موقع postgreSQL
  20. الإصدار 1.0.0

    13335 تنزيل

    مع الغياب شبه التام لأي مصادر مفيدة باللغة العربية عن مجالات الخصوصية والحماية والأمان الرقمي وتأمين الأجهزة الشخصية، جاء هذا الكتاب ليكون شارحًا لمفاهيم الحماية والأمان التي يحتاج إليها كل من يعيش في هذا العصر الرقمي ويستعمل مختلف الأجهزة الرقمية في شتى مجالات الحياة وذلك لتأمين نفسه وحماية بياناته التي يضعها في تلك الأجهزة. إنّ الأمان الرقمي موضوعٌ مهم للحديث عنه وليس شيئًا رفاهيًا أو تكميليًا، خصوصًا مع اطّراد عدد المستخدمين الجدد مع عدد انتهاكات واختراقات الأمان والخصوصية التي تحصل كلّ يوم. إنّ هذا الكتاب موجّهٌ بالدرجة الأولى إلى عموم من يستخدم الحواسيب والأجهزة الذكية ويهدف إلى توعيتهم بأهم المسائل المتعلقة بالأمان الرقمي، ولا يخلو من مواضيع ومعلومات مفيدة ومتقدمة حتّى للخبراء والمتخصصين في المجال، إذ أنّ هذا الكتاب ما هو إلّا محاولة لتحصين المستخدمين ولفت انتباههم إلى مجال الأمان الرقمي وطرق حماية أنفسهم في العالم الرقمي، ولا يعد الكتاب مرجعًا شاملًا لكلّ شيء في المجال. يبدأ الكتاب بعرض المفاهيم الأساسية التي يجب أن يمتلكها أيّ قارئ للكتاب، وهي مفاهيمٌ تعتمد عليها الكثير من الفصول الأخرى في الكتاب فلا غنى عنها بحالٍ من الأحوال، ثم ينتقل الكتاب إلى الحديث عن الوعي وأهميته، وقد قدّمنا موضوع الوعي على غيره لأنّه مبدأٌ عام يُمكن تطبيقه في مختلف مجالات الحماية الرقمية وليس شرحًا لطريقة تثبيت برنامج أو إضافة مثلًا، كما أنّه أهم طريقة لحماية المُستخدم نفسَه. ويأتي بعد هذين الفصلين مختلف الفصول التي تشرح اختيار خدماتٍ معينة أو طريقة تأمين أجهزة وأنظمة معينة. يجد القارئ في كلّ فصلٍ من هذه الفصول شرحًا للمفهوم المُراد تأمينه قبل الشروع بطريقة حمايته وتأمينه ولذلك يمكنك قراءة هذه المفاهيم بالترتيب الذي تريد بحسب حاجتك إن أردت ذلك رغم أنه ينصح بقراءتها وفق ترتيبها المتسلسل. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «الأمان الرقمي»، أو مباشرة مما يلي: الفصل الأول: لماذا يجب أن نحافظ على أماننا الرقمي؟ الفصل الثاني: مفاهيم تأسيسية عن الأمان الرقمي الفصل الثالث: الوعي في العالم الرقمي الفصل الرابع: اختيار العتاد والبرامج في العالم الرقمي الفصل الخامس: اختيار الخدمات والمزودات في العالم الرقمي الفصل السادس: تأمين الأشياء الأساسية المحيطة بك في العالم الرقمي الفصل السابع: النسخ الاحتياطي وحفظ البيانات في العالم الرقمي الفصل الثامن: التشفير واستعمالاته في العالم الرقمي الفصل التاسع: كلمات المرور: كيفية حفظها واستعمالها في العالم الرقمي الفصل العاشر: تأمين متصفحات الويب في العالم الرقمي الفصل الحادي عشر: الحماية من مواقع الإنترنت في العالم الرقمي الفصل الثاني عشر: ما يلزم معرفته عند الشراء والدفع عبر الإنترنت الفصل الثالث عشر: تأمين الهاتف المحمول في العالم الرقمي الفصل الرابع عشر: كيف تعرف أنك اخترقت في العالم الرقمي وماذا تفعل حيال ذلك؟ الفصل الخامس عشر: مواضيع متقدمة في الأمان الرقمي
  21. الإصدار 1.0.0

    14139 تنزيل

    ما زال التسويق يمثل محور العمل في أي شركة، فهو يتعلق بتحديد حاجات الزبائن وإشباعها من خلال توفير منتجات قيّمة وتوضيح مزاياها لهم، ويمكن اعتماد ما سبق تعريفًا موجزًا للتسويق ويعرّف هذا الكتاب القارئ على استراتيجيات التسويق وأدواته التي يستخدمها المسوقون لتسويق منتجاتهم. لقد حرص المؤلف في هذا الكتاب على إبراز مجالات التسويق المختلفة وكيفية الدمج بينها لبناء إستراتيجية تسويق مترابطة، لذلك عمد في هذا الكتاب إلى تعريف كل مجال من مجالات التسويق وتوضيح نقاط الضعف والقوة فيه، ثم تطرق إلى كيفية الدمج بين أدوات التسويق لبناء خطة إستراتيجية متكاملة. ويبدأ الكتاب بنقاش حول التخطيط بشكل عام، ثم يتناول بالتفصيل الخطوات الأولى لبناء الخطة التسويقية، ثم ينتهي بأفضل الأساليب المتاحة للمسوّقين. ويهدف الكتاب إلى التعريف بكيفية تخطيط برنامج تسويقي فعّال وتنفيذه وتقييمه من الألف إلى الياء. يتناول فصل "مقدمة إلى التسويق" تأثير الأحداث العالمية على أساليب التسويق، فيما يتطرق فصل "التسويق في الأسواق العالمية" إلى تأثير التسويق على العالم، كذلك يتناول الكتاب في جميع أجزائه أمثلة مختلفة من السوق العالمي لشركات على أرض الواقع، إذ تساعد الأمثلة والقصص الواقعية القارئ على الربط بين استيعاب النظرية وتطبيقها، وتتسم هذه الأمثلة بكونها حيّة ومعاصرة ومتنوعة، فهي تتراوح بين قائمة فورتشن لأكبر 500 شركة أمريكية، إلى الشركات الصغيرة الخاصة كذلك يتناول الكتاب أمثلة لشركات دولية من جميع الأحجام. يناقش الكتاب أيضًا في مواضع مختلفة منه أهمية التكنولوجيا وتأثيراتها المختلفة إذ لا يخفى أثر التكنولوجيا على أساليب التسويق، كما تُعد شبكة الإنترنت وقواعد البيانات وأجهزة التعقب ومحاكيات السوق أمثلة جيّدة تعكس مدى تأثير التكنولوجيا في عالم التسويق. بني هذا الكتاب على كتاب Introducing Marketing لمؤلفه Prof. John Burnett (البروفيسور جون بورنِت) المرخص تحت رخصة CC BY والذي ألف وشارك في تأليف عشرين كتابًا وما يربو على 60 بحثًا أكاديميًا، وقد تقاعد مؤخرًا بعد 41 عامًا من العمل محاضرًا في مجال التسويق. ولقد انصبّ معظم تركيز البروفيسور خلال السنوات العشرين الماضية على التسويق لصالح المنظمات غير الربحية وقد كانت حصيلة مجهوداته إقامة العديد من ورش العمل، ووضع الكثير من الخطط التسويقية، بالإضافة إلى تأليف كتاب بعنوان "Nonprofit Marketing Best Practices" (أفضل أساليب التسويق للمنظمات غير الربحية). ساهم بالعمل على هذا الكتاب، علاء أيمن ترجمةً، والطبيب نادر حوري والبروفيسور علي اليعقوبي مراجعةً وتدقيقًا، وجميل بيلوني تحريرًا وإشرافًا، وأخرجه فنيًا فرج الشامي. نرجو أن نكون قد وفقنا في هذا العمل بتوفير مرجع أكاديمي نافع يثري المكتبة العربية. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». نشرنا فصول هذا الكتاب على شكل مقالات مبسَّطة على الويب تحت الوسم «مدخل إلى التسويق» لتسهيل قراءتها: الفصل الأول: مقدمة إلى التسويق مقدمة إلى علم التسويق أنواع التسويق الأساسية مكونات التسويق الاستراتيجية الفصل الثاني: فهم السوق والتعامل معه فهم السوق والتعامل معه تجزئة المستهلكين في العملية التسويقية تجزئة الشركات في العملية التسويقية الفصل الثالث: بحوث التسويق وصناعة القرار بحوث التسويق وصناعة القرار التسويقي تصميم خطة البحث التسويقي تنفيذ خطة البحث التسويقي الفصل الرابع: فهم سلوك المستهلكين فهم سلوك المستهلكين العوامل المؤثرة في سلوك المستهلكين سلوك الشراء لدى الشركات الفصل الخامس: أثر العوامل الخارجية على عملية التسويق أبرز العوامل السياسية والاقتصادية والقانونية المؤثرة على عملية التسويق أهم الاتجاهات الاجتماعية المؤثرة على عملية التسويق الفصل السادس: التسويق في الأسواق العالمية التسويق العالمي: الأهداف والأسباب والمعوقات والمراحل كيف تؤثر البيئة المحيطة على التسويق العالمي؟ الفصل السابع: طرح المنتج وإدارته تعريف المنتج وأنواعه التخطيط للمنتج واستراتيجيات الدخول إلى السوق تطوير منتج جديد خطوة بخطوة الفصل الثامن: التواصل مع الأسواق الاتصال التسويقي المتكامل: تعريفه وأهدافه وأنواعه أدوات الاتصال التسويقي المتكامل الفصل التاسع: تسعير المنتج أهداف تسعير المنتج، واستراتيجياته المختلفة كيف تختار السعر الملائم للمنتج؟ الفصل العاشر: قنوات توزيع المنتج قنوات توزيع المنتج: مهامها، وأبرز مؤسساتها كيف تدير قنوات توزيع المنتج؟
  22. الإصدار 1.0.0

    13422 تنزيل

    يأخذ هذا الكتاب بيدك في أمثلة عملية ومتنوعة تغطي أساسيات SQL وأساسيات إدارة قواعد بيانات Postgres، وتمر على مزايا مهمة في Postgres تزيد من فاعلية الاستعلامات ووضوح عبارتها، ويصل هذا الكتاب إلى مواضيع متقدمة في إدارة قواعد البيانات كالنسخ الاحتياطي وتتبع استخدام الذاكرة، وبذلك يتميز بأنه مناسب للمبتدئ والمتوسط ويضع قدمك على سكة المستوى المتقدم في قواعد بيانات Postgres. بني هذا الكتاب بدايةً على دليل PostgresGuide لمؤلفه Craig Kerstiens المرخص تحت رخصة CC BY-NC أي كان ترجمةً لذلك الدليل فقط، ولكن لمَّا وجدنا الإصدار المستعمل فيه من Postgres قديمًا وينقص الدليل عدة مواضيع إضافية، آثرنا البناء عليه وتحسينه وإضافة كل ما نراه ناقصًا ليحقق الكتاب مبدأ 80/20. فيما يميزه عن غيره، فهو أننا اتبعنا في بداية العمل على هذا الكتاب قاعدة باريتو 80/20، حيث حرصنا على تغطية 20% من مواضيع PostgreSQL التي تُستخدَم في 80% من الحالات في الواقع والمجال العملي، إذ حاولنا الابتعاد عن التفاصيل غير العملية أو قليلة الاستخدام، أي أن هذا الكتاب لا يتطرق إلى شرح أو استخدام الأدوات المتقدمة والتي قد يندر استخدام بعضها، فلم نرد عرض شيء لا يستخدم إلا في حالات قليلة (تكون قد نسيتها إلى حين استعمالها ;-) ). ساهم بالعمل على هذا الكتاب، مصطفى عطا العايش تأليفًا، وجميل بيلوني تحريرًا وإشرافًا، وأخرجه فنيًا فرج الشامي. نرجو أن نكون قد وفقنا في هذا العمل بتوفير دليل عملي نافع يثري المكتبة العربية. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «المرجع الشامل إلى تعلم PostgreSQL»، أو من هنا مباشرةً مما يلي: الفصل الأول: نظرة عامة على Postgres وتاريخها الفصل الثاني: تثبيت Postgres والتعرف على أساسيات إدارتها لقواعد البيانات الفصل الثالث: أساسيات استخدام صدفة psql الفصل الرابع: استخدام أساسيات SQL في Postgres الفصل الخامس: مزايا متقدمة في Postgres الفصل السادس: أنواع بيانات خاصة في قواعد بيانات Postgres الفصل السابع: إدارة النسخ الاحتياطي في قواعد بيانات Postgres الفصل الثامن: أساسيات إدارة الذاكرة في قواعد بيانات Postgres الفصل التاسع: كيفية إدارة الأداء في قواعد بيانات Postgres الفصل العاشر: أوامر متقدمة في صدفة psql
  23. الإصدار 1.0.0

    60018 تنزيل

    لا يخفى على أي متعلم لمجال علوم الحاسوب كثرة الاهتمام بمجال الذكاء الاصطناعي وتعلم الآلة، وكذلك الأمر بالنسبة لمستخدم التقنية العادي الذي بات يرى تطورًا كبيرًا في الآلات والتقنيات التي تحيط به بدءًا من المساعد الصوتي الآلي في جواله وحتى سيارته وبقية الأشياء الذكية المحيطة به. تتوالى الاختراعات والاكتشافات يومًا بعد يوم وتتنافس كبرى الشركات حول من يحرز أكبر تقدم ليخطف الأضواء من غيره. ونظرًا لهذا الاهتمام، ولضعف المحتوى العربي وسطحيته في هذا المجال أيضًا، قررنا توفير مصدر عربي دسم لشرح مجال الذكاء الاصطناعي وتعلم الآلة نظريًا وعمليًا لذا وضعنا فهرس المحتوى آنذاك وبدأنا العمل. هذا الكتاب هو الجزء الأول النظري التأسيسي من أصل جزآن عن الذكاء الاصطناعي وتعلم الآلة، ويبدأ بعرض أهمية الذكاء الاصطناعي وتعلم الآلة عبر الإشارة إلى المشاريع والإنجازات التي قدَّمها هذا المجال إلى البشرية حتى يومنا هذا وكيف أثرت على كل مجالات حياتنا اليومية. ينتقل بعدها إلى لمحة تاريخية عن المجال وكيفية ولادته ومراحل حياته حتى يومنا الحالي. ستجد بعدئذٍ المعلومات الدسمة في الفصل الثالث الذي يشرح المصطلحات المتعلقة بمجال تعلم الآلة ويشرح أساليب تعليم الإنسان للآلة والأسس التي بنيت عليها عمليات تعليم الآلة (منها شرح طرائق تعلم الآلة التقليدية ثم التجميع والتعلم المعزز وحتى الشبكات العصبية والتعلم العميق). يعرض الفصل الأخير تحديات عملية تعليم الآلة وما علاقة البيانات فيها، ثم أخيرًا عرض خارطة طريق لأهم المفاهيم التي يجب أن تتقنها في حال أردت التوسع في المجال وإتقانه. بعد الانتهاء من الجزء الأول في هذا الكتاب وتأسيس المفاهيم والمصطلحات التي يقوم عليها مجال الذكاء الاصطناعي وتعلم الآلة، يمكنك الانتقال إلى الجزء الثاني وهو كتاب عشرة مشاريع عملية عن الذكاء الاصطناعي لبدء تطبيق مشاريع عملية تطبيقية مبنية على بيانات واقعية وتنفيذ أفكار مشاريع من الحياة العملية باستخدام الذكاء الاصطناعي. ساهم بالعمل على هذا الكتاب، محمد لحلح تأليفًا، وجميل بيلوني تحريرًا وإشرافًا، وأخرجه فنيًا فرج الشامي. أرجو أن نكون قد وُفقنَا في هذا العمل لسد ثغرةً كبيرةً في المحتوى العربي -كما خططنا لذلك- الذي يفتقر أشد الافتقار إلى محتوى جيد ورصين في مجال الذكاء الاصطناعي وتعلم الآلة. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «الذكاء الاصطناعي: أهم الإنجازات والاختراعات وكيف أثرت في حياتنا اليومية»، أو من مباشرةً من الآتي: الفصل الأول: الذكاء الاصطناعي: أهم الإنجازات والاختراعات وكيف أثرت في حياتنا اليومية الفصل الثاني: الذكاء الاصطناعي: مراحل البدء والتطور والأسس التي نشأ عليها الفصل الثالث: المفاهيم الأساسية لتعلم الآلة الفصل الرابع: تعلم الآلة: التحديات الرئيسية وكيفية التوسع في المجال
  24. الإصدار 1.0.0

    18339 تنزيل

    لا يخفى على أحد شهرة لغة SQL أو لغة الاستعلامات البنيوية (Structured Query Language) سواءً للمبرمجين أو الداخلين الجدد إلى عالم البرمجة وعلوم الحاسوب، فهي لغة برمجة متُخصِّصة في مجال واحد وهو معالجة وإدارة قواعد البيانات، وتعد اللغة القياسية لأنظمة إدارة قواعد البيانات (RDBMS)؛ وتُستخدم تعليمات وأوامر SQL -لمن لا يعرفها- لإجراء عمليات مباشرة على البيانات، مثل تخزينها في قاعدة بيانات، وجلبها منها والتعديل عليها بالإضافة إلى إنجاز مهام إدارية على قواعد البيانات من تأمين ونسخ احتياطي وإدارة للمستخدمين. ونظرًا لأهمية SQL سواءً للمبرمجين، وحتى لغير المبرمجين من العاملين في القطاعات التقنية أو للمهتمين بقواعد البيانات عمومًا، نضع بين يديك هذا الكتاب المبني على أحد أفضل الكتب الإنجليزية المتقدمة عن SQL، وهو كتاب "SQL Notes For Professionals" من موقع GoalKicker المبني بدوره على توثيق موقع StackOverflow وقد ساهم في إعداده عدد كبير من المساهمين على شبكة StackOverflow الشهيرة (إن أردت الاطلاع على قائمة المساهمين الكاملة، ارجع إلى قسم "Credits" في نهاية الكتاب الأصلي، SQL Notes For Professionals). يغطِّي هذا الكتاب المفاهيم الأساسية للغة SQL، مثل العمليات الأولية، وإدراج البيانات وحذفها واستخلاصها وتحديثها، وأنواع البيانات، وتصميم الجداول وتنفيذ الاستعلامات، إضافة إلى مفاهيم متقدمة، مثل المعارض views والدوال، وإدارة المستخدمين، وكيفية تأمين الشيفرة وغيرها من المواضيع. كما أنّ الكتاب غني بالأمثلة التطبيقية التي تشرح كل هذه المواضيع لترسيخ فهمها. هذا الكتاب ليس مثل غيره من الكتب والشروحات التي تشرح لغة SQL من البداية شرحًا مُبسَّطًا ومتسلسلًا وإنَّما يعتمد على مبدأ خير الكلام ما قل ودل في الشرح وترك الشيفرة تشرح نفسها بنفسها، فيحوي على كم كبير من الشيفرات والأمثلة العملية بالموازنة مع الشرح النظري ووُجِّه لمن يريد اتقان لغة SQL وصقل مهاراته فيها إذ سيساهم هذا الكتاب في رفع مستواك في لغة SQL وسيُملِّكك مهارات متقدمة في استعمال لغة SQL بالإضافة إلى بعض الخدع والالتفافات المتقدمة أيضًا. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». أنشئ العمل الأصلي من هذا الكتاب لأغراض تعليمية ولا يتبع إلى أي شركة أو مجموعة رسمية متعلقة بلغة SQL ولا حتى شبكة Stack Overflow، كما أن جميع العلامات التجارية المذكورة في هذا الكتاب تتبع إلى الشركات المالكة لها. يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «المرجع المتقدم إلى لغة SQL»، أو مباشرة مما يلي: المقال الأول: مدخل إلى SQL المقال الثاني: جلب الاستعلامات عبر SELECT في SQL المقال الثالث: التجميع والترتيب في SQL المقال الرابع: تنفيذ تعليمات شرطية عبر CASE في SQL المقال الخامس: البحث والتنقيب والترشيح في SQL المقال السادس: الدمج بين الجداول في SQL المقال السابع: تحديث الجداول في SQL المقال الثامن: معالجة الأخطاء والتعديل على قواعد البيانات في SQL المقال التاسع: حذف الجداول وقواعد البيانات في SQL المقال العاشر: مواضيع متقدمة في SQL المقال الحادي عشر: دوال التعامل مع البيانات في SQL المقال الثاني عشر: دوال التعامل مع النصوص في SQL المقال الثالث عشر: التعبيرات الجدولية الشائعة Common Table Expressions المقال الرابع عشر: مواضيع متفرقة في SQL المقال الخامس عشر: الاستعلامات الفرعية والإجراءات في SQL المقال السادس عشر: تصميم الجداول وترتيب تنفيذ الاستعلامات ومعلومات المخطط في SQL المقال السابع عشر: تنظيم وتأمين شيفرات SQL
  25. تحتاج لتعلم الاسترخاء. يكلّف الإجهاد في العمل الشركات مالًا، ولكن الأهم من ذلك بكثير هو تلك الأضرار الجسدية والعقلية التي يُسبّبها لجسدك. الحقيقة هي أن إدارة الإجهاد في العمل والسيطرة عليه تنطوي على كثير من الصعوبات هذه الأيام، وذلك بسبب التقدم السريع للتقنية. ففي كل مرة تُرسَل فيها إلينا رسالة إلكترونية جديدة، نُشعَر بذلك عن طريق وسائل عدّة، الأمر الذي يجعلنا أكثر ارتباطاً بعملنا. يدعو أشخاص إلى العمل على تحقيق التوازن بين العمل والحياة، أو تحقيق التكامل بين العمل والحياة، ولكني لا أستطيع أن أؤكد على مدى أهمية قطع الاتصال عن كل التطبيقات والأمور التي يمكن أن تصلك للعمل بحيث تتمكن من العودة في اليوم التالي مفعمًا بالنشاط. لا أدعوك لتحطيم معتقداتك عن الموضوع، ولكن مهما كان عملك، فإنه ليس بتلك الأهمية التي توليها له، مهما كانت درجة أهميته بالنسبة لك الآن. يجب على الشركات أن تتوقف عن مطالبة موظفيها ببذل الكثير من الجهد. لقد رأيت الكثير من المدراء الذين يحاولون امتصاص آخر قطرة من إنتاجية الموظف، ولكنه في الحقيقة ليس تصرفًا ذكيا. فبعد مرحلة معينة، لن تبقى شخصًا منتجًا. ما كنت أسعى لقوله خلال سنوات هو أني أفضل رؤية شخص يعمل لمدة 4 ساعات من العمل المتقن، على أن أره يعمل لمدة 8 ساعات مليئة بالأخطاء. دعونا أولًا نرى ما هي الأضرار التي يسببها لك الإجهاد، بعد ذلك دعونا نحاول معرفة كيفية التخلص من الإجهاد في العمل بطريقى مستدامة. لماذا يعد الإجهاد في العمل مشكلة كبيرة يظهر مسح أُجري عن الإجهاد في العمل أن 83٪ من الأميركيين يشعرون بالتوتر بسبب أمر واحد على الأقل في عملهم. وقد كانت الأجور المنخفضة وزيادة أعباء العمل من أهم مصادر القلق التي تحدث عنها العمال الأمريكيون. في الحقيقة من المهم أيضًا عدم قمع هذه المشاعر والتعامل معها حال ظهورها. فلتلك المشاعر تأثير خطير على صحتك. في دراسة أجريت على 120 مديرًا ومهندسًا في شركة فضاء، وجد الباحثون في كلية الطب بجامعة ستانفورد أن المقموعين يعانون من ضغط دم أعلى، حتى إنهم تفاعلوا بزيادة أكبر في ضغط الدم ضمن اختبار إجهاد بسيط، وذلك مقارنة مع الذين لا يعانون من القمع. ويشكّل الضغط على العمل مشكلة بالنسبة لأصحاب العمل، الأمر الذي يكلّف الشركات الأمريكية ما يقدر بـ 300 مليار دولار سنويًا وذلك بسبب التغيّب عن العمل، انخفاض الإنتاجية، دوران الموظفين، بالإضافة إلى الرسوم القانونية والطبية والتأمينية المباشرة. وهناك بحث آخر توصّل إلى أن الإجهاد المزمن يعادل تدخين 5 سجائر يوميّا. وأظهر البحث أن الأشخاص الذين يشعرون بالتوتر كانوا أكثر عرضة للإصابة بأزمة قلبية بنسبة 27٪. كما وجدت دراسة نُشرت في مجلة التحقيق السريري وجود صلة بين كل من الإجهاد والسرطان. وقد اختبر الباحثون عقارًا مضادًا للسرطان على مجموعتين من الفئران. وكانت المجموعة التي تعاني من توتر أكبر قادرة على التغلب على السرطان بنسبة أقل من الفئران التي تعاني من توتر. أساليب للحد من الإجهاد في العمل عمومًا، يجب أن تحيا ضمن نمط حياة صاف ونقي، وأن تحاول العثور على عدة طرق لتجعلك سعيدًا، فذلك من شأنه أن يساعدك على الإحساس بشعور أفضل تجاه الحياة، كما سيحدّ من التوتر الذي تعاني منه. 1. حاول أن تعيش أسلوب حياة صحّي لا يساعدك ذلك في تخفيف التوتّرفقط، بل يزيد من رفاهيتك على نحو عام، كما يؤثر على حالتك المزاجية طوال اليوم. يجعلك القيام بالتمارين الرياضية أكثر سعادة من خلال إفراز الإندورفين، كما سيقلل من احتمال تعرضك للتوتر لتكون غالبًا بمزاج جيد. سيساعدك تناول الطعام المناسب أيضًا في التخلص من الشعور بالكسل، كما سيجعلك متيقّظًا، الأمر الذي يساعدك على إدارة طاقتك بطريقة أفضل والتخلّص من التوتّر. 2. دبر طاقتك من المهم أن تكون قادرًا على الاستماع إلى جسمك لتدرك حاجته إلى الراحة، حتى لو كان لديك موعد تسليم قريب. سيؤدّي هذا الضغط حتمًا إلى الإجهاد، وهذا ليس أمرًا جيدا. إن كنت تقوم بالكثير من العمل دون أن تأخذ قسطًا كافيًا من الراحة، فإن ذلك سيؤدي إلى إرهاق الموظفين، الأمر الذي سيسبب لك المزيد من التوتر، لأنك لن تهدأ ولن تكون قادرًا على العمل، ناهيك عن الأضرار النفسية التي قد تلحق بك. 3. حدد الأولويات لقد قرأت ذات مرة في مكان ما منذ مدّة ليست ببعيدة أن لدى محترفي الأعمال في المتوسط من 30 إلى 100 مشروعًا يُطلَب منهم تدبير أمرها. نتحمّل جميعًا الكثير من عبء العمل، لكننا لن نستطيع إدارة كل ذلك العمل. لذا نحن بحاجة لأن نتعلم كيف نقول لا. لا توجد وسيلة تمكنك من إكمال جميع هذه المشاريع بطريقة مناسبة، لذا يجب عليك أن تقوم بتحديد الأولويات. عليك أن تقرر ما الذي سيحقق لك أكبر قيمة، وبعدها عليك بكل بساطة أن تستبعد البقيّة. 4. خذ وقتًا لنفسك عند النظر إلى أهمية التوقّف عن العمل وكيفية تأثيره على إنتاجيتنا، اكتشفت بأن أهم شيء فيما يتعلق بالوقت الذي تدعه لنفسك هو كيفية استخدامك لهذا الوقت. على سبيل المثال، العمّال الذين أعلنوا عن الأفكار السلبية (التفكير السلبي بشأن عملك) عادوا إلى العمل بتوتر أكبر من التوتر الذي كانوا يشعرون به عندما غادروا. لا تخف من تمضية وقت مع نفسك لتستعيد نشاطك، وعليك أن تدرك أن ذلك الوقت جيّد لصحتك النفسية، وسيساعدك على تجنّب الإجهاد في العمل. خاتمة الأمر الأساسي الذي ينبغي عليك استنتاجه ممّا سبق هو أنْ تتعلّم طريقة تقطع بها الاتصال مع العمل، وتسترخي. لا تحتاج لأن تتوتّر زيادة عن اللزوم حول أمور غالبًا خارجة عن سيطرتك. ترجمة –بتصرّف- لمقال Here’s How To Get Rid Of Stress At Work لكاتبه Jacob Shriar
×
×
  • أضف...