لمحة 👀 برمجية – Telegram
لمحة 👀 برمجية
607 subscribers
142 photos
8 videos
13 files
141 links
Download Telegram
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
هل تطلق الخدمة فورًا أم تنتظر حتى تصل إلى الكود المثالي؟ إنه السؤال الأزلي الذي يراود كل مبرمج!
في عالم البرمجة، نقف دومًا عند مفترق الطرق بين الإسراع في إطلاق الميزة المطلوبة، وبين التريث حتى نبلغ حد الكمال في الكود. لكن الحقيقة التي قد يغفل عنها البعض هي أن الكمال ليس حالة ثابتة، بل مفهوم متغير، والسعي خلفه دون توقف قد يصبح عقبة تعيق التقدم وتؤخر الإنجاز.
البرمجة ليست مجرد كتابة أكواد؛ إنها التزام بمواعيد وتسليم مهام في الوقت المحدد. وهنا تأتي أهمية السرعة في الإطلاق—إخراج المنتج إلى النور في لحظته المناسبة، حتى وإن لم يكن مثاليًا، ثم تحسينه شيئًا فشيئًا بناءً على الملاحظات والتجربة العملية.
لكن هذا لا يعني إهمال جودة الكود أو تجاهل مبادئ البرمجة النظيفة (Clean Code). فالكود يجب أن يكون قابلًا للصيانة، سهل الفهم، ومنظمًا بما يكفي لتطويره لاحقًا، لكنه ليس بحاجة إلى الكمال المطلق منذ اللحظة الأولى.
السعي إلى الكمال دون تنفيذ عملي قد يكون حجر عثرة، لكن التقدم المستمر هو المفتاح الحقيقي للوصول إلى أفضل النتائج مع مرور الزمن.
#دروس_اتعلمتها
أزي تعرف ان جهازك قد اخترقوه وتم سرقة معلومات اقل شيء الباسورد الي حافظها في المتصفح بتوع أمنية

⬇️ ال
كيف يمكن لمحلل النظم (Business Analyst - BA) تقليل الأخطاء (Bugs) في النظام، والمساهمة في جودته، ومساعدة مهندسي الجودة في اختبارات التراجع (Regression Tests)؟ 🤔
عندما يكون محلل النظم لديه فهم عميق للنظام، ومتطلباته، وتكامل أجزائه ومنتجاته، فإنه يستطيع تحديد جميع المناطق المتأثرة (Impacted Areas) التي قد تتأثر بأي تغيير أو متطلب جديد.
بناءً على ذلك، سيتمكن المطور من أخذ هذه التبعيات (Dependencies) في الاعتبار أثناء عملية التطوير، مما يقلل من احتمالية حدوث أخطاء.
بالإضافة إلى ذلك، سيتمكن مهندس الاختبار والجودة من تغطية جميع المناطق المتأثرة بالتغيير، بما في ذلك سيناريوهات التكامل (Integration Scenarios) وجميع السيناريوهات المحتملة التي قد تتأثر بالتعديلات الجديدة.
كلما كانت المتطلبات موضحة بدقة عالية، ومكتوبة بتفاصيل كافية وواضحة للجميع، سواء للمطورين أو لمهندسي الجودة والاختبار أو المصممين، فإن ذلك يقلل من سوء فهم المتطلبات (Misunderstanding)، مما يضمن أن المطورين سينفذون المنتج بالشكل المطلوب، وأن مهندسي الجودة سيقومون بتغطية كافة السيناريوهات والاختبارات الضرورية.
Forwarded from InfoTechnology (IT4_2024) (Abdulwaisa Al Nuaimi)
إذا كنت ترغب في بناء أساس قوي في البرمجة، فمن المهم أن تفهم المفاهيم الأساسية مثل البرمجة الكائنية (OOP)، هياكل البيانات، الخوارزميات، وأنماط التصميم، بالإضافة إلى معمارية البرمجيات. هذه الأمور ضرورية لأي مشروع برمجي كبير، بغض النظر عن لغة البرمجة أو الإطار (Framework) المستخدم.

هل يجب أن تتعلم .NET فقط؟

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

هل الجامعات تضيع وقتك مع Python؟

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

نصيحتي للمبتدئين:

لا تجعل إعلانات التوظيف مثل "نحتاج مطور React" أو "نبحث عن مطور ASP.NET Core" تدفعك لاختيار مسار معين بسرعة. هذه مجرد احتياجات حالية للشركات وقد تتغير مع الوقت.

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

تعلم كيفية بناء أنظمة قابلة للتطوير بدلاً من مجرد تعلم "كيف تكتب كودًا" في إطار معين.

