مدونة عمار الخوالده

قُصاصات

مجموعة من الملاحظات والأفكار السريعة

متى لا تكون تعابير Regex كافية لتحليل النصوص؟

كتبت سابقا مقالا تفاعليا يشرح Regex: مقدمة في تعلم Regex

شرحت فيه عدة أمثلة للمُطابقة (Matching) لكن ما لم يُذكر في المقال أن Regex يفشل أحيانا في معالجة بعض النصوص.

هذه القصاصة تعطي أمثلة على حالات لا يصلح فيها Regex لتحليل النصوص.

التكرار والتداخل Recursion

هذا النمط من المقال يُطابق بعض الـ HTML Tags:

1<(strong|b)>(?<tag_content>.*)<\/(strong|b)>

لكن بالنظر إلى الى النص الآتي:

1<strong>Test <b>Bold</b> text</strong>

سيتم مطابقة <strong> و </strong> لكن Test <b>Bold</b> text ستُطابق كمجموعة واحدة تحت اسم tag_content. عند معالجة نمط معين، حيث يمكن لهذا النمط أن يحتوي على نفسه مرة أخرى (كوجود HTML tag داخل HTML tag آخر) فإن Regex يفشل في مطابقتها.


Regex

متى تتجنب استخدام الـ Average لقياس أداء الانظمة

كثيرا ما يُستخدم المتوسط الحسابي (Average/Mean) عند مراقبة الأنظمة لتجميع القيّم وأخذ فكرة عامة عنها لكنه ليس أنسب عملية لتجميع البيانات دائما فهو لا يعطي صورة دقيقة عن الأداء.

مثال على قياس API Latency

لإعطاء مثال على ذلك، سنفترض أننا نقيس API Latency لأحد الأنظمة، الشكل الآتي يوضح الـ Latency لكل request (بدون أي حسابات إضافية، اعتبر ان كل نقطة على محور x هي request مختلفة):

نلاحظ من الرسم البياني أن الـ Requests متباينة في السرعة، فبعضها سريع جدا والآخر بطيء جدا، وبينهما تقع كثير من البيانات.


DevOps Observability

نظرة في الـ Infrastructure as Code - IaC

البنية التحتية (Infrastructure) هي مجموع المكونات والموارد التي تعمل معا كقاعدة لتشغيل مشروعك، كالسيرفرات المطلوبة للتشغيل أو لتخزين البيانات، والشبكات والـ IPs وإعداداتها، أو الـ Domains وإعدادات الـ DNS وغيرها.

كل جزء من أجزاء الـ Infrastructure تحصل عليه من أحد مزودي الخدمة، وإدارة هذه الموارد أو المكونات تتم عادة بالدخول إلى لوحة تحكم خاصة بكل مزود خدمة وإنشاء الموارد أو تعديلها.

فأدخل مثلا إلى لوحة تحكم مزود خدمة السيرفرات لإنشاء بعض السيرفرات والـ Firewalls وإعدادات الشبكة فيما بينها، ثم أدخل إلى مزود خدمة الـ DNS لتعديل إعدادات الـ DNS، ثم إلى مزود خدمة الإيميلات والـ SMTP… وهكذا


DevOps

ما هو الـ Transaction في قواعد البيانات؟

الـ Transaction: تنفيذ مجموعة من الـ Queries على قاعدة البيانات كوحدة واحدة - Single Unit of Work

Databases

مشاكل قياس الوقت أو المدة - Monotonic Clock

مشاكل قياس المدة باستخدام وقت نظام التشغيل وكيف تحل الـ Monotonic Clock المشكلة.

Computer Science

طرق تخزين جداول قواعد البيانات: Row-oriented vs Column-oriented

تنقسم قواعد البيانات من حيث طريقة تخزين البيانات على مستوى الجداول إلى نوعين:

  1. Row-oriented Database
  2. Column-oriented Database

هذا التقسيم متعلق بآلية التخزين في الـ Storage System.

التخزين في الـ Row-Oriented Databases

يتم تخزين القيم الخاصة بنفس الـ Entity على صف واحد بحيث تكون كلها متتالية، وهذا هو الافتراضي في قواعد البيانات المعروفة كـ PostgreSQL و SQLite.

Row-Oriented Databases

أنظمة قواعد البيانات التقليدية (PostgreSQL, MySQL) - OLTP


Databases

سجل الاستعلامات البطيئة - Slow Query Log

من الإعدادات المفيدة في MariaDB / MySQL، هي إعدادات الـ Slow Query Log،

وهي من الطرق التي تستخدم (بدون أدوات مراقبة خارجية) لمعرفة الـ Queries البطيئة في قاعدة البيانات،

يمكنك تحديد عدد الثواني التي إذا تجاوزها وقت تشغيل الـ Query يعتبر بطيئا.

خيارات تفعيل الـ Slow Query Log

توجد العديد من الإعدادات الأخرى كتحديد مسار الملف الخاص بالـ Log، أو بعض الشروط الإضافية التي يجب أن ينطبق حتى يتم تسجيل الـ Query على أنه بطيء


Databases