Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...
Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...
رقم الخبر | عنوان الخبر | التفاصيل |
---|---|---|
52,370 | انصهار ثقبين أسودين ـ رصد أكبر حدث كوني منذ الانفجار العظيم | تشكل الثقوب السوداء أحد أكبر ألغاز الكون التي تُحير العلماء كلما حاولوا فك طلاسمها. فقد تم مؤخرا رصد ظاهرة فريدة تتتعلق باصطدام ثقبين أسودين عملاقين بقوة جبارة اعتبرها البعض ثاني أكبر حدث كوني منذ الانفجار العظيم! |
52,369 | [فيديو] استخدام مدير الحزم npm |
نشرح في هذا الفيديو عن نظام إدارة الحزم وفوائد استخدامه. ولماذا نحن بحاجة إلى مثل هذه الأنظمة. نشرح في هذا الدرس كيفية استخدام سطر الأوامر لتنزيل حزم باستخدام مدير الحزم npm. ستتعرف أيضًا على الملف package.json وما هي الفائدة منه. وكذلك الأمر بالنسبة لمجلد node_modules وكيف يمكنك تضمين مكتبة من داخل هذا المجلد في مشروعك. |
52,368 | التشفير والتقطيع hashing في PHP |
التشفير وفك التشفير المتناظر لملفات كبيرة باستخدام OpenSSL
لا توفر PHP دالة مضمنة لتشفير وفك تشفير الملفات الكبيرة، يمكن استخدام الدالة openssl_encrypt لتشفير السلاسل النصية لكن يعد تحميل ملف كبير جدًا في الذاكرة فكرةً سيئةً، لذا يجب كتابة دالة تقوم بهذا العمل، يستخدم هذا المثال خوارزمية AES-128-CBC المتناظرة لتشفير أجزاء صغيرة من ملف كبير وكتابتها في ملف آخر. تشفير الملفات // (1) define('FILE_ENCRYPTION_BLOCKS', 10000); /** * تشفير الملف الممرر وحفظ النتيجة في ملف جديد باللاحقة ".enc" * * @param string $source مسار الملف الذي نريد تشفيره * @param string $key المفتاح المستخدم للتشفير * @param string $dest اسم الملف الذي نريد أن نكتب فيه الملف المشفَّر * @return string|false * تعيد هذه الدالة اسم الملف المنشأ أو FALSE إذا حدث خطأ */ function encryptFile($source, $key, $dest) { $key = substr(sha1($key, true), 0, 16); $iv = openssl_random_pseudo_bytes(16); $error = false; if ($fpOut = fopen($dest, 'w')) { // ضع شعاع التهيئة في بداية الملف fwrite($fpOut, $iv); if ($fpIn = fopen($source, 'rb')) { while (!feof($fpIn)) { $plaintext = fread($fpIn, 16 * FILE_ENCRYPTION_BLOCKS); $ciphertext = openssl_encrypt($plaintext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv); // استخدم أول 16 بايت من النص المشفر كشعاع التهيئة التالي $iv = substr($ciphertext, 0, 16); fwrite($fpOut, $ciphertext); } fclose($fpIn); } else { $error = true; } fclose($fpOut); } else { $error = true; } return $error ? false : $dest; }نحدد في الموضع (1) عدد الكتل التي يجب قراءتها من الملف المصدري من أجل كل جزء، بحيث تتألف كل كتلة من 16 بايت من أجل الخوارزمية الآتية: 'AES-128-CBC'لهذا، فإذا قرأنا 10000 كتلة نحمّل 160 كيلوبايت في الذاكرة، يمكنك تعديل هذه القيمة لقراءة/كتابة أجزاء أصغر/أكبر. فك تشفير الملفاتيمكنك استخدام هذه الدالة لفك تشفير الملفات المشفرة بالدالة السابقة. /** * فك تشفير الملف الممرر وحفظ النتيجة في ملف جديد مع حذف آخر 4 محارف من اسم الملف * @param string $source مسار الملف الذي نريد فك تشفيره * @param string $key المفتاح المستخدم لفك التشفير (ويجب أن يكون نفس المفتاح المستخدم للتشفير) * @param string $dest اسم الملف حيث يجب أن نكتب الملف الجديد بعد فك التشفير * @return string|false * تعيد هذه الدالة اسم الملف المنشأ أو FALSE إذا حدث خطأ */ function decryptFile($source, $key, $dest) { $key = substr(sha1($key, true), 0, 16); $error = false; if ($fpOut = fopen($dest, 'w')) { if ($fpIn = fopen($source, 'rb')) { // الحصول على شعاع التهيئة من بداية الملف $iv = fread($fpIn, 16); while (!feof($fpIn)) { $ciphertext = fread($fpIn, 16 * (FILE_ENCRYPTION_BLOCKS + 1)); // يجب أن نقرأ كتلة واحدة زيادة عن التشفير لفك التشفير $plaintext = openssl_decrypt($ciphertext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv); // استخدم أول 16 بايت من النص المشفر كشعاع التهيئة التالي $iv = substr($ciphertext, 0, 16); fwrite($fpOut, $plaintext); } fclose($fpIn); } else { $error = true; } fclose($fpOut); } else { $error = true; } return $error ? false : $dest; } طريقة الاستخدامإليك الشيفرة التالية لتعرف كيفية استخدام الدوال السابقة. $fileName = __DIR__.'/testfile.txt'; $key = 'my secret key'; file_put_contents($fileName, 'Hello World, here I am.'); encryptFile($fileName, $key, $fileName . '.enc'); decryptFile($fileName . '.enc', $key, $fileName . '.dec');ستنشئ هذه الشيفرة ثلاثة ملفات:
يوضح هذا المثال التشفير المتناظر باستخدام خوارزمية AES 256 بالنمط CBC وهو اختصار لـ Cipher Block Chaining، نحتاج شعاع تهيئة لذا نولّد واحدًا باستخدام دالة openssl، ويستخدم المتغير $strong لتحديد فيما إذا كان شعاع التهيئة المولَّد قويًا من ناحية التشفير. التشفير // طريقة التشفير $method = "aes-256-cbc"; // الحصول على طول شعاع التهيئة المطلوب $iv_length = openssl_cipher_iv_length($method); // ضبط للقيمة false من أجل السطر التالي $strong = false; // توليد شعاع التهيئة $iv = openssl_random_pseudo_bytes($iv_length, $strong); /* يحتاج شعاع التهيئة للاسترجاع لاحقًا لذا خزنه في قاعدة البيانات لكن لا تعيد استخدام نفس شعاع التهيئة لتشفير بيانات مرةً أخرى */ if(!$strong) { // رمي استثناء إذا لم يكن شعاع التهيئة قويًا من ناحية التشفير throw new Exception("IV not cryptographically strong!"); } // الرسالة السرية $data = "This is a message to be secured."; // كلمة المرور $pass = "Stack0verfl0w"; /* يجب أن تُرسل كلمة المرور بالطريقة POST عبر جلسة HTTPS، قمنا بتخزينها في متغير هنا لأغراض توضيحية * */ // التشفير $enc_data = openssl_encrypt($data, $method, $password, true, $iv); فك التشفير // استعادة شعاع التهيئة من قاعدة البيانات وكلمة المرور من الطلب POST // فك التشفير $dec_data = openssl_decrypt($enc_data, $method, $pass, true, $iv); التشفير وفك التشفير بالأساس 64إذا كانت البيانات المشفرة تحتاج للإرسال أو التخزين في نص قابل للطباعة عندها يمكن استخدام الدالتين ()base64_encode، و ()base64_decode على الترتيب. // تشفير الترميز بالأساس 64 $enc_data = base64_encode(openssl_encrypt($data, $method, $password, true, $iv)); // فك الترميز وفك التشفير $dec_data = openssl_decrypt(base64_decode($enc_data), $method, $password, true, $iv); دوال تعمية كلمة المروربما أنّ خدمات الويب الأكثر أمنًا تتجنب تخزين كلمات المرور بصياغة نص واضح فإنّ بعض اللغات مثل PHP توفر دوال تعميةصعبة الاستخراج hashing، ومتنوعة لدعم معيار الصناعة الأكثر أمنًا. يوفر هذا المثال توثيقًا لعمليات التعمية المناسب باستخدام PHP. إنشاء كلمة مرور معماةننشئ نسخة معماة لكلمة المرور باستخدام الدالة password_hash() لاستخدام تعمية معيارية بأفضل ممارسة للصناعة الحالية أو لاشتقاق المفتاح، في وقت كتابة هذا النص المعيار هو bcrypt مما يعني أنّ PASSWORD_DEFAULT له نفس قيمة PASSWORD_BCRYPT. $options = [ 'cost' => 12, ]; $hashedPassword = password_hash($plaintextPassword, PASSWORD_DEFAULT, $options);المعامل الثالث ليس إجباريًا. يجب أن نختار القيمة 'cost' بالاعتماد على تجهيزات خادم الإنتاج، ستجعل زيادتها كلمة المرور أكثر تكلفةً عند توليدها، كلما زادت تكلفة استخراج وفك الكلمة المعماة، استغرق الأمر وقتًا أطول عند محاولة شخص ما استخراجها؛ ومثاليًا يجب أن تكون التكلفة أعلى ما يمكن لكن من الناحية العملية يجب ضبطها بحيث لا تؤدي إلى بطء شديد في كل شيء، من المناسب أن تكون بين 0.1 و0.4 ثانية، إذا كنت محتارًا استخدم القيمة الافتراضية. في الإصدارات السابقة للإصدار 5.5، الدوال password_* غير متوفرة، يجب أن تستخدم حزمة التوافق للحصول على بديل لهذه الدوال، لاحظ أنّ حزمة التوافق تتطلب الإصدار PHP 5.3.7 أو أعلى أو إصدار يحتوي على التصحيح $2y (مثل ريدهات). إذا لم تكن قادرًا على استخدامها فيمكنك تنفيذ عملية تعمية على كلمة المرور باستخدام الدالة crypt()، وبما أنّ password_hash() تُنفَّذ كغلاف حول الدالة crypt() فلن تحتاج لفقدان أي وظيفة. المثال التالي هو تنفيذ بسيط للتعمية بالمعيار bcrypt والتوافق مع password_hash() ومن غير المضمون أن يحافظ على نفس قوة تشفير التنفيذ الكامل للدالة password_hash(). إضافة غُفْل في عملية تعمية كلمة المرورعلى الرغم من موثوقية خوارزمية التشفير إلا أنّه ما يزال يوجد ثغرة تستهدف جداول قوس قزح ولذا ينصح باستخدام غُفْل salt، والغفل بالعربية هو شيء ما يُضاف لكلمة المرور قبل تعميتها لجعل السلسلة النصية المصدر فريدة (انظر كتاب «علم التعمية واستخراج المعمى عند العرب»)، بالنظر إلى كلمتي مرور متطابقتين فإنّ نتيجة التعمية لهما ستكون فريدة أيضًا لأن الأغْفَال المضافة إليها فريدة. يعد إضافة الأغفال العشوائية أحد أهم أجزاء أمان كلمة المرور الخاصة بك، وهذا يعني أنّه حتى مع جدول البحث lookup table لكلمات المرورة المعماة المعروفة فإنّ المهاجم لن يتمكن من مطابقة كلمة المرور المعماة الخاصة بالمستخدم مع كلمة المرور المعماة في قاعدة البيانات بسبب استخدام أغفال مختلفة، يجب أن تستخدم دائمًا أغفال عشوائية وقوية من ناحية التشفير اقرأ المزيد. باستخدام خوارزمية bcrypt ودالة password_hash() تُخزَّن أغفال النص الأصلي وأغفال النص المعمى الناتج مما يعني أنّه يمكن نقل النص المعمى عبر أنظمة ومنصات مختلفة وستبقى متطابقة مع كلمة المرور الأصلية. في الإصدارات السابقة للإصدار 7.0 يمكنك استخدام الخيار salt لتعريف الأغفال العشوائية الخاصة بك على الرغم من عدم التشجيع على هذا الإجراء. $options = [ 'salt' => $salt, ];ملاحظة: إذا أهملت هذا الخيار ستولّد الدالة password_hash() غُفْلًا عشوائيًا لكل كلمة مرور مقطعة. بدءًا من الإصدار PHP 7.0.0 أُهمل خيار إضافة الغُفْل ومن المفضل الآن استخدام الغُفْل المولّد افتراضيًا. ترقية كلمة مرور معماة موجودة إلى خوارزمية أقوىإذا كنت تستخدم طريقة PASSWORD_DEFAULT لتجعل النظام يختار الخوارزمية الأفضل لتعمية كلمات المرور بها، مع زيادة قوة الخوارزمية الافتراضية قد ترغب في إعادة تعمية كلمات المرور القديمة عندما يسجل المستخدمون الدخول. <?php // حدد أولًا إذا كانت كلمة المرور الموفرة صحيحة if (password_verify($plaintextPassword, $hashedPassword)) { // حدد الآن إذا كانت النسخة المعماة الموجود قد أُنشئت بخوارزمية لم تعد افتراضية بعد الآن if (password_needs_rehash($hashedPassword, PASSWORD_DEFAULT)) { // أنشئ كلمة معماة جديدة مع الخوارزمية الافتراضية الجديدة $newHashedPassword = password_hash($plaintextPassword, PASSWORD_DEFAULT); // ثم احفظه في مخزن بياناتك // $db->update(...); } } ?>إذا لم تكن الدوال password_* متوفرةً في نظامك ولا تستطيع استخدام حزمة التوافق، فعندها يمكنك تحديد الخوارزمية واستخدامها لإنشاء التعمية الأصلية بطريقة مشابهة للتالي: <?php if (substr($hashedPassword, 0, 4) == '$2y$' && strlen($hashedPassword) == 60) { echo 'Algorithm is Bcrypt'; // يحدد "cost" مدى قوة إصدار Bcrypt preg_match('/\$2y\$(\d+)\$/', $hashedPassword, $matches); $cost = $matches[1]; echo 'Bcrypt cost is '.$cost; } ?> التحقق من كلمة المرور مقابل كلمة معماةتوفر الدالة password_verify() المدمجة بدءًا من الإصدار PHP 5.5، إمكانية التحقق من صحة كلمة مرور مقابل كلمة معماة مقابلة لها، أو غير مقابلة. <?php if (password_verify($plaintextPassword, $hashedPassword)) { echo 'Valid Password'; } else { echo 'Invalid Password.'; } ?>تخزن كل خوارزميات عملية التعمية المدعومة معلومات تحدد آلية التعمية المستخدمة، لذا لا حاجة للإشارة إلى الخوارزمية المستخدمة لتعمية كلمة المرور الأصلية. إذا لم تكن الدوال password_* متوفرةً في نظامك ولا تستطيع استخدام حزمة التوافق، فيمكنك التحقق من كلمة المرور باستخدام الدالة crypt()، لاحظ أنه يجب اتخاذ احتياطات محددة لتجنب هجمات التوقيت. <?php // غير مضمون أن يحافظ على نفس قوة تشفير تنفيذ password_hash() الكامل if (CRYPT_BLOWFISH == 1) { // تتجاهل crypt() كل المحارف التي تتجاوز طول الغفل، لذا يمكننا تمرير ?كامل كلمة المرور المعماة $hashedCheck = crypt($plaintextPassword, $hashedPassword); // هذه موازنة وقت ثابت أساسية تعتمد على التنفيذ الكامل المستخدم في `password_hash()` $status = 0; for ($i=0; $i<strlen($hashedCheck); $i++) { $status |= (ord($hashedCheck[$i]) ^ ord($hashedPassword[$i])); } if ($status === 0) { echo 'Valid Password'; } else { echo 'Invalid Password'; } } ?>ترجمة -وبتصرف- للفصول Cryptography - Password Hashing Functions من كتاب PHP Notes for Professionals book |
52,367 | مجموعة نصائح لتحسين ظهور موقعك في محركات البحث |
مجموعة نصائح لتحسين ظهور موقعك في محركات البحث
لقد أصبحت مواقع الويب اليوم ضرورةً مُلحّةً في تحديد مكانة العلامة التجارية وهويتها، كما باتت المنافسة بين مواقع الويب هائلة، إذ تُطلَق آلاف مواقع الويب على الشبكة حول العالم كل يوم. لذا فإن أردْت تصدر موقعك لنتائج البحث، فعليك تحسين ظهور الموقع على محركات البحث بهدف تحسين تجربة المستخدِم الذي يزور موقعك أيضًا. تُعرَّف تجربة المستخدِم بأنها رحلة زائر الموقع لتصفح موقعك، حيث تكون هذه التجربة مسؤولةً عن اختيار المستخدِم التفاعل مع خدمات موقعك، أو الاكتفاء بتصفّحه. تعمل عملية تحسين تجربة المستخدِم وتحسين ظهور موقعك في نتائج محركات البحث على توفير التجربة الأفضل لزوار الموقع، وتحويل هذه الزيارة إلى تفاعل بين الموقع والمستخدِم، وفيما يلي بعض النصائح التي من شأنها تحسين ظهور موقعك في نتائج محركات البحث الشهيرة. تحسين توافق موقعك مع شاشات الهواتف الذكيةيتصفح معظم مستخدمو الإنترنت اليوم مواقع الويب بواسطة هواتفهم الذكية بمعدل أعلى بكثير من تصفحهم باستخدام الحاسوب، ولذلك يحتاج موقعك إلى التكيف مع شاشات هذه الأجهزة لتوفير تجربة مريحة للمستخدِمين، بغض النظر عن الجهاز الذي يستخدمونه للتصفح، فقد لا يتشابه تصفح المستخدِمين لمواقع الويب من خلال هواتفهم الذكية، مع تصفحهم لها باستخدام الحاسوب، إذ ينظر المستخدِم إلى محتوى الموقع بنظرة سريعة أثناء التصفح، لذلك احرص على أن يكون موقعك متوافقًا مع شاشات الهواتف الذكية، وفوري التحميل. استخدام أزرار الدعوة إلى القيام بإجراء معينلكي تُبقي الزوّار في موقعك لفترة أطول، فمن الضروري أن تستخدم أزرار الدعوة إلى تنفيذ إجراء معين، حيث تزود هذه الأزرار المستخدِم بفرصة التفاعل ضمن الموقع، مما سيبقي المستخدِم في حالة انتباه وتفاعل لفترة أطول، إذ تعمل هذه الأزرار مثل إشارات تساعد المستخدِم على الانتقال من خطوة إلى أخرى، فعندما تُضمّن صفحات موقعك أزرارًا من نوع "تعلم المزيد"، أو"تسجيل الدخول" مثلًا، فإنك بهذا ستساعد المستخدِم على التفاعل مع موقعك وإبداء اهتمامه بالمحتوى، مما سيحسن ظهور موقعك في نتائج محركات البحث وسيقلل معدلات الارتداد. تضمين تصاميم تناسب محركات البحثلكي تحصل على تجربة مستخدِم مثالية لموقعك، وظهور فعّال ومتقدم في محركات البحث، فعليك التركيز على التصميم، ولتحقيق ذلك فلابد من أن يكون موقعك سهل الفهرسة من قِبل محركات البحث، إذ لو فشلت محركات البحث في فهرسة محتوى موقعك، فلن يظهر في نتائج محركات البحث المتعلقة به عندما يبحث المستخدِمون عن الخدمات والمنتجات التي يقدِّمها موقعك. تتمثل إحدى الطرق التي تساعد محركات البحث على فهرسة موقعك في إضافة علامات العنوان لموقعك، مما سيساعد برمجيات زواحف الويب على الوصول إلى صفحات موقعك وفهرسته، كما تُعَدّ إضافة إمكانية التنقل بين صفحات موقعك أمرًا مهمًا جدًا، حيث تمنح الزوار القدرة على استكشاف موقعك، مما سيُسهّل على محركات البحث عملية الفهرسة. ركز على جودة المحتوىالهدف الأساسي لموقعك هو المحتوى؛ إذ يساعد محتوى الموقع على إيصال خدمات علامتك التجارية إلى المستخدِمين، وبإمكانك استخدام أيّ نوع من المحتوى لإيصال أفكارك للزوار، سواءً كان إنشاء مدونة، أو مقاطع فيديو، أو كتبًا إلكترونية، أو حتى رسوم توضيحية؛ فعندما يبحث المستخدِمون مثلًا عن معلومات حول موضوع معين يثير اهتمامهم، وتظهر مدونتك في الصفحة الأولى من نتائج بحث المحرك، فسيتفاعل الزوّار مع هذا المحتوى، وسيصبح موقعك محطّ اهتمام وذو مصداقية بالنسبة للزوار، وسيصبّ ذلك كله في تحسين تجربة المستخدِم ونتائج محركات البحث أيضًا. استخدام العبارات البديلة في حال عدم ظهور الصورعندما يكون اتصال المستخدِم بالإنترنت ضعيفًا نوعًا ما أثناء تصفح موقع ويب معين، فسيكون تحميل محتوى الموقع بطيئًا، وستحتاج الصور وقتًا أطول لتظهر على الشاشة، لذا ستُعطى أولوية العرض للمحتوى المكتوب، بحيث يحصل الزائر على بعض المعلومات ريثما يكتمل تحميل محتوى صفحة الويب. في هذه الحالة، ستظهر مساحة بيضاء خالية مكان الصور، مما قد يربك المستخدِم أو يتسبّب بنفاذ صبره على الانتظار حتى اكتمال العرض، وهنا ستساعد العبارات البديلة على تزويد المستخدِم بوصف للصورة ريثما تظهر أمامه من جهة، وستساعد محركات البحث على معرفة علاقة هذه الصور بموقعك من جهة أخرى. تحسين سرعة عرض صفحة الموقعحتى وإن تفوّق ترتيب موقعك في نتائج محركات البحث، فقد بقي أمامك تحدٍّ أخير قبل عرض محتوى موقعك كاملًا أمام المستخدِم. تُعَدّ سرعة تحميل صفحة الويب عاملًا أساسيًّا يجب أخذه بالحسبان، فقد يواجه موقعك مستخدمًا لا يطيق انتظار استجابة المخدّم لتحميل الصفحة، فيعود مباشرةً إلى صفحة نتائج محرك البحث ليزور موقعًا آخر ويحصل على ما يريد. لذلك يجب أن تركّز على سرعة تحميل وعرض موقعك، خصوصًا لشاشات الهواتف المحمولة، إذ أنّ لها تأثيرًا بالغًا في رفع ترتيب موقعك في نتائج محركات البحث. عرض رموز الأمانيلعب عامل الأمان في الموقع الإلكتروني دورًا أساسيًّا في تحسين تجربة المستخدِ، حيث تتجلّى أهمية عامل الأمان بطريقة أوضح في مواقع التجارة الإلكترونية، أين يحتاج المستخدِمون لإدخال تفاصيل بطاقاتهم المصرفية ومعلوماتهم الشخصية، فإذا زودْت موقعك بالحماية المطلوبة، فستضمن ثقة المستخدِمين، كما ستساعد محركات البحث على تعريف موقعك بوصفه موقعًا إلكترونيًا محميًا وآمنًا. إذ لما يرى المستخدِمون رموز الأمان معروضةً على موقعك، فسيشعرهم ذلك بالأمان لتصفح موقعك والتفاعل معه بثقة. بسّط بنيان موقعك قدر الإمكانيُقصد ببنيان الموقع، طريقة ترتيب صفحاته، إذ سيُسهّل البنيان البسيط والمريح إيجاد وفهرسة موقعك من قِبل محرّكات البحث، ومن الضروري ألا تبعد صفحات الموقع عن الصفحة الرئيسية أكثر من أربع نقرات مما سيساعد المستخدِمين على تصفح موقعك بأريحية ودون ارتباك. الأولوية لمحتوى الموقعيجب أن يدرك مصمم الويب مدى أهمية وضوح محتوى الموقع بذاته، وألّا تؤثر المبالغة في استخدام الجماليات على جودة عرض المحتوى، إذ يحتاج الزائر إلى فهم محتوى صفحات موقعك للتفاعل معه والتنقل بين صفحاته، ومن المهم الانتباه إلى أنّ الصفحات المختلفة تحتاج إلى كميات مختلفة من المحتوى ضمنها. فعلى سبيل المثال، يجب أن يكون محتوى صفحة مبيعات ما مُختصرًا، ومُكثّفًا، ومعروضًا بطريقة مثيرة للاهتمام. كتابة الكلمات المفتاحية المناسبة وأوصاف تعريفية أفضل Metaتساعد الكلمات المفتاحية والأوصاف التعريفية على فهم موقعك والهدف من محتواه من قِبل محركات البحث، كما تساعد الكلمات المفتاحية الناس على فهم محتوى الموقع وخدماته، إذ عندما يقتنع المستخدِم بأن موقعك يضم الإجابة المثالية التي يبحث عنها، فسينقر على رابط موقعك لزيارته بغض النظر عن ظهوره في المرتبة الثالثة أو الرابعة في صفحة نتائج محرك البحث، لذلك فمن المفيد التركيز على تضمين كلمة ذات صلة بمحتوى موقعك في الوصف التعريفي. تحسين العناصر المرئية بأنواعهاتلعب الأنواع المختلفة من العناصر المرئية دورًا مهمًّا في تحسين ترتيب مواقع الويب، ويتضمن ذلك وجود صور ومقاطع فيديو عالية الجودة على صفحات موقعك، كما أنّ من الضروري تحقيق التوازن بين جودة ملفات العناصر المرئية وأحجامها، لأنّ الملفات ذات الأحجام الكبيرة تؤثر سلبًا على المساحة التخزينية للموقع وسرعة تحميل محتواه. إذ يُفضَّل وجود صفحة تحمل اسم "سيكون الموقع متاحًا قريبًا" مثلًا، بدلاً من انتظار إضافة كافة صفحات الموقع، كما يجب أن تعكس ملفات الوسائط المختلفة الهدف من موقعك، وأن تنسجم مع بعضها لتحقيق ذلك. أضِف أيقونات منصات التواصل الاجتماعي إلى موقعكتُعَدّ أزرار المشاركة مع منصات التواصل الاجتماعي أساسيةً في صفحات الويب. فإذا سهّلْت على مستخدمي موقعك مشاركة المحتوى عبر منصات التواصل الاجتماعي، فسيشجعهم ذلك على تصفح موقعك والتفاعل مع محتواه. ومن المهم أن تنسجم طريقة عرض هذه الأزرار مع تصميم صفحات الموقع. التخفيف من العبء البرمجي لاستخدام لغة الجافاسكريبت
تؤثر المبالغة في استخدام شيفرات الجافاسكريبت في برمجة كافة صفحات موقعك على تصنيفه في نتائج محركات البحث، فعندما تُطلق موقعك على الشبكة، فستذهب برمجيات زواحف الويب إلى محتوى موقعك وتمسحه بعمق لفهرسته في قائمة نتائج محركات البحث التي تظهر في صفحة الويب، لذا فإن استخدمت شيفرات الجافاسكريبت بإفراط، فقد تفشل عمليات الفهرسة تلك، لذلك احرص على إنشاء صفحات بسيطة ومنظمة برمجيًّا قدر الإمكان. ستساهم هذه النصائح في تحسين تجربة زوار موقعك مما سيحّن ظهوره في نتائج محركات البحث. ترجمة وبتصرّف للمقال 13 UX Tips That Will Improve Your Website’s SEO لصاحبه Harsh Raval. |
52,357 | الملفات والمجلدات في ويندوز 10 |
تُعَدّ الملفات والمجلدات بمثابة حجر الأساس لنظام التشغيل، لذلك يجب علينا تعلّم كيفية التعامل معها، وكذا كيفية استخدامها وتنظيمها. يوفر ويندوز 10 العديد من الأدوات والخيارات للتعامل معها وتنظيمها، بما في ذلك إنشائها، وفتحها، ونقلها، ونسخها، وحذفها، والبحث عنها، وإخفائها، وغير ذلك من العمليات المختلفة التي يمكننا تنفيذها عليها. ما هي الملفات والمجلدات؟الملفات هي عناصر لتخزين البيانات، أو المعلومات، أو الإعدادات، أو الأوامر، التي تُستخدم في برامج الحاسوب. بحيث تكون على شكل رموز، ويُستخدم المجلد لتنظيم الملفات المختلفة ليكون من الممكن نقل الملفات داخل أيّ مجلد. ومن أشهر أنواع الملفات:
يستخدم ويندوز تطبيقًا خاصًا للتعامل مع الملفات، وعرضها، وتنظيمها، وهو ما يسمى بمُستكشف الملفَّات (مُستكشف النوافذ سابقًا). حيث يمكن فتح مُستكشف المَلفَّات من خلال الضغط على رمز مُستكشف المَلفَّات الموجود في شريط المهام، أو من خلال الضغط المزدوج على أيّ مجلد، لتُفتح نافذة مُستكشف المَلفَّات تلقائيًا. واجهة مستكشف الملفات
عرض: يسمح هذا التبويب بتعديل طريقة عرض ويندوز للملفات والمجلدات، حيث يمكن تفعيل أجزاء إضافية تعرض المزيد من المعلومات حول الملفات، كما يمكن تعديل تصميم عرض الملفات والمجلدات، وفرزها. العمليات الخاصة بالملفات والمجلداتهناك العديد من العمليات التي يمكن من خلالها لمستخدمي ويندوز التحكم بالملفات والمجلدات الخاصة بهم، وتنظيمها. وهذه العمليات هي: 1. فتح الملفات والمجلداتيمكن فتح الملفات والمجلدات، وتصفح محتواها بعدَّة طرق، وهي الآتية:
عند التعامل مع العديد من المجلدات والملفات، يُصبح من الصعب إيجاد الملفات الذي يحتاجها المُستخدِم، لذلك يتيح ويندوز نقل الملفات إلى المجلدات المختلفة، وهو ما يسمى بعملية التنظيم. حيث يمكن نقل الملفات أو المجلدات بعدة طرق كما يأتي:
يمكن لمستخدمي ويندوز إنشاء المجلدات، وذلك لتنظيم مختَلف الملفات وتسهيل إيجادها. ونستطيع عمل ذلك بعدة طرق هي:
يتكون اسم الملف في ويندوز من ثلاثة أجزاء، وهي اسم الملف، ثم نقطة "."، ثم امتداد الملف أي نوعه، فإذا كان اسم الملف الكامل هو research.docx مثلًا، فسيكون اسمه هو research، أما نوعه فهو docx بمعني مستند وورد. يتيح ويندوز للمستخدمين إمكانية تغيير أسماء الملفات والمجلدات بعد إنشائها، وذلك من خلال عدة طرق كما يأتي:
يمكن لمستخدمي ويندوز التخلص من الملفات والمجلدات التي لا يحتاجون إليها، إما عن طريق إزالتها نهائيًا من الجهاز، أو عن طريق نقلها إلى سلة المحذوفات، بحيث يستطيعون استعادة تلك الملفات أو حذفها نهائيًا من هناك أيضًا، كما يمكن حذف الملف بعدة طرق هي:
يتيح ويندوز خاصية تحديد أكثر من ملف ومجلد في نفس الوقت، وذلك لإجراء العمليات عليها، مثل: النسخ، أو النقل إلى مجلد آخر. حيث يمكن تحديد الملفات والمجلدات بعدة طرق هي كالآتي:
عند ازدياد عدد الملفات والمجلدات على الجهاز، فسيصبح من الصعب تتبع جميع هذا البيانات، لذلك يمكِّن نظام تشغيل ويندوز المستخدِمين من البحث عن الملفات الموجودة في الجهاز وذلك بعدة طرق منها:
يخفي ويندوز بعض ملفات النظام الأساسية عن المُستخدِم، وذلك من أجل حماية هذه الملفات حتى لا تُحذف بالخطأ من قِبَل المستخدِم ويتسبب في إتلاف النظام، كما يتيح ويندوز للمستخدِمين إمكانية إظهار الملفات والمجلدات المخفية، وذلك عن من خلال عدة طرق هي:
يتيح ويندوز للمستخدِمين إمكانية إخفاء الملفات والمجلدات الخاصة بهم، وذلك باتباع الآتي:
هو ملف يرتبط بملف أو مجلد آخر، وعند الضغط على ملف الاختصار، فسينتقل مباشرةً إلى المجلد المطلوب، أو يفتح الملف المرتبط بهذا الاختصار، كما يمكن للمستخدِم إنشاء ملف الاختصار الخاص به وذلك باتباع الخطوات الآتية:
من الممكن إنشاء اختصار لأيّ ملف أو مجلد على سطح المكتب بسهولة، عبر النقر بزرّ الفأرة الأيمن على الملف أو المجلد، ثم اختيار "إنشاء اختصار في سطح المكتب" من القائمة المنبثقة. خصائص المجلديمكن لمستخدمي ويندوز التحكم بخصائص المجلدات، وكذا التعديل على هذه الخصائص بما يتناسب معهم، وذلك عن طريق مربع حوار "خصائص المجلد". حيث يمكن فتح خصائص المجلد عن طريق الضغط بزرّ الفأرة الأيمن على المجلد المطلوب، ثم اختيار "خصائص" من قائمة الخيارات. يحتوي مربع الحوار على عدة أقسام، وهي الآتية:
ون درايف هي خدمة توفر للمستخدِم إمكانية تخزين ملفاته في مساحة تخزينية على الإنترنت مجانًا، بحيث يمكن الوصول إلى هذه الملفات عن طريق متصفِّح الويب أو تطبيق ون درايف، كما يتميز ون درايف بخاصية المزامنة مع أجهزة الحاسوب والهواتف الذكية. ويمكنكم الاطلاع على تفاصيل هذه الخدمة من خلال مقال خدمة التخزين السحابية OneDrive وويندوز 10. خاتمةتُسهّل معرفة كيفية التعامل مع الملفات والمجلدات على المستخدِم تنظيم الملفات والمجلدات، كما توفر عليه الوقت أثناء التعامل معها، لذلك فمن المهم تعلم هذه المهارات لإتقان استخدام والتعامل مع نظام ويندوز 10. اقرأ أيضًا |
52,346 | تمديد رحلة "إنجينيويتي" التاريخية شهراً على المريخ وسط مخاطر | سيتعين تمديد مهمة مروحية "إنجينيويتي" التابعة لناسا فوق المريخ، رغم تحذيرات العلماء من مخاطر. فما هي المهام الجديدة للمروحية الفضائية الأولى من نوعها تاريخياً على الكوكب الأحمر؟ |
52,339 | بـ"إنستغرام لايف".. فيسبوك تواجه تهديد كلوب هاوس |
أعلنت منصة إنستغرام – المملوكة لشركة فيسبوك – عن إضافة ميزات جديدة تسمح للمستخدمين بكتم صوت الميكروفونات الخاصة بهم وحتى إيقاف تشغيل الفيديو أثناء استخدام البث المباشر Instagram Live. وبالإضافة إلى منافس كلوب هاوس من شركة فيسبوك الذي تم إنشاؤه داخل غرف ماسنجر وتجاربها مع منصة الأسئلة والأجوبة عبر الويب التي تشبه كلوب هاوس، تستفيد الشركة الآن من أحد أكبر منتجاتها – إنستغرام لايف Instagram Live – لمواجهة تهديد كلوب هاوس. وتوضح إنستغرام أن هذه الميزات الجديدة تمنح المضيفين مزيدًا من المرونة أثناء تجارب البث المباشر، حيث يمكنهم تقليل الضغط ليبدو بطريقة معينة أثناء البث المباشر. إيقاف تشغيل الفيديووتحاول المنصة تمكين تجربة إيقاف تشغيل الفيديو التي تشجع على المزيد من المحادثات، وعندما لا يضطر الأشخاص إلى القلق بشأن مظهرهم، فسيكونون غالبًا أكثر قابلية للانضمام إلى الدردشة الصوتية. وبالإضافة إلى ذلك، يسمح الصوت فقط لصناع المحتوى بالتفاعل مع مجتمعهم أثناء تعدد المهام، حيث يقومون بأعمال روتينية أو يتنقلون ولا يمكنهم الجلوس والتحديق في الكاميرا مباشرة. وكانت هذه إحدى مزايا استخدام كلوب هاوس مقابل الدردشة المرئية المباشرة، حيث يمكنك المشاركة في غرف الدردشة الصوتية في كلوب هاوس دون الحاجة دائمًا إلى منح المحادثة انتباهك الكامل أو القلق بشأن ضوضاء الخلفية. ولن يتمكن المضيفون في الوقت الحالي من تشغيل الفيديو أو إيقاف تشغيله أو كتم صوت الآخرين في البث المباشر، لكن إنستاجرام أوضحت أنها تعمل على تقديم المزيد من هذه الأنواع من الإمكانات إلى جهة البث، وتتوقع طرحها قريبًا. ميزات جديدةوتشير إنستغرام إلى أنها اختبرت الميزات الجديدة علنًا في وقت سابق من هذا الأسبوع خلال محادثة مباشرة عبر إنستغرام لايف Instagram Live بين الرئيس التنفيذي لشركة فيسبوك، مارك زوكربيرج، ورئيس إنستاجرام، آدم موسيري. يشار إلى أن هذه ليست الميزة الأولى التي أضافتها إنستاجرام في الأسابيع الأخيرة لجذب مجتمع المبدعين إلى منصتها بدلاً من كلوب هاوس أو المنافسين الآخرين. وطرحت المنصة في شهر مارس خيارًا للمبدعين لاستضافة الغرف المباشرة Live Rooms التي تسمح لما يصل إلى أربعة أشخاص بالبث في الوقت نفسه. Live Roomsوكان الغرض من الغرف المباشرة Live Rooms هو جذب صناع المحتوى الذين يرغبون في استضافة برامج حوارية مباشرة وأسئلة وأجوبة موسعة، وهي ميزات موجودة ضمن كلوب هاوس. كما أضافت أيضًا القدرة على شراء الشارات لدعم المضيفين، وذلك من أجل تلبية احتياجات المبدعين المحترفين الذين يتطلعون إلى تحقيق الدخل من مدى وصولهم. وبالرغم من أن فيسبوك لديها نسخة أكثر مباشرة من كلوب هاوس قيد التطوير مع غرف الصوت المباشر Live Audio Rooms، فإنها قالت: إنها لا تتوقع إطلاقها للاختبار حتى هذا الصيف، وستكون متاحة أولاً للمجموعات والشخصيات العامة، وليس للجمهور الأوسع. وفي غضون ذلك، يتم طرح ميزات إنستغرام لايف Instagram Live الجديدة للجمهور العالمي لمنصة إنستغرام عبر أندرويد و iOS بدءًا من اليوم. |
52,322 | اختبار الوحدات وأدوات تنقيح الشيفرات وتصحيح الأخطاء في Cpp |
يقضي مطوّرو C++ الكثير من وقتهم في تنقيح الأخطاء (debugging)، ويهدف هذا المقال إلى مساعدتك في هذه المهمة وإعطائك بعض التقنيات المفيدة، لكن لا تتوقع قائمة شاملة للمشاكل وحلولها التي تدعمها هذه الأدوات. اختبار الوحدات في C++يسعى اختبار الوحدات (Unit testing) إلى التحقق من صحّة وسلامة وحدات الشيفرة (units of code)، ويشير مصطلح "وحدات الشيفرة" في C++ غالبًا إلى الأصناف أو الدوال أو مجموعات مؤلّفة منهما. ويُجرى اختبار الوحدات غالبًا باستخدام "أُطر اختبار" متخصصة أو "مكتبات اختبار"، والتي تستخدِم غالبًا صياغات أو أنماط غير اعتيادية، وسنراجع في هذا الموضوع بعض استراتيجيات ومكتبات وأطر اختبار الوحدات. اختبار جوجلاختبار جوجل (Google Test) هو إطار لاختبار C++ من Google، ويتطلّب استخدامُه بناء مكتبة gtest وربطها بإطار الاختبار الخاص بك. مثال بسيط، سنقسم المثال بداعي الشرح … // main.cpp #include <gtest/gtest.h> #include <iostream>أنشئت حالات اختبار جوجل بواسطة وحدات ماكرو خاصة بالمعالج الأولي لـ ++C، وسنوفر المعامِليْن test name و test suite، نتابع … TEST(module_name, test_name) { std::cout << "Hello world!" << std::endl;كذلك توفر Google Test وحدات ماكرو لأجل التوكيدات (assertions): ASSERT_EQ(1+1, 2); }يمكن تشغيل اختبار جوجل يدويًا من دالة ()main أو ربطها بمكتبة gtest_main لدالة ()main معدَّة سلفًا لقبول حالات اختبار جوجل، … int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } // أمر البناء: g++ main.cpp -lgtest catchCatch هي مكتبة ترويسة (header only library) تسمح لك باستخدام كل من نمطي الاختبار TDD و BDD. الشيفرة التالية مأخوذة من صفحة توثيق Catch: SCENARIO("vectors can be sized and resized", "[vector]") { GIVEN("A vector with some items") { std::vector v(5); REQUIRE(v.size() == 5); REQUIRE(v.capacity() >= 5); WHEN("the size is increased") { v.resize(10); THEN("the size and capacity change") { REQUIRE(v.size() == 10); REQUIRE(v.capacity() >= 10); } } WHEN("the size is reduced") { v.resize(0); THEN("the size changes but not capacity") { REQUIRE(v.size() == 0); REQUIRE(v.capacity() >= 5); } } WHEN("more capacity is reserved") { v.reserve(10); THEN("the capacity changes but not the size") { REQUIRE(v.size() == 5); REQUIRE(v.capacity() >= 10); } } WHEN("less capacity is reserved") { v.reserve(0); THEN("neither size nor capacity are changed") { REQUIRE(v.size() == 5); REQUIRE(v.capacity() >= 5); } } } }سيُبلَغ عن هذه الاختبارات على النحو التالي عند التشغيل: Scenario: vectors can be sized and resized Given: A vector with some items When: more capacity is reserved Then: the capacity changes but not the size التحليل الساكن Static analysisالتحليل الساكن طريقة لتفحّص الشيفرة للبحث عن الأنماط التي ترتبط عادة بالأخطاء المشهورة وتدل عليها، هذه التقنية تستغرق وقتًا أقل من مراجعة الشيفرة، لكن تقتصر عمليات التحقق التي تقوم بها على الحالات المُبرمجة في الأداة. وتتضمّن عمليات مثل التحقّق استخدام الفاصلة المنقوطة بشكل غير صحيح بعد عبارة (if (var);) مثلًا، وخوارزميات الشُّعَب (graph algorithms) المتقدمة التي تحدد ما إذا كان المتغيّر مُهيَّأً أم لا. تحذيرات المُصرِّف Compiler warningsمن السهل تمكين التحليل الساكن، فهناك إصدارات مُبسّطة مُضمّنة سلفًا في مصرّفك: إذا مكّنتَ هذه الخيارات، ستلاحظ أنّ كل مُصرِّف سيعثر على أخطاء لا تنتبه إليها المصرّفات الأخرى، وستحصل على أخطاء على تقنيات قد تكون صالحة في سياقات محدّدة. فمثلًا، قد تكون while (staticAtomicBool); مقبولة حتى لو لم تكن while (localBool); كذلك. لذلك، على عكس مراجعة الشيفرة، فأنت تستخدم أداة تفهم شيفرتك، وتنبّهك إلى الكثير من الأخطاء، وأحيانًا قد لا تتفق معك. قد تضطر إلى وقف التحذير محليًا في هذه الحالة نظرًا لأنّ الخيارات المذكورة أعلاه قد تُمكِّن جميع التحذيرات، بما في ذلك التحذيرات التي لا تريدها (مثلًا، لماذا يجب أن تكون شيفرتك متوافقة مع C++ 98؟). في هذه الحالة، يمكنك تعطيل تحذير بعينه:
إذا قرّرت العمل بالتكامل المستمر (continuous integration)، فإنّ استخدام الأدوات الأخرى ليست ذات فائدة. وتحتوي أداة مثل clang-tidy على قائمة من عمليّات التحقق التي تغطي مجموعة واسعة من المشاكل، منها:
قد لا تكون القائمة كبيرة، إذ أنّ Clang تحتوي على الكثير من التحذيرات، إلّا أنها ستجعل شيفرتك أكثر أمانًا. أدوات أخرىتوجد أدوات أخرى مماثلة بنفس الغرض، مثل:
توجد الكثير من أدوات التحليل الساكن لـ C++، سواء المضمّنة في المُصرِّف، أو الأدوات الخارجية، ولا تأخذ تجربتها الكثير من الوقت عند الاكتفاء بالعمل بالإعدادات السهلة، وستساعدك على رصد أخطاء قد لا تنتبه لها عند مراجعة الشيفرة. تحليل Segfault مع GDBسنستخدم نفس الشيفرة التي استخدمناها في المثال أعلاه. #include <iostream> void fail() { int *p1; int *p2(NULL); int *p3 = p1; if (p3) { std::cout << *p2 << std::endl; } } int main() { fail(); }أولًا، سنحاول تصريفها: g++ -g -o main main.cppثم نشغّلها بواسطة gdb: gdb ./mainالآن، سنكون في صدفة gdb. اكتب الأمر run. (gdb) run The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/opencog/code-snippets/stackoverflow/a.out Program received signal SIGSEGV, Segmentation fault. 0x0000000000400850 in fail () at debugging_with_gdb.cc:11 11 std::cout << *p2 << std::endl;لاحظ أنّ خطأ التجزئة (segmentation fault) قد حدث في السطر 11، لذا فالمتغيّر الوحيد المُستخدم في هذا السطر هو المؤشّر p2. يمكن التحقّق من محتواه بطباعة ما يلي: (gdb) print p2 $1 = (int *) 0x0نلاحظ أنّ p2 هُيِّئ عند القيمة 0×0، والتي تكافئ NULL. في هذا السطر، حاولنا تحصيل (dereference) مؤشّر فارغ، لذا علينا إصلاح هذا الخلل. تنظيف الشيفراتيبدأ التنقيح بفهم الشيفرة التي تحاول تنقيحها. انظر المثال التالي عن شيفرة سيّئة: int main() { int value; std::vector < int > vectorToSort; vectorToSort.push_back(42); vectorToSort.push_back(13); for (int i = 52; i; i = i - 1) { vectorToSort.push_back(i *2); } /// مُحسّنة لاستخدامها في ترتيب المتجهات الصغيرة if (vectorToSort.size() == 1); else { if (vectorToSort.size() <= 2) std::sort(vectorToSort.begin(), std::end(vectorToSort)); } for (value: vectorToSort) std::cout << value << ' '; return 0; }هذه الشيفرة أفضل: std::vector < int > createSemiRandomData() { std::vector < int > data; data.push_back(42); data.push_back(13); for (int i = 52; i; --i) vectorToSort.push_back(i *2); return data; } /// مُحسّنة لاستخدامها في ترتيب المتجهات الصغيرة void sortVector(std::vector &v) { if (vectorToSort.size() == 1) return; if (vectorToSort.size() > 2) return; std::sort(vectorToSort.begin(), vectorToSort.end()); } void printVector(const std::vector<int> &v) { for (auto i: v) std::cout << i << ' '; } int main() { auto vectorToSort = createSemiRandomData(); sortVector(std::ref(vectorToSort)); printVector(vectorToSort); return 0; }بغض النظر عن نمط التشفير الذي تفضله، سيساعدك الثّبات على نفس النمط على فهم شيفرتك، ويمكن رصد فرصتين لتحسين قراءة الشيفرة بالنظر إلى الشيفرة أعلاه، وكذلك تسهيل تنقيحها: استخدام دوال منفصلة للإجراءات المنفصلةيتيح لك استخدام دوال منفصلة تخطّي بعض الدوال في المنقّح إذا لم تكن مهتمًّا بتفاصيلها. قد لا تكون مهتمًا بتفاصيل إنشاء البيانات أو طباعتها في هذه الحالة الخاصّة، وقد ينصبّ اهتمامك على عملية الترتيب وحَسب. هناك ميزة أخرى، وهي أنّ الشيفرة التي عليك قراءتها وحفظها ستكون أقصر عند تفحّص الشيفرة، إذ ستحتاج الآن إلى قراءة 3 أسطر فقط من الشيفرة في دالة main() لفهمها، بدلًا من قراءة الدالّة بأكملها. والميزة الثالثة هي أنّه نظرًا لكون الشيفرةً المُتحقَّق منها أقصر، فإن عينك ستتدرب الآن على رصد الأخطاء في غضون ثوانٍ. استخدام تنسيقات وإنشاءات متّسقةاستخدامُ التنسيقات والإنشاءات المتّسقة ينظّم الشيفرةَ ويسهّل تحليلها، وهناك نقاشات كثيرة حول طريقة التنسيق "الأمثل". لكن بغضّ النظر فالمهمّ أن تلتزم بنمط برمجة واحد في شيفرتك، فذلك سيحسّن قراءتها ويسهّل التركيز على محتوى الشيفرة. ويوصى باستخدام أداة مخصّصة لتنسيق الشيفرة نظرًا لأنّ هذه المهمّة قد تستغرق وقتًا طويلاً، وتدعم معظم بيئات التطوير المتكاملة (IDEs) هذه الميزة بشكل أو بآخر. قد تلاحظ أنّ نمط البرمجة لا يقتصر على استخدام المسافات الفارغة والسطور الجديدة، فلم نعد نمزج بين النمط الحر (free-style) والدوال التابعة لبدء / إنهاء الحاويات (v.begin() و std::end(v)). تسليط الضوء على الأجزاء الهامّة من شيفرتكبغض النظر عن النمط الذي تستخدمه، فإنّ الشيفرة أعلاه تحتوي على عدد من الملاحظات التي قد تعطيك تلميحًا حول الأمور المهمّة في الشيفرة:
الشيفرات النظيفة أسهل في الفهم وتقلل الوقت اللازم لتنقيحهَا، فقد يتمكّن مُراجِع الشيفرة من رصد الأخطاء منذ الوهلة الأولى في المثال الثاني، بينما قد تكون الأخطاء أخفَى في المثال الأوّل. (ملاحظة الخطأ موجود في: عملية الموازنة مع العدد 2.) هذا الدرس جزء من سلسلة دروس عن C++. ترجمة -بتصرّف- للفصل Chapter 142: C++ Debugging and Debugprevention Tools & Techniques والفصل Chapter 141: Unit Testing in C++ من كتاب C++ Notes for Professionals |
52,293 | مميزات نظام إدارة المحتوى ووردبريس |
تُعَدّ ووردبريس منصةً قويّةً للنشر الإلكتروني، حيث تتمتّع بالعديد من المميّزات التي صُمِّمت لجعل تجربتك في النشر على الإنترنت سهلةً، وممتعةً، وجذّابةً قدر الإمكان. ولنا الفخر بأن نقدِّم لك نظامًا لإدارة المحتوى، والذي يتميّز بأنّه حرُّ، وسريعُ، وخفيفُ، ومتوافقُ مع المعايير، إلى جانب احتوائِه على إعدادات وميّزات افتراضيّة يمكن إعادة تخصيصها وفقًا لمتطلّبات المستخدِم. وسنتطرق في القسم التالي لمجموعة من المميّزات الأساسيّة في الووردبريس، وهناك حرفيًّا عشرات الآلاف من الملحَقات أو الإضافات التي توسِّع عمل الووردبريس، وبالتالي يمكننا القول أنّ الوظيفة الفعليّة للووردبريس لا حدود لها تقريبًا. ويمنح الووردبريس الحريّة في التعامل مع الكود المصدريّ الخاصّ به، إما بالزيادة أو التعديل بأيّ طريقةٍ كانت، أو استخدامه لمشاريع تجاريّة دون أيّ رسوم ترخيصٍ على الاستخدام. يتجلّى جمال البرمجيّات الحرّة، ومفتوحة المصدر، في أنّ كلمة حرّة لا تعني مجانيّة السعر فحسب، بل الحريّة في التحكّم، والسيطرة الكاملة. لمحة سريعة أثبتلقد أُثبت أنّ نظام الووردبريس يعمل على تشغيل أكثر من رُبع المواقع التي تُنشَئ حديثًا، وأنّه نظام إدارة المحتوى المختار تقريبًا من قِبَل نصف مليون موقعٍ من المواقع الأكثر شهرةً على الإنترنت، فهو موثوقٌ لدى ناشري المحتوى ذوي الانتشار الواسع أو الضيق، بما في ذلك شبكة سي إن إن CNN، وصحيفة نيويورك تايمز NY Times. حيث يُستخدَم في أكثر من خمسين مليون موقع عالميّ، ولديه ثلاثة عشر عامًا من التاريخ المُثبَت، ولهذا فمن المؤكَّد حصولك على أفضل نظامٍ يؤدّي الوظيفة الموكلة إليه. سهولة الاستخدامتتكوّن التركيبة الأساسيّة للووردبريس من واجهةٍ بسيطةٍ تشبه إلى حدٍّ كبير تلك الواجهات الموجودة في برامج النشر، والتي تعمل على سطح المكتب، والتي تستعملها اليوم، حيث ليس هناك حاجةٌ إلى خبرةٍ في البرمجة، أو إلى خبرةٍ عاليةٍ في الاستخدام، إذ يتَّسِم منحنى عمليّة التعلُّم بالقِصر، ويُقدَّر بمدى إدخال عنوان الموقع وتسجيل الدخول، بعدها سيصبح الموقع جاهزًا لعمليّة النشر. وفي الحقيقة، يمكن لأيّ مستخدِمٍ جديدٍ تعلُّم الأساسيّات دون أيّ جهدٍ في التدريب. وتُعَدّ الواجهات محسَّنةً وسهلة الاستخدام، وهي نتيجة التحسين المستمر لسنوات، بالإضافة إلى أنّها تجمع بين قوّة مايكروسوفت وورد، وسهولة استعمال الآيفون واستخدامه المميَّز. الهدف من إنشائه هو النشريُسهِّل النظام عمليّة مشاركة المحتوى وجذب القرّاء إلى موقعك، إمّا من خلال نشر المحتوى على وسائل التواصل الاجتماعيّة (مع التأكّد من موافقة موقعك لشروط التنسيق المُثلى، حتّى يظهر في أُولى نتائج البحث بعد النشر مباشَرةً)، أو من خلال توفير نشراتٍ إخباريّةٍ ذات محتوى مُحدَّدٍ للمستخدِم، ليطّلع عليها من خلال برنامج قراءة الأخبار الذي يفضّله، أو من خلال إرساله بالبريد الإلكترونيّ. ومن خلال ما سبق يتّضح أنّ الووردبريس ليس موقع ويبٍ بسيطٍ فقط، بل هو منصّةً لنشر المحتوى، حيث سيكون لديك ما يمكن التعبير عنه مجازًا بمكبّر صوت قويّ لبث رسالتك للعالم، وذلك بمجرّد نقرةٍ واحدةٍ منك. مدعومة من مجتمع تقنييدعم الووردبريس حاضنةً تقنيّةً (مجتمع حيويّ من المستخدِمين التقنيين) حلّت العديد من المشاكل المحوريّة، ونشرت التفاصيل حولها، وحصدت بالإصدار 4.9 وحده أكثر من 160 مليون عمليّة تنزيل من لحظة إطلاقه قَبل عِدّة أشهر. وتحوي بعض المكتبات أكثر من خمسين ألف مُلحقٍ برمجيٍّ (حرٍّ، ومفتوح المصدر)، وقوالب themes تنمو يومًا بعد يوم، وهناك أيضًا مئات من المساهِمين في كلّ إصدار دوريّ. ويهدف مجتمع الووردبريس إلى الإبقاء على حيويّة هذه المنصة ووجودها، وإثبات مدى فعاليّة ونجاح النظام بما أنّه ecosystem، أي يندرج تحته كل ما يتعلق بأطر العمل من مكتبات، وأدوات تطوير، …إلخ. متعدد المواقعيمكن تفعيل خاصيّة تعدُّد المواقع، والتي تستطيع من خلالها تطوير وصيانة مواقع متعدِّدة عبر نظام ووردبريس واحد. حيث سيمكِّن تعدُّد المواقع الافتراضيّة المتعدِّدة، من مشاركة نسخة ووردبريس واحدة، فعند تفعيل خاصيّة تعدّد المواقع فسيُحوَّر نظام الووردبريس الأصليّ لدعم شبكةٍ من المواقع. المحتوى هو الجوهر تسيير العمل بأكملهيدير نظام الووردبريس ويسيّر عمليّة النشر من بدايتها، انطلاقًا من إنشاء المسوّدة الأوليّة، إلى حين الوقت الذي تُقرِّر فيه النشر، وذلك من خلال عدّة ميّزات، منها: مراقبة التهجئة، وقواعد اللغة، والمراجعة. لذا فهو يُغني عن استعمال رسائل البريد الإلكتروني للتعديلات، والإضافات، أو حتى استعمال محرِّرات نصوص ذات تكلفة عالية. منح الموقع الحيويةيعمل كلّ شيء في النظام على جعل الموقع أكثر حيويّةً وفاعليّةً، وذلك من خلال إضافة الصور، والفيديوهات، والموسيقى، والمستندات، والتي بدورها ستولِّد شعورًا بالراحة وأنت داخل نظام الووردبريس، إلى جانب الخواصّ المتعدِّدة، مثل: خاصيّة السحب والإفلات التي تَستخدِم أحدث التقنيات للتأكُّد من وصول ملفّك بأمانٍ إلى صفحة الويب في كلّ عمليّة، ومُستعرِض الوسائط الذي يساعِد في عمليّة حفظ، وترتيب الملفات، والبحث عنها عند الضرورة. حيث يستضيف النظام هذه الملفات التي تلزَم لرفع موقعك. إزالة المشتتاتفي خضم العديد من المشتّتات على الويب، من: بريدٍ إلكتروني، وتغريدات تويتر، وتحديثات الحالة في المواقع المختلفة، كان لابدّ من بناء هذه المنصة، لكي لا يتشكّل تشتيتٌ إضافيٌّ للمستخدِمين، حيث تختفي عند البدء بتحرير فكرتك، وذلك بهدف التركيز على كيفيّة صياغتها لا كيفيّة نشرها. لن يضيع عملكيعمل نظام الووردبريس على عمليّة الحفظ التلقائيّ أثناء الكتابة، وبالتالي لن تقلق على العمل في حالة تَعطُّل الحاسوب أو ارتكاب أيّ خطأ. هل تريد العودة للنسخة السابقة من عملك؟ لا مشكلة، سيُنشِئ الووردبريس عند كل عمليّة حفظ، نسخةً أو لقطةً snapshot من العمل يمكن استعادتها بأي وقتٍ بنقرة واحدة. السفر عبر الزمنليس بالمعنى الحقيقي للعنوان، ولكنّه صورةٌ تقريبيّةٌ لما توفِّره الووردبريس، حيث تُتيح لك النشر في الوقت المناسب من خلال النشر في الماضي، أي وضع التاريخ ليبدو وكأنّه نُشر بالماضي، أو جدولة منشور ليُنشَر في وقتٍ ما من المستقبل. انشر من أي مكانأصبح الإنترنت منتشرًا في كلّ مكانٍ حولنا، فلماذا لا تكون عمليّة النشر أيضًا من كل مكان؟ يمكنك متابعة عمليّة النشر والتحكّم من الهاتف بنظام آندرويد، أو نظام آي أو إس iOS الخاص بآبل. أي كلّ شيءٍ في متناول يدك حرفيًّا، وإذا لم ترغب بذلك عن طريق الهاتف، فلا تقلق، إذ يمكنك النشر من خلال البريد الإلكتروني. الحماية بكلمة مروريمكنك حماية المنشورات بكلمة مرورٍ لحمايتها من العرض أمام الأشخاص غير المخوَّلين، كما يمكنك أيضًا إنشاء منشوراتٍ خاصة لا يمكن استعراضُها إلا من قِبَل مؤلِّفها. منشورات في صفحات متعددةتُقسَّم المنشورات ذات الطابع الطويل إلى عدّة صفحات، لتوفير وقت التمريرعلى القارئ. الحفاظ على المسوداتيمكنك حفظ المقالة الغير منتهية، وتحسينها في وقت لاحق، ونشرها عند الانتهاء منها. معاينة المنشوراتيمكنك معاينة المقالة قبل نشرها وإخراجها للجمهور، وذلك للتحقُّق من وجود كلّ شيء كما هو مطلوب، ويمكن القيام بهذه العملية في أيّ وقت كان من تحرير المقالة، لأن المعاينة تكون معروضةً فعليًّا. نقاط القوة الثمانية الكامنة في النظام تصميم مناسب لجميع أنواع المحتوىيستحق محتواك الأفضل دائمًا، لذلك يجب أن يتلاءم الموقع مع محتواك، لا أن يتلاءم المحتوى مع الموقع، وهذا ما يوفره نظام الووردبريس، حيث يأتي بنظام قالب كامل full theme system، والذي يجعل التصميم بمنتهى السهولة ابتداءً من المواقع البسيطة، وصولًا إلى البوابة الأكثر تعقيدًا. تنظيم دقيقلا تهم كمية المحتوى إذا لم يتمكن الزوار من العثور عليه، لكن لا داعي للقلق، إذ يعمل نظام الووردبريس على ترتيب المحتوى وفقًا لـ: السنة، والشهر، واليوم، والمؤلف، والفئة (أيَّ طريقة يمكن وصفها)؛ وتُنشَئ أرشيفات قابلة للتصفُّح بآلية ديناميكية لضمان أن كل شيءٍ محدَّث طيلة الوقت. البحث الشامل من خارج النظام أو داخلهيمتلك نظام ووردبريس خاصية بحث تُعَدّ الأفضل من نوعها، فكل كلمة تُدخَل في صندوق البحث في أعلى كل صفحة تُعَدّ كلمةً ذات طابع بحثي، أي يمكن البحث بها، وفي حال أراد الزوار البحث من محرك بحث خارجي مثل جوجل، فسيعرض النظام المحتوى الخاص بك بطريقة شاملة مع ضمان أن يكون أول النتائج في كل مرة. حتى عناويين الموقع منسقةفي بعض الأحيان عند دخولك لموقع لا يعمل بالووردبريس، وتنظر إلى رابط الصفحة التي دخلتها، فستجد أنّ الرابط عبارة عن أحرف وأرقام مبعثرة، أما في الووردبريس، فيعلم مطورو النظام أنّ الذين يعملون على النظام، ويتصفحون مواقعه بشر وليسوا حواسيب، لذلك تظهر عناوين ذات معنى يمكن قراءتها، وليس عناوين الصفحات في قاعدة البيانات. بشرى للكتاب مستخدمي الويب للنشرمن المعلوم أنّ صياغة كلّ ما يُنشر يجب أن تكون متوافقةً مع قواعد الويب، وذلك عن طريق استخدام الأدوات المناسبة. وعلى الرغم من أنّ نظم إدارة المحتوى تُخصِّص وتُحوِّل النصوص لتتلاءم مع قواعد الويب المختلفة، إلّا أنّ بعضها لا يراعي كافة التفاصيل، وهنا تأتي أهميّة نظام الووردبريس على أساس مديرٍ للمحتوى، حيث يُستخدم محرّك خاص لإدارة هذه العمليّة ويدعى محرك التركيب Texturize engine. يتعامل هذا المحرك مع جميع التفاصيل التي أدخلها الكاتب من علامات التنصيص، وعلامات الاقتباس، والرموز الرياضية، وغيرها من الرموز؛ عن طريق تحويلها إلى ما يناسبها من وسوم وكيانات لغة برمجة صفحات الويب HTML. مرحبا بالجميع في ووردبريسمن المميزات العظيمة في ووردبريس أنه تُرجم ليتلاءم مع أكثر من 180 لغة حول العالم، لذلك وبأي لغة حول العالم يمكن النشر فورًا، بالإضافة إلى أنّه يمكنك إنشاء موقع بلغتك المحليّة، ويمكنك تغيير لغة الموقع وتعريبِه باستخدام GetText. التحكم الكامل بخصائص الموقع من خلال السحب والإفلاتلا تتطلب إدارة موقع الووردبريس تخصص المدير بعلوم الحاسوب، حيث تُدير أدوات التحكّم بالسحب والإفلات كل ما يريده المستخدِم، ابتداءً من القوائم وصولًا إلى الأدوات التفاعلية في كل صفحة وبطريقة بسيطة. صلاحيات متعددةيُنشِىء النظام أدوارًا roles مختلفةً لكل مستخدِم -في حال وجود عدد من المستخدِمين داخل النظام-، ويعطي الصلاحيات المناسبة لكل مستخدِم، تمامًا كما يحدث عند توزيع المهام في الحياة الواقعية، كما يسمح للمستخدِمين الجدد بالتسجيل تلقائيًّا دون تدخُّل من المدير، حيث يُدخِل كل مستخدِم المنشور الذي يريده، ثم يرسله لمدير النظام، ويطّلِع الأخير عليه، ومن ثم يقبله أو يرفضه. خصائص عاينها المستخدمون وأثبتها المحترفون قوة الإبداعيعمل نظام الووردبريس على توفير أدوات كبيرة وبأفكار إبداعية، وعند استخدام هذه الأفكار، فهناك حاجة للقليل فقط من التخصيص لكي تتلاءم مع الاستخدام الخاص بكل مستخدِم. وتتطلب الأنظمة الأخرى لإدارة المحتوى، بذْل المستخدِم لجهد كبير للبحث عن قائمة كبيرة من الإضافات، وتثبيتها، وضبط إعداداتها، للحصول على الميّزات التي يقدِّمها الووردبريس على طبق من ذهب للمستخدِم، ومن الأمثلة على هذه الميزات التي تُعَدّ أساسيةً في الووردبريس: التعليقات، وموجزات الأخبار، والتنقيحات…إلخ. في حين تعتمد الأنظمة الأخرى على مبرمجين لإيجاد تلك الميزات من خلال كتابة الكود الخاص بها من الصفر، وبهذا يتولد سؤال مهم، وهو: لماذا نعيد اختراع العجلة في حين أنه يمكننا الحصول على أفضل عجلة في العالم؟ نظام مفتوح المصدر وشفافية عاليةبُنِيَ نظام الووردبريس بتعاونٍ بين خبراء من المطوِّرين المحترِفين، والأكاديميين، والهواة. حيث أُصدِر نظام مفتوح المصدر للجميع، ليبني كل شخص عليه أو يُحسّنه وفقًا لاحتياجاته. ويميز النظام التطوير المتواصل، والذي يُبرز حقيقة أنّ التحديثات دورية، مما يجعله مواكبًا للتطور، وقد أُجرِيَ كل ما سبق دون أي رسوم ترخيص أو كُلفَةٍ مباشرة، وبدعم مهني واسع النطاق من المجتمع الدولي الموجود في كل مكان. إنها بياناتكتُقيِّد بعض أنظمة إدارة المحتوى نوع البيانات التي يمكنك جلبها وتشغيلها على المنصة، في حين يعمل نظام الووردبريس وفق معايير مفتوحة تمكنك من جلب البيانات بأي شكل كان، كما يُوفّر أدوات لجلبها من مصادرها المتعددة. ويمتلك نظام الووردبريس في الوقت الحالي، الأدوات اللازمة لجلب البيانات الخاصة بالمستخدِم من أي نظام إدارة محتوى كان يعمل عليه سابقًا، مثل: b2، وBlogger، وGreymatter، وTextpattern، وMovable Type. وحاليًّا، يُعمَل على زيادة الدعم في المنصة لتستطيع التعامل مع منصات أخرى، مثل: Nucleus، وpMachine. إنه نظامكصُمِّم النظام ليعمل على خادم الويب الخاص بك، أو حتى على السحابة، أو على أي استضافة. ويعطي النظام حق التحكم الكامل بكل شيء، على عكس الأنظمة التجارية أو خدمات الاستضافة من الطرف الثالث، ويمنح هذا شعورًا بالثقة أنه بإمكانك الوصول إلى ما تريده في موقعك وتعديله كما تريد. وعمومًا، يمكنك تثبيت نظام الووردبريس على حاسبك الشخصي أو أي شبكة شركة داخلية. إدارة موقع أو مليون موقعيوفِر النظام تقنية تعدُّد المواقع. هذه الآليّة ذاتها مستخدَمة في أكثر من عشرين مليون موقع على WordPress.com، ومواقع عالميّة، مثل: CNN، وNew York Times. حيث تتيح آلية تعدُّد المواقع للمستخدِمين التحكم الكامل بمواقِعهم الخاصة دون أي قيود أمنية، كما يملك كل موقع قوالب وإضافات خاصة به، ويدير مستخدِميه دون المساس بالمواقع الأخرى في النظام نفسه، إلى جانب تطبيق سياسات نطاق الشبكة والتحديثات الأمنيّة على جميع المواقع دفعةً واحدة، وبنقرة واحدة. إنشاء صفحات ديناميكيةلست بحاجة لإعادة بناء صفحاتك بعد كلّ عمليّة إضافة جديدة على موقعك، أو بعد التعديل على موضوعٍ سابق، حيث تتولّد جميع الصفحات في كلّ مرةٍ يطلب فيها المشاهد صفحةً من موقعك، وذلك باستخدام قاعدة بياناتٍ وقوالب، وهذا يعني أنّ تصميم موقعك أو تحديثه، سيكون أسرع ما يمكن، كما سيُوفِّر أكبر مساحةٍ من التخزين. قالب يتحكم بالتصميميُنشِئ نظام الووردبريس الصفحات تلقائيًّا باستخدام القوالب، ويمكنك التحكم في عرض المحتوى من خلال تعديل القوالب باستخدام المحرر الذي تفضله، أو عن طريق بيئة التطوير المتكاملة IDE، كما يمكنك أيضًا عن طريق المحرر الموجود في النظام بصفة أساسية. وتُسهِّل وسوم القالب Template tags تصميم المحتوى، والمعلومات المعروضة على موقعك، وبالتالي ليس هناك حاجة لتكون خبيرًا وبارعًا بلغة البرمجة PHP لجعل تصميم موقعك مطابِقًا لرؤيتك. نظام متكامل ومحترم لمحتوى آمن ومضمون موقعك هو قلعتكيمتلك نظام الووردبريس ثماني سنوات من الخبرة المتراكمة بإدارة المواقع بثباتٍ وأمان، حيث تُكتشَفت الثغرات بسرعة كبيرة وذلك بفضل مجتمع المستخدِمين الكبير، والتقنيين المهتمين بالنظم مفتوحة المصدر، ثم تُصحَّح تلك الثغرات وتُكتب بما يسمى بالترقيعات patches، ليُرسِلها الفريق الأمني بتحديث يضاف إلى النظام. يأتي نظام الووردبريس بنظام التحديث الأساسي المدمج integrated core-update system، مما يساعد على إطلاق الترقيعات بنقرة زرّ واحدة. ولتحقيق الأمان، يُرشِّح النظام جميع مدخلات المستخدِم، ويُقيّد الوصول لعناوين الويب، ويملك نظامًا متكاملًا لمنح الأذونات، ولا يخزِّن كلمات المرور دون تشفير، وذلك لحمايتها من السرقة. ويستخدِم الووردبريس أكثر من عشرين مليون مستخدِم في WordPress.com، إصدارات اختبار بيتّا Beta test releases قبل إطلاقها رسميًّا، مما يعطي المُستخدِمين الآخرين الثقة بأن النظام مستقر . واجهات برمجة التطبيقات واسعةيعتمد لُبّ النظام على واجهة برمجة تطبيقات API الخاصّة به، والمعروفة باسم "dogfooding"، مما يساعد المطوِّرين على تحوير وتخصيص التطبيق ليتلاءم مع متطلباتهم. ويمكن تعديل العديد من الخصائص الأساسية في الووردبريس من خلال مرشحات filters وخطافات hooks يصنعها المطوِّر. وبالتالي، تمنح هذه الواجهات لووردبريس القدرة على التلاؤم مع النظم الموجودة، وهي ضرورية في البيئات الغنية بـالمداخن stove-pipe، والتي تملك عدة مهام، بحيث يعمل كلّ منها باستقلالية، ويؤدي وظيفةً معينة لحل مشكلة محدَّدة؛ كما تحتوي على بيانات خاصة بالمستخدِمين لا يمكن أن تكون مشتركةً مع أنظمة أخرى مناسب للشركاتيُعَدّ أي تحدي قد تواجهه الشركة فرصةً لمعرفة إن واجه شخص آخر هذه المشكلات من قبل، وكتب حلًّا برمجيًّا لها. عُدِّل النظام ليتلاءم مع العديد من البيئات المختلفة، ممّا منحه خياراتٍ واسعة للتعامل مع المؤسَّسات، وتوفير آلية للمصادقة، وإدارة المستخدِمين، والحفاظ على سير العمل بكفاءة، والاحتفاظ بنُسخ احتياطية مجدوَلة؛ وهذه الخيارات هي جزء من الخيارات المتعلقة بالمؤسسات في النظام. التوافقهل أنت بحاجة لربط نظام الووردبريس بنظام آخر؟ يستخدِم نظام الووردبريس تقنيات تسمح للأنظمة المختلفة بالتواصل فيما بينها، مثل: المعايير المفتوحة للغة الترميز الممتدة XML، وXML-RPC. فقد صممت XML-RPC لتكون بسيطة قدر الإمكان، وقادرة على أداء المهام الصعبة والمعقدة في الوقت نفسه. ويدعم النظام أيضًا مجموعةً واسعةً من الواجهات البرمجية، مثل: MovableType، وMetaWeblog API، وBlogger API، بالإضافة إلى أنه بإمكانك استخدام المنصات المبنية على منصات أخرى، مثل: منصّة زيمبت Zempt المبنية على منصة Moveable Type. عملية الصيانة بسيطة جدا ستتعجب لماذا تقوم بالصيانة بطريقة أخرىتُعدّ عمليتي التثبيت والتحديث في نظام الووردبريس من أسهل العمليات على الإطلاق، حيث يمكنك إنهاء التثبيت خلال خمس دقائق وبنقرة واحدة، وستعلم عند استخدامك للنظام أنك تستعمل أفضل وأسهل نظام، وتتساءل لماذا كل البرامج ليست بهذه البساطة. التوافق مع المعاييرقطع فريق النظام شوطًا طويلًا للتأكد من توافُق كل الكود البرمجي مع معايير قياسيّة لرابطة شبكة الويب العالمية W3C، وتُعَدّ أهمية ما سبق، ليس التحقق من التوافق مع المتصفحات الحالية فقط، وإنما ليتلاءم مع أدوات الجيل القادم من المتصفحات. أكثر من مجرد مدونة بل أكثر بكثيركل من يقول أنّ نظام الووردبريس عبارة فقط عن منصة تدوين، يؤكِّد تمامًا أنه لم يتابع النمو المتفجر لنظم إدارة المحتوى خلال العامين الماضيين؛ وقوله هذا أشبه بقول أنّ شركة بي إم دبليو BMW مجرد شركة لصناعة المراوح. وفي الواقع أغلب استخدامات الووردبريس لم تكن في التدوين، وبإمكان الووردبريس تحويل حلمك إلى حقيقة، من خلال الدعم الداخلي لأشكال متنوعة من المنشورات، والتحكم بالتصنيفات. انشر افكارك على أوسع نطاق الموجزاتيدعم الووردبريس كل من التقنيات: ATOM، وRSS 1.0، وRSS 2.0، وهذه التقنيات مستَعمَلة للحصول على الأخبار والمعلومات من المواقع تلقائيًّا دون الحاجة إلى زيارة المواقع التي استُمِدّت منها هذه المعلومات، حيث تمتلك كل صفحة في موقعك موجزًا يمكن للقُرّاء الاشتراك به، كما تمتلك موجزًا بأحدث المنشورات في المدونة، والتصنيفات، والتعليقات، ولأي شيءٍ تريده. وكلما زادت الخيارات المتاحة للقُرّاء لتتبُّع الأقسام المختلفة من موقعك، كلما كانت عملية نشر أفكارك حول العالم أسهل. وبدعم ووردبريس الكامل لتقنية RSS 2.0 ستتمكن من إضافة المقاطع الصوتية podcasts بسرعة. التواصل بين المواقعيأتي نظام الووردبريس مُجهزًا بأحدث تقنيات الاتصال بين المواقع وهي PingBack، وTrackBack. وكمثال على ذلك، إذا كتب أحمد مقالةً ما، واستضاف محمد هذه المقالة على موقعه، -والتي حصل عليها مثلًا من RSS-، وعلّق شخص ما على تلك المقالة من مدونة محمد، فسيصل تنبيه لأحمد، ليُعلمه بذلك التعليق، وذلك لأنه صاحب المقالة. كما يدعم النظام أداة Ping-O-Matic والتي تعمل على زيادة نسبة ظهور موقعك في محركات البحث. تنمية مجتمع المدونة بناء المجتمعنظام الووردبريس ليس جمعيةً عامة، وإنما يعمل على بناء مجتمعات حول المواقع من خلال التعليقات، والربط باستخدام تقنيتي PingBacks، وTrackBacks اللتان تُستَعملان لربط الأحداث بين المواقع المختلفة، ومساعدتك لتبقى على تواصل مع الجمهور، وتعزيز الصداقات. التعليقاتيترك زوار الموقع تعليقاتهم إما من داخل موقعك أو من مواقعهم من خلال تقنيتيّ PingBacks، وTrackBacks، ويمكنك تفعيل أو تعطيل التعليقات لكل منشور. الحماية من الرسائل المزعجةيملك الووردبريس أدوات قويةً لتوفير جدار الحماية، مثل: القائمة السوداء المدمجة integrated blacklist، ومدقِّق البروكسي المفتوح open proxy checker، وذلك لإدارة وحذف التعليقات المزعجة على المدونة. وهناك سلسلة طويلة من الإضافات التي بإمكانها الارتقاء بالمدونة في هذا الجانب. نظام تسجيل كامل للمستخدمينيمتلك الووردبريس نظام تسجيل داخلي للمستخدِمين، حيث يمكنك تفعيله والسماح للمستخدِمين بتعديل ملفاتهم الشخصية، وإضافة تعليقات موثوقة في مدونتك، ويمكنك إيقاف التعليقات أمام المستخدِمين غير المسجَّلين. وهناك ملحقات تحجب المنشورات عن المستخدِمين ذوي المستوى الأدنى في النظام. وسوم لغة HTML المسموح بهاليس كل الأشخاص سيئين، لكن يجب الحذر من أولئك السيّئين في موقعك، وذلك من خلال تحديد وسوم لغة HTML المسموح بها في موقعك. والوسوم الافتراضيّ المسموح بها في الووردبريس خيار عاقل للسماح باستخدام لغة HTML في التعليقات دون المساس بسلامة البيانات أو الاستضافة. الأذوناتيوفر النظام مجموعةً من الأدوات الإدارية التي تُبقِي المزعجين والمخرّبين تحت الضبط والمراقبة، حيث تمكنك من إدارة كل مما يأتي:
يُبقِي نظام الووردبريس مديري المدونات على اطلاع دائم بالتعليقات الجديدة، والتعليقات التي تحتاج لإذن، حيث يرسِل التنبيهات إلى البريد الإلكتروني. الترخيص وبيئة التشغيل والفلسفة العامة للنظام الترخيصنظام الووردبريس مرخص تحت رخصة جنو العمومية ذات الإصدار الثاني GPLV2، أو الإصدار الأحدث، والتي تعطي المستخدِم سلسلةً من الحريات، وهي:
صُمِّم الووردبريس بلغة PHP إصدار 7.2، أو الإصدار الأحدث، وبقواعد بيانات MySQL إصدار 5.6، أو الإصدار الأحدث، ووحدة إعادة كتابة العناوين mod_rewrite الموجودة في خادم الويب Apache. فلسفة النظامطُوِّر نظام الووردبريس اعتمادًا على مجموعة من المبادئ الثابتة، وهي:
ترجمة -وبتصرّف- للمقال WordPress Features من موقع WordPress.org |
52,252 | بمعايير ممتازة.. تليغرام يحضر لكم مفاجأة! |
كشف مؤسس تطبيق "تليغرام"، بافل دوروف، أن تطبيقه سيحصل على ميزة مهمة وعملية قريبا، حيث ستزوّد المنصة بميزة جديدة تمكّن المستخدمين من إجراء مكالمات الفيديو الجماعية. كما ستتمتع هذه الميزة بمعايير ممتازة من حيث الحفاظ على خصوصية بيانات المستخدمين. فقد أكد دوروف أن مشاركة الشاشة، وإلغاء الضوضاء، ودعم أجهزة الكمبيوتر الشخصية والأجهزة اللوحية- كلها خيارات يمكن أن يتوقع المستخدمون وجودها مع أداة اتصالات الفيديو الجماعية القادمة في تليغرام، بالإضافة إلى السرعة وتشفير البيانات. وصول فوري للمحادثاتكما تابع أنه سيكون بإمكانكم الوصول على الفور لجميع محادثاتكم عبر تليغرام من الهاتف أو أجهزة الكمبيوتر الشخصية من خلال متصفح الويب، كما لن تكون هناك حاجة لعمليات التحميل أو تنزيل التطبيقات للوصول إلى هذه المحادثات. وأشار إلى أن إصدارات الويب من "تليغرام" ستتفوق على إصدارات التطبيقات المنافسة، وأن شركته تختبر حاليا وظائف اتصالات الفيديو الجماعية لإضافتها لهذه الإصدارات قريبا. الجدير ذكره أن دوروف كان أعلن في وقت سابق أن العام الجاري سيشهد ظهور الدعايات والإعلانات المدفوعة، إلاا أن جميع خدمات التطبيق المتعلقة بالرسائل ستكون خالية من الإعلانات، وستظهر الإعلانات فقط في القنوات العامة على التطبيق. |