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

بلال زيادة

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

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

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

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

    30

كل منشورات العضو بلال زيادة

  1. لإضافة صورة كـ favicon (أيقونة الموقع) في صفحة HTML، يمكنك استخدام وسم <link> داخل وسم <head>. الـ favicon عادةً تكون صورة صغيرة (مثل .ico أو .png) تظهر في علامة تبويب المتصفح أو بجوار عنوان الموقع. <head> <link rel="icon" href="path/to/favicon.ico" type="image/x-icon"> </head> وهذا مثال بصيغة png <head> <link rel="icon" href="images/favicon.png" type="image/png"> </head> و هذا مثال لكامل كود صفحة ووضع favicon لها <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <title>موقعي</title> <link rel="icon" href="favicon.ico" type="image/x-icon"> </head> <body> <h1>مرحبًا بكم في موقعي!</h1> </body> </html>
  2. لإضافة تأثير التمرير (scroll animation) بحيث يظهر الأنميشن عند التمرير للأسفل، يمكننا استخدام CSS مع خاصية الـ Intersection Observer API في JavaScript للكشف عن وقت ظهور العناصر في نطاق الرؤية (viewport). <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Amelia Kate</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: #1a1a1a; color: white; font-family: Arial, sans-serif; height: 200vh; /* ارتفاع الصفحة للسماح بالتمرير */ } header { padding: 20px; text-align: center; } header h1 { font-size: 2.5em; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; text-align: center; } .typewriter { font-size: 3em; font-weight: bold; margin-left: 5px; } .typewriter-label { position: relative; display: inline-block; opacity: 0; /* مخفي في البداية */ transform: translateY(20px); /* انتقال من الأسفل */ transition: opacity 0.5s ease, transform 0.5s ease; /* تأثير انتقالي */ } .typewriter-label.visible { opacity: 1; /* يظهر عند التمرير */ transform: translateY(0); } .typewriter-label::after { content: 'web Developer'; animation: read 3s infinite; } @keyframes read { 0%, 20% { content: 'web Developer'; } 50% { content: 'Youtuber'; } 75%, 100% { content: 'Developer'; } } p { margin: 20px 0; line-height: 1.6; opacity: 0; /* مخفي في البداية */ transform: translateY(20px); transition: opacity 0.5s ease, transform 0.5s ease; } p.visible { opacity: 1; transform: translateY(0); } .social-links { margin-top: 20px; } .social-links a { color: white; margin: 0 10px; text-decoration: none; } .btn { display: inline-block; padding: 10px 20px; background-color: #8b008b; color: white; text-decoration: none; border-radius: 5px; margin-top: 20px; opacity: 0; transform: translateY(20px); transition: opacity 0.5s ease, transform 0.5s ease; } .btn.visible { opacity: 1; transform: translateY(0); } </style> </head> <body> <header> <h1>Amelia Kate</h1> </header> <div class="container"> <h2 class="typewriter">Hey I'm Amelia<br>I'm a <span class="typewriter-label"></span></h2> <p>Lorem ipsum dolor sit amet consectetur adipiscing elit. Assumenda asperiores distinctio aperiam perferebdis? Dicta, distinctio esse error odio consectetur dignissimos numquam blanditiis non quos est magni voluptatem, ipsa, nostrum.</p> <div class="social-links"> <a href="#">Instagram</a> <a href="#">Twitter</a> <a href="#">LinkedIn</a> </div> <a href="#" class="btn">Hire me</a> </div> <script> // استخدام Intersection Observer للكشف عن التمرير const elements = document.querySelectorAll('.typewriter-label, p, .btn'); const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); // إضافة كلاس لتشغيل الأنميشن observer.unobserve(entry.target); // إيقاف المراقبة بعد الظهور } }); }, { threshold: 0.1 // يبدأ الأنميشن عندما يظهر 10% من العنصر }); elements.forEach(element => { observer.observe(element); // مراقبة كل عنصر }); </script> </body> </html> عند تحميل الصفحة، تكون العناصر مخفية، عند التمرير للأسفل، ستظهر العناصر (النص والزر) بتأثير انتقالي ثم أنميشن تغيير النص (@keyframes read) سيبدأ تلقائيًا بمجرد أن يصبح typewriter-label مرئيًا.
  3. لديك مشكلة تتعلق بكيفية تعريف واستخدام @keyframes لديك في الكود تعريف @keyframes read @keyframes read { 0%, 20% { content: 'web Developer'; } 50% { content: 'Youtuber'; } 75%, 100% { content: 'Developer'; } } ثم تستخدمه في عنصر typewriter-label مع الخاصية: .typewriter-label { animation: read 0.7s infinite; } المشكلة هنا هي أن الخاصية content لا يمكن استخدامها مباشرة مع @keyframes لتغيير النص بهذه الطريقة على عناصر عادية (مثل <span> أو عناصر أخرى). الخاصية content تُستخدم عادةً مع العناصر الزائفة (::before أو ::after) وليس مباشرة على العنصر نفسه. بالإضافة إلى ذلك، لا يمكن لـ @keyframes تغيير نصوص العنصر بهذه الطريقة مباشرة. استخدام ::after مع content: قم بتعديل الكود لاستخدام عنصر زائف مثل ::after لإضافة النص وتغييره باستخدام @keyframes. .typewriter-label { position: relative; display: inline-block; } .typewriter-label::after { content: 'web Developer'; animation: read 3s infinite; } @keyframes read { 0%, 20% { content: 'web Developer'; } 50% { content: 'Youtuber'; } 75%, 100% { content: 'Developer'; } } ثم تأكد من أن typewriter-label هو عنصر فارغ أو لا يحتوي على نص مباشر إذا كنت تستخدم ::after. <span class="typewriter-label"></span>
  4. يجب تثبيت wampserver مرة أخرى بالكامل، حيث يجب إزالته و من ثم إعادة تثبيته بالكامل و أيضا لاحظ يجب تحميله من موقعه الرسمي من هنا
  5. استخدام نماذج الانحدار العادية (مثل Linear Regression أو Polynomial Regression) لتوقع القيم المستقبلية في البيانات الزمنية ليس دائمًا الأسلوب الأمثل علميًا، خاصة إذا كانت البيانات الزمنية تحتوي على خصائص معقدة مثل: الاتجاهات (Trends): التغيرات طويلة المدى. الموسمية (Seasonality): الأنماط المتكررة بشكل دوري. الارتباط الذاتي (Autocorrelation): تأثير القيم السابقة على القيم الحالية. الضوضاء العشوائية (Noise). في معظم الحالات، نماذج السلاسل الزمنية مثل ARIMA، SARIMA، AutoTS، أو حتى نماذج تعلم الآلة المخصصة للسلاسل الزمنية (مثل Prophet أو LSTM) تكون أكثر ملاءمة لتوقع البيانات الزمنية و السبب في ذلك هذه النماذج مصممة للتعامل مع الارتباط الذاتي، الموسمية، والاتجاهات. تأخذ في الاعتبار التغيرات عبر الزمن بدلاً من افتراض علاقة ثابتة. تكون أكثر دقة في التعامل مع التوقعات خارج نطاق البيانات (Extrapolation) لأنها تستند إلى الأنماط الزمنية.
  6. لجعل عناصر الموقع تظهر بشكل سلس عند دخول المستخدم، كما في الصورة أو مثل موقع GitHub، يمكنك استخدام الـ CSS Animations أو الـ JavaScript مع مكتبات مثل GSAP أو ببساطة باستخدام خصائص الـ CSS transitions سأشرح لك طريقة بسيطة باستخدام CSS، يمكنك إضافة تأثير الظهور التدريجي (fade-in) أو الحركة (slide-in) باستخدام opacity و transform. <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>تأثير سلس</title> <style> body { background-color: #1a1a1a; color: white; font-family: Arial, sans-serif; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; } /* تحديد العنصر الذي سيظهر بتأثير */ .element { opacity: 0; /* يبدأ شفافًا */ transform: translateY(20px); /* يبدأ بتحريكه للأسفل قليلاً */ animation: fadeIn 1s ease-in-out forwards; /* اسم الرسم المتحرك */ } /* تعريف الرسم المتحرك */ @keyframes fadeIn { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } /* إضافة تأخير لكل عنصر */ .element:nth-child(1) { animation-delay: 0.2s; } .element:nth-child(2) { animation-delay: 0.4s; } .element:nth-child(3) { animation-delay: 0.6s; } </style> </head> <body> <div class="element"> <h1>مرحبًا</h1> </div> <div class="element"> <p>أنا مطور ويب</p> </div> <div class="element"> <button>تواصلوا معي</button> </div> </body> </html> أو يمكنك تحميل مكتبة animation css و استخدام classes التي توفرها. مما يضفي على العناصر تأثيرات سلسة و ناعمة.
  7. هل قمت بتوجيه الدومين الى vps الخاص بك يجب اضافة record جديد من نوع A إلى العنوان و هو ip الخاص ب vps الخاص بك
  8. هل تأكدت من الصلاحيات للمشروع ، حيث تأكد بأنه هناك صلاحيات لصفحات index.php مثل صلاحيات 755 أو 777 و صلاحيات المجلدات للمشروع، واخبرني بالنتيجة لو سمحت
  9. الاختراق هو محاولة الوصول إلى جهاز أو نظام أو شبكة دون إذن، عن طريق استغلال نقاط ضعف في النظام. تخيل أن الجهاز أو الشبكة مثل منزل مغلق بأقفال، والمخترق يبحث عن طريقة لفتح الباب أو النافذة دون مفتاح. جمع المعلومات (الاستطلاع) المخترق يبدأ بجمع أكبر قدر ممكن من المعلومات عن الهدف (الجهاز أو الشبكة). على سبيل المثال، إذا كان الهدف آيفون، قد يحاول معرفة إصدار نظام التشغيل (iOS)، أو إذا كانت شبكة، قد يحاول معرفة نوع الأجهزة المتصلة أو كلمات السر المحتملة. يستخدم طرقًا مثل مراقبة الشبكة، البحث عن معلومات علنية (مثل حسابات الضحية على الإنترنت)، أو حتى التواصل مع الضحية (مثل إرسال رسائل مزيفة). خلف الكواليس هنا المخترق يشبه محققًا يجمع أدلة. لا يوجد اختراق فعلي بعد، لكنه يرسم خريطة للهدف. المخترق يبحث عن "ثغرات" أو عيوب في النظام. الثغرة قد تكون خطأ في برمجة نظام التشغيل (مثل iOS)، أو إعدادات خاطئة في الشبكة (مثل كلمة سر ضعيفة)، أو حتى سلوك المستخدم (مثل النقر على رابط خطير). مثال على الآيفون: قد يكتشف المخترق أن إصدار iOS قديم يحتوي على ثغرة تسمح بتشغيل برنامج ضار. في الشبكة، قد يجد أن جهاز الراوتر يستخدم كلمة سر افتراضية مثل "admin". خلف الكواليس: النظام أو الجهاز مصمم ليكون آمنًا، لكن أحيانًا يكون هناك "شق" صغير في التصميم أو الإعدادات يمكن استغلاله. الاختراق يشبه محاولة فتح قفل معقد. المخترق يجمع المعلومات، يبحث عن ثغرة (مثل مفتاح ضعيف أو نافذة مفتوحة)، يستغلها للدخول، يأخذ ما يريد، ثم يحاول إخفاء أثره. الأنظمة مثل الآيفون أو الشبكات مصممة لتكون آمنة، لكن الأخطاء البشرية أو التقنية هي ما يجعل الاختراق ممكنًا.
  10. نعم، محرر الأكواد NetBeans يمكن أن يكون له علاقة بتطوير تطبيقات الأندرويد، ولكن هذه العلاقة ليست مباشرة كما هو الحال مع بيئات تطوير مخصصة مثل Android Studio. دعني أوضح النقاط الرئيسية: NetBeans ليس بيئة تطوير مدمجة (IDE) مخصصة لتطوير الأندرويد، لكنه يدعم تطوير تطبيقات الجافا (Java)، وهي اللغة الأساسية التي كانت تُستخدم في تطوير تطبيقات الأندرويد قبل انتشار Kotlin. باستخدام إضافات معينة (مثل NBAndroid)، يمكن تكوين NetBeans لدعم تطوير تطبيقات الأندرويد. إضافة NBAndroid: هذه إضافة تتيح دعمًا لبيئة تطوير الأندرويد في NetBeans، مثل إنشاء مشاريع الأندرويد، تحرير ملفات XML، وتشغيل التطبيقات على محاكي أو جهاز فعلي. ومع ذلك، هذه الإضافة لم تُحدث بشكل نشط في السنوات الأخيرة، مما يعني أنها قد لا تدعم أحدث إصدارات Android SDK أو أدوات التطوير. بالمقارنة مع Android Studio (البيئة الرسمية لتطوير الأندرويد)، فإن NetBeans أقل سهولة وكفاءة لعدة أسباب: Android Studio مصمم خصيصًا للأندرويد، مع أدوات مدمجة مثل محرر واجهة المستخدم الرسومية، محاكي الأندرويد، ودعم Gradle (نظام البناء القياسي للأندرويد). NetBeans يتطلب إعدادات يدوية إضافية لتحقيق نفس الوظائف. إضافة NBAndroid قديمة نسبيًا، وقد تواجه مشاكل مع الإصدارات الحديثة من Android SDK أو NetBeans. NetBeans قد يكون مناسبًا للمطورين الذين يفضلون واجهته أو يعملون على مشاريع Java أخرى، لكنه ليس مثاليًا لتطوير تطبيقات الأندرويد بسبب نقص الأدوات المخصصة.
  11. انصحك باستخدام PHP لأن لديها مميزات: PHP لغة بسيطة نسبيًا للمبتدئين، خاصة إذا كنت تعرف أساسيات البرمجة من خلال دورة واجهات المستخدم. يمكنك تعلم الأساسيات (مثل التعامل مع قواعد البيانات) بسرعة. PHP تُستخدم على نطاق واسع في تطوير الويب (مثل WordPress وMoodle)، مما يعني أن هناك الكثير من المصادر التعليمية (دروس، فيديوهات، أمثلة جاهزة) باللغة العربية والإنجليزية. PHP تتكامل بسهولة مع قواعد بيانات مثل MySQL، وهي الأكثر شيوعًا لمشاريع الويب. يمكنك استخدام أدوات مثل PDO أو MySQLi لربط قاعدة البيانات بسرعة. إذا كنت قادرًا على استثمار بعض الوقت الإضافي، إطار العمل Laravel (المبني على PHP) يسهّل تطوير الـ Back End بشكل كبير. يحتوي على أدوات جاهزة لإدارة قواعد البيانات، المستخدمين، وتسجيل الدخول، مما يوفر عليك الوقت. يمكنك إنشاء موقع ويب وظيفي باستخدام PHP في وقت قصير، خاصة إذا ركزت على الميزات الأساسية لمشروعك (مثل تسجيل الدخول، إدارة المستخدمين، عرض الدروس).
  12. الحقول المستخدمة في إدخال تقارير الكفاية من خلال تحليل الكود، يمكننا استخراج الحقول المطلوبة لإدخال تقرير الكفاية في النظام. هذه الحقول تُحدد في عمليتي الإنشاء (store) والتعديل (update)، وتظهر في قواعد التحقق من الصحة (validation) وفي عملية حفظ البيانات. الحقول الأساسية (الإلزامية): يتم التحقق من هذه الحقول في قواعد التحقق (validate)، وهي مطلوبة دائمًا عند إنشاء أو تعديل تقرير الكفاية: text_grade (تقرير الكفاية اللفظي): الوصف: حقل نصي يحتوي على تقييم لفظي لأداء الموظف (مثل "ممتاز"، "جيد"، إلخ). grade (درجة تقرير الكفاية): الوصف: درجة عددية تُعبر عن تقييم أداء الموظف (مثل 90، 85، إلخ). year (سنة تقرير الكفاية): الوصف: السنة التي ينطبق عليها التقرير (مثل 2023، 2024). رسائل الخطأ: يجب إدخال سنة تقرير الكفاية. يجب إدخال سنة تقرير الكفاية بالأرقام. التقرير لهذا الموظف في هذه السنة موجود بالفعل. ملخص الحقول text_grade يُستخدم لوصف الأداء بشكل عام. grade يُمثل تقييمًا كميًا للأداء. yearسنة التقرير يجب أن تكون فريدة لكل موظف. grade11, grade12, grade13 درجات/تقييم يُستخدم لتقييم معيار معين. grade21, grade22, grade23درجات/تقييم لمعيار آخر. grade31, grade32, grade33درجات/تقييم لمعيار آخر. grade41, grade42, grade43درجات/تقييم لمعيار آخر. filesملفات مرفقة يُخزن في مجلد FEEDBACK. emp_idمعرف الموظف يتم تعيينه تلقائيًا بناءً على الموظف المحدد. user_idمعرف المستخدم الذي أضاف التقرير يتم تعيينه تلقائيًا بناءً على المستخدم المسجل.
  13. لتصميم تطبيق باستخدام Android Studio مع دمج Firebase، GPS، معلومات الجهاز، AI Model (باستخدام TensorFlow)، وإضافة AI Bot، مع التركيز على تحليل الأخطاء، تتبعها، وإعلام المستخدمين، إليك التوجيهات والاقتراحات لاختيار خدمات Firebase المناسبة وأدوات التكامل: خدمات Firebase المناسبة Firebase يوفر مجموعة من الخدمات التي تدعم تتبع الأخطاء، تحليل الأداء، إشعارات المستخدمين، وتكامل الذكاء الاصطناعي. الخدمات الموصى بها تشمل: Google Analytics for Firebase (لتحليل الأداء والتتبع) جمع بيانات استخدام التطبيق وسلوك المستخدمين لتحليل الأداء وتتبع الأحداث. تسجيل الأحداث المخصصة (مثل أخطاء GPS أو فشل تحميل نموذج الذكاء الاصطناعي). تتبع أداء التطبيق عبر الأجهزة المختلفة. تحليل بيانات المستخدم لتحسين تجربة التطبيق. أضف مكتبة Analytics في ملف build.gradle: implementation 'com.google.firebase:firebase-analytics:22.1.0' قم بتسجيل الأحداث باستخدام logEvent()، مثال: import com.google.firebase.analytics.FirebaseAnalytics; FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(context); Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "error_gps"); bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "error"); analytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM, bundle); Firebase Crashlytics (لتتبع وتحليل الأخطاء) تتبع الأعطال (crashes) والأخطاء غير المميتة (non-fatal errors) في التطبيق. تسجيل الأعطال المتعلقة بـ GPS، معلومات الجهاز، أو نموذج TensorFlow. تسجيل أخطاء مخصصة (مثل فشل الاتصال بالـ AI Bot). عرض تقارير مفصلة في وحدة تحكم Firebase مع معلومات مثل نوع الجهاز ونظام التشغيل. أضف مكتبة Crashlytics في build.gradle: implementation 'com.google.firebase:firebase-crashlytics:19.1.0' قم بتسجيل الأخطاء غير المميتة، مثال: import com.google.firebase.crashlytics.FirebaseCrashlytics; FirebaseCrashlytics.getInstance().recordException(new Exception("GPS connection failed")); وهذه بعض الخدمات المقدمة من firebase يمكنك البحث أكثر عن باقي الخدمات، ستجد المعلومات الكثيرة عنها.
  14. في لغة JavaScript، العلامتان التنصيص الفردية (') والمزدوجة (") تُستخدمان لتحديد النصوص (strings)، وهما متكافئتان من حيث الوظيفة الأساسية، أي أنه لا يوجد فرق جوهري في كيفية تعامل JavaScript معهما. ومع ذلك، هناك بعض الفروقات العملية والاستخدامات التي يجب مراعاتها: الاستخدام الأساسي: كلتا العلامتين تُستخدمان لإنشاء نصوص. على سبيل المثال: let singleQuote = 'Hello'; let doubleQuote = "World"; كلا المتغيرين singleQuote وdoubleQuote يحتويان على نصوص، ولا يوجد فرق في طريقة تخزينهما أو معالجتهما. تضمين العلامات داخل النصوص: إذا كنت تريد استخدام إحدى العلامتين داخل النص، فإن استخدام العلامة الأخرى يجعل الكود أكثر وضوحًا ويجنبك الحاجة إلى الهروب (escaping) باستخدام الشرطة العكسية (\).مثال باستخدام العلامة الفردية: let text = 'He said "Hello"'; // لا حاجة للهروب التوافق مع JSON: في JSON (وهو تنسيق بيانات مستخدم بكثرة مع JavaScript)، يجب استخدام العلامات المزدوجة (") للنصوص. العلامات الفردية غير مقبولة في JSON.مثال JSON صالح: {"name": "Ali"} مثال JSON غير صالح: {'name': 'Ali'} // خطأ
  15. يجب حفظ الملف و يمكنك الضغط على ايقونة ... مثل الصورة المرفقة ستجد ايقونة run
  16. LAMP Stack (Linux, Apache, MySQL, PHP) هذا هو الخيار التقليدي والأكثر شيوعًا على لينكس. يمكنك تثبيت الخادم (Apache أو Nginx)، PHP، وMySQL يدويًا أو باستخدام حزم جاهزة. sudo apt update sudo apt install apache2 php libapache2-mod-php mysql-server php-mysql بعد التثبيت، يمكنك إدارة الخدمات باستخدام: sudo systemctl start apache2 sudo systemctl start mysql مرن ويمنحك تحكمًا كاملاً بإعدادات الخادم و متوافق مع معظم مشاريع PHP و أيضا مجاني ومفتوح المصدر. Docker Docker هو أداة حديثة تتيح إنشاء بيئات تطوير معزولة باستخدام الحاويات. يمكنك إعداد حاويات لـ PHP، MySQL، وNginx/Apache بسهولة، قم بتثبيت Docker: sudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker استخدم Docker Compose لإعداد بيئة مشابهة لـ Laragon. مثال لملف docker-compose.yml version: '3' services: web: image: php:7.4-apache ports: - "80:80" volumes: - ./www:/var/www/html db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: root volumes: - db_data:/var/lib/mysql volumes: db_data: ثم شغّل الحاويات docker-compose up -d
  17. data.head() يعرض أول 5 صفوف (افتراضيًا) من DataFrame في بيئة تفاعلية مثل Jupyter Notebook أو IPython، النتيجة تظهر بتنسيق جميل (مثل جدول HTML في Jupyter) إذا كنت في بيئة تدعم ذلك و لا يطبع النتيجة كنص خام، بل يعتمد على واجهة العرض في البيئة، إذا كنت في بيئة لا تدعم العرض التفاعلي (مثل سكربت Python عادي)، قد لا ترى النتيجة إلا إذا استخدمت print(data.head()) يقوم بطباعة أول 5 صفوف من DataFrame كنص خام (plain text) بغض النظر عن البيئة، النتيجة تكون أقل تنسيقًا مقارنة بالعرض التفاعلي، حيث تظهر بتنسيق نصي بسيط و مفيد في السكربتات العادية أو عندما تريد التأكد من طباعة النتيجة في أي بيئة.
  18. إذا واجهتك أي مشكلة يمكن في صندوق التعليقات أسفل الدروس من طرح أي مشكلة تواجهك و سوف يساعدك المدربين الموجودين في الأكاديمية على حل المشكلة لا تترد في طرح أي مشكلة تواجهك، أيضا يمكنك حل الواجبات المطلوبة منك في نهاية كل درس.
  19. لا داعي للحزن، تعلم البرمجة ممكن جدًا باستخدام هاتف أندرويد حديث، وهناك العديد من الطرق لتبدأ بدون الحاجة إلى كمبيوتر أو لاب توب، من هاتفك فقط هناك تطبيقات برمجية على الهاتف تساعد المبتدئين في البرمجة منها: Grasshopper: تطبيق مجاني من Google لتعلم JavaScript بطريقة ممتعة وسهلة. SoloLearn: يدعم لغات مثل Python، Java، C++، ويحتوي على دروس تفاعلية وتمارين. Mimo: يقدم دروسًا قصيرة في Python، HTML، CSS، وغيرها. Programming Hub: يحتوي على دروس في لغات متعددة مع أمثلة عملية. Enki: لتعليم مفاهيم البرمجة خطوة بخطوة.
  20. مهندس البرمجيات قد يتخصص في مجال محدد مثل تطوير الويب (Web Development) أو تطوير تطبيقات الجوال (Mobile Development)، أو قد يكون عامًا (Generalist) يعمل في مجالات متعددة. التخصص: كثيرون يختارون التخصص في مجال معين مثل الويب (Frontend/Backend/Full-Stack) أو الجوال (iOS/Android) لأن كل مجال له أدواته، لغاته، وتحدياته الخاصة. التخصص يسمح بالتركيز وإتقان مهارات محددة. الإتقان الشامل: بعض المهندسين، خاصة في الشركات الصغيرة أو المشاريع الشخصية، يتعلمون مهارات متنوعة للعمل في مجالات متعددة. لكن إتقان كل شيء نادر بسبب عمق كل مجال.
  21. المشكلة في الكود تكمن في استخدام re.findall بشكل غير صحيح. أنت تمرر النص الخاص بالتعبير النمطي (re_crypto_names) كمدخل لـ re.findall بدلاً من تمرير محتوى HTML الخاص بالجدول (table_crypto_soup). هذا يؤدي إلى أن re.findall يبحث في النص الخام للتعبير النمطي نفسه، وليس في محتوى الصفحة، وبالتالي يُرجع قائمة فارغة []. crypto_names = re.findall(re_crypto_names, str(re_crypto_names)) re_crypto_names هو النص الذي يمثل التعبير النمطي (regex pattern). str(re_crypto_names) يحول التعبير النمطي إلى سلسلة نصية، وهذا ليس ما تريد البحث فيه. يجب أن تبحث في محتوى الجدول (table_crypto_soup). وتصحيح كامل الكود import requests from bs4 import BeautifulSoup import re def bring_data(): url = 'https://coinmarketcap.com/' header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'} web_request = requests.get(url, headers=header) web_soup = BeautifulSoup(web_request.content, 'html.parser') table_crypto_soup = web_soup.find('table', class_='sc-db1da501-3 ccGPRR cmc-table') # التأكد من أن الجدول تم العثور عليه if table_crypto_soup: # البحث في محتوى الجدول باستخدام التعبير النمطي re_crypto_names = r'<p class="sc-65e7f566-0 iPbTJf coin-item-name">([\w\s]+)</p>' crypto_names = re.findall(re_crypto_names, str(table_crypto_soup)) print(crypto_names) else: print("لم يتم العثور على الجدول") bring_data()
  22. لاحظ، لا تفرق التدوين على دفتر أو وورد أو اي شيء اخر، المهم تكون فاهم ما تتعلمه و تطبقه جيداً و أيضا كثرة التدوين و الملاحظات تعمل على التشتيت بنظري، ما يهم هو التطبيق والممارسة الكثيفة للكود لتتعود على كتابة الكود، و أيضا يجب عليك عند البدء بمهمة ما أو مشروع دراسته جيدًا مرة و مرتين و أكثر حتى تغهم متطلباته كلها و يمكنك رسم flow للخطوات بشكل كامل و تدوين الاجزاء المهمة كاملاً لا تعقيد الأمور و تدوين كل شيء و تفاصيلها.
  23. السيرة الذاتية تحتوي على تكرار لبعض المعلومات، مثل معلومات الاتصال التي تظهر في كلتا الصفحتين. يُفضل توحيدها في قسم واحد في الصفحة الأولى. قسم "Professional Summary" عام بعض الشيء ولا يبرز إنجازاتك المحددة. يمكن تحسينه ليكون أكثر تركيزًا على ما يميزك (مثل إنجازات المشاريع أو شهادات معينة). قسم "Skills" مختصر ولكنه لا يوضح مستوى الإتقان أو الخبرة العملية في كل مهارة. يمكن إضافة تفاصيل مثل "3 سنوات من الخبرة في ASP.NET Core" أو "تطوير 5 مشاريع باستخدام JavaScript". لا يوجد ذكر لمدة زمنية أو تواريخ للمشاريع، مما قد يجعل من الصعب على أصحاب العمل تقييم مدى حداثة خبرتك. السيرة الذاتية لا تذكر أي خبرة عملية مدفوعة أو تدريب مهني (Internships). بالنسبة لخريج حديث، هذا أمر شائع، ولكن الشركات قد تتوقع رؤية تدريب أو عمل حر (Freelance) لتعزيز المصداقية. المشاريع المذكورة جيدة، لكنها تفتقر إلى تفاصيل كمية (مثل عدد المستخدمين، حجم قاعدة البيانات، أو تأثير المشروع).
  24. أبدأ بأي دورة تريدها مثلا إذا أردت تعلم البايثون يمكنك البدء بدورة الذكاء الاصطناعي و البدء في اقسامها مباشرة
×
×
  • أضف...