RE#: របៀបដែលយើងបង្កើតម៉ាស៊ីន regex លឿនបំផុតក្នុង F# | Mewayz Blog Skip to main content
Hacker News

RE#: របៀបដែលយើងបង្កើតម៉ាស៊ីន regex លឿនបំផុតក្នុង F#

មតិយោបល់

2 min read Via iev.ee

Mewayz Team

Editorial Team

Hacker News

បញ្ចេញល្បឿនដែលមិនអាចប្រៀបផ្ទឹមបាន៖ ទស្សនវិជ្ជានៅពីក្រោយ RE#

នៅក្នុងពិភពនៃការអភិវឌ្ឍន៍កម្មវិធី កន្សោមធម្មតាគឺជាឧបករណ៍មូលដ្ឋានសម្រាប់ញែក និងផ្ទៀងផ្ទាត់អត្ថបទ។ ទោះយ៉ាងណាក៏ដោយ ដូចដែលអ្នកអភិវឌ្ឍន៍ណាមួយដឹង regex ដែលត្រូវបានធ្វើឱ្យប្រសើរមិនល្អអាចក្លាយជាឧបសគ្គនៃដំណើរការដ៏សំខាន់ ធ្វើឱ្យដំណើរការទិន្នន័យយឺត និងប៉ះពាល់ដល់បទពិសោធន៍អ្នកប្រើប្រាស់។ នៅ Mewayz ជាកន្លែងដែលប្រព័ន្ធប្រតិបត្តិការអាជីវកម្មម៉ូឌុលរបស់យើងត្រូវបានរចនាឡើងដើម្បីគ្រប់គ្រងលំហូរការងាររបស់សហគ្រាសស្មុគស្មាញប្រកបដោយប្រសិទ្ធភាពអតិបរមា យើងមិនអាចមានលទ្ធភាពក្នុងការរារាំងបែបនេះបានទេ។ យើងត្រូវការម៉ាស៊ីន regex ដែលមិនត្រឹមតែមានថាមពលខ្លាំងប៉ុណ្ណោះទេ ថែមទាំងមានល្បឿនលឿនទៀតផង។ នេះបាននាំយើងឱ្យធ្វើដំណើរដើម្បីបង្កើត RE# ដែលជាម៉ាស៊ីន regex ដំណើរការខ្ពស់ដែលបានសរសេរទាំងស្រុងនៅក្នុង F# ។ គោលដៅរបស់យើងគឺដើម្បីប្រើប្រាស់គំរូមុខងារទីមួយនៃ F# ដើម្បីបង្កើតដំណោះស្រាយដែលដំណើរការលើសពីបណ្ណាល័យ C++ ដែលបានធ្វើឱ្យប្រសើរយ៉ាងខ្លាំង ហើយយើងបានទទួលជោគជ័យ។

ហេតុអ្វី F# សម្រាប់ម៉ាស៊ីន Regex?

ជម្រើសនៃ F# មានចេតនា និងជាយុទ្ធសាស្ត្រ។ ខណៈពេលដែលភាសាដូចជា C ឬ C ++ ច្រើនតែជាលំនាំដើមសម្រាប់កូដសំខាន់នៃការអនុវត្ត យើងជឿថាលក្ខណៈពិសេសរបស់ F# គឺសមឥតខ្ចោះសម្រាប់ការគ្រប់គ្រងរដ្ឋដ៏ស្មុគស្មាញដែលមាននៅក្នុងការវាយតម្លៃ regex ។ ការផ្គូផ្គងគំរូដ៏មានអានុភាពរបស់វា ភាពមិនអាចប្រែប្រួលតាមលំនាំដើម និងប្រព័ន្ធប្រភេទនៃការបញ្ចេញមតិបានអនុញ្ញាតឱ្យយើងធ្វើគំរូនៃដែនបញ្ហាដោយធម្មជាតិ និងមានចន្លោះតិចសម្រាប់កំហុស។ ជំនួសឱ្យការប្រយុទ្ធជាមួយនឹងការគ្រប់គ្រងអង្គចងចាំដោយដៃ និងតក្កវិជ្ជាទ្រនិចស្មុគ្រស្មាញ យើងអាចផ្តោតលើក្បួនដោះស្រាយស្នូល។ នេះតម្រឹមយ៉ាងល្អឥតខ្ចោះជាមួយនឹងទស្សនវិជ្ជារបស់ Mewayz នៃការកសាងម៉ូឌុលដែលរឹងមាំ រក្សាបាន និងដំណើរការខ្ពស់ដែលបង្កើតបានជាឆ្អឹងខ្នងនៃប្រព័ន្ធប្រតិបត្តិការអាជីវកម្មដែលអាចទុកចិត្តបាន។ F# បានផ្តល់អំណាចដល់យើងក្នុងការសរសេរកូដដែលលឿន និងត្រឹមត្រូវ។