إذا كنت في بداية المشوار، ركز على فهم البرمجة العميق وليس مجرد تعلم الفريم وورك الأكثر طلبًا في الوقت الحالي.
🔁 الغوص في أعماق التكرار الذاتي (Recursion) 🔥
عندما تطرح سؤالًا على أي مبرمج عن التكرار الذاتي، ستجد الإجابة التقليدية جاهزة:
"إنها الدالة التي تستدعي نفسها، ويجب أن تحتوي على شرط إيقاف (Exit Condition) لضمان عدم الدخول في حلقة لا نهائية."
لكن، هل فكرت يومًا في ما يحدث خلف الكواليس؟ 🤯
🔎 اللغز الخفي داخل الذاكرة!
التكرار الذاتي يضع عبئًا ثقيلًا على ذاكرة المكدس (Stack Memory)! لماذا؟ لأن كل استدعاء جديد للدالة يُنشئ إطار مكدس (Stack Frame) جديد داخل الذاكرة، والذي يظل مشغولًا حتى ينتهي الاستدعاء ويُحرر من الذاكرة. لكن الكارثة الحقيقية تبدأ عندما لا يتم تحرير هذه الإطارات فورًا، بل يستمر التكديس الواحد تلو الآخر... حتى يحدث الانفجار! 💥
🎭 المشهد كما لو أنك تتسلق جبلًا بلا حبال!
تخيّل أنك تصعد جبلًا، ومع كل خطوة تضع حقيبة إضافية على ظهرك. في البداية، يبدو الأمر ممكنًا، لكن مع كل خطوة جديدة يصبح الحمل أثقل وأثقل... حتى تصل إلى القمة منهكًا بالكامل! ثم تبدأ رحلة العودة، حيث تتخلص من كل حقيبة في طريقك للأسفل، حتى تعود إلى نقطة البداية خفيفًا كما كنت. هذا بالضبط ما يحدث داخل المكدس (Stack) عند استخدام التكرار الذاتي!
⚠️ الخطر الحقيقي!
إذا كان الاستدعاء متكررًا بشكل مفرط أو على بيانات ضخمة، فقد يؤدي ذلك إلى نفاد الذاكرة (Stack Overflow) وانهيار البرنامج بالكامل! 🚨
🛠 الحل؟ فكر بطريقة أخرى!
بدلًا من التكرار الذاتي، يمكنك غالبًا إعادة تصميم الشيفرة باستخدام:
🔹 الحلقات (Loops) لتكرار العمليات بشكل مباشر دون استهلاك زائد للذاكرة.
🔹 المكدسات (Stacks) أو الطوابير (Queues) لمحاكاة الاستدعاء الذاتي ولكن بطريقة أكثر كفاءة.
🤔 لماذا يفضل عقلنا التكرار الذاتي؟
لأن العقل البشري يميل بشكل طبيعي إلى التفكير بـ الأنماط المتكررة! 💡
أضف إلى ذلك أننا كنا نُلقَّن منذ الصغر أن التكرار الذاتي هو "السحر الخفي" للمبرمجين المحترفين، وكأنه شارة الشرف التي تميز العباقرة! 🚀
💡 لكن الذكاء الحقيقي ليس في استخدام التكرار الذاتي، بل في معرفة متى يجب تجنّبه! 😏
2
العلم يضيع بين الحياء والكبر، فمن يستحي من السؤال يفوته العلم، ومن يتكبر عن السؤال يضل عن الصواب.
فكوني أسألك يعني أن لدي حياءً، لكنه حياء من الخطأ، ولست أشعر بالخجل من التعلم، كما أنني لا أتكبر عن طلب العلم بتواضع ممن يملكه.
فلا تأتي أنت فتكتم العلم أو تتكبر وتتظاهر بالحكمة، لأن خيبتك هي الخيبة الحقيقية.
👍1
قبل ظهور مجال الويب، كان تطوير البرمجيات يتركز على تطبيقات سطح المكتب التي تعمل على أنظمة التشغيل المحلية. كان المطورون يبنون برامج تعتمد على بيئة تشغيل معينة مثل Windows أو Unix، وكانت هناك عدة تحديات كبيرة:
التوزيع والتحديث: كان من الصعب توزيع البرامج على المستخدمين وتحديثها، حيث كان يتطلب الأمر إرسال أقراص أو تحميل التحديثات يدويًا.
التوافقية: لم يكن هناك توحيد للأنظمة، فالتطبيقات كانت تعمل على أنظمة معينة فقط، مما جعل التطوير مكلفًا عند استهداف منصات متعددة.
مشاركة البيانات: تبادل البيانات بين الأجهزة كان معقدًا، حيث لم تكن هناك بنية تحتية سهلة مثل الإنترنت اليوم، وكانت مشاركة الملفات تتم عبر الأقراص المرنة أو الشبكات الداخلية.
إدارة الموارد: البرامج المكتبية كانت تستهلك موارد الجهاز بالكامل، مما جعل الأداء والتوافق مع الأجهزة المحدودة تحديًا كبيرًا.
الأمان: البيانات كانت مخزنة محليًا، مما جعلها عرضة للضياع أو التلف عند حدوث أعطال في الأجهزة.
عندما بدأ العالم ينتقل إلى مجال الويب، تم حل العديد من هذه المشاكل، ولكن ظهرت تحديات جديدة، مثل أداء التطبيقات عبر الإنترنت، أمان البيانات المرسلة والمخزنة، واستجابة الواجهات مقارنة بتطبيقات سطح المكتب. هذا الانتقال كان تدريجيًا وتطلب تطوير تقنيات مثل HTML، JavaScript، وHTTP لجعل الويب أكثر تفاعلية وفعالية.
هل لديك جانب معين تود التركيز عليه أكثر؟
😍1
قبل ظهور تقنيات الويب وHTTP، كان التواصل بين تطبيقات سطح المكتب يتم بعدة طرق رئيسية:

