The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
I thought only NAND was required for making logic circuits.
NAND gates can also be used to produce any other type of logic gate function, and in practice the NAND gate forms the basis of most practical logic circuits.
By connecting them together in various combinations the three basic gate types of AND, OR and NOT function can be formed using only NAND gates, for example.
As well as the three common types above, Exclusive-OR, Exclusive-NOR and standard NOR gates can be formed using just individual NAND gates.
" -- https://www.electronics-tutorials.ws/logic/logic_5.html
A simple way of looking at IFF is that it precludes and OR .
What's wrong with the whole thing is that it is not a word - ti's an abbreviation and that's specifically excluded in Scrabble, along with things like hyphenated words. Scrabble's manufacturer came out with the "Scrabble Dictionary" and that, allowing a number of non-words, screwed the game. If it's the official dictionary, how can you argue that a word's "not in the (real) dictionary" so it doesn't count if they decide to add it?
So, when I play Scrabble, I play IFF it is agreed to limit acceptable words to those found in a real dictionary.
So for them all modern await (which in fact runs operation in separate thread and waits on event together with message processing using MsgWaitForMultipleObjects) are useless for them. And of course, if you can use .Net Synchronizationb Context in Delphi or in C++ (especially with Visual Studio 2005) it would be great. This is the real development world.
I bolded the bit not understanding tasks, which do not necessarily spawn a thread, nor does await necessarily use MsgWaitForMultipleObjects.
This is what support looks like for one of my products we purchased.
I'm not entirely sure what your entire complaint is about; but after seeing that the s involved not only are using Delphi as an excuse, but also ing VS05 I know everything I need to know:
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
I mean, probably not. I don't have time to research the ridiculous UWP bluetooth interface and tap into it from regular windows, which is apparently the only way to do it short of interfacing with the drivers directly.
Besides, I don't code out of spite. I may threaten to though.
But the latest horror story is that I installed Quartz against my better judgement, to test it out. Quartz is a general purpose "job runner" and my first warning sign was that it was ported from Java.
Rule #1: Never install any package ported from Java.
The next thing I discovered is that whoever maintains Quartz decided that every single API method should be async, including initialization. Which, because I'm not calling the initialization from an awaitable method, meant I had to wrap the call in a Task(async () => initialize) call. WTF.
What made this worse was that the examples I found online were all written before this atrocity, so I had no idea what I was getting into.
Rule #2: Never trust online documentation, even the documentation provided by the package.
Furthermore, finding anything useful about why I have to do things "the Quartz way" was completely absent. Of course, the main reason for that is because it's a Java port.
Rule #3: If you can't find good examples explaining "why" in the package's online documentation, run.
Ultimately, yes, it worked. Seemed to work quite well. My coworker, who was pushing to use it (he loves packages rather than rolling-your-own) liked some of the features, but neither of us could figure out how to use those features, like error reporting / handling.
Rule #4: If it isn't obvious, it isn't worth it.
In the back of my mind, I kept wondering why I'm adding a package to our already bloated project that consists of thousands and thousands of lines of code, for 99% of features that I won't be using and can't figure out how to use, instead of writing my own KISS CRON job processor in about 200 lines of code, and one that is tailored to what I need in terms of querying what it thinks it should be doing, error handling, testing, etc. I'll post an article, BTW.
Rule #5: The KISS principle should be the first consideration when evaluating a package.
Which gets me to my point.
After making the command decision to ditch it, I uninstalled the package.
Unbeknownst to me, the NuGet package did not cleanly revert. I should have simply rolled back the entire set of commits to the branch. Stupid me. Instead, it left breadcrumbs in a config file that included various .NET framework packages, the most scary of which included a DLL for running unsafe code.
WTF does Quartz need to use unsafe code for?
Anyways, while everything worked fine on our development server, without my realizing what was going on with the config file, on the production server, the app blew up -- wouldn't even start. This was really my bad. I didn't realize (lack of inspecting the change logs) coupled with my own failure to not roll back but instead trust the NuGet uninstall process, that our production build was doing something (still don't know what) that was causing the runtime loader to fail. Possibly flags disallowing anything having to do with unsafe code. Possibly missing framework DLL versions that config was expecting specific version of. .NET did not fix DLL hell.
So between my errors, and NuGet package "management", and Quartz being bloatware, it's what Kirk says about Klingons: "I don't trust them and never will."