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

El Sayed El Tohamy

الأعضاء
  • المساهمات

    232
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    1

كل منشورات العضو El Sayed El Tohamy

  1. للانتقال إلى صفحة مختلفة يتم تعين اسمها في الصفة href للرابط التشعبي hyperlink فيكون السطر كالتالي: <p> Don't Have an Account? <a href='register.html'>Create New</a></p> ومنطقيًا تكون أيقونة المستخدم وعرب التسوق تكونان مختفيتين حتى يتم تسجيل الدخول، ويتم ذلك بعدة طرق من ضمنها استخدام الجافاسكريتب مع CSS
  2. السبب هو أن ما تم تحويله إلى نص هو قيمة المتغير وليس المتغير نفسه فالسطر التالي echo gettype((string) $age); يقوم بتحويل قيمة المتغير التي هي 26 ونوعها (عدد صحيح) int يحولها إلى نص string، أي أنه أخذ قيمة المتغير وطبق عليها عملية التحويل، أما المتغير نفسه لم يتغير، ولتغير نوع المتغير يجب كتابة الأمر بالشكل التالي $age = (string)$age; echo gettype($age); نلاحظ بالسطر الأول، قمنا بإعادة تعيين قيمة نصية string للمتغير، وهي مأخوذة من قيمته السابقة التي هي 26 يحولها إلى نص، ثم يعينها للمتغير مرة أخرى، في هذه الحالة يتم تغيير نوع بيانات المتغير.
  3. وعليكم السلام ورحمة الله وبركاته، باختصار شديد، أعرض لك جميع الاختيارت (ولكن الاختيار الأخير هو الأجدد) لتحويل موقع ويب إلى تطبيق محلي native application لدينا عدة اختيارات، أولها: تطوير تطبيق منفصل لكل من الأندرويد وIOS بلغات البرمجة المخصصة لكل منصة ثانيًا: تطوير تطبيق واحد باستخدام لغات البرمجة الهجينة وسيعمل على كل المنصات (ولكن بالتأكيد سيفقد بعض المزيا) ثالثًا: تطوير تطبيق ويب فيو web view وهو يعرض نفس الموقع ولكن من داخل تطبيق وليس المتصفح هذه النقاط وضحها الزملاء الأفاضل بالتعليقات السابقة. رابعًا: والأحدث توجد نقنية جديدة رائعة ظهرت مؤخرًا، وهي تطبيقات الويب التقدمية PWA Progressive Web Application وهي باختصار: تعديلات تتم على موقع الويب نفسه (أي لا نحتاج لتطوير تطبيقات محلية)، هذه التعديلات تجعل تطبيق الويب يتصرف وكأنه تطبيق محلي، أي - يمكن تثبيته على الجهاز الخاص بك وإظهار أيقونة على سطح المكتب أو شاشة البداية - يمكنه العمل بنافذة مستقلة دون الحاجة إلى المتصفح - يمكنه العمل بدون اتصال بالإنترنت offline - يمكنه الوصول إلى موارد الجهاز مثل الكاميرا والبلوتوث وغيرها - يمكنه إظهار الإشعارات - يمكنه التزامن عند عودة الاتصال، فيقوم بإرسال البيانات إلى الخادم والتي تم تخزينها أثناء الانقطاع والعديد من المزايا الأخرى، التي تجعله يبدو ويتصرف كالتطبيقات المحلية (رغم أنه نفس الموقع ولكن بعد إجراء عدة تعديلات عليه)، وهي تقنية جديدة تنمو سريعًا وتنتشر بشكل خرافي.
  4. وعليكم السلام ورحمة الله، دعنا أولًا نتفق على شيء هام جدًا، وهو إذا لديك اختياران كلاهما صحيح، فلا يوجد تفضيل مطلق (أي دائمًا)، بمعنى لا يوجد اختيار هو الأفضل دائمًا، ولكن يوجد اختيار هو الأنسب للحالة التي بين أيدينا، (أؤكد أن الخيارين صحيحان فنحن هنا لا نقارن بين ممارسة صحيحة وأخرى خاطئة). كلتا الشفرتين صحيحتان سواء كصيغة أو كممارسة، نأتي هنا للأنسب، أيهما أنسب؟ هذا يتوقف على الحالة كما وضحت، ففي الكثير من الأحيان يفضل المبرمجون الطريقة الثانية كما وضح مهندس مصطفى @Mustafa Suleiman لأنها طريقة واضحة ومباشرة وخصوصًا إذا يوجد مبتدئين بالفريق فربما لا يعرفون الطريق الأولى. وبالمناسبة الطريقة الأولى مشهورة جدًا في لغات البرمجة وتسمى "العامل الثلاثي" ternary operator ويفضلها الكثير من المبرمجين لأنها رائعة في إعطاء المتغير إحدى قيمتين بناء على شرط معين، فمن يعتاد عليها يدمنها حرفيًا (وأنا واحد منهم)، ولكن هل أستخدمها في كل مكان؟ بالطبع لا ولكن هناك حالات مناسبة لها وحالات أخرى غير مناسبة، من أكبر الفوائد لهذه الطريقة أنها تجنب الوقوع في الأخطاء، انظر للشيفرات التالية .. device = "cuda" if torch.cuda.is_available(): device = "cude" else "cpu": devic = "cpu" هل لاحظت شيئًا؟ لقد حدث خطأ إملائي في اسم المتغير بالسطر الأخير، وهذا سيسبب في مشاكل كبيرة جدًا، لأن بايثون سيعتبر أنك تريد تعريف متغير جديد اسمه devic ولا يعلم أنه تقصد المتغير device، هذه من ضمن فوائد العامل الثلاثي، ولكن كما قلت، يستخدم بحذر. الخلاصة: تعتمد الطريقة على الحالة التي بين يديك، فإذا كان الفريق يحتوي العديد من المبتدئين، فالطريقة الثانية أنسب، أما إذا لديهم خلفية جيدة عن العامل الثلاثي، فالطريقة الثانية ستكون أنسب في حالة إعطاء إحدى قيمتين للمتغير بناء على شرط معين.
  5. على ما يبدو أنك تريد إظهار سعر البيع بمجرد تغيير سعر الشراء أو النسبة المئوية، في هذه الحالة تحتاج لمعالجة حدث التغير لمربع النص TextChanged لكل من مربعي النص، وكتابة المعادلة الصحيحة لحساب سعر البيع. ولكن يمكنك إضافة زر أوامر Button وكتابة الشيفرات داخله بدلاً من معالجة حدث التغير لمربعات النص. وبالمناسبة يمنكك استخدام أداة أخرى أفضل من مربع النص تسمى NumericUpDown وتستخدم لإدخال قيم عددية فقط، ويتم معرفة القيمة المكتوبة عن طريق الخاصية Value بدلاً من الخاصية Text لمربع النص. إذاً، يفضل إضافة زر أوامر، وتسميته بالشكل الصحيح وليكن btnCalcPrice، ثم النقر عليه مرتين لمعالجة الحدث Click وكتابة الشيفرات التالية // نفترض لديك مربعان نص وأداة عنوان بالأسماء التالية // txtOrigin, txtRatio, lblSalePrice // قراءة سعر الشراء الأصلي من مربع النص الأول decimal originPrice = decimal.Parse(txtOrigin.Text); // قراءة النسبة المئوية من مربع النص الثاني decimal ratio = decimal.Parse(txtRatio.Text); // حساب سعر البيع عن طريق إضافة النسبة المئوية من سعر الشراء إلى سعر الشراء // بفرض سعر الشراء 80، والنسبة 20 فإنه يضيف 20% من سعر الشراء (أي 16 جنيهًا) إلى السعر الأصلي 80، ليصير سعر البيع 96 decimal salePrice = originPrice + (originPrice * ratio / 100); // يتم إظهار سعر البيع في أداة العنوان lblSalePrice.Text = salePrice.ToString(); الآن، اكتب السعر السعر الأصلي، والنسبة، ثم اضغط على الزر ليظهر سعر البيع.
  6. في البداية أحب أن أوضح شيئًا، وهو أنه لا مانع من تكرار الفيديو فلو لاحظت معظم المواقع أو حتى أنظمة التشغيل عندما تريد عرض صور عشوائية ربما يحدث تكرار لهذه الصور، فتجد صورة تظهر كثيرًا وربما تظهر مرتين متتاليتين وبعض الصور تكون نادرة الظهور، كل هذا تابع للرقم العشوائي الذي يتم توليده. أما إذا تريد عدم تكرار أي فيديو حتى يتم الانتهاء من القائمة كلها، سأذكر لك طريقة التفكير وأترك لك تطبيقها بالشيفرات حتى تنمي مهاراتك. الفكرة تعتمد على: كل فيديو يتم عرضه نقوم بإزالته من القائمة الأساسية (التي هي في حالتنا المتغير الذي توعه مصفوفة array واسمه videos)، ثم حفظه في مصفوفة أخرى جانبية، وعندما يتم عرض جميع العناصر (أي تفريغ المصفوفة الأساسية)، نقوم بملئها مرة أخرى من المصفوفة الفرعية وتفريغ المصفوفة الفرعية $(document).ready(function() { var videos = [ "video1.mp4", "video2.mp4", "video3.mp4" ]; // مصفوفة فرعية var displayedVideos = []; $("#playRandomButton").click(function() { // في هذا المكان مطلوب اختبار المصفوفة الأساسية إذا فارغة نملأها من المصفوفة الفرعية ونفرغ الفرعية var randomIndex = Math.floor(Math.random() * videos.length); var videoUrl = videos[randomIndex]; // في هذا المكان مطلوب حذف العنصر الذي تم اختياره عشوائيًا من المصفوفة الأاساسية وإضافته للفرعية $("#videoPlayer").attr("src", videoUrl); $("#videoPlayer")[0].play(); }); });
  7. وعليكم السلام ورحمة الله وبركاته، إذا كنت تقصد الشيفرات التي تجعل الكرة تعكس اتجاهاها عندما تصل إلى إحدى حواف الشاشة فإليك الشيفرات import pygame from pygame.locals import * # تهيئة محرك Pygame pygame.init() # إعداد النافذة screen_width, screen_height = 800, 600 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("لعبة الكرة") # متغيرات الكرة ball_radius = 20 ball_x, ball_y = screen_width // 2, screen_height // 2 ball_speed_x, ball_speed_y = 5, 5 # دورة اللعبة while True: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() exit() # تحديث موقع الكرة ball_x += ball_speed_x ball_y += ball_speed_y # ارتداد الكرة عند الحواف # عندما يكون الإحداثي السيني صفرًا أو أكبر من عرض الشاشة if ball_x < 0 or ball_x > screen_width - ball_radius: # نضرب سرعة الكرة في -1 حتى نعكس اتجاه الكرة ball_speed_x *= -1 # نفس الأسلوب مع الإحداثي الصادي if ball_y < 0 or ball_y > screen_height - ball_radius: ball_speed_y *= -1 # رسم الكرة screen.fill((0, 0, 0)) # مسح الشاشة pygame.draw.circle(screen, (255, 255, 255), (ball_x, ball_y), ball_radius) pygame.display.update() # تحديث الشاشة
  8. في البداية يجب توضيح أنه لا يوجد أي شيء هو الأفضل بشكل مطلق، لأن ما تفضله أنت ربما لا يفضله غيرك. لذلك السؤال يجب أن يكون "ما الأنسب لحالتي؟" فكل منتج بشكل عام يناسب حالة معينة، إليك التوضيح.. إذا كنت مبتدئًا في عالم برمجة الألعاب فالأنسب أن تبدأ باستخدام جودو Godot كذلك إذا كنت لا تريد تكلف الأموال فالأنسب هو محرك جودو Godot لأنه مفتوح المصدر ولا يتطلب دفع رسوم. أما إذا كنت تريد الحصول على منتج ذي تنافسية عالية وتصميم ثلاثي الأبعاد معقد 3D، فالأنسب استخدام محرك يونيتي Unity، ولكن يجب الوضع في الاعتبار أنه ربما لا يناسب المبرمج المبتدئ لذلك يحتاج بعض الخبرة، كذلك تكلفته تكون أعلى (الخلاصة يناسب المحترفين أكثر من المبتدئين).
  9. في البداية يجب الاتفاق على شيء هام، ألا وهو وجود الثقة بينك وبين المبرمج لأنه بالتأكيد سيجمع منك بيانات لأداء عمله وربما يطلع على بعض البيانات شديدة السرية، لذلك ينصح باختيار المبرمج ذي الدين والأمانة. أما بخصوص البيانات، أعتقد أن المقصود بعد استلام التطبيق من المبرمج والبدء في استخدامه وتخزين البيانات عليه، كيف أخفي البيانات من المبرمج؟ في الحقيقة طالما أن البرنامج مثبت على جهازك فلا أحد يستطيع الوصول لهذه البيانات إلا من خلال العمل على هذا الجهاز، (بفرض أنك لن تحول الجهاز لخادم يمكن الوصول إليه). لذلك عندما يتم التعديل أو التحديث على البرنامج فالمبرمج هو الذي يرسل لك نسخة جديدة تستبدلها بالنسخة القديمة الموجودة على جهازك، لا يحتاج منك أن تمده بأي بيانات مخزنة إلا في حالة وجود مشكلة تتطلب الاطلاع على البيانات نفسها، وهذه تكون حالات نادرة تضطر فيها لإعطاء المبرمج نسخة من قواعد البيانات (طالما المبرمج محترف، أما في حالة المبتديء فإن مشاكل البرنامج تكون كثيرة ويحتاج معاينة قواعد البيانات). لذلك، نعود لموضوع الثقة، يجب اختيار المبرمج المشهود له بالأخلاق والأمانة.
  10. هذا السؤال يتكرر كثيرًا، فدائمًا العملاء يسألوننا ما الأفضل برنامج سطح مكتب Desktop أم تطبيق ويب Web application الإجابة: لا يوجد شيء هو الأفضل على الإطلاق، ولكن هناك الأنسب لحالتك. ألخص لك الأمور ببساطة: إذا كان الهدف هو تسجيل البيانات واسترجاعها والتقارير فقط دون الحاجة للإعلان على شبكة الإنترنت، ففي هذه الحالة يكون الأنسب سطح مكتب، ويمكنك ربط عدة أجهزة عن طريق قواعد بيانات سحابية رغم أن التطبيق نفسه سطح مكتب. وتكلفة تطبيق سطح المكتب تكون أقل من تطبيق الويب بالتأكيد، ولابد أن يدعم حفظ نسخ احتياطية من قواعد البيانات واسترجاعها، وإذا كان عدد من المستخدمين يجب يكون لكل مستخدم صلاحيات، ويجب أن يكون هناك نظام تتبع لحركات المستخدمين بحيث نعلم من أدخل البيانات ومن آخر شخص قام بالتعديل ومن قام بحذف البيانات. أما إذا كنت تريد لعملائك أن يطلعوا على قضاياهم فيمكن ذلك عن طريق تطبيق الويب. وبالتأكيد لا نتجاهل تطبيقات الهاتف المحمول التي قد تناسب العملاء، فيمكن عمل تطبيق سطح مكتب أو ويب ومعه تطبيق هاتف محمول للعملاء ليطلعوا على المستجدات. الاختيارات واسعة ومتعددة، لذلك، الأفضل هو توضيح احتياجاتك لاختيار الأسلوب الأنسب.
  11. في البداية أحييك على اجتهادك ومحاولاتك لتنمية مهاراتك البرمجية. الشيفرات التي كتبتها تعمل بشكل صحيح، وبالتأكيد قد اكتسبت مهارة التفكير المنطقي وهذه مهارة مطلوبة وهامة جدًا، ولكن بجانب ذلك لابد من تنمية مهارة استخدام الأدوات المساعدة والمتقدمة. الفوائد: هذه الأدوات تم اختبارها وخالية من الأخطاء هذه الأدوات تستخدم خوارزميات أفضل في عملية البحث والاستبدال تكون أسهل في الكتابة ومختصرة وأوضح في قراءة الشيفرات ومعالجة الأخطاء من ضمن هذه الأدوات هي "التعابير النمطية" Regular Expressions فيمكن تنفيذ نفس المهمة بالشكل التالي import re def replace(st): newText = re.sub("[aeiouAEIOU]", "!", st) return newText print(replace('aeioun')) كما يتضح، تم استخدام وظيفة sub التابعة لمكتبة re، وكما نرى سهولة قراءة الشيفرات وبالتالي سهولة الصيانة ومعالجة الأخطاء. إضافة إلى أن هذه الوظيفة تم اختبارها جيدًا ومضمونة بشكل أكبر. إضافة إلى سرعة الأداء نتيجة استخدام خورازميات بحث واستبدال متقدمة مما يساعد في تحسين الأداء والذاكرة. يمكنك مشاهدة هذا المقال الهام الذي به العديد من المشاريع التي تنمي مهاراتك بشكل كبير
  12. ليس المقصود من تعلم الجبر الخطي Linear Algebra أن تكون عالمًا متخصصًا فيه. ولكن باختصار، لابد من وجود أساسيات الجبر الخطي مثل المصفوفات والعمليات على المصفوفات ولابد أن تعرف قواعد كل عملية، لأنه بالتأكيد لا يمكن الحصول على قيمة المتغير c في المثال الذي أعطيته دون أن تعرف كيف يتم حسابها، كذلك معرفة بالمعادلات الرياضية من الدرجات المختلفة وكذلك التمثيل البياني وفهم المصطلحات الخاصة به، والمتجهات والانحدار يجب دراسة هذه المواضيع حتى تفهم ما يدور خلف الكواليس وتستطيع تحسين النتائج فيما بعد. إضافة إلى الجبر الخطي: التفاضل والتكامل حساب المثلثات الإحصاء الوصفية
  13. بداية هذه الشيفرات تعمل بشكل صحيح. ولكن ربما تحتاج لتصحيح بسيط وهو استبدال علامات == بعلامة =< حتى يعطينا True في حالة أرسلت قيمة أقل من 10 def fillable(stcok , merch , n): print(stcok[merch]) # if stcok[merch] == n: if stcok[merch] >= n: return True else: return False dic = { "iphone": 10, "mac": 5, "Apple Vision": 10, } print(fillable(dic , "iphone" , 9)) # True print(fillable(dic , "iphone" , 10)) # True print(fillable(dic , "iphone" , 11)) # False لاحظ أن القيمة 9 كانت ستعطي False أي غير ممتليء لو استخدمت الشيفرات القديمة، وهذا يعتبر خطأ.
  14. هل حاولت استخدام رمز السطر الجديد vbCrLf لإنشاء سطر جديد؟ كما بالمثال التالي Dim messageText As String = "سطر 1" & vbCrLf & "سطر 2" & vbCrLf & "سطر 3"
  15. وعليكم السلام ورحمة الله وبركاته، بالتأكيد السلامة المهنية من أهم النقاط التي يجب أن يحرص عليها كل إنسان مهما كانت مهنته، وبالنسبة لمستخدمي الحاسب الآلي يقضون أوقاتًا طويلةً جدًا أمام الجهاز مما يتسبب في العديد من المشاكل الصحية إن لم نتبع الأساليب الصحية. وإليك بعض النصائح للحفاظ على الصحة العامة وليس العينين فقط، لأن الضرر قد يلحق بفقرات العنق، وبالمفاصل وبالدورة الدموية. ضبط وضعية الشاشة: يجب التأكد من أن شاشة الكمبيوتر أو اللاب توب تكون على مسافة ذراع من عينيك (حوالي 60 سم). يفضل أن تكون الحافة العلوية للشاشة على مستوى عينيك أو أسفلها قليلاً، بحيث تكون الرقبة على مستوى مضبوط ليست مائلة للأسفل أو للأعلى ضبط وضعية الكرسي: اختر كرسيًا يكون مريحًا ويدعم منطقة الظهر، وتأكد من أن الكرسي يكون قابلًا للتعديل لتناسب ارتفاع مكتب العمل. يجب أن يكون ظهرك مستقيمًا، والركبتان بزاوية قريبة من 90 درجة تنويع وضعية الكرسي حتى لا يتم إجهاد عضلات معينة وكسل عضلات أخرى الرمش بانتظام: قم بالرمش بانتظام لزيادة ترطيب العين، حيث أن الرمش يعمل كاستراحة للعين ويساعد في تجنب الجفاف. استراحة كل ساعة: كلما مرت ساعة من العمل أمام الشاشة، خذ استراحة لمدة 5 دقائق على الأقل. نظر إلى مسافة بعيدة أو قم بتحريك العينين لتجنب التركيز المستمر. تحكم في سطوع الشاشة: ضبط سطوع الشاشة ليكون مريحًا لعينيك، ومتناسبًا مع الإضاءة المحيطية، وتجنب الإضاءة الزائدة والانعكاسات على الشاشة. تناول الأطعمة الصحية: تناول الخضروات والفواكه التي تحتوي على فيتامينات مفيدة لصحة العينين مثل فيتامين أ الموجود في الألبان والجبن الطبيعية والجزر والخضروات. الرياضة وزيارة الأطباء في حالة حدوث بوادر شكوى: رياضة المشي من أهم الرياضات ويكفي ممارستها لمدة 20 دقيقة (يمكن النزول قبل مكان العمل بحوالي 700 مترًا) زيارة طبيب الرمد أو العظام أو القلب في حالة ظهور أي أعراض غير طبيعية.
  16. وعليكم السلام ورحمة الله، المشكلة أنه توجد بعض المكتبات تتعامل مع إصدارات مختلفة عن الإصدار الحالي لمكتبة رياكت، فإذا كنت متأكدًا أن هذه المكتبات ليس بها أي مشاكل، حاول تجاهل الإصدارات التي تحتاجها هذه المكتبات وقم بالتثبث باستخدام npm i --legacy-peer-deps
  17. مهارة حل المشاكل Problem Solving من أهم المهارات التي يجب على المبرمج (بل كل شخص في الحياة عامة) أن يتقنها، والموضوع ليس صعبًا ولكن يتطلب عزيمة وصبرًا، لأنه يحتاج للتجربة أكثر من مرة فربما يصاب الإنسان باليأس. في البداية، يجب معرفة أن حل المشاكل البرمجية مثلها مثل أي مشكلة أو مهمة تواجههنا في حياتنا اليومية، نعم، كلها تتشابه في أنهم جميعًا يحتاجون إلى خطوات معروفة ومرتبة حتى يتم حل هذه المهمة. على سبيل المثال: كلنا نذهب إلى العمل، هل تعلمون أن هذه إحدى المشاكل (المهام) التي تتطلب خطوات حل (خوارزميات)؟ ولكن نظرًا لأننا اعتدنا على هذه المهمة اليومية فأصبحنا نطبقها بشكل تلقائي وسهل، ولكن تذكر أول مرة تذهب فيها إلى العمل، كانت مهمة صعبة جدًا لأنك تتعرض لها لأول مرة. نفس الشيء مع كل المشاكل (المهام) التي ستواجهها في البرمجة، ستكون صعبة جدًا في البداية، ولكن مع قراءة المشكلة مرة ثانية ثم تطبيق مهارات حل المشاكل ستبدأ بالوضوح شيئًا فشيئًا. الآن وبعد أن عرفنا أنه يجب الصبر والعزيمة، ما هي مهارات حل المشاكل؟ 1- اتقان مهارات لغة البرمجة المتعددة: كلما تعرفنا على مهارات ومكتبات اللغة كلما وفرنا على أنفسنا جهدًا كبيرًا، لأنه ربما تضيع يومًا كاملاً ثم تكتشف أن هناك وظيفة تقوم بمثل ما كتبته أنت، وبالتالي هام جدًا التعرف على أنواع البيانات وهياكل البيانات data structure مثل القوائم والمصفوفات والقواميس list, dictionary, array والوظائف المدمجة built-in functions وما إلى ذلك لأنه سيجعلنا نتعرف على إمكانيات اللغة الرائعة. 2-تحليل المشكلة: من الأمور الهامة جدًا فهم المشكلة والسؤال عن أي جزئية غير واضحة، وبعد ذلك يتم تحليل المشكلة وتقسيمها إلى مهام أصغر فأصغر وبالتالي يمكن التركيز على كل مهمة بشكل منفصل، ولا ننتقل أبدًا إلى المهمة التالية إلا بعد الانتهاء واختبار المهمة الحالية. 3- حل المشكلات بالورق: قبل البدء في البرمجة، حاول حل المشكلة على ورق، اكتب الخطوات اللازمة لحل المشكلة وتحليلها (كتابة عادية وليست برمجة)، ويمكن استخدام مخططات التدفق flow chart 4- حل تحديات البرمجة: قم بحل تحديات البرمجة والمشكلات باستمرار، يمكنك البدء بتحديات بسيطة وتدريجيًا الانتقال إلى مستوى أعلى. مواقع مثل https://www.hackerrank.com/ و https://pynative.com/ توفر تمارين وتحديات متنوعة لتحسين مهاراتك في البرمجة. 5- تحسين القراءة والكتابة البرمجية: هذه المهارة تتم عن طريق الاستعانة بخبرات الآخرين عن طريق قراءة الأكواد المكتوبة من قبل مطورين آخرين، سؤالهم عن كيفية حل المشكلة، طلب تقييم الشيفرات وطريقة الحل التي قمت أنت بها الخلاصة: هذه المهارة تتطلب محاولات متكررة وعزيمة وصبر وعدم يأس، وتطبيق النقاط السابقة. بعض المقالات المفيدة في هذا المجال https://academy.hsoub.com/programming/general/تعلم-البرمجة-r662/ https://academy.hsoub.com/programming/general/المبرمج-المحترف/
  18. وعليكم السلام ورحمة الله، مكتبة packaging لها العديد من الفوائد: 1- تساعد في إنشاء حزم بايثون قابلة للتثبيت: فبعدما قمت بتطوير برنامجك، بالتأكيد تريد أن تذهب به إلى العميل وتقوم بتثبيته على جهازه، لذلك يتوجب عمل حزمة (أي ملفات تثبيت) ومن خلالها نستطيع تشغيل البرنامج عند العميل، وبهذا يمكن لعملائك تثبيت برنامجك بسهولة، ودون الحاجة لتثبيت لغة البرمجة بايثون. 2- قابلية التوسع: تعني أن مكتبة packaging توفر واجهة برمجة تطبيقات (API) تسهل إنشاء حزم بايثون متقدمة. يمكن للمطورين توسيع هذه المكتبة باستخدام أدوات خارجية مثل setuptools و Poetry. مثال: يمكنك استخدامها لإنشاء حزمة تثبيت تحتوي على مكتبات مخصصة للتعامل مع قواعد البيانات، أو الواجهات الرسومية، أو أي مجال آخر. 3- تطوير حزم بايثون متطورة ومشاركتها: عندما نتحدث عن تطوير حزم بايثون، نقصد إنشاء مكتبات أو أدوات قابلة للتوزيع والاستخدام بواسطة المطورين الآخرين. ما الفائدة من عمل هذا؟ الفائدة أنك تقوم بمشاركة برنامجك مع المبرمجين الآخرين فيتمكنوا من تطوير برنامجك معك (فيصبح مفتوح المصدر). كيف يتم ذلك؟ بعد إنشاء الحزمة، يمكنك مشاركتها مع المجتمع البرمجي عبر منصات مثل PyPI (Python Package Index). بهذا أنت قمت بإنشاء برنامج وشاركته مع المبرمجين الآخرين، مما يساهم في تطوير وتبادل الخبرات بين المطورين. أمثلة لبرامج مفتوحة المصدر تستخدم هذا الأسلوب: هناك العديد من المشاريع المفتوحة المصدر التي تستخدم حزم بايثون متطورة. إليك بعض الأمثلة: Django: إطار عمل بايثون لتطوير تطبيقات الويب. Flask: إطار عمل خفيف لتطبيقات الويب. Pandas: مكتبة لتحليل ومعالجة البيانات. Requests: مكتبة لإجراء طلبات HTTP بسهولة. Matplotlib: مكتبة لرسم الرسوم البيانية والرسوم البيانية. هذه المشاريع تعتبر مفتوحة المصدر، ويمكن للمطورين المساهمة في تطويرها وتحسينها فكما رأينا أن هذه المكتبة مفيدة جدًا في العديد من المواقف.
  19. خاصية "use server" يتم استخدامها لتمكين ملفات العميل client side من استدعاء وظائف مكتوبة في ملف الخادم server.js. وبناء عليه لتتمكن من استخدامها يجب أن يكون لديك ملفات تعمل كخادم (في حالتنا server.js) ويُكتب فيه الشيفرات التي تقوم بحفظ البيانات إلى قواعد البيانات، والتي في الغالب تكون على هيئة واجهات برمجية api، ويتم اختيار وظيفة أو عدة وظائف وإضافة هذه الخاصية إليهم "use server" فيمكنك استدعاء هذه الوظائف من جهة العميل (الذي هو يعتبر المتصفح). // server.js async function addToCart(data) { 'use server'; // اكتب الكود الذي يضيف إلى السلة هنا } ومن جهة العميل // client.js import { addToCart } from './server'; // استبدل 'server' بمسار ملف الخادم الفعلي // استدعاء الدالة من الجانب العميل const someData = { /* بيانات معينة */ }; addToCart(someData); وبهذا الشكل يتمكن المستخدمون من استدعاء وظائف مكتوبة على الخادم.
  20. وعليكم السلام ورحمة الله وبركاته، من المستحيل بالتأكيد أن يلم شخصٌ بكل شيء، فالتطور حرفيًا صاروخي، لذلك نجد بعض المصطلحات تختفي وتظهر مكانها مصطلحات أكثر تخصصية مثل اختفاء full stack developer وظهور front-end developer and back-end developer إلا إذا كان الموقع بسيطًا جدًا. إذن ما العمل؟ الحل هو أن نتعلم المفهوم، مثلما يتعلم شخص قيادة السيارة هو يتعلم مفهوم القيادة ثم يطبقه على أي نوع من أنواع السيارات، لذلك يجب على المبرمج أن ينمي مهارات التعلم الذاتي، وبالتالي عندما يحتاج أن يتعامل مع خوارزمية أومكتبة أو إطار عمل جديد، فلديه القدرة على تعليم نفسه بنفسه. الخلاصة: تنمية مهارات التعلم الذاتي، وبالتالي عندما نتعرض لأي جديد يكون لدينا القدرة على تعلمه لا نعتمد على أحد.
  21. سنقوم بعمل بعض الخطوات لاكتشاف المشكلة 1- ضع مربع نص TextBox في أي مكان على الصفحة وليكن اسمه txtTemp سنقوم بحذفه بعد معرفة الخطأ 2- قم بتغيير الاستعلام في الأماكن التالية string query = string.Empty; string encryptedPW = EncryptionModel.Encrypt(password); query = "select SIMUID, [Password], SIMULGName, [Role] from tbl_SIMULG where [Role]='TempAdmin' and SIMULGName= '" + username + "' and [password]= '" + encryptedPW + "'"; txtTemp.Text = query; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@username", username); cmd.Parameters.AddWithValue("@password", encryptedPW); وفي المكان الآخر string query = string.Empty; string encryptedPW = EncryptionModel.Encrypt(password); query = "select SIMUID, [Password], SIMULGName, [Role] from tbl_SIMULG where [Role]='TempAdmin' and SIMULGName= '" + username + "' and [password]= '" + encryptedPW + "'"; query = "select SubAdminID, [Password], LoginName, [Role] from tbl_subadmin where [Role]!='Admin' and [Role]!='TempAdmin' and AccessToNewPanel='Yes' and loginname=" + username + "' and [password]=" + encryptedPW + "'"; txtTemp.Text = query; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@username", username); cmd.Parameters.AddWithValue("@password", encryptedPW); وقم بمحاولة الدخول مرة أخرى، ثم انسخ النص الموجود بمربع النص txtTemp وحاول تنفيذه في MS SQL Server وانظر هل يعود بنتيجة أم فارغًا. إذا كان فارغًا، حاول معرفة ما الشرط الذي يمنع ظهور السجل المطلوب.
  22. الخطأ الذي رقمه 400 أو تفرعاته مثل 404، يعني أنه لا يستطيع العثور على الخادم، لذلك أرجو توضيح الطريقة التي تم استخدامها. أرجو أيضًا التأكد من النقاط التالية: - أن الصفحات ليس بها مشكلة وتعمل على جهازك بشكل صحيح قبل رفعها - نتأكد أننا طبقنا الخطوات بالترتيب الصحيح، على سبيل المثال إذا كنا نستخدم خدمة BitBallon نتأكد من التسجيل وإذا طلب تأكيد البريد الإليكتروني يجب التأكيد، كذلك يتم سحب الملفات إلى المكان المخصص (نسحب المجلد كاملا)، وبعد توليد العنوان نتأكد أننا نسخناه بشكل صحيح في انتظار معرفة النتائج.
  23. يعطيك خطأ عندما تحاول الذهاب إلى سطح المكتب، ماذا عن باقي المسارات هل جربت الذهاب إلى :D؟ لأنه لا يُنصح أن تضع ملفاتك على سطح المكتب بسبب مشاكل الصلاحيات وكذلك عرضة للضياع في حال قمت بتثبيت ويندوز جديدة. وربما مجلد سطح المكتب لديك قد تم نقله إلى مكان آخر. للعثور على موقعه الجديد، يمكنك اتباع الخطوات التالية: 1- انقر بزر الماوس الأيمن على أي ملف على سطح المكتب. اختر “خصائص” (Properties). 2- انتقل إلى علامة التبويب “العام” (General). انظر إلى المسار الموجود في خانة المسار (Location). سيكون هذا المسار هو موقع سطح المكتب الحالي. 3- استخدم المسار الذي تم العثور عليه. على سبيل المثال، إذا كان المسار هو C:\\Users\\YourName\\OneDrive\\Desktop، يجب أن يكون الأمر كالتالي: cd C:\\Users\\YourName\\OneDrive\\Desktop
  24. اللون الذهبي: #FFD700 /*الكود الست عشري*/ (R، G، B): (255، 215، 0) /*الكود العشري*/ يتم إنشاء اللون الذهبي عن طريق إضافة ألوان حمراء وخضراء. اللون الدم غزال: #D4AF37 /*الكود الست عشري*/ (R، G، B): (212، 175، 55) /*الكود العشري*/ وهذا موقع يمكنك من اختيار اللون المطلوب ومعاينته https://htmlcolorcodes.com/
  25. استخدام Webpack في مشروعك، لا يؤثر على إنشاء live demo على GitHub. بالنسبة للرابط الذي لا يظهر، تأكد من أن GitHub Pages قد تم تفعيله بشكل صحيح وأن الملفات موجودة في المستودع. إذا كنت قد قمت بذلك ولا يزال الرابط غير متاح، فقد يكون هناك خطأ في الإعدادات أو في الملفات نفسها
×
×
  • أضف...