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

عبدالباسط ابراهيم

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

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

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

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

    11

كل منشورات العضو عبدالباسط ابراهيم

  1. يعتبر الموضوع بسيط حيث يمكنك التحكم في ال scroll من خلال الخاصية scrollTop بواسطة javascript لاحظ الكود التالي من خلال jquery var div = $('#div1'); div.scrollTop(div.prop("scrollHeight")); و إذا كنت تريد التحرك ب animation يمكنك استخدام الكود التالي $("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000); الكود السابق يقوم بتحريك الصفحة لأسفل ال div المحدد يمكنك استخدام هذا الكود ضمن موقعك كما تريد
  2. يعتبر المجالان كبيران وكلاهما تحتاج لتعلمهما الكثير من الوقت ويمتد للعديد من السنوات للوصول لمستوى إحترافي فيفضل إختيار مجال واحد منهما للعمل والتعمق فيه والإختيار يجب أن يتم بعد القراءة عن المجالين بدقة لإختيار المجال المناسب لك بالنسبة للعمل والربح فلا يعني تعلمك الكثير من المهارات أنك تستطيع العمل بسهولة عن الذي تعلم وتعمق في مجال واحد فتعلمك المجالين معاً غير صحيح ولن تقدر على ذلك بالطبع تعلمك لمجال في البرمجة يسهلك عليك الإنتقال لمجال آخر ولكن لن تستطيع التعمق في كلا المجالين كما لو تعلمت مجال واحد حيث أن كلاهما يحتاج لجهد كبير بالنسبة لأنك لا تحب التصميم يمكنك التخصص في جزء ال backend فليس مطلوب منك الإهتمام بالواجهة كما أن جزء ال frontend غير مسئول عن التصميم إنما يقوم بتحويل التصميم (الذي يقوم المصمم بتجهيزه لك) إلى كود frontend
  3. بالإضافة للطرق المقترحة في التعليق السابق يمكنك أيضاً من خلال pip ( إذا كان لديك pip ) بواسطة الأمر التالي pip freeze سيظهر لك قائمة لإصدارات الحزم المستخدمة ولكن إذا أردت Django فقط يمكنك استخدام الأمر pip freeze | grep Django
  4. هناك العديد من الطرق للقيام بذلك ، ولكن الأكثر وضوحا هو ببساطة استخدام Python debugger فقط أضف السطر التالي إلى دالة view import pdb; pdb.set_trace() #or breakpoint() #from Python3.7 وأيضاً إذا كنت تستخدم IDE مثل PyCharm سيوفر لك سهولة في تتبع الأخطاء في الكود
  5. يبدو أن لا يتم تثبيت webpack لوجود ملفات قديمة أو ماشابه لذلك قومي بتثبيته ولكن هذه المرة مع إضافة المعامل --force كالتالي npm i --save-dev webpack --force
  6. التجريد هو من مفاهيم ال OOP الأساسية وهو ببساطة عملية إخفاء بعض التفاصيل وإظهار المعلومات الأساسية فقط للمستخدم ويمكننا تنفيذ مفهوم التجريد من خلال abstract classes .interfaces لاحظ المثال التالي abstract class Animal { public abstract void animalSound(); public void sleep() { System.out.println("Zzz"); } } ال abstract class لا يمكننا إنشاء كائنات منه إنما الوراثة منه فقط وال abstract method لاتحتوي على body أما بالنسبة interfaces فهي تقوم أيضاً بالتجريد ولكن ببعض الإختلافات عن ال abstract class كما أن بالإضافة للتنفيذ التجريد بواسطة interface يمكنك أيضاً تنفيذ الوراثة المتعددة من خلالها
  7. يمكنك استخدام ال OpenCV الأحدث كالتالي import cv2 im = cv2.imread("abc.tiff",mode='RGB') print type(im) والنتيجة تكون كالتالي <type 'numpy.ndarray'> كما يمكنك أيضاً استخدام المكتبة PIL (Python Imaging Library) لاحظ المثال التالي حيث تم تعريف دالتين لحفظ وتحميل الصورة كمصفوفة from PIL import Image import numpy as np def load_image( infilename ) : img = Image.open( infilename ) img.load() data = np.asarray( img, dtype="int32" ) return data def save_image( npdata, outfilename ) : img = Image.fromarray( np.asarray( np.clip(npdata,0,255), dtype="uint8"), "L" ) img.save( outfilename )
  8. يمكنك استخدام الدالة zip لتنفيذ المطلوب for col in zip(*array): some_function(col) ويمكنك أيضاً استخدام ال indexing لاحظ المثال التالي for col in range(arr.shape[1]): some_function(arr[:,col]) [1 2 3 4] [99 14 12 43] [2 5 7 1]
  9. يمكنك أيضاً استخدم pickle لتنفيذ المطلوب كالتالي import pickle my_data = {'a': [1, 2.0, 3, 4+6j], 'b': ('string', u'Unicode string'), 'c': None} output = open('data.pkl', 'wb') pickle.dump(my_data, output) output.close() ويمكنك قراءة البيانات من الملف كالتالي import pprint, pickle pkl_file = open('data.pkl', 'rb') data1 = pickle.load(pkl_file) pprint.pprint(data1) pkl_file.close() وقم بقراءة الإجابات على هذا السؤال ستفيدك كثيراً في تنفيذ المطلوب
  10. هل التغييرات التي تجريها يتم تحديثها على المتصفح؟
  11. يمكنك استخدام astype مع المعامل copy بالقيمة false a = a.astype(numpy.float32, copy=False) لكن لاحظ أن استخدام المعامل copy بالقيمة false أنه دائماً يقوم بعمل view وليس copy حيث أن هذه الدالة تقوم بتفادي النسخ إذا كانت تقدر على ذلك فهناك حالات لا تستطيع تنفيذ ذلك
  12. إذا كنت تستخدمين الإضافة webpack-dev-server قومي بالتأكد من وجود الخاصية التالية devServer: { writeToDisk: true } ذلك في حالة أنه يتم عمل compile بنجاح
  13. يمكنك استخدام np.isnan كما في التعليق السابق مع استخدام sum أو min ولكن أيضاً يمكنك استخدام Dot numpy.isnan(numpy.dot(a, a)) كما يمكنك استخدام any numpy.any(numpy.isnan(a)) يعتبر استخدام dot الأسرع من بين الدوال السابقة
  14. نعم هناك العديد من الدوال التي تمكنك من تنفيذ المطلوب مثل استخدام concatenate a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]]) np.concatenate((a, b), axis=0) array([[1, 2], [3, 4], [5, 6]]) np.concatenate((a, b.T), axis=1) array([[1, 2, 5], [3, 4, 6]]) np.concatenate((a, b), axis=None) array([1, 2, 3, 4, 5, 6]) لاحظ استخدام المعامل axis كما يمكنك استخدام stack a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) np.stack((a, b)) array([[1, 2, 3], [4, 5, 6]]) ويمكنك أيضاً استخدام الدالة array كالتالي numpy.array( LIST )
  15. جرب القيام باستخدام ال head واستخدام ال cdn كالتالي import "../styles/globals.css"; import Head from "next/head"; function MyApp({ Component, pageProps }) { return ( <> <Head> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous" /> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous" ></script> </Head> <Component {...pageProps} /> </> ); } export default MyApp; جرب هذه الطريقة وأخبرني بالنتيجة
  16. تقوم الدالة argsort بإرجاع المؤشرات المستخدمة لاحقاً في فرز المصفوفة وتكون تصاعدياً إفتراضياً عن طريق إرجاع index العنصر حسب ترتيبه عند ترتيبه تصاعدياً وفي المثال السابق الذي طرحته لماذا تتوقع ذلك الناتج لذلك قم بالإطلاع النتاج وستعرف طريقة عملها print (arr.argsort()) # Output: [2 3 1 0] الناتج السابق يعني أن ال index 2 يجب أن يكون في أول المصفوفة ويعني أيضاً أنه أصغر رقم 2 هو ال index الخاص بالعنصر 0.0 3 هو ال index الخاص بالعنصر 0.1 1 هو ال index الخاص بالعنصر 1.41 0 هو ال index الخاص بالعنصر 1.48
  17. يمكنك استخدام العديد من الدوال السابقة كما في التعليقات ولكن إذا كنت تريد تحويلها إلى نوع float فهناك دالة لذلك np.asfarray حيث ترجع المصفوفة المطلوبة إلى نوع float import numpy as np stringArray = np.array(["1.000", "1.235", "0.000125", "2", "55", "-12.35", "0", "-0.00025"]) floatArray = np.asfarray(stringArray, dtype = float) print(stringArray) print(floatArray) الناتج يكون كالتالي ['1.000' '1.235' '0.000125' '2' '55' '-12.35' '0' '-0.00025'] [ 1.000e+00 1.235e+00 1.250e-04 2.000e+00 5.500e+01 -1.235e+01 0.000e+00 -2.500e-04]
  18. جرب القيام يتنفيذ الأمر firebase deploy من داخل المجلد functions بدلاً من تنفيذ الأمر السابق من داخل ال root
  19. كما ترى في التعليقات فإنه توجد العديد من الطرق لتنفيذ المطلوب فمثلاً يمكنك استخدام for loop كالتالي x[[z for z in range(x.size) if not z in exclude]] قم بتحديد ال exclude من خلال list تحتوي على جميع العناصر التي لا تريدها كما يمكنك استخدام hstack كما في المثال التالي a = [0,1,2,3,4,5,5,6,7,8,9] np.hstack((a[:3], a[4:])) #قم بتحديد المقطع الذي تريد حذفه array([0, 1, 2, 4, 5, 5, 6, 7, 8, 9])
  20. بالإضافة لاستخدام repeat و broadcast_to يمكنك أيضاً استخدام الدالة np.tile بسهولة حيث تقوم بتحديد ال shape كالتالي import numpy as np a = np.array([[1,2],[1,2]]) b = np.tile(a,(3, 1,1)) b.shape (3,2,2) b array([[[1, 2], [1, 2]], [[1, 2], [1, 2]], [[1, 2], [1, 2]]])
  21. كما شرح محمد في التعليق السابق فهي تستخدم للقيام بجلب بعض البيانات في الخادم وهناك مهام نستخدمها في المتصفح وهذه بعض الخصائص الخاص بال getInitialProps تستَخدَم لجَلْب بعض البيانات بشكل غير متزامن ، ويتم توليدها من خلال ال props سيتم تنفيذ الدالة getInitialProps على الخادم فقط.من تحميل الموقع المبدئي يمكنك استخدامها في المتصفح من خلال ال routing لا يمكننا استخدامها في ال children components ويفضل استخدام getStaticProps أو getServerSideProps بدلا من getInitialProps. بداية من Next.js 9.3 ويمكنك قراءة المزيد من المعلومات حول getStaticProps و getServerSideProps من خلال هذا السؤال
  22. يجب عليك فهم الخطأ أولاً [0]arr ليست مصفوفة، بل هي العنصر الأول من arr وبالتالي ليس لها أي أبعاد. حاول استخدام [0:1] بدلا من ذلك ، الذي سيعيد العنصر الأول من داخل lلمصفوفة صنف واحد واستخدام .np.concatenate بشكل طبيعي np.concatenate((arr, arr[0:1])) أو يمكنك تحويل العنصر [0]arr لمصفوفة np.concatenate((arr, np.array([arr[0]])))
  23. يمكنك استخدام ال np.argsort temp = np.random.randint(1,10, 10) temp array([5, 2, 7, 4, 4, 2, 8, 6, 4, 4]) temp[np.argsort(-temp)] لاحظ أنه هذا الحل أسرع قليلاً نتيجة أنه لا يتم ضرب المصفوفة مرتين في السالب لعكس الإتجاه وغذا كنت تهتم لأمر السرعة كثيراً فيعتبر الحل الأسرع نسبياً هو np.flip عن بقية الحلول
  24. توجد العديد من الطرق المستخدمة سواء باستخدام python أو numpy مثل استخدام numpy.bincounts أو collections.Counter كما يمكنك أيضاً استخدام np.unique كالتالي values, counts = np.unique(a, return_counts=True) ind = np.argmax(counts) print(values[ind]) # طباعة الرقم الأكثر تكراراً يمكنك أيضاً استخدام statistics.mode بداية من Python 3.4 from statistics import mode mode([1, 2, 3, 1, 2, 1, 1, 1, 3, 2, 2, 1]) # 1 وإذا كان هناك عدة عناصر بنفس التكرار وتريد إرجاعهم جميعاً نستخدم statistics.multimode from statistics import multimode multimode([1, 2, 3, 1, 2]) # [1, 2]
  25. يمكنك بالطبع تنفيذ ذلك من خلال numpy ولكن هناك حالتين لتنفيذ ذلك إذا كنت تريد التغيير في الدالة الأصلية يمكنك استخدام الدالة shape ar.shape = (-1, ncols) الكود السابق يقوم بالتعديل على shape المصفوفة الأصلية أما إذا كنت تريد إرجاع مصفوفة جديدة يمكنك استخدام الدالة reshape كما تم الشرح في التعليقات السابقة new = np.reshape(arr, (-1, ncols))
×
×
  • أضف...