لمحة 👀 برمجية – Telegram
لمحة 👀 برمجية
607 subscribers
142 photos
8 videos
13 files
141 links
Download Telegram
القفزة الكبيرة التي قد تحدث في الفترة القادمة ستكون في مجال المعدات الحاسوبية (Hardware)، وذلك لاستيعاب الكم الهائل من العمليات ومعالجة البيانات (Data Processing)، والتي شهدت طفرة هائلة مؤخرًا بسبب الذكاء الاصطناعي (AI - Artificial Intelligence).
قد نشهد توجهًا متسارعًا نحو الحوسبة الكمّية (Quantum Computing)، مما سيؤدي إلى نقلة نوعية في علوم الفيزياء (Physics) وما يرتبط بها.
نسأل الله أن يكون لنا كمسلمين (Muslims) موطئ قدم في هذه الثورة التكنولوجية (Technological Revolution)، وألا يفوتنا القطار كما فاتنا في محطات سابقة.
جمعتكم مباركة (Blessed Friday).
👍1
الشغل المنظم والله يحتاج مطور frontend محترف حتى ولو كنت فاهم في هذا المجال لا تظن ان ال ai  قد قضى على هذا المجال أو حتى في المستقبل إذا كانت لاتحب المجال لاتحبط غيرك المجال ثقيل جدا وقلت لك من يومه ال ai سيكون مثل سوق الحراج .
👍1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
### "كيف تتعامل مع البيزنس تيم من غير ما تموت من الضغط؟"
(بدون لف ولا دوران 🚀)


#### 1 - اسأل زي اللي بيسأل في مسابقة 🕵️♂️
لو PO قالك: "نُريد زرًّا أزرق!"
لا تبدأ تبرمج على طول. اسأله:
- "ليه أزرق؟" (مش لون مُميز!)
- "هيحل إيه؟" (مش مجرد لون!)
- "هتقيس نجاحه بإيه؟" (عدد النقرات؟ المبيعات؟)
الهدف: تاخد ورقة الإجابات دي... وتبرمج الحل الحقيقي، مش التوصيف السطحي.


#### 2 - حوّل "الترمنولوجيا التقنية" لـ"ميمز" يفهموها 😂
مثال:
- لو تقني قال: "هندمج API مع النظام القديم!"
- البيزنس تيم: "..." (وجه مُحتار).
الحل:
قل: "هنوصّل النظام الجديد بالقديم زي ما توصّل الجوال بالوايفاي. هيرسل بيانات بعض بسلاسة!"
النتيجة: "آه فهمنا! روح اعمل كده!"


#### 3 - اكتب "العقد" على ورق حمام (مش حرفيًا 🚽)
قبل ما تبدأ أي task:
- أرسل رسالة قصيرة للفريق تقول:
"التسليم هيكون: [كذا]
الموعد: [كذا]
طريقة القياس: [كذا]
اتفقنا؟ 👍👎"
لو قالوا "👍"، سجّل الرسالة وخُد screenshot. لو حصل خلاف بعد كده، أرسل الصورة وقُل: "دي كانت الصفقة!" 🤝


#### 4 - أخبرهم بالـ Progress كل يومين… بالـ Memes 🐸
مثال:
- بعد يومين من العمل: أرسل صورة قطة بتكتب على لاب توب مع تعليق:
"الوضع دلوقتي:
- الـ API اتعمل
- الـ Database اتربط
- باقي التصميمات الجاية بكرة!"
النتيجة: البيزنس تيم هيحسّوا بالإنجاز من غير ما تضطر تعمل meeting ساعة! 🎉


#### الخلاصة السريعة:
- لا تكن روبوت: حول التفاصيل التقنية لقصص وحكايات.
- لا تصمت: لو في مشكلة، قولها من بدري (مش علشان تتفاجأوا سوا!).
- خليك مرن: sometimes البيزنس بيحتاج يتعدّل… وال flexibility دي هتخليك محترف.


