إذا كنت صاحب شركة أو مشروع كبير وتفكر في تطوير تقني يساعدك على تحقيق أهدافك بسرعة وبكفاءة، فلازم تعرف عن مفهوم Serverless Architecture، اللي يعتمد على خدمات زي Azure Functions من مايكروسوفت أو AWS Lambda من أمازون.
الفكرة بكل بساطة إنك ما تحتاج تدير سيرفرات بنفسك. كل اللي عليك إنك تكتب الكود الخاص بمشروعك، وهم يتكفلوا بتشغيله وتوسيع نطاقه حسب الحاجة.
ليش تختار Serverless؟
يوفر التكاليف: ما تدفع إلا على الوقت اللي ينفذ فيه الكود.
سهل ومرن: مثالي إذا كان مشروعك ينمو بسرعة وتحتاج توسع مرن.
تكامل قوي: إذا كنت تعتمد على مايكروسوفت، استخدم Azure Functions. أما إذا كنت مع خدمات أمازون، AWS Lambda هو الحل الأفضل.
هذه التقنيات تساعدك تركز على شغلك الأساسي وتترك الأمور التقنية المعقدة عليهم. إذا عندك مشروع كبير أو تخطط لتطوير جديد، جرب وشوف الفرق بنفسك!
الفكرة بكل بساطة إنك ما تحتاج تدير سيرفرات بنفسك. كل اللي عليك إنك تكتب الكود الخاص بمشروعك، وهم يتكفلوا بتشغيله وتوسيع نطاقه حسب الحاجة.
ليش تختار Serverless؟
يوفر التكاليف: ما تدفع إلا على الوقت اللي ينفذ فيه الكود.
سهل ومرن: مثالي إذا كان مشروعك ينمو بسرعة وتحتاج توسع مرن.
تكامل قوي: إذا كنت تعتمد على مايكروسوفت، استخدم Azure Functions. أما إذا كنت مع خدمات أمازون، AWS Lambda هو الحل الأفضل.
هذه التقنيات تساعدك تركز على شغلك الأساسي وتترك الأمور التقنية المعقدة عليهم. إذا عندك مشروع كبير أو تخطط لتطوير جديد، جرب وشوف الفرق بنفسك!
قد شعّرت يوم إنك تلخبطت بين الكلمات: Epic، User Story، وTask؟ 🤔
شوف، خليني أوضحها لك بأسلوب بسيط:
Epic: هذا هو الحلم الكبير أو الهدف الأساسي اللي بنسعى له، زي لما تقول "بنبني بيت جديد" 🏠.
User Story: هذا جزء من الحلم، الشي اللي المستخدم يطلبه أو يحتاجه. زي لما يقول: "أبغى الباب يفتح بالبصمة" 🚪.
Task: هذي هي الخطوات اللي لازم تنفذها عشان تحقق طلب المستخدم. زي: "ركّب نظام البصمة وربطه بالكهرباء" 🔌.
يعني بالعربي:
Epic هو الحلم اللي في بالك.
User Story هي التفاصيل اللي توصل للحلم.
Task هي الشغل اللي بيدك عشان تحقق المطلوب.
كل واحدة لها هدفها، بس كلها تشتغل مع بعض عشان تخرج بشي متكامل ومرتب. لما تفهم الفرق، الشغل يصير أريح وأوضح!
Agile
Tools
Jira
Azure devops
And more
شوف، خليني أوضحها لك بأسلوب بسيط:
Epic: هذا هو الحلم الكبير أو الهدف الأساسي اللي بنسعى له، زي لما تقول "بنبني بيت جديد" 🏠.
User Story: هذا جزء من الحلم، الشي اللي المستخدم يطلبه أو يحتاجه. زي لما يقول: "أبغى الباب يفتح بالبصمة" 🚪.
Task: هذي هي الخطوات اللي لازم تنفذها عشان تحقق طلب المستخدم. زي: "ركّب نظام البصمة وربطه بالكهرباء" 🔌.
يعني بالعربي:
Epic هو الحلم اللي في بالك.
User Story هي التفاصيل اللي توصل للحلم.
Task هي الشغل اللي بيدك عشان تحقق المطلوب.
كل واحدة لها هدفها، بس كلها تشتغل مع بعض عشان تخرج بشي متكامل ومرتب. لما تفهم الفرق، الشغل يصير أريح وأوضح!
Agile
Tools
Jira
Azure devops
And more
كيف تقدر تخلي المستخدم يبلغك لو واجه أي مشكلة أو خطأ في التطبيق؟
أول شيء، لازم تسجل الأخطاء بشكل تلقائي باستخدام أدوات logging، بس المشكلة إن متابعة الـ error logs بشكل يومي شيء متعب.
الحل الأفضل إنك تخلي التطبيق يرسل رسالة مباشرة للإدمن أو المطور بمجرد وقوع الخطأ. ممكن تربط التطبيق بخدمة تبعث إشعارات تلقائية عبر الإيميل أو حتى على منصات زي Slack.
وفي نفس الوقت وفر طريقة للمستخدم يبلغ عن المشكلة بسهولة. يعني تظهر له رسالة واضحة مع زر يرسل تفاصيل الخطأ والخطوات اللي كان يعملها.
المهم خليك دائمًا مستعد لأي مشكلة وتأكد إن النظام يشتغل بسلاسة ولو حصل خطأ تعرف كيف تتعامل معه بسرعة واحترافية.
خلي عندك الثقة أنك ستنجح و لكن خلي عقلك يقول لك: لو وقعت المشكلة كذا
كيف سأواجهها وأحلها؟
أول شيء، لازم تسجل الأخطاء بشكل تلقائي باستخدام أدوات logging، بس المشكلة إن متابعة الـ error logs بشكل يومي شيء متعب.
الحل الأفضل إنك تخلي التطبيق يرسل رسالة مباشرة للإدمن أو المطور بمجرد وقوع الخطأ. ممكن تربط التطبيق بخدمة تبعث إشعارات تلقائية عبر الإيميل أو حتى على منصات زي Slack.
وفي نفس الوقت وفر طريقة للمستخدم يبلغ عن المشكلة بسهولة. يعني تظهر له رسالة واضحة مع زر يرسل تفاصيل الخطأ والخطوات اللي كان يعملها.
المهم خليك دائمًا مستعد لأي مشكلة وتأكد إن النظام يشتغل بسلاسة ولو حصل خطأ تعرف كيف تتعامل معه بسرعة واحترافية.
خلي عندك الثقة أنك ستنجح و لكن خلي عقلك يقول لك: لو وقعت المشكلة كذا
كيف سأواجهها وأحلها؟
لوفي في رأسك معلومة اشرحها حتى فضول ولاتفكر في الي سيقول عنك هذا عم بيعرض لأنها ستفرق معك كثير جدا
أفضل الممارسات في البرمجة
أفضل الممارسات في البرمجة
❤3
↘️
إذا عندك مشروع Monolith وشغال تمام
وما عندك أي مشاكل، لا تفكر تتحول لـ Microservices.
وإذا كنت بتبدأ مشروع جديد وما تتوقع عدد كبير من المستخدمين في البداية، لا تشتغل Microservices.
إذا ما تفهم تحديات Deployment والضغط على الشبكة (Network Load) وما عندك حلول لها، لا تستخدم Microservices.
إذا فريق التطوير أقل من 10 أشخاص، لا تفكر فيها.
إذا ما معك DevOps شاطر، لا تدخل نفسك في تعقيدها.
إذا الترافيك المتوقع على المشروع قليل أو متوسط، مش ضروري Microservices.
إذا مشروعك في مرحلة التجربة وما تعرف إذا بينجح بالسوق، خليها بسيطة واشتغل Monolith.
إذا ما عندك نظام Automated Testing و Deployment، لا تدخل في Microservices.
طيب متى تستخدم Microservices؟
لازم تحقق هذه الشروط كلها:
1. يكون عندك فريق كبير شغال على نفس المشروع.
2. تواجه مشاكل حقيقية في التوسع والـ Scalability.
3. عندك بنية تحتية قوية وموارد كافية لدعم التشغيل.
4. تكون قادر تتحمل تكلفة التشغيل العالية.
5. الفريق يكون عنده خبرة كافية في التعامل مع Distributed Systems.
الخلاصة:
ابدأ بمشروع Monolith مكتوب بشكل نظيف ومحكم.
ولما تحس أن الـ Monolith صار عبء على مشروعك، وقتها فقط فكر تتحول لـ Microservices.
إذا عندك مشروع Monolith وشغال تمام
وما عندك أي مشاكل، لا تفكر تتحول لـ Microservices.
وإذا كنت بتبدأ مشروع جديد وما تتوقع عدد كبير من المستخدمين في البداية، لا تشتغل Microservices.
إذا ما تفهم تحديات Deployment والضغط على الشبكة (Network Load) وما عندك حلول لها، لا تستخدم Microservices.
إذا فريق التطوير أقل من 10 أشخاص، لا تفكر فيها.
إذا ما معك DevOps شاطر، لا تدخل نفسك في تعقيدها.
إذا الترافيك المتوقع على المشروع قليل أو متوسط، مش ضروري Microservices.
إذا مشروعك في مرحلة التجربة وما تعرف إذا بينجح بالسوق، خليها بسيطة واشتغل Monolith.
إذا ما عندك نظام Automated Testing و Deployment، لا تدخل في Microservices.
طيب متى تستخدم Microservices؟
لازم تحقق هذه الشروط كلها:
1. يكون عندك فريق كبير شغال على نفس المشروع.
2. تواجه مشاكل حقيقية في التوسع والـ Scalability.
3. عندك بنية تحتية قوية وموارد كافية لدعم التشغيل.
4. تكون قادر تتحمل تكلفة التشغيل العالية.
5. الفريق يكون عنده خبرة كافية في التعامل مع Distributed Systems.
الخلاصة:
ابدأ بمشروع Monolith مكتوب بشكل نظيف ومحكم.
ولما تحس أن الـ Monolith صار عبء على مشروعك، وقتها فقط فكر تتحول لـ Microservices.
لما يكون معي كورس كيف اعمل من أحد الطرق 😅
👇👇👇👇👇👇👇👇👇👇👇👇
ليه تتعلم Docker؟
Docker مش مجرد أداة، دي منصة بتغير شكل إدارة التطبيقات.
بتوفر بيئة تشغيل موحدة مهما كان الجهاز.
بتسرّع عملية التطوير والتشغيل.
بتقليل المشاكل المتعلقة بالتوافق بين البيئات المختلفة.
يعني، هتوفر وقتك وجهدك بشكل كبير.
ليه تتعلم الذكاء الاصطناعي (AI)؟
AI هو المستقبل، سواء في تحليل البيانات، الأتمتة، أو حتى تطوير تجارب المستخدم.
السوق محتاج متخصصين يفهموا فيه.
التطبيقات بتدخل كل المجالات: الطب، الهندسة، التسويق، وكل حاجة.
بتفتح ليك أبواب فرص جديدة.
لو مش مقتنع، فكر كده: العالم بيتغير بسرعة، والمهارات دي مش رفاهية، دي أدوات للنجاح.
#تعلم_لتتطور
#الضحية
👇👇👇👇👇👇👇👇👇👇👇👇
ليه تتعلم Docker؟
Docker مش مجرد أداة، دي منصة بتغير شكل إدارة التطبيقات.
بتوفر بيئة تشغيل موحدة مهما كان الجهاز.
بتسرّع عملية التطوير والتشغيل.
بتقليل المشاكل المتعلقة بالتوافق بين البيئات المختلفة.
يعني، هتوفر وقتك وجهدك بشكل كبير.
ليه تتعلم الذكاء الاصطناعي (AI)؟
AI هو المستقبل، سواء في تحليل البيانات، الأتمتة، أو حتى تطوير تجارب المستخدم.
السوق محتاج متخصصين يفهموا فيه.
التطبيقات بتدخل كل المجالات: الطب، الهندسة، التسويق، وكل حاجة.
بتفتح ليك أبواب فرص جديدة.
لو مش مقتنع، فكر كده: العالم بيتغير بسرعة، والمهارات دي مش رفاهية، دي أدوات للنجاح.
#تعلم_لتتطور
#الضحية
في أولى إعدادي هندسة، أتذكر محاضرة عن المصفوفات، كان فيها الأستاذ يحاول يوضح لنا كيف ممكن تكون مفيدة. رسم مستطيل وشرح كيف يمكننا نحركه ونخليه يدور حول مركزه أثناء حركته باستخدام مصفوفة للإزاحة وأخرى للدوران. وقال إن هذا يمكننا من بناء محاكيات معقدة للأجزاء الميكانيكية، وهو أمر مهم في علم Kinematic.
قال لنا إنك إذا عملت هاتين المصفوفتين وتعلمت ضرب المصفوفات في بعضها، بإمكانك تنفيذ أي نوع من الحركة التي تحتاجها. أتذكر يومها رجعت للبيت، وكان عندي كمبيوتر XT وفيه Floppy Disk 5.25. كتبت الكود وكان بلغة Pascal تحت نظام DOS إذا لم تخني الذاكرة. لما شفت المستطيل يتحرك وفق معادلة Parabola ويدور أثناء حركته، شعرت بفرحة كأني اكتشفت قانون الحركة بدلًا من نيوتن.
ما فعله الأستاذ يومها أنه أعطانا معنى لما ندرسه، وأرانا فائدته. دور الأستاذ قد يكون له تأثير كبير لا يمكن تخيله. للأسف، معظم الأساتذة يهدرون هذا الدور وهذه القيمة.
قال لنا إنك إذا عملت هاتين المصفوفتين وتعلمت ضرب المصفوفات في بعضها، بإمكانك تنفيذ أي نوع من الحركة التي تحتاجها. أتذكر يومها رجعت للبيت، وكان عندي كمبيوتر XT وفيه Floppy Disk 5.25. كتبت الكود وكان بلغة Pascal تحت نظام DOS إذا لم تخني الذاكرة. لما شفت المستطيل يتحرك وفق معادلة Parabola ويدور أثناء حركته، شعرت بفرحة كأني اكتشفت قانون الحركة بدلًا من نيوتن.
ما فعله الأستاذ يومها أنه أعطانا معنى لما ندرسه، وأرانا فائدته. دور الأستاذ قد يكون له تأثير كبير لا يمكن تخيله. للأسف، معظم الأساتذة يهدرون هذا الدور وهذه القيمة.
Forwarded from الرسمية CS4 Class-22 (أحمد جلال | 𐩱𐩢𐩣𐩵 𐩴𐩡𐩱𐩡)
مواصلة في مزايا الايميل الجامعي تبعنا و الذي نقدر نستفيد منه في أشياء كثييرة ذكرناها مسبقًا، بس لفت انتباهي شيء أنذهلت منه الصدق، أي ايميل تبع جوجل لمن تسجل فيه و تشتي ترفع أشيائك من صور و فيديوهات و ملفات و غيره المساحة الذي يعطوها للواحد معروفة و ما تتجاوز ال 15GB، بس لمن جربت أزامن تلفوني مع حسابي الجامعي و ربطته ب Google Drive
جابوا لي حوالي 95TB، ايوه زيما شايفين تيرا .
فاستغلوا ايميلاتكم يا شباب و استفيدوا من المزايا المتوفرة و كمان للذي يستخدموا البرنامج الغني عن التعريف Cam Scanner تقدروا تستفيدوا من مزايا فيه Premium بمجرد ربط البرنامج بالايميل الجامعي و لا تختاروا سنة التخرج بالشكل الصحيح، خلوها 2029 عشان يطول معاكم..
جابوا لي حوالي 95TB، ايوه زيما شايفين تيرا .
فاستغلوا ايميلاتكم يا شباب و استفيدوا من المزايا المتوفرة و كمان للذي يستخدموا البرنامج الغني عن التعريف Cam Scanner تقدروا تستفيدوا من مزايا فيه Premium بمجرد ربط البرنامج بالايميل الجامعي و لا تختاروا سنة التخرج بالشكل الصحيح، خلوها 2029 عشان يطول معاكم..
انطلق في البرمجة من بدري فرصتك الجامعية لاتعوض لاتصدق ان بعد التخرج تبدأ تتخصص الحق نفسك الجامعة لو شفتها بتعطلك ارجمها خلف الشمس بخمس عادي طلع للقب البكالوريوس حافظ على درجة النجاح ان كنت ضابح منها للأخر ثقتك بنفسك تكسر اي حاجز أليس كذلك لو ثقتك ان الشهادة هي مهمه أنت احلم وسعى وياليت تتخرج وبلادك مليانه شركات وعمل هذا مافيش لو قلت لك جيب لي خمسة مبرمجين لهم ثقلهم للأسف يمكن تحصل لذلك اشتغل على نفسك ياسطى عندما تسمع موضوع الناس الآن كلها داخله حاسوب لكن مافيش إنتاج اينهم مدري كلامي هذا للي عاده دخل من البلاد فقط الي عقليته عادها نظيفة جدا وشكرا
👍3
لماذا ما ابدع مثلا في frontend ولي فترة
المشكلة فيني أنا دائما مستعجل وأريد نتائج مذهله واشوف ناس مبدعه قبلي واحبط واشوف ان ai جاء كمل الباقي
أنا شغوف ب backend ولك وجهي بعد فتره انه وصل لا درجة صحراء أين يروح لذلك لاتمشي بخريطة زميلك أو أحد شفت زميلك متقدم عليك استفيد منه ولا تنافسه اكسبه
المشكلة فيني أنا دائما مستعجل وأريد نتائج مذهله واشوف ناس مبدعه قبلي واحبط واشوف ان ai جاء كمل الباقي
أنا شغوف ب backend ولك وجهي بعد فتره انه وصل لا درجة صحراء أين يروح لذلك لاتمشي بخريطة زميلك أو أحد شفت زميلك متقدم عليك استفيد منه ولا تنافسه اكسبه
👍2
القدرة على كتابة كود يشتغل ≠ كود يشتغل بكفاءة ⚡
عند كتابة join في الاستعلامات باستخدام الـ ORM مثل EF-Core أو أي ORM آخر، الكود يتم تحويله إلى استعلام SQL. لكن هل هذا الاستعلام دائمًا أمثل (optimal)؟ الجواب: لا. ❌
لو قاعدة البيانات مش مهيأة بشكل جيد (ما فيها Indexing أو Foreign Keys أو الإحصائيات قديمة 📉)، أي محرك قاعدة بيانات (مثل SQL Server) قد يواجه صعوبة في تنفيذ الاستعلام بكفاءة. والنتيجة؟ Clustered Index Scan أو Table Scan 🔍.
إيش اللي بيصير؟
1. Physical Reads عالية جدًا 📚: البيانات المطلوبة مش موجودة في الـ cache.
2. Logical Reads عالية جدًا 📊: محرك قاعدة البيانات يضطر يقرأ كميات ضخمة من البيانات حتى لو بعضها موجود في الـ cache.
الخلاصة؟ أداء ضعيف جدًا 💻، خصوصًا مع الجداول الكبيرة، لأن عملية الـ Scan مكلفة.
الحل؟ 🛠️
Indexing هو الحل. الـ Index يحدد إذا كان محرك قاعدة البيانات هيعمل Seek (بحث سريع 🔍) أو Scan (بحث بطيء 🐢).
لو الحقول اللي تستخدمها في الـ join أو في الـ where ما عليها Index، محرك قاعدة البيانات مش هيقدر يعمل Seek، وحيضطر يعمل Scan.
مثال:
لو عندك جدول فيه مليون صف 💯، وعملت join على حقل ما فيه Index، محرك قاعدة البيانات هيعمل Scan على المليون صف.
النتيجة؟ أداء ضعيف جدًا 🚶♂️.
نفهم من كذا إيش؟
الـ ORM زي EF-Core يساعد في تسهيل كتابة الكود، لكنه مش ساحر. لو ما عندك فكرة واضحة عن الـ SQL اللي بيتولد، هتواجه مشاكل في الأداء دون أن تعرف السبب.
فين المشكلة؟
المشكلة هي أن الـ ORM يخفي بعض التفاصيل المهمة التي تساعد في تحسين الأداء. لو ما عندك فهم جيد لـ SQL أو Execution Plans، ستكتب كود غير كفؤ.
مثال عملي:
إذا كتبت استعلام LINQ معقد، الـ ORM قد يحوله إلى استعلام SQL معقد جدًا. النتيجة؟ أداء ضعيف 💔.
إيش الحل؟
1. افهم محرك قاعدة البيانات بشكل صحيح:
تعرف على كيفية قراءة Execution Plans 📑.
افهم كيفية استخدام محرك قاعدة البيانات للـ Indexes.
تعلم الفرق بين Seek و Scan.
2. اعمل Indexing بشكل ذكي:
ضع Indexes على الحقول التي تستخدمها في الـ joins أو في الـ where conditions 🔑.
لا تفرط في استخدام الـ Indexes حتى لا يؤثر ذلك على أداء عمليات Insert/Update ⚖️.
3. راقب الأداء:
استخدم أدوات مثل SQL Profiler لمراجعة الاستعلامات التي يتم توليدها من الـ ORM 🔍.
قيس Logical Reads و Physical Reads لتقييم كفاءة الاستعلامات.
4. إذا كان الاستعلام معقدًا، استخدم الاستعلامات الخام (Raw SQL):
إذا كان LINQ معقد جدًا، استخدم الاستعلامات الخام مع الـ ORM لكتابة استعلام دقيق ومحسن 🖋️.
ختامًا :
حتى إذا كنت تستخدم ORM مثل EF-Core أو غيره، يجب أن تكون لديك معرفة جيدة بـ SQL. هذا الفهم سيجعلك قادرًا على تحسين الأداء وحل المشكلات بكفاءة عالية 💡.
عند كتابة join في الاستعلامات باستخدام الـ ORM مثل EF-Core أو أي ORM آخر، الكود يتم تحويله إلى استعلام SQL. لكن هل هذا الاستعلام دائمًا أمثل (optimal)؟ الجواب: لا. ❌
لو قاعدة البيانات مش مهيأة بشكل جيد (ما فيها Indexing أو Foreign Keys أو الإحصائيات قديمة 📉)، أي محرك قاعدة بيانات (مثل SQL Server) قد يواجه صعوبة في تنفيذ الاستعلام بكفاءة. والنتيجة؟ Clustered Index Scan أو Table Scan 🔍.
إيش اللي بيصير؟
1. Physical Reads عالية جدًا 📚: البيانات المطلوبة مش موجودة في الـ cache.
2. Logical Reads عالية جدًا 📊: محرك قاعدة البيانات يضطر يقرأ كميات ضخمة من البيانات حتى لو بعضها موجود في الـ cache.
الخلاصة؟ أداء ضعيف جدًا 💻، خصوصًا مع الجداول الكبيرة، لأن عملية الـ Scan مكلفة.
الحل؟ 🛠️
Indexing هو الحل. الـ Index يحدد إذا كان محرك قاعدة البيانات هيعمل Seek (بحث سريع 🔍) أو Scan (بحث بطيء 🐢).
لو الحقول اللي تستخدمها في الـ join أو في الـ where ما عليها Index، محرك قاعدة البيانات مش هيقدر يعمل Seek، وحيضطر يعمل Scan.
مثال:
لو عندك جدول فيه مليون صف 💯، وعملت join على حقل ما فيه Index، محرك قاعدة البيانات هيعمل Scan على المليون صف.
النتيجة؟ أداء ضعيف جدًا 🚶♂️.
نفهم من كذا إيش؟
الـ ORM زي EF-Core يساعد في تسهيل كتابة الكود، لكنه مش ساحر. لو ما عندك فكرة واضحة عن الـ SQL اللي بيتولد، هتواجه مشاكل في الأداء دون أن تعرف السبب.
فين المشكلة؟
المشكلة هي أن الـ ORM يخفي بعض التفاصيل المهمة التي تساعد في تحسين الأداء. لو ما عندك فهم جيد لـ SQL أو Execution Plans، ستكتب كود غير كفؤ.
مثال عملي:
إذا كتبت استعلام LINQ معقد، الـ ORM قد يحوله إلى استعلام SQL معقد جدًا. النتيجة؟ أداء ضعيف 💔.
إيش الحل؟
1. افهم محرك قاعدة البيانات بشكل صحيح:
تعرف على كيفية قراءة Execution Plans 📑.
افهم كيفية استخدام محرك قاعدة البيانات للـ Indexes.
تعلم الفرق بين Seek و Scan.
2. اعمل Indexing بشكل ذكي:
ضع Indexes على الحقول التي تستخدمها في الـ joins أو في الـ where conditions 🔑.
لا تفرط في استخدام الـ Indexes حتى لا يؤثر ذلك على أداء عمليات Insert/Update ⚖️.
3. راقب الأداء:
استخدم أدوات مثل SQL Profiler لمراجعة الاستعلامات التي يتم توليدها من الـ ORM 🔍.
قيس Logical Reads و Physical Reads لتقييم كفاءة الاستعلامات.
4. إذا كان الاستعلام معقدًا، استخدم الاستعلامات الخام (Raw SQL):
إذا كان LINQ معقد جدًا، استخدم الاستعلامات الخام مع الـ ORM لكتابة استعلام دقيق ومحسن 🖋️.
ختامًا :
حتى إذا كنت تستخدم ORM مثل EF-Core أو غيره، يجب أن تكون لديك معرفة جيدة بـ SQL. هذا الفهم سيجعلك قادرًا على تحسين الأداء وحل المشكلات بكفاءة عالية 💡.
Forwarded from اللجنة العلمية CS 22 (خالد العبسي)
Hack like a ghost.pdf
16.6 MB
كتاب يشرح لك عن أكثر الطرق للتخفي على الإنترنت
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
إذا أنت شغال بـ Django وعندك موديل وكسلان تسوي Form وHTML وcss وغيره.
الحل مع DFormKit تسويه لك بلحظة ومصمم بطريقة مرتبة باستخدام Tailwind CSS، أو حتى لو نفسك المكتبة تولد لك الأكواد الجاهزة في`urls.py` و
بس ليش DFormKit؟؟
- توليد ModelForm ديناميكي ما عاد في داعي تكتب الفورم يدوياً!
- تفعل الـ HTML بتنسيقات Tailwind جاهزة 100%
- الأتمتة
- واجهة CLI تفاعلية
ركز انت على الأمور الأهم... والـ Forms على DFormKit 👍🏻
والجميل ان المكتبة Open Source
https://github.com/abdulrahmanRadan/dformkit
وهذا رابط المشروع في pypi
https://pypi.org/project/dformkit/
كل الشكر للباش مهندس عبدالرحمن رعدان لدعم Django community +وإذا عندك أي اقتراحات او مشاكل شاركها في issues 👍🏻
#مساعد #مكاتب
الحل مع DFormKit تسويه لك بلحظة ومصمم بطريقة مرتبة باستخدام Tailwind CSS، أو حتى لو نفسك المكتبة تولد لك الأكواد الجاهزة في`urls.py` و
views.py بدون أي تعببس ليش DFormKit؟؟
- توليد ModelForm ديناميكي ما عاد في داعي تكتب الفورم يدوياً!
- تفعل الـ HTML بتنسيقات Tailwind جاهزة 100%
- الأتمتة
- واجهة CLI تفاعلية
ركز انت على الأمور الأهم... والـ Forms على DFormKit 👍🏻
والجميل ان المكتبة Open Source
https://github.com/abdulrahmanRadan/dformkit
وهذا رابط المشروع في pypi
https://pypi.org/project/dformkit/
كل الشكر للباش مهندس عبدالرحمن رعدان لدعم Django community +وإذا عندك أي اقتراحات او مشاكل شاركها في issues 👍🏻
#مساعد #مكاتب
GitHub
GitHub - radanpro/DFormKit: DFormKit is a lightweight Django library designed to dynamically generate ModelForms and corresponding…
DFormKit is a lightweight Django library designed to dynamically generate ModelForms and corresponding HTML templates with ease. It simplifies form creation by automating repetitive tasks, making i...
🔥2
موضوع في غاية الأهمية 🙆
ما في شيء ببلاش | المكتبات وأطر العمل 📚
أول مرة تستخدم مكتبة أو إطار عمل بتحس بالسعادة لأنك وفّرت وقت وجهد، وتعتبرهم أدوات عظيمة مليئة بالمميزات 🤩.
لكن هل فعلاً إتقانك لهم يعتمد فقط على استخدامهم؟
الإجابة: لا. الإتقان الحقيقي يعتمد على معرفتك بـ المميزات والعيوب معًا!
🔍 ليش العيوب مهمة؟
لأنها اللي بتحدد:
متى تفضل مكتبة على أخرى.
متى تفضل إطار عمل على مكتبة.
ومتى أصلاً تستخدمهم أو تستغني عنهم.
لو ركزت على المميزات فقط، كل الحلول بتكون صواب بالنسبة لك وما بتشوف الفرق الحقيقي.
أبرز عيوب استخدام المكتبات وأطر العمل:
1️⃣ الترابط الزائد بالكود
لما يكون مشروعك يعتمد بشكل كبير على مكتبة أو إطار عمل، استبدالهم بالمستقبل بيكون تحدّي كبير لأن الأكواد المتعلقة بهم منتشرة في كل المشروع.
💡 الحل الذكي:
لا تخلي الكود يتعامل مباشرة مع المكتبة!
بدلاً من ذلك، استخدم واجهة (Interface) من تصميمك للتعامل مع المكتبة.
إذا قررت تستبدل المكتبة لاحقاً، كل التعديلات بتكون على الواجهة فقط، والمشروع بالكامل يظل بأمان.
📌 هذا يتم بسهولة باستخدام Facade Design Pattern.
2️⃣ قضايا الأمان (Security)
ثغرة واحدة في المكتبة أو إطار العمل = ثغرة في مشروعك 😨.
🛠 كيف تتعامل مع المشكلة؟
راجع مشاكل المكتبة (Issues) باستمرار.
لو شفت مشكلة أمنية، تعامل معها فوراً.
عند نزول تحديث أمني، لا تتأخر بتحديث المكتبة.
3️⃣ الأخطاء (Bugs)
وجود خطأ (Bug) في المكتبة قد يؤدي إلى أخطاء في مشروعك.
✅ الحل:
اختار مكتبات تعتمد على عملية اختبار (Testing) قوية.
إذا المكتبة ما فيها اختبارات، أضف Unit Testing بنفسك على الأجزاء اللي بتستخدمها منها.
🎯 الفائدة من الاختبارات:
1. تقدر تحدث المكتبة وأنت مطمئن طول ما الاختبارات ما تفشل.
2. الاختبارات بتكون بمثابة توثيق (Documentation) داخلي لك ولأعضاء الفريق، خصوصاً الجدد.
ختامًا:
> المكتبات وأطر العمل أدوات رائعة، لكنها مش عصا سحرية 🪄.
ذكاءك كمطور يظهر في كيفية إدارتك لها بعقلية واعية، بحيث تحصل على الفوائد وتتجنب المشاكل.
اتبع النصائح السابقة، وبتصنع مشروع قوي ومستدام، بعيد عن التعقيدات والمشاكل المستقبلية. 🚀
ما في شيء ببلاش | المكتبات وأطر العمل 📚
أول مرة تستخدم مكتبة أو إطار عمل بتحس بالسعادة لأنك وفّرت وقت وجهد، وتعتبرهم أدوات عظيمة مليئة بالمميزات 🤩.
لكن هل فعلاً إتقانك لهم يعتمد فقط على استخدامهم؟
الإجابة: لا. الإتقان الحقيقي يعتمد على معرفتك بـ المميزات والعيوب معًا!
🔍 ليش العيوب مهمة؟
لأنها اللي بتحدد:
متى تفضل مكتبة على أخرى.
متى تفضل إطار عمل على مكتبة.
ومتى أصلاً تستخدمهم أو تستغني عنهم.
لو ركزت على المميزات فقط، كل الحلول بتكون صواب بالنسبة لك وما بتشوف الفرق الحقيقي.
أبرز عيوب استخدام المكتبات وأطر العمل:
1️⃣ الترابط الزائد بالكود
لما يكون مشروعك يعتمد بشكل كبير على مكتبة أو إطار عمل، استبدالهم بالمستقبل بيكون تحدّي كبير لأن الأكواد المتعلقة بهم منتشرة في كل المشروع.
💡 الحل الذكي:
لا تخلي الكود يتعامل مباشرة مع المكتبة!
بدلاً من ذلك، استخدم واجهة (Interface) من تصميمك للتعامل مع المكتبة.
إذا قررت تستبدل المكتبة لاحقاً، كل التعديلات بتكون على الواجهة فقط، والمشروع بالكامل يظل بأمان.
📌 هذا يتم بسهولة باستخدام Facade Design Pattern.
2️⃣ قضايا الأمان (Security)
ثغرة واحدة في المكتبة أو إطار العمل = ثغرة في مشروعك 😨.
🛠 كيف تتعامل مع المشكلة؟
راجع مشاكل المكتبة (Issues) باستمرار.
لو شفت مشكلة أمنية، تعامل معها فوراً.
عند نزول تحديث أمني، لا تتأخر بتحديث المكتبة.
3️⃣ الأخطاء (Bugs)
وجود خطأ (Bug) في المكتبة قد يؤدي إلى أخطاء في مشروعك.
✅ الحل:
اختار مكتبات تعتمد على عملية اختبار (Testing) قوية.
إذا المكتبة ما فيها اختبارات، أضف Unit Testing بنفسك على الأجزاء اللي بتستخدمها منها.
🎯 الفائدة من الاختبارات:
1. تقدر تحدث المكتبة وأنت مطمئن طول ما الاختبارات ما تفشل.
2. الاختبارات بتكون بمثابة توثيق (Documentation) داخلي لك ولأعضاء الفريق، خصوصاً الجدد.
ختامًا:
> المكتبات وأطر العمل أدوات رائعة، لكنها مش عصا سحرية 🪄.
ذكاءك كمطور يظهر في كيفية إدارتك لها بعقلية واعية، بحيث تحصل على الفوائد وتتجنب المشاكل.
اتبع النصائح السابقة، وبتصنع مشروع قوي ومستدام، بعيد عن التعقيدات والمشاكل المستقبلية. 🚀
👌1
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| Have a BUG free Weekend |
|______________|
. .
\ /
\ | o : o |/
~-| o : o |-~
_ / \_ : _/ \_
| Have a BUG free Weekend |
|______________|
. .
\ /
/ ! \\ | o : o |/
~-| o : o |-~
_ / \_ : _/ \_
Forwarded from AI (Artificial Intelligence )
YouTube
Harvard CS50’s Artificial Intelligence with Python – Full University Course
This course from Harvard University explores the concepts and algorithms at the foundation of modern artificial intelligence, diving into the ideas that give rise to technologies like large language models, game-playing engines, handwriting recognition, and…
Forwarded from AI (Artificial Intelligence )
YouTube
OpenCV Course - Full Tutorial with Python
Learn everything you need to know about OpenCV in this full course for beginners. You will learn the very basics (reading images and videos, image transformations) to more advanced concepts (color spaces, edge detection). Towards the end, you'll have hands…