-
المساهمات
3124 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
29
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف17
-
هذا الخطأ من السيرفر وليس من flutter ويخبرك بأن هناك حقل ds مطلوب و الخطأ الأخر هو أنه لا يستطيع تحويل isActive إلى boolean . أعتقد أن الخادم هو مبرمج بلغة #c و ASP.NET لذلك يمكنك تغير السيرفر حيث يستقبل isActive ك string ويقوم بتحويلها إلى boolean أو قم بعمل casting لها .
- 9 اجابة
-
- 1
-
هل قمت بالدخول على الرابط السابق الخاص بالإجابة الذى أرسلته لك ؟ حيث بداخل الرابط ستجد طريقة التثبيت حيث أعتقد أنك قد أخطأت فى جزء ما . وستجد أيضا رابط لفيديو يتويب يمكنك الدخول عليه ويمكنك البحث على يوتيوب على طريقة تثبيت MacOs على vmware وستجد العديد من الشروحات يمكنك متابعة أى شرح لذلك وسيعمل معك إن شاء الله
-
هذا الخطأ يرجع من السيرفر لذلك قم بالذهاب إلى الكود الخاص بالسيرفر حيث يتم إرسال الطلب و أرسال صورة لى أو الملف لنرى أين المشكلة . حيث أعتقد أن السيرفر ينتظر الطلب من نوع application/json ولكن حين إستخدام flutter وإرسال <Map<String, String فإن نوع الطلب يكون application/x-www-form-urlencoded . لذلك لنقم بالتعديل التالى : لنقم بتحويل ال body إلى json هكذا . body: jsonEncode(<String, String>{ }), وبداخل الأفواس تقوم بوضع البيانات التي لديك. ثانيا نقوم بإضافة خاصية Content-Type الى ال header لتعريف نوع الطلب حتى يستقبله الخادم بطريقة صيحيحة headers: <String, String>{ 'Content-Type': 'application/json; charset=UTF-8', }, قم بتجربة التعديل السابق وأخبرنى بالنتيجة وإذا حدث خطأ فمن فضلك قم بارسال صورة الخطأ من ال cmd الخاص بالخادم
- 9 اجابة
-
- 1
-
إن http في flutter تتوقع أن تستقبل ال body على واحد من ثلاث هيئات . String <List<int <Map<String, String وبما أنك ترسل كائن فيجب أن يكون القيم من نوع String كما المفاتيح أيضا لذلك يجب وضع true أو false كسلسلة نصية string . وفى السيرفر سيستقبلها كسلسلة نصية دون أى مشاكل ويمكن مقارنة قيمتها بال boolean دون وجود أى مشاكل . لذلك قم بتغير true إلى "true" وإذا حدث خطأ في الخادم أرسل لي صورة للخطأ .
- 9 اجابة
-
- 1
-
إن فى لغة 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 و من ثم إنشاء العداد . والآن سيتم انشاء اى عدد من العدادات على حسب ما يتم استرجاعه من قاعدة البيانات
-
نعم ستجد تمارين عملية فى دورة علوم الحاسب فى بعض المسارات حيث فى المسارات العمليه يتم توفير تمارين ويقوم بحلها المدرب فى نهاية المسار ولكن فى المسارات النظرية ربما لا تجد بها تطبيق عملي وذلك شئ طبيعى. ويمكن توفير ذلك لك بالطبع، حيث يمكنك التعليق في نهاية كل مسار وطلب تدريبات للتطبيق عما تم شرحه بالمسار وسيتم توفيرها لك. ويمكنك البحث على الانترنت على اختبارات وكتابة اسم المسار الذي انهيته وستجد تمارين كثيرة نظرية حول ذلك.