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

Ayoub Souad

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

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

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

كل منشورات العضو Ayoub Souad

  1. إذا أردت استعمال وظيفة SPLICE يمكنك استعمال حلقة WHILE و لكن بداية من آخر عنصر: let mix = [1, 2, 3, "M", 4, "o", "h", "a", "m", 5, "d",6,"d"]; i = mix.length; // نـأخذ طول اللائحة while (i--) { // حلقة تبدأ من العنصر الأخير إلى العنصر اﻷول if (!isNaN(mix[i])) mix.splice(i, 1); // اذا كان العنصر رقما نحذفه انطلاقا من مؤشره } console.log(mix); // طباعة اللائحة يمكنك ملاحظة الفرق باستعمال تقنية الحلقة العكسية التي قمنا بها بحيث المخرج هو: [ 'M', 'o', 'h', 'a', 'm', 'd', 'd' ] للتعرف أكثر على SPLICE التي تحذف عنصر انطلاقا من مؤشره من هنا
  2. && يقوم بعملية مقارنة منطقية في حين & يقوم بعملية مقارنة للأعداد الثنائية binary للعبارتين الفرق بين && و & هو :أن الـ compiler في حالة && يقوم باختبار العبارة الأولى إذا كانت خاطئة لايمر على العبارة الأخرى لأن الـ and يجب أن تكون كلتا العبارتين true فإذا كانت إحدى العبارتين false لاداعي لمرور الـ compiler للعبارة الأخرى. ولكن في حالة & يمر الـ compilerعلى العبارة الثانية حتى وإن كانت العبارة الأولى false ، لذلك من الأفضل استخدام && بدل &.
  3. غالبًا ما تكون هناك حالة تحتاج فيها إلى إضافة ترقيم الصفحات إلى جميع views التي تُرجع مجموعات querysets أو list. يمكنك استخدام فئة توجيه مضمنة (RouterPaginated) تقوم تلقائيًا بحقن ترقيم الصفحات لجميع العمليات التي حددت response=List[SomeSchema]: from ninja.pagination import RouterPaginated router = RouterPaginated() #انشاء الوظيفة التي تحقن الترقيم @router.get("/items", response=List[MySchema]) #تطبيق المزخرف على العمليات # التي حددت الاستجابة كقائمة def items(request): return MyModel.objects.all() #استخراج جمبيع الكائنات #نفس التطبيق على عملية أخرى @router.get("/other-items", response=List[OtherSchema]) def ohter_items(request): return OtherModel.objects.all() في هذا المثال ، سيتم تمكين ترقيم الصفحات في كلتا العمليتين. لتطبيق ترقيم الصفحات على مثيل api الرئيسي ، استخدم وسيطة default_router: api = NinjaAPI(default_router=RouterPaginated())
  4. يمكنك استعمال مكتبة جاهزة django-ratelimit و التي ستحد عدد الطلبات التي تتلقاها خلال فترة زمنية معينة. و ذلك كالآتي: from ratelimit.decorators import ratelimit @ratelimit(key='ip', rate='10/m') #تحديد عدد الطلبات 10في الدقيقة مثلا def myview(request): return HttpResponse() حيث أن المقدارKey يمكن أن يأخد شكل: 'ip' أي أنك تحد نفس عنوان IP للطلب 'get:X' تستخدم قيمة request.GET ['X'] 'post:X' تستخدم قيمة request.POST ['X'] 'user' تستخدم قيمة مناسبة من request.user. لا تستخدم مع المستخدمين غير المصادق عليهم. 'user_or_ip' تستخدم قيمة مناسبة من request.user إذا تمت المصادقة على المستخدم. المقدارrate يمكن أن يأخد شكل: s - ثواني m - دقائق h - ساعات d - أيام لتثبيت المكتبة pip install django-ratelimit
  5. غيت هاب‏ هي شركة تابعة لمايكروسوفت توفر استضافة لتطوير البرامج والتحكم في الإصدار باستخدام Git. توفر الشركة وظائف التحكم في الإصدار الموزع وإدارة كود المصدر (SCM) لـ «Git»، بالإضافة إلى ميزاته الخاصة. يوفر النظام التحكم في الوصول والعديد من ميزات التعاون مثل تتبع الأخطاء وطلبات الميزات البرمجية وإدارة المهام والتركيب المتواصل ومواقع ويكي لكل مشروع جيت هاب. تُستخدم حسابات جيت هاب المجانية بشكل شائع لاستضافة مشاريع مفتوحة المصدر. ستجد فيه مشاريع برمجة جاهزة كما يمكنك تخزين مشارعك أو مشاركتها فيه. كل ما عليك هو استعمال Git للقيام بالأوامر من جهازك نحو Github. أولا تعرف على أساسيات Git من هنا. كما أنك ستجد مجموعة دلائل استعماله باللغة العربية من هنا.
  6. المرجو تقديم تفاصيل اكثر مثلا لغة البرمجة و كود الصفحة التي تستعملها و قصدك بموقعه
  7. حدد سبان داخل الايقونة: <span>Click me</span> ثم استعمل التابع toBeDisabled للتحقق من كونها disabled import { render } from '@testing-library/react'; const { getByText } = render(Button); expect(getByText(/Click me/i).closest('button')).toBeDisabled(); //التحقق من الأيقونة للتعرف على مكتبة الاختبار ل React يمكنك زيارة الصفحة من هنا
  8. يحبد استعمال لغة باكاند للقيام بذلك مثلا php في ملف html اربط action بemail.php <form method="post" action="email.php"> .... </form> ثم ملف email.php <?php mail('youremail@example.com', $_POST['subject'], $_POST['message']); //ارسال الى البريد ?> <p>Your email has been sent.</p> ايضا توجد طريقة في HTML لكنها تكتفي بإنشاء بريد إلكتروني معبأ مسبقًا بالحقول الموجودة في <form>، يمكنك تحديد mailto: address في سمة [action] لعنصر <form>. <form action="mailto:youraddr@domain.tld" method="GET"> <!-- تحديد البريد المراد الارسال اليه --> . . . . </form> ما سيفعله هذا هو السماح للبريد الإلكتروني للمستخدم بإنشاء بريد إلكتروني معبأ مسبقًا بالحقول الموجودة في <form>. و لكن لا يرسل مباشرة
  9. يمكن ذلك عن طريق استعمال مكتبة random بحيث يتم توليد مؤشرات عشوائية و استعمالها في حفظ العنصر و اضافته الى اللائحة import random arr=[1,2,3,4,5,6] n=len(arr)-1 for i in range(n): random_index = random.randint(0, n) #خلق قيم عشوائية بين 0 و ن temp = arr.pop(random_index) # ترجع العنصر الموجود في المؤشر المحدد arr.append(temp) # اضافته الى اللائحة print(arr) المخرج: [2, 3, 6, 1, 5, 4]
  10. تم تصميم طريقة splitlines () ليعطيك قائمة تحتوي على كل سطر >>>long_str.splitlines() >>>['line 1', 'line 2', 'line 3', 'line 4'] يعيد التابع قائمة من الأسطر التي تكوّن السلسلة النصية، وتجري عملية التقسيم عند حدود الأسطر، ولا تُدرج فواصل الأسطر في القائمة المعادة إلا إذا أخذ المعامل keepends القيمة True. >>> 'ab c\n\nde fg\rkl\r\n'.splitlines() ['ab c', '', 'de fg', 'kl'] >>> 'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True) ['ab c\n', '\n', 'de fg\r', 'kl\r\n'] لقراءة المزيد عن هذه الطريقة تجد توثيق مفيد باللغة العربية من هنا
  11. من الجيد اذا التوجه نحو تعلم تصميم واجهة المستخدم بحيث ستقن التناسق بين الالوان و الاحجام وعموما مبادئ التجانس والمعايير في تصميم واجهة المستخدم و التي ستجدها في رابط المقالات الذي ذكرته. يمكنك الاعتماد على برنامج Figma فهو يسهل المأمورية بحيث يساعدك على انشاء تصميمك الخاص.
  12. يجب أن تتلقى دروس عن تصميم الواجهات بحيث تكتسب مختلف التقنيات و التناسق من حيث لتصميم. بامكانك الدخول على دورة حسوب في تطوير واجهات التصميم تطوير واجهات المستخدم كما يمكنك الاطلاع على مقالات تصميم UI من هنا.
  13. لضمان فتح الرابط في نفس علامة التبويب ، يمكن استخدام window.location.replace () : window.location.replace("http://academy.hsoub.com"); هذه الوظيفة لن تسمح بتسجيل الصفحة في history
  14. ربما تكون أسهل طريقة هي مجرد تقسيم النص الى عبارات انطلاقا من كلمة محددة باستعمال وظيفة split. الوظيفة هي: str.split(sep, maxsplit) استخدم الوسيطة sep لتحديد مكان حدوث الانقسام. استخدم وسيطة maxsplit لتحديد عدد الانقسامات. my_str = "hello,world! I'm a programmer" print(my_str.split("world",1)[1]) # قسمنا السلسلة عبر كلمة ة وورلد و حددنا عدد الانقسامات في واحد ثم أخذنا العنصر المحصل عليه الثاني لقراءة المزيد عن هذه الوظيفة من هنا
  15. حساب الفرق بين تاريخين ناتجه ب ميلي ثواني اذا لحساب الايام نقوم بقسمته على عدد ميلي الثواني في يوم واحد. const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds const date1 = new Date(2022, 1, 1); const date2 = new Date(2023, 1, 1); const diffDays = Math.round(Math.abs((firstDate - secondDate) / oneDay)); // حساب الفرق باﻷيام console.log(diffDays) //طباعة الفرق
  16. لكتابة كائن إلى ملف ، يمكنك استخدام مكتبة Pickle عبر الطريقة التالية: import pickle company1 = Company() company1.name = 'name' company1.fullValue = 230500000 filehandler = open(filename, 'w') # فتخ ملف بوضع الكتابة pickle.dump(object, filehandler) # تسجيل الكائن في الملف ثم تقرأه متى أردت: filehandler = open(filename, 'r') # فتخ ملف بوضع القراءة company1 = pickle.load(filehandler) #تحميل الكائن من الملف لتثبيت Pickle pip install pickle5 يمكنك قراءة المزيد عن هذه المكتبة من هنا.
  17. يمكنك استعمال أمر بواسطة comprehension list و تعويض القيم المنعدمة بالمتوسط بكل سهولة new_col = [x if x!=0 else m for x in first_col] # comprehension list انشاء لائحة جديدة عبر #احتفظنا بالعناصر غير المنعدمة و عوضنا غيرها ب المتوسط print(new_col)
  18. بإمكانك استخدام وظيفة ceil من مكتبة cmath كعائد بداخل الدالة التي عرفتها: double circle_area(double r){ double c= r * r * PI; return std::ceil(c * 100.0) / 100.0; } و لاتنسى تضمين المكتبة cmath في الكود: #include <cmath> تجد هنا مميزات هذه الوظيفة التقريبية
  19. يمكنك استعمال Math.round() و ربطها بدالة toFixed لتحديد العدد بعد الفاصلة: (Math.round(finalPrice * 100) / 100).toFixed(2); //حفظ قيمة 84.99 أي رقمين بعد الفاصلة
  20. يمكنك استخدام مكتبة random لتوليد قيمة منطقية عشوائية بجعل الخيار محصور بين صحيح و خطأ: import random # تحميل المكتبة value= random.choice([True, False]) # توليد قيمة منطقية عشوائية print(value) يمكنك استخدام مكتبة Faker ، وهي تستخدم بشكل أساسي للاختبار ، ولكنها قادرة على توفير مجموعة متنوعة من البيانات المزيفة. from faker import Faker # تحميل المكتبة fake = Faker() # خلق instance fake.pybool() # توليد قيمة منطقية عشوائية True لتحميل المكتبة: pip install Faker
  21. لنفرض لدينا القيم التالية المسجلة في الداتافريم df: A B C 0 1.329212 -0.770033 -0.316280 1 -0.990810 -1.070816 -1.438713 2 0.564417 0.295722 -1.012354 3 0.219565 0.678805 1.022222 4 0.961538 0.104011 -0.481165 يمكنك عدم اظهار الأرقام بعد الفاصلة بتغيير خيار precision دقة العرض في Pandas: pd.set_option('precision', 0) او يمكنك تغيير دقة العرض في style: df.style.set_precision(0) النتيجة: A B C 0 1 -1 -0 1 -1 -1 -1 2 1 0 -1 3 0 1 1 4 1 0 -0
  22. لا توجد في مكتبة OpenCv طريقة اقتصاص وغالبا يقترح المبرمجون طريقة numpy slicing الآتية: crop_img = img[y:y+h, x:x+w] مع تعيينy و x في قيمة الصفر للقص من وسط الصورة. نظرا لمشكلة أحجام الصور عندك يمكنك الحفاظ على جميع زواياها مع تغيير حجمها بحيث تصبح أصغر دون الاقتصاص منها. تتوفر OpenCv على وظيفة resize لتغيير الحجم و بالتالي يمكنك فعل ذلك عبر الكود: import cv2 #قراء الصورة عبر مسارها filename = "./test2jpg" oriimage = cv2.imread(filename) print(oriimage.shape) newx,newy = 1280,720 #الابعاد الجديدة dim = (newx, newy) newimage = cv2.resize(oriimage,dim,interpolation = cv2.INTER_AREA) # تعيين الصورة حسب الابعاد الجديدة print(newimage.shape) cv2.imwrite("new image.jpg", newimage) #حفظ الصورة cv2.imshow("original image",oriimage)# عرض الصورة الاصلية cv2.imshow("resize image",newimage)#عرض الصورة الجديدة cv2.waitKey(0) الأحجام تصبح: (1080, 1920, 3) # حجم الصورة الأصلية (720, 1280, 3) # حجم الصورة الجديدة
  23. تتميز مكتبة PIL بوظيفة تسمى ImageOps ، والتي توفر طرقًا مختلفة يمكن أن تساعدنا في تعديل الصورة. نجد من بينها هذه الطرق Grayscale و التي تقوم بتحويل صورة ملونة إلى اللون الرمادي. مثلا لتحويل الصورة التالية: نقوم بالأمر التالي: from PIL import Image, ImageOps # قراءة الصورة و اظهارها test = Image.open("./test.jpg") test.show() gray_image = ImageOps.grayscale(test) # تطبيق الوظيفة لتحويل الصورة الى اللون الرمادي gray_image.save('gray_image.png') #حفظ الصورة gray_image.show() #عرض الصورة نتحصل على الصورة الرمادية :
  24. إذا كنت تتطلع إلى منع تنفيذ التعليمات البرمجية من خلال استدعاء sleep ، فعندئذٍ لا ، لا توجد طريقة لذلك في JavaScript. جافا سكريبت لديها طريقة setTimeout. سيتيح لك setTimeout إرجاء تنفيذ وظيفة لمدة x millieseconds. مثلا طباعة first ثم الانتظار لمدة 3 ثواني لتنفيذ وظيفة طباعة second نقوم بالأمر : // millieseconds إرجاء تنفيذ وظيفة لمدة 3 setTimeout(function(){ console.log('second'); }, 3000); // 3 seconds طباعة بعد console.log('first'); عند التنفيذ نحصل على النتيجة التالية: first second اطلع على وظيفة setTimeout من هنا
  25. auto_now يقوم بتحديث الحقل في كل مرة ، بينما auto_now_add يقوم بتحديث الحقل عند الإنشاء فقط. class DateField(auto_now=True, auto_now_add=False, **options) #تحديث الحقل في كل مرة class DateField(auto_now=False, auto_now_add=True, **options) #تحديث الحقل عند الإنشاء فقط وفقًا لوثائق django عند اعطاء قيمة True لكل من auto_now و auto_now_add في models الخاصة بك سيؤدي إلى حدوث خطأ لأن كلاهما متنافيان. class DateField(auto_now=True, auto_now_add=True, **options) #يسبب في خطأ
×
×
  • أضف...