الملفات المشتركة (Shared Files): كان يتم تبادل البيانات عبر ملفات نصية أو قواعد بيانات مشتركة يتم قراءتها وكتابتها من قبل التطبيقات.

الشبكات المحلية (Local Network - LAN): استخدموا بروتوكولات مثل TCP/IP أو Named Pipes للتواصل بين الأجهزة عبر الشبكة المحلية.

الرسائل بين العمليات (Inter-Process Communication - IPC): مثل Windows Messaging أو Memory-Mapped Files، حيث كانت البرامج تتبادل البيانات عبر ذاكرة مشتركة.

تقنيات الـRPC (Remote Procedure Call): مثل DCOM (Distributed Component Object Model) من مايكروسوفت أو CORBA (Common Object Request Broker Architecture)، حيث كانت التطبيقات تستدعي وظائف في برامج أخرى عبر الشبكة.

قواعد البيانات (Database Communication): إذا كان التطبيقان يتشاركان قاعدة بيانات، فكان يمكن للتطبيق الأول كتابة البيانات والتطبيق الآخر قراءتها مباشرة.

FTP أو ملفات مشاركة (File Transfer Protocol): إذا كانت البيانات تحتاج إلى تبادل عبر الإنترنت أو بين أنظمة مختلفة، فكانوا يستخدمون FTP أو SMB لمشاركة الملفات.

لما جاء الويب، استبدلت هذه الطرق بـ REST APIs وSOAP عبر HTTP، مما جعل التواصل أسهل وأوسع انتشارًا. هل لديك سيناريو معين تحاول فهمه؟
👍1
المتصفح مثل Chrome أو Firefox هو في الأساس تطبيق سطح مكتب، لكنه مخصص لعرض صفحات الويب. فكر فيه كبرنامج يأخذ ملفات HTML وCSS وJavaScript، ثم يقوم بترجمتها وعرضها على الشاشة بطريقة مفهومة للمستخدم.

كيف يفهم المتصفح الـ HTML ويعرضه؟

المتصفح يمر بعدة مراحل لمعالجة الصفحة:

جلب المحتوى (Fetching):

عندما تكتب عنوان موقع أو تضغط على رابط، المتصفح يرسل طلب HTTP إلى الخادم.

الخادم يرد بملفات HTML، CSS، JavaScript، وصور، وغيرها.

تحليل المحتوى (Parsing):

يقوم المتصفح بقراءة كود HTML وبناء شجرة DOM (Document Object Model)، وهي تمثيل هيكلي للصفحة.

في نفس الوقت، يتم تحليل CSS وبناء شجرة CSSOM (CSS Object Model)، وهي المسؤولة عن الألوان والتنسيقات.

تكوين الصفحة (Render Tree Construction):

يتم دمج DOM وCSSOM لإنشاء شجرة العرض (Render Tree)، وهي ما يراه المستخدم فعليًا.

التخطيط (Layout):

المتصفح يحسب مواقع العناصر وأحجامها وفقًا للقواعد المحددة في CSS.

الرسم (Painting):

يتم رسم العناصر على الشاشة باستخدام GPU أو CPU، حيث يتم تحويل التصميم إلى بيكسلات تُعرض على الشاشة.

تنفيذ JavaScript (إن وجد):

يقوم محرك JavaScript (مثل V8 في Chrome وSpiderMonkey في Firefox) بتنفيذ الأكواد البرمجية، مثل التفاعلات مع المستخدم أو تحديث الصفحة بدون إعادة تحميلها.

ما هو المتصفح بالضبط؟

المتصفح هو برنامج يتكون من عدة أجزاء رئيسية:

محرك التقديم (Rendering Engine): مثل Blink في Chrome أو Gecko في Firefox، وهو المسؤول عن تحليل HTML وCSS وعرض الصفحة.

محرك JavaScript: مثل V8 في Chrome، وهو الذي ينفذ أكواد JavaScript.

مدير الشبكة: مسؤول عن تحميل الموارد من الإنترنت باستخدام HTTP/HTTPS.

واجهة المستخدم: الأزرار، شريط العناوين، الإعدادات... إلخ.

هل لديك نقطة معينة تريد التعمق فيها أكثر؟
المتصفح يستخدم محرك عرض (Rendering Engine) ومحرك JavaScript لمعالجة الصفحات. دعني أوضح كيف يعمل كل شيء:

