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

Mustafa Suleiman

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

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

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

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

    489

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

  1. بالطبع، وبه ستكتب وصف للمشروع ماذا يفعل الـ API؟ ما هي المشكلة التي يحلها؟ والتقنيات المستخدمة Tech Stack، وكيفية تشغيل المشروع محليًا بتعليمات واضحة خطوة بخطوة. وقائمة بالـ API Endpoints من خلال جدول بسيط يوضح كل endpoint، وماذا تفعل، وما هي البيانات التي تتوقعها، مثلاً POST /auth/register - register a new user ,شرح للمتغيرات التي يحتاجها المشروع ليعمل مثل DATABASE_URL وJWT_SECRET. بجانب ما سبق يجب نشر المشروع على استضافة وتوفير رابط لحي لإختبار الـ API، وكذلك توثيق تفاعلي بواسطة Swagger. من خلال إضافة مكتبة Swagger إلى مشروعك swagger-ui-express، وهي ستقوم تلقائيًا بإنشاء صفحة ويب توثق كل الـ Endpoints في مشروعك (مثل GET /users, POST /products)، وستوفر توفر واجهة لتجربة كل endpoint مباشرة، وإرسال البيانات، ورؤية الاستجابة. وسيتم إنشاء مسار للتوثيق عند نشر المشروع على استضافة، ولتكن render مثلاً: https://my-todo-api.render.com/api-docs
  2. في حال أنك مبتدأ في مجال تعلم الآلة، فلا أنصحك إطلاقًا بدراسة 4 مسارات فقط، فذلك الخيار متاح لمن لديه معرفة وخبرة بتخصص الدورة ويرغب في تعلم أمور معينة فقط ولا يرغب بدراسة بالدورة بالكامل. الشهادة في حد ذاتها في مجال البرمجة ليست بتلك الأهمية، المهم هو مهاراتك وما تستطيع فعله وإثبات ذلك من خلال معرض أعمال إحترافي. لذا حدد هدفك من دراسة الدورة، ولتعلم مجال تعلم الآلة ستحتاج إلى دراسة الدورة بالكامل.
  3. قسم How does the project work هو توثيق للـ API من الأفضل تسميته API Documentation أو Endpoints Reference. وإضافة قسم Features أي الميزات في البداية لتلخيص ما يمكن للمشروع عمله في نقاط سريعة، وقسم للـ Tech Stack أي التقنيات المستخدمة بشكل منفصل وواضح. و ذكرت ADMIN_PASSWORD في ملف .env، ولكنك لم توضح للمطور كيفية إعداده، أي مشروع يجب أن يحتوي على ملف env.example. وتوضح في الـ README أنه يجب نسخه إلى .env وكتابة المتغيرات اللازمة مثل: MONGO_URI JWT_SECRET PORT CLOUDINARY_CLOUD_NAME ADMIN_PASSWORD ولا يوجد ذكر لكيفية استجابة الـ API في حالة حدوث خطأ مثل إدخال خاطئ 400، عدم العثور على عنصر 404، أو عدم وجود صلاحية 401/403، فالتوثيق الاحترافي يشمل أمثلة على استجابات النجاح والفشل. والنصوص البرمجية مثل POST /api/auth/register، وأجسام JSON، والـ Headers يجب وضعها دائمًا داخل Code Blocks أي بوضعها بين ``` لتحسين القراءة وسهولة النسخ.
  4. NetworkX مفيد لبناء الـ Graph لكن لا يستخرج العقد والعلاقات تلقائيًا من JSON، حيث ستحتاج إلى كتابة منطق الاستخراج. الأفضل استخدام LLM نفسه لاستخراج العقد والعلاقات من خلال كتابة PromptTemplate from langchain.prompts import PromptTemplate ثم: def extract_entities_and_relations(json_text): llm = OpenAI(temperature=0) prompt = PromptTemplate( input_variables=["data"], template=""" استخرج من البيانات التالية: 1. العقد (Entities) - الأشياء الرئيسية 2. العلاقات (Relations) - الروابط بينها أرجع النتيجة بصيغة JSON: {{ "nodes": [ {{"id": "node1", "label": "اسم", "type": "نوع"}}, ], "edges": [ {{"source": "node1", "target": "node2", "relation": "نوع العلاقة"}} ] }} البيانات: {data} """ ) response = llm(prompt.format(data=json_text)) return json.loads(response) وتتوفر مكتبات جاهزة للبحث، أفضلها Neo4j، حيث LLM يحول سؤال المستخدم إلى Neo4j ثم تنفيذ الاستعلام وإرجاع النتائج، ويستخدم النتائج لتوليد إجابة طبيعية. ستحتاج التالي Neo4j و LangChain وLLM.
  5. الإيقاف نهائي وليس مؤقت، ولا يوجد سبب واحد معلن ورسمي من جوجل، ولكن على الأرجح التركيز لم يعد مقتصر على إطار عمل واحد فقط، المجال الآن أوسع بكثير، ويشمل مفاهيم مثل MLOps، ونشر النماذج على السحابة، والتعامل مع البيانات الضخمة، واستخدام أدوات مختلفة، لذا شهادة تركز فقط على بناء النماذج في TensorFlow أصبحت لا تعكس كل المهارات التي يحتاجها مهندس تعلم الآلة حاليًا. أيضًا بدلاً من تقديم امتحان واحد كدليل على الكفاءة، جوجل تفضل الآن توجيه المطورين إلى مسارات تعليمية متكاملة على منصات مثل Coursera و Google Cloud Skills Boost، والتي توفر معرفة أعمق، حتى لو لم تنتهِ بامتحان عملي بنفس الشكل. ويوجد بديل وهو شهادة Google Cloud Professional Machine Learning Engineer، ولا تختبر فقط قدرتك على بناء النماذج، بل تختبر فهمك لكيفية بناء حلول تعلم آلة متكاملة وقابلة للتطوير على منصة Google Cloud.
  6. في منطقة الشرق الأوسط، لا يوجد طلب مرتفع على لغة GO، تتوفر وظائف في دبي والمملكة العربية السعودية والخليج، وأيضًا في بعض الشركات القليلة في مصر. بينما في أوروبا وأمريكا يوجد طلب عالي بطبيعة الحال. وعامًة هناك نُدرة نسبية في مطوري GO، وبالتالي المرتبات مرتفعة مقارنًة بأغلب اللغات الأخرى، لذا في حال أردت التخصص في مجال الواجهة الخلفية، فقم بدراسة تقنية مطلوبة بكثرة في منطقة الشرق الأوسط، وبعد اكتساب خبرة بها قم بدراسة GO لتتمكن من التقدم للوظائف القليلة المعروضة والتي بها نسبة قبول مرتفعة في حال مستواك جيد.
  7. كل شخص له أسلوب يُناسبه في الدراسة، لكن المهم هو تجنب المشاهدة السلبية وتخصيص وقت أكبر للتطبيق العملي، فالبرمجة عبارة عن تفكير منطقي لحل مشكلة ثم تنفيذ ذلك من خلال كتابة الكود. بالنسبة لطريقة الدراسة البعض يُفضل كتابة مُلخصات لكل شيء، لكن لا أنصحك بذلك، اكتفي فقط بكتابة ملاحظات ومُلخصات ورسومات للأمور النظرية أو معلومة معينة تريد الإحتفاظ بها للعودة إليها للمراجعة. بينما البرمجة نفسها اكتفي بالتطبيق العملي فهو الأهم وبدونه فلا معنى للمُلخصات النظرية مهما كتبت، ببساطة لن تستطيع قيادة سيارة بمشاهدة فيديو صحيح؟ وحاول تجنب الإنقطاعات المتكررة خاصًة في البداية، حاول الدراسة بإنتظام بحد أدنى ساعتين يوميًا أو شبه يومي. ستجد تفصيل هنا:
  8. حذفت date_id من test نفسه؟ إذن يجب تمرير إطار بيانات يحتوي على date_id. import pandas as pd import tensorflow as tf import kaggle_evaluation import os col = ['D1','D2','D3','D4','D5','D6','D7','D8','D9','E1','E10','E11','E12','E13','E14', 'E15','E16','E17','E18','E19','E2','E20','E3','E4','E5','E6','E7','E8','E9','I1', 'I2','I3','I4','I5','I6','I7','I8','I9','M1','M10','M11','M12','M13','M14','M15', 'M16','M17','M18','M2','M3','M4','M5','M6','M7','M8','M9','P1','P10','P11','P12', 'P13','P2','P3','P4','P5','P6','P7','P8','P9','S1','S10','S11','S12','S2','S3', 'S4','S5','S6','S7','S8','S9','V1','V10','V11','V12','V13','V2','V3','V4','V5', 'V6','V7','V8','V9','is_scored','lagged_risk_free_rate', 'lagged_market_forward_excess_returns'] model_path = 'AlphaPulse.keras' if not os.path.exists(model_path): model_path = '/kaggle/working/AlphaPulse.keras' model = tf.keras.models.load_model(model_path) def predict(test: pd.DataFrame, test_with_dates: pd.DataFrame) -> pd.DataFrame: df = test.copy() x_test = df[col] preds = model.predict(x_test, verbose=0) allocation = preds.clip(0, 2).reshape(-1) return pd.DataFrame({ "date_id": test_with_dates["date_id"].values, "prediction": allocation }) inference_server = kaggle_evaluation.default_inference_server.DefaultInferenceServer(predict) if os.getenv('KAGGLE_IS_COMPETITION_RERUN'): inference_server.serve() else: inference_server.run_local_gateway(('/kaggle/input/hull-tactical-market-prediction/',))
  9. Express.js مكتبة بسيطة لإنشاء خادم، توفر لك الأدوات الأساسية مثل التعامل مع الطلبات والمسارات، وتترك لك حرية تنظيم مشروعك كما تشاء، حيث لا توجد قواعد صارمة لكيفية تقسيم الكود وتستطيع وضع كل شيء في ملف واحد، أو تقسيمه بنفسك، وذلك مناسب في المشاريع الصغيرة. بينما في المشاريع المتوسطة والكبيرة تظهر فائدة إطار كامل مثل Nest.js، حيث يوفر هيكل كامل وجاهز لتنظيم المشروع من Modules و Controllers و Services وDecorators، وتطبيق مفاهيم متقدمة مثل Dependency Injection وSOLID، أيضًا مبني بالكامل على TypeScript، ومبني فوق Express، لكن يضيف طبقة قوية من التنظيم مستوحاة من أطر عمل مثل Angular. وبه نظام الـ Modules الذي يسمح لك بتقسيم التطبيق إلى وحدات مستقلة، وذلك يُسهل العمل على أجزاء مختلفة من التطبيق في فرق كبيرة ويجعل المشروع قابل للتوسع فيما بعد. وما سبق يُسهل عملية Unit Tests لكل جزء من التطبيق بمعزل عن الآخر.
  10. هل يظهر لك محتوى المسار عند التوجه للرابط التالي؟ https://academy.hsoub.com/courses/python-application-development/python-intro/ في حال لا، أرجو التواصل مع مركز المساعدة بشأن ذلك وسيتم حل المشكلة.
  11. كلاهما متقاربان من حيث الاستخدام، وستجد أنّ Flutter مطلوب بكثرة على مواقع العمل الحر، أما في الشركات فستجد أنّ React Native مستخدمة بنسبة أكبر بسبب إعتماد الإطار على لغة جافاسكريبت وReact المستخدمين بكثرة أيضًا من ناحية، وأقدمية إطار React Native من ناحية أخرى. بالنسبة للإحصائيات ستجد أنّ React Native لا يزال يتفوق في التطبيقات الضخمة الفعلية، حيث يشغل 12.57% من أفضل 500 تطبيق أمريكي، مقابل 5.24% فقط لـFlutter. عامًة مع البنية الجديدة تعمل React Native على سد فجوة الأداء بشكل كبير حتى في التطبيقات التي تتطلب أداء عالي، لذا، حجة Flutter أسرع دائمًا بدأت تضعف. من ناحية Flutter تتميز بقدرتها على رسم واجهة المستخدم الخاصة بها باستخدام محرك Skia، بالتالي التطبيق سيبدو ويعمل بنفس الطريقة على كل المنصات (iOS, Android, Web, Desktop)، وتلك ميزة قوية للتطبيقات الكبيرة التي تهتم بتجربة المستخدم المتسقة، لكن ذلك ميزة وعيب في نفس الوقت حيث مكونات الواجهة ليست أصلية كما في React Native وتبدوا مختلفة عن نظام التشغيل. وللعلم في الإصدار 3 يتم استخدام Platform Adaptive Widgets مثل Cupertino لـiOS وMaterial لـAndroid لتحاكي السلوك الأصلي، لكن ذلك يضعف الاتساق ويزيد التعقيد. كذلك عندما تضيف Google ميزة جديدة في Android 16 مثلاً مكون UI جديد أو API حساسية جديد، فلا تستطيع استخدامها فوريًا، يجب إنتظار تضمين ذلك في Flutter لمحاكاة تلك الميزات في محرك Skia، بينما في React Native تستطيع استخدام الميزات الجديدة مباشرًة لأنها تستخدم مكونات المنصة نفسها.
  12. يوجد مشروع استخراج البيانات من الويب Web scraping، وأيضًا يوجد مشروع في المسار الأول من دورة بايثون "تطبيق إدارة مهام"، تستطيع دراسة المسار الأول من جميع الدورات بشكل مجاني، لذا تفقد المشروع وقم بالتطبيق بعد الاستيعاب. لكن أنصحك بدراسة المسار الأول من دورة بايثون بالكامل "أساسيات بايثون" حيث يوجد به تفصيل أكثر عن الأساسيات، والدروس المتشابهة تعتبر مراجعة لما درسته فشاهدها سريعًا مع التطبيق العملي.
  13. محلل البيانات يعمل في دورة سريعة وتكرارية بحيث يبحث عن تفسير لسؤال معين مثل تحليل معدلات الشفاء في الأشهر الماضية في قطاع ما، ثم يستخرج البيانات ويحلل ويقدم التقرير ثم ينتقل للسؤال التالي، والعملية تستغرق أيام أو أسابيع، و يتعامل مع بيانات منظمة أي جداول وقواعد بيانات حجمها متوسط. بينما عالم البيانات يعمل في دورة بحثية طويلة، يُحدد المشكلة مثل يعمل بناء نموذج يتنبأ باحتمالية إصابة مريض بمضاعفات، عن طريق جمع وتنظيف بيانات ضخمة ثم هندسة الميزات، ثم يبني ويختبر نماذج متعددة ثم ينشر النموذج ويراقب الأداء، وما سبق يستغرق شهور، وبالتالي هو يتعامل مع بيانات غير منظمة كالنصوص، صور، فيديو، صوت وبيانات ضخمة Big Data تصل إلى TeraByte أو PetaByte، ويستخدم أدوات مثل Spark أو Hadoop. وعامًة يتم التخصص كمحلل بيانات في البداية ثم تعلم المزيد من المهارات للوصول لمرحلة عالم بيانات، عبر تعلم: البرمجة المتقدمة الرياضيات المتقدمة ومنها الجبر الخطي وحساب التفاضل. هندسة الميزات والنماذج MLOps وهي نشر وصيانة نماذج ML.
  14. بالطبع، لكن لم تحددي ما هو نوع التطبيق أو المشروع؟ عامًة مشاريع الويب يتم تنفيذها من خلال إطار Django أو Flask. وقبل البدء، يجب دراسة أساسيات بايثون ومنها: المتغيرات وأنواع البيانات. التحكم في تدفق منطق البرنامج من خلال if وحلقة التكرار. الدوال والكائنات. التعامل مع الملفات والأخطاء. البرمجة الكائنية. وكذلك أساسيات قواعد البيانات، وأيضًا أساسيات الويب وهم HTML, CSS, JavaScript ثم تعلم إطار جانغو أو Flask وذلك بالنسبة لمشاريع الويب، أما لبناء تطبيق هاتف فيتوفر إطار BeeWare
  15. الأمور المالية تتم من خلال مركز المساعدة، أرجو توضيح طلبك وسيتم الرد عليك.
  16. لديك مشكلة في عدم تطابق طول البيانات عند إنشاء إطار البيانات النهائي، بسبب استخدام متغير غير معرف data_test_copy بدلاً من استخدام نفس إطار البيانات الذي يحتوي على الميزات أي استخدم df أو test لاستخراج date_id وليس data_test_copy. أيضًا الدالة حددت لها بأن تُعيد float لكن النتيجة هي pd.DataFrame، يجب تصحيح ذلك إلى pd.DataFrame import pandas as pd import tensorflow as tf import kaggle_evaluation import os col = ['D1','D2','D3','D4','D5','D6','D7','D8','D9','E1','E10','E11','E12','E13','E14', 'E15','E16','E17','E18','E19','E2','E20','E3','E4','E5','E6','E7','E8','E9','I1', 'I2','I3','I4','I5','I6','I7','I8','I9','M1','M10','M11','M12','M13','M14','M15', 'M16','M17','M18','M2','M3','M4','M5','M6','M7','M8','M9','P1','P10','P11','P12', 'P13','P2','P3','P4','P5','P6','P7','P8','P9','S1','S10','S11','S12','S2','S3', 'S4','S5','S6','S7','S8','S9','V1','V10','V11','V12','V13','V2','V3','V4','V5', 'V6','V7','V8','V9','is_scored','lagged_risk_free_rate', 'lagged_market_forward_excess_returns'] model_path = 'AlphaPulse.keras' if not os.path.exists(model_path): model_path = '/kaggle/working/AlphaPulse.keras' model = tf.keras.models.load_model(model_path) def predict(test: pd.DataFrame) -> pd.DataFrame: df = test.copy() missing_cols = set(col) - set(df.columns) if missing_cols: raise ValueError(f"missing columns: {missing_cols}") x_test = df[col] preds = model.predict(x_test, verbose=0) allocation = preds.clip(0, 2).reshape(-1) if len(allocation) != len(df): raise ValueError(f"prediction length ({len(allocation)}) doesn't match data length ({len(df)})") return pd.DataFrame({ "date_id": df["date_id"].values, "prediction": allocation }) inference_server = kaggle_evaluation.default_inference_server.DefaultInferenceServer(predict) if os.getenv('KAGGLE_IS_COMPETITION_RERUN'): inference_server.serve() else: inference_server.run_local_gateway(('/kaggle/input/hull-tactical-market-prediction/',))
  17. اسم الخط هو Noto Kufi Arabic ستجده في google fonts
  18. ترتيب المسارات لديك في ملف routes\book.routes.ts سبب المشكلة، حيث يتم مطابقة المسارات من أعلى لأسفل عند إرسال طلب، بالتالي إرسال طلب GET إلى /api/book/cart، فيتم مطابقته مع أول مسار وهو bookRouter.get('/:id', getBookById) والذي يعتبر السلسلة النصية cart كقيمة للمُعرف id. لذا قم بنقل المسار التالي من السطر 36 إلى 30 قبل bookRouter.get('/:id', getBookById); bookRouter.get('/cart', isAuthenticate, getCartUser);
  19. يجب أولاً الحصول على المفتاح من خلال التوجه إلى: https://aistudio.google.com/u/0/api-keys ثم اضغط على create Api key أعلى اليمين، ثم أدخل أي اسم للمفتاح، ثم اضغط على create key وانسخ المفتاح. ثم توجه إلى جوجل كولاب ومن القائمة الجانبية على اليسار اضغط على أيقونة المفتاح باسم Secrets، ثم اضغط على Add a new secret، وفي حقل name، اكتب GOOGLE_API_KEY ويجب كتابة ذلك الاسم فقط. وفي حقل value، الصق مفتاح API الذي نسخته، ثم تأكد من تفعيل خيار Notebook access. ثم في خلية جديدة في Colab، قم بتشغيل الأمر التالي لتثبيت مكتبة Google AI. !pip install -q -U google-generativeai ثم كتابة الكود التالي للإتصال: import google.generativeai as genai from google.colab import userdata try: api_key = userdata.get('GOOGLE_API_KEY') genai.configure(api_key=api_key) except userdata.SecretNotFoundError as e: print(f"Secret not found: {e}") print("Please add the GOOGLE_API_KEY secret in the Colab secrets manager.") except Exception as e: print(f"An error occurred: {e}") model = genai.GenerativeModel('gemini-pro') prompt = "اشرح لي فكرة من مشاريع نوبل 2025" response = model.generate_content(prompt) print(response.text)
  20. في حال وصلت الرسالة وقمتي بإدخال كود التفعيل ثم انتظرتي لمدة ما بين 24 إلى 48 ساعة، إذن يجب التواصل مع مركز المساعدة لحل المشكلة، من خلال الرابط التالي: https://support.hsoub.com/conversations
  21. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  22. تقصد كود التحقق لمنصة حسوب؟ ربما هناك ما زال حظر على سوريا من قبل بعض مزودي الخدمة، حاول استخدام رقم آخر، وإن لم تصل الرسالة حاول استخدام رقم من خارج سوريا. ستجد أنه بعد تجربة إرسال كود التفعيل أكثر من مرة سيظهر لك خيار الإرسال لرقم آخر، لذا استغل تلك الميزة لإرسال الكود لرقم لا يوجد به تلك المشكلة، وسيتم تفعيل رقم جوالك أنت، ستجد تفصيل هنا:
  23. المواصفات جيدة من حيث الذاكرة العشوائية 24 جيجابايت ووحدة التخزين من نوع SSD، لكن المعالج وكرت الشاشة غير كافيين لتشغيل أو تدريب نموذج قوي، لذا ستحتاج إلى تثبيت نماذج بسيطة لتجربتها محليًا بحجم 1B أو 3B، وللتدريب استخدم منصة جوجل كولاب وسيتم شرح ذلك بالدورة.
  24. يجب دائمًا تفقد الأخطاء في الـ logs على الاستضافة، هل يوجد أخطاء حاليًا؟
  25. اختبر المشروع على حاسوبك إذن، وقم بتبديل رابط قاعدة البيانات برابط atlas وقم بمحاولة تسجيل حساب جديد، هل يتم الأمر بشكل سليم؟
×
×
  • أضف...