Netbeans is not for real development. Sorry, I love Netbeans. I grew up using it. It just doesn't have good support for real world Java development. As for Eclipse, I'll use notepad over that any day. I've been programming in Java since highschool, 20+ years ago.
IntelliJ is the best there is for Java, warts and all.
Using clients and groups works fine for me. I'm able to block youtube on my kids' devices, but allow it on others. I have pihole running in a container without being my dhcp server.
Not OP but we can assume when he's talking about blocking Youtube, he's in fact blocking youtube for his kids, not Youtube ads. Pi-hole can't block Youtube ads as they are delivered by the same servers as content. Then you can't block one without blocking the other.
Just go to PiHole's "Domains" page, in the box labelled Domain, type youtube.com, enable the checkbox for Add ___domain as wildcard, then click the button labelled Add to denied domains.
Now youtube.com and all of its subdomains are blocked, for all clients.
If you wish for it to only be blocked for some clients, then assign your clients to groups, and set the setting appropriately on the domains page.
I think you would need to explain your definition of 'best' here — I mean: explain why you think it is better.
> making regex blocks are appropriate.
I guess here you actually mean inappropriate?
Perhaps. But I think you misunderstand what I am doing, and how that then works in PiHole.
The method I describe, uses the Domains tab on the Domain Management page — and not the RegEx Filter tab.
The distinction is somewhat of importance, because the implementation of PiHole uses a different code path for exact-match denies/accepts, vs regex denies/accepts. (Type 0 and 1, vs type 2 and 3, detailed here[1]). Adding a ___domain the way I describe, creates an exact-match type entry in that table, not a regex match type.
But even if it were still using regex, the cost of that isn't as high as one might imagine, due to the fact that subsequent repeat queries to the same ___domain, do not get checked against regexes again: the result is cached.
As described here [2]: "Our implementation is light and fast as each ___domain is only checked once for a match. When you query google.com, it will be checked against your RegEx. Any subsequent query to the same ___domain will not be checked again until you restart pihole-FTL."
In summary: adding a ___domain the way I describe doesn't create a regex filter anyhow. But PiHole's regex matching isn't a naive implementation, it caches the results, so that it only actually performs the regex matching on first query to a ___domain not seen before (since last restart).
So really it makes no difference at all if one blocks a ___domain the way I describe, or the way you describe. They both end up doing the same thing: they insert an exact-match filter entry into the database.
In which case, it's simply down to one's own preference: do you prefer looking through the query log to find the site to block... or do you prefer just typing in a ___domain name.
IntelliJ is the best there is for Java, warts and all.