-
المساهمات
1480 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
2
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو ياسر مسكين
-
من الأفضل تقسيم البيانات المتاحة لديك إلى مجموعتين، مجموعة تدريب ومجموعة اختبار، و استخدم مجموعة التدريب لتدريب النموذج، ثم قم بتقييم أدائه على مجموعة الاختبار، إذا كان الأداء جيدا على مجموعة الاختبار، فهذا مؤشر إيجابي على أن النموذج قادر على التعميم بشكل جيد. و يمكنك استخدام تقنيات مثل التحقق المتقاطع أو Cross-Validation لتقييم أداء النموذج على أجزاء مختلفة من البيانات، و إذا كانت البيانات الجديدة متاحة يمكنك اختبار النموذج مباشرة عليها لمعرفة كيفية تعامله معها.
- 4 اجابة
-
- 1
-
بالنسبة للمحركات الجاهزة توفر أدوات متكاملة تساعدك على تسريع عملية تطوير الألعاب، كما تحتوي على مكتبات جاهزة ومكونات إضافية تساعدك على بناء الألعاب بسهولة، فثملا Unity معروف بسهولة استخدامه ودعمه للعديد من المنصات، بينما Unreal Engine يتميز بجودة رسوميات عالية جدا وواقعية. و بعضها مجاني لكن مع اشتراكات أو عمولات تعتمد على أرباح اللعبة، حيث أن Unity مجاني حتى 200 ألف دولار أرباح سنوية، بعدها يتطلب اشتراكا، أما Unreal Engine يأخذ عمولة بنسبة 5% من الأرباح بعد تحقيق 1 مليون دولار. أما بناء محرك خاص يستغرق وقتا طويلا و ميزانية عاليا جدا لدرجة أنه يعتبر مستحيل أن تقوم بهذا بمفردك، وبالتالي تحتاج إلى فريق متكامل و ميزانية عاليا لتحقيق هذا الأمر.
-
السبب في عدم وجود المسار الأول (WindowsLiveGamebar) هو أن هذا المسار كان يستخدم في الإصدارات القديمة من Windows قبل Windows 10 ومع إطلاق Windows 10 قامت Microsoft بإعادة تصميم Game Bar بالكامل وتغيير هيكلة تخزين الإعدادات في سجل النظام. أصبحت الإعدادات الآن تخزن في المسار الجديد: لذا انتقل إلى المسار التالي: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR بعدها أعد تشغيل الجهاز ثم جرب التسجيل مرة أخرى.
- 4 اجابة
-
- 1
-
لا ليس كذلك فدالة sorted() في بايثون لا تستخدم خوارزمية Merge Sort وتستخدم بايثون خوارزمية مخصصة تسمى Timsortوهي خوارزمية هجينة تجمع بين مميزات كل من: Merge Sort (دمج مرتب) Insertion Sort (ترتيب بالإدراج) وتم تطوير Timsort بواسطة Tim Peters في عام 2002 خصيصا لبايثون والمميز في هذه الخوارزمية أنها تعمل بشكل أسرع مع البيانات المرتبة جزئيا وهي مستقرة (stable sort) وتحافظ على الترتيب النسبي للعناصر المتساوية وتستخدم ذاكرة إضافية أقل من Merge Sort الكلاسيكية وأما التعقيد الزمني لها في أسوأ الحالات هو O(n log n). يمكنك مراجعة المزيد من هنا حول الدالة: الدالة sorted() في بايثون
- 4 اجابة
-
- 1
-
لا توجد طريقة سحرية لمتابعة الدورة فكلّ طالب لديه ظروفه ومتغيراته الشخصية التي لا يمكن القياس عليها، لذا أنصحك بإنجاز برنامجك الخاص ويكون مرنا وفقا لاحتياجاتك وظروفك اليومية، ولكن في البرمجة بشكل خاص عامل الاستمرارية في التعلم والتطبيق العملي مهم جدا للتحصيل الجيد للدورة وللمعارف المكتسبة أثناء دراستها، لذا فليس العبرة بالحجم الساعي اليومي بقدر ما تكون في الكمّ المعرفي المكتسب يوميا، لذا من الأفضل متابعة الدورات كما هي وفقا للترتيب التي هي عليه، ولا حرج بل هو أمر مستحسن أن يأخذ الطالب قسطا من الراحة بين الفينة والأخرى، أو بين إتمامه لمسار وبدايته لمسار آخر، أين يمكنك حينها مراجعة ما تعلمته والتدرب عليه تحضيرا لما هو آت من مسارات إذ أنك في الأغلب ستجد مسارات مترابطة مع بعضها البعض كالحلقات ومن الجيد فهم كل جزء منها للانتقال إلى التي بعدها كما يمكنك مراجعة الإجابات التالية على سؤال مشابه من هنا:
-
يبدو أن هناك مشكلة في ذاكرة الحاسوب فالبرنامج يحاول إنشاء مصفوفة NumPy كبيرة جدا ولا يوجد ذاكرة كافية لتخزينها لاحظ أنّ المصفوفة التي تحاول إنشاءها تحمل الأبعاد التالية: 28800 × 43094 ونوع البيانات هو float64 أي 8 بايت لكل عنصر ومنه بعملية حسابية بسيطة سنجد أنّ الحجم الإجمالي المطلوب هو 9.25 جيجابايت لذا يمكنك استخدام نوع بيانات أصغر مثل float32 بدلا من float64 لتقليل استهلاك الذاكرة للنصف: dtype=np.float32 أو يمكنك استخدام المصفوفات المتناثرة (sparse matrices) كالتالي: from scipy import sparse sparse_matrix = sparse.csr_matrix((28800, 43094), dtype=np.float32) m = DesignMatrix(sparse_matrix, design_info)
- 4 اجابة
-
- 1
-
صحيح أنّ الفيديو الترويجي مرّ عليه وقت لكن توجد فيديوهات أخرى تتحدث عن تطوير الواجهات ويتم إضافة فيديوهات متعلقة بهذا المجال دوريا مثل هذا الفيديو: بالنسبة لمحاور الدورة وأيّ شيء متعلق بمساراتها فستحده محدّثا في هذه الصفحة: كما يتمّ تحديث هذه الصفحة دوريا كلّما قام فريق الإعداد والإدارة بتحديث معين داخل الدورة، كتحديث فيديو أو إضافة مسار جديد، كما يمكنك أن تجد أنّه يتم إضافة ملاحظات دورية أسفل الدروس بخصوص تحديث بعض الأمور وهذا ما يبين وجود متابعة صارمة من قبل الأكاديمية على محتوى الدروس والتحديثات الجديدة التي تطرأ في التقنية. بالرغم من ذلك فإنّ الوصول للدورة سيكون متاحا مدى الحياة بالإضافة إلى أيّ تحديثات تطرأ عليها، كما أنّ ثلّة من المدربين يرافقون الطلبة في مشوارهم التعليمي في الأكاديمية بحيث يجيبون على استفساراتهم وانشغالاتهم. بمجرد إتمامك للدورة أو إتمامك لأربع مسارات كاملة مع تحقيق الشروط التالية: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub أولًا بأول لمشاركتها معنا توثيق الهوية فستكون مؤهلا لاجتياز الامتحان والحصول على شهادة ومتابعة رسمية من قبل فريق مختص.
-
أولا أنصحك بتحديد نوع التطبيق قبل البدء في حال ما رغبت أن تعمل: تطبيق ويب فسيكون مناسبا إذا كنت تريد أن يكون التطبيق متاحا عبر الإنترنت هنا يمكنك استخدام تقنيات مثل: Backend: Python (Flask أو Django)، أو Node.js. Frontend: React، Vue.js أو أي مكتبة أو إطار عمل لبناء واجهات المستخدم. قاعدة البيانات: PostgreSQL مع أدوات مثل pgAdmin لإدارة البيانات. أو تطبيق سطح مكتب سيكون مناسبا إذا كان التطبيق سيعمل على أجهزة معينة داخل الشركة في هذه الحال يمكنك استخدام: Python مع مكتبة مثل Tkinter أو PyQt لإنشاء واجهات سطح المكتب. PostgreSQL كقاعدة بيانات. بالنسبة لتصميم قاعدة البيانات يمكنك البدء بتصميم قاعدة بيانات متكاملة تعكس العمليات التي سيحتاجها التطبيق ويتضمن ذلك إنشاء جداول مثل جدول العمال لتخزين بياناتهم الأساسية كالأسماء والأرقام الوظيفية والحالة الإدارية، وجدول آخر لتسجيل العمليات التي تتم على بياناتهم، مثل التعديلات أو الإضافات، مع تفاصيل عن الشخص الذي أجرى التعديل ووقته.
- 2 اجابة
-
- 1
-
الخطأ x8232367 تحديدا يشير إلى فشل في تهيئة خدمة التسجيل في Game Bar بسبب عدم تطابق القيم في سجل النظام مع إعدادات التطبيق وتحدث المشكلة بشكل خاص في الحالات التالية: بعد تحديثات Windows الكبيرة عند تغيير إعدادات بطاقة الرسومات عند حدوث خلل في تثبيت تحديثات Xbox Game Bar لحل المشكلة أرجو الضغط على Windows + R ثم اكتب regedit واضغط Enter بعدها انتقل إلى المسار التالي: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsLiveGamebar ابحث عن مفتاح يسمى AllowGameDVR وفي حال لم تجده قم بإنشائه بالنقر بزر الماوس الأيمن كالتالي: > New > DWORD (32-bit) Value ثم اضبط قيمته على 1 بعدها أعد تشغيل الكمبيوتر، بعد ذلك افتح التالي: Settings > Gaming > Captures ثم قم بتعطيل ثم إعادة تفعيل الخيار التالي: "Record game clips and screenshots".
-
من خلال رسالة الخطأ فالمشكلة الرئيسية هي أن المشروع لا يستطيع العثور على مكتبات Groovy المطلوبة فالنظام بالتحديد يحاول البحث عن مكتبات Groovy مثل: groovy-core groovy-ant groovy-json groovy-xml وغيرها من المكتبات والخطأ يحدث في مرحلة تنفيذ Gradle task 'assembleDebug' وهي المرحلة المسؤولة عن بناء تطبيق Android للتصحيح كما هو موضح هنا: Execution failed for task ':gradle:compileGroovy' لذا في مجلد المشروع افتح terminal وقم بتنفيذ: flutter clean rm -rf pubspec.lock cd android && ./gradlew clean وعدّل ملف android/gradle/wrapper/gradle-wrapper.properties ليكون: distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip وتأكد من أن ملف android/build.gradle يحتوي على: buildscript { ext.kotlin_version = '1.8.0' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.3.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() } } ثم نفذ التالي: flutter pub get flutter run وإذا استمرت المشكلة أرجو حذف مجلد .gradle في مجلد android وحذف مجلد build في مجلد المشروع ثم إعادة تنفيذ الخطوات السابقة من جديد.
-
المشكلة في الكود تكمن في أن العناوين العربية تظهر بشكل رموز (Unicode) مثل \u0645\u0639 بدلا من ظهورها بشكل نص عربي صحيح لذا الحل بسيط جدا نحتاج فقط تعديل سطر واحد في الكود عند حفظ النتائج في ملف JSON وتحديدا في هذا الجزء: with open('results.josn' ,'w',encoding='utf8') as f: json.dump(results,f,indent=2) ونقوم بتعديله إلى التالي: with open('results.josn' ,'w',encoding='utf8') as f: json.dump(results, f, ensure_ascii=False, indent=2) بإضافة معامل ensure_ascii=False إلى دالة json.dump() وهذا سيجعل بايثون يحفظ النص العربي كما هو بدلا من تحويله إلى رموز Unicode.
- 2 اجابة
-
- 1
-
بالنسبة لشروط إتمام الدورة واجتياز الإمتحان فأرجو مراجعة الشروط كاملة من هنا: https://support.academy.hsoub.com/exams أما بالنسبة لأسئلتك حول ماذا سيحصل بعد اجتيازك للاختبار وحصولك على الشهادة فقد تمت الإجابة في السابق على تساؤل مماثل لذا أدعوك لمراجعة الأجوبة عليه من هنا:
-
وعليكم السلام ورحمة الله وبركاته، في الواقع القيم 0.0 و 1.0 في بيانات مرض السكري تمثل نفس المعنى مثل 0 و 1 لكن يتم تمثيلها بالأرقام العشرية (floating point numbers) لعدة أسباب من بينها: التناسق مع المعايير العامة في علم البيانات فعادة ما يتم تمثيل المتغيرات الثنائية (binary variables) كأرقام عشرية 0.0 و 1.0 التوافق مع خوارزميات التعلم الآلي فبعض الخوارزميات تتعامل بشكل أفضل مع الأرقام العشرية التناسق مع احتمالات التنبؤ لأنه عندما يقوم النموذج بالتنبؤ سيعطي نتائج على شكل احتمالات بين 0 و 1 مثل 0.7 أو 0.3 لذا يكون من المنطقي أن تكون البيانات الأصلية بنفس النمط فعندما تقوم بتدريب نموذج تصنيف ثنائي سيقوم بإخراج احتمالات عشرية بين 0 و 1 تمثل احتمال إصابة الشخص بالمرض لذا فإن استخدام 0.0 و 1.0 في البيانات الأصلية يتناسق مع هذا المفهوم.
- 2 اجابة
-
- 1
-
ال span هو عنصر inline يستخدم لتجميع وتنسيق جزء من النص داخل عنصر آخر لكنه لا يضيف أي تنسيق افتراضي للمحتوى أي أنه يمكننا استخدامه مع CSS لتنسيق أجزاء محددة من النص كالتالي: <p> هذه الجملة تحتوي على <span style="color: red;">كلمات ملونة</span> باللون الأحمر. </p> لأنّ أهم استخدامات span تكمن في تطبيق تنسيقات CSS على جزء محدد من النص من خلال إضافة classes أو IDs لأجزاء معينة للتحكم بها عبر جافا سكريبت لتمييز كلمات أو عبارات معينة داخل النص أو لتغيير لون أو حجم أو نمط خط جزء من النص. ويختلف span عن div في أنه عنصر inline بينما div هو عنصر block وهذا يعني أن span لا يبدأ سطرا جديدا ويأخذ فقط المساحة الضرورية لمحتواه يمكنك الاطلاع أكثر من هنا: العنصر <span> موسوعة حسوب وأرجو في قادم المرات طرح سؤالك في أسفل الدرس في صندوق التعليقات المخصص لذلك في حال كان سؤالك متعلقا بإحدى الدروس المتعلقة بأساسيات HTML في إحدى الدورات حيث هنا نطرح فقط الأسئلة العامة وهذا لمساعدتك بالشكل المناسب.
- 1 جواب
-
- 1
-
الترتيب الحالي هو الأنسب للمبتدئين لأنه مدروس ليتناسب مع ذلك في إطار التعلم بالتدريج، لذا بما أنك في بداياتك فلا أنصحك بتخطّي الدروس من الأحسن دراستها كما هي والتطبيق مع المدرب، وعادة ننصح من يمتلك خبرة أو يعرف درسا معينا بتخطّي جزئية معينة، وحتى لو كنت مبتدئا واستصعب عليك إكمال وحدة معينة من المسار يمكنك تخطّيها والعودة إليها لاحقا، لكن دوما ننصح بطلب الاستشارة مباشرة وتوضيح أي جزئية ترغب في تخطّيها وسنقول لك إن كانت ستؤثر بشكل كبير أم لا ويمكنك العودة إليها لاحقا خاصة في حال عدم ترابط الدروس والمسارات ببعضها البعض، أما في حالتك الآن فمن الأفضل دراسة الدروس كما هي لأنّ الترتيب الحالي هو الأفضل للمبتدئين في الدورة وفي حال وجدت أيّ استفسار يمكنك طرحه أسفل الدرس المعني بذلك في صندوق التعليقات المخصص له وسنجيبك بكل صدر رحب.
-
أرجو طرح سؤالك في أسفل الدرس في صندوق التعليقات المخصص لذلك في حال كان سؤالك متعلقا بإحدى الدروس في إحدى الدورات حيث هنا نطرح فقط الأسئلة العامة وهذا لمساعدتك بالشكل المناسب. في حال كان سؤالك غير متعلق بإحدى الدورات أرجو إضافة تفاصيل إضافية، لقطة شاشة أو أيّ رسالة خطأ تظهر لك لمساعدتك.
-
ما يريده المطور هو يتعلق بالتغيير في تدفق إنشاء الحساب (Signup Flow) فحاليا عندما ينقر المستخدم على "إنشاء حساب جديد" في صفحة تسجيل الدخول (Signin) سيتم نقله إلى صفحة إنشاء الحساب (Signup) مع تمرير البريد الإلكتروني أو رقم الهاتف ك query parameter في ال URL مثل: /signup?email=user@example.com وهذه الطريقة غير آمنة وليست أفضل ممارسة برمجية لأن البيانات الحساسة مثل البريد الإلكتروني أو رقم الهاتف) ستظهر في ال URL لذا ما يريده أنه وبدلا من ذلك يريد أن يتم نقل المستخدم إلى صفحة إنشاء الحساب (Signup) بدون تمرير أي بيانات في ال URL ثم في صفحة إنشاء الحساب (Signup) يتم جمع البريد الإلكتروني أو رقم الهاتف مباشرة من المستخدم وبالنسبة للتعامل مع المستخدمين الذين لا يملكون بريدا إلكترونيا أو لا يفضلون إدخال رقم الهاتف فبعض المستخدمين قد لا يملكون بريدا إلكترونيا، أو قد لا يرغبون في إدخال رقم الهاتف وهنا مشكلة لذا يريد المطور حلا لهذه الحالة، بحيث يكون هناك مرونة في التعامل مع هؤلاء المستخدمين.
-
هل قمت بتثبيت إضافة باسم Bitdefender Anti-tracker على متصفحك؟ إن كان كذلك فأرجو تعطيلها وفي حال استمرار المشكلة المرجو منك تعطيل الإضافات وموانع الإعلانات الواحدة تلو الأخرى إلى حين معرفة أيّ إضافة هي المتسببة في هذا الخطأ، يمكنك تجربة العمل من من تصفح آخر لمعرفة إن كانت المشكلة من الفيديو أو من المتصفح، في حال كان من المتصفح أرجو اتباع الإرشادات التي أخبرتك إياها أو يمكنك متابعتها من خلال هذه الإجابة من هنا: بعدها يمكنك التوجه إلى تبويبة "دوراتي" ثم توجه إلى الدورة التي قمت بالاشتراك فيها، ثم إلى المسار الذي أنت تدرس فيه، ثم يمكنك متابعة الدروس بكلّ سلاسة.
-
وعليكم السلام ورحمة الله وبركاته، يتم تقسيم البيانات إلى مجموعات تدريب واختبار وغالبا مجموعة تطوير / تحقق وهو خطوة أساسية في بناء نماذج التعلم الآلي بالنسبة لمجموعة التدريب (Training Set) فهي البيانات التي يستخدمها النموذج للتعلم وهذا النموذج يتعلم الأنماط والقواعد من هذه البيانات وعادة تكون أكبر مجموعة مثلا 70 إلى 80% من البيانات الكلية أما مجموعة التطويرأو التحقق (Validation Set) فتستخدم لضبط معاملات النموذج (Hyperparameters) وتقييم أدائه أثناء التدريب أي أنها تساعد في منع الإفراط في التخصيص (Overfitting) أي عندما يتعلم النموذج التفاصيل الدقيقة للبيانات بدلا من الأنماط العامة وعادة تكون حوالي 10إلى 15% من البيانات في حين مجموعة الاختبار (Test Set) تستخدم لتقييم أداء النموذج النهائي بعد اكتمال التدريب وهذه البيانات لا تستخدم أبدا أثناء التدريب أو الضبط وهي تمثل البيانات الجديدة التي سيواجهها النموذج في العالم الحقيقي وعادة تكون أيضا حوالي 10 إلى 15% من البيانات. فلو كان عندنا 1000 عينة بيانات سيتم تقسيمها إلى: 700 للتدريب (Training) لتعليم النموذج. 150 للتطوير (Validation) لضبط النموذج وتجنب الإفراط في التخصيص. 150 للاختبار (Test) لتقييم الأداء النهائي بشكل عادل.
- 4 اجابة
-
- 1
-
عند استخدام تحليل الانحدار الخطي (OLS) الأفضلية بين استخدام جميع الأعمدة دفعة واحدة أو تقسيمها إلى مجموعات تعتمد على عدد المتغيرات وأهداف التحليل فإذا كان عدد الأعمدة صغيرا مثلا أقل من 10 يفضل استخدام جميع الأعمدة مرة واحدة للحصول على نموذج شامل ودقيق أما إذا كان العدد كبيرا يمكن تقسيم الأعمدة إلى مجموعات لتجنب مشاكل مثل تعدد الخطية (Multicollinearity) أو استهلاك الموارد الزائد مع مراعاة اختبار العلاقات بين المتغيرات باستخدام VIF لضمان دقة النتائج وبشكل عام والبدء باستخدام جميع الأعمدة هو الخيار الأفضل وإذا ظهرت مشكلات يمكن استخدام تقنيات مثل اختيار الميزات أو تقليل الأبعاد لتحسين النموذج لذا من الأفضل تحليل ال 8 أعمدة مرة واحدة لأن هذا يعطينا فهم أفضل للعلاقات بين كل البيانات ولأنّ تقسيم البيانات قد يؤدي لنتائج غير دقيقة.
- 2 اجابة
-
- 1
-
برنامج Google Summer of Code (GSoC) هو مبادرة سنوية تقدمها Google لدعم تطوير البرمجيات مفتوحة المصدر أين يتمثل الهدف الرئيسي للبرنامج في تشجيع الطلاب والمطورين على المشاركة في مشاريع برمجية مفتوحة المصدر من خلال توفير فرصة للعمل مع منظمات داعمة لهذه المشاريع ويعمل البرنامج من خلال سلسلة من الخطوات المنظمة التي تهدف إلى دمج الطلاب والمطورين في مشاريع برمجية مفتوحة المصدر. تبدأ العملية عندما تقوم المنظمات الداعمة للمشاريع مفتوحة المصدر بالتقدم للمشاركة في البرنامج، حيث تقوم Google باختيار المنظمات المؤهلة التي ستشارك في النسخة السنوية بعد ذلك يتقدم الطلاب أو المطورون الراغبون في المشاركة بطلبات لتنفيذ مشاريع محددة تقترحها هذه المنظمات، مع تقديم مقترحات مشاريع مصحوبة بخطة عمل مفصلة. تقوم المنظمات بعد ذلك بمراجعة الطلبات واختيار الطلاب المناسبين للمشاريع المقترحة.
- 2 اجابة
-
- 1
-
لإدارة المنصة من خلال خادمك المنزلي يمكنك استخدام أحد حواسيبك ذات الإمكانيات العالية كسيرفر إداري، قم بتثبيت نظام Linux مثل Ubuntu لتوفير بيئة مستقرة وآمنة. ولتأمين الطاقة أثناء انقطاع الكهرباء يمكنك شراء جهاز UPS لضمان استمرار العمل مؤقتا ومولد كهربائي صغير أو نظام طاقة شمسية لحلول طويلة الأمد على حسب ميزانيتك بطبيعة الحال، ثم تثبيت الأدوات اللازمة مثل Nextcloud لإدارة الملفات وosTicket لإدارة استفسارات العملاء مع جدار ناري مثل UFW لحماية البيانات. ويمكنك استخدام اتصال إنترنت ثابت وسريع وتهيئة السيرفر للوصول المحلي أو عبر الإنترنت باستخدام SSH ولضمان استمرارية العمل وعدم فقدان أية بيانات خذ نسخا احتياطية دورية للبيانات باستخدام وحدات تخزين خارجية وخدمات سحابية مثل Google Drive.
- 5 اجابة
-
- 1
-
text-indent هي خاصية في CSS تستخدم لتحديد المسافة البادئة للسطر الأول من النص في عنصر معين بمعنى آخر أنها تسمح بتحريك السطر الأول من النص إلى الداخل أو الخارج بالنسبة لحافة العنصر والقيم الممكنة لها مثلا بالنسبة للطول الثابت نستعمل: px، em، rem، cm كالتالي: text-indent: 20px; وهذا سيحرك السطر الأول من النص إلى الداخل بمقدار 20 بكسل. وهنا مثلا: p { text-indent: 50px; } هنا سيتم تحريك السطر الأول من كل فقرة إلى الداخل بمقدار 50 بكسل لكن يجب الانتباه إلى أنّ text-indent تؤثر فقط على السطر الأول من النص وليس جميع الأسطر.
-
حاليا لا توجد دورة شاملة لذا لكي تكون مبرمج Full-Stack يجب أن تدرس دورة تطوير الواجهات Frontend وتختار إحدى دورات تطوير الواجهات الخلفية Backend يمكنك تصفح الدورات الموجودة من هنا: إضافة إلى الدورات التي أضيفت حديثا: https://academy.hsoub.com/learn/artificial-intelligence/ https://academy.hsoub.com/learn/game-development/ يمكنك الاطلاع على الإجابات التي طرحت من قبل من هنا:
-
بالنسبة لتعلم البرمجة بلغة بايثون يمكنك مراجعة الإجابة على هذا السؤال فستجد مجموعة من الكتب المفيدة: إضافة إلى ذلك هذه ثلة من الكتب الخاصة بتطوير الواجهات الأمامية (Front-End): كتاب تعلم JavaScript من الأساسيات إلى المفاهيم المتقدمة Eloquent JavaScript" by Marijn Haverbeke "HTML and CSS: Design and Build Websites" by Jon Duckett "CSS Secrets" by Lea Verou "JavaScript: The Good Parts" by Douglas Crockford يمكنك إيجاد كتب أخرى ضمن قسم الكتب الخاص بأكاديمية حسوب من هنا: https://academy.hsoub.com/files/