Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} 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

Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } 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

Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Latest commit

History

94 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SysLat_Software

Thank you for taking a look at SysLat. By the time you read this, this README will hopefully be organized into several sections such as:

  • Goals for the project & TODO section
  • FAQ
  • How to build the program dynamically(the project builds statically linked by default).
  • License

...but who knows. I may throw a bunch of things onto the website or into a wiki. If you're just looking for the latest version of SysLat and don't want to build and/or modify the program yourself, you can find it at https://SysLat.com/downloads.

SysLat's paired "firmware" can be found here: https://github.com/Skewjo/SysLat_Firmware

This project uses Deleaker to reliably diagnose bad allocations and deliver a high quality application free of memory leaks.

Basic Layout of the Classes/Program

SysLat_Software (Effectively "Main" for a Windows app.)
└── SysLat_SoftwareDlg (Start here if you want to understand the basic layout of the program - this is the "hub") (data classes) ├── SysLatData (the main data class) ├── SysLatPreferences (should be a POD, but has some additional functionality that needs to be relocated/templatized) ├── HardwareID ├── MachineInfo ("connection" classes) ├── RTSSClient │ └── RTSSSharedMemory(external) ├── RTSSProfileInterface ( I believe this could possibly be encapsulated inside of the RTSSClient class) ├── USBController ├── HTTP_Client_Async (creates a connection without using SSL - currently used to test changes when running the website through localhost) ├── HTTP_Client_Async_SSL (UI classes) ├── AboutDlg ├── PreferencesDlg └── TestCtrl (also a dialog, but I chose not to put "Dlg" in the name - probably need to fix that) 

Long-term Goals for this Project, Open Source, and a Message to the Community

I hope the measurements we take this with tool can lead to new advancements in the way both hardware and software are built, and I believe that with enough data this is possible through the use of machine learning and AI. The only to get that data though, is by building a large community around a single standard tool for making these measurements. While the SysLat software may currently only run on Windows and may be poorly optimized, I'm hoping the open-source community can help me in porting it to additional operating systems and optimize it so that the impact on users is as minimal as possible.

Build Instructions:

Because the program is currently being built statically (all-in-one with no "installer" necessary) be sure to install the following using the static 32 bit triplicate. Your install commands should look something like this: .\vcpkg install --triplet x86-windows-static date

Build Issues:

Switching between static and dynamic linkage:

To convert to static linkage:

  1. Use vcpkg to install the version of the static library you want access to. (in this case: .\vcpkg install jsoncpp:x86-windows-static)
  2. Create a new property page and add the following lines:
 <PropertyGroup Label="Globals">
<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
<VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
</PropertyGroup>
  1. Project->Properties->Advanced->Use of MFC->Use MFC in a Static Library
  2. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded (/MT)

To convert back to dynamic linkage:

  1. Delete the "PropertySheet.props" file mentioned above
  2. Project->Properties->Advanced->Use of MFC->Use MFC in a Shared DLL
  3. Project->Properties->C/C++->Code Generation->Runtime Library->Multi-threaded DLL (/MD)

Issues integrating 3rd party libraries

When integrating the Boost/Beast library, I had to add a macro #undef max to file "file_stdio.ipp"(I believe this is an external dependency, which means that every person that tries to build this thing from their workstation will have to make this change?? That can't be right...) because of some ancient problem or something. A quick Google/SO search will tell you all about it if you need to know more.

2/15/2021: This also happened (having to #undef min and #undef max) when I attempted to add Howard Hinnant's Date library.

I've defined 2 functions in the HTTP_Client_Async header file that are not associated with the class ("session") defined there and likely need to be moved.

License

GNU General Public License v3.0 or later

See COPYING to see the full text.

About

SysLat is an open-source Windows USB device that measures your system latency, similar to the nVidia Reflex or LDAT system.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages