شو يعني Caching؟ 🤔
ببساطة، Caching هي عملية تخزين نسخة من الملفات أو البيانات تبع التطبيق أو الموقع بحيث المستخدم يقدر يوصلها بشكل أسرع، وهاد بيعتبر من أهم الطرق اللي بنستخدمها لتحسين أداء التطبيقات والمواقع. 🌐
طيب شو أنواع Caching وكيف بيشتغل؟ خلونا نفصل أكتر:
1. Browser Caching
هون الفكرة إنو المتصفح عند المستخدم بيخزن نسخة من الملفات تبع التطبيق (مثل الصور، الأكواد، أو البيانات) ليقدر يفتح الموقع أسرع لما يرجع يزوره. في عدة تقنيات لهذا النوع، مثل:
Service Worker Cache: تخزين البيانات لتطبيقات الويب التفاعلية.
Back-Forward Cache: تسريع التنقل بين الصفحات اللي زارها المستخدم.
Cache Storage API: طريقة متقدمة للتعامل مع الكاش بشكل مباشر.
2. CDN Caching
هون بيجي دور شبكات توزيع المحتوى (Content Delivery Networks). الفكرة إنو الملفات تبع التطبيق بتتخزن على سيرفرات موزعة حول العالم، ولما المستخدم يطلب البيانات، بيخدموه من أقرب سيرفر إلو جغرافيًا. هاد الشي بيساعد بتقليل وقت التحميل وتحسين التجربة للمستخدم.
3. Application Caching
هاد النوع بيشتغل ضمن التطبيق نفسه. بنخزن بيانات معينة داخل التطبيق مثل بيانات المستخدم أو معلومات بتحتاجها الصفحات بشكل متكرر. مثال: لما نخزن معلومات المستخدم (User Info) بدل ما نطلبها كل مرة من السيرفر.
Caching مو بس بيساعد بتحسين الأداء، كمان بيوفر موارد السيرفر وبيحسن تجربة المستخدم بشكل ملحوظ. فدائمًا خلي الكاش ضمن خططك إذا بدك تطبيق سريع وفعّال! 🚀
===================
Facebook | Linkedin |Instgram | Telegram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
ببساطة، Caching هي عملية تخزين نسخة من الملفات أو البيانات تبع التطبيق أو الموقع بحيث المستخدم يقدر يوصلها بشكل أسرع، وهاد بيعتبر من أهم الطرق اللي بنستخدمها لتحسين أداء التطبيقات والمواقع. 🌐
طيب شو أنواع Caching وكيف بيشتغل؟ خلونا نفصل أكتر:
1. Browser Caching
هون الفكرة إنو المتصفح عند المستخدم بيخزن نسخة من الملفات تبع التطبيق (مثل الصور، الأكواد، أو البيانات) ليقدر يفتح الموقع أسرع لما يرجع يزوره. في عدة تقنيات لهذا النوع، مثل:
Service Worker Cache: تخزين البيانات لتطبيقات الويب التفاعلية.
Back-Forward Cache: تسريع التنقل بين الصفحات اللي زارها المستخدم.
Cache Storage API: طريقة متقدمة للتعامل مع الكاش بشكل مباشر.
2. CDN Caching
هون بيجي دور شبكات توزيع المحتوى (Content Delivery Networks). الفكرة إنو الملفات تبع التطبيق بتتخزن على سيرفرات موزعة حول العالم، ولما المستخدم يطلب البيانات، بيخدموه من أقرب سيرفر إلو جغرافيًا. هاد الشي بيساعد بتقليل وقت التحميل وتحسين التجربة للمستخدم.
3. Application Caching
هاد النوع بيشتغل ضمن التطبيق نفسه. بنخزن بيانات معينة داخل التطبيق مثل بيانات المستخدم أو معلومات بتحتاجها الصفحات بشكل متكرر. مثال: لما نخزن معلومات المستخدم (User Info) بدل ما نطلبها كل مرة من السيرفر.
Caching مو بس بيساعد بتحسين الأداء، كمان بيوفر موارد السيرفر وبيحسن تجربة المستخدم بشكل ملحوظ. فدائمًا خلي الكاش ضمن خططك إذا بدك تطبيق سريع وفعّال! 🚀
===================
Facebook | Linkedin |Instgram | Telegram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
Facebook
Log in or sign up to view
See posts, photos and more on Facebook.
❤12
تحذير أمني مهم حول Apache Tomcat
Apache Tomcat هو خادم ويب مفتوح المصدر مخصص لتشغيل تطبيقات الويب المكتوبة بلغة Java. بيستخدموه المطورين لتشغيل التطبيقات الديناميكية اللي بتعتمد على Servlets وJSP (JavaServer Pages).
إذا كنت مشغّل Tomcat على نظام ملفات غير حساس لحالة الأحرف (Case Insensitive) وعدّلت إعداد readonly الافتراضي للـ servlet بحيث صار false بدل true، ممكن تكون معرض لهجوم خطر يسمح للهاكرز ينفذوا أوامر مباشرة على السيرفر (RCE).
الإصدارات المتأثرة:
Tomcat 11: من الإصدار 11.0.0-M1 لـ 11.0.1.
Tomcat 10: من الإصدار 10.1.0-M1 لـ 10.1.33.
Tomcat 9: من الإصدار 9.0.0-M1 لـ 9.0.97.
الحل موجود في الإصدارات:
Tomcat 11.0.2 وما فوق.
Tomcat 10.1.34 وما فوق.
Tomcat 9.0.98 وما فوق.
شو لازم تعمل؟ 🔧
الخيار الأفضل: تحديث Tomcat
حدّث لإصدار آمن حسب الإصدار اللي عندك.
إذا التحديث مو خيار:
عدّل خاصية النظام sun.io.useCanonCaches بناءً على إصدار Java يلي عم تستخدمه:
Java 8 أو Java 11:
حط الخاصية على false (لأن الافتراضي هو true).
Java 17:
إذا الخاصية موجودة، لازم تكون false.
Java 21 وما فوق:
ما في داعي لأي تعديل لأن المشكلة انحلت.
ملاحظات:
الإعداد الافتراضي للـ readonly هو true، فإذا ما عدّلت عليه، غالباً ما في داعي للقلق.
بس إذا كان الإعداد false، فالنظام معرض للاستغلال.
🚨 لازم تتحرك بسرعة لتحمي السيرفر تبعك! 🚨
Apache Tomcat هو خادم ويب مفتوح المصدر مخصص لتشغيل تطبيقات الويب المكتوبة بلغة Java. بيستخدموه المطورين لتشغيل التطبيقات الديناميكية اللي بتعتمد على Servlets وJSP (JavaServer Pages).
إذا كنت مشغّل Tomcat على نظام ملفات غير حساس لحالة الأحرف (Case Insensitive) وعدّلت إعداد readonly الافتراضي للـ servlet بحيث صار false بدل true، ممكن تكون معرض لهجوم خطر يسمح للهاكرز ينفذوا أوامر مباشرة على السيرفر (RCE).
الإصدارات المتأثرة:
Tomcat 11: من الإصدار 11.0.0-M1 لـ 11.0.1.
Tomcat 10: من الإصدار 10.1.0-M1 لـ 10.1.33.
Tomcat 9: من الإصدار 9.0.0-M1 لـ 9.0.97.
الحل موجود في الإصدارات:
Tomcat 11.0.2 وما فوق.
Tomcat 10.1.34 وما فوق.
Tomcat 9.0.98 وما فوق.
شو لازم تعمل؟ 🔧
الخيار الأفضل: تحديث Tomcat
حدّث لإصدار آمن حسب الإصدار اللي عندك.
إذا التحديث مو خيار:
عدّل خاصية النظام sun.io.useCanonCaches بناءً على إصدار Java يلي عم تستخدمه:
Java 8 أو Java 11:
حط الخاصية على false (لأن الافتراضي هو true).
Java 17:
إذا الخاصية موجودة، لازم تكون false.
Java 21 وما فوق:
ما في داعي لأي تعديل لأن المشكلة انحلت.
ملاحظات:
الإعداد الافتراضي للـ readonly هو true، فإذا ما عدّلت عليه، غالباً ما في داعي للقلق.
بس إذا كان الإعداد false، فالنظام معرض للاستغلال.
🚨 لازم تتحرك بسرعة لتحمي السيرفر تبعك! 🚨
👍3🔥2
🎙 حلقة جديدة من Podcast with Somar!
هالمرة راجعين بموضوع كتيييير طلبتوه وانتظرتوه: الأمن السيبراني! 🔐💻
ضيفنا المميز لهالحلقة: المهندس علي سلمان
بخبرة تمتد لأكثر من 7 سنوات في مجال الأمن السيبراني وأمن المعلومات، محلل أمني وسابقًا مدير تطوير تقني، علي رح يشاركنا رؤيته حول:
🔸 أهم التحديات في مجال الأمن السيبراني وكيفية التصدي لها.
🔸 نصائح ذهبية لحماية الشركات من الهجمات السيبرانية.
🔸 دور التحول الرقمي في تعزيز أمن المعلومات.
🔸 مسيرته الشخصية وكيف وصل إلى الريادة في هذا المجال.
✨ إذا كنت مهتم بعالم الأمن السيبراني أو حابب تتعمق فيه، هالحلقة ما بتتفوت!
📅 الإثنين 6-1-2025
🕘 الساعة 9 مساءً بتوقيت سوريا
📍 على قناتنا في [Telegram] ويوتيوب.
جهزوا أسئلتكم، وخلونا نستفيد كلنا من خبرة علي! 🚀
لا تنسوا تشتركوا بقناة الـ YouTube حتى يوصلكم الاشعار و تشوفوا الحلقة مسجلة
هالمرة راجعين بموضوع كتيييير طلبتوه وانتظرتوه: الأمن السيبراني! 🔐💻
ضيفنا المميز لهالحلقة: المهندس علي سلمان
بخبرة تمتد لأكثر من 7 سنوات في مجال الأمن السيبراني وأمن المعلومات، محلل أمني وسابقًا مدير تطوير تقني، علي رح يشاركنا رؤيته حول:
🔸 أهم التحديات في مجال الأمن السيبراني وكيفية التصدي لها.
🔸 نصائح ذهبية لحماية الشركات من الهجمات السيبرانية.
🔸 دور التحول الرقمي في تعزيز أمن المعلومات.
🔸 مسيرته الشخصية وكيف وصل إلى الريادة في هذا المجال.
✨ إذا كنت مهتم بعالم الأمن السيبراني أو حابب تتعمق فيه، هالحلقة ما بتتفوت!
📅 الإثنين 6-1-2025
🕘 الساعة 9 مساءً بتوقيت سوريا
📍 على قناتنا في [Telegram] ويوتيوب.
جهزوا أسئلتكم، وخلونا نستفيد كلنا من خبرة علي! 🚀
لا تنسوا تشتركوا بقناة الـ YouTube حتى يوصلكم الاشعار و تشوفوا الحلقة مسجلة
❤16🔥5👍3
أصدقائي الاعزاء تمنياتي لكم ببداية اسبوع عمل موفقة لكم جميعاً
كما هي العادة نبدأ اسبوعنا بفقرة سؤال و جواب على الـ story في حسابي على instgram من هنا
🙏🏻❤️
كما هي العادة نبدأ اسبوعنا بفقرة سؤال و جواب على الـ story في حسابي على instgram من هنا
🙏🏻❤️
❤3
💡 نصيحة سريعة في Laravel: في حال كان عنا جدولين مرتبطين ببعض مثلا users , orders
وبدي احدث وأقدم order للمستخدم كيف فيني جيبهم بأفضل طريقة..
باختصار فينا نستفاد من ال Eloquent Relationships اللي بتقدمهم laravel بكل سهولة 🚀
🔹 مثال عملي: إذا كان لدينا نموذجين: User و Order، بحيث بيملك كل مستخدم العديد من الطلبات.
لحتى نجيب أحدث طلب واقدم طلب :
في User Model منكتب العلاقات التالية الموضحة في الصورة
شكراً للصديق أيهم إبراهيم على المساهمة في هذا المحتوى 🙏🏻❤️
Laravel #PHP #WebDevelopment #CodingTips #Eloquent #ORM #Programming
وبدي احدث وأقدم order للمستخدم كيف فيني جيبهم بأفضل طريقة..
باختصار فينا نستفاد من ال Eloquent Relationships اللي بتقدمهم laravel بكل سهولة 🚀
🔹 مثال عملي: إذا كان لدينا نموذجين: User و Order، بحيث بيملك كل مستخدم العديد من الطلبات.
لحتى نجيب أحدث طلب واقدم طلب :
في User Model منكتب العلاقات التالية الموضحة في الصورة
شكراً للصديق أيهم إبراهيم على المساهمة في هذا المحتوى 🙏🏻❤️
Laravel #PHP #WebDevelopment #CodingTips #Eloquent #ORM #Programming
❤17🔥5👍2
🐋 Docker مكتوب بـ Go
☸️ Kubernetes مكتوب بـ Go
🛠 Terraform مكتوب بـ Go
📈 Prometheus مكتوب بـ Go
📊 Grafana مكتوب بـ TypeScript
⚙️ Jenkins مكتوب بـ Java
🐍 Ansible مكتوب بـ Python
🍴 Chef مكتوب بـ Ruby
🎭 Puppet مكتوب بـ Ruby
🔍 ELK Stack (Elasticsearch, Logstash, Kibana) مكتوب بـ Java و Ruby
📟 Nagios مكتوب بـ C
💾 Splunk مكتوب بـ C++
☁️ AWS CLI مكتوب بـ Python
🔵 Azure CLI مكتوب بـ Python
🦊 GitLab مكتوب بـ Ruby و Go
🔄 CircleCI مكتوب بـ Clojure
🔐 HashiCorp Vault مكتوب بـ Go
🚀 ArgoCD مكتوب بـ Go
🛡 Istio مكتوب بـ Go
يعني كل هالأدوات يلي بتحرك عالم DevOps مبنية بلغات مثل Go، Python، Ruby، و Java.
ما صار وقت تضيف Go لخططك لسنة 2025؟ 👌
☸️ Kubernetes مكتوب بـ Go
🛠 Terraform مكتوب بـ Go
📈 Prometheus مكتوب بـ Go
📊 Grafana مكتوب بـ TypeScript
⚙️ Jenkins مكتوب بـ Java
🐍 Ansible مكتوب بـ Python
🍴 Chef مكتوب بـ Ruby
🎭 Puppet مكتوب بـ Ruby
🔍 ELK Stack (Elasticsearch, Logstash, Kibana) مكتوب بـ Java و Ruby
📟 Nagios مكتوب بـ C
💾 Splunk مكتوب بـ C++
☁️ AWS CLI مكتوب بـ Python
🔵 Azure CLI مكتوب بـ Python
🦊 GitLab مكتوب بـ Ruby و Go
🔄 CircleCI مكتوب بـ Clojure
🔐 HashiCorp Vault مكتوب بـ Go
🚀 ArgoCD مكتوب بـ Go
🛡 Istio مكتوب بـ Go
يعني كل هالأدوات يلي بتحرك عالم DevOps مبنية بلغات مثل Go، Python، Ruby، و Java.
ما صار وقت تضيف Go لخططك لسنة 2025؟ 👌
❤17
بآخر تحديث لـ Laravel (الإصدار 11.35.0)، صار فينا نستخدم when و unless مع الـ Request اللي بتسمحلنا نكتب Logic شرطي بطريقة مرتبة و واضحة اكتر و بتخلصنا من وجع راس الـ If Condetions الطويلة.
طيب شو الفرق بين when() و unless()؟
✅ كود أوضح: وداعًا للـ if-else الطويلة والمعقدة.
✅ تنفيذ مباشر: العمليات الشرطية بتصير داخل الطلب بشكل بسيط.
✅ مرونة أكتر: بتقدر تتعامل مع أكتر من شرط بسهولة.
✅ صيانة أسهل: لو بدك تعدل أو تطور المنطق بالمستقبل، ما راح تواجه صعوبة.
الطريقتين ليسوا مجرد تحسين شكلي إنما أدوات مساعدة لكتابة كود نظيف و مرتب أكثر بوقت أقل.
جربت تستخدم when() و unless() من قبل؟ شاركنا تجربتك بالكومنتات! 👇
طيب شو الفرق بين when() و unless()؟
✅ كود أوضح: وداعًا للـ if-else الطويلة والمعقدة.
✅ تنفيذ مباشر: العمليات الشرطية بتصير داخل الطلب بشكل بسيط.
✅ مرونة أكتر: بتقدر تتعامل مع أكتر من شرط بسهولة.
✅ صيانة أسهل: لو بدك تعدل أو تطور المنطق بالمستقبل، ما راح تواجه صعوبة.
الطريقتين ليسوا مجرد تحسين شكلي إنما أدوات مساعدة لكتابة كود نظيف و مرتب أكثر بوقت أقل.
جربت تستخدم when() و unless() من قبل؟ شاركنا تجربتك بالكومنتات! 👇
❤14👍3🥰1
كونوا جاهزين لنعمل meeting قادم على شكل Live session نحكي فيه عن اسئلتكم اللي عم توصلني و ندردش سوا عن البرمجة و سوق العمل و غيره.
سابقاً ساويناها مرتين و رح نساويها خلال الايام القادمة لتكون الـ 3 معنا:
https://youtu.be/dq3sjF9r8UI
https://youtu.be/aPzsusaTcQo
جاوبنا فيها على كتير اسئلة و حكينا فيها عن كتير امور و قضايا.
لهيك لا تنسوا تشاركوا قناتي على تليغرام مع أصدقائكم و تشتركوا بالقناة على الـ YouTube ليوصلكم كل جديد 🔥
سنة سعيدة الكم جميعاً
سابقاً ساويناها مرتين و رح نساويها خلال الايام القادمة لتكون الـ 3 معنا:
https://youtu.be/dq3sjF9r8UI
https://youtu.be/aPzsusaTcQo
جاوبنا فيها على كتير اسئلة و حكينا فيها عن كتير امور و قضايا.
لهيك لا تنسوا تشاركوا قناتي على تليغرام مع أصدقائكم و تشتركوا بالقناة على الـ YouTube ليوصلكم كل جديد 🔥
سنة سعيدة الكم جميعاً
YouTube
Live Telegram | سؤال و جواب
تسجيل جلسة يوم الجمعة 23-8-2024 على تليغرام التي قمنا بها بالإجابة على عدد من الأسئلة منها:
- تحضير الـ CV
- التحضير لسوق العمل.
- مشاكل العمل في الشركات
أتمنى أن تكون الجلسة كانت مفيدة و انتظرونا في جلسات قادمة ضمن قناتي على التليغرام
- تحضير الـ CV
- التحضير لسوق العمل.
- مشاكل العمل في الشركات
أتمنى أن تكون الجلسة كانت مفيدة و انتظرونا في جلسات قادمة ضمن قناتي على التليغرام
❤9🥰1
كتير منسمع عن مصطلح الـ Self-Relationships و اليوم جاي احكيلك عن هاد المفهوم
شو يعني Self-Relationships بالاول؟
الـ Self-Relationships بتعني لما يكون عندك Object لازم يرتبط بـ Object تاني من نفس النوع مثلاً:
الموظفين والمدراء، حيث الموظف عنده مدير، والمدير كمان هو موظف.
التصنيفات والفئات الفرعية، مثل "برمجة" اللي ممكن تحتوي على "تطوير ويب" و"علم البيانات".
شبكات التواصل الاجتماعي، لما المستخدم يكون عنده أصدقاء (اللي هني كمان مستخدمين).
ليش منحتاج الـ Self-Relationships ؟
اهم ميزة فيها انها بتحل مشاكل هيكلية كتيرة مثل:
الهيكل التنظيمي للشركات: لمّا الموظفين يكونوا تابعين لمدراء ضمن نفس الهيكل.
التصنيفات والفئات الفرعية: لتنظيم المنتجات أو المواضيع بشكل هرمي.
الصداقة في الشبكات الاجتماعية: لإنشاء علاقات متبادلة بين المستخدمين.
و هيك لما تنسال بمقابلة العمل عن الـ Self-Relationships صرت بتعرف تشرح عنها و هلا خبرني اشتغلت فيها بمشاريعك سابقاً؟
شو يعني Self-Relationships بالاول؟
الـ Self-Relationships بتعني لما يكون عندك Object لازم يرتبط بـ Object تاني من نفس النوع مثلاً:
الموظفين والمدراء، حيث الموظف عنده مدير، والمدير كمان هو موظف.
التصنيفات والفئات الفرعية، مثل "برمجة" اللي ممكن تحتوي على "تطوير ويب" و"علم البيانات".
شبكات التواصل الاجتماعي، لما المستخدم يكون عنده أصدقاء (اللي هني كمان مستخدمين).
ليش منحتاج الـ Self-Relationships ؟
اهم ميزة فيها انها بتحل مشاكل هيكلية كتيرة مثل:
الهيكل التنظيمي للشركات: لمّا الموظفين يكونوا تابعين لمدراء ضمن نفس الهيكل.
التصنيفات والفئات الفرعية: لتنظيم المنتجات أو المواضيع بشكل هرمي.
الصداقة في الشبكات الاجتماعية: لإنشاء علاقات متبادلة بين المستخدمين.
و هيك لما تنسال بمقابلة العمل عن الـ Self-Relationships صرت بتعرف تشرح عنها و هلا خبرني اشتغلت فيها بمشاريعك سابقاً؟
❤4
مشكلة و حل :
أنت عم تبني تطبيق لإدارة المهام، وعم تضيف جدول لتخزين المهام المشتركة بين المستخدمين.
كل شي واضح وبسيط، وعرفت العلاقة بين المهام والمستخدمين في الـ Model الخاص بـ SharedTask، و بتتوقع أنه يرجع لك بيانات المستخدم المدعو بشكل Object.
لكن بدل ما ترجع العلاقة Object المستخدم (User)، بيرجعلك رقم فقط من الجدول، وإذا حاولت الوصول لأي prorite مثل $sharedTask->invitee->id، بتظهر رسالة خطأ مثل:
"Attempt to read property 'id' on int"
شو سبب هي المشكلة طيب؟
Laravel بيختار الأعمدة اللي بتتطابق أسماؤها مع أسماء العلاقات قبل ما يرجع العلاقة نفسها.
بمعنى، إذا عندك عمود اسمه invitee، وعلاقة بنفس الاسم، Laravel بيفترض إنك بدك العمود مش العلاقة.
اوك و الحل؟
الحل بسيط جدًا: غير اسم العلاقة لتجنب هذا التضارب.
بدل ما تكون العلاقة اسمها invitee (مثل العمود)، غيرها لشي واضح أكتر، مثل: inviteeUser.
هلا لما تستدعي العلاقة باستخدام $sharedTask->inviteeUser، Laravel رح يفهم إنك تقصد العلاقة ويعيد كائن المستخدم بالشكل الصحيح.
و خلي ببالك دوماً انه اسم العلاقة يكون مختلف عن اسم اي عمود بنفس الجدول
هي الأخطاء الصغيرة ممكن تضيع وقت كبير إذا ما عرفت السبب، بس الحل عادةً بيكون بسيط.
إذا مر عليك خطأ مشابه، شاركنا تجربتك وكيف حلّيته! 👇
أنت عم تبني تطبيق لإدارة المهام، وعم تضيف جدول لتخزين المهام المشتركة بين المستخدمين.
كل شي واضح وبسيط، وعرفت العلاقة بين المهام والمستخدمين في الـ Model الخاص بـ SharedTask، و بتتوقع أنه يرجع لك بيانات المستخدم المدعو بشكل Object.
لكن بدل ما ترجع العلاقة Object المستخدم (User)، بيرجعلك رقم فقط من الجدول، وإذا حاولت الوصول لأي prorite مثل $sharedTask->invitee->id، بتظهر رسالة خطأ مثل:
"Attempt to read property 'id' on int"
شو سبب هي المشكلة طيب؟
Laravel بيختار الأعمدة اللي بتتطابق أسماؤها مع أسماء العلاقات قبل ما يرجع العلاقة نفسها.
بمعنى، إذا عندك عمود اسمه invitee، وعلاقة بنفس الاسم، Laravel بيفترض إنك بدك العمود مش العلاقة.
اوك و الحل؟
الحل بسيط جدًا: غير اسم العلاقة لتجنب هذا التضارب.
بدل ما تكون العلاقة اسمها invitee (مثل العمود)، غيرها لشي واضح أكتر، مثل: inviteeUser.
هلا لما تستدعي العلاقة باستخدام $sharedTask->inviteeUser، Laravel رح يفهم إنك تقصد العلاقة ويعيد كائن المستخدم بالشكل الصحيح.
و خلي ببالك دوماً انه اسم العلاقة يكون مختلف عن اسم اي عمود بنفس الجدول
هي الأخطاء الصغيرة ممكن تضيع وقت كبير إذا ما عرفت السبب، بس الحل عادةً بيكون بسيط.
إذا مر عليك خطأ مشابه، شاركنا تجربتك وكيف حلّيته! 👇
🔥10
ختمنا سنة 2024 بـ 800 مشترك على قناة الـ YouTube و أتمنى من سنة 2025 نختمها بأكبر من هالرقم بكتير
من أهم أهدافي للسنة الجديدة هو زيادة انتاجي للمحتوى على الـ YouTube و رفع مستوى جودته
و هالشي بتم من خلال دعمكم الي بالاشتراك بالقناة او حتى بمشاهدة الفيديوهات و التعليق و المشاركة كلها أرقام بتشجعني و بتساهم انه نستمثر اكتر فيها.
القادم رح يعجبكم نشالله
رابط القناة: هنا
من أهم أهدافي للسنة الجديدة هو زيادة انتاجي للمحتوى على الـ YouTube و رفع مستوى جودته
و هالشي بتم من خلال دعمكم الي بالاشتراك بالقناة او حتى بمشاهدة الفيديوهات و التعليق و المشاركة كلها أرقام بتشجعني و بتساهم انه نستمثر اكتر فيها.
القادم رح يعجبكم نشالله
رابط القناة: هنا
❤8🔥6
مخاطر العمل مع الـ Soft Delete لازم تعرفها:
خلينا نشرحلك ياها بالاول هي عبارة عن ميزة بـ Laravel بتسمحلك "تحذف" البيانات بدون ما تنحذف فعلياً من الـ database. البيانات بتضل موجودة، بس بينضاف timestamp بعمود deleted_at ليدل إنه البيانات محذوفة. هالميزة مفيدة إذا كنت بحاجة لاسترجاع البيانات أو لمراجعتها لاحقاً.
طيب شكلها مفيدة و حلوة ليش لازم انتبه بالشغل معها؟
1. مشاكل الأداء مع الجداول الكبيرة
كل query بـ Laravel مع Soft Deletes بيضيف شرط WHERE deleted_at IS NULL افتراضياً، وهذا ممكن يأثر على الأداء مع ازدياد حجم البيانات.
2. التناقض بين Eloquent و Query Builder
Eloquent تلقائياً بيستثني الـ records المحذوفة، بس إذا استخدمت Query Builder، الشرط ما بينضاف تلقائياً، وبتضطر تضيفه يدوياً، مما قد يسبب أخطاء إذا تم نسيانه.
3. عدم وجود Cascading Deletes
الـ Soft Delete ما بينفذ عمليات الحذف التلقائي على البيانات المرتبطة، مثل حذف الـ posts أو الـ comments المرتبطة بالمستخدم، مما يتطلب تنفيذها يدويًا.
4. مشاكل مع الـ Unique Constraints
لما تسوي Soft Delete، الـ record المحذوف بيضل موجود، وهاد ممكن يسبب مشاكل مع الأعمدة اللي عليها قيود فريدة (Unique Constraints) مثل البريد الإلكتروني.
طيب شو الحل؟
إذا كانت مشروعك كبير أو حساس، فكر باستخدام حزمة مثل Spatie Laravel Deleted Models. هالحزمة بتنقل البيانات المحذوفة لجدول منفصل، بتحسن الأداء، وبتجنب مشاكل الـ unique constraints، وبتسهل إدارة العلاقات المرتبطة.
إذا عندك تجربة أو حل مشابه، شاركنا رأيك بالتعليقات
خلينا نشرحلك ياها بالاول هي عبارة عن ميزة بـ Laravel بتسمحلك "تحذف" البيانات بدون ما تنحذف فعلياً من الـ database. البيانات بتضل موجودة، بس بينضاف timestamp بعمود deleted_at ليدل إنه البيانات محذوفة. هالميزة مفيدة إذا كنت بحاجة لاسترجاع البيانات أو لمراجعتها لاحقاً.
طيب شكلها مفيدة و حلوة ليش لازم انتبه بالشغل معها؟
1. مشاكل الأداء مع الجداول الكبيرة
كل query بـ Laravel مع Soft Deletes بيضيف شرط WHERE deleted_at IS NULL افتراضياً، وهذا ممكن يأثر على الأداء مع ازدياد حجم البيانات.
2. التناقض بين Eloquent و Query Builder
Eloquent تلقائياً بيستثني الـ records المحذوفة، بس إذا استخدمت Query Builder، الشرط ما بينضاف تلقائياً، وبتضطر تضيفه يدوياً، مما قد يسبب أخطاء إذا تم نسيانه.
3. عدم وجود Cascading Deletes
الـ Soft Delete ما بينفذ عمليات الحذف التلقائي على البيانات المرتبطة، مثل حذف الـ posts أو الـ comments المرتبطة بالمستخدم، مما يتطلب تنفيذها يدويًا.
4. مشاكل مع الـ Unique Constraints
لما تسوي Soft Delete، الـ record المحذوف بيضل موجود، وهاد ممكن يسبب مشاكل مع الأعمدة اللي عليها قيود فريدة (Unique Constraints) مثل البريد الإلكتروني.
طيب شو الحل؟
إذا كانت مشروعك كبير أو حساس، فكر باستخدام حزمة مثل Spatie Laravel Deleted Models. هالحزمة بتنقل البيانات المحذوفة لجدول منفصل، بتحسن الأداء، وبتجنب مشاكل الـ unique constraints، وبتسهل إدارة العلاقات المرتبطة.
إذا عندك تجربة أو حل مشابه، شاركنا رأيك بالتعليقات
❤21👍4👏3
تمنياتي لكم جميعاً بأسبوع عمل موفق و خالي من الـ Bugs و الـ meetings قدر الإمكان
و كالعادة أصدقائي نبدأ اسبوعنا بأنه نجاوب على اسئلتكم من خلال story على حسابي الـ instgram من خلال الرابط:هنا
و كالعادة أصدقائي نبدأ اسبوعنا بأنه نجاوب على اسئلتكم من خلال story على حسابي الـ instgram من خلال الرابط:هنا
❤11
كتير عم توصلني اسئلة و استفسارات حول موضوع الـ pipline بتحبوا نعمل جلسة نشرح عنه بالتطبيق العملي؟
Anonymous Poll
83%
موافق
17%
مو هلا خلينا نأجلها
بالمنشورات السابقة و باللقائات و غيرها كتير بنصحكم بالـ Linux و بعرف انه اغلبكم خايف منه او مو مستعد ينتقل عليه 100% بس كالعادة انا عندي حل لكل مشاكلكم.
انتوا قادرين تشغلوا الـ Linux بدون ما تثبتوه حتى كل اللي بتحتاجوه هو:
1- تنزلوا اي Linux distribution متل Ubuntu كـ ISO من الموقع الرسمي
2- من خلال برنامج متل Rufus بتخلي الـ USB تشتغل كـ Bootable
3- شغل الجهاز و اختار الاقلاع من الفلاشة و هيك بتجرب و بتشتغل و بتتعلم قد ما بدك قبل ما تنزل النظام.
انتوا قادرين تشغلوا الـ Linux بدون ما تثبتوه حتى كل اللي بتحتاجوه هو:
1- تنزلوا اي Linux distribution متل Ubuntu كـ ISO من الموقع الرسمي
2- من خلال برنامج متل Rufus بتخلي الـ USB تشتغل كـ Bootable
3- شغل الجهاز و اختار الاقلاع من الفلاشة و هيك بتجرب و بتشتغل و بتتعلم قد ما بدك قبل ما تنزل النظام.
❤3
في Tasks احيانا بتحسها بتصير على شكل اقسام رغم انها لازم تكون قسم واحد بدون قطع و هون بتجي ميزة الـ tap() اللي بتخليك تنفذ اي عملية جانبية مثل تسجيل log على الـ Object بدون ما توقف السلسة بتنفذ شغلك، وبتكمل كأن شي ما صار!
بهالطريقة انت بتخلي الكود مرتب و منظم أكتر و بتساعدك تضيف أكشنات بسيطة على الـ object بدون تعقيد.
دائماً خلي الكود تبعك أبسط ما يمكن كرمال سهولة الصيانة و القراءة.
بهالطريقة انت بتخلي الكود مرتب و منظم أكتر و بتساعدك تضيف أكشنات بسيطة على الـ object بدون تعقيد.
دائماً خلي الكود تبعك أبسط ما يمكن كرمال سهولة الصيانة و القراءة.
❤11
مطلوب مصمم UI/UX للعمل على مشروع متجر إلكتروني
نبحث عن مصمم UI/UX مبدع ولديه خبرة سابقة في تصميم واجهات المستخدم وتجربة المستخدم لمشاريع المتاجر الإلكترونية.
المتطلبات:
خبرة مثبتة في تصميم المتاجر الإلكترونية.
مهارات قوية في Figma
القدرة على تحويل الأفكار إلى تصميمات مبتكرة وعملية.
فهم جيد لتجربة المستخدم وسلوك العملاء في المتاجر الإلكترونية.
الالتزام بالجودة والمواعيد النهائية.
إذا كنت ترى نفسك الشخص المناسب لهذه الفرصة، يرجى إرسال:
نماذج من أعمالك السابقة في تصميم المتاجر الإلكترونية و سيرتك الذاتية للتقديم أو لمزيد من التفاصيل، تواصل معنا عبر البريد الإلكتروني: jobs@somar-kesen.com مع تحديد الموضوع بـ E-UIUX
أو عبر حسابي على لينكدان من هنا
نبحث عن مصمم UI/UX مبدع ولديه خبرة سابقة في تصميم واجهات المستخدم وتجربة المستخدم لمشاريع المتاجر الإلكترونية.
المتطلبات:
خبرة مثبتة في تصميم المتاجر الإلكترونية.
مهارات قوية في Figma
القدرة على تحويل الأفكار إلى تصميمات مبتكرة وعملية.
فهم جيد لتجربة المستخدم وسلوك العملاء في المتاجر الإلكترونية.
الالتزام بالجودة والمواعيد النهائية.
إذا كنت ترى نفسك الشخص المناسب لهذه الفرصة، يرجى إرسال:
نماذج من أعمالك السابقة في تصميم المتاجر الإلكترونية و سيرتك الذاتية للتقديم أو لمزيد من التفاصيل، تواصل معنا عبر البريد الإلكتروني: jobs@somar-kesen.com مع تحديد الموضوع بـ E-UIUX
أو عبر حسابي على لينكدان من هنا
❤3