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

عبدالله عبدالرحمن11

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

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

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

كل منشورات العضو عبدالله عبدالرحمن11

  1. هناك عدة طرق في بايثون لإضافة متغيرات variables في سلاسل نصية string وهذه بعض الطرق بإستخدام التسلسل concatenation setting = input("Change settings") cr.execute("SELECT * FROM settings WHERE id = " + setting) setting = input("Change settings") cr.execute("SELECT * FROM settings WHERE id = " + str(setting)) بإستخدام العامل % setting = input("Change settings") cr.execute("SELECT * FROM settings WHERE id =%s"%setting) بإستخدام format setting = input("Change settings") cr.execute("SELECT * FROM settings WHERE id ={}".format(setting)) بإستخدام f-string setting = input("Change Settings ") print(f"SELECT * FROM settings WHERE id ={setting}")
  2. بما أنك تستخدم VSCode والذي يعتبر محرر أكواد عام general purpose code editor ، بمعنى أنه يستخدم لأي لغة برمجة بشكل عام ، ولكن هناك متجر الإضافات الخاص ب VSCode والذي ستجد فيه الكثير من الإضافات الذي ستساعدك في البرمجة بأي لغة ويوجد ايضاً إضافات مخصصة لبايثون وأول إضافة يجب عليك تثبيتها هي python ويوجد فيها العديد من الميزات الذي ستساعدك بالتطوير ببايثون ، بالإكمال التلقائي وإظهار الأخطاء والإقتراحات وبما أن بايثون يعتمد بشكل أساسي على المسافات indentation فيمكنك تثبيت autopep8 بإستخدام pip pip install pep8 pip install --upgrade autopep8
  3. هناك عدة طرق بناءً على طريقة كتابة رقم الهاتف ، وهذا الكود لجميع الطرق المشهورة import re text = 'Hello my Jawwal number is 0590000001' print(re.findall(r"[\d]{9}", text)) # 000-000-0000 text = 'Hello my Jawwal number is 059-000-0001' print(re.findall(r"[\d]{3}-[\d]{3}-[\d]{4}", text)) # 000 000 0000 text = 'Hello my Jawwal number is 059 000 0001' print(re.findall(r"[\d]{3} [\d]{3} [\d]{4}", text)) #+000-000-000 text = 'Hello my Jawwal number is +059-000-0001' print(re.findall(r"\+?[\d]{3}-[\d]{3}-[\d]{3}", text))
  4. هناك العديد من الطرق لعمل ذلك : إما عبر إستخدام الصفة dir في عناصر HTML أو عن طريق إستخدام الخاصية direction في CSS أو حتى عن طريق JavaScript ليتحقق من لغة محتوى عناصر HTML وإضافة الكود المناسب بناءً على لغة نص العنصر لكن إذا كان الموقع يحتوي على لغات متعددة فيجب أن يكون الأمر تلقائياً بسحب لغة النص الموجود في العنصر في HTML5 والذي هي أحدث نسخة من HTML يمكنك إستخدام هذه الخاصية وإستخدام هذا الكود <html dir="auto"> والمتصفح سيقوم تلقائياً بالتعرف على نوع النص الموجود ويقوم بتحديد الإتجاه بناءً على أول نص عناصر HTML
  5. في بايثون الدالة المجهولة Anonymous function هي عبارة عن دالة يتم تعريفها بدون اسم بينما الدوال العادية في بايثون يتم تعريفها بإستخدام def ، الدوال المجهولة يتم تعريفها بإستخدام الكلمة المحجوزة lambda الدوال المجهولة anonymous functions في بايثون تسمى ايضا بدوال lambda functions طريقة تعريف دوال lambda تبداء بكلمة lambda ومن ثم المُدخلات ومن ثم تضع : ومن ثم كتابة الكود الخاص بالدالة lambda arguments: expression وهذا مثال لكيفية إستخدام lambda double = lambda x: x * 2 print(double(5)) وهذا هو شكل الدلة عند تعريفها بشكل عادي def double(x): return x * 2
  6. لديك دالتين للقيام بخلط القائمة تقوم بإستدعائهما من random والدالتين هما shuffle و sample from random import shuffle from random import sample list = [1,2,3,4,5,6,7,8,9] #تقوم بخلط القائمة الأصلية shuffle(list) # لا تقوم بتعديل القائمة الأصلية بل تقوم بإرجاع دالة مخلوطة sample(list,len(list))
  7. عندما تقوم بسحب البيانات من الويب فانت تحصل عليها على شكل خام ثنائي binary أو byte type وعندما تقوم بحفظها في ملف بإستخدام الدالة المخصصة لذلك تحصل على هذا الخطأ TypeError: string argument expected, got 'bytes ومعناه أن دالة الحفظ تتوقع المدخل أن يكون من نوع سلسلة نصية string لحفظها في الملف ولكن حصلت على نوع byte type لهذا يجب عليك أولاً تحويل البيانات الذي تريد حفظها من نوع byte الى نوع string وإذا أردت تحويل من نوع byte b = b"content" type(b) # <class 'bytes'> الى نوع string فيمكنك إستخدام هذا الكود bytes = b'content' bytes.decode("utf-8") او يمكنك إستخدام هذا الكود ايضاً b = b'content' str(b, 'UTF-8')
  8. هناك منطقة في الذاكرة memory تسمى بالتكدس Stack وهي خاصة بمتابعة سجل إستدعاء الدوال function calls ، فعلى سبيل المثال في دالتك التكرارية عند إستدعائها يتم تسجيلها في التكديس stack وعندما تقوم بإستدعائها مرة أخرى يتم تسجيل بشكل مكّدس يعني فوق الاستدعاء السابق function call وهكذا عند إستدعاء أي دالة يتم تكديسها فوق السابق وعندما الدالة تنتهي من عملها يتم إزالتها من التكديس والعودة الى الدالة الآخرى الذي قبلها وهكذا لكن الذاكرة memory محدودة ولها سجل تكديس محدود فعندما تتجاوز هذا الحد فإن هذا يؤدي الى فشل البرنامج وتسمى هذه المشكلة ب stack overflow لهذا لغة python قامت بوضع حد إفتراضي وهو 997 لكي لا تصل الى stack overflow ويمكنك تجاوز الحد الإفتراضي ولكن هذا خطر لأنك قد تتجاوز الحد النهائي ، وهذا الكود لتجاوز الحد الإفتراضي import sys sys.setrecursionlimit(1200) # هنا تقوم بتغيير الحد الإفتراضي لهذا إذا كانت الدالة تتجاوز الحد النهائي فيمكنك إستخدام الحلقات loops بدلاً من الدوال التكرارية recursive functions
  9. بناءً على نوع الخادم Backend الذي ستعمل عليه ، فإذا كان الخادم الذي ستعمل عليه هو لتبادل البيانات وتخزين المعلومات والتواصل مع خوادم أخرى وغيرها من الأشياء عدا التعامل مع تنقيات الواجهة Frontend فليس عليك تعلم شيء من تقنيات الواجهة ، ولكن يفضل على الأقل الإطلاع وفهمها بشكل بسيط أما إذا كنت تريد أن تكون مطور خلفية بشكل عام ففي كثيراً من الأحيان ستتعامل مع تقنيات الواجهة إما بشكلً واسع أو بشكل بسيط فأقل شيء يمكنك فعله هو تعلم أساسيات HTML ، وأساسيات CSS ، وأساسيات JavaScript وكيفية عملها وسيأخذ منك فترة قصيرة جداً لتعلم هذه المواضيع
  10. الذي تحتاج إليه شيئان رئيسيان: الأول هو تدوين الملاحظات ، بحيث تقوم بتدوين أي شيء جديد تعلمته وأي شيء قد تنساه فتكون الملاحظات مرجعاً لك ، ويمكنك تدوين الملاحظات بإستخدم أحد التطبيقات أو إذا كنت تفضل الورقة والقلم فلا مشكلة في ذلك ، وهما أيضاً يساعدان في الحفظ الأمر الثاني وهو مهم ، التركيز على الفهم وليس الحفظ ، لأنك مع الوقت وتدوين والرجوع الى الملاحظات والتطبيق المتواصل والفهم الصحيح سترى أنك حفظت الأشياء تلقائياً ، لذا ركز على الفهم والتطبيق العملي المتواصل ، والبحث والإطلاع ، القيام بتجارب لفهم عمل الأشياء فكل هذه الأشياء تساعد على الفهم
  11. هناك عدة عوامل بناءً لسؤالك ، وبناءً على هذه العوامل تستطيع تحديد الحل المناسب لبرنامجك ، والعوامل هي منصة التشغيل لبرنامج مكان تخزين قواعد البيانات أداء وسرعة البرنامج فإذا أردت أن يكون البرنامج تطبيق ويب ويتم فتحه من المتصفح والبيانات يتم تخزينها في الخادم فيمكنك تطوير الواجهة بإستخدام React و الخادم بإستخدام nodejs ويمكنك جعله برنامج قابل للتثبيت لجميع المنصات بإستخدام جميع الأشياء السابقة من واجهة React وخادم nodejs بالإضافة الى Electron.js لجعله برنامج قابل للتثبيت وايضاً إستخدام nodejs لحفظ البيانات محلياً أما إذا أردت أن يكون البرنامج مصمم لجميع الأجهزة وايضاً الأجهزة المتوسطة والضعيفة وأداء عاليً والمنصة هي وندوز ، فيجب عليك مثل أغلب برامج المحاسبة إستخدام #C
  12. دالة replace. تعتبر دالة نقية pure function والدالة النقية pure function لديها ميزتين هما دائماً تحصل على نفس المُخرجات return value لنفس المُدخلات arguments الدوال النقية ليس لديها آثار جانبية side effects بمعنى أنها لاتقوم بتعديل أي شيء خارج هذه الدالة فدالة replace لم تقم بتعديل المتغير name لانه خارج الدالة ، لهذا قامت بعمل نسخة معدلة من المتغير name وقامت بإرجاع المتغير الجديد ولم تقم بتعديل المتغير الأصلي لهذا يجب عليك تعيين المتغير name بالمتغير الجديد الراجع من دالة replace name = 'Adam' name = name.replace('am', 'd')
  13. في البداية يجب عليك شراء اسم نطاق domain ومن إعدادت التحكم الخاصه بهذا domain تستطيع ربطه بال public IP الخاص بهذا السيرفر ويمكن; الحصول على عنوان ال public IP الخاص بهذا السيرفر عن طريق إستخدام أي أمر من الأمور التالية dig +short myip.opendns.com @resolver1.opendns.com او هذا host myip.opendns.com resolver1.opendns.com | grep "myip.opendns.com has" | awk '{print $4}' او هذا wget -qO- http://ipecho.net/plain | xargs echo او هذا wget -qO - icanhazip.com اما الأوامر التالية سيجب عليك تثبيت curl بإستخدام هذا الأمر sudo apt install curl ومن ثم يمكنك إستخدام أحد الأوامر الآتية curl ifconfig.co او هذا curl ifconfig.me && echo او هذا curl icanhazip.com وبعد الحصول على ال public IP address او عنوان IP العام ، يمكنك ربط اسم النطاق domain name او حتى الاسم الفرعي من لوحة التحكم الخاصة بإسم النطاق وربطها بالعنوان الذي حصلت عليه من أحد الأوامر السابقة
  14. كما هو موضح بأن السبب في توقف التثبيت هو بسبب الشهادة لهذا يجب عليك تنزيل هذه الشهادة من هنا ومن ثم النقر على الماوس بالزر الأيمن لكي تظهر الخيارات ثم اضغط على تثبيت الشهادة ، ستظهر لك رسالة تحذير ، إضغط على فتح ومن ثم ستظهر لك واجهة لتثبيت الشهادة ، قم بالنقر على التالي ، ثم على التالي ، ثم انقر على إنهاء لإنهاء تثبيت الشهادة والآن قم بتثبيت Net Framework 4.6.2
  15. لديك العديد من الخيارات كإستعمال subprocess كما في المثال السابق أو إستدعاء وإستعمال الحزمة os وهنا طريقتين لإستخدامها في هذا الكود تقوم بتشغيل الكود والبقاء فيه import os os.system('cmd /k "ipconfig"') وفي هذا الكود تقوم بتشغيل الكود ومن ثم إنهائه بحيث لا تبقى واجهة الأوامر cmd مفتوحة import os os.system('cmd /k "ipconfig"')
  16. إذا قمت برفعه مسبقاً الى github فيمكنك استخدام هذا الأمر git clone https://....
  17. الأقواس المتعرجة مهمة جداً فهي تعتبر مثل الحاوية الذي تحتوي وتٌحيط بشيءً معين فالأقواس المتعرجة هي التي تحدد أن هذا الكود الذي بداخلها هو خاص بالكود الذي قبل كتابة هذه الأقواس على سبيل المثال هذا الكود bool isTrue = true if (isTrue){ std::cout << "true" ; } أي كود داخل الأقواس المتعرجة يعتبر خاص ب if الشرطية وسيتم تشغيل الكود الذي داخل الأقواس بناءً على عليها، فإذا كان المتغير isTrue صحيحاً وفي حالتنا هو صحيح إذاً سيتم تشغيل الكود الذي داخل الأقواس أم إذا كان المتغير الذي داخل الكود خاطئاً فسيتم تجاهل الكود الذي داخل الأقواس المتعرجة مثال آخر for (int i=0; i < 4; i++){ std::cout << i << endl; } الكود الذي داخل هذه الأقواس { std::cout << i << endl; } هو خاص بما قبله for (int i=0; i < 4; i++)
  18. هناك عدة مراحل للوصول الى إحتراف لغة JavaScript الأساسيات:- 1-أنواع المتغيرات وكيفية تعريفها وإستخدامها 2- مجرى التحكم Control flow وهنا تتعلم كيف تتحكم في مجرى تشغيل البرنامج بإستخدام الجمل الشرطية if statement أو حلقات التكرار loops مثل for و while وغيرها الذي تغير مسار أو مجرى تشغيل البرنامج 3- الدوال أو الوظائف functions وهنا موضوع مهم بحيث تقوم بجمع الكود الذي تستخدمه أكثر من مره في دالة وتقوم بإستدعائها بدلاً من كتابة الكود من جديد الى هذه المرحلة تكون قد أكملت الأساسيات وهذه تعتبر أهم مرحلة ويجب عليك فهمها جيداً وتعلم التعامل مع DOM أو Document Object Model وايضاً تعلم كيفية إضافة الأحداث Events وكيفية التعامل معها ثم تنتقل الى المواضيع الأكثر تقدماً 1- البرمجة الشيئية Object Oriented Programming 2- Ajax وهو الخاص بالتواصل بين المتصفح والخادم 3- البرمجة المتزامنة وغير المتزامنة sync/async 4- معالجة الأخطاء error handling 5- ال APIs الخاصة بالمتصفح المشهورة مثل fetch و canvas وغيرها ايضاً تعلم أحد مكتبات أو تقنيات واجهات المستخدم الشهيرة مثل 1- React.js تم إنشائه ويتم برمجته من قبل فيسبوك 2- Vue.js تم إنشائه ويتم برمجته من قبل مجتمعات المبرمجين ويتميز بسهولة تعلمه 3- Angular تم إنشائه ويتم برمجته من قبل جوجل يجب عليك اختيار واحد لتعلمه وإحترافه هناك بعض الأدوات يجب عليك تعلم إستخدامها مثل git و npm و webpack الأشياء الذي ذكرتها تعتبر أهم الأشياء والأكثر شيوعاً وليست كل شيء ولا أحد يعرف كل شيء بل بعد إكمال هذه الأشياء تتعلم الأشياء الذي قد تواجهك وهي جديدة عليك
  19. بالتأكيد يمكنك عمل ذلك لكن لا يفضل ذلك ، لأنه لا يقارن أبداً بالحاسوب رغم أن الآيباد يعتبر حاسوب بشكل أصغر لديك بعض الخيارات بناءً على نوع البرمجة الذي تختاره فإذا كنت تريد برمجة واجهات المواقع فيمكنك بكل سهولة فتح ملف نصي بأي برنامج وابداء بكتابة الأكواد ومن ثم قم بتغيير صيغة الملف من txt الى html ومن ثم قم بفتحه بإستخدام متصفح الانترنت الخاص بالهاتف أو الآيباد أما اللغات الأخرى التي تحتاج الى ترجمة الى لغة الآلة compiling فهناك بعض التطبيقات لعمل ذلك أسهل طريقة هي إستخدام المتصفح وإستخدام المواقع الذي تقوم بذلك عبر الانترنت online compiling وهي كثيرة جداً أما إذا أردت تثبيت تطبيق فهناك تطبيق شهير يسمى sololearn يدعم بعض اللغات المشهورة وهناك العديد من التطبيقات الآخرى بناءً على نوع اللغة البرمجية وايضاً المنصة أندرويد أو iOS مثل code editor و turbo-editor و Our code editor وغيرها
  20. إن تعلم البرمجة مثل تعلم قيادة السيارة عندما تقوم بتعلم قيادة السيارة لأول مرة سيأخذ وقت ولكن بعدما تتعلم قيادة السيارة لأول مرة وتتقن قيادتها فإنك عندما تريد تعلم قيادة سيارة من نوع آخر مختلف عن السيارة الآخر فستتعلم قيادة السيارة الجديدة في أقل وقت ممكن لأن أساسيات ومبادئ قيادة السيارة متشابه ولا يوجد الا بعض الاختلافات البسيطة وهكذا البرمجة ولغات البرمجة، فلغات البرمجة متشابه بالأساس والقواعد ولديها بعض الاختلافات بحسب مجال هذه اللغة لهذا بدايةً يجب عليك اختيار لغة برمجة واحدة يمكنك إختيار أياً من اللغات المشهورة ويفضل أن تختار اللغة الذي تكون في المجال الذي تريد الدخول فيه بعد أن تختار لغة البرمجة يجب عليك دراسة هذه المواضيع أو الأساسيات الذي تشترك بها لغات البرمجة أنواع المتغيرات وكيفية تعريفها وإستخدامها مجرى التحكم Control flow وهذا الموضوع مثلما يسمى هو يختص بمجرى أو مسار تشغيل الكود ويحتوي على عدة مواضيع مثل "إذا الشرطية if statement" و "الحلقات for, while" وغيرها الدوال أو الوظائف functions وهذا موضوع حول كتابة الكود المتكرر داخل دالة وعدم كتابته مرة آخرى وإستدعاء الدالة بدل ذلك إلى هنا تكون قد أكملت الأساسيات المهمة ومن ثم تنتقل الى مواضيع أكثر تقدما مثل البرمجة الشيئية Object Oriented Programming البرمجة المتزامنة وغير المتزامنة تختلف بإختلاف اللغة بدايةً اختر اللغة ومن ثم تعلم هذه المواضيع لهذه اللغة وبعد أن تكون فهمت وأتقنت هذه المفاهيم فيمكنك تعلم أي لغة برمجة آخرى في زمن قياسي
  21. إذا كنت تقصد كيفية تعريف المتغير bool فيتم تعريفه كالآتي وله حالتان فقط bool isOpened = true; bool isClosed = false; أما كيفية إستخدامها في التطبيقات فهي تستخدم كشرط بحيث إذا كان هذا الشرط صحيح فسوف يتم تشغيل الكود وإذا لم يكن الكود صحيح فلن يتم تشغيل الكود على سبيل المثال /* المتغير isOpened هو صحيح */ bool isOpened = true; /* المتغير isClosed هو خاطئ */ bool isClosed = false; /* إذا كان المتغير isOpened "صحيح فسيتم طباعة "إنه مفتوح */ if (isOpened){ std::cout << "It is opened"; } /* إذا كان المتغير isClosed "صحيح فسيتم طباعة "إنه مغلق */ if (isClosed){ std::cout << "It is closed"; }
  22. هناك عدة طرق لعمل ذلك منها: إستدعاء الوحدة module الذي تسمى ب sys بإستخدام إحدى الوظيفتين ويتم تحديد المسار على حالتين إما يكون المسار كامل absolute أو يكون المسار نسبي أو ذو صلة relative فالمسار المطلق أو الكامل absolute نبداء بالجذر root أي بهذه الإشارة / مثل /projects/blog/helpers إذا كان المجلد projects في الجذر وهنا تكمن مشكلة بحيث يجب علينا أن نقوم بتحديد المسار كاملاً أما المسار النسبي relative فهو تحديد المسار نسبياً للمكان الذي نحن فيه ولا يجب أن نعرف المسار الكامل absolute ، فإذا أردنا الوصول الى مسار files.py من مسار all.py بإستخدام المسار النسبي فيمكننا كتابة المسار هكذا ../../blog/helpers أما كيفية إستدعائه في بايثون فهناك عدة طرق وسنستخدم المسار النسبي لأنه أفضل عندما لايكون لدينا المسار الكامل 1- sys.path.append كما في الكود import sys sys.path.append('../../blog/helpers') import files 2- sys.path.insert كما في الكود import sys sys.path.insert(1,'../../blog/helpers') import files
  23. يمكنك إستخدام هذا الكود def word_count(str): # دالة العد counts = dict() # تعريف متغير قاموس لكي يحتوي على زوجين من القيم words = str.split() # تقسيم الكلمات وإضافتها على شكل قائمة for word in words: # حلقة لحساب عدد ظهور الكلمة وإضافتها في العداد if word in counts: counts[word] += 1 else: counts[word] = 1 return counts # إستدعاء دالة العد وإستقبال النص من المستخدم print(word_count(input()))
  24. العنصر button هو في ال HTML وليس في JavaScript، لغة البرمجة JavaScript هي فقط تتيح لك الوصول الى هذا الزر button عبر الDOM والتحكم به إذا كان الزر button منفصل لوحده ليس ضمن أي إستمارة form لا يحدث إعادة تحميل للصفحة أما إذا كان هذا الزر ضمن form وقمت بعمل submit فسيتم تلقائياً إعادة تحميل الصفحة لإيقاف هذا السلوك التلقائي أولاً يجب عليك تحديد الاستمارة form ومن ثم إيقاف السلوك الإفتراضي كما في هذا الكود document.getElementById("myForm").addEventListener("submit", function(event){ event.preventDefault() // إيقاف السلوك الإفتراضي // هنا يمكنك كتابة الكود الخاص بطلب البيانات });
  25. أولاً تطبيق الدردشة يتكون من قسمين: 1- القسم الأول هو تطبيق المستخدم: بحيث تقوم بإنشاء تطبيق الدردشة للمستخدم client لمنصات محددة فإذا أردت تطوير التطبيق لمنصتي Android و iOS فلديك عدة حلول أشهرها من أجل أفضل أداء وحماية يمكنك 1- تطوير تطبيق Android ب Java أو Kotlin 2- تطوير تطبيق iOS ب Swift أو Objective-C ولكن لجهد ووقت أقل يمكن إستخدام أطر عمل معينة لعمل تطبيق للمنصيتن من قاعدة كود واحدة 1- يمكنك إستخدام React Native من Facebook لتطوير تطبيق للمنصتين 2- يمكنك إستخدام Flutter من Google لتطوير تطبيق للمنصتين 2- القسم الثاني وهو تطوير الخلفية أو الخادم server-side بحيث يكون الوسيط لتراسل الرسائل وتخزينها والعديد من الأشياء الأخرى المهمة لتطوير الخلفية لديك العديد من لغات البرمجة وأفضلها Node.js من أجل سرعة وحماية أفضل مقارنة بلغات أخرى يمكنك تشفير الرسائل في جميع الخيارات السابقة من الصعب تحديد أيهما أفضل لكن لكل واحد منهما مميزات تختلف عن الآخر مثلا التليجرام يتم حفظ المراسلات في الخادم ويمكنك تصفح الرسائل من أي منصة وفي أي وقت بينما واتساب يمكنك تثبته في مكان واحد لا غير التيليجرام يمكنك من إرسال البيانات بإحجام كبيرة مقارنة بالوتساب التيليجرام يمكنك من إخفاء رقم هاتفك وأيضاً إنشاء مجموعات وقنوات تضم عدداً هائلاً من المنضمين على خلاف الوتساب الوتساب يمكنك إنشاء حالة لمدة 24 ساعة وايضا يمكنك الاتصال فيديو أو صوت فقط أفضل من التيليجرام
×
×
  • أضف...