Code With Somar
رفتن به کانال در Telegram
🚀 ريادي أعمال ومطوّر ويب بخبرة واسعة 💻 متخصص بتطوير حلول ويب متكاملة باستخدام Laravel، Django، React، Vue، و Node.js. 🏆 ضمن أفضل 4 صناع محتوى في سوريا وأفضل 3 في المحتوى التقني. 🌟 ناشط في مجتمع برمجة الأطفال، ومساهم في تطوير المحتوى التقني عربياً.
نمایش بیشتر2 726
مشترکین
-124 ساعت
اطلاعاتی وجود ندارد7 روز
+1230 روز
آرشیو پست ها
2 727
بما انه Google عم تجهز لإطلاق Android 17 كمبرمج موبايل و خصوصاً flutter في كم شغلة لازم تبلش تشتغل عليها و تخليها ببالك لتضمن مايطلعلك اي crash بالتطبيق تبعك
1- اختبر تطبيقك على Android 17 emulator: نزل نسخة أندرويد 17 وجرب تمشي بكل شاشات التطبيق. ركزوا كتير على الـ large screen layouts (الشاشات الكبيرة)، وضع الـ split-screen mode (تقسيم الشاشة)، والـ freeform windowing. جوجل عم تركز كتير على التابلت والأجهزة القابلة للطي، فمشان هيك لازم الـ UI تبعك يكون مرن وما يضرب.
2- شيك على الـ native plugins: إذا تطبيقك بيعتمد على بكجات بتستخدم reflection لتوصل لملفات نظام مخفية بالأندرويد، أو بتسحب native libraries بشكل ديناميكي.. لازم تنتبه! أندرويد 17 رح يفرض قيود أمنية صارمة، وأي بكج قديم أو ما عم يتحدث ممكن يوقفلك التطبيق فجأة.
3- حطوا الـ AppFunctions ببالكم: إذا تطبيقكم فيه أكشنز واضحة للمستخدم (متل إنشاء طلب، بحث، أو حجز)، صار الوقت تفكروا تبنوا Platform Channel لتربطوا كود Kotlin مميز بـ @AppFunction. ليش؟ لأنو لما جوجل تطلق ميزات Gemini الجديدة، رح يصير الذكاء الاصطناعي قادر ينفذ أوامر جوا تطبيقك مباشرة. هاد الشي بيعطيك ميزة تنافسية خرافية!
4- راجعوا استخدام الصلاحيات بتطبيقاتكم: إذا تطبيقك بيطلب صلاحية READ_CONTACTS (قراءة جهات الاتصال)، أو بيقرا رسائل الـ SMS مشان يتحقق من كود الـ OTP (وهي حركة كتير منعملها بتطبيقات المحاسبة والمتاجر)، لازم توقفوا هالحكي وتدوروا على بدائل.
جوجل ما عاد تسمحلك تسحب كل رسائل المستخدم أو كل أرقامه. كبديل للـ OTP، استخدموا الـ SMS Retriever API اللي بيجيب الكود لحاله بدون ما ينتهك خصوصية المستخدم. ولجهات الاتصال، استخدموا الـ Contact Picker.
أي مخالفة لهي الأمور ممكن تعرض تطبيقك للرفض على Google Play! 🚨
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
شركة Anthropic أعلنت إنها مددت فترة الوصول لنموذج الذكاء الاصطناعي Claude Fable 5 لكل المستخدمين المشتركين بالخطط المدفوعة (Paid plans).
التمديد رح يكون مستمر لغاية 12 تموز (يوليو). فرصة ممتازة لتستفيدوا من قدرات المودل وتجربوه بمشاريعكم وتختبروا أداءه بكتابة الأكواد خلال هالكم يوم الإضافيين! 🔥
#AI #Anthropic #ClaudeFable5 #TechNews
2 727
تخيل Query علقت.
أو Query ناطرة Lock على جدول، والجدول محجوز من عملية ثانية.
إذا ما عندك Timeout، ممكن تضل العملية معلقة لفترة طويلة جداً.
المشكلة إنها مو بس معلقة وخلاص.
هي كمان ممكن تكون:
حاجزة Connection
مستهلكة موارد
مانعة عمليات ثانية
مسببة تراكم بالطلبات
وراها مشاكل أكبر بالتطبيق
لذلك لازم تحط حدود زمنية واضحة.
أهم إعدادين:
statement_timeout
بيوقف أي استعلام إذا أخذ أكثر من مدة معينة.
lock_timeout
بيوقف الاستعلام إذا ظل ينتظر Lock أكثر من مدة معينة.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
أحياناً قاعدة البيانات تتأخر أو تتعطل لثواني.
المشكلة مو هون.
المشكلة لما التطبيق يكون مبرمج يعمل Retry فوراً وبلا حدود.
يعني الطلب يفشل، فيعيد المحاولة مباشرة.
يفشل مرة ثانية، يعيد مباشرة.
ويضل يعيد بدون توقف.
شو بيصير؟
بدل ما تساعد النظام يرجع، أنت بتزيد الضغط عليه.
ولما PostgreSQL يبدأ يتعافى، بتوصله دفعة ضخمة من الطلبات المتراكمة بنفس اللحظة.
وهون ممكن يرجع ينهار من جديد.
هاي الحالة اسمها Thundering Herd.
لهيك استخدم Exponential Backoff.
يعني لا تعيد المحاولة فوراً.
خلي في وقت انتظار بين كل محاولة ومحاولة.
مثلاً:
المحاولة الثانية بعد 1 ثانية
الثالثة بعد 3 ثواني
الرابعة بعد 10 ثواني
وبعد عدد معين من المحاولات، توقف وارجع Error واضح.
الأفضل كمان تضيف Jitter، يعني تأخير عشوائي بسيط، حتى ما كل الطلبات تعيد المحاولة بنفس اللحظة.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
في PostgreSQL، كل Connection جديد مو مجاني.
كل اتصال بياخد جزء من الذاكرة وموارد من السيرفر.
المشكلة بتكبر لما يكون عندك تطبيق شغال على أكثر من Instance أو Pod.
مثلاً:
عندك 100 Pod
وكل Pod فاتح 20 Connection
يعني عندك 2000 اتصال مع PostgreSQL
حتى لو أغلبهم Idle، بيضلوا حاجزين موارد من السيرفر.
النتيجة؟
استهلاك RAM عالي
ضغط على PostgreSQL
بطء بالاستعلامات
احتمال توصل لحد max_connections
النظام يصير يرفض اتصالات جديدة
لهيك لازم تستخدم Connection Pooler مثل pgBouncer.
فكرته بسيطة:
بدل ما كل طلب يفتح Connection مباشر مع PostgreSQL، pgBouncer بيقف بالنص، ويدير عدد قليل وفعال من الاتصالات الحقيقية.
يعني التطبيق ممكن يرسل عدد كبير من الطلبات، لكن قاعدة البيانات ما تنضغط بعدد اتصالات ضخم.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
اكتر شي رح يواجهك مع PostgreSQL هو الـ Query البطيئة اللي ما بتعرف سببها ليش؟
اكبر غلط ممكن توقع فيه هو انك تحاول تحزر او تخمن شو السبب فممكن يخطر عبالك:
• يمكن المشكلة بالـ index
• يمكن الجدول كبير
• يمكن الـ join غلط !!
بس الحلو انه بدال كل هالتخمين هاد فيك بكل بساطة تستخدم:
EXPLAIN (ANALYZE, BUFFERS)لانه بشغلك الاستعلام و بيعطيك معلومات واضحة مثل: كم أخذ وقت حقيقي هل استخدم Index أو عمل Sequential Scan أي جزء من الاستعلام هو الأبطأ كم قرأ من الذاكرة RAM كم اضطر يقرأ من الهارد هل المشكلة بالـ Join، Sorting، Filtering، أو غيرها ———————————- Linkedin |Instgram | YouTube أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
بما انه شعبية PostgreSQL عم تكبر كل يوم اكتر رح نززلكم سلسلة منشورات بتحكي عن أشهر الأخطاء اللي ممكن تواجهك معها و نصائح مهمة كتير تتبعها لما مشروعك رح يصير Production
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
الـ Git 2.55 نزل، وأهم شي فيه إنه مركز على تحسين تجربة المطورين مع الـ repos الكبيرة وتنظيف الـ commits.
كمبرمج، شو ممكن يفرق معك؟
git status أسرع على Linux
صار في دعم لـ fsmonitor باستخدام inotify، يعني Git ما بيفحص كل الملفات كل مرة، وهاد بيساعد كتير بالمشاريع الكبيرة.
تنظيف commits صار أسهل
في أمر تجريبي جديد:
git history fixup <commit>
بيساعدك تدخل تعديل على commit قديم بدون rebase يدوي طويل، مفيد قبل فتح PR.
Hooks أسرع
بعض الـ Git hooks صار ممكن تشتغل parallel، يعني lint و checks قبل الـ commit ممكن يخلصوا أسرع.
git log أوضح
خيار جديد:
--graph-lane-limit
بيخلي عرض branches بـ git log --graph أرتب وأقل فوضى.
بتحبوا نعمل فيديو يوتيوب عنه؟
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
Next.js 16.3 صار متاح للتجربة، وأكبر تركيز فيه كان على تحسين Turbopack.
طيب كمبرمج Frontend، شو رح يفرق معي فعلياً؟
أول شي، تجربة التطوير رح تصير أخف وأسرع. يعني لما تشغل المشروع بـ dev mode، المفروض استهلاك الذاكرة يكون أقل بكثير، وخصوصاً بالمشاريع الكبيرة أو الـ monorepos اللي عادة بتصير تقيلة مع الوقت.
كمان في تحسينات على HMR، يعني التعديلات اللي بتعملها بالكود المفروض تظهر أسرع بالمتصفح بدون reload كامل أو تأخير مزعج.
بالـ build كمان في فرق مهم، لأنه تمت إضافة Persistent File System Cache، وهاد بيساعد next build يصير أسرع لأنه ما يعيد كل الشغل من الصفر بكل مرة.
في كمان دعم تجريبي لـ Rust React Compiler بدل نسخة Babel، وهاد ممكن يعطي أداء أفضل بالمشاريع الكبيرة، خصوصاً لما يكون عندك components كتيرة وتعقيد عالي.
ومن الإضافات المفيدة دعم import.meta.glob، وهي بتفيدك لو عندك ملفات كثيرة بدك تستوردها تلقائياً، مثل blog posts، MDX files، أو صفحات محتوى، بدون ما تكتب import لكل ملف بإيدك.
كمان Turbopack صار أذكى بحجم الـ runtime code، يعني ما بيشحن features غير مستخدمة، وهاد بيساعد على تحسين الأداء وتقليل الزوائد.
شو رايك بالتحديث الجديد؟
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
إذا عم تفعّل WhatsApp Username، لا تترك خيار Username Key مطفّى.
الفكرة إنه الـ username لحاله بيخلي أي شخص بيعرفه يقدر يراسلك لأول مرة.
أما Username Key فبيضيف طبقة خصوصية زيادة:
الشخص لازم يعرف الـ username ومعه كمان كود من 4 أرقام قبل ما يقدر يبعتلك أول رسالة.
يعني بدل ما يكون الوصول إلك عن طريق username بس، بيصير في خطوة حماية إضافية بتقلل الرسائل العشوائية والناس الغريبة.
نصيحة: فعّل Username Key من البداية، خصوصاً إذا ناوي تستخدم username بدل رقم الموبايل.
2 727
واتساب عم يجهّز لواحدة من أكبر تحديثات الخصوصية بالتطبيق: Username Feature.
الفكرة ببساطة إنك تقدر تتواصل مع الناس عن طريق username بدل ما تعطيهم رقم موبايلك، يعني رقمك بيضل مخفي عن الأشخاص الجدد.
الميزة اختيارية، واللي بدو يضل يستخدم واتساب بالطريقة القديمة عن طريق رقم الهاتف بيقدر عادي.
شروط الـ username:
بين 3 و 35 حرف
بيدعم lowercase letters، أرقام، dot و underscore
لازم يحتوي على حرف واحد على الأقل
ما بيقبل أسماء تشبه الدومينات مثل .com
وفي كمان خيار اسمه username key، وهو كود من 4 أرقام بيشتغل كطبقة حماية إضافية، يعني حتى لو حدا عرف الـ username تبعك، ما بيقدر يبعتلك إلا إذا معه هالكود.
المهم كمان إنه ما في public directory ولا بحث عشوائي عن usernames، لازم الشخص يعرف الـ username بشكل دقيق حتى يقدر يتواصل معك.
الميزة بتخلي واتساب أقرب لـ Telegram و Signal من ناحية الخصوصية، وبتخفف مشاركة أرقام الهاتف خصوصاً بالجروبات، الشغل، أو التواصل مع ناس جداد.
2 727
لارافيل أضافت ميزة جديدة اسمها Route Metadata.
الميزة بتسمح نربط إعدادات ومعلومات ثابتة مباشرة مع كل Route، ونقرأها لاحقاً داخل Middleware أو Controller بدل ما نعتمد على اسم الـ Route أو نكرر نفس الإعدادات في أكثر من مكان.
مثال:
Route::post('/payments', PaymentController::class)
->metadata([
'module' => 'finance',
'audit' => true,
'sensitive' => true,
]);
وبعدين داخل Middleware:
$route = $request->route();
$route->getMetadata('module'); // finance
$route->getMetadata('audit'); // true
$route->getMetadata('sensitive'); // true
بناءً على هالمعلومات ممكن نعمل Middleware موحد يقوم مثلاً بـ:
تسجيل العمليات التي تحتاج Audit Log.
تطبيق حماية إضافية على العمليات الحساسة.
تحديد إعدادات الـ cache أو rate limit لكل Route.
تصنيف الـ APIs حسب الموديول لأغراض التوثيق والمراقبة.
كمان ممكن نضيف Metadata على Route Group، وLaravel رح تورثها تلقائياً لكل Routes الموجودة داخل المجموعة.
الميزة ما بتنفذ المنطق لحالها، لكنها بتعطي كل Route وصف وإعدادات منظمة نقدر نبني عليها سلوك موحد، وبتكون مفيدة خصوصاً بالمشاريع الكبيرة التي فيها عدد كبير من الـ APIs والـ Middlewares.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال2 727
بالإصدارات الجديدة من Laravel، صار فيكن تشغّلوا بيئة التطوير كاملة من خلال أمر واحد:
php artisan dev
الأمر بيشغّل عدة Development Processes بنفس الوقت، مثل:
Laravel development server
Queue worker
Log tailing
Vite
يعني تقريباً نفس وظيفة composer dev الموجودة حالياً، بس الفرق إنو إعدادات الـ processes ما عادت محصورة ضمن composer.json، وصار فينا نتحكم فيها من داخل Application Code.
التغيير بسيط، لكن بيساعد كتير بتنظيم Development Environment و بخلي تشغيل خدمات المشروع المحلية أوضح وأسهل، خصوصاً بالمشاريع اللي بتستخدم Queue، Reverb، Vite أو أدوات مثل Stripe CLI.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال2 727
ال Attackers قادرين يعملوا bypassing عال rate limiting من خلال استخدام IP متعددة
كيف فينا نحمي ال API تبعنا من هيك موضوع؟
2 727
أغلبنا لما منعمل بحث فورا منروح منعمل:
WHERE title LIKE '%laravel%'
المشكلة اللي ماكنا حاطينها بالبال هيي انه وجود ٪ عم يعطل الاستفادة من ال index و بيجبر الDB انها تعمل Full Table Scan و اذا كان الجدول كبير الأداء رح ينهار تماماً
الأفضل انك تجرب تستخدم:
$table->fullText('title');
و بالبحث:
Post::whereFullText('title', 'laravel')->get();
الـ Full-Text Search بيستخدم فكرة Inverted Index، يعني بيكون عنده فهرس للكلمات ومكان وجودها، بدل ما يفتش بكل النصوص.
بس انتبه:
Full-Text Search غالباً بيبحث عن الكلمة الكاملة، يعني lar ما رح يرجّع laravel.
للبحث بالبداية استخدم Boolean Mode مع *
Post::whereFullText('title', 'lar*', [
'mode' => 'boolean',
])->get();
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال2 727
فريق Laravel نشروا إنهم عم يراجعوا ثغرات CVE جديدة تم الإعلان عنها ومعالجتها من طرف Symfony.
بما إن Laravel بيعتمد على بعض حزم Symfony، الأفضل حالياً تعمل تحديث وفحص لحزم المشروع عندك.
نفّذ الأوامر التالية:
composer update
composer audit
الأول بيحدّث dependencies حسب القيود الموجودة عندك، والثاني بيفحص إذا في حزم عندك عليها ثغرات معروفة.
نصيحة: لا تعمل التحديث مباشرة على production. جرّبه أولاً على local أو staging
#Laravel #PHP #Symfony #Security #Composer2 727
كمبرمج شي مرة سالت حالك شو الفرق بين:
- npm install
- npm ci
شاركونا بالتلعيقات 👇
2 727
اصدار جديد نزل هلا من pnpm بيحمل الرقم 11.1.3
إذا إنت Frontend أو MERN Stack Developer وبتستخدم pnpm، أهم شغلات لازم تعرفها من هالإصدار:
🔒 Lockfile صار ينفحص قبل التحميل
صار pnpm install يعيد التحقق من pnpm-lock.yaml قبل ما ينزّل أي package، خصوصاً مع سياسات مثل:
* minimumReleaseAge
* trustPolicy: "no-downgrade"
يعني إذا الـ lockfile جاي من CI cache، أو معمول بإصدار أقدم، أو resolved بسياسة أضعف، pnpm ممكن يوقف الـ install بدل ما يثبّت package جديدة أو مش موثوقة بصمت.
ممكن تشوف Errors مثل:
* ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION
* ERR_PNPM_TRUST_DOWNGRADE
* ERR_PNPM_LOCKFILE_RESOLUTION_VERIFICATION
⸻
⏳ تحسين حماية الحزم الجديدة جداً
إذا package بعدها منشورة حديثاً وما حققت شرط minimumReleaseAge:
* بالـ loose mode: pnpm ممكن يضيفها تلقائياً للـ exclude ويكمل.
* بالـ strict mode: بيسألك إذا كنت interactive.
* بالـ CI: بيفشل مباشرة وبيعطيك كل الـ packages المخالفة.
هاد مهم جداً للـ supply chain security، خصوصاً بمشاريع production.
⸻
🧪 pnpm self-update صار يحترم minimumReleaseAge
يعني حتى تحديث pnpm نفسه ما رح يروح مباشرة على أحدث version إذا كانت جديدة جداً ولسا ضمن فترة الحذر.
⸻
🧱 تحسينات مهمة للـ Global Installs و Build Scripts
تم إصلاح مشكلة كانت تخلي global installs تتجاهل إعدادات build policy مثل:
dangerouslyAllowAllBuilds
خصوصاً مع Global Virtual Store.
⸻
🤫 –silent صار محترم أكتر
إذا عندك:
verifyDepsBeforeRun: install
وكان pnpm عم يعمل auto-install قبل pnpm run أو pnpm exec، صار يحترم --silent وما يطلع install output مزعج.
⸻
🪟 Fix للـ pnpm-lock.yaml مع CRLF
تم إصلاح مشاكل parsing لما يكون lockfile فيه CRLF line endings و multiple YAML documents، وهذا ممكن يهمك إذا الفريق شغال بين Windows / Linux / CI.
⸻
🧩 تحسينات مع Node Runtime و devEngines.runtime
pnpm صار يحسب cache keys والـ global virtual store hash بناءً على Node version اللي فعلياً رح يشغّل lifecycle scripts، مو بس Node اللي شغّل pnpm.
هاد مهم إذا مشروعك بيستخدم:
* devEngines.runtime
* pinned Node version
* pnpm exe bundle
* CI environments مختلفة
النتيجة: cache أدق ومشاكل أقل بين local و CI.
⸻
📦 تحسينات publish مع OIDC
تم إصلاح مشكلة pnpm publish لما يكون الاعتماد على OIDC trusted publishing ومع وجود _authToken=${NODE_AUTH_TOKEN} بدون ما يكون المتغير موجود.
⸻
⚠️ تحذير مهم لمستخدمي pnpm v10 → v11
إذا عندك إعدادات قديمة داخل package.json مثل:
* pnpm.overrides
* pnpm.patchedDependencies
pnpm صار يحذرك إنها ما عادت تُقرأ من package.json بدل ما يتجاهلها بصمت.
⸻
بشكل عام هالإصدار مركز بشكل واضح على:
✅ Security
✅ Lockfile verification
✅ CI stability
✅ Runtime consistency
✅ حماية أفضل من packages المنشورة حديثاً أو downgraded trust
إذا مشروعك Frontend / React / Next.js / MERN وبيعتمد على pnpm، التحديث مهم، بس لازم تنتبه لإعدادات minimumReleaseAge والـ lockfile بالـ CI.
———————————-
Linkedin |Instgram | YouTube
أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال
2 727
ما هي التقنية التي تسمح لعدة أجهزة ضمن شبكة محلية بمشاركة عنوان IP عام واحد للوصول إلى الإنترنت؟