ស្ថាបត្យកម្មសម្រាប់ការអនុវត្ត៖ ពី NFA ដល់ការប្រតិបត្តិចងក្រង

នៅស្នូលរបស់វា ម៉ាស៊ីន regex ភាគច្រើនត្រូវបានបង្កើតឡើងនៅលើ Non-deterministic Finite Automaton (NFA)។ បញ្ហាប្រឈមស្ថិតនៅក្នុងរបៀបដែលអ្នកក្លែងធ្វើស្វ័យប្រវត្តិកម្មនេះ។ ម៉ាស៊ីនបែបបុរាណតែងតែប្រើគំរូអ្នកបកប្រែ ដែលដើរ NFA មួយជំហានម្តងៗសម្រាប់តួអក្សរបញ្ចូលនីមួយៗ។ RE# ប្រើវិធីសាស្រ្តកាន់តែចាស់ទុំខុសគ្នា៖ យើងចងក្រងលំនាំ regex ដោយផ្ទាល់ទៅក្នុងមុខងារ F# ឯកទេសនៅពេលដំណើរការ។ ដំណើរការនេះ ត្រូវបានគេស្គាល់ថាជាការចងក្រង Just-in-Time (JIT) បំប្លែងលំនាំអរូបីទៅជាកូដ .NET Intermediate Language (IL) ដែលបានធ្វើឱ្យប្រសើរខ្ពស់។ លទ្ធផលគឺថាការផ្គូផ្គងខ្សែអក្សរលែងជាប់ពាក់ព័ន្ធនឹងការបកស្រាយរចនាសម្ព័ន្ធក្រាហ្វ ប៉ុន្តែជាការអនុវត្តមុខងារកាត់ដេរដែលអនុវត្តការត្រួតពិនិត្យនៅក្នុងរង្វិលជុំតឹង។ សមាសធាតុសំខាន់ៗនៃស្ថាបត្យកម្មរបស់យើងរួមមាន:

  • ការបំបែកលំនាំ៖ ការបំបែកលំនាំ regex ទៅជាមែកធាងវាក្យសម្ព័ន្ធអរូបី (AST) ដែលមានរចនាសម្ព័ន្ធ។
  • ការបង្កើតកូដ IL៖ បញ្ចេញថាមវន្តការណែនាំ IL ដែលបានធ្វើឱ្យប្រសើរដែលតំណាងឱ្យតក្កវិជ្ជាដែលត្រូវគ្នា។
  • Cache-Friendly Design: រក្សាទុកមុខងារដែលបានចងក្រងទុកយ៉ាងធ្ងន់ធ្ងរ ដើម្បីជៀសវាងការចងក្រងឡើងវិញសម្រាប់គំរូដែលប្រើញឹកញាប់។
  • Zero-Overhead Backtracking៖ អនុវត្ត​ការ​តាមដាន​ដែល​បាន​គ្រប់គ្រង​ដោយ​ប្រើ​មុខងារ​ដដែលៗ​ដែល​មាន​ប្រសិទ្ធភាព​របស់ F# និង​ការ​បង្កើន​ប្រសិទ្ធភាព​ការ​ហៅ​តាម​កន្ទុយ។

ជំហាននៃការចងក្រងនេះគឺជាហេតុផលចម្បងដែល RE# សម្រេចបាននូវល្បឿនគួរឱ្យកត់សម្គាល់របស់វា ដែលជារឿយៗកាត់បន្ថយពេលវេលាដែលត្រូវគ្នាទៅនឹងកម្រិតប្រតិបត្តិជិតដើម។