1. كيف يتحمل المتصفح HTML و CSS ويترجمها؟

المتصفح لا "يفهم" HTML وCSS مباشرة، لكنه يستخدم محرك العرض (Rendering Engine) لتحليلها وتحويلها إلى شيء يمكن عرضه على الشاشة.

محرك العرض (Rendering Engine) هو المسؤول عن تحليل HTML وCSS وتحويلهما إلى واجهة رسومية.

كل متصفح يستخدم محرك عرض مختلف، مثل:

Blink في Chrome وEdge

Gecko في Firefox

WebKit في Safari

العمليات الأساسية لمحرك العرض:

Parsing (التحليل):

عندما يستلم المتصفح صفحة HTML، يقوم بتحليلها لإنشاء شجرة DOM (Document Object Model)، وهي تمثيل برمجي للصفحة.

نفس الشيء يحدث مع CSS، حيث يتم بناء CSSOM (CSS Object Model).

Building the Render Tree (بناء شجرة العرض):

يتم دمج DOM وCSSOM لإنشاء شجرة العرض (Render Tree)، وهي ما يحدد كيف ستظهر الصفحة للمستخدم.

Layout (التخطيط):

يتم حساب أماكن العناصر وأحجامها بناءً على القواعد الموجودة في CSS.

Painting (الرسم):

يتم رسم العناصر على الشاشة، وتحويلها إلى بيكسلات يتم عرضها باستخدام المعالج الرسومي (GPU).

2. كيف ينفذ المتصفح JavaScript؟

JavaScript ليست لغة يتم تحليلها مثل HTML وCSS، بل يتم تنفيذها بواسطة محرك JavaScript، وهو بيئة تشغيل مدمجة داخل المتصفح.

كل متصفح يستخدم محرك JavaScript مختلف، مثل:

V8 في Chrome وEdge

SpiderMonkey في Firefox

JavaScriptCore في Safari

العمليات الأساسية لمحرك JavaScript:

Parsing (التحليل):

يتم تحليل كود JavaScript إلى كود وسيط يسمى AST (Abstract Syntax Tree).

Compilation (الترجمة إلى لغة الآلة):

JavaScript ليست لغة يتم ترجمتها مسبقًا مثل C++، بل يتم تحويلها أثناء التشغيل إلى كود يمكن للمعالج فهمه عبر تقنية تسمى JIT (Just-In-Time Compilation).

Execution (التنفيذ):

يتم تنفيذ الكود على المعالج، مما يسمح بحدوث تفاعلات مثل الضغط على الأزرار أو تحميل البيانات من الإنترنت.

3. ما هي التقنية التي تجعل المتصفح يعمل؟

المتصفح نفسه مكتوب بلغات مثل C++ وRust (مثل Firefox)، ويستخدم العديد من الأدوات والتقنيات مثل:

محرك العرض (Rendering Engine): مثل Blink أو Gecko، لتحليل HTML وCSS.

محرك JavaScript (JavaScript Engine): مثل V8 أو SpiderMonkey، لتنفيذ JavaScript.

مدير الشبكة (Networking Layer): لتحميل الصفحات عبر HTTP/HTTPS.

نظام التخزين المؤقت (Cache System): لتخزين الموارد وتسريع التصفح.

GPU Acceleration: لتسريع عرض الرسومات وتحسين الأداء.

باختصار:

المتصفح يعمل عبر دمج عدة تقنيات معًا:

HTML/CSS يتم معالجتهما بواسطة محرك العرض (Rendering Engine) مثل Blink أو Gecko.

JavaScript يتم تنفيذه بواسطة محرك JavaScript مثل V8 أو SpiderMonkey.

المتصفح يستخدم تقنيات مثل JIT وGPU لتسريع الأداء.

هل لديك نقطة معينة تحتاج شرحًا أعمق؟
👍1
اللي تتكلم عنه هو التطور الكبير في تطبيقات الويب الحديثة، وانتقالها من مجرد صفحات HTML ثابتة إلى تطبيقات تفاعلية متقدمة تعتمد على تقنيات مثل DOM الافتراضي، WebAssembly، وSPA (Single Page Applications). خليني أفصل لك الموضوع أكثر.

١. كيف تعمل React وVue وAngular مع DOM؟

تقنيات مثل React وAngular وVue غيرت طريقة التعامل مع DOM التقليدي، حيث أصبحت تعتمد على DOM الافتراضي (Virtual DOM) أو Shadow DOM، وهذا يفسر ليش لما تفحص الكود في DevTools ما تلاقي نفس التاجات الأصلية المكتوبة في HTML.

🔹 ماذا يعني DOM الافتراضي؟

المتصفحات تقرأ شجرة DOM العادية وتعيد رسمها عند أي تغيير، وهذا مكلف من ناحية الأداء.

