[Interest] Interest Digest, Vol 79, Issue 17
Roland Hughes
roland at logikalsolutions.com
Mon Apr 23 15:33:59 CEST 2018
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20180423/8ad29d25/attachment.html>
More information about the Interest
mailing list