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

Mustafa Suleiman

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

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

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

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

    365

كل منشورات العضو Mustafa Suleiman

  1. في لغة Python، يتم استخدام علامة الإقتباس الزوجية (") أو الفردية (') لتعريف سلسلة النصوص (String) والتي تستخدم لتمثيل النصوص والمحتويات النصية. ويمكن دمج المتغيرات داخل سلسلة النصوص باستخدام علامة الإقتباس المتداخلة المناسبة، مثل: name = "mohammed" greet = "hello " + name print(greet) يتم في هذا الحالة استخدام علامة الجمع "+" لدمج سلسلة النصوص "hello " والمتغير name لتشكيل سلسلة النصوص greet. أما باستخدام f-strings فهي طريقة تفضيلية للتعامل مع سلسلة النصوص في Python، وتسمح بدمج المتغيرات والتعابير بشكل أسهل داخل النص، مثل: name = "mohammed" greet = f"hello {name}" print(greet) في المثال، يتم استخدام علامة "f" قبل سلسلة النصوص للإشارة إلى أنه يجب عمل تفسير للتعابير داخل الأقواس المنحنية {}، حيث سيتم تعويضها بالقيم المقابلة لكل تعبير. وبهذه الطريقة، يصبح تعديل وصيانة الأكواد أسهل وأكثر قابلية للفهم. بالمجمل، يمكن استخدام أي من الطريقتين لإنشاء سلسلة النصوص في Python، ولكن استخدام f-strings يتيح للمطورين التعامل بشكل أسهل مع النصوص ودمج المتغيرات والتعابير فيها.
  2. يمكن تنفيذ ذلك باستخدام واجهة المستخدم الرسومية (GUI) في Python لإنشاء لعبة حجر ورقة مقص تفاعلية، و هناك عدة مكتبات GUI في Python مثل Tkinter و PyQT و wxPython. وسأوضح لك الأمر باستخدام Tkinter لإنشاء واجهة المستخدم الرسومية للعبة حجر ورقة ومقص. فيما يلي مثال بسيط: import random import tkinter as tk OPTIONS = ["Rock", "Paper", "Scissors"] # define function to play the game def play_game(player_choice): computer_choice = random.choice(OPTIONS) result_text = "" # determine the winner if player_choice == computer_choice: result_text = "Tie!" elif player_choice == "Rock" and computer_choice == "Scissors": result_text = "You win!" elif player_choice == "Paper" and computer_choice == "Rock": result_text = "You win!" elif player_choice == "Scissors" and computer_choice == "Paper": result_text = "You win!" else: result_text = "Computer wins!" # update the result label result_label.config(text="You chose: " + player_choice + "\nComputer chose: " + computer_choice + "\n" + result_text) # create the main window root = tk.Tk() root.geometry("300x200") # create the widgets title_label = tk.Label(root, text="Rock Paper Scissors") title_label.pack(pady=10) rock_button = tk.Button(root, text="Rock", command=lambda: play_game("Rock")) rock_button.pack() paper_button = tk.Button(root, text="Paper", command=lambda: play_game("Paper")) paper_button.pack() scissors_button = tk.Button(root, text="Scissors", command=lambda: play_game("Scissors")) scissors_button.pack() result_label = tk.Label(root, text="") result_label.pack(pady=10) # start the event loop root.mainloop() في المثال، يتم إنشاء نافذة رئيسية وثلاثة أزرار للاعب للاختيار من بينها، وتم إنشاء دالة play_game() التي تقوم بتوليد اختيار عشوائي للكمبيوتر ثم مقارنته بخيار اللاعب. يتم عرض النتيجة في علامة النتيجة. لاحظ استخدام lambda لتمرير الخيار المختار من قبل اللاعب إلى دالة play_game() كوسيط بين الأزرار والدالة.
  3. باستطاعتك كتابة معادلة شرودنجر في البايثون باستخدام مكتبة SciPy. وفيما يلي مثال على كيفية فعل ذلك: import numpy as np from scipy.integrate import odeint from scipy.constants import hbar # تحديد الثوابت m = 9.10938356e-31 # كتلة الالكترون L = 1e-9 # طول الصندوق N = 1000 # عدد النقاط dx = L / (N - 1) # تحديد مقدار الخطوة # تعريف الدالة الجذرية def psi(x, n): return np.sqrt(2 / L) * np.sin(n * np.pi * x / L) # تعريف الدالة الموجية def wavefunction(x, t, n): # تحديد الطاقة E = (n ** 2 * np.pi ** 2 * hbar ** 2) / (2 * m * L ** 2) # تحديد معامل الانحراف V = np.zeros(N) V[(x < L / 2) & (x > L / 4)] = 1e6 # حل معادلة شرودنجر باستخدام odeint dpsi_dt = np.zeros(N) dpsi_dt[1:-1] = (hbar / (2 * m * dx ** 2)) * (psi(x[2:], n) + psi(x[:-2], n) - 2 * psi(x[1:-1], n)) + (V[1:-1] - E) * psi(x[1:-1], n) / hbar return dpsi_dt # تحديد الزمن t = np.linspace(0, 1e-15, 100) # تحديد نسبة الاهتزاز n = 1 # حساب حالة الموجة للنسبة المحددة x = np.linspace(0, L, N) psi_0 = psi(x, n) psi_t = odeint(wavefunction, psi_0, t, args=(n,)) # رسم حالة الموجة في الزمن import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot(x, np.abs(psi_t[0]) ** 2, label='t=0') ax.plot(x, np.abs(psi_t[50]) ** 2, label='t=0.5 fs') ax.plot(x, np.abs(psi_t[-1]) ** 2, label='t=1 fs') ax.set_xlabel('x (m)') ax.set_ylabel(r'$|\psi(x, t)|^2$') ax.legend() plt.show() الكود السابق يعمل على بحساب حالة الموجة لصندوق كمي مربع الشكل باستخدام معادلة شرودنجر. يتم تمثيل نتائج الحساب بواسطة رسم بياني يعرض حالة الموجة في الزمن، وحساب حالة الموجة في الزمن باستخدام دالة odeint الموجودة في مكتبة SciPy، ثمتحديد الثوابت مثل الكتلة وطول الصندوق وعدد النقاط ومقدار الخطوة. وتتمثل الفكرة الأساسية في تحديد الطاقة ومعامل الانحراف وحل معادلة شرودنجر باستخدام odeint، لتمثيل الحل بواسطة رسم بياني لحالة الموجة في الزمن.
  4. لا يوجد سلم موحد لقياس السلوك المقاولاتي، وذلك لأن السلوك المقاولاتي يمكن أن يختلف من شخص لآخر ومن مؤسسة لأخرى، ويرتبط بعدة عوامل مثل الثقافة الأساسية للمؤسسة وطريقة إدارتها واختيار الأهداف وغيرها. ومن المهم أن تتم دراسة السلوك المقاولاتي في المؤسسات وتقييمه من خلال استخدام أدوات قياسية وموثوقة، مثل استبيانات السلوك المقاولاتي التي تساعد في فهم النمط العام للسلوك المقاولاتي داخل المؤسسة. ويمكن أن تتضمن هذه الأدوات عدة عناصر مثل التخطيط الاستراتيجي والابتكار والتكيف والعمل الجماعي والقيادة والتفكير الإبداعي وغيرها. ولكن يجب الانتباه إلى أن قياس السلوك المقاولاتي يجب أن يكون جزءًا من إستراتيجية أو برنامج أو سياسة تعزز ريادة الأعمال وتحفز الموظفين على تبني السلوك المقاولاتي داخل المؤسسة، ولا يجب أن يكون مجرد تقييم للموظفين أو تحديد العيوب في الأداء.
  5. في بروتوكول IPv4، يتم استخدام عمليات البث (broadcast) لإرسال رسائل إلى جميع الأجهزة في شبكة معينة. واستخدام العنوان 255.255.255.255 كعنوان بث لإرسال رسائل إلى جميع الأجهزة في نفس الشبكة، ويتم استخدام هذه الطريقة في العديد من التطبيقات مثل البحث عن أجهزة والإعلان عن خدمات الشبكة والتحديثات وغيرها. أما في بروتوكول IPv6 ، فتم تجاهل عملية البث (broadcast) ولم يتم تضمينها في التصميم الجديد. بدلاً من ذلك، تم استخدام مفهوم متعدد الإرسال (multicast) الذي يتيح إرسال رسائل إلى مجموعة من الأجهزة المختارة في الشبكة فقط. وتعتبر عملية متعدد الإرسال أكثر فعالية من عملية البث في IPv4 ، حيث أنها تقلل من حجم البيانات المرسلة وتقلل من عبء الأجهزة المتصلة بالشبكة. بالإضافة، يستخدم في IPv6 نظام توزيع العناوين الجديد (stateless address autoconfiguration) الذي يتيح للأجهزة اختيار عنوان IP الخاص بها بشكل تلقائي دون الحاجة إلى خادم DHCP. ويستخدم هذا النظام العنوان المتعدد الشامل (anycast) لإرسال رسائل إلى العناوين المتعددة دون الحاجة إلى استخدام العملية البث. لذلك، على الرغم من أن عمليات البث مفيدة في بروتوكول IPv4 ، إلا أن بروتوكول IPv6 يعتمد على طرق أكثر فعالية وذكاءًا لتحقيق نفس الغرض.
  6. بالإمكان استخدام JavaScript لتطوير الألعاب بشكل مستقل بدون استخدام HTML و CSS من خلال استخدام إطار عمل لتطوير الألعاب. مثل إطار عمل مثل PhaserJS أو BabylonJS أو ThreeJS لتطوير الألعاب باستخدام JavaScript فقط. تسمح لك هذه الإطارات بإنشاء الرسومات والصوت والتحكم في الحركة والمنطق والتفاعل والكثير من الميزات الأخرى المتعلقة بتطوير الألعاب. يمكنك أيضًا استخدام مكتبات الرسومات مثل Canvas أو WebGL لرسم الرسومات باستخدام JavaScript. ومع ذلك، يجب الإشارة إلى أنه عادة ما يتم استخدام HTML و CSS في تطوير الألعاب لإنشاء واجهة المستخدم والتعامل مع المستخدم ، ولكن يمكن الاستغناء عنهم إذا كنت تستخدم إطار عمل تدعم تطوير الألعاب بشكل كامل باستخدام JavaScript فقط.
  7. الأسئلة الإختبارية أو الخاصة بالمشاريع لا يتم توفير كود لها كإجابة بل يتم شرح الخطوات الحل، وعليك العمل على الكود ثم توفيره وطرح المشكلة إذا اردت مساعدة به. تحتاج إلى اتباع الخطوات التالية لإنشاء الكلاس: تحديد متغيرات السيارة المؤجرة ومتغيرات العميل الذي استأجرها، مثل نوع السيارة والموديل والكود واسم العميل ورقم الجوال والايميل. إنشاء كلاس جديد للسيارة والعميل، حيث يجب عليك تحديد متغيرات الكلاس ودواله المناسبة لمعالجة البيانات. تعريف المتغيرات والدوال الخاصة بالسيارة والعميل، يمكن استخدام المتغيرات لتخزين معلومات السيارة والعميل، والدوال لإجراء العمليات المختلفة، مثل إضافة السيارة والعميل إلى قاعدة البيانات أو تعديلها أو البحث عنها. تحديد العلاقة بين كلاس السيارة وكلاس العميل، حيث يمكن إنشاء علاقة واحد إلى واحد (one-to-one) أو واحد إلى عدة (one-to-many) حسب المطلوب. إضافة الدوال الخاصة بالتعامل مع بيانات السيارة والعميل، وتنفيذ أي دالة من دوال الكلاس تعتمد على البيانات التي تم تحديدها في الخطوة الأولى. ولإنشاء كلاس في الجافا، اتبع الآتي: 1- فتح محرر النصوص الخاص بالجافا مثل NetBeans أو IntelliJ أو Eclipse وإنشاء ملف جديد. 2- بدايةً، يجب عليك تحديد اسم الكلاس ووضعه بين علامتي الأقواس المنفردة، وتبدأ الأسماء دائمًا بحرف كبير. على سبيل المثال، يمكن تسمية الكلاس "Car" أو "Customer". 3- بعد ذلك، يجب تعريف المتغيرات الخاصة بالكلاس والتي يمكن استخدامها لتمثيل الحالة المطلوبة. يجب تعريف المتغيرات داخل الجزء العلوي من الكلاس. على سبيل المثال، قد يكون هناك متغيرات مثل "carType" و "carModel" و "customerName" و "customerEmail". 4- بعد تعريف المتغيرات، يجب تعريف الطرق أو الوظائف التي يمكن استخدامها لتحديث أو استرداد قيم المتغيرات. يتم تعريف الطرق بوضع كلمة "public" أمام اسم الطريقة والمتغيرات التي تستخدمها والقيم التي تعيدها. على سبيل المثال، يمكن تعريف الطريق "rentCar" التي تستخدم متغيرات "carType" و "customerName" و "rentalDate" وتعيد رسالة تأكيد. 5- يجب كتابة الكود الخاص بكل طريقة أسفل تعريفها. على سبيل المثال، يمكن كتابة الكود الخاص بطريقة "rentCar" لإضافة معلومات المستأجر إلى قائمة السيارات المؤجرة وإرجاع رسالة تأكيد. وهذا هو مثال بسيط لإنشاء كلاس "Car" في الجافا: public class Car { String carType; int carModel; String customerName; String customerEmail; public void rentCar(String carType, String ويوجد قسم كامل خاص بدروس ومقالات حول لغة جافا.
  8. لا يعني استخدام تقنيات Cross-platform تحديدًا إلغاء ال Native development، فعلى العكس، لا يزال ال Native development يلعب دورًا مهمًا في تطوير تطبيقات الهاتف المحمول ويتم تفضيله في بعض الحالات حيث يتطلب التطبيق عملية تفاعلية أسرع أو ميزات متطورة ودقيقة بما يكفي. وتعلم ال Native development سيكون مفيدًا لتطوير تطبيقات iOS المتطورة بشكل كامل ومستقل عن الأدوات الأخرى، ولكنه سيحتاج إلى وقت وجهد لتعلم لغة البرمجة المستخدمة في iOS (Swift/Objective-C). أما ال Cross-platform فهي تقنيات تسمح للمطورين بكتابة التطبيق مرة واحدة ونشرها على عدة أنظمة تشغيل. هذا يقلل الوقت والجهد المطلوب لتطوير تطبيقات الهاتف المحمول، ولكن يجب الأخذ في الاعتبار بعض العوامل مثل قابلية الصيانة وجودة الأداء. لذلك، يمكن التعلم على كلا الطرق (Native و Cross-platform) واختيار الأفضل حسب احتياجات ومتطلبات المشروع المطلوب. وما يجب عليك تعلمه هي اللغة المطلوبة في سوق العمل لديك في بلدك بالنسبة لمستوى Junior أو Entry Level أي مبتدأ أو خبرة سنة، وأيضًا على مواقع العمل الحر، فعليك بالإطلاع وتفقد المهارات المطلوبة. وتم النقاش حول سؤالك من قبل أرجو الإطلاع على التالي:
  9. بالإضافة إلى الخطأ في كتابة الخاصية height، من الأفضل استخدام max-width في تحديد حجم الصورة في كود CSS بدلاً من استخدام width العادي. هذا لأن استخدام max-width يعني أن حجم الصورة سيكون محددًا بحيث لا يتجاوز عرض العنصر الأساسي الذي يتم عرض الصورة داخله، ولكن ارتفاع الصورة يمكن أن يتغير تلقائيًا لتحافظ على نسبة الارتفاع إلى العرض الصحيحة. هذا يساعد على تجنب مشاكل عدم تناسق الحجم في حالة تغيير حجم الشاشة أو تصفح الموقع على أجهزة مختلفة، كما أنه يعمل على تحسين تجربة المستخدم من خلال تحسين تصميم الموقع وسرعة تحميله. ولا حاجة لكتابة الـ height إلا في حالات محددة، حيث سيتم تحديد تلقائيًا من قبل العرض الذي قمت بتحديده أنت، وإليك مثال: img { max-width: 50%; } تم تعيين max-width على 50%، وهو يعني أن الصورة ستتمدد أو تنكمش حسب عرض العنصر الأساسي الذي يتم عرض الصورة داخله، ولكنها لن تتجاوز 50% من عرض هذا العنصر. على سبيل المثال، إذا كان العنصر الأساسي هو div ولديه عرض 1000 بكسل، فإن الصورة ستعرض بعرض 500 بكسل (50% من 1000 بكسل). وإذا كان العنصر الأساسي يتم تحجيمه أو تغيير حجمه بناءً على حجم الشاشة أو الجهاز المستخدم، فإن الصورة ستتكيف مع حجم العنصر الأساسي وستكون في نطاق max-width المحدد. يجب ملاحظة أن الكود المذكور يحدد فقط max-width ولم يتم تحديد الـ height، وبالتالي، سيتم الحفاظ على نسبة الارتفاع إلى العرض الأصلي للصورة كما ذكرت لك.
  10. في البداية يجب معرفة أنه يمكن لأي شخص بدءاً من المبتدئين أن يصبح هاكر أخلاقي، وليس شرطاً أن تكون مبرمجاً محترفاً ذو خبرة. ومع ذلك، فإن تعلم بعض المهارات الأساسية في البرمجة وأمن المعلومات ونظام التشغيل والشبكات قد يساعد في تحسين فهمك وتسهيل عملية تطبيق تقنيات الهاكر الأخلاقي. و الدورات التي تغطي موضوعات مثل البرمجة وأمن المعلومات ونظام التشغيل والشبكات يمكن أن تساعدك في تطوير مهاراتك وفهمك لمجال الأمن السيبراني والهاكر الأخلاقي. ومع ذلك، فإن هناك مهارات ومفاهيم خاصة بمجال الأمن السيبراني والهاكر الأخلاقي يجب عليك تعلمها أيضاً، مثل التحليل العكسي والاختبار الأمني والتعرف على الثغرات والتعامل معها وتطبيق الإجراءات الأمنية الصحيحة، لذلك، من المهم أن تختار الدورات التدريبية التي تغطي هذه الموضوعات أيضاً. ونصيحتي إليك هي دراسة الأساسيات بشكل جيد من خلال دورة علوم الحاسب في أكاديمية حسوب، وأيضًا دراسة الأساسيات الخاصة بلغة البرمجة التي ستختارها. مثلاً تعلم جافاسكريبت هو مفيد جدًا في مجال الأمن السيبراني والهكر الأخلاقي، لأن اللغة مستخدمة بشكل شائع في تطوير تطبيقات الويب وتحسين أمنها. كما أنها مستخدمة أيضًا في تطوير أدوات الهجوم السيبراني، مثل البرامج الخبيثة والاختراقات الإلكترونية. ومع ذلك، ليست جافاسكريبت اللغة الوحيدة التي يجب عليك تعلمها في مجال الأمن السيبراني. يجب أيضًا تعلم لغات أخرى مثل Python وC++ وRuby وغيرها، لأن كل لغة لها قدرات ومزايا مختلفة في مجال الأمن السيبراني، حسب المنصة التي قررت التخصص بها وليكن الويب، فسيكفيك تعلم اللغات الخاصة بالويب فقط. بالإضافة إلى ذلك، يجب عليك تعلم المفاهيم الأساسية للبرمجة والأمن السيبراني بشكل عام، والتي تشمل مثلًا هندسة عكسية وتحليل الشفرة وعلم الأوامر ونظم التشغيل وشبكات الحاسوب. وقد تم النقاش حول سؤالك من قبل والإجابة بشكل وافي أرجو منك الإطلاع على التالي:
  11. أهلا يوسف، بخصوص الإمتحان وشهادة التخرج، يتم إجراء مكالمة صوتية لمدة 30 دقيقة، ويتم فيها إختبارك من قبل مدرب عن طريق طرح بعض الأسئلة الخاصة بالدورة محل الإختبار وعن الأمور التي قمت بتنفيذها. وإذا كان لديك مشكلة بالإنترنت فيمكن تأجيل الإختبار حيث لا يوجد موعد محدد لذلك، وباستطاعتك التقدم للإختبار أكثر من مرة. وستجد هنا ما تحتاجه من معلومات حول الإختبار والشهادة والمشاريع. الامتحان والحصول على الشهادة
  12. الفكرة الرئيسية هي أن استخدام البرامج المفتوحة المصدر والمكتبات يمكن أن يكون مجانيًا وغير مقيد، ولكن الأمر يعتمد على شروط الترخيص. في حالة البرامج المفتوحة المصدر، فإنه يمكن استخدامها وتوزيعها وبيعها بشروط الترخيص التي يتم تحديدها، حيث تمتلك الحرية الكاملة في استخدام البرنامج بأي شكل من الأشكال دون أي تحديدات، ولكن يمكن تعديل شفرة البرنامج وإعادة توزيعها بشروط الترخيص المناسبة. وفي حالة المكتبات المفتوحة المصدر، فإنه يمكن استخدامها في مشاريعك الخاصة دون أن تقوم بتعديل شفرتها أو إعادة توزيعها، ولكن يتم تحديد شروط الترخيص الخاصة بها التي يجب الالتزام بها في حالة استخدامها في مشروعك. وبالنسبة للسؤال الخاص بالمكتبات والبرامج، فعلى الرغم من أن المكتبات تحتوي على مجموعة من الدوال والكلاسات، والبرامج تحتوي على واجهات رسومية، إلا أن الفكرة الأساسية هي أنه يمكن استخدام كلاهما في مشاريعك الخاصة دون الحاجة إلى نسخ أي منهما، ولكن يتم تحديد شروط الترخيص لكل منهما.
  13. تُستخدم طريقة toString() لتحويل كائن إلى سلسلة نصية، وإذا كنت تريد طباعة عدة جُمل باستخدام طريقة toString()، فيمكنك دمجها معًا باستخدام عامل + أو StringBuilder. إليك مثال بسيط يوضح كيفية استخدام طريقة toString() لطباعة عدة جُمل: public class Example { private String sentence1; private String sentence2; public Example(String s1, String s2) { sentence1 = s1; sentence2 = s2; } public String toString() { return sentence1 + " " + sentence2; } public static void main(String[] args) { Example example = new Example("أهلا", "بالعالم!"); System.out.println(example.toString()); } } في المثال، تم استخدام طريقة toString() لإرجاع سلسلة نصية مكونة من sentence1 و sentence2 المُمررة إلى الكائن Example، ثم استخدام System.out.println() لطباعة هذه السلسلة على الشاشة. النتيجة المتوقعة: أهلا بالعالم!
  14. ترخيص GPL (General Public License) هو أحد الأمثلة على الترخيص الذي يشرط على المستخدمين توزيع التطبيقات المشتقة من البرنامج بنفس الترخيص، وبالتالي توزيعها مفتوحة المصدر. ويشترط الترخيص أيضًا توزيع التطبيقات المشتقة بطريقة مجانية. على الجانب الآخر، يمكن الإشارة إلى ترخيص BSD (Berkeley Software Distribution) الذي يسمح بتوزيع التطبيقات المشتقة بأي شكل، سواء كانت مجانية أو تجارية، وليس هناك أي شرط يشرط على المستخدمين توزيع التطبيقات المشتقة بنفس الترخيص أو توزيعها مفتوحة المصدر. ولكن يجب على المستخدمين الإشارة إلى حقوق الملكية الفكرية المتعلقة بالبرمجيات المستخدمة في التطبيقات المشتقة.
  15. صحيح، إذا لم تكن هناك شروط تلزمك بتوزيع تطبيقك مفتوح المصدر أو بتوزيعه بطريقة مجانية، فأنت لست ملزمًا بالقيام بأي من الاثنين. ومن الجدير بالذكر أن معظم تراخيص البرمجيات المفتوحة المصدر لا تفرض أي من هذه الشروط، بل تترك الأمر لصاحب التطبيق ليقرر كيفية توزيع تطبيقه.
  16. لا يجب أن تقوم بتوزيع تطبيقك كاملاً مفتوح المصدر إذا استخدمت مكتبة مفتوحة المصدر كجزء منه. حيث تعتبر المكتبة مفتوحة المصدر مجرد جزء من تطبيقك، ولا يؤثر استخدامها في ترخيص تطبيقك، ومع ذلك، يجب عليك الالتزام بشروط الترخيص الخاصة بالمكتبة المفتوحة المصدر والإفصاح عن المصدر الأصلي. علاوة على ذلك، قد يوجد شروط مختلفة لتوزيع تطبيقك وفقًا للتراخيص المختلفة للمكتبات المفتوحة المصدر التي استخدمتها، لذلك، يجب عليك التأكد من مطابقة شروط الترخيص لجميع المكتبات المفتوحة المصدر التي تستخدمها في تطبيقك والتوافق معها.
  17. تعني الأعمال المشتقة في تراخيص مكتبات مفتوحة المصدر (Open Source) أي تعديلات أو تعديلات مشابهة أو إنشاءات جديدة تم إنشاؤها على أساس العمل الأصلي المفتوح المصدر. وبموجب تراخيص البرمجيات المفتوحة المصدر ، فإن أي شخص يمكنه تحميل واستخدام وتعديل البرنامج الأصلي وإعادة توزيعه مع التعديلات التي أجراها، شريطة الالتزام بشروط الترخيص الخاصة بالبرنامج المفتوح المصدر وتضمن الإفصاح عن المصدر الأصلي وعدم التحايل على حقوق الملكية الفكرية. ومن الأمثلة على تراخيص مكتبات مفتوحة المصدر Apache وGNU GPL وMIT.
  18. يمكن استخدام حلقة التكرارية foreach للمرور على جميع عناصر المصفوفة والتحقق إذا كان العنصر رقمًا أو حرفًا باستخدام الدالة is_numeric() و is_string(). ولتخزين العدد، يمكن إنشاء متغير وزيادته بمقدار 1 في كل مرة يتم فيها طباعة عنصر رقمي، بعد الانتهاء من حلقة التكرارية، يمكن حساب عدد الأحرف التي تم تجاهلها عن طريق طرح عدد الأرقام من عدد العناصر في المصفوفة. مثلاً ، يتم استخدام حلقة foreach للمرور على جميع العناصر في المصفوفة، ثم التحقق إذا كان العنصر رقمًا باستخدام is_numeric() وإذا كان كذلك، ويتم طباعته و زيادة المتغير $countNumbers بمقدار 1، ثم حساب عدد الأحرف باستخدام count() لعدد العناصر في المصفوفة وطرحها من عدد الأرقام، وعرض النتائج في النهاية باستخدام echo. عليك بالبحث عزيزي، فمثلاً لو قمنا بالبحث عن "foreach في php حسوب أو المصفوفات في PHP حسوب" عن سنجد التالي:
  19. بالإضافة إلى ما ذكره قيس، يمكن أن يكون السبب هو عدم ربط ملف CSS الخاص بك بشكل صحيح داخل صفحة HTML الخاصة بك. لذلك، يجب التأكد من وجود رابط CSS صحيح في الصفحة HTML الخاصة بك وأن يشير إلى ملف CSS الصحيح. <!DOCTYPE html> <html> <head> <title>مثال على إضافة رابط CSS</title> <!-- رابط CSS --> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>مرحبا بالعالم!</h1> <p>هذا مثال على كيفية إضافة رابط CSS في صفحة HTML.</p> </body> </html> في المثال، تم إضافة عنصر "link" داخل رأس الصفحة HTML الخاصة بنا، وتم تحديد الرابط المناسب لملف CSS الذي يحتوي على الأنماط التي نريد تطبيقها على الصفحة. يتم تحديد المسار النسبي لملف CSS في الخاصية "href" التي تأتي بعد كلمة "stylesheet". الفرق بين color و column-rule-color يجب معرفة أن color و column-rule-color هما خاصيتان في CSS تستخدمان لتحديد لون النص ولون حاشية العمود (column rule) في تنسيق النصوص على شكل عمود في الصفحة. فخاصية color تستخدم لتحديد لون النص وتطبق على النص ككل، وتأخذ القيمة في شكل قيمة HEX، RGB أو اسم اللون. على سبيل المثال: h1 { color: #ff0000; /* يحدد لون النص كأحمر */ } أما خاصية column-rule-color فتستخدم لتحديد لون حاشية العمود في صفحات الويب الذي يتم عرضها على شكل عمود. تأخذ هذه الخاصية قيمة اللون بنفس الطريقة التي يتم بها تحديد لون النص. على سبيل المثال: div { -webkit-column-rule-color: blue; /* يحدد لون حاشية العمود بلون أزرق */ -moz-column-rule-color: blue; column-rule-color: blue; }
  20. ذكرت لك أكثر من مرة عزيزي ولم تستمع لي، قم بوضع مجهودك وطاقتك في التعلم وبناء مشروعك، ومسألة التراخيص لا داعي للقلق هكذا بشأنها فلا أحد يفعل ذلك.
  21. يمكنك استخدام مكتبات مفتوحة المصدر ذات التراخيص المختلفة في تطبيقك الخاص دون الحاجة لتعديلها، ما لم تكن هذه المكتبات تحمل ترخيص GPL. ومع ذلك، يجب الالتزام بتلك التراخيص وشروطها المحددة، والتي قد تشتمل على تطلب المصدر المفتوح لتلك المكتبات، وعدم استخدامها في تطبيق مغلق المصدر. فيما يتعلق بإنشاء ملف يعرض فيه المكتبات المستخدمة وتراخيصها، فهذا يعد خطوة جيدة ومهمة. ومن الممكن أن تقوم ببيع التطبيق مغلق المصدر، ومنع نسخه وإعادة توزيعه، ولكن ذلك يتوقف على الترخيص الذي اخترته لتطبيقك. سأشرح لك بشكل مفصل أكثر: الترخيص هو الشروط التي يتم تحديدها لاستخدام البرنامج أو المكتبة المفتوحة المصدر. يمكن لصاحب العمل أن يختار الترخيص الذي يتناسب مع احتياجاته، والذي يعبر عن الحقوق التي يمنحها للمستخدمين الآخرين لاستخدام برنامجه أو تطبيقه أو مكتبته المفتوحة المصدر. فترخيص GPL هو واحد من أكثر التراخيص شيوعًا للمكتبات المفتوحة المصدر، ويتطلب هذا الترخيص من المستخدمين نشر أي تعديلات يجرونها على البرنامج أو المكتبة المفتوحة المصدر، وأن يتم نشر أي تطبيقات يستخدمونها تحت نفس الترخيص GPL. ومن الممكن أن يكون من الصعب بيع تطبيق مغلق المصدر يستخدم مكتبات تحت ترخيص GPL، لأنه سيتطلب من المستخدمين إما شراء الترخيص الخاص بالمكتبات الخاصة بالتطبيق، أو نشر البرنامج أو التطبيق بشكل مفتوح المصدر. من ناحية أخرى، هناك تراخيص أخرى تسمح للمبرمج ببيع تطبيقه مغلق المصدر، ومنع نسخه وإعادة توزيعه. مثال على ذلك هو ترخيص MIT ، الذي يسمح للمبرمجين ببيع تطبيقاتهم مغلقة المصدر، ومنع نسخها وإعادة توزيعها، مع الالتزام بتضمين إشعار بحقوق النشر في جميع النسخ الموزعة من التطبيق. لذلك، يجب على المبرمج اختيار الترخيص الذي يناسب احتياجاته والتأكد من احترام شروط الترخيص لجميع المكتبات التي يستخدمها في تطبيقه.
  22. يمكن استخدام pandas مع pyqt5 رغم اختلاف تراخيصهما. فالترخيص الذي يُطبَّق على pyqt5 هو GPL، وهذا يتطلب أن يتم توزيع أي عمل مشتق يستخدم pyqt5 بترخيص متوافق مع GPL، وهذا يعني أن أي برنامج يستخدم pyqt5 يجب أن يتم توزيعه بترخيص GPL. أما بالنسبة لترخيص pandas فهو BSD، وهذا يسمح بتوزيعها مع أي برنامج بترخيص GPL أو غيره، ولذلك لا يوجد أي مشكلة في استخدام pandas مع pyqt5، ويمكنك استخدام الاثنين معًا بحرية. ومع ذلك، ينبغي الانتباه إلى أنه قد يوجد بعض التفاصيل القانونية التي قد تؤثر على استخدامك لهذه المكتبات في بعض الحالات الخاصة، لذلك يمكن الرجوع إلى الشروط الدقيقة لكل ترخيص والاطلاع على ما إذا كان هناك أي قيود تطبق في حالتك الخاصة.
  23. الأسئلة الإمتحانية أو الخاصة بالمشاريع لا يتم الإجابة عليها إلا في حالة توافر كود وتريدي المساعدة في حل مشكلٍة ما. وبخصوص سؤالك، يمكن إرشادك لطريقة الحل. الخطوات اللازمة لحل هذا السؤال هي كالتالي: 1- إنشاء فئة "Car" التي تحتوي على بيانات السيارة المطلوبة (نوع السيارة ، اسم الشركة المصنعة ، النموذج ، رقم اللوحة ، والرمز). 2- تحديد كافة الطرق المناسبة والبناء للفئة. 3- إنشاء فئة الاختبار (Test class) وإضافة خمس سيارات إلى النظام وتعيين سيارتين فقط للعملاء، وترك السيارات الأخرى لعملاء آخرين. 4- عرض تقرير يتضمن جميع بيانات السيارات داخل النظام. 5- تصميم رسم بياني لفئة "Car" باستخدام UML. ملاحظة: يجب مراعاة أنواع المتغيرات (static أو instance) وحقوق الوصول (visibility modifiers) وطرق الحصول والتعيين (getter and setter methods) وصف المصفوفة من الكائنات (array of objects). وإليك توضيح بخصوص الخطوة رقم 5: حيث تصميم الرسم البياني لفئة "Car" باستخدام UML يمثل أسلوباً هاماً لوصف هيكلية الكلاس وتفاعلاته مع الأنظمة الأخرى. وهناك عدة مكونات في الرسم البياني لفئة "Car" باستخدام UML: الاسم (Class Name): يمثل اسم الفئة ويكون موضوعًا في الجزء الأعلى من الدائرة. المتغيرات (Variables): تمثل خواص الفئة ويكون لها أسماء وأنواع، وتوضع في المستطيلات تحت اسم الفئة. الأساليب (Methods): تمثل الوظائف والإجراءات التي تنفذها الفئة، وتوضع أيضًا في المستطيلات تحت اسم الفئة. الإرث (Inheritance): تمثل العلاقة بين الفئات الأب والفئات الفرعية. الوصلات (Associations): تمثل العلاقة بين الفئة والفئات الأخرى. التعليقات (Comments): يمكن إضافة تعليقات إلى الرسم البياني لشرح أي جزء من الرسم البياني.
  24. من الصعب تزويدك بالكود الدقيق دون معرفة تفاصيل صفحتك وقاعدة بياناتك وطريقة عرض البيانات، ولكن يمكن توفير نموذج عام لعرض بيانات دكتور معين عند النقر على اسمه. في البداية، يجب عليك تخزين بيانات الأطباء في قاعدة البيانات الخاصة بك وتعيين مفتاح رئيسي فريد لكل سجل، مثل "id". ثم باستطاعتك إنشاء صفحة PHP تقوم بالاتصال بقاعدة البيانات واسترداد بيانات الطبيب المحدد باستخدام ال "id" المحدد في الرابط الذي تم النقر عليه يمكن استخدام الدالة $_GET للحصول على ال "id" المحدد في عنوان URL، على سبيل المثال: <?php // استدعاء ملف الاتصال بقاعدة البيانات include('db_connect.php'); // التحقق من وجود قيمة "id" في العنوان URL if (isset($_GET['id'])) { // استعلام SQL لاسترداد بيانات الطبيب المحدد $sql = "SELECT * FROM doctors WHERE id = ".$_GET['id']; $result = mysqli_query($connection, $sql); // التحقق من وجود بيانات الطبيب if (mysqli_num_rows($result) > 0) { // عرض بيانات الطبيب المحدد $row = mysqli_fetch_assoc($result); echo "اسم الطبيب: ".$row['name']."<br>"; echo "تخصص الطبيب: ".$row['specialization']."<br>"; // وهكذا } else { echo "لم يتم العثور على بيانات الطبيب المحدد"; } } else { echo "لم يتم تحديد أي طبيب"; } ?> ويمكنك استخدام روابط HTML التي تحوي ال "id" المحدد لتحويل المستخدمين إلى صفحة عرض بيانات الطبيب المحدد، على سبيل المثال: <a href="doctor_details.php?id=1">اسم الطبيب</a> حيث "1" هو قيمة "id" المحددة للطبيب المراد عرض بياناته.
  25. بالإضافة إلى ما تم ذكره، يمكنك الإعتماد على المقالات الخاصة بالأساسيات في أكاديمية حسوب: كما يمكنك التسجيل في إحدى دورات أكاديمية حسوب وبذلك ستفتح لك المسارات الأولى من جميع الدورات المتوفرة على الأكاديمية. بعد ذلك يمكنك تصفح كافة المقالات المتعلقة بـ HTML5 و CSS من خلال القسم الخاص بهم في أكاديمية حسوب. قسم دروس ومقالات HTML قسم دروس ومقالات CSS
×
×
  • أضف...