هشام رزق الله

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

    1,420
  • تاريخ الانضمام

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

  • Days Won

    30

السُّمعة بالموقع

161 Excellent

4 متابعين

آخر الزُوّار

1,707 زيارة للملف الشّخصي
  1. مقدمة إن التعوّد على سطر الأوامر هي الخطوة الأولى نحو الاستفادة من قوة منصة خادوم لينكس، وهو شرط أساسي لجميع نشاطات المرتبطة بالخواديم والتي قد تتمنى القيام بها في هذه البيئة. على الرغم من وجود بدائل رسومية للعديد من الأدوات إلا أن تعلم سطر الأوامر مهارة ستسمح لك بالعمل بكفاءة وسرعة ومرونة بطريقة لا يمكنك فعلها مع أغلب الواجهات الرسومية (GUI). يجب علينا أن نبدء من مكان ما، لذلك في هذا المقال سوف نغطي الأساسيات: كيف تتنقل في النظام واكتشاف ما حولنا. متطلبات أساسية هذا المقال بسيط وأساسي، لذلك فهو لا يتطلب الكثير من المعرفة المسبقة، ومع ذلك، ستحتاج إلى تسجيل الدخول إلى خادومك الخاص لتبدأ الاستكشاف. الخيارات التي لديك للقيام بهذا تعتمد على نظام التشغيل الذي تستخدمه في المنزل. عندما تنشئ DigitalOcean droplet جديد، سوف يرسلون رسالة عبر البريد الإلكتروني تحتوي على كلمة السر و عنوان IP خاص للوصول إلى خادومك الجديد، استخدم هذا الرابط لمعرفة كيفية الاتصال بخادوم VPS الخاص بك. ssh root@your_IP وثمة خيار آخر عن طريق استخدام زر “Console Access” في الزاوية العلوية على اليمين من لوحة تحكم DigitalOcean، هذا الأمر سينشئ لك طرفية افتراضية مباشرة في نافذة متصفحك. معرفة موقعك عن طريق pwd في هذه المرحلة، يجب أن تكون قد سجلت دخولك إلى خادوم لينكس الخاص بك، وسوف ترى في الغالب شيئا مشابهًا لهذا: root@your_hostname:~# هذا هو الموجه (prompt) حيث نكتب الأوامر، وليس هذا فقط، بل أنت حاليا في مكان محدد في نظام ملفات الخادوم حيث ستكون دائما في مكان معين في التسلسل الهرمي للملفات وهذا الأمر يؤثر على كيفية عمل الأوامر التي تكتبها. هذا الأمر يشبه قيامك بفتح متصفح الملفات في حاسوبك المحلي، يمكنك الضغط على مختلف المجلدات للانتقال إلى مناطق مختلفة من نظام الملفات، وإذا ذهبت إلى قائمة التعديل (edit menu) في متصفح الملفات، سوف تجد بعض الخيارات التي ستُطبق على العناصر الموجودة في المجلد التي أنت فيه، وسطر الأوامر هو تمثيل نصي لنفس الفكرة. فأين نحن الآن بالضبط في نظام ملفاتنا؟ هنالك دليل واحد موجود في الموجه نفسه، فقبل رمز # أو $ في نهاية الموجه (هذا سيعتمد على المستخدم الذي سجّل دخوله)، سوف ترى رمزًا خاصًا ~ وهذا يعني أنك موجود في مجلد المنزل (home). مجلد المنزل هو المكان الذي يتم تخزين ملفات المستخدم، فالرمز ~ هو اختصار لهذا المجلد. هنالك طريقة أخرى لمعرفة موقعنا في نظام الملفات وهي عن طريق استخدام الأمر pwd وهذا الأمر سيكون أول أمر سنتعلمه. اكتب هذه الحروف على الطرفية واضغط على زر الإدخال (Enter): pwd /root إن /root هو مجلد المنزل للمستخدم للمستخدم الجذر (المدير)، إذا كنت قد سجّلت دخولك باستخدام مستخدم آخر، فسوف ترى شيئًا مشابهًا لهذا: pwd /home/your_username في هذا الدرس، لا يهم المستخدم الذي سجّلت دخولك به، فأي من النتيجتين ظهرت لك فهي مناسبة. النظر حولك باستخدام ls الآن أنت تعرف مكانك وفي أي مجلد أنت، لكن لازلت تجهل ما هي المحتويات الأخرى الموجودة في ذلك المجلد، فكيف تستطيع معرفة ذلك؟ ببساطة يمكننا سؤال الخادوم عن الملفات والمجلدات الموجودة في المجلد الحالي عن طريق استخدام الأمر ls، أكتبه الآن على الموجه: ls بعد كتابة هذا الأمر ستعود (في الغالب) إلى موجه الأوامر ولن تحصل على أية معلومات، فهل فشلت عملية تنفيذ هذا الأمر؟ لا، على العكس فقد نجحت لكنه ببساطة ليس هنالك أية ملفات أو مجلدات في مجلدك الحالي. دعونا ننشئ بعض ملفات التجريبية لنرى كيف يعمل الأمر ls عند وجود ملفات في المجلد، أكتب هذا الأمر لإنشاء بضعة ملفات: touch file{1..5} السطر السابق سينشئ لنا 5 ملفات بأسماء file1 و file2… في مجلدك الحالي. لنُجرب الأمر ls لنرى كيف سيتصرف الآن: ls file1 file2 file3 file4 file5 رائع، تعرّف الآن أمر ls على الملفات الموجودة في مجلد المنزل. أغلب الأوامر لديها سلوكيات افتراضية يتم تنفيذها عند استدعائها كما فعلنا في الأعلى، ومع ذلك، فإن أغلب سلوكيات الأمر يمكن التحكم بها عن طريق تمرير المعاملات الاختيارية إليها، وهذه الأخيرة يشار إليها بأسماء عديدة مثل الخيارات “options” والمعاملات “arguments/parameters” والأعلام “flags”… في بعض الأحيان، هذه المعاملات تُفعّل الوظائف الاختيارية المتاحة من خلال الأمر وفي أحيان آخرى تحدد الكائن الذي يجب على الأمر أن يتجنبه. لنبدأ مع الحالة الأولى. استكشاف خيارات ls تقريبا جميع الأوامر تملك خيار المساعدة، وفي أغلب الأوقات يمكنك الوصول إليه عن طريق إضافة --help أو -h إلى نهاية الأمر، يمكنك الآن تجربة هذا مع أمر ls: ls --help Usage: ls [OPTION]... [FILE]... List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. Mandatory arguments to long options are mandatory for short options too. -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. --author with -l, print the author of each file -b, --escape print C-style escapes for nongraphic characters --block-size=SIZE scale sizes by SIZE before printing them. E.g., . . . سيعطيك هذا بعض الإرشادات حول الاستخدام الصحيح للأمر بالإضافة إلى لمحة حول الخيارات المتاحة لتغيير السلوك الإفتراضي للأوامر. العمود الأيسر يعطيك الحروف التي يجب كتابتها وتمريرها إلى الأمر لتنفيذ ما يوجد في وصف العمود الأيمن. إن --help التي قمنا بإضافتها هي مثال لخيار يمكننا تمريره. ومن الطرق الأخرى لمعرفة الخيارات المتاحة لأمر معين هي عن طريق التحقق من الدليل “manual”، ويمكنك فعل ذلك عن طريق كتابة man متبوعا بالأمر الذي تريد معرفة خياراته. قم بتجربة هذا الآن: man ls يمكنك التنقل في الصفحة كما تشاء عن طريق مفاتيح الأسهم والخروج عن طريق كتابة q. كما ترى، يمتلك ls بضعة خيارات يمكنك تمريرها إلى الأمر لتغيير سلوكه، دعونا نجرب بعضها. ls -l -rw-r--r-- 1 root root 0 Feb 28 19:45 file1 -rw-r--r-- 1 root root 0 Feb 28 19:45 file2 -rw-r--r-- 1 root root 0 Feb 28 19:45 file3 -rw-r--r-- 1 root root 0 Feb 28 19:45 file4 -rw-r--r-- 1 root root 0 Feb 28 19:45 file5 السطر السابق يعرض لنا نفس الملفات الخمسة السابقة لكنه يعرضها بشكل أطول، وهذا الأمر يعطينا المزيد من المعلومات حول الملفات مثل المالك (“root” الأولى)، والمجموعة المالكة (“root” الثانية)، وحجم الملف (0) بالإضافة إلى تاريخ آخر تعديل وبعض المعلومات الأخرى. لنجرب خيارًا آخر: ls -a . .aptitude .bashrc file2 file4 .profile .ssh .. .bash_history file1 file3 file5 .rnd .viminfo عرض لنا هذا الخيار ملفات لم نرها من قبل، إن المعامل -a مرادف للمعامل –all والذي يعرض لنا جميع الملفات الموجودة في المجلد الحالي بما في ذلك الملفات المخفية. في أنظمة لينكس، جميع الملفات التي يبدأ اسمها بنقطة سيتم إخفائها بشكل افتراضي، وهذه الملفات ليست سرية ويمكن لأي شخص إيجادها وتم الحفاظ عليها بهذه الطريقة لتسهيل عملية إدارة الملفات، وعند تمرير -a فسنأمر ls بعرض هذه الملفات المخفية أيضا. يمكننا تمرير عدة معاملات كذلك، وذلك عن طريق وضعهم معا كالتالي: ls -l -a drwx------ 4 root root 4096 Feb 28 19:45 . drwxr-xr-x 23 root root 4096 May 3 2013 .. drwx------ 2 root root 4096 Feb 28 17:19 .aptitude -rw------- 1 root root 2036 Feb 28 18:20 .bash_history -rw-r--r-- 1 root root 570 Jan 31 2010 .bashrc -rw-r--r-- 1 root root 0 Feb 28 19:45 file1 . . . الأمر السابق سيعمل بدون مشاكل، لكن يمكننا أيضا دمج المعاملات كالتالي: ls -la هذه الطريقة ستعمل بالضبط كالطريقة الأولى وتتطلّب وقت أقل للكتابة. ومن الخيارات الأخرى المفيدة خيار -R والذي سيعرض جميع الملفات والمجلدات (ومحتوياتها)، وبما أن المجلدات الموجودة في مجلد المنزل الخاص بنا مخفية، فسنمرر خيار -a أيضا: ls -Ra .: . .aptitude .bashrc file2 file4 .profile .ssh .. .bash_history file1 file3 file5 .rnd .viminfo ./.aptitude: . .. cache config ./.ssh: . .. authorized_keys الآن عرفنا كيف نغير سلوكيات ls، لنغير الآن “الكائن” الذي يعمل عليه ls. استخدام ls في مجلدات أخرى افتراضيا، سيعرض ls محتويات المجلد الحالي، ومع ذلك يمكنك تمرير اسم أي مجلد تريد أن ترى محتوياته في نهاية الأمر. على سبيل المثال، يمكننا رؤية محتويات مجلد /etc الموجود في جميع أنظمة لينكس بكتابة السطر التالي: ls /etc acpi fstab magic rc.local adduser.conf fstab.d magic.mime rc.local.orig aliases fuse.conf mailcap rcS.d aliases.db gai.conf mailcap.order reportbug.conf alternatives groff mailname resolvconf anacrontab group mail.rc resolv.conf apm group- manpath.config rmt . . . كما ترى فإن هنالك الكثير من الملفات في هذا المجلد. أي مسار لمجلد يبدأ بخط مائل (/) يُعرف على أنه مسار “مطلق” وسبب ذلك أنه يشير إلى أعلى مسار المجلد والذي هو مجلد الجذر. ومن الطرق الأخرى للإشارة إلى مجلد هي عن طريق استخدام المسار “النسبي”، وهذا سوف يبحث عن مجلد نسبي مرتبط بالمجلد الذي تتواجد به أنت الآن، وهذه المجلدات لا تبدأ بخط مائل. لا نملك أية مجلدات غير مخفية في مجلدنا الحالي لذلك سننشئ بعضها بسرعة وسنضيف بعض الملفات داخلها، لا تقلق حول عدم فهمك لهذه الأوامر في الوقت الحالي، فهذه الأوامر لإنشاء ملفات فقط لاستعمالها في الاستكشاف، لذلك أُكتبها كما هي: mkdir dir{1..3} touch dir{1..3}/test{A,B,C} سينشئ لنا هذا بعض المجلدات بداخلها ملفات، يمكننا رؤية هذه المجلدات باستخدام أمر ls عادي: ls dir1 dir2 dir3 file1 file2 file3 file4 file5 حتى نتمكن من رؤية ما بداخل مجلد dir1، يمكننا أن نعطي مسارًا مُطلقًا كما في المثال السابق، بإضافة المجلد الذي نريد رؤيته إلى نهاية قيمة مجلدنا الحالي، وسنتمكن من معرفة مجلدنا الحالي عن طريق الأمر التالي: pwd /root وبعد ذلك أضف المجلد الذي نهتم به إلى النهاية: ls /root/dir1 testA testB testC لم نكن مُجبرين على القيام بذلك، يمكننا ببساطة الإشارة إلى المجلدات الموجودة داخل مجلدنا الحالي بأسمائها فقط، كالتالي: ls dir1 testA testB testC إذا لم نبدأ المسار بخط مائل، فسيبحث نظام التشغيل على المسار المجلد الذي يبدأ بمجلدنا الحالي. التجوال في المكان حتى الآن، تعلمنا كيف نجد موقعنا في نظام الملفات كما أننا تعلمنا كيف نستخدم الأمر ls لمعرفة بعض المعلومات حول الملفات الموجودة في مجلدات معينة. لكن كيف نغيّر مجلد عملنا؟ تغيير مجلد عملنا سيسمح لنا باستخدام مسارات مترابطة من أماكن مختلفة ﻷنه في العادة، سيكون من السهل إدارة الملفات في المجلد الذي يحتويها. يمكننا التنقل حول التسلسل الهرمي للملفات باستخدام الأمر cd، هذا الأمر يغيّر المجلد الحالي إلى أي مجلد آخر. هذا أبسط استخدام لهذا الأمر: cd لا يبدو أن هنالك أية نتيجة، في الحقيقة، لم يحدث أي شيء، فعند تنفيذ الأمر cd بدون معلومات إضافية فسيغير موقعك الحالي إلى مجلد المنزل، وبما أننا في مجلد المنزل فلن يقوم الأمر بأي شيء. الطريقة الأساسية لاستخدام هذا الأمر هي كالتالي: cd /path/to/directory في هذا المثال، يمكنك استبدال /path/to/directory بمسار المجلد الذي تريد الانتقال إليه، فعلى سبيل المثال، إذا أردت الانتقال إلى مجلد الجذر، والذي سيكون مساره مجرد خط مائل / لأنه في أعلى شجرة الملفات، يمكننا كتابة التالي: cd / ملاحظة: المجلد الجذر (الذي أشرنا إليه بخط مائل /) يختلف عن مجلد المنزل للمستخدم الجذر (الموجود في /root)، وهذا الأمر سيربكك في البداية، لكن تذكر فقط أن المجلد الأعلى في شجرة نظام الملفات يدعى بالجذر. ستلاحظ أن موجه الأوامر قد تغير، بالضبط قبل رموز # أو $، فالمجلد قد تغير من ~ (تذكر أن رمز ~ يشير إلى مجلد المنزل للمستخدم) إلى مجلد الجذر لنظام الملفات. يمكننا التأكد من موقعنا عن طريق استخدام الأمر pwd مرة أخرى: pwd / كما يمكننا التحقق من الملفات الموجودة في مجلدنا الجديد: ls bin etc lib media proc sbin sys var boot home lib64 mnt root selinux tmp vmlinuz dev initrd.img lost+found opt run srv usr نجحنا بالتحرك نحو مكان جديد، لنحاول الآن الانتقال إلى مجلد جديد باستخدام المسار النسبي (relative path)، هنالك مجلد يدعى usr داخل مجلدنا الحالي، لننتقل إليه عن طريق كتابة: cd usr كما ترون، يمكننا استخدام المسار النسبي مع cd أيضا، والآن كيف نستطيع العودة إلى مجلد الجذر مرة أخرى؟ يمكننا كتابة نفس الأمر الذي استخدمناه سابقا cd /، لكننا سنجرب شيئًا مُختلفًا. لنجرب الانتقال إلى أعلى الشجرة باستخدام المسارات النسبيّة، فكيف نشير إلى المجلد الذي يحتوي مجلدنا الحالي باستخدام المسارات النسبيّة؟ ببساطة يمكننا الإشارة إلى المجلد الذي يحتوي على مجلدنا الحالي والذي يدعى بمجلد الأب باستخدام نقطتين (..). لنعد بمقدار مستوى واحد إلى الأعلى: cd .. pwd / كما ترى عدنا إلى مجلد الجذر. يمكننا أيضا الإشارة إلى مجلدنا الحالي باستخدام نقطة واحدة: ls . bin etc lib media proc sbin sys var boot home lib64 mnt root selinux tmp vmlinuz dev initrd.img lost+found opt run srv usr ستكون هذه مفيدة جدا في العديد من الحالات والتي لن نتعلمها في هذه المرحلة لكنك ستتمكن من الإشارة إلى مجلدك الحالي بسهولة في مراحل لاحقة. كما قلنا سابقا، إن رمز “~” يشير إلى مجلد المنزل، لنستخدم ذلك كبداية لمسار مجلد “dir1” الموجود داخل مجلد المنزل: cd ~/dir1 pwd /root/dir1 انتقلنا الآن إلى مجلد داخل مجلد المنزل بطريقة سهلة باستخدام رمز “~” التي وضعناها في الجزء الأول من المسار. لكن ماذا لو نسيت القيام بشيء في المجلد السابق وتريد العودة إليه؟ يمككنا العودة إلى مجلدنا السابق بكتابة التالي: cd - pwd / عدنا إلى مجلدنا السابق. لنختم الدرس بالعودة إلى مجلد المنزل، يمكننا فعل ذلك باستخدام ~ كمسار للتبديل أو يمكنك أيضا استخدام الوضع الافتراضي لـ cd للعودة إلى مجلد المنزل إذا لم نضف أي مسار إلى الأمر، لنجرب ذلك: cd pwd /root كما ترى، نجحنا في العودة إلى مجلد المنزل. الخاتمة ستمتلك الآن الأدوات التي تحتاجها لاستكشاف نظام الملفات، فعلى الرغم من أنك لم تكتشف كيف تقرأ الملفات إلا أنك أصبحت قادرا على التجوال وتصفح النظام بسهولة بالإضافة إلى قدرتك على معرفة مكانك والملفات حولك. ترجمة -وبتصرف- للمقال: How To Use cd, pwd, and ls to Explore the File System on a Linux Server لصاحبه Justin Ellingwood
  2. يبدو أن المشكلة ناتجة من اختلاف مفسرات css3 والقيم الافتراضية بين المتصفحات، حاول وضع الشيفرة البرمجية التالية في ملف/جزء css الخاص بصفحتك/موقعك والتي على الأغلب ستحل هذه المشكلة: * { margin: 0; padding: 0; }
  3. لا يمكنك الإعتماد على جافا سكربت الخام في التعامل مع الخادم مثل إدارة قواعد البيانات لذلك تحتاج إلى لغات مثل php لفعل ذلك، لكن في الخوادم الحديثة فإنه يتم استخدام جافاسكربت لكل شيء بما في ذلك التعامل مع الخوادم وذلك عن طريق Node.js و Express.
  4. بالنسبة لسؤالك حول إمكانية عمل مركز رفع ملفات عن طريق ووردبريس، فالإجابة هي نعم، يمكنك ذلك، وجدت في الماضي عدة مواقع حوّلت ووردبريس إلى منصات لرفع الملفات و مشاركتها لكن الأمر سيتطلب بعض البرمجة والتغييرات للتحويل، لذلك سيكون الخيار الأسرع والأرخص هو عن طريق استخدم سكربتات رفع الملفات مباشرة.
  5. لو كنت تجيد استخدام dropdownlist والتعامل مع قواعد البيانات فلا مشكلة من استعمالها، ولن تحدث مشاكل معك. أنصحك أيضا بالإطلاع على التغييرات الجديدة في html5 على التقويم والتاريخ بصفحة عامة مثل Input type date.
  6. يمكنك أن تستعمل الطريقتين المذكورتين أعلاه هي عن طريق دوال strcmp و compare أو يمكنك المقارنة بين السلاسل النصية يدويا مثل المثال التالي: #include <stdio.h> int main() { char m[] = "Hichem"; char m2[] = "Karim"; if (m == m2) { printf("They are the same!\n"); } else { printf("No\n"); } return 0; } هذا مثال بسيط يخبرك هل السلسلتين متشابهتين أم لا ويمكنك أيضا تطوير المثال السابق ووضع حلقة تكرار لتعرف مكان الإختلاف بالضبط.
  7. يتميز الدريم ويفر والفرونت بيج بالعديد من المميزات التي تميزها عن المحررات العادية مثل نوتباد بلس بلس لأنها محررات تساعد في كتابة الشيفرات البرمجية (كتب بدلا عند العديد من الأسطر البرمجية) أضف إلى أنها من نوع WYSIWYG أي أنك ستتمكن من رؤية الشكل النهائي مباشرة في وقت إنشاءك للصفحة/موقع. بالنسبة للقوالب فتوجد على الانترنت العديد من القوالب الجاهزة المجانية والمدفوعة والتي يمكنك الحصول عليها بسهولة كبيرة.
  8. يمكنك الاستمرار في البحث بموقع مستقل، فيوجد العديد من الأشخاص الذين يبحثون عن مصممي ومطوري التطبيقات، أما لو أردت بيع التطبيقات فيمكنك استخدام موقع SellMyApp الذي يساعدك على بيع الشيفرة البرمجية لتطبيقك أو يمكنك استخدام موقع appbusisnessbroker الذي يعمل منذ أكثر من عشرة سنوات. لا تنسى أنه يمكنك العمل مباشرة في مجال التطبيقات في شركة أو ما شابه، لا تربط نفسك دائما بالإنترنت.
  9. تأكد من الشركة الموفرة للسيرفر ففي بعض الأحيان تكون هنالك مشكلة من الشركة، وتأكد أيضا من أنه لا يوجد برنامج معين يمنع ftp مثل جدار ناري أو ما شابه كما أنصحك بالتأكد من خيارات الاستضافة التي اخترتها لربما أوقفت ftp بطريقة ما. لا يمكنني أن أحدد المشكلة بالضبط ما لم أرى الخادم بنفسي لكن هذه هي بعض الأسباب.
  10. نعم يمكنك فعل ذلك، لما لا؟ لكن أنصحك أن تسمي الأعمدة بالأحرف اللاتينية لكي لا تواجه مشاكل مع طرفيتك خاصة في القراءة لأن الكتابة ستظهر لك متداخلة نوعا ما (توجد حلول متنوعة للمشكلة) أضف إلى ذلك أن ليس جميع البرامج والتطبيقات يمكن أن تتعامل مع قواعد بيانات باللغة العربية.
  11. إن Mobile Vision API يوفر لك إطار عمل للبحث عن الأشياء داخل الصور والفيديوهات، فهذا الإطار يحتوي على خوارزميات لكشف ووصف الاشياء المرئية في الصور أو في لقطات الفيديو، وفي الوقت الحالي يحتوي هذا المشروع على كاشفات للوجوه والرموز الشريطية (الباركود) و النصوص والتي يمكنها العمل مجتمعة أو منفصلة. للمزيد من المعلومات أنصحك بالإطلاع على التوثيق الرسمي.
  12. يمكنك استخدام دالة fillOval والتي ستُمكنك من رسم شكل بيضوي داخل مستطيل وعندما يكون الطول والعرض مساويين للقطر فإنك ستحصل على دائرة. إذا أردت رسم دائرة ذات مركز x و y فيجب عليك ازاحة المستطيل بمقدار نصف طوله وعرضه كما في المثال التالي لدالة رسم دائرة: public void drawCenteredCircle(Graphics2D g, int x, int y, int r) { x = x-(r/2); y = y-(r/2); g.fillOval(x,y,r,r); }
  13. لم أفهم ما الذي تريده بالضبط؟ هل تحتاج لأداة لإعطاء معلومات حول الإطار إذا كان موجودا أو لا؟
  14. هذا مثال بسيط لإدخال 10 بيانات للطلبة ومن ثم عرضهم بالترتيب: #include <iostream> using namespace std; struct student { char name[50]; int roll; float marks; } s[10]; int main() { cout << "Enter information of students: " << endl; // storing information for(int i = 0; i < 10; ++i) { s[i].roll = i+1; cout << "For roll number" << s[i].roll << "," << endl; cout << "Enter name: "; cin >> s[i].name; cout << "Enter marks: "; cin >> s[i].marks; cout << endl; } cout << "Displaying Information: " << endl; // Displaying information for(int i = 0; i < 10; ++i) { cout << "\nRoll number: " << i+1 << endl; cout << "Name: " << s[i].name << endl; cout << "Marks: " << s[i].marks << endl; } return 0; } هذا هو المبدأ العام لإنشاء البرنامج حيث ستستخدم هياكل البيانات struct لحفظ واستخدام أسماء الطلبة ويمكنك تغيير عدد الطلبة - والذي هو في حالتنا 10 - إلى العدد الذي تريده. لاحظ أننا استخدامنا حلقة التكرار for لكل من الإدخال والعرض. المصدر
  15. هل غيّرت ملفات أوبن كارت؟ يمتلك أوبن كارد مجلد مؤقت لرفع الملفات، لكن إذا حدثت مشكلة لهذا المجلد كحذفه أو نقله أو تغيير صلاحياته فإن أوبن كارت سيعرض هذه الرسالة عند رفع الملفات. لإصلاح هذا المشكل تأكد من صلاحيات المجلدات وتأكد أيضا من المسار الصحيح لمجلد رفع الملفات المؤقتة في ملف إعدادت php.