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

لوحة المتصدرين

  1. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      6

    • المساهمات

      19010


  2. عبدالباسط ابراهيم

    • نقاط

      3

    • المساهمات

      6697


  3. Hisham Abouzied

    Hisham Abouzied

    الأعضاء


    • نقاط

      2

    • المساهمات

      15


  4. Adnane Kadri

    Adnane Kadri

    الأعضاء


    • نقاط

      2

    • المساهمات

      5247


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 05/29/23 in أجوبة

  1. 2 نقاط
  2. السلام عليكم.. عند تحويل صفحة html الى pdf باستخدام node js وتحديدا مكتبة puppeteer، كل شيء يعمل جيد لكن المشكلة في ملف css العناصر لا تأتي في ملف pdf كما هي في الموقع.. اريد حل لمشكلة ال css صفحة html PDF
    2 نقاط
  3. السلام عليكم... كيف يمكنني عمل محرر نصوص يتم اضافت فيه صور بين النصوص و نصوص مثل المتوفر في اكاديمية حسوب و شكرا...
    1 نقطة
  4. ممكن حد يشرحلي دالة WINDOW بتفاصيلها OVER & PARTITION BY & ORDER BY
    1 نقطة
  5. let size = 8 ; for ( let row = 0 ; row < size; row++) { for ( let col = 0 ; col < size; col++) { console . log (row); } } لقد قمت بطباعة col بدلا من row في الكونسول وفهمت الاجابة ,ولكن هنا في المثال الجواب حيرني قليلا ولست متأكدا من فهمي لهذه الحالة!!؟ شكرا.
    1 نقطة
  6. رفع ملف على githab ابغا الطريقة خطوات الرفع
    1 نقطة
  7. ما الفرق بين الطريقتين التاليتن في الربط بقواعد البيانات mongo db 1. mongoose.connect('mongodb://127.0.0.1:27017/my_db') .then( () => { console.log("connected to db") } ) .catch( (err) => { console.log(err) } ) 2. mongoose.connect('mongodb://localhost:27017/my_db') .then( () => { console.log("connected to db") } ) .catch( (err) => { console.log(err) } ) مع العلم أن الطريقة الثانية لم تنجح معي. شكرا.
    1 نقطة
  8. الفرق بين الطريقتين التاليتين في الربط بقاعدة البيانات MongoDB هو الاستخدام المختلف لعنوان الاتصال بالخادم الذي تستخدمه في كليهما. الطريقة الأولى: mongoose.connect('mongodb://127.0.0.1:27017/my_db') الطريقة الثانية: mongoose.connect('mongodb://localhost:27017/my_db') ففي الواقع، هناك فرق ضئيل بين استخدام "localhost" و "127.0.0.1"، ويتم تعيينهما عادة للإشارة إلى نفس العنوان IP للجهاز المضيف. ولكن يمكن أن يكون لديك تكوين مختلف في بيئة نظام التشغيل الخاص بك يؤثر على الوصول إلى قاعدة البيانات باستخدام احدهما. إذا فشلت الطريقة الثانية في الاتصال بقاعدة البيانات، فمن المحتمل أن هناك مشكلة في تكوين بيئة النظام الخاصة بك. يُفضل استخدام الطريقة الأولى التي تستخدم "127.0.0.1" كعنوان IP للاتصال بالخادم المحلي لتلافي المشكلة وفقط. والأرجح، أن المشكلة هي فقط بخصوص كيفية تفسير localhost و 127.0.0.1 من قبل نظام التشغيل أو التطبيق.
    1 نقطة
  9. الفرق بين الطريقتين هو في عنوان الاستضافة (host) الذي يتم استخدامه للاتصال بقاعدة بيانات MongoDB. في الطريقة الأولى، يستخدم عنوان IP "127.0.0.1" للاتصال بقاعدة البيانات، وذلك العنوان يشير إلى جهاز الكمبيوتر الحالي (local host)، ويشير إلى نفس الجهاز الذي يتم تشغيل السكربت عليه، ودائمًا يعمل بشكل صحيح إذا كنت تقوم بتشغيل قاعدة البيانات على نفس الجهاز الذي تقوم فيه بتشغيل التطبيق. أما في الطريقة الثانية، يستخدم "localhost" كاسم الاستضافة، ويشير "localhost" إلى نفس جهاز الكمبيوتر الذي يتم تشغيل السكربت عليه. وغالبًا ما تكون هذه الطريقة متوافقة وتعمل بشكل صحيح على معظم الأنظمةk ولكن الأفضل هو استخدام عنوان الـ ip. فعند استخدام الـ IP، فإنك تحدد عنوان IP بشكل صريح للاتصال بقاعدة البيانات، بينما عند استخدام "localhost"، يتم تحويلها بشكل ضمني إلى عنوان IP الخاص بجهاز الكمبيوتر الحالي، وبالتالي، في بعض الأحيان يتم تفسيره بشكل خاطيء ولتجنب تلك المشاكل من الأفضل استخدام عنوان الـ IP.
    1 نقطة
  10. كلا `127.0.0.1` و `localhost` يتم استخدامهما للإشارة إلى الكمبيوتر المحلي أو الكمبيوتر الذي تعمل عليه. `127.0.0.1` هو عنوان IP لواجهة الحلقة الداخلية، وهي واجهة شبكة خاصة تستخدمها حاسوبك للتواصل مع نفسه. يتم استخدام مصطلح "localhost" للإشارة إلى الحاسوب المحلي نفسه، ويتم تعريفه في ملف hosts في نظام التشغيل الخاص بك. في سياق الاتصال بـ MongoDB، يمكن استخدام كلا من `127.0.0.1` و `localhost` بشكل متبادل حيث يشير كلاهما إلى نفس الجهاز ولكن في حال لم يعمل الـ localhost فيمكن أن يكون هناك العديد من الأسباب. يمكن أن يكون ملف HOSTS معطوبًا، ويجب حذفه وإعادة إنشائه، وكذلك يمكن أن يتسبب جدار الحماية في حظر الخادم، وقد يؤدي عدم إحالة localhost إلى 127.0.0.1 لهذه المشكلة.
    1 نقطة
  11. بالإضافة للشرح السابق ها هو مثال عملي على توضيح دالة WINDOW: نفترض أن لدينا جدول employees مع الأعمدة التالية: id, name, department, salary بحيث يوجد عدة موظفين في كل قسم لحساب ترتيب الموظفين حسب الراتب داخل كل قسم، يمكننا استخدام الاستعلام التالي: SELECT id, name, department, salary , DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) dr FROM employees الناتج سيكون مثل هذا: id - name - department - salary - dr 1 - John - Marketing - 5000 - 1 2 - Jane - Marketing - 4000 - 2 3 - Tom - Marketing - 3000 - 3 4 - Sue - IT - 6000 - 1 5 - Kent - IT - 5000 - 2 6 - Ben - HR - 7000 - 1 7 - Amy - HR - 6000 - 2 حيث تم ترتيب الموظفين حسب الراتب داخل كل قسم (Marketing, IT, HR) فـJohn لديه أعلى راتب في قسمه Marketing فحصل على الترتيب 1 والخ.. كما يفضل الإطلاع على المصادر التالية
    1 نقطة
  12. بشكل مختصر، الدالة WINDOW في قواعد البيانات تستخدم لتعريف نافذة، والنافذة هي عبارة عن مجموعة محددة من الصفوف (السجلات) في جدول قاعدة البيانات. تسمح لك هذه النافذة بتطبيق وظائف التحليل والتجميع على مجموعة محددة من الصفوف، بدلاً من تطبيقها على الجدول بأكمله. تتكون الدالة WINDOW من ثلاثة أجزاء رئيسية: PARTITION BY: تستخدم لتقسيم الصفوف في النافذة إلى مجموعات فرعية بناءً على قيمة معينة في عمود محدد. في الجملة PARTITION BY، يتم تحديد العمود الذي سيتم تجزئته. ORDER BY: تستخدم لترتيب الصفوف داخل كل مجموعة فرعية في النافذة. يتم تحديد العمود الذي سيتم استخدامه للترتيب. OVER: تستخدم لتعريف المجموعة الكاملة للصفوف المشمولة في النافذة، بما في ذلك المجموعات الفرعية المحددة بواسطة PARTITION BY. يمكنك استخدام دوال التجميع والتحليل مع هذا الجزء لتطبيق الوظائف المعنية على الصفوف داخل النافذة. باستخدام هذه الأجزاء، يمكنك تحديد مجموعة محددة من الصفوف في الجدول وتطبيق وظائف التحليل والتجميع مثل العد، المجموع وغيرها عليها.
    1 نقطة
  13. الدالة WINDOW في SQL تستخدم لتنفيذ عمليات تحويل البيانات في نطاق معين مع الاحتفاظ بالصلة بين الصفوف في الجدول الأصلي، وتتكون الدالة WINDOW من ثلاثة أجزاء رئيسية: OVER ، PARTITION BY ، و ORDER BY. دعنا نشرح كل منها بالتفصيل ونقدم أمثلة لتوضيح الفكرة. 1- OVER تحدد عملية التجميع أو الوظيفة التحليلية التي ستُطبق على مجموعة الصفوف المحددة بواسطة النافذة، ويمكن أن تكون هذه الوظيفة مثلاً SUM ، AVG ، ROW_NUMBER ، وما إلى ذلك. مثال: لنفترض أن لدينا جدولًا يحتوي على أسماء الموظفين ورواتبهم، ونريد حساب المجموعة الكلية للرواتب ومعرفة رتبة كل موظف في الجدول. SELECT Name, Salary, SUM(Salary) OVER () AS TotalSalary, ROW_NUMBER() OVER (ORDER BY Salary DESC) AS Rank FROM Employees; 2- PARTITION BY يُستخدم لتقسيم البيانات في النافذة إلى مجموعات فرعية (بارتشن) استنادًا إلى قيمة محددة في العمود، ويتم تطبيق الوظيفة التحليلية المحددة بواسطة OVER على كل بارتشن بشكل منفصل. مثال: لنستخدم نفس الجدول من المثال السابق ولكن نريد حساب المجموع الكلي للرواتب داخل كل قسم بدلاً من الجدول ككل. SELECT Name, Salary, SUM(Salary) OVER (PARTITION BY Department) AS DepartmentTotalSalary FROM Employees; هنا ، استخدمت PARTITION BY مع عمود القسم (Department) لتقسيم الصفوف في النافذة إلى بارتشنات. 3- ORDER BY تُستخدم لترتيب الصفوف داخل كل بارتشن في النافذة وفقًا للترتيب المحدد، وبالإمكان تحديد الترتيب بناءً على عمود واحد أو أكثر. مثال: لنستخدم نفس الجدول من المثال السابق ونريد حساب مجموع رواتب القسم وترتيب الموظفين في القسم وفقًا للرواتب. SELECT Name, Salary, SUM(Salary) OVER (PARTITION BY Department ORDER BY Salary DESC) AS DepartmentTotalSalary, RANK() OVER (PARTITION BY Department ORDER BY Salary DESC) AS Rank FROM Employees; استخدمت PARTITION BY مع عمود القسم (Department) لتقسيم الصفوف في النافذة إلى بارتشنات.، و ORDER BY مع عمود الرواتب (Salary) لترتيب الصفوف داخل كل بارتشن بناءً على الرواتب، ثم حساب مجموع رواتب القسم وترتيب الموظفين في القسم وفقًا للرواتب. باستخدام الدالة WINDOW بشكل صحيح مع OVER و PARTITION BY و ORDER BY، تستطيع تنفيذ عمليات تحليلية معقدة وحسابية على البيانات في نطاقات محددة وبشكل مرتب ومجمع.
    1 نقطة
  14. هل من رابط لهذا الكتاب بارك الله فيكم اسمه : الخوارزميّة بواسطة لغة بايثون Algorithmics with Python in Arabic for beginners, Basics of programming in Python اعداد و تاليف الدكتور وليد خليفة الاستاذ خليل ابو شنب
    1 نقطة
  15. بشكل أوضح في هذا المثال، يتم استخدام حلقتين داخل بعضهما البعض لإنشاء مربع مكون من 8 صفوف و8 أعمدة. الحلقة الخارجية تتكرر 8 مرات، وتحتوي الحلقة الداخلية أيضًا على 8 تكرارات. في كل مرة يتم تكرار الحلقة الداخلية، يتم طباعة رقم الصف الحالي. وبما أن الحلقة الخارجية تتكرر 8 مرات، فسيتم طباعة الأرقام من 0 إلى 7 في كل صف. وهذا يعني أنه في كل صف، سيتم طباعة الأرقام من 0 إلى 7. يمكن تصور هذا المثال بأنه يبدأ في الزاوية العلوية اليسرى من المربع، ويتم طباعة الأرقام في كل صف من اليسار إلى اليمين، ثم يتم الانتقال إلى الصف التالي وتكرار العملية حتى النهاية. مثلا، في الصف الأول، سيتم طباعة الأعداد من 0 إلى 7، وفي الصف الثاني، سيتم طباعة الأعداد من 0 إلى 7 مرة أخرى، وهكذا حتى الصف الثامن. وبالتالي، سيتم طباعة مربع مكون من 8 صفوف و8 أعمدة، وكل صف يحتوي على الأرقام من 0 إلى 7.
    1 نقطة
  16. أرجو مشاركة مجلد المشروع لتجربة الكود الخاص بك وتفقد المشكلة.
    1 نقطة
  17. سأشرح لك بشكل بسيط، أنت تستخدم حلقتين متداخلتين للتكرار عبر صفوف وأعمدة في شبكة مربعة، والمتغير "size" يحدد حجم الشبكة. وعند تنفيذ الكود، سيتم طباعة قيمة المتغير "row" داخل الحلقة الداخلية، ولكن لاحظ أن الطباعة تتم في كل دورة من الحلقة الداخلية، حيث يتم تنفيذ الحلقة الداخلية "size" مرات لكل دورة في الحلقة الخارجية أي 8 مرات بدءًا من 0. بمعنى آخر، ستقوم الحلقة الداخلية بطباعة قيمة "row" مرات متتالية بحسب قيمة المتغير "size"، فإذا كانت قيمة "size" تساوي 8، فستتم طباعة القيمة 0 ثم 1 ثم 2 وهكذا حتى 7، وسيتم تكرار هذا النمط "size" مرة في الحلقة الخارجية. لذلك، ستحصل على مجموعة من الأعداد المتتالية من 0 إلى 7 تطبع "size" مرة في الإجمال أي 8 مرات، أي 0 مطبوع 8 مرات و1 يكرر 8 مرات وستجد بجانبه في الكونسول رقم 8 أي تكرر طباعته 8 مرات. والنتيجة هي:
    1 نقطة
  18. ليس بالضرورة ان تحفظ كل التفاصيل التي يتضمنها الفيديوهات والدروس للحصول على شهادة من اكاديمية حسوب. فالأكاديمية لا تمنح الشهادات اعتمادا على الحفظ والتذكر لكل التفاصيل، بل يتم التركيز على فهم المفاهيم الأساسية والقدرة على تطبيقها. ما تحتاجه فقط للحصول على الشهادة هو: فهم المحتوى العام للدورة ومعرفة المفاهيم والأفكار الرئيسية. معرفة كيفية تطبيق هذه المفاهيم وتوظيفها في الممارسة العملية. القدرة على حل أسئلة الاختبار النهائي للدورة التي تشمل على أسئلة حول المفاهيم وأسئلة تطبيقية وفي بعض الأحيان أسئلة حول حل مشكلة معينة. مثال عملي على عدم حاجة الحفظ الدقيق للتفاصيل: مثلا في درس عن نظام التشغيل ويندوز. قد يتضمن الدرس تفاصيل عن الإصدارات المختلفة من ويندوز ومميزات كل إصدار. ولكن ليس من الضروري حفظ اسم كل إصدار وتاريخ إصداره وكل التفاصيل، المطلوب فقط: معرفة أن هناك إصدارات مختلفة لويندوز. الفهم العام للفرق بين الإصدارات الرئيسية. معرفة بعض المميزات الجديدة في الإصدارات الأحدث.
    1 نقطة
  19. إذا كنت ترغب في الحصول على الشهادة، فعادة ما يتوقع منك أن تظهر فهمًا كاملاً وشاملاً للموضوعات المشمولة في الدورة. ومن الأفضل أن تكون قادرًا على استيعاب المفاهيم الرئيسية وفهمها بدقة. على الرغم من ذلك، ليس من الضروري حفظ كل شيء بالكامل حرفيًا من الفيديو. الأهم هو فهم المفاهيم والمعلومات الأساسية وتكون قادرًا على تطبيقها عند الحاجة. إذا كان هناك مفاهيم أو معلومات مهمة، مثل الفروق بين نظامي التشغيل ومواصفاتهما، فمن الجيد أن تركز عليها وتحفظها جيدًا. قد تكون هناك أيضًا تفاصيل مهمة تختلف بين النظامين يجب أن تكون على دراية بها. الأهم في نهاية المطاف هو أن تكون قادرًا على تطبيق المعرفة والمفاهيم التي اكتسبتها من الدورة في الواقع، بغض النظر عن طريقة تعلمك الشخصية، سواء كانت عن طريق حفظ المعلومات الرئيسية أو الرجوع إلى المصادر عند الحاجة. في النهاية، ينبغي أن تستمتع بعملية التعلم وأن تركز على فهم المفاهيم وتطبيقها، وهذا سيساعدك في استيعاب المعلومات بشكل أفضل والاستفادة من الدورة بشكل كامل.
    1 نقطة
  20. مشكلة عدم تطابق العناصر في ملف PDF مع ما هو موجود في صفحة HTML الأصلية قد تحدث بسبب عدة أسباب. إليك بعض الحلول التي يمكنك تجربتها لمعالجة مشكلة CSS عند تحويل صفحة HTML إلى PDF باستخدام Puppeteer في Node.js: تأكد من تضمين ملفات CSS بشكل صحيح: تحقق من أن جميع ملفات CSS المطلوبة مضمنة في صفحة HTML بشكل صحيح. يمكنك استخدام العناصر <link> للربط بملفات CSS الخارجية أو تضمين الأنماط المضمنة <style> مباشرة في صفحة HTML. انتظار التحميل الكامل للصفحة: قد يكون Puppeteer يقوم بتحويل صفحة HTML إلى PDF قبل أن تكتمل عملية تحميل العناصر المرتبطة بها، مثل ملفات CSS. يمكنك استخدام page.waitForNavigation() للانتظار حتى يتم تحميل جميع المكونات المرتبطة قبل تحويل الصفحة إلى PDF. التأكد من أن Puppeteer يقوم بتمثيل CSS بشكل صحيح: بعض الخصائص والتأثيرات قد لا يتم دعمها بشكل كامل في Puppeteer. تحقق من أن CSS الذي تستخدمه معترف به ومدعوم بواسطة Puppeteer. استخدم الخيارات المناسبة لإنشاء ملف PDF: Puppeteer يوفر خيارات متعددة لإعداد ملف PDF الناتج، مثل حجم الصفحة والهوامش والأوضاع والألوان. قد تحتاج إلى ضبط هذه الخيارات للحصول على النتائج المرجوة.
    1 نقطة
  21. ربما ما يحدث هو تحميل الملف CSS بشكل غير صحيح في الصفحة الأصلية عند استخدام Puppeteer، وإذا كان كذلك فتستطيع استخدام خيار "waitUntil" للانتظار حتى يتم تحميل وتنفيذ الملف CSS قبل توليد ملف PDF، بالشكل التالي: await page.goto('http://example.com', { waitUntil: 'networkidle0' }); بوضع networkidle0، Puppeteer سينتظر حتى يتوقف النشاط على الشبكة قبل الاستمرار في عملية التحويل. وبإمكانك أيضًا استخدام خيار "waitFor" في Puppeteer للانتظار حتى يتم تحقيق حالة معينة قبل توليد ملف PDF، مثلاً استخدامه للانتظار حتى يتم تحميل عناصر محددة أو حتى يكتمل تنفيذ أكواد JavaScript معينة. await page.waitForSelector('#my-button'); await page.pdf({ path: 'output.pdf' }); أو استخدام دالة page.evaluate() لتنفيذ سكريبت مخصص في صفحة المستعرض والتحكم في توقيت تحميل العناصر، وتستطيع استخدام هذا السكريبت لتنفيذ أمر window.print() الذي يحاكي طباعة الصفحة، وذلك بعد التأكد من تحميل جميع العناصر بشكل صحيح: await page.evaluate(() => { // تأكد من تحميل العناصر المطلوبة هنا window.print(); }); وعليك تضمين السكريبت في النقطة المناسبة في كودك، حيث يتم تحميل العناصر المطلوبة بشكل صحيح.
    1 نقطة
  22. 1- عليك بتثبيت Python على جهاز الكمبيوتر، ويُفضل استخدام Python 3.6 أو إصدار أحدث، وتستطيعي تنزيل Python من الموقع الرسمي للغة. 2- من الأفضل إنشاء بيئة إفتراضية باستخدام لعزل مكتبة TensorFlow Federated وتجنب التعارض مع البيئات الأخرى، عن طريق أدوات مثل virtualenv أو Anaconda لإنشاء بيئة افتراضية جديدة. 3- بعد إعداد البيئة الافتراضية (إذا كنت تستخدم واحدة)، تستطيعي تثبيت TensorFlow Federated باستخدام أداة إدارة الحزم الخاصة بـ Python مثل pip بالأمر التالي: pip install tensorflow-federated وسيقوم هذا الأمر بتثبيت الإصدار المستقر الأحدث من TensorFlow Federated. 4- بعد التثبيت، يمكنك التحقق من نجاحه عن طريق إستيراد الوحدة بالشكل التالي: import tensorflow_federated as tff وإذا تم استيراد المكتبة بنجاح دون أي أخطاء، فهذا يعني أن TensorFlow Federated قد تم تثبيته بنجاح ويمكنك البدء في استخدامه. وانتبهي إلى أنه قد تحتاج إلى تثبيت نسخة محددة من TensorFlow تتوافق مع TensorFlow Federated، ويُفضل استخدام TensorFlow 2.x. وقبل تثبيت TensorFlow Federated، الأفضل بتثبيت TensorFlow على الحاسوب.
    1 نقطة
  23. يمكن تنزيله عن طريق كتابة ما يلي: pip install --upgrade tensorflow-federated
    1 نقطة
  24. -بالنسبة للسؤال الأول: النظم الخبيرة هي نظم المعرفة، حيث أن النظام الخبير هو برنامج ذكي يستخدم القواعد المأخوذة من الخبرة الإنسانية (والمنظمة ضمن قواعد بيانات) على هيئة شروط ونتائج في مجال معين ويستخدم طرق الاشتقاق والاستدلال لاستخراج واستنتاج النتائج المعللة بالأسباب والناتجة عن تطابق هذه الشروط أو النتائج مع شرط أو نتيجة ما والخاصة بمشكلة معينة يراد إيجاد حل لها. هذه الأنظمة لديها قدرات مميزة في مجالات معينة مثل التخطيط و تحليل العوارض وتشخيص الأخطاء diagnostics وتشخيص الأمراض وفي التصميم وفي نظم دعم اتخاذ القرار وغيرها من المجالات المتخصصة التي تم فهم العمليات المطلوبة لها، والتي تتناسب مع القدرات التمثيلية والاستنتاجية لهياكل الأنظمة المستخدمة. ويتم تطوير أي نظام خبير من خلال ثلاثة مراحل أساسية هي : 1. تمثيل المعرفة knowledge representation: يحتاج المصمم في هذه المرحلة لتحديد الطريقة التي سيمثل بها المعارف والقوانين التي تحكم مجال العمل، واشهرها طريقة الاعتماد على القواعد (Rule based) وهي عبارة عن مجموعة من العبارات المنطقية تسمى بif_then Rules. 2. اكتساب المعرفة knowledge Acquisition: في هذه المرحلة يتم تجميع القوانين التي تحكم المجال الذي سيعمل فيه النظام الخبير، وعادة ما يكون مصدر هذه القوانين خبير بشري له معرفة شاملة بميدان العمل ومعرفة عميقة بكل تفاصيله. 3. محرك الاستدلال Inference Engine: يحتاج المصمم بعد اكتساب وتمثيل المعرفة إلى تحديد الطريقة التي يصل بها النظام الخبير إلى النتيجة بناء على مالديه من معلومات، وتعتبر هذه المرحلة أصعب المراحل. - السؤال الثاني: لا حالياً لاتوجد دورة لكن ربما في وقت لاحق. لكن توجد دورات أخرى في مجالات متنوعة يمكنك تصفحها من هنا. - السؤال الثالث: يفضل أن تبدأ مع تعلم لغة برولوغ أو LISP وكتاب مثل: Introduction to Expert Systems, Jackson P. , 3rd edition أو Introduction to Knowledge Systems, Stefik M., Morgan Kaufmann. يمكنك البدء مع أحد هذين الكتابين وكلاهما يعد نقطة انطلاق مناسبة لهذا الحقل.
    1 نقطة
×
×
  • أضف...