ملاحظة: لو طلعت من الاجتماع وأنت مُبتسم، فأنت فزت 🏆.
2
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
التحقق من صحة المدخلات (Input Validation) يجب أن يكون في الخلفية (Backend) لسبب بسيط جدًا:
واجهة المستخدم الأمامية (Frontend) من السهل جدًا تجاوزها، حيث يمكن لأي شخص إرسال الطلبات مباشرةً إلى الخادم باستخدام أدوات مثل Postman، فماذا ستفعل حينها؟
لماذا نضيف التحقق في الواجهة الأمامية أيضًا؟
قد يتساءل البعض: إذا كان التحقق في الخلفية ضروريًا، فلماذا نكرره في الواجهة الأمامية؟
الإجابة تكمن في عدة أسباب مهمة:
تحسين الأداء: بدلاً من إرسال الطلب إلى الخادم، مما يستهلك موارده فقط ليتم رفضه لاحقًا، يمكننا منع الأخطاء مبكرًا.
تحسين تجربة المستخدم (UX): إذ يمكننا تقديم تغذية راجعة فورية للمستخدم، مما يجنبهم ارتكاب الأخطاء قبل إرسال الطلب.
تحسين الأمان جزئيًا: لا يمنع هذا الاختراق بشكل كامل، لكنه يجعل تجاوزه أكثر صعوبة.
لماذا "تحسين الأمان جزئيًا" وليس كليًا؟
لأن الواجهة الأمامية يمكن تجاوزها بسهولة، كما ذكرت سابقًا. أي شخص يمكنه فتح أدوات المطور في المتصفح (F12)، والتعديل على HTML، مما يؤدي إلى تغيير سلوك التطبيق دون الحاجة إلى أي معرفة برمجية متقدمة.
ولكن، تذكر قاعدة مورفي:
"إذا كان هناك احتمال لحدوث خطأ، فسيحدث لا محالة!"
بمعنى آخر، ما دام من الممكن تجاوز التحقق في الواجهة الأمامية، فهناك من سيتجاوزه حتمًا! وهذا ليس مجرد احتمال نظري، بل حقيقة شهدتها شخصيًا عند استخدام أشخاص عاديين (ليسوا مبرمجين) لأدوات المطور لتعديل سلوك التطبيق، وهو ما كان أمرًا مذهلًا وغير متوقع!
الخلاصة:
التحقق من صحة المدخلات يجب أن يتم في كلٍّ من الخلفية والواجهة الأمامية معًا، حتى لو كان هذا تكرارًا للعمل، لكن الأهم دائمًا هو التحقق في الخلفية، لأن:
"الواجهة الأمامية من السهل جدًا تجاوزها، ويمكن إرسال الطلبات مباشرةً إلى الخادم باستخدام Postman، فماذا ستفعل حينها؟"
1
Forwarded from 🚀DevJourney🚀 (Abdulwaisa Al Nuaimi)
فكرة مشروع "نظام إتمامة المعاملات الرقمي لليمن"**

---

✍️ المشكلة:
في بلادنا الحبيبة اليمن، مازالت معظم المعاملات الرسمية بين المواطنين والمؤسسات تُدار بطريقة ورقية تقليدية. هذه الطريقة تعاني من:
- التعطيل عند غياب المدير أو الموظف المسؤول (حتى لو ليوم واحد!).
- ضياع الوقت والجهد في التنقل بين المكاتب والمصادقات اليدوية.
- فقدان الأوراق أو تلفها، ما يُعرض حقوق الناس للخطر.
- الروتين البطيء الذي يُرهق المواطن ويُعيق تقدم المؤسسات.

---

💡 الحل المُقترح:
مشروع "نظام إتمامة المعاملات الرقمي" يهدف إلى تحويل كل الإجراءات الورقية إلى منصة إلكترونية موحدة وآمنة، مع الحفاظ على الشرعية القانونية عبر:
1. التوقيع الإلكتروني المُعتمد: لكل مسؤول وموظف، مع إمكانية تفويض الصلاحيات عند الغياب.
2. الختم الرقمي: لكل مؤسسة، يُضاف تلقائيًا بعد إتمام الإجراء.
3. منصة موحدة: تُربط فيها جميع المؤسسات (حكومية/خاصة)، وتُدمج خدماتها.
4. تتبع المعاملة: يُمكن للمواطن معرفة مراحل معاملته عبر رقم مُتابعة أو رسائل SMS.
5. أرشفة ذكية: حفظ جميع المستندات رقمياً بشكل منظم، مع إمكانية الاسترجاع الفوري.

---

فوائد النظام:
- للمواطن:
- إنجاز المعاملات من المنزل أو عبر الجوال.
- لا حاجة للتنقل أو الانتظار لساعات.
- تقليل التكلفة المادية (طباعة، مواصلات).
- للمؤسسات:
- زيادة الكفاءة وتقليل الأخطاء البشرية.
- توفير الوقت والجهد على الموظفين.
- تعزيز الشفافية ومحاربة الفساد الإداري.
- لليمن:
- خطوة نحو التحول الرقمي واللحاق بركب التطور.
- حماية البيئة بتقليل استخدام الورق.

---

🛠️ آلية التنفيذ:
- تطوير نظام مركزي سحابي (Cloud) يتوافق مع البنية التحتية الحالية.
- تدريب الكوادر في المؤسسات على استخدام النظام.
- توعية المواطنين عبر حملات إعلامية.
- التعاون مع جهات حكومية وشركات تقنية لضمان الأمان والجودة.

---

🌐 دعوة للمهتمين:
نبحث عن:
- مبرمجين ومطوري أنظمة.
- خبراء في الأمن السيبراني.
- مؤسسات حكومية أو خاصة مستعدة للتجربة.
- داعمين لتمكين هذا الحلم.

---

📢 "التغيير يبدأ بفكرة... فلنكن نحن رواده!"
إذا كنت تؤمن بأهمية الرقمنة في إنقاذ بلدنا من الروتين القاتل، ساهم بنشر الفكرة أو تواصل معنا. كل خطوة صغيرة تُقدّم الأمل لليمن.

---
#يمن_رقمي #مشاريع_تطوير_اليمن #إتمامة_المعاملات

---

*شارك الفكرة... قد تكون شرارة التغيير!* 🔥
6👍1
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
website wireframe kit.zip
500.5 KB
👍1
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
اللجنة العلمية CS 22
website wireframe kit.zip
لمن أراد:
+ منقول من أحد المصممين في تويتر
👍1
"يا خبير الأمن السيبراني، ممكن تقفل لي حساب الفيسبوك هذا؟ أو تخترق لي حساب ببجي؟"

هذه واحدة من أكثر الجمل اللي أسمعها بشكل يومي! فحبيت أوضح لكم فكرة بسيطة عن الأمن السيبراني، لأنه مش مجرد "اختراق" زي ما البعض يظن، بل مجال واسع وله عدة تخصصات، وأهمها:

🔴الفريق الأحمر (Offensive Security):هذا الفريق متخصص في اختبار الاختراق، يعني يشتغل كمهاجم أخلاقي لاكتشاف الثغرات قبل ما يستغلها الهاكرز الحقيقيين. لو حاب تكون ضمن الفريق الأحمر، لازم تتعلم أدوات الاختراق مثل Metasploit و Nmap، وتكون عندك خبرة في أنظمة التشغيل مثل Kali Linux و Parrot OS.
🔵الفريق الأزرق (Defensive Security):
هنا يكون دور الدفاع وحماية الأنظمة من الهجمات. أعضاء هذا الفريق مسؤولون عن التصدي للهجمات، وتحليل الحوادث الأمنية من خلال Incident Response Plans، أو حتى تطبيق سياسات الأمن مثل GRC لضمان التزام الشركات بالمعايير الأمنية، بالإضافة إلى تحليل البرمجيات الخبيثة (Malware Analysis) لمعرفة كيفية عمل الفيروسات وإيقافها.
🟣الفريق البنفسجي (Purple Team):هذا الفريق يجمع بين الفريق الأحمر والأزرق، بحيث يختبر الدفاعات الأمنية ويحسنها من خلال الاستفادة من أساليب الهجوم والدفاع معًا.
باختصار: الأمن السيبراني مش إنك "تهكر" حسابات الناس، بل إنك تحميهم من اللي يحاول يهكرهم! 😎🔥
هذا المنشور فقط عشان أوضح الصورة، لأنه بصراحة مليت من تكرار نفس الهدره كل يوم. 😁
👍3🤩1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
في خيالي أرى أنه مع التطور السريع للذكاء الاصطناعي خلال السنوات العشر القادمة ستحدث تغييرات جذرية تتجاوز ما نشهده اليوم، رغم أن التقنيات الحالية ذكية ومتقدمة إلى حد كبير لكنها لا تزال محدودة ضمن نطاق معين. ولكن في المستقبل القريب، وربما خلال أقل من عشر سنوات، قد نشهد طفرة تفوق ما هو موجود حاليًا بمراحل!
وفيما يلي عرض لأفكاري التي وصلت إليها، وأنا متشوق لمعرفة رأيك:
لن يكون الذكاء الاصطناعي مجرد أداة عادية؛ بل أتوقع أن يصل إلى مستوى وعي حقيقي. فلن يقتصر على التدريب على البيانات فقط، بل سيتمكن من تعلم كل ما هو جديد بدون الحاجة إلى تدريب مباشر، وسيستخدم المنطق والاستنتاج كما يفعل الإنسان.
سيتعلم الذكاء الاصطناعي فهم مشاعرك من نبرة صوتك؛ أي أنه لن يقتصر على الرد عليك فقط، بل سيتمكن من الشعور بك والتفاعل مع حالتك النفسية سواء كنت سعيدًا أو مضغوطًا أو حتى حزينًا. وربما في المستقبل يلجأ البعض إليه لتلبية احتياجاتهم العاطفية، وقد تصل الأخبار إلى حد قول "فلان تزوج روبوتاً".
قد يتحقق سيناريو يشبه فيلم "الليمبي 8 جيجا" حرفيًا، حيث تظهر واجهات الدماغ (BCI) التي تربط عقلك مباشرة بالذكاء الاصطناعي، مما يسمح لك بالتفكير في أمر معين وتنفيذه دون الحاجة إلى التحدث أو الكتابة. ومن المعروف أن إيلون ماسك يعمل على مشروع مماثل مع شركة Neuralink.
سيكون الذكاء الاصطناعي قادرًا على تطوير نفسه ذاتيًا؛ إذ لن يكتفي بتعلم أخطائه فحسب، بل سيعيد برمجته لحظيًا، مما يعني تطورًا أسرع بكثير مما شهدناه سابقًا، في مشهد قد يبدو مشابهًا لأفلام مثل "Terminator" و"The Matrix".
قد يتحول الذكاء الاصطناعي إلى كائن جديد ذو شخصية مميزة، يتعامل مع الإنسان كما لو كان صديقًا حميمًا، وقد يصبح شريكًا في العمل أو الحياة. وبفضل هذا التطور، قد نرى روبوتات تعمل في كافة المجالات، مثل الطب والهندسة والتعليم، بل وحتى في مجالات تصنيع الأدوية.
للأسف، فإن القادم لن يكون مجرد تحسينات تدريجية، بل ثورة حقيقية في مجالي الذكاء البشري والتقني، وهو ما تؤكده العديد من الدراسات. ومع كل هذه التطورات، تبرز الحاجة الملحة لوضع قوانين وإطار أخلاقي ينظم استخدام الذكاء الاصطناعي.
السؤال الآن: هل ترى أن هذا التطور سيكون تقدمًا إيجابيًا أم أنه يمثل بداية لشيء قد يخرج عن السيطرة؟ وما هي توقعاتك، حتى وإن كانت من باب الخيال، للفترة القادمة؟
2👍1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
🚀 للمهتمين بعلم الحاسوب والـ Compiler!
إذا كان لديك اختبار قادم في Compiler، فهذا الفيديو سيكون نقلة نوعية لك بإذن الله! 🎯 لا تفوّت الفرصة لتستفيد منه وتتفوق في دراستك.
🔥 خبر هام!
هذه القناة ليست مجرد قناة تقنية، بل تجربة ستغيّر تفكيرك في عالم البرمجة! 📌 مقابلات حصرية مع خبراء المجال، حوارات ممتعة تمتد لأكثر من ساعة، معلومات قيّمة ستفتح لك آفاقًا جديدة في كافة المجالات التقنية.
🎥 شاهد الآن وكن جزءًا من هذا التغيير! 👇
🔗 رابط القناة
لا تنسَ الدعاء، فالعلم النافع صدقة جارية! 💡
👍1
"في عز ما الكل مركز على الذكاء الاصطناعي، اجعل تركيزك الأكبر على الناس الكويسة وربطهم ببعض من خلال شبكة علاقات قوية جداً. التكنولوجيا تتطور بسرعة، لكن العلاقات الإنسانية هي التي تصنع الفارق الحقيقي. العلاقات الناجحة مش رفاهية، بل هي استثمار استراتيجي يجب أن تبدأ به منذ سنوات، لأنها مفتاح الفرص والنمو في أي مجال. الذكاء الاصطناعي قد يساعدك على الإنجاز، لكن الأشخاص الجيدين هم من يساعدونك على النجاح والاستمرار."
👏3👍2
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
الان نزل Laravel 12
جميع التفاصيل تجدوها في الموقع الرسمي:
https://laravel.com/docs/12.x/releases
🤩1
اللجنة العلمية CS 22
الان نزل Laravel 12 جميع التفاصيل تجدوها في الموقع الرسمي: https://laravel.com/docs/12.x/releases
الي مستغرب مسرع هكذا !
لارافل كل سنه تفعل تحديث جديد (عشان خايفين ما تموت PHP اذا تأخرو ههههههه)

المهم... اعتقد ما بين لارافل 11 و 12 تغييرت طفيفة في API الخاص بالفريمورك... فقط الاصدار 10 و 11 الي حصلت تغييرات جذريه في API
👍2🎉1
Forwarded from 🚀DevJourney🚀 (Abdulwaisa Al Nuaimi)
ما هي ميزة MVP؟ 🤔
عندما تخطر ببالك فكرة تطبيق جديد، ليس من الحكمة أن تبدأ بتنفيذ جميع الميزات دفعة واحدة، فذلك قد يكون مكلفًا ويستهلك الكثير من الوقت، وقد تكتشف في النهاية أن المستخدمين لا يحتاجون إلى كل تلك التفاصيل.
هنا يأتي دور MVP Feature، وهي الميزة الجوهرية التي لا يمكن للتطبيق أن يعمل بدونها. الهدف الأساسي منها هو إطلاق التطبيق بأقل جهد ممكن، لكن بشكل كافٍ ليتمكن المستخدمون من تجربته وتقديم ملاحظاتهم قبل أن تستثمر المزيد من الوقت والموارد في تطوير ميزات إضافية.
على سبيل المثال، إذا كنت تعمل على تطبيق لتوصيل الطعام، فمن غير الضروري أن تبدأ بنظام مكافآت أو تجربة مستخدم فائقة التطور، لكن لا بد أن توفر الأساسيات مثل:
تسجيل الدخول وإنشاء الحساب
قائمة المطاعم مع تفاصيل الوجبات
إمكانية الطلب عبر الإنترنت
وسيلة دفع تعمل بكفاءة
بمجرد أن تتأكد من اهتمام المستخدمين واستخدامهم الفعلي للتطبيق، يمكنك حينها التفكير في إضافة ميزات مثل التقييمات، العروض، تتبع الطلب، أو حتى التوصيات الذكية المعتمدة على الذكاء الاصطناعي لتحسين التجربة وزيادة التفاعل.
باختصار،
التركيز على الميزات الأساسية في البداية يساعدك على إطلاق التطبيق بسرعة، واختبار فكرته في السوق، والتأكد من أنك تسير في الاتجاه الصحيح قبل استثمار المزيد من الوقت والمال والجهد.
👍2
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
🚀 لماذا موقعي (أو موقعك) بطيء؟! 😱🔥
وأنا أؤدي اختبارًا إلكترونيًا في الكلية، لاحظت أن النظام بطيء جدًا! 🤯 فبدأت أبحث عن السبب، ووجدت أن هناك أسرار تقنية تؤثر على سرعة أي موقع! 👀🔍
💡 تعالَ نفهم كيف يتم تحميل الصفحة وما الذي يجعلها بطيئة!
🔴 1. طلب الصفحة من السيرفر
المتصفح يرسل طلب HTTP إلى السيرفر لجلب ملف الـ HTML. إذا كان السيرفر بطيئًا 🐌 أو غير مُهيأ جيدًا، فهذه أول نقطة تبطّئ الموقع!
🔵 2. قراءة الكود وبناء DOM
المتصفح يقرأ كود الـ HTML سطرًا سطرًا 📝🔍 ويحوّله إلى شجرة DOM. إذا كان الكود غير منظم أو مليئًا بالأخطاء، فهنا تبدأ التأخيرات! ⚠️
🟢 3. تحميل الموارد الخارجية
المتصفح يتوقف مؤقتًا لجلب ملفات مثل:
📌 <link href="style.css">
📌 <noscript src="app.js">
📌 <img src="image.png">
كل ملف يحتاج طلبًا منفصلًا 🎯، مما يزيد من وقت التحميل 🚨.
🟡 4. بناء شجرة CSSOM
يتم دمج أكواد CSS لتحديد الشكل النهائي للموقع 🎨، وإذا كان هناك ملفات كثيرة، فسيأخذ وقتًا أطول.
🟠 5. الدمج بين DOM وCSSOM لإنشاء Render Tree
في هذه الخطوة، يقوم المتصفح بجمع المعلومات لرسم الصفحة. أي خطأ بسيط في الكود قد يُسبب تأخيرًا واضحًا!
🔵 6. رسم الصفحة (Rendering)
المتصفح يحوّل البيانات إلى عناصر مرئية على الشاشة 🖥️🎨. لكن جافاسكريبت غير المنظم قد يسبب توقفًا مفاجئًا أو تأخيرًا كبيرًا! 😡🔧
🔴 7. التفاعل مع JavaScript
إذا كان كود JavaScript غير مرتب، فقد يحدث بطء أو تعليق للصفحة بالكامل! 🚨🐞
💎 كيف أصلح موقعي وأجعله أسرع؟
تقليل طلبات HTTP بدمج ملفات CSS وJS معًا.
استخدام HTTP/2 لتسريع تحميل الموارد 🚀.
الاعتماد على Async وDefer في JavaScript لتجنب تأخير الصفحة .
ضغط الصور والملفات باستخدام WebP وGzip 📉.
تفعيل التخزين المؤقت (Caching) لتقليل الطلبات المتكررة على السيرفر .
استخدام CDN مثل Cloudflare أو AWS لتسريع التحميل عالميًا 🌍🚀.
🎯 إذا كان موقعك بطيئًا، فهذه الأسباب قد تكون وراء ذلك! 😎🚀
بعد ما اكتشفت هذه المعلومات، قررت أن أشاركها معكم ليستفيد الجميع! 🤝💡🔥
#والله_أعلم
4🤩1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
1
ما الفرق بين هندسة البرمجيات (Software Architecture) وأنماط التصميم (Design Patterns)؟
هناك خلط شائع بين هندسة البرمجيات (Software Architecture) و أنماط التصميم (Design Patterns)، ولكن هناك فرق جوهري بينهما. دعونا نفصل بينهما بشكل واضح:
🟢 أولًا: هندسة البرمجيات (Software Architecture) – الهيكل العام للنظام
المفهوم:
هندسة البرمجيات هي التصميم العام والتخطيط الهيكلي لنظام البرمجيات، حيث يتم تحديد كيفية تفاعل المكونات المختلفة مع بعضها البعض. يمكن اعتبارها بمثابة المخطط الهندسي لبناء ناطحة سحاب، حيث تحدد الأساسات، الطوابق، الأنظمة الكهربائية، والسباكة، وغيرها من المكونات الرئيسية.
خصائصها:
تحدد كيفية تنظيم مكونات النظام وعلاقتها ببعضها.
تركز على الأداء، القابلية للتوسع، الأمان، وإدارة البيانات.
تتعامل مع التقنيات والأنظمة المستخدمة، مثل اختيار قواعد البيانات، الخوادم، والبنية السحابية.
أمثلة على أنماط هندسة البرمجيات:
نمط الطبقات (Layered Architecture) – يقسم النظام إلى طبقات مثل البيانات، المنطق، والعرض.
نمط الخدمات المصغرة (Microservices Architecture) – يقسم النظام إلى خدمات صغيرة مستقلة.
نمط الخادم/العميل (Client-Server Architecture) – حيث يوجد خادم مركزي يتواصل معه العملاء.
نمط الحدث الموجه (Event-Driven Architecture) – حيث يتم التفاعل بناءً على الأحداث داخل النظام.
🟡 ثانيًا: أنماط التصميم (Design Patterns) – حلول قياسية لمشاكل شائعة في الكود
المفهوم:
أنماط التصميم هي حلول قياسية لمشاكل برمجية متكررة أثناء كتابة الكود. يمكن اعتبارها أدوات وتقنيات داخلية تساعدك على تحسين جودة الكود وجعله أكثر قابلية للصيانة وإعادة الاستخدام.
خصائصها:
تحل مشاكل شائعة في البرمجة مثل إنشاء الكائنات، تنظيم العلاقات بين الكائنات، والتحكم في تدفق البيانات.
تركز على تحسين جودة الكود داخل مكونات النظام وليس على البنية العامة.
يمكن استخدامها داخل أي نمط من أنماط هندسة البرمجيات.
أمثلة على أنماط التصميم:
نمط المصنع (Factory Pattern) – لإنشاء الكائنات بطريقة مرنة.
نمط المراقب (Observer Pattern) – لمتابعة التغييرات في كائن معين وإعلام الكائنات الأخرى بها.
نمط المفوض (Strategy Pattern) – لاختيار سلوك معين أثناء وقت التشغيل.
نمط المخزن (Repository Pattern) – لفصل عمليات الوصول إلى البيانات عن المنطق الأساسي.
🔵 الفرق الرئيسي بينهما
🟣 كيف يعملان معًا؟
هندسة البرمجيات توفر الإطار العام للنظام، بينما تساعد أنماط التصميم في تحسين جودة الكود داخل هذا الإطار. أي أن هندسة البرمجيات تحدد كيف يتم بناء النظام ككل، بينما أنماط التصميم تحدد كيف يتم كتابة الكود داخل هذا النظام.
مثال عملي:
لديك تطبيق يستخدم هندسة الخدمات المصغرة (Microservices Architecture).
داخل أحد الخدمات، تحتاج إلى إدارة بيانات المستخدمين، فتستخدم نمط المستودع (Repository Pattern).
تحتاج أيضًا إلى آلية لتنفيذ عمليات معينة بطرق مختلفة، فتستخدم نمط المفوض (Strategy Pattern).
بالتالي، أنماط التصميم لا تحل محل هندسة البرمجيات، بل تكملها وتحسن من تنفيذها.
🟠 الخلاصة
هندسة البرمجيات تحدد الهيكل العام للنظام وطريقة تفاعل مكوناته.
أنماط التصميم توفر حلولًا قياسية لمشاكل شائعة داخل الكود.
يمكن استخدام أكثر من نمط تصميم داخل نفس بنية هندسة البرمجيات لتحسين جودة الكود.
إذاً، لا يوجد تعارض بينهما، لكن فهم الفرق بينهما يساعدك على تصميم أنظمة أكثر كفاءة وتنظيمًا.
#system_design
👍1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
فهم المفاهيم الأساسية في تصميم البرمجيات مثل
"المستودع العام" (Generic Repository)، "وحدة العمل" (Unit of Work)، و "نمط التحديد" (Specification Pattern)
يمنحك القدرة على كتابة كود نظيف، منظم، وسهل الصيانة. دعونا نشرح هذه المفاهيم بأسلوب واضح وسلس.

