لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 10/31/24 في كل الموقع
-
3 نقاط
-
السلام عليكم ورحمة الله وبركاته سؤالي :ما هي أفضل طريقة لدراسة البرمجة ؛ وما هي الطريقة للحصول على الشهادة بعد انهاء الدورة كاملة ؟ وشكراً لجهودكم.3 نقاط
-
كيف أقدر اثبت بيئة تطوير متكاملة على نظام الويندوز وماهي الأوامر التي أبدأ بكتابتها2 نقاط
-
السلام عليكم! الآن سمعت أنني في WordPress يفضل أن أتعلم php، حسنا الآن هل يجب عليا تعلمها هي فقط أم يوجد بدائل؟ لأنني بحث ووجدت أكثر من بديل ولكن ركزت على اثنين وهما: 1- python باستخدم django 2- next.js باستخدام express.js1 نقطة
-
إذا كنت تقصد العمل على WordPress، فإن PHP هي اللغة الأساسية لأن نظام WordPress مبني عليها، ومعظم الإضافات والثيمات مكتوبة بها، و لتخصيص WordPress أو تطوير إضافات خاصة، تعلم PHP سيكون ضروريا. أما بالنسبة للبدائل، فهي خيارات رائعة ولكنها تختلف في التطبيق حيث أنها ليست موجهة للإستعمال مع WordPress و إنما للإستعمال المنفصل، يعني إذا كنت تخطط لبناء موقع أو تطبيق من الصفر وتريد الاستفادة من واجهات برمجية متقدمة أو تصميمات تفاعلية، فإن Django وNext.js خيارات قوية.1 نقطة
-
1 نقطة
-
هذا الأمر يتم فقط من خلال الكود . كل ما يمكنك فعله في قاعدة البيانات هو جعل العمود unique أي فريد ولن يتم تكرار أي قيمة ولو حاولت تكرارها سيظهر خطأ ولن يسمح لك بإضافتها. ولكن لتفعل ذلك سيتوجب حذف القيم المكررة أولا لديك. ولكن ما تريد تنفيذه هو من خلال الكود وليس قاعدة البيانات . فعند إضافة المدخلات يجب الأول التأكد هل هي موجودة في الجدول أم لا . إذا كانت موجودة لا يقوم بإضافتها وإذا لم تكن فعندها يقوم بإضافتها.1 نقطة
-
هذه مشكلة لديك في تصميم قاعدة البيانات . يجب أن يكون جدول lessons يحوي فقط lesson_id و lesson_name ويجب أن يكون الإسم فريد. بعد ذلك يجب أن يكون هناك جدول للطلاب والدروس وليكن students_lessons وهذا الجدول يحتوي على id و student_id و lesson_id . وهكذا عند إضافة مادة للطالب يتم وضعه في هذا الجدول . أما جدول lessons يتم وضع فقط المواد به .1 نقطة
-
السؤال غير واضح قليلا . هل تقصد بالجدول هو ملف excel أم ما هو الجدول الذي تقصده ؟ ثانيا الجدول هذا ما هي الأعمدة التي يحتويها ؟ إذا كنت تقوم بحفظ كل طالب مع المادة التي سجل بها أو درجات المواد فهنا يجب أن تتكرر . حيث ستكون بجوار كل مادة في الجدول المرفق هو إسم الطالب أو الدرجة الخاصة به لهذا سيتكرر . أما إذا كنت تقصد أنك تريد الحصول على عمود المواد غير مكرر فنعم بالطبع يمكن ذلك عن طريق إستخراج القيم الفريدة unique من هذا الجدول ولمساعدتك يجب أن اعرف ما هو الجدول أو الكود الذي تستخدمه1 نقطة
-
1 نقطة
-
السلام عليكم حسابي علي جوجل لما احاول اسجل عليا علي التلفون بيظهر رساله خطاء في كلمه السر مع ان كلمت السر صح فا فا حل المكشله دي ؟ مع العلم انا مش اول مر تحصل بيتحصل مع كثير وكل مره بيغير كلمه السر وايجي اسجل بعد فترا فا بيظر رساله خطاء ؟1 نقطة
-
قم بإظهار كلمة السر أثناء كتابتها لتفقد هل هناك حروف غير صحيحة؟ إن استمرت المشكلة قم بتغييرها ثم أظهرها أثناء الكتابة بالضغط على علامة "العين أو خيار أظهر كلمة المرور" ثم تفقدها فربما تكتب حروف بشكل captial أي حروف كبيرة مثل A بدلاً من a لذا عليك كتابتها كما هي حتى لو وضعت مسافة أيضًا.1 نقطة
-
أولاً يجب تفهم أنك ستحتاج إلى 4 أو 5 أضعاف وقت الدورة من أجل دراستها بشكل سليم، وذلك ما بين مشاهدة ثم استيعاب ثم حفظ ثم تطبيق ثم مراجعة وتكرار وبحث. عليك بالتالي: مشاهدة 4 دروس قصيرة ثم التوقف والتطبيق على ما جاء بها من خلال إعادة ما قام به المدرب. أو درس واحد طويل وتقسيمه إلى أجزاء والتوقف ثم التطبيق بمفردك. ولا مشكلة في التطبيق مع المدرب، لكن بعد الإنتهاء عليك إعادة ما قمت به بمفردك لكي تختبر استيعابك وتركيزك يُصبح أكبر. (خصص نسخة للتطبيق مع الشرح مثلاً ونسخة أخرى للتطبيق عليها بمفردك). والمهم هو ألا تقوم بخطوة دون معرفة لماذا قمت بها، فالبرمجة ليست نسخ أكواد بل وظيفتك هي حل مشاكل برمجية لذا استيعابك للأدوات واللغة نقطة فارقة للمبرمج المتميز. وهناك مثال جيد هو "يمكنك مشاهدة فيلم لكن لن تصبح مخرج أفلام" لذا عليك بالممارسة العملية وأن تكون طالب فاعل وليس مشاهد سلبي فقط، يجب التدرب على نماذج صغيرة في البداية ثم التدرج في الصعوبة وإنشاء مشاريع كاملة، وعدم الإكتفاء بمشاريع الدورة ونماذجها فقط. وفي الدورة لا تكتفي ببناء المشروع مرة واحدة فقط، حاول إعادة بنائه بمفردك، ولا مشكلة أبدًا إذا نسيت بعض الأشياء لا تنزعج من ذلك إطلاقًا. فمرة واحدة لا تكفي أبدًا، حيث أنك في المرة الأولى تستوعب بنسبة 70% وأنت بحاجة إلى الـ 30% الأخرى والتي تحصل عليها من خلال إعادة بناء المشروع بمفردك بدون مشاهدة شرح المدرب. وبالطبع ليس عليك تذكر كل شيء قمت بدراسته ولكن يجب استيعاب كل شيء تقريبًا بنسبة 80% وبعض الأمور ستتضح لك من الواقع العملي بعد فترة وتنفيذ المشاريع. فلا أحد يتذكر كل شيء ويتم البحث عن ما نريده ويتم تذكر الأمر لأنك تعرف ما تريد البحث عنه، لكن الحفظ والاستيعاب مهمان في البداية.1 نقطة
-
الإصدار 1.0.1
7669 تنزيل
تزداد الأنظمة الحاسوبية المحيطة بنا ذكاءً يومًا بعد يوم -بعد تزويدها بأدوات تعلم صنعية- وامتد تطبيق الذكاء الاصطناعي وتعلم الآلة إلى أغلب الأنظمة والتطبيقات المحيطة بنا فقلما تجد تطبيقًا شائعًا لا يتصف بشيء من الذكاء مثل لوحة الكتابة على الجوال التي تقترح عليك كلمات تالية عند كتابة كلمة معينة أو تصحح لك كلمة إن أخطأت بها وأيضًا مثل محركات البحث والمتاجر الإلكترونية التي تقترح على المستخدم اقتراحات توافق ما يطلبه وكأنها تقرأ أفكاره، وهذا بالنسبة للمستخدم النهائي أما بالنسبة لأصحاب العمل فالتطبيقات كبيرة منها أنظمة مراقبة المعاملات المشبوهة في المصارف والحوالات المالية وأنظمة تحليل العملاء وتصنيفهم وأنظمة التنبؤ وغيرها، هذا لم أذكر ما يتعلق بالروبوتات والسيارات وأنظمة الطيران والملاحة ذاتية القيادة وغيرها الكثير مما لا يتسع حصره وذكره. كل ذلك لم يأت من فراغ بل يقف خلفه جيوش من المهندسين والخبراء وبذلك اعتني بعلم الذكاء الاصطناعي وتعلم الآلة أيما اعتناء وألفت فيه مئات الكتب ونشرت آلاف المقالات والأبحاث ومنها هذا الكتاب الذي بين يديك! دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن هذا الكتاب هو الجزء الثاني من كتاب مدخل إلى الذكاء الاصطناعي وتعلم الآلة فبعد تأسيس المفاهيم والمصطلحات التي يقوم عليها مجال الذكاء الاصطناعي وتعلم الآلة في الجزء الأول، ننطلق في الجزء الثاني بتطبيق مشاريع عملية تطبيقية مبنية على بيانات واقعية ويناقش أفكار قابلة للتطبيق في الحياة العملية. فصول هذا الكتاب مبنية على عدة مساهمات ساهم بها كل مؤلف: الفصول الأربعة الأولى تعتمد على كتاب Python Machine Learning Projects لكاتبه Michelle Morales ونقله للعربية بتصرف محمد لحلح المؤلف للجزء الأول والدكتور باسل الخطيب. الفصل الخامس والسادس وهو من كتابة خالد شمعة أثرى بها الكتاب من خبرته الكبيرة في المجال. الفصل الحادي عشر مبني على ترجمة سلسلة A Complete Machine Learning Project Walk-Through in Python لكاتبه Will Koehrsen ونقلها للعربية بتصرف الدكتور باسل الخطيب. الفصول المتبقية هي من كتابة الدكتور باسل الخطيب المختص في مجال الذكاء الاصطناعي وتعلم الآلة والأستاذ في جامعات عدة مرموقة منها جامعة دمشق. ما يميز هذا الكتاب قربه من القارئ العربي، إذ لم يقتصر على الترجمة ونقل تطبيقات أجنبية جاهزة أو تعتمد على نصوص أجنبية بل يعرض تطبيقات على نصوص باللغة العربية وهذا ما يفتقر إليه المحتوى العربي في هذا المجال. مستوى هذا الكتاب متقدم لذا يجب أن تملك معرفة أساسية بمجال الذكاء الاصطناعي وتعلم الآلة وخبرة بلغة بايثون فالمشاريع كلها مطبقة فيها، فإن كنت مبتدئًا فننصح قبل هذا الكتاب قراءة الكتابيين التاليين: البرمجة بلغة بايثون مدخل إلى الذكاء الاصطناعي وتعلم الآلة ترتيب القراءة الأمثل للكتاب يكون من أوله لآخره وفق ما رتبناه لك ولكن يمكنك قراءة الكتاب بأي ترتيب ففصوله لا تعتمد على بعضها باستثناء الفصل الأول الذي يشرح كيفية إعداد بيئة العمل لسائر المشاريع والفصل الأخير الذي يختتم الكتاب بمناقشة مسألة تقييم نماذج تعلم الآلة وحساب مجموعة من مقاييس تقييم الأداء والتي تخبرنا بأداء نموذج التعلم المبني ودرجة تعلمه. يمكنك تطبيق المشاريع محليًا على حاسوبك مباشرةً أثناء قراءة المشروع وتعلمه وستجد غالبًا في بداية أو نهاية المشروع رابط لتنزيل شيفرته ومقارنتها مع الشيفرة التي كتبتها ولتكون لك مرجعًا، كما يمكنك الاستعانة بمنصة Google Colab لتنفيذ المشاريع واختصار وقت التنفيذ وإعداد البيئة وقد وفرنا لبعض المشاريع رابطًا على تلك المنصة. يمكنك قراءة فصول الكتاب على شكل مقالات وتجد روابطها تاليًا: إعداد بيئة العمل للمشاريع مع بايثون بناء مصنف بالاعتماد على طرق تعلم الآلة بلغة البايثون باستخدام مكتبة Scikit-Learn بناء شبكة عصبية للتعرف على الأرقام المكتوبة بخط اليد باستخدام مكتبة TensorFlow بناء روبوتات للعب الألعاب باستخدام طريقة التعلم المعزز ومشتقاتها باستخدام مكتبة TensorFlow تصنيف الصور والتعرف على الوجه في مجال الذكاء الاصطناعي إعداد شبكة عصبية صنعية وتدريبها للتعرف على الوجوه تحليل المشاعر في اللغة العربية باستخدام التعلّم العميق استخدام خوارزميات العنقدة لتجزئة الزبائن تصنيف الشخصيات بالاعتماد على تغريداتهم العربية باستخدام التعلم العميق استكشاف قواعد الترابط في مبيعات المتاجر باستخدام تقنيات تعلم الآلة تحليل بيانات الطاقة لمدينة نيويورك الجزء الأول الجزء الثاني الجزء الثالث تقييم واختيار نماذج تعلم الآلة1 نقطة -
مرحباً بك @مرام النعمانية. يمكن تنفيذ المطلوب في بايثون بسهولة كالآتي: import math def hypotenuse(a,b): return math.sqrt(a**2 + b**2) تحياتي لك.1 نقطة
-
يُعتبر مبدأ المسؤوليّة الواحدة Single Responsibility Principle (أو اختصارًا SRP) المبدأ الأوّل من مبادئ التصميم SOLID، وهو مفيد بصورة خاصّة في التصميم كائنيّ التوجّه object-oriented design. يعتمد هذا المبدأ على تجزئة مكوّنات النظام البرمجي بحيث يكون لكلّ جزء منه مهمّة (مسؤوليّة) واحدة ووحيدة. ينص هذا المبدأ على ما يلي: لا يظهر من النص السابق أي إشارة مباشرة إلى المسؤوليّة الواحدة. لتوضيح الربط بين المسؤولية الواحدة وبين نص المبدأ السابق، لننظر إلى المثال التالي الذي يحوي صنفًا مكتوبًا بلغة ++C ويُستخدم للاتصال بخادوم قواعد بيانات MySQL. اسم هذا الصنف MySQL أيضًا، ويمتلك واجهة لتأسيس الاتصال مع خادوم MySQL وإغلاقه، وإرسال استعلامات SQL إلى الخادوم واستقبال ومعالجة النتائج: class MySQL { public: bool connect(); void disconnect(); bool executeQuery(std::string queryString); MySQLResult* getQueryResult(); }; من الواضح أنّ لهذا الصنف مهمّتان أساسيّتان، الأولى هي إدارة عملية الاتصال مع خادوم MySQL (فتح وإغلاق الاتصال) والثانية هي التواصل مع الخادوم في إجراء الاستعلامات واستقبال النتائج (تنفيذ استعلامات SQL). لو افترضنا الآن حدوث السيناريو التالي: أصبح خادوم MySQL يقبل الاتصالات المشفّرة فقط. حدثت بعض التغييرات ضمن الخادوم بحيث أنّه بدأ بالاستجابة بشكل مختلف لبعض الاستعلامات. سيؤدي ذلك بالطبع إلى حدوث تغييرين ضمن صنف MySQL السابق، أو بمعنى آخر، سيكون هناك سببان لتغيير الصنف MySQL. ويُعدّ هذا خرقًا لمبدأ المسؤولية الواحدة كما هو واضح. يُعتبر وضع أكثر من مهمّة قابلة للتغيير (من أجل سبب ما) لأحد الأصناف خطأً تصميميًّا. قد لا تبدو تلك مشكلةً في الوقت الحالي، ولكن أيّ نظام برمجي يتغيّر ويتطوّر. فما يبدو حلًّا مقبولًا في الوقت الحاضر، قد يُفضي إلى نتائج سيّئة في المستقبل. يمكن استخدام الحل التالي لمشكلتنا السابقة: class MySQLConnection { public: bool open(); /* former connect() */ void close(); /* former disconnect() */ }; class MySQLQuery { MySQLConnection* session; public: bool execute(std::string queryString); MySQLResult* getResult(); }; يبدو مبدأ المسؤوليّة الواحدة بسيطًا، ولكنّه في الحقيقة صعب التطبيق. والسبب في ذلك، هو أنّ وضع المسؤوليّات المتعدّدة لصنف ما معًا، هو أمر بديهي ومألوف بالنسبة إلينا، أمّا عملية الفصل والتجزئة إلى أصناف أصغر لكلٍّ منها مسؤوليّة واحدة، فقد لا تبدو جذّابةً أوّل الأمر. بالنسبة لي، عندما عدت وراجعت بعض تصميمات الأصناف القديمة لديّ، قلّما وجدت صنفًا من الممكن جعله يراعي هذا المبدأ. ولكن عندما أمعنت النظر والتفكير وجدت أنّ الفصل في المهام سيقلّل من تعقيد التصميم، وسيجعل الشيفرة أيسر للقراءة والفهم. بالمقابل، فإنّ تطبيق هذا المبدأ بشكل صارم، ليس فكرةً جيّدة. فعلى المرء أن يكون حكيمًا في تحديد متى يمكن تطبيق هذا المبدأ، وخصوصًا عندما يجد أنّ الملف الخاص بأحد أصنافه بات يحتوي على أكثر من 500 سطر من الشيفرة البرمجيّة! ترجمة -وبتصرّف- للمقال Single Responsibility Principle لصاحبه Radek Pazder.1 نقطة
-
يُعتبر مبدأ الفتح والإغلاق Open/Closed Principle أو اختصارًا OCP، من المبادئ التي تساعد مطوّري البرمجيّات على تحقيق تصاميم برمجيّة عالية الجودة. على أيّة حال، قد يكون من الصعب أحيانًا أن نوضّح ما الذي نعنيه بالبرمجيّات عالية الجودة. بالعودة إلى المبدأ OCP، يعود الفضل إلى برتراند ماير في وضع مصطلح مبدأ الفتح والإغلاق، حيث ظهر أوّل الأمر في كتابه البنية كائنيّة التوجّه للبرمجيّات "Object Oriented Software Construction" ينص هذا المبدأ على ما يلي: الذي يعنيه هذا المبدأ، هو أنّنا عندما نُصمّم جزءً من تطبيق برمجي، فإنّه من الضروري أن نضع في حسباننا إمكانيّة التوسّع المستقبليّ، فكلّنا يعلم أنّ المتطلّبات الخاصّة بالزبائن تتغيّر على الدوام وبسرعةٍ كبيرة. لذلك فإنّ الشيفرة البرمجيّة ستتغيّر وتتوسّع لتلبّي المزيد من المتطلّبات والمزايا، وقد لا يؤدّي هذا الأمر على الدوام إلى عواقب حميدة على الصعيد البرمجي. الهدف الذي يُنشده هذا المبدأ هو أن ننظر إلى المستقبل (ابنِ الآن، وخطّط للمستقبل) بحيث نصمّم تطبيقاتنا البرمجيّة بحيث لا تحتاج إلى تغيير في الشيفرة المكتوبة مسبقًا عند إضافة مزايا ووظائف جديدة إليها. لندع الشيفرة البرمجيّة تُعبّر عن نفسها مع المثال التالي: def area(geometric_entity): if geometric_entity.type() == SQUARE: return geometric_entity.a * geometric_entity.a elif geometric_entity.type() == CIRCLE: return PI * geometric_entity.r * geometric_entity.r else: raise UnknownEntityError("I literally have no idea.") قد توحي الشيفرة السابقة بالبساطة أوّل الأمر، ولكنّها تُظهر جانبًا أساسيًّا من مبدأ OCP. فإذا أردنا مثلًا أن تدعم الدالّة السابقة إمكانية حساب مساحة مستطيل فيمكن ذلك بسهولة وذلك بإضافة مقطع elif جديد. ولكن بالمتابعة على هذا المنوال، وفي حالة حساب مساحة شكل هندسي غير قياسي، فستتحول الأسطر البرمجيّة البسيطة السابقة إلى ما يزيد عن 1500 سطر برمجي لحساب مساحة هذا الشكل باستخدام تكامل ريمان Riemann Integral، مما سيجعل هذه الأسطر كوحش برمجيّ إذا لم يلتهمك، فإنّ مدير المشاريع سيفعل ذلك حتمًا! النقطة التي نريد الوصول إليها، أنّه في كلّ مرّة نريد فيها إحداث تغيير في البرنامج لدعم مزايا جديدة، فإنّه من الممكن أن يؤدّي هذا التغيير إلى مشاكل في عمل المزايا القديمة التي كانت تعمل بشكل جيّد أصلًا، وهذا أمر غير مرغوب بالطبع. وهذا ما يحذّرنا منه مبدأ OCP، فيجب أن تكون العناصر البرمجيّة مفتوحة للتوسعة (دعم مزايا إضافيّة) ولكنها مغلقة للتعديل (عدم الحاجة إلى تعديل الشيفرة التي تدعم المزايا القديمة). قد يتبادر إلى ذهن البعض أنّه في حالة حدوث مشاكل جرّاء هذا التعديل فمن الممكن إصلاحها باستخدام وحدات الاختبار unit tests ومنقّحات الأخطاء debuggers، ولكن لماذا نلجأ لمثل هذه الأساليب إذا كان بإمكاننا تجنّبها أصلًا؟ فدرهم وقاية خير من قنطار علاج. وكما أنّه من الصعب وضع تعريف رسميّ لمعيار الجودة للبرمجيّات، فكذلك الأمر بالنسبة لهذه المبادئ. فلا توجد قواعد صارمة للتقيّد بها، فكل شيء يعود للخبرة الشخصيّة والتخطيط الجيّد. ترجمة -وبتصرّف- للمقال Open/Closed Principle in Software Design لصاحبه Radek Pazdera.1 نقطة
-
إذا أردت طريقة سهلة وسريعة لفعل ذلك فيمكنك استخدام طريقة تشريح السلسلة النصية لعكس محتوياتها كما في المثال التالي: revword = astring[::-1] أو إذا أردت عكس ترتيب الكلمات الموجودة في السلسلة النصية فقط وليس جميع الأحرف فيمكنك فعل ذلك بسطر واحد أيضا كالتالي: revword = " ".join(astring.split()[::-1]) كما يمكنك استخدام طريقة أخرى أكثر تفصيلا مثل هذه الطريقة ولقد استخدمنا فيها دوال split و reverse و join كالتالي: revword = astring.split() revword.reverse() revword=''.join(revword)1 نقطة