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

Mustafa Suleiman

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

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

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

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

    365

كل منشورات العضو Mustafa Suleiman

  1. بشكل بسيط، تخيل أن لديك مجموعة من الأوراق مكتوب عليها أرقام عشوائية، وتريد ترتيبها تصاعديًا، فدالة sort() في جافاسكريبت تساعدك على فعل ذلك مع عناصر المصفوفة. حيث تستقبل الدالة متغيرًا واحدًا اختياريًا وهو دالة مقارنة comparison function، وتلك الدالة تخبر sort() كيف تقارن بين عنصرين في المصفوفة لتحديد ترتيبهما. بخصوص الكود، elements_array اسم المصفوفة التي تريد ترتيبها. sort((a, b) => a - b): sort() هي الدالة التي تقوم بترتيب عناصر المصفوفة في جافاسكريبت. (a, b) => a - b دالة المقارنة التي تخبر sort() كيف تقارن بين عنصرين، ويحدث بها ما يلي: a و b: هما معاملان parameters يمثلان أي عنصرين يتم مقارنتهما في المصفوفة. a - b تلك هي عملية المقارنة: لو كانت نتيجة a - b سالبة، فإن a يوضع قبل b. في حال نتيجة a - b موجبة، فإن a يوضع بعد b. في حال نتيجة a - b صفر، فإن ترتيب a و b يبقى كما هو. بالتالي الكود يرتب عناصر المصفوفة elements_array تصاعديًا باستخدام دالة المقارنة (a, b) => a - b التي تقارن بين كل عنصرين في المصفوفة وتعيد قيمة سالبة أو موجبة أو صفر لتحديد ترتيبهما. Array.prototype.sort()‎
  2. يمكنك تفقد كل التقنيات التي استخدمناها في مستودع المشاريع لكل مسار، تفقد درس المدخل أو المقدمة ثم تفقد ملف package.json في المستودع
  3. في مشروع المتجر الإلكتروني استخدمنا HTML, CSS, JS وللتنسيقات استخدمنا مكتبة bootstrap و Sass. أيضًا مكتبة fortawesome وpopperjs. ولتحزيم المشروع وتجميع الملفات وتجهيزه للنشر استخدمنا webpack. بالنسبة لمشروع تطوير موقع إخباري، فاستخدمنا نفس الأمر لكن بدون webpack، وأيضًا قمنا به بإنشاء API لعرض البيانات وذلك بواسطة prism لمحاكاة وجود واجهة خلفية، حيث تستخدم ملف بيانات كقاعدة بيانات.
  4. هل لديك حسابات كثيرة مسجلة بنفس الرقم؟ إن كان كذلك فعليك استخدام رقم آخر، أو الإنتظار 24 ساعة ثم المحاولة بنفس الرقم.
  5. طبيعة المشكلة تصنيف ثنائية binary classification مع بيانات غير متوازنة، لذا عليك التعامل مع عدم توازن البيانات باستخدام SMOTE وهي من أفضل تقنيات معالجة عدم توازن البيانات، حيث تقوم بإنشاء عينات جديدة من فئة الأقلية بطريقة ذكية. from imblearn.over_sampling import SMOTE smote = SMOTE(random_state=42) X_train, y_train = smote.fit_resample(X_train, y_train) حاول تجربة أساليب اختيار ميزات أخرى بالإضافة إلى Random Forest، مثل Recursive Feature Elimination (RFE) أو Feature Importance from Linear Models لاستخدام معاملات النماذج الخطية (مثل Logistic Regression) لتحديد أهمية الميزات. إليك مثال RFE مع التحقق المتقاطع cross-validation لاختيار أفضل عدد من الميزات و تجنب فرط التخصيص: from sklearn.feature_selection import RFECV estimator = LogisticRegression(solver='liblinear') selector = RFECV(estimator, cv=5, scoring='accuracy') # استخدام 5 طيات للتحقق المتقاطع selector = selector.fit(X, y) selected_features = X.columns[selector.support_] X = X[selected_features] ثم جرب بنية أعمق قليلاً مع طبقات Dropout لتجنب فرط التخصيص. model = Sequential() model.add(Dense(128, input_dim=X_train.shape[1], activation='relu', kernel_regularizer='l2')) model.add(Dropout(0.4)) model.add(Dense(64, activation='relu')) model.add(Dropout(0.3)) model.add(Dense(32, activation='relu')) model.add(Dense(1, activation='sigmoid')) ثم تحسين عملية التدريب ويُعد مُحسِّن Adam خيارًا جيدًا لمعظم مشاكل الشبكات العصبية، أيضًا استخدم Early Stopping لإيقاف التدريب عندما يتوقف أداء النموذج عن التحسن على بيانات التحقق. from tensorflow.keras.callbacks import EarlyStopping early_stopping = EarlyStopping(patience=10) # إيقاف التدريب بعد 10 حقب بدون تحسن history = model.fit(..., callbacks=[early_stopping]) ولا تعتمد على الـ accuracy فقط، بل استخدم مُقاييس أخرى مثل precision, recall, F1-score, و AUC لتقييم أداء النموذج بشكل شامل، خاصةً مع البيانات غير المتوازنة.
  6. عليك إدخال رقم هاتف سعودي بدون كود الدولة وسيتم إرسال رسالة للهاتف بها رقم للتأكيد عليك إدخاله لتأكيد الرقم وتوثيق حسابك.
  7. الأفضل الماك بوك بالطبع من حيث البرمجة والتصميم، الجيد في نظام الويندوز هو الحرية وعدم التقيد والتكلفة الأقل بمراحل. فعليك الإختيار بما يناسبك، فبتكلفة 8000 ريال تستطيعي إنشاء SETUP كامل مكون من لابتوب بنظام ويندوز بمواصفات مرتفعة وشاشة وماوس ومكتب. إن كانت الميزانية هي الأهم حاليًا فلا مشكلة في تأجيل شراء الماك بوك.
  8. بتلك الميزانية لما لا تقومين بشراء Apple MacBook Pro 14 M3 Pro ؟ يمكنك شراء جهاز جديد بشريحة M3 ورامات 18 جيجابايت ومساحة تخزين 512، بتكلفة 8000 ريال. والشاشة الخاصة بذلك اللاب توب هي Retina XDR بدقة 4k وبمقاس 14 بوصة. يمكنك خفض الميزانية من خلال شراء لابتوب مستعمل من شخص أو refurbished رسمي من أبل أي لابتوب تم إصلاحه من الشركة نفسها، ستجدي ذلك هنا: https://www.apple.com/shop/refurbished/mac/mac-pro-macbook-pro ستحصلين على لابتوب جديد وبمواصفات أعلى وتكلفة أقل. وفي رأي ستحتاجين إلى شاشة خارجية وماوس لإنتاجية أفضل والحفاظ على عينيك أيضًا، فشاشة بمقاس 27 ودقة 2k أو 4K ستكون جيدة لك حسب الميزانية فكلاهما مناسب. والشاشة يجب أن تكون من نوع IPS من أجل دقة ألوان وزوايا رؤية أفضل، مع نسبة sRGB مرتفعة الأفضل 100%، الخيارات التالية جيدة: ASUS 31.5” 4K HDR Eye Care Monitor (VP327Q) – UHD (3840 x 2160) BenQ PD2705Q في حال تريدين لابتوب بنظام ويندوز أخبريني.
  9. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  10. الخيارات كثيرة، علينا تقليصها، أرجو الإجابة على التالي: ما هي الاستخدامات التي سيتم شراء لابتوب من أجلها؟ ذكرتي أنها برمجة وتصميم، فما هو التصميم المقصود؟ لكي يتم تحديد الشاشة المناسبة للتصميم والمريحة لعينك أيضًا بسبب الحساسية. ما هي الميزانية المتاحة؟
  11. إذن المكتبة غير مثبتة ستحتاج إلى تنفيذ الأمر: pip install wrapt
  12. أرجو التعليق أسفل فيديو الخاتمة مثلاً، في نهاية الصفحة ستجد صندوق تعليقات كما هنا تستطيع وضع تعليقك به، وفي قسم أسئلة البرمجة نطرح الأسئلة العامة الغير متعلقة بمحتوى الدروس.
  13. ذلك ممكن بالطبع، لكن أرجو السؤال أسفل فيديو الدرس الذي تريد تمارين عليه وسيتم توفيرها لك، أو اذكر أنك تريد تمارين على المسار بالكامل مثلاً.
  14. لن يظهر خطأ إلا في حال لم تقم بتثبيت المكتبة، حيث لن يتم التمكن من الاستيراد بشكل صحيح فالمكتبة غير مثبتة، في حال قمت بتثبيتها فربما قمت بذلك في بيئة إفتراضية فعليك تفعليها ليعمل الاستيراد.
  15. هناك مشكلة بالإتصال بالخادم عليك تفقد ذلك حيث لا يتم الإتصال، تأكد من العنوان أيضًا. عليك إرفاق مجلد المشروع إن لم تتمكن من تفقد المشكلة من قبل الخادم
  16. لديك واجهة رسومية في الاستضافة تستطيع من خلالها استيراد قاعدة البيانات بدون الحاجة إلى SSH، أي توجه إلى أداة إدارة قاعدة البيانات مثل phpMyAdmin وابحث عن خيار Import ثم اختر ملف .sql من على حاسوبك. في كلتا الحالتين ستحتاج إلى رفع قاعدة البيانات إلى الاستضافة، فمن خلال SSH ستحتاج إلى رفعها إلى مجلد public_html من أجل أن تتمكن من استيرادها من خلال الأمر التالي في مسار مجلد public_html: mysql -u database_username -p database_name < file.sql عليك استبدال database_username باسم المستخدم لقاعدة البيانات في الاستضافة وأيضًا استبدال database_name باسم قاعدة البيانات للملف والذي يجب أن يكون بنفس الاسم لقاعدة بيانات موجودة بالفعل على الاستضافة أي قمت بإنشائها أنت.
  17. ستحتاج إلى تعلم Laravel وستجد أن الأمر بسيط بعد ذلك، ويوجد لوحات تحكم Dashboard جاهزة لإطار لارافل، لو قمت بذلك من خلال PHP فستستغرق الكثير من الوقت وأيضًا الكود لن يكون منظم مثل إطار لارافل. ستجد على اليوتيوب دورات خاصة بلارافل، وأيضًا في الأكاديمية هنا يوجد دورة PHP بها إطار لارافل.
  18. ما الذي يظهر لك عند تنفيذ الأوامر التالية: node --version npm --version وما هي الاستضافة التي تعمل عليها؟
  19. عليك أولاً إنشاء نموذج البحث: <form action="search.php" method="get"> <input type="text" name="q" placeholder="Search..."> <button type="submit">Search</button> </form> ثم إنشاء ملف search.php لمعالجة تلك العملية كالتالي في جدولي users و products مثلاً: <?php $db_host = ''; $db_username = ''; $db_password = ''; $db_name = ''; //عليك الإتصال بقاعدة البيانات من خلال البيانات السابقة $conn = new mysqli($db_host, $db_username, $db_password, $db_name); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $q = $_GET['q']; $sql = "SELECT * FROM users WHERE name LIKE '%$q%' OR email LIKE '%$q%'"; $sql .= " UNION ALL "; $sql .= "SELECT p.* FROM products p INNER JOIN users u ON p.user_id = u.id WHERE p.name LIKE '%$q%' OR p.description LIKE '%$q%'"; $result = $conn->query($sql); while($row = $result->fetch_assoc()) { if ($row['table_name'] == 'users') { echo "User: " . $row['name'] . " (" . $row['email'] . ")" . "<br>"; } else { echo "Product: " . $row['name'] . " - " . $row['description'] . "<br>"; } } } else { echo "No results found"; } $conn->close(); ?> نحصل على قيمة حقل البحث من خلال $_GET['q'] ثم استخدامها للبحث في الجداول، ولاحظ أن q هي اسم الحقل الخاص بالبحث لأننا سمينا الحقل q في سمة name في كود HTML.
  20. ستحتاجين إلى أداة ioncube_decoder لعكس عملية التشفير، ولكن على مسؤوليتك قومي بتجربة الأدوات التالية: https://github.com/ruzgarsel/ioncube_decoder https://github.com/tahaghafuri/ioncube_decoder
  21. نقطة الاستعادة أو restore point لا تقوم باستعادة الملفات الشخصية المحذوفة، بل ملفات النظام نفسه. أي سيتعين عليك استخدام برنامج لاستعادة الملفات وتتضاءل احتمالية الاستعادة في حال تم إضافة بيانات جديدة في نفس القرص بعد الحذف، حيث يتم كتابة تلك البيانات على البيانات التي تم حذفها أي تستبدلها. برنامج Recuva لا بأس به.
  22. بخصوص الحملة يجب الإهتمام بمحتواها حتى لا يتم الإبلاغ عنها على أنها Spam، أيضًا معظم مُزودي خدمة الاستضافة يضعون حدودًا صارمة لعدد رسائل البريد الإلكتروني التي يمكنك إرسالها في الساعة/اليوم لمنع إساءة استخدام الخادم. وغالبًا سيؤدي إرسال عدد كبير من رسائل البريد الإلكتروني من خادم الويب لديك إلى إدراجه في القائمة السوداء وتمييزه كـ Spam، مما يؤثر سلبًا على إمكانية وصول رسائل البريد الإلكتروني الأخرى من موقعك إلى صناديق البريد الوارد. أيضًا يتطلب إرسال ذلك العدد الكبير من رسائل البريد الإلكتروني موارد كبيرة من الخادم، وسيؤثر على أداء موقعك، حيث سيستغرق إرسال 500 ألف رسالة بريد إلكتروني وقتًا طويلاً جدًا باستخدام سكربت على موقعك. في حال كان البريد لديك جديد أو الدومين، فعليك بتخصيص 30 إيميل يوميًا فقط للإرسال ثم بعد شهر قم بزيادة ذلك الرقم إلى 50 والشهر الذي يليه إلى 100 وهكذا لحين وصول 6 أشهر، ثم تستطيع زيادة الرقم إلى 1000 يوميًا، أيضًا عليك التقيد بالحد المسموح به من قبل مزود خدمة البريد لديك. بالطبع الأمر يختلف لو لديك قائمة من المشتركين في نشرة بريدية مثلاً، فتستطيع الإرسال للجميع بدون مشكلة وبغض النظر عن العدد، فبالأعلى أتحدث عن cold emails. ستحتاج إلى استخدام مكتبة PHPMailer لو أردت الإرسال من خلال الكود، أو لديك منصة مثل brevo تتيح لك 300 إيميل يوميًا بشكل مجاني من خلال واجهة المنصة أو sender توفر عدد أكبر.
  23. الأمر لا يتطلب مواصفات مرتفعة، ستحتاج إلى 100 ميجابايت لتحميل 10 آلاف سجل و 500 ميجابايت لتحميل 30 ألف سجل. لذا لتجنب أية مشاكل محتملة، فبدلاً من تحميل جميع البيانات دفعة واحدة، قم بتقسيمها إلى دفعات أصغر (مثلاً 1000 صف لكل دفعة) وتحميل كل دفعة على حدة، حيث سنستخدم عبارة LIMIT في استعلام SQL لجلب 1000 صف في كل مرة وسنحتاج أيضًا إلى معرفة عدد المرات التي يجب أن نكرر فيها الاستعلام، لذلك سنقوم أولاً بحساب عدد الصفوف الكلي. $Re = $_POST['Re']; $countSql = "SELECT COUNT(*) as total FROM iP WHERE Re = '$Re'"; $countResult = $conn->query($countSql); $totalRows = $countResult->fetch_assoc()['total']; $batchSize = 1000; $numBatches = ceil($totalRows / $batchSize); ونستخدم حلقة for للتكرار على عدد الدفعات المحسوبة، في كل تكرار، سنقوم بتعديل استعلام SQL لجلب الدفعة الحالية فقط. for ($i = 0; $i < $numBatches; $i++) { $offset = $i * $batchSize; $sql = "SELECT * FROM iP WHERE Re = '$Re' LIMIT $offset, $batchSize"; $result = $conn->query($sql); }
  24. بالطبع المنصة موجودة منذ زمن وذات موثوقية وليس بها أمر مشبوه، ما تقوم به هو التسويق للمنتجات التي لديهم ثم يتم شحنها وتحصل على عمولة.
  25. في الوضع العادي لا نضع علامات إقتباس لأسماء الخطواط إن كان مثل cairo أو cairo-bold مثلاً، لكن لو يوجد "مسافات، أرقام أو رموز أخرى غير الهايفن - " فنقوم بوضع اسم الخط بين علامتي إقتباس لكي يتم ترجمة اسمه بشكل صحيح وتمريره كنص واحد "cairo bold" فلو لم نضع علامتي الإقتباس لن يتم التعرف على الخط وسيتم إعتماد الخط الذي يليه في font-family أو الخط الإفتراضي في المتصفح.
×
×
  • أضف...