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

هشام رزق الله

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

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

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

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

    31

كل منشورات العضو هشام رزق الله

  1. أرجو منك تقديم المزيد من المعلومات حول تطبيقك مثل لغة البرمجة، هدفه، نوع الإستضافة...
  2. نعم يمكنك استخدام دالة round لفعل ذلك، فهي تعمل على الأعداد الصحيحة والحقيقية، وللتقريب لأقرب عشرة يجب تمرير خيار -1 مع الرقم وفي حالة أردت التقريب لأقرب مئة مرر خيار -2 وهكذا كما في المثال التالي: >>> int(round(3178,-1)) 3180 ملاحظة: استخدمنا دالة int لأن دالة round تُرجع عدد حقيقي. كما يمكنك أيضا إنشاء دالة تقريب خاصة بك كما فعلنا في المثال التالي: def round_int(x): return 10 * ((x + 5) // 10)
  3. يمكنك القيام بذلك بطرق متعددة في بايثون، فتستطيع على سبيل المثال استخدام دالة any مع جملة الشرط حيث سنمرر لهذه الدالة مولد للتأكد من السلاسل النصية مع قائمة الامتدادات كما في المثال التالي: if any(ext in filenames for ext in extensions): print(filenames) أو يمكنك استخدام دالة endswith حيث سنتأكد من نهاية أسماء الملفات ما إذا كانت تنتهي بأحد الامتدادات المطلوبة أم لا كالتالي: 'file.doc'.endswith(extensions)
  4. توجد عدة خيارات يمكنك استعمالها لحل هذه المشكلة، فيمكنك على سبيل المثال الحصول على الفاصل الصحيح عن طريق sep من مكتبة os كالتالي والتي سترجع لك الفاصل المستعمل على نظام التشغيل الحالي: import os print os.sep أو يمكنك تجنب استخدام هذا الفاصل ودمج مجلدات وملف المسار عن طريق استخدام دالة path.join من مكتبة os كما في المثال التالي: import os path = os.path.join('folder','folder', 'file')
  5. توجد طرق عديدة لفعل ذلك في بايثون فيمكنك على سبيل المثال استخدام حلقة تكرار for على الملفات الموجودة في المجلد ومن ثم ننظر إلى امتدادها فإذا كانت تنتهي بالامتداد المطلوب فسنقوم بما نريده كالتالي: for i in os.listdir(os.getcwd()): if i.endswith(".txt"): continue else: continue أو يمكنك أيضا ببساطة استخدام وحدة glob للحصول على الملفات ذات امتداد معين كالتالي: for filename in glob.iglob('*.txt'): print filename
  6. إن الصياغة الصحيحة لتعبير شرط "إذا كان.. وإلا" هو التالي: x if y else z لكن المشكلة التي حدثت لك موجودة في ترتيب التعبير الشرطي الذي وضعته مع حلقة تكرار for حيث يجب أن يكون كالتالي: [ x if x%2 else x*100 for x in range(1, 10) ] أي أن الترشيح الذي وضعته في العبارة يجب أن يكون قبل جملة تكرار for وليس بعدها لكن في حالة تخليك عن else فستكون بعدها كما كتبتها أنت.
  7. توجد عدة طرق في بايثون لفعل ذلك، فإذا أردت العودة إلى أقرب 10 دقائق فيمكنك استخدام دالة timedelta كالتالي: thetime = thetime - datetime.timedelta(minutes=thetime.minute % 10, seconds=thetime.second, microseconds=thetime.microsecond) أما لو أردت التقريب لأقرب 10 دقائق فيمكنك استخدام هذه الطريقة التي تعمل مع جملة الشرطية if لتحديد ما إذا كان يجب إضافة 10 دقائق أو لا حسب الدقائق: discard = datetime.timedelta(minutes=thetime.minute % 10, seconds=thetime.second, microseconds=thetime.microsecond) thetime -= discard if discard >= datetime.timedelta(minutes=5): thetime += datetime.timedelta(minutes=10) أو يمكنك ببساطة استخدام هذه الطريقة الأقصر من السابقة: thetime += datetime.timedelta(minutes=5) thetime -= datetime.timedelta(minutes=thetime.minute % 10, seconds=thetime.second, microseconds=thetime.microsecond) توجد طرق أخرى لفعل ذلك لكن هذه الطرق هي الأبسط.
  8. نعم يمكنك فعل ذلك بكل سهولة في بايثون، لكن على الأغلب أنك أخطأت في تمرير المتغيرات، فالطريقة المعتادة للتمرير لا تعمل مع هذه الدالة: data.execute("SELECT * FROM foo WHERE bab = %s AND tor = %s" % (par1, par2)) بل يجب عليك استخدام هذه الطريقة والتي سنعوض فيها رمز % إلى فاصلة عادية كالتالي: data.execute("SELECT * FROM foo WHERE bab = %s AND tor = %s", (par1, par2)) يذكر أنه يمكنك تمرير قاموس لو كان لديك أكثر من متغير تريد تمريره.
  9. نعم، يمكنك ذلك فتوجد في بايثون العديد من الطرق لفعل ذلك وأسهلها استخدام دالة vstack من وحدة numpy حيث ستمرر لها قائمة تحتوي على اسم المتغير الذي يحتوي على مصفوفة Numpy وعلى السطر الجديد الذي تريده كالتالي: newrow = [1,2,3] matrice = numpy.vstack([matrice, newrow]) أو يمكنك القيام بعملية دمج باستخدام دالة concatenate من نفس الوحدة كالتالي: matrice = np.concatenate((A,newrow), axis=0)
  10. توجد في البايثون الكثير من الطرق لفعل ذلك، فيمكنك على سبيل المثال استخدام دالة all وتمرير الشرط الذي تريده مع القائمة وسترجع لك هذه الدالة قيمة منطقية حسب تحقق الشرط كما في المثال التالي: >>> items = [[1, 0, 1], [7, 0, 3], [5, 0, 2]] >>> all(item[1] == 0 for item in items) True أو إذا أردت تحقيق شرط معين على أي عنصر من العناصر -وليس جميعها كما في المثال السابق- فيمكنك استخدام هذه الطريقة: >>> any(item[1] == 0 for item in items) True ولاستخراج العناصر التي تحقق شرط معين فيمكنك استخدام طريقة تفهيم القائمة كالتالي: >>> [x for x in items if x[1] == 0] [[1, 0, 1], [7, 0, 3], [5, 0, 2]]
  11. توجد الكثير من الطرق في بايثون لفعل ذلك، ولا تحتاج إلى دالة تتعامل مع الملفات مباشرة، فيمكنك استخدام أي دالة تنشئ أسماء عشوائية بشرط أن لا توجد فيها رموز غريبة لا يقبلها نظام التشغيل مثل \ وغيرها. فيمكنك على سبيل المثال استخدام دالة uuid4 من مكتبة uuid لإنشاء أسماء عشوائية (تنتج في حقيقة أعداد HEX -نظام السداسي العشري-): import uuid filename = str(uuid.uuid4()) أو يمكنك استخدام دالة NamedTemporaryFile() من وحدة tempfile والتي ستنشئ ملفات عشوائية بأسماء عشوائية، ويمكنك الحصول على اسمها (ومسارها) باستخدام سمة name كالتالي: >>> import tempfile >>> tf = tempfile.NamedTemporaryFile() >>> print tf.name /tmp/tmpIDias5 >>>
  12. توجد العديد من الطرق في بايثون لفعل ذلك أسهلها استخدام دوال مكتبة requests مثل دالة get وتمرير الرابط لها كالتالي: res = requests.get(url) وإذا أردت استخدام المعاملات معها فيمكنك استعمال هذه الطريقة: par = {'key-1': 'value-1', 'key-2': 'value-2'} res = requests.get(url, params=par) وللحصول على POST فيكفي أن تستخدم دالة post وتمرر لها الرابط والمعاملات كما فعلنا لـ get: res = requests.post(url, data=par)
  13. توجد عدة طرق لفعل ذلك، فمثلا لو أردت تعداد عدد الملفات والمجلدات معا فيمكنك في هذه الحالة استخدام دوال glob وlen وتمرير خيار * لها لاحتساب جميع محتويات مجلد معين كالتالي: len(glob.glob('*')) أو يمكنك استخدام os.listdir() بدلا من glob واستخدام os.path.isfile() للتأكد من أن هذا الملف هو ملف أو مجلد فإذا كان ملف فسنحسبه وإذا لم يكن كذلك فسنتجاوزه. يمكننا القيام بالفكرة السابقة بسطر واحد فقط كالتالي: import os, os.path print len([name for name in os.listdir('.') if os.path.isfile(name)])
  14. حسب ما فهمته من سؤالك أنك تستخدم إضافة Form 7 التي تعمل على ووردبريس لإنشاء استمارة اتصال لكن المرفقات لا تصل إليك عند إرسالها، وتوجد عدة حلول لهذه المشكلة: تأكد من أن مجلدي wp-content/uploads وwpcf7_uploads يملكان صلاحيات الكتابة فيهما. حاول أن تعطل جميع الإضافات الأخرى والانتقال إلى الثيم الافتراضي. تأكد من الإعدادات مرة أخرى. اتصل بمضيف خادمك وتأكد أنه مسموح لك بإرسال الرسائل مع مرفقات عن طريق نموذج بريد php.
  15. توجد عدة طرق لفعل ذلك في بايثون، فيمكنك على سبيل المثال استخدام هذه الطريقة التي تعتمد على دالة all وحلقة تكرار for لإرجاع قيمة منطقية: >>> x = [1, 1, 1, 1, 1, 1] >>> all(el==1 for el in x) True أو بما أن جميع عناصر القائمة تتكون من 1 و0 فيمكنك استخدام all مباشرة دون حلقة التكرار كالتالي: >>> x = [1, 0, 1, 1, 1, 0] >>> all(x) False أو يمكنك استخدام دالة set مع دوال list() أو tuple لإنجاز ما تريده: list(set(x)) == [1] tuple(set(x)) == (1,)
  16. توجد عدة طرق في لغة بايثون لفعل ذلك أسهلها استخدام التعليمة with مع دالة read() لقراءة الملف ودالة splitlines() لفصل السطور كل سطر في عنصر منفصل كما في المثال التالي (التقسيم حسب رمز /n الموجود في نهاية السطر): with open('file.txt') as f: lines = f.read().splitlines() أو يمكنك فعل ذلك في سطر واحد فقط عن طريق استخدام طريقة تفهيم القائمة واستخدام دالة strip للتقسيم مع حلقة التكرار for كالتالي: data = [line.strip() for line in open("file.txt", 'r')]
  17. توجد عدة خيارات لتشغيل تطبيقات بايثون على أنظمة أندرويد وiOS في نفس الوقت، فيمكنك على سبيل المثال استخدام إطار kivy وهو إطار بايثون يدعم عدة أنظمة مثل أندرويد ولينكس وماك وiOS وغيرها. أما لو أردت خيار آخر فيمكنك استخدام ASE (Android Scripting Environment) والتي تسمح لك بتشغيل لغات البرمجة السكربتية على أندرويد. بالنسبة لأنظمة iOS فالأمر سيكون معقد نوعا ما.
  18. إذا كنت تشغّل شيفرتك البرمجية وتحصل على رسالة خطأ بسبب حرف خاص(error on the special character)، فتوجد عدة حلول لحل هذه المشكلة8، فيمكنك تمرير UTF-8 إلى دالة فتح الملف مع حرف الكتابة w كما في المثال التالي: File.open("file.txt", "w:UTF-8") do |f| f.write "smth here" end أما بالنسبة للقراءة من ملفات بترميز UTF-8 فيمكنك فعل فس الشيء مع حرف القراءة r كما في المثال التالي: File.open("file.txt", "r:UTF-8") do |f| puts f.read end
  19. توجد طريقة سهلة لفعل ذلك، فيمكنك على سبيل المثال استخدام دالة sorted() التي سترتب السلسلة النصية وسترجع لك قائمة بالحروف المرتبة كما في المثال التالي: >>> b = sorted(a) >>> print b ['A', 'C', 'E', 'Z'] ولتحويل القائمة السابقة إلى سلسلة نصية مرة أخرى يمكنك استخدام دالة join كما في المثال التالي: >>> c = ''.join(b) >>> print c 'ACEZ' ويمكنك دمج الدالتين السابقتين في سطر واحد فقط كما في المثال التالي: >>> ''.join(sorted(a)) 'ACEZ'
  20. توجد عدة مكتبات أخرى يمكنك استخدامها في بايثون، فيمكنك على سبيل المثال استخدام مكتبة Tkinter وبالضبط دالة askopenfilename() التي سترجع لك مسار الملف كما في المثال التالي بالنسبة لمستخدمي بايثون 2: from Tkinter import Tk from tkFileDialog import askopenfilename Tk().withdraw() filename = askopenfilename() print(filename) أما لو كنت تستخدم الإصدار الثالث من بايثون، فلقد تغيرت المكتبة قليلا: from tkinter.filedialog import askopenfilename filename = askopenfilename() كما يمكنك استخدام مكتبة EasyGui لكنك تحتاج إلى تثبيتها: import easygui print easygui.fileopenbox()
  21. توجد عدة طرق لفعل ذلك في ريلز، فإذا أردت الحصول على جملة كهذه (دون th): June 14, 2010 فيمكنك ببساطة استخدام تابع strftime ومن ثم تمرير الصياغة التي تريد عرضها كما في المثال التالي: @date.strftime("%B %d, %Y") أما لو رغبت في الحصول على ما تريده بالضبط (موجود th مع اليوم) فيمكنك في هذه الحالة استخدام تابع day.ordinalize في موقع اليوم مع الطريقة السابقة لتصبح كالتالي: @date.strftime("%B #{@date.day.ordinalize}, %Y")
  22. توجد عدة طرق لفعل ذلك على لينكس، فإذا أردت استخدام أوامر لينكس على بايثون فيمكنك استخدام عدة دوال لفعل ذلك كما في المثال التالي: >>> import subprocess, signal >>> p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE) >>> out, err = p.communicate() >>> for line in out.splitlines(): ... if 'firefox' in line: ... pid = int(line.split(None, 1)[0]) ... os.kill(pid, signal.SIGKILL) ... أما لو أردت استخدام طريقة بايثونية لفعل ذلك فيمكنك استخدام دوال وحدة psutil حيث سندور في قائمة العمليات باستخدام جملة التكرار for مع دالة process_iter من وحدة psutil وسنبحث عن العملية المطلوبة فإذا وجدناها فسنحذفها: import psutil PROCNAME = "python.exe" for proc in psutil.process_iter(): # check whether the process name matches if proc.name() == PROCNAME: proc.kill()
  23. سبب المشكلة أنك تستخدم العامل الرياضي الخطأ، فالجملة الشرطية التي كتبتها يجب أن تكون مشابه لهذه: if number >= 1000 and number <= 2200 أضف إلى ذلك أنه توجد طرق أخرى أفضل لفعل ذلك في بايثون فيمكنك على سبيل المثال استخدام هذه الطريقة: if 1000 <= number <= 2200: أو يمكنك أيضا استخدام دالة range() لإنشاء مدى معين واختبار العدد عليه كالتالي: >>> r= range(1000,2201) >>> 1330 in r True
  24. لا يمكنك فعل ذلك لأسباب أمنية عديدة إلا إذا قمت بطلب ذلك من المستخدم أي طلب الحصول على رقم Serial الخاص به وهذا الأمر سيزعج الزوار كثيرا ولن يجعلهم يثقون في موقعك. بالنسبة للشيفرة البرمجية التي كتبتها فهي تعمل فقط على خادمك المحلي، أي أنك ستحصل على سريال الخاص بجهازك.
  25. لا يمكنك بساطة نسخ ملف MDF إلى مستضيف مشترك (في أغلب الأحيان) لأن ملف MDF قد يشير إلى مكان فيزيائي (physical location) قد لا يتواجد في الخادم الذي يستضيف قاعدة بياناتك. أما إذا رغبت بالتحويل، فيجب عليك القيام بهذه الخطوات للتحويل: الاتصال بخادمك المحلي. إنشاء قاعدة بيانات جديدة. تشغيل سكربت .sql عليه. فصل تلك تلك قاعدة البيانات. وبعد ذلك يمكنك نسخ ملف .mdf من مجلد بيانات خادم SQL.
×
×
  • أضف...