أسوأ شيء ممكن يمر عليك كطالب حاسب التشتت الي يصير لك وقت تحديد التخصص/المسار، وأشوف الأغلب يعاني من هذا الشيء.
لهذا بتكلم كيف تختار تخصصك/مسارك -من تجربتي-
"قد نتطرق للمصادر لاحقًا"
🚀 لأن إدارة المشاريع مو مجرد شهادة بل مهارة تُصنع بالممارسة والخبرة يسر نادي ريادة الأعمال التقنية دعوتكم لحضور ورشة:
إدارة المشاريع بالمهارة لا بالشهادة ✨️
مع الأستاذ: عمر عبدالرحمن الزارع
مدير مشاريع بخبرة عملية في عدة جهات وشركات، وقائد لعدد من المبادرات والفرق التطوعية والطلابية.
خلال الورشة راح نتعرف على🔍:
• أساسيات إدارة المشاريع
• تنظيم الفرق والمهام
• التعامل مع تحديات المشاريع الواقعية
• كيف تبدأ طريقك في مجال إدارة المشاريع
• نظرة عملية مرتبطة بسوق العمل
🎯 الفئة المستهدفة:
كل طالب أو طالبة عنده مشروع جامعي، أو مهتم يبني مسار مهني في إدارة المشاريع.
📅 20 May
🕣 8:30 PM
📍 Online
للتسجيل :
https://t.co/H4HCKHje6n
لا تفوّت الفرصة ✨
#CCSIT_CLUBS #IAU_CCSIT
#جامعة_الإمام_عبدالرحمن_بن_فيصل
#إدارة_المشاريع
يسعدني أشارككم خطوة جديدة 👾
فتحت حسابي على منصة https://t.co/ausgX99nH6، والآن صارت جميع ألعابي متاحة للتجربة والتحميل 👏🏽
بتكون هذه المنصة المكان الأساسي اللي أنشر وأحدث فيه ألعابي. 🎮
تعليقاتكم وملاحظاتكم بتساعدني كثير في التطوير وتحسين التجربة.
تقدروا تزوروا الحساب وتجربة الألعاب من الرابط:
https://t.co/X5VzcdkrmT
رجل مُعسر كبير في السن عمره 55 عاما أعزب لديه طفل عليه امر بالتنفيذ وحكم بالسجن.
قال تعالى: ﴿وأحسنُوا إِنَ اللَه يُحِب المُحسنينَ﴾
فرصتك اليوم أن تكون من المحسنين الذين أحبهم الله.
رقم الفاتورة: 201530623
تبرع الآن عبر #منصة_إحسان👇
https://t.co/M4iROnh7Gh
حلقة جميلة من @MusabKhunaijir وأسعد
تطرقوا فيها في مواضيع مثل المجالات الفرعية والتولز اللي تحتاج تعرفها كمهندس DevOps، والفرق بين مهندس الكلود والـ Devops، وكيف تبني مشاريع وتظهر خبرتك للشركات، وكيف تقدر تستفيد من مجال الـ DevOps في مجالك
https://t.co/EsqpQYdxno
ذاكرت للفاينل؟ اختبر نفسك ✅
ارفع سلايداتك وحدد الصعوبه والوقت وانشئ اختبار من نفس المحتوى
راح تعرف ايش نقاط ضعفك بناء على المواضيع والصفحات وتقويها بـ إعادة الاختبار والمقارنة بين المحاولات
مع جهزني تدخل الاختبار وعندك تصور عن الاسئلة الي ممكن تجيك👏
https://t.co/BMHZS130Fk
أهم مفهوم في oop، الوراثة (inheritance) لان حرفيًا ما في كلاس راح نسويه الا مفهوم الوراثة مطبق عليه
الفكرة من الوراثة احيانًا ونحنا نبني برنامج بيكون هدفنا نقلل من كتابة الكود والاسطر ولا نكرره كل مرة (Reusability)، لنفترض عندنا نظام لشركة معينة، وعندنا اكثر من موظف بمختلف المجالات مثلًا developer، HR، marketing، لما اسوي ال Attributes بنلاحظ فيه صفات مشتركة مثل (الاسم, الايميل, الجوال, القسم, الادرس...) وغيرها من المعلومات اللي لازم تكون عند اي موظف (employee).
طيب انا هنا ليش ما اسوي Attributes مشتركة بينهم كلهم؟ بدلًا من اعيد كتابة Attributes حقت كل كلاس؟ هنا يجي دور الوراثة توفر علي اني ارجع اكتب Attributes، كيف أقدر؟ بكل بساطة اجمع كل ال Attributes اللي أحتاجهم تكون مشتركة في كل الكلاسات واحطهم في كلاس عام واحد بنسميه (employee) لان لو نلاحظة في النهاية هم كلهم موظفين، واي كلاس يحتاج هذه Attributes علطول عن الطريق الوراثة يقدر يستفيد منها، هنا انا حققت (Reusability) بدلا من أعيد كتابة الكود مرة ثانية وفرت على نفسي أسطر، ممكن ما نشوف ان الوراثة تساعدنا مرة خصوصًا كمثال بسيط كهذا لكن لما برنامجك يكبر بتشوف كيف أنها توفر عليك الكثير.
نستكمل الحديث عن ال OOP
مصطلحات مثل (Object)، (Class)، (Modifiers) ، (Encapsulation)، (Constructor) راح يمرون عليك بكثرة لما تتعامل مع oop، لازم نفهم من ايش يتكونون والفرق بينهم
خلنا نبدا بالكلاس، لو كنت تبي تشتري شيء اونلاين من اي موقع بتحط اغراضك في السلة وبتروح عند الدفع، لما توصل عند الدفع راح يكون عندك (قالب) جاهز برقم البطاقة، تاريخ الانتهاء، CVV، واسم صاحب البطاقة، كل هذي الخانات جاءتك "فاضية" كقالب جاهز ما فيها اي معلومات لازم انت تعبيها، القالب الجاهز هذا راح نسميه (كلاس)
بس لما انا اعبي هالمعلومات هنا راح يكون عندي "أوبكجت"، لاحظ هنا أنا عبيت "بياناتي الخاصة" ممكن يجي شخص ثاني يعبي بياناته بس أكيد بتكون مختلفة عن بياناتي، وهذا يخلينا نستنج ان الكلاس (القالب) ثابت، لكن المتغير هو الاوبكجت (بياناتي)، خلنا نأخذ مثال ثاني عشان توضح الفكرة، أبسط مثال ورقة الاختبار تجيك فاضية كقالب (كلاس) وانت تعبي فيها بياناتك و اجابتك (اوبكجت)، والامثلة كثيرة كل شيء حولنا عبارة عن اوبكجت، يتكون الاوبكجت من عنصرين variables & methods، لها أكثر من مسمى ولكن اخترت هالمسمين.
لو اخترنا مثلا السيارة على انها "اوبكجت" امثلة على الاشياء اللي ممكن تكون "data" الخاصة بالسيارة، اسم السيارة، أقصى سرعة، سعرها، الموديل، اما من ناحية ال methods نقدر نخلي ميثود تحسب لنا عمر السيارة مثلًا هذول العنصرين راح يساعدونا في تطبيق مفهوم ال Encapsulation.
اذا تذكر ال oop كان اللي يميزها انه البيانات مخفية ومحمية مو اي احد يوصل لهذي البيانات، Encapsulation يساعدني احقق هذي الميزة عن طريق يخلي العنصرين (variables - methods) كأنهم في كبسولة بس كيف؟ عن طريق Modifiers اللي هي 4 انواع عشان احدد الوصول سواء البيانات او الميثود لما تكون تشتغل على برنامج كبير راح تحتاجها خصوصا لما تكون شغال مع فريق، ف على سبيل المثال لو كنت ما ابي احد يلمس هذه واحد من البيانات من الفريق اللي معي ولا يقدر يعدل عليها بتاتًا.
قبل ما نعرف الانواع لازم نعرف انه كل برنامج عندنا يتكون من بكجات، البكج تقدر تقول نفس المجلد اللي فيه الملف، عادة البرامج الكبيرة يكون فيه أكثر من بكج
النوع الاول Public، سواء كان الكلاس او الميثود او المتغير كلها اقدر اوصل لها مباشرة من نفس البكج أو حتى برا البكج
النوع الثاني protected، نفس ال public ولكن فيه كم فرق بسيط (نتكلم عنها بعدين)
النوع الثالث private، هذا على مستوى من ناحية الامان وما تقدر توصل للبيانات هذي الا من نفس الكلاس عدا ذلك ما يمديك الا بوساطة ( Getter &Setter) هذول راح يكونون اصدقائنا اللي راح نتعامل معهم واجد (نتكلم عنها في نقطة اخرى)
النوع الرابع default، في حالة ما حطيت اي نوع من الانواع الثلاث هذي كأنك قلت للكومبلير تراه default فكرته مشابهة لل public لكن على عكسه ما تقدر توصل للبيانات برا البكج
الميثود عادة تكون public و نستخدم ال private للمتغيرات، لكن لو كانت private كيف نقدر نوصل لها؟ لهذا عندنا (Getter &Setter) هذول ميثود راح يساعدوني اوصل للمتغيرات بدون ما احتاج اغير الوصول لها، عندنا اولًا ال Setter بكل بساطة اتحكم بقيمة المتغير اقدر اغير القيمة أو حتى احدثها، اما ال Getter فهي ترجع لي القيمة.
عندنا عضو مهم جدا اللي هو (constructor) لما ننشئ اوبكجت فهو يجي علطول كأننا سوينا له استدعاء مع الاوبكجت، اقدر استفيد منه عشان أعيين قيم افتراضية، او قيم معرفة من قبل المستخدم، او عشان اطبع شيء مثلًا، من شروطه ما يكون فيه return type او حتى void، ويكون نفس اسم الكلاس.
عندنا عدة انواع من constructor لكن خلنا نذكر اللي نحتاجه حاليًا
الاول Default، هذا باختصار ما فيه ولا براميتر (parameters) راح ينشئ تلقائي من الكومبلير، يستخدم عادة لتعيين قيم افتراضية لكن المرة ذي اللي راح يحددها الكومبلير لو كانت القيمة string راح تكون القيمة الافتراضية : null
numeric : 0
boolean : false
char : '\u0000' == null
الثاني Parameterized Constructor، على عكس ال default هذا فيه parameters ونقدر نحط فيه القيم اللي نحتاجها
واحد من أهم المنهجيات اللي أكيد راح تمر عليك ال object oriented programming (OOP)
قبل ما نتعمق لازم نفهم نحنا ليش أصلا نحتاج ال OOP؟ وكيف ممكن نستفيد من هذي المنهجية؟ وفرقها عن باقي المنهجيات مثل (POP)procedural oriented programming
تخيل معي أنك قاعد تبني بيت بس بدون خطة مجرد انك تحط الطوب بشكل عشوائي بدون ما تراعي عن كيفية تركيب الطوب، في البداية كل شيء بيكون ماشي تمام، بس بتلاحظ كل ما زاد الطوب صار الموضوع أعقد أنك تفهم وش قاعد يصير وكيف البيت أصلا راح يصمل؟ حتى اذا حاولت أنك تغير شيء صغير ممكن البيت كله يطيح، شفت الفوضى هذي كلها؟ هذا شكل البرنامج حقك بدون منهجية وبدون أي هيكلة واضحة يصير كل جزء في البرنامج مستقل بذاته وما تقدر تتحكم فيه مثل ما تبي ف يصير التغييرات الصغيرة تسبب مشاكل كبيرة.
هنا يجي دور ال OOP تعطيك خطة وبناء واضح للبرنامج حيث يصير كل جزء من البرنامج مكانه وهدفه وتفاعله واضح مع الاجزاء الثانية من البرنامج، وهذا يخلي البرنامج قابل للتعديل والاستخدام، بحيث كل جزء من الكود عنده وظيفة محددة ف يصير التغيير فيه سهل أو حتى اعادة الاستخدام وهذا يوفر علي الكثير من الاسطر، أقرب مثال للفكرة هذي السيارة كل جزء من السيارة مستقل بذاته بس كل هذي الاجزاء متصلة مع بعض.
خلنا نتكلم عن الفرق بين ال OOP و POP، على عكس ال OOP اللي تركز على تنظيم البيانات والكائنات (راح نتكلم عن الكائن بعدين)، تركز ال POP على الفنكشن وخطوات التنفيذ، ومن ناحية أسلوب ال POP تتبع اسلوب من فوق الى تحت بمعنى اركز على الفكرة الاساسية واقسمها اجزاء صغيرة متسلسلة، أما ال OOP من تحت الى فوق بمعنى تبدأ بالاجزاء الصغيرة ثم تجمعها وتربطها مع بعض حتى يتكون لنا برنامج.
من ناحية بيانات في ال OOP تقدر تسوي لها Hide (بمعنى البيانات راح تقدر تحدد الوصول للبيانات وهذا يخليها محمية ومخفية)، على عكس ال POP ما تقدر تسوي لها "Hide" فأي أحد يقدر يوصل للبيانات لانها مشتركة (global)، هذا يعطي أفضلية لل OOP في الامان والتحكم بسبب الوصول للبيانات، على الجانب الاخر عيب في OOP انه عادة برامجها كبيرة ومعقدة وهذا يخلي البرنامج ابطأ على عكس ال POP اللي تعتبر أقل تعقيد وبساطة وهذا ممكن يخليها أفضل حل للمشاكل الصغيرة اللي ما فيها تعقيد كبير.
https://t.co/HPbhx02mlk
المدونة جاهزة إن شاء الله , راح أكتب فيها مايقارب ال70 مقالة عن الذكاء الإصطناعي من تحت الصفر وصولاً لمصطلحات جداً متقدمة (LLMs - AI Agents - Machine Learning Algorithms) وأمور أخرى بعالم الCS
يُفضل معرفة بسيطة ببايثون , ويوجد الآن 4 مقالات في المدونة