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

سامح أشرف

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

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

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

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

    56

كل منشورات العضو سامح أشرف

  1. في البداية لا يُفضل تحديد عرض جسم الصفحة body من خلال width، والأفضل هو أن تقوم بتحديد حجم العنصر الرئيسي (العنصر app. في مشروعك) بالشكل التالي: .App { /* ... */ width: 900px; overflow: hidden; } كما أن أي عنصر له الخاصية position:fixed تُستخدم لتثبيت عنصر ما على الشاشة، ولا يمكن التحكم في مكان العنصر إلا من خلال الخصائص top, bottom, right, left (مازال يمكن إستخدام الإزاحة margin والحاشية padding بدون مشكلة) ولن يتأثر بأي عنصر آخر في الصفحة، ولاحظ أن عنصر الملاحظات notes-section له الخاصية position: fixed وبالتالي لن يتم التحكم بها عبر تحديد عرض لجسم الصفحة body، الأمر الآخر هو أن تحديد عرض لجسم الصفحة لا يعني بالضرورة إخفاء أي عناصر تخرج عن هذا العرض، ويجب أن تستخدم الخاصية overflow لكي يتم إخفاء (أو إضافة شريط تمرير) أي عناصر موقعها خارج 900px. أنصحك أن تُعيد ترتيب العناصر بطريقة أخرى مثل flexbox أو grid system بدلًا من إستخدام position لأنها غير مخصص في الاساس لهذا الأمر.
  2. دورة تطوير واجهات المستخدم تبدأ معك من الصفر وستحصل على شرح لكل أساسيات HTML و CSS و JavaScript و jQuery وغيرها الكثير من التقنيات مثل Git و GitHub و webpack .. إلخ. كما ستقوم بعمل العديد من المشاريع خلال الدورة مثل تطوير خمس صفحات هبوط Landing pages وواجهة متجر إلكتروني كامل متعدد الصفحات، ولوحة تحكم Dashboard كاملة وواجهة تشبه موقع اليوتوب. الشرح عبارة عن فيديوهات عملية مسجلة مسبقًا تحتوي على شرح وافي لموضوع كل درس، وان واجهتك مشكلة في الكود أو لم تفهم جزئية معينة بشكل كامل، فتستطيع ترك تعليق أسفل الدرس يحتوي على تفاصيل المشكلة وسيقوم أحد المدربين المتاحين على مدار الساعة بمساعدتك على الفور. ليس من الضروري أن يكون حاسوبك بمواصفات عالية يكفي أن يكون حاسوبك بمواصفات متوسطة، ويكون قادر على تشغيل متصفح ويب مع محرر نصوص مثل VS Code على سبيل المثال.
  3. السؤال غير واضح بعض الشيء، هل يمكنك توضيح ما هي العناصر التي تختفي ولا تستطيع الوصول إليها؟ إن كانت المشكلة تظهر فقط عند تشغيل أدوات المطورين Dev Tools في المتصفح، فحاول أن تقوم بفتح أدوات المطورين في نافذة جديدة: بهذه الطريقة سوف تظهر أدوات المطورين في نافذة منفصلة لتستطيع رؤية الموقع بشكل كامل في نافذة المتصفح الأساسية.
  4. يبدو جيدًا للغاية ولا أرى مشكلة في الكود. ملاحظة بسيطة: حاول ألا تحدد حجم صندوق النص (اسم النادي) عبر width و height ولكن إستعمل padding ليكون حجم الصندوق نتحاور حسب حجم النص الموجود فيه.
  5. حاول تفكيك مكونات الصورة في مخيلتك لتستطيع فهم المحتويات وستجد أنه يمكن بناء هذه الأشكال بسهولة. لمركز على الشكل الموجود على اليسار الآن، في البداية يوجد صورة لأحد الأندية ويوجد حدود border بيضاء حولها، وتم جعل هذه الحدود دائرية من خلال الخاصية border-radius. بعد ذلك يوجد مربع يحتوي على اسم النادي، وهذا العنصر له حدود دائرية كذلك عبر الخاصية border-radius، وتم إزاحة العنصر قابلًا ناحية الصورة من خلال الخاصية margin-left (بقيمة سالبة)، كما يمكن إستخدام margin لإزاحة العنصر إلى الأسفل قليلًا ليكون في منتصف الصورة أفقيًا. وبنفس المبدئ يمكن عمل الشكل الموجود على اليمين، مع تغير ترتيب النص (اسم النادي) والصورة كذلك. ملاحظة: تستطيع ترتيب ظهور الصورة فوق النص من خلال الخاصية z-index يوجد أكثر من طريقة لتنفيذ ما سبق وليس عليك حتى إستخدام نفس الخصائص، حيث يمكنك أن تستعمل flex box مثلًا بدلًا من margin حاول تطبيق هذا الأمر وإن واجهت مشكلة في الكود فتستطيع أن تقوم بإضافة سؤال لتحصل على المساعدة بشكل أدق.
  6. يوجد مشاريع عديدة في دورة تطوير واجهات المستخدم مثل تطوير خمس صفحات هبوط Landing pages وتطوير واجهة مثل موقع يوتيوب وتطوير واجهة متجر إلكتروني كامل متعدد الصفحات وتطوير لوحة تحكم كاملة .. إلخ. ولكي تحصل على أقصى إستفادة من هذه الدروس والمشاريع حاول أن تشاهد كل درس وقم بتطبيق محتوياته مع نفسك بدون الرجوع إلى الدرس، وحاول أن تحل المشاكل البرمجية بنفسك لتعتاد على حل المشاكل والأخطاء، وان وجدت أنك لم تفهم درس معين جيدًا فقم بمشاهدته مرة أخرى. حاول كذلك أن تقرأ مقالات في نفس المجال أو تتحدث عن نفس التقنيات فسوف يفيدك هذا الأمر كثيراً، كما يوجد في أكاديمية حسوب مئات المقالات الخاص بالبرمجة بشكل عام يمكنك الاطلاع عليها من هنا.
  7. يمكنك أن تتعلم React.js إن أردت، ولكن دورة تطوير واجهات المستخدم تركز على إستخدام تقنيات مختلفة مثل ajax و webpack و jquery .. إلخ، وبعد تعلم هذه الأدوات والتقنيات سيكون من السهل تعلم أي إطار عمل مثل React.js أو Vue أو Angular لأنك ستكون قد فهم كل الأساسيات ويمكنك أن تقوم بعمل أي شيء بدون إستخدام هذه المكتبات حتى. أنصحك أن تكمل الدورة حتى النهاية وبعد ذلك أنتقل لتعمل مكتبة مثل React.js لتزيد من خبراتك ولتنافس بشكل أقوى في سوق العمل وستجد أن تعلم مثل هذه المكتبات سهل للغاية ويمكنك تعلم أساسياتها في أيام قليلة.
  8. بالتأكيد، كل المشاريع الموجودة في كل دورات أكاديمية حسوب هي مشاريع عملية ويتم طلبها في سوق العمل، لكن بالرغم من ذلك ليس هدف دورات أكاديمية حسوب شرح كيفية عمل مشاريع محددة فقط بل تعلم كيف تقوم ببناء أي مشروع مهما كان وكيف تبحث بنفسك عن حلول للمشاكل التي تواجهها وبالتالي سوف يكون بمقدورك في النهاية إنشاء أي مشروع مهما كان. تهدف دورات الأكاديمية أيضًا إلى تعليمك كل الأساسيات والعديد من الأمور المتقدمة، لكي تتمكن من تعمل أي تقنية جديدة بنفسك لكي تجاري أي تغيرات في مجال البرمجة بشكل عام أو في مجال تطوير الويب بشكل خاص. حاول كذلك تصفح مواقع العمل الحر مثل مستقل وخمسات لكي تطلع على المشاريع التي يتم طلبها وحاول أن تقوم بتنفيذ بعضها بنفسك كنوع من التدريب المهني، سوف تحصل في النهاية على خبرة كبيرة تُمكنك من المنافسة في سوق العمل.
  9. تُعد دورة تطوير التطبيقات باستخدام لغة JavaScript أكثر دورة شاملة في دورات أكاديمية حسوب، حيث تحتوي على كل هذه الأمور، حيث يتم خلالها شرح كيفية تطوير الواجهات الأمامية بإستخدام React.js وتطوير تطبيقات الجوال بإستخدام React Native و ionic وتطوير تطبيقات سطح المكتب بإستخدام Electron.js وتطوير الواجهات الخلفية بإستخدام Express والتعامل مع أكثر من نوع من قواعد البيانات كذلك.
  10. وعليكم السلام ورحمه الله وبركاته تطوير المواقع بشكل عام ينقسم إلى جزئين، الجزء الاول هو تطوير واجهة الموقع Frontend (كل ما يظهر في الموقع من نصوص وصور وأزرار والوان .. إلخ)، والجزء الثاني هو تطوير الواجهة الخلفية backend ويختص هذا الجزء بالتعامل مع قواعد البيانات وحسابات المستخدمين والصلاحيات .. إلخ. دورة تطوير واجهات المستخدم خاصة بعمل الجزء الأمامي من المواقع Frontend، ويتم فيها إنشاء واجهات المواقع فقط (الازرار والألوان وكل ما يظهر في الموقع)، ولكن التحكم في حسابات المستخدمين والتعامل مع قواعد البيانات وغيرها من هذه الأمور يسمى backend ويطلب تقنيات مختلفة عن HTML و CSS ولا يتم شرحه في هذه الدورة. أكاديمية حسوب تحتوي على أكثر من دورة تحتوي على شرح لتطوير الواجهات الخلفية backend: دورة تطوير تطبيقات الويب باستخدام لغة PHP دورة تطوير تطبيقات الويب باستخدام لغة Ruby دورة تطوير التطبيقات باستخدام لغة JavaScript دورة تطوير التطبيقات باستخدام لغة Python
  11. التابع bindValue في PDO bindValue يستخدم لربط قيمة ما بما يقابلها في جملة SQL، فعلى سبيل المثال: <?php $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'); $sth->bindValue(':calories', 150, PDO::PARAM_INT); $sth->bindValue(':colour', 'red', PDO::PARAM_STR); $sth->execute(); كما تلاحظ في المثال السابق فإن bindValue تستقبل ثلاث مدخلات، وهي اسم المعامل parameter المستخدم في جملة SQL (مثل calories: و colour:)، أما المدخل الثاني هو قيمة المعامل (مثل 150 و "red")، حيث سيتم تعويض هذه المعاملات بالقيم الخاصة بهم، بينما المدخل الثالث هو نوع نوع القيمة integer ، strgin ، boolean .. إلخ. ملاحظة: إضافة النقتين في بداية اسم المعامل (مثل calories: و colour:) أمر إختياري ويمكن عدم كتابته: $sth->bindValue('calories', 150, PDO::PARAM_INT); $sth->bindValue('colour', 'red', PDO::PARAM_STR); سوف يتم إستبدال أسماء المعاملات الموجودة في جملة SQL بقيمتها الممررة في bindValue ليصبح شكل جملة SQL كالتالي: SELECT name, colour, calories FROM fruit WHERE calories < 150 AND colour = "red"; كما يمكن إستخدام علامات إستفهام بدلًا من أسماء المعاملات بالشكل التالي: <?php /* يمكن تمرير أسماء متغيرات بلًا من القيم مباشرة*/ $calories = 150; $colour = 'red'; $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->bindValue(1, $calories, PDO::PARAM_INT); /* علامة الإستفهم الأولى */ $sth->bindValue(2, $colour, PDO::PARAM_STR); /* علامة الإستفهم الثانية */ $sth->execute(); التابع bindParam في PDO التابع bindParam مشابه تمامًا للتابع bindValue، ويعمل بشكل مشابه، ولكن لا يمكن تمرير إليه قيمة مباشرة ويجب تمرير متغير، بالشكل التالي: <?php /* يجب أن يتم تمرير متغيرات وليس قيم مباشرة */ $calories = 150; $colour = 'red'; $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'); $sth->bindParam(':calories', $calories, PDO::PARAM_INT); $sth->bindParam(':colour', $colour, PDO::PARAM_STR); $sth->execute(); إذا لماذا أحتاج إلى إستعمال bindParam بدلًا من bindValue؟ السبب في ذلك هو كالتالي: تخيل أنك تريد تنفيذ جملة SQL معينة أكثر من مرة بقيم مختلفة، في حالة إستعمال bindValue ستحتاج إلى ربط القيم في كل مرة تتغير فيها القيم بشكل يدوي، بينما في حالة إستخدام bindParam يجب فقط تغير قيمة المتغيرات، مثال: إستخدام bindParam: <?php $value = 'foo'; $s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz'); $s->bindParam(':baz', $value); $value = 'foobarbaz'; $s->execute(); // جملة SQL التي سيتم تنفيذها // SELECT name FROM bar WHERE baz = 'foobarbaz'; إستخدام bindValue: <?php $value = 'foo'; $s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz'); $s->bindValue(':baz', $value); $value = 'foobarbaz'; $s->execute(); // جملة SQL التي سيتم تنفيذها // SELECT name FROM bar WHERE baz = 'foo'; لاحظ أنه عند تغير قيمة المتغير value$ في bindParam تم تغير شكل جملة SQL كذلك، بينما في bindValue لم يحدث ذلك. التابع bindColumn في PDO التابع bindColumn له إستخدام مختلف تمامًا عن bindValue و bindParam، فهو يستخدم بعد تنفيذ جملة SQL ، حيث يقوم بتخزين القيمة الموجودة في عمود معين في متغير جديد: <?php $stmt = $dbh->prepare('SELECT name, colour, calories FROM fruit'); $stmt->execute(); $stmt->bindColumn('name', $name); $stmt->bindColumn('colour', $colour); $stmt->bindColumn('calories', $calories); while ($stmt->fetch(PDO::FETCH_BOUND)) { print $name . "\t" . $colour . "\t" . $calories . "\n"; } عند عمل fetch سيتم جلب صف من قاعدة البيانات، وهذا الصف يحتوي على قيمة العمود name و colour و calories، ولكي تستطيع إستخدام هذه القيم بشكل سهل، يمكنك أن تجعل التابع bindColumn يقوم بتخزينهم في متغيرات بأسماء محددة، في المثال السابق نقوم بتخزين قيمة العمود name في متغير name$، بينما يخزن قيمة العمود colour في متغير بالاسم colour$ .. إلخ، وهذا الأمر يجعل إستخدام البيانات ضمن المشروع أسهل وأكثر وضوحًا.
  12. بالنسبة لكثير من المبرمجين، تُعد مرحلة تصميم واجهة التطبيق هي أصعب مرحلة، ببساطة لأنهم يُفضلون حل المشاكل التي لها قواعد مُحددة وواضحة (البرمجة بشكل عام)، عكس التصميم الذي يحتاج إلى إبداع أكثر من التفكير المنطقي، لهذا يلجئ الكثير من المبرمجين إلى إستخدام مكتبات جاهزة مثل Bootstrap و Material UI التي توفران مجموعة جاهزة من المكونات الممصصمة بشكل جيد ومناسبة لأغلب الإحتياجات، وبالتي يتم تخطي أغلب مرحلة التصميم لأنهم يستعملون بالفعل مكونات جاهزة ومصممة مسبقًا. مع المواقع التي ذكرتها سابقًا والتي تستطيع أن تحصل منها على الكثير من الأفكار والتصاميم الجاهزة، بالإضافة إلى مكتبات مثل Bootstrap، ستحصل على تصميم مكتمل بدون الحاجة إلى تصميم الواجهة بالكامل من الصفر.
  13. وعليكم السلام ورحمة الله وبركاته ليس من الضروري أن تكون مصمم Designer لتتمكن من إنشاء تطبيقات (جوال أو ويب)، حيث يمكنك بناء التطبيق بدون تصميم، ولكن وجود تصميم تعتمد عليه سيوفر عليك الكثير من الوفت والجهد وستخرج التطبيق في شكل جيد ومريح للعين وسهل الإستخدام. في حالة لم يكن لديك تصميم للتطبيق الذي تعمل عليه، فعليك أولًا تحديد محتويات كل صفحة في التطبيق وتقوم بمحاولة عرض هذه المحتويات بطريقة منظمة وواضحة على الأقل حتى يتمكن المستخدمون من إستخدام التطبيق بشكل سهل. تطبيقات الويب والجوال متشابهة للغاية، في الواقع يمكنك إستخدام نفس تقنيات الويب (HTML و CSS و JavaScript) لإنشاء تطبيقات جوال، وبالتالي ينطبق عليهما -تطبيقات الويب والجوال- نفس الشروط من حيث سهولة الإستخدام والتصميم المُنسَق. يوجد الكثير من المواقع التي تحتوي على آلاف التصميمات وتستطيع أن تحصل على أفكار كثيرة لتطبيقك، من هذه المواقع: behance dribbble pinterest أنصحك بالإطلاع على قسم التصميم، حيث يوجد عدد كبير من المقالات الخاصة بالتصميم خصوصُا مقالات UI/UX (واجهة المستخدم / تجربة المستخدم) والتي ستفيدك كثيرًا عند تصميم واجهة التطبيقات، مثل كيفية إختيار الألوان وكيفية البدء في تصميم الواجهات وكيف تقوم بعرض المحتوى بطريقة صحيحة.
  14. إن كنت تقصد مكتبة tkinter في بايثون، فهي تأتي مضمنة في مكتبات اللغة ويمكنك إستعمالها مباشرة بدون الحاجة إلى تحميل أو تثبيت. حاول إستدعاء المكتبة في أي سكريبت وسوف تجد أن الكود يعمل بدون مشكلة.
  15. يمكنك إستعمال أي بطاقة ائتمانية بدون مشكلة، وتستطيع الحصول على مساعدة أكبر في هذا الأمر من خلال مركز المساعدة الخاص بالأكاديمة من هنا بالنسبة لدورة علوم الحاسوب، فهي دورة عامة تؤهلك لتعلم تقنيات أخرى، أي أنها مدخل لعلوم الحاسوب بشكل عام وبجميع تخصصاته، لكنك ستحتاج إلى التخصص في مجال معين مثل تطوير واجهات المواقع Frontend، تطوير تطبيقات الجوال، تطوير الواجهات الخلفية Backend وذلك من خلال باقي دورات أكاديمية حسوب. على سبيل المثال إن أردت أن تتخصص في تطوير واجهات المواقع Frontend ولم يكن لديك أي معرفة تقنية أو برمجية سابقة، فعليك أن تشترك في دورة علوم الحاسوب أولًا وبعد ذلك يمكنك إتمام دورة تطوير واجهات المواقع Frontend، أما إن كنت على دراية بالمجال التقني أو كان لديك خبرة برمجية سابقة، فيمكنك الإلتحاق مباشرة بدورة تطوير واجهات المواقع Frontend. سؤال مشابهة:
  16. يمكنك الحصول على أفكار للتطبيق عليها من خلال العديد من الطرق، منها: قم بعمل أدوات تساعدك في حياتك اليومية وتوفر عليك الوقت، مثل برنامج لحساب المصروفات اليومية أو برنامج لتسجيل الملاحظات Notes أو برنامج لإدارة كلمات المرور Passwords. حاول إستخراج أفكار من المشاريع المطلوبة في مواقع العمل الحر مثل مستقل وخمسات، حيث ستعمل على مشاريع مطلوبة في سوق العمل وكذلك يمكنك عرضها بسهولة في معرض الأعمال، أعتبره تدريب عملي على مشاريع حقيقية. قم بتصفح المشاريع الأكثر شهرة على مواقع مثل GitHub و GitLab، حيث يظهر كل يوم عدد من المشاريع الإبداعية. هناك مواقع تحتوي على آخر المنتجات والمشاريع البرمجية (مجانية ومدفوعة) مثل موقع product hunt، تصفح هذه المشاريع يمكن أن يلهمك أفكار جيدة للغاية. أبحث عن مشاكل تواجه فئة من الناس وقم بمحاولة حل هذه المشاكل من خلال عملها في شكل برنامج أو موقع. قم بتقليد منتجات حقيقية وأضف لها مميزات جديدة وحاول حل عيوبها. كل الأمثلة السابقة يمكن عملها في شكل برنامج، تطبيق جوال أو موقع ويب، فبعض النظر عن التقنيات ولغات البرمجة التي تستعملها يمكنك تطبيق أي حل من الحلول السابقة والمناسبة لك.
  17. وعليكم السلام ورحمة الله وبركاته في الوقت الحالي، توفر أكاديمية حسوب شهادة واحد لكل شخص ينهي دورة واحدة من دورات الأكاديمية (أي أنه يمكن الحصول على شهادة واحدة لكل دورة)، ويتم الكتابة أن "الشخص قد أتم بنجاح دورة تطوير التطبيقات بإستخدام لغة JavaScript"، وذلك يتضمن تطبيقات بشكل عام (سواء تطبيقات الويب أو تطبيقات الجوال)، وتكون بالشكل التالي: لمزيد من التفاصيب يمكنك التواصل مع الدعم الفني مباشرة من خلال مركز المساعدة
  18. إن كنت تقصد إمتحان أحد دورات أكاديمية حسوب، فنعم يمكنك ذلك، كل ما عليك هو أن تتأكد من فهمك الكامل لكل محتويات الدورة وأن تراجعها جيدًا ثم تواصل مع الدعم الفني مرة أخرى لتحديد معاد الإمتحان الجديد. لمزيد من المعلومات قم بزيارة مركز المساعدة.
  19. في توثيق node.js، تختص كل صفحة بشرح كائن معين أو وحدة معينة، وفي بداية كل صفحة من هذه الصفحات يوجد رقم باسم "مؤشر الاستقرار Stability Index"، ويكون له رقم 0 أو 1 أو 2، وكل رقم من هذه الأرقام يُشير إلى حالة هذا الكائن أو الوحدة (المشروحة في الصفحة): صفر 0 : تعني أن هذا الكائن أو الوحدة تم التخلي عنها Deprecated ولا يجب إستعمالها بعد الآن. واحد 1 : تعني أن هذا الكائن أو الوحدة مازال في حالة الإختبار Experimental، ومازل يتم العمل عليها من فرق Node.js وهي قابلة للتغير في المستقبل، لذلك لا يجب الإعتماد عليها في مشاريع حقيقية في الوقت الحالي (إلى أن يتم الإنتهاء من تطويرها). اثنان 2 : تعني أن هذا الكائن أو الوحدة في حالة مستقرة Stable ومتوافقة مع كل أكواد Node.js، ويمكنك الإعتماد عليها في مشاريع حقيقية بدون مشكلة على الإطلاق. يجدر بالذكر أن هذه الأرقام يتم تغيرها حسب حالة الكائن أو الوحدة من حين إلى آخر، وفي الغالب ستريد أن تستعمل الكائنات والوحدات التي لديها مؤشر إستقرار 2 فقط.
  20. العنصر farmeset والعنصر frame هما من عناصر لغة HTML الإصدار 4، ولكن هذه العناصر تم إزالتها في الإصدار 5 ، ولا يجب إستعمالها بعد الآن، والبديل هو إستعمال العنصر iframe مباشرة: <iframe src="https://..."></iframe> ويمكنك التحكم في حجمه من خلال الخصائص width و height: <iframe src="https://..." width="200" height="200"></iframe>
  21. يمكنك نشر مشروع جديد على أحد مواقع العمل الحر مثل مستقل أو خمسات، وسوف تحصل على عدد من العروض من محترفين ومتخصصين. ولا تنسى أن تقوم بطرح كل التفاصيل التي لديك لتحصل على النتيجة المرجوة.
  22. كل لغة من هذه اللغات لها نقاط قوة ونقاط ضعف، فعلى سبيل المثال لغة PHP تُعد أشهر لغة للواجهات الخلفية Backend وذلك لأنها مُعدة لهذا الأمر في الأساس ومنذ فترة كبيرة لكن لن تستطيع إستعمال هذه اللغة في مجال الذكاء الإصطناعي أو صناعة الألعاب، الأمر ممكن بالتأكيد ولكن قلة مصادر التعلم في هذه المجالات وندرة المكتبات تجعل هذا الأمر أصعب بكثير، بينما لغة مثل Python مستعملة على نطاق واسع في مجال الذكاء الاصطناعي والبيانات الضخمة Big Data وصناعة سكربتات الأتمتة Automation scripts، لذلك عليك أن تحدد ما إذا كنت تريد إستعمال اللغة التي ستتعلمها في مجالات أخرى غير الواجهات الخلفية أم لا. بما أنك مشترك في دورة تطوير واجهات المستخدم، فستجد أن المسار الأول من كل دورة متاح لك لمشاهدته بالكامل، فيمكنك أن تقوم بالمقارنة بين هذه اللغات وتختار اللغة التي تراها مناسبة أكثر لك. أيضًا يمكنك أن تلقي نظرة على هذه المقالة حيث توجد كمقارنة شاملة بين اللغات بايثون و PHP وروبي: المقالة السابقة تحتوي على أهم التقنيات المستخدمة في كل لغة من هذه اللغات، وكذلك أشهر المكتبات وإطارات العمل في كل لغة منهم.
  23. في لينكس يوجد آلاف البرامج المجانية ومفتوحة المصدر وغيرها برامج تكون مدفوعة ولها حقوق إستخدام، ولتسهيل التعامل مع هذه البرامج وتثبيتها بسهولة وآمان، يتم تقسيم هذه البرامج في Ubuntu في أربع مستودعات مختلفة: مستودع Main: يحتوي على برامج مجانية ومفتوحة المصدر بدعم من Canonical (المؤسسة الأم لنظام Ubuntu) مستودع Universe: يحتوي على برامج مجانية ومفتوحة المصدر، والتي يتم صيانتها وتطويرها من قِبل المجتمع community مستودع Restricted: يحتوي على البرمجيات والتعريفات drivers التي تسنح بتشغيل Ubuntu وبرامجه على العتاد Hardware المتعارف عليه مستودع Multiverse: يحتوي على البرامج المقيدة بحقوق النشر والتوزيع في الإصدارات الأخيرة من Ubuntu يمكنك أن تقوم بتفعيل أي مستودع من خلال برنامج Software Sources، حيث يمكنك تحديد ما تريد تفعليه كما في الصورة التالية: بعد ذلك أضغط على Close، ستظهر لك نافذة قمت بالضغط على زر reload، وبهذا سيكون قد تم تفعيل المستودع لديك. أيضًا يمكنك أن تقوم بتفيله من خلال الأمر التالي: sudo add-apt-repository repo_name قم بإستبدال repo_name باسم المستودع الذي تريد تفعيله ، مثل: sudo add-apt-repository universe بعد تفعيل المستودع لا تنسى أن تقوم بالتحديث من خلال الأمر التالي: sudo apt-get update في حالة كنت تستعمل إصدار قديم من Ubuntu فيمكنك أن تستخدم الأمر التالي لتفعيل أي مستودع من الأربع مستودعات: sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) repo_name" قم بإستبدال repo_name باسم المستودع الذي تريده، مثل: sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
  24. يمكنك أن تستخدم المعامل + لدمج المصفوفتين معًا، على النحو التالي: <?php $arr1 = array( "name" => "emad", "email" => "emad@gmail.com" ); $arr2 = [ 123=> 'emad_saif', 456=> '18' ]; print_r($arr1 + $arr2); وستحصل على النتيجة المطلوبة: Array ( [name] => emad [email] => emad@gmail.com [123] => emad_saif [456] => 18 ) أيضًا يمكنك أن تستخدم الدالة array_replace: $result = array_replace($arr1, $arr2); print_r($result); لكن عليك الحذر عند إستعمال أيًا من الطرق السابقة، ففي حالة كانت المصفوفتين يحتويان على نفس العنصر: <?php $arr1 = array( "name" => "first name", "email" => "emad@gmail.com" ); $arr2 = [ "name" => 'another name', 456=> '18' ]; $result = array_replace($arr1, $arr2); print_r($result); print_r($arr1 + $arr2); في الحالة السابقة، كلا المصفوفتين يحتويان على العنصر name، وعند إستعمال الدالة array_replace سوف يتم إستبدال العنصر name من المصفوفة arr1 بالعنصر name من المصفوفة arr2، وستكون النتيجة بالشكل التالي: Array ( [name] => another name [email] => emad@gmail.com [456] => 18 ) بينما عند إستعمال المعامل + فسوف يتم إستبدال العنصر name من المصفوفة arr2 بالعنصر name من المصفوفة arr1، وستكون النتيجة بالشكل التالي: Array ( [name] => first name [email] => emad@gmail.com [456] => 18 ) كما يمكنك جعل المعامل + يتصرف مثل الدالة array_replace من خلال تغير ترتيب المصفوفتين، بالشكل التالي: print_r($arr2 + $arr1); // يتم إستبدال المصفوفتين هنا بهذا الشكل سوف تحصل على نفس النتيجة مثل نتيجة إستعمال الدالة array_replace تمامًا.
  25. يمكنك أن تستخدم forlopp.counter مع المرشح divisibleby على النحو التالي: {% for count in my_list %} {% if forloop.counter|divisibleby:2 %} <p>do something</p> {% else %} <p>do something else</p> {% endif %} {% endfor %} شرح المرشح divisibleby: أيضًا تستطيع أن تستعمل cycle: {% for count in my_list %} {% cycle 'odd' 'even' %} {% if cycle == 'odd' %} <p>do something</p> {% else %} <p>do something else</p> {% endif %} {% endfor %}
×
×
  • أضف...