-
المساهمات
18786 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
445
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
تستطيع استخدام خاصية "fill" في النموذج Laravel، حيث يمكن تحديد الحقول التي يجب تعديلها وترك الحقول الأخرى بدون تعديل. مثلاً، إذا كان لديك نموذج يحتوي على حقول "title" و "description" و "image" ، وتحتاج إلى تعديل "title" و "description" فقط دون تغيير الصورة، يمكنك القيام بذلك كما يلي: public function update(Request $request, $id) { $post = Post::findOrFail($id); $post->fill($request->only('title', 'description')); $post->save(); return redirect()->back(); } تم استخدام الدالة "fill" لتحديد الحقول "title" و "description" فقط وترك حقل الصورة دون تغيير، واستخدام الدالة "only" لتحديد الحقول المطلوبة فقط للتحديث. وبذلك سيتم الاحتفاظ بالصورة القديمة في الحقل "image" دون الحاجة إلى إعادة تحميلها.
- 5 اجابة
-
- 1
-
-
توفر مكتبة Laravel Spatie وظيفة لتحويل السلسلة النصية إلى مصفوفة: use Spatie\Translatable\HasTranslations; class YourModel extends Model { use HasTranslations; public $translatable = ['value']; public function getValueAttribute($value) { $translatedValue = $this->getTranslations('value'); $numericValue = $this->id; return [ 'value' => $translatedValue, 'numeric_value' => $numericValue, ]; } } من خلال إضافة خاصية "translatable" إلى النموذج لتحديد الحقل المترجم، ثم استخدام الدالة "getTranslations" لاستخراج القيمة المترجمة للحقل، يتم إضافة القيمة العددية للحقل كقيمة رقمية. يمكنك الآن استخدام خاصية "value" و "numeric_value" لعرض القيم المترجمة والقيم الرقمية على التوالي.
- 3 اجابة
-
- 1
-
-
بالرغم من أن React وEmotion وNext.js وStoryblok تعتبر تقنيات وأدوات تطوير وإدارة المواقع الشائعة والمفضلة لإنشاء مثل تلك المواقع، إلا أن استخدام بايثون أيضًا ممكن بالطبع. وستحتاج استخدام إطار عمل Django، الذي يتميز بكونه سهل الاستخدام وقوي وشامل لإنشاء تطبيقات الويب. وبعد تثبيت Django، تستطيع استخدام المكتبات الإضافية لإنشاء ميزات مثل معالجة الدفعات (Stripe) وإدارة العلاقات مع العملاء (Salesforce و HubSpot) وتضمين معلومات سياحية (TripAdvisor API و Amadeus و Sabre و Travelport). بالإضافة إلى ذلك، بالإمكان استخدام مكتبات Python الأخرى لإنشاء ميزات مثل معالجة الصور وإدارة البريد الإلكتروني والبحث عن المواقع السياحية.
- 6 اجابة
-
- 1
-
-
السوق حاليًا متشبع بمطوري الـ Front-End وبعد 5 سنوات لا أحد يجزم أن الطلب سيقل، لكن المهام التي سيمكن لشخص الواحد يستخدم الذكاء الاصطناعي القيام بها ستزيد بالتأكيد مما يعني أن الطلب سيقل، بسبب قدرة شخص واحد على القيام بمهام شخصين مثلاً. وذلك قياسًا على التطور الذي يشهده الذكاء الاصطناعي حاليًا، فالأمر طبيعي جدًا، إذا نظرت للماضي تنبأت بالمستقبل أو دعنا نقول استعديت له، وقد ذكرت لك من قبل أن مجال الـ Front-End هو الأكتر تأثيرًا بسبب حجم التطور والأدوات التي تحاول إنشاء الواجهة بأقل وقت ومجهود وكود يذكر. ومع الوقت سنصل لتلك المرحلة بلا شك، لكن فترة 5 سنوات لا أحد يعلم ما سيحدث خلالها، وما يمكنك فعله هو أن تصبح مبرمج بحق، أي تعلم الأساسيات جيدًا وتعمق في مجالك ولا تتعلم قشور البرمجة فيتم استبدالك. وأرجو أن تسمع مني تلك النصيحة، الخوف الذي لديك في البداية هو طبيعي جدًا ولدى الجميع، وذلك بسبب شيء واحد واسمح لي بقوله وهو الجهل بمجال البرمجة، فبعد أن تتعلم وتستوعب ما يمكن للذكاء الاصطناعي فعله وحدوده ومدى تأثيره وتأثيرك أنت، وتعلم كيف يتم إنشاء الـ Ai، سيرتاح بالك وتعلم ما يجب عليه فعله وتعلمه. وحاليًا أنصحك بتعلم جافاسكريبت، وليس بايثون، ودائمًا ما أنصح الجميع في البداية بتعلم HTML, CSS, JS بسبب سهولتهم وبسبب أنك ستحتاجهم في أغلب المجالات وأيضًا بتعلمهم تفتح عينيك على عالم البرمجة بشكل واسع. وأنصحك بقراءة النقاشات التالية:
-
إذا قمت بإختيار الدورتين أثناء الإشتراك كما في الصورة التالية وقمت بالدفع. وتوجهت إلى الدورات الخاصة بك، وستجد شرح كامل عن كيفية الوصول لدوراتك في الشرح التالي: كيف أصل للدورات التي اشتركت بها وفي حال لم تجد الدورة الثانية، فأرجو منك التحدث إلى مركز المساعدة الخاص بأكاديمية حسوب وسيتم إضافة الدورة لك، ولا تقلق.
-
لا تفعل ذلك أبدًا، التزم بالجامعة عزيزي، وأنهي فترة الأربع سنوات بخير، ولا تشغل بالك أبدًا بعدد المبرمجين، فالجميع يرزقون والله تكفل بذلك، فاشغل نفسك بالإجتهاد ولا تنظر أبدًا إلى الآخرين. ذلك فخ يقع فيه الكثيرين، ففي البدايات يريد عقد عمل وسيارة وحساب بنكي، قبل أن يتعلم البرمجة، فلا تكن أنت منهم. وسوق العمل بحاجة إلى مبرمجين محترفين بحق، حيث أن المشاريع تبحث عن مبرمجين ولا تجد من يقوم بها، بسبب سوء مستوى أغلب المبرمجين في عالمنا العربي وإتجاه المحترفين للعمل في الخارج في الدول الأجنبية. لذلك تحلى بالصبر ولا تستعجل ولا تنظر لحصاد الآخرين، فقد قاموا بالإجتهاد لسنوات وتلك هي فترة الحصاد لهم. قم بالدراسة بجانب الكلية ولا تعتمد عليها أبدًا في أن تصبح مبرمج، بل اتخذها عامل مساعد واستفد بتلك الفترة في تحفيذك وكون علاقات وحاول التدرب في الشركات بعد الإنتهاء من تعلم لغة أو مسار تدريبي.
- 3 اجابة
-
- 1
-
-
التخصص في مجال الذكاء الاصطناعي أم دراسة البرمجة في كلية حاسبات ومعلومات كلا المجالين ستحتاج فيهما إلى كتابة الكود، ومجال الذكاء الاصطناعي أشد تعقيدًا، وأيضًا فرص العمل متوفرة في الخارج وليس في أغلب الدول العربية، لذلك إذا كنت مستعد للسفر إلى الخارج فقم بالتخصص في مجال الـ Ai. حيث أنه مجال واعد وله مستقبل في السنوات القادمة، فأغلب الشركات الآن تتجه إلى استخدام الـ Ai بمختلف أشكاله، وتتسابق في إطلاق الأدوات والمنصات الخاصة بها التي تستخدم الذكاء الاصطناعي. وإذا كنت تفضل العمل في السوق المحلي أو الدول العربية، فأنصحك بدراسة البرمجة في كلية علوم الحاسب. أي الأمر يتوقف على ظروفك الشخصية والمادية والوقت المتوفر لك. فترة الخدمة العسكرية وتأثيرها على الوظيفة الأمر شر لابد منه، ولا أنصحك أبدًا بالتهرب من الخدمة العسكرية، قم بتأدية الخدمة لمدة سنة وخلال تلك السنة عليك بدراسة البرمجة والتطبيق في فترة الأجازات إذا استطعت. وهون عليك الأمر، فالجميع مر بتلك الفترة، وأعرف البعض قد عمل بشركات وهو طالب لكن بمستوى يستحق التوظيف حيث أنه قد كان درس البرمجة لمدة عام أو عامين وقام بمشاريع، لذلك في السنة الثالثة قام بالعمل في شركة. ثم دخل الجيش وعاد للعمل مرة أخرى بعد الإنتهاء من الخدمة. أي لا مشكلة في العمل لكونك طالب، لكن يجب توافر المهارات المطلوبة ومعرض أعمال به 3 مشاريع حقيقية على الأقل لتتمكن من الحصول على وظيفة، أو يمكنك العمل على مواقع العمل الحر كمستقل. لكن بعض الشركات الكبيرة تتطلب أن تكون قد أديت الخدمة وحصلت على الشهادة الجامعية لذلك ليس جميع الشركات توظف طلاب. تطوير مستواك في البرمجة والحفاظ على العملاء أولاً، من الصعب الحفاظ على العملاء في حالة تأدية الخدمة العسكرية، إلا إذا وافق العميل بذلك، وأثناء فترة الإجازات يمكنك العمل على المشروع الخاص به. أي أنك لست حر نفسك أثناء فترة الخدمة العسكرية، لذلك لا تلتزم وتعطي كلمة بنسبة 100%. أما بالنسبة لتطوير مستواك، فهناك حلان إما القراءة من خلال الكتب في المجال الخاص بك أو اللغات التي اخترتها وتعمل بها، أو مشاهدة دورات وكورسات على الهاتف المحمول أثناء أوقات فراغك في الخدمة إذا تم السماح بالهاتف والأغلب يستطيع أخذ هاتفه معه بشكل ودي. فإذا كنت في بداية تعلم البرمجة، فهناك الكثير مما يمكن تعلمه، عليك بتحديد مسار Roadmap ورؤية ما الذي تحتاج إلى تعلمه أو زيادة مستواك به.
- 4 اجابة
-
- 1
-
-
أهلا فاطمة، إذا قمتي بالتقدم للإختبار وتم الإنتهاء وإعتماد النتيجة الخاصة بك، فسوف يتم إرسال الشهادة الورقية إلى عنوانك في بلدك (ماعدا الدول التي بها حروب) وتترواح مدة الشحن من أسبوع إلى شهر. بينما تتوافر شهادة إلكترونية لها رابط خاص بك على موقع أكاديمية حسوب، أي رابطها يحوي كلمة academy.hsoub، ويمكنك إضافتها على مواقع التوظيف مثل LinkedIn. وإذا كنتي ما زلتي لم تتقدمي للإختبار، فأرجو منك قراءة النقاشات التالية، فستجدي بها كافة الإجابات على أسئلتك.
-
أنت في سن صغير، ولا تستعجل أبدًا، بل امشي بخطى ثابتة، فذلك أفضل لك وسيحميك من التخبط والتشتت. في أي بلد داخل عالمنا، الشهادة الجامعية مهمة جدًا، وفي عالمنا العربي أشد أهمية، لذلك ركز على الشهادة أولاً والتخرج بدرجة مرتفعة قد تفتح لك أبواب خير كثيرة مغلقة. بعد ذلك، ستمتلك كل الوقت في العالم لتعلم البرمجة، ولا أحد سيمنعك من ذلك، لكن هناك أمور مقيدة بوقت مثل الجامعة، حيث يجب الإلتزام بالدراسة في وقتها، وإلا ستتأخر في الدراسة والبرمجة معًا. ولا تكتفي بالشهادة الجامعية، فعليك بالدراسة خارجها أيضًا وزيادة مهاراتك بما يتناسب مع سوق العمل، فالشهادة الجامعية في أغلب البلدان العربية لن تؤهلك لسوق العمل، وسيتوجب عليك أنت التعلم واكتساب الخبرة. وبالطبع من قام بالدراسة بشكل أكاديمي في كلية علوم الحاسب، وقام بتعلم البرمجة جنبًا إلى جنب مع الكلية، فسيتفوق على المبرمجين الآخرين خارج الكلية ولكن ليس جميعهم، فالمواد متاحة للجميع على الإنترنت، والذي يتفوق هو الذي يجتهد أكثر. لكن هي شهادة ضمان على أنك درست علوم الحاسب وتم إختبارك على مدار 4 سنوات، ودرست قواعد بيانات، خوارزميات، هياكل بيانات، ولغات برمجة قوية مثل جافا و C++ وعلوم أخرى. وأيضًا ستحيط نفسك بأشخاص لهم نفس الهدف في كلية علوم الحاسب وستكون صداقات وعلاقات معهم، وذلك سيدفعك أنت أيضًا إلى تحقيق نفس الهدف بنسبة كبيرة، وهو أمر هام جدًا يفتقده الكثير خارج جامعة حاسبات ومعلومات. وأنصحك بقراءة النقاش التالي:
- 4 اجابة
-
- 1
-
-
دعني أوضح لك أمرًا، عاجلاً أم أجلاً سيتعين عليك استخدام الذكاء الاصطناعي وإلا سيتم استبدالك، وليس العكس أي الذكاء الاصطناعي لن يقوم باستبدالك كمبرمج ولكن بشرط سيتم توضيحه لاحقًا. لماذا؟ لأن ذلك هو التطور الطبيعي، فكلما ظهرت أدوات متطورة لتسهيل عمل المبرمجين أو أي في أي مجال آخر، سيتوجب عليك تعلمها لتسريع وتيرة عملك وزيادة إنتاجيتك. حيث أن ذلك هو المطلوب منك في سوق العمل، فإن قام شخص آخر باستخدام الأداة وتفوق عليك رغم أنكم في نفس المستوى من المهارة، سيتم استبدالك بلا شك. وأيضًا إذا كانت مستوى مهاراتك في البرمجة سطحية، فسيتم استبدالك بلا شك مع تقدم مستوى الذكاء الاصطناعي بوتيرة مرعبة. وفي رأي أول المجالات التي ستتأثر في البرمجة، هي الواجهة الأمامية Front-End، وقد يحصل ذلك بعد 5 سنوات من الآن أو أقل فلا أحد يعلم. ولكن هل ذلك يعني أن مطوري الـ Front-End سيندثرون؟ لا، بالطبع ستحتاج إلى مطور يستخدم الذكاء الاصطناعي ويقوم بتوليد الواجهة الأمامية والتعديل على الأكواد والتأكد من عملها بشكل سليم. أي سيقوم شخص بمهمة شخصين أو ثلاث. لذلك عليك بزيادة مهاراتك في البرمجة والتعمق في التخصص الخاص بك، وتعلم الواجهة الخلفية أيضًا Back-End أي زيادة مهاراتك وبذلك ستصبح شخص Generalist قادر على تنفيذ أي شيء بمساعدة الذكاء الاصطناعي. أي ستمتلك قوة لا يمتلكها غيرك الذي قرر التخصص في مجال محدد، ولكن حاليًا التخصص أفضل، فأنا أتحدث عما قد يحدث بعد 5 سنوات من الآن. وحاليًا كما ترى، الذكاء الاصطناعي هيمن بشكل كبير على مجال الجرافيك من خلال الذكاء الاصطناعي الذي يدعى Midjourney وأطلقت أدوبي Firefly، حيث يتم توليد الصور في ثوانٍ. لذلك يجب زياة مهاراتك في التخصص الخاص بك، وأيضًا تعلم مهارة صعبة ومعقدة ولن يؤتمن في أدائها على الذكاء الاصطناعي، مثل الواجهة الخلفية Back-End.
-
للتعامل مع الـ JSON في Laravel، يجب استخدام ميزة Eloquent ORM التي تدعم الكثير من العمليات على البيانات بما في ذلك استرجاع البيانات المخزنة على شكل JSON وتحويلها إلى صيغ أخرى. في هذه الحالة، يمكن استخدام دالة json_decode() لتحويل النص المخزن في الحقل إلى صيغة مصفوفة، ومن ثم الوصول إلى القيم بحسب اللغة المحددة. وقبل الشروع في الكود، يجب التأكد من توفر حزمة "illuminate/support" و"illuminate/database"، وإذا لم تكن مثبتة، يمكن تثبيتها عبر Composer باستخدام الأمر التالي: composer require illuminate/support illuminate/database بعد ذلك، يمكن إنشاء نموذج لجدول قاعدة البيانات الخاص بنا باستخدام الأمر التالي: php artisan make:model MyModel -m ثم يجب تعديل الحقل في ملف الـ Migration بالشكل التالي: $table->json('my_field'); ويمكن الآن إضافة بعض الدوال في نموذج الـ Model الخاص بنا لتنفيذ المهمة المطلوبة، ويمكن العثور على النموذج في المسار التالي app/Models/MyModel.php. حيث يجب إضافة الدوال التالية في النموذج: <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class MyModel extends Model { protected $fillable = ['my_field']; public function getValueByLanguage($language) { $data = json_decode($this->my_field, true); if (isset($data[$language])) { return $data[$language]; } return null; } } ويحتوي النموذج السابق على دالة getValueByLanguage() التي تستخدم دالة json_decode() لتحويل الحقل إلى صيغة مصفوف، ويمكن استخدام هذه الدالة للاسترجاع القيم بحسب اللغة المحددة. إذا كانت اللغة متوفرة، فسيتم إرجاع القيمة المقابلة، وإلا سيتم إرجاع null.
-
الموقع الذي تريد إنشاء مثله، يستخدم التقنيات التالية: React Emotion Next.js أنصح باستخدامها إذا كنت تريد تحسين الـ SEO node.js Storyblok بالنسبة لإدارة المحتوى وتستطيع استخدام Strapi أيضًا بدلاً منه وهناك بعض الأدوات التي يمكنك الاستفادة منها في موقعك: 1- Stripe هو مزود خدمة المدفوعات الإلكترونية، ويمكن استخدامه لتوفير مجموعة متنوعة من خيارات الدفع على الموقع، بما في ذلك بطاقات الائتمان والتحويلات المصرفية والدفع النقدي. 2- Salesforce يمكن استخدام Salesforce لإدارة الحجوزات والطلبات والمعاملات التجارية الأخرى، ويوفر أدوات قوية لإدارة العملاء وتتبع المبيعات وتحليل البيانات. 3- HubSpot تستطيع استخدام HubSpot لتحسين تجربة المستخدم وزيادة الإيرادات، ويوفر أدوات لتحسين محركات البحث وتحسين التسويق الرقمي وإدارة العلاقات مع العملاء. 4- TripAdvisor API TripAdvisor API يوفر الوصول إلى مجموعة واسعة من المعلومات حول المواقع السياحية. 5- الـ APIs السياحية هناك العديد من الـ APIs السياحية المتوافرة مثل Amadeus و Sabre و Travelport للحصول على معلومات حول الرحلات والحجوزات والأسعار والتوفر، وتكون هذه المعلومات مفيدة جدًا لتطوير موقع سياحي قوي وشامل.
-
من خلال الخطأ الذي ظهر لك في الصورة، لاحظت أن الكائن "Student" الذي تم إنشاؤه لا يحتوي على الخاصية "search" التي يتم الإشارة إليها في سطر الخطأ، وبالتالي يجب التحقق من وجود هذه الخاصية في الصفحة التي تحتوي على الصفة __init__ من الكلاس Student. علاوة على ذلك، قد يكون هناك خطأ إملائي أو نحوي في الأمر الذي يحدد كيفية عرض البيانات في المتصفح، وهو الذي يتضمن الخاصية "search". وتستطيع تصحيح هذا الخطأ عن طريق تحديد الخاصية الصحيحة في الصفحة التي تحتوي على الصفة __init__ من الكلاس "Student"، أو عن طريق إضافة الخاصية "search" للكائن "Student". أيضًا تستطيع التحقق من وجود أي أخطاء إملائية أو نحوية في الأمر الذي يحدد كيفية عرض البيانات في المتصفح. وفي حال لم تتمكن من تحديد سبب الخطأ، يمكنك مشاركة الكود الذي يحتوي على صفحة __init__ من الكلاس "Student" والكود الذي يحدد كيفية عرض البيانات في المتصفح، وذلك لمساعدتك في حل المشكلة بشكل أفضل.
-
ستحتاج إلى القيام بالخطوات التالية: 1- إعداد Identity Server تثبيت WSO2 Identity Server على الخادم الخاص بك والتأكد من أنه يعمل بشكل صحيح. قم بإنشاء تطبيق جديد في Identity Server. يمكنك القيام بذلك من خلال لوحة التحكم الخاصة ب Identity Server. 2- إعداد .NET Core تثبيت .NET Core SDK على جهاز الكمبيوتر الخاص بك. إنشاء مشروع .NET Core جديد باستخدام أي محرك قواعد بيانات تفضله، مثل Entity Framework. 3- ربط Identity Server و .NET Core قم بإضافة مكتبة WSO2 Identity Server إلى مشروع .NET Core الخاص بك باستخدام مدير حزم NuGet. إنشاء ملف تكوين جديد لـ Identity Server في مشروع .NET Core الخاص بك. يمكنك القيام بذلك باستخدام ملفات JSON أو YAML. ثم إنشاء ملف Startup.cs في مشروع .NET Core الخاص بك وقم بتكوين خدمة الاعتماد الخاصة ب Identity Server. ويمكنك استخدام الكود التالي: public void ConfigureServices(IServiceCollection services) { // Add authentication services services.AddAuthentication("Bearer") .AddJwtBearer("Bearer", options => { options.Authority = "https://localhost:9443/oauth2/token"; options.Audience = "myapp"; }); // Add framework services services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseAuthentication(); app.UseMvc(); } حيث تم استخدام AddJwtBearer لإضافة دعم JWT إلى .NET Core، وتكوين خياراته لاستخدام Authority و Audience الخاصة ب Identity Server. بعد الانتهاء من الخطوات المذكورة أعلاه، باستطاعتك اختبار الاتصال بين Identity Server و .NET Core عن طريق إنشاء نموذج بسيط في .NET Core وإضافة تسجيل دخول وتسجيل خروج باستخدام الأمر HttpContext.SignInAsync و HttpContext.SignOutAsync. وبإمكانك استخدام الكود التالي كقالب لنموذجك: public class AccountController : Controller { public async Task<IActionResult> Login(string returnUrl = "/") { var result = await HttpContext.AuthenticateAsync("Bearer"); if (result.Succeeded) { return LocalRedirect(returnUrl); } else if (result.Failure != null) { ModelState.AddModelError("", "Failed to authenticate"); } return View(); } public async Task<IActionResult> Logout() { await HttpContext.SignOutAsync("Bearer"); return RedirectToAction(nameof(HomeController.Index), "Home"); } } تم استخدام HttpContext.AuthenticateAsync لتسجيل دخول المستخدم باستخدام خدمة الاعتماد الخاصة ب Identity Server، واستخدمت HttpContext.SignOutAsync لتسجيل خروج المستخدم. وتحديد اسم الخدمة (Bearer) الذي تم استخدامه في ConfigureServices في Startup.cs في الأمر HttpContext.AuthenticateAsync و HttpContext.SignOutAsync.
-
باستطاعتك استخدام ميزة الـ Validation المتوفرة في Laravel لتحقق من صحة الحقول وتعيين رسائل الخطأ المناسبة لكل حقل بشكل منظم. من خلال استخدام ملف التحقق (validation) الموجود في المسار app/Http/Requests لتحديد قواعد التحقق لكل حقل، ثم استخدام هذا الملف لتحقق من صحة الحقول وعرض رسائل الخطأ الخاصة بكل حقل. فمثلاً، إذا كان لديك حقل "name" في نموذج التسجيل، فيمكنك إنشاء ملف التحقق التالي: namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class RegisterRequest extends FormRequest { public function rules() { return [ 'name' => 'required|min:3|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|confirmed|min:6', ]; } public function messages() { return [ 'name.required' => 'يجب أن تدخل اسمك.', 'name.min' => 'يجب أن يحتوي الاسم على 3 أحرف على الأقل.', 'name.max' => 'يجب أن يحتوي الاسم على 255 حرفًا كحد أقصى.', 'email.required' => 'يجب أن تدخل عنوان بريدك الإلكتروني.', 'email.email' => 'يجب أن يكون عنوان بريدك الإلكتروني صالحًا.', 'email.unique' => 'عنوان البريد الإلكتروني هذا مستخدم بالفعل.', 'password.required' => 'يجب أن تدخل كلمة مرور.', 'password.min' => 'يجب أن تحتوي كلمة المرور على 6 أحرف على الأقل.', 'password.confirmed' => 'تأكيد كلمة المرور غير متطابق.', ]; } } و في المثال، تم تعريف قواعد التحقق لحقول الاسم والبريد الإلكتروني وكلمة المرور، وتم تعريف رسائل الخطأ الخاصة بكل حقل. ثم يمكنك استخدام ملف التحقق في نموذج التسجيل الخاص بك كالتالي: public function register(Request $request) { $validatedData = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email|unique:users|max:255', 'password' => 'required|min:6|max:255', ]); // اكمل هنا بالكود الذي تريده } بعد ذلك، عليك باستخدام خاصية "error message bag" في Laravel لعرض رسائل الخطأ وتعليقها على حقول الإدخال المحددة. وفي حالة عدم مرور عملية التحقق بنجاح، يتم إنشاء "error message bag" تحتوي على جميع رسائل الخطأ المتعلقة بالحقول الفارغة أو غير الصالحة، وباستطاعتك استخدام هذا الملف لعرض رسالة الخطأ المناسبة لكل حقل إدخال بشكل فردي. كمثال، استخدم الكود التالي في ملف نموذج التسجيل: @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <div class="form-group"> <label for="name">Name</label> <input type="text" class="form-control" id="name" name="name" placeholder="Enter your name"> @error('name') <div class="alert alert-danger">{{ $message }}</div> @enderror </div> <div class="form-group"> <label for="email">Email</label> <input type="email" class="form-control" id="email" name="email" placeholder="Enter your email"> @error('email') <div class="alert alert-danger">{{ $message }}</div> @enderror </div> <div class="form-group"> <label for="password">Password</label> <input type="password" class="form-control" id="password" name="password" placeholder="Enter your password"> @error('password') <div class="alert alert-danger">{{ $message }}</div> @enderror </div> هنا، يتم عرض رسالة الخطأ الشاملة في الجزء العلوي من النموذج باستخدام دالة $errors->any()، وتعرض رسالة الخطأ الفردية لكل حقل إدخال بشكل منفصل باستخدام @error('field_name') و $message، حيث يتم استبدال 'field_name' بالاسم الحقيقي لحقل الإدخال المحدد.
- 4 اجابة
-
- 1
-
-
رسالة الخطأ التي تظهر لك، تعني أن حجم صفوف الجدول يتجاوز الحد الأقصى المسموح به لنوع الجدول الذي يتم استخدامه في قاعدة البيانات. مما يعني أنه يتعين عليك تغيير بعض الحقول من نوع VARCHAR إلى أنواع TEXT أو BLOB، حيث يتم تخزين هذه الأنواع من الحقول بشكل مختلف ولا تساهم في زيادة حجم الصف. مثلاً، تغيير حقول Uni_vision، uni_Mission و uni_Goals إلى أنواع TEXT، بالإضافة إلى تحويل الحقل About_university إلى نوع LONGTEXT، حيث تسمح هذه الأنواع بتخزين كميات كبيرة من البيانات. الكود التالي يوضح كيفية إجراء هذه التغييرات: $table->unsignedSmalllnteger('university_id', true)->unigid(); $table->string('uni_name', 30); $table->text('Uni_vision'); $table->text('uni_Mission'); $table->text('uni_Goals'); $table->longText('About_university'); $table->string('Rector_Speech', 4000); $table->string('uni_Location', 460); $table->string('uni_Area', 400); تأكد من إجراء التغييرات المطلوبة في قاعدة البيانات وفي ملفات الترحيل (migration files) قبل إعادة تشغيل تطبيق Laravel.
- 3 اجابة
-
- 1
-
-
لتقييد الحقول، باستطاعتك استخدام العديد من الخيارات المختلفة المتاحة في Laravel، ومنها استخدام الخيار "required" لتحديد أن الحقل إلزامي، واستخدام الخيار "max" لتحديد الحد الأقصى لعدد الحروف المسموح بها في الحقل. مثلاً، لتحديد أن حقل "uni_name" إلزامي ولا يمكن أن يتجاوز 30 حرفًا، على النحو التالي: $table->string('uni_name', 30)->required()->max(30); وبالمثل، يمكنك تحديد الخيارات المناسبة للحقول الأخرى في الجدو، ولا يلزم تحويل الحقول إلى خيار النص "text" إذا كانت الحدود الحالية تفي بالغرض. إلى جانب الخيار "required"، يوجد العديد من الخيارات الأخرى المتاحة في Laravel لتقييد الحقول، وبعض الخيارات الشائعة تشمل: min: لتحديد الحد الأدنى لعدد الحروف المسموح بها في الحقل. max: يستخدم لتحديد الحد الأقصى لعدد الحروف المسموح بها في الحقل. unique: لتحديد أن القيمة المدخلة يجب أن تكون فريدة في الجدول. email: للتحقق من أن القيمة المدخلة هي عنوان بريد إلكتروني صالح. numeric: للتحقق من أن القيمة المدخلة هي قيمة رقمية صالحة. date: للتحقق من أن القيمة المدخلة هي تاريخ صالح. in: لتحديد مجموعة من القيم المسموح بها للحقل. كمثال، لتحديد أن حقل "uni_Goals" يجب أن لا يتجاوز 3000 حرف، يمكن استخدام الكود التالي: $table->string('uni_Goals', 3000)->max(3000); ويجب أن يتم تمرير قيمة المدخلات المسموح بها للخيار max بالإضافة إلى القيمة القياسية لحد الحقل (في هذه الحالة 3000).
- 3 اجابة
-
- 1
-
-
مرحبًا زكريا، ستجد الملفات ورابط المستودع الخاص بالمشروع في بداية كل مسار حيث ستجد قسم باسم مدخل أو تعريف أو مقدمة وهكذا، وأسفل الفيديو ستجد رابط المستودع والملفات المستخدمة في المشروع لتحميلها، مثال يتم وضع رابط المستودع في أول فيديو في المسار مثل هنا الصورة ستجد رابط المستودع الخاص بأساسيات تطوير الواجهة الأمامية عند الضغط على أساسيات HTML ستجد قسم باسم مدخل. وإذا كنت تقصد دورة تطوير واجهات المستخدم فيمكنك إيجاد المرفقات أسفل الفيديو التالي لمشروع بناء واجهة مستخدم تشبه موقع YouTube: أي أن كل مسار ستجد في بدايته رابط المستودع في حال كان هناك مشروع وأيضًا المرفقات في حال توافرت. وأرجو منك طرح السؤال أسفل فيديو الدورة في التعليقات لنتمكن من مساعدتك. بالتوفيق.
-
في Android، يتم إنشاء واجهات المستخدم باستخدام تسلسل من العناصر التي تشكل تسلسلًا من هرمية العناصر. تُعرف هذه الهرمية بـ "View Hierarchy"، وهي ببساطة ترتيب من العناصر (أو العناصر المرئية) التي تم إنشاؤها لعرض الواجهة الرسومية لتطبيق Android. حيث تبدأ هرمية العناصر بـ "root view" ، وهي العنصر الأساسي الذي يحتوي على جميع العناصر الأخرى في الهرمية. ثم تأتي العناصر الفرعية التي تم إضافتها للواجهة الرسومية لتشكل الشكل النهائي للواجهة. ويتم تحديد العناصر بواسطة عنصر معين يسمى "layout manager" أو "view group" الذي يحدد ترتيب وتخطيط العناصر الفرعية. ومن الأمثلة على هذه العناصر هي LinearLayout وRelativeLayout وFrameLayout وغيرها. يمكن لكل عنصر أن يحتوي على عدة خصائص وطرق للتفاعل مع المستخدم وهذا يعتمد على نوع العنصر. على سبيل المثال ، يمكن للعنصر أن يكون "Clickable" أو "Scrollable" أو "Focusable" أو "Editable" ، وتستطيع الاستفادة من هذه الخصائص لتحسين وظيفة الواجهة الرسومية. ومن الأمثلة على بعض العناصر الأساسية في هرمية العناصر: TextView: يستخدم لعرض النص. ImageView: يستخدم لعرض الصور. Button: يستخدم للتفاعل مع المستخدم والنقر عليه. EditText: يستخدم للحصول على مدخلات النص من المستخدم. ListView: يستخدم لعرض القوائم المنبثقة. وعندما تبدأ في تصميم واجهة مستخدم Android ، من المهم فهم تسلسل العناصر في هرمية العناصر وفهم كيفية عرض العناصر وتفاعلها مع المستخدم وتنظيمها بشكل فعال، وبالإمكان استخدام مختلف أدوات تحرير XML المختلفة مثل Android Studio و Eclipse لتصميم هرمية العناصر بشكل بصري. علاوة على ذلك، يتم استخدام هرمية العناصر في Android بشكل واسع في بناء تطبيقات الأندرويد ، حيث يتم تعيين كل عنصر بشكل فردي ويتم استخدامه للتحكم في تفاعلات المستخدم وعرض البيانات والمحتوى وإدارة الأحداث. وبالإضافة إلى ذلك ، باستطاعتك تغيير مظهر هرمية العناصر وتخصيصها وفقًا لاحتياجات التطبيق. وتستطيع الاستفادة من عدة أدوات وتقنيات لتحسين أداء وتجربة المستخدم مع هرمية العناصر ، بما في ذلك استخدام تقنيات تحميل الصور والملفات بشكل فعال وتحسين الذاكرة المؤقتة وتنظيم عناصر الواجهة بشكل صحيح، وتأكد من اتباع مبادئ التصميم الجيدة والتركيز على تحسين تجربة المستخدم في جميع الأوقات.
-
حاول تجربة حل المشكلة باستخدام كلمة المرور continue داخل الاستثناء (except) الذي يتم إثارته في حالة عدم وجود اسم المستخدم في تليجرام، بحيث يقوم الكود بتجاهل هذا الاسم والمتابعة في الكشف عن الأسماء الأخرى الموجودة في القائمة. عليك بتحديث الكود كما يلي: for username in users: try: user_entity = client.get_entity(username) except UsernameInvalidError: print(f"Could not find username {username}") continue # تجاهل هذا الاسم والمتابعة في الكشف عن الأسماء الأخرى receiver = InputPeerUser(user_entity.id, user_entity.access_hash) message = f"massge{random.randint(1, 1000)}" client.send_message(receiver, message, parse_mode='html') print(f"Message sent to {username}") time.sleep(30) حيث تم إضافة كلمة المرور continue داخل الاستثناء (except)، والتي تحول دون تنفيذ باقي التعليمات في اللفة الحالية لحلقة الـ for، وتنتقل مباشرةً إلى التعليمات الخاصة بالحلقة التالية.
- 2 اجابة
-
- 1
-
-
من الأفضل وضع هذا الملف داخل مجلد public في مشروع React. حيث أن مجلد public يحتوي على الملفات التي تكون متاحة على العام في في تطبيق React، وعندما تقوم بإضافة ملف إلى مجلد public في مشروع React، يتم تضمينه في الحزمة التي تتم إنشاؤها عند تشغيل الأمر "build". ,بالنسبة للنص الذي يتضمنه الملف بصيغة pdf، يمكن استخدام مكتبات لتحويله إلى محتوى نصي قابل للعرض مباشرة في التطبيق، وبالتالي يمكن وضعه داخل ملفات المشروع src. وكمثال، هناك مكتبة pdf.js لتحويل محتوى ملف PDF إلى محتوى نصي قابل للعرض في تطبيق React. لتثبيت هذه المكتبة استخدم الأمر التالي: npm install pdfjs-dist ثم يمكن استيراد المكتبة في ملف React واستخدامها لتحويل الملف PDF إلى محتوى نصي، كالتالي: import pdfjsLib from 'pdfjs-dist'; // ... const url = '/path/to/pdf/file.pdf'; const pdfDoc = await pdfjsLib.getDocument(url).promise; const page = await pdfDoc.getPage(1); const textContent = await page.getTextContent(); const text = textContent.items.map(item => item.str).join(' '); // now you can use the text in your React component تم استخدام pdfjs-dist لتحميل الملف PDF من المسار المحدد، ثم استخراج محتوى الصفحة الأولى من الملف PDF كنص باستخدام getTextContent() ويتم دمجها في سلسلة واحدة باستخدام join()، ومن ثم يمكن استخدام النص في تطبيق React.
-
سأتحدث معك بواقعية، إذا قمت بتعلم الواجهة الأمامية باستخدام React فستحتاج إلى خبرة سنة على الأقل لتحصل على وظيفة بشركة، أما إذا أردت العمل على مواقع العمل الحر الأجنبية فستجد فرص بالتأكيد. وإذا أردت أن تحصل على فرصة وظيفة في حالة تعلم React فعليك أيضًا بتعلم Node.js و Next.js ويا حبذا لو قمت بتعلم React native لكن ذلك ليس كإضافة فقط ويمكنك إيجاد وظائف لمطور React native فقط. لكن بالنسبة لعالمنا العربي، أنت بحاجة إلى تعلم PHP وإطار عمل لارافيل وأيضًا وورد بريس وذلك بالنسبة للواجهة الخلفية وبالنسبة للواجهة الأمامية عليك بتعلم Vue.js لتتمكن تصميم واجهة متفاعلة وسلسة، وأخبرتك بتعلم Vue.js لأنها أسهل ومتوافقة مع لارافيل، وبذلك ستحصل على وظيفة بالنسبة لمستوى مبتدأ Junior. وعليك ببناء 3 مشاريع حقيقية وبتصميم جيد باللغات والتقنيات التي ذكرتها، لوضعها في معرض أعمالك، وبعد ذلك يمكنك التقدم للوظائف سواء في السوق المحلي لديك أو على مواقع العمل الحر مثل مستقل وخمسات وبعيد. وفترة الحصول على وظيفة بعد الإنتهاء من المسار الخاص بك، تتراوح ما بين 3 أشهر إلى 6 أشهر لذلك لا تصاب بالإحباط فالبعض قد يستغرق سنة، والأمر يعود إلى مستوى مهاراتك في البرمجة وأيضًا الرزق، فالبعض قد يحصل على عمل خلال شهر ولا مشكلة في ذلك. لذلك ركز جيدًا على تعلم الأساسيات وبناء مشاريع واقعية وليس مجرد نماذج صغيرة، ومن خلال دورة PHP ستتمكن من فعل ذلك، ولكن لا تكتفي بالمشاريع التي ستقوم ببنائها خلال الدورة، بل قم ببناء مشاريع أخرى بعد الإنتهاء أو قم بإعادة بناء المشاريع بمفردك، فلا تكتفي أبدًا بمرة واحدة، حيث ستحتاج إلى التكرار والعمل بمفرد بدون المدرب. ويمكنك العودة إلى الدروس أو الكود في مستودع المشروع إذا واجهت صعوبة في تنفيذ أو تذكر أمرًا ما. وإذا أردت التخصص في الواجهة الأمامية فقط والعمل بشكل سريع عليك في السوق المحلي وليس مواقع العمل الحر العربية، فعليك بتعلم Angular، ودائمًا ما يطلب معها إطار .NET للواجهة الخلفية. ودائمًا الأمر يتوقف على ما الذي تريده أنت؟ هل تريد العمل في السوق المحلي؟ إذًا عليك بتفقد الوظائف لديك وما هي أكثر اللغات والتقنيات المطلوبة قبل إختيار المسار البرمجي. وقد تم النقاش من قبل حول الدورات وحول مسار الـ Full-stack لذلك أرجو منك قرائتها.
- 5 اجابة
-
- 1
-
-
ربما الخطأ في الكود الذي تستخدمه في React JS، في طريقة استدعاء البيانات من API أو في معالجة البيانات المسترجعة، ويمكنك مراجعة الكود الخاص بك والتأكد من أنه يتفق مع تنسيق البيانات المسترجعة من API، ومراجعة مخرجات console.log() في متصفحك في حال وجود أي رسائل خطأ. حاول تجربة الكود التالي بالنسبة لكود react import { useEffect, useState } from 'react'; import axios from 'axios'; function ShortCut({match}) { const [error, setError] = useState(""); const [short, setShort] = useState(""); const getShortLink = () => { const data = { short: match.params.id }; axios.get(`/${data.short}`) .then(response => { console.log(response.data.link); if (response.data.link.startsWith("https://") || response.data.link.startsWith("http://")) { setShort(response.data.link); } else { setShort("https://" + response.data.link); } }) .catch(error => { setError("Not Found This Url"); }); }; useEffect(() => { getShortLink(); }, []); return ( <div className='shortcut'> {!error ? <p>OPENING</p> : ""} {error ? <div> <h2>Not Found URL</h2> <a href="/">Go To Home</a> </div> : ''} <h1>SHORTCUT</h1> <p>{short}</p> <button onClick={getShortLink}>GET LINKS</button> </div> ); } export default ShortCut;
- 5 اجابة
-
- 1
-
-
المشكلة تكمن في الـ endpoint الذي تقوم بزيارته عند التنقل إلى الصفحة الثانية، حيث يتم إرجاع JSON بدلاً من الصفحة المرتقبة كما ذكرت. وعلى الأرجح أن المشكلة بسبب الكود الموجود في ملف controller.js حيث يتم البحث عن رابط الاختصار بالاستعانة بالـ ID الموجود في رابط الطلب، ولكن الرابط المسترجع لا يملك تنسيق HTML بل هو JSON فقط، مما يشير إلى أن البحث لم يكن ناجحًا في استرجاع الرابط الصحيح. لذا، يمكنك التحقق من صحة الـ endpoint المستخدم في الـ request الخاص بـ "Show_Link" للتأكد من استرجاع الرابط الصحيح، وأيضًأ التحقق من صحة الرابط المستخدم في المتغير "data" في ملف React js حيث يتم إرسال طلب GET لاسترجاع الرابط المختصر. وأرجو منك بعد ذلك، كتابة الأكواد بشكل نصي من خلال إضافتها عبر أيقونة <> عند إضافة السؤال. وإذا استمرت المشكلة، قم بإرفاق مجلد المشروع بعد ضغطه.
- 5 اجابة
-
- 1
-
-
يجب عليك الإهتمام بقراءة رسالة الخطأ التي تظهر لك، ففهي نهاية رسالة الخطأ إذا قمت بقراءة الكود، ستجد أن هناك نقطة زائدة في السطر post.like. وأيضًا هناك أدوات تساعدك في تفادي مثل تلك الأخطاء وهي تسمى Linters وأشهرها وأفضلها هي إضافة ESLint والتي يجب عليك تثبيتها وهي تدعم جافاسكريبت و Typescript. وأيضًا يجب تثبيت الـ Compiler الخاص بلغة Typescript من خلال الأمر التالي: npm install -g typescript وسيتم تثبيت الـ الـ Compiler على جهازك أي أنك لست بحاجة إلى تثبيته لكل مشروع على حدى. وباستطاعتك التأكد من تثبيته من خلال الأمر التالي الذي يظهر لك رقم الإصدار: tsc --version وبذلك تظهر لك الأخطاء بالشكل التالي
- 3 اجابة
-
- 1
-