On 04/23/2018 02:15 AM, Thiago Macieira wrote:
On Friday, 20 April 2018 12:17:06 PDT Roland Hughes wrote:
My understanding is completely correct and the test posted in this
thread proved it. Manually creating aa directory under /usr/include had
aa show up in QtCreator. Manually creating a.a does not appear in QtCreator.
That may be, but the correct fix for the problem with libusb-1.0 is to not try
to type the directory with the '.' in the first place. Which is probably why
no one else had noticed this: because the problem only shows when you write
incorrect code in the first place.

Wow Thiago! I can't believe you just uttered that. Caffeine withdrawl?

Under DOS and the worthless GUI DOS called Windows which nobody uses, all directories were required to have a ".dir" extension. The feeble file system of the day could only identify them this way. This convention was stolen from early real computers running real operating systems solving real business problems, not cheesey x86 stuff. RSTS/E, RSX-11, RT-11, MVS, 0S/360 (bit fuzzy on the name for primary System 36 OS) and several others of blessed memory, there was a physical limitation of 6.3 for file names. Physical because we were paying $5000 for a 1.2MEG removable platter which a low wage computer operator could drop or otherwise bang around not only rendering it useless, but, taking out the drive it was put in.

Once we managed to stack multiple platters on a spindle without killing the drives in minutes we started to have removable packs containing 5 & 10 MEG. An inconceivable amount of storage in the day. File systems were expanded to support 8.3 naming.

When Bill Gates was stealing sh*t and committing a plethora of other crimes to create his empire, he stole this 8.3 thing.

Real computers with real operating systems and real CPUs and real professionals realized this "naming convention," which is all it was, created a highly insecure situation. Changing a .DIR to a .FOR on many systems made it not-a-directory. Sometimes renaming it back got you everything and other times whatever directory structure was under it was lost. It really depended on whether someone opened the "file" in a text editor and saved on their way out.

New file systems were created which did not rely on naming conventions. At least on the real computers with real operating systems and real CPUs. All of the attributes were kept elsewhere in the file system. This meant that __any__ file name could be a directory and __any__ file name could be hidden. None of this hokey-arse "." in front. That's a legacy from the PDP era.

The new file systems which allowed any name to be a directory dramatically increased security and functionality. It allowed for multiple versions of the same package (such as a database) to run at the same time on the same real computer. This meant, if your ERP package needed Oracle V5 and your WMS needed Oracle V6 and your inventory forecasting package needed Oracle V7 they could all run on the same real computer without crashing into each other allowing your company all the time they needed to migrate the custom ERP and WMS code to the later version.

Life was good.

The hobby chip world started putting dots in their versions.  This happened early on with hobby operating systems like Windows 3.1. Pretty soon packages were having dot releases as well. It didn't matter to the real world until this hobby stuff started creeping into the data center. The real world had real versioning methodologies ___and___ file versioning. The hobby world not so much.

Inevitably the hobby world had a really cruel lesson taught to them. In the real world they don't just throw everything out and start over because someone thinks it would be cool. In the real world, the real computers running real packages are there to do a job and nothing more. They are a necessary burden which is only upgraded out of need. They exist to keep assembly line A producing product B whose inventory is managed in warehouse C after it receives orders from package D which are then sent to truck loading package E for shipping once accounting package F okays the payment.

Replacing/upgrading one single component in such a delicate dance can have catastrophic ripple effects. This has lead to the necessity of being able to run multiple versions of the same package on the same machine without them causing problems for each other. On OpenVMS we have application level logical name tables. Each version creates its own uniquely named table. Every logical name in there is the same as the other versions, but they all point to different files and directories. On lesser platforms they only have symbols and environment variables without any way of grouping them. I forget what IBM does on their big iron, but they have a way of partitioning this off as well.

On a Debian based Linux distro type the following:
cd /
sudo find -iname "*.*" -type d

You will see lots of stuff which looks like this:

./usr/share/groff/1.22.3

./usr/share/gettext-0.19.7

./usr/include/python3.5m

./usr/include/llvm-c-3.8

./usr/include/clang/3.8.0

./usr/include/clang/3.8

./usr/include/python2.7

./usr/include/llvm-3.8

./usr/include/a.a

./usr/include/libusb-1.0

./usr/src/linux-headers-4.13.0-38

./usr/src/linux-headers-4.13.0-37-generic

./usr/src/linux-headers-4.13.0-37-generic/.tmp_versions

./usr/src/linux-headers-4.13.0-37

./usr/src/linux-headers-4.4.0-119

./usr/src/linux-headers-4.4.0-119/zfs/etc/modules-load.d

./usr/src/linux-headers-4.4.0-119/zfs/etc/init.d

./usr/src/linux-headers-4.4.0-119/zfs/contrib/bash_completion.d

./usr/src/linux-headers-4.4.0-119/zfs/udev/rules.d

./usr/src/linux-headers-4.4.0-119/ubuntu/opennsl/OpenNSL/sdk-6.5.10-gpl-modules

./usr/src/linux-headers-4.13.0-38-generic

./usr/src/linux-headers-4.13.0-38-generic/.tmp_versions

./usr/src/linux-headers-4.4.0-119-generic

./usr/src/linux-headers-4.4.0-119-generic/.tmp_versions

./usr/src/virtualbox-5.1.34


Directories with "." in the name due to the version numbering system in place and the need to partition off multiple versions from one another and the .d directories which exist because of a legacy convention.

Over the decades the hobby platform has gotten more and more software along with more processing power. Once it pushed its way into the data center it had to adapt to the real world. This meant a method of partitioning off multiple versions of things which must run simultaneously.

For over a decade IBM's biggest iron had an exclusive feature. One gigantic machine could be partitioned to appear as 4+ different computers all running different versions of MVS. They might even have been able to run different versions of other IBM operating systems. I don't remember. Didn't spend a lot of time in that world. Over the past decade or so the hobby world got virtualbox, hyper-v and other tools which aren't quite the same, but are close enough for many things to provide that feature. This allowed them to push further into the data center to run the software which makes the thing then helps it get sold.

Eventually the hokey little "if it starts with a . it's a hidden file" convention will also have to go away, just like .dir did because it is a security problem which malware (or stupidity) can exploit.

--
Roland Hughes, President
Logikal Solutions
(630)-205-1593

http://www.theminimumyouneedtoknow.com
http://www.infiniteexposure.net
http://www.johnsmith-book.com
http://www.logikalblog.com
http://www.interestingauthors.com/blog
http://lesedi.us/
http://onedollarcontentstore.com

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to