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

Mustafa Suleiman

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

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

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

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

    302

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

  1. بالطبع تعلم أن splice هي دالة مدمجة في جافاسكريبت وتسمح لك بإضافة، إزالة أو استبدال العناصر من مجموعة أو مصفوفة. وتستقبل المعلمات التالية: splice(start, deleteCount, item1) start: فهرس العنصر الذي تريد البدء من إزالته أو استبداله أو إضافته. deleteCount: عدد العناصر التي تريد إزالتها. item1, item2, ...: العناصر التي تريد إضافتها (اختياري). وتستطيع استخدام قيمة سالبة لـ index للبدء من نهاية المصفوفة أي -1 ولفهم الأمر، لننظر إلى مثال عملي لإضافة عنصر: const fruits = ["apple", "banana", "orange"]; fruits.splice(1, 0, "kiwi"); // يضيف "kiwi" بعد "banana" console.log(fruits); // ["apple", "kiwi", "banana", "orange"] وتستطيع أيضًا إضافة عنصرين: const fruits = ["apple", "banana", "orange"]; fruits.splice(2, 0, "kiwi", "grape"); // يضيف "kiwi" و "grape" بعد "orange" console.log(fruits); // ["apple", "banana", "kiwi", "grape", "orange"] ولإزالة عنصر: const fruits = ["apple", "banana", "orange"]; fruits.splice(2, 1); // يزيل "orange" console.log(fruits); // ["apple", "banana"] بنفس المنطق نستطيع إزالة عنصرين: const fruits = ["apple", "banana", "orange", "kiwi", "grape"]; fruits.splice(2, 2); // يزيل "orange" و "kiwi" console.log(fruits); // ["apple", "banana", "grape"] استبدال عنصر: const fruits = ["apple", "banana", "orange"]; fruits.splice(1, 1, "mango"); // يستبدل "banana" بـ "mango" console.log(fruits); // ["apple", "mango", "orange"] ولمعلوماتك تستطيع إزالة جميع العناصر من المصفوفة بكتابة أول معلمة بقيمة 0 أي بداية المصفوفة ثم وضع القيمة الثانية بطول المصفوفة: const fruits = ["apple", "banana", "orange"]; fruits.splice(0, fruits.length); // يزيل جميع العناصر console.log(fruits); // []
  2. تلك المنصات تُعرف باسم منصات low code أوؤ، و low code يعني إمكانية التصميم مع كتابة كود قليل للتخصيص، أما no code فسحب وإفلات فقط لتصميم الواجهة. ولا مشكلة في ذلك، فلكل أداة أو تقنية استخدامها المناسب لها، فمن خلالها نستطيع تنفيذ تصاميم أولية بشكل سريع لعرضه على العملاء مثلاً، أو إنشاء موقع لا يحتاج إلى الكثير من التخصيص. وبالفعل يوجد منصات بها مكونات React.js جاهزة من أجل إنشاء واجهة الموقع وإنشاء حالة state للمكونات. وستجد تفصيل أكثر في تعليق سابق هنا:
  3. عليك تحديث Unity إلى الإصدار 2019.3 أو أحدث، ففي ذلك الإصدار، تم دمج نظام الإدخال الجديد بشكل افتراضي. ثم عليك بالتالي: في Unity، افتح قائمة "Edit" وقم باختيار "Project Settings". في قائمة "Project Settings"، اختر "Input". سترى قائمة الأجهزة المدعومة. تأكد من تفعيل الجهاز الذي تريد استخدامه (مثل لوحة المفاتيح أو ذراع التحكم). يمكنك إضافة أزرار جديدة وتعيين وظائف لها. ثم كتابة أكواد حركة اللاعب: استخدم "Input System Actions" بدلاً من "Input.GetAxis" أو "Input.GetKey". يمكنك العثور على "Input System Actions" في قائمة "Assets". انشئ "Input Action Map" جديدًا وقم بتعيين أزرار التحكم. في نص برمجي، استخدم "Input Action Map" للتحقق من ضغطات الأزرار. وكمثال: using UnityEngine; using UnityEngine.InputSystem; public class PlayerController : MonoBehaviour { public InputActionMap inputMap; private void Update() { // Check for movement input Vector2 movementInput = inputMap.GetAction("Move").ReadValue<Vector2>(); // Move the player transform.Translate(movementInput * Time.deltaTime); } }
  4. لا مشكلة في ذلك، تستطيع العمل كمطور واجهة خلفية أو أمامية، إلا إن كنت تنوي العمل على مواقع العمل الحر، هنا يجب أن تصبح مطور Full-stack حيث أنك في الغالب ستعمل على تطوير وإنهاء المشروع بمفردك. وعند تعلم الواجهة الخلفية، من الأفضل تعلم أساسيات HTML, CSS, JS فقط لكي تعلم ما يحدث بالواجهة الأمامية وتستطيع التواصل مع فريق الواجهة الأمامية.
  5. سيتم سؤالك في الأمور المهمة التي لها علاقة بصميم محتوى الدورة والتخصص الخاص بها، وأيضًا في المسارات التي قمت بإنهائها بحد أدنى 4 مسارات، أيضًا سيتم سؤالك حول المشاريع العملية التي قمت بتنفيذها في الدورة. وذلك خلال محادثة مدتها 30 دقيقة، بعد ذلك سيتم تحديد مشروع التخرج للعمل عليه. لذا أمور مثل تخصيص المتصفح لن يتم سؤالك عنها بالطبع.
  6. أرجو التعليق أسفل فيديو الدورة لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا. تقصد كالتالي؟ لاحظ أن هذا المتغير موجود بالفعل في الكائن window أي يوجد خاصية باسم name في الكائن العالمي window، ولكن تلك الخاصية أصبحت deprecated أي لم يعد يتم دعمها وسيتم إزالتها عما قريب أو قد تظل موجودة لكن المتصفحات قد لا تدعمها. لذا يمكنك تجاهل ذلك، أو استخدام اسم متغير آخر بدلاً من name. وعامًة عند وجود خط في متغير أو غيره يعني ذلك أنه deprecated.
  7. تتنوع مسائل تعلم الآلة بشكل كبير، وتشمل مجالات واسعة، وكأمثلة: التصنيف: تصنيف البيانات إلى فئات مختلفة، مثل تصنيف البريد الإلكتروني العشوائي، أو تصنيف الصور. التنبؤ: التنبؤ بقيم مستقبلية بناءً على بيانات تاريخية، مثل التنبؤ بسعر الأسهم، أو التنبؤ بحالة الطقس. التركيب: استنتاج العلاقات بين متغيرات متعددة، مثل اكتشاف علاقات بين الجينات والأمراض. التجميع: تقسيم البيانات إلى مجموعات فرعية متشابهة، مثل تجميع العملاء حسب سلوكهم الشرائي. الاسترجاع: استخراج المعلومات ذات الصلة من كميات كبيرة من البيانات، مثل استرجاع المعلومات من الإنترنت. وبالفعل يلعب تعلم الآلة دورًا رئيسيًا في حل العديد من مشكل العالم الحقيقي، مثل: تحسين تشخيص الأمراض، وتطوير أدوية جديدة، وتقديم رعاية صحية مخصصة. الكشف عن الاحتيال، وإدارة المخاطر، وتحسين التداول. تحسين كفاءة الإنتاج، والتنبؤ بأعطال الآلات، وتطوير منتجات جديدة. تحسين غلة المحاصيل، وإدارة الموارد الطبيعية، ومكافحة الآفات. تطوير سيارات ذاتية القيادة، وتحسين أنظمة النقل العام، وإدارة حركة المرور. ومع ذلك، هناك بعض التحديات التي تواجه تعلم الآلة، مثل: من المسؤول عن أخطاء أنظمة تعلم الآلة؟ كيف يمكننا حماية بيانات المستخدمين من سوء الاستخدام؟ كيف يمكننا ضمان أن أنظمة تعلم الآلة عادلة وغير متحيزة؟ ولا يقتصر مجال تعلم الآلة على حل مشكل العالم الحقيقي، بل متاح توظفيه أيضًا في مجالات أخرى مثل الترفيه والألعاب والتعليم.
  8. أولاً عليك الحصول على max ID من الجدول: int maxId; using (var context = new DMMEntities()) { maxId = context.TBL_SUPP.Max(s => s.SUPP_ID) + 1; } ثم اضبط max ID في المورد الجديد: P.SUPP_ID = maxId; بعدها أضف المورد إلى قاعدة البيانات: db.TBL_SUPP.Add(P); db.SaveChanges(); ثم عرض max ID في textbox: txtSupplierID.Text = maxId.ToString(); ومن الأفضل استخدام try-catch block لمعالجة أي أخطاء قد تحدث عند استخراج max ID، والجدير بالذكر أنك تستطيع الإعتماد على stored procedure لتنفيذ عملية الإضافة والحصول على max ID في خطوة واحدة، واستخدام LINQ لكتابة استعلام أكثر إيجازًا للحصول على max ID.
  9. إما بالإعتماد على SELECT MAX() كالتالي: SELECT MAX(SUPP_ID) AS MaxID FROM DMM.DB.TBL_SUPP; ليصبح الكود: using (var connection = new SqlConnection(connectionString)) { connection.Open(); using (var command = new SqlCommand("SELECT MAX(SUPP_ID) AS MaxID FROM DMM.DB.TBL_SUPP", connection)) { var reader = command.ExecuteReader(); if (reader.Read()) { int maxId = reader.GetInt32(0); txtSupplierID.Text = maxId.ToString(); } } } أو استخدام IDENTITY بالشكل: CREATE TABLE DMM.DB.TBL_SUPP ( SUPP_ID INT IDENTITY(1, 1) PRIMARY KEY, SUPP_NAME VARCHAR(50) NOT NULL, SUPP_ADDRESS VARCHAR(100) NOT NULL ); ليصبح الكود: // Insert the new supplier without specifying SUPP_ID var newSupplier = new DMM.DB.TBL_SUPP { SUPP_NAME = edt_name.Text, SUPP_ADDRESS = edt_address.Text }; using (var connection = new SqlConnection(connectionString)) { connection.Open(); using (var command = new SqlCommand("INSERT INTO DMM.DB.TBL_SUPP (SUPP_NAME, SUPP_ADDRESS) VALUES (@name, @address)", connection)) { command.Parameters.AddWithValue("@name", newSupplier.SUPP_NAME); command.Parameters.AddWithValue("@address", newSupplier.SUPP_ADDRESS); command.ExecuteNonQuery(); } // Get the newly inserted ID using (var command = new SqlCommand("SELECT MAX(SUPP_ID) AS MaxID FROM DMM.DB.TBL_SUPP", connection)) { var reader = command.ExecuteReader(); if (reader.Read()) { int maxId = reader.GetInt32(0); txtSupplierID.Text = maxId.ToString(); } } } وبالطبع تأكد من أن عمود SUPP_ID هو نوع بيانات INT وله خاصية IDENTITY مضبوطة على (1, 1)، ومن أنك قمت بإضافة جميع البيانات المطلوبة لباقي أعمدة الجدول قبل تنفيذ INSERT.
  10. الأمر طبيعي فالشاشة لديك بهرتز مرتفع، فمن الطبيعي أن يتم خفضه عند العمل على البطارية ثم رفعه مرة أخرى عند توصيل الشاحن. ولمنع حدوث ذلك لكن الأمر سيؤدي إلى استهلاك طاقة أكبر من البطارية، توجه إلى برنامج Armoury Crate ثم Home ثم ستجد صندوق باسم System Configuration قم بتعطيل زر Panel Power Saver.
  11. غالبًا المشكلة بسبب عدم توافقية إصدار مكتبة Pygments مع إصدار IPython، عليك استخدام إصدار IPython 8.1 أو أحدث ولديك بالفعل الإصدار 8.2، وتستطيع التحديث مباشرًة لأحدث إصدار من خلال: pip install --upgrade ipython أيضًا عليك استخدام إصدار Pygments 2.4.0 أو أحدث فلديك إصدار أقل، واستخدم الأمر التالي: pip install --upgrade pygments إن استمرت المشكلة جرب الإصدارات التالية: pip install pygments==2.4.0 pip install ipython==8.0
  12. نعتذر لك على أي إزعاج تواجهه بشأن الوصول للدورة، تلك المشكلة تستطيع حلها من خلال التواصل مع مركز المساعدة في أكاديمية حسوب، وطالما أنك تواصلت سيتم الرد عليك بلا شك فلا تقلق بخصوص ذلك ربما يوجد ضغط حاليًا بسبب وجود عرض على الدورات.
  13. الأمر يعتمد على التقنيات المستخدم في الموقع هل يتم استخدام React أم لارافل؟ عامًة في جافاسكريبت هناك مكتبة i18next وذلك هو المستند الرسمي: https://www.i18next.com/ حيث تدعم i18next تحميل الملفات الترجمة بصيغ مختلفة مثل JSON و PO وغيرها، وتستطيع استخدامها في تطبيقات React و Angular و Vue.js وغيرها. وإن كان الموقع يتم تصييره rendering عن طريق SSR أي من جهة الخادم، فهنا الترجمة تتم على الخادم من خلال متغيرات وملف به الترجمات المطلوبة سواء من خلال إطار next.js أو من خلال PHP تفقدي النقاش التالي: أما إن كان الموقع Static تستطيعي إنشاء صفحات منفصلة لكل لغة والتبديل بينها من خلال جافاسكريبت.
  14. المشكلة الرئيسية هي في دالة الإضافة (add) حيث أنها تحتوي على عدة أخطاء: تحتاج إلى استدعاء الدالة execute بدلاً من cute لتنفيذ استعلام SQL. عند إجراء عملية الإدخال في قاعدة البيانات، يجب عليك توفير قيم لجميع الحقول في الجدول، وعلى ما أعتقد لديك حقل واحد فقط name، ولكن قمت بتضمين age و add و ph في الإدراج بدون توفير قيم لها، لذا، عليك إما تعديل جدول قاعدة البيانات لتناسب الحقول التي تحاول إضافتها، أو إزالة تلك الحقول من الإدراج. تحتاج إلى تعيين قيمة واحدة أو أكثر لحقول الإدراج، ولكن أنت أعطيتها قيمة واحدة فقط، قم بتعديل الاستعلام ليتضمن قيمة واحدة لحقل name فقط. لضمان إغلاق قاعدة البيانات بشكل صحيح، عليك نقل db.close() إلى نهاية دالة الإضافة بدلاً من وضعها في النهاية العامة للبرنامج. from PyQt5 import QtCore, QtGui, QtWidgets import sys import sqlite3 app = QtWidgets.QApplication(sys.argv) w = QtWidgets.QWidget() e1 = QtWidgets.QLineEdit(w) e1.move(200,150) e1.resize(400,40) e1.setStyleSheet("background-color: white ;font-size: 20px") b1 = QtWidgets.QPushButton("اضافة", w) b1.move(40,40) b1.resize(400,50) b1.setStyleSheet("background-color: yellow ;font-size: 24px") db = sqlite3.connect("name.db") c = db.cursor() c.execute("CREATE TABLE IF NOT EXISTS names(name TEXT)") def add(): a1 = e1.text() e1.clear() c.execute("INSERT INTO names(name) VALUES(?)", (a1,)) db.commit() db.close() b1.clicked.connect(add) w.show() app.exec_()
  15. MySQL تستخدم في بيئات متطورة حيث يكون هناك حاجة لمعالجة كميات كبيرة من البيانات وتتيح MySQL قدرة توزيع البيانات عبر عدة خوادم ويوفر خيارات لتحسين الأداء والتوسعية الأفقية. بينما نستطيع استخدام SQLite3 مع البيانات الكبيرة، إلا أنك ستواجه قيودًا في الأداء عندما تتعامل مع كميات كبيرة جدًا من البيانات، حيث تكون SQLite3 ممتازة لتطبيقات الويب الصغيرة والتطبيقات المحمولة والتطبيقات التي لا تتطلب مستوى عالٍ من النشاط والمعالجة. وعليك مراعاة هيكلة وتصميم قاعدة البيانات بشكل جيد لضمان الأداء الأمثل بغض النظر عن نوع قاعدة البيانات، ومراجعة كيفية تنظيم الجداول واستخدام الفهارس والاستعلامات بشكل فعال.
  16. في البداية ما هو رائد الأعمال؟ بشكل بسيط، هو شخصٌ يمتلك شغفًا وفكرةً، ويسعى لتحويلها إلى مشروعٍ تجاريٍ ناجحٍ. ويتميز بالعديد من الصفات، منها: القدرة على ابتكار أفكارٍ جديدةٍ وحلولٍ مبتكرةٍ للمشاكل. حبٌ عميقٌ لمجال العمل والرغبة في إحداث تغييرٍ إيجابي. القدرة على الاستمرار في العمل وتحقيق الأهداف على الرغم من التحديات. الاستعداد لتحمل المخاطر المُحْتَمَلة لتحقيق النجاح. القدرة على التواصل بفعاليةٍ مع مختلف الأشخاص. القدرة على تحفيز وإلهام الآخرين للعمل بجد. ويُمكن تلخيص دور رائد الأعمال في النقاط التالية: البحث عن احتياجات السوق واكتشاف فرصٍ جديدةٍ للأعمال. وضع خطة مُحكمة تحدد أهداف المشروع وطريقة تحقيقه. الحصول على الأموال اللازمة لبدء المشروع وتطويره. تكوين فريق من الموظفين المُؤهلين لتحقيق أهداف المشروع. قيادة المشروع وتوجيهه نحو النجاح. ما سبق هو الكلام الأكاديمي، أما في الواقع العملي الحياة ليست كما يصفها بعض الرواد على مواقع التواصل الإجتماعي، حيث يتطلب الأمر صلابة نفسية وقدرة على تحمل المخاطر وصبر طويل المدى، فغالبًا ما يفشل المشروع الأول في حال لم يكن لديك خبرة بالمشاريع ثم تبحث عن فكرة أخرى، إلا إذا كان لديك خبرة في المشروع الذي تحاول تنفيذه، والأمر بحاجة إلى رأس مال يختلف حجمه بطبيعة المشروع فمن الممكن أن تبدأ بشكل بسيط ثم تحاول تنمية مشروعك حتى لو كان عربة طعام.
  17. المشكلة لديك لديك في الغالب بسبب صيغة الملف، تأكد من إظهار صيغ الملفات من خلال التالي في ويندوز 11: حيث يجب أن تكون صيغة الملف هي js وليس صيغة أخرى. وفي ويندوز 10 نُظهر صيغة الملفات كالتالي:
  18. للأسف الأمر غير متاح من خلال إعدادات الحساب، لكن يمكنك تفقد هل هناك إمكانية للتراجع عن ذلك من خلال مركز المساعدة أي من قبلهم، تواصل عبر الرابط التالي: https://support.academy.hsoub.com/conversations
  19. أنت لم تقم بتضمين القيم المراد إدخالها في استعلام SQL بشكل صحيح، هناك أيضًا بعض الأخطاء الأخرى: استخدم اقتباسات للقيم النصية في استعلام SQL. لاحظ أنه يجب عليك استخدام اسماء الاعمدة المراد إدخال البيانات فيها بين قوسين في INSERT INTO. استخدم اسماء المتغيرات بشكل صحيح مع استعلام الإدخال. استخدم اسماء المتغيرات الصحيحة مع bindParam(). <?php require_once('database.php'); if ($_SERVER["REQUEST_METHOD"] == "POST") { $fullname = $_POST["FName"]; $email = $_POST["Email"]; $feedback = $_POST["feedback"]; if (empty($fullname) || empty($email) || empty($feedback)) { echo "Please fill in all required fields."; return; } // تحسين استعلام SQL لتضمين قيم النص داخل اقتباسات $sql = "INSERT INTO feedback (full_name, email, feedback) VALUES (:fullname, :email, :feedback)"; $stmt = $conn->prepare($sql); // ربط القيم المستخدمة مع معلمات الاستعلام باستخدام bindParam() $stmt->bindParam(":fullname", $fullname); $stmt->bindParam(":email", $email); $stmt->bindParam(":feedback", $feedback); try { $stmt->execute(); echo "Feedback submitted successfully!"; } catch(PDOException $e) { echo "Error submitting feedback: " . $e->getMessage(); } } ?> بالطبع من المهم التأكد من أن متغيرات النموذج (مثل "FName" و "Email" و "feedback") تتطابق بالضبط مع الأسماء المستخدمة في نموذج HTML.
  20. SQL تعتبر اللغة القياسية أو الرسمية للتعامل مع قواعد البيانات، فهي لغة يتم تطويرها منذ عقود من أجل ذلك الغرض، والمكتبات وبرامج إدارة قواعد البيانات تعتمد عليها. وطالما أننا نتحدث عن قواعد البيانات العلائقية، حاليًا البديل الوحيد هي لغة PRQL والتي ما زالت قيد التطوير وتم بنائها بواسطة لغة Rust حيث يتم تحويل الكود الخاص باللغة إلى لغة SQL في النهاية لذا البحث عن بديل يعني استخدام لغة أو إطار يتم به التعامل مع قواعد البيانات بطريقة مختلفة أي عن كتابة لغة مختلفة عن SQL سواء من أجل تسهيل العملية أو إضافة مزايا أخرى، لكن في النهاية يتم تحويل الكود إلى SQL بواسطة مترجم transpiler. وكمثال Language-Integrated Query (LINQ) هي جزء من لغة C# و.NET Framework ويسمح بالتفاعل مع مصادر البيانات المختلفة باستخدام بنية اللغة السهلة للتعامل مع قواعد البيانات العلاقية بطريقة مشابهة لاستخدام SQL، بالإضافة إلى التفاعل مع مصادر البيانات الأخرى مثل الكولكشنز والمصفوفات. أيضًا SPARQL هي لغة استعلام تستخدم لقواعد البيانات الرسومية وربط البيانات على الويب (RDF)، وتستخدم على نطاق واسع في Semantic Web وLinked Data.
  21. أرجو طرح السؤال أسفل فيديو الدورة لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا: بدءًا من الإصدار 6.0 من MongoDB لم يعد يتم استخدام اجهة الأوامر mongod، وتم استبدالها بواجهة mongosh والتي تستطيع تثبيتها أثناء تثبيت MongoDB وتستطيع تفقد ذلك عن طريق كتابة الأمر التالي في منفذ الأوامر: mongosh وسيظهر لك أنه تم الإتصال كالتالي: وإذا لم يظهر لك شيء وأنه غير معرف، فأسهل طريقة للتثبيت ولا تحتاج إلى إضافة أي شيء لمتغيرات البيئة PATH هي بتحميل mongosh لنظام الويندوز من الرابط التالي: https://downloads.mongodb.com/compass/mongosh-1.9.1-x64.msi ثم قم بالتثبيت واضغط على next next ثم install وانتهي الأمر، ثم أغلق منفذ الأوامر لديك وأعد تشغيله ثم كتابة الأمر mongosh واضغط Enter وسيتم الإتصال. ولكن انتبه إلى أنه يجب التحميل من الرابط السابق لأنها نسخة تثبيت مباشر، حيث يوجد نسخة أخرى بملف zip مضغوط وستحتاج إلى إضافة المسار إلى متغير البيئة بشكل يدوي وذلك ما لا نريده.
  22. أولاً قراءة الكتب في البداية لن تحقق لك الاستفادة المطلوبة، أنت بحاجة إلى المشاهدة والمحاكاة والاستيعاب من خلال شرح عملي حيث تستطيع قراءة الكتب بعد الإنتهاء من مسارك البرمجي وتنفيذ مشاريع. لكن هل تكتفي بما تم شرحه بأي دورة بأي مكان؟ بالطبع لا، عليك التطبيق على جزء بالدورة بالبحث عن تمارين، تطبيقات وتحديات لتوظيف ما تعلمته بها، ثم بعد الإنتهاء من الدورة عليك تنفيذ مشروع كامل آخر غير الذي قمت به بالدورة، وفي حال لم تكن تشعر بأريحية في استيعاب ما قمت به بالمشروع بالدورة عليك إعادته بمفردك مرة أخرى لحين الشعور بأريحية أنك مستوعب لما تقوم به. بعد ذلك تستطيع حل مسائل leetcode، بشكل متدرج، رغم أنه من الأفضل حل مسائل أثناء تعلمك للدورة من خلال موقع أسهل مثل Codewars. بغض النظر عن الأدوات التي تعتمد عليها في بناء مشاريع، يجب أن تكون مستوعب لما يحدث وما سبب قيامك بالأمر بهذا الشكل وليس غيره وما فائدته، وليس نسخ ولصق وبناء مشروع لا يحقق لك إفادة على مستواك البرمجي ومهاراتك، كل تلك الأمور تؤهلك لحل المشاكل بشكل أسهل عند مواجهتها فبدون المعرفة والاستيعاب لن تتمكن من الوصول بعيدًا. عليك البحث عن متطلبات الوظيفة التي تريدها على مواقع مثل LinkedIn وIndeed ثم وضع قائمة بالتقنيات والمهارات المطلوبة ثم تعلمها والوصل إلى مستوى جيد بها وبناء معرض أعمال يثبت ذلك.
  23. عليك إذن شراء رقم virtual أي إفتراضي من خلال المنصات التالية: Hushed RingCentral Numero eSIM Talkatone TextNow Phone.com blacktel.io/en/verifications/whatsapp talkatone.com SMSreceivefree 2nr تفقد الأسعار في المنصات السابقة وبعضها يقدم رقم مجاني.
  24. سيتم الرد عليك بلا شك، في بعض الأحيان يكون هناك ضغط خاصًة في ظل وجود عرض احصل على دورتين بسعر دورة واحدة حاليًا، أرجو تفهم ذلك وسيتم التواصل معك ومن الأفضل شرح ما تريد ليتم مساعدتك مباشرًة. والتواصل يكون عبر المحادثة هنا: https://support.academy.hsoub.com/conversations
×
×
  • أضف...