Parse and stringify duration timestamps (such as hh:mm:ss and HhMmSs)
Formats 'duration' and 'timestamp' for convict
Tiny library to create and manipulate Unix timestamps
A CEL evaluator for ECMAScript
Convert millisecond durations to English and many other languages.
Time duration utilities
Plugin for Apollo Server to export metrics in Prometheus format
Capture and retrieve the last time a function was run
Node/Js-module for parsing and making sense of ISO8601-durations
Measure React Native performance
A Tailwind CSS plugin for creating beautiful animations.
RFC9562 UUIDs
An mutable object-based log format designed for chaining & objectMode streams.
Support for proto3 JSON serialiazation/deserialization for protobuf.js
navigator.mediaDevices.getUserMedia + MediaRecorder create WEBM files without duration metadata. This library appends missing metadata section right to the file blob.
TypeScript definitions for moment-duration-format
Convert a human readable duration string to a duration format
react animation library
TypeScript definitions for humanize-duration
Extended animation utilities for Tailwind CSS
A moment.js plugin for formatting durations.
Functions for working with durations.
A moment.js plugin for formatting durations.
Timestamp for 64-bit time_t, nanosecond precision and strftime
Convert timestamps to readable strings like '3 hours ago' and parse duration strings like '2h 30m' into seconds. Includes timeago, duration formatting, duration parsing, contextual dates, and date range formatting.
= Cirron Cirron measures a piece of Ruby code and reports back several performance counters: CPU instruction count, branch misses, page faults and time spent measuring. It uses the Linux perf events interface or @ibireme's KPC demo[https://gist.github.com/ibireme/173517c208c7dc333ba962c1f0d67d12] on OSX. It can also trace syscalls using +strace+, Linux only! == Prerequisites - Linux with perf events support / Apple ARM OSX - C++ - Ruby 3.x == Usage === Performance Counters $ sudo irb irb(main):001> require 'cirron' => true irb(main):002* c = Cirron::collector do irb(main):003* puts "Hello" irb(main):004> end Hello => Counter(time_enabled_ns: 110260, instruction_count: 15406, branch_misses: 525, page_faults: 0) === Tracing Syscalls $ sudo irb irb> require 'cirron' => true irb> trace = Cirron::tracer do irb> # Your code here irb> puts "Hello" irb> end => [#<Syscall:0x00007c6c1a4b3608 @args="1, [{iov_base=\"Hello\", iov_len=5}, {iov_base=\"\\n\", iov_len=1}], 2", @duration="0.000201", @name="writev", @pid="2261962", @retval="6", @timestamp="1720285300.334976">] # Save the trace for ingesting to Perfetto irb> File.write("/tmp/trace", Cirron::to_tef(trace)) => 267 === Tampering with Syscalls Available tampering actions are: error: Inject a fault with the specified errno. retval: Inject a success with the specified return value. signal: Deliver the specified signal on syscall entry. delay_enter: Delay syscall entry by the specified time. delay_exit: Delay syscall exit by the specified time. poke_enter: Modify memory at argN on syscall entry. poke_exit: Modify memory at argN on syscall exit. syscall: Inject a different syscall instead. The when argument can be used to specify when to perform the tampering. See the Tampering section of the [strace manual page](https://man7.org/linux/man-pages/man1/strace.1.html) for more detailed explanaition of the arguments. ``` $ sudo irb irb> require 'cirron' irb> injector = Cirron.injector irb> injector.inject("openat", "error", "ENOSPC") irb> injector.inject("openat", "delay_enter", "1s", when_condition="2+2") irb> injector.run do irb> # Open now fails with "No space left on device" and every irb> # other call to `openat` will be delayed by 1s. irb> File.open("test.txt", "w") irb> end ``` == Additional Information For more detailed information, please visit the project's GitHub page: https://github.com/s7nfo/Cirron