-
المساهمات
20171 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
489
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
تتوفر الأكواد المصدرية فقط للمشروع الذي نعمل عليه، وأيضًا الملفات التي تحتاجها لتنفيذ المشاريع، وتستطيع الوصول لذلك من خلال رابط أسفل بداية كل درس (المدخل أو المقدمة) في المسارات. بالنسبة للتلخيص فلا يتوفر حاليًا مُلخصات للدروس، تستطيع الاستفسار أسفل الدروس في التعليقات عما تحتاجه وسيتم توضيحه لك. عامًة كل شخص له أسلوب يُناسبه في الدراسة، لكن المهم هو تجنب المشاهدة السلبية وتخصيص وقت أكبر للتطبيق العملي، فالبرمجة عبارة عن تفكير منطقي لحل مشكلة ثم تنفيذ ذلك من خلال كتابة الكود. والبعض يُفضل كتابة مُلخصات لكل شيء، لكن لا أنصحك بذلك، اكتفي فقط بكتابة ملاحظات ومُلخصات ورسومات للأمور النظرية أو معلومة معينة تريد الإحتفاظ بها للعودة إليها للمراجعة. بينما البرمجة نفسها اكتفي بالتطبيق العملي فهو الأهم وبدونه فلا معنى للمُلخصات النظرية مهما كتبت، ببساطة لن تستطيع قيادة سيارة بمشاهدة فيديو صحيح؟
-
من خلال استخدام صورة النموذج كخلفية، بمعنى قبل البدء، قس أبعاد ورقتك بدقة وهما الطول والعرض، ثم في Crystal Reports، توجه إلى File ثم Page Setup. وألغِ تفعيل خيار No Printer، ثم اختر حجم الورقة المناسب، وفي حال الحجم غير قياسي أي ليس A4، فيجب عليك تعريف حجم مخصص Custom Paper Size من إعدادات الطابعة في الويندوز أولاً، ثم اختياره داخل الكريستال ريبورت. واجعل الهوامش Margins مساوية للصفر أو صغيرة جدًا لتتحكم بالمكان.
-
أتفهم ما تُشعر به إبراهيم وشكرًا على شعورك تجاه المدربين، لمساعدتك بشكل أفضل، ما هو عمرك وما هو مجال دراستك الجامعية إن أمكن؟ وكذلك ما هو الوقت المتاح لك للدراسة؟
- 7 اجابة
-
- 1
-
-
الدورة ليس تخصصها مجال تحليل البيانات، ما ستتعلمه بها هو جزء كبير من الأساسيات اللازمة لذلك المجال، بعد ذلك ستحتاج تعلم أساسيات برنامج الـ Excel، وبالأخص دوال ومعادلات SUM, AVERAGE, VLOOKUP, INDEX, و MATCH. ثم دورة لتعلم الإحصاء والإحتمالات، سواء من Khan Academy أو من مصادر أخرى، ثم دورة أخرى متخصصة في تحليل البيانات باستخدام برنامج الـ Excel. ثم تعلم قواعد البيانات ولغة الـ SQL وقد تعلمت ذلك بالدورة بالفعل، لكن ستحتاج إلى تعلم SQL for Data Analytics للتعمق قليلاً والتعرف على مفاهيم متقدمة منها JOINs بأنواعها، GROUP BY, Window Functions, Subqueries, CTEs، وللعلم معظم مقابلات العمل لمحللي البيانات تتضمن أسئلة SQL متقدمة. الخطوة التالية هي تعلم أحد برامج التحليل والتصوير المرئي للبيانات مثل Power BI أو Tableau أو Google Looker Studio، وبالطبع الأفضل برنامج Power BI فهو المطلوب في سوق العمل. كما أنه يجب عليكِ الاستمرار في التطبيق بكثافة على بيانات حقيقية لتحليلها كلما تقدمت في المسار التعليمي، ومن أشهر المواقع التي يمكنك الحصول منها على بيانات لتقم بتحليلها هو موقع Kaggle الشهير، ولديك أيضًا Data.gov. للتبسيط الصورة التالية جيدة: وفي المرحلة المتقدمة ستحتاج إلى دراسة تعلم الآلة، وذلك ما ستتعلمه بالدورة بالفعل، بالتالي تحتاج إلى دراسة القليل خارج الدورة فيما يخص الأساسيات. ستجد هنا تفصيل لما تحتاجه: https://roadmap.sh/data-analyst
- 2 اجابة
-
- 1
-
-
ستجدين أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
-
جيد، لكن لم تقم بمعالجة البيانات أي تنظيفها، فالنصوص تحتوي على شرطات سفلية _ ومسافات زائدة ورموز مثل - أو . أو أقواس) وهي تشوش على النموذج وتجعله يظن أن النصوص مختلفة. أيضًا استخدام حلقتين متداخلتين أمر غير عملي وبطيء، كما أن المخرجات تكون مجرد أزواج يصعب تتبعها. تتوفر دالة جاهزة في مكتبة sentence-transformers تسمى paraphrase_mining لاستخراج الجمل المتشابهة بسرعة فائقة وترتيبها حسب نسبة التطابق. import pandas as pd import re from sentence_transformers import SentenceTransformer, util def clean_text(text): if not isinstance(text, str): return "" text = re.sub(r'[^\w\s]', ' ', text) text = text.replace('_', ' ') text = " ".join(text.lower().split()) return text file_path = "files/similar_services.xlsx" try: df = pd.read_excel(file_path) except Exception as e: print(f"Error loading file: {e}") exit() if 'name' not in df.columns: target_column = df.columns[2] else: target_column = 'name' print(f"Processing column: {target_column}") services_original = df[target_column].astype(str).tolist() services_cleaned = [clean_text(txt) for txt in services_original] print("Loading Model...") model = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2") print("Calculating Similarity...") matches = util.paraphrase_mining(model, services_cleaned, show_progress_bar=True, top_k=10) threshold = 0.75 output_data = [] for score, i, j in matches: if score >= threshold: if i != j: output_data.append({ "Service_ID_1": i + 2, "Service_Text_1": services_original[i], "Service_ID_2": j + 2, "Service_Text_2": services_original[j], "Similarity_Score": round(score * 100, 2) }) result_df = pd.read_json(pd.io.json.json_normalize(output_data).to_json()) if not result_df.empty: result_df.to_excel("similar_services_final.xlsx", index=False) print(f"Done! Found {len(result_df)} similar pairs. Saved to 'similar_services_final.xlsx'") else: print("No similar services found with the current threshold.") نسبة التشابه Threshold جعلتها 0.75، لأنّ أحيانًا الترجمة أو اختلاف ترتيب الكلمات مثل خلع ضرس و ضرس خلع يعطي نسبة أقل من 0.80، لذا 0.75 ستظهر لك نتائج شاملة أكثر، وتستطيع حذف غير المناسب من ملف الإكسل الناتج. لو وجدت أن النتائج لا تزال غير دقيقة بنسبة 100%، فالسبب غالبًا هو تكرار المعنى بكلمات مختلفة، لذا استخدم ميزة Community Detection أي اكتشاف المجموعات والتي تقوم بتجميع الخدمات المتشابهة في مجموعات Cluster بدلاً من أزواج. مثلاً تجميع لك كل خدمات الحشوات مع بعض في مجموعة واحدة، قم بتجربة الكود التالي بعد تحميل الموديل: embeddings = model.encode(services_cleaned) clusters = util.community_detection(embeddings, min_community_size=2, threshold=0.75) for i, cluster in enumerate(clusters): print(f"\nGroup {i+1}:") for sentence_id in cluster: print("\t", services_original[sentence_id])
-
يتوفر React وNext.js وذلك في دورة جافاسكريبت، لكن Angular لا يتوفر شرح لها بدورة الأكاديمية، والمشترك بينهما هو لغة جافاسكريبت، وأيضًا المفاهيم التالية: مفهوم المكونات إدارة الحالة تطبيقات الصفحة الواحدة SPA Server-Side Rendering (SSR) لذا في حال تعلمت react وNext.js ستجد أن تعلم أنجولار أصبح أسهل، عامًة يوجد شرح نصي فقط من خلال المقالات البرمجية بالأكاديمية: مقالات Angular بالأكاديمية
-
يتم تحديث الدورة بشكل مستمر، وحاليًا ستتعلم جزء كبير من الأساسيات في الدورة اللازمة لتطوير AI Agents. بجانب أن مسار التعلم المعزز Reinforcement Learning قائم بالكامل على فكرة وجود Agent يتفاعل مع بيئة ويتخذ قرارات للحصول على مكافأة، وهنا ستتعلم كيف يبني الوكيل استراتيجيته بنفسه. وفي مسار تطبيقات عملية على النماذج النصية الكبيرة LLMs، يتم شرح كيفية تطوير وكلاء بالنهج الحديث، حيث التوجه حاليًا هو بناء وكلاء أذكياء Autonomous Agents باستخدام النماذج اللغوية مثل GPT كعقل للمفكر، واستخدام أدوات لتنفيذ المهام مثل استخدام LangChain. وفي مسار تطوير نماذج ذكاء اصطناعي لمتجر إلكتروني، يتم التطبيق بشكل عملي من خلال شرح كيفية بناء Chatbot أو وكيل خدمة عملاء ذكي، وهو أحد أشهر أنواع الـ AI Agents.
-
يتوفر بالفعل محتوى عن ذلك بالدورة، في المسارات التالية: تطبيقات عملية على النماذج النصية الكبيرة LLMs، فالنماذج اللغوية الكبيرة LLMs هي حاليًا أشهر أشكال الذكاء الاصطناعي التوليدي وتقوم بتوليد النصوص والأكواد. تطبيقات عملية باستخدام المحوّلات Transformers، وهو مسار أساسي أيضًا، لأن معمارية المحوّلات هي البنية التحتية التي تعمل عليها معظم النماذج التوليدية الحديثة مثل GPT و BERT. التعلم العميق Deep Learning، يتضمن شرح للمفاهيم النظرية للنماذج التوليدية كالشبكات التنافسية التوليدية GANs والمشفرات التلقائية المتغيرة VAEs.
-
fetch ليس الغرض منها تحديد كمية البيانات، فالمتحكم هو المسؤول الأول والأساسي عن تلك العملية، حيث أن fetch هي مجرد وسيلة نقل للطلب من المتصفح إلى الخادم، ولا تملك أي صلاحية للوصول المباشر إلى قاعدة البيانات أو التحكم في كيفية استرجاع البيانات منها. يتوجب عليك كتابة المنطق الخاص بتقسيم البيانات داخل المتحكم في الواجهة الخلفية، لأنّ عملية جلب البيانات تعتمد على استعلامات SQL أو NoSQL التي يتم تنفيذها على الخادم، فالمتصفح يرسل فقط الرغبة في الحصول على عدد معين عبر Query Parameters، ويجب على الخادم أن يفهم تلك الرغبة وينفذها. بمعنى تبدأ العملية عندما تقوم بإرسال الطلب عبر fetch بتمرير المعايير مثل ?limit=10 ضمن الرابط، والتي يستقبلها المتحكم ويقوم بقراءة تلك القيم ومعالجتها، ثم دمجها داخل استعلام قاعدة البيانات باستخدام أوامر مثل LIMIT و OFFSET، وبالتالي يتم استخراج العشرة صفوف المطلوبة فقط من القرص الصلب للخادم وإرسالها عبر الشبكة. وفي حال لا يوجد ذاك المنطق في الخلفية، فسيقوم الخادم بتجاهل تلك المعاملات المرسلة في الرابط، وسيعيد كامل محتوى الجدول في قاعدة البيانات، بالتالي fetch ستقوم بتحميل حجم بيانات ضخم، ويتدهور الأداء حتى لو قمت بعرض جزء صغير منها لاحقاً بواسطة جافاسكريبت، فالهدف الأساسي هو تقليل البيانات المنقولة عبر الشبكة وليس فقط تقليل المعروض على الشاشة.
-
هناك ثلاث ركائز أساسية وهي Effectiveness و Efficiency و Satisfaction، والتي تعني قياس قدرة المستخدم على إكمال المهام بدقة، والموارد أو الوقت المستغرق لذلك، ومدى رضا المستخدم عن التجربة، ولتطبيق تلك المعايير عمليًا وفي وقت قصير، يتعين عليك البدء بإجراء Heuristic Evaluation سريع، حيث تقوم بمراجعة واجهات التطبيق بنفسك أو بمساعدة خبير بناءً على قواعد Jakob Nielsen العشر لسهولة الاستخدام قبل إطلاق التطبيق للمستخدمين، وسيساعدك ذلك على اكتشاف الأخطاء البديهية في واجهة المستخدم وتصحيحها مبكراً مما يوفر الوقت لاحقاً. عند الانتقال لمرحلة الاختبار مع المستخدمين الفعليين، فأسلوب Guerrilla Usability Testing هو الأنسب لمشاريع التخرج نظراً لقلة تكلفته وسرعته. ولتعزيز دقة النتائج رقمياً، يجب عليك دمج أدوات التحليل البرمجية مثل Firebase Analytics داخل الكود المصدري للتطبيق، والذي يحتوي على دوال برمجية تقوم بتتبع سلوك المستخدم تلقائيًا. ولقياس المعيار الثالث وهو Satisfaction، استخدم مقياس System Usability Scale المعروف اختصاراً بـ SUS، والذي يعتبر المعيار الصناعي الأسرع والأكثر موثوقية، ويتكون من عشرة أسئلة قصيرة تعرض على المستخدم بعد انتهاء التجربة مباشرة عبر Dialog بسيط داخل التطبيق أو استبيان خارجي. وتتمحور الأسئلة حول مدى تعقيد النظام وحاجة المستخدم للدعم الفني، ثم يتم حساب النتيجة النهائية وفق معادلة خاصة لتعطي رقماً من 100، ولو تجاوزت النتيجة 68 يعتبر تطبيقك قابلاً للاستخدام بمستوى جيد، أما إن قلت عن ذلك فيدل على وجود مشاكل جوهرية في تجربة المستخدم تحتاج لإعادة نظر.
- 1 جواب
-
- 1
-
-
بالطبع يجب استدعاء fetch كل مرة تصل فيها إلى نهاية الصفحة أو بالقرب منها حسب تصميم الصفحة لديك، والأفضل بالقرب منها وذلك بالإعتماد على Intersection Observer API في المتصفح. لا تقم أبدًا بجلب كل البيانات، فذلك من شأنه التأثير على الأداء بشكل كبير، وأيضًا استهلاك الموارد بدون داعٍ. من خلال CORS وهي آلية أمان مدمجة في المتصفحات تمنع أي موقع أو أصل - Origin من طلب موارد من موقع آخر إلا إذا سمح الموقع الآخر بذلك صراحًة، والأصل يتكون من البروتوكول، اسم النطاق والمنفذ. أي بتحديد النطاقات المسموح لها بالإتصال بالخادم وتمرير ذلك إلى مكتبة CORS وذلك بالنسبة لجافاسكريبت، أما في PHP فتتحقق من جود الـ origin في الطلب.
- 1 جواب
-
- 1
-
-
ما هو تخصصك؟ هل تنوي استخدامه لدراسة الفيزياء أم تنوي دراسة مجال الذكاء اصطناعي وتسأل عن الأساسيات المطلوبة؟ عامًة لست بحاجة إلى دراسة الفيزياء، بل أساسيات الرياضيات: ابدء بالجبر الخطي ودراسة المصفوفات، العمليات الأساسية، الضرب النقطي. ثم التفاضل ودراسة المشتقات، قاعدة السلسلة، التدرج. ثم الإحصاء ودراسة المتوسط، الانحراف المعياري، التوزيعات الأساسية بعد ذلك كلما واجهتك مفاهيم رياضية، توقف وادرسها. ستجد تفصيل هنا:
-
البرمجة ليست مثل اللغة الإنجليزية يمكن ممارستها بشكل شفهي أو كتابة نصوص عادية أو الاستماع للشرح فقط، ستحتاج إلى التفاعل بشكل نشط، واستخدام محرر الأكواد لتطبيق ما تعلمته. وكتابة الكود على الهاتف عملية صعبة بطبيعة الحال، لذا لحين توافر لابتوب حاول شراء لوحة مفاتيح لاسلكية وربطها بهاتفك، من أجل أن تتمكن من كتابة الكود الكود بشكل قريب من الحاسوب. واستخدام نسخة الويب من vscode لكتابة الكود وتثبيت المكتبات اللازمة للمشاريع. https://vscode.dev/ وفي حال دورة الذكاء الاصطناعي، فاستخدم جوجل كولاب بدلاً من jupyter.
- 2 اجابة
-
- 1
-
-
الملفات الكبيرة عليك بمعالجتها عن طريق التقسيم Chunking، حيث يتم تقسيمها إلى مئات القطع الصغيرة، وفي وقت التقييم، يسترجع النظام فقط الأجزاء ذات الصلة بالمعيار المحدد، بمعنى كل الملفات تدخل نفس الـ pipeline، ويتم استخلاص نصوصها، تقسيمها، وترميزها في نفس قاعدة البيانات. عند البحث، سيعثر النظام على القطع ذات الصلة بغض النظر عن الملف الأصلي الذي أتت منه. والملفات الصغيرة سيتم تقسيمها إلى قطعة واحدة أو بضع قطع وتتم فهرستها كالمعتاد. لذا شكل الـ Pipeline: مرحلة الإدخال والمعالجة المسبقة: استقبال الملفات والصور. استخلاص النصوص من الملفات وللملفات النصية الأمر مباشر لا مشكلة، لكن لملفات الصور، ستحتاج إلى تقنية OCR. ثم تنظيف النصوص بإزالة الأحرف غير الضرورية، التنسيقات وخلافه. 2. التقسيم Chunking، بتقسيم النص الكامل المستخرج من كل الملفات إلى Chunksأصغر وذات معنى، مثلاً، كل قطعة عبارة عن فقرة أو 300 كلمة. 3. مرحلة الترميز والفهرسة: تحويل كل قطعة نصية إلى تمثيل رياضي يسمى Vector Embedding أي متجه رقمي يلتقط المعنى الدلالي للقطعة. ثم تخزين كل المتجهات في قاعدة بيانات متخصصة تسمى Vector Database مثل ChromaDB, Pinecone, FAISS والتي تتيح البحث عن المعلومات بناءًا على المعنى وليس فقط الكلمات المفتاحية. 4. مرحلة الاسترجاع: تحويل السؤال أو القاعدة أو الشرط الذي تريد تقييم المستندات على أساسه إلى Vector Embedding. ثم استخدام المتجه الناتج للبحث في قاعدة البيانات عن أكثر القطع النصية تشابهًا وذات صلة من مستنداتك. 5. مرحلة التوليد والتقييم: بعد العثور على القطع النصية الأكثر صلة التي تم استرجاعها في الخطوة السابقة، تُرسل مع السؤال أو القاعدة أو الشرط الذي تريد تقييم المستندات على أساسه إلى نموذج لغوي كبير LLM. إعطاء النموذج مهمة محددة بكتابة Prompt ليقوم بالتقييم، وتوفير التغذية الراجعة، تحديد النتيجة، والإجابة على سؤال هل المعلومات كافية؟
- 3 اجابة
-
- 1
-
-
ما تقصده هو المنطق البرمجي، وأسهل حل هو تقسيم ما تريد تنفيذه إلى أجزاء ثم العمل على جزء جزء وربط المنطق ببعضه البعض، وليس النظر للمشكلة ككل، وأيضًا كتابة الكود هي الخطوة الأخيرة وقبلها يجب التفكير في طريقة حل المشكلة، بمعنى ستكتب كود زائف Pseudocode عبارة عن كتابة خطوات الحل بلغة عادية عربية أو إنجليزية ولكن بأسلوب يشبه الكود، وهنا ستقوم بالتركيز على المنطق فقط، بعيدًا عن تعقيدات الـ Syntax. بمعنى لتطوير برنامج لتحديد هل الرقم زوجي أم فردي، ستقوم بكتابة الكود الزائف التالي: ابدأ البرنامج. اطلب من المستخدم إدخال رقم. خزن الرقم في متغير اسمه number. إذا كان باقي قسمة number على 2 يساوي 0: اطبع الرقم زوجي. وإلا: اطبع الرقم فردي. أنهِ البرنامج. وتصبح ترجمته إلى بايثون مباشرة وسهلة جدًا: number = int(input("**Enter a number:** ")) if number % 2 == 0: print("**The number is even**") else: print("**The number is odd**") وفيما بعد عند زيادة تعقيد المشروع، استخدم أيضًا المخططات الانسيابية Flowcharts وهي تمثيل مرئي لتدفق المنطق في البرنامج. وتنمية مهارة المنطق البرمجي بحاجة إلى ممارسة ووقت، لذا لا تستعجل النتائج، وحاول توظيف ما تعلمته بشكل عملي وربط الدروس ببعضها البعض، بمعنى تنفيذ ما تعلمته في الدروس السابقة في التمرين الخاص بالدرس الحالي وهكذا.
- 4 اجابة
-
- 1
-
-
البرنامج منطقه بسيط، وهو إختبار لك، لذا توفير الحل بشكل مباشر لا استفادة به، عليك تجزأة المطلوب إلى أجزاء أو مهام أصغر ثم العمل عليها وليس النظر للمشكلة أو المطلوب ككل. ولا تقم بكتابة الكود أولاً، بل فكر في المنطق الذي ستنفذ من خلاله البرنامج واكتبه في شكل خطوات ثم حوله إلى كود، ابحث عن pseudo code لتتفهم الفكرة. ستحتاج إلى دراسة التالي لتنفيذ البرنامج:
-
لا يتوفر للأكاديمية تطبيق للهاتف في الوقت الحالي، لكن تستطيع الدراسة من خلال متصفح الهاتف، وعامًة الدراسة من خلال الهاتف بالنسبة للبرمجة ليست عملية، حيث يجب التطبيق بشكل عملي وليس المشاهدة فقط، ولا مشكلة في ذلك بالنسبة للدروس النظرية، أما العملية فيجب المشاهدة والتطبيق في نفس الوقت. وحتى الدروس النظرية يجب تلخيصها في نقاط أو بشكل مختصر للعودة إلى التلخيص عند المراجعة.
-
حاليًا لا تتوفر عروض بخصوص ذلك، لكن في أوقات مختلفة من العام يتم توفير عرض دورتين بسعر دورة واحدة، وذلك في أوقات مثل العطلة الصيفية أو رمضان وأحيانًا في فترة التخفيضات السنوية الخاصة بالجمعة البيضاء أو في بداية العام. ومنذ فترة انتهى ذلك العرض ويتجدد خلال العام في أوقات مختلفة، وربما يتغير العرض، لكن الفكرة أن هناك عروض خلال العام، تابع الأكاديمية. أيضًا أرجو سؤال مركز المساعدة عن توافر كوبونات حاليًا أم لا، فأحيانًا يتوافر ذلك. كيفية استخدام الكوبون للحصول على الدورات
-
هما الأساس لأي خوارزمية من الناحية النظرية، حيث Time Complexity يقيس عدد العمليات التي تقوم بها الخوارزمية كدالة في حجم المدخلات، بمعنى كلما زاد حجم المدخلات، كم من الوقت الإضافي سيستغرقه البرنامج؟ فالخوارزمية البطيئة لا مشكلة بها لـ 10 عناصر، لكنها ستستغرق ساعات أو أيام لمعالجة مليون عنصر، بالتالي المقياس يساعدنا على فهم قابلية الـ Scalability أو التوسع للحل. وSpace Complexity يقيس مقدار الذاكرة الإضافية التي تستخدمها الخوارزمية كدالة في حجم المدخلات، أي بزيادة حجم المدخلات، كم من الذاكرة الإضافية سيحتاجها البرنامج؟ حيث استخدام ذاكرة هائلة سيؤدي إلى بطء النظام أو انهياره، خاصة في البيئات ذات الموارد المحدودة مثل الهواتف المحمولة أو الخوادم المشتركة. لكن عمليًا، هناك مقاييس أخرى، وأهما مدى نسبة صحة الخوارزمية بالنسبة لمختلف الحالات، بالإضافة إلى مدى بساطة الخوارزمية ومدى تعقيدها، وأداء ذاكرة التخزين المؤقت، قابلية التوسع في الأنظمة الموزعة، الاستقرار واستهلاك الطاقة.
- 4 اجابة
-
- 1
-
-
بالنسبة للاستضافات المجانية، يتوفر render والتي توفر لك استضافة خادم node.js وكذلك توفير قاعدة بيانات Postgres وMySQL، لكن ستحتاج إلى credit card أي بطاقة دفع من أجل تفعيل حسابك والحصول على باقة مجانية ولن يتم خصم منك شيء فقط للتفعيل. وفي حال لا يتوفر بطاقة لتفعيل حسابك، تتوفر استضافة vercel حيث توفر خادم لاستضافة مشاريع node.js، لكن لاستضافة قاعدة البيانات ستحتاج إلى استضافة إضافية وهي Supabase وستحصل على رابط للإتصال بقاعدة البيانات من خلال vercel أي ستضع ذلك الرابط في متغيرات البيئة في مشروعك على Vercel. وبالنسبة للطريقة فيجب أولاً رفع المشروع على github لكي تتمكن من نشره على الاستضافة، ثم تفقد الشرح التالي فالطريقة مشابهة لكن تختلف واجهة المستخدم فقط: وفي حال واجهت صعوبة، قم بالبحث على اليوتيوب عن how to deploy express.js project on render وتستطيع الاستفسار هنا أيضًا.
- 2 اجابة
-
- 1
-
-
الدورات بالأكاديمية ليست مُحددة المدة، عند الإشتراك تصبح متاحة لك مدى الحياة، بالإضافة التحديثات التي تحدث على الدورة كل فترة ستحصل عليها مجانًا. كذلك تستطيع الحصول على الشهادة في أي وقت، ولا يوجد مدة مُحددة لإنهاء الدورة خلالها بعد الإشتراك.
- 2 اجابة
-
- 1
-
-
جيد جدًا، لكن هل المقصود تطبيق للهاتف أم تطبيق ويب؟ بمعنى هل سيتم استخدامه من قبل المتصفح، أم المطلوب تطبيق متكامل؟ عامًة تستطيعي تطوير تطبيق ويب من خلال django ثم الاستفادة من تقنية PWA لتثبيت تطبيق على الهاتف، و بنسبة كبيرة ذلك كافٍ جدًا حيث تطبيق الويب التقدمي هو في الأساس موقع ويب مصمم ليبدو ويعمل كتطبيق هاتف أصلي. لكن في حال المطلوب رفع تطبيق على متجر جوجل بلاي، فستحتاجين إلى استخدام Java وتطوير تطبيق أندرويد من خلال Android Studio و Java SDK لبناء تطبيق أندرويد أصلي. لكن لو أردتي نشر التطبيق على متجر آبل أيضًا، فيجب تطويره من خلال بايثون وإطار BeeWare. وللعلم أيضًا تستطيعي تعلم C# فهي قريبة من Java و C++ والإعتماد على إطار NET. الخاص بها لتطوير تطبيق وتطبيق هاتف أيضًا لكل من أندرويد وiOS