"ដោយការចងក្រងលំនាំ regex ទៅក្នុង IL ដែលបានបង្កើនប្រសិទ្ធភាព យើងលុបបំបាត់អ្នកបកប្រែយ៉ាងមានប្រសិទ្ធភាព ដែលអនុញ្ញាតឱ្យ RE# ដំណើរការម៉ាស៊ីនដែលសរសេរជាភាសាកម្រិតទាប។ វាជាសក្ខីភាពមួយចំពោះថាមពលនៃសមត្ថភាពកម្មវិធីមេតារបស់ F#។" - វិស្វករនាំមុខ ក្រុម Mewayz Core

ការរួមបញ្ចូល និងផលប៉ះពាល់នៅក្នុង Mewayz OS

ការអភិវឌ្ឍន៍ RE# មិនមែនជាលំហាត់សិក្សាទេ។ វាត្រូវបានជំរុញដោយតម្រូវការពិភពលោកពិតនៃវេទិកា Mewayz ។ ប្រព័ន្ធប្រតិបត្តិការអាជីវកម្មរបស់យើងពឹងផ្អែកលើការដំណើរការទិន្នន័យរហ័សសម្រាប់អ្វីៗគ្រប់យ៉ាងចាប់ពីការវិភាគតាមពេលវេលាជាក់ស្តែង និងការវិភាគកំណត់ហេតុ ដល់ការផ្ទៀងផ្ទាត់ការបញ្ចូលរបស់អ្នកប្រើប្រាស់ និងការបំប្លែងស្ទ្រីមទិន្នន័យ។ មុនពេល RE# យើងបានជួបប្រទះបញ្ហាដំណើរការនៅក្នុងម៉ូឌុលដែលទទួលខុសត្រូវចំពោះការបញ្ចូលទិន្នន័យ និងសុពលភាព។ ដោយការរួមបញ្ចូល RE# ជាម៉ាស៊ីន regex លំនាំដើមនៅទូទាំង Mewayz OS យើងបានឃើញការកែលម្អភ្លាមៗ និងយ៉ាងខ្លាំង។ បំពង់ដំណើរការទិន្នន័យដែលធ្លាប់ជួបការលំបាកក្រោមបន្ទុកធ្ងន់ ឥឡូវនេះដំណើរការយ៉ាងរលូន ដោយធានាថាអតិថិជនរបស់យើងអាចបង្កើត និងដំណើរការកម្មវិធីស្មុគស្មាញ និងប្រើប្រាស់ទិន្នន័យដោយមិនបារម្ភអំពីការពន្យារពេលដំណើរការអត្ថបទ។ ការជំរុញការអនុវត្តនេះធ្វើឱ្យប្រព័ន្ធអេកូឡូស៊ីទាំងមូលប្រសើរឡើង ដោយធ្វើឱ្យគ្រប់ម៉ូឌុលដែលពឹងផ្អែកលើការរៀបចំអត្ថបទកាន់តែឆ្លើយតប និងអាចធ្វើមាត្រដ្ឋានបាន។

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

សេចក្តីសន្និដ្ឋាន៖ មូលនិធិសម្រាប់ការច្នៃប្រឌិតនាពេលអនាគត

