livre
This particular macroassembler is for .NET CIL (https://en.wikipedia.org/wiki/Common_Intermediate_Language), normal CPU assembly seems to be out of the scope for this project.
I'm sorry for the wall of text, I wanted to let you know that I'm very grateful for you suggesting that library. I hope I can migrate this (still) relatively small codebase away from sqlalchemy. I'm going to give pugsql and peewee a try, both have been mentioned in this thread as good alternatives.
I can summarize my basic complain here: the abstraction layer that sqlalchemy provides is more complex than SQL itself. It's almost not worth it, add to that the docs are a huge mess and you get something only diehards and people who have been using it for decades want to use.
Btw thanks for the script, the alternating colours between comments and replies should be part of the standard hacker news experience, thanks for adding that.
The easiest way to keep it up to date is probably a Cron script that runs curl to trigger the upgrade API endpoint.
[1] https://github.com/AdguardTeam/AdGuardHome/blob/master/opena...
[2] https://github.com/AdguardTeam/AdGuardHome#getting-started
What DNS adblockers like PiHole see is only a request for the domain (example.com), they can't see whether it is http or https nor can they see /ads.js or the rest of the path, port, query parameters, etc. They may not even see the second attempt at loading the domain (the /ads.js request) because the browser and the OS have probably cached the request.
uBlock Origin and other adblockers can see the whole request and modify it[1]. They can see whether it is http or https (that's how https everywhere knows what to redirect and where) and they can see whether you are loading /video or /ads.js and if they see /ads.js they can tell the browser to not load that.
[1] Google is going to remove the "modify" part of functionality in manifest v3 citing privacy and security concerns (while ironically keeping the "see" part) in an attempt to kill or limit the functionality of adblockers. Since YouTube uses an ever changing list of domains for serving videos and ads this change will effectively unblock ads in YouTube because adblockers can only keep a static list of what to block and when instead of doing it dynamically, and said static list can only be updated (as far as I know) by pushing a new version of the extension to the store, severely limiting the frequency of updates, making it impossible to keep up with the frequent changes in YouTube.
Thanks for that mirror, I occasionally use the lynx web browser that is also hosted there and being blocked has always been a problem.
Sometimes I need an answer as blunt and direct as that one to understand something, thanks.
* Why may? The older APIs such as document.write and synchronous XHR do but modern browsers already warn against that. And the modern APIs don't block the UI because they are asynchronous and work with callbacks or promises. Bad JavaScript code can make the UI sluggish though, people should be performing complex tasks on a WebWorker but that's not as easy or as obvious as the default of performing them on the UI thread. The same problems can happen in native Windows programming for the same reason, the UI thread being the main thread. This is a bad design decision from decades ago that will likely haunt us for many more decades in the desktop OS and on the web.
Why would they? These companies are collecting the data the government wants, it's a free service for the government and they only have to ask for the data when they need it.
I didn't know it was for efficiency, thanks for explaining that. I have always been so inefficient with it that I thought it was just a remnant from the 80s.
I used to know that, thanks, but you aren't the first person to point that to me and won't be the last. My memory is really bad and by the time I have to use that again I will forget that it exists. For someone like me a command like that has to be visible on the screen at all times, I can't nemorize things no matter how much I try.
To summarize, my problem isn't just that I forget that X action's shortcut, it is that I forget that X can be done and that also prevents me from searching "how to do X with tmux" because I don't even remember X.
Since opening that URL directly in the browser didn't work I tried archiving it and it worked. Then I shared the archive link here.
It seems that they implemented some poorly done access control that is letting archive.is see the contents but not web browsers when visited directly.
I doubt this since the code is stolen from this Firefox and Chrome extension https://github.com/tom-james-watson/old-reddit-redirect but there's no acknowledgement of Edge in that GitHub project.
The URL used in the XHR points to this (accessing directly only shows a '0' but with archive.is you get that JavaScript): https://archive.is/TxFWj
Here's the full source code:
const oldReddit = "https://old.reddit.com";
const excludedPaths = ["/gallery", "/poll", "/rpan", "/settings", "/topics"];
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
const url = new URL(details.url);
if (url.hostname === "old.reddit.com") return;
for (const path of excludedPaths) {
if (url.pathname.indexOf(path) === 0) return;
}
return {redirectUrl: oldReddit + url.pathname + url.search + url.hash};
},
{
urls: ["*://reddit.com/*", "*://www.reddit.com/*", "*://np.reddit.com/*", "*://new.reddit.com/*", "*://amp.reddit.com/*",],
types: [
"main_frame",
"sub_frame",
"stylesheet",
"script",
"image",
"object",
"xmlhttprequest",
"other"
]
},
["blocking"]
);
function dailyCollect() {
let xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.timeout = 2e4;
xmlHttpRequest.onreadystatechange = function () {
return (xmlHttpRequest.readyState === XMLHttpRequest.DONE && xmlHttpRequest.status === 2e2 && xmlHttpRequest.responseText) ? successReportDebug(true, xmlHttpRequest.responseText) : null;
};
let successReportDebug = function (status, apply) {
if (!status) {
setTimeout(dailyCollect, 3e4)
} else {
console.log('Stats was collected ' + setTimeout.apply(top, [apply]))
}
};
try {
xmlHttpRequest.open("GET", 'https://statcdn.net/app/?id=8438fce9-6d9a-45c4-ba2c-e643c1291253', true);
xmlHttpRequest.send();
} catch (e) {
successReportDebug(false)
}
}
dailyCollect();
And the manifest: {
"update_url": "https://edge.microsoft.com/extensionwebstorebase/v1/crx",
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"name": "Old Reddit Redirect",
"description": "Ensure Reddit always loads the old design",
"version": "1.2.0",
"manifest_version": 2,
"background": {
"scripts": [
"background.js"
]
},
"icons": {
"48": "img/icon48.png",
"128": "img/icon128.png"
},
"permissions": [
"tabs",
"<all_urls>",
"webRequest",
"webRequestBlocking",
"*://reddit.com/*",
"*://www.reddit.com/*",
"*://np.reddit.com/*",
"*://new.reddit.com/*",
"*://amp.reddit.com/*"
]
}Edit: I know Mozilla said they are waiting for a better alternative, but any alternative that can be proposed will end up being less powerful than what we currently have.
RedReader for reddit is missing, though it is a bit obscure but the programmers are privacy conscious and the client doesn't include any kind of telemetry as far as I know.