-
المساهمات
15283 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
400
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
- 2 اجابة
-
- 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 إذا لزم الأمر.
-
اضغط على الثلاث نقاط مرة أخرى بجانب اللغة، وتأكد من تفعيل خيار Set as my Windows display language ثم حاول إعادة تشغيل النظام، من المفترض أن يتم تغيير اللغة طالما قمت بذلك، لو استمرت المشكلة، قم بتشغيل CMD كمسؤول ثم اكتب التالي لتحويل اللغة: DISM /Online /Set-DefaultUILanguage:ar-LY
- 7 اجابة
-
- 1
-
-
اضغط على الثلاث نقاط على يمين اللغة "العربية ليبيا" ثم اختر language option أو خيارات اللغة، في حال ظهر لك installed أو مثبتة فيعني أن ملفات اللغة تم تحميلها، في حال ظهر لك زر تثبيت اضغط عليه. بعد ذلك قم بالرجوع للخلف لإعدادات اللغة، ومن windows display language اختر الإنجليزية ثم اختر العربية مرة أخرى، في حال ظهر لك يجب تسجيل الخروج قم بالضغط على sign-out.
- 7 اجابة
-
- 1
-
-
قم بإعادة تشغيل الحاسوب ليتم تعديل اللغة في كامل برامج الويندوز.
- 7 اجابة
-
- 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
-
-
لعكس إتجاه الكتابة في Notepad++ اضغط على CTRL + ALT + R وسيتم عرض إتجاه النص من اليمين لليسار دون عكس النص نفسه. في حال ظهر لك تنبيه بتعطيل خاصية direct write قم بالضغط على settings بالأعلى ثم اختر MISC من على اليسار ثم تعطيل خيار direct write. لكن الكود نفسه به مشكلة، فسيظهر بشكل غير صحيح على المتصفح، بسبب <LSTag وغيرها من الأكواد، من المفترض أن يكون كالتالي: بعد تسجيل <LSTag Tooltip="CriticalHit">ضربة حرجة</LSTag>، استخدم <LSTag Type="ActionResource" Tooltip="BonusActionPoint">إجراء المكافأة</LSTag> لإجراء هجوم إضافي.
-
ليست مقتصرة فقط ذلك، بل لها تطبيقات متنوعة في مجالات أخرى أيضًا، بالطبع الاستخدام الأكثر شهرة هو معالجة الصور وتحليلها، كالتعرف على الأشياء، تصنيف الصور، واكتشاف الأنماط البصرية، بفضل قدرتها على استخلاص الميزات المكانية من البيانات ذات الأبعاد المتعددة، لكن استخداماتها تمتد إلى ما هو أبعد من ذلك. مثلاً في معالجة اللغة الطبيعية NLP لتحليل النصوص، كتصنيف المشاعر أو استخراج الميزات من التسلسلات النصية، حيث يتم التعامل مع النصوص كمصفوفات بتضمينات الكلمات، كما تُطبق في تحليل الإشارات الزمنية، مثل معالجة الصوت في التعرف على الكلام أو تحليل التسجيلات الصوتية، حيث تُعتبر الإشارات الصوتية بيانات أحادية البعد ومعالجتها باستخدام الالتفافات. وفي تحليل البيانات العلمية، كالتنبؤ بالطقس أو تحليل الصور الطبية كالأشعة السينية أو الرنين المغناطيسي، وحتى في الألعاب والروبوتات لفهم البيئة المحيطة، فكلما كانت هناك بيانات تحتوي على أنماط مكانية أو تسلسلية يمكن استخراجها، تظهر فائدة CNNs.
- 4 اجابة
-
- 1
-
-
هل اللابتوب يعمل بشكل سليم في حال قمت بنزع البطارية وتوصيله مباشرًة بالكهرباء؟ في حال ذلك إذن المشكلة من البطارية وعلى الرغم من أنها جديدة كما ذكرت فربما المشكلة من اللابتوب نفسه سواء عطل شائع في الموديل أي عيب مصنعي أو عطل في الجهاز فقط ويحتاج إلى إرساله لفني متخصص لتفقد ما المشكلة به. في حال الجهاز ما زال في فترة الضمان الأفضل صيانته في التوكيل الخاص به.
-
ذلك نقاش قديم، والبعض يتمسك برأيه بأنه لكي تتعلم البرمجة بشكل صحيح وتتأسس بشكل قوي، عليك تعلمها من خلال لغة منخفضة المستوى، ذلك صحيح لكن ليس للجميع، فشخص مبتدأ وليس لديه خلفية متعلقة بالحاسوب أو علومه سيجد صعوبة وسيصاب بالإحباط بدون داعي، فليس من الطبيعي أن يتعامل مباشرًة مع إدارة الذاكرة يدوياً باستخدام المؤشرات. لذا تستطيع تعلم البرمجة من خلال أي لغة والأسهل هي بايثون بالطبع وهي لغة قوية ومستخدمة في مجالات متقدمة، وبعد فترة من التعلم تستطيع تعلم أي لغة برمجة أخرى فالمفاهيم هي ذاتها وذلك لتعميق الفهم. ستجد هنا تفصيل بخصوص الخوارزميات وهياكل البيانات التي عليك تعلمها:
- 3 اجابة
-
- 1
-
-
ليس بشكل مباشر فلا تتوفر دالة مُضمنة في بايثون لفعل ذلك، لكن يوجد هيكل بيانات set، وهو نوع بيانات يقوم تلقائيًا بإزالة التكرارات، وبالتالي نستطيع مقارنة طوله مع طول القوائم الأصلية لمعرفة هل الأعداد فريدة أم لا. كالتالي: def are_all_unique(lst): return len(lst) == len(set(lst)) my_list1 = [1, 2, 3, 4, 5] my_list2 = [1, 2, 3, 2, 4] print(are_all_unique(my_list1)) print(are_all_unique(my_list2)) لاحظ قمت بتحويل القوائم إلى set من خلال دالة set(lst) ومقارنة الطول وإرجاع True في حال الأعداد الفريدة أو False في حال وجود أعداد غير فريدة وذلك في القائمة الثانية حيث يتكرر العدد 2
- 4 اجابة
-
- 1
-