ការកសាងម៉ាស៊ីន regex លឿនបំផុតនៅក្នុង F# គឺជាសមិទ្ធិផលដ៏សំខាន់ដែលបញ្ជាក់ពីការប្តេជ្ញាចិត្តរបស់ Mewayz ចំពោះឧត្តមភាពបច្ចេកទេស។ RE# បង្ហាញថាការជ្រើសរើសភាសាដូចជា F# សម្រាប់ ergonomics អ្នកអភិវឌ្ឍន៍ មិនមែនមានន័យថាការលះបង់ការអនុវត្តនោះទេ។ តាមពិតទៅ វាអាចជាគន្លឹះក្នុងការដោះសោវាបាន។ ភាពជោគជ័យនៃគម្រោងនេះផ្តល់នូវមូលដ្ឋានគ្រឹះដ៏រឹងមាំសម្រាប់ម៉ូឌុលនាពេលអនាគតនៅក្នុង Mewayz OS ដោយធានាថានៅពេលដែលយើងបន្ថែមមុខងារដ៏មានឥទ្ធិពលបន្ថែមទៀតសម្រាប់ស្វ័យប្រវត្តិកម្មលំហូរការងារ និងការវិភាគទិន្នន័យ សមត្ថភាពដំណើរការអត្ថបទស្នូលរបស់យើងនឹងមិនជាកត្តាកំណត់នោះទេ។ យើង​បាន​បង្កើត​ម៉ាស៊ីន​ដែល​មិន​គ្រាន់​តែ​លឿន​សម្រាប់​ថ្ងៃ​នេះ​ប៉ុណ្ណោះ​ទេ ប៉ុន្តែ​បាន​បង្កើត​ស្ថាបត្យកម្ម​ដើម្បី​ដោះស្រាយ​បញ្ហា​ប្រឈម​ទិន្នន័យ​ដែល​ទាមទារ​សម្រាប់​ថ្ងៃ​ស្អែក។

សំណួរដែលគេសួរញឹកញាប់

បញ្ចេញល្បឿនដែលមិនអាចប្រៀបផ្ទឹមបាន៖ ទស្សនវិជ្ជានៅពីក្រោយ RE#

នៅក្នុងពិភពនៃការអភិវឌ្ឍន៍កម្មវិធី កន្សោមធម្មតាគឺជាឧបករណ៍មូលដ្ឋានសម្រាប់ញែក និងផ្ទៀងផ្ទាត់អត្ថបទ។ ទោះយ៉ាងណាក៏ដោយ ដូចដែលអ្នកអភិវឌ្ឍន៍ណាមួយដឹង regex ដែលត្រូវបានធ្វើឱ្យប្រសើរមិនល្អអាចក្លាយជាឧបសគ្គនៃដំណើរការដ៏សំខាន់ ធ្វើឱ្យដំណើរការទិន្នន័យយឺត និងប៉ះពាល់ដល់បទពិសោធន៍អ្នកប្រើប្រាស់។ នៅ Mewayz ជាកន្លែងដែលប្រព័ន្ធប្រតិបត្តិការអាជីវកម្មម៉ូឌុលរបស់យើងត្រូវបានរចនាឡើងដើម្បីគ្រប់គ្រងលំហូរការងាររបស់សហគ្រាសស្មុគស្មាញប្រកបដោយប្រសិទ្ធភាពអតិបរមា យើងមិនអាចមានលទ្ធភាពក្នុងការរារាំងបែបនេះបានទេ។ យើងត្រូវការម៉ាស៊ីន regex ដែលមិនត្រឹមតែមានថាមពលខ្លាំងប៉ុណ្ណោះទេ ថែមទាំងមានល្បឿនលឿនទៀតផង។ នេះបាននាំយើងឱ្យធ្វើដំណើរដើម្បីបង្កើត RE# ដែលជាម៉ាស៊ីន regex ដំណើរការខ្ពស់ដែលបានសរសេរទាំងស្រុងនៅក្នុង F# ។ គោលដៅរបស់យើងគឺដើម្បីប្រើប្រាស់គំរូមុខងារទីមួយនៃ F# ដើម្បីបង្កើតដំណោះស្រាយដែលដំណើរការលើសពីបណ្ណាល័យ C++ ដែលបានធ្វើឱ្យប្រសើរយ៉ាងខ្លាំង ហើយយើងបានទទួលជោគជ័យ។

ហេតុអ្វី F# សម្រាប់ម៉ាស៊ីន Regex?

