65535 interfaces ought to be enough for anybody
aakinshin.net
aakinshin.net
https://developer.android.com/studio/build/multidex.html
It's really not that bad, It only gets a little squirrely if you're trying to support super old android versions.
I definitely consider a 3X build time increase (not 30 seconds to 90 seconds, but 1 or 2 min to 5-8) to be a significant problem, bordering on nightmare... especially since we just included a few more libraries that put us past the 65k mark.
Is that what other people have seen?
And I can only do that with release builds if I want useful numbers. I've had us split up apps over build times because of Multidex (for example, most of our AWS centric code lives in a separate app that exposes specific functions via an AIDL interface because the SDK was bringing in too many methods)
That said, you can use proguard to strip your unused methods and it usually fine even for large applications.
Given how bloody good Java IDEs are (By which I mean to say - how good IntelliJ is), the cognitive cost of this interface bloat is very low... Until you start developing for Android.
It is more likely that generated classes, countless getters and setters and a tendency to small methods has a higher impact.
I've also heard that scala apps on Android can sometimes hit the limit, because pulling in the scala stdlib greatly bloats the method count.
65535 tcp-ports ought to be enough for anybody [1]
65534 hardlinks ought to be enough for anybody [2]
[1] http://stackoverflow.com/questions/113224/what-is-the-larges...
[2] http://unix.stackexchange.com/questions/5629/is-there-a-limi...
If you want to hide a port from being probed then give it a GUID as a name. No more port scans.
(If there wasn't a need to distinguish multiple clients on the same machine, we might have only had 255 ports!)
A standard port for HTTP servers is needed, as most HTTP clients don't support DNS SRV records.
That said, in the IPv6 world there's no technical reason you can't just let every service bind a different IP address.
I'm not a networking expert, but is that true that you can create multiple ip's for a single device using ipv6? Sounds like it would end up very messy.
Seems like an odd thing to do, create bizarre (unnecessary?) complexities simply as an opportunity for OSes to get better.
Are there any advantages to doing it that way?
C# (.NET) could be the forerunner if only they had not gone with UTF16, but then it's only with hindsight that we can point out UTF8.
But if you're fine with fixed-length strings, you could just as well use all those bits to represent a number instead.
However, it sort of requires your service to be started by inetd. It doesn't work for services that want to manage their own listen queues.
It also complicates firewalls. It makes it much harder to have rules that vary per service.
Of course, current TCP has 16-bit ports hard coded. But IPv6 has almost unlimited addresses.
For some reason, SRV records are not in wide spread use.
No legacy tooling supports it. Poor support on the products already there. Huge numbers of firewalls are hard coded to 80:443 so alternate ports would be blocked.
When you make a poor choice on the internet, it lasts forever.
This is what /etc/services is for:
telnet localhost http ...
But unfortunately very few applications do resolve "port name to port number" as they resolve "hostname to ip address".
See Meredith L. Patterson's "On Port 80" https://medium.com/@maradydd/on-port-80-d8d6d3443d9a
EDIT: Think I found it? https://news.ycombinator.com/item?id=13640409
And for counts 64 bits should be enough, since it's 20 billion billion.
someone somewhere 20 years ago.
And yes, 32-bit programs can't use more then 4GB.
Edit: I misunderstood. I'll leave the comment up. But I originally interpreted the story as meaning that each interface needed to be assigned an unsigned 16-bit id, which allows for a total of 65536. That was just inference on my part though. It literally says that more than 65535 are not allowed.
In Java you have to do the same manually: https://docs.oracle.com/javase/8/docs/api/java/util/stream/S... wow such polymorphism much ad-hoc