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

هشام رزق الله

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

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

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

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

    31

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

  1. يوجد عدة طرق في بايثون للتأكد من ذلك، وأسهل هذه الطرق هي عن طريق استخدام دالة isabs من وحدة os.path حيث أن هذه الدالة سترجع True إذا كان المسار مطلق (أي يبدأ بـ / في أنظمة يونكس أو C: في نظام ويندوز) وستُرجع لك False عكس ذلك، وهذه الدالة تعمل على جميع الأنظمة ويمكنك استخدامها بسهولة كما في المثال التالي: os.path.isabs(my_path)
  2. يوجد عدة طرق في لغة بايثون لفعل ذلك، فإذا كنت تستخدم الإصدار الثاني من بايثون حاول جعل السلسلة النصية الخاصة بالتعابير النمطية كسلسلة نصية تكون فيها unicode مهربة مع 'u' كما في المثال التالي: re.sub(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', '', ...) ومن الطرق الأخرى أيضا يمكنك استخدام re.UNICODE لتحديد نوع التغيير الذي تريده مع دالة compile من مكتبة re كما في الأمثلة التالية: >>> myre = re.compile(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', re.UNICODE) >>> myre <_sre.SRE_Pattern object at 0xb20b378> >>> mystr = u'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ' >>> result = myre.sub('', mystr) >>> len(mystr), len(result) (38, 22) >>> print result بسم الله الرحمن الرحيم
  3. إن شهادة ACE (Adobe Certified Expert (ACE) for Developers) تختبر قدرات المطور على بناء وإصلاح التطبيقات المبنية على أدوات Adobe وعلى منصاتها و تطبيقات واجهتها البرمجية (API). إن هذه الشهادة تتكون من عدة شهادات وهي: ACE LiveCycle ES2 Developer ACE LiveCycle ES2 RIA Developer ACE Live Cycle ES2 Form Developer ACE LiveCycle ES2 Solution Architect ACE Flex Developerوكل شهادة تتكون من امتحان أو امتحانين وتبلغ كلفة الامتحان الواحد ما بين 55$-150$. للمزيد من المعلومات حول امتحانات هذه الشهادة: الموقع الرسمي
  4. يوجد العديد من الطرق لفعل ذلك في روبي، فيمكنك على سبيل المثال تمرير مجموعة من المحددات إلى تابع split وذلك عن طريق وضعها بين معقفين كما في المثال التالي: word = "Now is the,time for'all good people" word.split(/[\s,']/) => ["Now", "is", "the", "time", "for", "all", "good", "people"] أو يمكنك استخدام تابع scan بكل بساطة وتمرير w+ حيث يفصل السلسلة النصية حسب النقاط والفواصل والفراغات وغيرها كما في المثال التالي: word = "Now is the,time for'all good people" word.scan(/\w+/) # => ["Now", "is", "the", "time", "for", "all", "good", "people"]
  5. يوجد عدة طرق في لغة بايثون لفعل ذلك، وأسهلها هو استخدام مكتبة PyEnchant، والتي تأتي بعدّة قواميس وبلغات مختلفة مثل (en_GB, en_US, de_DE, fr_FR) حيث يجب عليك في البداية أن تختار القاموس المناسب ومن ثم يمكنك التأكد من وجوده في القاموس أو لا عن طريق دالة check() أو يمكنك الحصول على مقترحات للكلمة عن طريق دالة suggest() كما في الأمثلة التالية: >>> import enchant >>> d = enchant.Dict("en_US") >>> d.check("Hello") True >>> d.check("Helo") False >>> d.suggest("Helo") ['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"] >>>
  6. يوجد عدة طرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال استخدام دالة chain من وحدة itertools ومن ثم تمرير المتكررين كما في المثال التالي: from itertools import chain for line in chain(file1, file2): pass ويمكنك أيضا فعل نفس الشيء عن طريق استخدام دالة input من مكتبة fileinput كما في المثال التالي: import fileinput for line in fileinput.input(['file1', 'file2']): pass ويمكنك فعل ذلك أيضا عن طريق كتابة "مولد تعبير" بسيط كما في المثال التالي: for line in (l for f in (file1, file2) for l in f): # do something with line حيث أن بهذه الطريقة ستتمكن من وضع شرط معين على التعبير كالتالي: for line in (l for f in (file1, file2) for l in f if 'text' in l): # do something with line which contains 'text'
  7. يوجد عدة طرق في لغة بايثون لفعل ذلك، لكن يجب عليك أولا التأكد من عدم وجود ذلك المجلد وذلك عن طريق دالة path.exists() من وحدة os المدمجة حيث ستمرر لها مسار المجلد ومن ثم تستخدم دالة makedirs() من نفس الوحدة لإنشاء هذا المجلد وذلك عن طريق تمرير مسار المجلد (بما في ذلك اسمه) كما في المثال التالي: newpath = r'C:\Program Files\arbitrary' if not os.path.exists(newpath): os.makedirs(newpath)
  8. يوجد عدة طرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال استخدام دالة enumerate مع حلقة التكرار for والجملة الشرطية if لفعل ذلك بكل سهولة كما في المثال التالي: items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for index, item in enumerate(items): if not (item % 2): items[index] = None أما لو أردت الحل بسطر واحد فقط وبطريقة أسهل عند القراءة فيمكنك في هذه الحالة كتابة سطر مشابه لهذا: new_items = [x if x % 2 else None for x in items]
  9. يوجد الكثير من الطرق في روبي لفعل ذلك، فيمكنك على سبيل المثال استخدام توابع split وjoin كما في المثال التالي: >> str = "foo bar bar baaar" => "foo bar bar baaar" >> str.split.join(" ") => "foo bar bar baaar" >> أو يمكنك فعل ذلك بسطر واحد وبدالة squeeze فقط كما هنا: irb> "asd asd asd asd".squeeze(" ") => "asd asd asd asd" أو حتى عن طريق دالة squish، انظر المثال التالي: >> "foo bar bar baaar".squish => "foo bar bar baaar" كما يمكنك استخدام التعابير النمطية عن طريق تابع gsub: "foo bar \nfoobar".gsub(/ +/, ' ') => "foo bar \nfoobar"
  10. يوجد العديد من الطرق لفعل ذلك في دجانغو، فيمكنك على سبيل المثال استخدام تابع .quantize() والذي سيحوّل قيمة العدد إلى الأقرب حسب الأرقام بعد الفاصل مع دالة Decimal من وحدة decimal كما في المثال التالي: >>> from decimal import Decimal >>> Decimal("12.234").quantize(Decimal("0.00")) Decimal("12.23") أو يمكنك تغيير صيغة العدد لتحويله إلى عدد برقمين بعد الفاصل كما في المثال التالي: pricestr = "%01.2f" % price
  11. نعم، يوجد العديد من الطرق لفعل ذلك، فيمكنك على سبيل المثال استخدام دالة monthrange من وحدة calendar ومن ثم تمرير السنة والشهر وسيتم إرجاع tuple يحتوي على عدد الأيام كما في المثال التالي: >>> from calendar import monthrange >>> monthrange(2011, 2) (1, 28) كما يمكنك القيام بعملية طرح بسيطة من أول يوم من الشهر الموالي للشهر الذي ترغب بمعرفة عدد أيامه مع الشهر الذي تريده باستخدام عدة دوال مثل date و days كما في المثال التالي: >>> from datetime import date >>> (date(2012, 3, 1) - date(2012, 2, 1)).days 29
  12. يوجد عدة طرق في إطار دجانغو لفعل ذلك، فيمكنك الوصول إلى المجموعات التي ينتمي إليها مستخدم معين بكل سهولة عن طريق سمة groups للمستخدم كما يظهر في المثال التالي: >>> from django.contrib.auth.models import User, Group >>> group = Group(name="Editor") >>> group.save() # save this new group for this example >>> user = User.objects.get(pk=1) # assuming, there is one initial user >>> user.groups.add(group) # user is now in the "Editor" group >>> user.groups.all() [<Group: Editor>] ومن الطرق الأخرى أيضا يمكنك تطبيق تابع filter إلى user.groups واستخدام دالة exists() للتأكد من وجوده كما في المثال التالي: def is_member(user): return user.groups.filter(name='Member').exists() وإذا أردت التأكد من وجود مستخدم معين في أكثر من مجموعة، فيمكنك في هذه الحالة استخدام عامل __in كالتالي: def is_in_multiple_groups(user): return user.groups.filter(name__in=['group1', 'group2']).exists()
  13. هذه الشهادة مخصص لتطوير المعارف الأمنية للمبرمجين والمطورين وخبراء الأمن، حيث يجب أن تكون لديك معرفة في نقاط ضعف البرامج وطرق إصلاح الثغرات البرمجية الخطيرة الموجودة في التطبيقات والبرامج، وامتحان هذه الشهادة يتكون من 175 سؤال متعددة الاختيارات يجب حلها في ظرف 4 ساعات ودرجة الحصول على الشهادة هي 700/1000. تبلغ كلفة هذا الامتحان 549$. الموقع الرسمي للشهادة
  14. يوجد عدة طرق لفعل ذلك في بايثون، ومن أبسط وأسهل هذه الطرق يمكنك استخدام وحدة json فمثلا لو أردت تحويل القاموس إلى سلسلة نصية فيمكنك استخدام دالة dumps كما في المثال التالي: input = json.dumps({'id': id }) أما لو أردت الحصول على قاموس من سلسلة نصية ففي هذه الحالة يمكنك استخدام دالة loads من نفس الوحدة كالتالي: my_dict = json.loads(input) ويمكنك أيضا استخدام دالتي str و eval للتحويل إلى سلسلة نصية والعكس كما في الأمثلة التالية: dict1 = {'one':1, 'two':2, 'three': {'three.1': 3.1, 'three.2': 3.2 }} str1 = str(dict1) dict2 = eval(str1) print dict1==dict2
  15. يوجد عدة طرق لفعل ذلك في لغة بايثون، ولكن للآسف إن عملية الدوران حول عناصر السلسلة النصية بطيئة كثيرا، لذلك في الطريقة الأول التي سنستعملها سنستخدم التعابير النمطية مع دوال متعددة مثل join و map وسنحول السلسلة النصية إلى unicode لتسهيل وتسريع العملية ولأخذ فقط الأعداد والحروف وبعض الرموز من السلسلة النصية كما في المثال التالي: import unicodedata, re all_chars = (unichr(i) for i in xrange(0x110000)) control_chars = ''.join(c for c in all_chars if unicodedata.category(c) == 'Cc') # or equivalently and much more efficiently control_chars = ''.join(map(unichr, range(0,32) + range(127,160))) control_char_re = re.compile('[%s]' % re.escape(control_chars)) def remove_control_chars(s): return control_char_re.sub('', s)ومن الطرق الأخرى أيضا، يمكنك استخدام دالة printable من وحدة string للحصول على الحروف القابلة للطباعة و من ثم تستخدم filter وlambda لحذف الحروف غير قابلة للطباعة كالتالي: import string filtered_string = filter(lambda x: x in string.printable, myStr)
  16. يوجد عدة طرق في لغة بايثون للتحويل، فيمكنك على سبيل المثال استخدام دالة str() بكل بساطة للتحويل كما في المثال التالي: >>> a = u'hello' >>> a u'hello' >>> str(a) 'hello' أو يمكنك إعادة ترميز سلسلة unicode لتحويلها إلى سلسلة نصية بأي ترميز تريده مثل utf-8, latin-1 … لكنني أنصح باستخدام utf-8 كما في الأمثلة التالية: >>> u'hello world'.encode('utf-8') 'hello world' >>>> u'hellò world'.encode('utf-8') 'hell\xc3\xb2 world' >>> u'hellò world'.encode('latin-1') 'hell\xf2 world'توجد طرق أخرى لفعل ذلك لكن الطرق التي ذكرتها هي الأشهر والأسهل.
  17. يوجد العديد من الطرق لفعل ذلك، إذا أردت كتابة شيء يمكن قراءته بطريقة سهلة فيمكنك في هذه لحالة استخدام دوال squeeze و asarray كما في المثال التالي: A = np.squeeze(np.asarray(M)) كما يمكنك أيضا استخدام دالة reshape كما في هذا المثال لكنها أصعب عند القراءة: A = np.asarray(M).reshape(-1) كما أنه يوجد طرق أخرى متنوعة مثل استخدام دالة flatten كما في المثال التالي: result=np.array(M).flatten()
  18. نعم توجد عدة شهادات لمبرمجي لغات سي والسي بلس بلس والتي من أهمها: شهادة CLA: شهادة في البرمجة بلغة سي. شهادة CPA: شهادة في البرمجة بلغة سي بلس بلس. شهادة CPP: شهادة مبرمج محترف في البرمجة بلغة سي بلس بلس. ويحتوي كل امتحان على ما يقارب 55-65 سؤال يجب الإجابة عنها في 75 دقيقة، وتبلغ كلفة كل امتحان 295$ ويمكنك إعادة الامتحان لمرة واحدة فقط مجانا في حالة رسوبك فيه. للمزيد من المعلومات حول هذه الامتحانات يمكنك الإطلاع على موقع معهد سي بلس بلس.
  19. يوجد عدة طرق في لغة روبي لفعل ذلك، فيمكنك على سبيل المثال استخدام group_by مع map وcount كما في المثال التالي: >> res=Hash[a.group_by {|x| x}.map {|k,v| [k,v.count]}] => {"cat"=>1, "dog"=>1, "fish"=>2} أو يمكنك استخدام تابع reduce مع Hash.new كما في المثال التالي: a2 = a.reduce(Hash.new(0)) { |a, b| a[b] += 1; a } => {"cat"=>1, "fish"=>2, "dog"=>1} ومن الطرق الأخرى أيضا يمكنك استخدام توابع uniq و each للتكرار وcount لحساب عدد تكرارات العنصر كالتالي: a2 = {} a.uniq.each{|e| a2[e]= a.count(e)}
  20. يوجد عدة طرق لفعل ذلك في بايثون، وأسهل هذه الطرق وأقصرها هي عن طريق استخدام دالة strftime لتساعدك عن صياغة التاريخ بالطريقة التي تريدها مثلا في هذا المثال استخدامنا صياغة شهر/يوم/سنة: t = datetime.datetime(2012, 2, 23, 0, 0) t.strftime('%m/%d/%Y') وسيُرجع لنا التالي: '02/23/2012' ويمكنك تغيير الصياغة إلى أية صياغة أخرى تريدها. ومن الطرق الأخرى للتحويل يمكنك استخدام هاتين الطريقتين كالتالي: >>> dt = datetime.datetime(2012, 2, 23, 0, 0) >>> '{0.month}/{0.day}/{0.year}'.format(dt) '2/23/2012' >>> '%s/%s/%s' % (dt.month, dt.day, dt.year) '2/23/2012'
  21. يوجد عدة طرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال فعل ذلك عن طريق استخدام سطر واحد فقط يحتوي على مجموعة من الدوال للفرز والحساب مثل sorted و range و len بالإضافة إلى lambda كما في المثال التالي: In [15]: myList = [1, 2, 3, 100, 5] In [16]: sorted(range(len(myList)),key=lambda x:myList[x]) Out[16]: [0, 1, 2, 4, 3]أو يمكنك الاستغناء عن lambda واستبدالها بـ __getitem__ لتصبح الشيفرة البرمجية النهائية كالتالي: sorted(range(len(myList)),key=myList.__getitem__) وإذا كنت تستخدم numpy() فيمكنك فعل ذلك ببساطة عن طريق استخدام دالة argsort() فهذه الدالة تُرجع معاملات التي ستفرز المصفوفة أو القائمة.
  22. يوجد عدة حلول لمشكلتك، وأبسط هذه الحلول هي عن طريق استخدام دوال وحدة datetime مثل timetuple وغيرها للتحويل كما في المثال التالي: day_of_year = datetime.now().timetuple().tm_yday أو يمكنك أيضا بكل بساطة استخدام دالة strftime كما في المثال التالي: >>> import datetime >>> today = datetime.datetime.now() >>> print today 2009-03-06 15:37:02.484000 >>> today.strftime('%j') '065' ملاحظة: إذا أردت القيام بعمليات حسابية أو مقارنة مع هذا الرقم فيجب عليك أولا أن تحوله إلى int() لأن دالة strftime() تُرجع سلسلة نصية. ويمكنك استخدام هذه العملية الحسابية للحصول على اليوم من السنة كما في المثال التالي: import datetime today = datetime.datetime.now() day_of_year = (today - datetime.datetime(today.year, 1, 1)).days + 1
  23. تعتمد هذه الشهادة على المعرفة في المجال الأمني، فالامتحان يتكون من 100 سؤال متعددة الاختيارات وتبلغ كلفته 400$ ويجب إجراء الامتحان من خلال الإنترنت من الموقع الرسمي للشهادة في زمن لا يتجاوز ساعتين ويتضمن الامتحان العديد من المواضيع مثل أساسيات نظام لينكس والثغرات الأساسية وتكنولوجيات الاختراق الحديثة والطرق المتقدمة لاكتشاف الثغرات وكيفيات جمع المعلومات والحقن في قواعد البيانات والشبكات وغيرها من المواضيع الهامة. الموقع الرسمي للشهادة
  24. يوجد عدة طرق في لغة بايثون لفعل ذلك، فإذا كنت تستخدم الإصدار 2.7 أو 3.1 من بايثون فيمكنك استعمال دالة Counter من وحدة collections كما في المثال التالي: >>> from collections import Counter >>> Counter(['apple','red','apple','red','red','pear']) Counter({'red': 3, 'apple': 2, 'pear': 1}) أو يمكنك استخدام هذه الطريقة (أطول قليلا من سابقتها) وذلك عن طريق استعمال دالة defaultdict من وحدة collections مع حلقة التكرار for كما في المثال التالي: >>> L = ['apple','red','apple','red','red','pear'] >>> from collections import defaultdict >>> d = defaultdict(int) >>> for i in L: ... d[i] += 1 >>> d defaultdict(<type 'int'>, {'pear': 1, 'apple': 2, 'red': 3}) وهذه طريقة أخرى لفعل ذلك: counts = dict() for i in items: counts[i] = counts.get(i, 0) + 1
  25. يوجد العديد من الطرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال استخدام مصفوفة month_name من وحدة calendar حيث نمرر رقم الشهر كموقع للمصفوفة وسترجع لنا اسم الشهر، وفي حالة تم تمرير 0 فسيتم إرجاع سلسلة نصية فارغة كما في المثال التالي: calendar.month_name[3] ويمكنك أيضا استخدام وحدة datetime لفعل نفس الشيء كما في الأمثلة التالية: import datetime monthineger = 4 month = datetime.date(1900, monthinteger, 1).strftime('%B') print monthوهذا المثال آخر: import datetime mydate = datetime.datetime.now() mydate.strftime("%B")
×
×
  • أضف...