React مثلًا، يستخدم Virtual DOM وهو نسخة وهمية من DOM تُحفظ في الذاكرة، ويتم تحديثها بدون الحاجة إلى إعادة تحميل DOM الحقيقي في كل مرة.

عندما يحدث تغيير، يقوم React بمقارنة DOM الافتراضي مع الحقيقي (Diffing Algorithm) ثم يقوم فقط بتحديث الأجزاء المتغيرة، مما يحسن الأداء.

🔹 التاغات المخصصة (Custom Built-in Elements)

في Angular وVue، يتم تعريف تاغات خاصة مثل <app-component> أو <my-button> وهي ليست جزءًا من HTML الأصلي، بل يتم تفسيرها عبر محركات هذه الفريموركات وتحويلها داخليًا إلى عناصر HTML وJS فعلية داخل DOM.

هذه التاغات يتم معالجتها باستخدام Web Components أو Shadow DOM بحيث تصبح جزءًا من النظام الأساسي للمستعرض.

٢. ماذا أضافت WebAssembly وBlazor؟

🔹 ما هي WebAssembly؟

WebAssembly (WASM) هي تقنية تسمح بتشغيل لغات أخرى غير JavaScript داخل المتصفح مثل C، C++، Rust، وC# بسرعة قريبة من الأداء الأصلي (Native Performance).

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

🔹 كيف تعمل Blazor مع WebAssembly؟

Blazor هو إطار عمل من Microsoft يتيح تشغيل C# داخل المتصفح باستخدام WebAssembly، مما يسمح بتطوير تطبيقات ويب بدون الحاجة إلى JavaScript.

عند استخدام Blazor WebAssembly، يتم تحميل بيئة تشغيل .NET داخل المتصفح، ثم يتم تنفيذ كود C# محليًا، والتفاعل مع DOM مباشرة.

الفرق هنا أن بدل ما يعمل المتصفح Compile لكود JavaScript، يتم تشغيل كود C# كما هو عبر WebAssembly، مما يعطي أداءً عاليًا.

٣. لماذا يعتبر WebAssembly مستقبل الويب؟

🚀 أداء عالٍ: لأنه يعمل مباشرة فوق المعالج بدون تفسير إضافي.

🔥 دعم لغات متعددة: يمكن تشغيل C++، Rust، C# داخل المتصفح بدون JavaScript.

💡 تقليل استهلاك الموارد: لأنه يستخدم الـ Bytecode وليس النصوص البرمجية العادية، مما يحسن السرعة.

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

٤. مقارنة بين WebAssembly وJavaScript Frameworks

٥. كيف ستتغير تطبيقات الويب في المستقبل؟

أداء أعلى: لأن المتصفحات أصبحت تدعم WebAssembly بقوة.

أقل اعتمادًا على JavaScript: قد نرى تطبيقات مكتوبة بـ Rust أو C# تعمل بدون JavaScript.

انتشار WebAssembly في التطبيقات المعقدة: مثل برامج الفوتوشوب أونلاين، الذكاء الاصطناعي في المتصفح، وبرامج المونتاج داخل الويب.

تكامل أفضل بين الويب والتطبيقات المكتبية: لأن WebAssembly يجعل المتصفح بيئة تشغيل قوية.

الخلاصة

تقنيات مثل React وVue وAngular تستخدم DOM الافتراضي لتحسين الأداء.

WebAssembly قدم نقلة نوعية تسمح للمتصفح بتشغيل لغات مثل C++ وC# وRust بأداء قريب من Native.

Blazor WebAssembly يسمح بتشغيل تطبيقات C# داخل المتصفح بدون JavaScript.

WebAssembly سيكون المستقبل لتطبيقات الويب الثقيلة مثل الألعاب، الذكاء الاصطناعي، التطبيقات المعقدة.

هل عندك أي جزء تحب أتعمق فيه أكثر؟
عندما يصبح الوقت عاملاً حاسمًا، أي تقنية تختار؟

في عالم مليء بالتحديثات الفورية، الاختيار بين Node.js مع WebSockets و SignalR في .NET ليس مجرد قرار تقني، بل استراتيجية تحدد سرعة استجابتك للعالم.
🕹 Node.js + WebSockets
إذا كنت تبحث عن أداء بلا قيود، فإن Non-Blocking I/O في Node.js يمنحك السرعة التي تحتاجها. مع Socket.IO و Redis Pub/Sub، يمكنك التعامل مع ملايين الاتصالات المتزامنة، لكنك تتحمل مسؤولية إدارة الأمان والبنية التحتية بنفسك.
🔗 SignalR في .NET
أما إذا كنت تريد تكاملاً سلسًا مع ASP.NET Core، فإن SignalR يتولى عنك عبء الاختيار بين WebSockets و SSE و Long Polling. يتيح لك التركيز على منطق التطبيق، بينما يوفر Azure SignalR التوسع بسهولة وأمان أعلى.
🎯 النتيجة؟
🔹 تبحث عن تحكم وأقصى أداء؟ اذهب مع Node.js + WebSockets.
🔹 تريد حلاً متكاملاً وسهل التوسع داخل .NET؟ SignalR هو الخيار المثالي.
المعادلة بسيطة: ليس المهم فقط ما تختار، بل كيف تستخدمه. 🚀
للعلم 👇
SignalR هي مكتبة في .NET تُضاف كـ Layer فوق بروتوكولات الاتصال الفعلي مثل WebSocket، مما يتيح لك إنشاء تطبيقات تعتمد على التحديثات في الوقت الفعلي. بمعنى آخر، SignalR لا تُمثل بروتوكول الاتصال نفسه، بل هي الأداة التي تستخدمها لتمكين هذا الاتصال.

