هذا مشروع حر مفتوح المصدر FLOSS ذو حقوق نسخ ممنوحة وفق بنود رخصة "وقف" العامة يهدف لتوفير كل ما يتصل بدعم التقويم الهجري على المستويات التالية
واجهة رسومية سهلة الاستخدام
مكتبة عالية المستوى توفر كل ما يريده أي تطبيق يتصل بهذا الموضوع
مكتبة دنيا توفر كل ما يتصل بالحسابات والتحويل بن الهجري والجريجوري (الميلادي)
نستخدم خوازمية خاصة من تصميمي (مؤيد السعدي). هذه الخوارزمية تستخدم حساب الأعداد الصحيحة أي أنه (وعلى عكس حسابات الفاصلة العائمة) لا يوجد أي نوع من التقريب. كما أنها تسمح بتغطية طيف واسع من السنين (مثلاً من العام الأول للهجرة إلى العام الهجري ٩٩٩٩ أي العام الجريجوي ١٠٣٢٢ بكل سهولة وهذا ليس الحد النهائي به هو مجرد مثال والحد النهائي أكبر بكثير)
هذه الخوارزمية لها ثلاث معاملات p و q و a. حيث p/q هي النسبة بأبسط صورة بين الأشهر الهجرية التامة (ذات ٣٠ يوماً) والأشهر الهجرية القصيرة (ذات ٢٩ يوماً)
في السنة الواحدة أما a فهي إزاحة لضبط اختيار البداية.
وحيث أننا لم ندخل p/q على شكل عدد نسبي محدود المنازل يمكن لهذه الخوارزمية إعطاء دقة يقينية في الحساب. إلا أن الحصول على هذه المعاملات لا يأتي إلا بالتجريب والملاحظة الذي قد يدخل فيه الخطأ كما أن مجرد افتراض أن هناك نسبة بين هذه الأشهر ليس يقينياً.
إذا افترضنا أن هناك نسبة عددية بين الأشهر فهذه الخوارزمية تصبح يقينية إذا علمت النسبة.
تختلف هذه الخوارزمية عن خوارزمية EMACS الشائعة بان أطوال الشهور غير ثابتة، حيث في خوارزمية EMACS شهر رمضان في كل السنين ٣٠ يوما. وتختلف عن خوارزمية أم القرى في استخدامنا لحسابات الفاصلة العائمة. انظر آخر الصفحة للمزيد من التفصيل.
الواجهة الرسومية الاولية تظهر الشهر الهجري كاملاً وتحت كل يوم هجري ترى اليوم الميلادي بخط خفيف كما في الشكل
تستطيع التحرك سنة سابقة أو لاحقة أو شهراً سابقا ولاحقا. كما تستطيع القفز لعام هجري معين أو كتابة عام ميلادي وتنقر زر التحويل.
تستطيع إغلاق البرنامج ويظل يعمل في لوحة النظام tray
في منطقة التواصل (تلك التي توضع غالبا قرب الساعة)
يظهر فيه اليوم الهجري في السطر الاول من الشهر الهجري في السطر الثاني (في الصورة ١٩ ربيع أول)
لمعرفة التفاصيل قم بالتأشير عليه
لعرض البرنامج مرة أخرى انقر على هذه الأيقونة بالزر الأيسر، ولعرض القائمة انقر بالزر الأيمن
توفر هذه المكتبة الوظائف التي يحتاجهة أي برنامج وفق تصميم موجه للكائنات OOP يسهل عمل برامج توظف التقويم الهجري بكل سهول. حيث توفر مثلاً مصفوفة للشهر الهجري بكل المعلومات الازمة وتسمح بتحديد أي يوم كبداية للسبوع وتحديد اتجاه تعبئة المصفوف من اليمين لليسار أو بالعكس. إن عمل أي واجهة جديدة للبرنامج يفترض أن لا يشكل أي صعوبة.
توفر هذه المكتبة الوظائف الاولية مثل تحويل أي يوم هجري إلى التقويم المطلق (عد الأيام) أو التقويم الجريجوري أو إيجاد عدد أيام شهر معين أو إيجاد عدد الأيام بين أي شهرين
طبعاً لا يغني أي برنامج مهما كان دقيقاً عن رؤية الهلال.
اما لماذا نهتم بالتقويم الهجري؛ فهذا سؤال بديهي، هناك الكثير من الخطب والمقالات التي تحث على التمسك بالتقويم الهجري وتفصل في ذلك، إليك بعضها
التقويم الهجري تقويم إجرائي يقوم على الملاحظة (بالرؤية) لأحداث دورية واضحة. يتم إعادة ضبطه في كل سنة مرتين.
في الحقيقية التقويم الميلادي ليس أقل اضطراباً إلا في الاصطلاح الذي وضعه أحد القسيسين لما يسمونه “البابا” جريجوري الثالث عشر (عام ١٥٨٢) وليس وفق الحقائق العلمية.
أي أن التقويم الجريجوري هو تقويم تقريبي وفوق ذلك لا يعاد ضبطه بشكل دوري مع الحقائق الفلكية، جاء لتصحيح خطأ أكبر في تقويم يوليوس قيصر Julian الذي تم اعتماده كتقويم لاهوتي نصراني بقرار من البابا يوحنا الأول John I في عام ٥٢٥ ميلادية.
أقتبس من كتاب “حتى لا ندخل جحور الضباب” (الذي لم أنته من تأليفه):
لم يعطي هذا الراهب التقويم رقم السنة نسبة للإمبراطور ولا إلى روما التي كانت أطلالاً في حينه بل نسبة للعام الذي كان يشاع في حينه بأنه العام الذي ولد فيه سيدنا عيسى وعلى حد تعبيره “هو العام الذي تجسد فيه الإله مولوداً”، فكان تقويمه يحمل العنوان “anno Domini nostri Jesu Christi DXXXII” أي “في عام ربنا المسيح عيسى ٥٣٢” على حد تعبيره.
انتهى الاقتباس
ذاك التقويم يخطئ بمعدل ٣ أيام كل ٤٠٠ سنةتقريباً! لذا جاء جريجوري ليحذف يوماً من كل رأس ثلاث قرون من بين أربعة. ويقفز ١٠ أيام تعويضاً عما فات من سنين لم تحذف فيها تلك الأيام الزائدة! ولم يعتمد التقويم الجريجوري من فوره بل بعد ١٧٠ سنة. فهل ننتظر “بابا” آخر يخبرنا بأن علينا عمل قفزات أخرى في التقويم. وبالمناسبة إن الرأي السائد بين الدارسين في الغرب بأن سيدنا عيسى بن مريم ولد في العام الرابع قبل الميلاد أو قبل ذلك (أي ولد قبل مولده المزعوم بأربع سنوات على الاقل)
الموقع الرسمي للبرنامج هو http://hijra.ojuba.org
يمكن تنزيل آخر نسخة على شكل أرشيف مضغوط من موقع تنزيل الملفات الرسمي الخاص بأعجوبة www.ojuba.org/downloads
يمكن الحصول على البرنامج بواسطة SVN عبر الأمر التالي
svn co --username=anonymous --password=anonymous http://svn.ojuba.org/hijra
بالنسبة لخوارزمية Emacs المستخدمة في أغلب البرمجيات والمواقع المعروفة (ومنها مكتبة ITL) من المؤكد أن خوارزمية هجرة تتفوق عليها ويمكن ملاحظة ذلك من خلال تجربة شهر رمضان وشوال فيها لتدرك أن رمضان دائماً ٣٠ يوماً وشوال دائماً ٢٩ يوماً في حين أن الواقع غير ذلك. أما في هجرة فالأيام تتوزع بالعدل.
المقارنة مع خوارزمية أم القرى صعبة لأن موقع مدينة الملك عبد العزيز للعلوم والتقنية ينشر جداول فقط. وبالنظر للجداول نجد أنها تشبه هجرة في أن عدد أيام الشهور تختلف من شهر لآخر، إلا أن النتائج مختلفة. ام القرى تعتمد على ما يبدو على حسابات الفاصلة العائمة (كسور بها عدد ثابت من المنازل العشرية مضروبة في عشرة مرفوعة لقوى مختلفة) متعلقة بتقدير وقت الرؤية بناءً على حسابات لا تصلح إلا في فترة زمنية معينة (مثلا في الفترة بين الاعوام الهجرية ١٣٥٦
إلى ١٥٠٠ وخارج هذه الفترة يكون التقدير به خطأ لا يمكن تجاهله). خوارزمية “هجرة” تعاني من تقدير الثوابت لا من تقدير الحسابات فالحسابات في هجرة مبنية على الأعداد الصحيحة دون تقدير وهذا لا يعني أن خوارزمية “هجرة” أفضل من خوارزمية أم القرى، لكنه يعني أن خوارزمية هجرة تعمل على فترات غير محدودة وبنفس الدقة.
تقوم خوارزمية أم القرى على اعتبار الشهر ٢٩ يوم إذا تحقق الشرطان الآتيان
فإذا لم يتحق أحدهما كان الشهر ٣٠ يوماً.
ولأن القيام بحسابات توقع الاقتران وغروب القمر تتطلب الكثير من الوقت يتم تخزين جدول بالبيانات التي تم حسابها بشكل مسبق (طبعاً الجدول محدود يعني من الفترة كذا إلى كذا)
مصادر الخوارزميات الاخرى
خوارزمية أم القرى
خوارزمية Emacs
-
في
PHP بواسطة خالد الشمعة
نقاش
السلام عليكم ورحمة الله وبركاته … أحببت أن أكون أول من يبارك لك على إنتهاءك من هذا المشروع وأتمنى أن ﻻ يكون سوى البداية لمشاريع أخرى … الله يعطيك العافية ونطمع منك المزيد … أخوك أبو محمد …
مبروك علينا و على كل مسلم لينوكساوي التألق و الرقي دائما ونحن في انتضار اعاجيب اعجوبة و فقك الله الى الخير
في البريمج أسماء الأيام والشهور بها أخطاء إملائية (الهمزات). وماذا عن كتابة المكتبة بسي (higri.py) ليتاح استخدامها في طيف أوسع من البرامج، وربما استبدال خوارزمية مكتبة الأدوات الاسلامية بها ما دامت خوازميتك أفضل كما تقول (أنا لم أختبر لا هذه ولا هذه بشكل أحكم معه على دقتهما).
أخي خالد
بالنسبة لخوارزمية ITL فهي مبنية على خوارزمية EMACS بالأساس وتعاني من نفس عيوبها في كل السنوات شعبان 29 ورمضان 30 وشوال 29 وهكذا
وهناك خيار يسمح بخوارزمية أم القرى لكن ليس بالكامل فقط في جدول محدود السنين أي أنه لا يقبل سوى تواريخ في مجال 50 سنة على ما أذكر
أما سي فهي فكرة جيدة لكنها ليست ذات أولوية لأن أغلب تطبيقات gdesklets superkaramba plasma تستعمل python ولا تدعم سي
أما الأخطاء الإملائية فهي غير موجودة الهمزات موجودة في مكانها، دقق النظر في الصورة لعل صغر الخط هو ما دفعك لقول ذلك
السلام عليكم،
أرجو أن تستخدم هذه الخوارزمية في ITL.
كنت أود أن أعمل حزمة لDebian لكن تقابلني مشكلة أن رخصة وقف لم تترجم للإنجليزية بعد.
“الأول” (بعد “ربيع”)، و”الأربعاء”؛ كلاهما دون همزة.. هذا مما ظهر بالصورة فقط!
أنا سالت شخص يحمل ماجستير في اللغة العربية وقال أنها صحيحة، ذلك لأنها تعامل معاملة العلم. لكن لا مانع من أن أسأل منهم أعلى علما، هل لديك روابط تدل على صحة كلامك
غريب بالواقع استدلال صديقك هذا؛ فهو عليه لا معه! لأن كل الأسماء (ومنها الأعلام طبعاً) في العربية تُكتب بهمزة قطع؛ إلا الأسماء العشرة الشهيرة المُستثناة، وهما ليستا منهم.
على كل حال، ورغم ثبوت هذه القاعدة الشهيرة، لكن هاكَ رابطاً مما عثرت عليه للتو: http://www.myaar.net/vb/showthread.php?t=44702
وهذا ممَّا اقتبسه الرجل من أحد الكُتب: * همزة القطع في أول الكلمة:- في الأسماء:
- جميع الأسماء : التي تبدأ بالهمزة ما عدا الأسماء العشرة المستثناة ، نحو : أحمد ، إبراهيم ، أخ ، أخت . قال تعالى : ( ومبشرا برسول من بعدي اسمه أحمد ) ، وقال : ( ووصى بها إبراهيم بنيه ويعقوب ) ، وقال : ( وله أخ أو أخت فلكل واحد منهما السدس ) .
والأسماء المُستثناة بالمناسبة، هيَ:
“اسم، ابن، ابنة، اثنان، اثنتان، امرؤ، امرأة، است، ابنم، ايم الله” بالإضافة لتثنيتها مثل: (اسمان، ابنان)، ونسبتها مثل: اسمية…
ملاحظة: “اثنين” المُستثنى هو “رقم اثنين”، لا “يوم الإثنين”؛ أما ذاك فتُقطع همزته للتفريق بينهما. أي أن كل أيام الأسبوع في برنامجك مقطوعة الهمزات.. والله أعلم..
عذرا منك أخي ظننتك تتحدث عن همزة “الإثنين” لا همزة الأربعاء، أي ظننتك تريد حذف الهمزة لا اثباتها لاحظ عبارتك
في البريمج أسماء الأيام والشهور بها أخطاء إملائية (الهمزا
أما همزة الأربعاء فأنا أعرف أنها همزة قطع وتلك سقطت سهواً مشكور على التنبيه
تم التعديل في إصدارة svn رقم ٦
ذاك خالد حسني، لا أنا! أنا صاحب هذه المشاركة: “الأول” (بعد “ربيع”)، و”الأربعاء”؛ كلاهما دون همزة.. هذا مما ظهر بالصورة فقط!
فهمت إذن كلام صديقك إن كان يتحدث بشأن “الإثنين”؛ صحيح تماماً..
عظيم جداً، أشكرك..
مبروك أخى الكريم على البرنامج ولكن المباركة الحقيقية تكون لجميع المستخدمين وننتظر منكم المزيد وموفق لإستخدام رخصة وقف
مبروووووك
ما شاء الله و تبارك الله
شئ جميل جدا و رائع جدا
تقنية إسلامية
أحب المزج بين الدين و العلم و التقنية ..
فليتعلم المسلمون منكم ..
و أعجبنى الرد على أنصار التقويم الميلادى العليل الملئ بالأخطاء الفلكية و الرياضية .
التغيير قادم و الإسلام قادم ..
الحمد لله
جزاك الله خيرا اخي الكريم … الذي اعرفه ان التقويم الميلادي يعتمد في حسابه على دوران الارض حول الشمس اي تقويم شمسي … بينما يعتمد التقويم الهجري على دوران القمر حول الارض اي تقويم قمري … في حين يعتمد تقويم الهندوس القديم على ظهور وافول بعض النجوم أي تقويم نجمي ان صح التعبير … وجميع التقاويم الاخرى الموجوده لا تخرج عن هذه الظواهر الكونية في حساباتها .. ولكن تختلف في تاريخ بدياتها طبقا للخلفية الدينية لها … ربما كان فهمي خاطئا … لكن ما اقول إلا جزى الله خيرا الاخ مؤيد
أخي التقويم مجرد اصطلاح وادعاء
مثلاً التقويم العبري يفترض أنه قمري، لكن الفصول ثابتة فيه كما الشمسي لأنهم يحشرون شهراً إضافياً إلى السنة يعني تكون السنة ذات 13 شهراً قمرياً أحياناًَ (بشكل دوري كل 19 سنة أو ما شابه) حتى يجعلوا عامهم الذي يفترض أنه قمري بطول العام الشمسي الذي يفترض أنه أطول
الفراعنه كان عامهم الشمسي 12 شهراً كل واحد 30 يوم و 5 أيام إجازة غير تابعة لأي شهر وكل أربع سنوات تكون الإجازة 6 أيام
وهكذا
لكن ما مدى مطابقة كل واحد للواقع أي للطول الفعلي للسنة الشمسية فإن أدق تقويم شمسي معروف هو الجلالي، والحديث يطول
رائع أخي مؤيد رائع .. قمت بطرح فكرة إضافة برنامج هجرة في توزيعة أوبنتو عبر جلسات العصف الذهني لأوبنتو ويمكن للجميع تأييد الفكرة على الرابط :
http://brainstorm.ubuntu.com/idea/7917/
مبروك الإفتتاح + ليكن الله في عونكم
السلام عليكم ورحمة الله
البرنامج رائع ومتقن
ولكن ملاحظة بسيطة المفروض ان البرنامج يحدث التاريخ مع بداية اليوم الجديد
وشكراً
تستطيع النقر على زر التحديث (ريثما يتم إضافة هذه الميزة)
لكن لاحظ أن الانتقال إلى يوم هجري جديد يفترض أن لا يكون الساعة الثانية عشرة ليلا بل يبدأ بعد غروب الشمس (لهذا نصلي التراويح بعد العشاء في الليلة التي تسبق نهار الاول من رمضان).
لكن البرنامج يعطي اليوم كما هو قبل الغروب وهذا ما تعارف عليه الناس في التقويم.
أحسنت كلام رائع ، زادك الله من علمه
ولكن عند النقر على زر تحديث لا تتحدث أيقونة البرنامج التي بجانب الساعة
آسف على كثرة الملاحظات ، لكني معجب بالبرنامج وأرغب أن يكون في أحسن حال في الإصدار النهائي
جزيت خيراً
تم إصلاح هذه المشكلة في الإصدار 9 على svn
مشكور على فحصك للبرنامج. ونحن بحاجة لأمثالك حتى يتحسن البرنامج
ألف مبروك أخي مؤيد وجازاك الله كل خير.. آسف عن تأخري في الرد لكني في الواقع لم أعلم باكتمال البرمجية إلا اﻵن..توقعتك أن تعلن عنها في القائمة البريدية ﻷوبنتمي قصد ضمها للمشروع كما أعلنت عن الفكرة منذ البداية.
ملاحظة: متى يتم إعداد نسخة إنجليزية من ترخيص “وقف”؟
جازاكم الله كل خير
اليوم يعطيني 18 جماد الآخر، بينما البرمجيات التي تستخدم خوارزمية أم القرى تعطى اليوم الصحيح.
فهل هذا طبيعي؟
وما أدراك أن ما تعطيه الخوارزميات الأخرى هو “الصحيح”! إن الفارق هو يوم واحد وهذا شيء طبيعي
إن التقاويم المطبوعة في السعودية تستخدم خوارزمية أم القرى لهذا ستتطابق البرامج المعتمدة عليها مع التقاويم المطبوعة لكن السؤال هو ما مدى توافقهما مع الواقع أي مع رؤية الهلال.
سأعطيك مثال انظر إلى رمضان الفائت وبحسب هذه الصورة http://www.moonsighting.com/1428rmd.html فإن هلال رمضان للعام 1428 كان يستحيل أن يشاهد حتى باستعمال الوسائل المساعدة في يوم الثلاثاء 11 أيلول 2007 مما يعني أن يوم 12 هو اكمال عدة شعبان و 13 أيلول هو الاول من رمضان وقد أكد هذا المراقبون المسجلون في أسفل الصفحة من جميع أنحاء العالم
أي أن ما يعطيه برنامج هجرة عن ذلك اليوم صحيح
التقويم الذي أقارن عليه مطبوع في مصر و -غالبا- هذه جداول المساحة المصرية. أنا أتحدث عن الصحة النسبية، يعني برنامج سيضيف تاريخ اليوم على المقالة التي أكتبها. لا يهمني هل هو دقيق أم لا لكن يهمني أن يعطي نفس التاريخ الذي سيستخدمه الآخرون للإشارة إلى هذا اليوم، أعتقد فهمتني.
بالمناسبة، idate يعطي نفس النتيجة مثل هجرة في مثالك، سواء استخدم خوارزمية أم القرى أو الأخرى.
ما تتحدث عنه يسمى bug for bug compatibility أي التوافقية حتى في العثرات في هذه الحالة استخدام أم القرى أفضل من استخدام هجرة فالأولى هي نفس الجدوال التي تطبع (في السعودية) والكلام ذاته ينطبق على هيئة المساحة المصرية والتقاويم المطبوعة في مصر فإذا أردت تقوم متوافق مع التقاويم المتداولة بين الناس عليك تنزيل جدول بها وعمل برنامج يعرض ويحول بناء على الجدول.
على العكس من ذلك *هجرة* هي بذاتها خوارزمية فريدة التوافقية فيها ليست هدفا صممتها لتحل مشكلة في خوارزمية EMACS مع الحفاظ على عموميتها
خوارزمية هجرة تضبط عبر 3 معاملات في الملف hijri.py: النسبة p/q وهي النسبة بين عدد الأشهر التامة والأشهر العادية والمعامل الثالث هو a وهو مجرد إزاحة (ربما يصلح أن يكون مكان المراقبة). أنا قمت بضبطها بعد عدة تجارب الكثير منها مؤتمت
تغير القيم p/q يحتاج لدراسة كبيرة كما أن نسبة الخطأ في القيمة التي اخترتها هو 0.00003 يوم أي أقل من ثلاث ثوان.
أما تغير a فأنا لدي بدائل تستطيع تجربتها. القيم المرشحة هي 16 48 65 أنا اخترت العدد 48 دون الكثير من الدراسة يمكنك تجربة البدائل الأخرى.
لقد وجدت bug
[muhammed@myhost hijra]$ python HijriApplet.py Traceback (most recent call last):
ImportError: No module named egg.trayicon
هذه ليست bug هذه تعني أن لديك حزمة ناقضة وهي الحزمة التي تسمح ل python بعمل أيقونات في لوحة النظام ربما يكون اسمها gnome-python2-libegg وهي جزء من gnome-python2-extras طبعا أظن انك تستخدم أوبنتو لأن هذه الحزمة مثبتة في فيدورا تلقائيا.
إليكم الحزم الجاهزة لفيدورا http://www.ojuba.org/downloads/development/i386/os/Packages/hijra-applet-0.1.8-1.oj1.noarch.rpm http://www.ojuba.org/downloads/development/i386/os/Packages/hijra-python-0.1.8-1.oj1.noarch.rpm
إذا كان أي شخص من مستخدمي أوبنتو يريد عمل حزم deb فهو على الرحب والسعة يمكنه الاستفادة من ملف spec المستخدم في بناء حزم rpm ليعمل ما يكافؤه http://www.ojuba.org/downloads/development/source/SRPMS/hijra-0.1.8-1.oj1.src.rpm
السلام عليكم هل برنامج هجرة يعمل مع برنامج التشغيل النوافد المعروف ؟ وإذا كان كذلك فما هي طريقة تحميله وعمله والسلام عليكمورحمة الله وبركاته
أخي محمد، الخوارزمية وملف hijri.py و HijriCal.py يعملان على ويندوز لكن الواجة الرسومية فهي تحتاج PyGTK+ وتوفيره في ويندوز صعب. لكن هذا الكود قصير وهو مجرد لف للملفان الآخران في غلاف رسومي لذا من السهل كتابة بديل عنه في Tkinter أو wx وجعله يعمل على ويندوز. لكني مشغول جدا لعمل ذلك.