عبود سمير

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

    1,580
  • تاريخ الانضمام

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

  • Days Won

    25

السُّمعة بالموقع

960 Excellent

المعلومات الشخصية

  • النبذة الشخصية سمير عبود من الجزائر مطور مواقع ويب، مدرب مساعد لطلاب أكاديمية حسوب، بإمكانك توظيفي من موقع مستقل
  • الموقع
  1. بالطبع بإمكانك ذلك لأنه يوجد علاقة بين النموذج Role و النموذج Permission فمثلاً إذا كان لديك: $admin = Role::where('name', 'admin')->first(); يُمكنك الحصول على الصلاحيات المُتاحة لهذا الدور عن طريق العلاقة permissions: $admin = Role::where('name', 'admin')->first(); $adminPermissions = $admin->permissions; dd($adminPermissions); و بما أنه توجد علاقة فيُمكنك عمل أي شيء تريده مثلاً إذا أردت جلب كل الأدوار و تحميل الصلاحيات بشكل حثيث يُمكنك ذلك من خلال: $roles = Role::whereRoleNot(['super_admin', 'admin', 'user']) ->whenSearch(\request('search')) ->with(['permissions']) ->withCount('users') ->paginate(5); و في صفحة العرض و أنت تقوم بعرض الأدوار يُمكنك عمل حلقة لصلاحيات الدور: @foreach($roles as $role) ... @foreach($role->permissions as $permission) ... @endforeach @endforeach
  2. بإمكانك تخصيص تطبيق الطبقات الوسيطة (middlewares) في المتحكم و ذلك في الباني الخاص به مثال: <?php class DiscountController extends Controller { public function __construct() { $this->middleware('permission:read discount codes')->only('index'); $this->middleware('permission:add discount code')->only(['create', 'store']); $this->middleware('permission:edit discount code')->only(['edit', 'update']); $this->middleware('permission:delete discount code')->only('destroy'); } } مثلاً أنت تريد تطبيق الmiddleware auth على index فقط فتقوم بالتالي: $this->middleware('auth')->only('index'); و إن كنت تريد تطبيق أكثر من middleware على نفس التابع يُمكنك تمريرها على شكل مصفوفة: $this->middleware(['auth', 'middl2'])->only('index'); بطريقة عكسية للتابع only هناك تابع آخر يُسمى except و هو يعمل بعكس only.
  3. هل تقصد دروس و مقالات مكتوبة أم دروس دورة أم ماذا ؟ هناك عدة مقالات في الأكاديمية تشرح عن خاصية الصندوق المرن او flex box منها: تعرف على CSS Flexbox وأساسيات استعماله لهيكلة صفحات الويب أساسيات Flexbox في CSS مع أمثلة عملية أمثلة نموذجية لاستخدام flexbox في CSS3 و بإمكانك الوصول لعدة مقالات أخرى بمجرد البحث من خلال نموذج البحث، الرجاء التوضيح أكثر حتى نستطيع مساعدتك.
  4. React Native هو عبارة عن اطار عمل لبرمجة تطبيقات أصيلة عن طريق الجافاسكربت وذلك باعادة استعمال المكونات الطبيعية للمنصة. هذا الاطار يمكن من انشاء تجربة المستخدم دات مستوى عالي عن طريق ادوات برمجية تعتمد على javascript و مكتبة React و هو مدعوم من طرف فيسبوك. الهدف من استخدام React Native هو تسهيل عمل المطورين عبر جميع منصات الهواتف بشعار —  تعلم مرة واحدة واكتب في كل مكان. فتعلمك لهذه التقنية سيمكنك من برمجة تطبيقات لكل من أندرويد و iOS، يُمكنه التعامل مع firebase، التعامل مع الواجهات البرمجية ( APIs ) و خدمات الويب. قبل تعلم React Native تعلم أسس البرمجة بلغة جافاسكربت ثم تعلم مكتبة React لأنها ستُساعدك كثيراً في تعلم React Native.
  5. اعتقد أن المشكلة تكمن في تفعيل حسابك باي بال لأنه بعد ربط الحساب ببطاقة إئتمانية سيقوم باي بال بالتأكد من ملكيتك للبطاقة من خلال استقطاع مبلغ 1.95 $ من بطاقتك الائتمانية، يجب توفير 2 $ كحد أدنى في بطاقتك، ولا تقلق سيعاد لك المبلغ لاحقا بعد انتهاء عملية التأكيد. بعد إتمام عملية استقطاع المبلغ عليك الذهاب لموقع البنك الخاص بك والتأكد من كشف الحساب لبطاقتك الائتمانية والحصول على رمز التأكيد المكون من أربع أرقام والذي سيكون مكتوب في بيانات عملية الشراء. بعد الحصول على رمز التفعيل تعود لحسابك في باي بال وتضغط على المحفظة في القائمة، ثم تختار بطاقتك الائتمانية المراد تأكيدها، وادخل الرمز المكون من 4 أرقام وانقر على تأكيد. بعد تأكيد البطاقة سيفعل حسابك بشكل كامل. تذكر انه يُمكنك دائما التواصل مع الدعم الفني في كل من باي بال و مستقل لحل المشكلة.
  6. مرحباً معتز، يوجد لديك خطأ في تعريف المتحكم: class UserConroller extends Controller // الصواب class UserController extends Controller في صفحة العرض profile يوجد خطأ أيضاً: <img src="{{asser(images/avatar).$user->avatar}}" class="w3-cercle" style="size: 255px"> {{-- الصواب --}} <img src='{{asset("images/avatar/$user->avatar")}}' class="w3-cercle" style="size: 255px"> كما أنك في حالة إنشاء مستخدم جديد سيأخذ الصورة default.png لكن إسم الصورة لديك في المجلد هو avatar.png يجب تغييرها لنفس الإسم حتى تظهر الصورة الإفتراضية في حالة عدم وضع صورة. ملاحظة: هذا القسم هو للأسئلة العامة و ليس لأسئلة الدورات فإن واجهتك أي مشكلة أو إستفسار يُستحسن طرحه أسفل الدرس و سيُتابع معك المدربين هناك. بخصوص الإصدارات الخاصة بلارافيل فلا يوجد فرق كبير بينها و من الأفضل لك التعرف على عدة طرق لعمل شيء ما. كما أن الأكاديمية تقوم بتحديث و إضافة مسارات جديدة في العديد من الأوقات. و من المؤكد أنهم سيأخذون ملاحظاتك كلها بعين الإعتبار في تحديثاتهم المستقبلية. كما أن معالجة الأخطاء شيء مهم و هي ما ستزيد في خبرتك و تطوير مستواك. بالتوفيق.
  7. ليس هناك شيء مميز في الأمر فكل من vs code و android studio أدوات يستخدمها المطورون و ما دمت مرتاح مع أحدها في التطوير فيكفيك ذلك، هناك شيء و هو أن برنامج android studio به الكثير من الخصائص و يستهلك موارد الجهاز بشكل كبير من ذاكرة عشوائية و ما إلى ذلك فالتطوير على اندرويد ستوديو يتطلب جهاز بمواصفات أعلى بعكس vs code الذي حتى لو كان جهازك متوسط نسبيا تستطيع التطوير من خلاله.
  8. بعد تثبيت البرنامج قومي بتسجيل الدخول الى حسابك ثم من خلال قائمة file اختاري add local repository بعد ذلك حددي مجلد المشروع الخاص بك لفتحه على البرنامج ثم ستتمكنين من رفع ملفاتك
  9. يُمكنك إستخدام برنامج GitHub Desktop
  10. هذه هي الطرق المُستعملة في حل هذه المُشكلة، نحن لحد الآن لا نعلم إن كنت تُطبقين الخطوات بشكل سليم أم لا، الرجاء رفع صور لما تقومين به، حتى نعلم كيف نُساعدك.
  11. هناك عدة لغات أخرى على غرار لغة دارت ليس لها تصنيف في قسم البرمجة و السبب أننا لم نقم لحد الساعة بنشر مقالات في هذه اللغة إذا ما قررت الأكاديمية في المستقبل نشر مقالات متخصصة في هذه اللغة فستجد لها تصنيف حيث يُمكنك الوصول إلى مقالاتها من خلاله.
  12. يُمكنك إنشاء قاموس بقيم إبتدائية بهذا الشكل: my_dict = {"foo": 1, "bar": 34} print(my_dict) # {'foo': 1, 'bar': 34} أما إن أردت إنشاء قاموس بالإعتماد على قاموس آخر لنفترض أنه لديك هذا القاموس: my_dict = {"foo": 1, "bar": 34, "baz": 15} و تريد إنشاء قاموس ثاني من القاموس الأول يحتوي فقط على القيم الفردية يُمكنك ذلك من خلال: my_dict = {"foo": 1, "bar": 34, "baz": 15} new_dict = {k: v for (k, v) in my_dict.items() if v % 2 != 0 } print(new_dict) و هذا هو الخرج: {'foo': 1, 'baz': 15}
  13. لنفترض أنه لديك اسم الملف على شكل سلسلة نصية بهذا الشكل: example.jpeg للحصول على اللاحقة نقوم بتحويل السلسلة إلى مصفوفة بإستعمال الدالة split و تمرير مُحدد الفصل المحرف "." حتى يتم الفصل على أساسه. و بالتالي يُصبح لدينا مصفوفة مكونة من عنصرين example و jpeg. ['example', 'jpeg'] و لإستخراج اللاحقة من هذه المصفوفة نجلب آخر عنصر أي الموجود في الفهرس -1 بهذا الشكل: filename = "example.jpeg" extension = filename.split(".")[-1] print(extension) #jpeg
  14. إذا كنت تقوم بتحديث composer إنطلاقاً من الإصدار الأول فسيظهر لك تنبيه أن هناك إصدار أعلى مُتاح و هو الإصدار الثاني يُمكنك الترقية إلى هذا الإصدار عن طريق الأمر: composer self-update --2 كما يُمكنك معرفة رقم الإصدار عن طريق الأمر: composer -V للرجوع إلى إصدار سابق يُمكنك تنفيذ الأمر: composer self-update --rollback