This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Feb 9, 2024. It is now read-only.

Repository files navigation

THIS REPOSITORY IS NO LONGER MAINTAINED AND ARCHIVED.

Krux Standard Java Library

Note - Version 3.0.0 will be released soon! For a preview of what's changing, see the 3.0 README

The Krux Sandard Library is an easily-configurable library that provides a handful of capabilities common across all of Krux' JVM-based applications, including:

  • A Netty-based web server for handling HTTP-based status checks and custom URL handlers for app-specific needs
  • A standard logging configuration, based on SLF4J, that ensures all logged events with severity >= WARN are writting to STDERR, and those with a severity <= INFO are written to STDOUT, which can be very useful for environments where individual application lifecycles are managed by external tooling that has strong opinions about log handling (such as supervisord)
  • A Statsd client that automatically collects and submits common JVM statistics to a Statsd server, and a API for collecting and submitting custom application metrics
  • A handful of useful tools for command-line parsing, managing a priority-based queue of application shutdown hooks, and other helpful utilities.

(If you're looking for our Python Standard Library, see here).

Using

To use, add the following dependency to your pom.xml:

<dependency>
<groupId>com.krux</groupId>
<artifactId>krux-stdlib</artifactId>
<version>1.7.2</version>
</dependency>

Basic Usage

For the simplest use case, simply call KruxStdLib.initialize(args) before running your app's main logic...

publicclassExampleMain {
publicstaticvoidmain(String[] args) {
KruxStdLib.initialize(args);
//send a simple statKruxStdLib.STATSD.count("my-app-started");
//...do your stuff...//by default, will be written to STDOUTLOGGER.info("I've really done something.");
//by default, will be written to STERRLOGGER.warn("I MUST DO MORE!");
}
}

Setting up the SLA handler

Example from a consumer service sending message timestamps to the SlaClient for verification.

importcom.krux.stdlib.utils.SlaClient;
publicclassmessageProcessor { privatestaticSlaClient_slaClient = SlaClient.getInstance();
publiconMessage(Stringmessage) {
// send the message to the sla client to determine if the sla has been metSlaClient.checkTs(GifStreamParserUtil.getTSInMillis(recordParts));
}
}

Testing the SLA endpoint

curl localhost:8080/__sla

This will setup slf4j (via log4j) bindings for stdout and stderr, establish a statsd client for use throughout your app via KruxStdLib.STATSD, and parse a standard set of command line options that all Krux apps should support. To see a list of the standard command line options, build an app that uses the stdlib as above, then pass '-h' or '--help' at the command line. You will see output like...

Option Description ------ ----------- --app-name Application identifier, used for statsd namespaces, log file names, etc. If not supplied, will use this app's entry point classname. (default: TCPStreamListenerServer) --base-dir Base directory for app needs. (default: /tmp) --env Operating environment (default: dev) -h, --help Prints this helpful message --heap-stats-interval-ms [Integer] Interval (ms) for used heap statsd gauge (default: 1000) --http-port [Integer] Accept http connections on this port (0 = web server will not start) (default: 0) --log-level Default log4j log level (default: DEBUG) --stats Enable/disable statsd broadcast --stats-environment IGNORED for backward compatibility --stats-host Listening statsd host (default: localhost) --stats-port [Integer] Listening statsd port (default: 8125)
--property-file [String] Path to an external property file, containing names of external resources
such that vary by environment, such as a database server hostname.
--sla SLA in seconds to return on the /__sla endpoint 

In more advanced scenarios, you can specifiy custom command line options, set up shutdown hooks, tap into a standard HTTP listener and do other groovy things. See a detailed example for more complex uses.

About

Krux's Standard Java Library

Resources

Code of conduct

Security policy

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages