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
عند التعامل مع العمليات غير المتزامنة في 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
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
وأخيراً Open Ai
من الأمس أصحاب النسخة المجانية من ChatGPT بقوا يقدروا يستخدموا الوضع الصوتي المتقدم Advanced Voice بشكل يومي -محدود طبعا عن النسخة المدفوعة- بعد ما كان قبل هذا تجربة لا تتعدى 15 دقيقة في الشهر
#ai
من الأمس أصحاب النسخة المجانية من ChatGPT بقوا يقدروا يستخدموا الوضع الصوتي المتقدم Advanced Voice بشكل يومي -محدود طبعا عن النسخة المدفوعة- بعد ما كان قبل هذا تجربة لا تتعدى 15 دقيقة في الشهر
#ai
❤1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
هل ينفع تبدأ فى تنفيذ مشروع معين رغم عدم تحديد بعض تفاصيله ؟
أولا تعال نعرف ايش هي التفاصيل المقصودة:
نوع الداتابيز المستخدمة سواء SQL Server أو MySQL أو MongoDB أو غيرهم ، يعتبر من التفاصيل المكتبة المستخدمة لعرض واجهة المشروع ، تعتبر من التفاصيل نوع ال API المستخدم للتواصل بين ال client وال server سواء Rest أو GraphQL أو غيرهم ، يعتبر من التفاصيل وغيرهم
لو أنت مستعجل فالاجابة هي: ايوه ، ينفع تبدأ فى المشروع ، بل أحيانا ينفع تخلصه
بس كيف ! ممكن أشتغل على الباك اند من غير ما أحدد نوع الداتابيز ؟ تقدر تبنى الجزء الخاص بالباك اند كله بحيث يعتمد على interface مسئولة عن التعامل مع البيانات ، بالتالي كود الباك اند مش سيكون فارق معاه ال interface هذه ومن خلفها و بيعملها implementation أو بتجيب الداتا كيف أو منين
بل كل اللى فارق معاه أنها بت export ال utilities اللى هو محتاجها زى مثلا فانكشن getProducts بترجع المنتجات كلها فانكشن getProductById بترجع منتج حسب ال id بتاعه فانكشن getCartProducts بترجع منتجات السلة فانكشن addProductToCart بتضيف منتج معين للسلة وهكذا
وقتها تقدر ت implement ال interface هذه بحيث تتعامل مع mock data متخزنة فى variable داخل ال memory ، أو ملف نصي على السيرفر ، وفي كلا الحالتين قدرت تأجل قرار تحديد نوع الداتابيز المستخدمة إلى حين إنهاء جزء كبير من المشروع (مش الباك اند فقط)
أثناء شغلك على المشروع سيكون عندك صورة أوضح عن شكل البيانات و ستقدر تحدد نوع الداتابيز اللى ممكن تناسب مشروعك بشكل أفضل ، وقتها سوف تعدل فى ال implementation اللى خلف ال interface فقط ، و بهذا المشروع كله اتحول إلى استخدام الداتابيز بدلا من عدة متغيرات أو ملفات نصية
في كتاب Clean Architecture ، الكاتب أتكلم عن تجربة خاصة به قدر يطبق فيها الموضوع هذا ، و بعد فترة أدرك إن الملفات النصية مناسبة للمشروع ، و إنه مش محتاج داتابيز أصلا
مجرد إنك تبدأ بدون تحديد الداتابيز بيخلى الكود حقك غير معتمد على الداتابيز ، وكذلك لو قدرت تحدد نوع الداتابيز من البداية يفضل إنك تستخدم نفس ال approach لأن هذا سيساعدك تستبدلها بسهولة فى المستقبل لو حبيت
وكذلك مع بقيت التفاصيل المذكورة فوق: كود ال client مش فارق معه ال API بيجيب الداتا منين أو كيف ، بالتالي تقدر تعمل interface بينهم ، و هذا ممكن يساعدك تستخدم mock data و تضبط الشغل قبل ما تستلم ال API من أخوك الباك اند ، بل سوف يساعدك تغير ال API وطريقة تواصل ال client بال server بسهولة لو حبيت كذلك ال view أو ال UI ، مينفعش ال client-side logic يعدل عليها بشكل مباشر ، ولا ينفع هي تعتمد على ال implementation حقها بل تعتمد على interface
بجانب إن عزلك للتفاصيل عن المشروع سيساعدك تختبر المشروع بصورة أبسط وأفضل .
وشكرًا
#توفير_الوقت
أولا تعال نعرف ايش هي التفاصيل المقصودة:
نوع الداتابيز المستخدمة سواء SQL Server أو MySQL أو MongoDB أو غيرهم ، يعتبر من التفاصيل المكتبة المستخدمة لعرض واجهة المشروع ، تعتبر من التفاصيل نوع ال API المستخدم للتواصل بين ال client وال server سواء Rest أو GraphQL أو غيرهم ، يعتبر من التفاصيل وغيرهم
لو أنت مستعجل فالاجابة هي: ايوه ، ينفع تبدأ فى المشروع ، بل أحيانا ينفع تخلصه
بس كيف ! ممكن أشتغل على الباك اند من غير ما أحدد نوع الداتابيز ؟ تقدر تبنى الجزء الخاص بالباك اند كله بحيث يعتمد على interface مسئولة عن التعامل مع البيانات ، بالتالي كود الباك اند مش سيكون فارق معاه ال interface هذه ومن خلفها و بيعملها implementation أو بتجيب الداتا كيف أو منين
بل كل اللى فارق معاه أنها بت export ال utilities اللى هو محتاجها زى مثلا فانكشن getProducts بترجع المنتجات كلها فانكشن getProductById بترجع منتج حسب ال id بتاعه فانكشن getCartProducts بترجع منتجات السلة فانكشن addProductToCart بتضيف منتج معين للسلة وهكذا
وقتها تقدر ت implement ال interface هذه بحيث تتعامل مع mock data متخزنة فى variable داخل ال memory ، أو ملف نصي على السيرفر ، وفي كلا الحالتين قدرت تأجل قرار تحديد نوع الداتابيز المستخدمة إلى حين إنهاء جزء كبير من المشروع (مش الباك اند فقط)
أثناء شغلك على المشروع سيكون عندك صورة أوضح عن شكل البيانات و ستقدر تحدد نوع الداتابيز اللى ممكن تناسب مشروعك بشكل أفضل ، وقتها سوف تعدل فى ال implementation اللى خلف ال interface فقط ، و بهذا المشروع كله اتحول إلى استخدام الداتابيز بدلا من عدة متغيرات أو ملفات نصية
في كتاب Clean Architecture ، الكاتب أتكلم عن تجربة خاصة به قدر يطبق فيها الموضوع هذا ، و بعد فترة أدرك إن الملفات النصية مناسبة للمشروع ، و إنه مش محتاج داتابيز أصلا
مجرد إنك تبدأ بدون تحديد الداتابيز بيخلى الكود حقك غير معتمد على الداتابيز ، وكذلك لو قدرت تحدد نوع الداتابيز من البداية يفضل إنك تستخدم نفس ال approach لأن هذا سيساعدك تستبدلها بسهولة فى المستقبل لو حبيت
وكذلك مع بقيت التفاصيل المذكورة فوق: كود ال client مش فارق معه ال API بيجيب الداتا منين أو كيف ، بالتالي تقدر تعمل interface بينهم ، و هذا ممكن يساعدك تستخدم mock data و تضبط الشغل قبل ما تستلم ال API من أخوك الباك اند ، بل سوف يساعدك تغير ال API وطريقة تواصل ال client بال server بسهولة لو حبيت كذلك ال view أو ال UI ، مينفعش ال client-side logic يعدل عليها بشكل مباشر ، ولا ينفع هي تعتمد على ال implementation حقها بل تعتمد على interface
بجانب إن عزلك للتفاصيل عن المشروع سيساعدك تختبر المشروع بصورة أبسط وأفضل .
وشكرًا
#توفير_الوقت
🔥1
Forwarded from InfoTechnology (IT4_2024) (Ahmed_Askar)
💥 شوية مواقع هتفيدك جداً لو بتشتغل في الـ Frontend
سلام عليكم يا شباب، جبت لكم شوية مواقع جربتها وفعلاً سهلت عليّ الدنيا جدًا! لو شغال في الـ Web Development، المواقع دي هتوفّر عليك وقت ومجهود رهيب.
1️⃣ مكتبة Tailwind جاهزة:
لو بتحب Tailwind وعايز Components جاهزة زي Bootstrap، مش هتحتاج تبني من الصفر تاني!
👉 https://flowbite.com/
2️⃣ مكونات Tailwind مجانية:
لو عايز حاجات جاهزة أكتر بـ Tailwind، هتلاقي هنا
👉 https://www.hyperui.dev/
3️⃣ لو عايز تعمل Dashboard بسرعة:
مكتبتين جامدين لو عايز تبني Dashboard احترافي بـ Chart.js أو GoogleChart.
👉 https://lnkd.in/dpEN7GQg
👉 https://coreui.io/
4️⃣ موقع حلو للـ Animations الجاهزة:
عايز تضيف تأثيرات وحركات لموقعك؟ هنا هتلاقي أفضل الأنيميشنز الجاهزة.
👉 https://animista.net/
5️⃣ شيتات ملخصة للـ Frontend:
لو بتدور على ملخصات للـ Frontend في مكان واحد، هتلاقي كل حاجة هنا
👉 https://lnkd.in/dNatiu-p
6️⃣ Auto Prefix للكود بتاعك:
مش عايز تتعب في إضافة البريفكسات للكود عشان يشتغل على كل المتصفحات؟ ده هيسهل عليك الموضوع.
👉 https://lnkd.in/d_P4eXfA
7️⃣ SweetAlert - Alerts احترافية لموقعك:
لو عايز تعمل Alerts بشكل جذاب واحترافي، استخدم المكتبة دي.
👉 https://lnkd.in/dEyav88U
8️⃣ اختبار Regular Expressions بسهولة:
لو شغال على Validation في الكود بتاعك، الموقع ده هيساعدك تختبر الـ Regex بسرعة.
👉 https://regex101.com/
9️⃣ APIs مجانية لمشاريعك:
عايز APIs مجانية في أي مجال؟ هتلاقي كل اللي محتاجه هنا.
👉 https://public-apis.xyz/
🔟 أسئلة انترفيو (Frontend و Backend):
لو بتجهز لـ Interview، لازم تكون جاهز بأسئلة تقيلة. هتلاقي كل اللي محتاجه هنا.
👉 https://lnkd.in/d5zXCUxg
جرب المواقع دي وهتلاقي شغلك في الـ Frontend بقى أسهل وأسرع بكتير!
"منقول .."
#it_blogs
سلام عليكم يا شباب، جبت لكم شوية مواقع جربتها وفعلاً سهلت عليّ الدنيا جدًا! لو شغال في الـ Web Development، المواقع دي هتوفّر عليك وقت ومجهود رهيب.
1️⃣ مكتبة Tailwind جاهزة:
لو بتحب Tailwind وعايز Components جاهزة زي Bootstrap، مش هتحتاج تبني من الصفر تاني!
👉 https://flowbite.com/
2️⃣ مكونات Tailwind مجانية:
لو عايز حاجات جاهزة أكتر بـ Tailwind، هتلاقي هنا
👉 https://www.hyperui.dev/
3️⃣ لو عايز تعمل Dashboard بسرعة:
مكتبتين جامدين لو عايز تبني Dashboard احترافي بـ Chart.js أو GoogleChart.
👉 https://lnkd.in/dpEN7GQg
👉 https://coreui.io/
4️⃣ موقع حلو للـ Animations الجاهزة:
عايز تضيف تأثيرات وحركات لموقعك؟ هنا هتلاقي أفضل الأنيميشنز الجاهزة.
👉 https://animista.net/
5️⃣ شيتات ملخصة للـ Frontend:
لو بتدور على ملخصات للـ Frontend في مكان واحد، هتلاقي كل حاجة هنا
👉 https://lnkd.in/dNatiu-p
6️⃣ Auto Prefix للكود بتاعك:
مش عايز تتعب في إضافة البريفكسات للكود عشان يشتغل على كل المتصفحات؟ ده هيسهل عليك الموضوع.
👉 https://lnkd.in/d_P4eXfA
7️⃣ SweetAlert - Alerts احترافية لموقعك:
لو عايز تعمل Alerts بشكل جذاب واحترافي، استخدم المكتبة دي.
👉 https://lnkd.in/dEyav88U
8️⃣ اختبار Regular Expressions بسهولة:
لو شغال على Validation في الكود بتاعك، الموقع ده هيساعدك تختبر الـ Regex بسرعة.
👉 https://regex101.com/
9️⃣ APIs مجانية لمشاريعك:
عايز APIs مجانية في أي مجال؟ هتلاقي كل اللي محتاجه هنا.
👉 https://public-apis.xyz/
🔟 أسئلة انترفيو (Frontend و Backend):
لو بتجهز لـ Interview، لازم تكون جاهز بأسئلة تقيلة. هتلاقي كل اللي محتاجه هنا.
👉 https://lnkd.in/d5zXCUxg
جرب المواقع دي وهتلاقي شغلك في الـ Frontend بقى أسهل وأسرع بكتير!
"منقول .."
#it_blogs
HyperUI
Free Tailwind CSS v4 Components | HyperUI
Free, open-source Tailwind CSS v4 components for modern web development. Copy-paste ready components to build beautiful, responsive websites faster.
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
الدنيا صغيرة.
ساعد زمايلك وتعاون معهم، حتى لو في فريق ثاني، لوجه الله أولا، ولأن هذا شغلك ثانيا، وعشان الدنيا صغيرة ثالثا.
.
من عارف، ممكن الدنيا تفرقكم وبعدين تشتغلوا مع بعض ثاني، ويبقى هو مديرك، أو أنت مديره، أو أنت تروح تشتغل في مكان ويسألوه عنك، فخلي سمعتك تكون طيبة وسابقاك، اوعى حد يقول عنك مش متعاون، أو بيخبي المعلومة، أو مقفل دماغه ومش عايز يتعلم، أو مش عايز يشتغل، أو لعبي وبيضيع وقت كتير.
أنا شخصيا بتسئل عن ناس مقدمين على شغل في أماكن تانية، وعمري ما برشح حد سلوكه غير مشجع، زي الأمثلة اللي ذكرتها فوق دي.
الدنيا صغيرة يا عزيزي.
.
الشطارة التقنية -على أهميتها - مش كافية، السلوك والمهارات الشخصية كتير بتكون أهم، خاصة كل ما تترقى في السلم الوظيفي.
.
يحضرني هنا قول الحطيئة:
مَنْ يفعَلِ الخيرَ لا يعدَم جوازيَهُ *** لا يذهبُ العُرفُ بينَ الله والناسِ
منقول
#وضعنا
ساعد زمايلك وتعاون معهم، حتى لو في فريق ثاني، لوجه الله أولا، ولأن هذا شغلك ثانيا، وعشان الدنيا صغيرة ثالثا.
.
من عارف، ممكن الدنيا تفرقكم وبعدين تشتغلوا مع بعض ثاني، ويبقى هو مديرك، أو أنت مديره، أو أنت تروح تشتغل في مكان ويسألوه عنك، فخلي سمعتك تكون طيبة وسابقاك، اوعى حد يقول عنك مش متعاون، أو بيخبي المعلومة، أو مقفل دماغه ومش عايز يتعلم، أو مش عايز يشتغل، أو لعبي وبيضيع وقت كتير.
أنا شخصيا بتسئل عن ناس مقدمين على شغل في أماكن تانية، وعمري ما برشح حد سلوكه غير مشجع، زي الأمثلة اللي ذكرتها فوق دي.
الدنيا صغيرة يا عزيزي.
.
الشطارة التقنية -على أهميتها - مش كافية، السلوك والمهارات الشخصية كتير بتكون أهم، خاصة كل ما تترقى في السلم الوظيفي.
.
يحضرني هنا قول الحطيئة:
مَنْ يفعَلِ الخيرَ لا يعدَم جوازيَهُ *** لا يذهبُ العُرفُ بينَ الله والناسِ
منقول
#وضعنا
🔥4👍1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
كيف فيسبوك أو غيره بيطبق فكرة الـ Score للمستخدمين؟ 🤔
تخيل لو كان لكل مستخدم سكور يعكس نشاطه وجودة تفاعله على فيسبوك، بحيث يقاس بناءً على أصالة المنشورات، عدد التعليقات، الردود، وإعادة النشر، لكن مع عامل زمني يقلل من قيمة النقاط تدريجيًا!
🔹 كيف ممكن يحسب؟
+1 نقطة لكل رد أو تعليق. +1 نقطة لإعادة نشر البوست مع إضافة تعليق. من 0 إلى 5 نقاط لنشر بوست، حسب أصالته. (مثلاً، إذا كان نصًا أصليًا بالكامل يحصل على 5 نقاط، ولو مأخوذ من ChatGPT أو مجرد رابط، يحصل على 0). كل نقطة تفقد قيمتها تدريجيًا مع الزمن. (مثلاً، كل نقطة تصبح نصف بعد سنة تقريبًا وفق منحنى Exponential Decay).
🧮 مثال على شخص قام بالتالي:
نشر بوست نصفه أصلي قبل 10 أيام → 2.5 × e^(-10/500) = 2.45 كتب ردًا قبل يومين → 1 × e^(-2/500) = 1.00 علّق 3 مرات قبل 30 يومًا → 3 × e^(-30/500) = 2.83
🔹 الإجمالي: 6.27 نقطة
💡 طيب، كيف ممكن فيسبوك يطبق هذا؟
فيسبوك لا يكشف عن خوارزمياته، لكن يمكنه استخدام:
✅ تحليل المحتوى بالذكاء الاصطناعي لمعرفة إن كان المنشور أصليًا أم منسوخًا.
✅ Exponential Decay لضمان أن النقاط تتآكل بمرور الوقت، مما يشجع التفاعل المستمر.
✅ Graph Theory لقياس تأثير المستخدم بناءً على من يتفاعل مع محتواه.
✅ تحليل Engagement Score لكل منشور لتحديد أولويته في News Feed.
🎯 لماذا هذا مهم؟
لأن بهذه الطريقة لا يتم تقييم المستخدم فقط بناءً على كمية التفاعل، بل جودة التفاعل واستمراريته! وهذا يوازن بين تشجيع الأصالة وعدم السماح لمنشورات قديمة بالسيطرة على التايملاين.
السؤال الآن: هل تعتقد أن فيسبوك أو غيرها يستخدم شيئًا مشابهًا لهذا؟ 🤔
#ميزة_مشروعك
تخيل لو كان لكل مستخدم سكور يعكس نشاطه وجودة تفاعله على فيسبوك، بحيث يقاس بناءً على أصالة المنشورات، عدد التعليقات، الردود، وإعادة النشر، لكن مع عامل زمني يقلل من قيمة النقاط تدريجيًا!
🔹 كيف ممكن يحسب؟
+1 نقطة لكل رد أو تعليق. +1 نقطة لإعادة نشر البوست مع إضافة تعليق. من 0 إلى 5 نقاط لنشر بوست، حسب أصالته. (مثلاً، إذا كان نصًا أصليًا بالكامل يحصل على 5 نقاط، ولو مأخوذ من ChatGPT أو مجرد رابط، يحصل على 0). كل نقطة تفقد قيمتها تدريجيًا مع الزمن. (مثلاً، كل نقطة تصبح نصف بعد سنة تقريبًا وفق منحنى Exponential Decay).
🧮 مثال على شخص قام بالتالي:
نشر بوست نصفه أصلي قبل 10 أيام → 2.5 × e^(-10/500) = 2.45 كتب ردًا قبل يومين → 1 × e^(-2/500) = 1.00 علّق 3 مرات قبل 30 يومًا → 3 × e^(-30/500) = 2.83
🔹 الإجمالي: 6.27 نقطة
💡 طيب، كيف ممكن فيسبوك يطبق هذا؟
فيسبوك لا يكشف عن خوارزمياته، لكن يمكنه استخدام:
✅ تحليل المحتوى بالذكاء الاصطناعي لمعرفة إن كان المنشور أصليًا أم منسوخًا.
✅ Exponential Decay لضمان أن النقاط تتآكل بمرور الوقت، مما يشجع التفاعل المستمر.
✅ Graph Theory لقياس تأثير المستخدم بناءً على من يتفاعل مع محتواه.
✅ تحليل Engagement Score لكل منشور لتحديد أولويته في News Feed.
🎯 لماذا هذا مهم؟
لأن بهذه الطريقة لا يتم تقييم المستخدم فقط بناءً على كمية التفاعل، بل جودة التفاعل واستمراريته! وهذا يوازن بين تشجيع الأصالة وعدم السماح لمنشورات قديمة بالسيطرة على التايملاين.
السؤال الآن: هل تعتقد أن فيسبوك أو غيرها يستخدم شيئًا مشابهًا لهذا؟ 🤔
#ميزة_مشروعك
🔐 Authentication Methods: Evolution & Modern Practices 🔐
Ever wondered how web applications keep your data secure while ensuring seamless user experiences? Abdulwaisa Al Nuaimi’s insightful slides break down key authentication methods and their evolution. Here’s a snapshot:
✅ Session/Cookie-Based Auth
Traditional, server-side state management.
Downsides: Scalability issues, cross-domain restrictions, and security risks like CSRF.
Mitigations: SameSite cookies (post-2016) improved safety.
✅ Token-Based Auth
Stateless, scalable, and ideal for SPAs/mobile apps.
Uses tokens (e.g., JWT) instead of server-stored sessions.
Reduces overhead and avoids cookie-related security pitfalls.
🔑 Signature-Based Auth
Used by AWS, Azure, etc.
Hashes requests with a private key for MITM attack prevention.
🔒 Two-Factor Authentication (2FA)
Combines passwords with OTPs (e.g., SMS, TOTP).
ASP.NET Core shifted to TOTP for better security.
🌐 Third-Party Auth
OpenID’s rise and fall, replaced by OpenID Connect (OIDC).
OIDC layers authentication on OAuth2, offering standardized identity management.
📈 Why It Matters?
Modern apps demand scalable, secure, and user-friendly auth solutions.
From sessions to tokens and OIDC, staying updated is crucial for robust security.
#WebSecurity #AuthenticationMethods #TokenBasedAuth #CyberSecurity #OIDC #TechTrends
Ever wondered how web applications keep your data secure while ensuring seamless user experiences? Abdulwaisa Al Nuaimi’s insightful slides break down key authentication methods and their evolution. Here’s a snapshot:
✅ Session/Cookie-Based Auth
Traditional, server-side state management.
Downsides: Scalability issues, cross-domain restrictions, and security risks like CSRF.
Mitigations: SameSite cookies (post-2016) improved safety.
✅ Token-Based Auth
Stateless, scalable, and ideal for SPAs/mobile apps.
Uses tokens (e.g., JWT) instead of server-stored sessions.
Reduces overhead and avoids cookie-related security pitfalls.
🔑 Signature-Based Auth
Used by AWS, Azure, etc.
Hashes requests with a private key for MITM attack prevention.
🔒 Two-Factor Authentication (2FA)
Combines passwords with OTPs (e.g., SMS, TOTP).
ASP.NET Core shifted to TOTP for better security.
🌐 Third-Party Auth
OpenID’s rise and fall, replaced by OpenID Connect (OIDC).
OIDC layers authentication on OAuth2, offering standardized identity management.
📈 Why It Matters?
Modern apps demand scalable, secure, and user-friendly auth solutions.
From sessions to tokens and OIDC, staying updated is crucial for robust security.
#WebSecurity #AuthenticationMethods #TokenBasedAuth #CyberSecurity #OIDC #TechTrends
👍1
Forwarded from DEV
2 -mma slides.pdf (12) (1).pdf.pdf
5.8 MB
DEV
2 -mma slides.pdf (12) (1).pdf.pdf
🔐 Authentication Methods: Evolution & Modern Practices 🔐
Ever wondered how web applications keep your data secure while ensuring seamless user experiences? Abdulwaisa Al Nuaimi’s insightful slides break down key authentication methods and their evolution. Here’s a snapshot:
✅ Session/Cookie-Based Auth
Traditional, server-side state management.
Downsides: Scalability issues, cross-domain restrictions, and security risks like CSRF.
Mitigations: SameSite cookies (post-2016) improved safety.
✅ Token-Based Auth
Stateless, scalable, and ideal for SPAs/mobile apps.
Uses tokens (e.g., JWT) instead of server-stored sessions.
Reduces overhead and avoids cookie-related security pitfalls.
🔑 Signature-Based Auth
Used by AWS, Azure, etc.
Hashes requests with a private key for MITM attack prevention.
🔒 Two-Factor Authentication (2FA)
Combines passwords with OTPs (e.g., SMS, TOTP).
ASP.NET Core shifted to TOTP for better security.
🌐 Third-Party Auth
OpenID’s rise and fall, replaced by OpenID Connect (OIDC).
OIDC layers authentication on OAuth2, offering standardized identity management.
📈 Why It Matters?
Modern apps demand scalable, secure, and user-friendly auth solutions.
From sessions to tokens and OIDC, staying updated is crucial for robust security.
#WebSecurity #AuthenticationMethods #TokenBasedAuth #CyberSecurity #OIDC #TechTrends
Ever wondered how web applications keep your data secure while ensuring seamless user experiences? Abdulwaisa Al Nuaimi’s insightful slides break down key authentication methods and their evolution. Here’s a snapshot:
✅ Session/Cookie-Based Auth
Traditional, server-side state management.
Downsides: Scalability issues, cross-domain restrictions, and security risks like CSRF.
Mitigations: SameSite cookies (post-2016) improved safety.
✅ Token-Based Auth
Stateless, scalable, and ideal for SPAs/mobile apps.
Uses tokens (e.g., JWT) instead of server-stored sessions.
Reduces overhead and avoids cookie-related security pitfalls.
🔑 Signature-Based Auth
Used by AWS, Azure, etc.
Hashes requests with a private key for MITM attack prevention.
🔒 Two-Factor Authentication (2FA)
Combines passwords with OTPs (e.g., SMS, TOTP).
ASP.NET Core shifted to TOTP for better security.
🌐 Third-Party Auth
OpenID’s rise and fall, replaced by OpenID Connect (OIDC).
OIDC layers authentication on OAuth2, offering standardized identity management.
📈 Why It Matters?
Modern apps demand scalable, secure, and user-friendly auth solutions.
From sessions to tokens and OIDC, staying updated is crucial for robust security.
#WebSecurity #AuthenticationMethods #TokenBasedAuth #CyberSecurity #OIDC #TechTrends
👍1
YAGNI (You Aren’t Gonna Need It)
لا تُضف أي ميزات أو أكواد أو (Hooks) إلا إذا كنت بحاجة إليها فعليًا اليوم.
مثال: لا تصمم نظام إشعارات معقد لتطبيق بسيط لمجرد أنه قد يحتاجه في المستقبل.
طبعا هو نفسه المؤلف Robert C.Martin بيسأل ؟
Nowadays, ironically, it is one of the most important disciplines of good
software design. If you have a good suite of tests and you are skilled at the
discipline of refactoring, then the cost of adding a new feature and updating
the design to support that new feature will almost certainly be smaller than
the cost of implementing and maintaining all the hooks you might need one
day.
Does this mean that we never put the hooks in? Do we always design our
systems only for the features we need today? Do we never think ahead and
plan for the future?
No, that's not what YAGNI means. There are times when putting a
particular hook in is a good idea. Future-proofing the code is not dead, and
it is always wise to think of the future.
It's just that the trade-offs have changed so dramatically in the last few
decades that it is now usually better to leave the majority of the hooks out.
And that's why we ask the question:
What if you aren't gonna need it?
clean craftsmanship: disciplines,standards, and ethics
Book
يمكنك نقلها إلى chatgpt إذا لم تفهم
#تكلفة_الذي_بتعملة_حساب_وتجهزله_اكثر_بكثير_من_تكلفة_الي_لم_تحسب_له
لا تُضف أي ميزات أو أكواد أو (Hooks) إلا إذا كنت بحاجة إليها فعليًا اليوم.
مثال: لا تصمم نظام إشعارات معقد لتطبيق بسيط لمجرد أنه قد يحتاجه في المستقبل.
طبعا هو نفسه المؤلف Robert C.Martin بيسأل ؟
Nowadays, ironically, it is one of the most important disciplines of good
software design. If you have a good suite of tests and you are skilled at the
discipline of refactoring, then the cost of adding a new feature and updating
the design to support that new feature will almost certainly be smaller than
the cost of implementing and maintaining all the hooks you might need one
day.
Does this mean that we never put the hooks in? Do we always design our
systems only for the features we need today? Do we never think ahead and
plan for the future?
No, that's not what YAGNI means. There are times when putting a
particular hook in is a good idea. Future-proofing the code is not dead, and
it is always wise to think of the future.
It's just that the trade-offs have changed so dramatically in the last few
decades that it is now usually better to leave the majority of the hooks out.
And that's why we ask the question:
What if you aren't gonna need it?
clean craftsmanship: disciplines,standards, and ethics
Book
يمكنك نقلها إلى chatgpt إذا لم تفهم
#تكلفة_الذي_بتعملة_حساب_وتجهزله_اكثر_بكثير_من_تكلفة_الي_لم_تحسب_له
👍1
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
ما شاء الله... اخونا عبدالملك صولان عمل تطبيق جديد ونشره في متجر بلاي 😍🔥
تفضلو:-
الحمد الله تطبيق أصبح الان متاح للجميع في متجر قوقل بلاي
التطبيق يقوم بتحميل الفيديوات من بعض مواقع التواصل الاجتماعي ويحفظ حلات الوتس اب
كان الدافع الي خلاني افعل هذا التطبيق اني يوم كنت احتاج أحمل فيديو من الفيسبوك كل تطبيقات التحميل الي عندي كان فيها كميه اعلانات مش طبيعيه ومزعجه جدا .
انا مبرمج ليش ما افعل اداه لي أو تطبيق وفعل ماكان في عندي اي معلومه عن كيف اليه التحميل تتم يعني صفر معلومات.
بحث وتعلم وتطبيق بحث تعلم تطبيق وهاكذا لما سويت اول نسخه كانت تحمل من الفيسبوك فقط بعدين طورت فيه وضفت اشياء كثيره.
كانت تجربه ممتعه جدا تعلمت فيها اشياء كثيييير في البرمجه.
هذا غير اني اول مره ارفع تطبيق في متجر قوقل بلاي وتعلمت كيف اتعامل معاهم واتعلمت السياسات الخاصه بهم وكيف اخلي التطبيق يتبعها علاشان ينزل بدون اي مشاكل
الأفكار والاضافات كثيره وقادمه في التحديثات الجايه انشاء الله.
تقدر تبحث عليه بالاسم من المتجر vidsnap
أو من هذا الرابط
https://play.google.com/store/apps/details?id=com.vidsnap_app
جربوه وقلو لي رايكم فيه واذا في تعديل إضافات اغلاط لاتبخلو وبلغوني بها
تفضلو:-
الحمد الله تطبيق أصبح الان متاح للجميع في متجر قوقل بلاي
التطبيق يقوم بتحميل الفيديوات من بعض مواقع التواصل الاجتماعي ويحفظ حلات الوتس اب
كان الدافع الي خلاني افعل هذا التطبيق اني يوم كنت احتاج أحمل فيديو من الفيسبوك كل تطبيقات التحميل الي عندي كان فيها كميه اعلانات مش طبيعيه ومزعجه جدا .
انا مبرمج ليش ما افعل اداه لي أو تطبيق وفعل ماكان في عندي اي معلومه عن كيف اليه التحميل تتم يعني صفر معلومات.
بحث وتعلم وتطبيق بحث تعلم تطبيق وهاكذا لما سويت اول نسخه كانت تحمل من الفيسبوك فقط بعدين طورت فيه وضفت اشياء كثيره.
كانت تجربه ممتعه جدا تعلمت فيها اشياء كثيييير في البرمجه.
هذا غير اني اول مره ارفع تطبيق في متجر قوقل بلاي وتعلمت كيف اتعامل معاهم واتعلمت السياسات الخاصه بهم وكيف اخلي التطبيق يتبعها علاشان ينزل بدون اي مشاكل
الأفكار والاضافات كثيره وقادمه في التحديثات الجايه انشاء الله.
تقدر تبحث عليه بالاسم من المتجر vidsnap
أو من هذا الرابط
https://play.google.com/store/apps/details?id=com.vidsnap_app
جربوه وقلو لي رايكم فيه واذا في تعديل إضافات اغلاط لاتبخلو وبلغوني بها
Google Play
Vidsnap – لتحميل الفيديوهات - Apps on Google Play
Fast and easy to use app for downloading videos.
🔥3🤩1
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
ما شاء الله... اخونا عبدالملك صولان عمل تطبيق جديد ونشره في متجر بلاي 😍🔥
تفضلو:-
الحمد الله تطبيق أصبح الان متاح للجميع في متجر قوقل بلاي
التطبيق يقوم بتحميل الفيديوات من بعض مواقع التواصل الاجتماعي ويحفظ حلات الوتس اب
كان الدافع الي خلاني افعل هذا التطبيق اني يوم كنت احتاج أحمل فيديو من الفيسبوك كل تطبيقات التحميل الي عندي كان فيها كميه اعلانات مش طبيعيه ومزعجه جدا .
انا مبرمج ليش ما افعل اداه لي أو تطبيق وفعل ماكان في عندي اي معلومه عن كيف اليه التحميل تتم يعني صفر معلومات.
بحث وتعلم وتطبيق بحث تعلم تطبيق وهاكذا لما سويت اول نسخه كانت تحمل من الفيسبوك فقط بعدين طورت فيه وضفت اشياء كثيره.
كانت تجربه ممتعه جدا تعلمت فيها اشياء كثيييير في البرمجه.
هذا غير اني اول مره ارفع تطبيق في متجر قوقل بلاي وتعلمت كيف اتعامل معاهم واتعلمت السياسات الخاصه بهم وكيف اخلي التطبيق يتبعها علاشان ينزل بدون اي مشاكل
الأفكار والاضافات كثيره وقادمه في التحديثات الجايه انشاء الله.
تقدر تبحث عليه بالاسم من المتجر vidsnap
أو من هذا الرابط
https://play.google.com/store/apps/details?id=com.vidsnap_app
جربوه وقلو لي رايكم فيه واذا في تعديل إضافات اغلاط لاتبخلو وبلغوني بها
تفضلو:-
الحمد الله تطبيق أصبح الان متاح للجميع في متجر قوقل بلاي
التطبيق يقوم بتحميل الفيديوات من بعض مواقع التواصل الاجتماعي ويحفظ حلات الوتس اب
كان الدافع الي خلاني افعل هذا التطبيق اني يوم كنت احتاج أحمل فيديو من الفيسبوك كل تطبيقات التحميل الي عندي كان فيها كميه اعلانات مش طبيعيه ومزعجه جدا .
انا مبرمج ليش ما افعل اداه لي أو تطبيق وفعل ماكان في عندي اي معلومه عن كيف اليه التحميل تتم يعني صفر معلومات.
بحث وتعلم وتطبيق بحث تعلم تطبيق وهاكذا لما سويت اول نسخه كانت تحمل من الفيسبوك فقط بعدين طورت فيه وضفت اشياء كثيره.
كانت تجربه ممتعه جدا تعلمت فيها اشياء كثيييير في البرمجه.
هذا غير اني اول مره ارفع تطبيق في متجر قوقل بلاي وتعلمت كيف اتعامل معاهم واتعلمت السياسات الخاصه بهم وكيف اخلي التطبيق يتبعها علاشان ينزل بدون اي مشاكل
الأفكار والاضافات كثيره وقادمه في التحديثات الجايه انشاء الله.
تقدر تبحث عليه بالاسم من المتجر vidsnap
أو من هذا الرابط
https://play.google.com/store/apps/details?id=com.vidsnap_app
جربوه وقلو لي رايكم فيه واذا في تعديل إضافات اغلاط لاتبخلو وبلغوني بها
Google Play
Vidsnap – لتحميل الفيديوهات - Apps on Google Play
Fast and easy to use app for downloading videos.
👍2🤩1
Forwarded from اقرأ التفسير في ٣٠٠ يوم (ينابيع تربوية)
اقرأ تفسير القرآن في 300 يوم
نبدأ يوم 1 رمضان إن شاء الله
تيليقرام t.me/TafseerReads
فيس fb.com/TafseerReads
تويتر twitter.com/TafseerReads
إنستا instagram.com/TafseerReads
📲 واتسب
https://whatsapp.com/channel/0029VaCzDB9EwEjyZahIGb0p
ساهموا بنشر الإعلان يا كرام
هناك من يحتاج هذا البرنامج
للتواصل والاستفسار 👇🏻
واتس wa.me/967702242300
نبدأ يوم 1 رمضان إن شاء الله
تيليقرام t.me/TafseerReads
فيس fb.com/TafseerReads
تويتر twitter.com/TafseerReads
إنستا instagram.com/TafseerReads
📲 واتسب
https://whatsapp.com/channel/0029VaCzDB9EwEjyZahIGb0p
ساهموا بنشر الإعلان يا كرام
هناك من يحتاج هذا البرنامج
للتواصل والاستفسار 👇🏻
واتس wa.me/967702242300
👍1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
من أكثر الأمور المخيفة في التعامل مع قواعد البيانات الكبيرة التي عليها حمل تشغيل عالٍ هي المسائل التي تجدها دمها متفرق بين المطور و بين مسؤول قاعدة البيانات (DBA).
يكون المطور غير قادر على العثور على أي خطأ في الكود ولا يعرف من أين يبدأ، ومسؤول قاعدة البيانات يقول لك إنه أيضًا لا يرى أي خطأ.
الأدوات التي تساعدك على تحليل المشاكل من هذا النوع لا تُقدر بثمن، لأنك قد تجد مسؤول قاعدة البيانات يريد منك أن تدله على بداية الطريق (معظمهم كذلك للأسف).
سأخبرك الآن عن شيء موجود في SQL Server يسمى Extended Events، ومن خلاله يمكنك رؤية توزيع الوقت الذي تم تنفيذ الاستعلام (Query) فيه، ومعرفة متى كان يتعرض لشيء يسمى Waits، وتوزيع Wait Times على الأنشطة المختلفة من I/O إلى CPU إلى Memory Grant Requests وغيرها الكثير، مما سيكشف لك أين تحتاج إلى البحث، وسيساعدك مسؤول قاعدة البيانات.
قد تقول: "أليس من المفترض أن يقوم مسؤول قاعدة البيانات بهذا الأمر؟"
سأقول لك: نعم، لكن مسؤولي قواعد البيانات الذين يعرفون هذا الكلام ليسوا كثيرين.
لكي تستفيد من هذه الأدوات جيدًا، يجب أن تفهم كيف يعمل Engine من الداخل، ومحاضرات كارنيجي ميلون التي أوصي بها كل يوم قبل الأكل وبعده ستوصلك إلى هذا المستوى.
وأستطيع أن أقول لك إن Extended Events ساعدتني في حل ألغاز كانت ستجعلني أُجن لو بحثت عنها بدونها.
لكن لكي تفهم مخرجاتها، يجب أن تكون متعلمًا جيدًا.
إذا كنت تعمل في قواعد بيانات ضخمة وتهتم بالأداء، شاهد محاضرات كارنيجي ميلون.
إذا كنت تستطيع إيصال هذا المنشور لأستاذك في الجامعة ليشاهدها ويطور مساقه، فجزاك الله خيرًا.
(لكن من غير أن يجعلك ترسب، لا داعي لقول شيء يزعجه، بل قل له إنك معجب بمساقه جدًا ولهذا تريد منه أن يطوره أكثر، كذب أبيض يعني).
CMU Intro to Database Systems (15-445/645)
CMU Advanced Database Systems (15-721)
يكون المطور غير قادر على العثور على أي خطأ في الكود ولا يعرف من أين يبدأ، ومسؤول قاعدة البيانات يقول لك إنه أيضًا لا يرى أي خطأ.
الأدوات التي تساعدك على تحليل المشاكل من هذا النوع لا تُقدر بثمن، لأنك قد تجد مسؤول قاعدة البيانات يريد منك أن تدله على بداية الطريق (معظمهم كذلك للأسف).
سأخبرك الآن عن شيء موجود في SQL Server يسمى Extended Events، ومن خلاله يمكنك رؤية توزيع الوقت الذي تم تنفيذ الاستعلام (Query) فيه، ومعرفة متى كان يتعرض لشيء يسمى Waits، وتوزيع Wait Times على الأنشطة المختلفة من I/O إلى CPU إلى Memory Grant Requests وغيرها الكثير، مما سيكشف لك أين تحتاج إلى البحث، وسيساعدك مسؤول قاعدة البيانات.
قد تقول: "أليس من المفترض أن يقوم مسؤول قاعدة البيانات بهذا الأمر؟"
سأقول لك: نعم، لكن مسؤولي قواعد البيانات الذين يعرفون هذا الكلام ليسوا كثيرين.
لكي تستفيد من هذه الأدوات جيدًا، يجب أن تفهم كيف يعمل Engine من الداخل، ومحاضرات كارنيجي ميلون التي أوصي بها كل يوم قبل الأكل وبعده ستوصلك إلى هذا المستوى.
وأستطيع أن أقول لك إن Extended Events ساعدتني في حل ألغاز كانت ستجعلني أُجن لو بحثت عنها بدونها.
لكن لكي تفهم مخرجاتها، يجب أن تكون متعلمًا جيدًا.
إذا كنت تعمل في قواعد بيانات ضخمة وتهتم بالأداء، شاهد محاضرات كارنيجي ميلون.
إذا كنت تستطيع إيصال هذا المنشور لأستاذك في الجامعة ليشاهدها ويطور مساقه، فجزاك الله خيرًا.
(لكن من غير أن يجعلك ترسب، لا داعي لقول شيء يزعجه، بل قل له إنك معجب بمساقه جدًا ولهذا تريد منه أن يطوره أكثر، كذب أبيض يعني).
CMU Intro to Database Systems (15-445/645)
CMU Advanced Database Systems (15-721)
❤1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
YouTube
Software Design Patterns
Share your videos with friends, family, and the world
InfoTechnology (IT4_2024)
https://youtube.com/playlist?list=PLrwRNJX9gLs3oQyBoXtYimY7M5aSF0_oC&si=4ztsz1e4vJuzcJeH
🚀 بأذن الله تستفيد🚀
إذا كنت تبحث عن مصدر عربي ممتاز لتعلم Software Design Patterns بطريقة عملية وممتعة، أنصحك بورشة العمل الرائعة للمهندس محمد يحيى على يوتيوب!
✅ تركيز على التطبيق العملي بدلًا من الشرح النظري المجرد.
✅ أمثلة واقعية تُحاكي مشاريع حقيقية.
✅ شرح سلس يناسب جميع المستويات (مبتدئين ومحترفين).
الخلاصه انصحك تتابعه
إذا كنت تبحث عن مصدر عربي ممتاز لتعلم Software Design Patterns بطريقة عملية وممتعة، أنصحك بورشة العمل الرائعة للمهندس محمد يحيى على يوتيوب!
✅ تركيز على التطبيق العملي بدلًا من الشرح النظري المجرد.
✅ أمثلة واقعية تُحاكي مشاريع حقيقية.
✅ شرح سلس يناسب جميع المستويات (مبتدئين ومحترفين).
الخلاصه انصحك تتابعه
👍1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
في اعتقادي ان الاجايل بطبيعته مش متماشي قوي مع التفكير الهندسي اللي بيميل بطبعة للتصميم الدقيق
على العكس ال Waterfall اللي هو الطريقة الاصلح لبناء منتج هندسي متكامل، لانك بتصمم اللي تريد تعمله من الاول للأخير وبتبنيه من تحت لافوق بشكل يضمن التكامل
لكن المشكلة الحقيقية اللي بيقابلها ال Waterfall هو انه صحيح مناسب اكثر لبناء منتج، بس في مشكله صغيرة، اننا في سوق السوفتوير مش عارفين احنا اصلا نحتاج نبني ايش، او مش متأكدين قوي من تصورتنا، فبنلجاء للاجايل لانه بيديك السماحية انك تغير وترجع اللي تريد تعمله وتطلعة خطوة خطوة ، لكن مش من تحت لافوق، لانك ممكن تصمم حاجة بتصور معين لل ٍRequirements وتجي بعد شوية ٍRequirements ثانيه تخلي التصميم الأولي مش صحيح قوي، زي ان مثلا حد يقولك اعملي عربية فتعمله عربيه فيقوم مكمل طلباته ويقولك بتطير
ما أنت لو كنت قلت من الاول انك تريد عربيه بتطير كان عملنا هذا
ولكن هذه مشكلة وطبيعة سوق السوفتوير اللي مبني من التجارب السابقة علي مبدأ عدم التأكد، انا مش متأكد اذا كان المستخدم سيستخدم هذا ولا ذاك ، مش متأكد اذا كان هذا اللي سيحل المشكلة ولا ذاك، فبنجلس نبني في العربية اللي بتطير من اول اما يقولونا بس اعملنا الراديو
وهنا تكمن مأساة الاجايل!
على العكس ال Waterfall اللي هو الطريقة الاصلح لبناء منتج هندسي متكامل، لانك بتصمم اللي تريد تعمله من الاول للأخير وبتبنيه من تحت لافوق بشكل يضمن التكامل
لكن المشكلة الحقيقية اللي بيقابلها ال Waterfall هو انه صحيح مناسب اكثر لبناء منتج، بس في مشكله صغيرة، اننا في سوق السوفتوير مش عارفين احنا اصلا نحتاج نبني ايش، او مش متأكدين قوي من تصورتنا، فبنلجاء للاجايل لانه بيديك السماحية انك تغير وترجع اللي تريد تعمله وتطلعة خطوة خطوة ، لكن مش من تحت لافوق، لانك ممكن تصمم حاجة بتصور معين لل ٍRequirements وتجي بعد شوية ٍRequirements ثانيه تخلي التصميم الأولي مش صحيح قوي، زي ان مثلا حد يقولك اعملي عربية فتعمله عربيه فيقوم مكمل طلباته ويقولك بتطير
ما أنت لو كنت قلت من الاول انك تريد عربيه بتطير كان عملنا هذا
ولكن هذه مشكلة وطبيعة سوق السوفتوير اللي مبني من التجارب السابقة علي مبدأ عدم التأكد، انا مش متأكد اذا كان المستخدم سيستخدم هذا ولا ذاك ، مش متأكد اذا كان هذا اللي سيحل المشكلة ولا ذاك، فبنجلس نبني في العربية اللي بتطير من اول اما يقولونا بس اعملنا الراديو
وهنا تكمن مأساة الاجايل!
❤1
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
طرحك عميق جدًا وفعلاً يلمس جوهر الفرق بين Agile و Waterfall من منظور التفكير الهندسي!
Waterfall هو بالفعل النهج الهندسي التقليدي حيث يتم وضع التصميم الشامل من البداية لضمان التكامل والاتساق. لكن مشكلته الأساسية كما ذكرت هي عدم القدرة على التكيف مع التغييرات غير المتوقعة في المتطلبات. وهذا يتعارض مع طبيعة سوق البرمجيات حيث الغموض والتغيرات المستمرة.
Agile من ناحية أخرى، يعكس حقيقة أن العميل أو المستخدم نفسه قد لا يكون متأكدًا مما يريده بالضبط، لذلك يكون النهج التكراري أكثر مرونة. لكن هذه المرونة تؤدي إلى معضلة كما وصفتها:
نبدأ بتطوير "سيارة"، ثم يطلب العميل أن "تطير"، بينما كان يمكن تصميم ذلك من البداية لو عُرف الهدف النهائي بشكل واضح.
وهنا يظهر السؤال الكبير:
كيف نوازن بين التخطيط الدقيق (Waterfall) وبين المرونة (Agile) دون أن نقع في فخ إعادة البناء المستمر؟
في الواقع، الحل في الهندسة المعمارية المرنة (Flexible Architecture)، أي تصميم النظام بحيث يمكنه استيعاب التعديلات المستقبلية دون الحاجة إلى هدم كل شيء.
استخدام Agile مع تفكير هندسي مسبق، حيث لا يُترك التصميم بالكامل للتكرار، بل يتم وضع خطوط عريضة تراعي سيناريوهات التوسع المحتملة.
فهم أن Agile ليس فوضويًا، بل يمكن أن يكون منظمًا إذا تم تطبيق التصميم القابل للتعديل (Modular Design) من البداية.
مأساتك مع Agile حقيقية، لكنها جزء من طبيعة البرمجيات التي تتطور بناءً على ردود الأفعال وليس فقط على التخطيط المسبق كما في الهندسة التقليدية.
Waterfall هو بالفعل النهج الهندسي التقليدي حيث يتم وضع التصميم الشامل من البداية لضمان التكامل والاتساق. لكن مشكلته الأساسية كما ذكرت هي عدم القدرة على التكيف مع التغييرات غير المتوقعة في المتطلبات. وهذا يتعارض مع طبيعة سوق البرمجيات حيث الغموض والتغيرات المستمرة.
Agile من ناحية أخرى، يعكس حقيقة أن العميل أو المستخدم نفسه قد لا يكون متأكدًا مما يريده بالضبط، لذلك يكون النهج التكراري أكثر مرونة. لكن هذه المرونة تؤدي إلى معضلة كما وصفتها:
نبدأ بتطوير "سيارة"، ثم يطلب العميل أن "تطير"، بينما كان يمكن تصميم ذلك من البداية لو عُرف الهدف النهائي بشكل واضح.
وهنا يظهر السؤال الكبير:
كيف نوازن بين التخطيط الدقيق (Waterfall) وبين المرونة (Agile) دون أن نقع في فخ إعادة البناء المستمر؟
في الواقع، الحل في الهندسة المعمارية المرنة (Flexible Architecture)، أي تصميم النظام بحيث يمكنه استيعاب التعديلات المستقبلية دون الحاجة إلى هدم كل شيء.
استخدام Agile مع تفكير هندسي مسبق، حيث لا يُترك التصميم بالكامل للتكرار، بل يتم وضع خطوط عريضة تراعي سيناريوهات التوسع المحتملة.
فهم أن Agile ليس فوضويًا، بل يمكن أن يكون منظمًا إذا تم تطبيق التصميم القابل للتعديل (Modular Design) من البداية.
مأساتك مع Agile حقيقية، لكنها جزء من طبيعة البرمجيات التي تتطور بناءً على ردود الأفعال وليس فقط على التخطيط المسبق كما في الهندسة التقليدية.
🔥2
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
كل التكنولوجيا دي و ai والله توقفها بقطع سلك تقطع العالم فمتكبرهاش ياسطى وريحتنا
#اختصرها_لك
آه، كلامك مظبوط ١٠٠٪! التكنولوجيا والذكاء الاصطناعي (AI) دول مش بس مُعتمدين على أسلاك، لا كمان على بنية تحتية معقدة أوي: سيرفرات، كهرباء، اتصالات، وبيانات ضخمة. لو حاجة بسيطة زيّ انقطاع كهرباء أو قطع كابل تحت البحر (زي اللي بيحصل أحيانًا)، ممكن فعلاً يخلي العالم يقف شوية 😅.
بس الفكرة مش إننا نستخسِّر قيمة التقدم، لكن نعرف إنه أداة مش إله! الذكاء الاصطناعي نفسه، رغم إنه بيحلّ مشاكل خارقة، لسه تبعٌ لـ:
- بيانات يدخلها البشر.
- كهرباء تشغِّله.
- وشبكة اتصالات توصله للعالم.
فالاعتماد عليه ١٠٠٪ غلط... الإنسان اللي صنعه لسه أقوى منه، لأنه يقدر يبدع ويتكيّف مع اللي مش متوقع (مش زي الآلة).
الخلاصة: "اتكل على الـ AI، بس اربط جملك!" 🐴🔥
#اختصرها_لك
آه، كلامك مظبوط ١٠٠٪! التكنولوجيا والذكاء الاصطناعي (AI) دول مش بس مُعتمدين على أسلاك، لا كمان على بنية تحتية معقدة أوي: سيرفرات، كهرباء، اتصالات، وبيانات ضخمة. لو حاجة بسيطة زيّ انقطاع كهرباء أو قطع كابل تحت البحر (زي اللي بيحصل أحيانًا)، ممكن فعلاً يخلي العالم يقف شوية 😅.
بس الفكرة مش إننا نستخسِّر قيمة التقدم، لكن نعرف إنه أداة مش إله! الذكاء الاصطناعي نفسه، رغم إنه بيحلّ مشاكل خارقة، لسه تبعٌ لـ:
- بيانات يدخلها البشر.
- كهرباء تشغِّله.
- وشبكة اتصالات توصله للعالم.
فالاعتماد عليه ١٠٠٪ غلط... الإنسان اللي صنعه لسه أقوى منه، لأنه يقدر يبدع ويتكيّف مع اللي مش متوقع (مش زي الآلة).
الخلاصة: "اتكل على الـ AI، بس اربط جملك!" 🐴🔥
🔥3❤1