ជម្រើសនៃ F# មានចេតនា និងជាយុទ្ធសាស្ត្រ។ ខណៈពេលដែលភាសាដូចជា C ឬ C ++ ច្រើនតែជាលំនាំដើមសម្រាប់កូដសំខាន់នៃការអនុវត្ត យើងជឿថាលក្ខណៈពិសេសរបស់ F# គឺសមឥតខ្ចោះសម្រាប់ការគ្រប់គ្រងរដ្ឋដ៏ស្មុគស្មាញដែលមាននៅក្នុងការវាយតម្លៃ regex ។ ការផ្គូផ្គងគំរូដ៏មានអានុភាពរបស់វា ភាពមិនអាចប្រែប្រួលតាមលំនាំដើម និងប្រព័ន្ធប្រភេទនៃការបញ្ចេញមតិបានអនុញ្ញាតឱ្យយើងធ្វើគំរូនៃដែនបញ្ហាដោយធម្មជាតិ និងមានចន្លោះតិចសម្រាប់កំហុស។ ជំនួសឱ្យការប្រយុទ្ធជាមួយនឹងការគ្រប់គ្រងអង្គចងចាំដោយដៃ និងតក្កវិជ្ជាទ្រនិចស្មុគ្រស្មាញ យើងអាចផ្តោតលើក្បួនដោះស្រាយស្នូល។ នេះតម្រឹមយ៉ាងល្អឥតខ្ចោះជាមួយនឹងទស្សនវិជ្ជារបស់ Mewayz នៃការកសាងម៉ូឌុលដែលរឹងមាំ រក្សាបាន និងដំណើរការខ្ពស់ដែលបង្កើតបានជាឆ្អឹងខ្នងនៃប្រព័ន្ធប្រតិបត្តិការអាជីវកម្មដែលអាចទុកចិត្តបាន។ F# បានផ្តល់អំណាចដល់យើងក្នុងការសរសេរកូដដែលលឿន និងត្រឹមត្រូវ។

ស្ថាបត្យកម្មសម្រាប់ការអនុវត្ត៖ ពី NFA ដល់ការប្រតិបត្តិចងក្រង

នៅស្នូលរបស់វា ម៉ាស៊ីន regex ភាគច្រើនត្រូវបានបង្កើតឡើងនៅលើ Non-deterministic Finite Automaton (NFA)។ បញ្ហាប្រឈមស្ថិតនៅក្នុងរបៀបដែលអ្នកក្លែងធ្វើស្វ័យប្រវត្តិកម្មនេះ។ ម៉ាស៊ីនបែបបុរាណតែងតែប្រើគំរូអ្នកបកប្រែ ដែលដើរ NFA មួយជំហានម្តងៗសម្រាប់តួអក្សរបញ្ចូលនីមួយៗ។ RE# ប្រើវិធីសាស្រ្តកាន់តែចាស់ទុំខុសគ្នា៖ យើងចងក្រងលំនាំ regex ដោយផ្ទាល់ទៅក្នុងមុខងារ F# ឯកទេសនៅពេលដំណើរការ។ ដំណើរការនេះ ត្រូវបានគេស្គាល់ថាជាការចងក្រង Just-in-Time (JIT) បំប្លែងលំនាំអរូបីទៅជាកូដ .NET Intermediate Language (IL) ដែលបានធ្វើឱ្យប្រសើរខ្ពស់។ លទ្ធផលគឺថាការផ្គូផ្គងខ្សែអក្សរលែងជាប់ពាក់ព័ន្ធនឹងការបកស្រាយរចនាសម្ព័ន្ធក្រាហ្វ ប៉ុន្តែជាការអនុវត្តមុខងារកាត់ដេរដែលអនុវត្តការត្រួតពិនិត្យនៅក្នុងរង្វិលជុំតឹង។ សមាសធាតុសំខាន់ៗនៃស្ថាបត្យកម្មរបស់យើងរួមមាន:

ការរួមបញ្ចូល និងផលប៉ះពាល់នៅក្នុង Mewayz OS

