-
المساهمات
4657 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
30
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو بلال زيادة
-
يمكنك استخدام روبط CDN للمكتبة ، بحيث يمكنك ملفات css ، كما في الكود التالي <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"> و يمكنك استخدام ملفات js كما في الكود التالي <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script> ويمكنك تضمينها في ملفات كما في الكود التالي <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap demo</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"> </head> <body> <h1>Hello, world!</h1> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script> </body> </html>
-
React (والتي تُعرَف أيضًا باسم React.js أو ReactJS) هي مكتبة JavaScript تُستخدَم لبناء واجهات المستخدم. تُدار React من شركة Facebook بالإضافة إلى مجتمع كبير من المطورين، فهي مشروعٌ مفتوح المصدر. تُسهِّل React عملية إنشاء واجهات مستخدم تفاعليّة. عليك فقط تصميم عروض (views) لكل حالة في تطبيقك، وستُحدِّث React المكوّنات الصحيحة بكفاءة وتقوم بتُصيّرها عندما تتغير بياناتك. تعتمد React بشكل أساسي على مفهوم المكوّنات (Components). حيث يجب عليك بناء مكوّنات مُغلَّفة تُدير حالتها الخاصّة، ومن ثمّ تُركِّب هذه المكوّنات مع بعضها لإنشاء واجهات مستخدم مُعقّدة. ولمّا كان منطق المكوّنات مكتوبا باستخدام JavaScript بدلًا من صيغة القوالب، فبإمكانك تمرير الكثير من البيانات عبر تطبيقك بسهولة وإبقاء الحالة بعيدة عن DOM. تسير React على مبدأ «تعلّم مرّة واكتب في أي مكان»، إذ لا تفترض تعاملك مع تقنية مُحدّدة، بل تستطيع تطوير ميزات جديدة فيها دون إعادة كتابة شيفرة جديدة. يُمكِن تصيير React على الخادوم باستخدام Node.js، ويُمكن من خلالها إنشاء تطبيقات الهواتف النقالة عبر React Native كما ويمكنك إلقاء نظرة على react في موقع ويكي حسوب من هنا
- 2 اجابة
-
- 1
-
-
هل قمتي بتطبيق الفكرة و حصلت أي مشكلة ، يمكننا مساعدتك في أي مشكلة ، هل يمكنك تجريب كتابة الكود كاملاً و أخباري بالنتيجة ؟
-
في البداية دعنا نوضح الخاصية createTextNode ، فمثلا نريد إنشاء عنصر نقوم باستخدام createElement كالتالي // أنشئ العنصر الجديد var newDiv = document.createElement("div"); ثم نريد إضافة محتوى لهذا العنصر عن طريق الخاصية createTextNode كالتالي // ضَع محتوى داخل العنصر var newContent = document.createTextNode("مرحبًا"); ثم نضيف المحتوى للعنصر المنشئ مسبقاً بهذه الطريقة // أضف عقدة النّص إلى العنصر المُنشأ newDiv.appendChild(newContent); وبالتالي نفهم بأن مهمة الخاصية createTextNode مهمتها إدخال محتوى للعنصر، أما خاصية innerHtml فهذه الخاصية تستطيع من إدخال وسم HTML بداخل العنصر مثل let div = document.createElement('div'); div.innerHTML = "<strong>Hi there!</strong> You've read
- 1 جواب
-
- 2
-
-
لا توفر JavaScript المصفوفة متعددة الأبعاد في الأصل ومع ذلك يمكنك إنشاء مصفوفة متعددة الأبعاد من خلال تحديد مصفوفة من العناصر حيث يكون كل عنصر أيضًا مصفوفة أخرى ، لهذا السبب يمكننا القول أن مصفوفة JavaScript متعددة الأبعاد عبارة عن مصفوفة من المصفوفات ، أسهل طريقة لتعريف مصفوفة متعددة الأبعاد هي استخدام التدوين الحرفي للصفيف. للإعلان عن مصفوفة فارغة متعددة الأبعاد ، يمكنك استخدام نفس صيغة الإعلان عن مصفوفة أحادية البعد مثل let activities = []; و لتعريف مصفوفة متعددة الأبعاد ستكون بهذا الشكل let activities = [ ['one', 1], ['two', 2], ['three', 3] ]; لاحظ في المصفوفة قد تم تعريف اسم العدد نصياً و رقم العدد و يمكنك طباعة نتيجة المصفوفة باستخدام الدالة table مثل console.table(activities) و تكون نتيجة الكود ┌─────────┬─────────┬───┐ │ (index) │ 0 │ 1 │ ├─────────┼─────────┼───┤ │ 0 │ 'one' │ 1 │ │ 1 │ 'two' │ 2 │ │ 2 │ 'three' │ 3 │ └─────────┴─────────┴───┘
- 1 جواب
-
- 1
-
-
هل يمكنك أخباري بأي لغة تريد كتابة الدوال لنستطيع مساعدتك بشكلٍ أفضل.
-
لاحظ أن سبب الخطأ هو أن أكواد الجافاسكربت حالياً يتم تنفيذها قبل أن تتحمل عناصر الصفحة لأنه تم وضع الملف قبل وسم إغلاق head و بالتالي لنضمن أن عناصر الصفحة قد تم تحميلها كاملاً قبل تحميل ملف الجافاسكربت نقوم بوضع سطر استدعاء ملف الجافاسكربت قبل وسم إغلاق body فهذه أفضل طريقة لتجنب مثل هذه الأخطاء.
- 7 اجابة
-
- 1
-
-
صحيح ، يتم جلب ملف jsfile.js في الصفحة و يمكنك استخدام جافاسكريبت في الصفحة ، إذا كان الملف غير مدرج في الصفحة فيجب التأكد من مساره و أو اسم الملف عند استدعائه كما في السطر التالي <script type="text/javascript" src="jsfile.js"></script>
-
يجب وضع ملف استدعاء جافاسكريبت قبل وسم نهاية body بهذا الشكل <sctipt type="text/javascript" src="jsfile.js"></script> </body> </html> ثم يجب عليك فتح ملف index.html في المتصفح و ليس باستخدام ملف jsfile.js بحيث عندما تقوم بفتح ملف index.html لن تظهر لك هذه المشكلة .
- 7 اجابة
-
- 1
-
-
الأمر بغاية البساطة ، هناك دروس يتم شرح نظرياً لإرشادك و تعليمك أكثر عن الحاسوب فهذه الدروس يستكون بشكل نظري أي لا يوجد فيها أي تطبيق و لكن الدروس التي سيكون فيها تطبيق سيطلب منك المدرب في الفيديو تطبيق ما يفعله مثل قسم تعلم سكراتش فستجد أن هناك الكثير من الدروس التي يجب عليك التطبيق فيها و صناعة الالعاب مع المدرب ، أيضا هناك دروس تطبيقية كثيرة في قسم أساسيات البرمجة ، حيث سيقوم المدرب بشرح مبادئ البرمجة و لغة جافاسكريبت حيث في هذه الدروس ستقوم بالتطبيق مع المدرب فيما يشرحه ، لذلك الدروس النظرية ستجد أن المدرب لا يقوم بتطبيق أكواد فيها بالعكس في الدروس العملية.
- 1 جواب
-
- 1
-
-
الدالة forEach() تستدعي دالةً لكل عنصر موجود في المصفوفة. و تركيبها كالتالي Array.prototype.forEach() ماذا يعني ذلك ، ماذا لو كان لدينا مصفوفة مخزنة في ثابت وتحتوي على ثلاث عناصر كالتالي const arr = ['a', 'b', 'c']; فيمكننا استخدام forEach مع هذه الثابت بهذا الشكل arr.forEach(function(element) { console.log(element); }); وسيتم طباعة كل عنصر في المصفوفة بحيث يكون ناتج الكود السابق // a // b // c الأن لاحظ أنه البنية العامة للدالة هي arr.forEach(callback[, thisArg]) و callback هي الدالة التي ستُنفَّذ كل عنصر من عناصر المصفوفة ، وتقبل ثلاثة وسائط ، الدالة forEach تُنفِّذ الدالة callback على كل عنصر موجود في المصفوفة. لاحظ أنَّ الدالة callback ستُستدعى على الفهارس التي لها قيمٌ مسندةٌ إليها، فهي لن تستدعى للفهارس التي حُذِفَت أو التي لم تُسنَد إليها قيم ، ستستدعى الدالة callback مع تمرير ثلاثة وسائط إليها: قيمة العنصر (currentValue)، وفهرسه (index)، وكائن المصفوفة (array). إذا وفّرنا المعامل thisArg إلى الدالة forEach، فسيستخدم كقيمة this داخل الدالة callback، وإن لم نُحدِّد له قيمةً فستستعمل القيمة undefined. لاحظ أنَّ الدالة forEach لا تغيّر المصفوفة التي تستدعى عليها بأيّ شكلٍ من الأشكال. من غير ممكن إيقاف حلقة تكرار forEach() إلا برمي استثناء، وإن كنت تحتاج إلى إيقاف حلقة التكرار فلا يُنصَح باستخدام الدالة forEach()، وإنما استخدم حلقات التكرار العادية. إذا أردتَ اختبار قيم المصفوفة فاستخدم الدالة every() أو some()، ويمكن استخدام الدوال الجديدة find() و findIndex() لمعرفة وجود قيمة ما. ومن الأمثلة عليها ، لاحظ يوجد لدينا دالة تقوم بطباعة رقم و اسم العنصر كالتالي var text = ""; function myFunction(item, index) { text += index + "- " + item + "<br>"; } ومن ثم لدينا مصفوفة بهذا الشكل var text = ""; const numbers = ["one", "two", "three"]; // هذه المصفوفة function myFunction(item, index) { text += index + "- " + item + "<br>"; } لاحظ نريد تطبيق الدالة myFunction على عناصر المصفوفة فيمكننا استخدام forEach كالتالي var text = ""; const numbers = ["one", "two", "three"]; numbers.forEach(myFunction); // هنا function myFunction(item, index) { text += index + "- " + item + "<br>"; } ثم نقوم بإنشاء عنصر لطباعة النتيجة في الصفحة <div id="text"></div> ثم نقوم في جافا سكريبت باسناد النتيجة للعنصر الذي يحمل id و هو text كالتالي var text = ""; const numbers = ["one", "two", "three"]; numbers.forEach(myFunction); document.getElementById("text").innerHTML = text; function myFunction(item, index) { text += index + "- " + item + "<br>"; } فلاحظ النتيجة ستكون بعد تطبيق الدالة على عناصر المصفوفة 0- one 1- two 2- three
-
تم اختيار الموضوعات في الدروة بما تناسب الطلاب الذين لا يكون لديهم أي خبرة كافية في لغة جافا سكريبت و بالتالي تجد أن الدروس تبدأ تدريجياً في توجيه الطالب من الأساسيات إلى الدروس المتقدمة و تجد بأن هناك شرح لأساسيات react.js و كذلك شرح لأساسيات node.js و تجد أن الدروس تشرح الأساسيات ليتم شرح أساسيات لأطر عمل آخرى مثل Electron.js و Ionic و Next.js وعدم التركيز على أطار عمل بدون غيره. كذلك يمكنك التواصل مع الدعم الفني من هنا لاقتراح ما تريد و سيعملون على إجابتك بشكلٍ أفضل
-
هناك طريقة يتم استخدامها و هي إرجاع متغير وليكن باسم page في api و يحمل رقم الصفحة التي تريد عرض السجلات فيها ( مثل فكرة تعدد الصفحات في المواقع الالكترونية ) و بالتالي يكون الرابط الأفتراضي كالتالي http://127.0.0.1:8000/api/posts?page=1 الأن تقوم بعرض السجلات المرجعة من هذا api في ListView كالمعتاد و لكن لاحظ أنه يتم إنشاء متغير جديد و ليكن باسم page في فلاتر كالتالي var page = 1; ثم عند مناداة رابط api يتم استبدال رقم 1 بقيمة متغير page الذي قمنا بإنشائه فيصبح الرابط كالتالي var url = "127.0.0.1:8000/api/posts?page=" + page; لاحظ القيمة الافتراضية لهذا المتغير هي 1 ، ثم عند النقر على الزر تقوم بزيادة متغير page بمقدار 1 ويجب إحاطة العملية ب Setstate ليتم تحديث متغير page كالتالي TextButton( child: Text("Pressed Here"), onPressed: (){ setState(() { page = page + 1; }); } لاحظ عند الضغط في المرة الاولى سيتم تغيير قيمة متغير page من رقم 1 إلى 2 و هكذا .
- 3 اجابة
-
- 1
-
-
يجب الانتظار و سيتم الرد عليك من خلال البريد الالكتروني ، في العادة هناك طلبات تحقق كثيرة تكون ، لذلك انتظر وسوف يقومون بالرد عليك .
- 1 جواب
-
- 1
-
-
يمكنك التواصل مع الدعم الفني و سيعملون على الإجابة عن جميع استفساراتك بشكل ممتاز.
-
أسعار الدورات قد تخضع للتخفيض ما بين فترة وفترة آخرى ، لذلك ربما تقصد أنه كان سعر الدورة في وقت التخفيض و عاد السعر لوضعه الطبيعي بعد إنتهاء التخفيض ، بخصوص أن سعر الدورة مبالغ فيه ، لا أظن ذلك فلثد تم تحديد الأسعار بناء على ما تقدمه الدورات من دروس و عدد الساعات برأيي ، لذلك لو كان لديك أي استفسار يمكنك الرجوع إلى مركز المساعدة و التواصل معهم في أي شيء تريده و سيعملون على إجابتك بشكلٍ أفضل. مركز المساعدة من هنا.
- 7 اجابة
-
- 1
-
-
حسناً
- 5 اجابة
-
- 1
-
-
يمكنك من المتابعة الدقيقة مع المدرب عندما يشرح الدروس , و من ثم تقوم بالتطبيق العملي مع المدرب ، مع التطبيق الفردي و مقارنة كتابة الكود كما كنت تكتبه مع المدرب مع الكود الذي كتبته بنفسك و تحديد الأخطاء و العمل على تفاديها مرة أخرى عندما تعاود كتابة الكود بنفسك مرة أخرى ، أيضا تدوين الملاحضات و الدوال سيعمل على زيادة التركيز عندك و سيساهم هذا الأمر في تسهيل الوصول إلى المعلومات و الملاحظات التي تحتاجها في الوقت المناسب ، العمل على تنفيذ مشاريع كاملة بمفردك فهذا الأمر سينمي لديك مهارة كتابة الكود و معرفة الأخطاء و حلها بنفسك ، حاول التركيز في الدروس أو في كل جزئية بشكلٍ كبير حتى لا تقع في التشتت مما يفقدك الكثير من المعلومات.
- 5 اجابة
-
- 1
-
-
إذا كنت تقصد أنك أنتهيت من دورة تطوير واجهات المستخدم يمكنك التقدم بطلب إجراء اختبار من خلال التواصل مع مركز الدعم الفني من هنا ، و شروط التقدم للامتحان هي: يمكنك التقدم إلى امتحان الدورة، من خلال التواصل مع مركز مساعدة أكاديمية حسوب، مع مراعاة الشروط التالية: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub أولًا بأول لمشاركتها معنا أو يمكنك زيارة الرابط التالي للمعرفة أكثر عن الاختبار و شروطه من هنا و أما إذا كنت تقصد أنه أنتهيت من أساسيات HTML فلابد لك من التطبيق العملي مع المدرب فهذا أفضل شيء لك في هذه المرحلة ، مع مراعاة إكمال باقي الدروس مع المدرب حتى تستطيع الانطلاق لبناء مشاريع كاملة كالمشاريع التي يتم شرحها في الدورة مثل بناء واجهة مستخدم تشبه موقع YouTube بناء صفحات هبوط تطوير متجر الكتروني تطوير موقع شركة تطوير لوحة تحكم بناء مواقع ثابتة باستخدم Hugo أحرص على التطبيق العملي مع المدرب و تسجيل النقاط المهمة كي تستطيع الرجوع إليها متى احتجت لها.
-
لم ترفق كود html لذلك ربما كان هناك مشكلة ما فيه ، ولكن هل حللت المشكلة ؟
-
لم أجد في الكود أي خلل واضح ، لذلك هل يمكنك أن تتأكد بأن حقل id في جداول قاعدة البيانات يأخذ القيمة auto increment ليتم زيادة حقل id بمقدار 1 كل عملية إضافة . أيضا هل يمكنك إرفاق جداول قاعدة البيانات ؟
-
يجب أن تحتوي الصفحة على نموذج إدخال يقوم المستخدم عند زيارة الصفحة بوضع اسمه في حقل الإدخال كما في التالي <form action="index.php" method="POST"> <input type="text" name="username" placeholder="يرجى إدخال اسمك ؟ " /> <br /> <input type="submit" name="submit" value="ترحيب" /> </form> لاحظي أن نموذج الإدخال يحتوي على حقل إدخال و زر ليتم تنفيذ و طباعة كود الترحيب ، و من ثم في PHP يتم جلب الاسم المدخل في حقل الإدخال <?php function setUsername($name) { } ?> في الكود السابق نقوم بصنع دالة تمرر لها متغير name$ و من ثم في داخل جسم الدالة نقوم بطباعة الجملة التالية <?php function setUsername($name) { return "greeting = Hi" . $username . "Welcome to our website."; } ?> ومن نقوم بالتحقق من أن الحقل يحتوي على قيمة عن طريق الكود التالي ولاحظ أنه تم تمرير القيمة إلى دالة isset لنتحقق من أنها تحمل قيمة أو لا. <?php if(isset($_POST['username'])){ $name = $_POST['username']; } ?> ومن ثم نقوم باستدعاء الدالة ليتم طباعة جملة الترحيب كالتالي <?php if(isset($_POST['username'])){ $name = $_POST['username']; echo setUsername($name); } ?>
- 1 جواب
-
- 1
-
-
هل يمكنك إرفاق الكود الذي تتوقع أن تكون به المشكلة ؟
-
لاحظ أن مدة دورة علوم الحاسوب 53 ساعة فيديو تدريبية , و بالتالي لو شاهدت أقسام الدورة مثلاً قسم مدخل إلى علوم الحاسوب ستجد أن الدروس مقسمة إلى عدة أجزاء في كل جزء يوجد درس أو أكثر من درس و يوجد بجانب كل فيديو مدته كالصورة المرفقة الأولى ، و أيضا يختلف كل قسم عن الآخر في عدد الأجزاء و الفيديوهات فالأقسام : مدخل إلى علوم الحاسوب يوجد به 42 فيديو . أساسيات البرمجة يوجد به 76 فيديو . أنظمة التشغيل ونظام لينكس يوجد به 47 فيديو . قواعد البيانات يوجد به 62 فيديو . إلى عالم الويب يوجد به 55 فيديو . البرمجة كائنية التوجه يوجد به 38 فيديو . الخوارزميات وبنى المعطيات يوجد به 33 فيديو . أنماط التصميم يوجد به 31 فيديو . وبالتالي بناء على عدد الفيديوهات في كل قسم يكون عدد الساعات مختلف لكل قسم .