-
المساهمات
15394 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
403
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
return بالنسبة للبيانات الكبيرة كقائمة أو أي مجموعة بيانات تحتوي على عدد كبير جدًا من العناصر، فسيحتاج بايثون إنشاء القائمة كاملة في الذاكرة وتخزين كل عناصرها قبل أن يتم إرجاعها، وعند التعامل مع ملايين العناصر، أو قراءة ملف كبير جدًا، فأحيانًا تستهلك كمية هائلة من ذاكرة الوصول العشوائي RAM، وذلك يبطئ البرنامج أو حتى يؤدي إلى انهياره بسبب نفاد الذاكرة MemoryError. أما yield، فالدالة لا تقوم بإنشاء المجموعة كاملة في الذاكرة دفعة واحدة، بل تُنتج yield قيمة واحدة فقط في كل مرة يتم فيها طلب قيمة من المولّد، وتحتفظ الدالة بحالتها وتتوقف مؤقتًا وعند طلب القيمة التالية، تستأنف من حيث توقفت وتنتج القيمة التالية، وهكذا. بالتالي في أي لحظة زمنية، لا يتم تخزين سوى عنصر واحد أو عدد قليل جدًا من العناصر اللازمة للحساب في الذاكرة، بغض النظر عن الحجم الكلي للتسلسل الذي يمكن للمولّد إنتاجه، وذاك ما يسمى التقييم الكسول Lazy Evaluation.
- 7 اجابة
-
- 1
-
-
هناك فرق كبير، return لإنهاء تنفيذ الدالة فورًا وإرسال قيمة أو None في حال لم تُحدد قيمة، وبمجرد أن تصل الدالة إلى جملة return، يتوقف تنفيذها تمامًا، وأي كود يأتي بعد return داخل نفس الدالة لن يتم تنفيذه. أما yield هي خاصة بنوع من الدوال يسمى الدوال المولّدة Generator Functions، وباستخدامها بها تُنتج قيمة مثل return، لكنها لا تنهي الدالة، ما يحدث هو تعليق أو توقف مؤقت لتنفيذ الدالة وتحتفظ بحالتها الداخلية وهي قيمة المتغيرات المحلية ومكان التوقف. وعند استدعاء دالة تحتوي على yield، لا تُنفذ الكود مباشرة، بل تعود بكائن خاص يسمى مولّد Generator Object، وهو مُكرِّر Iterator، وفي كل مرة تطلب فيها قيمة من المولّد من خلال حلقة for أو الدالة next()، تستأنف الدالة تنفيذها من النقطة التي توقفت عندها بعد yield السابقة، وتستمر حتى تصل إلى yield التالية فتنتج قيمة وتتوقف مؤقتًا مرة أخرى أو حتى نهاية الدالة. أي تحتفظ الدالة المولّدة بحالتها بين الاستدعاءات المتعاقبة للمولّد.
- 7 اجابة
-
- 1
-
-
ما هي الدورة التي تقوم بدراستها حاليًا؟ فذلك متوفر بالفعل في دورة جافاسكريبت بالأكاديمية حيث يوجد بها مسار إنشاء تطبيق أسئلة وأجوبة باستخدام Next.js لشرح الأساسيات وتطبيق تعلم اللغات باستخدام Next.js وتطبيق أساسيات TypeScript بواسطة Next.js.
-
المطلوب منك إيجاد حل فعال وصحيح للمشكلة في أقصر وقت ممكن، مع مراعاة الأداء وهما الزمن والمساحة، ولا يُتوقع منك ابتكار هياكل بيانات أو خوارزميات جديدة كليًا من الصفر، بل الاعتماد على الأدوات والمفاهيم المعروفة كالمصفوفات، القوائم المرتبطة، الأشجار، Hash Tables، الخوارزميات الجشعة، البحث الثنائي، أو البرمجة الديناميكية، وتكييفها لحل المشكلة المحددة. الأهم فهم المشكلة من خلال قراءة الوصف وتحديد المطلوب، ثم اختيار الأداة المناسبة بتحديد هيكل البيانات أو الخوارزمية الأنسب حسب طبيعة المشكلة، وبعد الحل تستطيع تحسين أداء الكود، المهم في البداية الوصول للحل. مثلاً لو المشكلة تتطلب البحث السريع عن عنصر، فالـ Hash Tables هي الخيار الأمثل، ولو بحاجة إلى ترتيب البيانات، فستعتمد على خوارزميات الترتيب QuickSort أو MergeSort. بالطبع أحيانًا تحتاج أحيانًا إلى توظيف ما تعلمته وربط المفاهيم ببعضها، أي تعديل هيكل بيانات أو خوارزمية موجودة لتناسب المشكلة، أو الجمع بين أكثر من أداة كاستخدام Heap مع بحث ثنائي Binary Search. كنصيحة، تعلم الأنماط الشائعة للمشاكل ومنها Two Pointers، Sliding Window، DFS/BFS وكيفية تطبيقها، وذلك سيوفر عليك الكثير الوقت، لأن معظم مسائل LeetCode مبنية على أنماط متكررة تستطيع حلها بأدوات معروفة.
- 5 اجابة
-
- 1
-
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
- 2 اجابة
-
- 1
-
-
استخدم الأمر: DISM /Online /Set-UILang:ar-LY ثم: DISM /Online /Set-SysUILang:ar-LY وأعد تشغيل الحاسوب.
- 8 اجابة
-
- 1
-
-
فرضًا لدينا مجلد يحتوي على صور بصيغة JPEG، وتريد تحميلها وعرض أول صورة، فالطريقة كالتالي: import tensorflow as tf import matplotlib.pyplot as plt file_paths = tf.data.Dataset.list_files("./images/*.jpg") def load_and_decode_image(file_path): image_data = tf.io.read_file(file_path) image = tf.image.decode_jpeg(image_data, channels=3) return image dataset = file_paths.map(load_and_decode_image) iterator = iter(dataset) first_image = next(iterator) plt.imshow(first_image.numpy()) plt.axis('off') plt.show() في file_paths نقوم بإنشاء Dataset يحتوي على مسارات ملفات الصور التي تنتهي بـ .jpg في المجلد المحدد. و load_and_decode_image هي دالة تستقبل مسار ملف، تقرأه بـ tf.io.read_file، ثم تحول البايتات إلى صورة بـ tf.image.decode_jpeg. بينما ميثود map هي للتكرار على كل عنصر في الـ Dataset لتحويل المسارات إلى صور. وفي العرض plt.imshow(first_image.numpy()) نحدد أول صورة من الـ Dataset ونعرضها. وفي حال أردنا صيغة أخرى غير JPEG مثل PNG، نكتب tf.image.decode_png بدلاً من tf.image.decode_jpeg، وتستطيع أيضًا إضافة خطوات إضافية مثل تغيير حجم الصورة بـ tf.image.resize إذا لزم الأمر.
- 9 اجابة
-
- 1
-
-
اضغط على الثلاث نقاط مرة أخرى بجانب اللغة، وتأكد من تفعيل خيار Set as my Windows display language ثم حاول إعادة تشغيل النظام، من المفترض أن يتم تغيير اللغة طالما قمت بذلك، لو استمرت المشكلة، قم بتشغيل CMD كمسؤول ثم اكتب التالي لتحويل اللغة: DISM /Online /Set-DefaultUILanguage:ar-LY
- 8 اجابة
-
- 1
-
-
اضغط على الثلاث نقاط على يمين اللغة "العربية ليبيا" ثم اختر language option أو خيارات اللغة، في حال ظهر لك installed أو مثبتة فيعني أن ملفات اللغة تم تحميلها، في حال ظهر لك زر تثبيت اضغط عليه. بعد ذلك قم بالرجوع للخلف لإعدادات اللغة، ومن windows display language اختر الإنجليزية ثم اختر العربية مرة أخرى، في حال ظهر لك يجب تسجيل الخروج قم بالضغط على sign-out.
- 8 اجابة
-
- 1
-
-
قم بإعادة تشغيل الحاسوب ليتم تعديل اللغة في كامل برامج الويندوز.
- 8 اجابة
-
- 1
-
-
ما هي مواصفات الحاسوب لديك، في شريط البحث بالأسفل في الويندوز ابحث عن system information وأرفق صورة بالمواصفات، فربما الرامات RAM أو الذاكرة العشوائية مساحتها قليلة أو ربما كرت الشاشة GPU لديك الـ VRAM أي الرامات به قليلة أيضًا. فلوميون يعتمد بشكل كبير على الذاكرة العشوائية وكرت الشاشة، ولو المشروع يحتوي على تفاصيل كثيرة كالنماذج ثلاثية الأبعاد عالية الدقة أو التأثيرات المعقدة، فستنفد ذاكرة كرت الشاشة VRAM أو الرامات نفسها RAM، وذلك يؤدي إلى توقف البرنامج. افتح Task manager وراقب الاستهلاك أثناء عملية الـ rendering، وتفقد ما هي الموارد التي يتم استهلاكها وتصل إلى 90% أو أعلى، هل المعالج أم الرامات أم كرت الشاشة؟ حاول تقليل إعدادات الـ render، بضبط الدقة على 1080p بدلاً من 4K أو قلل من جودة التأثيرات مثل الظلال والإضاءة في إعدادات الرندر، أيضًا تجربة تصدير المشروع على مراحل بدلاً من عمل رندر كامل.
-
ليس بشكل كامل بمعنى بناء مشاريع وشرح تقنيات الواجهة الأمامية مثل React والواجهة الخلفية مثل Express.js. لكن سيتم شرح أساسيات كلٌ منهم، ففي مسار قواعد البيانات ستتعلم أساسيات الواجهة الخلفية وكيفية التعامل مع قواعد البيانات المختلفة وتعلم اللغة الخاصة بها وهي SQL، وأيضًا تعلم أساسيات بيئة التشغيل Node.js الخاصة بالواجهة الخلفية وكيف يتم بناء سيرفر والتعامل مع قاعدة البيانات من خلاله. ثم في مسار إلى عالم الويب، ستتعلم أساسيات الويب وكيف يعمل الإنترنت وآلية الربط بين الواجهة الأمامية والخلفية، لكن لم يتم التطرق للغات الواجهة الأمامية وهم HTML, CSS فليس الغرض من الدورة بناء المواقع. وقبل كل في مسار أساسيات البرمجة ستتعلم لغة جافاسكريبت وهي اللغة الأساسية لبرمجة الواجهة الأمامية، وبعد ذلك أصبحت تستخدم في تطوير الواجهة الخلفية من خلال Node.js وأيضًا تطبيقات الهواتف وسطح المكتب.
- 3 اجابة
-
- 1
-
-
الأمور المالية يتم مناقشتها من خلال مركز المساعدة تستطيع مراسلتهم والسؤال عما تريد بخصوص وسيلة الدفع المناسبة لك والتحقق هل ذلك مقبول أم لا لكن ذلك ليس متاح بشكل مباشر في الأكاديمية حيث يتم الدفع بشكل فوري، في أوقات مختلفة من العام يتم توفير عرض دورتين بسعر دورة واحدة، فمنذ شهر تقريبًا انتهى ذلك العرض ويتجدد خلال العام في أوقات مختلفة، وربما يتغير العرض، لكن الفكرة أن هناك عروض خلال العام، تابع الأكاديمية. بخصوص الكوبون أرجو سؤال مركز المساعدة أيضًا عن توافر كوبونات حاليًا أم لا، فأحيانًا يتوافر ذلك. أما طرق الإشتراك بالأكاديمية هي كالتالي:
-
في ملف Form1.cs لديكِ حاولي تحسين دالة continRun_Click للتعامل مع استئناف العمليات بشكل صحيح، مع إضافة رسوم متحركة للزر نفسه، واستخدام Task لضمان استمرارية العمليات غير المتزامنة. private bool isAnimating = false; private CancellationTokenSource animationCTS; private async void continRun_Click(object sender, EventArgs e) { if (isAnimating) return; continRun.Enabled = false; paused.Enabled = true; stopAnimation = false; animationCTS = new CancellationTokenSource(); try { await AnimateButton(continRun, animationCTS.Token); await ResumeAnimation(); } catch (OperationCanceledException) { // التعامل مع الإلغاء إذا لزم الأمر stopAnimation = true; } finally { continRun.Enabled = true; isAnimating = false; } } private async Task AnimateButton(Button button, CancellationToken token) { isAnimating = true; Size originalSize = button.Size; Point originalLocation = button.Location; try { for (int i = 0; i < 5; i++) { if (token.IsCancellationRequested) throw new OperationCanceledException(); button.Size = new Size(originalSize.Width + (i * 2), originalSize.Height + (i * 2)); button.Location = new Point(originalLocation.X - i, originalLocation.Y - i); await Task.Delay(30, token); button.Invalidate(); } for (int i = 5; i >= 0; i--) { if (token.IsCancellationRequested) throw new OperationCanceledException(); button.Size = new Size(originalSize.Width + (i * 2), originalSize.Height + (i * 2)); button.Location = new Point(originalLocation.X - i, originalLocation.Y - i); await Task.Delay(30, token); button.Invalidate(); } } finally { button.Size = originalSize; button.Location = originalLocation; } } private async Task ResumeAnimation() { if (!stopAnimation) { PlayButton(true); await Task.Run(() => { if (!stopAnimation) { switch (currentProcess) { case "Add": AddProcess(); break; case "Sub": SubProcess(); break; case "Mul": MulProcess(); break; case "Div": DivProcess(); break; default: break; } } }); } } وإضافة المتغيرات التالية في بداية الكلاس لتتبع الحالة: private string currentProcess = "Add"; private bool isAnimating = false; private CancellationTokenSource animationCTS; ويجب أن تكون دالة PlayButton(bool) متوافقة مع الاستئناف، تستطيعي استبدالها باستدعاء الدالة الخاصة بالتشغيل. وإضافة using: using System.Threading; using System.Threading.Tasks;
-
ما زلت لم أتفهم ما تحاول القيام به، المطلوب إرسال ملفات الكود فقط وليس إرسال مجلد البيئة الإفتراضية الذي به الحزم، ملفات الكود حجمها بسيط، وتستطيع استثناء المجلدات والملفات التي تريدها من الرفع على Github من خلال ملف gitignore تفقد التالي:
-
من الأفضل محاولة الحل لتحقيق استفادة، سأوضح لك الخطوات، لديك سلسلة نصية 'X-DSPAM-Confidence: 0.8475' استخدم ميثود أي دالة find لتحديد موقع النقطتين : في السلسلة، حيث سيتم إعادة الفهرس index للنقطتين في السلسلة. بمجرد معرفة موقع النقطتين، استخدم التقطيع slicing لاستخراج كل شيء بعد النقطتين، ستحتاج إلى أخذ موقع النقطتين وإضافة 1 لتخطي النقطتين نفسها واترك نهاية التقطيع فارغة لأخذ كل شيء حتى نهاية السلسلة. وستحصل على نص ' 0.8475' لاحظ المسافة أي الفراغ في النهاية بعد رقم 5، استخدم دالة strip() لإزالة أي مسافات فارغة من بداية ونهاية النص المستخرج. ثم استخدم دالة float() لتحويل السلسلة النصية الناتجة إلى رقم عشري بدلاً من نص " " وذلك لاستخدامه في العمليات الحسابية، فالنص لا نستطيع استخدامه في ذلك.
-
ما هي المشكلة وما هو المشروع الذي تعمل عليه؟ هل تحاول رفع مشروع إلى GitHub؟ ستحتاج إلى إنشاء ملف gitignore. من أجل تجاهل مجلد البيئة الإفتراضية الذي به الحزم وعدم رفعه إلى المستودع.
-
الحل غير صحيح، المطلوب إيجاد أكبر مجموع لـ subarray متتالي أي عناصر متجاورة في المصفوفة الأصلية بحيث، جميع عناصر الـ subarray فريدة ويُسمح بحذف أي عدد من العناصر من المصفوفة الأصلية لكن يجب أن يبقى الsubarray متتاليًا بعد الحذف. لكل قيمة فريدة في المصفوفة، تتبع الحد الأقصى لتكرار تلك القيمة، وتستطيع ببساطة تخزين القيمة الفريدة نفسها وكأنها الحد الأقصى لتكرارها، وانتبه إلى أنّ تتبع الحد الأقصى للتكرار لا يعني عد مرات الظهور بالمعنى الحرفي، بل التعامل مع كل قيمة فريدة مرة واحدة فقط، واختيار القيمة نفسها كممثل لها. ثم جمع الحدود القصوى لتكرارات كل قيمة فريدة فقط إن كانت موجبة، ولو المصفوفة تحتوي فقط على قيم سالبة أو صفر، ستقوم بإرجاع العنصر الأكبر في المصفوفة الأصلية. كالتالي: class Solution: def maxSum(self, nums): max_sum = 0 current_sum = 0 unique_elements = set() left = 0 for right in range(len(nums)): while nums[right] in unique_elements: unique_elements.remove(nums[left]) current_sum -= nums[left] left += 1 unique_elements.add(nums[right]) current_sum += nums[right] if current_sum > max_sum: max_sum = current_sum return max_sum if max_sum != 0 else max(nums) وتلك نسخة أقصر من الكود: class Solution(object): def maxSum(self, nums): ans = 0 for num in set(nums): if num > 0: ans += num return ans if ans else max(nums)
- 5 اجابة
-
- 1
-
-
نستخدمها لمعالجة البيانات النصية وليس الصور، بالتالي لو مجموعة البيانات تحتوي على مسارات الصور images/cat1.jpg وتسمياتها "cat" في ملف CSV أو Excel، فاستخدم Pandas لقراءة القائمة. بعد ذلك، تمرر المسارات إلى tf.data أو DataLoader لتحميل الصور الفعلية ومعالجتها.
- 6 اجابة
-
- 1
-
-
تلك خوارزمية لحل مشكلة أقصى مجموع جزئي أو أكبر مجموع فرعي متجاور Maximum Subarray Problem، وذلك لإيجاد المجموع الأعظمي لتسلسل فرعي متجاور ضمن مصفوفة أحادية البعد تحتوي على أرقام قد تكون موجبة أو سالبة. تحتفظ الخوارزمية بمتغيرين max_so_far يمثل أقصى مجموع تم العثور عليه حتى الآن، و max_ending_here يمثل أقصى مجموع ينتهي عند العنصر الحالي. ثم تمر عبر عناصر المصفوفة: لكل عنصر، تضيف قيمته إلى max_ending_here. وإن أصبح max_ending_here سالبًا، تعيد تعيينه إلى الصفر لأن البدء من جديد أفضل من الاستمرار بمجموع سالب. ثم تحديث max_so_far في حال max_ending_here أكبر منه. بعد الإنتهاء تعيد max_so_far كنتيجة. وذلك مثال من خلال جافاسكريبت: let array = [-2, 1, -3, 4, -1, 2, 1, -5, 4] function maxSubArray(array) { let current_sum = array[0] let max_sum = array[0] for (let i = 1; i < array.length; i++) { current_sum = Math.max(array[i], current_sum + array[i]) if (current_sum > max_sum) { max_sum = current_sum } } return max_sum } console.log(maxSubArray(array))
- 3 اجابة
-
- 1
-
-
يجب أن تكون الصور في الأساس في صيغة بيانات رقمية قبل إدخالها إلى الشبكة، فالشبكة نفسها لا تقوم بتحويل الصور من شكلها الخام أي ملفات JPEG أو PNG إلى بيانات رقمية داخليًا من تلقاء نفسها، بل تعتمد على أن تكون البيانات جاهزة في شكل مناسب للمعالجة. وأنت لست بحاجة إلى القيام بذلك يدويًا، فالمكتبات المستخدمة لبناء وتدريب الشبكات العصبية وهي TensorFlow أو PyTorch تتولى تلك الخطوة تلقائيًا عند تحميل الصور. حيث أولاً تقوم بتحميل الصور باستخدام مكتبة pillow أو openCV ثم تحويلها إلى مصفوفات من خلال مكتبة numpy، بعد ذلك تهيئتها بواسطة tensorflow بضبط أبعاد الصورة لتتناسب مع مدخلات الشبكة والتهيئة Normalization بتحويل قيم البكسلات من النطاق [0, 255] إلى [0, 1] أو أي نطاق آخر، والتعامل مع القنوات للتأكد من ترتيب القنوات RGB حسب ما تتطلبه الشبكة. لكن في حال البيانات الكبيرة كآلاف الصور لن نقوم بذلك بالطريقة السابقة، فلديك مكتبة PyTorch والتي توفر أدوات لتحميل البيانات من خلال دفعات batches ومعالجتها تلقائيًا، أو من خلال tf.keras.utils.image_dataset_from_directory مع tf.data من مكتبة TensorFlow وهي الطريقة الأسهل لتحميل الصور من المجلدات وإنشاء مجموعات بيانات datasets.
- 6 اجابة
-
- 1
-