أسئلة وأجوبة
إجابات قصيرة، بما فيها تلك المتعلقة بما لن تفعله هذه الأداة.
هل يغيّر ساعة حاسوبي؟
لا، ولن يفعل - فهذا هو جوهر الأداة كله. الوقت المُزاح لا تراه إلا عملية واحدة والعمليات الفرعية التي تبدؤها. وتواصل تسجيلات دخولك إلى النطاق وشهاداتك وWindows Update وكل تطبيق آخر رؤية التاريخ الحقيقي طوال الوقت.
هل أحتاج إلى صلاحيات المسؤول؟
ليس لتشغيله. لا تحتاج ملفات zip إلى برنامج تثبيت ولا تكتب شيئًا في السجل وتعمل من مجلد يمكنك حمله على ذاكرة USB. أما ملف .msi الاختياري فيحتاج إلى صلاحيات المسؤول مرة واحدة للتثبيت، لأنه يُثبَّت لكل حساب على الجهاز.
هل سيعمل مع تطبيقي؟
الجواب الصادق أن لا أداة من هذا النوع تستطيع أن تعد بذلك مسبقًا - ولذلك تقيسه هذه الأداة. فكل جلسة تنتهي بحكم (يعمل، يعمل جزئيًا، لا يعمل)، وبقائمة قنوات الوقت التي قرأها التطبيق فعلًا مع عدد الاستدعاءات لكل منها، وبقائمة القنوات التي لم تُغطَّ.
قد يقرأ التطبيق الساعة عبر طريق لم يعترضه شيء - من خادم، أو من قاعدة بيانات، أو عبر طبقة في بيئة التشغيل. وحين يحدث ذلك تُخبَر به بدل أن تُترك تفترض أن الاختبار نجح.
هل يعمل مع تطبيقات .NET وJava وPython؟
جزئيًا، والفروق مهمة. الثلاثة موسومة بأنها تجريبية: تعمل على أهداف الاختبار، ولم تُختبر على نطاق واسع، والتدقيق المدمج هو مرجعك لا هذه الفقرة.
- .NET - ساعة الحائط ومنطقة الجلسة الزمنية مُغطّاتان. ويبقى
Stopwatchعلى العدّاد الحقيقي عالي الدقة ما لم تختر مضاعفته. - Java - ساعة الحائط والزمن المنقضي ومنطقة الجلسة الزمنية مُغطّاة. وتصل المنطقة إزاحةً ثابتة بتسمية مثل
GMT+05:30. - Python -
time.timeوdatetimeمُغطّيان. أماperf_counter، وmonotonicفي Python 3.13 وما بعده، فيعتمدان على العدّاد عالي الدقة ما لم تختر تفعيل ذلك.
هل يعمل مع تطبيقات Electron وChromium؟
نعم، عبر آلية مختلفة. فساعتهما تعيش في عملية عرض معزولة لا يصل إليها الحقن، لذا يُشغَّل التطبيق بمنفذ لتصحيح الأخطاء وبملف تعريف نظيف مؤقت، وتوضع واجهات الوقت في JavaScript الخاصة به على ساعة الجلسة - بما في ذلك داخل Web Workers، حيث يعيش المؤقّت غالبًا في الواقع.
قيد واحد يستحق المعرفة: تعمل العملية الرئيسية لتطبيق Electron داخل Node الذي لا تصل إليه الجلسة، فتحتفظ بالساعة الحقيقية، ويذكر التقرير ذلك. أما الصفحات وعمّالها (workers) فتقرأ المنطقة الزمنية للجلسة.
كيف يعمل وضع Chromium وElectron - ما يصل إليه وما لا يصل، ولماذا يُعدّ منفذ تصحيح الأخطاء الجزء الذي ينبغي الانتباه إليه.
هل أستطيع جعل الوقت يمرّ أسرع من الوقت الحقيقي؟
نعم. اختر مُضاعِفًا بعدد صحيح فتعمل ساعة التطبيق بتلك السرعة - فـx1440 يحوّل اليوم إلى دقيقة، فتنتهي فترة تجريبية مدتها 30 يومًا في نحو نصف ساعة. ويمكنك أيضًا تجميد الساعة، أو القفز إلى الأمام وإلى الخلف في منتصف الجلسة.
والعدّادات التنازلية والمؤقّتات على محور منفصل، وتسريعها مفتاح منفصل، لأن مضاعفتها تغيّر سلوكًا يعتمد عليه كثير من التطبيقات.
هل أستطيع تغيير المنطقة الزمنية وحدها دون تغيير التاريخ؟
نعم. تحمل الجلسة إزاحتها الثابتة الخاصة، وتراها تلك العملية وحدها بينما تبقى منطقة النظام كما كانت تمامًا. وهذا هو الجزء الذي تتخطاه معظم الأدوات، وهو ما تستنسخ به العطل الذي لا يظهر إلا عند العميل الذي يبعد خمس مناطق زمنية.
ماذا عن التوقيت الصيفي؟
المنطقة الزمنية للجلسة إزاحة ثابتة بلا توقيت صيفي. فجلسة مضبوطة على بولندا تبقى عند الإزاحة التي اخترتها سواء قرأت ساعتها شهر مارس أو يوليو، ولذلك فإن تشغيلًا يعبر انتقالًا حقيقيًا ينحرف ساعةً عمّا ستعرضه تلك المنطقة فعلًا.
فإجبار تطبيق على عبور انتقال التوقيت الصيفي ليس شيئًا تفعله هذه الأداة بعد، وتقول حاسبة التواريخ ذلك بدل أن تخمّن.
لماذا يُبلّغ مضاد الفيروسات عنه؟
لأن حقن مكتبة في عملية أخرى تقنية مشروعة وموثّقة في Windows تستخدمها البرمجيات الخبيثة أيضًا. وهو إنذار كاذب تثيره التقنية لا أي شيء تفعله الأداة بجهازك. والمكتبة المحقونة هي chrono_hook.dll، وتُبنى من الشيفرة المصدرية العامة بترخيص GPL-3.0، ويمكنك إعادة بنائها بنفسك. أما وضع Chromium وElectron فلا يحقن أي شيء.
صفحة التنزيل تقول ما ينبغي فعله حيال ذلك.
هل هذه طريقة لتمديد فترة تجريبية أو الالتفاف على ترخيص؟
لا، وهي لم تُبنَ لذلك. Chrono Mock لاختبار برمجيات أنت مسؤول عنها - انتهاء ترخيصك أنت، ومنطق التجديد عندك، وتقرير نهاية الشهر لديك. ولن يعرض أي مثال أو إعداد مسبق أو صفحة هنا تمديد الفترة التجريبية لأحد آخر.
والبرمجيات المحمية بترخيص هي في الواقع الحالة الأرجح أن تُفشل هذه الأداة: فشيفرة مقاومة العبث كثيرًا ما تقرأ الوقت عبر طرق اختيرت عمدًا لصعوبة اعتراضها، وتحريك الساعة إلى الوراء شرط تُكتب هذه البرمجيات لكشفه. وثمة ميزة موجَّهة في الاتجاه المعاكس مخطَّط لها - وضع يشغّل سلسلة من التلاعبات الزمنية على تطبيقك أنت ويبلّغ أيها اكتشفتْه حمايتك.
هل أستطيع استخدامه في التكامل المستمر؟
نعم. نسخة سطر الأوامر تنزيل منفصل بحجم نحو 2.4 ميغابايت لا يحتاج إلى تثبيت أي بيئة تشغيل. وكل أمر يدعم --json ويخرج برمز يستطيع خط الأنابيب أن يتفرّع عليه، ويمكن للجلسة أن تكتب أدلتها في ملف.
ما الفرق بينه وبين RunAsDate؟
يعترض RunAsDate خمس دوال لساعة الحائط ويؤدي ذلك جيدًا. أما هذه الأداة فتراقب 44 قناة وقت وتنقل 30 منها إلى ساعة الجلسة، ويمكنها تسريع الساعة، وتمنح العملية منطقتها الزمنية الخاصة، وتتبع العمليات الفرعية، وتخبرك بعد ذلك بالقنوات التي غُطّيت فعلًا. وهي أيضًا مفتوحة المصدر، بينما RunAsDate برنامج مجاني مغلق. في المقابل، يستطيع RunAsDate الارتباط بتطبيق يعمل بالفعل، وهذه الأداة لا تستطيع.
والمقارنة الكاملة تقول أيضًا أين يكون RunAsDate الخيار الأفضل.
هل هذه libfaketime لنظام Windows؟
من حيث الروح، نعم - الفكرة نفسها: تحريك الوقت لبرنامج واحد لا للجهاز. أما عمليًا فهي تنفيذ مختلف، لأن libfaketime تعتمد على LD_PRELOAD غير الموجودة في Windows. وهناك صفحة عن ذلك بالضبط.
هل هو مجاني، وهل يرسل أي شيء إلى أي مكان؟
مجاني ومفتوح المصدر بترخيص GPL-3.0. لا حساب، ولا بيانات تتبّع، ولا يتصل بالإنترنت إطلاقًا - فالأداة كلها تعمل وكابل الشبكة مسحوب.
في النافذة عنصرا تحكم يقودان إلى الخارج، فيحسن ذكرهما بدل تركك تكتشفهما: زر Donate وزر GitHub في شريط العنوان. والضغط على أحدهما يسلّم عنوانًا إلى متصفحك، والمتصفح هو من يتصل. وChrono Mock لا يفتح أي اتصال في الحالتين، ولا يذهب إلى أي مكان شيء مما قاسه عن تطبيقك.