[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