🟢 أولًا: المستودع العام (Generic Repository) – الموظف الشامل في المخزن

المفهوم:
تخيل أنك تمتلك مخزنًا كبيرًا يحتوي على أنواع مختلفة من المنتجات، ولكل نوع منها موظف مسؤول عنه. ولكن بدلاً من تعيين موظف لكل منتج على حدة، لماذا لا يكون هناك موظف واحد قادر على التعامل مع جميع المنتجات؟
هذا هو تمامًا دور المستودع العام (Generic Repository). فهو عبارة عن كيان برمجي واحد يمكنه التعامل مع جميع أنواع البيانات المختلفة في التطبيق، دون الحاجة إلى تكرار كتابة التعليمات البرمجية لكل كيان على حدة.
فوائد استخدامه:

تقليل تكرار الشيفرة البرمجية، مما يجعلها أكثر نظافة ووضوحًا.

تسهيل التعديل والتطوير، حيث يتم العمل من خلال كود موحد لجميع البيانات.

تحقيق مبدأ "لا تكرر نفسك" (DRY - Don’t Repeat Yourself)، مما يحسّن جودة الكود ويسهّل صيانته.

متى نحتاج إلى مستودع خاص؟
على الرغم من أن المستودع العام يوفر حلاً موحدًا لجميع الكيانات، إلا أنه في بعض الأحيان قد تحتاج إلى مستودع خاص لكيان معين، خاصةً إذا كان هذا الكيان يتطلب سلوكًا خاصًا به لا يمكن تنفيذه في المستودع العام.

