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

محمد أبو عواد

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

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

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

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

    95

كل منشورات العضو محمد أبو عواد

  1. استخدم numpy.datetime64 () للتحويل بين datetime.datetime و numpy.datetime64 كالتالي date = datetime.datetime(2021,2021,26) date64 = np.datetime64(date) print(type(date64)) استخدم dt64.astype حيث dt64 عبارة عن numpy.datetime64 لتحويل dt64 إلى datetime.datetime كالتالي date64 = np.datetime64("2020-26-06 12:00:00") date = date64.astype(datetime.datetime) print(type(date)) استخدم الطرح من 1 يناير 1970 للتحويل بين datetime.datetime و TIMESTAMP كالتالي date = datetime.datetime(2021, 26, 6) timeGap = (date - datetime.datetime(1970, 1, 1)) timestamp = timeGap.total_seconds() print(timestamp)
  2. الطريقة الأكثر فعالية لتعيين دالة على المصفوفة numpy هي استخدام التابع numpy.vectorize كالتالي import numpy as np arr = np.array([0, 1, 2, 3, 4, 5]) arr_squarer = lambda t: t ** 2 squarer = np.vectorize(arr_squarer) squarer(arr)
  3. مشكلة عدم تحميل الصور بشكل سريع هو سبب حجم الصورة الكبير والذي يأخذ وقت طويل في تحميل الصورة, ولكن ما الحل؟ الحل لهذه المشكلة هو استخدام صور لها حجم قليل ومناسبة للعرض في الموقع بحيث يتم تحميل الموقع بطريقة سريعة ولا يأخذ وقت لتحميلها, من هذه الطرق استخدام الفوتوشوب لحفظ الصورة لاستخدام الويب, سوف تجدا هذا الخيار عند استخدامك للفوتوشوب ويمكنك الوصول اليه كما في الصورة التالية أما بالنسبة لتحميل الأيقونات المتأخر فهو يحدث بسبب اما انك تستخدم رابط cdn الذي من الممكن يؤخر عملية تحميل الأيقونات , أو انك تستخدم ملف حجمه كبير بعض الشيء ولذلك تجد بعض التأخير في تحميل الأيقونة, وأيضا لا ننسى ان السبب قد يكون السيرفر الذي رفعت عليه ملفاتك فربما يكون بطيء
  4. يمكنك ستخدام مدقق ObjectId أو validate valid objectIds الذي يعمل على التحقق من صحة objectIds كالتالي var ObjectId = require('mongoose').Types.ObjectId; ObjectId.isValid(قيمة الحقل newID); سوف يقزم بارجاء قيمة true اذا كان بالفعل ObjectId
  5. لا أعتقد أنه يوجد خاصية مثل هذه في الاكاديمية ولكن يمكنك التواصل مع مركز المساعدة وسوف يجب على كل أسئلتك , يمكنك الذهاب الى مركز المساعدة من هنا
  6. يمكنك استخدام الدالة transpose بهذا الشكل a = numpy.array([0,1, 2]) b = numpy.array([3, 4, 5]) numpy.transpose([numpy.tile(a, len(b)), numpy.repeat(b, len(a))]) سوف تكون النتيحة كالتالي array([0, 3], [0, 4], [0, 5], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5])
  7. يفكك $ unwind حقل مصفوفة من مستندات الإدخال لإخراج مستند لكل عنصر في هذه المصفوفة , لنحاول شرح ذلك بمثال { "_id" : 1, "name" : "A", "state": [ "S", "M", "L"] } { "_id" : 2, "name" : "B", "state" : [ ] } { "_id" : 3, "name" : "C", "state": "M" } { "_id" : 4, "name" : "D" } { "_id" : 5, "name" : "F", "state" : null } لو حاولنا استخدام $ unwind على حقل state db.test.aggregate( [ { $unwind: "$state" } ] ) سوف تكون النتيجة كالتالي { "_id" : 1, "item" : "A", "state" : "S" } { "_id" : 1, "item" : "A", "state" : "M" } { "_id" : 1, "item" : "A", "state" : "L" } { "_id" : 3, "item" : "C", "state" : "M" } كما تلاحظ عملية الفك تعيد مستند لكل عنصر في حقل state unwind$ مفيد جدا أثناء إجراء التجميع. يقوم بتقسيم المستندات المعقدة والمتداخلة إلى مستند بسيط قبل إجراء عمليات مختلفة مثل الفرز والبحث وغيرها من الاجراءات
  8. يمكنك تضمين ملفات بوتستراب بشكل طبيعي في ملف app.blade.php من الموقع الرسمي لبوتستراب, يمكنك الذهاب اليه من هنا, يمكنك نسخ الملفات من هنا أيضا ملف css <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> ملفات جافاسكربت <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script> يمكنك استخدام بوتستراب بشكل طبيعي بعد ذلك أما بالنسبة حزمة صلاحيات, يمكنك استخدام حزمة Laratrust فهي رائعة وتتيح لك ادارة الصلاحيات بشكل رائع, يمكنك تثبيتها باستخدام الأمر التالي composer require santigarcor/laratrust ثم لاستخراج الملفات الخاصة بالحزمة php artisan vendor:publish --tag="laratrust" ثم نقوم بعمل setup php artisan laratrust:setup ثم نقوم باعادة تحميل الملفات الخاصة بالمشروع من خلال الأمر composer dump-autoload ثم تهجير الملفات الخاصة بقواعد البيانات php artisan migrate يمكنك قراءة المزيد عنها من الموقع الرسمي لها ويمكنك الذهاب اليه من هنا
  9. يمكنك ذلك باستخدام الخاصيتان التاليتان: align-items: تقوم بتوسيط العناصر بشكل طولي ولها أكثر من قيمة من ضمنها center justify-content: تقوم بتوسيط العناصر بشكل أفقي ولها أكثر من قيمة من ضمنها center التي تقوم بتوسيط العنصر لاحظ كود html <div class=""> 2 </div> لاحظ كود css div{ background-color: #333; color: #fff; width: 200px; height: 300px; display: flex; align-items: center; ^^^^^^^^^^^^^^^^^^^^ justify-content: center; ^^^^^^^^^^^^^^^^^^^^^^^^^ } سوف تكون النتيجة كالتالي
  10. يمكنك تقسيم المشاريع الى مجلدات فرعية, ثم تقوم بتثبيت mongoose في هذه المجلدات الفرعية وتطلب mongoose من المجلدات الخاصة في كل تطبيق فرعي وليس من جذر المشروع, لاحظ هذه الهيكيلة للملفات في المشروع -appRoot/ --xApp/ ---dbAccess.js ---x_db_connect.js ---node_modules/ ----mongoose/ --yApp/ ---dbAccess.js ---y_db_connect.js ---node_modules/ ----mongoose/ في ملف x_db_connect.js تقوم بانشاء الاتصال كالتالي var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/x_db'); module.exports = exports = mongoose; في ملف y_db_connect.js تقوم بانشاء الاتصال كالتالي var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/y_db'); module.exports = exports = mongoose; في ملف dbAccess.js لمشروع x تقوم بالتالي var mongoose = require("./x_db_connect.js"); في ملف dbAccess.js لمشروع y تقوم بالتالي var mongoose = require("./y_db_connect.js");
  11. دائما Mongoose يجعل اسم المجموعة بصيغة الجمع. ولكن يمكنك إجبارها على أن تكون ما تريد كالتالي var bookSchema = new Schema({..}, { collection: 'book' }) هكذا لن يضاف حرف s الى المجموعة
  12. يمكننا فعل ذلك من خلال تعريف قائمة فارغة, ثم المرور على جميع عناصر السلسلة من خلال استخدام حلقة التكرار for وبداخل الحلقة نستخدم الدالة append, فيكون شكل الكود كالتالي str1 = '123456789'#السلسلة التي نريد تقسيمها myList = []#قمنا بتعريف قائمة فارغة for i in range(0, len(str1), 2):#حلقة للمرور على جميع عناصر السلسلة myList.append(str1[i : i + 2])# نقوم باضافة العناصر التي مررنا عليهاالى القائمة print(myList)#طباعة القائمة
  13. عند استدعاء الدالة ، تربط بايثون معاملات الدالة بأي كائنات تقوم بتمريرها في نطاق ال caller, يمكن أن تكون الكائنات قابلة للتغيير مثل القوائم أو غير قابلة للتغيير مثل الأعداد الصحيحة والنصوص, في المثال الذي قمت بارفاقه لديك متغيرين, المتغير x وهو عبارة عن عدد و y وهي عبارة عن قائمة , عند تمرير المتغيرين الى الدالة سوف يتم ربط هذه المتغيرات بمعاملات الدالة وبالتالي أي تغيير يطرأ على القوائم سوف يتم التأثير على المتغير الذي تم تمريره
  14. للكتابة في ملف باستخدام بايثون نحتاج بداية ان نفتح الملف, نستطيع فتحه باستخدام الدالة open وهي تستقبل معاملين, المعامل الأول هو اسم الملف والمعامل الثاني وضع الوصول وهو يتحكم في نوع العمليات الممكنة في الملف المفتوح, هناك ثلاثة أوضاع للوصول وهي كالتالي وضع الوصول ("w"): يسمح لنا بالكتابة في الملف. اذا كان لملف موجود يتم وضع المؤشر في بداية الملف،ثم يتم اقتطاع البيانات والكتابة فوقها, ينشئ الملف إذا كان الملف غير موجود. وضع الوصول ("w +"): يسمح لنا بالقراءة والكتابة. اذا كان الملف موجود يتم وضع المؤشر في بداية الملف ، يتم اقتطاع البيانات وكتابتها بشكل زائد. وضع الوصول ("a"): يسمح لنا بالكتابة في الملف. يتم إنشاء الملف إذا كان غير موجود. يتم وضع المؤشر في نهاية الملف. سيتم إدخال البيانات التي تتم كتابتها في النهاية ، بعد البيانات الموجودة. الآن لفتح الملف نقوم بكتابة السطر التالي myFile = open(r"FileName", "AccessMode") لاغلاق الملف نستخدم الدالة close كالتالي myFile.close() أما للكتابة في الملف فيوجد طريقتين وهما كالتالي: باستخدام الدالة write: تقوم بإدراج النص في سطر واحد في الملف النصي. مثال myFile.write("Hello") باستخدام الدالة writelines: تستخدم لإدراج نصوص متعددة في وقت واحد. مثال myFile.writelines (F) for F = ['Hello'، 'world'] مثال شامل myFile = open('test.txt', 'w') str1 = ["Hello", "world"] str2 = "Hello\n" myFile.write(str2) myFile.writelines(str1) myFile.close() myFile = open('test.txt', 'r') print(myFile.read()) myFile.close() النتيحة كالتالي Hello Hello world
  15. انشاء صفحات الويب ينقسم الى قسمين, القسم الأول وهو القسم الذي يظهر للمستخدمين وهو خاص بتصميم الصفحة وشكل العناصر بداخلها والتنسيقات المختلفة الخاصة بهذه العناصر مثل حجم الخط ولون الكلام ولون الخلفية وطول العناصر وعرضها وشكلها وكيفية تناسق هذه العناصر مع بعضها البعض لينتج لنا صفحة ذات تصميم رائع وجذاب, هذا القسم يسمى بقسم الفرونت اند أو القسم الامامي ويتم باستخدام عدة تقنيات وهي html و css و javascript ويمكنك تعلمها من خلال دورة تطوير واجهات المستخدم, أما القسم الثاني فهو القسم الذي لا يظهر للمستخدم ويتم من خلف الكواليس لذلك يسمى قسم الباك اند او القسم الخلفي, وهو يهتم بالتعامل مع قواعد البيانات, فكما تعلمين تحتاجين لمكان يمكنك من خلاله ادارة البيانات الخاصة بالموقع, فمن خلال هذا القسم يمكننا التعامل مع البيانات مثل تخزينها وتعديلها وحذفها وعرضها ويمكننا ذلك من خلال هذا القسم الخلفي, وأيضا يهتم في حماية الموقع ويمكنك ذلك من خلال عدة دورات موجودة منها دورة تطوير تطبيقات الويب باستخدام لغة PHP ودورة تطوير تطبيقات الويب باستخدام لغة Ruby
  16. يمكنك استخدام الأمر الآتي بدلا من الامر الذي استخدمته mongodump -d mydatabase -o destination_path سيتم إنشاء الملفات التي تم تصديرها في المسار المحدد في destination_path فمثلا لو كان المسار المحدد هو C:\Users\Desktop فسوف يتم حفظ الملف باسم قاعدة البيانات mydatabase وسوف يكون مساره كالتالي C:\Users\Desktop\mydatabase
  17. بمجرد اشتراكك في أي دورة موجودة في الأكاديمية ستحصل على وصول لمحتوياتها كاملة مدى الحياة فلن تتقيد بوقت معين للوصول الى محتوياتها, وأيضا اذا حدث أي تحديثات على الدورة ومحتوياتها سوف تستطيع الوصول للتحديثات الجديدة بشكل مجاني, والمسارات القديمة سوف توضع في أرشيف المسارات القديمة من الدورة, اذا كان هناك أي مشكلة في ذلك يمكنك الاستفسار من مركز المساعدة من هنا
  18. يمكنك استخدم سايثون لذلك ,حيث يقوم بتجميع الوحدات النمطية الخاصة بك إلى ملفات C ذات اداء عالي ، ثم بعد ذلك يمكنك تجميعها إلى مكتبات ثنائية, يمكنك قراءة المزيد عن سايثون ومعرفة كيفية استخدامه من هنا
  19. هناك نوعين من الخواص في بايثون هما : class attributes and instance attributes, حيث class attributes تتشارك نفس القيمة مع كل ال object يتم انشاءه من الصنف, أما ال instance attributes فهي فقط تنتمي للobject , انت هناك قمت بتعريف المتغير bar على أنه class attributes ولذلك سوف تتشارك جميع الكائنات قيمته, الحل أن نقوم بتعريف المتغير بداخل الكونستركتور كالتالي class foo: def __init__(self,x): self.bar = [] self.bar += [x] الآن لو حاولت انشاء أكثر من كائن من نفس الصنف لن تتشارك الكائنات نفس القيمة
  20. يمكننا فعل ذلك كالتالي y=20 x = True if y >= 20 else False print(x) حيث سوف يتم تخزين قيمة true في المتغير x اذا كان الشرط صحيح أما اذا كان خاطئا فسوف يتم تخزين قيمة false
  21. يمكنك استخدام الطريقة الآتية لاضافة Check Constraints DB::statement('ALTER TABLE Payments ADD CONSTRAINT chk_salary_amount CHECK (salary < 500.00);');
  22. يمكنك استخدام الصنف Input واستخدام التابع الخاص به get كالتالي Input::get('var1');
  23. تم إضافة مساعدين جدد لإنشاء معرفات فريدة UUID, يمكنك تجربتهما use Illuminate\Support\Str; return (string) Str::uuid(); return (string) Str::orderedUuid();
  24. تأكد من اصدار node لديك, اذا كان قديم بعض الشيء أرجو منك القيام بتحديثه, ثم قم تنفيذ الأمر التالي npm rebuild ثم الامر npm run production
  25. يمكننا حساب الوقت المستغرق من خلال استخدام مكتبة time ولذلك يجب استدعئها قبل استخدامها, ثم نخزن الوقت الذي بدأ فيه تنفيذ الكود في متغير ليكن اسمه مثلا t1, وعند انتهاء تنفيذ البرنامج نقوم بطرح قيمة المتغير t1 من الوقت الفعلي كما في الكود الآتي import time t1 = time.time() print('Test') t2 = time.time() print('time taken:' ,t2-t1)
×
×
  • أضف...