صفر
حاسبة Material 3 عصرية وقابلة للتخصيص بعمق على أندرويد، منشورة على Google Play — أوضاع أساسية وعلمية، ومحوّلات مدمجة، وخمس سمات مصمَّمة يدويًا، ودعم كامل للكتابة من اليمين لليسار عبر ١١ لغة.
- السنة
- ٢٠٢٦
- النوع
- Personal Project
نظرة عامة
صِفر (تعني الصفر بالعربية، وهي أصل كلمة cipher الإنجليزية) حاسبة Material 3 لأندرويد، منشورة على متجر Google Play. تجمع بين محرّك تعبيرات مكتوب يدويًا وتخصيص عميق: أوضاع أساسية وعلمية، وأربعة محوّلات مدمجة، وخمس سمات مخصّصة إضافةً إلى Material You، وتبديل لغة فوري داخل التطبيق عبر ١١ لغة مع دعم كامل للكتابة من اليمين لليسار.
التحدي
تبدو الحاسبة أمرًا بسيطًا حتى تبدأ بتحليل مدخلات حقيقية. فتعبيرات مثل 5sin(30) و2(3+1)، والأُسس يمينية الارتباط، والمضروب، والسالب الأحادي يجب أن تُحسب كما يتوقّعها المستخدم تمامًا — كما يجب أن يختفي ضجيج الفاصلة العائمة مثل sin(π) = 0.0000001 دون تزييف النتيجة.
وإلى جانب صحّة الحساب، التطبيق قابل للتخصيص بكثافة ومُعرَّب بالكامل. خمس سمات، وأربعة تخطيطات للوحة المفاتيح، وأوضاع فاتح / داكن / حسب النظام، و١١ لغة بدعم RTL، يجب أن تبقى جميعها متّسقة — وأن تتبدّل فوريًا دون إعادة تشغيل التطبيق.
القرارات المعمارية والتقنية
صِفر وحدة Gradle واحدة ضمن dev.gaddal.sifr، مقسّمة إلى أساسيات في core/ وحزم ميزات مستقلّة في feature/ — الحاسبة، والسجل، والإعدادات — لكلٍّ منها طبقتا domain وUI على حلقة MVI (حالة · إجراء · حدث).
مسار الحساب
- كتابة التعبير: يعدّل
ExpressionWriterالنصّ الخام (المؤشر، وتحديد المدى، والضرب الضمني، والحذف الذكي). - التحليل والتقييم: يُحوّل
ExpressionParserالنصّ إلى رموز، ثم يحلّهExpressionEvaluatorمكتوب يدويًا بأسلوب recursive-descent يراعي أولوية المعاملات والأقواس والسالب الأحادي. - الاستمرارية والحقن: تخزّن Room سجلّ العمليات، ويحفظ DataStore كل التفضيلات، ويتولّى Koin حقن التبعيات، ويدير Jetpack Navigation 3 التنقّل.
السمات والتعريب
خمس سمات مصمَّمة يدويًا إضافةً إلى Material You، وأربعة تخطيطات للوحة المفاتيح، و١١ لغة بدعم كامل للكتابة من اليمين لليسار، كلّها قابلة للتبديل فوريًا دون إعادة تشغيل، مع حالات أخطاء مُعرَّبة ومُصنّفة للقسمة على صفر والنطاق والطفحان وأخطاء الصياغة.
الأثر والنتائج
- منشور ومُتاح على متجر Google Play (الإصدار 1.3.0)، مع إعادة تصميم كاملة للإصدار 2.0 مُجهّزة داخل المستودع.
- مُقيِّم recursive-descent مكتوب يدويًا مع تنظيف دقّة IEEE-754 —
sin(30°) = 0.5وsin(π) = 0دون ضجيج زائد. - مُعرَّب إلى ١١ لغة بدعم كامل للكتابة من اليمين لليسار وتبديل لغة فوري دون إعادة تشغيل.
- خمس سمات مصمَّمة يدويًا إضافةً إلى Material You، وأربعة تخطيطات للوحة المفاتيح، وتحويل عملات يعمل دون اتصال.