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

المبرمج العربي

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

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

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

كل منشورات العضو المبرمج العربي

  1. يمكنك تقسيم المصفوفة إلى أجزاء متساوية بطرق عديدة في لغة روبي، فمثلا يمكنك استخدام تابع each_slice ومن ثم تمرير طول تقسيم المصفوفة حيث ستتمكن من تقسيمها بعدد عناصر محدد مثل 3، ولا تنسى أنه يجب عليك تحويل المصفوفة باستخدام تابع to_a أولا كما في المثال التالي: a = [0, 1, 2, 3, 4, 5, 6, 7] a.each_slice(3) # => #<Enumerator: [0, 1, 2, 3, 4, 5, 6, 7]:each_slice(3)> a.each_slice(3).to_a # => [[0, 1, 2], [3, 4, 5], [6, 7]] ويمكنك استخدام تابع in_groups حيث سيتم تقسيم المصفوفة إلى عدد معين من المصفوفات والذي تحدده أنت وإذا كان طول المصفوفة غير متساوي فيجب عليك فستكون المصفوفات غير متساوية كما تظهر في المثال التالي: a = [0,1,2,3,4,5,6] a.in_groups(2) # => [[0,1,2,3],[4,5,6,nil]] a.in_groups(3, false) # => [[0,1,2],[3,4], [5,6]]
  2. هنالك عدّة طرق في لغة روبي لتحويل مصفوفة متكونة من hash إلى hash، فيمكنك على سبيل المثال استخدام توابع reduce وnew كما في المثال التالي: a.reduce Hash.new, :merge وستكون النتيجة كالتالي: {:a=>:b, :c=>:d} ملاحظة: في حالات التداخل واختلاف الأطوال قد تحدث أخطاء عديدة لذلك سيكون الترتيب مهم وطول كل hash في المصفوفة كذلك، وإلا ستتداخل العناصر عند إنشاء hash كما يظهر في المثال التالي: [{a: :b}, {c: :d}, {e: :f, a: :g}].reduce Hash.new, :merge # {:a=>:g, :c=>:d, :e=>:f}
  3. هنالك طرق عديدة في لغة بايثون لترتيب عناصر القائمة بشكل عشوائي أهمها دالة shuffle من وحدة random الخاصة بالعشوائيات، حيث يكفي تمرير الدالة ليتم إعادة ترتيبها بشكل عشوائي كما يظهر في المثال التالي: >>> import random >>> x = [1, 2, 3, 4, 3, 4] >>> random.shuffle(x) >>> x [4, 4, 3, 1, 2, 3] >>> random.shuffle(x) >>> x [3, 4, 2, 1, 3, 4] كما يمكنك استخدام حلول أخرى تعتمد على وحدة random بالإضافة إلى دوال مدمجة مثل len و join وباستخدام حلقة التكرار for كما في الأمثلة التالية: ''.join([str(w) for w in random.sample(item, len(item))]) المصدر
  4. هنالك عدة طرق في لغة بايثون لإنشاء وتحميل ملف أرشيف مضغوط فيمكنك مثل استخدام دوال HttpResponse و FileWrapper من وحدة django لإنشاء الملف المضغوط ومن ثم استخدام رأسية Content-Disposition لتحميل الملف مباشرة كما في المثال التالي: from django.http import HttpResponse from django.core.servers.basehttp import FileWrapper # generate the file response = HttpResponse(FileWrapper(myfile.getvalue()), content_type='application/zip') response['Content-Disposition'] = 'attachment; filename=myfile.zip' return responseوإذا لم ترغب أن يكون الملف على القرص الصلب فستحتاج إلى استخدام دالة StringIO من وحدة cStringIO كما تظهر في المثال التالي: import cStringIO as StringIO myfile = StringIO.StringIO() while not_finished: # generate chunk myfile.write(chunk)
  5. يمكنك تعريف القيم المنطقية بطرق متعددة في لغة بايثون، فيمكنك على سبيل المثال استخدم تنسيق %r على الرغم من أنه ليست مخصصا للقيم المنطقية، مثال على استخدام %r: >>> print "%r, %r" % (True, False) True, False كما يمكنك استخدام %s للقيم المنطقية True False كما في المثال التالي لأن str(True هي 'True' و str(False) هي 'False': "%s %s" % (True, False) أما لو كانت القيم المنطقية 1 و 0 فيمكنك في هذه الحالة استخدام تنسيق %i لأن int(True) هو 1 وint(False) هو 0: "%i %i" % (True, False)
  6. هل هنالك طريقة أو دالة معينة في لغة بايثون للتأكد من البريد الإلكتروني الموجود في حقل النموذج (form input) باستخدام التعابير النمطية أو ما شابه ؟
  7. أريد دالة أو طريقة أمرر لها عدد صحيح (أصغر من 255 بالطبع) فترجع لي سلسلة نصية تحتوي على hex ّذلك العدد، فمثلا لو قمت بتمرير 65 فسترجع لي '\x41' فكيف أستطيع فعل ذلك في بايثون؟
  8. أريد أن أنسق سلسلة نصية باستخدام قاموس في بايثون 3، فما هي أسهل طريقة لفعل ذلك؟ أريد شيء مشابه لهذا (المثال الأول): # Fails, KeyError 'latitude' geopoint = {'latitude':41.123,'longitude':71.091} print '{latitude} {longitude}'.format(geopoint) # Succeeds print '{latitude} {longitude}'.format(latitude=41.123,longitude=71.091)
  9. أستطيع تمثيل تابع لصنف معين على طريق كتابة الأسطر الثلاثة التالية: class << self alias :generate :new end لكن هل توجد طريقة أقصر للقيام بذلك؟ طريقة متكونة من سطر واحد فقط؟
  10. أريد معرفة الفرق بين الإضافات (plugins) وبين gems في لغة روبي، فما الفرق بين هذين المصطلحين؟ أليست gems هي الإضافات؟
  11. أملك مصفوفة من hashes وأريد فرز المصفوفة أول بـ hash الذي يدعى “foo” وبعد ذلك بـ “bab” بعد بحث طويل وجدت هذا الحل: a.sort_by {|h| [ h['foo'],h['bab'] ]} لكن عند تجربته أحصل على خطأ من نوعا "comparison of Array with Array failed” فما السبب؟
  12. أحتاج إلى كتابة برنامج يتعامل مع الملفات من حذف ونقل وتعديل لكنني لم أعرف كيف أغيّر اسم ملف معين عن طريق لغة روبي لإضافتها إلى برنامجي فكيف أستطيع فعل ذلك؟ هذه الطريقة التي استخدمتها: puts "Renaming files..." folder_path = "/home/papuccino1/Desktop/Test" Dir.glob(folder_path + "/*").sort.each do |f| filename = File.basename(f, File.extname(f)) File.rename(f, filename.capitalize + File.extname(f)) end puts "Renaming complete."
  13. أريد طباعة جملة في الطرفية وبعد مدة معينة أضيف كلمة معينة في نفس السطر كما في المثال التالي: Installing ... [DONE] حيث أن [DONE] ستظهر فيما بعد على نفس السطر، فكيف أستطيع فعل ذلك في لغة بايثون؟
  14. أريد عرض جميع المتغيرات التي عرّفتها في وقت سابق في برنامجي المكتوب بلغة بايثون فما هي أفضل طريقة لفعل ذلك؟
  15. هل يوجد تابع أو طريقة معينة لجمع الأسماء في لغة روبي أو حتى في ريلز؟ أي لو كان العدد 0 أو 1 سيكون الاسم مفردا أما لو كان أكثر من ذلك فسيكون الاسم جمعا كما في المثال التالي: found 1 match found 2 matches
  16. أملك المصفوفة التالية: array = ["10", "20", "50", "99"] وأريد تحويلها إلى سلسلة نصية بسيطة مفصولة بفواصل كما في المثال التالي: "10", "20", "50", "99" فما هي أسهل طريقة لفعل ذلك في لغة روبي؟
  17. في اللغات الأخرى يمكنني استخدام //g في التعابير النمطية للمطابقة بشكل شامل، في حين أنه في روبي هذا السطر: "hello hello".match /(hello)/لن يلتقط سوى hello الأول، فكيف أستطيع التقاط جميع كلمات hello الموجودة في سلسلة نصية معينة؟
  18. لا أعرف لحد الآن كيف أنشئ مصفوفة متعددة الأبعاد في لغة روبي، فهل هنالك مثال بسيط لكيفية إنشاء مصفوفة متعددة الأبعاد في روبي؟
  19. هل هنالك طريقة أستطيع بها اختيار ترميز معين لملف قمت بفتحه عن طريق تابع open في لغة روبي؟
  20. أجد في الكثير من التطبيقات المكتوبة لغة روبي رمز $، فما فائدة هذا الرمز؟ وكيف أستطيع استخدامه؟ مثال: root = File.expand_path('../../..', __FILE__) begin require "#{root}/vendor/gems/environment" rescue LoadError $:.unshift("#{root}/activesupport/lib") $:.unshift("#{root}/actionpack/lib") end lib = File.expand_path("#{File.dirname(__FILE__)}/../lib") $:.unshift(lib) unless $:.include?('lib') || $:.include?(lib) require 'rubygems' require 'test/unit' require 'action_mailer' require 'action_mailer/test_case'فإلى ماذا يشير رمز $ في هذا المثال؟
  21. هل يمكنني كتابة حلقة تكرار تبدأ من العنصر الأصغر إلى العنصر الأكبر كما في اللغات الأخرى؟ أي حلقة مشابهة لهذه الحلقة: var index=25; for (i = index; i >= 0; i--) { print i; }
  22. أستطيع في لغة روبي أن أضيف عدد معين من ساعات إلى كائن Time (Time.now + 10.hours) فهل هنالك شيء مشابه لإضافة الدقائق والثواني؟ مثلا Time.now + 15.mins؟
  23. هل هنالك دالة أو طريقة معينة في لغة روبي لتحديد العنصر الأكثر تكرارا في مصفوفة معينة؟ أمثلة على ما أريده (طبعا الأمثلة لا تعمل): [1, 1, 1, 2, 3].mode => 1 ['cat', 'dog', 'snake', 'dog'].mode => dog
  24. بدأت تعلم ريلز منذ مدة ووجدت هذه الأسطر في أحد التطبيقات المبرمجة بالروبي: validates_inclusion_of :age, :in => 21..99 validates_exclusion_of :age, :in => 0...21, :message => "Sorry, you must be over 21" ولم أفهم الفرق بين مجال النقطتين ومجال 3 نقاط فما الفرق بينهم؟
  25. أحاول مطابقة من سطر From إلى نهاية سطر Subject في النص التالي: .... From: XXXXXX Date: Tue, 8 Mar 2011 10:52:42 -0800 To: XXXXXXX Subject: XXXXXXX .... لذلك كتبت هذا: /From:.*Date:.*To:.*Subject/m لكن مشكلتي أن هذا السطر لا يطابق نهاية سطر subject فكيف أستطيع حل هذه المشكلة؟
×
×
  • أضف...