Chrono Mock
اللغةالعربية

اجعل ساعة تطبيق واحد تسير أسرع

تستغرق الفترة التجريبية البالغة 30 يومًا 30 يومًا لتنتهي، ما لم تستطع تحريك الوقت. والنصيحة المعتادة هي دفع ساعة النظام إلى الأمام، وهذا يتطلب صلاحيات المسؤول ويجرّ كل برنامج آخر على الجهاز معه. أما هذه الأداة فتحرّك عملية واحدة بدلًا من ذلك.

كم السرعة

اختر مُضاعِفًا بعدد صحيح. تتقدم ساعة التطبيق بهذا العدد من المرات أسرع من الساعة الحقيقية، منذ اللحظة التي تبدأ عندها الجلسة.

المُضاعِفتصبح الدقيقة الحقيقية الواحدةمفيد لـ
x60ساعةالمهام الساعية، ومهلات انتهاء الجلسات، وأعمار الرموز
x1440يومانقلاب الأيام، وفترة تجريبية مدتها 30 يومًا في نصف ساعة
x43200فترة تجريبية مدتها 30 يومًامشاهدة الفترة التجريبية كلها تنتهي وأنت تقرأ هذا
x525600سنةالتجديدات السنوية، وانتهاء الشهادات
x1000000نحو 1.9 سنةالحد الأقصى
# ابدأ من الوقت الحقيقي الآن، وشغّل يومًا كل دقيقة
chrono run "C:\apps\test.exe" --mode x1440

# ابدأ من تاريخ تختاره وسرّع منه
chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440

# ثبّت الساعة تمامًا بدلًا من ذلك
chrono run "C:\apps\test.exe" --mode frozen
تسجيل لجلسة تقود تطبيق Windows آخر. النافذة اليسرى هي Chrono Mock وساعة التطبيق عند 2038-01-19 تصعد بستين ضعف السرعة الحقيقية بينما الساعة الحقيقية بجانبها لا تتحرك إلا بضع ثوانٍ. والنافذة اليمنى هي التطبيق قيد الاختبار، وسجل جلسته الخاص يُظهر أنه بدأ في 2038-01-19 ويعمل منذ دقائق مقابل نحو نصف دقيقة فقط في الغرفة.
جلسة حقيقية تقود تطبيقًا حقيقيًا. لاحظ النافذة اليمنى: سجّل البرنامج قيد الاختبار بدايته في 19 يناير 2038، واستمرت جلسته دقائق بينما تحركت الساعة في الغرفة ثوانيَ. وتُغيَّر السرعة أثناء التشغيل دون إعادة تشغيل أي شيء.

الجزء الذي يوقع الناس: الساعات اثنتان

تسريع ساعة الحائط - ما تعيده DateTime.Now وما يماثلها - لا يسرّع بذاته العدّ التنازلي. فهذان سؤالان مختلفان يستطيع التطبيق أن يوجّههما إلى نظام التشغيل، وكثير من البرمجيات تقيس «الثلاثين يومًا» بالثاني لا بالأول.

ولهذا فإن محور المدد - عدّادات الدقّات والنوم والانتظار والمؤقّتات - مفتاح منفصل:

  • --scale-duration ينقل أيضًا عدّادات النبضات وفترات السكون والمؤقتات إلى ساعة الجلسة، بينما تُعدّ انتظارات الكائنات وتبقى بطولها الحقيقي. ومن دونه يندفع x1440 بالتقويم إلى الأمام بينما يستغرق مؤقت الخمس ثوانٍ خمس ثوانٍ حقيقية - إلا المؤقت المضبوط على تاريخ ووقت محددين، فهو يتبع ساعة الجلسة في كل جلسة.
  • ويضاعف --scale-qpc العدّاد عالي الدقة إضافةً إلى ذلك. وهو الموضع الذي تقرأ منه monotonic في Python 3.13+ وStopwatch في .NET وnanoTime في Java الزمن المنقضي، وهو معطّل افتراضيًا لأن مضاعفته زعزعت الرسم أثناء الاختبار.

وإذا بدا أن المُضاعِف لا يفعل شيئًا بالعدّ التنازلي فهذا هو السبب في الغالب.

# تطبيق مؤقّت: سرّع التقويم والعدّادات التنازلية معًا
chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration

# تطبيق Python أو .NET يقيس الزمن المنقضي بالعدّاد عالي الدقة
chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc

تغيير السرعة دون إعادة تشغيل

يمكن تغيير المُضاعِف في منتصف الجلسة، وتُعاد تثبيت الساعة بدل أن تقفز، فلا ترجع إلى الوراء حين تنخفض السرعة. ويمكنك أيضًا القفز بالساعة مباشرةً - إلى الأمام، أو إلى الوراء كما يفعل الحاسوب المحمول بعد المزامنة مع خادم الوقت، وهي الحالة التي تكسر كل ما يقيس الزمن المنقضي دون حارس.

# شغّل بمُضاعِف 60، ثم بدّل إلى 1440 بعد ثانيتين
chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440

# شغّل، ثم اقفز بالساعة إلى لحظة تختارها بعد خمس ثوانٍ
chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00

ما لن تفعله

  • لا تمسّ ساعة النظام. وهذا هو المقصود لا قيدًا - لكنه يعني أن أي شيء يقرأ الوقت من خادم أو قاعدة بيانات أو جهاز آخر لا يتأثر، وسيخبرك التدقيق حين يحدث ذلك.
  • القفزة تغيّر ما يراه التطبيق، لا وقت استيقاظه. فترات السكون والمؤقتات التي سُلّمت إلى النواة تحتفظ بالطول الذي أُعطيته عند ضبطها. معظم التطبيقات تستطلع الساعة، لذا تنجح القفزات عمليًا - لكن ليس في جميعها.
  • لا تبطّئ الوقت. المُضاعِفات أعداد صحيحة من واحد فصاعدًا، إضافةً إلى ساعة مجمّدة عند الصفر.

ولا ينبغي أن تفترض هل وصل شيء من هذا إلى تطبيقك. تقول الجلسة ذلك ←

جرّبه