ការអភិវឌ្ឍន៍ RE# មិនមែនជាលំហាត់សិក្សាទេ។ វាត្រូវបានជំរុញដោយតម្រូវការពិភពលោកពិតនៃវេទិកា Mewayz ។ ប្រព័ន្ធប្រតិបត្តិការអាជីវកម្មរបស់យើងពឹងផ្អែកលើការដំណើរការទិន្នន័យរហ័សសម្រាប់អ្វីៗគ្រប់យ៉ាងចាប់ពីការវិភាគតាមពេលវេលាជាក់ស្តែង និងការវិភាគកំណត់ហេតុ ដល់ការផ្ទៀងផ្ទាត់ការបញ្ចូលរបស់អ្នកប្រើប្រាស់ និងការបំប្លែងស្ទ្រីមទិន្នន័យ។ មុនពេល RE# យើងបានជួបប្រទះបញ្ហាដំណើរការនៅក្នុងម៉ូឌុលដែលទទួលខុសត្រូវចំពោះការបញ្ចូលទិន្នន័យ និងសុពលភាព។ ដោយការរួមបញ្ចូល RE# ជាម៉ាស៊ីន regex លំនាំដើមនៅទូទាំង Mewayz OS យើងបានឃើញការកែលម្អភ្លាមៗ និងយ៉ាងខ្លាំង។ បំពង់ដំណើរការទិន្នន័យដែលធ្លាប់ជួបការលំបាកក្រោមបន្ទុកធ្ងន់ ឥឡូវនេះដំណើរការយ៉ាងរលូន ដោយធានាថាអតិថិជនរបស់យើងអាចបង្កើត និងដំណើរការកម្មវិធីស្មុគស្មាញ និងប្រើប្រាស់ទិន្នន័យដោយមិនបារម្ភអំពីការពន្យារពេលដំណើរការអត្ថបទ។ ការជំរុញការអនុវត្តនេះធ្វើឱ្យប្រព័ន្ធអេកូឡូស៊ីទាំងមូលប្រសើរឡើង ដោយធ្វើឱ្យគ្រប់ម៉ូឌុលដែលពឹងផ្អែកលើការរៀបចំអត្ថបទកាន់តែឆ្លើយតប និងអាចធ្វើមាត្រដ្ឋានបាន។

សេចក្តីសន្និដ្ឋាន៖ មូលនិធិសម្រាប់ការច្នៃប្រឌិតនាពេលអនាគត

ការកសាងម៉ាស៊ីន regex លឿនបំផុតនៅក្នុង F# គឺជាសមិទ្ធិផលដ៏សំខាន់ដែលបញ្ជាក់ពីការប្តេជ្ញាចិត្តរបស់ Mewayz ចំពោះឧត្តមភាពបច្ចេកទេស។ RE# បង្ហាញថាការជ្រើសរើសភាសាដូចជា F# សម្រាប់ ergonomics អ្នកអភិវឌ្ឍន៍ មិនមែនមានន័យថាការលះបង់ការអនុវត្តនោះទេ។ តាមពិតទៅ វាអាចជាគន្លឹះក្នុងការដោះសោវាបាន។ ភាពជោគជ័យនៃគម្រោងនេះផ្តល់នូវមូលដ្ឋានគ្រឹះដ៏រឹងមាំសម្រាប់ម៉ូឌុលនាពេលអនាគតនៅក្នុង Mewayz OS ដោយធានាថានៅពេលដែលយើងបន្ថែមមុខងារដ៏មានឥទ្ធិពលបន្ថែមទៀតសម្រាប់ស្វ័យប្រវត្តិកម្មលំហូរការងារ និងការវិភាគទិន្នន័យ សមត្ថភាពដំណើរការអត្ថបទស្នូលរបស់យើងនឹងមិនជាកត្តាកំណត់នោះទេ។ យើង​បាន​បង្កើត​ម៉ាស៊ីន​ដែល​មិន​គ្រាន់​តែ​លឿន​សម្រាប់​ថ្ងៃ​នេះ​ប៉ុណ្ណោះ​ទេ ប៉ុន្តែ​បាន​បង្កើត​ស្ថាបត្យកម្ម​ដើម្បី​ដោះស្រាយ​បញ្ហា​ប្រឈម​ទិន្នន័យ​ដែល​ទាមទារ​សម្រាប់​ថ្ងៃ​ស្អែក។

ពង្រឹងអាជីវកម្មរបស់អ្នកជាមួយ Mewayz

Mewayz នាំយកម៉ូឌុលអាជីវកម្មចំនួន 207 ទៅក្នុងវេទិកាតែមួយ — CRM, វិក្កយបត្រ ការគ្រប់គ្រងគម្រោង និងច្រើនទៀត។ ចូលរួមជាមួយអ្នកប្រើប្រាស់ 138,000+ ដែលសម្រួលដំណើរការការងាររបស់ពួកគេ។

ចាប់ផ្តើមឥតគិតថ្លៃថ្ងៃនេះ →

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 6,203+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,203+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime