-
المساهمات
3124 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
29
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف17
-
الخطأ هنا لديك فى كود الواجهة الامامية . قم باسبتدال الكود السابق بهذا الكود . const formData = new FormData(); formData.append('name',name); formData.append('pathname',pathname); formData.append('image',image); await axios.post('https://api.wesamelnagah.com/api/maincategory', formData,{ headers: { "Content-Type": "multipart/form-data", }, }) وتاكد من انه يتم رفع الصورة بشكل صحيح ثم اعد كتابة السطر الذى حذفته فى الخادم
-
قم بارجاع السطر السابق كما كان سابقا هكذا. const programmes = MainCategory({name,pathname,title, image, desc}); وقم بمحاولة رفع الصورة واخبرنى هل يتم رفعها الى الخادم ام لا فى مسار public/images/ فاذا لم يتم رفعها الى الخادم فيبدو انه توجد مشكلة لديك فى الخادم .
- 12 اجابة
-
- 1
-
هذا السطر خطأ يجب ان يكون image:req.file.filename هكذا كما اخبرتك . قم بالذهاب الى public/images/ لديك على الخادم وتاكد من انه تم رفع الصورة بنجاح فاذا لم يتم رفع الصورة فان الكود السابق لن يعمل ويبدو انه يوجد خطأ يمنع رفع الصور مثل عدم وجود المسار السابق او خطأ اخر . لذلك المهم الان هو التاكد من ان الصورة يتم رفعها بشكل صحيح ام لا على الخادم
- 12 اجابة
-
- 1
-
هل تم رفع الصورة فى المسار الصحيح ؟ حيث ان المكتبة multer بعد الرفع تقوم بوضع بيانات الصورة فى req.file . وهذا الخطأ يخبرك بانه لا يوجد req.file لذلك يبدو انه لا يتم رفع الصورة .
- 12 اجابة
-
- 1
-
لاحظ انك فى ملف maincategoryController.js فى الدالة create حين انشاء النموذج فانت تقوم بارسال المتغير image وهو المتغير الذى يحمل الصورة وهذا خطأ حيث انك تريد حفظ مسار الصورة . ولذلك الحل هو استبدال سطر رقم 13 بالسطر التالى . const programmes = MainCategory({name,pathname,title, image:req.file.filename, desc}); حيث ان ال req.file.filename تقوم بارجاع اسم الصور الذى تم حفظه على الخادم . والان قم بتنفيذ الكود والتاكد من انه تم رفع الصورة جيدا على الخادم ومن ثم تاكد بان اسم الصورة تم حفظه فى قاعدة البيانات بشكل صحيح .
- 12 اجابة
-
- 1
-
كان يجب ان تقوم بتغير اول معامل فقط هكذا formData.append("image", file); وقم بطباعة ال body فى الخادم وتاكد من ارسال الصورة بشكل صحيح
- 4 اجابة
-
- 1
-
عند ارسال ملف عن طريق axios يجب وضع الملف فى formData حتى يتم رفعه الى الخادم بشكل صحيح ووضع "Content-Type": "multipart/form-data" فى ال headers . لذلك قم بتغير الدالة handleImageChange هكذا حتى يتم وضع formData . const handleImageChange = (e) => { const file = e.target.files[0]; const formData = new FormData(); formData.append("file", file); setimage(formData); console.log(file.type); }; ولكن قم باستبدال كلمة file باسم الحقل الذى تقوم باستقباله فى الخادم. وقم بتغير هذا السطر ايضا. الى الكود التالى . await axios.post('https://api.wesamelnagah.com/api/uplode',image, { headers: { "Content-Type": "multipart/form-data", }, }) والان من المفترض ان يتم تحميل الصورة جيدا على الخادم.
- 4 اجابة
-
- 1
-
ان امتداد vsdx هو امتداد خاص ب Microsoft Visio وهو عبارة عن برنامج لرسم xmd و diagrams . يمكنك فتح الملف عن طريق البحث على جوجل عن diagram online و فتح اول موقع لديكى ثم وضع الملف فى الموقع وسيتم فتحه . وهذه صورة لمحتوى الملف
- 1 جواب
-
- 1
-
يجب اولا انشاء New bucket جديد على amazon s3 و الحصول على ACCESS_KEY_ID و SECRET_ACCESS_KEY لاستخدامهم فى مشروع الواجهة الخلفية . الان نذهب الى مشروع nodejs ونقوم بتثبيت هذه المكتبات . npm install @aws-sdk/client-s3 multer multer-s3 والان فى ملف app.js نقوم باضافة الاسطر التالية . const multer = require('multer'); const multerS3 = require('multer-s3'); const { S3Client } = require('@aws-sdk/client-s3'); const s3Client = new S3Client({ region: 'us-east-1', // هنا نقوم باضافة المنطفة التى قمنا بختيارها وقت انشاء bucket credentials: { accessKeyId: 'YOUR_ACCESS_KEY_ID', // هنا نقوم بكتابة key id الخاص بال bucket الذى انشأناه secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',// هنا نقوم بكتابة secret key الخاص بال bucket الذى انشأناه }, }); const upload = multer({ storage: multerS3({ s3: s3Client, bucket: 's3-bucket-name', // هنا نقوم بكتابة اسم ال bucket acl: 'public-read', //هنا نقوم بجعل الملف مرئى للجميع key: function (req, file, cb) { cb(null, Date.now().toString() + '-' + file.originalname); // هنا نقوم باضافة رقم مميز لاسم الصورة حتى لا يحدث مشاكل اذا كانت توجد صورة بنفس الاسم }, }), }); app.post('/upload', upload.single('image'), (req, res) => { let image_url = req.files[0].location; res.json({ message: 'Image uploaded successfully', "url":image_url }); }); ستلاحظ هنا فى هذا السطر let image_url = req.files[0].location فانه بعد رفع الملف بنجاح فانه يقوم بتعديل المصفوفة الخاصة بالملفات واضافة ال location الذى تم رفع الصورة فيه على aws . ولاحظ انه يقوم بارجاعه على هيئة مصفوفة لذلك استخدمنا [0] . وبعد ذلك يمكنك استخدام image_url وحفظه فى النموذج الخاص به فى mongodb وسوف يتم الحفظ على هيئة سلسلة نصية تحوى عنوان الصورة . والان فى مشروع react نضع ال form كالتالى . <form action="/upload-image" method="POST" enctype="multipart/form-data"> <input type="file" name="image"> <button type="submit">Upload</button> </form>
- 2 اجابة
-
- 1
-
المشروع يعمل جيدا دون اى مشاكل ولتشغيله يجب تنفيذ الخطوات التالية . قم اولا بفتح منفذ الاوامر فى مجلد المشروع الرئيسى قم بتنفيذ هذا الامر فى ال cmd Scripts\activate ستجد الان ان البيئة الافتراضية تعمل جيدا قم بتنفيذ هذا الامر للذهاب الى مجلد المشروع cd project الان قم بتنفيذ هذا الامر لتشغيل المشروع python manage.py runserver والان من المفترض ان يعمل كل شئ جيدا . اذا ما واجهتك اى مشكلة او ظهر لك خطأ من فضلك ارفق صورة للخطأ . واذا كان هذا السؤال يخص دورة من الدورات فمن فضلك قم بكتابة سؤالك فى القسم الخاص بالتعليقات اسفل الدرس وذلك لمساعدتك بشكل افضل.
-
يمكنك الذهاب الى مجلد htdocs بداخل مكان تثبيت برنامج xampp وهو بشكل افتراضى يتم تثبيته على ال C لديكى على الجهاز . والتاكد من وجود مجلد المشروع regestration لديكى بداخل مجلد htdocs . واذا كان المجلد موجود كما اعتقد . فاذا المشكلة لديكى فى الكود لذلك تاكدى من انشاء قاعدة البيانات الخاصة بالمشروع وتثبيت الحزم اللازمة لتشغيل المشروع عن طريق تنفيذ الامر التالى فى منفذ الاوامر فى مجلد المشروع . composer install واذا حدث لديكى اى خطأ فى منفذ الاوامر او فى المشروع نفسه ففضلا ارفاق صورة خاصة للمشكلة حتى نستطيع مساعدتك بشكل افضل.
-
اذا كنت تعمل على برنامج vs code يمكنك تفعيل خاصية الخفظ التلقائى . قم بالضغط على قائمة file ثم قم باختيار auto save هكذا
-
هل يمكنك ارسال صورة لتنفيذ الامرين والناتج عن كل امر منهما ؟ وايضا محتوى ملف python . حيث انه من المفترض ان يعمل الملف مهما كان اسمه ولكن يجب ان يكون بامتداد py. لذلك تاكد اولا ان الملف ينتهى ب py.
-
ما هو الخطأ الذى يظهر لكى عند الربط ؟ هل يتم ارسال البيانات الى السيرفر ام لا ؟ اعتقد ان الخطأ لديكى فى عنصر form حيث لم تقومى بكتابة الخاصية action و method الخاصة بال form حتى يتم ارسال البيانات الى العنوان الصحيح فى السيرفر . <form class="mx-1 mx-md-4" method="post" action="/register.php"> حيث انه من المفترض حين انشاء مستخدم ان تكون طريقة الإرسال هى post و حين لا يتم كتابة ال method فانها تاخذ القيمة الافتراضية get. وخاصية ال action هى العنوان على السيرفر الذى سيتم توجيه الطلب له . لذلك تاكدى اولا من كتابة هاتين الخاصيتين بشكل صحيح واذا حدث اى خطأ من فضلى ارسلى لى صورة الخطأ.
-
نعم توجد عدة طرق لحل تلك المشكلة و يجب حلها حتى تساعد فى جعل موقعك اسرع و يكون متوافق مع محركات البحث SEO . يمكنك حل تلك المشكلة عن طريق عدم تحميل ال options فى بداية الصفحة ولكن عند الضغط على select نقوم بارسال طلب AJAX للسيرفر نقوم منه بجلب بيانات ال options عن طريق الجافا سكريب وبعد تحميل الطلب نقوم بانشاء تلك ال options وهذا كود مثال للحل . <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> </head> <body> <select id="select_id"> <option selected>Select</option> </select> <script> $(document).ready(function () { $("#select_id").one('click', function () { $.ajax({ url: "https://jsonplaceholder.typicode.com/users", type: 'GET', success: function (response) { var select = $('#select_id'); $.each(response, function (key, data) { select.append('<option value=' + data.id + '>' + data.email + '</option>'); }); } }); }) }); </script> </body> </html> هنا قمنا باستخدام مكتبة jquery لارسال الطلبات و انشاء ال options بعد رجوع الطلب . اولا يجب عليك انشاء عنوان لارجاع البيانات الخاصة بال select على السيرفر . واستخدام الكود السابق فى الواجهة الامامية مع استبدال العنوان الذى يتم ارسال الطلب له بالعنوان لديك وايضا طريقة انشاء ال option قم فقط باستبدال البيانات التى تريد وضعها والان عند الضغط على عنصر select سيتم ارسال الطلب وانشاء ال options تلقائيا. او يمكنك استخدام مكتبة select2 وهى جيدة لمثل هذه الحالات وتوجد بها خصائص جيدة مثل البحث و ايضا اظهار علامة التحميل بينما يتم ارسال الطلب للسيرفر.
-
وعليكم السلام ورحمة الله وبركاته. ستجد الان خانة جديدة ظهرت فى شريط التنقل تسمى دوراتى يمكنك الضغط عليها للدخول الى محتوى الدورة التى قمت بشرائها . ويمكنك قراءة هذه الاجابة لمعرفة كيفية تصفح الدورات على الموقع. واذا ما وجهتك اى مشكلة فى الوصول لمحتوى الدورة او لم تظهر لك بعد يمكنك التواصل مع مركز المساعدة بالأكاديمية وسيقومون بحل المشكلة لديك ان شاء الله. ولا تقلق اذا ما احتجت اى مساعدة بشان الدروس فانه يوجد هنا العديد من المدربين المتاحين فى كل وقت وذلك لمساعدة الطلاب فى كل ما يحتاجونه. بالتوفيق لك ان شاء الله.
- 1 جواب
-
- 1
-
وعليكم السلام ورحمة الله وبركاته. مرحبا ربيع . ستجد الان خانة جديدة ظهرت فى شريط التنقل تسمى دوراتى يمكنك الضغط عليها للدخول الى محتوى الدورة التى قمت بشرائها . ويمكنك قراءة هذه الاجابة لمعرفة كيفية تصفح الدورات على الموقع. ولا تقلق اذا ما احتجت اى مساعدة فجميع المدربين هنا على موقع الاكادمية متواجدون فى كل الاوقات لمساعدة الطلاب . بالتوفيق لك ان شاء الله.
- 1 جواب
-
- 1
-
هذا الخطأ شائع فى البرمجة وهو ما يسمى overflow اى ان الذاكرة لا تستطيع ان تحمل جميع البيانات فى المتغير . فمثلا المتغير من نوع int64 فى numby يستطيع ان يحمل ارقام من -9223372036854775808 الى 9223372036854775807 واى رقم يتجاوز هذه الارقام ستحدث مشكلة ال overflow اى فائض فان الذاكرة لا تعرف كيف تتعامل مع هذه البيانات الزائدة فتقوم بكتابة بيانات فوق البيانات الحالة فى المتغير مما يسبب ظهور ارقام سالبة او حتى رقم 0 . وهذه مشكلة متعلقة فى numby فهى لا تستطيع ان تتحمل بيانات كثيرة عكس python فانها مرنه حيث تقوم بتغير حجم الذاكرة حتى يتناسب مع المتغير . حيث لاحظ الفرق عند تنفيذ هذين السطرين. print(np.power(2,100)) #0 print((2**100)) #1267650600228229401496703205376 لاحظ فى السطر الاول فان numby تقوم باراجع 0 حيث حدثت مشكلة ال oveflow لان numby لم تستطع ان تتعامل مع العدد الذى اكبر من 9223372036854775807 . اما فى السطر الثانى فان بايثون مرنة حيث تستطيع تغير الذاكرة كما تريد لتتحمل اى قيمة للرقم . وكما اخبرتك من البداية ان المشكلة من الممكن ان تكمن فى numby ولم الحظ ان الرقم الذى يتم الاختبار عليه كبير . ولذلك يمكنك استخدام python بدون اى مكتبة مثل هكذا . def power_of_two(n): power_two = []; for i in range(1,n): power_two.append(2**i) return power_two print(power_of_two(10000)) ستجد ان بايثون لديها القدرة على تحمل اى رقم مهما كان .
- 7 اجابة
-
- 1
-
انك تحاول تشغيل السيرفر عند الضغط على run فى برنامج netbeans و هو يتطلب ان يكون هناك ملف الجذر الذى سيتم بدا السيرفر منه . وهو فى الحالة الافتراضية يكون ملف index.php وهو ليس موجود فى ملف المشروع لديك. لذلك الحل هو انشاء ملف index.php او كتابة الملف الذى تريد ان يكون هو ال root للسيرفر .
-
هذا ليس المكان الخاص بال php.ini من فضلك قم بالذهاب للمسار التالى C:\Users\{user}\.config\herd\bin مع استبدال {user} باسم المستخدم لديك على الجهاز. ثم اذهب الى المجلد php على حسب الاصدار لديك . او فقط قم بتنفيذ هذا الامر وسيشير الى مكان ملف ال php.ini php --ini ثم قم بفتح php.ini وابحث عن variables_order وقم بتغيرها الى GPCS هكذا . variables_order = "GPCS" وذلك سيحل المشكلة ان شاء الله
- 7 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته. نحن هنا لا نقوم بالاجابة على اسئلة الاختبارات ولكن يمكننى اعطائك نصائح لتستطيع حل المشكلة بنفسك. الكود الخاص بك لا يوجد به اى مشاكل وهو جيد جيدا . لذلك هل يمكنك ارسال رسالة الخطأ التى تظهر لك ؟ وايضا قم بكتابة الكود دون استخدام مكتبة numpy وحاول مرة اخرى وانظر هل يتم حل المشكلة ام لا . بالتوفيق لك
- 7 اجابة
-
- 1
-
الخطأ لديك فى العنصرين <div class="row text-header"> // سطر رقم 99 <div class="row cards"> // سطر رقم 102 لاحظ انك فى كلا العنصرين قد اضفت الخاصية position: absolute; وهذه الخاصية تقوم بحذف العنصر من ال flow اى انه لن يكون له اى تاثير على العناصر الاخرى من حيث الطول او العرض . لذلك سترى ان العنصر الاب <div class="container-fluid"> لا يمتلك اى طول . وانصحك بعدم استخدام position: absolute هنا حيث انك تستطيع تنفيذ نفس التصميم فقط باستخدام margin و padding و text-align: center; . ويمكنك استخدام الكود التالى . section#trending .text-header { /* position: absolute; top: 20%; right: 30%; */ text-align: center; margin-top: -50px; /* padding-bottom: 50px; */ } section#trending .cards { /* position: absolute; top: 50%; left: 1%; */ margin-left: 5px; width: 100%; } footer { margin-top: 50px; } ويمكنك استخدام اى قيمة كما تحب من حيث البعد عن العناصر margin او padding . وقد قمت بارفاق الملف لك بعد التعديل. style.css
- 1 جواب
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . ان دالة range هى دالة built-in function فى بايثون اما دالة arange فهى دالة خاصة بمكتبة numpy ولكن فى المجمل فان الدالتين متشابهتين فى الاستخدام و فى نفس كل شئ تقريبا . ولكن توجد بعض الفروق الجوهرية بينهما, ولكن اولا لنشرح ما وظيفتهما : دالة range تقوم بارجاع كائن من نوع مجال (range) يحتوي على أعداد صحيحة من نقطة البداية إلى نقطة النّهاية مع فصلها بمسافة عدديّة و تستقبل ثلاثة معاملات : start وهو النقطة التى نريد ان يبدا المجال منها. stop وهو النقطة التى نريد ان ينتهى المجال عندها . step وهو المسافة بين كل نقطة فى المجال وهو معامل اختيارى اذا لم يتم توفيره سيكون ب 1. مثال للدالة range list(range(3)) # من صفر إلى ثلاثة #[0, 1, 2] list(range(1, 5)) # من 1 إلى 5 #[1, 2, 3, 4] #list(range(1, 5, 2)) # من 1 إلى 5 مع اثنين كمسافة بين كلّ عنصر والآخر [1, 3] ويمكنك الذهاب لهذا الرابط لموسوعة حسوب لتفهم اكثر عمل الدالة. الان الدالة arange هى خاصة بمكتبة numpy وتقوم باعادة كائن من نوع مصفوفة (NumPy array) وهى تستقبل اربع معاملات اول ثلاق معاملات هم نفس الدالة range والمعامل الاخير هو نوع الكائن الذى تريد ان تقوم الدالة arange باعادته لك. الان ناتى للفروق الجوهرية : كما وضحت سابقا فان كل دالة تقوم بارجاع كائن مختلف عن الاخر فالدالة range تقوم بارجاع كائن مجال اما arange تقوم بارجاع كائن من نوع مصفوفة او كما تريد انت عن طريق تمرير المعامل الرابع كما تحب. ان دالة range لها قيد حيث لا يمكن ان تكون المسافة قيمة عشرية بل يجب ان تكون قيمة صحيحة عكس arange يمكن ان تمرر لها ما تريد import numpy as np print(np.arange(1,5,0.5)) print(list(range(1,5,0.5))) # هنا سوف يحدث مشكلة لان المسافة يجب ان تكون رقم صحيح السرعة هنا دالة arange أسرع من دالة range فى التنفيذ والعمليات التى تتم عليها . المساحة التى يتم استخدامها فى الذاكرة فى arange اقل من دالة range . ولكن يوجد بعض النصائح فاذا كنت تريد انشاء مجال يحوى على العديد من الارقام فان دالة range هى الافضل واذا اردت ان تقوم بالتكرار عليهم فقط فان الدالة range افضل كذلك من arrange . اما اذا كنت تريد تنفيذ عمليات عليهم فان numpy.arange تضمن لك السرعه فى ذلك الامر
- 4 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . الخطأ من الممكن ان يكون لاكثر من سبب ولكن السبب الاكثر شيوعا هو عدم وجود ملف php.ini لديك فى مكان تثبيت php . لذلك اولا قم بالذهاب الى مكان تنصيب Laravel Herd وقم بالذهاب لمجلد php وتاكد من وجود php.ini . اذا لم يكن موجودا ستجد ملف php.ini-development قم بتغير اسمه الى php.ini . واخبرنى بالنتيجة .
- 7 اجابة
-
- 1