Code With Somar
前往频道在 Telegram
🚀 ريادي أعمال ومطوّر ويب بخبرة واسعة 💻 متخصص بتطوير حلول ويب متكاملة باستخدام Laravel، Django، React، Vue، و Node.js. 🏆 ضمن أفضل 4 صناع محتوى في سوريا وأفضل 3 في المحتوى التقني. 🌟 ناشط في مجتمع برمجة الأطفال، ومساهم في تطوير المحتوى التقني عربياً.
显示更多2 729
订阅者
-424 小时
-37 天
无数据30 天
帖子存档
2 729
هل صحيح إنو Node.js بيتعامل مع request وحدة فقط بنفس الوقت؟
الجواب: خطأ
السبب إنو في خلط شائع بين مفهومين:
single thread و single request
الـ Node.js فعلًا بيشغّل كود JavaScript الأساسي على single thread،
لكن هاد ما يعني أبدًا إنو ما بيقدر يخدم إلا request وحدة.
اللي بصير فعليًا إنو Node.js بيعتمد على:
• Event Loop
• Non-blocking I/O
• Asynchronous architecture
يعني لما توصله request وهاد الطلب يحتاج:
• قراءة من database
• طلب من API
• قراءة file
• أي عملية network / I/O
فهو ما بيوقف وبيستنّى النتيجة.
بدل هيك، بيبعث العملية للـ system أو للـ thread pool إذا لزم،
وبيكمل مباشرة بمعالجة requests تانية.
ولما ترجع النتيجة، الـ event loop بيرجع يكمل التنفيذ المناسب إلها.
لهيك منقول إنو Node.js ممتاز جدًا بموضوع concurrent requests،
وبيقدر يتعامل مع عدد كبير من الطلبات طالما أغلب الشغل I/O-bound.
لكن لازم ننتبه لنقطة مهمة:
Node.js مو قوي بنفس الدرجة مع CPU-intensive tasks على نفس الـ main thread.
مثل:
• heavy calculations
• image/video processing
• large synchronous loops
هاد النوع من الشغل ممكن يعمل blocking للـ event loop،
وساعتها التطبيق بصير أبطأ باستقبال أو معالجة باقي requests.
إذن الفكرة الصحيحة هي:
Node.js is single-threaded in executing JavaScript, but not single-requested in handling traffic.
فلما حدا يقول:
“Node.js can only handle one request at a time”
فهاد الكلام غلط.
الأصح نقول:
Node.js runs JavaScript on a single thread, but can handle many concurrent requests efficiently using non-blocking I/O and the event loop.
2 729
فرصة عمل كـ QA
مطلوب QA للعمل عن بُعد (Remote)
المتطلبات:
• يفضّل وجود خبرة سابقة في المتاجر الإلكترونية.
• القدرة على إعداد تقارير الاختبار بشكل واضح ومنظم.
• خبرة في كتابة Test Cases و Test Scenarios.
• القدرة على اختبار المواقع الإلكترونية والتطبيقات والتأكد من جودة الأداء وسلامة الوظائف.
• الانتباه للتفاصيل والقدرة على اكتشاف المشاكل ومتابعتها مع الفريق.
يفضّل توفر المهارات التالية:
• فهم جيد لتجربة المستخدم وسيناريوهات الاستخدام.
• القدرة على توثيق الأخطاء بشكل واضح ودقيق.
• مهارات تواصل جيدة والعمل ضمن فريق.
رابط التقديم:
https://forms.gle/Pe5yMMetsgAxi7iU6
2 729
أصدقائي الأعزاء،
حابب أعلن إني هالسنة موجود كمدرّب ضمن أكاديمية Focal X، ومتل ما عودتكم بكل سنة، دائماً الهدف بالنسبة إلي مو بس التدريب، بل كمان المساهمة بنشر المعرفة ومساعدة الناس الجدية اللي عندها رغبة حقيقية بالتعلّم والتطوّر.
ولهالسبب، عم نقدم مجموعة منح تدريبية للراغبين بالدخول إلى تدريب Laravel Advanced.
التفاصيل الخاصة بالتدريب موجودة على صفحة الشركة على فيسبوك
والتقديم على المنح يتم عبر الفورم التالي:
https://forms.gle/qqGceFGpQ2EgiP1d6
بالتوفيق للجميع، وإن شاء الله تكون فرصة جميلة للناس اللي فعلاً حابة تتقدم وتشتغل على حالها.
2 729
في مشكلة بتطلعلنا باغلب الوقت انه الكود بصير كله عبارة عن try catch و هالشي ماني منيح
لهيك بإمكانك تستخدم retry() لحتى يعيد تنفيذ العملية تلقائياً إذا فشلت مؤقتاً (timeout / connection drop / flaky API).
بتعمل retry()؟
بتشغّل callback
✅ إذا نجح → بترجع النتيجة
❌ إذا رمى Exception → بتجرب مرة تانية لحد عدد محاولات محدد.
مثال:
return retry(5, function () {
$response = Http::get('https://api.example.com/data');
if ($response->failed()) {
throw new Exception('Request failed');
}
return $response->json();
}, 200);
يعني 5 محاولات، وبين كل محاولة 200ms delay.
✅ وين بتستخدم retry()؟
• Flaky API requests
• Remote service / DB connection بيقطع لحظياً
• Queue jobs تعتمد على external resources
• أي عملية “بتستاهل محاولة إضافية” قبل ما تفشل نهائياً
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
في مشكلة بتطلعلنا باغلب الوقت انه الكود بصير كله عبارة عن try catch و هالشي ماني منيح
لهيك بإمكانك تستخدم retry() لحتى يعيد تنفيذ العملية تلقائياً إذا فشلت مؤقتاً (timeout / connection drop / flaky API).
بتعمل retry()؟
بتشغّل callback
✅ إذا نجح → بترجع النتيجة
❌ إذا رمى Exception → بتجرب مرة تانية لحد عدد محاولات محدد.
مثال:
return retry(5, function () {
$response = Http::get('https://api.example.com/data');
if ($response->failed()) {
throw new Exception('Request failed');
}
return $response->json();
}, 200);
يعني 5 محاولات، وبين كل محاولة 200ms delay.
✅ وين بتستخدم retry()؟
• Flaky API requests
• Remote service / DB connection بيقطع لحظياً
• Queue jobs تعتمد على external resources
• أي عملية “بتستاهل محاولة إضافية” قبل ما تفشل نهائياً
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال2 729
تحياتي جميعاً
إن شاء الله يكون أسبوعكم جميل وموفّق، وبلا bugs وبلا meetings 😁
وكالعادة، فقرة الأسئلة موجودة على الستوري بحساب الإنستغرام، لكن هالأسبوع في مفاجأة مميزة كمان 👀
قريباً رح أعلن عن منحة تدريبية ضمن Focal X V10 بـ اختصاص Laravel Advanced،
واللي رح تكون فرصة قوية لأي شخص حابب يطوّر مهاراته وينقل مستواه لمرحلة أقوى بهالمجال.
ورح احكي عن كل التفاصيل بشكل واضح بفيديو قريب جدًا رح ينزل على الإنستغرام إن شاء الله.
فـ لا تنسوا تعملوا متابعة للحساب
وتضلوا جاهزين للتفاصيل 🔥
بتمنالكم كل التوفيق يا رب ❤️
2 729
سابقاً شرحتلكم عن مصطلح Race Condition و هلا خلونا نعرف شو الحل تبعه:
أفضل حل ممكن تعمله هو DB transaction + lockForUpdate()
لما الموضوع “critical” (stock / vouchers / money):
بتعمل DB::transaction() + lockForUpdate()
هيك بتقفل الـ row لحد ما تخلص المعاملة، والطلبات التانية بتستنى.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
الـ Race Condition مصطلح منسمعه كتير بس شو بيعني؟
طلبين بيوصلوا سوا، بيقروا نفس القيمة، وبعدين بيكتبوا فوق بعض.
مثال: Voucher quota 50 و used=49
طلبين شافوا 49 → الاتنين قبلوا → الاتنين خزّنوا 50… والمفروض واحد ينرفض.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
إذا مهتم تحضر النسخة اللايف وتشاركنا بالفيدباك بإمكانك تتواصل معي بخصوص التسجيل عالكورس او اذا بتحب تحضر الجلسة التعريفية اللي رح تكون يوم السبت الساعة 5 مساءً
2 729
أصدقائي الأعزاء
حابب وضّح كم نقطة مهمة وبنفس الوقت اعتذر عن التأخير اللي صار رغم الإعلان القديم عن الكورس.
توضيحات سريعة:
1. الكورس مو كورس أمن معلومات (Cybersecurity)
ما رح ندخل بمواضيع مثل الاختراق الأخلاقي، الشبكات، أو البرمجيات الخبيثة.
2. سبب التأخير
صار عندي ضغط شغل، وكون هالسنة سنة تخرّجي فصار وقت فراغي قليل جدًا، لذلك اتأخر تجهيز الكورس.
3. طريقة تقديم الكورس بالبداية رح تكون لايف (مو Udemy مباشرة)
أول نسخة رح تكون Live عبر Google Meet
والهدف يكون في تفاعل مباشر: نقاش، أسئلة، أجوبة، وفيدباك منكم—لحتى لما ينزل لاحقًا على Udemy يكون بأفضل جودة وشكل ممكن.
4. مين أنا وهل الكورس بيحوّلك “هاكر”؟
أنا مو “هكر”، و مو خبير أمن معلومات بالمعنى التقليدي.
الكورس هدفه بسيط وواضح:
إذا إنت Backend Developer بتستخدم Laravel، تكون قادر تأمّن مشروعك قدر المستطاع، وتفهم:
• شو الأخطار الشائعة على تطبيقات الويب
• وين عادة بتكون الثغرات وأنت عم تكتب كود
• شو تعمل عمليًا لتحمي Routes / APIs / Sessions / Uploads
• وكيف تبني Authorization صح (Policies/Gates/Permissions)
• وكيف تتصرف لو صار شي مريب أو محاولة اختراق
2 729
للي محتار شو بقصد بالمنشور السابق:
قبل (الأسلوب التقليدي)
class User extends Model
{
protected $fillable = ['name', 'email'];
protected $hidden = ['password'];
}
بعد (Laravel 13 - باستخدام Attributes)
#[Fillable(['name', 'email'])]
#[Hidden(['password'])]
class User extends Model {}
شو تغيّر؟
بدل ما تكون الإعدادات داخل الكلاس كـ properties،
صارت تتكتب فوق الكلاس بشكل واضح كـ Attributes.
شو الفائدة؟
• شكل أنظف وأوضح
• توحيد أسلوب التعريف داخل Laravel
• أسهل تقرأ إعدادات الكلاس بسرعة
• اتجاه حديث ومتوافق مع تطور PHP
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال2 729
على فكرة Laravel بالإصدار القادم Laravel 13 عم تتجه للاعتماد على PHP Attributes بشكل أوسع
طبعاً التغيير رح يشمل الـ Models / Jobs / Commands / Requests وغيرهم
و رح تشترط الـPHP 8.3+
رح احكيلكم اكتر عنها بالمستقبل تأكدوا انكم تشوفوا المنشورات القادمة
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
سؤال مقابلة بس هالمرة رح نرفع المستوى فيه شوي:
إذا الـ Redis هو single threaded كيف بيقدر يتعامل مع ملايين الطلبات بالثانية؟
———————————————
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
النصيحة رقم #7 من سلسلة #نصائح_في_تصميم_api
استخدم Status Codes صح… ولا ترجع 200 لكل شي
كتير APIs بترجع 200 OK حتى وقت الخطأ ❌
وهذا بيخرب التعامل مع الـ frontend والموبايل.
الأصح:
• 200 نجاح جلب/تعديل
• 201 إنشاء مورد جديد
• 204 حذف بدون محتوى
• 422 خطأ تحقق (Validation)
• 401 غير مسجل دخول
• 403 ممنوع
• 404 غير موجود
• 500 خطأ داخلي
💡 نصيحة:
خلي الـ HTTP status code يشرح الحالة، والـ body يعطي التفاصيل.
الفائدة: debugging أسهل + سلوك أوضح + تكامل أنضف.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
طيب منعطيكم سؤال مقابلات تاني:
طالما الـ JWTs هيي stateless
كيف عم تعمل logout للمستخدم؟
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
النصيحة رقم #6 من سلسلة #نصائح_في_تصميم_api
ثبّت شكل الـ Response… لا تخلي كل endpoint يرجع شكل مختلف
مثال سيء:
• Endpoint يرجّع data
• Endpoint ثاني يرجّع result
• Endpoint ثالث يرجّع object مباشرة بدون wrapper
الأفضل:
• التزم شكل موحّد للـ responses (خصوصًا بالنجاح والخطأ)
مثال:
• نجاح: status + message + data
• خطأ: status + message + errors
💡 نصيحة:
بـ Laravel استخدم API Resources + Base response pattern حتى توحّد المخرجات.
الفائدة: الـ frontend أسرع بالتكامل، والأخطاء أقل، والـ API يصير متوقع.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
شغلة حلوة بـ PHP 8.5 (خصوصي إذا شغال Laravel على Lambda)
صار في إعداد جديد:
opcache.file_cache_read_only=1
شو كانت المشكلة؟
إذا عم تستخدم OPcache file cache على AWS Lambda، كنت بتعلق بهالمشكلة:
• نظام الملفات بـ Lambda read-only
• المكان الوحيد اللي فيك تكتب عليه هو /tmp
• وPHP كان بده يكتب ملفات OPcache
فكنا نضطر نعمل حركة مثل:
• ننسخ ملفات الكاش لـ /tmp وقت التشغيل (وقت الـ cold start)
وين المشكلة بهالحل؟
😅 أحيانًا وقت النسخ نفسه كان ياخد وقت
لدرجة إنو يصير أبطأ من تشغيل التطبيق بدون OPcache أساسًا!
شو الجديد بـ PHP 8.5؟
هالإعداد الجديد بيخلي PHP:
• يقرأ ملفات OPcache الجاهزة
• وما يحاول يكتب شي
يعني باختصار:
1. بتجهّز (pre-compile) ملفات OPcache وقت الـ deployment
2. بتنشرها مع التطبيق
3. وPHP بيقراها مباشرة ✅
حتى لو النظام read-only
ليش هالشي مهم؟
لأن Laravel (خصوصي مع vendor) فيه ملفات كتير
فأي تحسين ببداية التشغيل (cold start) ممكن يفرق بشكل ملحوظ
—————————————-
إذا اول مرة بتسمع عن OPcache انا حكيت عنه بمنشور سابق فيك تشوفه من خلال الرابط: هنا
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 729
إذا في مليون مستخدم أونلاين على واتساب…
يعني عم نضل فاتحين مليون اتصال WebSocket؟؟
شاركوني رأيكم بالتعليقات 👇👇
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