🟡 ثانيًا: وحدة العمل (Unit of Work) – المحاسب الذي يجمع جميع عمليات الدفع

المفهوم:
تخيل أنك ذهبت إلى متجر وبدأت بشراء المنتجات، ولكن في كل مرة تلتقط منتجًا، يقوم المحاسب بإصدار فاتورة منفصلة لك! بالتأكيد، هذا سيكون مرهقًا وغير عملي. الحل الأمثل هو أن تجمع جميع المنتجات التي ترغب في شرائها، وعند الانتهاء، تدفع الفاتورة مرة واحدة.
هذا هو بالضبط ما تقوم به وحدة العمل (Unit of Work) في البرمجة. فهي تعمل على تجميع جميع العمليات التي تتم على البيانات وتنفيذها دفعة واحدة بدلاً من تنفيذ كل عملية على حدة، مما يحسّن الأداء ويضمن استقرار البيانات.
فوائد استخدامها:

تحسين الأداء، لأن العمليات تنفَّذ دفعة واحدة بدلاً من تنفيذ كل عملية بمفردها.

ضمان اتساق البيانات، حيث يتم تنفيذ جميع التعديلات كجزء واحد، مما يقلل احتمالية حدوث أخطاء.

تنظيم الكود وجعله أكثر وضوحًا، حيث يمكن التحكم في جميع العمليات من نقطة مركزية واحدة.

لماذا هي مهمة؟
إذا كنت تعمل على تطبيق معقد يحتوي على العديد من العمليات على البيانات، فإن استخدام وحدة العمل يساعد في تقليل الأخطاء الناتجة عن تنفيذ العمليات بشكل متفرق، كما يجعل من السهل إدارة العمليات المرتبطة ببعضها البعض.

🔴 ثالثًا: نمط التحديد (Specification Pattern) – القائمة الذكية التي تصف المنتجات المطلوبة

المفهوم:
تخيل أنك دخلت إلى متجر ولكن لديك شروط محددة عند الشراء، مثل:

يجب أن يكون سعر المنتج أقل من 100 دولار.

يجب أن يكون المنتج متاحًا في المخزن.

يجب أن يكون عليه خصم بنسبة 10٪ أو أكثر.

بدلًا من البحث يدويًا عن المنتجات التي تحقق هذه الشروط، يمكنك إعطاء قائمة بالشروط إلى الموظف المسؤول، وسيقوم هو بجلب المنتجات المناسبة لك مباشرةً.
هذا هو بالضبط ما يفعله نمط التحديد (Specification Pattern) في البرمجة. حيث يمكنك إنشاء كود يحدد الشروط المطلوبة، ثم استخدامه في أي مكان داخل المشروع بدون الحاجة إلى تكرار الشروط في كل مرة.
فوائد استخدامه:

تبسيط عمليات البحث والتصفية، بحيث يمكنك إعادة استخدام الشروط في أكثر من مكان.

فصل منطق البحث عن الشيفرة الأساسية، مما يجعل الكود أكثر تنظيمًا ووضوحًا.

