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

سمير عبود

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

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

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

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

    34

كل منشورات العضو سمير عبود

  1. مرحباً بك، هل بإمكانك التفصيل بشكل جيد ما المقصود بالمجموعات الجزئية و ما المطلوب بشكل آخر حتى نستطيع مساعدتك. بالتوفيق.
  2. مرحباً جوري، بإمكانك عمل البرنامج المطلوب من خلال: تعريف مصفوفة ثنائية عددية تحمل 12 صف و في كل صف 10 خانات حسب ماتريد عمل حلقتين متداخلتين من النوع for لملأ عناصر المصفوفة بضرب العدادين بعد إضافة 1 لكل عداد لأن فهرس المصفوفة يبدأ ب 0 و نحن نريد جدول الضرب يبدأ من 1 عمل حلقتين متداخلتين من النوع for لطباعة عناصر المصفوفة. #include <stdio.h> int main() { int arr[12][10]; // تعريف مصفوفة عددية تحمل 12 صف و في كل صف 10 أعمدة // هذه الحلقة لملأ المصفوفة for(int i = 0; i < 12; i++) { // عمل حلقة للصفوف for(int j = 0; j < 10; j++) { // عمل حلقة للأعمدة arr[i][j] = (i+1) * (j+1); // ملأ المصفوفة } } // هذه الحلقة لطباعة عناصر المصفوفة for(int i = 0; i < 12; i++) { for(int j = 0; j < 10; j++) { printf("%d ", arr[i][j]); } printf("\n"); // بعد طباعة كافة عناصر صف نقوم بالنزول سطر واحد } } بإمكانك تجربة البرنامج من هنا بالتوفيق.
  3. الخوارزمية هي مجموعة من المراحل يجب المرور بها للوصول لحل مُشكلة مُعينة، لغة البرمجة هي مجموعة من الأوامر و التعليمات يتم ترجمتها و تحويلها فيما بعد للغة الحاسوب حتى يفهمها و يقوم بتنفيذها كما تعلمي فإن الحاسوب يعتمد و يفهم فقط لغة الآلة و هذه اللغة تتكون من (0،1) يعني سلاسل متكونة من هذه الأرقام و بالتالي وجب إبتكار طريقة للتعامل مع هذا الحاسوب فالإنسان صعب يتذكر أو يتعامل فقط ب 0 و 1 لذلك تم إبتكار لغات البرمجة التي تتكون من تعليمات بسيطة قريبة إلى لغة البشر و عند تنفيذ برنامج مكتوب بلغة برمجة هناك برنامج آخر مهمته تحويل هذه التعليمات إلى لغة آلة يُسمى compiler (مُترجم) أو interpreter (مُفسر) بعض اللغات تعتمد على مُترجم و البعض الآخر تعتمد على مُفسر. هناك مجموعة من الفروق بينها لكن لاداعي للغوص فيها. على كل لغات البرمجة هي وسيلة تُسهل التعامل مع الحاسوب لإنجاز و حل بعض المشاكل و لغة سي تُعد أحد هذه اللغات و تعتمد على مُترجم لترجمة البرنامج إلى لغة آلة و تنفيذه فأنتِ ستُركزين على كتابة برامجك و المُترجم سيتكفل بعملية تحويلها إلى لغة آلة. بالتوفيق.
  4. مرحباً جوري ، حتى نتمكن من مساعدتك بشكل أفضل المفروض يتم ذكر لغة البرمجة المطلوبة، لكن على العموم يُمكنك تطبيق الخوارزمية التالية على أي لغة برمجة: تعريف مُتغير من النوع العددي (i) و إسناد القيمة 1 كقيمة مبدئية له تعريف مُتغير من النوع العددي (stop) يدل على متى تتوقف الحلقة و إسناد القيمة 100 كقيمة مبدئية له عمل حلقة while على المتغير i بشرط i يكون أقل من أو يُساوي stop في كل لفة للحلقة نفحص i إذا كان i زوجياً نقوم بطباعته ثم نضيف 1 للعداد i لفحص عدد ما إذا كان زوجياً نقسم هذا العدد على 2 و نُقارن باقي قسمته إذا كان يُساوي صفر فهو عدد زوجي سأقوم بتطبيق الخطوات أعلاه بلغة c++ يُمكنك تطبيقها بأي لغة أخرى: #include <stdio.h> int main() { int i = 1; int stop = 100; while(i <= stop) { if(i % 2 == 0) // فحص إذا كان العدد زوجي printf("%d ", i); i++; } } بالتوفيق.
  5. مرحباً @تهامي ادم عند التأكد من عمل الموقع في الخادم المحلي على جهازك بشكل سليم و تجربة كافة خصائص الموقع تقوم برفع ملفات الموقع إلى الإستضافة و تقوم أيضاً بإنشاء قاعدة بيانات على الإستضافة و رفع قاعدة البيانات المحلية إليها و بعدها تقوم بتعديل إعدادات الإتصال لكي يستطيع السكربت الإتصال بقاعدة البيانات التي أنشأتها على خادم الإستضافة . هناك بعض البرامج و الإضافات التي تُساعدك في إنشاء قاعدة بيانات على السيرفر ك phpmyadmin ، MySQL databases ... التي تم توفيرها من شركة الإستضافة حتى تُساعدك في عملية Deployement. بالتوفيق.
  6. مرحباً عبد الواحد ، أظن أنه من الأحسن دراسة الوضع جيداً فالشخص لا يشتري حاسوب كل يوم لذلك لو كان بإمكانك الحصول على جهاز بخصائص أعلى سيكون أفضل لك فمثلاً لو إستطعت شراء جهاز ب 16 غيغابايت سعة الذاكرة العشوائية (RAM) و قرص تخزين من النوع ssd سيكون أحسن لأن إقلاع الجهاز و فتح البرامج سيكون أسرع بكثير من قرص التخزين من النوع hdd. الأمر كله يعتمد على إمكانياتك و الميزانية التي تستطيع توفيرها، في ما مضى كنت أستخدم جهاز كان المُعالج فيه i3 من الجيل القديم و الذاكرة العشوائية 4 غيغابايت و قرص تخزين hdd لم تكن عملية التطوير أسرع لكن كنت ابرمج به ويب و كان يؤدي الغرض. ملاحظة: المُعالج i5-8250U جيد و أفضل بكثير للبرمجة فهو رُباعي الأنوية و يفي بالغرض و أداؤه أفضل من بعض مُعالجات i7 ماتحت الجيل السابع نعم هو ليس مُناسب للأشخاص الجيمرز أو مُحررين الفيديو أو مُطورين الألعاب يُنصح هؤلاء الأشخاص بإستخدام مُعالجات من السلسلة Xeon E او H(الجيل الثامن فما فوق) بإمكانك التفكير أيضاً في مُعالجات AMD الشركة المُنافسة ل Intel لكن يجب ان تكون السلسلة هي AMD Ryzen لأنها تُقدم نفس أداء مُعالجات intel الأجيال الحديثة. بالتوفيق.
  7. مرحباً بك، لا أحد يستطيع الإجابة على هذا السؤال لأنه لا أحد يعلم الغيب أو يستطيع التكهن لما سيحدث بعد 5 سنوات، إختر تخصصك حسب رغبتك و حسب ميولك الشخصي لأنه إذا أحببت مجالك ستُبدع فيه، لو سألت هل تخصص هندسة البرمجيات مطلوب الآن أجيبك نعم هو مطلوب فهناك العديد من الشركات التي تبحث عن موظفين في هذا المجال و هناك العديد من الشركات الناشئة التي تأسست في هذا المجال، لذلك إن كنت مُهندس برمجيات مُحترف في مجالك فالشركات هي التي ستبحث عنك ولو كنت شخص لديك خبرة كبيرة في المجال فعملك و خبرتك هي التي ستُسوق لك و تجعلك أنت من يختار مكان عملك لذلك فالأفضل لك إن كنت قد اخترت هذا المجال ان تٌركز على إكتساب أكبر قدر من الخبرة و المهارات المطلوبة في مجالك أما إن كنت تريد إختيار هذا المجال فعليك إختياره برغبة و لأنك تُحبه. ليس كل الناس تذهب لهذا التخصص و ليس كل من يختار هذا التخصص يُصبح مؤهل فالشركات لم تعد تهتم للمُسمى بقدر إهتمامها بما يملكه الشخص من مهارات و ما الذي سيُضيفه لها و ما الذي ستستفيد منه. أتمنى لك التوفيق.
  8. في هذا المسار من الدورة ستتعلم كيفية إنشاء RESTful API من خلال إطار laravel و تأمين الواجهة البرمجية بإستخدام حزمة Passport بإمكانك إلقاء نظرة على هذه الصورة التوضيحية: يشير REST إلى نقل الحالة التمثيلية بمعنى أنه عندما يتم إستدعاء Rest API يكون الخادم مسؤول عن نقل الحالة التمثيلية للمورد المطلوب إلى العميل. على سبيل المثال عندما يطلب أحد المطوِّرين واجهة برمجة تطبيقات Twitter لجلب كائن مستخدم (مورد) ، ستعيد واجهة برمجة التطبيقات حالة هذا المستخدم واسمه ومتابعيه والمشاركات المنشورة على Twitter. و يمكن أن يكون التمثيل على هيئة JSON او XML و نظرا لأن REST يستخدم بروتوكول HTTP في نقل الحالة التمثيلية للمورد فإنه يسمح بعمليات أسرع. تم تصميم Rest على أساس طلب و إستجابة بمعنى تطلب رابط يعيد بيانات أو معلومات على هيئة JSON أو XML و يجب أن تكون جميع الإتصالات عديمة الحالة بمعنى أن البيانات التي يتم إرجاعها لايتم الإحتفاظ بها من خلال خدمة Rest يعني إذا أردت الحصول على بيانات مرة أخرى ستقوم بالطلب مرة أخرى. لماذا Rest مُهمة و يجب عليك العمل بها لأنها تُسهل عملية التطوير و قابلية النقل حيث يُمكن إستضافة كل من العميل و جزء الخادم في خوادم مُنفصلة. و بفضل هذا الفصل يُمكن أن تحدث عملية التطوير في مُختلف المجالات بشكل مُستقل. لذلك بإنشائك لواجهة برمجية يُمكن لتطبيق ios التخاطب معها و لتطبيق اندرويد كذلك أيضاً يُمكن لواجهة موقع مبنية بأحد أطر عمل ال front end التخاطب معها، كما يُمكن أيضاً لسكربت آخر مبرمج بلغة غير التي تم إنشاء واجهة برمجة التطبيقات بها التخاطب معها فمثلاً يُمكن إنشاء API بلغة go و إستهلاكه من خلال سكربت بايثون و هذا ما يُسمى بتعدد الخدمات أو Microservices. أظن أن ما سبب لك الملل هو عدم رؤيتك لنتائج و التفاعل مع الأمر من خلال المُتصفح لكن تذكر ما الهدف من المسار. و خذ الشيء المهم فستحتاج إليه مُستقبلاً. بالتوفيق.
  9. مرحباً @Mohammed Aladimi السبب هنا هو أن دالة in_array تنتظر منك تمرير مُعاملين الأول هو العنصر الذي تريد البحث عنه و الثاني هو المصفوفة في حين أنه هنا لم يتم تمرير مصفوفة بل null و هذا يعني أن المتغير row يساوي null. أنصحك دائماً بإستخدام ما يُسمى بال prepared statments و parameterized queries للحماية من ثغرة sql injection و هذا سواء كنت تستخدم دوال ال mysqli أو PDO فمثلاً في حالة إستخدام mysqli سيكون الكود مشابه للشكل التالي: <?php $stmt = $conn->prepare("SELECT id from admin where email = ? AND password = ?"); // prepare the query $stmt->bind_param('ss', $adminMail, $adminPass); $stmt->execute(); $stmt->bind_result($id); if ($stmt->fetch()) { echo "success"; $_SESSION['login_admin_id'] = $id; // save id in session // redirect to admin panel } else { $error = "Email or Password is incorrect"; } كما بإمكانك أيضاً إستخدام PDO بالتوفيق.
  10. مرحباً صلاح، مسألة تسليم ملفات المشروع للعميل تختلف على حسب نوعية المشروع و طلبات العميل في حد ذاته، أحياناً يكون المشروع عبارة عن ملف اكسل أو دراسة جدوى أو تصميم شعار أو مقطع فيديو و غيرها من المشاريع من هذا النوع فأنت في الأخير مطالب بتسليم هذه الملفات لصاحب المشروع عن طريق إرسالها له في صفحة إدارة المشروع بتنظيم هذه الملفات حسب الشيء الذي تراه مناسب، أحياناً أخرى يكون المشروع عبارة عن برمجة موقع أو تصميم قالب أو برمجة تطبيق هاتف و هنا قد يطلب منك العميل من خلال متطلبات المشروع رفع الموقع على إستضافته أو رفع التطبيق على المتجر المخصص له سواء متجر apple أو متجر Google إضافة إلى هذا انت مطالب بتسليم الكود المصدري للمشروع من خلال إرساله في صفحة إدارة المشروع حتى تتمكن الإدارة من معرفة ذلك، أحياناً أخرى قد يطلب منك العميل إذا كان شخص له من المعرفة في هذا المجال وشخص فاهم للتقنية: مزامنة المشروع مع مستودع GitHub أو Bitbucket أو gitlab أو غيرها من المنصات و قد يطلب منك رفع العمل لتجربة المستجدات على إستضافة كل خمسة أيام أو أسبوع على حسب الشخص. و هذا ما أفعله شخصيا: مزامنة المشروع مع مستودع GitHub حتى لو لم يطلب العميل ذلك ربط المستودع مع إستضافة مجانية و تسليم رابط الموقع للعميل و كل ما أضيف خصائص جديدة أخبر صاحب المشروع عنها حتى يجربها بنفسه و يبدي رأيه بعد الإنتهاء من متطلبات المشروع ارفع العمل على إستضافة العميل ضغط ملفات المشروع و إرسالها في صفحة إدارة المشروع (إن كان العمل ضمن منصة عمل حر) طلب إنهاء المشروع ( غالبا لا أقوم بها بل العميل بنفسه ينهي المشروع) بالتوفيق.
  11. مرحباً @Ahmed Sawy بعيداً عن تقنية redux فالأكواد أو الشيفرات التي أمامنا هي عبارة عن شيفرات JavaScript: تعريف متغير من نوع كائن (Object) سُمي ب actions و لتعريفه إستخدمنا الكلمة المحجوزة const ما يعني أنه لا يُمكننا إنشاء مُتغير آخر بنفس الإسم، هذا الكائن به مجموعة من الخصائص هذه الخصائص عبارة عن توابع أو دوال تم إستخدام ما يُسمى بالدوال السهمية لتعريفها كل خاصية من هذه الخصائص تُعبر عن حدث يتم عمله لسلة مُشتريات: إضافة مُنتج للسلة، تخفيض عدد عناصر منتج مُعين في السلة، إزالة مُنتج من السلة بمعنى إذا كان موجود 4 عناصر من هذا المُنتج في السلة فسيتم إزالة كافة هذه العناصر، إفراغ السلة نهائياً من كل المنتجات. قلنا أن كل خاصية هي عبارة عن دالة سهمية هذه الأخيرة تُعتبر كغيرها من الدول التي نُعرفها في لغة JavaScript إلا أن طريقة كتابتها تأخذ منحى آخر و تم إضافتها في معايير ES6 هذا المفهوم موجود في العديد من اللغات الأخرى (أقصد الدوال السهمية) و يُمكن إعتبارها دالة عادية إلا أنها تختصر العديد من الأشياء. لِنقل على سبيل المثال أننا نريد تعريف دالة بإستخدام JavaScript تُعيد كائن خطي يضم إسم موظف كخاصية يتم تمريره كمعامل للدالة و بالتالي سيكون بالشكل التالي: let employee = function(employeeName) { return { name: employeeName }; }; نريد تحويل الدالة إلى دالة سهمية و بالتالي ستكون: let employee = (employeeName) => { return { name: employeeName }; }; لاحظ أننا إستغنينا عن الكلمة المحجوزة function و عوضناها <= ، نضع المُعاملات داخل قوسين لكن في حالة مُعامل واحد يُمكننا الإستغناء عن قوسين. بما أن الدالة تحتوي على تعليمة return لكننا نُرجع كائن فيُمكننا تغيير الدالة للشكل التالي: let employee = employeeName => ({ name: employeeName }); و بهذا الشكل اختصرنا الكتابة قليلاً. نأتي لأسئلتك: نعم حسب ما شرحت فهو يُتعبر مُعامل أو وسيط للدالة السهمية. الدالة السهمية تُرجع كائن و payload هي إحدى خصائص هذا الكائن نفس الشيء في المثال السابق كان عندنا خاصية إسمها name و هنا الخاصية إسمها paylaod لذلك دائماً في التسمية ما نُسمي أسماء مُعبرة سواء في الخصائص أو المُتغيرات. في هذه الحالة الكائن الذي تُرجعه الدالة لا يحتوي على خاصية payload لأنه ليس هناك داع لإضافة خاصية لذلك فالأمر يعتمد على حاجاتنا لهذه الخصائص في الملفات الأخرى و في هذه الحالة الدالة السهمية مُسندة إلى الخاصية clearCart و لإفراغ سلة مُشتريات نحن لسنا بحاجة لمُنتج بعينه بل نريد إفراغها من كل ما تحتويه من منتجات بغض النظر عن معرفتنا لأي منتج تحمل هذه السلة. بالتوفيق.
  12. مرحباً @Mahmoud Shaker2 عليك الإنتظار قليلاً و إذا لم يفتح صاحب المشروع حسابه يُمكنك حينها التواصل مع فريق الدعم للمنصة من خلال هذا الرابط و فتح تذكرة لمُشكلتك مع توضيحها جيداً و سيقوم الفريق حينها بحل مُشكلتك أو تنبيه صاحب المشروع للتواصل معك أو إنهاء المشروع. بالتوفيق.
  13. مرحباً @Mohammed Aladimi يوجد لديك خطأ في السطر: <?php $cat = mysqli_query($conn, "SELECT * FROM category"); لأن المتغير conn غير مُعرف في الصفحة الموجود فيها أي new-post.php فالمفروض يتم تضمين الملف الذي يتم من خلاله الإتصال بقاعدة البيانات في رأس الملف حتى يتم التعرف على المتغير conn بإستخدام include مثلاً: <?php include 'db/config.php'; // تقوم بتضمين الملف على حسب مساره و إسمه أو أن إسم المُتغير الخاص بالإتصال ليس conn بل إسم آخر الرجاء التأكد جيداً من هذا الأمر التحذيرات التي تأتي بعد هذا الخطأ ناتجة عنه. بالتوفيق.
  14. مرحباً عبد الواحد يبدو أنك تستخدم نُسخة حديثة من مكتبة jQuery و في النُسخ الحديثة من المكتبة أي من 3.0 فما فوق الطريقة الوحيدة التي يُنصح بإستخدامها هي: $(function() { // Handler for .ready() called. }); لذلك تجد أن الطريقة التي تستخدمها مشطوبة اي لا يُنصح بها أو مُهملة و سيتم حذفها مُستقبلاً. توجد أيضاً هذه الطريقة مذكورة في التوثيق الرسمي للمكتبة: $.when( $.ready ).then(function() { // Document is ready. }); يُمكنك أيضاً إستخدام vanilla JavaScript لعمل نفس الشيء بهذا الشكل: document.addEventListener("DOMContentLoaded", function() { // code... }); فهي الموافقة لها في js كما أود أن أشير إلى أن الخطأ الذي تُواجهه يُمكن أن يكون بسبب آخر لذلك أنصحك بطرح إستفسارك تحت الدرس المُخصص لأن هذا القسم للأسئلة العامة. بالتوفيق.
  15. مرحباً بك لا يوجد شيء إسمه طريقة صحيحة أو طريقة مُثلى لتقسيم الأرباح بين الشركاء و إنما يجب الإتفاق فيما بينهم و حتى وضع عقد قانوني يُوضح التفاصيل حتى تُحفظ حقوق الجميع و الأهم أن يكون تراضي بينهم فمثلاً يُمكن تقسيم الأرباح بنفس نسب الشراكة و لنقل مثلاً أن الشريك الأول قيمة شراكته هي x و الشريك الثاني هي y و الثالث z فيتم جمع هذه القيم كلها و لنقل أن الناتج هو T فبالتالي: نسبة الشريك الأول هي x/T نسبة الشريك الثاني هي y/T نسبة الشريك الثالث هي z/T يُمكن أن تكون هذه النسبة متغيرة من شهر لآخر فمثلاً لو كانت هناك تكاليف يجب دفعها شهرياً و هذه التكاليف ستُقسم بنسب متفاوتة بين الأطراف يجب أخذ هذا بعين الإعتبار أيضاً في تقسيم الأرباح. هناك عامل آخر أحيانا المساهمات لا تكون دائماً بالمال فمثلاً أحياناً يدخل شريك بمال و شريك آخر بعتاد أو شيء من هذا القبيل لذلك فالأصح في هذه الحالة تقييم كافة المساهمات و جمعها للحصول على الإجمالي و بعدها حساب نسبة كل شريك و كما قلت في البداية فالأمر نسبي و يعتمد على تراضي كل الأطراف.
  16. مرحباً بك. لا أظن أنه توجد منصات للعمل الحر تسمح لك بالتصرف في أرباحك أو رصيدك الذي حققته من إنهاء مشاريعك في نفس اليوم من إنهائها، فجميع المنصات تعتمد سياسة تعليق الرصيد، وذلك لعدة أسباب من بينها التأكد من تسليم المشروع و ملفات المشروع للعميل ، التأكد من عمل المشروع بشكل سليم ضمانا لحقوق صاحب المشروع و حتى لا تضطر المنصة إلى إرجاع حقوقه بطريقة أخرى، بوابات الدفع التي تعتمدها كل منصة تختلف و لكل بوابة سياستها في تحويل الرصيد، قد تكون مدة تعليق الرصيد مختلفة من منصة إلى أخرى لكنها موجودة في جميع المنصات. بالتوفيق.
  17. مرحباً @Yahia Nasrallah دورات أكاديمية حسوب ليست مجانية لكن الأكاديمية تُوفر عدة مقالات مُفيدة في شتى المجالات و في عدة تقنيات بشكل مجاني بإمكانك الإستفادة منها أيضاً هناك عدة كتب جيدة نشرتها الأكاديمية. الكتب التي نشرتها أكاديمية حسوب مقالات البرمجة بإمكانك التعلم أيضاً بشكل مجاني على اليوتيوب فهناك عدة قنوات تُوفر مُحتوى جيد يُمكنك من خلاله تطوير نفسك في مجال ما، فقط حدد مجالك و إبحث عن دورات تُفيدك، الأمر ليس صعب فقط محتاج بحث و إجتهاد و مثابرة لتطوير نفسك. بإمكانك أيضاً الإستفسار من مركز المُساعدة حول الأمر من: هنا و فتح تذكرة لإستفسارك و سيُجيبك فريق الدعم في أقرب وقت. بالتوفيق.
  18. أظن أنه حتى تقوم بتأكيد هويتك يُشترط أن يكون سنك 18 فما فوق و يحق للموقع في أي وقت طلب وثائق شخصية تُثبت كالهوية أو جواز السفر للتحقق من هوية المُستخدم. يُمكنك الإطلاع على شروط الإستخدام من: هنا. كما إن احتجت الإستفسار عن شيء ما يُمكنك التواصل مع مركز المساعدة من هنا و فتح تذكرة لإستفسارك و سيُجيبك فريق الدعم الفني في أقرب وقت. بالتوفيق.
  19. مرحباً @حمزة احمد تأكيد الهوية على مستقل ليس ضروري لبدأ العمل لكنه ضروري لسحب أرباحك التي تُحققها على المنصة. كما أن عدد العروض المتاحة لك يُصبح 12 بدل 10 كما قال الأخ وائل. بالتوفيق.
  20. مرحباً عبد الواحد الخطوة التي تريد أن تخطوها أعتبرها خطوة جيدة لأنه بتخصصك في مجال تطوير واجهات المستخدم ستُركز فقط على هذا المجال و بالتالي فإن وقتك بالكامل سيكون منصباً عليه و إبداعك فيه سيكون بشكل كبير خصوصاً أنك أحببت هذا المجال. نعم أنصحك بذلك لكن مجال تطبيقات سطح المكتب لم يعد مطلوباً مقارنةً بالويب و الموبايل. نعم هو مطلوب خصوصا لو أتقنت العمل بأحد أطر العمل المعروفة ك react او vue او angular أنصحك بدايةً في التمرن و التطبيق أكثر على ما لديك فدورة تطوير واجهات المُستخدم تُعطيك إنطلاقة أو نقطة البداية يُمكنك إستخدام ما تعلمته في هذه الدورة لإنجاز أشياء مشابهة لما أنجزته. بعدها أنصحك في تعلم css preprocessor ك sass او less ثم التعمق أكثر في الجافاسكربت و الدخول في معايير es6 و البرمجة الكائنية بلغة جافاسكربت لأن هذه الأشياء ستُسهل عليك تعلم أحد أطر العمل الثلاثة react او Vue أو angular يكفي تعلم أحدها و إذا احتجت أو أرغمتك الظروف إلى إستخدام إطار عمل آخر يُمكنك حينها تعلمه، و أنصحك بتعلم react لأنك تريد أيضا الدخول في عالم تطبيقات الموبايل و بالتالي ف react سيُسهل عليك تعلم react native الذي يُستخدم في بناء تطبيقات الموبايل. بالتوفيق.
  21. مرحباً بك ، بإمكانك إستخدام إضافة printThis و هي إضافة خاصة بمكتبة jQuery و إستخدامها جداً سهل: تقوم بتضمين مكتبة jQuery تقوم بتضمين الإضافة تُحدد العنصر الذي تريد طباعته عند الضغط على الزر تقوم بإستدعاء التابع printThis بهذا الشكل مثلاً: $(function() { $("#printBtn").click(function() { $("#targetC").printThis(); }); }); و هذا مثال توضيحي لكيفية الإستخدام: هناك عدة خيارات و إعدادات يُمكنك إستخدامها كما يُمكنك الإطلاع على مُستودع الإضافة على github من هنا بالتوفيق.
  22. مرحباً @AM0 بإمكانك إستخدام LINQ لحساب عدد تكرار محرف مُعين في سلسلة نصية ما و ذلك من خلال: static int countChars(string mystring, char c) { return mystring.Count(s => s == c); // العد يكون على أساس تساوي المحرف الحالي مع المحرف المطلوب } و هذا البرنامج ككل: using System; using System.Linq; // لإستخدام الميثود Count class HelloWorld { static void Main() { Console.Write("Please enter your string : "); string mystring = Console.ReadLine(); Console.WriteLine(countChars(mystring, ' ')); } static int countChars(string mystring, char c) { return mystring.Count(s => s == c); // العد يكون على أساس تساوي المحرف الحالي مع المحرف المطلوب } } كما يُمكنك تجربة المثال من: هنا بالتوفيق.
  23. نعم بإمكانك عدم إستخدامها ، أنا شخصياً لا أستعملها و مُعظم الشركات المُتوسطة أيضاً لا تستخدمها لكن تعلمها سيكون مفيد فهي تُسهل العمل على الفريق ككل خصوصا في المشاريع الكبيرة و الطويلة المدى فرُؤية مُخطط سيكون أحسن من الدخول مباشرة في الشيفرات البرمجية. و إذا دعت الحاجة ستكون لديك معلومات حولها.
  24. مرحباً عبد الواحد الإصدار القديم من gulp غير متوافق مع الإصدارات الحديثة من node.js من 12 فما فوق، أنصحك دائما بإستخدام النسخة lts من node.js لأنها تكون مستقرة. بإمكانك قراءة هذا المقال لتحديث نُسخة gulp بعدها من : هنا كما يمكنك متابعة هذا الفيديو من هنا بالتوفيق.
  25. مرحباً @Ali Ali19 فهمي للمطلوب هو كالتالي يكون لديك مصفوفتين و الناتج هو مصفوفة جديدة تضم جمع عناصر المصفوفتين إذا كان الفهرس (index) عدداً زوجياً ويقوم بطرح القيمتين في الحالة المُعاكسة: يُمكنك إنجاز ذلك من خلال الكود التالي: #include <iostream> using namespace std; int main() { int arr1[] = { 2, 2, 2, 2 }; // تعريف المصفوفة الأولى int arr2[] = { 1, 1, 1, 1 }; // تعريف المصفوفة الثانية int result[4]; // تعريف المصفوفة التي ستضم النتائج for(int i = 0; i < 4; ++i){ // حلقة تبدأ من 0 إلى 4 result[i] = i % 2 == 0 ? arr1[i] + arr2[i] : arr1[i] - arr2[i]; // إستخدام العامل الثلاثي لتنفيذ الشرط بطريقة مُختصرة } cout << "Result are: "; // طباعة عناصر المصفوفة النهائية for (const int &n : result) { cout << n << " "; } return 0; } بإمكانك تجربة البرنامج من: هنا كما يُمكنك فهم المُعامل الثلاثي من: هنا بالتوفيق.
×
×
  • أضف...