fa
Feedback
Code With Somar

Code With Somar

رفتن به کانال در Telegram

🚀 ريادي أعمال ومطوّر ويب بخبرة واسعة 💻 متخصص بتطوير حلول ويب متكاملة باستخدام Laravel، Django، React، Vue، و Node.js. 🏆 ضمن أفضل 4 صناع محتوى في سوريا وأفضل 3 في المحتوى التقني. 🌟 ناشط في مجتمع برمجة الأطفال، ومساهم في تطوير المحتوى التقني عربياً.

نمایش بیشتر
2 726
مشترکین
-124 ساعت
اطلاعاتی وجود ندارد7 روز
+1230 روز
آرشیو پست ها
😭😭
😭😭

بما انه 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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

شركة Anthropic أعلنت إنها مددت فترة الوصول لنموذج الذكاء الاصطناعي Claude Fable 5 لكل المستخدمين المشتركين بالخطط المدفوعة (Paid plans). التمديد رح يكون مستمر لغاية 12 تموز (يوليو). فرصة ممتازة لتستفيدوا من قدرات المودل وتجربوه بمشاريعكم وتختبروا أداءه بكتابة الأكواد خلال هالكم يوم الإضافيين! 🔥 #AI #Anthropic #ClaudeFable5 #TechNews

تخيل Query علقت. أو Query ناطرة Lock على جدول، والجدول محجوز من عملية ثانية. إذا ما عندك Timeout، ممكن تضل العملية معلقة لفترة طويلة جداً. المشكلة إنها مو بس معلقة وخلاص. هي كمان ممكن تكون: حاجزة Connection مستهلكة موارد مانعة عمليات ثانية مسببة تراكم بالطلبات وراها مشاكل أكبر بالتطبيق لذلك لازم تحط حدود زمنية واضحة. أهم إعدادين: statement_timeout بيوقف أي استعلام إذا أخذ أكثر من مدة معينة. lock_timeout بيوقف الاستعلام إذا ظل ينتظر Lock أكثر من مدة معينة. ———————————- Linkedin |Instgram | YouTube أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

أحياناً قاعدة البيانات تتأخر أو تتعطل لثواني. المشكلة مو هون. المشكلة لما التطبيق يكون مبرمج يعمل Retry فوراً وبلا حدود. يعني الطلب يفشل، فيعيد المحاولة مباشرة. يفشل مرة ثانية، يعيد مباشرة. ويضل يعيد بدون توقف. شو بيصير؟ بدل ما تساعد النظام يرجع، أنت بتزيد الضغط عليه. ولما PostgreSQL يبدأ يتعافى، بتوصله دفعة ضخمة من الطلبات المتراكمة بنفس اللحظة. وهون ممكن يرجع ينهار من جديد. هاي الحالة اسمها Thundering Herd. لهيك استخدم Exponential Backoff. يعني لا تعيد المحاولة فوراً. خلي في وقت انتظار بين كل محاولة ومحاولة. مثلاً: المحاولة الثانية بعد 1 ثانية الثالثة بعد 3 ثواني الرابعة بعد 10 ثواني وبعد عدد معين من المحاولات، توقف وارجع Error واضح. الأفضل كمان تضيف Jitter، يعني تأخير عشوائي بسيط، حتى ما كل الطلبات تعيد المحاولة بنفس اللحظة. ———————————- Linkedin |Instgram | YouTube أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

في 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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

اكتر شي رح يواجهك مع PostgreSQL هو الـ Query البطيئة اللي ما بتعرف سببها ليش؟ اكبر غلط ممكن توقع فيه هو انك تحاول تحزر او تخمن شو السبب فممكن يخطر عبالك: • يمكن المشكلة بالـ index • يمكن الجدول كبير • يمكن الـ join غلط !! بس الحلو انه بدال كل هالتخمين هاد فيك بكل بساطة تستخدم:
EXPLAIN (ANALYZE, BUFFERS)
لانه بشغلك الاستعلام و بيعطيك معلومات واضحة مثل: كم أخذ وقت حقيقي هل استخدم Index أو عمل Sequential Scan أي جزء من الاستعلام هو الأبطأ كم قرأ من الذاكرة RAM كم اضطر يقرأ من الهارد هل المشكلة بالـ Join، Sorting، Filtering، أو غيرها ———————————- Linkedin |Instgram | YouTube أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