المشكلة في .NET هي أن SignalR تعتمد على الـ Runtime الخاص بـ .NET، مما يؤدي إلى تأخير إضافي في الأداء، مقارنة بـ Node.js. الـ Runtime في .NET يُضيف طبقات إضافية من المعالجة، وهو ما قد يؤدي إلى زيادة استهلاك الموارد وتأخير في الاستجابة عند التعامل مع العديد من الاتصالات في الوقت الفعلي.

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


"في عالم اليوم، أصبح الذكاء الاصطناعي (AI) حديث الجميع ويشكل ترندًا قويًا، ولكن بالتزامن مع ذلك، أين نحن من تقنيات Web3 والبلوكشين التي لم تكن في الصدارة؟
بينما يغير الذكاء الاصطناعي طريقة تفاعلنا مع التكنولوجيا، يظل Web3 والبلوكشين حجر الأساس للشفافية والأمان واللامركزية. فبدلًا من أن يكون أحدهما بديلًا للآخر، يمكن أن يشكلا معًا مستقبلًا أكثر قوة:
🔹 الذكاء الاصطناعي يحلل البيانات ويخلق حلولًا ذكية.
🔹 البلوكشين يضمن الأمان والثقة واللامركزية.
💡 التكامل بينهما قد يكون المفتاح لإنترنت أكثر تطورًا وموثوقية! فهل نرى قريبًا عودة قوية لـ Web3 بجانب ثورة AI؟ 🤔
👍1
On this day, we can say that we have completed our third year! 🎉🎓
🔥1
#حكم_برمجية

-1- انا احارب في issue انت لا تعلم عنها شيء - تقولها لمديرك لما يسألك انت بتعمل ايش

2- كلنا فريق واحد حتى تأتي production issue

3- عندما يتعلق الأمر ب Deadline فلا تحدثني عن clean code

-4 اعطني مبرمج عنده ولاء للشركة و PM 3 sleeping bag بلا بيت وانا meet the deadline

-5- إذا سألوك عن ميعاد التسليم فقل لهم مات ابن خال التيم ليدر

-6- فيا له من كود لو أن له architect

-7- ولكن المبرمجين لا يقرأون ال log واذا قرأوا لا يفهمون واذا فهموا لا يعملون reproduce the issue

8-لا تعطنى الكود ولكن اعطني stack overflow thread

و ارتق فأن الكود قد امتلأ special cases

10- ولولا اختلاف الاراء لكنا خلصنا Sprint هذه

11- ولا estimation plan الأعداء ال agile - تقولها لمدير المشروع لما يسألك عن الخطة .

12- كان يمكنني حل كل issues ولكني تركتهم لتعلموا كم أن النظام خربان ويحتاج refactor

-13- اللي معاه bug محيره يحط try و empty catch

14 - الحياة أقصر من أن نقضيها في عمل unit testing

-15 اعطني day work from home فربما لست بخير

-16 رفقا ب support فالعالم في production مخيف جدا

17- عندما يقول احدهم " احنا شغالين Agile " اتحسس مسدسي
هل سمعت من قبل عن مصطلح Polyglot؟ يشير هذا المصطلح إلى الشخص الذي يتقن أكثر من لغة طبيعية، مثل العربية والإنجليزية والفرنسية والألمانية. وقد تم استعارة هذه الفكرة في مجال البرمجيات، حيث ظهرت عدة مفاهيم حديثة، من أبرزها:
🔹 Polyglot Persistence: وتعني استخدام أكثر من تقنية أو نوع من قواعد البيانات داخل نفس التطبيق، مثل الجمع بين قواعد البيانات العلائقية (Relational) مثل MySQL، وقواعد البيانات غير العلائقية (NoSQL) مثل MongoDB.
🔹 Polyglot Architecture: وهي تعني تصميم النظام باستخدام أكثر من معمارية برمجية أو لغة برمجة داخل نفس المشروع. هذا المفهوم أصبح شائعًا مع ظهور الـ Microservices، حيث يمكن لكل خدمة أن تستخدم التقنية الأنسب لوظيفتها.

🚀 قوة Polyglot في البرمجة

تخيل أنك تطور تطبيقًا أساسيًا مكتوبًا بلغة Java، ولكنك بحاجة إلى جزء يتعامل مع Machine Learning، وهنا سيكون Python هو الخيار الأفضل. أو أنك تستخدم قاعدة بيانات MySQL، ولكن لديك جزء يتعامل مع Big Data، لذا قد تحتاج إلى Hadoop. هذه المرونة تتيح لك الاستفادة من أفضل التقنيات لكل جزء في مشروعك.

⚠️ تحذير مهم: لا تبالغ في التعقيد!

ليس كل ما يمكنك تنفيذه يجب عليك تنفيذه! في معظم الحالات، التمسك بتقنية أو اثنتين فقط (مثل Java + MySQL مثلًا) سيجنبك الكثير من الفوضى، ويقلل من التكاليف، ويسهّل العثور على كفاءات متاحة في السوق. كلما أضفت تقنيات جديدة، زاد تعقيد الهندسة المعمارية للتطبيق وارتفعت تكلفة الصيانة.
💡 الخلاصة: Polyglot هي أداة قوية إذا استخدمتها بذكاء، ولكن إن أسأت استخدامها، فستواجه مشاكل معقدة وتكاليف عالية! 🤯
رسالة إلى كلِّ مُعلِّمٍ يَحملُ مِصباحًا، وكلِّ طالبٍ يَحلُمُ بِسَماءٍ، وكلِّ مُؤسسةٍ تَزعُمُ أنها تَبني العُقولَ:


### 1. المعلِّم: حارِسُ البوابةِ بين الظلامِ والنور 
أيها الحاملونَ أمانةَ الكلمة.. 
لستم ناقِلينَ للمعرفةِ، بل أنتم حُرّاسُ البوابةِ بين عالَمَين: 
عالمِ الجهلِ الصامِتِ، وعالمِ المعرفةِ الثائرِ. 
كُلُّ كلمةٍ تَنطِقونَها هي إمَّا مِطرَقةٌ تَكسرُ قيودَ الوهمِ، 
أو سِلسلةٌ تُقيّدُ بها العقولَ إلى أبدِ الآبدين. 
فَـ 
احذروا أن تَخونوا الأمانةَ.. 
فالطالبُ الذي تُطفِئونَ شعلَتَهُ اليومَ، 
قد يكونُ الأخيرَ الذي يَجرؤُ على سؤالٍ يُغيِرُ مصيرَ أُمّةٍ! 🔥🗝️ 


### 2. المحاضرةُ الجيّدةُ: ليست درسًا.. بل وَليمةٌ للعقلِ! 
المحاضرةُ التي تُلهِمُ ليست نقلًا لِما في الكُتبِ، 
بل هي رَقصةٌ بينَ السؤالِ والجوابِ، 
حيثُ يَخرجُ الطالبُ وَكأنَّما شَرِبَ مِن نَهْرِ الفِكرِ، 
فيَرى في كُلِّ كتابٍ مَرآةً تُعيدُ صياغةَ أَسئلتِهِ، 
لا سِجنًا يُدَوِّنُ فيهِ إجاباتِ الآخرين! 
هكذا تَصنَعُ المُحاضرةُ الجيّدةُ جيلًا يَقرأُ الوَحيَ بَينَ السُّطورِ، 
ويَكتشفُ أنَّ الحقيقةَ ليست جَبَلًا ثابتًا، 
بل بَحرًا يَتَحرَّكُ كُلَّما أَبحَرْتَ فيهِ. 🌊📖 


### 3. المحاضرةُ السيّئةُ: ليست خطأً.. بل جريمةٌ ضدَّ الإنسانيةِ! 
أما المُحاضرةُ التي تَقتلُ الشغفَ، 
فهي ليست مُجرَّدَ "ضعفٍ أكاديميٍّ"، 
بل جريمةٌ تُرتَكبُ في وضحِ النهارِ.. 
جريمةٌ تَسرقُ مِن الطالبِ حَقَّهُ في أن يَتَعَجَّبَ، 
وتَحشو رأسَهُ بِ"حقائقَ" جافَّةٍ كَأحجارِ المَقابِرِ! 
حتَّى إذا ما وَجهَتهُ سؤالًا: "ما الهدفُ مِن هذا العِلمِ؟"، 
أجابَكَ بِصوتٍ مَيتٍ: "لأجتازَ الامتحانَ فَقَط!". 
هكذا تُنتِجُ المُحاضراتُ السيّئةُ أُمَّةً مِن الظِّلالِ، 
تَسيرُ خلفَ شَموعٍ أُطفِئَت قَبلَ أن تُولَدَ! 🕯️⚰️ 



