أعمال مختارة

المشاريع

أنظمة بُنيت لتبقى دهرا.

٠١ أنظمة موزّعة

منصة تسليم الأحداث — Webhooks موثوقة

مشروع ذاتي لتطبيق أنماط الموثوقية في أنظمة الإنتاج — Outbox ومفاتيح Idempotency وقاطع الدائرة — على خدمة Spring Boot لتسليم الأحداث.

مطوّر منفرد · مشروع ذاتي قيد التطوير رسم تفاعلي

  • Java
  • Spring Boot
  • Spring Security
  • Flyway
  • Resilience4j
اقرأ دراسة الحالة

شكل ٠١ التسليم الموثوق للأحداث

  • 2 نوعا رموز JWT — وصول قصير العمر، وتحديث منفصل
  • 3 حالات قاطع الدائرة — مغلق، مفتوح، نصف مفتوح
  • Flyway هجرات قاعدة بيانات مُرقّمة وقابلة لإعادة البناء
محاكاة للتصميم المستهدف — بعض أجزائه قيد التطوير، والقيم المعروضة ليست قياسات. اقرأ الرسم
  1. الخدمة: تحفظ السجل وحدث الإرسال في المعاملة نفسها (Transactional Outbox)، فلا يُكتب أحدهما دون الآخر.
  2. جدول Outbox: الأحداث تنتظر هنا حتى تُسلَّم — لا تضيع إن سقطت الخدمة أو تعطّل المستقبِل.
  3. المُرسِل: يسحب الأحداث المعلّقة ويرسلها مع مفتاح Idempotency، فيتجاهل المستقبِل أي تكرار.
  4. قاطع الدائرة (Resilience4j): بعد فشل متكرر يفتح ويوقف الإرسال مؤقتًا، ثم يجرّب طلبًا واحدًا (نصف مفتوح) قبل أن يُغلق من جديد.
  5. المستقبِل: نقطة الـ webhook لدى العميل. عطّلها من الزر أدناه وراقب ما يحدث.

٠٢ تكامل الأنظمة

منصة التأهيل والتقييم

منصة لتأهيل الطلبات وتقييمها بنماذج متعددة الأقسام ومرفقات كبيرة، متكاملة مع أنظمة حكومية خارجية ومصممة حول إعادة المحاولة وIdempotency.

مطوّر خلفي · مشروع عمل رسم تفاعلي

  • Java
  • Spring Boot
  • MySQL
  • Liquibase
اقرأ دراسة الحالة

شكل ٠٢ إعادة المحاولة دون تكرار

    • 1 سجل واحد لكل طلب، مهما تكررت المحاولة
    • Idempotency-Key مفتاح ثابت يرافق الطلب في كل محاولة
    • Liquibase هجرات مُرقّمة وقابلة للتتبع عبر البيئات
    رسم مبسّط ومعمّم لمشروع عمل — القيم في المحاكاة ليست قياسات. اقرأ الرسم
    1. نموذج التقديم: أقسام متعددة ومرفقات كبيرة، يُرسل كطلب واحد.
    2. المنصة: تمنح كل طلب مفتاحًا فريدًا (Idempotency-Key) قبل أي اتصال خارجي.
    3. الشبكة: الأنظمة الخارجية قد تتأخر أو يضيع ردّها — فعّل «شبكة غير مستقرة» لترى ذلك.
    4. إعادة المحاولة: بعد انتهاء المهلة يُعاد الطلب بالمفتاح نفسه، لا بطلب جديد.
    5. النظام الخارجي: يتعرّف على المفتاح المكرر ويعيد النتيجة المحفوظة، فيبقى سجل واحد لكل طلب.

    ٠٣ الجدولة والإشعارات

    تذكيرات التجديد المجدولة

    رسائل تذكير بالبريد تُطلق عبر CronJob في Kubernetes يستدعي نقطة الوظيفة مرة واحدة بمفتاح API، فتُنفَّذ مرة واحدة رغم تعدد نسخ الخدمة.

    مطوّر خلفي · مشروع عمل رسم تفاعلي

    • Java
    • Spring Boot
    • Kubernetes
    اقرأ دراسة الحالة

    شكل ٠٣ تنفيذ واحد عبر نسخ متعددة

    • N → 1 نسخ متعددة، واستدعاء واحد يصل إلى نسخة واحدة
    • API Key نقطة الوظيفة لا تقبل إلا طلبات الجدولة الموقّعة بالمفتاح
    • Event / Listener الإرسال مفصول عن الجدولة، بقوالب بريد قابلة لإعادة الاستخدام
    رسم مبسّط ومعمّم لمشروع عمل — عدد النسخ في المحاكاة توضيحي. اقرأ الرسم
    1. CronJob في Kubernetes: يستدعي نقطة الوظيفة مرة واحدة في موعدها.
    2. مفتاح API: النقطة لا تقبل إلا الطلبات التي تحمل المفتاح المخزّن في Kubernetes — جرّب «طلب بلا مفتاح».
    3. Service في Kubernetes: يوجّه الطلب الواحد إلى نسخة واحدة من الخدمة، فلا تُنفَّذ الوظيفة إلا مرة.
    4. الحدث والمستمع: النسخة المنفّذة تنشر حدثًا، ومستمع منفصل يبني الرسالة من قالب قابل لإعادة الاستخدام.
    5. بريد العميل: رسالة واحدة لكل دورة. بدّل إلى «مُجدول داخل كل نسخة» لترى البديل الذي يتجنّبه التصميم.

    ٠٤ مكتبة مفتوحة المصدر

    فلان — بيانات سعودية وهمية لـ Java

    مكتبة مفتوحة المصدر تولّد بيانات اختبار سعودية واقعية — أسماء ثنائية اللغة وأرقام جوال وهويات وإقامات وأرقام ضريبية — عبر نقطة دخول واحدة.

    مطوّر منفرد · مفتوح المصدر قيد التطوير رسم تفاعلي

    • Java
    • Maven
    • Gson
    اقرأ دراسة الحالة

    شكل ٠٤ بيانات اختبار سعودية بنقطة دخول واحدة

    SaudiFaker faker = new SaudiFaker();

    مواطن وهمي
    الاسم
    —
    Name
    —
    المدينة
    —
    الجوال
    —
    رقم الهوية
    —
    الرقم الضريبي
    —
    السجل التجاري
    —
    • 1 نقطة دخول واحدة — SaudiFaker
    • 7 أنواع بيانات — أسماء، ومدن، وجوال، وهوية، وإقامة، ورقم ضريبي، وسجل تجاري
    • ع / En أسماء بالعربية وبكتابة إنجليزية
    بيانات وهمية تُولَّد في المتصفح للتوضيح — لا تخص أي شخص أو منشأة حقيقية. اقرأ الرسم
    1. نقطة دخول واحدة: كل أنواع البيانات تخرج من SaudiFaker.
    2. أسماء ثنائية اللغة: الاسم نفسه بالعربية وبكتابة إنجليزية.
    3. الجوال والمدينة: أرقام بصيغة 05 ومدن سعودية حقيقية.
    4. الهوية والإقامة: عشرة أرقام تبدأ بـ 1 للمواطن و2 للمقيم، مع رقم تحقق.
    5. بيانات المنشأة: رقم ضريبي من 15 رقمًا يبدأ وينتهي بـ 3، وسجل تجاري يبدأ برمز المدينة.

    ٠٥ البيانات والتقارير

    تكامل Metabase للتقارير التشغيلية

    ربط الأنظمة الداخلية بمنصة Metabase عبر طبقة معالجة غير متزامنة، أثناء العمل في لوسيديا.

    مهندس برمجيات رسم تفاعلي

    • FastAPI
    • RabbitMQ
    • PostgreSQL
    • Metabase
    اقرأ دراسة الحالة

    شكل ٠٥ معالجة غير متزامنة للتقارير

    • Async المعالجة خارج مسار الطلب عبر RabbitMQ
    • FastAPI طبقة خدمة تستلم الأحداث وتمرّرها
    • PostgreSQL مخزن النتائج الذي يغذّي لوحات Metabase
    رسم مبسّط للمعمارية — أعداد العمّال والأحداث في المحاكاة توضيحية. اقرأ الرسم
    1. الأنظمة الداخلية: كل نظام يرسل أحداثه حين تقع.
    2. خدمة FastAPI: تستلم الحدث وتضعه في الطابور، فلا ينتظر المُرسِل انتهاء المعالجة.
    3. RabbitMQ: طابور يمتص الذروة ويمرّر الأحداث بالترتيب — اضغط «دفعة أحداث» لترى ذلك.
    4. عمّال المعالجة: يستهلكون الطابور بشكل غير متزامن، كلٌّ بسرعته.
    5. PostgreSQL ولوحات Metabase: النتائج تُخزَّن، واللوحات تقرأ منها مباشرة.

    ٠٦ معالجة النص العربي

    محوّل PDF إلى EPUB للمحتوى العربي

    محاولة لتحويل كتب PDF العربية إلى EPUB بتنظيف النص بدل البحث عن مستخرج مثالي، مع الحفاظ على اتجاه النص وترتيب الفقرات.

    مطوّر منفرد قيد التطوير رسم تفاعلي

    • Python
    اقرأ دراسة الحالة

    شكل ٠٦ من PDF مشوّه إلى نص يُقرأ

    • RTL اتجاه النص العربي وترتيب الفقرات محفوظان
    • خفيف بلا أدوات ثقيلة — بهدف نشره أداةً في المتصفح
    • Python مكتوب يدويًا، دون مساعدات الذكاء الاصطناعي
    الأسطر من مخرجات الاختبار الحقيقية المنشورة في التدوينة؛ خطوات التنظيف هي المسار المقترح، والمشروع متوقف مؤقتًا. اقرأ الرسم
    1. المحوّلات العامة: مبنية للغات اللاتينية، فتخرج الحروف العربية مفككة ومعكوسة وتملأ الأسطر بالفراغات.
    2. الاستخراج: نص شبه صحيح، لكن فيه أخطاء متكررة يمكن التنبؤ بها.
    3. تنظيف الرموز: الفاصلة العربية تُقرأ «ء» في آخر الكلمة — قاعدة واحدة تصلحها في كل الكتاب.
    4. عزل النص الأجنبي: المقاطع اللاتينية داخل السطر العربي تُعلَّم للمراجعة بدل أن تُفسد ما حولها.
    5. إعادة بناء الفقرات: الأسطر المقطوعة تُدمج في فقرات تتدفق على شاشة القارئ الإلكتروني.

    ٠٧ ذكاء اصطناعي

    عميل السيرة الذاتية الذكي

    نظام وكيل ذكاء اصطناعي مستقل عن مزوّد النموذج، بمكوّنات معيارية منفصلة وقابل للنشر على Kubernetes.

    مطوّر منفرد رسم تفاعلي

    • Python
    • LiteLLM
    • Docker
    • Kubernetes
    • ChromaDB
    اقرأ دراسة الحالة

    شكل ٠٧ وكيل مستقل عن مزوّد النموذج

    # the only line that changes
    model: "ollama/…"
    • 4 مزوّدات نماذج — Ollama وGroq وGemini وClaude — بتغيير إعداد واحد
    • 4 وحدات مستقلة — الحلقة، والسياق، والأدوات، والتوجيهات
    • 2 حاويتان في كل وحدة تشغيل — الوكيل ونموذج Ollama المحلي
    رسم مبسّط للمعمارية — مسار الخطوة في المحاكاة توضيحي. اقرأ الرسم
    1. حلقة الوكيل: تدير الخطوات وتقرر متى تنتهي المهمة.
    2. مُنشئ التوجيهات: يجمع التعليمات والسياق في توجيه واحد.
    3. LiteLLM: طبقة تجريد فوق مزوّد النموذج — بدّل المزوّد من الأزرار أدناه.
    4. سجل الأدوات: الأدوات المتاحة للوكيل، كل منها وحدة مستقلة.
    5. مدير السياق: يحفظ ما جرى ويغذّي الخطوة التالية، مع تخزين دائم للبيانات المتجهية.

    ٠٨ ذكاء اصطناعي · معالجة اللغة

    مصدر — منصة كشف الأخبار الزائفة العربية

    مشروع التخرج؛ منصة لكشف الأخبار الزائفة بالعربية، بدقة كشف بلغت 85٪ على أكثر من عشرة آلاف محتوى.

    مشروع تخرج رسم تفاعلي

    • Python
    • TensorFlow
    • AraBERT
    • ChromaDB
    • Flask
    اقرأ دراسة الحالة

    شكل ٠٨ معماريتان لكشف الأخبار الزائفة

    • 85% دقة الكشف بعد الضبط الدقيق لـ AraBERT
    • 10,000+ محتوى إخباري عربي في مجموعة التقييم
    • 2 معماريتان للمقارنة — ضبط دقيق، واسترجاع معزز بالتوليد
    درجة التصنيف في المحاكاة توضيحية؛ الدقة الفعلية في البطاقات أدناه. اقرأ الرسم
    1. الخبر المراد التحقق منه — نص عربي فقط.
    2. الضبط الدقيق: نموذج AraBERT مُدرَّب على أخبار زائفة عربية منتقاة، يصنّف الخبر مباشرة.
    3. RAG: يُحوَّل الخبر إلى متجه، وتُسترجع أقرب الأخبار الموثّقة من ChromaDB.
    4. نموذج لغوي عربي: يحكم على الخبر مستندًا إلى ما استُرجع، لا إلى ذاكرته وحدها.
    5. النتيجة: تصنيف الخبر، مع المصادر في حالة RAG — بدّل بين المعماريتين من الأزرار أدناه.