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

هشام رزق الله

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

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

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

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

    31

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

  1. يوجد العديد من الطرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال تحويل المتغير إلى قائمة عن طريق وضعه بين معقفين ومن ثم استخدام عامل الجمع + كما في الطريقة التي استخدمتها كالتالي: >>> a = 5 >>> li = [1, 2, 3] >>> [a] + li # Don't use 'list' as variable name. [5, 1, 2, 3] أو يمكنك استخدام دالة insert حيث أنك ستمرر لها الموقع (والموقع الأول هو صفر) والمتغير الذي يحتوي على العدد الصحيح كالتالي: >>>var=7 >>>array = [1,2,3,4,5,6] >>>array.insert(0,var) >>>array [7, 1, 2, 3, 4, 5, 6] ومن الطرق الأخرى أيضا نذكر هذه الطريقة: list[0:0] = [a]
  2. توجد طريقة قصيرة وسهلة لفعل ذلك في لغة بايثون وذلك عن طريق استخدام دالة all() مع رمز المقارنة == كالتالي: (A==B).all() لكن لهذه الطريقة عدة عيوب، فمثلا في حالة كان A أو B فارغا وكان الآخر يحتوي على عنصر فإن الدالة ستُرجع True لأن مقارنة A==B سترجع مصفوفة فارغة ولذلك فإن دالة all() ستُرجع True. يذكر أنه يوجد عدة دوال مدمجة أخرى يمكنك استخدامها مثل array_equal و allclose و array_equiv وغيرها.
  3. يمكنك فعل ذلك بعدة طرق في لغة بايثون، فيمكنك على سبيل المثال استخدام دوال LooseVersion وstrictVersion من وحدة distutils.version وبعدها تقوم بعملية المقارنة المعتادة وسيتم إرجاع قيمة منطقية (True/False) كما في المثال التالي: >>> from distutils.version import LooseVersion, StrictVersion >>> LooseVersion("2.3.1") < LooseVersion("10.1.2") True >>> StrictVersion("2.3.1") < StrictVersion("10.1.2") True >>> StrictVersion("1.3.a4") Traceback (most recent call last): ... ValueError: invalid version number '1.3.a4' أو يمكنك تحويل أعداد الإصدارات إلى tuple عن طريق استخدام حلقة التكرار map بالإضافة إلى دوال split و int ومن ثم تقوم بعملية المقارنة كما في المثال التالي: def versiontuple(v): return tuple(map(int, (v.split(".")))) >>> versiontuple("2.3.1") > versiontuple("10.1.1") False
  4. تُعتبر هذه الشهادة من أشهر الشهادات في العالم في اختصاص الحماية الإلكترونية، فهي تتطلب خبرة سنتين في الحماية وفي إدارة الأنظمة والشبكات بالإضافة إلى أنه يجب على المترشح لهذه الشهادة أن يكون قد حصل بالفعل على شهادة network+ سابقا. تبلغ تكلفة هذه الشهادة 302$. الكثير من الشركات في العالم تنصح بهذه الشهادة، لذلك أنصحك أن أيضا أن تجتاز هذه الشهادة لأنها ستكون إضافة رائعة لأي شخص يود احتراف أو العمل ضمن مجال الحماية.
  5. يوجد طرق عديد لفعل ذلك في روبي، فيمكنك على سبيل المثال استخدام each_line do حيث ستضع بها ما تريد من أوامر للتعامل مع السطر line كما في المثال التالي: str.each_line do |line| #do something with line end أو يمكنك فصل السلسلة النصية إلى أجزاء حسب رمز نهاية السطر عن طريق استخدام دالة split واستخدام حلقة تكرار each معها كما في المثال التالي: str.split(/\r?\n|\r/).each { |line| … }
  6. يوجد العديد من الطرق لفعل ذلك في بايثون، فيمكنك على سبيل المثال استخدام التعابير النمطية لحذف جميع الرموز والبحث عن الفراغات واستبدالها بخطوط كالتالي: def urlify(s): # Remove all non-word characters (everything except numbers and letters) s = re.sub(r"[^\w\s]", '', s) # Replace all runs of whitespace with a single dash s = re.sub(r"\s+", '-', s) return s # Prints: I-cant-get-no-satisfaction" print urlify("I can't get no satisfaction!")أو يمكنك استخدام دالة replace بكل سهولة للاستبدال داخل السلسلة النصية كما في المثال التالي: mystring.replace (" ", "_") وبما أنك ذكرت أنك تستخدم دجانغو، فيمكنك استخدام دالة slugify والتي تُستخدم خصيصا لتحويل السلاسل النصية إلى شكل يُستخدم للروابط كالتالي: >>> from django.template.defaultfilters import slugify >>> slugify("This should be connected") this-should-be-connected
  7. ستجد في بايثون عدّة أساليب لفعل ذلك، فإذا كنت تستعمل الإصدار الثاني من بايثون فيمكنك استخدام دوال maketrans وtranslate وغيرها من وحدة string للحذف كالتالي: >>> x='aaa12333bb445bb54b5b52' >>> import string >>> all=string.maketrans('','') >>> nodigs=all.translate(all, string.digits) >>> x.translate(all, nodigs) '1233344554552' >>> أو يمكنك استخدام التعابير النمطية عن طريق استخدام الرمز \D لمطابقة جميع الأحرف غير رقمية وسوف نستبدلها بسلسلة نصية فارغة كما في المثال التالي: >>> import re >>> re.sub("\D", "", "aas30dsa20") '3020' أو يمكنك استخدام دالة filter مع lambda كما في المثال التالي (بالنسبة للإصدار 2 من بايثون): >>> filter(lambda x: x.isdigit(), "aas30dsa20") '3020' أو عن طريق استخدام السطر التالي إذا كنت تستعمل الإصدار 3 من بايثون: >>> ''.join(filter(lambda x: x.isdigit(), "aas30dsa20")) '3020'
  8. نعم، يوجد العديد من الطرق لفعل ذلك إذ يمكنك مثلا استخدام دالة .iteritems() بدلا من .items() إذا كنت تستخدم الإصدار الثاني من بايثون وكان متغير points يمتلك الكثير من المدخلات، وإلى جانبها ستحتاج إلى دوال dict وall بالإضافة إلى حلقة التكرار for للدوران حول القاموس وجملة شرطية if لوضع الشرط، كما في المثال التالي: dict((k, v) for k, v in points.items() if all(x < 5 for x in v)) كما يمكنك الاستغناء عن دوال dict وall إذا كنت تستخدم الإصدار 2.7 من بايثون لتصبح الشيفرة البرمجية كهذه: {k: v for k, v in points.iteritems() if v[0] < 5 and v[1] < 5}
  9. يوجد عدة شهادات للبرمجة باستخدام Objective-C، فـ Brain Measures توفر لك برنامج شهادة بتكلفة 10$ فقط. يحتوي الاختبار على 40 سؤال متعدد الاختيارات حيث أن لكل سؤال خيارين أو أكثر، وتشمل الأسئلة عدة مواضيع والتي من بينها الاستثناءات وإدارة الذاكرة والبروتوكولات وغيرها. أنصحك أيضا بالإطلاع على Expert Rating فهي توفر اختبارا مشابها للاختبار السابق.
  10. يوجد الكثير من الطرق في لغة روبي لفعل ذلك، لكن لو كنت تستخدم نظام لينكس فيمكنك استخدام أمر النظام tail لفعل ذلك بكل سهول كما في المثال التالي (لاحظ أننا وضعنا النتيجة في متغير): last_25_lines = `tail -n 25 whatever.txt` وفي حالة لم يكن الملف كبيرا جدا ولا تحتاج إلى تجنب عملية قراءة كامل الملف فيمكنك في هذه الحالة استخدام تابع readlines من مكتبة IO كما في المثال التالي: IO.readlines("file.log")[-25..-1]
  11. يوجد العديد من الطرق لفعل ذلك في بايثون، فيمكنك على سبيل المثال استخدام دوال max و index في سطر واحد فقط في حالة ما ردت الحصول على موقع أو تكرار لأكبر عنصر في القائمة كما في المثال التالي: a.index(max(a)) أو يمكنك استعمال حلقة التكرار for مع دالة enumerate كما في المثال التالي للحصول على قائمة تحتوي على مواقع جميع التكرارات لأكبر عنصر كالتالي: >>> m = max(a) >>> [i for i, j in enumerate(a) if j == m] [9, 12]
  12. يوجد العديد من الطرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال استعمال طريقة حلقة التكرار for واستعمال كائن الملف كمُكرر كالتالي: for line in open("log.txt"): do_something_with(line) أو يمكنك فعل ذلك بطريقة أكثر احترافية عن طريق استخدام تعليمة with وفتح الملف كمتغير ومن ثم استعمال حلقة التكرار for كما في المثال السابق، وتتميز هذه الطريقة بأنها تغلق الملف بشكل تلقائي عند الانتهاء من التكرار: with open("log.txt") as fileobject: for line in fileobject: do_something_with(line)
  13. سندور حول القيم المحصورة بين القيمتين التي قدمها لنا المستخدم لكن في البداية سننشئ دالة لاختبار الأرقام التي سندور عليها فإذا كان العدد يساوي صفر فسيتم إرجاع 0 وإذا كان 1 فسيتم إرجاع 1 وفي حالة كان العدد غير الرقمين السابقين فإن الدالة ستقوم بعملية F(n-1)+F(n-2) كما تظهر في المثال التالي: def F(n): if n == 0: return 0 elif n == 1: return 1 else: return F(n-1)+F(n-2) وكما قلنا سابقا بأننا نريد حصر القيم بين العددين الذي قدمها لنا المستخدم ولذلك سننشئ دالة أخرى للدوران والحصر كما في المثال التالي: def SubFib(startNumber, endNumber): for cur in F(): if cur > endNumber: return if cur >= startNumber: yield cur for i in SubFib(10, 200): print i
  14. جيد أنك تعرف كيف ترفع الملفات إلى الخادم وبهذا سنتجاوز الخطوة الأولى إلى الخطوة الثانية وهي عرض الفيديو، وتعتبر هذه الخطوة الأصعب، لذلك أنصحك بإنشاء عارض الفيديو باستخدام لغة HTML5 بدلا من Flashplayer لأنها الأسهل والأضمن، فأبسط مثال يمكنك استخدامه لإنشاء قارئ فيديوات باستخدام هذه اللغة هو التالي: <video width="320" height="240" autoplay> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> Your browser does not support the video tag. </video> أما لو أردت استخدام تقنية flashplayer لإنشاء عارض الفيديوات فأنصحك بالإطلاع على هذه الدورة التي ستساعدك على فعل ذلك.
  15. هنالك عدّة شهادات عالمية في مجال تطوير الويب والبرمجة باستخدام الجافا سكربت يمكنك الحصول عليها، فمثلا تحتوي سلسلة CIW Web Development Series على ثلاثة امتحانات متخصصة في مجال تطوير الويب والتي ستتمكن بعد اجتيازها من الحصول على لقب مطوّر ويب محترف، وبالإضافة إلى جافا سكربت يجب عليك تعلم بيرل وتصميم قواعد البيانات لاجتياز الامتحانات الثلاثة. كما يمكنك اجتياز امتحان W3School والحصول على شهادة مبرمج جافا سكربت وتتطلب هذه الشهادة معرفة بالـ HTML وتحتوي على 70 سؤال يجب الإجابة عليها في 70 دقيقة ويجب أن تحصل على درجة 75% لتضمن الشهادة.
  16. جميع الطرق لفعل ذلك تشترك في أنه يجب عكس محتويات tuple عن طريق إحدى حلقات التكرار ومن ثم استخدام dict للتحويل إلى قاموس، فمثلا استخدمنا في مثالنا هذا حلقة تكرار for للدوران حول جميع عناصر tuple وعكس محتويات كل عنصر: >>> t = ((1, 'a'),(2, 'b')) >>> dict((y, x) for x, y in t) {'a': 1, 'b': 2} أما في مثالنا التالي فقد قمنا باستخدام حلقة التكرار map ودالة reversed لعكس المحتويات قبل أن نحولها إلى dict: >>> t = ((1, 'a'),(2, 'b')) >>> dict(map(reversed, t)) {'a': 1, 'b': 2} هنالك طرق أخرى، لكن هذه الأقصر والأبسط حيث أنها تتكون من سطر واحد فقط.
  17. يوجد العديد من الطرق في بايثون لفعل ذلك، فيمكنك على سبيل المثال استخدام أوامر الأنظمة مع وحدة subprocess بدلا من os.system (حتى لا تواجه أية مشاكل مع تهريب الشيل -shell escaping-) واستخدام دوال name و startwith من وحدة os وcall وplatform.startwith من وحدتي subprocess وsys كما يظهر في المثال التالي الذي سنمرر له مسار الملف الموجود في متغير filepath وسيفتحه باستخدام البرنامج الافتراضي: import subprocess, os if sys.platform.startswith('darwin'): subprocess.call(('open', filepath)) elif os.name == 'nt': os.startfile(filepath) elif os.name == 'posix': subprocess.call(('xdg-open', filepath))
  18. في الإصدار الجديد من بايثون أصبحت xrange هي range أي أن دالة xrange موجودة في بايثون 3 لكن باسم range وستلاحظ أنها أصبحت أبطئ بنسبة 30% تقريبا مما كانت عليه في الإصدار الثاني. إذا أردت كتابة شيفرة برمجية تعمل على إصداري بايثون 2 و3 فيمكنك استخدام طريقة try … except NameError كما في المثال التالي: try: xrange except NameError: xrange = range
  19. يوجد العديد من الدورات والشهادات المختلفة لاحتراف ريلز في الكثير من بلدان العالم، لكن من أشهر هذه الشهادات " Ruby Association Certified Ruby Programmer Silver” والتي ستساعدك على معرفة قدراتك في البرمجة باستخدام إطار روبي اون ريلز كما أن هذه الشهادة معترف بها من قبل Ruby Association LLC. وامتحان هذه الشهادة لا يغطي فقط استخدام روبي اون ريلز بل يغطي أيضا أساسيات روبي بما في ذلك المكتبات القياسية والأصناف والكائنات... ويحتوي هذا الامتحان على 50 سؤال متعدد الاختيارات يجب حلها في ساعة ونصف ويكلف 150$.
  20. يمكنك فعل ذلك بطرق متعددة في روبي، فيمثلا يمكنك تحويل التاريخ الذي حصلت عليه من المستخدم إلى وقت عن طريق استخدام تابع to_time ومن ثم تحذف عدد الساعات المطلوبة وفي النهاية تحوّل الوقت مرة أخرى إلى كائن datetime عن طريق استعمال تابع to_datetime كما في المثال التالي: adjusted_datetime = (datetime_from_form.to_time - n.hours).to_datetime وهنالك طريقة أخرى أبسط مثل يمكنك استخدام هذه الطريقة التي استعملنا فيها تابع advance كما في المثال التالي: adjusted = time_from_form.advance(:hours => -n)
  21. يوجد الكثير من الطرق لفعل ذلك في بايثون، فحسب التوثيق الرسمي، يُنصح باستخدام صنف Formatter: ولتغيير هذه القيم الافتراضية سنستخدم هذا الصنف وسنغير السطر التالي: # create formatter formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s") إلى التالي ليقوم بالمطلوب: # create formatter formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s", "%Y-%m-%d %H:%M:%S") إذا كنت تستخدم logging.config.fileConfig مع ملف التهيئة فيمكنك التعديل عليها كالتالي: [formatter_simpleFormatter] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s datefmt=%Y-%m-%d %H:%M:%S
  22. لدالة eval فائدة كبيرة في لغة بايثون فهي تترجم السلسلة النصية كشيفرة برمجية ومع ذلك فإن الكثير من المبرمجين يحذرون من استخدام هذه الدالة لأن المستخدم يمكنه استخدام هذه الدالة لتنفيذ أوامر لنظام الحاسوب، فمثلا لو استعملت السطر eval(input()) وقد قمت في وقت سابق باستدعاء وحدة os في برنامجك، فيمكن لأي شخص أن يكتب os.system('rm -R *') والذي سيحذف جميع الملفات الموجودة في مجلد المنزل (إذا افترضنا أنك على أحد أنظمة يونكس)، لذلك تجنب استخدامها قدر المستطاع.
  23. يوجد في بايثون عدة طرق لفعل ذلك، فإذا كنت تملك قيمة datetime.timedelta في متغير td فإن td.days ستعطيك عدد الأيام، وأما بالنسبة إلى الساعات والدقائق فإن صياغة timedelta تحتوي على عدد الثواني لوقت معين ولذلك سنقوم ببعض العمليات الحسابية البسيطة للحصول على قيمتها. هذه الدالة البسيطة ستقوم بكل ما شرحناه: def days_hours_minutes(td): return td.days, td.seconds//3600, (td.seconds//60)%60 أو يمكنك استخدام العوامل الرياضية div وmod للحصول على المطلوب كما في المثال التالي: hours, remainder = divmod(td.seconds, 3600) minutes, seconds = divmod(remainder, 60)
  24. يوجد في الروبي طرق عديدة لفعل ذلك، فيمكنك على سبيل المثال تمرير الحد الذي ترغب به إلى تابع take المدمج وسيقوم بالمهمة كما في المثال التالي: ['one','two','three'].take(2) أو يمكنك استخدام تابع first الذي سيرجع قائمة طولها عدد أولى العناصر التي تريدها كما يظهر في المثال التالي: ['one','two','three'].first(2) => ['one', 'two'] كما يمكنك استخدام slice! حيث ستمرر له من أين يبدأ وينتهي كما في المثال التالي: irb(main):001:0> [1,2,3,4,5].slice! 0,4 => [1, 2, 3, 4] المصدر
×
×
  • أضف...