في أولى إعدادي هندسة، أتذكر محاضرة عن المصفوفات، كان فيها الأستاذ يحاول يوضح لنا كيف ممكن تكون مفيدة. رسم مستطيل وشرح كيف يمكننا نحركه ونخليه يدور حول مركزه أثناء حركته باستخدام مصفوفة للإزاحة وأخرى للدوران. وقال إن هذا يمكننا من بناء محاكيات معقدة للأجزاء الميكانيكية، وهو أمر مهم في علم Kinematic.
قال لنا إنك إذا عملت هاتين المصفوفتين وتعلمت ضرب المصفوفات في بعضها، بإمكانك تنفيذ أي نوع من الحركة التي تحتاجها. أتذكر يومها رجعت للبيت، وكان عندي كمبيوتر XT وفيه Floppy Disk 5.25. كتبت الكود وكان بلغة Pascal تحت نظام DOS إذا لم تخني الذاكرة. لما شفت المستطيل يتحرك وفق معادلة Parabola ويدور أثناء حركته، شعرت بفرحة كأني اكتشفت قانون الحركة بدلًا من نيوتن.
ما فعله الأستاذ يومها أنه أعطانا معنى لما ندرسه، وأرانا فائدته. دور الأستاذ قد يكون له تأثير كبير لا يمكن تخيله. للأسف، معظم الأساتذة يهدرون هذا الدور وهذه القيمة.
قال لنا إنك إذا عملت هاتين المصفوفتين وتعلمت ضرب المصفوفات في بعضها، بإمكانك تنفيذ أي نوع من الحركة التي تحتاجها. أتذكر يومها رجعت للبيت، وكان عندي كمبيوتر XT وفيه Floppy Disk 5.25. كتبت الكود وكان بلغة Pascal تحت نظام DOS إذا لم تخني الذاكرة. لما شفت المستطيل يتحرك وفق معادلة Parabola ويدور أثناء حركته، شعرت بفرحة كأني اكتشفت قانون الحركة بدلًا من نيوتن.
ما فعله الأستاذ يومها أنه أعطانا معنى لما ندرسه، وأرانا فائدته. دور الأستاذ قد يكون له تأثير كبير لا يمكن تخيله. للأسف، معظم الأساتذة يهدرون هذا الدور وهذه القيمة.
Forwarded from الرسمية CS4 Class-22 (أحمد جلال | 𐩱𐩢𐩣𐩵 𐩴𐩡𐩱𐩡)
مواصلة في مزايا الايميل الجامعي تبعنا و الذي نقدر نستفيد منه في أشياء كثييرة ذكرناها مسبقًا، بس لفت انتباهي شيء أنذهلت منه الصدق، أي ايميل تبع جوجل لمن تسجل فيه و تشتي ترفع أشيائك من صور و فيديوهات و ملفات و غيره المساحة الذي يعطوها للواحد معروفة و ما تتجاوز ال 15GB، بس لمن جربت أزامن تلفوني مع حسابي الجامعي و ربطته ب Google Drive
جابوا لي حوالي 95TB، ايوه زيما شايفين تيرا .
فاستغلوا ايميلاتكم يا شباب و استفيدوا من المزايا المتوفرة و كمان للذي يستخدموا البرنامج الغني عن التعريف Cam Scanner تقدروا تستفيدوا من مزايا فيه Premium بمجرد ربط البرنامج بالايميل الجامعي و لا تختاروا سنة التخرج بالشكل الصحيح، خلوها 2029 عشان يطول معاكم..
جابوا لي حوالي 95TB، ايوه زيما شايفين تيرا .
فاستغلوا ايميلاتكم يا شباب و استفيدوا من المزايا المتوفرة و كمان للذي يستخدموا البرنامج الغني عن التعريف Cam Scanner تقدروا تستفيدوا من مزايا فيه Premium بمجرد ربط البرنامج بالايميل الجامعي و لا تختاروا سنة التخرج بالشكل الصحيح، خلوها 2029 عشان يطول معاكم..
انطلق في البرمجة من بدري فرصتك الجامعية لاتعوض لاتصدق ان بعد التخرج تبدأ تتخصص الحق نفسك الجامعة لو شفتها بتعطلك ارجمها خلف الشمس بخمس عادي طلع للقب البكالوريوس حافظ على درجة النجاح ان كنت ضابح منها للأخر ثقتك بنفسك تكسر اي حاجز أليس كذلك لو ثقتك ان الشهادة هي مهمه أنت احلم وسعى وياليت تتخرج وبلادك مليانه شركات وعمل هذا مافيش لو قلت لك جيب لي خمسة مبرمجين لهم ثقلهم للأسف يمكن تحصل لذلك اشتغل على نفسك ياسطى عندما تسمع موضوع الناس الآن كلها داخله حاسوب لكن مافيش إنتاج اينهم مدري كلامي هذا للي عاده دخل من البلاد فقط الي عقليته عادها نظيفة جدا وشكرا
👍3
لماذا ما ابدع مثلا في frontend ولي فترة
المشكلة فيني أنا دائما مستعجل وأريد نتائج مذهله واشوف ناس مبدعه قبلي واحبط واشوف ان ai جاء كمل الباقي
أنا شغوف ب backend ولك وجهي بعد فتره انه وصل لا درجة صحراء أين يروح لذلك لاتمشي بخريطة زميلك أو أحد شفت زميلك متقدم عليك استفيد منه ولا تنافسه اكسبه
المشكلة فيني أنا دائما مستعجل وأريد نتائج مذهله واشوف ناس مبدعه قبلي واحبط واشوف ان ai جاء كمل الباقي
أنا شغوف ب backend ولك وجهي بعد فتره انه وصل لا درجة صحراء أين يروح لذلك لاتمشي بخريطة زميلك أو أحد شفت زميلك متقدم عليك استفيد منه ولا تنافسه اكسبه
👍2
القدرة على كتابة كود يشتغل ≠ كود يشتغل بكفاءة ⚡
عند كتابة join في الاستعلامات باستخدام الـ ORM مثل EF-Core أو أي ORM آخر، الكود يتم تحويله إلى استعلام SQL. لكن هل هذا الاستعلام دائمًا أمثل (optimal)؟ الجواب: لا. ❌
لو قاعدة البيانات مش مهيأة بشكل جيد (ما فيها Indexing أو Foreign Keys أو الإحصائيات قديمة 📉)، أي محرك قاعدة بيانات (مثل SQL Server) قد يواجه صعوبة في تنفيذ الاستعلام بكفاءة. والنتيجة؟ Clustered Index Scan أو Table Scan 🔍.
إيش اللي بيصير؟
1. Physical Reads عالية جدًا 📚: البيانات المطلوبة مش موجودة في الـ cache.
2. Logical Reads عالية جدًا 📊: محرك قاعدة البيانات يضطر يقرأ كميات ضخمة من البيانات حتى لو بعضها موجود في الـ cache.
الخلاصة؟ أداء ضعيف جدًا 💻، خصوصًا مع الجداول الكبيرة، لأن عملية الـ Scan مكلفة.
الحل؟ 🛠️
Indexing هو الحل. الـ Index يحدد إذا كان محرك قاعدة البيانات هيعمل Seek (بحث سريع 🔍) أو Scan (بحث بطيء 🐢).
لو الحقول اللي تستخدمها في الـ join أو في الـ where ما عليها Index، محرك قاعدة البيانات مش هيقدر يعمل Seek، وحيضطر يعمل Scan.
مثال:
لو عندك جدول فيه مليون صف 💯، وعملت join على حقل ما فيه Index، محرك قاعدة البيانات هيعمل Scan على المليون صف.
النتيجة؟ أداء ضعيف جدًا 🚶♂️.
نفهم من كذا إيش؟
الـ ORM زي EF-Core يساعد في تسهيل كتابة الكود، لكنه مش ساحر. لو ما عندك فكرة واضحة عن الـ SQL اللي بيتولد، هتواجه مشاكل في الأداء دون أن تعرف السبب.
فين المشكلة؟
المشكلة هي أن الـ ORM يخفي بعض التفاصيل المهمة التي تساعد في تحسين الأداء. لو ما عندك فهم جيد لـ SQL أو Execution Plans، ستكتب كود غير كفؤ.
مثال عملي:
إذا كتبت استعلام LINQ معقد، الـ ORM قد يحوله إلى استعلام SQL معقد جدًا. النتيجة؟ أداء ضعيف 💔.
إيش الحل؟
1. افهم محرك قاعدة البيانات بشكل صحيح:
تعرف على كيفية قراءة Execution Plans 📑.
افهم كيفية استخدام محرك قاعدة البيانات للـ Indexes.
تعلم الفرق بين Seek و Scan.
2. اعمل Indexing بشكل ذكي:
ضع Indexes على الحقول التي تستخدمها في الـ joins أو في الـ where conditions 🔑.
لا تفرط في استخدام الـ Indexes حتى لا يؤثر ذلك على أداء عمليات Insert/Update ⚖️.
3. راقب الأداء:
استخدم أدوات مثل SQL Profiler لمراجعة الاستعلامات التي يتم توليدها من الـ ORM 🔍.
قيس Logical Reads و Physical Reads لتقييم كفاءة الاستعلامات.
4. إذا كان الاستعلام معقدًا، استخدم الاستعلامات الخام (Raw SQL):
إذا كان LINQ معقد جدًا، استخدم الاستعلامات الخام مع الـ ORM لكتابة استعلام دقيق ومحسن 🖋️.
ختامًا :
حتى إذا كنت تستخدم ORM مثل EF-Core أو غيره، يجب أن تكون لديك معرفة جيدة بـ SQL. هذا الفهم سيجعلك قادرًا على تحسين الأداء وحل المشكلات بكفاءة عالية 💡.
عند كتابة join في الاستعلامات باستخدام الـ ORM مثل EF-Core أو أي ORM آخر، الكود يتم تحويله إلى استعلام SQL. لكن هل هذا الاستعلام دائمًا أمثل (optimal)؟ الجواب: لا. ❌
لو قاعدة البيانات مش مهيأة بشكل جيد (ما فيها Indexing أو Foreign Keys أو الإحصائيات قديمة 📉)، أي محرك قاعدة بيانات (مثل SQL Server) قد يواجه صعوبة في تنفيذ الاستعلام بكفاءة. والنتيجة؟ Clustered Index Scan أو Table Scan 🔍.
إيش اللي بيصير؟
1. Physical Reads عالية جدًا 📚: البيانات المطلوبة مش موجودة في الـ cache.
2. Logical Reads عالية جدًا 📊: محرك قاعدة البيانات يضطر يقرأ كميات ضخمة من البيانات حتى لو بعضها موجود في الـ cache.
الخلاصة؟ أداء ضعيف جدًا 💻، خصوصًا مع الجداول الكبيرة، لأن عملية الـ Scan مكلفة.
الحل؟ 🛠️
Indexing هو الحل. الـ Index يحدد إذا كان محرك قاعدة البيانات هيعمل Seek (بحث سريع 🔍) أو Scan (بحث بطيء 🐢).
لو الحقول اللي تستخدمها في الـ join أو في الـ where ما عليها Index، محرك قاعدة البيانات مش هيقدر يعمل Seek، وحيضطر يعمل Scan.
مثال:
لو عندك جدول فيه مليون صف 💯، وعملت join على حقل ما فيه Index، محرك قاعدة البيانات هيعمل Scan على المليون صف.
النتيجة؟ أداء ضعيف جدًا 🚶♂️.
نفهم من كذا إيش؟
الـ ORM زي EF-Core يساعد في تسهيل كتابة الكود، لكنه مش ساحر. لو ما عندك فكرة واضحة عن الـ SQL اللي بيتولد، هتواجه مشاكل في الأداء دون أن تعرف السبب.
فين المشكلة؟
المشكلة هي أن الـ ORM يخفي بعض التفاصيل المهمة التي تساعد في تحسين الأداء. لو ما عندك فهم جيد لـ SQL أو Execution Plans، ستكتب كود غير كفؤ.
مثال عملي:
إذا كتبت استعلام LINQ معقد، الـ ORM قد يحوله إلى استعلام SQL معقد جدًا. النتيجة؟ أداء ضعيف 💔.
إيش الحل؟
1. افهم محرك قاعدة البيانات بشكل صحيح:
تعرف على كيفية قراءة Execution Plans 📑.
افهم كيفية استخدام محرك قاعدة البيانات للـ Indexes.
تعلم الفرق بين Seek و Scan.
2. اعمل Indexing بشكل ذكي:
ضع Indexes على الحقول التي تستخدمها في الـ joins أو في الـ where conditions 🔑.
لا تفرط في استخدام الـ Indexes حتى لا يؤثر ذلك على أداء عمليات Insert/Update ⚖️.
3. راقب الأداء:
استخدم أدوات مثل SQL Profiler لمراجعة الاستعلامات التي يتم توليدها من الـ ORM 🔍.
قيس Logical Reads و Physical Reads لتقييم كفاءة الاستعلامات.
4. إذا كان الاستعلام معقدًا، استخدم الاستعلامات الخام (Raw SQL):
إذا كان LINQ معقد جدًا، استخدم الاستعلامات الخام مع الـ ORM لكتابة استعلام دقيق ومحسن 🖋️.
ختامًا :
حتى إذا كنت تستخدم ORM مثل EF-Core أو غيره، يجب أن تكون لديك معرفة جيدة بـ SQL. هذا الفهم سيجعلك قادرًا على تحسين الأداء وحل المشكلات بكفاءة عالية 💡.
Forwarded from اللجنة العلمية CS 22 (خالد العبسي)
Hack like a ghost.pdf
16.6 MB
كتاب يشرح لك عن أكثر الطرق للتخفي على الإنترنت
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
إذا أنت شغال بـ Django وعندك موديل وكسلان تسوي Form وHTML وcss وغيره.
الحل مع DFormKit تسويه لك بلحظة ومصمم بطريقة مرتبة باستخدام Tailwind CSS، أو حتى لو نفسك المكتبة تولد لك الأكواد الجاهزة في`urls.py` و
بس ليش DFormKit؟؟
- توليد ModelForm ديناميكي ما عاد في داعي تكتب الفورم يدوياً!
- تفعل الـ HTML بتنسيقات Tailwind جاهزة 100%
- الأتمتة
- واجهة CLI تفاعلية
ركز انت على الأمور الأهم... والـ Forms على DFormKit 👍🏻
والجميل ان المكتبة Open Source
https://github.com/abdulrahmanRadan/dformkit
وهذا رابط المشروع في pypi
https://pypi.org/project/dformkit/
كل الشكر للباش مهندس عبدالرحمن رعدان لدعم Django community +وإذا عندك أي اقتراحات او مشاكل شاركها في issues 👍🏻
#مساعد #مكاتب
الحل مع DFormKit تسويه لك بلحظة ومصمم بطريقة مرتبة باستخدام Tailwind CSS، أو حتى لو نفسك المكتبة تولد لك الأكواد الجاهزة في`urls.py` و
views.py بدون أي تعببس ليش DFormKit؟؟
- توليد ModelForm ديناميكي ما عاد في داعي تكتب الفورم يدوياً!
- تفعل الـ HTML بتنسيقات Tailwind جاهزة 100%
- الأتمتة
- واجهة CLI تفاعلية
ركز انت على الأمور الأهم... والـ Forms على DFormKit 👍🏻
والجميل ان المكتبة Open Source
https://github.com/abdulrahmanRadan/dformkit
وهذا رابط المشروع في pypi
https://pypi.org/project/dformkit/
كل الشكر للباش مهندس عبدالرحمن رعدان لدعم Django community +وإذا عندك أي اقتراحات او مشاكل شاركها في issues 👍🏻
#مساعد #مكاتب
GitHub
GitHub - radanpro/DFormKit: DFormKit is a lightweight Django library designed to dynamically generate ModelForms and corresponding…
DFormKit is a lightweight Django library designed to dynamically generate ModelForms and corresponding HTML templates with ease. It simplifies form creation by automating repetitive tasks, making i...
🔥2
موضوع في غاية الأهمية 🙆
ما في شيء ببلاش | المكتبات وأطر العمل 📚
أول مرة تستخدم مكتبة أو إطار عمل بتحس بالسعادة لأنك وفّرت وقت وجهد، وتعتبرهم أدوات عظيمة مليئة بالمميزات 🤩.
لكن هل فعلاً إتقانك لهم يعتمد فقط على استخدامهم؟
الإجابة: لا. الإتقان الحقيقي يعتمد على معرفتك بـ المميزات والعيوب معًا!
🔍 ليش العيوب مهمة؟
لأنها اللي بتحدد:
متى تفضل مكتبة على أخرى.
متى تفضل إطار عمل على مكتبة.
ومتى أصلاً تستخدمهم أو تستغني عنهم.
لو ركزت على المميزات فقط، كل الحلول بتكون صواب بالنسبة لك وما بتشوف الفرق الحقيقي.
أبرز عيوب استخدام المكتبات وأطر العمل:
1️⃣ الترابط الزائد بالكود
لما يكون مشروعك يعتمد بشكل كبير على مكتبة أو إطار عمل، استبدالهم بالمستقبل بيكون تحدّي كبير لأن الأكواد المتعلقة بهم منتشرة في كل المشروع.
💡 الحل الذكي:
لا تخلي الكود يتعامل مباشرة مع المكتبة!
بدلاً من ذلك، استخدم واجهة (Interface) من تصميمك للتعامل مع المكتبة.
إذا قررت تستبدل المكتبة لاحقاً، كل التعديلات بتكون على الواجهة فقط، والمشروع بالكامل يظل بأمان.
📌 هذا يتم بسهولة باستخدام Facade Design Pattern.
2️⃣ قضايا الأمان (Security)
ثغرة واحدة في المكتبة أو إطار العمل = ثغرة في مشروعك 😨.
🛠 كيف تتعامل مع المشكلة؟
راجع مشاكل المكتبة (Issues) باستمرار.
لو شفت مشكلة أمنية، تعامل معها فوراً.
عند نزول تحديث أمني، لا تتأخر بتحديث المكتبة.
3️⃣ الأخطاء (Bugs)
وجود خطأ (Bug) في المكتبة قد يؤدي إلى أخطاء في مشروعك.
✅ الحل:
اختار مكتبات تعتمد على عملية اختبار (Testing) قوية.
إذا المكتبة ما فيها اختبارات، أضف Unit Testing بنفسك على الأجزاء اللي بتستخدمها منها.
🎯 الفائدة من الاختبارات:
1. تقدر تحدث المكتبة وأنت مطمئن طول ما الاختبارات ما تفشل.
2. الاختبارات بتكون بمثابة توثيق (Documentation) داخلي لك ولأعضاء الفريق، خصوصاً الجدد.
ختامًا:
> المكتبات وأطر العمل أدوات رائعة، لكنها مش عصا سحرية 🪄.
ذكاءك كمطور يظهر في كيفية إدارتك لها بعقلية واعية، بحيث تحصل على الفوائد وتتجنب المشاكل.
اتبع النصائح السابقة، وبتصنع مشروع قوي ومستدام، بعيد عن التعقيدات والمشاكل المستقبلية. 🚀
ما في شيء ببلاش | المكتبات وأطر العمل 📚
أول مرة تستخدم مكتبة أو إطار عمل بتحس بالسعادة لأنك وفّرت وقت وجهد، وتعتبرهم أدوات عظيمة مليئة بالمميزات 🤩.
لكن هل فعلاً إتقانك لهم يعتمد فقط على استخدامهم؟
الإجابة: لا. الإتقان الحقيقي يعتمد على معرفتك بـ المميزات والعيوب معًا!
🔍 ليش العيوب مهمة؟
لأنها اللي بتحدد:
متى تفضل مكتبة على أخرى.
متى تفضل إطار عمل على مكتبة.
ومتى أصلاً تستخدمهم أو تستغني عنهم.
لو ركزت على المميزات فقط، كل الحلول بتكون صواب بالنسبة لك وما بتشوف الفرق الحقيقي.
أبرز عيوب استخدام المكتبات وأطر العمل:
1️⃣ الترابط الزائد بالكود
لما يكون مشروعك يعتمد بشكل كبير على مكتبة أو إطار عمل، استبدالهم بالمستقبل بيكون تحدّي كبير لأن الأكواد المتعلقة بهم منتشرة في كل المشروع.
💡 الحل الذكي:
لا تخلي الكود يتعامل مباشرة مع المكتبة!
بدلاً من ذلك، استخدم واجهة (Interface) من تصميمك للتعامل مع المكتبة.
إذا قررت تستبدل المكتبة لاحقاً، كل التعديلات بتكون على الواجهة فقط، والمشروع بالكامل يظل بأمان.
📌 هذا يتم بسهولة باستخدام Facade Design Pattern.
2️⃣ قضايا الأمان (Security)
ثغرة واحدة في المكتبة أو إطار العمل = ثغرة في مشروعك 😨.
🛠 كيف تتعامل مع المشكلة؟
راجع مشاكل المكتبة (Issues) باستمرار.
لو شفت مشكلة أمنية، تعامل معها فوراً.
عند نزول تحديث أمني، لا تتأخر بتحديث المكتبة.
3️⃣ الأخطاء (Bugs)
وجود خطأ (Bug) في المكتبة قد يؤدي إلى أخطاء في مشروعك.
✅ الحل:
اختار مكتبات تعتمد على عملية اختبار (Testing) قوية.
إذا المكتبة ما فيها اختبارات، أضف Unit Testing بنفسك على الأجزاء اللي بتستخدمها منها.
🎯 الفائدة من الاختبارات:
1. تقدر تحدث المكتبة وأنت مطمئن طول ما الاختبارات ما تفشل.
2. الاختبارات بتكون بمثابة توثيق (Documentation) داخلي لك ولأعضاء الفريق، خصوصاً الجدد.
ختامًا:
> المكتبات وأطر العمل أدوات رائعة، لكنها مش عصا سحرية 🪄.
ذكاءك كمطور يظهر في كيفية إدارتك لها بعقلية واعية، بحيث تحصل على الفوائد وتتجنب المشاكل.
اتبع النصائح السابقة، وبتصنع مشروع قوي ومستدام، بعيد عن التعقيدات والمشاكل المستقبلية. 🚀
👌1
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| Have a BUG free Weekend |
|______________|
. .
\ /
\ | o : o |/
~-| o : o |-~
_ / \_ : _/ \_
| Have a BUG free Weekend |
|______________|
. .
\ /
/ ! \\ | o : o |/
~-| o : o |-~
_ / \_ : _/ \_
Forwarded from AI (Artificial Intelligence )
YouTube
Harvard CS50’s Artificial Intelligence with Python – Full University Course
This course from Harvard University explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like large language models, game-playing engines, handwriting recognition, and…
Forwarded from AI (Artificial Intelligence )
YouTube
OpenCV Course - Full Tutorial with Python
Learn everything you need to know about OpenCV in this full course for beginners. You will learn the very basics (reading images and videos, image transformations) to more advanced concepts (color spaces, edge detection). Towards the end, you'll have hands…
Forwarded from AI (Artificial Intelligence )
AI (Artificial Intelligence )
Photo
Anaconda
هو عبارة عن توزيع مجاني مفتوح المصدر لـ Python، مصمم خصيصًا لعلماء البيانات ومهندسي التعلم الآلي. يوفر بيئة عمل شاملة لتطوير وتنفيذ مشاريع التعلم الآلي وعلوم البيانات.
لماذا نستخدم أنكوندا؟
إدارة بيئات العمل: يسمح لك أنكوندا بإنشاء بيئات عمل افتراضية مستقلة لكل مشروع، مما يضمن عدم تداخل الحزم والاعتمادات بين المشاريع المختلفة.
حزمة واسعة من الحزم: يأتي أنكوندا مع مجموعة كبيرة من حزم Python الشائعة المستخدمة في علوم البيانات والتعلم الآلي، مثل NumPy، Pandas، Matplotlib، Scikit-learn، وغيرها.
سهولة الاستخدام: يوفر أنكوندا واجهة مستخدم رسومية (GUI) تسمى Anaconda Navigator، تسهل إدارة البيئات والحزم وتشغيل النوتبوكات.
مجتمع كبير: يتمتع أنكوندا بمجتمع مستخدم نشط كبير يوفر الدعم والمساعدة.
مكونات أنكوندا الرئيسية:
conda:
هو مدير الحزم والأدوات الذي يستخدم لإدارة البيئات والحزم في أنكوندا.
Anaconda Navigator:
هي واجهة المستخدم الرسومية التي تتيح لك إدارة بيئات العمل والحزم وتشغيل النوتبوكات.
Jupyter Notebook:
هو تطبيق ويب تفاعلي يسمح لك بكتابة وتنفيذ شفرة Python وتصور النتائج في نفس المستند.
يمكنك تحميل أنكوندا من الموقع الرسمي: https://www.anaconda.com/download/
هو عبارة عن توزيع مجاني مفتوح المصدر لـ Python، مصمم خصيصًا لعلماء البيانات ومهندسي التعلم الآلي. يوفر بيئة عمل شاملة لتطوير وتنفيذ مشاريع التعلم الآلي وعلوم البيانات.
لماذا نستخدم أنكوندا؟
إدارة بيئات العمل: يسمح لك أنكوندا بإنشاء بيئات عمل افتراضية مستقلة لكل مشروع، مما يضمن عدم تداخل الحزم والاعتمادات بين المشاريع المختلفة.
حزمة واسعة من الحزم: يأتي أنكوندا مع مجموعة كبيرة من حزم Python الشائعة المستخدمة في علوم البيانات والتعلم الآلي، مثل NumPy، Pandas، Matplotlib، Scikit-learn، وغيرها.
سهولة الاستخدام: يوفر أنكوندا واجهة مستخدم رسومية (GUI) تسمى Anaconda Navigator، تسهل إدارة البيئات والحزم وتشغيل النوتبوكات.
مجتمع كبير: يتمتع أنكوندا بمجتمع مستخدم نشط كبير يوفر الدعم والمساعدة.
مكونات أنكوندا الرئيسية:
conda:
هو مدير الحزم والأدوات الذي يستخدم لإدارة البيئات والحزم في أنكوندا.
Anaconda Navigator:
هي واجهة المستخدم الرسومية التي تتيح لك إدارة بيئات العمل والحزم وتشغيل النوتبوكات.
Jupyter Notebook:
هو تطبيق ويب تفاعلي يسمح لك بكتابة وتنفيذ شفرة Python وتصور النتائج في نفس المستند.
يمكنك تحميل أنكوندا من الموقع الرسمي: https://www.anaconda.com/download/
Anaconda
Download Anaconda Distribution | Anaconda
Download Anaconda's open-source Distribution today. Discover the easiest way to perform Python/R data science and machine learning on a single machine.
Forwarded from AI (Artificial Intelligence ) (AHMED ALLAW)
AI (Artificial Intelligence )
Photo
#IS4
الخوارزميات الشائعة المستخدمة في البحث في الرسوم البيانية:
Dijkstra, DFS, BFS, A*:
هذه الخوارزميات تستخدم لحل مجموعة متنوعة من المشاكل المتعلقة بالبحث عن المسارات في الرسوم البيانية،
مثل:
عثور أقصر مسار:
تحديد أقصر مسار بين نقطتين في رسم بياني مرجح.
استكشاف الرسم البياني:
زيارة جميع العقد في الرسم البياني.
حل المسائل المتعلقة باللعب:
مثل لعبة الشطرنج أو المتاهات.
نحو الهدف.
BFS و DFS:
تستخدم لاستكشاف الرسم البياني، ولا تضمن العثور على أقصر مسار في الرسوم البيانية المرجحة.
Dijkstra:
تضمن العثور على أقصر مسار في الرسوم البيانية المرجحة ذات الأوزان الموجبة.
A*:
تحسن على Dijkstra باستخدام دالة تكلفة تقديرية لتوجيه البحث، مما يجعلها أكثر كفاءة في العديد من الحالات.
مثال:
إذا كنت تريد العثور على أقصر مسار بين مدينتين في خريطة، فإن خوارزمية Dijkstra أو *A ستكون مناسبة.
أما إذا كنت تريد التحقق من وجود دورة في رسم بياني، فإن DFS ستكون أكثر ملاءمة.
#ذكاء_إصطناعي_عملي
الخوارزميات الشائعة المستخدمة في البحث في الرسوم البيانية:
Dijkstra, DFS, BFS, A*:
هذه الخوارزميات تستخدم لحل مجموعة متنوعة من المشاكل المتعلقة بالبحث عن المسارات في الرسوم البيانية،
مثل:
عثور أقصر مسار:
تحديد أقصر مسار بين نقطتين في رسم بياني مرجح.
استكشاف الرسم البياني:
زيارة جميع العقد في الرسم البياني.
حل المسائل المتعلقة باللعب:
مثل لعبة الشطرنج أو المتاهات.
نحو الهدف.
BFS و DFS:
تستخدم لاستكشاف الرسم البياني، ولا تضمن العثور على أقصر مسار في الرسوم البيانية المرجحة.
Dijkstra:
تضمن العثور على أقصر مسار في الرسوم البيانية المرجحة ذات الأوزان الموجبة.
A*:
تحسن على Dijkstra باستخدام دالة تكلفة تقديرية لتوجيه البحث، مما يجعلها أكثر كفاءة في العديد من الحالات.
مثال:
إذا كنت تريد العثور على أقصر مسار بين مدينتين في خريطة، فإن خوارزمية Dijkstra أو *A ستكون مناسبة.
أما إذا كنت تريد التحقق من وجود دورة في رسم بياني، فإن DFS ستكون أكثر ملاءمة.
#ذكاء_إصطناعي_عملي
Forwarded from AI (Artificial Intelligence ) (AHMED ALLAW)
Forwarded from AI (Artificial Intelligence ) (AHMED ALLAW)
AI (Artificial Intelligence )
#IS4 #ذكاء_إصطناعي_عملي
#IS4
خوارزميات البحث Search Algorithms:
المستنيرة وغير المستنيرة
(Informed vs. Uninformed Search Algorithms).
الخوارزميات غير المستنيرة (Uninformed Search Algorithms)
تعريف:
هي خوارزميات لا تمتلك أي معلومات مسبقة عن الهدف أو الحل الأمثل.
تعتمد بشكل أساسي على استكشاف كل الاحتمالات الممكنة بشكل منهجي حتى الوصول إلى الهدف.
أمثلة:
البحث العرضي (Breadth-First Search):
يبدأ من العقدة الجذرية ويستكشف جميع العقد على نفس المستوى قبل الانتقال إلى المستوى التالي.
البحث العميق (Depth-First Search):
يتقدم بعمق في كل فرع من الشجرة حتى يصل إلى ورقة أو عقدة هدف، ثم يعود للبحث في فروع أخرى.
البحث التوحيدي (Uniform Cost Search):
يختار دائماً العقدة التي لها أقل تكلفة تراكمية من البداية.
الخوارزميات المستنيرة (Informed Search Algorithms)
تعريف:
هي خوارزميات تستخدم معلومات إضافية عن الهدف أو الحل الأمثل لتوجيه عملية البحث. هذه المعلومات تساعد في تقليل عدد العقد التي يتم فحصها وتحسين كفاءة البحث.
أمثلة:
البحث الأكثر تكلفة (Greedy Best-First Search):
يختار دائماً العقدة التي تبدو أقرب إلى الهدف بناءً على تكلفة مسار معين.
البحث *A:
يعتبر أحد أشهر الخوارزميات المستنيرة، حيث يجمع بين تكلفة المسار الحالي وتقدير التكلفة المتبقية للوصول إلى الهدف.
متى تستخدم كل نوع؟
الخوارزميات غير المستنيرة:
تستخدم عندما لا تتوفر أي معلومات مسبقة عن الهدف، أو عندما تكون تكلفة الحصول على هذه المعلومات عالية.
الخوارزميات المستنيرة:
تستخدم عندما تتوفر معلومات عن الهدف ويمكن استخدامها لتوجيه البحث. تكون مفيدة بشكل خاص في مشاكل البحث المعقدة حيث يكون عدد الاحتمالات كبيرًا.
#ذكاء_إصطناعي_عملي
خوارزميات البحث Search Algorithms:
المستنيرة وغير المستنيرة
(Informed vs. Uninformed Search Algorithms).
الخوارزميات غير المستنيرة (Uninformed Search Algorithms)
تعريف:
هي خوارزميات لا تمتلك أي معلومات مسبقة عن الهدف أو الحل الأمثل.
تعتمد بشكل أساسي على استكشاف كل الاحتمالات الممكنة بشكل منهجي حتى الوصول إلى الهدف.
أمثلة:
البحث العرضي (Breadth-First Search):
يبدأ من العقدة الجذرية ويستكشف جميع العقد على نفس المستوى قبل الانتقال إلى المستوى التالي.
البحث العميق (Depth-First Search):
يتقدم بعمق في كل فرع من الشجرة حتى يصل إلى ورقة أو عقدة هدف، ثم يعود للبحث في فروع أخرى.
البحث التوحيدي (Uniform Cost Search):
يختار دائماً العقدة التي لها أقل تكلفة تراكمية من البداية.
الخوارزميات المستنيرة (Informed Search Algorithms)
تعريف:
هي خوارزميات تستخدم معلومات إضافية عن الهدف أو الحل الأمثل لتوجيه عملية البحث. هذه المعلومات تساعد في تقليل عدد العقد التي يتم فحصها وتحسين كفاءة البحث.
أمثلة:
البحث الأكثر تكلفة (Greedy Best-First Search):
يختار دائماً العقدة التي تبدو أقرب إلى الهدف بناءً على تكلفة مسار معين.
البحث *A:
يعتبر أحد أشهر الخوارزميات المستنيرة، حيث يجمع بين تكلفة المسار الحالي وتقدير التكلفة المتبقية للوصول إلى الهدف.
متى تستخدم كل نوع؟
الخوارزميات غير المستنيرة:
تستخدم عندما لا تتوفر أي معلومات مسبقة عن الهدف، أو عندما تكون تكلفة الحصول على هذه المعلومات عالية.
الخوارزميات المستنيرة:
تستخدم عندما تتوفر معلومات عن الهدف ويمكن استخدامها لتوجيه البحث. تكون مفيدة بشكل خاص في مشاكل البحث المعقدة حيث يكون عدد الاحتمالات كبيرًا.
#ذكاء_إصطناعي_عملي
Forwarded from AI (Artificial Intelligence ) (AHMED ALLAW)
AI (Artificial Intelligence )
Photo
الخوارزميات الجينية GENETIC ALGORITHMS:
الخوارزميات الجينية هي مجموعة من التقنيات المستوحاة من عملية التطور البيولوجي، حيث يتم تطبيق مبادئ الوراثة والانتقاء الطبيعي لحل مشكلات معقدة.
تخيل أننا نريد تصميم طائرة ورقية تطير لأبعد مسافة ممكنة.
بدلاً من تجربة كل التصاميم الممكنة واحدة تلو الأخرى، يمكننا استخدام الخوارزميات الجينية لإنشاء مجموعة من التصاميم الأولية، ثم تطويرها وتنقيحها تدريجياً للحصول على التصميم الأمثل.
كيف تعمل الخوارزميات الجينية؟
التكوين الأولي (Initialization):
يتم إنشاء مجموعة عشوائية من الحلول المحتملة للمشكلة. تسمى هذه الحلول بالكروموسومات، وهي تمثل مجموعة من الجينات التي تحدد خصائص الحل.
التقييم (Evaluation):
يتم تقييم كل كروموسوم بناءً على مدى اقترابه من الحل الأمثل. يتم حساب قيمة لياقة لكل كروموسوم، حيث تعبر قيمة اللياقة عن جودة الحل.
الانتقاء (Selection):
يتم اختيار الكروموسومات ذات اللياقة العالية لتنتقل إلى الجيل التالي. هذا يعكس مبدأ البقاء للأصلح في التطور البيولوجي.
التزاوج (Crossover):
يتم تبادل أجزاء من الكروموسومات المختارة لإنتاج أجيال جديدة. هذا يعادل التزاوج في الكائنات الحية.
الطفرات (Mutation):
يتم إدخال تغييرات عشوائية على بعض الجينات في الكروموسومات الجديدة. هذا يحاكي الطفرات الجينية التي تحدث بشكل طبيعي.
التكرار:
تتكرر الخطوات من 2 إلى 5 لعدد معين من الأجيال، أو حتى الوصول إلى حل مرضٍ.
أين تستخدم الخوارزميات الجينية؟
تستخدم الخوارزميات الجينية في مجموعة واسعة من التطبيقات، بما في ذلك:
التحسين:
مثل تحسين تصميم الدوائر الإلكترونية، وتخطيط المدن، وتصميم الجداول الزمنية.
النمذجة:
محاكاة أنظمة معقدة مثل النظم البيئية والاقتصادية.
التعلم الآلي:
اكتشاف الأنماط في البيانات الضخمة.
الذكاء الاصطناعي:
حل مشكلات التحسين في الألعاب والروبوتات.
مزايا الخوارزميات الجينية:
مرونة:
يمكن تطبيقها على مجموعة واسعة من المشكلات.
قدرة على التعامل مع المشكلات غير الخطية:
حيث لا توجد علاقة مباشرة بين مدخلات المشكلة ومخرجاتها.
قدرة على التعامل مع قيود متعددة:
يمكن تضمين قيود مختلفة في عملية البحث عن الحل.
إيجاد حلول تقريبية جيدة:
في كثير من الحالات، يمكن للخوارزميات الجينية إيجاد حلول جيدة جدًا في وقت قصير.
عيوب الخوارزميات الجينية:
وقت الحساب:
قد تحتاج إلى وقت طويل لحل بعض المشكلات المعقدة.
اعتماد على المعلمات:
أداء الخوارزمية يعتمد بشكل كبير على اختيار المعلمات المناسبة.
عدم ضمان إيجاد الحل الأمثل:
قد تصل الخوارزمية إلى حل محلي بدلاً من الحل الأمثل العالمي.
الخوارزميات الجينية هي مجموعة من التقنيات المستوحاة من عملية التطور البيولوجي، حيث يتم تطبيق مبادئ الوراثة والانتقاء الطبيعي لحل مشكلات معقدة.
تخيل أننا نريد تصميم طائرة ورقية تطير لأبعد مسافة ممكنة.
بدلاً من تجربة كل التصاميم الممكنة واحدة تلو الأخرى، يمكننا استخدام الخوارزميات الجينية لإنشاء مجموعة من التصاميم الأولية، ثم تطويرها وتنقيحها تدريجياً للحصول على التصميم الأمثل.
كيف تعمل الخوارزميات الجينية؟
التكوين الأولي (Initialization):
يتم إنشاء مجموعة عشوائية من الحلول المحتملة للمشكلة. تسمى هذه الحلول بالكروموسومات، وهي تمثل مجموعة من الجينات التي تحدد خصائص الحل.
التقييم (Evaluation):
يتم تقييم كل كروموسوم بناءً على مدى اقترابه من الحل الأمثل. يتم حساب قيمة لياقة لكل كروموسوم، حيث تعبر قيمة اللياقة عن جودة الحل.
الانتقاء (Selection):
يتم اختيار الكروموسومات ذات اللياقة العالية لتنتقل إلى الجيل التالي. هذا يعكس مبدأ البقاء للأصلح في التطور البيولوجي.
التزاوج (Crossover):
يتم تبادل أجزاء من الكروموسومات المختارة لإنتاج أجيال جديدة. هذا يعادل التزاوج في الكائنات الحية.
الطفرات (Mutation):
يتم إدخال تغييرات عشوائية على بعض الجينات في الكروموسومات الجديدة. هذا يحاكي الطفرات الجينية التي تحدث بشكل طبيعي.
التكرار:
تتكرر الخطوات من 2 إلى 5 لعدد معين من الأجيال، أو حتى الوصول إلى حل مرضٍ.
أين تستخدم الخوارزميات الجينية؟
تستخدم الخوارزميات الجينية في مجموعة واسعة من التطبيقات، بما في ذلك:
التحسين:
مثل تحسين تصميم الدوائر الإلكترونية، وتخطيط المدن، وتصميم الجداول الزمنية.
النمذجة:
محاكاة أنظمة معقدة مثل النظم البيئية والاقتصادية.
التعلم الآلي:
اكتشاف الأنماط في البيانات الضخمة.
الذكاء الاصطناعي:
حل مشكلات التحسين في الألعاب والروبوتات.
مزايا الخوارزميات الجينية:
مرونة:
يمكن تطبيقها على مجموعة واسعة من المشكلات.
قدرة على التعامل مع المشكلات غير الخطية:
حيث لا توجد علاقة مباشرة بين مدخلات المشكلة ومخرجاتها.
قدرة على التعامل مع قيود متعددة:
يمكن تضمين قيود مختلفة في عملية البحث عن الحل.
إيجاد حلول تقريبية جيدة:
في كثير من الحالات، يمكن للخوارزميات الجينية إيجاد حلول جيدة جدًا في وقت قصير.
عيوب الخوارزميات الجينية:
وقت الحساب:
قد تحتاج إلى وقت طويل لحل بعض المشكلات المعقدة.
اعتماد على المعلمات:
أداء الخوارزمية يعتمد بشكل كبير على اختيار المعلمات المناسبة.
عدم ضمان إيجاد الحل الأمثل:
قد تصل الخوارزمية إلى حل محلي بدلاً من الحل الأمثل العالمي.