بما انه شعبية PostgreSQL عم تكبر كل يوم اكتر رح نززلكم سلسلة منشورات بتحكي عن أشهر الأخطاء اللي ممكن تواجهك معها و نصائح مهمة كتير تتبعها لما مشروعك رح يصير Production ———————————- Linkedin |Instgram | YouTube أنا Somar Kesen أعمل كـ Full Stack Developer أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

الـ 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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

إذا عم تفعّل WhatsApp Username، لا تترك خيار Username Key مطفّى. الفكرة إنه الـ username لحاله بيخلي أي شخص بيعرفه يقدر يراسل
إذا عم تفعّل WhatsApp Username، لا تترك خيار Username Key مطفّى. الفكرة إنه الـ username لحاله بيخلي أي شخص بيعرفه يقدر يراسلك لأول مرة. أما Username Key فبيضيف طبقة خصوصية زيادة: الشخص لازم يعرف الـ username ومعه كمان كود من 4 أرقام قبل ما يقدر يبعتلك أول رسالة. يعني بدل ما يكون الوصول إلك عن طريق username بس، بيصير في خطوة حماية إضافية بتقلل الرسائل العشوائية والناس الغريبة. نصيحة: فعّل Username Key من البداية، خصوصاً إذا ناوي تستخدم username بدل رقم الموبايل.

واتساب عم يجهّز لواحدة من أكبر تحديثات الخصوصية بالتطبيق: Username Feature. الفكرة ببساطة إنك تقدر تتواصل مع الناس عن طريق username بدل ما تعطيهم رقم موبايلك، يعني رقمك بيضل مخفي عن الأشخاص الجدد. الميزة اختيارية، واللي بدو يضل يستخدم واتساب بالطريقة القديمة عن طريق رقم الهاتف بيقدر عادي. شروط الـ username: بين 3 و 35 حرف بيدعم lowercase letters، أرقام، dot و underscore لازم يحتوي على حرف واحد على الأقل ما بيقبل أسماء تشبه الدومينات مثل .com وفي كمان خيار اسمه username key، وهو كود من 4 أرقام بيشتغل كطبقة حماية إضافية، يعني حتى لو حدا عرف الـ username تبعك، ما بيقدر يبعتلك إلا إذا معه هالكود. المهم كمان إنه ما في public directory ولا بحث عشوائي عن usernames، لازم الشخص يعرف الـ username بشكل دقيق حتى يقدر يتواصل معك. الميزة بتخلي واتساب أقرب لـ Telegram و Signal من ناحية الخصوصية، وبتخفف مشاركة أرقام الهاتف خصوصاً بالجروبات، الشغل، أو التواصل مع ناس جداد.

لارافيل أضافت ميزة جديدة اسمها 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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

بالإصدارات الجديدة من 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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

ال Attackers قادرين يعملوا bypassing عال rate limiting من خلال استخدام IP متعددة كيف فينا نحمي ال API تبعنا من هيك موضوع؟

أغلبنا لما منعمل بحث فورا منروح منعمل:

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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

فريق Laravel نشروا إنهم عم يراجعوا ثغرات CVE جديدة تم الإعلان عنها ومعالجتها من طرف Symfony. بما إن Laravel بيعتمد على بعض حز
فريق Laravel نشروا إنهم عم يراجعوا ثغرات CVE جديدة تم الإعلان عنها ومعالجتها من طرف Symfony. بما إن Laravel بيعتمد على بعض حزم Symfony، الأفضل حالياً تعمل تحديث وفحص لحزم المشروع عندك. نفّذ الأوامر التالية:

composer update
composer audit
الأول بيحدّث dependencies حسب القيود الموجودة عندك، والثاني بيفحص إذا في حزم عندك عليها ثغرات معروفة. نصيحة: لا تعمل التحديث مباشرة على production. جرّبه أولاً على local أو staging #Laravel #PHP #Symfony #Security #Composer

كمبرمج شي مرة سالت حالك شو الفرق بين: - npm install - npm ci شاركونا بالتلعيقات 👇

اصدار جديد نزل هلا من 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 أنشر بشكل شبه يومي منشورات تحتوي على العديد من المعلومات عن تطوير البرمجيات و سوق العمل مستخلصة من خبرة سنين في العمل مع العديد من الشركات في الشرق الأوسط و أوروبا ضمن هذا المجال

ما هي التقنية التي تسمح لعدة أجهزة ضمن شبكة محلية بمشاركة عنوان IP عام واحد للوصول إلى الإنترنت؟
Anonymous voting