كيف تخلصت من خوف "كسر الكود"؟ قصتي مع أول تجربة لتقنية CI
إذا كنت مبرمجاً في بداية طريقك، فمن المؤكد أنك تعرف هذا الشعور:
تكتب كوداً جديداً، يشتغل معك تماماً على جهازك، ولكن بمجرد أن تدمجه مع المشروع الأساسي... تنهار أجزاء أخرى من التطبيق فجأة!
في مشاريعنا الأخيرة (التي تتكون من واجهة مستخدم، ولوحة تحكم، وخوادم خلفية)، كان فحص كل هذه الأجزاء يدوياً مع كل تعديل بسيط يأخذ وقتاً طويلاً ومملاً جداً. هنا قررت أن أتعلم تقنية نسمع عنها كثيراً وهي CI (التكامل المستمر - Continuous Integration).
ما هو الـ CI ببساطة؟
تخيل أن لديك "مساعداً آلياً" أو "مفتش جودة" يعمل معك مجاناً. في كل مرة تحاول فيها إضافة كود جديد إلى المشروع، يقوم هذا المفتش بإيقافك لحظة ويقول: "انتظر، دعني أفحص هذا الكود أولاً لأتأكد أنه لن يخرب شيئاً".
هذا بالضبط ما فعلته! قمت ببرمجة هذا المساعد (باستخدام أدوات مثل GitHub Actions) ليقوم بعدة مهام أوتوماتيكية نيابة عني بمجرد أن أرفع الكود.
ماذا حدث في أول تجربة؟ (كما يظهر في الصورة)
عندما أردت دمج تحديث جديد (إصدار v1.0.0)، قام المساعد الآلي بالآتي:
تجربة تشغيل المشروع (Build):
تأكد أن واجهة المستخدم (Storefront) ولوحة الإدارة (Admin) والواجهة الخلفية (Backend) كلها تعمل وتفتح بدون مشاكل أو شاشات بيضاء.
فحص الأخطاء الإملائية والبرمجية (Type Check):
تأكد أنني لم أستخدم متغيرات خاطئة أو أنسى تعريف شيء مهم في الكود.
النتيجة؟ سحر العلامة الخضراء
بدلاً من أن أقوم بتشغيل كل شيء يدوياً وأضع يدي على قلبي خوفاً من الأخطاء، انتظرت ثوانٍ معدودة فقط، ليفاجئني النظام برسالة "All checks have passed" (جميع الفحوصات نجحت) باللون الأخضر المريح للأعصاب!
لماذا أنصح كل مبتدئ بتعلمها؟
راحة البال:
ستضغط على زر الدمج (Merge) وأنت واثق 100% أن كودك سليم.
توفير الوقت:
المهام المكررة سيقوم بها الآلي، لتتفرغ أنت للبرمجة والإبداع.
احترافية أكثر:
استخدامك لهذه التقنيات يجعلك تفكر وتعمل كمهندسي الشركات الكبرى.
مصطلح "CI/CD"
قد يبدو مرعباً ومعقداً في البداية، لكن صدقني، بمجرد أن تفهمه وتطبقه مرة واحدة، لن تتخيل كيف كنت تبرمج بدونه!
إذا كنت مبرمجاً في بداية طريقك، فمن المؤكد أنك تعرف هذا الشعور:
تكتب كوداً جديداً، يشتغل معك تماماً على جهازك، ولكن بمجرد أن تدمجه مع المشروع الأساسي... تنهار أجزاء أخرى من التطبيق فجأة!
في مشاريعنا الأخيرة (التي تتكون من واجهة مستخدم، ولوحة تحكم، وخوادم خلفية)، كان فحص كل هذه الأجزاء يدوياً مع كل تعديل بسيط يأخذ وقتاً طويلاً ومملاً جداً. هنا قررت أن أتعلم تقنية نسمع عنها كثيراً وهي CI (التكامل المستمر - Continuous Integration).
ما هو الـ CI ببساطة؟
تخيل أن لديك "مساعداً آلياً" أو "مفتش جودة" يعمل معك مجاناً. في كل مرة تحاول فيها إضافة كود جديد إلى المشروع، يقوم هذا المفتش بإيقافك لحظة ويقول: "انتظر، دعني أفحص هذا الكود أولاً لأتأكد أنه لن يخرب شيئاً".
هذا بالضبط ما فعلته! قمت ببرمجة هذا المساعد (باستخدام أدوات مثل GitHub Actions) ليقوم بعدة مهام أوتوماتيكية نيابة عني بمجرد أن أرفع الكود.
ماذا حدث في أول تجربة؟ (كما يظهر في الصورة)
عندما أردت دمج تحديث جديد (إصدار v1.0.0)، قام المساعد الآلي بالآتي:
تجربة تشغيل المشروع (Build):
تأكد أن واجهة المستخدم (Storefront) ولوحة الإدارة (Admin) والواجهة الخلفية (Backend) كلها تعمل وتفتح بدون مشاكل أو شاشات بيضاء.
فحص الأخطاء الإملائية والبرمجية (Type Check):
تأكد أنني لم أستخدم متغيرات خاطئة أو أنسى تعريف شيء مهم في الكود.
النتيجة؟ سحر العلامة الخضراء
بدلاً من أن أقوم بتشغيل كل شيء يدوياً وأضع يدي على قلبي خوفاً من الأخطاء، انتظرت ثوانٍ معدودة فقط، ليفاجئني النظام برسالة "All checks have passed" (جميع الفحوصات نجحت) باللون الأخضر المريح للأعصاب!
لماذا أنصح كل مبتدئ بتعلمها؟
راحة البال:
ستضغط على زر الدمج (Merge) وأنت واثق 100% أن كودك سليم.
توفير الوقت:
المهام المكررة سيقوم بها الآلي، لتتفرغ أنت للبرمجة والإبداع.
احترافية أكثر:
استخدامك لهذه التقنيات يجعلك تفكر وتعمل كمهندسي الشركات الكبرى.
مصطلح "CI/CD"
قد يبدو مرعباً ومعقداً في البداية، لكن صدقني، بمجرد أن تفهمه وتطبقه مرة واحدة، لن تتخيل كيف كنت تبرمج بدونه!
👏1
لم نتعلم من الجامعة فقط…
بل تعلمنا من مصادر متعددة
في رحلة تعلّمنا لم تكن الجامعة هي المصدر الوحيد للمعرفة، ولم نكتفِ بالمقررات الدراسية أو المحاضرات النظرية. الجامعة منحتنا المفاتيح الأولى، وفتحت لنا أبواب البداية، لكنها لم تكن النهاية أبدًا. فالعلم اليوم واسع، ومصادره متعددة، ومن أراد أن يصبح مميزًا فعليه أن يبحث، ويجتهد، ويغوص في كل بحر متاح أمامه.
لقد تعلمنا من أساتذة كثر من مختلف الدول العربية والعالم، تعلمنا ممن بذلوا وقتهم وجهدهم ليضعوا بين أيدينا خلاصة خبراتهم… وهؤلاء بعض ممن تركوا أثرًا عظيمًا في رحلتنا:
تعلمنا أساسيات البرمجة من الجزائر
مع البش مهندس عادل نسيم، تعلمنا البدايات الصحيحة، وفهم أساسيات البرمجة بطريقة قوية ومنهجية.
https://youtube.com/@adelnasim?si=ZsgHfdG10QXvCH2e
تعلمنا المنطق وحل المشاكل من الأردن
مع البش مهندس الدكتور محمد أبو هدهود، بنينا عقلية المبرمج الحقيقي، وتعلّمنا قواعد البيانات وكيفية ربطها بتطبيقات سطح المكتب بالشكل السليم مع خارطة الطريق متكاملة وأنصح كل الطلاب في تخصصات التقنية كاملة البدء في هذا المسار اولاً.
https://youtube.com/@programmingadvices?si=31CvWLpstw4NQ7Bp
تعلمنا قواعد البيانات من مصر
مع البش مهندس الدكتور محمد الدسوقي، اكتشفنا العمق الحقيقي لقواعد البيانات وكيفية التعامل معها باحتراف.
https://youtube.com/@desoukiegypt?si=1EuXNL6c8dEb2OeW
تعلمنا تطوير الويب من مصر والمغرب
مع البش مهندس أسامة الزيرو، والبش مهندس عبدالرحمن جمال، والمغربي البش مهندس راكوان، تعلمنا تصميم وبرمجة مواقع الويب، والتعامل مع الـ CMD، و Git و GitHub.
https://youtube.com/@elzerowebschool?si=KZyQwGcivymB3hte
https://youtube.com/@abdelrahmangamal?si=0beVmW3F0UQgO0Gl
https://youtube.com/@rakwan?si=29HiB0H60h0YzvaW
تعلمنا برمجة تطبيقات الموبايل من سوريا
مع البش مهندس وائل أبو حمزة، ومع المهندس ثروت سامي ، دخلنا عالم تطوير التطبيقات خطوة بخطوة.
https://youtube.com/@waelabohamzaflutter?si=1QG-20GaKqS-QIge
https://youtube.com/@tharwatsamy?si=axOmVy3WIiFnXfp0
تعلمنا أطر الويب المتقدمة من السعودية
من أكاديمية ترميز مع البش مهندس يعرب تعلمنا React
ولديه أيضا شرح Next.js و Node.js، يوضح كيف تُبنى تطبيقات الويب الحديثة بإسلوب جذاب و بشكل مفهوم
https://youtube.com/@tarmeez?si=pjA9SjeniQDXtj23
تعلمنا Django ) Backend ) من مصر
مع البش مهندس عبدالرحمن جمال ، محمد عيسى تعلّمنا Django، والـ API، و Swagger، وبناء الـ Backend بالشكل الصحيح.
https://youtube.com/@muhammedessa?si=BSL0ylVuYoq5xv7R
تعلمنا الذكاء الاصطناعي من مصر واليابان
مع البش مهندس هشام عاصم دخلنا عالم الذكاء الاصطناعي، ومع الخبير العالمي Andrew (اندرو) من اليابان تعمقنا في تعلم الآلة والتعلم العميق وكذلك البش مهندس عمر الحربي
https://youtube.com/@heshamasem?si=vZnm3V4w_ybEFa8d
https://youtube.com/@deeplearningai?si=mmKSaQIaTcBrn-kI
https://youtube.com/@omar2366?si=IkGQaLB3AXQa7y27
تعلمنا الشبكات من مصر
مع البش مهندس أحمد حنفي فهمنا الشبكات بمستواها العملي والنظري.
https://youtube.com/@ahmed.elhefny?si=91c09qLZoPo7bER-
تعلمنا الخوارزميات وهياكل البيانات والنظرية الاحتسابية والمترجمات من الهند
من خلال أكاديمية Neso Academy ومصادر هندية متفرقة، تعلمنا الأساسيات المتقدمة للحوسبة وحلول المشاكل.
https://youtube.com/@nesoacademy?si=RNXBpjXQ3IPl04Oe
تعلمنا الرياضيات من العراق
من محاضرات نخبة من الدكاترة العراقيين، فهمنا الرياضيات في أبوابها المختلفة، وال foundations التي يحتاجها كل مهندس.
https://youtube.com/@checommittell6396?si=pDU2s69gg0QXDpxl
من العراق
كورسات متفرقة في التقنية وخاصة تطبيقات سطح المكتب في #C مع مشاريع تطبيقة المهندس صفاء جاسم
https://youtube.com/@tecnou?si=k92p6JxLbrI-boV4
والكثير ممن لا يسعنا ذكرهم ، ربما خانتنا الذاكرة ولكن فضلهم علينا كبير
تعلمنا من منصات ومواقع تعليمية متعددة
مثل:
W3Schools
هرمش
ProgrammingAdvices
Elzero Web School
Neso Academy
ومن الوثائق الرسمية Documentation و Tutorials لمختلف التقنيات وهي تابعة لشركات مثل
Documention خاص بتقنيات Microsoft
Documention خاص بتقنيات Google
وهكذا
تعلمنا من أدوات الذكاء الاصطناعي
استخدمنا الذكاء الاصطناعي لشرح المفاهيم وتبسيطها وحل الأخطاء. وأكثر الأدوات التي اعتمدنا عليها:
ChatGPT
Gemini
وبعض الأدوات التي تسهّل كتابة الأكواد (ولا ننصح بها للمبتدئين):
Copilot – Gemini – Antigravity – Cursor – AGENT – Gemini CLI
جزاهم الله عنا خير الجزاء
بل تعلمنا من مصادر متعددة
في رحلة تعلّمنا لم تكن الجامعة هي المصدر الوحيد للمعرفة، ولم نكتفِ بالمقررات الدراسية أو المحاضرات النظرية. الجامعة منحتنا المفاتيح الأولى، وفتحت لنا أبواب البداية، لكنها لم تكن النهاية أبدًا. فالعلم اليوم واسع، ومصادره متعددة، ومن أراد أن يصبح مميزًا فعليه أن يبحث، ويجتهد، ويغوص في كل بحر متاح أمامه.
لقد تعلمنا من أساتذة كثر من مختلف الدول العربية والعالم، تعلمنا ممن بذلوا وقتهم وجهدهم ليضعوا بين أيدينا خلاصة خبراتهم… وهؤلاء بعض ممن تركوا أثرًا عظيمًا في رحلتنا:
تعلمنا أساسيات البرمجة من الجزائر
مع البش مهندس عادل نسيم، تعلمنا البدايات الصحيحة، وفهم أساسيات البرمجة بطريقة قوية ومنهجية.
https://youtube.com/@adelnasim?si=ZsgHfdG10QXvCH2e
تعلمنا المنطق وحل المشاكل من الأردن
مع البش مهندس الدكتور محمد أبو هدهود، بنينا عقلية المبرمج الحقيقي، وتعلّمنا قواعد البيانات وكيفية ربطها بتطبيقات سطح المكتب بالشكل السليم مع خارطة الطريق متكاملة وأنصح كل الطلاب في تخصصات التقنية كاملة البدء في هذا المسار اولاً.
https://youtube.com/@programmingadvices?si=31CvWLpstw4NQ7Bp
تعلمنا قواعد البيانات من مصر
مع البش مهندس الدكتور محمد الدسوقي، اكتشفنا العمق الحقيقي لقواعد البيانات وكيفية التعامل معها باحتراف.
https://youtube.com/@desoukiegypt?si=1EuXNL6c8dEb2OeW
تعلمنا تطوير الويب من مصر والمغرب
مع البش مهندس أسامة الزيرو، والبش مهندس عبدالرحمن جمال، والمغربي البش مهندس راكوان، تعلمنا تصميم وبرمجة مواقع الويب، والتعامل مع الـ CMD، و Git و GitHub.
https://youtube.com/@elzerowebschool?si=KZyQwGcivymB3hte
https://youtube.com/@abdelrahmangamal?si=0beVmW3F0UQgO0Gl
https://youtube.com/@rakwan?si=29HiB0H60h0YzvaW
تعلمنا برمجة تطبيقات الموبايل من سوريا
مع البش مهندس وائل أبو حمزة، ومع المهندس ثروت سامي ، دخلنا عالم تطوير التطبيقات خطوة بخطوة.
https://youtube.com/@waelabohamzaflutter?si=1QG-20GaKqS-QIge
https://youtube.com/@tharwatsamy?si=axOmVy3WIiFnXfp0
تعلمنا أطر الويب المتقدمة من السعودية
من أكاديمية ترميز مع البش مهندس يعرب تعلمنا React
ولديه أيضا شرح Next.js و Node.js، يوضح كيف تُبنى تطبيقات الويب الحديثة بإسلوب جذاب و بشكل مفهوم
https://youtube.com/@tarmeez?si=pjA9SjeniQDXtj23
تعلمنا Django ) Backend ) من مصر
مع البش مهندس عبدالرحمن جمال ، محمد عيسى تعلّمنا Django، والـ API، و Swagger، وبناء الـ Backend بالشكل الصحيح.
https://youtube.com/@muhammedessa?si=BSL0ylVuYoq5xv7R
تعلمنا الذكاء الاصطناعي من مصر واليابان
مع البش مهندس هشام عاصم دخلنا عالم الذكاء الاصطناعي، ومع الخبير العالمي Andrew (اندرو) من اليابان تعمقنا في تعلم الآلة والتعلم العميق وكذلك البش مهندس عمر الحربي
https://youtube.com/@heshamasem?si=vZnm3V4w_ybEFa8d
https://youtube.com/@deeplearningai?si=mmKSaQIaTcBrn-kI
https://youtube.com/@omar2366?si=IkGQaLB3AXQa7y27
تعلمنا الشبكات من مصر
مع البش مهندس أحمد حنفي فهمنا الشبكات بمستواها العملي والنظري.
https://youtube.com/@ahmed.elhefny?si=91c09qLZoPo7bER-
تعلمنا الخوارزميات وهياكل البيانات والنظرية الاحتسابية والمترجمات من الهند
من خلال أكاديمية Neso Academy ومصادر هندية متفرقة، تعلمنا الأساسيات المتقدمة للحوسبة وحلول المشاكل.
https://youtube.com/@nesoacademy?si=RNXBpjXQ3IPl04Oe
تعلمنا الرياضيات من العراق
من محاضرات نخبة من الدكاترة العراقيين، فهمنا الرياضيات في أبوابها المختلفة، وال foundations التي يحتاجها كل مهندس.
https://youtube.com/@checommittell6396?si=pDU2s69gg0QXDpxl
من العراق
كورسات متفرقة في التقنية وخاصة تطبيقات سطح المكتب في #C مع مشاريع تطبيقة المهندس صفاء جاسم
https://youtube.com/@tecnou?si=k92p6JxLbrI-boV4
والكثير ممن لا يسعنا ذكرهم ، ربما خانتنا الذاكرة ولكن فضلهم علينا كبير
تعلمنا من منصات ومواقع تعليمية متعددة
مثل:
W3Schools
هرمش
ProgrammingAdvices
Elzero Web School
Neso Academy
ومن الوثائق الرسمية Documentation و Tutorials لمختلف التقنيات وهي تابعة لشركات مثل
Documention خاص بتقنيات Microsoft
Documention خاص بتقنيات Google
وهكذا
تعلمنا من أدوات الذكاء الاصطناعي
استخدمنا الذكاء الاصطناعي لشرح المفاهيم وتبسيطها وحل الأخطاء. وأكثر الأدوات التي اعتمدنا عليها:
ChatGPT
Gemini
وبعض الأدوات التي تسهّل كتابة الأكواد (ولا ننصح بها للمبتدئين):
Copilot – Gemini – Antigravity – Cursor – AGENT – Gemini CLI
جزاهم الله عنا خير الجزاء
كل من كان سببًا في علم ننتفع به، أو خطوة قطعناها، أو مجال فتح أمامنا…
نسأل الله أن يبارك في علمهم، وأعمارهم، وجهودهم، وأن ينفع بهم الأمة.
الغاية من هذا المنشور
أن تشارك أنت أيضًا مصادر تعلمك…
أن تذكر أسماء من أفادوك…
أن تكتب المنصات والكورسات التي صنعت فرقًا في رحلتك…
فربما يستفيد أحدهم من كلمة تكتبها اليوم، وتكون سببًا في تغيير مستقبله.
والأهم…
أن نرسل رسالة واضحة لكل طالب:
الجامعة لا تعلّمك كل شيء…
تعطيك فقط المفاتيح.
أما الطريق الحقيقي، فأنت من يجب أن يبحث عنه ويشقّه بنفسه.
📚🫵💛
م. طارق العمري
نسأل الله أن يبارك في علمهم، وأعمارهم، وجهودهم، وأن ينفع بهم الأمة.
الغاية من هذا المنشور
أن تشارك أنت أيضًا مصادر تعلمك…
أن تذكر أسماء من أفادوك…
أن تكتب المنصات والكورسات التي صنعت فرقًا في رحلتك…
فربما يستفيد أحدهم من كلمة تكتبها اليوم، وتكون سببًا في تغيير مستقبله.
والأهم…
أن نرسل رسالة واضحة لكل طالب:
الجامعة لا تعلّمك كل شيء…
تعطيك فقط المفاتيح.
أما الطريق الحقيقي، فأنت من يجب أن يبحث عنه ويشقّه بنفسه.
📚🫵💛
م. طارق العمري
❤2
طيب عندك شعار لشركتك، فريقك، مشروعك أو حتى هويتك الخاصة…
وحابب تطلع بصورة احترافية تنتمي لهوية عملك بشكل فاخر؟ 🔥
هذا البرومبت بيحول صورتك إلى صورة احترافية بهوية بصرية متكاملة باستخدام الذكاء الاصطناعي ✨
جرب مع Gemini or Chatgpt
خذ البرومبت 👇ولا تنسى ترفع صورتك + صورة الشعار
وحابب تطلع بصورة احترافية تنتمي لهوية عملك بشكل فاخر؟ 🔥
هذا البرومبت بيحول صورتك إلى صورة احترافية بهوية بصرية متكاملة باستخدام الذكاء الاصطناعي ✨
جرب مع Gemini or Chatgpt
خذ البرومبت 👇ولا تنسى ترفع صورتك + صورة الشعار
A professional photo of this person, wearing a navy blue t-shirt, With the logo attached to the image above, realistically printed and woven onto the t-shirt, not flat, on the right side of the chest, in a professional photography studio, with soft lighting, half background, and backlighting that gives depth to the image, with background isolation, sitting confidently, close-up angle, from the eye line perspective, very high image resolution, image size 1:1, add a light signature on the upper right of the image with the name Tareq Al-Omari
🔴 منصة غيت هاب تؤكد تعرضها لاختراق أدى إلى سرقة بيانات من نحو 3800 مستودع أكواد داخلي، بعد اختراق جهاز أحد الموظفين عبر إضافة خبيثة لبرنامج «فيجوال ستوديو كود». وأوضحت الشركة أن بيانات العملاء لم تتأثر حتى الآن، فيما لا تزال التحقيقات مستمرة.
🔴 وبحسب تقارير تقنية أعلنت مجموعة القرصنة «TeamPCP» مسؤوليتها عن الهجوم، وسط تصاعد استهداف القراصنة للمشاريع مفتوحة المصدر ومنصات المطورين لنشر برمجيات خبيثة وسرقة البيانات.
🔴 وبحسب تقارير تقنية أعلنت مجموعة القرصنة «TeamPCP» مسؤوليتها عن الهجوم، وسط تصاعد استهداف القراصنة للمشاريع مفتوحة المصدر ومنصات المطورين لنشر برمجيات خبيثة وسرقة البيانات.
كمية التطورات التي تحدث في مجال الذكاء الاصطناعي صارت أسرع من القدرة البشرية نفسها على استيعابه 😅
كل يوم في نموذج جديد…
ميزة جديدة…
أداة بتختصر ساعات شغل…
أو شركة بتقلب مفهوم كامل كنا مفكرينه ثابت.
السوق حاليا داخل بحرب تقنية حقيقية 🔥
وكل شركة بتحاول تكون الأولى بالسرعة، الذكاء، والأتمتة.
الذي كان يحتاج فريق كامل صار ينعمل بأداة،
والذي كان يعتبر “خيال” قبل سنتين صار اليوم شيء طبيعي تستخدمه من موبايلك.
الموضوع ما عاد مجرد تطور تقني…
إحنا فعليًا بمرحلة إعادة تشكيل كاملة لمفهوم البرمجة، الوظائف، وحتى طريقة بناء الشركات نفسها.
والغريب؟
إنه هناك كثير ناس مش مستوعبة كمية التغيير القادم.
كل يوم في نموذج جديد…
ميزة جديدة…
أداة بتختصر ساعات شغل…
أو شركة بتقلب مفهوم كامل كنا مفكرينه ثابت.
السوق حاليا داخل بحرب تقنية حقيقية 🔥
وكل شركة بتحاول تكون الأولى بالسرعة، الذكاء، والأتمتة.
الذي كان يحتاج فريق كامل صار ينعمل بأداة،
والذي كان يعتبر “خيال” قبل سنتين صار اليوم شيء طبيعي تستخدمه من موبايلك.
الموضوع ما عاد مجرد تطور تقني…
إحنا فعليًا بمرحلة إعادة تشكيل كاملة لمفهوم البرمجة، الوظائف، وحتى طريقة بناء الشركات نفسها.
والغريب؟
إنه هناك كثير ناس مش مستوعبة كمية التغيير القادم.
أعجبني مقال مصري :
فيه developers كتير أول ما يسمعوا
Data Structures & Algorithms
يتعاملوا معاها كأنها مادة كليه حفظ.
يقعد يحفظ
Bubble Sort
Merge Sort
Quick Sort
DFS
BFS
Dijkstra
AVL
Red Black Tree
وبعدين يدخل interview
يحاول يفتكر:
"الـ time complexity كانت O(n log n) ولا O(n²)؟"
لكن الحقيقة.. الغرض الحقيقي من تعلم
Data Structures & Algorithms
مش إنك تحفظ algorithms.
ومش إنك تبقى ماشي حافظ 50 solution لـ LeetCode.
ومش إنك تستخدم كل الـ algorithms دي في شغلك.
لأن الحقيقة أغلب developers عمرهم ما هيكتبوا
Red Black Tree
بإيديهم في production.
وأغلب الناس مش هتستخدم:
Dijkstra
ولا Segment Tree
ولا Dynamic Programming
في شغلها اليومي
لكن ده مش معناه إن تعلمهم ملوش لازمة.
بالعكس
الفكرة الأساسية من DSA
إنها تغير طريقة تفكيرك كمبرمج.
مش مجرد تزود معلوماتك
لأن فيه فرق كبير اوي بين developer
"بيعرف يكتب code"
وdeveloper:
"بيعرف يحل problems"
لما تتعلم Data Structures صح
أنت بتتعلم:
• إزاي تقسّم المشكلة
• إزاي تفكر في trade-offs
• إزاي تختار structure مناسب
• إزاي تحسب تكلفة الحل
• إزاي تتوقع bottlenecks
• إزاي تكتب code scalable
• إزاي تفرق بين solution شغال و solution محترم
ممكن developer يعمل feature شغالة 100%.
لكن يستخدم
List
في مكان المفروض فيه
HashSet
فالعملية اللي كانت المفروض تبقى:
O(1)
بقت:
O(n)
ومع data قليلة.. مش هتحس
لكن أول ما السيستم يكبر.. تبدأ تسأل الدنيا بقت بطيئه ليه.
وده سبب إن ناس كتير تقول:
"السيستم كان سريع زمان"
لأن الـ complexity الحقيقية
بتظهر مع الـ scale.
لو عندك مليون user
وعايز تتأكد هل email موجود ولا لا.
ممكن تعمل:
for loop
وتلف على كل users.
وده شغال.
لكن complexity تبقى:
O(n)
لكن لو استخدمت
HashSet
العملية غالبا تبقى
O(1)
يعني الفرق مش
syntax
الفرق طريقة تفكير.
كمان DSA بتعلمك إن كل solution له تكلفة.
ممكن تزود السرعة
لكن تستهلك memory أكتر.
وممكن تقلل memory
لكن الحسابات تبقى أبطأ.
ودي اسمها
Trade-offs
ودي من أهم الحاجات في الـ engineering عموما.
مفيش solution هو الأفضل.
كل قرار له ثمن.. ثمن كبير.
حتى قواعد البيانات نفسها
مبنية على DSA.
Indexes
B-Trees
Hashing
Caching
Graphs
حتى Redis
حتى Git
حتى Google Search
كلهم قائمين على أفكار DSA.
وفي misconception مشهور جدا:
"أنا ك frontend or backend Developer
مش محتاج Algorithms"
وده غلط جدا
أنت يمكن مش هتكتب
QuickSort
لكن يوميا بتتعامل مع
• pagination
• searching
• caching
• indexing
• queues
• rate limiting
• concurrency
• memory usage
• query optimization
وكل دي مبنية على نفس طريقة التفكير.
حتى LINQ نفسها.
ناس كتير تكتب:
.Where(...).ToList().Where(...).ToList()
من غير ما تفكر
هو بيعمل كام iteration؟
كام allocation؟
كام query؟
وده الفرق بين:
Code شغال
وCode efficient.
وفيه misconception تاني
"المهم أحفظ LeetCode"
LeetCode مفيد؟
أكيد.
لكن المشكلة لما يتحول لحفظ.
واحد حافظ
Sliding Window
لكن أول ما المشكلة تتغير شوية
بيعطل.
ليه؟
لأنه حفظ pattern
مش طريقه التفكير.
المهم مش إنك تحفظ
Merge Sort
المهم إنك تفهم
ليه أصلا اتعملت؟
وليه أسرع من Bubble Sort؟
وإمتى استخدامها يبقى منطقي؟
وإيه تكلفة كل واحدة؟
لأن الهدف الحقيقي من DSA
مش إنك تبقى حافظ كل ال algorithms.
الهدف إن عقلك يبدأ يفكر صح.
يعني لما تشوف problem
تسأل نفسك
• حجم البيانات كام؟
• هل محتاج speed ولا memory أقل؟
• هل البحث متكرر؟
• هل البيانات مترابطة؟
• هل محتاج ordering؟
• هل القراءة أكتر ولا الكتابة؟
• هل فيه concurrent access؟
• هل structure ده scalable؟
وده بالضبط اللي بيعمل الفرق
بين junior و senior.
الـ junior غالبا يسأل:
"إزاي أخلي الكود يشتغل؟"
الـ senior يسأل:
"إزاي أخليه يشتغل بكفاءة لما يبقى عندي 10 مليون record؟"
والفرق هنا طريقه تفكير مش سنين خبره عالفاضي
وعشان كده
حتى لو نسيت تفاصيل algorithms
الطريقة اللي علمتك تفكر بيها
هتفضل معاك.
وده أهم بكتير من الحفظ.
وفي النهاية
الغرض من تعلم Data Structures & Algorithms
مش إنك تحفظ كل algorithm.
ولا إنك تستخدمهم كل يوم.
الغرض الحقيقي
إنك تتعلم إزاي تفكر ك engineer.
وده الي هيعيش معاك صدقني.
فيه developers كتير أول ما يسمعوا
Data Structures & Algorithms
يتعاملوا معاها كأنها مادة كليه حفظ.
يقعد يحفظ
Bubble Sort
Merge Sort
Quick Sort
DFS
BFS
Dijkstra
AVL
Red Black Tree
وبعدين يدخل interview
يحاول يفتكر:
"الـ time complexity كانت O(n log n) ولا O(n²)؟"
لكن الحقيقة.. الغرض الحقيقي من تعلم
Data Structures & Algorithms
مش إنك تحفظ algorithms.
ومش إنك تبقى ماشي حافظ 50 solution لـ LeetCode.
ومش إنك تستخدم كل الـ algorithms دي في شغلك.
لأن الحقيقة أغلب developers عمرهم ما هيكتبوا
Red Black Tree
بإيديهم في production.
وأغلب الناس مش هتستخدم:
Dijkstra
ولا Segment Tree
ولا Dynamic Programming
في شغلها اليومي
لكن ده مش معناه إن تعلمهم ملوش لازمة.
بالعكس
الفكرة الأساسية من DSA
إنها تغير طريقة تفكيرك كمبرمج.
مش مجرد تزود معلوماتك
لأن فيه فرق كبير اوي بين developer
"بيعرف يكتب code"
وdeveloper:
"بيعرف يحل problems"
لما تتعلم Data Structures صح
أنت بتتعلم:
• إزاي تقسّم المشكلة
• إزاي تفكر في trade-offs
• إزاي تختار structure مناسب
• إزاي تحسب تكلفة الحل
• إزاي تتوقع bottlenecks
• إزاي تكتب code scalable
• إزاي تفرق بين solution شغال و solution محترم
ممكن developer يعمل feature شغالة 100%.
لكن يستخدم
List
في مكان المفروض فيه
HashSet
فالعملية اللي كانت المفروض تبقى:
O(1)
بقت:
O(n)
ومع data قليلة.. مش هتحس
لكن أول ما السيستم يكبر.. تبدأ تسأل الدنيا بقت بطيئه ليه.
وده سبب إن ناس كتير تقول:
"السيستم كان سريع زمان"
لأن الـ complexity الحقيقية
بتظهر مع الـ scale.
لو عندك مليون user
وعايز تتأكد هل email موجود ولا لا.
ممكن تعمل:
for loop
وتلف على كل users.
وده شغال.
لكن complexity تبقى:
O(n)
لكن لو استخدمت
HashSet
العملية غالبا تبقى
O(1)
يعني الفرق مش
syntax
الفرق طريقة تفكير.
كمان DSA بتعلمك إن كل solution له تكلفة.
ممكن تزود السرعة
لكن تستهلك memory أكتر.
وممكن تقلل memory
لكن الحسابات تبقى أبطأ.
ودي اسمها
Trade-offs
ودي من أهم الحاجات في الـ engineering عموما.
مفيش solution هو الأفضل.
كل قرار له ثمن.. ثمن كبير.
حتى قواعد البيانات نفسها
مبنية على DSA.
Indexes
B-Trees
Hashing
Caching
Graphs
حتى Redis
حتى Git
حتى Google Search
كلهم قائمين على أفكار DSA.
وفي misconception مشهور جدا:
"أنا ك frontend or backend Developer
مش محتاج Algorithms"
وده غلط جدا
أنت يمكن مش هتكتب
QuickSort
لكن يوميا بتتعامل مع
• pagination
• searching
• caching
• indexing
• queues
• rate limiting
• concurrency
• memory usage
• query optimization
وكل دي مبنية على نفس طريقة التفكير.
حتى LINQ نفسها.
ناس كتير تكتب:
.Where(...).ToList().Where(...).ToList()
من غير ما تفكر
هو بيعمل كام iteration؟
كام allocation؟
كام query؟
وده الفرق بين:
Code شغال
وCode efficient.
وفيه misconception تاني
"المهم أحفظ LeetCode"
LeetCode مفيد؟
أكيد.
لكن المشكلة لما يتحول لحفظ.
واحد حافظ
Sliding Window
لكن أول ما المشكلة تتغير شوية
بيعطل.
ليه؟
لأنه حفظ pattern
مش طريقه التفكير.
المهم مش إنك تحفظ
Merge Sort
المهم إنك تفهم
ليه أصلا اتعملت؟
وليه أسرع من Bubble Sort؟
وإمتى استخدامها يبقى منطقي؟
وإيه تكلفة كل واحدة؟
لأن الهدف الحقيقي من DSA
مش إنك تبقى حافظ كل ال algorithms.
الهدف إن عقلك يبدأ يفكر صح.
يعني لما تشوف problem
تسأل نفسك
• حجم البيانات كام؟
• هل محتاج speed ولا memory أقل؟
• هل البحث متكرر؟
• هل البيانات مترابطة؟
• هل محتاج ordering؟
• هل القراءة أكتر ولا الكتابة؟
• هل فيه concurrent access؟
• هل structure ده scalable؟
وده بالضبط اللي بيعمل الفرق
بين junior و senior.
الـ junior غالبا يسأل:
"إزاي أخلي الكود يشتغل؟"
الـ senior يسأل:
"إزاي أخليه يشتغل بكفاءة لما يبقى عندي 10 مليون record؟"
والفرق هنا طريقه تفكير مش سنين خبره عالفاضي
وعشان كده
حتى لو نسيت تفاصيل algorithms
الطريقة اللي علمتك تفكر بيها
هتفضل معاك.
وده أهم بكتير من الحفظ.
وفي النهاية
الغرض من تعلم Data Structures & Algorithms
مش إنك تحفظ كل algorithm.
ولا إنك تستخدمهم كل يوم.
الغرض الحقيقي
إنك تتعلم إزاي تفكر ك engineer.
وده الي هيعيش معاك صدقني.
❤1
أنصح كل شاب أن يختار فرعاً دقيقاً من فروع العلم، فيتخصص فيه حتى يبلغ مرتبة الإتقان، ويغدو مرجعاً وحجة فيه.
إنه بذلك يملأ وقته بضياء المعرفة، ويتخلص من ضغط الفراغ، وينمي قدرته على الإفادة والعطاء، ويسهم في البناء الثقافي والإنجاز الحضاري، حيث تصنع التخصصات الصغيرة التحولات الكبرى.
هذه الأمر يحتاج فقط إلى التركيز على ما يتخصص فيه المرء بالقراءة والتفكير كل يوم ثلاث ساعات مدة ثلاث سنوات.
النتائج مدهشة للغاية.
د. عبد الكريم بكار
إنه بذلك يملأ وقته بضياء المعرفة، ويتخلص من ضغط الفراغ، وينمي قدرته على الإفادة والعطاء، ويسهم في البناء الثقافي والإنجاز الحضاري، حيث تصنع التخصصات الصغيرة التحولات الكبرى.
هذه الأمر يحتاج فقط إلى التركيز على ما يتخصص فيه المرء بالقراءة والتفكير كل يوم ثلاث ساعات مدة ثلاث سنوات.
النتائج مدهشة للغاية.
د. عبد الكريم بكار
💯1
أهم مقررات التخصص؟
ستتعلمها… لكن غالبًا بشكل سطحي جدًا
يدخل الطالب تخصص تقنية المعلومات أو علوم الحاسوب وهو يتخيل أنه بعد أربع سنوات سيخرج:
مهندس برمجيات حقيقي
خبير شبكات
محترف خوارزميات
فاهم عميق للذكاء الاصطناعي
قادر على بناء أنظمة ضخمة
ثم يكتشف شيئًا صادمًا…
أن معظم “أهم مقررات التخصص” تم تدريسها له بطريقة تكفي فقط:
للنجاح في الاختبار… لا لبناء الخبرة.
المشكلة ليست في أسماء المقررات… بل في عمقها
هياكل البيانات… الخوارزميات… الشبكات… أنظمة التشغيل… الذكاء الاصطناعي…
أسماء ضخمة جدًا.
لكن الواقع في كثير من الجامعات:
محاضرة سريعة
ملخص PDF
دكتور مستعجل
اختبار نظري
مشروع شكلي
ثم انتقال مباشر للمقرر التالي
والنتيجة؟
طالب “مرّ” على أخطر علوم الحاسوب… دون أن يعيشها فعليًا.
هياكل البيانات ليست Stack وQueue فقط
الجامعة غالبًا تجعل الطالب يحفظ:
Stack
Queue
Linked List
Tree
Graph
ثم يدخل الاختبار:
“اذكر التعريف”
“ما الفرق بين كذا وكذا”
“احسب التعقيد الزمني”
وينتهي الفصل.
لكن الحقيقة؟
هياكل البيانات ليست مادة للحفظ أصلًا.
إنها:
طريقة تفكير كاملة.
هي العلم الذي يحدد:
كيف يُبنى محرك البحث
كيف تعمل أنظمة التواصل
كيف تُدار قواعد البيانات
كيف تُخزن البيانات في الأنظمة العملاقة
لماذا تطبيق سريع وآخر بطيء
كيف يفكر المبرمج المحترف أصلًا
لكن الطالب يخرج غالبًا… دون أن يبني مشروعًا حقيقيًا يستخدم هذه المفاهيم بعمق.
الخوارزميات ليست مادة جامعية… بل عقلية
في الجامعة:
Bubble Sort
Merge Sort
Binary Search
Big O
ثم اختبار.
لكن في العالم الحقيقي: الخوارزميات هي الفرق بين:
تطبيق ينهار عند 1000 مستخدم
ونظام يتحمل ملايين العمليات
هي الفرق بين:
مبرمج يكتب كودًا يعمل
ومهندس يفهم لماذا يعمل وكيف يتحسن
الخوارزميات ليست “شرح دكتور”. الخوارزميات تدريب عقلي طويل جدًا.
تحتاج:
مئات المسائل
ساعات تفكير
فشل متكرر
تحليل
ممارسة مستمرة
ولهذا كثير من الطلاب ينهون مقرر الخوارزميات… ثم يعجزون عن حل مشكلة بسيطة في مقابلة عمل.
ليس لأنهم أغبياء… بل لأنهم درسوا “العنوان” فقط.
الشبكات تُدرّس نظريًا… بينما العالم يعمل عمليًا
يدرس الطالب:
طبقات OSI
TCP/IP
Routing
Switching
لكن: كم طالب فعليًا:
أنشأ Server؟
تعامل مع Linux؟
حلل Packet حقيقية؟
فهم كيف يمر الطلب من هاتفك إلى سيرفر في قارة أخرى؟
بنى شبكة فعلية؟
تعامل مع مشاكل latency وsecurity؟
المشكلة أن التعليم في كثير من الأحيان:
يشرح الإنترنت… دون أن يجعل الطالب يلمس الإنترنت الحقيقي
يفهم ايش معنى انترنت ؟ من وين جاء ؟ ايش اصله ؟
الجامعة تعطيك “عرضًا تشويقيًا” للتخصص
وهذه من أكبر الحقائق التي لا تُقال للطلاب بوضوح.
الجامعة غالبًا لا تصنع خبيرًا.
بل تعطيك:
مقدمة
مفاهيم أساسية
خريطة عامة
مدخل لكل مجال
لكن العمق الحقيقي؟ يبدأ عندما تدرس بنفسك.
ولهذا ترى: شخصًا تعلم ذاتيًا بتركيز عميق لمدة سنتين… أقوى من خريج قضى أربع سنوات متنقلًا بين مواد كثيرة دون تعمق.
لماذا يحدث هذا؟
لأن النظام التعليمي في كثير من الدول مبني على:
اجتياز المقررات
ضغط الساعات
كثرة المواد
النجاح الأكاديمي
الحفظ المؤقت
الاختبارات الورقية
وليس على:
بناء الخبرة
المشاريع الحقيقية
الإتقان
سوق العمل
التفكير الهندسي
الممارسة الطويلة
الطالب يدرس: 6 أو 7 مواد في الفصل.
يعني عقله موزع بين:
شبكات
تحليل عددي
قواعد بيانات
ذكاء اصطناعي
برمجة
إدارة
رياضيات
ثم يُطلب منه أن “يتقن” كل شيء.
وهذا شبه مستحيل.
أخطر وهم يعيشه الطالب
هو الاعتقاد أن:
“إنهاء المقرر = إتقان المجال”
وهذا غير صحيح إطلاقًا.
إنهاء مقرر الخوارزميات لا يعني أنك أصبحت قويًا بالخوارزميات.
وإنهاء مقرر الشبكات لا يعني أنك أصبحت مهندس شبكات.
وإنهاء مقرر الذكاء الاصطناعي لا يعني أنك أصبحت باحث AI.
أنت فقط:
تعرفت على الباب.
أما الدخول الحقيقي… فيحتاج سنوات أخرى من التعلم والممارسة.
ولهذا يتخرج كثير من الطلاب وهم ضائعون
يحمل شهادة… لكن لا يعرف:
ماذا يتخصص
ماذا يبني
ماذا يتقن
أين قوته
كيف يدخل السوق
لأنه قضى سنوات طويلة: يتنقل بين “عناوين كبيرة” دون غوص عميق في أي مجال.
التعليم الحقيقي يبدأ عندما تتحمل مسؤولية نفسك
حين تفهم أن الجامعة وحدها لا تكفي… يتغير كل شيء.
تبدأ:
بناء المشاريع
قراءة التوثيق
حل المشاكل
البحث بنفسك
الفشل والتجربة
التخصص الحقيقي
هنا فقط… تبدأ الرحلة الفعلية.
أما قبل ذلك، فأنت غالبًا:
تدرس علومًا عظيمة… بعمق لا يكفي لصناعة خبير حقيقي.
م. طارق العُمري
ستتعلمها… لكن غالبًا بشكل سطحي جدًا
يدخل الطالب تخصص تقنية المعلومات أو علوم الحاسوب وهو يتخيل أنه بعد أربع سنوات سيخرج:
مهندس برمجيات حقيقي
خبير شبكات
محترف خوارزميات
فاهم عميق للذكاء الاصطناعي
قادر على بناء أنظمة ضخمة
ثم يكتشف شيئًا صادمًا…
أن معظم “أهم مقررات التخصص” تم تدريسها له بطريقة تكفي فقط:
للنجاح في الاختبار… لا لبناء الخبرة.
المشكلة ليست في أسماء المقررات… بل في عمقها
هياكل البيانات… الخوارزميات… الشبكات… أنظمة التشغيل… الذكاء الاصطناعي…
أسماء ضخمة جدًا.
لكن الواقع في كثير من الجامعات:
محاضرة سريعة
ملخص PDF
دكتور مستعجل
اختبار نظري
مشروع شكلي
ثم انتقال مباشر للمقرر التالي
والنتيجة؟
طالب “مرّ” على أخطر علوم الحاسوب… دون أن يعيشها فعليًا.
هياكل البيانات ليست Stack وQueue فقط
الجامعة غالبًا تجعل الطالب يحفظ:
Stack
Queue
Linked List
Tree
Graph
ثم يدخل الاختبار:
“اذكر التعريف”
“ما الفرق بين كذا وكذا”
“احسب التعقيد الزمني”
وينتهي الفصل.
لكن الحقيقة؟
هياكل البيانات ليست مادة للحفظ أصلًا.
إنها:
طريقة تفكير كاملة.
هي العلم الذي يحدد:
كيف يُبنى محرك البحث
كيف تعمل أنظمة التواصل
كيف تُدار قواعد البيانات
كيف تُخزن البيانات في الأنظمة العملاقة
لماذا تطبيق سريع وآخر بطيء
كيف يفكر المبرمج المحترف أصلًا
لكن الطالب يخرج غالبًا… دون أن يبني مشروعًا حقيقيًا يستخدم هذه المفاهيم بعمق.
الخوارزميات ليست مادة جامعية… بل عقلية
في الجامعة:
Bubble Sort
Merge Sort
Binary Search
Big O
ثم اختبار.
لكن في العالم الحقيقي: الخوارزميات هي الفرق بين:
تطبيق ينهار عند 1000 مستخدم
ونظام يتحمل ملايين العمليات
هي الفرق بين:
مبرمج يكتب كودًا يعمل
ومهندس يفهم لماذا يعمل وكيف يتحسن
الخوارزميات ليست “شرح دكتور”. الخوارزميات تدريب عقلي طويل جدًا.
تحتاج:
مئات المسائل
ساعات تفكير
فشل متكرر
تحليل
ممارسة مستمرة
ولهذا كثير من الطلاب ينهون مقرر الخوارزميات… ثم يعجزون عن حل مشكلة بسيطة في مقابلة عمل.
ليس لأنهم أغبياء… بل لأنهم درسوا “العنوان” فقط.
الشبكات تُدرّس نظريًا… بينما العالم يعمل عمليًا
يدرس الطالب:
طبقات OSI
TCP/IP
Routing
Switching
لكن: كم طالب فعليًا:
أنشأ Server؟
تعامل مع Linux؟
حلل Packet حقيقية؟
فهم كيف يمر الطلب من هاتفك إلى سيرفر في قارة أخرى؟
بنى شبكة فعلية؟
تعامل مع مشاكل latency وsecurity؟
المشكلة أن التعليم في كثير من الأحيان:
يشرح الإنترنت… دون أن يجعل الطالب يلمس الإنترنت الحقيقي
يفهم ايش معنى انترنت ؟ من وين جاء ؟ ايش اصله ؟
الجامعة تعطيك “عرضًا تشويقيًا” للتخصص
وهذه من أكبر الحقائق التي لا تُقال للطلاب بوضوح.
الجامعة غالبًا لا تصنع خبيرًا.
بل تعطيك:
مقدمة
مفاهيم أساسية
خريطة عامة
مدخل لكل مجال
لكن العمق الحقيقي؟ يبدأ عندما تدرس بنفسك.
ولهذا ترى: شخصًا تعلم ذاتيًا بتركيز عميق لمدة سنتين… أقوى من خريج قضى أربع سنوات متنقلًا بين مواد كثيرة دون تعمق.
لماذا يحدث هذا؟
لأن النظام التعليمي في كثير من الدول مبني على:
اجتياز المقررات
ضغط الساعات
كثرة المواد
النجاح الأكاديمي
الحفظ المؤقت
الاختبارات الورقية
وليس على:
بناء الخبرة
المشاريع الحقيقية
الإتقان
سوق العمل
التفكير الهندسي
الممارسة الطويلة
الطالب يدرس: 6 أو 7 مواد في الفصل.
يعني عقله موزع بين:
شبكات
تحليل عددي
قواعد بيانات
ذكاء اصطناعي
برمجة
إدارة
رياضيات
ثم يُطلب منه أن “يتقن” كل شيء.
وهذا شبه مستحيل.
أخطر وهم يعيشه الطالب
هو الاعتقاد أن:
“إنهاء المقرر = إتقان المجال”
وهذا غير صحيح إطلاقًا.
إنهاء مقرر الخوارزميات لا يعني أنك أصبحت قويًا بالخوارزميات.
وإنهاء مقرر الشبكات لا يعني أنك أصبحت مهندس شبكات.
وإنهاء مقرر الذكاء الاصطناعي لا يعني أنك أصبحت باحث AI.
أنت فقط:
تعرفت على الباب.
أما الدخول الحقيقي… فيحتاج سنوات أخرى من التعلم والممارسة.
ولهذا يتخرج كثير من الطلاب وهم ضائعون
يحمل شهادة… لكن لا يعرف:
ماذا يتخصص
ماذا يبني
ماذا يتقن
أين قوته
كيف يدخل السوق
لأنه قضى سنوات طويلة: يتنقل بين “عناوين كبيرة” دون غوص عميق في أي مجال.
التعليم الحقيقي يبدأ عندما تتحمل مسؤولية نفسك
حين تفهم أن الجامعة وحدها لا تكفي… يتغير كل شيء.
تبدأ:
بناء المشاريع
قراءة التوثيق
حل المشاكل
البحث بنفسك
الفشل والتجربة
التخصص الحقيقي
هنا فقط… تبدأ الرحلة الفعلية.
أما قبل ذلك، فأنت غالبًا:
تدرس علومًا عظيمة… بعمق لا يكفي لصناعة خبير حقيقي.
م. طارق العُمري
👍6
أولًا يا صديقي المهندس
الداخل إلى سوق العمل،
او الساعي للدخول الى سوق العمل
لازم تعرف حقيقة مهمة:
الرزق بيد الله،
ليس بقدرات الذكاء الاصطناعي ولا أي شخص في هذا العالم قادر أن ينقص فلسًا واحدًا مما كُتب لك.
عليك أن تبذل السبب وتسعى، أما النتيجة فهي على الله، فاطمئن وأرح قلبك.
وانظر حولك، كثير ممن كانوا يعتمدون على وظائفهم فقدوا أعمالهم لأن هذه سنّة الحياة وما كُتب لهم، فوجد بعضهم نفسه يعود إلى نقطة الصفر، لكنه لم يستسلم ولم ييأس، بل عاد يتعلم ويواكب التطور ويأخذ بالأسباب من جديد.
لذلك يا عزيزي الشاب، اعمل ما عليك، وابذل جهدك، وتعلم باستمرار، واخرج من منطقة الراحة. راجع نفسك دائمًا واسأل:
أين يضيع وقتي؟
وما الذي يؤخر تقدمي؟
اجتهد اليوم، ليس فقط من أجل النجاح، بل لتعيش بقية حياتك مرتاح الضمير، وأنت تعلم أنك لم تقصر في حق نفسك وسعيت بكل ما تستطيع.
وإذ ناديت إذ أسمعت حياً
ولكن لا حياة لمن تنادي
ليت والله وأنا حصلت
من ينصحني ايام الدراسة.
💔🔥
#إنتهى
الداخل إلى سوق العمل،
او الساعي للدخول الى سوق العمل
لازم تعرف حقيقة مهمة:
الرزق بيد الله،
ليس بقدرات الذكاء الاصطناعي ولا أي شخص في هذا العالم قادر أن ينقص فلسًا واحدًا مما كُتب لك.
عليك أن تبذل السبب وتسعى، أما النتيجة فهي على الله، فاطمئن وأرح قلبك.
وانظر حولك، كثير ممن كانوا يعتمدون على وظائفهم فقدوا أعمالهم لأن هذه سنّة الحياة وما كُتب لهم، فوجد بعضهم نفسه يعود إلى نقطة الصفر، لكنه لم يستسلم ولم ييأس، بل عاد يتعلم ويواكب التطور ويأخذ بالأسباب من جديد.
لذلك يا عزيزي الشاب، اعمل ما عليك، وابذل جهدك، وتعلم باستمرار، واخرج من منطقة الراحة. راجع نفسك دائمًا واسأل:
أين يضيع وقتي؟
وما الذي يؤخر تقدمي؟
اجتهد اليوم، ليس فقط من أجل النجاح، بل لتعيش بقية حياتك مرتاح الضمير، وأنت تعلم أنك لم تقصر في حق نفسك وسعيت بكل ما تستطيع.
وإذ ناديت إذ أسمعت حياً
ولكن لا حياة لمن تنادي
ليت والله وأنا حصلت
من ينصحني ايام الدراسة.
💔🔥
#إنتهى
👍3💯1
لا عذر لنا في عصر التكنولوجيا والذكاء الاصطناعي
في هذا العصر، لم تعد المشكلة في قلة المصادر…
بل أصبحت المشكلة الحقيقية في قلة الرغبة.
اليوم، العالم كله بين يديك.
جامعة كاملة داخل هاتفك،
ومكتبة لا تنتهي داخل شاشة صغيرة تحملها في جيبك.
تريد تعلم البرمجة؟
ستجد آلاف الدورات المجانية.
تريد تعلم التصميم؟
ستجد شروحات خطوة بخطوة.
تريد تعلم الذكاء الاصطناعي، الأمن السيبراني، التجارة، اللغات، التسويق، أي تخصص أو حتى بناء شركة كاملة؟
كل شيء أصبح متاحًا.
بل وأكثر من ذلك…
ظهر الذكاء الاصطناعي ليختصر عليك سنوات من البحث والتشتت،
أصبح يشرح لك، يصحح أخطاءك، يبني معك، ويرشدك للطريق.
لهذا لم يعد مقنعًا
أن يقول شخص:
“انا لا أعرف من أين أبدأ”
أو
“لا أجد من يعلمني”
لأن الحقيقة المؤلمة أن الفرصة موجودة…
لكن الإرادة غائبة.
زمان ، كان الوصول للمعلومة صعبًا،
وكان الإنسان يسافر ويبحث ويتعب حتى يتعلم شيئًا بسيطًا.
أما اليوم؟
أنت تعيش في أقوى عصر معرفي في تاريخ البشرية،
ومع ذلك ما زال البعض ينتظر من يدفعه،
ومن يشجعه،
ومن يبني له مستقبله بيده.
المشكلة ليست في الإنترنت.
ولا في التدريس.
ولا في الظروف دائمًا.
المشكلة أحيانًا أننا أقنعنا أنفسنا بالعجز حتى صدقناه.
حين تقول: “لا أستطيع أن أتعلم”
فأنت في الحقيقة تظلم نفسك ظلمًا عظيمًا،
لأنك تتجاهل كمية الأدوات والفرص التي بين يديك الآن.
أنت لا تحتاج أن تكون عبقريًا.
ولا تحتاج أن تملك مالًا كثيرًا.
ولا تحتاج أن تنتظر الوقت المثالي.
كل ما تحتاجه فعلًا: أن تبدأ.
ابدأ خطوة بسيطة…
لكن ابدأ.
تعلم ساعة يوميًا، ومع الوقت بتزيد
اقرأ، جرّب، اخطئ، أعد المحاولة،
ومع الوقت ستتفاجأ بالشخص الذي أصبحت عليه.
في عصر التكنولوجيا،
أصبح الفرق بين الناجح والفاشل ليس الذكاء…
بل من قرر أن يتحرك، ومن بقي يراقب فقط.
لا تحمل نفسك ظلمًا كبيرًا بقولك:
“لا أعرف من أين أتعلم"
لأن الحقيقة أن أبواب التعلم لم تكن يومًا مفتوحة
كما هي اليوم مفتوحة على مصراعيها.
م.طارق العمري
في هذا العصر، لم تعد المشكلة في قلة المصادر…
بل أصبحت المشكلة الحقيقية في قلة الرغبة.
اليوم، العالم كله بين يديك.
جامعة كاملة داخل هاتفك،
ومكتبة لا تنتهي داخل شاشة صغيرة تحملها في جيبك.
تريد تعلم البرمجة؟
ستجد آلاف الدورات المجانية.
تريد تعلم التصميم؟
ستجد شروحات خطوة بخطوة.
تريد تعلم الذكاء الاصطناعي، الأمن السيبراني، التجارة، اللغات، التسويق، أي تخصص أو حتى بناء شركة كاملة؟
كل شيء أصبح متاحًا.
بل وأكثر من ذلك…
ظهر الذكاء الاصطناعي ليختصر عليك سنوات من البحث والتشتت،
أصبح يشرح لك، يصحح أخطاءك، يبني معك، ويرشدك للطريق.
لهذا لم يعد مقنعًا
أن يقول شخص:
“انا لا أعرف من أين أبدأ”
أو
“لا أجد من يعلمني”
لأن الحقيقة المؤلمة أن الفرصة موجودة…
لكن الإرادة غائبة.
زمان ، كان الوصول للمعلومة صعبًا،
وكان الإنسان يسافر ويبحث ويتعب حتى يتعلم شيئًا بسيطًا.
أما اليوم؟
أنت تعيش في أقوى عصر معرفي في تاريخ البشرية،
ومع ذلك ما زال البعض ينتظر من يدفعه،
ومن يشجعه،
ومن يبني له مستقبله بيده.
المشكلة ليست في الإنترنت.
ولا في التدريس.
ولا في الظروف دائمًا.
المشكلة أحيانًا أننا أقنعنا أنفسنا بالعجز حتى صدقناه.
حين تقول: “لا أستطيع أن أتعلم”
فأنت في الحقيقة تظلم نفسك ظلمًا عظيمًا،
لأنك تتجاهل كمية الأدوات والفرص التي بين يديك الآن.
أنت لا تحتاج أن تكون عبقريًا.
ولا تحتاج أن تملك مالًا كثيرًا.
ولا تحتاج أن تنتظر الوقت المثالي.
كل ما تحتاجه فعلًا: أن تبدأ.
ابدأ خطوة بسيطة…
لكن ابدأ.
تعلم ساعة يوميًا، ومع الوقت بتزيد
اقرأ، جرّب، اخطئ، أعد المحاولة،
ومع الوقت ستتفاجأ بالشخص الذي أصبحت عليه.
في عصر التكنولوجيا،
أصبح الفرق بين الناجح والفاشل ليس الذكاء…
بل من قرر أن يتحرك، ومن بقي يراقب فقط.
لا تحمل نفسك ظلمًا كبيرًا بقولك:
“لا أعرف من أين أتعلم"
لأن الحقيقة أن أبواب التعلم لم تكن يومًا مفتوحة
كما هي اليوم مفتوحة على مصراعيها.
م.طارق العمري
❤1💯1
ما هي TestSprite؟
TestSprite
هي أداة ذكاء اصطناعي متخصصة في اختبار البرمجيات بشكل تلقائي
(AI Software Testing).
فكرتها ببساطة
بدل ما المبرمج يكتب اختبارات (Test Cases) يدويًا، الأداة تقوم بـ:
توليد اختبارات تلقائيًا للتطبيقات
تشغيل الاختبارات على الموقع أو الـ API
اكتشاف الأخطاء (Bugs)
إصلاح أو اقتراح حلول لبعض المشاكل
إنشاء تقارير نتائج الاختبار
ماذا تختبر؟
واجهات المواقع (Frontend UI)
واجهات البرمجة (API)
تدفقات المستخدم مثل تسجيل الدخول والدفع والتنقل داخل الموقع
كيف تعمل؟
1. تعطيها رابط موقعك أو مشروعك
2. تقوم بفحص التطبيق تلقائيًا
3. تبني “خطة اختبار”
4. تنفذ الاختبارات في بيئة سحابية
5. تعطيك تقرير بالأخطاء والنتائج
أهم ميزتها
تعتبر كأنها:
“مُختبِر برمجيات ذكي يعمل بدل فريق QA صغير”
لمن تفيد؟
المبرمجين
فرق تطوير المواقع والتطبيقات
المشاريع التي تستخدم الذكاء الاصطناعي أو تحتاج اختبار سريع
كيف تستخدمها أو “تحملها”؟
اتبع الخطوات:
افتح المتصفح (Chrome أو أي متصفح)
ابحث عن: TestSprite AI
ادخل إلى الموقع الرسمي
قم بإنشاء حساب (Sign Up)
بعد الدخول ستستخدمها مباشرة بدون تثبيت
هل لها تحميل؟
لا تحتاج تحميل على الكمبيوتر
تعمل أونلاين (مثل Google Drive أو ChatGPT)
أحيانًا قد يكون لها إضافات (Extensions) لكن هذا يعتمد على الإصدار
كيف تبدأ استخدامها؟
بعد التسجيل ستجد:
رفع مشروعك أو رابط الموقع
اختيار نوع الاختبار (UI / API)
تشغيل الاختبارات تلقائيًا
مشاهدة تقرير الأخطاء
م.طارق العمري
TestSprite
هي أداة ذكاء اصطناعي متخصصة في اختبار البرمجيات بشكل تلقائي
(AI Software Testing).
فكرتها ببساطة
بدل ما المبرمج يكتب اختبارات (Test Cases) يدويًا، الأداة تقوم بـ:
توليد اختبارات تلقائيًا للتطبيقات
تشغيل الاختبارات على الموقع أو الـ API
اكتشاف الأخطاء (Bugs)
إصلاح أو اقتراح حلول لبعض المشاكل
إنشاء تقارير نتائج الاختبار
ماذا تختبر؟
واجهات المواقع (Frontend UI)
واجهات البرمجة (API)
تدفقات المستخدم مثل تسجيل الدخول والدفع والتنقل داخل الموقع
كيف تعمل؟
1. تعطيها رابط موقعك أو مشروعك
2. تقوم بفحص التطبيق تلقائيًا
3. تبني “خطة اختبار”
4. تنفذ الاختبارات في بيئة سحابية
5. تعطيك تقرير بالأخطاء والنتائج
أهم ميزتها
تعتبر كأنها:
“مُختبِر برمجيات ذكي يعمل بدل فريق QA صغير”
لمن تفيد؟
المبرمجين
فرق تطوير المواقع والتطبيقات
المشاريع التي تستخدم الذكاء الاصطناعي أو تحتاج اختبار سريع
كيف تستخدمها أو “تحملها”؟
اتبع الخطوات:
افتح المتصفح (Chrome أو أي متصفح)
ابحث عن: TestSprite AI
ادخل إلى الموقع الرسمي
قم بإنشاء حساب (Sign Up)
بعد الدخول ستستخدمها مباشرة بدون تثبيت
هل لها تحميل؟
لا تحتاج تحميل على الكمبيوتر
تعمل أونلاين (مثل Google Drive أو ChatGPT)
أحيانًا قد يكون لها إضافات (Extensions) لكن هذا يعتمد على الإصدار
كيف تبدأ استخدامها؟
بعد التسجيل ستجد:
رفع مشروعك أو رابط الموقع
اختيار نوع الاختبار (UI / API)
تشغيل الاختبارات تلقائيًا
مشاهدة تقرير الأخطاء
م.طارق العمري
👍3
محرك V8 : الثورة التي جعلت JavaScript لغة عملاقة
في الماضي كانت لغة JavaScript تُعامل كلغة بسيطة مخصصة فقط لإضافة بعض التفاعلات داخل صفحات الويب.
أزرار تتحرك، قوائم منسدلة، وبعض التأثيرات البصرية البسيطة.
لم يكن أحد يتخيل أن هذه اللغة ستصبح يومًا من أقوى لغات البرمجة في العالم، وتُستخدم في:
تطوير مواقع عملاقة
بناء تطبيقات سطح المكتب
تشغيل الخوادم والسيرفرات
تطوير تطبيقات الهواتف
الذكاء الاصطناعي
الأنظمة اللحظية Real-time Systems
لكن السؤال الحقيقي:
ما الذي غيّر كل شيء؟
الإجابة كانت:
V8
محرك جافا سكريبت الذي طورته Google وأحدث ثورة حقيقية في عالم البرمجة.
ما هو محرك V8 ؟
محرك V8 هو البرنامج المسؤول عن تشغيل وتنفيذ أكواد JavaScript.
عندما يكتب المبرمج:
فإن المعالج لا يفهم هذا الكود مباشرة.
المعالج يفهم فقط:
Machine Code
التعليمات الثنائية Binary Instructions
هنا يأتي دور V8.
يقوم V8 بـ:
قراءة الكود
تحليله وفهمه
تحويله إلى تعليمات منخفضة المستوى
تنفيذ الكود بسرعة عالية جدًا
أي أنه يعمل كمترجم ذكي بين لغة JavaScript والمعالج.
لماذا يعتبر V8 مهمًا جدًا ؟
قبل ظهور V8 كانت JavaScript بطيئة نسبيًا.
كانت المتصفحات تقوم بتفسير الكود سطرًا بسطر بطريقة تقليدية، مما جعل الأداء محدودًا.
لكن عندما أطلقت Google محرك V8 عام 2008 تغيّر الوضع بالكامل.
أصبح تنفيذ JavaScript أسرع بشكل ضخم، وبدأ المطورون ببناء تطبيقات ويب معقدة وضخمة لم تكن ممكنة سابقًا.
هذه السرعة هي التي فتحت الباب لظهور تقنيات مثل:
تطبيقات Single Page Applications
تطبيقات الوقت الحقيقي
أنظمة الدردشة المباشرة
الألعاب داخل المتصفح
وأخيرًا ظهور Node.js
لماذا سُمّي V8 ؟
الاسم مستوحى من محركات السيارات القوية V8 المعروفة بسرعتها وأدائها العالي.
وكان الهدف من الاسم إيصال فكرة أن هذا المحرك سريع وقوي جدًا.
كيف يعمل محرك V8 داخليًا ؟
لفهم عبقرية V8 يجب فهم الرحلة التي يمر بها الكود داخل المحرك.
المرحلة الأولى : Parsing
عندما يصل كود JavaScript إلى V8 فإنه يبدأ بتحليل الكود.
مثال:
يقوم المحرك بفهم:
المتغيرات
العمليات الحسابية
الدوال
البنية العامة للكود
ثم يقوم ببناء شجرة منطقية تسمى:
AST
Abstract Syntax Tree
وهي تمثل الكود على شكل هيكل منطقي يسهل التعامل معه.
المرحلة الثانية : توليد الـ Bytecode
بعد بناء الـ AST يقوم V8 بتحويل الكود إلى:
Bytecode
وهو تمثيل وسيط للكود، أسرع في التنفيذ من الكود الخام.
هذه المرحلة تتم عبر مفسر داخلي يسمى:
Ignition
المرحلة الثالثة : التحويل إلى Machine Code
هنا تكمن القوة الحقيقية.
بدل أن يفسر المحرك الكود في كل مرة، فإنه يراقب الأجزاء التي تتكرر كثيرًا.
مثل:
إذا اكتشف V8 أن هذا الجزء يُستخدم باستمرار، فإنه يقوم بتحويله مباشرة إلى Machine Code.
هذه التقنية تسمى:
JIT Compilation
Just In Time Compilation
أي “الترجمة أثناء التشغيل”.
لماذا تقنية JIT مذهلة ؟
لأنها تجمع بين ميزتين:
التفسير Interpreter
الترجمة Compiler
مرونة
سرعة
تشغيل مباشر
أداء عالي
V8 يستخدم الاثنين معًا لتحقيق أعلى أداء ممكن.
TurboFan : العقل التحسيني لمحرك V8
داخل V8 يوجد مترجم وتحسين ذكي جدًا يسمى:
TurboFan
وظيفته:
تحسين الأكواد المتكررة
إزالة العمليات غير الضرورية
تسريع تنفيذ الدوال
تحسين استهلاك الذاكرة
لذلك نجد أن JavaScript الحديثة أصبحت قريبة جدًا من لغات الأداء العالي.
إدارة الذاكرة في V8
من أقوى ميزات JavaScript أن المبرمج لا يدير الذاكرة يدويًا.
إذا أنشأت كائنًا:
ثم توقف استخدامه، فإن V8 يقوم بحذف هذا الكائن من الذاكرة تلقائيًا.
هذه العملية تسمى:
Garbage Collection
ويقوم بها نظام داخلي يسمى:
Garbage Collector
أهمية Garbage Collector
بدونه ستحدث مشاكل خطيرة مثل:
امتلاء الذاكرة
بطء البرامج
انهيار التطبيقات
Memory Leaks
لذلك فإن إدارة الذاكرة الذكية أحد أسرار قوة V8.
العلاقة بين V8 و NodeJS
هنا تبدأ الثورة الحقيقية.
قبل Node.js كانت JavaScript تعمل داخل المتصفح فقط.
لكن المطور Ryan Dahl طرح فكرة عبقرية:
في الماضي كانت لغة JavaScript تُعامل كلغة بسيطة مخصصة فقط لإضافة بعض التفاعلات داخل صفحات الويب.
أزرار تتحرك، قوائم منسدلة، وبعض التأثيرات البصرية البسيطة.
لم يكن أحد يتخيل أن هذه اللغة ستصبح يومًا من أقوى لغات البرمجة في العالم، وتُستخدم في:
تطوير مواقع عملاقة
بناء تطبيقات سطح المكتب
تشغيل الخوادم والسيرفرات
تطوير تطبيقات الهواتف
الذكاء الاصطناعي
الأنظمة اللحظية Real-time Systems
لكن السؤال الحقيقي:
ما الذي غيّر كل شيء؟
الإجابة كانت:
V8
محرك جافا سكريبت الذي طورته Google وأحدث ثورة حقيقية في عالم البرمجة.
ما هو محرك V8 ؟
محرك V8 هو البرنامج المسؤول عن تشغيل وتنفيذ أكواد JavaScript.
عندما يكتب المبرمج:
console.log("Hello World");فإن المعالج لا يفهم هذا الكود مباشرة.
المعالج يفهم فقط:
Machine Code
التعليمات الثنائية Binary Instructions
هنا يأتي دور V8.
يقوم V8 بـ:
قراءة الكود
تحليله وفهمه
تحويله إلى تعليمات منخفضة المستوى
تنفيذ الكود بسرعة عالية جدًا
أي أنه يعمل كمترجم ذكي بين لغة JavaScript والمعالج.
لماذا يعتبر V8 مهمًا جدًا ؟
قبل ظهور V8 كانت JavaScript بطيئة نسبيًا.
كانت المتصفحات تقوم بتفسير الكود سطرًا بسطر بطريقة تقليدية، مما جعل الأداء محدودًا.
لكن عندما أطلقت Google محرك V8 عام 2008 تغيّر الوضع بالكامل.
أصبح تنفيذ JavaScript أسرع بشكل ضخم، وبدأ المطورون ببناء تطبيقات ويب معقدة وضخمة لم تكن ممكنة سابقًا.
هذه السرعة هي التي فتحت الباب لظهور تقنيات مثل:
تطبيقات Single Page Applications
تطبيقات الوقت الحقيقي
أنظمة الدردشة المباشرة
الألعاب داخل المتصفح
وأخيرًا ظهور Node.js
لماذا سُمّي V8 ؟
الاسم مستوحى من محركات السيارات القوية V8 المعروفة بسرعتها وأدائها العالي.
وكان الهدف من الاسم إيصال فكرة أن هذا المحرك سريع وقوي جدًا.
كيف يعمل محرك V8 داخليًا ؟
لفهم عبقرية V8 يجب فهم الرحلة التي يمر بها الكود داخل المحرك.
المرحلة الأولى : Parsing
عندما يصل كود JavaScript إلى V8 فإنه يبدأ بتحليل الكود.
مثال:
let x = 10 + 5;
يقوم المحرك بفهم:
المتغيرات
العمليات الحسابية
الدوال
البنية العامة للكود
ثم يقوم ببناء شجرة منطقية تسمى:
AST
Abstract Syntax Tree
وهي تمثل الكود على شكل هيكل منطقي يسهل التعامل معه.
المرحلة الثانية : توليد الـ Bytecode
بعد بناء الـ AST يقوم V8 بتحويل الكود إلى:
Bytecode
وهو تمثيل وسيط للكود، أسرع في التنفيذ من الكود الخام.
هذه المرحلة تتم عبر مفسر داخلي يسمى:
Ignition
المرحلة الثالثة : التحويل إلى Machine Code
هنا تكمن القوة الحقيقية.
بدل أن يفسر المحرك الكود في كل مرة، فإنه يراقب الأجزاء التي تتكرر كثيرًا.
مثل:
for(let i=0; i<1000000; i++){}إذا اكتشف V8 أن هذا الجزء يُستخدم باستمرار، فإنه يقوم بتحويله مباشرة إلى Machine Code.
هذه التقنية تسمى:
JIT Compilation
Just In Time Compilation
أي “الترجمة أثناء التشغيل”.
لماذا تقنية JIT مذهلة ؟
لأنها تجمع بين ميزتين:
التفسير Interpreter
الترجمة Compiler
مرونة
سرعة
تشغيل مباشر
أداء عالي
V8 يستخدم الاثنين معًا لتحقيق أعلى أداء ممكن.
TurboFan : العقل التحسيني لمحرك V8
داخل V8 يوجد مترجم وتحسين ذكي جدًا يسمى:
TurboFan
وظيفته:
تحسين الأكواد المتكررة
إزالة العمليات غير الضرورية
تسريع تنفيذ الدوال
تحسين استهلاك الذاكرة
لذلك نجد أن JavaScript الحديثة أصبحت قريبة جدًا من لغات الأداء العالي.
إدارة الذاكرة في V8
من أقوى ميزات JavaScript أن المبرمج لا يدير الذاكرة يدويًا.
إذا أنشأت كائنًا:
let user = {
name: "Ali"
};ثم توقف استخدامه، فإن V8 يقوم بحذف هذا الكائن من الذاكرة تلقائيًا.
هذه العملية تسمى:
Garbage Collection
ويقوم بها نظام داخلي يسمى:
Garbage Collector
أهمية Garbage Collector
بدونه ستحدث مشاكل خطيرة مثل:
امتلاء الذاكرة
بطء البرامج
انهيار التطبيقات
Memory Leaks
لذلك فإن إدارة الذاكرة الذكية أحد أسرار قوة V8.
العلاقة بين V8 و NodeJS
هنا تبدأ الثورة الحقيقية.
قبل Node.js كانت JavaScript تعمل داخل المتصفح فقط.
لكن المطور Ryan Dahl طرح فكرة عبقرية:
لماذا لا نستخدم محرك V8 خارج المتصفح لتشغيل JavaScript على السيرفر ؟
ومن هنا وُلد NodeJS.
ماذا أخذ NodeJS من V8 ؟
NodeJS يعتمد على V8 في:
تنفيذ JavaScript
تحويل الكود إلى Machine Code
تحسين الأداء
إدارة الذاكرة
لكن NodeJS أضاف أشياء أخرى مهمة مثل:
التعامل مع الملفات
إنشاء السيرفرات
الشبكات
قواعد البيانات
Event Loop
لماذا NodeJS سريع ؟
السبب يعود إلى عدة عوامل:
أولًا : قوة V8
V8 يوفر سرعة هائلة في تنفيذ JavaScript.
ثانيًا : Event Loop
يسمح بتنفيذ العمليات غير المتزامنة بدون تجميد التطبيق.
ثالثًا : Non-blocking I/O
يمكن للسيرفر استقبال آلاف الطلبات دون انتظار انتهاء كل عملية.
كيف غيّر V8 عالم البرمجة ؟
قبل V8:
JavaScript لغة متصفح فقط
بعد V8:
أصبحت لغة Backend
دخلت عالم التطبيقات الضخمة
أصبحت أساسًا لتطبيقات الهواتف
ظهرت بيئات مثل:
Electron
Deno
Bun
أين يُستخدم V8 اليوم ؟
يُستخدم في:
Google Chrome
Node.js
Electron
Deno
والعديد من الأنظمة الحديثة.
هل V8 مكتوب بلغة JavaScript ؟
لا.
محرك V8 مكتوب أساسًا بلغة:
C++
وبعض الأكواد منخفضة المستوى
لأن بناء محرك سريع يتطلب التعامل المباشر مع الذاكرة والمعالج.
أهم المفاهيم المرتبطة بـ V8
Call Stack
مكان تنفيذ الدوال وترتيب العمليات.
Heap Memory
المكان الذي تُخزن فيه الكائنات والمصفوفات.
Event Loop
القلب الحقيقي لـ NodeJS والتعامل مع العمليات غير المتزامنة.
Garbage Collection
الإدارة التلقائية للذاكرة.
لماذا يجب على المبرمج فهم V8 ؟
لأن فهم V8 يعني فهم:
كيف تعمل JavaScript فعليًا
لماذا بعض الأكواد بطيئة
كيف تحسن الأداء
كيف تتجنب Memory Leak
كيف يعمل NodeJS داخليًا
كيف تتعامل مع Async Programming
المبرمج الذي يفهم V8 لا يكتب كودًا فقط، بل يفهم ما يحدث داخل المحرك نفسه.
الخاتمة
محرك V8 لم يكن مجرد تحديث تقني عادي، بل كان نقطة تحول تاريخية في عالم البرمجة.
هو المحرك الذي:
أعطى JavaScript السرعة
جعل NodeJS ممكنًا
غيّر شكل تطوير الويب
وفتح الباب أمام عصر كامل من التطبيقات الحديثة
اليوم، عندما يكتب المبرمج سطر JavaScript بسيط، فإن خلف هذا السطر يوجد نظام هندسي معقد جدًا يعمل خلال أجزاء من الثانية لتحويل الكلمات إلى أوامر حقيقية يفهمها المعالج.
وهذه هي عبقرية V8.
ماذا أخذ NodeJS من V8 ؟
NodeJS يعتمد على V8 في:
تنفيذ JavaScript
تحويل الكود إلى Machine Code
تحسين الأداء
إدارة الذاكرة
لكن NodeJS أضاف أشياء أخرى مهمة مثل:
التعامل مع الملفات
إنشاء السيرفرات
الشبكات
قواعد البيانات
Event Loop
لماذا NodeJS سريع ؟
السبب يعود إلى عدة عوامل:
أولًا : قوة V8
V8 يوفر سرعة هائلة في تنفيذ JavaScript.
ثانيًا : Event Loop
يسمح بتنفيذ العمليات غير المتزامنة بدون تجميد التطبيق.
ثالثًا : Non-blocking I/O
يمكن للسيرفر استقبال آلاف الطلبات دون انتظار انتهاء كل عملية.
كيف غيّر V8 عالم البرمجة ؟
قبل V8:
JavaScript لغة متصفح فقط
بعد V8:
أصبحت لغة Backend
دخلت عالم التطبيقات الضخمة
أصبحت أساسًا لتطبيقات الهواتف
ظهرت بيئات مثل:
Electron
Deno
Bun
أين يُستخدم V8 اليوم ؟
يُستخدم في:
Google Chrome
Node.js
Electron
Deno
والعديد من الأنظمة الحديثة.
هل V8 مكتوب بلغة JavaScript ؟
لا.
محرك V8 مكتوب أساسًا بلغة:
C++
وبعض الأكواد منخفضة المستوى
لأن بناء محرك سريع يتطلب التعامل المباشر مع الذاكرة والمعالج.
أهم المفاهيم المرتبطة بـ V8
Call Stack
مكان تنفيذ الدوال وترتيب العمليات.
Heap Memory
المكان الذي تُخزن فيه الكائنات والمصفوفات.
Event Loop
القلب الحقيقي لـ NodeJS والتعامل مع العمليات غير المتزامنة.
Garbage Collection
الإدارة التلقائية للذاكرة.
لماذا يجب على المبرمج فهم V8 ؟
لأن فهم V8 يعني فهم:
كيف تعمل JavaScript فعليًا
لماذا بعض الأكواد بطيئة
كيف تحسن الأداء
كيف تتجنب Memory Leak
كيف يعمل NodeJS داخليًا
كيف تتعامل مع Async Programming
المبرمج الذي يفهم V8 لا يكتب كودًا فقط، بل يفهم ما يحدث داخل المحرك نفسه.
الخاتمة
محرك V8 لم يكن مجرد تحديث تقني عادي، بل كان نقطة تحول تاريخية في عالم البرمجة.
هو المحرك الذي:
أعطى JavaScript السرعة
جعل NodeJS ممكنًا
غيّر شكل تطوير الويب
وفتح الباب أمام عصر كامل من التطبيقات الحديثة
اليوم، عندما يكتب المبرمج سطر JavaScript بسيط، فإن خلف هذا السطر يوجد نظام هندسي معقد جدًا يعمل خلال أجزاء من الثانية لتحويل الكلمات إلى أوامر حقيقية يفهمها المعالج.
وهذه هي عبقرية V8.
💯2❤1
أذونات التطبيقات:
صمام أمام تلفونك.. كيف بتشتغل وما هو سرها؟
في كل مرة ننزل فيها تطبيق جديد على تلفوناتنا، تطلع لنا فجأة رسائل تطلب مننا نوافق على السماح للتطبيق يوصل للكاميرا، أو الموقع، أو الأسماء او الصور.....
أغلبنا يتساهل بالموضوع يعمل "سماح" (Allow)
وهو مغمض من اجل يخلص تثبيت بسرعة ويفتح التطبيق.
بس قد سألت نفسك يوم:
كيف بتشتغل هذه الأذونات؟ وليش التطبيقات بتطلبها أصلاً؟
في هذا المقال، نتناقش مع بعض في جولة مبسطة نفهم فيها عالم "أذونات التطبيقات"، وكيف نظام تلفونك بيحمي خصوصياتك.
• ما هي أذونات التطبيقات أولاً ؟
بكل بساطة، الأذونات هذي مثل "العسكري" أو الحارس الذي بيطرحه نظام التشغيل (مثل أندرويد ولا iOS) كجدار عازل بين التطبيق الذي نزلته وبين بياناتك الشخصية في تلفونك (مثل الميكروفون، الكاميرا ، ملفاتك ، صورك ، ارقامك... ).
الهدف الأساسي من هذي الأذونات إنها تخليك أنت "المدير"، محد يقدر يوصل لبياناتك إلا برضاك، من أجل تمنع أي تطبيق خبيث إنه يتجسس عليك أو يسرق بياناتك من ورا ظهرك.
إذاً طالما الشغله فيها سرقة بيانات
فلازم نعرف كيف بتشتغل هذه الأذونات ؟
برمجياً من أين ظهرت هذه الاذونات ؟
هذا علينا إحنا
لما يجي المبرمج يبرمج أي تطبيق مثلاً،
بيكتب ملف أساسي اسمه (Manifest file) داخل التطبيق
هذا الملف يكتب فيه كل الصلاحيات الذي بيحتاجها التطبيق من أجل يشتغل وهنا مربط الفرس
لما تثبت التطبيق، النظام بيقرأ هذا الملف ،
وبيتصرف على حسب نوع الاوامر المكتوبة فيه:
إذا كانت الصلاحيات بسيطة وعادية،
النظام يسمح لها بهدوء بدون ان تشعر
لكن إذا كانت الصلاحيات حساسة وتمس خصوصيتك،
النظام بيوقف التطبيق ويطلع لك رسالة بوجهك:
"هل تسمح لهذا التطبيق بالوصول لكذا وكذا؟" مثلا الصور او الموقع او الانترنت مثلاً
والتطبيق ما بيقدر يعمل أي حاجة إلا لو ضغطت "موافق".
يعني في أذونات كثيرة سنرفقها
لمن يريد البحث أكثر بالموضوع ما علينا
خلونا نكمل.....
أنواع الأذونات بشكل عام :
الأذونات في تلفونك مقسمة لعدة مستويات على حسب خطورتها:
الأذونات العادية:
هذي ما منها خوف على بياناتك يعني تقدر تقول
مثل السماح للتطبيق يتصل بالنت، أو يخلي التلفون يهتز،
أو يطلع لك إشعارات.
النظام بيعطيها للتطبيق من نفسه بدون ما يستشيرك.
الأذونات الحساسة:
هذي الذي تخليه يوصل لخصوصياتك مثل:
الكاميرا، الميكروفون، موقعك، سجل المكالمات، وقراءة الرسائل.
هذي مستحيل يوصل لها إلا بموافقتك الصريحة.
الأذونات الخاصة:
هذي صلاحيات عميقة جداً تتدخل في شغل النظام نفسه، وما تطلع لك في الرسائل العادية، بل لازم تدخل بنفسك لإعدادات التلفون من أجل تفعلها بيدك.
طيب حلو أتفقنا
لكن ليش بعض التطبيقات تطلب أذونات خطيرة وأنت ولا على بالك تضغط سماح وأنت مغمض؟ 🤔
(مثال من الواقع)
من أجل توضح الفكرة، تخيل معي إنك حملت
"تطبيق قفل التطبيقات"
(من أجل تقفل الواتساب أو الاستوديو مثلاً).
بتجي تشوف الأذونات الذي يطلبها، تشعر إن هي تخوف!
بس تعالوا نفهمها بالعقل:
إذن "الظهور فوق التطبيقات الأخرى" (Draw over )
هذا الإذن هو السر !
التطبيق يحتاجه من أجل يقدر يطرح "شاشة القفل"
أو مكان الرمز السري فوق الواتساب أول ما تجي تفتحه.
لو ما سمحت له بهذا الإذن، ما بيقدر يغطي على التطبيق اللي تشتي تقفله.
استخدام البصمة (بمصطلح تقني الأجهزة البيومترية):
هذا من أجل يسهل عليك، بدل ما تجلس تدخل الرمز السري كل مره، تبصم بصباعك ويفتح لك طوالي.
Foreground Service
Background Service
هذا يشتغل في الخلفية بدون أن تشعر يعني شغال ٢٤ ساعة
التطبيق هذا لازم يجلس صاحي ومفتح عيونه في الخلفية يراقب.. أول ما تفتح تطبيق ، يروح يقفله فوراً
وهذا الإذن خطير جداً يمكن استخدامه بأساليب خطيرة اخرى برمجياً بدون علمك
يعني مجرد ما توافق عليه خلاص
هو يروح ينفذ عمله وأنت مش عارف ما الخبر؟
نصائح من ذهب عشان تحمي خصوصيتك :
من أجل تجلس مرتاح ومحد يتجسس عليك،
خليك ذكي وامشِ على هذه القواعد:
شغّل عقلك مع أي إذن بالوصول :
اسأل نفسك دايماً؛ هل التطبيق صدق يحتاج هذا الإذن؟ (يعني تطبيق خرائط يطلب موقعك وقد هو عمله، مقبولة ومنطقية.
لكن تطبيق "آلة حاسبة" يطلب منك فتح الكاميرا أو يقرأ الأسماء والصور او يحدد موقعك؟! هاذي جريمة ،
في إنّة بالموضوع، عليك أن ترفض طوالي).
يعني بالعقل أيش دخل تطبيق الآلة الحاسبة بالوصول لملفاتك وصورك
يعني يدخل يحسب كم عددهن او كيف ؟ 😄
أعرف أن هو هذا التطبيق ما يطمنش وخطير اتعامل معه بطريقتك اما توقف الاذونات عنه او احذفه
بالجوالات والانظمة الحديثة استخدم ميزة او إذن
"أثناء الاستخدام فقط":
تقدر تعطي الإذن
(مثل الموقع ولا الكاميرا) أثناء فتح التطبيق فقط، من اجل ما يجلس شغال يراقبك بدون علمك هذا إذا أنت تشته او وقف الاذونات من الاعدادات بشكل كامل
صمام أمام تلفونك.. كيف بتشتغل وما هو سرها؟
في كل مرة ننزل فيها تطبيق جديد على تلفوناتنا، تطلع لنا فجأة رسائل تطلب مننا نوافق على السماح للتطبيق يوصل للكاميرا، أو الموقع، أو الأسماء او الصور.....
أغلبنا يتساهل بالموضوع يعمل "سماح" (Allow)
وهو مغمض من اجل يخلص تثبيت بسرعة ويفتح التطبيق.
بس قد سألت نفسك يوم:
كيف بتشتغل هذه الأذونات؟ وليش التطبيقات بتطلبها أصلاً؟
في هذا المقال، نتناقش مع بعض في جولة مبسطة نفهم فيها عالم "أذونات التطبيقات"، وكيف نظام تلفونك بيحمي خصوصياتك.
• ما هي أذونات التطبيقات أولاً ؟
بكل بساطة، الأذونات هذي مثل "العسكري" أو الحارس الذي بيطرحه نظام التشغيل (مثل أندرويد ولا iOS) كجدار عازل بين التطبيق الذي نزلته وبين بياناتك الشخصية في تلفونك (مثل الميكروفون، الكاميرا ، ملفاتك ، صورك ، ارقامك... ).
الهدف الأساسي من هذي الأذونات إنها تخليك أنت "المدير"، محد يقدر يوصل لبياناتك إلا برضاك، من أجل تمنع أي تطبيق خبيث إنه يتجسس عليك أو يسرق بياناتك من ورا ظهرك.
إذاً طالما الشغله فيها سرقة بيانات
فلازم نعرف كيف بتشتغل هذه الأذونات ؟
برمجياً من أين ظهرت هذه الاذونات ؟
هذا علينا إحنا
لما يجي المبرمج يبرمج أي تطبيق مثلاً،
بيكتب ملف أساسي اسمه (Manifest file) داخل التطبيق
هذا الملف يكتب فيه كل الصلاحيات الذي بيحتاجها التطبيق من أجل يشتغل وهنا مربط الفرس
لما تثبت التطبيق، النظام بيقرأ هذا الملف ،
وبيتصرف على حسب نوع الاوامر المكتوبة فيه:
إذا كانت الصلاحيات بسيطة وعادية،
النظام يسمح لها بهدوء بدون ان تشعر
لكن إذا كانت الصلاحيات حساسة وتمس خصوصيتك،
النظام بيوقف التطبيق ويطلع لك رسالة بوجهك:
"هل تسمح لهذا التطبيق بالوصول لكذا وكذا؟" مثلا الصور او الموقع او الانترنت مثلاً
والتطبيق ما بيقدر يعمل أي حاجة إلا لو ضغطت "موافق".
يعني في أذونات كثيرة سنرفقها
لمن يريد البحث أكثر بالموضوع ما علينا
خلونا نكمل.....
أنواع الأذونات بشكل عام :
الأذونات في تلفونك مقسمة لعدة مستويات على حسب خطورتها:
الأذونات العادية:
هذي ما منها خوف على بياناتك يعني تقدر تقول
مثل السماح للتطبيق يتصل بالنت، أو يخلي التلفون يهتز،
أو يطلع لك إشعارات.
النظام بيعطيها للتطبيق من نفسه بدون ما يستشيرك.
الأذونات الحساسة:
هذي الذي تخليه يوصل لخصوصياتك مثل:
الكاميرا، الميكروفون، موقعك، سجل المكالمات، وقراءة الرسائل.
هذي مستحيل يوصل لها إلا بموافقتك الصريحة.
الأذونات الخاصة:
هذي صلاحيات عميقة جداً تتدخل في شغل النظام نفسه، وما تطلع لك في الرسائل العادية، بل لازم تدخل بنفسك لإعدادات التلفون من أجل تفعلها بيدك.
طيب حلو أتفقنا
لكن ليش بعض التطبيقات تطلب أذونات خطيرة وأنت ولا على بالك تضغط سماح وأنت مغمض؟ 🤔
(مثال من الواقع)
من أجل توضح الفكرة، تخيل معي إنك حملت
"تطبيق قفل التطبيقات"
(من أجل تقفل الواتساب أو الاستوديو مثلاً).
بتجي تشوف الأذونات الذي يطلبها، تشعر إن هي تخوف!
بس تعالوا نفهمها بالعقل:
إذن "الظهور فوق التطبيقات الأخرى" (Draw over )
هذا الإذن هو السر !
التطبيق يحتاجه من أجل يقدر يطرح "شاشة القفل"
أو مكان الرمز السري فوق الواتساب أول ما تجي تفتحه.
لو ما سمحت له بهذا الإذن، ما بيقدر يغطي على التطبيق اللي تشتي تقفله.
استخدام البصمة (بمصطلح تقني الأجهزة البيومترية):
هذا من أجل يسهل عليك، بدل ما تجلس تدخل الرمز السري كل مره، تبصم بصباعك ويفتح لك طوالي.
Foreground Service
Background Service
هذا يشتغل في الخلفية بدون أن تشعر يعني شغال ٢٤ ساعة
التطبيق هذا لازم يجلس صاحي ومفتح عيونه في الخلفية يراقب.. أول ما تفتح تطبيق ، يروح يقفله فوراً
وهذا الإذن خطير جداً يمكن استخدامه بأساليب خطيرة اخرى برمجياً بدون علمك
يعني مجرد ما توافق عليه خلاص
هو يروح ينفذ عمله وأنت مش عارف ما الخبر؟
نصائح من ذهب عشان تحمي خصوصيتك :
من أجل تجلس مرتاح ومحد يتجسس عليك،
خليك ذكي وامشِ على هذه القواعد:
شغّل عقلك مع أي إذن بالوصول :
اسأل نفسك دايماً؛ هل التطبيق صدق يحتاج هذا الإذن؟ (يعني تطبيق خرائط يطلب موقعك وقد هو عمله، مقبولة ومنطقية.
لكن تطبيق "آلة حاسبة" يطلب منك فتح الكاميرا أو يقرأ الأسماء والصور او يحدد موقعك؟! هاذي جريمة ،
في إنّة بالموضوع، عليك أن ترفض طوالي).
يعني بالعقل أيش دخل تطبيق الآلة الحاسبة بالوصول لملفاتك وصورك
يعني يدخل يحسب كم عددهن او كيف ؟ 😄
أعرف أن هو هذا التطبيق ما يطمنش وخطير اتعامل معه بطريقتك اما توقف الاذونات عنه او احذفه
بالجوالات والانظمة الحديثة استخدم ميزة او إذن
"أثناء الاستخدام فقط":
تقدر تعطي الإذن
(مثل الموقع ولا الكاميرا) أثناء فتح التطبيق فقط، من اجل ما يجلس شغال يراقبك بدون علمك هذا إذا أنت تشته او وقف الاذونات من الاعدادات بشكل كامل
❤1