VOL48: Introduction to Ollama - Running AI Models Locally with Ease
أهلًا وسهلا بكم في العدد الثامن والأربعين من النشرة الأسبوعية لاقرأ-تِك 🚀
لا تنسوا أهلنا من صالح الدعاء,اللهم إنّا استودعناك اياهم، اللهم كُن عوناً لهم، اللهم انصرهم واحفظهم. 🇵🇸
أهلًا وسهلا بكم في العدد الثامن والأربعين من النشرة الأسبوعية لاقرأ-تِك 🚀
سواء كنت مهندس برمجيات مبتدئ أو محترف، فنشرتنا هدفها انها تثري المحتوى التقني العربي سعيا للتطوير من جودة المحتوى باللغة العربية، من خلال تقديم أحدث المستجدات والتطورات في عالم البرمجيات، بالإضافة إلى أفضل الممارسات والنصائح القيمة، ونشر أحدث المقالات وترشيحات الكتب ومحتوى ورقة وقلم اللي بينزلوا بشكل مستمر في موقع اقرأ-تِك.
في الإصدار ده الفهرس هيكون كالآتي:
System Design in Flutter
Introduction to Ollama: Running AI Models Locally with Ease
API Authentication Methods
Introduction Into (AI) - Artificial Intelligence
CAP Theorem
System Design in Flutter
الsystem design هو الخطوة اللي بنحدد فيها بنية التطبيق (Architecture)، العلاقات بين المكونات المختلفة، والـinterfaces. الهدف منها إننا نضمن إن المشروع هيكون قابل للتوسع، الصيانة، والأداء العالي.
هو أهم مرحلة بتحوّل المشروع من مجرد فكرة أو رسومات على الورق لحاجة شغّالة فعليًا ، ببدأ أحضر الحاجات اللي بستخدمها في الابلكيشن قبل ما اشتغل الالوان الخطوط و بعمل style guide عندي بشوف ال architecture اللي همشي عليه ال components بتتعامل مع بعض ازاي ، باختصار بنظم الابلكيشن قبل ما نبتدي الكود.
1. تحليل التصميم (UI Analysis) 🧐
أول حاجة بفهم التصميم كويس جدًا، أدرس الـflow بتاعه وأفهم فكرته والهدف منه علشان اعرف اكون فكرة عنه في دماغي و اشوف همشي فيه ازاي.
أطلع الألوان والخطوط والصور المتكررة علشان أجهزهم للكود 🎨
2. تجهيز الـ Style Guide 📋
الألوان:
بشوف الألوان اللي حطها الـdesigner أو اللي ظاهرة في التصميم، وبحطها في ملف خاص في الكود.
الخطوط (Fonts):
بحدد الـfont family المستخدم عندي.
لو أكتر من خط، بختار الخط الأكثر استخدامًا للـmain، والباقي نضيفه وقت ما نحتاجه.
علشان أستخدم الخطوط، بنزل مكتبة Google Fonts 📂.
3. الـ (Assets) 🖼️
الصور:
بعمل Export لكل الصور مرة واحدة من الأول علشان منقعدش ننزل صورة صورة كل ما نحتاجها.
الأيقونات:
بنزلها بصيغة SVG لأنها مساحتها أقل وجودتها أعلى، وبستخدم مكتبة SVG Flutter.
الأنيميشن:
لو فيه أنيميشن جاهز، بننزله من Lottie Files وبستخدم مكتبة Lottie Flutter.
لو عندي نصوص فيه انميشن ، بستخدم مكتبة Animated Text Kit
لو الشكل مش موجود نعمله احنا بقي.
4. تحديد التباعد (Spacing) 📏
بشوف الـspacing المطلوبة (Height & Width) وأحطها في ملفات منفصلة لو احتاجت.
5. تحديد الـ Mode واللغات 🌐
بشوف التطبيق هيبقى:
لغة واحدة ولا أكتر؟
فيه Light & Dark Mode ولا وضع واحد؟
في الاخر الهدف اني بكون فكرة عامة عن كل اللي همشي بيه ف الابلكيشن ، بنظم المشروع من البداية، سواء بربطه في دماغي او علي ورق او بحضره حتي علي الIDEA نفسه اللي بكتب عليه ، و دا بيوفر عليك وقت ومجهود كبير بعد كدا ، وبيخليك تشتغل بكفاءة أكتر 💡✨.
طيب ليه الـ System Design مهم؟ 🤔
1. تنظيم وترتيب الدماغ 🧠
بدل ما تفضل تفكر مع كل شاشة "هتتعمل إزاي؟" 😵، بيكون كل حاجة واضحة ومتخططة من البداية.
بتدخل على التنفيذ وأنت عارف كل تفصيلة ومجهز لها من قبل كدا✅.
2. تناسق التطبيق 🤝
الـ Style Guide موحد:
كل التيم بيتبعوا نفس الـStyle Guide، وده بيضمن إن التطبيق يطلع بشكل متناسق ومنظم.
سواء في الألوان، الخطوط، أو الأنيميشن، كل حاجة بتكون ماشية على نفس النظام 👌.
3. سهولة التعديل 🔧
لو حبيت تغيّر درجة لون أو خط معين، بتعدل في مكان واحد بس بدل ما تدور على كل فايل فيه العنصر ده.
ده بيقلل الأخطاء ويوفر وقت كبير 🕒
4. Reusable Components ♻️
لما تعمل مكونات modular، تقدر تستخدمها في أكتر من جزء في التطبيق أو حتى في مشاريع مستقبلية.
ده بيوفر وقت ومجهود، وبيزود كفاءة الشغل.
5. تحسين تجربة المستخدم (User Experience) 🧑💻🌟
بيبقي التطبيق منظم ومتناسق بيدّي تجربة استخدام مريحة وسهلة للمستخدمين.
و كمان بيأثر علي رضا العميل.
6. قابلية التوسّع (Scalability) 📈
تطبيق متصمم بشكل صحيح بيسهل عليك تضيف مميزات جديدة أو تعديلات من غير ما تخاف إنه يبوظ او يقع 😅.
بتضمن أداء عالي واستقرار أكبر.
Introduction to Ollama: Running AI Models Locally with Ease
يعتبر Ollama مشروع مفتوح المصدر هدفه الأساسي أنه يسهل عليك تشغيل الـ AI Models الكبيرة مثل ال LLMs (Large Language Models) علي جهازك الشخصي بدون إنترنت بدلاً من تشغيلها على الـ Cloud.
مميزات Ollama
لا يحتاج إلى الانترنت: يمكنك استخدامه على جهازك الشخصي بعد تحميله بدون انترنت وهذه خاصية هامة للمطورين الذين يتعاملون مع بيانات حساسة والشركات التي تهتم بخصوصية بياناتها.
يدعم نماذج متعددة: يمكنك تشغيل أنواع كثيرة من النماذج عليه مثل Llama 2، Mistral، Gemma، و Code Llama بسهولة وهذه المكتبة يتم تحديثها باستمرار فتقدر حتى تشغل deepseek عليه!
سهولة الاستخدام: بيقدم Command Line Interface CLI بسيطة وتقدر تشغل النموذج بسطر واحد فقط
استخدامات Ollama
إنشاء Local Chatbots: يمكنك من تدريب Chatbots علي بيانات خاصة مما يجعلها تعطي إجابات أدق وأسرع وتشغيلها علي Local Servers
تطوير Privacy-focused AI Applications:في شركات كثيرة تتعامل مع بيانات خاصة لا يمكنها تدريب النماذج السحابية عليها لأن ذلك يعرض بيانتها وبيانات عملائها للخطر مثل الشركات التي تعمل في مجال القانون والقطاع المالي
الأبحاث وتطوير النماذج: يستخدمه العديد من مطورين الذكاء الاصطناعي لإنشاء وتدريب النماذج على بيانات معينة وتقييم أدائها.
كيف يمكن استخدامه؟
تحميله على نظام تشغيلك الشخصي mac OS، Linux، و Windows.
تشغيل النماذج بأوامر بسيطة مثل:
ollama run llama2
يمكن للمبرمجين دمجه في تطبيقاتهم باستخدام الـ APIs
API Authentication Methods
المقدمة
أثناء تعاملنا مع ال APIs بنحتاج نعمل User Authentication واللي هي عبارة عن عملية التحقق من هوية المستخدم اللي باعت ال Request, ودا جانب هام جدُا في حماية الـ API وكذلك خصوصية وأمان المستخدمين.
فورقة وقلم و تعالوا نتعرف على أشهر 5 طرق من ال User Authentication Methods. 🚀
Basic Authentication
دا أبسط نوع وفيه بنبعت اسم المستخدم وكلمة المرور في ال Request في صيغة Base64 , طبعًا النوع دا منخفض الأمان ومش بنستخدمه في الـ Production Environment إلا علي HTTPS Connection, لأن ال Base64 Encoding بيتحل بأي Decoder على الإنترنت فلو ال Eequest اتعرض ل Eavesdrop Attack يقدر المهاجم بسهولة يعرف بيانات المستخدم.
الاستخدام المناسب:
مناسب للاستخدام في وقت التطوير أو الـ Testing
ممكن نستخدمه في التطبيقات الداخلية واللي ضامنين إنها على شبكة آمنة.
GET /protected-resource HTTP/1.1
Host: example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
API Key Authentication
ال API Keys عبارة عن مفاتيح أو "رموز تعريف" بيصدرها ال API لل Clients ودور ال Client أنه يبعتها مع كل Request لل API كوسيلة تحقق من هوية المستخدم. ال Client ممكن يبعتها ك Query String أو يحطها في ال Request Header أو حتي ك Cookie.
وزي ال Basic Authentication لازم نستخدمه علي HTTPS Connection لأن لو أي حد عرف ال API Key هيقدر ينتحل شخصية ال Client ويستعمل ال API باسمه.
الاستخدامات المناسبة:
بتكون في بيئات التطوير و الاختبار أو في التطبيقات الداخلية
ممكن نستخدمه في الـ Production ولكن مع وسائل أخري نزود بيها معامل الأمان.
ونلاحظ واحدة من أهم عيوب الـ API Key إنه مش بيدي User-Specific Permissions لأنه مصمم بالأساس عشان يستخدم بين ال Apps أو ال Services وبعضها.
خصم يصل إلى 40% على جميع خطط الاشتراك السنوية لفترة محدودة، تقدروا دلوقتي تشتركوا في اقرأ-تِك وتستمتعوا بكافة المقالات في كل ما يخص هندسة البرمجيات باللغة العربية والمحتوى المميز من ورقة وقلم ومدونات فطين اللي بيتميزوا بتصاميم ذات جودة عالية وكل ده بحرية كاملة وكمان مفاجآت اقرأ-تِك الجاية 🚀
وبرضو متاح الاشتراك من خلال InstaPay و VodafoneCash 🎁
بفضل الله أصبح متاح حاليا دعمنا من خلال الرعاة والشراكات وفعلنا الـ Sponsorship واحنا بنرحب بجميع الشراكات مع المؤسسات والشركات وأصحاب الأعمال لبناء مجتمع عربي يشجع على القراءة والتعلم ومشاركة التجارب والخبرات العملية في هندسة البرمجيات.
دورك كشريك أو راعي هيكون محوري في دعم المحتوى وتوسيع نطاق تأثيره. فانضم لرحلتنا وكن جزءًا من صناعة مستقبل التكنولوجيا في المنطقة 🚀
تقدروا تشوفوا التفاصيل كاملة من هنا والـ Analytics بتاعتنا من خلال اقرأ-تِك والنشرة الأسبوعية 👇
Introduction Into (AI) - Artificial Intelligence
الذكاء الاصطناعي (Artificial Intelligence) أصبح حديث العالم في السنين الأخيرة، وهو بكل بساطة فرع من علوم الكمبيوتر بيهدف لتصميم أنظمة ذكية تقدر تحاكي طريقة تفكير البشر وتتعامل مع المشاكل بشكل ذاتي.
من التوصيات اللي بتظهرلك على نتفلكس ويوتيوب لحد السيارات ذاتية القيادة، الذكاء الاصطناعي بيغير طريقة تعاملنا مع الدنيا وكلنا شوفنا ChatGPT والنماذج المشابهة. في السلسلة دي، هنعرفك على المجال من الأساسيات إلى المواضيع المتقدمة، والنهاردة هنعرف مقدمة عن الذكاء الاصطناعي وكل مقال هيكمل اللي قبله ان شاء الله.
ما هو الذكاء الاصطناعي؟
الذكاء الاصطناعي (AI) هو طريقة لتصميم برامج وأنظمة تقدر تتعلم وتفكر وتاخد قرارات بنفسها. الأنظمة دي بتشتغل من خلال تحليل كميات ضخمة من البيانات(Big Data) ، واكتشاف الأنماط اللي فيها، وده بيخلّيها تتخذ قرارات بشكل منطقي من غير ما نبرمجها بشكل مباشر لكل خطوة.
كيف يعمل الذكاء الاصطناعي ؟
خلينا نوضح بشكل مبسط جدًا طريقة العمل وبعدين هيكون فيه تفاصيل أكثر، الذكاء الاصطناعي بيعتمد على تكنولوجيا التعلم الآلي (Machine Learning)، اللي فكرتها الأساسية إننا ندي الكمبيوتر بيانات كتير جدًا، وهو يتعلم منها لوحده. مثال بسيط: لو علّمنا الكمبيوتر يميّز بين صور القطط والكلاب، هيحتاج نمده بآلاف الصور عشان يفهم الفرق ويبدأ يشتغل بنفسه.
العملية دي بتمر بكذا مرحلة أساسية:
جمع البيانات: بنجمع أكبر كمية من البيانات عشان الكمبيوتر يتعلم منها.
التدريب: بندي النظام البيانات ونخليه يتدرب عشان يتعلم الأنماط.
التطبيق: بعد ما يتعلم، نقدر نخليه يشتغل ويحل مشاكل لوحده.
التطبيقات اللي حوالينا
الصحة: تشخيص الأمراض عن طريق تحليل الأشعة.
التسوق: توصيات تناسب ذوقك الشخصي (زي أمازون).
السيارات الذاتية: تقليل الحوادث بتحليل الطريق في الوقت الحقيقي.
الأمان: كشف أي عملية احتيال في البنوك عن طريق ملاحظة الحركات المشبوهة.
التحديات والمشاكل
تحيز البيانات: ممكن الآلة تاخد قرارات ظالمة (زي التمييز في الشغل أو الانحياز لجهة عن تانية).
الغموض: صعب تفهم ليه الآلة اتخذت قرار معين ("الصندوق الأسود").
البطالة: الروبوتات ممكن تحل محل الوظائف الروتينية.
الأسلحة الذاتية: خطر استخدام الذكاء الاصطناعي في الحروب من غير سيطرة بشرية.
CAP Theorem
الـCAP Theorem واحدة من أهم النظريات الأساسية والمهمة في علوم الحاسب عامةً وفي النظم الموزعة خاصةً وبتنص على:
إن في النظم الموزعة ما ينفعش الـSystem يوفر إلا ضمانين أو خاصيتين اتنين بس في نفس ذات الوقت.
ايه اللي بتمثله الـ CAP والضمانات اللي بتقدمها ؟
الـ C بتمثل الـ Consistency، والـ A بتمثل الـ Availability، والـ P بتمثل الـ Partition Tolerance..
طب كل واحدة من دول معناها إيه؟
الـ Consistency: معناها إن كل الـClients يقدروا يشوفوا نفس البيانات في أي وقت من غير أي اختلافات، فبنقول على البيانات أنها متسقة أو Consistent
الـ Availability: معناها إن كل Request الـSystem هيستقبله مفروض يكون ليه Response والنظام يقدر يكمل شغله من غير مشاكل حتى في وجود Nodes أو Servers واقعة وفيها مشاكل.
الـ Partition Tolerance: معناه قدرة الـSystem على إنه يكمل شغله بدون مشاكل حتى في وجود مشاكل في الـNetwork Communication بين الـNodes وبعضها.
وبما إن النظرية دي بتنص على وجود ضمانين اتنين بس يتحققوا في نفس الوقت فممكن يكون عندنا الـ System حاجة من (3)
Consistency & Partition Tolerance
الـCP وده معناه إن في وجود الـParition Tolerance، الـSystem محتاج يضحي بالـAvailbility في سبيل توفر الـConsistency بين البيانات وبعضها.
وممكن نشوف مثال على ده مثلا في البنوك، اللي بنسبة كبيرة بتحتاج إن البيانات تكون متسقة ومفيهاش أي اختلاف في أي وقت الـClient هيطلب فيه ده، وده لإن الـClient مش هيحب إنه كل شوية يشوف حسابه فيه أرقام مختلفة ومتغيرة..
الإصدار الأول - ورقة وقلم 🚀
في الإصدار ده جمعنا أكتر من 50 موضوع في مختلف مجالات هندسة البرمجيات بأكتر من 170 صفحة + تصاميم بجودة عالية وكل ده بالعربي وبشكل مميز ومتقسم لفصول سهل تنتقلوا من فصل وموضع للتاني بدون مشاكل 💎
تقدروا تشوفوا النسخة كاملة من هنا كـ E-Book ، وحاولنا نخليها بسعر رمزي يناسب الجميع 👇
ولو عندكوا أي مشكلة في الدفع ، تقدروا تتواصلوا معانا وهنكون مبسوطين باننا نوفر بدايل زي InstaPay و VodafoneCash 🎁
ولو عاوزين تعاينوا جودة الـ E-Book قبل ما تشتروه ، تقدروا تحملوا النسخة المجانية واللي بتضم حوالي 30 موضوع فيما لايزيد عن 100 صفحة من هنا 😉
رؤيتنا هي إثراء المحتوى التقني العربي وجعل التعلم من خلال القراءة أمتع، وذلك من خلال إثراء المحتوى التقني باللغة العربية وتشجيع المبرمجين على القراءة بلغتهم الأم والتفكير أيضًا بها.
لذلك اتحنا الفرصة أمام الجميع للمساهمة ومساعدتنا في نشر واثراء المحتوى التقني باللغة العربية, من خلال كتابة المقالات التقنية في مختلف مجالات هندسة البرمجيات.
وجب التنويه أنه لن يتم نشر كافة الأعمال التي تصل إلينا، وإنما سيتم الانتقاء منها ما يحقق هدفنا بإثراء المحتوى التقني العربي، ولذلك قد تُطلب بعض التعديلات من الكاتب قبل النشر.
لمعرفة المزيد بخصوص :
💬 المعايير العامة لكتابة ونشر المقالات
⚡️ كيفية الإرسال
🔥 التزامات اقرأ-تِك تجاه الكتاب
يمكنكم قراءة كافة التفاصيل من هنا 👇