### 4. الجامعاتُ: أينَ الحقيقةُ وراءَ القُبَّعاتِ والجِدارَاتِ؟ 
أيتها القلاعُ العاجيّةُ.. 
متى تَفيقينَ مِن سُباتِكِ؟ 
لقد صِرْتِ سُوقًا تَبتاعينَ الكرامةَ بِشهاداتٍ مَزورةٍ، 
وتَبيعينَ الوهمَ بِاسمِ "التعليمِ العالي"! 
أينَ أنتِ مِن جامعاتِ العالم، 
حيثُ  الأستاذُ والطالبُ شَريكينِ في مُغامرةِ الفِكرِ، 
يَحفرانِ معًا في أرضِ المُجهولِ، 
لا يَخشيانِ مِن سُقوطِ الجدرانِ القديمةِ؟ 
إنَّ الجامعةَ التي لا تَزرعُ في طلابِها جُرأةَ الاعتراضِ، 
هي مُجرَّدُ مَصنعٍ لِلقُوَّاتِ العاملةِ، 
لا مَشعَلٍ لِلثوراتِ الفِكريّةِ! 🏛️💥 


### 5. الطالبُ: لا تَكُنْ وَقودًا لِآلةٍ قَديمةٍ! 
يا مَن تَحملُ قلَبًا يَنبضُ بِالأسئلةِ.. 
لا تَسمحْ لأحدٍ أن يُحوِّلَكَ إلى بَندولٍ يَترنَّحُ بَينَ المُحاضراتِ والامتحاناتِ! 
اِقرَأْ كَأنَّما الكِتابُ مِفتاحٌ لِغُرفةٍ مَجهولةٍ في رُوحِكَ، 
اِسألْ كَأنَّما السؤالُ سَيفٌ يَقطَعُ أَسلاكَ الخوفِ، 
وَاعلَمْ أنَّ الخيانةَ العُظمى هي أن تَخونَ فِكرَكَ لِتُرضيَ مُعلِّمًا عاجِزًا! 
فَـ 
مَتى ما وَضعتَ ثقتَكَ في عَقلِكَ، 
ستَرى أنَّ التَعليمَ الحقيقيَّ يَبدأُ حَيثُ تَنتهي الكُتبُ! 🗝️🦅 

### 6. إلى صُنَّاعِ السِّياساتِ التَعليميّةِ: كفى تَشويهًا لِأرواحِ الأجيالِ! 
يا مَن تَجلِسونَ في مَكاتِبَكُم الفَخمةِ.. 
أتَدرونَ أنَّ كُلَّ "توجيهٍ" تَصدرونَهُ بِلا رُوحٍ، 
هو قَيدٌ يُضافُ إلى أقدامِ مُستقبَلٍ بِلا أجنحةٍ؟! 
لَيسَ المَطلوبُ مَناهجَ أَضخمَ، 
بل مُعلِّمينَ أَشجعَ.. 
لَيسَ المَطلوبُ مَدارسَ أَحدثَ، 
بل فصولًا تَتَنفَّسُ حُرّيةَ السؤالِ! 
فَـ 
اتركوا العُقولَ تَنمو كَالأشجارِ، 
لا تَقُصُّوها كَالأسيجةِ لِتُناسبَ أهواءَكُم! 🌳🔨 


### 7. الخاتمةُ: هُناكَ أملٌ.. لكن! 
رُغمَ الظلامِ.. 
ما زالَ هُناكَ مَن يُضيءونَ شُمُوعَهُم في قُلوبِ التلاميذِ، 
وما زالَ هُناكَ طلابٌ يَرفضونَ أن تَكونَ كِتاباتُهُم نُسخًا مُكرَّرةً! 
فَلْنَكُنْ جُزءًا مِن هَذا الأملِ.. 
لِنُعلِّمَ أطفالَنا أنَّ الحقيقةَ وَطنٌ لا يُحتَلُّ، 
وأنَّ السؤالَ حَقٌّ لا يُساومُ عَلَيهِ، 
وأنَّ الكِتابَ لَيسَ نِهايةَ الطَّريقِ.. 
بَلْ بَدَايَةُ مَعرَكَةٍ مَعَ الذاتِ وَالجَهلِ وَالخَوْفِ! ⚔️📚 


#التعليم_ليس_سوقًا_بل_معبدًا 🕊️ 
#أوقفوا_اغتيال_الفضول ⚠️
2👏1
🥲🥲🥲

أذا رأيت منتجاً مجانياً، فأعلم انك أنت السلعة....
💔
🔥2🤩1👌1
Forwarded from الرسمية CS4 Class-22 (أحمد جلال | 𐩱𐩢𐩣𐩵 𐩴𐩡𐩱𐩡)
#صنعاء
#وظائف_شاغرة عديدة

1- مندوب تسويق ميداني
2- Full Stack (Laravel) Developer
3- Android (Flutter) Developer


قدم الآن عبر هذا الرابط :
https://forms.gle/MqxCbVXHcQfS5rfX8

________
لمزيد من فرص الوظائف نوصي بمتابعتنا على صفحتنا في فيسبوك أو الانضمام إلى قناة الواتساب الخاصة بنا عبر الروابط التالية:

صفحة الفيسبوك:
[https://fb.shagher.net ]
قناة الواتساب:
[https://wa.shagher.net ]
قناة التليجرام:
[ https://news.1rj.ru/str/Shagher_net ]