-
المساهمات
9382 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
134
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد_عاطف
-
إن فى لغة SQL عند كتابة جملة أو تنفيذ أمر معين يجب إنهاء ذلك الأمر بضوع علامة semicolon (;) لذلك بعد كل سطر يجب وضع علامة ; بعد كل جملة . والأفضل يمكنك إستخدام جملة INSERT واحدة مع عدة قيم وذلك بإضافة فاصلة (,) بين كل قيمة هكذا . INSERT INTO STUDENTS (FirstName, LastName, Age) VALUES ('Ali','Mohamed',10), ('Mohamed','Amr',20), ('Ahmed','Anas',25);
-
يمكنك وضع هذه الأكواد فى ملف php واستدعاءه فى المكان الذى تريد أن تسمح الوصول له من أى خادم آخر . header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST'); header("Access-Control-Allow-Headers: X-Requested-With");
- 4 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . مشكلة ال cors هى مشكلة شائعه حيث تكمن تلك المشكلة في إرسال طلب من خادم إلى خادم أخر مختلف . فإذا لم يكن ذلك الخادم الذى يستقبل الطلب قد قام بتفعيل ال cors واضافة الخادم الذى يرسل الطلب فإن الطلب لن يتم تنفيذه وذلك لاضافة حمابة وأمان للسيرفرات من الإختراق والطلبات الوهمية . تعتمد حل المشكلة على نوع و لغة برمجة الخادم الذى يستقبل الطلب . ويوجد حل يتوفر على جميع السيرفرات وهو من خلال إنشاء ملف htaccess. ووضع هذه الأسطر بداخله . Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Methods "GET, PUT, POST, DELETE" Header set Access-Control-Allow-Headers "Content-Type, Authorization" ويمكن قراءة الإجابات فى السؤال التالى وستحل المشكلة معك إن شاء الله
-
مرحبا عبدالجبار . إذا كنت تقصد أنك تريد أن تكون مطور تطبيقات مثل تطبيقات الهاتف او تطبيقات سطح المكتب فإن الدورة المناسبة لك ليست ضمن ما تريد بل هى دورة تطوير التطبيقات باستخدام JavaScript ويمكنك قراءة محتوى الدورة من هنا حيث ضمن هذه الدورة ستتمكن من تعلم react وإنشاء تطبيقات تستخدم api موقع ويمكنك الربط بينهما و أيضا يمكنك إنشاء تطبيقات ويب وواجهات API لربط أى تطبيق بها . أما دورة php فهى فقط ستجعلك مطور واجهات خلفية ستستطيع خلالها إنشاء واجهات خلفية بلغة php وايضا إنشاء API مستعينا بإطار عمل لارافيل . أما دورة تطوير واجهات المستخدم هى فقط ستجعلك مطور واجهات أمامية وتنفيذ مشاريع مواقع ثابته. ويمكنك قراءة هذه الإجابة عن المسمى الوظيفى بعد الإنتهاء من كل دورة وهذه الإجابة لمعرفة الفرق بين Full Stack و MERN Stack و back and
-
الخطأ لديك ليس فى الكود بل لانك يبدو أنك قمت بتشغيل امر optimize ولذلك قد قام بعمل cache للملفات لديك . لذلك قم بتنفيذ الأمر التالى لإلغاء ذلك وستحل المشكلة إن شاء الله. php artisan optimize:clear
-
لا لن تعمل ال captcha الآن حيث قمنا بإيقافها لنختبر الكود . يمكنك التحقق من إعدادات captcha على جوجل من الممكن أن المشكلة أنك لم تقم بإضافة الموقع الجديد ليعمل على ال captcha
- 8 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . للأسف إذا لم يكن هذا الشخص قد قام بإعطائك نسخة من قاعدة البيانات فلن يمكن إسترجاعها ولكن من الممكن أن يكون قد قام بإستخدام المهجرات واذا كان فعل ذلك فإن أمر إسترجاعها سهل إن شاء الله . يمكنك الذهاب إلى هذا المسار database\migrations واذا وجدت بداخله العديد من الملفات فإذا قد قام هذا الشخص بإستخدام المهجرات ولكن لنأمل أن تكون تلك الملفات محدثة . بعد العثور على تلك الملفات يمكنك إستخدام SSH على الإستضافه وتنفيذ الأمر التالى : php artisan migrate والآن سيتم تنفيذ تلك الملفات وإنشاء قاعدة البيانات . إذا لم يكن لديك وصول لل SSH يمكنك وضع هذا الكود فى ملف web.php Route::get('sql_migrate', function () { \Artisan::call('migrate'); dd("migrated succesfully"); }); ومن ثم الذهاب إلى عنوان sql_migrate/ فى الموقع وهكذا سيتم إنشاء قاعدة البيانات ومن ثم قم بحذف الكود السابق .
-
يمكنك إستخدام الكود التالى : فى ملف ال html <p id="text-p">This is a paragraph Test Test Test.</p> هنا قمنا بإنشاء عنصر وقد أعطينا له id مخصص يساوى text-p . والآن فى كود js let p = document.getElementById('text-p'); let text = p.innerText; const textShort = `${text.substr(0,7)} ...` p.innerText = textShort; هنا فى أول سطر قمنا بإحضار العنصر الذى يحوى النص , ثم بعد ذلك إستخرجنا النص عن طريق الخاصية innerText . والآن أنشئنا متغير جديد يحوى النص المختصر وأعطينا قيمته `${text.substr(0,7)} ...` حيث هنا إستخدمنا الدالة substr وهى تقوم بأخذ جزء معين من النص وقمنا بتحديد 0 و 7 أى أننا نريد أن نأخذ من النص من أول حرف إلى الحرف رقم 7 مع إحتساب المسافات من ضمن النص ومن ثم وضع ثلاثة نقاط بعد النص أو أى شئ تريده . لذلك إذا أردت عدد أحرف معين قم فقط بتغير رقم 7 إلى الرقم الذى تريده . وأخيرنا قمنا بإسناد تلك القيمة إلى الخاصية innerText وبذلك سيتم إستبدال النص الحالى بالنص الجديد الذى هو جزء من النص الأساسي
-
هل يمكنك فتح ال console عن طريق الضغط على CTRL + SHIFT + J وإخباري هل يظهر خطأ عند محاولة إرسال ال form واذا كان يظهر خطأ هل يمكنك إرساله , وايضا هل يوجد خطأ فى ال log الخاص بالاستضافه ؟ من الممكن أن يكون الخطأ فى ال captcha لذلك حاول حذف هذين السطرين مؤقتا . وايضا قم بإستبدال هذ السطر بالكود التالي: if True: ومحاولة إرسال ال form مرة أخرى وإخبارى بالنتيجة
- 8 اجابة
-
- 1
-
-
يمكنك حذف سطر رقم 30 من ملف app.js وهذا هو السطر . app.use(express.static(path.join(__dirname, "images"))) والآن فى سطر رقم 41 ستجد أنك قمت بتعريف الملفات الثابتة وقد قمت بتوفير مسار public لذلك . ولذلك فان خادم node سيقوم بقراءة الملفات الثابتة بداخل هذا المسار دون الحاجة لكتابته فى العنوان . لذلك العنوان الجديد هو https://api.wesamelnagah.com/images/1715322534151.jpg وذلك بعد حذف api و public من المسار
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . نعم الأمر بسيط إن شاء الله . أولا تاكد من العميل أى لغة يريد تنفيذ جزء الواجهة الخلفية سواء php او nodejs . ويمكنك البحث على اليوتيوب كيفية تسجيل مستخدم جديد و تسجيل الدخول وستجد العديد من الشروحات حول ذلك . واذا كان يريد إستخدام php فيمكنك إستخدام إطار عمل laravel حيث سيسهل الكثر من الأمور عليك . ويمكنك قراءة هذا المقال حول ذلك اما إذا وجدت الأمر صعب وسياخذ وقت طويل فيمكنك أن تستعين بمطور backend يساعدك فى ذلك
- 2 اجابة
-
- 2
-
-
لا إياك حذف أى كلمة مرور قم فقط بالذهاب وتغيرها لأنه بالفعل الآن يملك جميع كلمات المرور ولن يفيد أى شئ حذفها . قم بالذهاب إلى كل كلمة مرور محفوظة وقم بالذهاب للموقع وتغيرها هذا فقط يكفى مع التأكد من تسجيل الخروج من جميع الأجهزة الأخرى . بالفعل تم سرقة جميع كلمات المرور منه ولكن جوجل الحماية الخاصة بها قوية تكتشف سواء أنت من تحاول الوصول أم لا وبما أنه تم إخبارك بإكتشاف suspetious activity فإذا قد تم تسجيل خروجك من الأجهزة بالفعل ولكن للتاكد قم بتنفيذ الخطوات التى أخبرتك بها سابقا . قم بمحاولة تذكر الأشياء المهمة مثل التى تحمل ايميلات مواقع التواصل مثلا او البريد الإلكترونى فإن كنت قمت بتسجيل دخول yahoo مثلا او microsoft ستجد بالفعل أجهزة قد دخلت على جميع تلك الحسابات فقم بتغيرها فورها وتسجيل الخروج من الاجهزة الآخرى . وقم بمتابعة بريدك الإلكترونى إذا اكتشفت محاولة تغير كلمة مرور أى موقع فقم بالذهاب مباشرة لهذا الموقع وتغير كلمة المرور القديمة سريعا
- 4 اجابة
-
- 1
-
-
اعتقد انك بالفعل قد تم تهكير جهازك وسرقة ملفات الإرتباط المتعلقة بجميع حساباتك على الجهاز . أول شئ يجب عليك تحميل برنامج malwarebytes ومن ثم فحص الجهاز باكمله من خلاله وهو افضل برنامج حماية لإكتشاف ملفات ال malware . ثانى شئ اذا لم تقم بعمل نسخه ويندوز بعد فيجب عليك اكتشاف جميع المواقع التى قمت بحفظ تسجيل الدخول الخاص بها سواء كلمة المرور او قمت بإختيار جعلك مسجل دخول دائما . حيث بملفات الإرتباط التى تم سرقتها من جهازك هو الآن يملك صلاحية الوصول لأى موقع قد قمت بحفظ تسجيل الدخول إليه . لذلك أكتشف تلك المواقع وقم بتغير كلمة المرور وتسجيل الخروج من جميع الأجهزة من تلك المواقع. وثم من خلال حساب جوجل قم بالدخول إلى إعدادات الحساب ثم إعدادات الأمان وستجد أنه يخربك بإقتراحات للأمان بعد إكتشاف نشاط مشبوه قم بتنفيذ تلك الإقتراحات وايضا قم بالذهاب إلى جزء الجلسات وأبحث عن أى جلسة ليست لك وقم بحذفها . وأخيرا قم بتحميل نسخة ويندوز جديدة مع التأكد من عمل format للقرص C حتى يتم حذف أى فيروسات متبقية . ونصيحة قم بتحميل برنامج حماية من الفايروسات على جهازك وتاكد من أى برنامج تقوم بتحميله والموقع الذى تقوم بالتحميل منه . حيث إذا لاحظت أن عنوان الموقع تغير ويتم تحويلك إلى العديد من الصفحات فهذا بشكل مؤكد برامج ضارة.
-
يمكنك استبدال هذا السطر @if ($homework->deadline > Carbon\Carbon::now()) بالسطر التالى . @if ($homework->deadline->gt(Carbon\Carbon::now()))
-
نعم يمكن ذلك حيث إن auth:sanctum إذا لم يكن الشخص قيد تسجيل الدخول فانه يقوم بارسال خطأ AuthenticationException , ويمكننا اضافة رسائل معينه او تخصيص الرد على هذا النوع من الاخطاء كالتالي. لنقم بالذهاب الى ملف app\Exceptions\Handler.php ونقم بكتابة هذا الكود . use Illuminate\Auth\AuthenticationException; public function register() { $this->renderable(function (AuthenticationException $e, $request) { if ($request->is('api/*')) { return response()->json([ 'status_code' => 401, 'success' => false, 'message' => 'هنا الرسالة التى نريدها.' ], 401); } }); } حيث نقوم بكتابة اول سطر بعد اسطر ال use فى الملف ونقوم باستبدال دالة register بالكود السابق , أما إذا كانت دالة register ليست فارغة فلنقم فقط باضافة السطر الذى بداخل الدالة إلى الدالة الموجودة فى الملف لديك . ويمكنك تخصيص اى رسالة او بيانات إضافيه تريدين إضافتها .
- 3 اجابة
-
- 1
-
-
كما توقعت فإن الدالة onExpiry تعمل جيدا المشكلة عند تحميل الصفحة . لذلك لنقم بمقارنة التاريخ فى كود ملف ال blade هكذا. <td> <div class="counter wow animate__animated animate__fadeInDown"> <div class="defaultCountdown" data-delivery-id="delivery-{{ $homework->id }}" data-date="{{ $homework->deadline }}"> </div> </div> </td> <td> @if ($homework->deadline > Carbon\Carbon::now()) <div class="delivery" id="delivery-{{ $homework->id }}"> <a href="{{ route('download-file', $homework->id) }}" class="btn btn-sm btn-secondary"> <i class="fa fa-upload"></i> تسليم </a> </div> @endif </td> والآن سيتم إخفاء الزر عند بداية تحميل الصفحة اذا كان الوقت قد إنقضى
-
اعتقد أن هناك لبس لديك . إن الدالة onExpiry سيتم تنفيذها بعد بدء العداد وانتهاء الوقت . ولكنها لن تنفذ اذا لم يبدأ العداد أى ان اذا كان الوقت قد انتهى بالفعل قبل تحميل الصفحة ستجد ان العداد لم يعمل وستجده صفر فى جميع الخانات ولن تنفذ الدالة . فهل المشكلة لديك فى تلك النقطه ؟ انه فى بداية الصفحة لا يتم اخفاء زر التحميل ؟ لتجربة الدالة قم بوضع المتغير deadline في قاعدة البيانات بدقيقة زائدة عن الوقت الحالى حتى يتم عد دقيقة فقط وستجد ان الدلة تم تنفيذها واختفى زر التسليم . واخبرنى بالنتيجة بعد ذلك
-
لاخفاء زر التسليم نستخدم دالة الاستدعاء onExpiry التى توفرها keith-wood countdown. اولا نضع للعنصر الذى يحوى سمة delivery نضع له id مميز حتى نستطيع من خلاله اخفاء الزر ونضع على عنصر ال defaultCountdown ال id المرتبط بزر الرفع هكذا . <td> <div class="counter wow animate__animated animate__fadeInDown"> <div class="defaultCountdown" data-delivery-id="delivery-{{$homework->id}}" data-date="{{ $homework->deadline }}"> </div> </div> </td> <td> <div class="delivery" id="delivery-{{$homework->id}}"> <a href="{{ route('download-file', $homework->id) }}" class="btn btn-sm btn-secondary"> <i class="fa fa-upload"></i> تسليم </a> </div> </td> والان فى كود الجافا سكريبت نستخدم التالى . <script> $(function() { $('.defaultCountdown').each(function(i) { const time = new Date($(this).data('date')); const id = $(this).data('deliveryId') $(this).countdown({ until: time, format: 'odHMS', onExpiry:function(e){ $(`#${id}`).hide() } }); }) }); </script> والآن مع انتهاء اى عداد سيتم اخفاء الزر المرتبط به .
-
اذا كنت تريد انشاء واحد او اكثر من عداد واحد فيجب استبدال ال id بال class حتى نستطيع التعامل مع جميع العدادات. ووضع وقت العداد الذى يتم اعادته من قاعدة البيانات فى العنصر عن طريق خاصية ال data . الان هذا كود show.blade.php <tbody> @foreach ($homeworks as $homework) <tr> <td>{{ $homework->id }}</td> <td>{{ $homework->title }}</td> <td> <div class="counter wow animate__animated animate__fadeInDown"> <div class="defaultCountdown" data-date="{{$homework->deadline}}"> </div> </div> </td> </tr> @endforeach </tbody> فى الكود السابق قمنا خاصية data-date للعنصر وهى الآن تحتوى على ال deadline الذى يأتى من قاعدة البيانات . والآن هذا هو كود الجافاسكريبت . <script src="assest/JavaScript/jquery-3.1.1.min.js"></script> <script src="assest/bootstrap/js/bootstrap.min.js"></script> <script src="assest/jquery.countdown/js/jquery.plugin.min.js"></script> <script src="assest/jquery.countdown/js/jquery.countdown.min.js"></script> <script src="assest/jquery.countdown/js/jquery.countdown-ar.js"></script> <script> $(function () { $('.defaultCountdown').each(function (i) { const time = new Date($(this).data('date')); $(this).countdown({ until: time, format: 'odHMS' }); }) }); </script> هنا قمنا بعمل حلقة تكرار على العناصر التى تحتوى على السمة defaultCountdown ثم انشاء التاريخ عن طريق استرجاع القيمة من خاصية ال data-date و من ثم إنشاء العداد . والآن سيتم انشاء اى عدد من العدادات على حسب ما يتم استرجاعه من قاعدة البيانات
-
نعم ستجد تمارين عملية فى دورة علوم الحاسب فى بعض المسارات حيث فى المسارات العمليه يتم توفير تمارين ويقوم بحلها المدرب فى نهاية المسار ولكن فى المسارات النظرية ربما لا تجد بها تطبيق عملي وذلك شئ طبيعى. ويمكن توفير ذلك لك بالطبع، حيث يمكنك التعليق في نهاية كل مسار وطلب تدريبات للتطبيق عما تم شرحه بالمسار وسيتم توفيرها لك. ويمكنك البحث على الانترنت على اختبارات وكتابة اسم المسار الذي انهيته وستجد تمارين كثيرة نظرية حول ذلك.
-
يجب توفير مسار الواجهة الخلفية قبل اسم الصورة حتى يتم استرجاعها من الواجهة الخلفية حيث اذا لم تقم بوضع المسار كما فعلت انت فسيتم ارجاعه من الواجهة الامامية وحيث ان الصورة ليست موجودة فى سيرفر الواجهة الامامية فلن تظهر . قم باستبدال سطر رقم 62 بهذا السطر src={`${API_URL}/public/images/${nav.image}`} وقم باستبدال API_URL بعنوان الواجهة الخلفية . والافضل هو انشاء ثابت لديك فى ملفات البيئة "env" فى الواجهة الامامية يحتوى على مسار الصور فى الواجهة الخلفية مباشرة . هكذا مثلا IMAGE_PATH="localhost:8000/public/images" واستخدام هذا الثابت ووضعه فى خاصية src مباشرة فى الصورة قبل اسم الصورة هكذا src={`${IMAGE_PATH}/${nav.image}`}
- 2 اجابة
-
- 1
-
-
ان التطبيقات والبرامج التي تسمح بإنشاء مواقع وتطبيقات الويب دون الحاجة إلى كتابة كود html تسمى بـ "منصات بناء المواقع" (Website Builders). وهذه المنصات توفر واجهة بصرية GUI تسمح للمستخدمين بسحب العناصر وتخصيص تصميم الموقع دون الحاجة إلى معرفة بالتفاصيل البرمجية أو برمجة HTML. الفرق الاساسى بين استخدام هذه المنصات وبرمجة المواقع باللغات التقليدية مثل html هو: سهولة الاستخدام: حيث توفر تلك المنصات واجهات سهلة الاستخدام تسمح للمبتدئين او حتى غير المبرمجين بإنشاء مواقع بسرعة وسهولة دون الحاجة إلى وجود اى مهارات برمجية. السرعة: يمكن للأشخاص إنشاء مواقع ويب بسرعة أكبر من عن طريق البرمجة الاساسية. التخصيص: توفر تلك المنصات الكثير من القوالب والأدوات لتصميم المواقع مما يسمح للمستخدمين بإضافة قواب وتصميمات محددة دون الحاجة إلى كتابة اى كود. ومع ذلك، قد تكون لتلك المنصات بعض القيود حيث لا يمكنك تخصيص جميع الاشياء التى تريدها وتستطيع انشائها عن طريق البرمجة التقليدية . وتلك البرانج بالاساس تقوم باستهداف المستخدمين غير المبرمجين او المبرمج الذى يريد انشاء موقع بسيط لا يحتوى على وظائف او اى اكواد جافاسكريبت عديدة وذلك لسرعه التنفيذ . اما نصيحتى لك اذا كنت تريد ان تكون مبرمجا فان تلك المنصات ليست لك او يجب الاتستخدمها فى بداية التعلم فانك اذا كنت تسعى للحصول على وظيفة ثابته فى شركات كبيرة ومرتبات مجزية او حتى عمل حر فتلك المنصات لن تساعدك فى ذلك حيث لن يمكنك التعديل على موقع موجود لديك او تصميم واجهات معقدة .
-
وعليكم السلام ورحمة الله وبركاته . يمكنك انشاء ملفات pdf عن طريق تحويل ملفات word او excel او حتى power point ويمكنك انشاء تلك الملفات عن طريق برنامج microsoft office او عن طريق google مثل Google Docs وكتابة ما تريد بداخل تلك الملفات ومن ثم تحويلها الى pdf .
- 4 اجابة
-
- 1
-
-
نعم ان JS هى اختصار لكلمة javascript "جافاسكريبت" و هى التى تمكنك من تنفيذ الامور التى تريدها فى الواجهة الامامية للعميل مثل فتح الكاميرا او الميكروفون والبيانات على الجهاز او حتى الوصول الى الموقع ولكن يجب على المستخدم اعطاء اذن الوصول لتلك الاشياء اولا قبل استخدامها والا فلن تستطيع الوصول اليها . وفى دورة php ستتعلم كيف يمكنك رفع الملفات من على الجهاز الى الموقع الخاص بك وحفظها فى قاعدة البيانات و السيرفر .
-
وعليكم السلام ورحمة الله وبركاته . الخطأ يخبرك بان لارافيل الاصدار 11 يحتاج الى php اصدار اكبر من 8.2 وهو ليس متوفر لديك . ويجب عليك حذف xampp ثم تثبيت اصدار يدعم php 8.2 . او يمكنك استخدام اصدار لارافيل يدعم php لديك . يمكنك معرفة اصدار php عن طريق تنفيذ الامر التالى فى cmd php -v ويمكنك معرفة اصدارات لارافيل و اصدار php لذى تدعمه من الجدول التالى
