Skip to content
View lhoguin's full-sized avatar

    Block or report lhoguin

    Block user

    Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

    You must be logged in to block users.

    Content in all repositories owned by your account will be closed.
    Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
    Report abuse

    Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

    Report abuse

    Popular repositories Loading

    1. otp otpPublic

      Forked from erlang/otp

      Erlang/OTP

      Erlang

    2. prometheus.erl prometheus.erlPublic

      Forked from prometheus-erl/prometheus.erl

      Prometheus.io client in Erlang

      Erlang

    3. rabbit-hole rabbit-holePublic

      Forked from michaelklishin/rabbit-hole

      RabbitMQ HTTP API client in Go

      Go

    4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

      Forked from ruby-amqp/rabbitmq_http_api_client

      RabbitMQ HTTP API client for Ruby

      Ruby

    5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

      Forked from michaelklishin/rabbitmq-http-api-rs

      A Rust client for the RabbitMQ HTTP API

      Rust

    6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

      Forked from EasyNetQ/EasyNetQ.Management.Client

      EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

      C#

    , '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" + '
    lhoguin (Loïc Hoguin) · GitHub
    Skip to content
    View lhoguin's full-sized avatar

      Block or report lhoguin

      Block user

      Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

      You must be logged in to block users.

      Content in all repositories owned by your account will be closed.
      Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
      Report abuse

      Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

      Report abuse

      Popular repositories Loading

      1. otp otpPublic

        Forked from erlang/otp

        Erlang/OTP

        Erlang

      2. prometheus.erl prometheus.erlPublic

        Forked from prometheus-erl/prometheus.erl

        Prometheus.io client in Erlang

        Erlang

      3. rabbit-hole rabbit-holePublic

        Forked from michaelklishin/rabbit-hole

        RabbitMQ HTTP API client in Go

        Go

      4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

        Forked from ruby-amqp/rabbitmq_http_api_client

        RabbitMQ HTTP API client for Ruby

        Ruby

      5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

        Forked from michaelklishin/rabbitmq-http-api-rs

        A Rust client for the RabbitMQ HTTP API

        Rust

      6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

        Forked from EasyNetQ/EasyNetQ.Management.Client

        EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

        C#

      , '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('^' + ".*" + ' lhoguin (Loïc Hoguin) · GitHub
      Skip to content
      View lhoguin's full-sized avatar

        Block or report lhoguin

        Block user

        Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

        You must be logged in to block users.

        Content in all repositories owned by your account will be closed.
        Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
        Report abuse

        Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

        Report abuse

        Popular repositories Loading

        1. otp otpPublic

          Forked from erlang/otp

          Erlang/OTP

          Erlang

        2. prometheus.erl prometheus.erlPublic

          Forked from prometheus-erl/prometheus.erl

          Prometheus.io client in Erlang

          Erlang

        3. rabbit-hole rabbit-holePublic

          Forked from michaelklishin/rabbit-hole

          RabbitMQ HTTP API client in Go

          Go

        4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

          Forked from ruby-amqp/rabbitmq_http_api_client

          RabbitMQ HTTP API client for Ruby

          Ruby

        5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

          Forked from michaelklishin/rabbitmq-http-api-rs

          A Rust client for the RabbitMQ HTTP API

          Rust

        6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

          Forked from EasyNetQ/EasyNetQ.Management.Client

          EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

          C#

        , '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('^' + ".*" + ' lhoguin (Loïc Hoguin) · GitHub
        Skip to content
        View lhoguin's full-sized avatar

          Block or report lhoguin

          Block user

          Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

          You must be logged in to block users.

          Content in all repositories owned by your account will be closed.
          Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
          Report abuse

          Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

          Report abuse

          Popular repositories Loading

          1. otp otpPublic

            Forked from erlang/otp

            Erlang/OTP

            Erlang

          2. prometheus.erl prometheus.erlPublic

            Forked from prometheus-erl/prometheus.erl

            Prometheus.io client in Erlang

            Erlang

          3. rabbit-hole rabbit-holePublic

            Forked from michaelklishin/rabbit-hole

            RabbitMQ HTTP API client in Go

            Go

          4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

            Forked from ruby-amqp/rabbitmq_http_api_client

            RabbitMQ HTTP API client for Ruby

            Ruby

          5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

            Forked from michaelklishin/rabbitmq-http-api-rs

            A Rust client for the RabbitMQ HTTP API

            Rust

          6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

            Forked from EasyNetQ/EasyNetQ.Management.Client

            EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

            C#

          , '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" + ' lhoguin (Loïc Hoguin) · GitHub
          Skip to content
          View lhoguin's full-sized avatar

            Block or report lhoguin

            Block user

            Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

            You must be logged in to block users.

            Content in all repositories owned by your account will be closed.
            Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
            Report abuse

            Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

            Report abuse

            Popular repositories Loading

            1. otp otpPublic

              Forked from erlang/otp

              Erlang/OTP

              Erlang

            2. prometheus.erl prometheus.erlPublic

              Forked from prometheus-erl/prometheus.erl

              Prometheus.io client in Erlang

              Erlang

            3. rabbit-hole rabbit-holePublic

              Forked from michaelklishin/rabbit-hole

              RabbitMQ HTTP API client in Go

              Go

            4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

              Forked from ruby-amqp/rabbitmq_http_api_client

              RabbitMQ HTTP API client for Ruby

              Ruby

            5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

              Forked from michaelklishin/rabbitmq-http-api-rs

              A Rust client for the RabbitMQ HTTP API

              Rust

            6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

              Forked from EasyNetQ/EasyNetQ.Management.Client

              EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

              C#

            , '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('^' + ".*" + ' lhoguin (Loïc Hoguin) · GitHub
            Skip to content
            View lhoguin's full-sized avatar

              Block or report lhoguin

              Block user

              Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

              You must be logged in to block users.

              Content in all repositories owned by your account will be closed.
              Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
              Report abuse

              Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

              Report abuse

              Popular repositories Loading

              1. otp otpPublic

                Forked from erlang/otp

                Erlang/OTP

                Erlang

              2. prometheus.erl prometheus.erlPublic

                Forked from prometheus-erl/prometheus.erl

                Prometheus.io client in Erlang

                Erlang

              3. rabbit-hole rabbit-holePublic

                Forked from michaelklishin/rabbit-hole

                RabbitMQ HTTP API client in Go

                Go

              4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

                Forked from ruby-amqp/rabbitmq_http_api_client

                RabbitMQ HTTP API client for Ruby

                Ruby

              5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

                Forked from michaelklishin/rabbitmq-http-api-rs

                A Rust client for the RabbitMQ HTTP API

                Rust

              6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

                Forked from EasyNetQ/EasyNetQ.Management.Client

                EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

                C#

              , '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('^' + ".*" + ' lhoguin (Loïc Hoguin) · GitHub
              Skip to content
              View lhoguin's full-sized avatar

                Block or report lhoguin

                Block user

                Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

                You must be logged in to block users.

                Content in all repositories owned by your account will be closed.
                Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
                Report abuse

                Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

                Report abuse

                Popular repositories Loading

                1. otp otpPublic

                  Forked from erlang/otp

                  Erlang/OTP

                  Erlang

                2. prometheus.erl prometheus.erlPublic

                  Forked from prometheus-erl/prometheus.erl

                  Prometheus.io client in Erlang

                  Erlang

                3. rabbit-hole rabbit-holePublic

                  Forked from michaelklishin/rabbit-hole

                  RabbitMQ HTTP API client in Go

                  Go

                4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

                  Forked from ruby-amqp/rabbitmq_http_api_client

                  RabbitMQ HTTP API client for Ruby

                  Ruby

                5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

                  Forked from michaelklishin/rabbitmq-http-api-rs

                  A Rust client for the RabbitMQ HTTP API

                  Rust

                6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

                  Forked from EasyNetQ/EasyNetQ.Management.Client

                  EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

                  C#

                , '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); } })(); })(); lhoguin (Loïc Hoguin) · GitHub
                Skip to content
                View lhoguin's full-sized avatar

                  Block or report lhoguin

                  Block user

                  Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

                  You must be logged in to block users.

                  Content in all repositories owned by your account will be closed.
                  Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
                  Report abuse

                  Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

                  Report abuse

                  Popular repositories Loading

                  1. otp otpPublic

                    Forked from erlang/otp

                    Erlang/OTP

                    Erlang

                  2. prometheus.erl prometheus.erlPublic

                    Forked from prometheus-erl/prometheus.erl

                    Prometheus.io client in Erlang

                    Erlang

                  3. rabbit-hole rabbit-holePublic

                    Forked from michaelklishin/rabbit-hole

                    RabbitMQ HTTP API client in Go

                    Go

                  4. rabbitmq_http_api_client rabbitmq_http_api_clientPublic

                    Forked from ruby-amqp/rabbitmq_http_api_client

                    RabbitMQ HTTP API client for Ruby

                    Ruby

                  5. rabbitmq-http-api-rs rabbitmq-http-api-rsPublic

                    Forked from michaelklishin/rabbitmq-http-api-rs

                    A Rust client for the RabbitMQ HTTP API

                    Rust

                  6. EasyNetQ.Management.Client EasyNetQ.Management.ClientPublic

                    Forked from EasyNetQ/EasyNetQ.Management.Client

                    EasyNetQ.Management.Client is a .NET client for the RabbitMQ RESTful management API

                    C#