-
المساهمات
3552 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
34
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو سمير عبود
-
مرحباً @Abderahman Benchalel فلتأخذ البرنامج خطوة بخطوة: أولا: int hgt; هنا قمنا بتعريف متغير من النوع العددي(int) ثانياً: do{ hgt = get_int("height:\n"); } while(hgt < 1 || hgt > 8); في هذا الجزء نقول للبرنامج كرر ما بداخل الحلقة ما دام الإرتفاع الذي يُدخله المُستخدم أصغر تماماً من 1 أو أكبر تماماً من 8 بمعنى إذا أدخل المستخدم عدداً صحيحا من المجال [1,8] سيمر إلى التعليمة التي بعد حلقة do .. while غير هذا سيبقى يسأل المُستخدم عن إدخال الإرتفاع. ثالثاً: for(int count = 0; count < hgt; count++) { // التعليمات التي بداخل هذه الحلقة ستتكرر حسب الإرتفاع for(int w = 0; w < count; w++) { printf("#"); } printf("\n"); } لفهم هذين الحلقتين فلنأخذ مثال و لنجعل hgt = 3 الحلقة الأولى العداد count سيأخذ القيم التالية: 0, 1, 2 من أجل كل قيمة من القيم الثلاثة سنقوم بعمل حلقة سيأخذ العداد w فيها قيماً متعلقة بقيمة العداد الأول بمعنى - عندما يكون count == 0 لن يتم تنفيذ الحلقة الثانية و سيتم تنفيذ فقط أمر الطباعة printf("\n"); و هو يعني أترك السطر الحالي و إنتقل إلى سطر جديد - عندما يكون count == 1 الحلقة الثانية ستتكرر مرة واحدة و السبب أن w سيأخذ قيما من هذا المجال [0, 1[ أي سيأخذ قيمة واحدة و هي 0 و بالتالي سيتم طباعة # مرة واحدة ثم يخرج من الحلقة الداخلية و بالتالي سيجد أمر الإنتقال إلى سطر جديد. - عندما يكون count == 2 الحلقة الثانية ستتكرر مرتين و السبب أن w سيأخذ قيما من هذا المجال [0, 2[ أي 0 ثُم 1 و بالتالي سيتم طباعة ## و بالتالي سيكون الناتج: # ## حتى نحصل على الشكل الصحيح على الحلقة الثانية ان تكون بهذا الشكل: for(int w = 0; w <= count; w++) { printf("#"); } حتى تفهم منطق الفكرة عليك أن تُفكر أنه لدينا جدول عدد صفوفه هو hgt و عدد أعمدته هو hgt و كل خانة مُحددة بإحداثيتن (count, w) بحيث count هو رقم الصف و w هو رقم العمود و نريد ملأ خاناته بهذا الرمز # نحتاج بشكل أساسي إلى حلقتين متداخلتين 1- إذا كنا نريد ملأ كافة الخانات فسيكون تكرار الحلقة الداخلية نفس تكرار الحلقة الخارجية من أجل كل قيمة لعدادها أي أن count سيأخذ قيما من 0 إلى hgt و من أجل كل قيمة له سيأخذ w قيماً من 0 إلى hgt أيضاً. 2- إذا كنا نريد ملأ فقط الخانات التي تحت القطر أو الوتر: الخانات القُطرية هي التي تقع في (1, 1) , (2, 2) ... , (hgt, hgt) بمعنى أن الخانات القطرية يكون فيها الصف يُساوي العمود و في هذه الحالة سيكون تكرار الحلقة الداخلية متعلق بقيمة عداد الحلقة الأولى يعني أن عداد الحلقة الداخلية سيأخذ قيماً من 0 إلى قيمة عداد الحلقة الخارجية في تلك اللفة. بالتوفيق .
- 8 اجابة
-
- 1
-
مرحباً @Bassel Ahmed لغة البرمجة التي بنيت عليها هذه المكتبة هي لغة JavaScript لذلك تحتاج إلى تعلم أساسيات لغة JavaScript ثم تنتقل إلى تعلم معايير ES6 وما فوق و بعدها تتعلم أساسيات node.js. من خلال الموقع الرسمي للمكتبة فهي تعتبر وحدة خاصة ب node.js للتعامل مع الBots BOT: هو تطبيق برمجي يتم بناؤه لعمل بعض المهام الإعتيادية المتكررة و يعمل بشكل اوتوماتيكي و بشكل اسرع. Node.js : هو نظام برامج مبني على محرك chrome JavaScript v8 و تم عمله لبناء تطبيقات انترنت قابلة للتوسع كخوادم ويب لأن لغة جافاسكربت تعمل فقط في المتصفح و بإستخدام node.js يمكننا إستخدامها في جهة الخادم أيضاً Es6: هي عبارة عن معايير موحدة تم عملها من قبل منظمة متخصصة. بالتوفيق
- 5 اجابة
-
- 1
-
مرحباً بك نعم يمكنك إستبدال أسماء المتغيرات بأي إسم آخر تراه مناسب لك وذلك وِفق قواعد تسمية المتغيرات لكن عليك تغيير كافة مواضع المتغيرين f1 و f2 بالمتغيرات الجديدة التي اخترتها. بالتوفيق.
-
مرحباً @Momen Gamal التعبير البرمجي الشرطي ( if statement ) متشابه في كافة لغات البرمجة و يُكتب بهذا الشكل: if (condition) { // في حالة تحقق الشرط } else { // في حالة عدم تحقق الشرط } أما الشرط المٌختصر أو كما يُسمىConditional (ternary) operator فيُكتب بهذا الشكل: condition ? exprIfTrue : exprIfFalse بمعنى إن كان الشرط صحيح نفِذْ ما بعد علامة الإستفهام و إن كان خاطئ نفِذْ ما بعد النقطتين مثلاً: نريد إنشاء دالة لإرجاع القيمة الأكبر (max) من قيمتين أي أننا سنقوم بإنشاء دالة تقبل وسيطين و ترجع الأكبر 1- بإستخدام if statement العادية: function max(n1, n2) { var max; if(n1 > n2) { max = n1; } else { max = n2; } return max; } 2- بإستخدام ال ternary operator: function max(n1, n2){ var max = (n1 > n2) ? n1 : n2; return max; } أو يُمكننا الإستغناء عن المتغير max بهذا الشكل: function max(n1, n2){ return (n1 > n2) ? n1 : n2; } مراجع: 1- MDN 2- موسوعة حسوب 3- javascript.info كما يُمكنك إلقاء نظرة على هذا المقال: بالتوفيق.
- 3 اجابة
-
- 1
-
مرحباً صالح لا يُمكن معرفة صلاحية الكوبون من عدمه لذلك أنصحك بالتواصل مع فريق الدعم للإستفسار عن الأمر و سيردون عليك في أقرب وقت. يُمكنك زيارة مركز المساعدة من خلال هذا الرابط: إضغط هنا و قُمْ بفتح تذكرة للإستفسار و إن كان الكوبون صالح سيُعلِمونك بذلك. و إن كان معك كوبون صالح يُمكنك إستعماله من خلال: كما يُمكنك الإستفسار من فريق الدعم كيفية إستعماله و الإستفادة منه أيضاً. بالتوفيق.
- 5 اجابة
-
- 1
-
مرحباً فايزة . بدايةً أدعوك للإطلاع على بعض من مقالات الأكاديمية بخصوص لغة روبي و فهمها من خلال الرابط التالي: إضغط هنا و برأيي عدم التسرع في الإنتقال إلى المسارات القادمة و فهم الأساسيات جيداً لأن فهمها جيداً سيُسهل عليك باقي المسارات حتى ولو اظطررتي لإعادة المسار الأول ثانيةً . إذا كانت الأمور تبدو صعبة الفهم عليك و هذا ما ألاحظه فأنصحك بمشاهدة المسار الأول من دورة علوم الحاسوب لأنه سيكون مفتوح لكِ كما أنه يشرح أساسيات البرمجة و الخوارزميات بأسلوب سهل و مُبسط بعد إنهاء هذا المسار ستتمكنين من فهم مسار أساسيات لغة روبي و ذلك بمساعدة المدربين أيضاً . الصبر و التطبيق العملي مفتاح تعلم البرمجة لا تتسرعي في مُشاهدة الدروس و تخطيها بدون فهم لأن هدفنا ليس إتمام الدورة و إنما فهم فحواها و ما ترمي إليه حتى و لو أخذ منك المسار الأول وقتاً طويلاً. قد يأخذ منك درس واحد مدة 3 أيام لفهمه و هذا هو الأهم لا تكترثي لأي شيء آخر فأغلبنا مر بهذا الأمر في البداية. أنصحك و أنت تشاهدين الدرس بوضع دفتر بجانبك لكتابة بعض الملاحظات المهمة التي يقولها المُدرب لأنكِ ستحتاجين لها للمراجعة في الدروس الموالية أتمنى أن تأخذي هذه النقاط على مُحمل الجد لأنها ستكون مفيدة و مُساعدة لك. دعني أعطيك مثال على درس المتغيرات و العمليات مثلاً: المدرب يعطيك مفاهيم و أمثلة بسيطة بعد مُشاهدة الدرس و كتابة ملاحظاتك و التطبيق مع المُدرب تأتي مرحلة التطبيق مع نفسك و في هذه المرحلة ستُخالفين المُدرب فيها و تجربين أشياء من عندك حتى و لو كانت هذه الأشياء خاطئة إذا ظهرت لك أخطاء ما يُمكنك الرجوع إلى ملاحظاتك أو حتى إعادة الدرس فمثلاً لو قام المُدرب في الدرس بجمع عددين و عرض الناتج ستقومين أنت بجمع 3 أعداد و طرح عدد رابع منها و تطبعين النتيجة و هكذا في الدروس القادمة و بهذا الشكل سيتطور مُستواك شيئاً فشيئاً . أتمنى لكِ التوفيق
- 6 اجابة
-
- 1
-
مرحباً غالباً ستجدين ملف php.ini ضمن مُجلد php قومي بإتباع الطريقة التي ذكرها الأخ وائل و ستتمكنين من تفعيل إضافة curl. بعد التعديل يُنصح بإيقاف الخادم و إعادة تشغيله مرة ثانية بالتوفيق.
-
مرحباً @خالد مجذوب البدايات دائماً ما تكون صعبة فحتى تتعود على كتابة الأكواد بنفسك عليك أن تُطبق كثيراً لا تحفظ الأشياء و إنما تعلم كيفية عملها طبق وراء المُدرب كثيراً و أعطِ لنفسك وقت لفهم و إستيعاب الدرس جيداً و لا تنتقل إلى الدرس المُوالي قبل فهمك للدرس الحالي , لا تعتمد فقط على مقاطع الفيديو و الدروس المرئية هناك دروس و مقالات على الأكاديمية ستُفيدك أيضاً اعتمد على موسوعة حسوب فبها توثيق لمُعظم اللغات و التقنيات. بعد إنهائك لمسار من المسارات لا تنتقل مباشرة إلى المسار القادم حاول التفكير في عمل مشروع صغير بالمعرفة و المعلومات التي كسبتها من خلال المسار و من خلال بحثك من هنا و هناك. لا تقلق إن نسيت شيء فيُمكنك الرجوع له في أي وقت و هذا ليس شيء خاطئ بالعكس فهذا شيء جيد فنحن لا نحفظ الشيفرات البرمجية. عند عملك لمشروعك الصغير ستواجهك بعض المشاكل هذه الأخطاء و المشاكل هي ما يجعلك مُحترف و يجعل مُستواك يرقا و يتطور حاول إيجاد حلول لها جرب الحلول التي تراها مناسبة و لا تخف منها جرب حتى ولو كان ما يمليه عليك عقلك خاطئ إبحث من خلال مُحرك البحث أو إسأل هنا في الأكاديمية أو في مجتمع حسوب. ستُلاحظ بعد إنجازك لشيء أو فكرة من مخيلتك ببعض من الراحة و هذا ما سيُعطيك دافع للإستمرار في التعلم . طبق هذه المراحل على كافة مسارات الدورة و ستُلاحظ فرق في المُستوى. في الأخير أريد أن أنوه لشيء و هو أن المرء لن يُصبح خبيراً بين ليلة و ضحاها يحتاج وقت و صبر ومثابرة وإرادة. عليك بالتطبيق العملي كثيرا حتى و لو كنت تٌطبق مع المُدرب أو من فيديو سيأتي وقت و تتعود و تتمكن من الإعتماد على نفسك حاول مُخالفة المُدرب قليلا و جرب بعض الأمور من عندك فهذا سيفيدك أيضاً. آمل أن أكون قد أفدتك بشيء أتمنى لك التوفيق.
-
مرحباً @Ali Kangooni إذا كنت تريد عرض ثلاث صور مثلاً و عند الضغط على أحد هذه الصور تقوم بعرض صورة من 3 صور أخرى تكون مخفية و تريد عرض هذه الصورة عشوائياً يُمكنك إستخدام هذه الطريقة: اولاً تقوم بإضافة كافة الصور إلى صفحة ال html الخاصة بك بهذا الشكل مثلا: <img id="img_1" src="https://via.placeholder.com/200?text=1" alt="صورة 1"> <img id="img_2" src="https://via.placeholder.com/200?text=2" alt="صورة 2"> <img id="img_3" src="https://via.placeholder.com/200?text=3" alt="صورة 3"> <img id="img_4" src="https://via.placeholder.com/200?text=4" alt="صورة 4"> <img id="img_5" src="https://via.placeholder.com/200?text=5" alt="صورة 5"> <img id="img_6" src="https://via.placeholder.com/200?text=6" alt="صورة 6"> هنا قمنا بإستعمال موقع placeholder لإضافة صور للصفحة كما قمنا بإعطاء كل صورة مُعرف id خاص بها و ستظهر الصور بهذا الشكل: ثانياً نقوم بإخفاء الصور 4 و 5 و 6 و ذلك بإستخدام خاصية display و نقوم بإعطائهم الصنف المُشترك hidden كي نستطيع تحديدهم لاحقاً بالجافاسكربت بهذا الشكل: <img id="img_4" class="hidden" style="display: none;" src="https://via.placeholder.com/200?text=4" alt="صورة 4"> <img id="img_5" class="hidden" style="display: none;" src="https://via.placeholder.com/200?text=5" alt="صورة 5"> <img id="img_6" class="hidden" style="display: none;" src="https://via.placeholder.com/200?text=6" alt="صورة 6"> ثالثاً نقوم بإعطاء الصنف clicked_img للصور 1 و 2 و 3 لأننا سنستخدمه في الجافاسكربت أيضا بهذا الشكل: <img id="img_1" class="clicked_img" src="https://via.placeholder.com/200?text=1" alt="صورة 1"> <img id="img_2" class="clicked_img" src="https://via.placeholder.com/200?text=2" alt="صورة 2"> <img id="img_3" class="clicked_img" src="https://via.placeholder.com/200?text=3" alt="صورة 3"> الآن الصفحة تحمل 6 صور 3 منهم معروضة و 3 مخفية . رابعاً ننتقل إلى جزء الجافاسكرت و سنستخدم مكتبة jQuery لأنها ستُسهل كتابة الشيفرات لذلك سنقوم بتضمينها أولاً بهذا الشكل: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> خامساً نحتاج إلى كتابة دالة بإستخدام لغة جافاسكربت تقوم بإرجاع كل مرة رقم عشوائي نحن نقوم بتحديد المجال فقط: function randomInteger(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } هذه الدالة تقوم بإرجاع كل مرة رقم عشوائي يكون محصور بين min و max فلو حددنا عند منادة الدالة المعاملات 4 و 6 فستجلب كل مرة رقم عشوائي 4 أو 5 أو 6. سادساً نقوم بكتابة شيفرات الجافاسكربت التي تقوم بمعالجة حدث النقر على الصور الثلاثة الأولى و التي أعطيناها الصنف clicked_img بهذا الشكل: $('.clicked_img').on('click', function() { // clicked_imgبمعنى قم بالتسمع لحدث النقر على أي من العناصر التي تحمل الصنف $('.hidden').hide(); // في حالة حدوث الحدث قم بإخفاء أي عنصر يحمل الصنف hidden var rand = randomInteger(4, 6); // إستدعاء الدالة السابقة لجلب رقم عشوائي من 4 إلى 6 $('#img_' + rand).show(); // بالإستعانة بالرقم العشوائي نكون مُعرف أحد الصور المخفية و نقوم بتحديد العنصر و إظهاره }) سابعاً في حالة كان أحد الصور الثلاثة 4 أو 5 أو 6 ظاهراً و قمنا بالضغط عليه نقوم بإخفائه بهذا الشكل: $('.hidden').on('click', function() { $(this).hide(); }) و هذه ال pen تطبيق للمثال و الشرح أعلاه: بالتوفيق.
-
يُمكنك دائما قراءة التوثيق الرسمي للتقنية او لغة البرمجة فمثلا typescript: هذا التوثيق الرسمي الخاص بها: إضغط هنا أيضا هناك موسوعة حسوب مرجع المطورين العرب: رابط الموسوعة فهي توفر توثيقاً لمعظم لغات و التقنيات البرمجية. و حتى تكون مُحترف في تقنية ما عليك عمل مشاريع بها بعد تعلم أساسيات هذه التقنية. بالتوفيق.
- 9 اجابة
-
- 1
-
ال typescript هي مجموعة عليا ( superset ) من جافاسكربت و يتم ترجمة الأكواد والشيفرات التي يتم كتابتها ب TypeScript إلى شيفرات برمجية بلغة JavaScript العادية و ذلك لأن المتصفحات تفهم فقط تعليمات JavaScript . أي أن Typescript هي لغة برمجة . تم تطوير هذه اللغة من قبل شركة Microsoft بهدف تحسين ورفع إنتاجية مطورين جافاسكربت و تعتبر أيضا توسعة للغة جافاسكربت تدعم العديد من ميزات EcmaScript 6 و أيضا تدعم الأنواع و البرمجة الكائنية بما فيها تعريف الأصناف ( classes ) و الواجهات ( interfaces ) ففي لغة جافاسكربت لا نستطيع تحديد نوع المتغيرات فجافاسكربت تتحقق من نوع المتغيرات أثناء تشغيل البرنامج ( runtime ) فهي تعتبر من اللغات Dynamic type checking و هناك لغات تسمى static type checking في هذه اللغات تتم عملية التحقق من الأنواع أثناء الترجمة ( compile time ) و من هذه اللغات نجد c و c++ . نجد أن معظم الأخطاء في كثير من الحالات تكون متعلقة بالأنواع. لذلك فدعم TypeScript للأنواع إضافة جيدة. بالتوفيق.
- 9 اجابة
-
- 1
-
مرحباً @Momen Gamal أنصحك بالإطلاع على هذا المقال: إضغط هنا فهو يشرح مُعظم نقاط الإختلاف بين الثلاثة و الأمر راجع لك في الأخير فكل مُطور له وجهة نظره و أهدافه و طريقة تعلمه و مجاله. برأيي أن كل من react و vue طريقة تعلمهما أسهل مُقارنة ب angular. ايضا يٌمكنك الإطلاع على هذا الفيديو: و هذا الفيديو باللغة الإنجليزية: بالتوفيق.
- 9 اجابة
-
- 1
-
مرحباً @Mohammed Aladimi الخطأ يفيد أن الدالة mysqli_query تقبل مُعاملين المُعامل الأول يكون من النوع mysqli و الثاني هو الكويري أو الإستعلام و نوعه string و في الحقيقة أن الدالة تقبل معامل ثالث إختياري هو عبارة عن ثابت يأخذ أحد القيمتين التاليتين: 1- MYSQLI_STORE_RESULT و هو الثابت الإفتراضي أي أننا إذا لم نُحدد سيكون هو المُستخدم 2- MYSQLI_USE_RESULT حسب التوثيق الرسمي أن هذا الثابت نستعمله عندما نريد استرداد كمية كبيرة من البيانات. هناك طريقتين للإستعلام بإستخدام mysqli: 1- الطريقة الإجرائية: ( Procedural ): <?php $connection = mysqli_connect("localhost", "user", "password", "database_name"); // إنشاء رابط الإتصال بقاعدة البيانات // فحص إذا حدثت أخطاء غير متوقعة أثناء الإتصال if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } // إذا تم تجاوز الفحص هذا يعني أن الإتصال تم بنجاح // إذن يُمكننا الإستعلام من قاعدة البيانات if ($result = mysqli_query($connection, "هنا ستقوم بكتابة الإستعلام الذي تريده")) { // نقوم هنا بطباعة النتيجة أو الشيء الذي نريده // code here // أخيراً نقوم بتحرير الذاكرة المرتبطة بالنتيجة mysqli_free_result($result); } // هنا نقوم بإغلاق الإتصال الذي فتحناه مع قاعدة البيانات mysqli_close($connection); ?> 2- عن طريق البرمجة الغرضية التوجه: <?php $mysqli = new mysqli("localhost", "user", "password", "database_name"); // إنشاء كائن أو نسخة من الصنف mysqli // فحص الإتصال if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } // إذا تم تجاوز الفحص هذا يعني أن الإتصال تم بنجاح // إذن يُمكننا الإستعلام من قاعدة البيانات if ($result = $mysqli->query("هنا ستقوم بكتابة الإستعلام الذي تريده")) { // نقوم هنا بطباعة النتيجة أو الشيء الذي نريده // code here // أخيراً نقوم بتحرير الذاكرة المرتبطة بالنتيجة $result->close(); } // هنا نقوم بإغلاق الإتصال الذي فتحناه مع قاعدة البيانات $mysqli->close(); ?> يُمكنك الإطلاع على التوثيق الرسمي: إضغط هنا كما يُمكنك أيضا إستخدام PDO التي تعني PHP Data Objects و تُعتبر إضافة تُعرف واجهة خفيفة للتعامل مع قواعد البيانات المُختلفة و تُوفر هذه الإضافة طبقة تجريد للوصول إلى البيانات يعني أنك ستستخدم نفس الدوال في مُختلف أنواع أنظمة قواعد البيانات ك MySQL و غيرها. بالتوفيق.
-
مرحباً @عبد الواحد الحدادي نعم بإمكانك تنسيق ال scroll لكن المُشكلة ليست هناك خاصية ثابتة تعتمدها كافة المتصفحات في تنسيقه وليست هناك خصائص رسمية فكل متصفح يستعمل خصائص معينة و خاصة به و هناك متصفحات قديمة لا تدعم فمثلاً متصفحات Webkit اي Safari و Chrome تستخدم العناصر و الأصناف الزائفة التالية لتنسيق شريط التمرير ( scroll bar ) : /* العناصر الزائفة */ ::-webkit-scrollbar { } ::-webkit-scrollbar-button { } ::-webkit-scrollbar-track { } ::-webkit-scrollbar-track-piece { } ::-webkit-scrollbar-thumb { } ::-webkit-scrollbar-corner { } ::-webkit-resizer { } /* الأصناف الزائفة */ :horizontal :vertical :decrement :increment :start :end :double-button :single-button :no-button :corner-present :window-inactive يُمكنك مشاهدة هذه ال pen : إضغط هنا فهي تستخدم هذه العناصر. لكن إن أردت أن يكون تنسيق شريط التمرير نفسه في كافة المتصفحات يُمكنك إستخدام أحد إضافات الجافاسكربت أو الجيكويري و من بين هذه الإضافات nicescroll و هذا مثال عن إستخدامها: طريقة إستخدام الإضافة سهلة ستقوم أولا بتضمين مكتبة الجي كويري ثم تقوم بتضمين الإضافة ثم تقوم بإستخدامها بهذا الشكل <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.nicescroll/3.7.6/jquery.nicescroll.min.js"></script> <script> $(function() { $("#elementID").niceScroll({ cursorwidth: '8px', // تغيير العرض cursorcolor: '#273c75', // تغيير اللون }); }); </script> هناك العديد من الإعدادات و المعاملات يُمكنك الإطلاع عليها من خلال مستودع الإضافة على github من : هنا كما يُمكنك مشاهدة هذا الفيديو فهو يشرح طريقة إستخدامها: بالتوفيق.
- 11 اجابة
-
- 1
-
مرحباً @Fahad Rahim نعم دروس الدورات تعتمد على gulp 3.9.1. أيضاً مسارات الدورات يتم تحديثها بشكل مُستمر و في هذه الحالة يُمكنك إما متابعة الدورة بنفس الإصدار الذي يستخدمه المُدرب أو إستخدام النُسخة 4 و إذا واجهتك أية مُشكلة يُمكنك الإستفسار عنها من خلال صندوق التعليقات و سنُساعدك في الوصول إلى الحل. عموماً هناك بعض الأشياء التي جاء بها gulp 4 ك gulp.series و gulp.parallel فمثلا لو كانت المهمة تعتمد على مهمات أخرى في gulp 3 كنا نكتب: gulp.task('a', ['b', 'c', 'd']); في gulp 4 لا يمكننا كتابة هذا الشيء وإنما يجب إستخدام gulp.series أو gulp.parallel أو معا بهذا الشكل: gulp.task('a', gulp.series('b', 'c', 'd')); أو gulp.task('a', gulp.parallel('b', 'c', 'd')); بحيث أن series تعني تنفيذ المهمات بالتسلسل أما parallel فتعني تنفيذ المهمات بشكل متزامن و بهذا يتم تقليل وقت التنفيذ. أيضاً في gulp 4 إذا كانت المهمة تحتوي على شيفرات غير متزامنة علينا أن نخبر gulp أن هذه الدالة غير متزامنة بشكل قطعي. في gulp 3 كان الأمر يحدث تلقائياً مثلاً لو قمنا بكتابة هذه المهمة : gulp.task('message', function() { console.log("Hello Gulp 3"); }); ستشتغل في gulp 3 أما في gulp 4 لن تعمل و ستعطي خطأ و لتجاوز هذا الخطأ في gulp 4 هناك عدة طرق من بينها إستخدام async بهذا الشكل: gulp.task('message', async function() { console.log("Hello Gulp 4"); }); أو تنفيذ دالة إرجاع الطلب من داخل المهمة بهذا الدالة: gulp.task('message', function(done) { console.log("Hello Gulp 4"); done(); }); يُمكنك مشاهدة هذا الفيديو لمعرفة كيفية الإنتقال من gulp 3 إلى gulp 4: بالتوفيق.
-
مرحباً @Abdallah Abdarrahman مع الأسف لن تستطيع تحميل فيديوهات الدورة لأن هذا الشيء غير مسموح به و الأفضل المتابعة أونلاين. مشغل الفيديوهات يدعم الشبكات الضعيفة بإمكانك خفض جودة و دقة المقطع إلى 360p و متابعة الدروس فهذه الجودة لا تحتاج إلى تدفق إنترنت عالي. بالتوفيق
- 3 اجابة
-
- 1
-
مرحباً @Takla Eshak دورة تطوير تطبيقات الويب باستخدام لغة PHP تُركز بشكل كبير على بناء النظم الخلفية بلغة PHP و إطار العمل Laravel يُستحسن أن يكون لديك معرفة و لو بسيطة بلغة html و css و JavaScript لكن إن قمت بالإشتراك في دورة PHP ستتمكن من الوصول إلى المسارات الأولى من باقي الدورات لذلك قبل البدأ في دورة PHP أنصحك بالإطلاع على المسار الأول من دورة تطوير واجهات المستخدم و الذي هو أساسيات تطوير الويب ففيه ستجد شرح عن أساسيات كل من Html , Css و JavaScript. بالتوفيق
- 6 اجابة
-
- 1
-
مرحباً @Abdallah Abdarrahman عند إشتراكك بأي دورة من دورات الأكاديمية سيتم إرسال توجيهات و إرشادات لك على بريدك الإلكتروني للوصول إلى مسارات الدورة و كيفية البدأ في الدراسة. إذا واجهت أي مُشكلة في الوصول للدورة يُمكنك دائما مراسلة الدعم الفني من خلال مركز المساعدة وفتح تذكرة بالمُشكلة التي تواجهها و سيقوم فريق الدعم بالرد عليك في أقرب وقت. من خلال حسابك على الأكاديمية ستتمكن من الوصول إلى دوراتك من خلال الرابط التالي: دوراتي أو من خلال القائمة العُلوية: أثناء مُتابعتك للدروس إذا لم تتضح لك المعلومة قم بإعادة الدرس أكثر من مرة حتى تصل للفهم الجيد كما يُمكنك أيضا الإستفسار من خلال صندوق التعليقات أسفل كل درس و سنُقدم لك المُساعدة اللازمة . بالتوفيق
- 3 اجابة
-
- 1
-
مرحباً @جيروم مينا لا أدري ما الذي تتوقعينه من الأكواد لكن الأكواد متطابقة مع صفحة العرض. 1- إتجاه الصفحة من اليمين إلى اليسار و هذا لأنك قمت بإعطاء الخاصية dir القيمة rtl أي: <html dir="rtl"> </html> 2- جسم الصفحة يحتوي على ثلاث عناصر div في نفس المُستوى أي كلهم أبناء للوسم body: العنصر الأول يأخذ المعرف parent لكنه بدون مُحتوى يأخذ التنسيقات التالية: #parent{ width: 300px; border: 3px solid black; background-color: cadetblue; } و بما أنه بدون محتوى و لم يتم تحديد طول له فيظهر بهذا الشكل. كل من العنصرين ذو المُعرفين child1 و child2 يأخذان صنف التنسيقات child. إذا كُنتِ تريدين أن يكونا العُنصرين من أبناء العنصر parent عليك وضعهما داخله بهذا الشكل: <div id="parent"> <div id="child1" class="child">1</div> <div id="child2" class="child">2</div> </div> الرجاء توضيح المُشكلة التي تواجهيها و سنُساعدك. بالتوفيق
- 4 اجابة
-
- 1
-
مرحباً @الشيخ المختار الشنقيطس يتمثل الفرق بين الربط الثابت ( static binding ) و الربط الديناميكي ( dynamic binding ) في لغة جافا في: الربط الثابت يحدث أثناء الترجمة و التفسير ( compile time ) بينما الربط الديناميكي يحدث أثناء تشغيل البرنامج ( Runtime ) التوابع ( methods ) و المتغيرات المحددة ك private او static او final تستخدم الربط الثابت بينما يتم ربط التوابع الأخرى ديناميكياً إعتماداً على كائن وقت التشغيل الربط الثابت يستخدم نوع الكلاس بينما الربط الديناميكي يستخدم نوع الكائن في ال overloaded methods يتم إستخدام الربط الثابت بينما في ال overridden methods يتم إستخدام الربط الديناميكي. و هذا مثال عن overloaded methods public class StaticBindingTest { public static void main(String args[]) { Collection c = new HashSet(); StaticBindingTest et = new StaticBindingTest(); et.sort(c); } //overloaded method takes Collection argument public Collection sort(Collection c) { System.out.println("Inside Collection sort method"); return c; } //another overloaded method which takes HashSet argument which is sub class public Collection sort(HashSet hs) { System.out.println("Inside HashSet sort method"); return hs; } } و الخارج سيكون: Inside Collection sort method لأنه نظراً للنقطة 4 فإنه تم إستخدام الربط الثابت إضافةً للنقطة 3 فإن الربط الثابت يعتمد على نوع الكلاس و في هذه الحالة نوع الكلاس هو Collection و هذا مثال آخر عن overridden methods public class DynamicBindingTest { public static void main(String args[]) { Vehicle vehicle = new Car(); //here Type is vehicle but object will be Car vehicle.start(); //Car's start called because start() is overridden method } } class Vehicle { public void start() { System.out.println("Inside start method of Vehicle"); } } class Car extends Vehicle { @Override public void start() { System.out.println("Inside start method of Car"); } } و الخارج سيكون: Inside start method of Car لأنه نظراً للنقطة 4 فإنه تم إستخدام الربط الديناميكي (overridden method) إضافةً للنقطة 3 فإن الربط الديناميكي يعتمد على نوع الكائن و في هذه الحالة نوع الكائن هو Car المصدر: Javarevisited blog post بالتوفيق
- 3 اجابة
-
- 1
-
مرحباً @عبد الواحد الحدادي يُمكنك إستخدام الخاصية clip-path لعمل هذه الأشكال و غيرها و هذه بعض الأمثلة على CodePen: كما يُمكنك الإطلاع على هذا المقال سيُفيدك أيضاً: بالتوفيق
- 6 اجابة
-
- 1
-
مرحباً @mohdh34m تعلم البرمجة أو أي تقنية برمجية يعتمد بشكل كبير على التطبيق العملي بعد تعلم الأساسيات فمثلا في حالتك إذا كنت تريد تعلم لغة جافاسكربت عليك المرور بهذه المراحل في التعلم : 1- تعلم أساسيات اللغة بالإضافة إلى DOM و BOM و هذه بعض المصادر للتعلم في هذه المرحلة - دورة تعلم أساسيات اللغة من قناة الزيرو - تعلم HTML DOM من قناة الزيرو - تعلم BOM من قناة الزيرو هناك مصادر أخرى لتعلم الأساسيات لكن أنت خذ النقاط الأساسية و تعلم من المصدر الذي تفهم منه و ترتاح له أثناء تعلمك للغة جافاسكربت سوف تحتاج لمراجع بها المعلومات التي تدرسها بحيث إذا أردت زيادة معلوماتك أو إسترجاع بعضها يمكنك الوصول لها بسرعة و من بين هذه المراجع: - موقع JavaScript info - موقع MDN - موقع W3 School - توثيق موسوعة حسوب في هذه المرحلة يمكنك البحث عن تحديات أو تمارين صغيرة للتطبيق العملي و لو بحثت في موقع Code Pen لوجدت العديد من ال pens المكتوبة بلغة جافاسكربت من خلالها تستطيع تطوير نفسك و ستجد الشيفرات البرمجية موجودة أيضا إذا احتجت لها حاول عدم الإطلاع عليها في البداية و الإعتماد على نفسك و إذا لم تستطع يمكنك الرجوع للأكواد و هكذا سيتطور مستواك يوجد العديد من المواقع التي يمكنك أن تبدأ بممارسة اللغة و حل بعض المشكلات, منها: - hackerrank - edabit - وغيرها العديد 2 - بعد تعلم أساسيات اللغة عليك تعلم معايير ES6 أو EcmaScript 2015 و لتعلم هذه المعايير يمكنك متابعة السلسلة : - تعلم ES6 من قناة الزيرو و كالعادة فلترسيخ الأساسيات يجب عليك البحث عن تطبيقات عملية لذلك يمكنك البحث عن pens على موقع code Pen لزيادة مستواك 3- تعلم البرمجة الغرضية التوجه بلغة جافاسكربت: - تعلم JavaScript OOP من قناة الزيرو 4- حل مسائل و تمارين بلغة الجافاسكربت ؛ هذه المرحلة تستمر معك منذ البداية لأن التطبيق العملي سيزيد كثيرا في مستواك: - تمارين و تطبيقات على قناة الزيرو - تمارين و تطبيقات كبيرة على قناة الزيرو و هذه قائمة بأسماء المواقع التي تقدم تحديات بإمكانك الإستفادة منها: - https://www.hackerrank.com/ - https://www.topcoder.com/ - https://coderbyte.com/ - https://app.codility.com/programmers/ - https://codesignal.com/ - و غيرها الكثير 5- تعلم تقنية ال Ajax و JSON : - تعلم Ajax في قناة الزيرو - تعلم JSON مع قناة الزيرو 6- هناك العديد من المسائل و التحديات على قناة آدم خوري باللغة الإنجليزية ستفيدك بشكل كبير : https://www.youtube.com/playlist?list=PL00952AC35D0A4701 7- إختر أحد اطر جافاسكربت التي تساعدك في الواجهه الأمامية و إحترفها: - إطار Vue.js - إطار Angular - مكتبة React بالتوفيق
-
مرحباً @عبد الواحد الحدادي التوثيق البرمجي هو عبارة عن محتوى مرجعي و هو أقرب للقاموس يبحث فيه المبرمج أو المطور عن ما يحتاج إليه و ذلك عند الحاجة أو لتذكر عمل دالة أو شيء من هذا القبيل لذلك تجد كل لغات البرمجة أو خدمات الويب أو تقنيات أو أطر العمل لها توثيق رسمي. مثلاً: توثيق لغة php توثيق إطار laravel توثيق إطار flutter توثيق vue js و غيرها الكثير معظم التقنيات لها توثيق رسمي تم عمله من أجل المطورين الذين يعملون على هذه التقنية و ذلك للتسهيل عليهم معرفة الأشياء التي تقوم بها هذه التقنية و كيفية إستعمالها. لذلك إن قمت مستقبلاً ببناء تقنية ما أو عمل واجهة برمجية أو خدمة ويب فسيتوجب عليك عمل توثيق لها حتى يسهل على المستخدمين إستعمالها. و من هنا جاءت فكرة موسوعة حسوب فهي تعتبر مرجع للمطورين العرب و توفر توثيقا لمعظم لغات و تقنيات البرمجة. تُعتبر التعليقات البرمجية أيضاً جزء من التوثيق فهي مفيدة لفريق العمل ككل حتى الشخص الذي كتب الشفرة البرمجية فبقراءة التعليق سيتمكن من معرفة ما الغرض من الشفرة البرمجية و ما تفعله و بهذا سيتمكن من إستخدامها بسهولة أيضا لو أراد التعديل سيتمكن من ذلك لأنه استطاع فهم آلية العمل من خلال قراءته للتعليق. بالتوفيق
- 2 اجابة
-
- 1
-
مرحباً @Ali Alabri لا بإمكانك مشاهدة دروس الدورة بشكل غير محدود. فبإنضمامك لأي دورة من دورات الأكاديمية ستحصل على وصول لكافة مساراتها مدى الحياة. و دورات الأكاديمية لا تستبدل و لا تنتهي صلاحيتها بل يقوم المشرفون أيضاً بتحديثها بإستمرار لتواكب التطور و بمجرد إنضمامك ستحصل على كافة التحديثات أيضا بشكل مجاني دون اية تكلفة إضافية.
- 2 اجابة
-
- 1
-
مرحباً @Sweety Rose كما تكرم الإخوة بالذكر بإمكانك طرح كافة إستفساراتك و أسئلتك في قسم الأسئلة و الأجوبة العام و سيقدم لك المدربون أجوبة و حلول لها مع الشرح و بهذا الشكل ستحققين أكبر إستفادة بالتوفيق