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

هشام رزق الله

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

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

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

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

    31

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

  1. أرجو منك تزويدي بمزيد من المعلومات لأستطيع مساعدتك مثل لغة البرمجة وجزء من النص الذي تريد حفظه والشكل الذي سيكون.
  2. ابدأ أولا بإنشاء جدول (array) كالتالي: type arrayName [ x ][ y ]; حيث أن x هو عدد السطور وy هو عدد الأعمدة وبعد ذلك املأ الجدول بطريق عادية عن طريق حلقتي تكرار، الأولى (وهي الأكبر) وتتحرك قيمتها حسب y والثانية وهي الأصغر والتي ستكون قيمتها 1 ثم 2 حيث أن في المرة الأولى ستسجل رقم الكلاس وأما في السطر الثاني ستسجل المبلغ. في النهاية رتب الجدول بالتوازي بين الأسطر حيث ستكون قيمة الكلاس مرتبطة بالمبلغ أي عند نقل الكلاس انقل معه المبلغ. في النهاية أعرض أعلى قيم حسب ترتيبها في الجدول. للمزيد من المعلومات حول الجدول Array يمكنك قراءة هذا المقال.
  3. يمكنك إنشاء مواقع باستخدام Node.js والاستغناء عن PHP، لكن في الوقت الحالي، يُفضّل تعلم لغة PHP إلى جانب لغة Node.js لأن دعمها أكبر من Node.js، بالإضافة إلى أن أغلب المواقع على شبكة الإنترنت مبرمجة بلغة PHP لذلك ستحتاج في بعض الأحيان إلى معرفة بلغة PHP لقراءة شيفرة برمجية لموقع ما أو لتطوير أدوات لإحدى منصات إدارة المحتوى (مثل ووردبريس...). أتوقع أنه في السنوات القادم سيتم الاستغناء عن PHP لصالح JavaScript و Node.js وغيرها، لأن استخدامهم يزداد يوما بعد يوم.
  4. الطريقة الصحيحة لاسترجاع الكوكيز هي كالتالي: أولا نقوم بطلب الكوكيز، ومن ثم نقرأ محتوياته ونضع جملة شرطية حسب محتوياته فإذا كان لا يساوي null (أي إذا لم يكن فارغا) فسنقوم بطباعته باستخدام تابع Value وإذا لم يحتوي على شيء فسنظهر رسالة خطأ كالتالي: myCookie = Request.Cookies["MyTestCookie"]; if (myCookie != null) Response.Write("<p>"+ myCookie.Name + "<p>"+ myCookie.Value); else Response.Write("not found"); ملاحظة: إذا لم تعمل لديك الطريقة فتأكد من عملية إنشاء الكوكيز وهذا مثال على الطريقة الصحيحة لإنشاءه: HttpCookie cookie = new HttpCookie("UserSettings"); cookie["UserSettings"] = myUserSettingsObject; cookie.Expires = DateTime.Now.AddYears(1); Response.Cookies.Add(cookie); المصدر
  5. إذا أردت تعلم البرمجية فيوجد في أكاديمية حسوب العديد من دروس البرمجة، فيمكنك مثلا البدء في تعلم لغة بايثون من هذه الدورة أو لغة روبي من هنا، حيث ستساعدك هذه اللغة على برمجة مشروعك. كما يمكنك أيضا تعلم لغات برمجة الويب -إذا كان هذا هو اختصاصك-، وإذا أردت تصميم موقع ويب ستحتاج إلى تعلم عدة لغات برمجة مثل HTML و CSS وjavaScript و PHP وغيرها، وتوجد دروس تعليمية لكل لغة على الأكاديمية. من جهة أخرى يمكنك تعلم البرمجة باستخدام لغات مثل C وC++ والتي تتميز بقوتها وعملها على أكثر من نظام تشغيل.
  6. نعم توجد عدة طرق، لكن لا توجد أية تابع أو دالة مدمجة في روبي لفعل ذلك (إلا إذا استخدمت ريلز، فمكتبة ActiveSupport لديها توابع لفعل ذلك)، لذلك ستضطر إلى استخدام التعابير النمطية كما في المثال التالي: form_n = n.to_s.reverse.gsub(/...(?=.)/,'\&,').reverse أو يمكنك استخدام هذا التعبير النمطي إذا كنت تستخدم Activesupport: 10000000.to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1 ") كما يمكنك استخدام هذه الطريقة والتي تتميز بأنها أسهل للقراءة من الطرق السابقة: number.to_s.reverse.scan(/\d{1,3}/).join(",").reverse number #=> 98765 .to_s #=> "98765" .reverse #=> "56789" .scan(/\d{1,3}/) #=> ["567","89"] .join(",") #=> "567,89" .reverse #=> "98,765"
  7. إذا أردت طريقة سهلة وسريعة لفعل ذلك فيمكنك استخدام طريقة تشريح السلسلة النصية لعكس محتوياتها كما في المثال التالي: revword = astring[::-1] أو إذا أردت عكس ترتيب الكلمات الموجودة في السلسلة النصية فقط وليس جميع الأحرف فيمكنك فعل ذلك بسطر واحد أيضا كالتالي: revword = " ".join(astring.split()[::-1]) كما يمكنك استخدام طريقة أخرى أكثر تفصيلا مثل هذه الطريقة ولقد استخدمنا فيها دوال split و reverse و join كالتالي: revword = astring.split() revword.reverse() revword=''.join(revword)
  8. أسهل طريقة لتوليد أعداد عشوائية في مدى معين هي باستخدام دالة arc4random_uniform() من مكتبة stdlib، وهذه الدالة متطورة للغاية حيث أنك لن تحتاج حتى إلى تعيين seed لاستخدامها كما يظهر في المثال التالي: int r = arc4random_uniform(100); أو يمكنك استخدام هذه الطريقة أيضا والتي تعمل على كل من لغتي السي و Objective-C وذلك باستعمال دالة rand كالتالي: #include <time.h> #include <stdlib.h> ... srand(time(NULL)); int r = rand() % 100; وإذا أردت توليد أعداد حقيقية عشوائية فيمكنك استخدام هذه الطريقة: float rndValue = (((float)arc4random()/0x100000000)*(100-0)+0);
  9. الحل سهل للغاية، فـ numpy يسمح لك بإنشاء مصفوفات تتكون فقط من صفر أو واحد وذلك عن طريق استخدام دوال ones للواحد و zeros للصفر، وبما أن True و False يتم تمثيلهم بـ 1 و 0 في بايثون، فيمكننا بكل بساطة تحويل هذه المصفوفة إلى مصفوفة من القيم المنطقية boolean باستخدام خيار dtype كما في المثال التالي: np.ones((2, 2), dtype=bool)
  10. يمكنك استخدام دوال وحدة Date وتحديد بداية ونهاية للتواريخ التي تريد توليدها بصيغة عشوائية مع تابع rand كما في المثال التالي: rand(Date.civil(1990, 1, 1)..Date.civil(1999, 12, 31)) أو يمكنك استخدام دوال Time كذلك كالتالي: Time.at(rand * Time.now.to_i) ويمكنك تطوير الشيفرة قليلا بجعلها دالة تأخذ معاملات البداية والنهاية بشكل اختياري وتٌرجع لك تاريخ ووقت بشكل عشوائي: def time_rand from = 0.0, to = Time.now Time.at(from + rand * (to.to_f - from.to_f)) end
  11. توجد أكثر من طريقة في بايثون للتهريب، فيمكنك على سبيل المثال استخدام دالة escape_string() كما في المثال التالي: conn.escape_string() أو يمكنك إنشاء سلسلة نصية عادية تحتوي على ما تريد تهريبه ومن ثم استخدم دالة execute() مباشرة ومرر لها ما تريد تهريبه على شكل tuple كما في المثال التالي: sql = "INSERT INTO NEW_TABLE (COL_1,COL_2) VALUES (%s, %s)" cursor.execute(sql, (var1, var2))
  12. إذا كنت تستخدم الإصدار الثاني من روبي فيمكنك استخدام تابع bsearch على كل من المصفوفة (Array) والمدى (Range). أما بالنسبة للإصدارات الأقدم من روبي، فيجب عليهم تثبيت gem جيم bsearch أو binary_search أو يمكنهم استخدام نوع آخر بدلا من المصفوفة كاستخدام rbtree. بالمناسبة يمكنك إنشاء التابع بنفسك إذا أردت، لأن الخوارزمية قصيرة وليست معقدة للغاية.
  13. توجد طريقتين معروفتين لفعل ذلك، أولها عن طريق فتح الملف واستخراج جميع الأسطر الموجودة فيه ثم غلق الملف وبعد ذلك نعيد فتحه بخيار الكتابة فنحذف جميع ما فيه ونكتب ما الأسطر التي نريدها فقط عن طريق استخدام حلقة التكرار والجملة الشرطية كما في هذا المثال: f = open("file.txt","r") lines = f.readlines() f.close() f = open("file.txt","w") for line in lines: if line!="A_Name_To_Delete"+"\n": f.write(line) f.close() أو يمكنك فتح وغلق الملف مرة واحدة وذلك عن طريق استخدام دالة seek بطريقة مشابهة للطريقة الأول: f = open("file.txt","r+") d = f.readlines() f.seek(0) for i in d: if i != "A_Name_To_Delete": f.write(i) f.truncate() f.close()
  14. نعم يمكنك استخدام وحدة تسمى بـwin32clipboard والتي هي جزء من pywin32، وهذا مثال بسيط حول كيفية تعيين قيمة معين لهذه الذاكرة عن طريق استخدام عدة دوال من هذه المكتبة: import win32clipboard win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardText('Academy.Hsoub') win32clipboard.CloseClipboard() وأما بالنسبة لطريقة الحصول على القيمة الموجودة في الذاكرة فيمكنك استخدام نفس الطريقة السابقة لكن باستخدام دالة GetClipboardData بدلا من SetClipboardText كما يظهر في المثال التالي: win32clipboard.OpenClipboard() data = win32clipboard.GetClipboardData() win32clipboard.CloseClipboard() print data
  15. يدعم بايثون الأعداد الصحيحة المتكونة من عشرات الأرقام، ويسمى النوع الذي يحتوي على هذا العدد بـ long بالنسبة لإصدار بايثون 2.5+ وهو مفصول من نوع int وسيقوم المترجم باختيار النوع الأفضل في كل حالة. أما بالنسبة للإصدار الثالث من بايثون فلقد تم التخلي عن نوع int كليا. أما بالنسبة للأعداد الحقيقية -float- (التي بها فاصلة) فبايثون لحد الآن لم يدعم الأعداد الكبيرة منها.
  16. أسهل طريقة لتمرير شيفرة HTML إلى قالب هي عن طريق استخدام طريقة المعقفين وتمرير خيار safe والذي سيخبرFlask أن الشيفرة البرمجية آمنة كما في المثال التالي: {{ something|safe }} حيث ستستبدل something بالشيفرة التي تريدها. أو يمكنك إعلان أن شيفرة برمجية معينة مكتوبة بلغة HTML آمنة وذلك عن طريق استخدام دالة Markup من مكتبة flask كما في المثال التالي: from flask import Markup value = Markup('<h1>Hello, World!</h1>')
  17. إن أبسط خيار وجدته لفعل ذلك هو عن طريق استخدام Timeout::timeout حيث سنمرر لهذا التابع عدد الثواني التي نريد وضعها كمهلة لـ socket في برنامجنا و من ثم نضع داخل كتلة (block) هذا التابع الأوامر التي نريد تنفيذها في هذه المهلة كما يظهر في المثال التالي: require 'timeout' ... begin timeout(5) do message, client_address = some_socket.recvfrom(1024) end rescue Timeout::Error puts "Timed out!" end
  18. يمكنك في يونتي برمجة ألعاب باستخدام لغة برمجية تشبه لغة جافا سكربت (بها بعض الفروقات البسيطة عن جافا سكربت الأصلية)، وذلك باستخدام UnityScript. من أهم الفروقات بينهما أن UnityScript تفرض عليك استخدام رمز ; في نهاية بعض الأوامر على عكس جافا سكربت بالإضافة إلى أنه لا يمكنك تعريف أكثر من متغير في نفس السطر عند استخدام UnityScript. للمزيد من المعلومات حول الفرق بين جافاسكربت وunityScript أنصحك بقراءة هذا المقال. أما لو أردت بعض الدروس الأساسية في UnityScript فأنصحك بالبدء بهذا الدرس.
  19. عندما تحتاج للدوران حول النتيجة عدة مرات أو عندما تكون السرعة مطلوبة استخدم تفهيم القائمة، أما في الحالات الأخرى مثلما يكون المدى كبير للغاية أو لا نهائي أنصحك باستخدام التعابير المولدة. أضف إلى ذلك أنه إذا كنت تريد استخدام توابع وطرق القوائم (مثل تشريع السلسلة …) يجب عليك استخدام تفهيم القائمة لأن هذه الأشياء غير مدعومة من المولد.
  20. نعم، فعلى سبيل المثال حسب توثيق بايثون الرسمي، فإن السلاسل النصية المفصولة بفراغات سيتم اعتبارهم سلسلة نصية واحدة وسيكون معناها متشابه كأننا استخدمنا معامل الجمع أي أن "hello” 'world'سيتم اعتبارها "helloworld” كما في المثال التالي: >> string1 = 'Hello' 'World' 'HelloWorld' ولاحظ أنك لا تستطيع استخدام هذه الطريقة مع المتغيرات أي أنه يجب وضع السلاسل النصية للدمج وليس المتغيرات التي تملك السلاسل النصية.
  21. في العادة يكون استخدام الدالتين سريع ولن تلاحظ بطئهما، لكن سيكون الأمر مختلف عندما تكون المصفوفات كبيرة الحجم، لذلك أنصحك باستخدام هذه الطريقة للبحث عن أكبر وأصغر قيمة، حيث سنضع داخل كل متغير يعبر عن أكبر وأصغر قيمة أول قيمة في المصفوفة ونستعمل حلقة التكرار for للدوران حول عناصر المصفوفة وجملتين شرطيتين لمقارنة القيمة الحالة بالقيمة الموجودة في المتغيرات لنقوم بتغيير قيمتها في حالة وجدنا قيمة أكبر (أو أصغر في حالة min) من الموجودة في المتغير كما في المثال التالي: minn = array[0] maxx = array[0] for i in array: if i < minn: minn = i if i > maxx: maxx = i
  22. ما رأيك باستخدام pyjs؟ فحسب تعريف الموقع، فإن Pyjs هي منصة لتطوير التطبيقات على كل من الويب وسطح المكتب، فمع استخدام هذا الأخير يمكنك كتابة تطبيقات جافا سكربت بشكل كامل عن طريق استخدام بايثون. ومن الخيارات الأخرى التي يمكنك استخدامها هي SeaMonkey والذي يمكنك زيارة موقعه الرسمي للمزيد من المعلومات.
  23. إذا كنت تريد الحصول على هذه المعلومات في القالب فيمكنك كتابة سطر مشابه لهذا: {{form.nothing.field.max_length}} أما لو أردت هذه المعلومات في الشيفرة البرمجية المكتوبة بلغة بايثون (كما في العرض-view) فيمكنك استخدام نفس الطريقة السابقة لكن بدون رموز {{ و }} كما في المثال التالي: form.nothing.field.max_length هذه الطرق الوحيدة التي أعرفها للحصول على المعلومات المطلوبة وأعتقد أنه لا يوجد أفضل منها.
  24. يبدو أنك استخدمت تابع read وهذا التابع يرجع لك مجموعة من البايتات كسلسلة نصية، ولتحويل هذه السلسلة إلى بيانات نظام الثنائي (binary data) يمكنك استخدام دالة unpack من وحدة struct كما في هذا المثال: import struct size = struct.unpack('i', fin.read(4)) لاحظ أن Unpack تُرجع دائما tuple لذلك يمكنك استخدام struct.unpack('i', fin.read(4))[0] للحصول على قيمة العدد الصحيح التي تبحث عنها.
×
×
  • أضف...