-
المساهمات
3115 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
29
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف17
-
أولا يجب تقسيم الملفات, حيث نقوم بإنشاء مجلد للدورة وتقسيمه إلى مجلدات لكل مسار مجلد بعد ذلك نضع التطبيقات العملية البسيطة في تلك المجلدات بشكل منظم ثم نقوم برفع المجلد بالكامل إلى مستودع على GitHub. أما بخصوص المشاريع العملية الكاملة أي تطبيق ويب كامل مثلاً فنقوم بإنشاء مجلد منفصل له ثم رفع الكود المصدري الخاص به بعد الإنتهاء على منصة GitHub في مستودع منفصل أي مستودع لكل مشروع. ويمكنك قراءة الإجابة التالية لمزيد من التفاصيل حول كيفية تعلم git ورفع المشاريع :
-
يمكنك إتمام أى أربع مسارات تريد ولا شرط أن يكونوا مسارات معينة و لكن بالطبع يجب إنهاء أول مسار وهو الأساسيات فبدونه لن تستطيع الإستمرار في الدورة. وأيضا سيتوجب تسليم جميع الأكواد والملفات التي قمت بإنهاء المسارات بها . وخلال الإختبار الخاص بالشهادة سيتم سؤالك فقط في تلك المسارات التي أنهيتها . ولكن نصيحة لك الشهادة ليست بتلك الأهمية التي تجعل تتخطى أى مسار . حيث أيضا مشاهدة ومذاكرة المسارات بنفس أهمية الشهادة لذلك أتمني منك ألا تتخطى أى مسار وأنت تقوم بدراسة كافة الدورة.
-
نعم بالطبع يمكنك ربط قواعد بيانات Oracle بمشروع Laravel ولكن يجب الإنتباه إلى بعض النقاط التي يجب أن تأخذها في اعتبارك عند القيام بذلك حيث أن Laravel يدعم بشكل افتراضي قواعد البيانات مثل MySQL و PostgreSQL و SQLite و SQL Server ولكنه لا يدعم بشكب إفتراضي Oracle .و لكن يمكنك ذلك من خلال بعض المكتبات الخاصة. وإليك مكتبة وهي من أشهر الحزم yajra/laravel-oci8. ويجب تثبيتها من خلال أمر : composer require yajra/laravel-oci8 وبعد تثبيت الحزمة يجب عليك إعداد الاتصال بقاعدة البيانات Oracle في ملف config/database.php. أضف إعدادات Oracle في مصفوفة connections . 'oracle' => [ 'driver' => 'oci8', 'tns' => env('DB_TNS', ''), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1521'), 'database' => env('DB_DATABASE', 'your_database'), 'username' => env('DB_USERNAME', 'your_username'), 'password' => env('DB_PASSWORD', 'your_password'), 'charset' => 'AL32UTF8', 'prefix' => '', ], بعد ذلك تأكد من وضع القيم في ملف env. : DB_CONNECTION=oracle DB_HOST=127.0.0.1 DB_PORT=1521 DB_DATABASE=your_database DB_USERNAME=your_username DB_PASSWORD=your_password ويمكنك الآن إستخدام Eloquent أو Query Builder في لارافل كما كنت تفعل في mysql .
- 2 اجابة
-
- 1
-
الخطأ الذي يظهر لك أنه لا يوجد أمر يسمى import . هل تحاول تنفيذ كود بايثون ؟ إذا كان كذلك يجب أولا الدخول إلى محرر بايثون من خلال أمر python3 إذا كان هذا سؤال متعل بإحدى دروس الدورات فستجد أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل.
-
وعليكم السلام ورحمة الله وبركاته. نعم بالطبع الاهتمام بالتفاصيل يعد جزءا أساسيا ومهما من كتابة البرامج والأكواد حيث الإهتمام بالتفاصيل تفرق بين المبرمج الجيد والمبتدئ. وفي البرمجة كل جزء صغير من الكود يمكن أن يكون له تأثير كبير على أداء التطبيق وسرعته و عمله بشكل صحيح دون وجود أخطاء و سهولة صيانته في المستقبل . لذلك يجب عليك الإلتزام بالإنتباه إلى التفاصيل مثل نظافة الكود و الإنتباه إلى أداء التطبيق ومحاولة إستخدام الخوارزميات المناسبة.
- 4 اجابة
-
- 1
-
الدالة G(a, b) تقوم بأخذ معاملين a و b. ومن ثم تقوم بتعريف المتغيرين T و M في البداية، حيث T = 0 و M = 1. بعد ذلم يتم تنفيذ الحلقات التكرارية حيث يتم إستخدام حلقتين تكراريتين متداخلتين: حيث الحلقة الأولى تتكرر من i = 1 إلى a - 1 حيث range تقم بإرجاع قيمة تكرار من حتي a-1 . و الحلقة الثانية تتكرر من j = 1 إلى b حيث أن range تقوم بالتكرار من 1 حتي b+1-1 . بعد ذلك يتم التحقق م الشرط if (j % 2 != 0) أي يتححق مما إذا كانت j عددًا فرديا فإذا كانت j فردية يتم تنفيذ الكود داخل الجملة الشرطية وهو : i = i + j: يتم تحديث قيمة i بإضافة j إليها. T = T + i + j: يتم تحديث T بإضافة i و j إلى قيمته الحالية. M = M + T // 2 + j % i: يتم تحديث M بإضافة T // 2 إلى قيمته الحالية، إضافة إلى باقي قسمة j على i. بعد ذلك تقوم الدالة بإرجاع i, j, T, و M بعد انتهاء الحلقتين. لا يمكن الجزم بما تفعله الدالة تماما فكل ما تفعله هي أنها تقوم بتغير الأرقام بناء على شروط معينة ولا يوجد أى معني لتغير الأرقام.
-
وعليكم السلام ورحمة الله وبركاته. نعم، من المحتمل أن يكون استخدام بطاقة فيزا ليست باسمك هو السبب الرئيسي لظهور هذا الطلب من Google حيث غالبا ما تقوم Google بالتدقيق في معلومات الدفع لأسباب أمان و لمكافحة عمليات الاحتيال. لهذا إذا كانت البطاقة ليست باسمك أو لم تتطابق مع بيانات الحساب الذي تعمل عليه فغالبا ما يتطلب الأمر إنشاء فاتورة للتحقق. ويمكنك استخدام بطاقة باسمك إذا كانت متوفرة أو يمكنك الاتصال بدعم Google Cloud والإستفسار عن سبب تلك المشكلة ولمعرفة الخيارات المتاحة.
-
وعليكم السلام ورحمة الله وبركاته . لا الـ pipe في لغة R تختلف تمام عن وظيفة def في بايثون حيث في لغة R يستخدم الـ pipe (%>%) لتمرير ناتج دالة كمدخل للدالة التالية بطريقة متسلسلة ومباشرة والتي تسمح لك بتبسيط كتابة الكود عند التعامل مع تسلسل من العمليات. وهي متشابهة في عملها مثل خاصية method chaining في عديد من لغات البرمجة الأخرى. حيث إذا يوجد لديك عملية تريد تنفيذها على عدد من الدوال كلما تنتهي دالة يتم تمرير نتائجها للدالة التي تليها وهنا تسمح لك pipe بتنفيذ ذلك ويمكنك البحث أكثر عن ال method chaining . library(dplyr) data %>% filter(variable > 5) %>% summarise(mean_value = mean(variable)) لاحظ هنا تسلسل الكود حيث يتم تمرير data إلى الدالة filter بعد ذلك يتم تمرير المخرج من الدالة fitler إلى الدالة summarise . أما في بايثون ف def هي كلمة مفتاحية تستخدم لتعريف دالة جديدة يمكنك إستدعائها وتمرير البيانات لها وهي وظيفة مختلفة تماما عن ال pipe .
- 4 اجابة
-
- 1
-
إن ملفات فيجما (Figma) هي مستندات تصميم يتم إنشاؤها باستخدام أداة فيجما (Figma)، وهي أداة تصميم تتيح للمصممين إنشاء واجهات المستخدم (UI) وتجارب المستخدم (UX)، وكذلك تصميم الرسوم مثل الأيقونات والنماذج التفاعلية وغيرها. وهي فقط تقوم بتوضيح الموقع كصور لما سيكون عليه ويستخدمها بعد ذلك مطور الواجهة الأمامية لإنشاء الموقع حتي يظهر تماما كما في الصور في Figma. ونعم هناك أدوات تقوم بوضع لها تصميم Figma وتقوم بإستخراج ملفات HTML و CSS لهذا التصميم ومعظم الأدوات تقوم فقط بإستخراج HTML ووضع ال CSS في نفس الصفحة وهنا تكمن المشكلة . حيث تلك الأدوات تقوم بتوليد كود غير مفهوم وصعب قرائته و صيانته وأيضا يكون غير منظم تماما . لهذا لا يجب إستخدام هذه الأدوات لطرح الكود المستخرج منها للعمل . حيث ستقابلك مشاكل عديدة بعد ذلك في التعديل والتنظيم والصيانة. والأفضل هو أخذ مطور الواجهة الأمامية الملف Figma كصور فقط و إنشاء الأكواد بنفسه من الصفر حتي يكون الكود تمام مطابقا للشكل والمواصفات في Figma
- 4 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . لا هنا المنطق خاطئ . يجب عليك الإنتباه أنك إذا قمت بإستخدام not فإنك تقوم بتبديل الشرط . فمثلا نفرض أنك تريد التحقق من رقم هل هو 1 أو 2 نقوم بتنفيذ أمر معين فهنا الشرط سيكون كالتالي : num = 1 if num == 1 or num == 2: print("ok") ولكن ماذا لو أردنا عكس الشرط أي إذا كان الرقم 1 أو 2 لا نقوم بتنفيذ الأمر هنا سنستخدم not (!) وبهذا يجب تبديل الشرط or ليكون and : num = 5 if num != 1 and num != 2: print("ok") وهكذا إذا تم إستخدام not وكان يوجد شرط and يتم تحوليه إلى or والعكس لو كان يوجد or يتم تحويله إلى and. وهكذا نفس المنطق لديك نحن نريد عدم تنفيذ الكود إذا كان العمود Pregnancies أو DiabetesPedigreeFunction إذا هنا الشرط (أو or ) وبما أننا نريد عكسه أى سنستخدم (not !) إذا سنقوم بتحويل or إلى and هكذا : for col in diabetes.columns: if col != 'Pregnancies' or col != 'DiabetesPedigreeFunction': diabetes[col] = diabetes[col].replace(0,np.nan) ويمكنك التفكير فيها بطريقة منطقية أكثر إذا كان العمود مثلا Pregnancies فإن الشرط col != 'Pregnancies' لن يتحقق ولكن col != 'DiabetesPedigreeFunction' سيتحقق وبهذا سيتم تنفيذ الكود بسبب or.
- 3 اجابة
-
- 1
-
نعم إذا قمت بإختيار سياسة التنفيذ Unrestricted فهنا إذا تم تنفيذ أي سكريبت غير موثوق بداخل ال PowerShell سيتم تنفيذه حتى إذا كان ضارا . أما الأمر الذي أرسلته فهو لا توجد به مشكلة حيث يستخدم لجلسه واحده وسيقوم بتنفيذ الإسكريبتات الموثوقة أو التي تم إنشاءها على جهازك. لهذا يبنغي عليك الحذر من تنفيذ أى سكريبت غير موثوق أو لاتعرف مصدره حتي لا تحدث مشاكل لك.
- 4 اجابة
-
- 1
-
نعم بالفعل المشكلة تحدث كثيرا في إصدار 3.13.0 والحل الذي أخبرتك به وهو نسخ الملفات سيقوم بحل تلك المشكلة . وإذا كان يعمل لديك على إصدار 3.12 فلا مشكلة يمكنك إستخدامه. لا داعي للشكر . وإياكم اللهم أمين
- 4 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته. إن تنفيذ البرامج النصية (السكريبتات) معطل إفتراضيا على النظام بمعنى أن PowerShell يمنع تشغيل البرامج النصية. حيث يتم تعيين سياسة التنفيذ الافتراضية لـ PowerShell على Restricted والتي تمنع تنفيذ البرامج النصية لأسباب أمنية لذلك هذا الأمر يقوم بالسماح بتنفيذ البرامج بداخل ال PowerShell . وهناك ثلاث سياسات تنفيذ رئيسية في PowerShell: Restricted: السياسة الافتراضية، والتي تمنع جميع عمليات تنفيذ البرامج النصية. RemoteSigned: تسمح بتنفيذ البرامج النصية التي تم إنشاؤها محليا والبرامج النصية الموقعة عن بعد من الناشرين الموثوق بهم. Unrestricted: تسمح بتنفيذ جميع البرامج النصية دون أي قيود. أما الجزء الخاص ب -Scope Process يعني أن هذا التغيير سيطبق فقط على الجلسة الحالية في PowerShell ولن يؤثر على بقية الجلسات أو النظام بشكل عام. عند إغلاق الجلسة، سيتم إلغاء التغيير. إذا الأمر الذي أرسلته سيسمح بتنفيذ البرامج النصية في الجلسة الحالية فقط.
- 4 اجابة
-
- 1
-
هل تعمل على بيئة إفتراضية أم لا . إذا كنت تعمل على بيئة إفتراضية يرجى نسخ مجلد tcl في مسار C:/Users/Dell/AppData/Local/Programs/Python/Python313/tcl ووضعه بداخل مجلد البيئة الإفتراضية. إذا لم تكن تستخدم بيئة إفتراضية أو ظل الخطأ كما هو يرجى نسخ مجلد tcl8.6 و tk8.6 بداخل المجلد tcl في المسار السابق ووضعهم بداخل مجلد lib في المسار التالي : C:/Users/Dell/AppData/Local/Programs/Python/lib
- 4 اجابة
-
- 1
-
يمكنك معرفة التحديثات من خلال التوثيق الرسمي وهذا هو الرابط الرسمي للتغيرات التي حدثت في إصدا 3.13.0 : https://docs.python.org/3/whatsnew/changelog.html ويمكنك قراءة المقالات الخاصة باللغة لمعرفة الثغرات والمشاكل المتعلقة في الإصدارات . هنا انا اتحدث على المشروع في العالم الحقيقي كما قلت أنت وهنا أنا اتوقع أن المشروع على خادم . ولذلك أتوقع أن الخادم لا يحوي سوى مشروع واحد لهذا لا حاجة هنا للبيئة الإفتراضية أما إذا كان الخادم يوجد به أكثر من مشروع وهذا شئ ليس مفضلا فحينها يمكنك إستخدام البيئة الإفتراضية . أما أهمية البيئة الإفتراضية تظهر لدي التطوير حيث المبرمج يعمل على أكثر من مشروع على جهازه و كل مشروع له إصدارات مختلفة و مكتبات وحزم بإصدارات مختلفة أيضا لذلك سيحدث تعارضات في المشاريع لهذا البيئة الإفتراضية تعمل كجهاز منفصل كل بيئة لها الإصدارات الخاصة بها وهنا كل مشروع سيعمل بالإصدارات اللازمة له.
- 6 اجابة
-
- 1
-
نعم بالطبع من الممكن أن تحدث مشاكل لا يجب تحديث المشروع مباشرة . يجب أن يتم الأول تحديثة في بيئة إختبار على الجاهز الخاص بك . ويجب أيضا إذا كان المشروع يعمل في العالم الحقيقي أى على خادم فهنا لا يجب أن يستعمل بيئة إفتراضية كل ما عليك هو تحديث بايثون فقط . نعم بالطبع سيتوجب عليك ذلك حيث كل مشروع بمثابة بيئة منفصلة أى قم بإعتباره كانه جهاز منفصل فإذا حينها سيتوجب عليك تحديث كل جهاز منفردا كما هنا . ولكن لا يجب عليك التحديث دائما حيث حاليا إصدار 3.13.0 هو أحدث إصدار من بايثون ومن الممكن أن تكون به الكثير من المشاكل التي لم يتم إكتشافها حتي الآن فمن الممكن أن يكون الإصدار غير مستقر حاليا . وأيضا من الممكن أنه في الإصدار الحديث قد تم حذف أو تغير بعض الخصائص فهنا لن يكفي تحديث الإصدار لديك بل سيتوجب أيضا تغير الكود لديك ليتوافق مع الإصدار الحديث . حيث في معظم لغات البرمجة عند تحديث الإصدار إلى إصدار أحدث يتم إهمال أو تغير بعض الخصائص لذلك عند تحديث المشروع إلى الإصدار الحديث سيتوجب تحديث الكود أيضا . لهذا إذا كان المشروع معقدا فيفضل عدم تحديث الإصدار إلا إذا كانت هناك مشاكل متعلقة بالأمان في الإصدار الأقدم أو أنك تريد إستخدام خصائص جديدة أصبحت متاحة في الإصدار الحديث.
- 6 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته. توجد طريقتين : أولا يجب عليك تفعيل البيئة الإفتراضية وبعد ذلك يمكنك تنفيذ الأمر التالي : python -m venv --upgrade اسم البيئة الإفتراضية ويمكنك وضع إسم البيئة الإفتراضية لديك في الأمر السابق.ولكن من الممكن أن هذا الأمر يسبب مشكلة ولن يعمل بسبب الحزم. والحل الثاني هو : أولا يجب تفعيل البيئة الإفتراضية . بعد ذلك لحفظ المكتبات التي تم تثبيتها في البيئة في ملف . يمكنك تنفيذ الأمر التالي : python -m pip freeze > requirements.txt بعد ذلك يجب حذف مجلد البيئة الإفتراضية . وإنشاء بيئة جديدة وتفعليها . بعد ذلك لتحميل المكتبات من جديد عن طريق الأمر التالي : python -m pip install -r requirements.txt
- 6 اجابة
-
- 1
-
يوجد لديكي خطأ في ملف index.php سطر 104 . حيث أنكي في الإستعلام الخاص ب mysql تقومين بكتابة Pass بعد جملة where والخطأ يخبركي أنه لا يوجد أى عمود يسمى Pass لذلك تأكدي أولا من إسم العمود لديكي .
-
لاحظ أنه يخبرك أن الثلاث خصائص السابقة من المحتمل أنها هي التي تسبب المشكلة لأنها تتغير وتختلف عند جهة العميل عن الكود الذي تم تصيره في جهة الخادم. وإذا قمت بالذهاب إلى الرابط الموجود في الرسالة ستجد أنه ينصحك بإستخدام useEffect لتجنب مشكلة إختلاف الأكواد بين جهة العميل وجهة الخادم . يرجى تجربة الكود التالي وإخباري بالنتيجة : import {NextIntlClientProvider} from 'next-intl'; import {getLocale, getMessages} from 'next-intl/server'; import { AppProvider } from "@/context/AppContext"; import { Tajawal } from "next/font/google"; import { useEffect, useState } from 'react'; const ubuntu = Tajawal({ subsets: ["arabic"], weight: ["300", "400", "500", "700"], }); export default async function RootLayout({ children }) { const [locale, setLocale] = useState("en"); const [messages, setMessages] = useState(null); const [direction, setDirection] = useState("ltr"); useEffect(() => { async function fetchData() { const currentLocale = await getLocale(); const currentMessages = await getMessages(); setLocale(currentLocale); setMessages(currentMessages); setDirection(currentLocale === "ar" ? "rtl" : "ltr"); } fetchData(); }, []); return ( <html lang={locale} dir={direction}> <body className={ubuntu.className}> {messages && ( <NextIntlClientProvider messages={messages}> <AppProvider> {children} </AppProvider> </NextIntlClientProvider> )} </body> </html> ); } لقد قمت بوضع locale و direction بداخل useEffect لتجنب حدوث مشكلة إختلاف الأكواد . إذا ظهرت نفس المشكلة يرجى حذف الكود الخاص className={ubuntu.className} والتجربة مرة أخرى وإذا تم حلها يمكنك وضع متغير جديد كما اقترح عليك المدرب عبدالوهاب بداخل useEffect . وإذا ظلت المشكلة موجودة قم بمحاولة إلغاء أكواد local و direction و classname وأنظر هل السبب هنا أم لا حيث من الممكن أن يكون المشكلة في مكون أخر مختلف.
- 4 اجابة
-
- 1
-
إذا كان هذا سؤال خاص بدرس من دروس الدورات ستجد أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل. إذا لم يكن سؤال خاص بإحدى دروس الدورات يرجى توضيح السؤال أكثر ما هو الكائن الذي تتحدث عنه وما هي لغة البرمجة التي تعمل عليها.
-
وعليكم السلام ورحمة الله وبركاته. نعم، لغة بايثون تعتبر من أقوى وأشهر اللغات المستخدمة في مجال تحليل البيانات ويمكن استخدامها والإعتماد عليها بشكل كامل في هذا المجال . هناك العديد من المكتبات وأطر العمل والبرامج والمواقع والمنصات التي تجعل بايثون مفيدة جدا في مجال تحليل البيانات، مثل: Pandas NumPy Matplotlib و Seaborn SciPy Scikit-learn Statsmodels Jupyter Notebooks Google Colab تلخيصا لما سبق بايثون يمكن أن تكون كافية تماماً لتحليل البيانات في أغلب الحالات بفضل الأدوات والمكتبات القوية التي تدعمها.
- 5 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته. هل تقصد إضافة التاريخ في عنوان الرسم البياني أم ماذا ؟ إذا كنت تريد إظهاره في الرسم البيانات ليوضح تاريخ السنة الخاصة بتلك البيانات يمكنك إستخدام التالي : import datetime # الحصول على تاريخ اليوم today = datetime.datetime.today().strftime("%Y-%m-%d") plt.figure(figsize=(12,8)) sns.histplot(data=diabetes , x="Insulin" , bins=30, kde=True) plt.title(f"Distribution of Insulin Levels - Date: {today}") plt.xlabel("Insulin Level") plt.ylabel("Frequency") plt.grid(True) plt.show() وهنا إستخدمت تاريخ اليوم ولكن انت يمكنك وضع أى تاريخ تريده . وهكذا سيتم طباعته في عنوان الرسما البياني.
- 2 اجابة
-
- 1
-
يمكنك متابعة الوحدة الخاصة بالتطبيق العملي في مسار أساسيات بايثون في دورة تطوير التطبيقات باستخدام لغة Python : https://academy.hsoub.com/courses/python-application-development/python-intro/task-manager-app/ حيث ستجد تطبيق شامل وعملى لما تم دراسته في مسار الأساسيات . ويمكنك الدخول على مواقع مثل CodeWars و HackerRank وحل الأسئلة البرمجية في المستوى المبتدأ لتقوم بالتدريب أكثر . ويمكنك إذا أردت أسفل كل درس طلب أسئلة بخصوص ذلك الدرس وسيتم توفير تمارين وتطبيقات لك لحلها .
-
يمكنك تنزيل node على جهاز mac بعدة طرق . أولا إذا كان لديك مدير حزم Homebrew يرجى تثبيته من خلال تنفيذ الأمر التالي : /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" بعد ذلك نقوم بتثبيت node من خلال الأمر التالي : brew install node ويمكنك تحديد الإصدرا الذي تريد تحمليه إذا أردت تحميل إصدار معين كالتالي : brew install node@20 الطريقة الثانية هي تنزيل ملف التثبيت من خلال الموقع الرسمي التالي : https://nodejs.org/en/download/prebuilt-installer قم بإختيار نظام تشغيل mac وإختيار الإصدار وقم بتحميله وتثبيته.
-
نعم هناك فرق بين المكتبة و الوحدة (module) بالرغم أنه يتم إستخدام المصطلحين للتعبير عن بعضهم البعض. المكتبة هي مجموعة من الوحدات (modules) والملفات التي تحتوي على وظائف ودوال عديدة.أما الوحدة (module) هو عبارة عن ملف واحد وليس العديد من الملفات .
- 6 اجابة
-
- 1