تسهيل الصيانة والتعديل، حيث يمكن تعديل شروط البحث بسهولة دون الحاجة إلى تغيير أماكن متعددة في الكود.

متى يكون ضروريًا؟
إذا كنت تتعامل مع قواعد بيانات معقدة تحتوي على العديد من الشروط المتغيرة، فإن استخدام نمط التحديد يجعل عملية إدارة البيانات أكثر مرونة وكفاءة.

🔵 كيف ترتبط هذه الأنماط ببعضها البعض؟

المستودع العام (Generic Repository) يساعدك على التعامل مع جميع الكيانات بطريقة موحدة، مما يقلل من تكرار الشيفرة.

وحدة العمل (Unit of Work) تضمن تنفيذ العمليات دفعة واحدة، مما يحافظ على استقرار البيانات ويحسن الأداء.

نمط التحديد (Specification Pattern) يوفر طريقة مرنة لإجراء عمليات البحث والتصفية بدون الحاجة إلى تكرار الشروط في أكثر من مكان.

عند الجمع بين هذه الأنماط الثلاثة، يمكنك بناء نظام مرن، قوي، وسهل الصيانة، مما يجعل تطوير التطبيقات الكبيرة أكثر سهولة وكفاءة.
#interprise #data
👍1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
Promise vs Observer: الفرق بينهما في JavaScript

عند التعامل مع العمليات غير المتزامنة في JavaScript، هناك العديد من الأدوات التي يمكن استخدامها، وأبرزها Promise وObserver. على الرغم من أن كلاهما يساعد في إدارة البيانات التي تأتي بشكل غير متزامن، إلا أن هناك اختلافات جوهرية بينهما.

أولًا: Promise

تُستخدم الـ Promise لمعالجة حدث غير متزامن يحدث مرة واحدة فقط. عندما يتم استدعاؤها، فإنها تبدأ في التنفيذ مباشرةً ولا يمكن إلغاؤها بعد ذلك. بمجرد اكتمال العملية، يتم إرجاع قيمة واحدة فقط، إما نتيجة ناجحة (fulfilled) أو خطأ (rejected).

متى نستخدم Promise؟

عند الحاجة إلى تنفيذ عملية غير متزامنة لمرة واحدة، مثل جلب البيانات من API.

عندما يكون هناك تسلسل واضح للعمليات، مثل تحميل ملف ثم معالجته.

عندما لا يكون هناك حاجة لإلغاء العملية بعد بدايتها.

ثانيًا: Observer

يُستخدم Observer (المعروف في مكتبة RxJS) لمعالجة تدفق مستمر من البيانات، مما يعني أنه يمكنه إرسال قيم متعددة بمرور الوقت. لا يتم تنفيذ الكود إلا عند الاشتراك في الكائن، مما يسمح بالتحكم في وقت بدء الاستماع للبيانات، كما يمكن إلغاء الاشتراك بسهولة لإيقاف استقبال القيم الجديدة.

متى نستخدم Observer؟

عند التعامل مع تدفق بيانات مستمر، مثل تحديثات واجهة المستخدم بناءً على تغييرات في البيانات.

عند التعامل مع أحداث متكررة، مثل نقرات المستخدم، رسائل WebSocket، أو تتبع موقع GPS.

عندما يكون من الضروري إلغاء الاشتراك لتوفير الموارد أو التحكم في البيانات الواردة.

الفرق الرئيسي بين Promise و Observer

Promise يُستخدم لحدث واحد، بينما Observer يُستخدم لتدفق بيانات متعدد.

Promise يتم تنفيذه مباشرةً عند إنشائه، أما Observer فيتم تنفيذه فقط عند الاشتراك فيه.

Promise لا يمكن إلغاؤه بعد بدايته، بينما يمكن إلغاء Observer بسهولة عند الحاجة.

أيّهما أختار؟

إذا كنت بحاجة إلى التعامل مع عملية غير متزامنة لمرة واحدة فقط، فإن Promise هو الخيار الأمثل. أما إذا كنت بحاجة إلى التعامل مع بيانات ديناميكية ومتغيرة باستمرار، فإن Observer هو الحل الأفضل، خاصة عند العمل مع RxJS في تطبيقات تعتمد على الأحداث بشكل كبير.
#nodejs #angular #react #veue
👍3
"يا شباب، لا تؤجلوا رفع فكرة المشروع، كلما أسرعتم كلما كان أفضل. لا تنتظروا حتى انتهاء الاختبارات، لأن الردود قد تتأخر. من المحتمل أن يتم النظر في جميع الأفكار دفعة واحدة، لذلك بادروا بالرفع الآن ولا تضيعوا الوقت!"
👍2