Re: [NF] Seeking well-equipped laptop recommendations
So modernity expects a person like me to be happy with 256 GB. But I've always been a fan of over-provisioning because the unpredictable and the unexpected is an everyday thing in my life. What is unexpected about needing more memory and disk space on a computer? Oh, Gene, Gene, Gene. Don't you see? We don't actually need *any* memory or disk space on our computers at all anymore. It's all done in the cloud! Sooo secure, and reliable, and everything is just taken care of for you, so you don't need to worry your little head about it! In fact, we should thank the IT powers that be for condescending to even allow our localized devices to continue to work for a few more years, so we can have time to adjust to the brave new world. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Seeking well-equipped laptop recommendations
One of the coolest FoxPro apps I ever shipped worked on 2 Gb 10" tablet-network hybrids with 32Gb SSD storage. Taken into the field for data gathering and docked in the home office to upload data to the mothership and gather tomorrow's assignments. If they dropped one out of their truck onto the driveway, we had to spend another $129 to replace it. Hm.. tablets. I don't know if this is applicable to your case, but MS is permitting vendors to ship devices with 32 GB SSD HDDs and full-blown Windows 10 on them. First time somebody is confronted with an MS forced "upgrade", the thing tanks, because there isn't enough extra space to handle the downloading/unpacking etc etc. After many weeks of struggling, the intrepid Susan Bradley (the "Patch Lady" for those who know her) finally figured out how to get an upgrade installed by plugging in a USB drive for extra storage and fiddling around with it (I can't remember the details but she may actually have had to temporarily merge the USB with the SSD as one logical partition; not something your typical user is gonna do). As she said, it shouldn't be that hard, and MS never should have permitted those vendors to ship those machines. > Windows 10 now requires 32 GB of space for itself (build "1903"). > That means you need 64 GB in order to cope with the > download/installation/cleanup process for those eventual feature > "upgrades" that we, as mere pawns in MS's marketing game, are no > longer allowed to ignore. And some people have been speculating that > the OS space is likely to double to 64 GB in the near future. That > would mean a 128 GB HDD would have no room left at all for anything else. > 128 Gb (billions of bytes! sheesh!) was a minimum, absolutely. You spec'ced machines without customizing. More is better, nearly always. Well, a 256 GB SSD HDD seems to be one of the most common configurations in off-the-shelf laptops these days. > So modernity expects a person like me to be happy with 256 GB. But > I've always been a fan of over-provisioning because the unpredictable > and the unexpected is an everyday thing in my life. > Sure. Are these field machines you expect to be beaten to death in a couple of years or long-term cubicle machines as investments you plan to keep alive for 4-5 year? And what do you run on them? That would guide you to pick between workaday Inspirons vs. high-performance Lattitudes for example, sticking with Dell as a f'rinstance. We've been able to get 5-7 years out of most of our ASUS and Acer machines up to now. I have one guy who, though he never leaves his office, insists on using a laptop instead of a desktop because he refuses to allocate more space. He's had three hard drives fail on three laptops over the last 9 years. But he also periodically throws tantrums at equipment and has been known to physically break pretty good-quality scanners and even big ol' copiers. So who knows? Maybe he picks up the laptop and flings it at the wall on occasion. We have around 40 laptops (and around 100 desktops). Somewhere between 15 and 20 of the laptops travel constantly; the rest are at the main office and used occasionally for presentations, or by traveling staff who come into the office to do "paper" work on them on a regular basis. I had one of the traveling laptops die due to a controller failure a couple of years ago. But that's about it. We replaced a bunch of them with newer models about the same time as that one, not because there was anything wrong with them, but because New York State, in its infinite wisdom, gave us a bunch of money and told us we had to buy new laptops for that particular contract. Which was good because the old ones were i3 and dog slow for anything other than web browsing, and we replaced them with i7s. Some of these older more-or-less stationary i3 laptops are also dog-slow running my agency-wide Foxpro app. Travelers who need to use that app get to it via RDP, where it is actually quite snappy, because it lives in a VM on a massively-overprovisioned hypervisor/SAN cluster. We'll see if that continues to be the case after we put a VPN on the RDP channel (another one of those fun NYS requirements). As for HDD size (as Arlo Guthrie might say, "Remember HDD size? It's a song about HDD size.") although some of these travelers are fervently believed by the state Health Department not to need to store any highly sensitive PII or PHI on the machines, in fact they do it all the time; hundreds of downloaded partially-completed PDF insurance forms. And we have nurses who do field assessments using an offline system that stores a lot of local data until they can get internet access and synch it with a website. And people in general are packrats. I can tell them to delete stuff they don't need until I'm blue in the face, to little or no effect. I'd rather let them accumulate in peace than have them constantly pester my help desk guys with complaint
Re: [NF] Seeking well-equipped laptop recommendations
A plug for a new MacBook Pro running Windows in a VM. My MacBook Pro is 6 years old and looks and performs like new. Best purchase I ever made. A shout-out to Ed and others for making this recommendation many years ago. Is that a user-friendly thing? As in, the user should be able to start it up and never have to take any extra steps to get to a Windows desktop beyond what s/he would do if it was running Windows natively. These machines are for field workers who don't know, or care, anything about computers as a thing in themselves. But we also have to maintain these devices, and nobody on my staff has any significant Mac maintenance experience, so it might not be a prudent option for us anyway. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Seeking well-equipped laptop recommendations
Can you elaborate on your resistance to HP and Lenovo? The last few Lenovos that I have had the opportunity to work with have been slick units. I have boycotted all HP products since they adopted their policy, many years ago, of deliberately breaking perfectly good printers (as well as not-empty ink cartridges) after some period of time in order to force people to buy new ones. I had already read about this policy in several places on the single day when six HP inkjet printers of the same exact model, which I had bought all on the same day at the same place, all suddenly had mechanical failures. I've never bought a Lenovo machine, but their little rootkit episode a few years back convinced me that they are not to be trusted. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Seeking well-equipped laptop recommendations
SSDs make a lot of sense for speed, weight and less noise and if everything's on the network or the internet, 128 Gb SSD is just as good as a 1TB HDD. Thanks Ted. "Everything's on the network or the internet" seems to be a common assumption and is apparently the reason why it's pretty hard to find larger HDDs on laptops that also have the other stuff I want. Weight seems to be a major consideration for marketers, but it isn't for me. We do not keep stuff on the network or the internet here, with some exceptions. Windows 10 now requires 32 GB of space for itself (build "1903"). That means you need 64 GB in order to cope with the download/installation/cleanup process for those eventual feature "upgrades" that we, as mere pawns in MS's marketing game, are no longer allowed to ignore. And some people have been speculating that the OS space is likely to double to 64 GB in the near future. That would mean a 128 GB HDD would have no room left at all for anything else. So modernity expects a person like me to be happy with 256 GB. But I've always been a fan of over-provisioning because the unpredictable and the unexpected is an everyday thing in my life. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[NF] Seeking well-equipped laptop recommendations
Hi folks, I'm finding it's getting really difficult to find a non-customized laptop that meets my agency's requirements. Granted, I'm pretty picky, though I am somewhat flexible on the potential trade-offs involved. Many of you use quite nifty hardware so I thought you might have some ideas. I need it to be non-customized because I'm being required to purchase through a MWBE vendor. (This is New York State, USA.) These vendors generally refuse to provide customizations; in fact, most of them just buy stuff off the rack from established electronics retailers and mark it up (don't get me started) First, I won't do Lenovo or HP or Surface. I prefer ASUS or Acer, as I've had good experience with them. I'd rather not do Dell but if that turns out to be the only way to accomplish this I might accept that. I need (won't compromise on): Windows 10 Pro 64-bit i7 processor or better (I don't know what the AMD equivalent would be but I don't object to AMD chips) At least 15.6" screen At least 8 GB RAM At least 512 GB HDD (I don't care if it's SSD or mechanical, but I want all of that space) LAN cable port WiFi At least 3 "old school" USB ports (some mix of USB 2 and USB 3; USB C is nifty and all, but I'm not looking to replace my peripherals or get a bunch of adapters). HDMI port VGA port (I have some old projectors and external monitors that I don't want to spend $$ to replace; I probably could be convinced to drop this requirement, at least for some users, if absolutely necessary) Must have a TPM chip and UEFI BIOS (the latter seems to be standard now but the former is often optional); these devices have to be full-disk encrypted using Bitlocker I would prefer the processor speed to be 2.2 GHz or faster, but a 1.8 GHz i7 is minimally acceptable. I would like an internal optical drive but it's not required. I don't care how much it weighs or how long the battery lasts or any of that other stuff. I'm not going to be super picky on price, because the whole MWBE thing is based on inflated prices anyway. (And BTW, I am not opposed to MWBE set-asides in principle, but I am opposed to the situation that has been created, in which, because the state mandates that we purchase from these companies, the companies effectively face no competition and can therefore set absurdly high prices for largely inferior products.) Thanks for any thoughts any of you may have. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Inadvertent Movement of Documents Folder
Thanks to you and others who responded. Ken I guess depending on the size of the files and the speed of the PC/drives involved you may get the notification window showing files being copied. Frank. Frank Cazabon On 22/07/2019 03:47 PM, Ken Dibble wrote: Presumably, though, if you did that with a folder that contains, say, a few hundred MB of data, you'd get the Windows copy/move dialog and a progress bar, wouldn't you? Thanks. Ken Nope, I can drag move my Downloads folder somewhere else (to another drive) and I don't get any warning. Note that dragging within the same drive does a move, dragging within the same drive while holding Ctrl down does a copy, dragging to a different drive holding Shift down does a move. (at leats I think those are the corresponding keys to move or copy) Frank. Frank Cazabon On 22/07/2019 03:33 PM, Ken Dibble wrote: Hey Ken, you can move a folder using drag and drop if you hold down the Ctrl key while dragging and dropping. I have known experienced users to do this by mistake. I've even done it a couple times, thankfully I realised quite quickly that I had moved the wrong folder. Thanks Frank. If you try it with a Windows "special" folder like My Documents does it warn you at all? Ken [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Inadvertent Movement of Documents Folder
Presumably, though, if you did that with a folder that contains, say, a few hundred MB of data, you'd get the Windows copy/move dialog and a progress bar, wouldn't you? Thanks. Ken Nope, I can drag move my Downloads folder somewhere else (to another drive) and I don't get any warning. Note that dragging within the same drive does a move, dragging within the same drive while holding Ctrl down does a copy, dragging to a different drive holding Shift down does a move. (at leats I think those are the corresponding keys to move or copy) Frank. Frank Cazabon On 22/07/2019 03:33 PM, Ken Dibble wrote: Hey Ken, you can move a folder using drag and drop if you hold down the Ctrl key while dragging and dropping. I have known experienced users to do this by mistake. I've even done it a couple times, thankfully I realised quite quickly that I had moved the wrong folder. Thanks Frank. If you try it with a Windows "special" folder like My Documents does it warn you at all? Ken [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Inadvertent Movement of Documents Folder
Hey Ken, you can move a folder using drag and drop if you hold down the Ctrl key while dragging and dropping. I have known experienced users to do this by mistake. I've even done it a couple times, thankfully I realised quite quickly that I had moved the wrong folder. Thanks Frank. If you try it with a Windows "special" folder like My Documents does it warn you at all? Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Inadvertent Movement of Documents Folder
On Mon, 22 Jul 2019 at 15:20, Ken Dibble wrote: > The user's device is a Windows 7 Pro laptop. He moved the folder to a > share on a Windows 2012 server. The only other unusual thing about > this machine is that it's lost trust with the domain a couple of > times in the last few days. But his documents folder first appeared > on the network share weeks ago. Has a roaming profile been enabled on the domain? I forget where you do this as I never use this feature! Nope, we never use that feature either. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[NF] Inadvertent Movement of Documents Folder
Hi Folks, I'm asking you guys about this because, frankly, it's the only group of people I have to ask questions. :) I'm hoping that one of you can suggest something based on a deeper understanding of Windows than I have. Some weeks ago what I *thought* was a _copy_ of somebody's entire "My Documents" folder appeared in a network share that is only used for my Foxpro database system. Since I have people accidentally, and apparently unknowingly, dragging and dropping folders from where they should be to where they shouldn't all the time here--in some cases moving enough data to cause a Windows file copy/move dialog to appear, and stay visible for quite some time--my assumption is that is what happened in this case. However, there are some points in this case that are confounding: 1. The user is not a typical computer illiterate. I did not expect him to be capable of such a mistake. 2. The folder was not just copied, it turned out to have been _moved_, which is not do-able by drag-and-drop without some user interaction, yes? 3. The folder was the user's official designated "My Documents" folder, which also should not be movable without a whole lot of user interaction, right? The user's device is a Windows 7 Pro laptop. He moved the folder to a share on a Windows 2012 server. The only other unusual thing about this machine is that it's lost trust with the domain a couple of times in the last few days. But his documents folder first appeared on the network share weeks ago. So if any of you would like to amuse yourself by positing suggestions of how this could happen without the user being aware of it, please respond here. Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Still No Messages Since August 2
>> But the effort it takes to spoof a direct reply to the listserv should indicate how much I love ProFox. > I'd be curious to know what you did with that post. It was received without a Message-ID: header, which means that the link in the footer doesn't work. Oh, all I did was copy the Subject line and the quoted text from the archive, inserting greater-thans as appropriate, then sent a fresh message to ProFox. More effort than it takes to hit "Reply" in an email client (which is currently not an option for me), but not that much more, actually... Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Still No Messages Since August 2
>In the meantime I'm reading the list in the archives. You just can not leafe this list alone. Well, maple* I can, and maple I can't... But the effort it takes to spoof a direct reply to the listserv should indicate how much I love ProFox. Ken * In honor of Gene's beautiful flag ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Still No Messages Since August 2
Folks, Thanks to those who responded. This pretty clearly seems to be a case of my email provider suddenly blocking everything coming from leafe.com. Ed contacted me directly and I am trying to follow up with the email provider. In the meantime I'm reading the list in the archives. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[ADMIN] Still No Messages Since August 2
I see conversations ongoing in the archives. I emailed Ed at his leafe.com address several days ago and received no response. I'm sending this to see if it arrives in the archive, to rule out the possibility that leafe.com is failing to accept and deliver any messages from me. I suppose if I don't hear from Ed on this in a few days, I'll unsubscribe from this address, and try an address at a different domain with a different mail provider. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: [ADMIN} No Messages Since August 2
This is not an actual reply to an email thread; I've only been able to see the messages with this Subject line in the archives. So I didn't get my own message, or Paul's reply to it. I am no email guru, but I have observed that messages may be rejected by some email systems if the physical domain host is not the same as the physical email server host, but both hosts use the same domain name, and there is no reference to the correct email host in the SPF record for the domain host. Not all email systems have SPF rejection enabled. If they do, they probably should issue a bounce explaining what they did. Just a thought.... Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[ADMIN] No Messages Since August 2
By checking the archives I see that there has been traffic here at least up to August 9 (that's five days ago, itself a matter of some concern). However, the last message I received was at 5:25 am August 2, 2018, from Alan Bourke ("Re: Determining Text File Encoding"). There is nothing in my spam folder. I have all spam filtering turned off on my email account. On the assumption that I had somehow been unsubscribed, I subscribed again at about 2 pm EDT today. I did not receive a confirmation email (not sure if you're actually using those or not). Any thoughts? I'll check the archives to see if this message arrives or if there is any response. Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN ] Duplicate messages from Ken Dibble
I'm only sending to ProFox. And I only get one copy of my own messages. Ken Hi Ken Dibble and all I am getting duplicate messages on the list from Ken Dibble - one seems to be via ProFox and the duplicate via ProFoxTech. Is anybody else seeing this and can anything be done about it? Ken, are you sending your messages to both? Thanks Paul Newton [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] "Modern Standby", Win 10, and Bitlocker with Azure
Thank you. It's not my fear. We have taken on a subcontract to provide Help Desk support for another organization that is supplying these laptops. We were told the laptops would have "full disk encryption", so that's I what I expected to find when I received them. I did not find what I expected. When I think "full disk encryption", I think that means that when the user turns the machine on, s/he has to enter some credentials before s/he even sees the OS login screen. In other words, the entire disk outside of the master boot record must be manually unlocked before any use can be made of it, no matter where that disk is or who is trying to use it. Having successfully done that, I then expect the user to have to enter another set of credentials at the OS login screen before s/he can use the machine. (Two factor authentication would not work in legitimate situations where there is no internet or phone service, a very common situation in my rural part of the country.) That is what you get if you set up "full disk encryption" using VeraCrypt on a Windows 7 machine. We don't do this very often. I prefer simply to create a separate data partition and encrypt that so the user doesn't need two sets of credentials if s/he isn't going to do anything but, say, run a web browser to access encrypted websites. We don't use BitLocker for this because our laptops are Win7 Pro, not Ultimate. You have to have Ultimate to set up Bitlocker encryption in Win 7 (you only need Pro to read a Bitlocker-encrypted device, like a USB memory stick). So apparently there are two completely different definitions of "full disk encryption" out there in the wild. Both will protect you if somebody steals the device and pulls the HDD out of it. (However, I also thought that ordinary Windows encryption, present in XP and perhaps earlier, would do that.) One of them will protect you if somebody steals the device and one set of credentials; they other one won't. I will point out that I'm not the only person who saw it this way; both of my assistants, who are experienced computer guys and not relying on me, had the same definition of "full disk encryption" in their heads. Since the organization that is paying us has the responsibility for complying with federal NIST security standards, and not me, I will shrug this off even though I don't believe that what you have described--and what the organization has done--actually complies with the standard in question. Anyway, thanks for your help. Ken BitLocker will only prompt for a recovery key if it detects the device that the hard drive is in has changed. It's inconspicuous in day-to-day use (and it has nothing to do with being connected to the Internet or in Modern Standby mode). The purpose is to protect the data when the drive is removed and put into another machine to be read. If someone steals your entire machine and knows the local login credentials, well you're on your own. If that's your fear maybe enable two-factor authentication (e.g. Windows Hello and a PIN). Eric On Wed, Jun 27, 2018 at 11:53 AM, Ken Dibble wrote: > Perhaps someone here can answer this question. > > I have a Windows 10 Pro laptop. It is part of an Azure AD domain, in which > InTune is being used for a variety of management functions. It is supposed > to have Bitlocker full disk encryption enabled, and the Bitlocker key is > stored in InTune. > > I do not connect any cables to this laptop. I simply turn it on. I do not > manually connect it to any wireless internet source. The machine displays a > standard Windows 10 login screen. Having local admin credentials, I log in > and get full access to the machine. > > What is wrong with this picture? > > As I understand Win 10 Bitlocker disk encryption, I don't need to supply > pre-boot credentials if the computer can see the internet, or if the > machine has "Modern Standby" enabled. I understand the latter to mean that > the laptop has never been fully turned off since somebody unlocked the > encryption. > > If I am correct, since I did not connect the laptop to any internet > source, yet I still am able to get into the machine using only the local > admin credentials, if Bitlocker full-disk encryption is actually > implemented, then the machine must be in "Modern Standby". > > I don't use Windows 10 but to me this situation is analogous to having set > up full disk encryption on a Win 7 box, submitted a PIN to get to the login > screen, and then closed the lid to force hibernation mode. If I open the > lid I don't need to put in the pre-boot PIN again but I have to log into > Windows. > > As I see it, if somebody steals this laptop as well as the local admin > credentials, the al
[NF] "Modern Standby", Win 10, and Bitlocker with Azure
Perhaps someone here can answer this question. I have a Windows 10 Pro laptop. It is part of an Azure AD domain, in which InTune is being used for a variety of management functions. It is supposed to have Bitlocker full disk encryption enabled, and the Bitlocker key is stored in InTune. I do not connect any cables to this laptop. I simply turn it on. I do not manually connect it to any wireless internet source. The machine displays a standard Windows 10 login screen. Having local admin credentials, I log in and get full access to the machine. What is wrong with this picture? As I understand Win 10 Bitlocker disk encryption, I don't need to supply pre-boot credentials if the computer can see the internet, or if the machine has "Modern Standby" enabled. I understand the latter to mean that the laptop has never been fully turned off since somebody unlocked the encryption. If I am correct, since I did not connect the laptop to any internet source, yet I still am able to get into the machine using only the local admin credentials, if Bitlocker full-disk encryption is actually implemented, then the machine must be in "Modern Standby". I don't use Windows 10 but to me this situation is analogous to having set up full disk encryption on a Win 7 box, submitted a PIN to get to the login screen, and then closed the lid to force hibernation mode. If I open the lid I don't need to put in the pre-boot PIN again but I have to log into Windows. As I see it, if somebody steals this laptop as well as the local admin credentials, the alleged Bitlocker "full disk encryption" will do absolutely nothing to prevent the thief from gaining full control of the machine. Is this correct, or am I, as is often the case, missing some crucial piece of information. Thanks for any help. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[ADMIN] Filter Redux
Message sent 12:53 PM EDT. Not received by 3:04 PM EDT, and not in the archives. Ed? Please check the filter again. Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Nothing like a cryptic error to start the work week!
VFP9SP2, Win7Pro, MySQL backend Screenshot: https://www.screencast.com/t/QKA2etzLnW I've searched frmEditJob.scx in the Code References for any text of IMG and it found nothing. Ugh. Now how to track down this new mystery? Ooops...wrong screenshot! Here's the right one: https://www.screencast.com/t/qdzgy9RnGF Mike, As I recall, you use business objects in your projects. The VFP error handler will sometimes appear to kick in on the wrong line of code. There is probably nothing wrong with your DO FORM line, but there is probably something wrong in the form's initiation chain of events, which probably calls your BO code. I would put SET STEP ON in the form's Load() event and step through until the actual error occurs. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
Frank, Just to close out this discussion: The code you provided worked perfectly. I've also demonstrated that if the user wants results for Consumers with more than one option for Current Status (ie, those who are "approved" or "on hold"), I can simply add a UNION clause with the same query and that works just fine. Thank you very much for this. Ken PS: The jumble below is what happens when people use Outlook's proprietary HTML code to send email to people who don't use Outlook. Sending in plain text fixes this problem. Content-Transfer-Encoding: base64You just need to change the first line of the query to this: SELECT COUNT(Status.ConFK) AS ConsCount, SUM(LastHours.AppHours) AS HoursSum; Frank. Frank Cazabon On 22/06/2018 01:04 PM, Ken Dibble wrote: Maybe this will do what you want: £M1 PMÑ ÑÕ̹ ½¹,°1 ÍÑ!½ÕÈs.AppHours; FROM Status ; INNER JOIN (SELECT ConFK, MAX(Date) AS MaxDate; 0¨0¨0¨0¨0¨0¨0¨OM Status; 0¨0¨0¨0¨0¨0¨0¨ÔÕTHÛÛÊHHÓÝ]\ËConFK = M.ConFK AND Status.Date = KX^]HÂâ** AND Type = "Approved"; QÒS ÑSPÕÝ\ËÛÛK, Hours.AppHours; 0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨ÓHÝ\ÎÂ>> INNER JOIN (SELECT ConFK, MAX(date) AS MaxHoursDate; 0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨FROM Hours; 0¨0¨0¨0¨0¨0¨0¨0¨0¨0  GROUP BY ConFK) MH ; 0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0¨0à°¨0¨0¨0¨0¨ÓÀurs.ConFK = MH.ConFK AND Hours.Date = MH.MaxHoursDate ) LastHours ; ON Status.ConFK = LastHours.ConFK Y\Ë\Ú[ÈH]HHÝYY [ which you assembled into tables), this gets: CONFK APPHOURS 1 .NULL. 3 12 H]Y\H]Ù[Ù\Àn't sum anything, but I assume I can convert NULLs to 0 and sum the APPHOURS column, and use _TALLY or RECCOUNT() to provide a total of approved Consumers. [À you very much!!! Ù[¥¶W6W76fRV÷Fær&VÖ÷fVB' server] [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
Frank, You're responding here to my response to Ted's code, not yours. Your code runs fine, and I responded to that separately. Ken Content-Transfer-Encoding: base64Did you run it as part of the first set of code that I gave you? It runs here with no errors in VFP9 with the latest hot fix and SPs. ;) What error is it giving you? Maybe a line split somewhere due to the email formatting? This is the full code: CREATE CURSOR Consumers; (ConPK int) INSERT INTO consumers (ConPK ) VALUES (1) INSERT INTO consumers (ConPK ) VALUES (2) INSERT INTO consumers (ConPK ) VALUES (3) *!*1 *!*2 *!*3 *!*Status CREATE CURSOR Status; (StatPK int,; ConFK Int,; Date date,; Type c(10)) INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (1,1,{^2018/1/15},"Pending") INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (2,1,{^2018/4/15},"Approved") INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (3,2,{^2018/6/1},"Closed") INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (4,2,{^2018/4/15},"Approved") INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (5,3,{^2017/11/22},"Pending") INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (6,3,{^2018/2/3},"Approved") INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (7,3,{^2018/3/12},"Suspended") INSERT INTO Status (StatPK , ConFK, Date, Type) VALUES (8,3,{^2018/5/11},"Approved") CREATE CURSOR Hours; (HourPK int,; conFK int,; Date d,; Apphours int) *!*PK,ConFK,,Date,,AppHours INSERT INTO Hours (HourPK , ConFK, Date, AppHours) VALUES (1,2,{^2017/7/3},10) INSERT INTO Hours (HourPK , ConFK, Date, AppHours) VALUES (2,2,{^2018/3/12},14) INSERT INTO Hours (HourPK , ConFK, Date, AppHours) VALUES (3,3,{^2018/4/1},20) INSERT INTO Hours (HourPK , ConFK, Date, AppHours) VALUES (4,3,{^2018/5/1},12 ) SELECT Status.ConFK, LastHours.AppHours; FROM Status ; INNER JOIN (SELECT ConFK, MAX(Date) AS MaxDate; FROM Status; GROUP BY ConFK) M ON Status.ConFK = M.ConFK AND Status.Date = M.MaxDate ; AND Type = "Approved"; LEFT JOIN (SELECT Hours.ConFK, Hours.AppHours; FROM Hours; INNER JOIN (SELECT ConFK, MAX(date) AS MaxHoursDate; FROM Hours; GROUP BY ConFK) MH ; ON Hours.ConFK = MH.ConFK AND Hours.Date = MH.MaxHoursDate ) LastHours ; ÂON STatus.ConFK = LastHours.ConFK Frank. Frank Cazabon On 22/06/2018 12:21 PM, Ken Dibble wrote: ÑSPÕÛÛÝ[Y\Ý]\ËÝ\Ë\Ý\ FROM Consumer JOIN Status on Consumer.ConPK=Status.ConFK QÕUTÒSÝ\ÈÛÛÛÝ[Y\ÛÛÏRÝ\ËÛÛK ÒTHÝ]\Ë]HB 4TÄT5BÔ 7FC"äFFRe$ôÒStatus Stat2 WHERE Ý]ÛÛÈHÛÛÝ[Y\ÛÛÈÔÕTBY Stat2.ConFK) SÝ]\Ë\HH\ÝYSÀurs.Date = (SELECT MAX(Hours2.Date) FROM Hours Hours2 WHERE Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK) I actually can't get this to run without errors. Interpolating, I **think** you meant: 4TÄT5B6öç7VÖW"â , Status.*, Hours.AppHours FROM Consumer ÒSÝ]@s on Consumer.ConPK=Status.ConFK LEFT OUTER JOIN Hours on Consumer.ConPK=Hours.ConFK ÒTHÝ]\Ë]HB(SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE Stat2.ConFK = Consumer.ConPK AND Status.Type = "Approved" GROUP BY Ý]ÛÛÊBSÝ\Ë]HH ÑSPÕPV Ý\s2.Date) FROM Hours Hours2 WHERE Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK) However, I get "Function missing )" on the last subquery on this this, [Z]her intellisense nor I can find any unmatched parens. Also, the first subquery is grouping on the Status table FK, while the second subquery groups on the Hours table PK. I think they should both group on the same key, but I don't understand which one that should be. @nks. Ù[Ù^Ù\ÜÚ]H][Ý[È[[ÝYH[excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
Maybe this will do what you want: SELECT Status.ConFK, LastHours.AppHours; FROM Status ; INNER JOIN (SELECT ConFK, MAX(Date) AS MaxDate; FROM Status; GROUP BY ConFK) M ON Status.ConFK = M.ConFK AND Status.Date = M.MaxDate ; AND Type = "Approved"; LEFT JOIN (SELECT Hours.ConFK, Hours.AppHours; FROM Hours; INNER JOIN (SELECT ConFK, MAX(date) AS MaxHoursDate; FROM Hours; Â GROUP BY ConFK) MH ; Â ON Hours.ConFK = MH.ConFK AND Hours.Date = MH.MaxHoursDate ) LastHours ; ON Status.ConFK = LastHours.ConFK Yes, using the data I provided (and which you assembled into tables), this gets: CONFK APPHOURS 1 .NULL. 3 12 The query itself doesn't sum anything, but I assume I can convert NULLs to 0 and sum the APPHOURS column, and use _TALLY or RECCOUNT() to provide a total of approved Consumers. Thank you very much!!! Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: Query Involving Sums and Two Most Recent Dates
Personally I avoid _TALLY since so many commands & functions in VFP will change it. I don't think there's any danger of it getting changed if I store the contents of _TALLY to a local variable immediately after running the query, which is what I always do. I think RECCOUNT() moves the record pointer, which might not be desirable in some circumstances but wouldn't make a difference in my case. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
SELECT Consumer.*, Status.*, Hours.AppHours FROM Consumer JOIN Status on Consumer.ConPK=Status.ConFK LEFT OUTER JOIN Hours on Consumer.ConPK=Hours.ConFK WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE Stat2.ConFK = Consumer.ConPK GROUP BY Stat2.ConFK) AND Status.Type = "Approved" AND Hours.Date = (SELECT MAX(Hours2.Date) FROM Hours Hours2 WHERE Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK) I actually can't get this to run without errors. Interpolating, I **think** you meant: SELECT Consumer.*, Status.*, Hours.AppHours FROM Consumer JOIN Status on Consumer.ConPK=Status.ConFK LEFT OUTER JOIN Hours on Consumer.ConPK=Hours.ConFK WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE Stat2.ConFK = Consumer.ConPK AND Status.Type = "Approved" GROUP BY Stat2.ConFK) AND Hours.Date = (SELECT MAX(Hours2.Date) FROM Hours Hours2 WHERE Hours2.ConFK = Consumer.ConPK GROUP BY Hours.PK) However, I get "Function missing )" on the last subquery on this this, and neither intellisense nor I can find any unmatched parens. Also, the first subquery is grouping on the Status table FK, while the second subquery groups on the Hours table PK. I think they should both group on the same key, but I don't understand which one that should be. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
> Interesting. I've always just followed the principle that if a parent can > own more than one value for a particular item, you put that item in a child > record, and keep the child records in a separate table and JOIN it as > needed. So, can a Consumer be both Approved and Pending? By your logic, if a Company Name on a company record could change (when Acme Widgets is taken over by Apex Amalgamated) that should be in a child table, with a date range for when each name is effective. If the status is always only one value at that point in time, but may change over time, you might store the CURRENT STATUS in the Consumer table, and an history (or Audit Trail) of updates to that status in a Status Audit Trail table. It's an issue of modeling the dimension of time in your database schema. Typically, the current status is what you want to check when you query the tables: how much stuff is in stock, how many projects are pending, etc. all come with the implicit requirement of "at this time." But other reports would question "how did this inventory vary over time" which would trace history/audit-trail records. This is probably the best way for me to think about this. It may or may not be needless to say that it's wy too late to change the design of the database and related code in such a fundamental way--if I concluded that, in my specific case, it would be the best way to go. I've given you one example of a problem that occurs in several different modules of the system, each with its own set of parent records and child tables, many of which have "expiration" or "supercession" (is that a word?) dates. This isn't sales with invoices and orders; it's a quasi-medical case management/service/process tracking and documentation system. Users need to look at the "historical" information frequently. I did actually write a generic method for my reporting system a few years ago that can accept a few parms and take the long way around (multiple queries and sorting tricks) to produce these kinds of results regardless of the tables being processed. It works for a reasonably large subset of these problems, but this particular case, a report asking for a couple of totals rather than a list of names and related items, is sufficiently different and unusual in my case to make me think about doing something different. Unfortunately, I can't do something THAT different. > I thought that was a requirement for normalization. It would seem to > engender less upkeep than creating a need to update something in the parent > record whenever you change something in the child record. Only if the two things mean the same thing. The Consumer record stores the current state. The Status Audit table stores the history of state changes. They may have similar names, but are in fact different pieces of information. Consumer: Approved is the current status of the process Status table: Approved, {^2018-6-21) is the date the process got that status. I think I have to respectfully disagree here. Perhaps it's only the (undiagnosed) Aspergerishness in me. But I am an entirely self-taught developer who does not really understand set theory very well. A program that I produced in the early 1990s to perform some of the tasks the current system handles had a single, very large table that stored everything. At the time it was required to report whether a specific service had been delivered to a specific consumer at least once per quarter. So the table had one row per consumer and a field for each service and each quarter: S1Q1, S2Q1... S1Q3... etc. There was at that time no need to maintain a historical record of services; at the end of each reporting year the service fields were purged and we started again. Neverthess, I think everyone would say this was a terrible design. I don't think that adding a different effective date to a piece of data that is otherwise identical to other pieces of data makes it a "different thing" in normalization terms. I can see that in some cases it would be more convenient to do so. But if instead of two or three dated items per parent, what if I had fifteen or twenty? My system provides a utility function to superusers; they can add new Status options without requiring me to do any programming. And they frequently do this. Following your suggestion, I would have to do programming to modify the parent tables every time they did that. (I can't automate it; I have to boot everybody out of the system to modify tables that are constantly in use.) You might say, "Oh. That's new information." However, If I had given you 3000 words explaining the full complexity of the system in advance, you would have responded "tl;dr". I am always struggling to understand the principles behind these things, but every time I think I've found one somebody comes along and tells me, no, that's not it. It makes everything, in the end, seem terribly ad hoc, and that makes it really
Re: Query Involving Sums and Two Most Recent Dates
At 02:33 PM 6/21/2018, you wrote: I mean specifically, which records (consumer PK and apphours) would you expect in your results? There are two Consumers whose most recent (last) status is "Approved": Consumer PKs 1 and 3. The relevant Status records are Status PKs 2 (for Consumer 1) and 8 (for Consumer 3). Of those two Consumers, only Consumer 3 has any Hours records at all. The value for Consumer 3's most recent (last) hours record is 12 (Hours record PK 4). Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
At 02:21 PM 6/21/2018, you wrote: What's your expected output from the data you presented? Answer: 2 Approved Consumers, having a total of 12 Hours. I did include that in my original post. To make it a little easier for people to try to help, here's some code to build up the data and my attempt at what I've understood as your requirements: [snip] Thank you for doing that. Wow, I'm sorry I omitted that. I usually do that when I ask for help with queries. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
Responses in-line: No, it's just a little quirky due to your design choices. Typically, I would have a "current status" value in the Consumer record that's an FK into the Status history table. A common problem with data modeling is determining if your system is a reflection of the current version of the system, or the history of the states of the system, or a mix of both. Interesting. I've always just followed the principle that if a parent can own more than one value for a particular item, you put that item in a child record, and keep the child records in a separate table and JOIN it as needed. I thought that was a requirement for normalization. It would seem to engender less upkeep than creating a need to update something in the parent record whenever you change something in the child record. Also, if a need develops for the parent to own more than one of something else that was not part of the original design, something which would require yet another child table, I would then also have to modify the parent table to add a "most recent" field for that. Modifying existing tables containing data seems more risky than simply adding empty tables--especially when I have to do it in a completely automated way for remote locations whose hardware I don't trust. > The results have to total the most recent hours records belonging to > Consumers whose most recent Status is "Approved". I think your description of the hours result is a little ambiguous, and since I've guessed wrong twice, I'll stop now. ;) Are you SUM'ming Hours records for the Consumer SINCE their status became approved, or are you picking the LAST Hours record for Consumers currently Approved? Either is easy. Ish. I need a total of the Hours stored to all of the LAST hours records that are owned by Consumers whose LAST status record contains "Approved" in the "type" field. Bear in mind that a Consumer may not own any records in the Hours table at all. > And my testing indicates that a GROUP BY clause is required somewhere. > It's in there, with the sub-select with the MAX Yes it is. Sorry that I missed it. Thanks for all of your help. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
Er... and while still rendering a total number of Consumers whose hours were totalled--at least via _TALLY if nothing else. I should have realized that from your example solution. I *ASSuMEd* we were totalling hours. My bad. SELECT Consumer.*, Status.*, Hours.AppHours FROM Consumer JOIN Status on Consumer.ConPK=Status.ConFK JOIN Hours on Consumer.ConPK=Hours.ConFK WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE Stat2.ConFK = Consumer.ConPK GROUP BY Stat2.ConFK) AND Status.Type = "Approved" AND Hours.Date = Status.Date Better, but there is no guarantee that Hours.Date will equal Status.Date. And my testing indicates that a GROUP BY clause is required somewhere. I'm wondering if this will turn out to be np-hard and my original multi-query approach is the only way to do this. Thanks. Ken [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
I should have realized that from your example solution. I *ASSuMEd* we were totalling hours. My bad. SELECT Consumer.*, Status.*, Hours.AppHours FROM Consumer JOIN Status on Consumer.ConPK=Status.ConFK JOIN Hours on Consumer.ConPK=Hours.ConFK WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE Stat2.ConFK = Consumer.ConPK GROUP BY Stat2.ConFK) AND Status.Type = "Approved" AND Hours.Date = Status.Date Better, but there is no guarantee that Hours.Date will equal Status.Date. The results have to total the most recent hours records belonging to Consumers whose most recent Status is "Approved". And my testing indicates that a GROUP BY clause is required somewhere. I'm wondering if this will turn out to be np-hard and my original multi-query approach is the only way to do this. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
SELECT Consumer.*, Status.*, SUM(Hours.AppHours) AS TotalHours FROM Consumer JOIN Status on Consumer.ConPK=Status.ConFK JOIN Hours on Consumer.ConPK=Hours.ConFK WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE Stat2.ConFK = Consumer.ConPK) AND Status.Type = "Approved" Thank you, but I think I left out a requirement. The hours have to come from the most recent Hours records as well. Also appears to require a GROUP BY clause. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Stuck inside the Filter (with the Memphis blues again)
> Despite the convential wisdom about the vagaries of email, in all my previous experience with ProFox, this never happens unless the message was stuck in the filter. You called it. Thanks, Ed. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Query Involving Sums and Two Most Recent Dates
SELECT Consumer.*, Status.*, SUM(Hours.AppHours) AS TotalHours FROM Consumer JOIN Status on Consumer.ConPK=Status.ConFK JOIN Hours on Consumer.ConPK=Hours.ConFK WHERE Status.Date = (SELECT MAX(Stat2.Date) FROM Status Stat2 WHERE Stat2.ConFK = Consumer.ConPK) AND Status.Type = "Approved" Thank you, but I think I left out a requirement. The hours have to come from the most recent Hours records as well. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Query Involving Sums and Two Most Recent Dates
Hi Folks, I have to admit that I've never been able to figure out how to get MAX() to work correctly in queries. Given the following tables (simplified): Consumers PK 1 2 3 Status PK ConFK DateType 1 1 {^2018/1/15}Pending 2 1 {^2018/4/15}Approved 3 2 {^2018/6/1} Closed 4 2 {^2018/4/15}Approved 5 3 {^2017/11/22} Pending 6 3 {^2018/2/3} Approved 7 3 {^2018/3/12}Suspended 8 3 {^2018/5/11}Approved Hours PK ConFK DateAppHours 1 2 {^2017/7/3} 10 2 2 {^2018/3/12}14 3 3 {^2018/4/1/}20 4 3 {^2018/5/1} 12 Query: How many Consumers have a most recent Status of Approved, and what is the sum of those Consumers' Approved Hours? Answer: 2 Approved Consumers, having a total of 12 Hours. I realize it's probably two queries: one for the sum of Consumers, and one for the sum of Hours. However, I have been unable to figure out how to write a simple query to get either of those two values. I have laborious code that does things like pulling in all of the Status records for each consumer and sorting them by date to find the most recent one, and then doing the same for Hours records, and then munging the data together into a final output cursor, and it works fine and is fast enough, but it just makes me crazy every time somebody wants a slightly different report along these lines. It seems like there should be a way to do this more simply. I am sure that I am missing something extremely obvious. Thanks for any help. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[ADMIN] Stuck inside the Filter (with the Memphis blues again)
... Sorry, Bob... Ed, I sent a message concerning SQL queries about a half hour ago. It hasn't shown up in my email, and it's not in the archive. In all of my previous experience, Despite the convential wisdom about the vagaries of email, in all my previous experience with ProFox, this never happens unless the message was stuck in the filter. Can you please check it? Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: Microsoft Catch 22 RDP Update
Thanks, Dave. Now if I can just figure out the logistics on this... Ken, No problems I can see so far on NIC/DHCP addressing or static IP's changing. Dave Crozier Software Development Manager Flexipol Packaging Ltd. --- This communication and the information it contains is intended for the person or organisation to whom it is addressed. Its contents are confidential and may be protected in law. If you have received this e-mail in error you must not copy, distribute or take any action in reliance on it. Unauthorised use, copying or disclosure of any of it may be unlawful. If you have received this message in error, please notify us immediately by telephone or email. Flexipol Packaging Ltd. has taken every reasonable precaution to minimise the risk of virus transmission through email and therefore any files sent via e-mail will have been checked for known viruses. However, you are advised to run your own virus check before opening any attachments received as Flexipol Packaging Ltd will not in any event accept any liability whatsoever once an e-mail and/or any attachment is received. It is the responsibility of the recipient to ensure that they have adequate virus protection. Flexipol Packaging Ltd. Unit 14 Bentwood Road Carrs Industrial Estate Haslingden Rossendale Lancashire BB4 5HH Tel:01706-222792 Fax: 01706-224683 www.Flexipol.co.uk --- Terms & Conditions: Notwithstanding delivery and the passing of risk in the goods, the property in the goods shall not pass to the buyer until the seller Flexipol Packaging Ltd. ("The Company") has received in cash or cleared funds payment in full of the price of the goods and all other goods agreed to be sold by the seller to the buyer for which payment is then due. Until such time as the property in the goods passes to the buyer, the buyer shall hold the goods as the seller's fiduciary agent and bailee and keep the goods separate from those of the buyer and third parties and properly stored protected and insured and identified as the seller's property but shall be entitled to resell or use the goods in the ordinary course of its business. Until such time as the property in the goods passes to the buyer the seller shall be entitled at any time -Original Message- From: ProFox On Behalf Of Ken Dibble Sent: 22 May 2018 17:14 To: profox@leafe.com Subject: Re: Microsoft Catch 22 RDP Update >Just had a 1 day full on panic here with the latest May 2018 update >from Microsoft for Server 2008 and 2012. All the RDP (Remote >desktop) sessions that used to connect now do NOT connect due to a >change in the security settings on any client that has the latest >Windows Updates. Dave, I feel your pain. I've been following this issue, and waiting to see whether MS issued a version of the patch that does not mess up NIC/DHCP addressing. Did you have any issues with losing static internal IP addresses or NIC settings on Server 2008? Thanks. Ken Dibble www.stic-cil.org [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Microsoft Catch 22 RDP Update
Just had a 1 day full on panic here with the latest May 2018 update from Microsoft for Server 2008 and 2012. All the RDP (Remote desktop) sessions that used to connect now do NOT connect due to a change in the security settings on any client that has the latest Windows Updates. Dave, I feel your pain. I've been following this issue, and waiting to see whether MS issued a version of the patch that does not mess up NIC/DHCP addressing. Did you have any issues with losing static internal IP addresses or NIC settings on Server 2008? Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Grids (Not Really)
I have tried about four times to post regarding grids. I wonder if such posts are being filtered. Nah. Grids just suck. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Testing
Yes, it was marked as spam. Iâll send the first and delete the dupes. Thanks very much, Ed. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Testing
At 03:30 PM 3/27/2018, you wrote: Not receiving my own posts? The message to which I am replying was sent out at 3:30 pm EDT March 27 2018. It's in the ProFox archive. I received it almost immediately. Others have seen it and replied. I sent a message at 2:21 pm EDT March 27 2018 with subject: "Get Method Issue with Hidden Property". As of 4:04 pm that message is not in the archive and has not arrived back to me. I resent that message at 3:51 pm EDT March 27 2018. As of 4:04 pm that message is also not in the archive and has not arrived back to me. (And I've already received my own reply to Tracy...) Somebody will probably say "email is not guaranteed to be instantaneous, yadda yadda, who knows what could be wrong with all the newfangled filtering, yadda yadda, it's probably at your end, yadda yadda... I've been subscribed to ProFox since I still had some red hair. In EVERY SINGLE CASE where a message I sent to ProFox did not show up in under a minute, the problem has been, in EVERY SINGLE CASE, a problem at the ProFox server. :) It has NEVER been anything else. So, Ed, please take a look and see what happened to my messages. Thanks! Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Get Method Issue with Hidden Property
VFP 9 SP 1, running on Win 7 Ultimate SP 1. I know that there can be issues with hidden object properties; that's why I give the base class "Set" and "Get" methods to deal with them. That's always supposed to work, right? So today somebody's software blew up on the "Get" method for a Shape object: This is in my resize code (I created this long before VFP had Anchors, and I haven't bothered to change it; the cause of the problem is not that I'm not using Anchors, and the correct solution for the actual problem cannot be to ditch my code and use Anchors instead, even though some people may suggest that.) This seems to have happened because of some bizarre anomaly where a user was previewing a report using the standard VFP report preview window. That report was called from a window that was opened by another window, both of which are In-Desktop windows inside my custom-made main window (I don't use _SCREEN). She closed the preview window, whereupon a shape that is ON THE MAIN WINDOW, not on the window that should have gotten focus, somehow executed its Resize() method--so she probably nudged the border of the main window somehow while playing with the report preview. My shape subclass did this: thepercent = THIS.ObtainAValue("PercentWidth") * PercentWidth is a hidden property of the baseclass. The baseclass code is this: PROCEDURE ObtainAValue LPARAMETERS cTheProperty IF PEMSTATUS(THIS,cTheProperty,5) = .T. * Property exists; the IF statement just said so... RETURN THIS.&cTheProperty && Error 1734 "Property PERCENTWIDTH is not found" ELSE RETURN 0 ENDIF ENDPROC That's all of the code involved; I'm not leaving anything out. I can't reproduce this myself. Needless to say, various users have resized their various forms bazillions of times, thereby running this code bazillions of times *times* the number of times Resize() gets called when you're messing with the borders of a form, without having this happen. This is the kind of stuff that just irks me. I've seen it before; built-in VFP functions just flat-out lie, leaving my code with nothing to trust--but it only happens once in a blue moon. Any thoughts (other than "Use anchors instead"?) Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Testing
No, it's some peculiarity in my text and/or subject line that some filter's RegEx code did not anticipate, I'm sure. Around Christmas I sent a long email to my brother with about 20 links to Christmas songs on YouTube pages, interspersed with commentary. His email server kept rejecting the message. I eventually broke it down to one of those links by sending them to him one at a time. The one that didn't go through was not immediately distinguishable from any of the others, just another string of random characters, but his ISP insisted on rejecting it, over and over and over. It was a legitimate YouTube link like all the others; click it, the song played, without any unintended or unexpected other results. This is what we have come to in our quests to defeat spam--and the longer this type of strategy is followed--the higher the percentages of legitimate messages that won't be delivered, eventually rendering email useless. Ah well... Ed, if you see any of my messages, please see if my original one is stuck in the filter. Thanks. Ken I, otoh, am seeing my posts, so it's probably not a global change in maillist behavior. On Tue, Mar 27, 2018 at 4:06 PM, Ted Roche wrote: > On Tue, Mar 27, 2018 at 3:30 PM, Ken Dibble wrote: >> Not receiving my own posts? >> > > Well, you already know what they say, right? > > > -- > Ted Roche > Ted Roche & Associates, LLC > http://www.tedroche.com -- Ted Roche Ted Roche & Associates, LLC http://www.tedroche.com [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [ADMIN] Testing
At 03:30 PM 3/27/2018, you wrote: Not receiving my own posts? I don't think it likes my subject line. I'll try resending with a different subject. ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: [ADMIN] Testing
I always receive my own posts from ProFox. I may have set it years ago but certainly have not changed the setting since then. It's a setting of the list-serve. If I remember right, it's off by default. -Original Message- From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of Ken Dibble Sent: Tuesday, March 27, 2018 3:31 PM To: profoxt...@leafe.com Subject: [ADMIN] Testing Not receiving my own posts? [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[ADMIN] Testing
Not receiving my own posts? ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: [NF] RE: Timers in VFP
And, for what it's worth, (and strangely enough), although the local airport is now called the "Greater Binghamton Airport", the actual _field_, as in "airfield", is still called "Edwin A. Link Field". Ken John, I had a play around with the early GAT-1 simulator but never got to try out the GAT-2 and subsequent models.. For their day they were extremely advanced. News dated 1988: "TORONTO, July 8 The Singer Commpany agreed today to sell its Link flight simulation and training systems division to CAE Industries of Canada for $550 million. The sale is part of the breakup of Singer. The Stamford, Conn., military contractor was acquired in January by the Florida financier Paul Bilzerian, who has since said that all of Singer's divisions are up for sale. Also today, Singer agreed to sell its education division for $20 million. On Tuesday, Singer said it would sell its power tools and floor-care equipment division to Ryobi Ltd. of Japan for about $325 million. CAE, a Toronto-based manufacturer of commercial flight simulators and other industrial products, said it had reached a definitive agreement with Singer to buy the Link division. It said it would finance the cost of the acquisition internally and through bank borrowings. Singer's Link division, based in Binghamton, N.Y., employs 7,500 and posted revenues of $550 million in 1987. Analysts said the purchase would more than double CAE's size and would create a leading producer of flight simulators. ''I think it will be the world's leader in commercial and military flight simulation,'' said Mark Lawrence, a technology analyst for Prudential-Bache Securities Canada Ltd. Separately, Integrated Resources Inc. announced today that it would purchase Singer's education division for $20 million. The division, known as Career Systems Development, is an operator of vocational training centers. The sales of these divisions will help Mr. Bilzerian pay off debt he accumulated during his $1.06 billion takeover of Singer, which came after a long battle with management." Dave Crozier Software Development Manager Flexipol Packaging Ltd. --- This communication and the information it contains is intended for the person or organisation to whom it is addressed. Its contents are confidential and may be protected in law. If you have received this e-mail in error you must not copy, distribute or take any action in reliance on it. Unauthorised use, copying or disclosure of any of it may be unlawful. If you have received this message in error, please notify us immediately by telephone or email. Flexipol Packaging Ltd. has taken every reasonable precaution to minimise the risk of virus transmission through email and therefore any files sent via e-mail will have been checked for known viruses. However, you are advised to run your own virus check before opening any attachments received as Flexipol Packaging Ltd will not in any event accept any liability whatsoever once an e-mail and/or any attachment is received. It is the responsibility of the recipient to ensure that they have adequate virus protection. Flexipol Packaging Ltd. Unit 14 Bentwood Road Carrs Industrial Estate Haslingden Rossendale Lancashire BB4 5HH Tel:01706-222792 Fax: 01706-224683 www.Flexipol.co.uk --- Terms & Conditions: Notwithstanding delivery and the passing of risk in the goods, the property in the goods shall not pass to the buyer until the seller Flexipol Packaging Ltd. ("The Company") has received in cash or cleared funds payment in full of the price of the goods and all other goods agreed to be sold by the seller to the buyer for which payment is then due. Until such time as the property in the goods passes to the buyer, the buyer shall hold the goods as the seller's fiduciary agent and bailee and keep the goods separate from those of the buyer and third parties and properly stored protected and insured and identified as the seller's property but shall be entitled to resell or use the goods in the ordinary course of its business. Until such time as the property in the goods passes to the buyer the seller shall be entitled at any time -Original Message- From: ProFox [mailto:profox-boun...@leafe.com] On Behalf Of John Weller Sent: 19 February 2018 10:30 To: profox@leafe.com Subject: RE: [NF] RE: Timers in VFP Hi Ken, Thanks for that. I was a navigator in the RAF for many years and was seconded to the UK arm of Singer Link between 1978 and 1982 to work on the Tornado simulator project. The Binghamton office was doing some work for the project hence my visit. I often wondered what happened to them after I left :-) Regards John John Weller 01380 723235 07976 393631 > > John, > > For some reason this message didn't get delivered to my work email. I > was just combing through the list at ho
RE: [NF] RE: Timers in VFP
John, For some reason this message didn't get delivered to my work email. I was just combing through the list at home and saw it today. Singer Link is gone. CAE Corp bought it, and Hughes Aircraft bought CAE and relocated most of the simulator stuff to Arlington, TX. The federal government had a couple of classifed projects going at the Binghamton plant and insisted they stay there. Those are now owned by L3 and are still located at the industrial park in Kirkwood. Most of the Singer-Link building has been taken over and converted to a multi-tenant space. Ken At 04:19 PM 1/24/2018, you wrote: I visited Binghamton in 1981 to attend a meeting at Singer Link, wish I could have stayed longer. Are Singer Link still there? John Weller 01380 723235 07976 393631 > > HI Paul. Pleased to hear that you think it's pretty. I do too--you can be > anywhere in this town and look up and see forested hillsides. > [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: String Reference to Object
> Unfortunately, it does not work in my usual use case: as an alias. > Example: > use ccli > where=evaluate("ccli") && Nope > ? where.clcode Well, in that case you should be using an alias: use ccli alias TheTable ? TheTable.clcode Well, I don't understand this at all. "Use" is a VFP command that only opens a table. The following works fine for me: CLOSE TABLES ALL ccli = "C:\Some Path To\SomeTable.dbf" USE (ccli) && table is now open EVALUATE() applies when the parameter you feed it is the name of an object or a variable that stores the name of another variable. You can do: var1 = 3 var2 = "var1" ? EVALUATE(var2) && 3 And you can do: myarray = "aList" oMyObj.AddProperty(myarray) ? ALEN(oMyObj.&myarray.,1) && 1 But if you want to do this: mytable = "foo" myfield = "bar" ? mytable.myfield Then you need to do: ? &mytable..&myfield A [table].[field] reference is not an object reference and can't be treated like one. It's a thing unto itself. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Foxpro/Programming Training Question
> Hacker's Guide to Visual Foxpro 6.0 (THANKS TED!!!) Please thank Tamar. The book blurb said it was "exhaustive and irreverent." I was the irreverent part. By the time it shipped, Tamar was exhausted. These days I get exhausted just lifting that mighty tome off from and onto the bookshelf over my desk. Thanks also to Tamar, whom I had the pleasure of meeting once. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Foxpro/Programming Training Question
In my opinion there are two issues: 1) Basic Programming Skills and 2) VFP specific skills, and I'm interested in your suggestions in how to meet both of those needs. Plus if there are other issues, let me know that as well. I'm completely self-taught (and sometimes it shows). I don't have much to offer on basic programming skills. I played around with Basic in my youth briefly, and I got some formal instruction in C++ later in life but never used it to produce anything more than training exercises. I've briefly tinkered with Python--enough to convince myself that I could learn it if I had to, though I've never had to. But for VFP, I first taught myself dbXL using the examples in the manual, and when I had to move from DOS into Windows I taught myself VFP. The Hentzenwerke books were invaluable to me; I'm sure I never would have developed any real-world-usable skills without them. Especially: Hacker's Guide to Visual Foxpro 6.0 (THANKS TED!!!) The Fundamentals by Whil Hentzen Effective Techniques for Application Development with Visual Foxpro (Booth & Sawyer: RIP Ms. Booth) To a lesser extent: Advanced Object Oriented Programming with Visual Foxpro 6.0 - Marcus Egger Debugging Visual Foxpro Applications (Nancy Folsom; whatever happened to her?) Visual Foxpro Report Writer - Cathy Pountney Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] RE: Timers in VFP
Something make me click on your website link, Ken, and I was surprised to see you work in the Binghamton, NY area. My wife is the from Elmira/Corning and I've been through your pretty town many times. HI Paul. Pleased to hear that you think it's pretty. I do too--you can be anywhere in this town and look up and see forested hillsides. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Timers in VFP
I vaguely recall somebody saying timers in VFP were bad (at some point). I have a timer that tracks user activity and shuts down my application if there has been no activity for a period of time. It generally works well, but I've had a few issues with it: 1. Time is *very* approximate. If I configure it to shut down after 15 minutes without activity, I can expect it to go at least 15 minutes, but as long as 20 to 25 minutes. This seems to be affected by whatever else is happening on the machine. 2. Timers complicate debugging. I think they contribute to the fact that the debugger doesn't always land on the actual line of code where an error occurred. And if the timer is going to force a jump to some other place, or shut down the application, you need to have a routine to turn it off for your "debug mode", or you won't be able to spend much time analyzing things in the debugger. 3. I have speculated--with no proof--that timers contribute to incidents where VFP doesn't necessarily execute code in the order in which it is encountered. For example, various screen painting/updating issues. Sometimes you can call .Refresh() or .Paint() until you're blue in the face and it just doesn't happen until VFP gets done doing whatever it thinks is more important. I, too, recall this issue being discussed and I think some people had some even more esoteric points. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Performance issues on virtual 2K12 server
Client moved from old virtual 2K3 server to newer 2K12 server. They use an IT vendor to manage all of their IT setup. They connect via Terminal Services if I understand correctly. Apparently this legacy VFP application is run from the server by all users. Performance is inconsistent, with many times it getting almost frozen for some unknown reason. Other times it's fine. No good rhyme/reason standing out. A/V and other scans have the VFP app and data folders excluded (or so I'm told). For those who have worked with VFP apps in TS mode, any tips? "IT vendor to manage..." Is this a "cloud"-hosted service? Have they applied the Meltdown/Spectre patches? Supposedly, especially in a virtualized setting, those can really slow things down. We have not applied any of those patches here. We use RDP here with a virtualized Windows 2008 server. Application runs on that server, and the data (VFP tables) are on a virtualized 2012 server on the same hypervisor. It's blazingly fast, no matter where the end user is. Faster, in fact, for many users, than running it on a desktop in our building. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Printer brands
I am having ongoing problems with my Lexmark X543 multifunction colour laser printer (with automatic duplex). It seems that it would be uneconomic to repair so I am looking for a replacement. So far I have shortlisted three models from three different manufacturers - HP, Brother and OKI. I am tempted by the OKI (MC562dnw) because it is shipped with 2K toners and has a free 3 year on-site warranty. Has anybody had experience (good or bad) with printers from this manufacturer? We have used Brother printers exclusively here for well over a decade and we've been very happy with them. Brother color laser printers can be quite expensive to operate, because you need four toner cartridges (@ US $50 to $60) to provision the printer. Brother high-capacity color laser printers themselves are fairly expensive as well (around US $400-$600). Unlike black & white laser printers, though, it can be cost-effective to replace the color laser drum (around US $150) when it wears out. We limit use of the color laser printers here to small runs (100 copies or fewer); for larger runs people use the printer to generate an original and we have a color copier to make the copies. When people follow that rule, the drums last for several years and the toner consumption is acceptable. Beyond that, the main issue I have with color printers generally is the help desk support; people have to realize that they have to calibrate their software if they expect documents to come out of the printer with the same colors they see on their monitors, and they also have to understand that the ony real way to get a truly "professional" result is to create a PDF and send it off to an actual print shop. HTH. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: [NF] Meltdown and Spectre CPU Flaw Information
If you are a HIPAA shop then I'm sure your IT team is paying proper attention to this. Hah! I AM the IT team. (I have a couple of part-time assistants who do help desk and maintenance, but I'm the CIO/SysAdmin/DBA/Systems Analyst/Code Monkey/chief cook and bottle washer. We have an internal "cloud"; we don't use any form of commercial cloud storage for documents, or for any sensitive data (unless you count email as such; and sensitive data sent by email is password-encrypted in zip file attachments using 7-Zip). We do not host public-facing websites or email servers. I have a consultant that I use for extremely technical purposes. I've requested their opinion on the issues. I have a lot of stuff to research on my own, though, as I don't accept anybody's opinion without evaluating it for myself to the best of my ability. My primary concern is what happens to the performance of VMWare when they issue a patch for this, and what happens to the performance of various vintages of MS Server that have been virtualized after I apply patches to them. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: [NF] Meltdown and Spectre CPU Flaw Information
Virtually everything we do here involves HIPAA-sensitive information, but we have very robust perimeter defenses. I'm much more concerned about a potential 30%+ performance loss in systems that are constantly used by nearly a hundred people every day. The exploit allows VMs to go into the memory space of other VMs. Very bad. Unless you don't have any sensitive info that needs to stay that way. -- rk -Original Message- From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of Ken Dibble Sent: Thursday, January 04, 2018 1:35 PM To: profoxt...@leafe.com Subject: Re: [NF] Meltdown and Spectre CPU Flaw Information I just can't wait to see what it's going to do to my highly virtualized network--if I ever decide to let it through. Probably a smaller version of what it's already started to do to some commercial cloud systems. Windows Automatic Updates: Just Say No. (TM) >Also, kudos to Microsoft for shipping their patches a week early, and >spontaneously rebooting idle Windows workstations while people were >freaking out over the new exploits. Good job! > >On Thu, Jan 4, 2018 at 12:27 PM, Ken Dibble wrote: > > Hi folks, > > > > Ask Woody has a very thorough report on this, with links to more > > information. > > > > We all need to be fully informed about this; it is going to affect > > everybody. > > > > https://www.askwoody.com/ > > > > Ken Dibble > > www.stic-cil.org > > > > [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Meltdown and Spectre CPU Flaw Information
I just can't wait to see what it's going to do to my highly virtualized network--if I ever decide to let it through. Probably a smaller version of what it's already started to do to some commercial cloud systems. Windows Automatic Updates: Just Say No. (TM) Also, kudos to Microsoft for shipping their patches a week early, and spontaneously rebooting idle Windows workstations while people were freaking out over the new exploits. Good job! On Thu, Jan 4, 2018 at 12:27 PM, Ken Dibble wrote: > Hi folks, > > Ask Woody has a very thorough report on this, with links to more > information. > > We all need to be fully informed about this; it is going to affect > everybody. > > https://www.askwoody.com/ > > Ken Dibble > www.stic-cil.org > > [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[NF] Meltdown and Spectre CPU Flaw Information
Hi folks, Ask Woody has a very thorough report on this, with links to more information. We all need to be fully informed about this; it is going to affect everybody. https://www.askwoody.com/ Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Restart now or later?
Bad Ken is stealing my line! Once you go ERP you never go back. I usually go ERP a few times after drinking some beers and eating some barbecue Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Restart now or later?
> As I said in the other thread on this topic: Experts recommend that people > should not rely on a single product, no matter who makes it, >> >> >> --- You shoudl talk to more ERP vendors for a different opinion. hahahahaha Yeah, I should have been more specific. *Computer* experts, not *marketing* experts. *LOL* -- Bad Ken ;-> ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Restart now or later?
However, even third party SW can have flaws in its SW! Right? As I said in the other thread on this topic: Experts recommend that people should not rely on a single product, no matter who makes it, for anti-malware protection. Every product behaves differently and catches some threats while missing others. My statement in this thread was what I tell people when they ask me if they should just rely on Windows Defender. Note that I also said in the other thread that you should have multiple products installed and use them for manual scans. You should only have ONE *real-time scanner* running at any given time. Ken And - since this thread is bringing up issues w/Malware protection - and I had started another thread about malware - maybe its a good time to ask. What DO People use to protect against Malware? And, is MalWareBytes the best protection against MalWare?? -K- On 12/8/2017 10:07 AM, Ken Dibble wrote: Meanwhile, other links say this is an issue with the Windows "Malware Protection Engine"--Windows Defender. The reason why Windows Defender isn't good enough is because it is manufactured by the same company that makes the OSes that it's supposed to protect. It is likely dependent on code in those OSes, and if there are flaws in that code, then there will be flaws in Windows Defender. That is the explanation I give people when I am asked if they should rely on Windows Defender instead of using third-party malware protection. Now I have actual data to back me up. [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Restart now or later?
Windows is shipping new updates early this month. In the latest "Windows 10 Fall Creators Edition Update" version, they now have a pretty panel and call them "Feature Updates" rather than bug fixes, but you know what that means. Info on the Windows Security Site [1] seems to indicate it's a fix for many of their security products. That, combined with the week-early date, make me suspect something's in the wild they don't want people to catch. "Ask Woody" has a post at 8:30 am his time today referencing CVE-2017-11937. He promises a fuller post later on ComputerWorld. Meanwhile, other links say this is an issue with the Windows "Malware Protection Engine"--Windows Defender. The reason why Windows Defender isn't good enough is because it is manufactured by the same company that makes the OSes that it's supposed to protect. It is likely dependent on code in those OSes, and if there are flaws in that code, then there will be flaws in Windows Defender. That is the explanation I give people when I am asked if they should rely on Windows Defender instead of using third-party malware protection. Now I have actual data to back me up. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[NF] Free Windows 10 Book by Woody Leonhard
Woody Leonhard of "Ask Woody" and "Woody on Windows" is my go-to guy for current information on the relative state of deshabille of various MS operating systems. Want to know what you're risking by leaving automatic updates on? He's the guy. He's also written a book on Windows 10, and his publisher is offering it as a free PDF download. You can find out how to get it here: https://www.askwoody.com/ Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: BitDefender Doesn't Play Well With VFP
Well it depends on what the 'something' does - glancing at my desktop I see I have Malwarebytes, Microsoft Fixit, HiJack This* - afaik they are all on-demand programs so there is no overhead. I don't have any other anti-virus software running. I think some people are trying to compare apples and oranges to pineapples and pine trees here. Running more than one *real time scanner* of any kind that inspects files as you move them, open them or execute them, at the same time, is a recipe for disaster. As regards running Windows Defender and any other real-time anti-malware scanner at the same time: If you're doing it on a typical workstation I'm surprised you can even fully boot it up and log in. It may be that those... people... who are insisting on doing this on a server are only getting away with it because it's a massive tank with multiple multi-core processors and dozens of gigabytes of RAM. On an ordinary computer you would know instantly that it's a bonehead thing to do. Lots of anti-malware products have the option to set up constant real-time scanning, or not to set it up, when you install it. It is necessary to pay attention to what the install screens tell you. Close attention. (In fact, if you are a computer professional, you should, as a matter of course, NEVER accept the default installation parameters for ANY software until you have at least examined the "advanced" or "custom" options.) MalwareBytes, for example, can be used as a real-time scanner (where it will likely conflict with any other real-time scanner you have running, and cause serious problems) or only for manual or scheduled scans. You get the choice when you install it. So having multiple anti-malware products *installed* is not a bad thing; in fact, most experts recommend that you have two or three installed, because none of them catches 100% of everything. But having more than one of them *running* at the same time is always a mistake. As for my experience: I use free AVG at home because, unlike free avast!, it does not require registration. It does routinely try to trick me into installing its paid version(s), but since I am a computer professional I am not fooled. If it really got unbearably annoying, I'd probably go with free avast! and put up with the registration requirement. At work we use the paid, centrally-managed version of avast! Endpoint Protection. My only real complaints about it are that 1) the documentation is non-existant and the only way to find out how to do something (anything) with it is to post a query to the user forums; and 2) it has a lot of false positives on websites because it insists on treating situations where website developers don't follow current "best practices" as though they were actual threats. (If you're a web developer, I'm sure it's nice to have a tool to tell you that failure to patch something has created a potential hole. But when end-users keep getting nasty-looking warnings because some developer is using an iFrame even though in the particular case, that iFrame has not been exploited to create an actual threat, then those users will likely start ignoring all of those warnings and just click through them until they stumble on something that really hurts. I've had this argument with the avast! developers, to no avail.) The server-managed version of avast! is quite cheap per-seat for not-for-profits like ours if you get the three-year licenses; they provide a 50% discount to not-for-profits. The product does not require a true server OS; mine has been running on ordinary Windows 7 Ultimate on a fairly robust (think "gaming"), always-on, workstation for years. And the server-console function to easily let you block access to specified URLs (using wildcard characters if you wish) across your entire network works great. An amazing thing about avast! is that not once in the nearly 6 years I've used the product has it ever forced somebody to reboot in order to load an update. It just gets the updates and runs them, period. Can you show me any other Windows anti-malware with that record? By the way, avast! recently purchased AVG. I don't know what that will bode for the future but right now they are managing them as two completely separate products. (And no disclaimer needed; I don't work for avast! nor am I a reseller of it--or of anything else except my own products.) Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated ot
Re: Odd Behaviour
ThisForm.pgfIncExp.ActivePage = This.Value ThisForm.Refresh Probably already thought of but the proper syntax of the command is: ThisForm.Refresh() (ie, with parentheses) Such code would run semi-reliably without the parens in VFP 6 but less so in later versions. I have had a few instances in which bad code generates errors under some circumstances but not others, in seemingly random fashion, owing most likely to the behavior of the compiler. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Entering invalid date hangs form
Anyway, enter a valid date (set century is on) such as "11/11/" and you blow through to the next field. Expected. Then try "22/22/" and the field becomes highlighted *and you cannot remove the characters*. There's no "Invalid Date" message. It feels like you're in a very tight keyboard loop and you can't break out. I can click on the close box on the form and see it depress, but no action is taken (My take is that Windows events are superceding the VFP events but once VFP takes over, it's the infinite loop). There is nothing I can do to change the invalid date even though I'm stuck in the field (Delete key does nothing, trying to enter new values to overwrite the old values does nothing, etc.). This is one of VFP's famous "untrappable" errors. Typically when this happens you can do CTRL+A and then CTRL+X to clear it. Also, minimizing and then restoring the window will clear it. When this happens in my system users can simply correct the date to solve the problem as well. The cursor will be flashing to indicate the system is not frozen. I'm surprised that you are saying nothing works. I suppose it could be JKey interfering. A work-around would be to supply a date-picker, though I realize that could be a lot of work. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/ ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF]Debugging Pain Survey
I am embarked upon such a project right now, cleaning up/refactoring/commenting a bunch of code from a recent, very fast-moving project now that user demand for changes has slowed down. Here's my list of most common issues: 1. Typos 2. Bad Variable References (really, just a subset of Typos) 3. Incorrect Data Types 4. Logic Errors 5. Unexpected User Actions There are two of these that I just can't seem to find a way around: A. User fat-fingers some bizarro combination of keys, causing a crash. B. User finds some way to input something even when the mouse cursor is an hourglass (okay, okay, spinning circle, or whatever nonsensical emoji is current in Windows 10, for all you modernistes) and when all the buttons are disabled. Some of this is VFP's notorious set of screen update/paint/event issues. You know, you have some routine or loop of code, in the midst of which a button is supposed to be disabled or a control made visible or invisible, but it doesn't actually happen until after the routine/loop is finished, no matter how many DOEVENTS, WAIT ... TIMEOUT, Paint() and/or Refresh() lines you put in. I have also discovered that the user can sometimes defeat hourglass/disabled control stuff by jumping to some other application during some time-consuming process, and then jumping back into my program before the process completes. The rest of those in the list aren't an issue for me. 6. Other: A. There is still, I think, some sort of really insidious corruption in my various project files that allows bad code to compile without throwing errors. This results in very rare instances of inexplicable crash errors. A missing or extra END... something perhaps, somewhere. I will probably never find it. B. I am still occasionally having "invalid subscript" errors on arrays even after conducting an exhaustive code search for array loop counter variables that were not declared LOCAL (after Ted's suggestion--Thanks Ted!--a while back I found a small handful and so these are occurring much more rarely than before). Has anybody ever constructed a utility that searches all of the methods/functions/procedures in a project specifically for variables that were not declared LOCAL in those routines? (I only have a handful of PUBLIC variables that are set when the program starts and are never deliberately changed, and I never use PRIVATE).* C. Connectivity Issues: I realize I can't fix broken hardware or cables through software, nor do I want to bog down my code with tests to ensure that everything is available across the network before every attempt to do something, but I wish I had a better handle on how to deal with some of these. Especially, lately, I would like to be able to "wake up" a dropped network share, since MS in their infinite wisdom decided it would be "helpful" to disconnect mapped drives that haven't been accessed within some mysterious amount of time (I'm aware of registry settings on both client and server side that are supposed to fix this; they simply DO_NOT_WORK). * I know, never use PUBLIC variables; put stuff in global objects or simply instantiate variables globally at program start up. It shouldn't be a problem as long as those variables are intended to be static. And I need stuff to be available before any objects are instanciated and after all of them are destroyed. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/52.A2.16607.7637AC95@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Windows updates August problems?
And as a double-bonus, if you had any updates hidden, say because they corrupted your machine, the cumulative update un-hid them so they get applied and, *boom*. How can you not love the company that does this? I DO! I DO love them! We STILL do not have any Windows 10 machines (and I have ten never-used Win 7 boxes still in inventory for future expansion) for this reason. But see, I think that the Windows 10 forced update "feature" is actually a design bug that has caused Microsoft to achieve only 50% of its projected adoption rate for this OS (even though they gave away most of those adoptions for free and deliberately tricked and defrauded a lot of people into the "adoption"). Eventually somebody over there is going to wake up and realize this fact, and fix it. They keep inching toward it with some little change every few months. So when they finally return to full user-control of updates, then I will be able to avail myself of what is otherwise, according to many reports, a pretty good operating system. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/E3.08.16607.B52AC895@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Windows updates August problems?
Later, "Restart Now or Restart Later?" revealed that some of the recent updates STILL were not successfully installed. Restarted. Lather, rinse and repeat the above three times. A recent Win 10 update broke the Update History. Could that be why the user thinks nothing has been installed? http://www.computerworld.com/article/3214488/microsoft-windows/windows-10-1607-cumulative-update-kb-4034658-wipes-out-update-history.html Windows Automatic Updates. Just Say No. (TM) Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/85.50.12431.BC9AB895@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: GETFILE() Returns Empty String in Some Cases
I remember!! It was Calvin Hsia! Here's the blog article: https://blogs.msdn.microsoft.com/calvin_hsia/2004/12/14/foxpro-performance-tip-field-name-lookup-for-tables/ Ken On 2017-08-01 10:00, Ken Dibble wrote: A member of the VFP Team (I can't remember his name; he was the guy who "took out the slow parts" from various subsystems for VFP 8 and 9) wrote a blog article explaining that without the M. prefix, the system MUST compare every variable referenced to every field in the current work area every time the variable is accessed to determine whether the variable is a field name. He said that if the current work area contains a large number of fields, and the same variable is used over a large number of iterations in a tight loop, using the M. prefix makes a considerable difference in speed. He showed test results to demonstrate this. I do a LOT of array iteration. So I began using the M. prefix for variables inside high-iteration tight loops. I noticed a slight speed increase. However, I find the M. prefix ugly and distracting. I used it yesterday as a quick fix to demonstrate what the problem was. I will probably eventually rename the variable. Ken Very interesting...thanks for sharing that! [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/2A.4B.21563.4C8C0895@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: GETFILE() Returns Empty String in Some Cases
I agree with reasoning, but I have a slightly different methodology I actually have my own methodology; I just failed to follow it. I personally find type abbreviations to be difficult to read and interpret quickly. For generic variables I usually just prefix "the", ie. thefile, thefolder, thename, etc. I never use "the" for a table or cursor field, so this ordinarily prevents the kind of problem I experienced yesterday. Unfortunately, I had copied some old one-off code for this project in order to try to save some time. I need to remember that a lack of rigor will always eventually bite me. Personally I am not a fan of the "M." prefix and find it unnecessary. A member of the VFP Team (I can't remember his name; he was the guy who "took out the slow parts" from various subsystems for VFP 8 and 9) wrote a blog article explaining that without the M. prefix, the system MUST compare every variable referenced to every field in the current work area every time the variable is accessed to determine whether the variable is a field name. He said that if the current work area contains a large number of fields, and the same variable is used over a large number of iterations in a tight loop, using the M. prefix makes a considerable difference in speed. He showed test results to demonstrate this. I do a LOT of array iteration. So I began using the M. prefix for variables inside high-iteration tight loops. I noticed a slight speed increase. However, I find the M. prefix ugly and distracting. I used it yesterday as a quick fix to demonstrate what the problem was. I will probably eventually rename the variable. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/AC.81.20123.36980895@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: GETFILE() Returns Empty String in Some Cases
Are you declaring your variable as PRIVATE right before you run the GETFILE() command? PRIVATE mypath mypath = GETFILE("csv","Spreadsheet","Open",0,"Open Spreadsheet") Just curious if that is affecting it. GAHHH!!! That's it!! Not a PRIVATE declaration, the variable is declared LOCAL. But in application mode there is a field in an open table with the same name as the variable. I applied the "essential m-dot" to the variable, and that fixed it. Thanks very much Philip!! Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/B0.1B.21563.D4D8F795@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: GETFILE() Returns Empty String in Some Cases
Permissions issue on the folder or on the selected file? I don't see how. In both cases it's me doing the test, on the same computer, with the same folder and file, with the same domain administrator account. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/F8.C3.10880.EC47F795@cdptpa-omsmta01 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: GETFILE() Returns Empty String in Some Cases
What kind of value does "parms" contain? The actual code is: mypath = GETFILE("csv","Spreadsheet","Open",0,"Open Spreadsheet") In both stand-alone and application mode, this displays the file dialog correctly and pointing to the location that I expect. However, I have also tried it as: mypath = GETFILE("csv","File","Open",0,"Open Spreadsheet") because someone suggested that the dialog can't display more than 10 characters to the left of the file name textbox. That didn't help. I have also tried it simply as: mypath = GETFILE() Then I manually navigate to the file location. But that doesn't make it work either. I'm sorry, I got sidetracked and failed to properly end the original message. I meant to conclude with: Thanks in advance. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/6F.7D.20123.CE07F795@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
GETFILE() Returns Empty String in Some Cases
Hi folks, VFP 9 SP1 on Windows 7 Ultimate. I have a process to let the user choose a file. The user opens a .scx form, presses a button to run some code that calls GETFILE(), and when the user has done so, the path and file name are displayed on the form. When I run this form in stand-alone mode, this works fine. GETFILE() returns the path and file name to a string variable and I then display the variable contents on the form. When I run this form from within the full application, GETFILE() displays the proper location and behaves perfectly fine, but when the user chooses a file, it always returns an empty string. I've tracked this in the debugger. In both cases, I emphasize, from the point the user presses the button, the exact same code runs, at each point generating the exact same results, until we get past myvariable = GETFILE(parms) line, at which point myvariable is empty in application mode, but contains the full path and file name in stand-alone mode. I am following the correct procedure to obtain an appropriate full path, and in both cases the GETFILE() dialog displays the correct location and is configured properly according to my parameters. It simply won't return a value when run from inside the application. I've read everything with "GETFILE" in the subject line in the leafe.com archives. I can't find anything that addresses this situation. My application does not use the _SCREEN (SCREEN = OFF in the config.fpw file). Instead I have my own main window which is modeless and "2 - as top level". Normally the import window, which is modeless and (1 - in top level), is called from a modal form that is opened from a menu item. To eliminate the possibility that this modal/modeless business is interfering, I put the button that opens the import form directly on my main window, so that the only open windows are the modeless top-level form and the modeless in-top-level import form before the GETFILE() dialog is called. That's as close as I can get to running the import form in stand-alone mode. This did not help. The stand-alone mode of my framework's forms actually creates the same environment that exists in the full application before opening the form, so I can't see how not actually running the full application can make a difference. I emphasize, again, in the debugger, from the point the user presses that button every single step runs exactly the same way, and returns the same results, up to the GETFILE() dialog, in both stand-alone and full-application modes. My code stores the location that I want GETFILE() to display to a variable, mypath, so I do: oldpath = FULLPATH(CURDIR()) CD (JUSTPATH(mypath)) myvariable = GETFILE(parms) CD (JUSTPATH(oldpath)) Some people suggest using SET DEFAULT TO ..., so I also tried it like this: oldpath = FULLPATH(CURDIR()) CD (JUSTPATH(mypath)) SET DEFAULT TO (mypath) myvariable = GETFILE(parms) CD (JUSTPATH(oldpath)) SET DEFAULT TO (oldpath) That doesn't help either. The default is for the file name and path to contain spaces, and this works just fine in stand-alone mode. But I renamed the test file to remove spaces, and put the file in C:\foo, so there are no spaces anywhere in the path or file name, and it still doesn't work full application mode. GETFILE() just returns an empty string. I've also tried using PUTFILE() instead of GETFILE(), even though it's less elegant for my purpose. PUTFILE() also works as I expect in stand-alone mode but returns an empty string in full-application mode. LOCFILE() is not an option because I can't mandate a file name for this. This is driving me absolutely bonkers. Possibly I could roll my own file dialog, but short of that, can anyone provide any suggestions to explain why this is happening? Any suggestions ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/44.CD.20123.7486F795@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Bulk Imports While Multi-User System is in Use
Thank you to everyone who responded. Is the proposed import doing any updates of the parent records or just adding\updating child records? The import will not create parent records. It also won't edit existing records, only create new child records in one particular table. If the expected parent record is not found, all of the to-be-created child records for that parent will be skipped. I think most of the time will go to very extensive validation to get a list (cursor or array) of records that will actually be inserted. As noted, the validation will have to include queries to find the parent records. I will also have to do queries to see if the child records have already been added (I can envision someone trying to import the same sheet more than once). I don't think those queries should pose much of a problem since they are read, not write, operations. Those would all be done prior to beginning the insertion process. I'm going to require that the spreadsheet be saved in csv format to eliminate vagaries associated with xlsx and xlsx converted to xls. I'm told that the spreadsheet wizards around here are pretty familiar with that requirement. So I feel pretty confident that this isn't going to disrupt anything seriously. Thanks again. Ken www.stic-cil.org Normally (i.e. in vanilla VFP) unless the logged-in users have exclusively opened or otherwise locked the parent records (which you say they won't) then I would be in broad terms: * Pre-validating the import data to report on exceptions and arrive at a clean import set of records. * Upserting the child records wrapped in a transaction. * Repeat if applicable for parent records. You say your application doesn't explicitly lock any tables (rlock(), flock() or automatic locks via BEGIN TRANSACTION) and if the OS does indeed do any sort of ultra-brief locking on file updates it's never caused me a problem. So I would say the worst that will happen is that other users might see a 'record not available - please wait' message if they try and save a parentr record when you're still inside a transaction on whatever machine the import is running on. But assuming there aren't millions of records and you keep the transaction as quick as possible I doubt they'd ever even see that. -- Alan Bourke alanpbourke (at) fastmail (dot) fm [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/00.B0.10880.7B511595@cdptpa-omsmta01 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Bulk Imports While Multi-User System is in Use
Hi folks, Having never attempted this before, I am seeking any guidance you can offer. I'm using VFP tables across a LAN, with VFP 9 SP 1. The tables are on a virtualized Windows 2012 file server that has gargantuan memory and HDD resources available. The workstations are Windows 7 Ultimate 32-bit with processors in the 3.5 GHz range and 4 GB of RAM. My framework does not use the RAD features of VFP; no data environments, no control sources, no buffering (I actually wrote my own "buffering"/conflict resolution system), no auto-incrementing columns. The only time I manually lock anything is when my integer surrogate key-creation program is generating a new key--and I only lock the table that stores the last-used key value. I do use a database container so that the default value methods of the PK fields of my tables can call the key generation program. When users create new records, I use APPEND, not INSERT. The system was deliberately designed to divorce database access from business rules and GUI (because initially, long ago, I thought I might actually embark on writing my own database server). I understand that there is brief automatic locking, however, whenever VFP writes to a table (or, rather, when the server OS, in its infinite wisdom, deigns to carry out VFP's request to write to the table). I've been given the task of importing data from a spreadsheet into my multi-user system. I have not done any testing on this but it is possible that the import process, run every week or every two weeks, will create thousands of records that will be "children" of a few hundred "parent" records. The system is in near constant use by somewhere around a half-dozen people, and much larger numbers use it occasionally. Some of the half-dozen intensive users are quite likely to be accessing the parent records at the time the bulk import process is creating the child records. I am concerned about creating massive access conflicts leading to race conditions, freezing of the system, and/or data corruption. Should I just block everybody from saving any data while the import process runs? (I don't know how long it will take, but I do envision a lot of error-checking and logging on each row of the spreadsheet to prevent bad data from getting into the system.) Or are there simple things I can do to prevent issues ("simple" means, no major changes to the framework or the database)? Or is this something I don't really need to worry about? Thanks very much for any suggestions. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/14.40.21563.3C8DB495@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Friday Afternoon Discussion: Passwords
Not so silly. There are password processes that depend on gestures that are under testing. The ability to click and swipe through a series of images is somewhat unique due to biomechanical parameters or personal habits. I've also seen proposed some sort of facial recognition. The sooner we get through remembering a dozen random characters, the better. That's just a waste of time. Not likely to be accessible to people with visual disabilities, or disabilities that reduce fine-motor skills. I use a password manager that syncs encrypted data over the internet so I have the same set of passwords on different machines of different OSes (Windows, Linux, ChromeOS, Android) and browsers. But none of these make it easy for desktop or console applications; you need to query the manager, prove you're you, copy the password to the clipboard (insecure!) or try to manually type longish random strings. Double-bonus goes to sites that double-check with an SMS or similar. "Something you know (password) and something you have (cellphone)" makes for good two-factor authentication. Pretty much, only computer geeks (broadly construed) use password managers. Not only do most ordinary computer users not use them, they have never even heard of them. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/06.5F.18116.D6F1E095@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Friday Afternoon Discussion: Passwords
1. Forcing people to frequently change passwords is not helpful. It just makes it more likely that they will stick the password on a Post-IT on their monitors because they can't remember it. It does help some. If someone has your password but has not changed it, because it would alert you, and you change your password, he no longer has access. (Yes, he could possibly break in again.) If security is upped on the system he has access to and he has your password, the security improvement does not help you at all. 2. Imposed password complexity does not help either (As I keep telling people, the only way that a user can make his/her password harder to "guess" in the modern age is to make it longer. It is just as easy for a brute-force botnet application to "guess"#51aQ4@5)?" as it is to guess "YourMomma!") What about a dictionary attack? dictionary.com has both "your" and "momma", but it does not have "#51aQ4@5)?". Maybe I should start my own security newsletter Read the article. The data does not support the contention that these are important enough vectors to justify the downside that these recommendations have for users. Anybody who's got a dictionary, by now, also has a brute-force "guessing machine" and a botnet. Yup, they get through the dictionary in a few seconds. Within only a few more minutes, the botnet loops through every possible combination of characters in a 10-character password, and then they move on to 11 characters. The only thing that slows them down at all is a much longer password, and the only really effective defense involves measures on the server side. There is very little that a user can do to a password to make it significantly safer in the modern age, and there is huge amount of aggravation that can be caused to users over passwords that, in the end, has very little benefit. This isn't just me, or just me and O'Reilly. Now it's me, O'Reilly, and the NIST. Of course, I know, I'm a low-status person. No matter how right I am. or how often I am right, nobody listens to me until a high-status person repeats what I said. I am just enjoying the gratification of being proven right. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/E1.DD.03288.67DFC095@cdptpa-omsmta01 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[NF] Friday Afternoon Discussion: Passwords
What I've been saying for years From the O'Reilly Security Newsletter: https://venturebeat.com/2017/04/18/new-password-guidelines-say-everything-we-thought-about-passwords-is-wrong/ 1. Forcing people to frequently change passwords is not helpful. It just makes it more likely that they will stick the password on a Post-IT on their monitors because they can't remember it. 2. Imposed password complexity does not help either (As I keep telling people, the only way that a user can make his/her password harder to "guess" in the modern age is to make it longer. It is just as easy for a brute-force botnet application to "guess"#51aQ4@5)?" as it is to guess "YourMomma!") Maybe I should start my own security newsletter Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/8D.F3.12780.D93BC095@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Fuzzy Name Searching
Unfortunately, that would require modifications to the database, which I try to avoid due to the downtime they require. Why would that be an issue of consequence? You add some columns to a table. The rest of the software can ignore them. (Unless you use select * or other black arts, said rest might never see the new columns.) Yeah, there are black arts involved. My framework has some generic code that expects to be able to process every field in certain types of tables. If there is not corresponding code for each field in certain subclasses, errors are thrown. Probably a poor design choice in retrospect, but the choice was made in 2004 and rectifying it would require a huge amount of work. Oh, my! (Alternative pronunciation: "You poor bastard!") Can you modify the framework? One kludge would be for it to ignore certain columns, say those starting with a certain prefix. See above, re: "huge amount of work." I have a couple of anvils around my neck, too. They prevent my system from easily being multi-user. One was a reasonable trade-off at the time, but the downside continues to bite. The other was an argument I lost, because my boss does not understand relational databases. Pointy-haired, I presume? [snip] No, I don't have a loader program. I would have to introduce internet download capabilities in order to provide that, and that's a headache I don't need. Loader programs are not difficult to set up on a local network. Still not an option? No, because there are other completely separate organizations, far away from here, using the software. I would either have to fork the project to leave those organizations out of the loader thing, or I would have to somehow get them to implement timely updates of a network program source cache. These other organizations do not have any employees who even fully understand the difference between a local folder and a folder on a server (I am not exaggerating), and they have to make an appointment with a local IT consultant any time they need to install a piece of software or do anything else of a maintenance nature. Every time they need to install an update for compliance reasons it's a couple hours of phone time for me, mostly spent trying to get them to explain where their data is and then trying to get them to understand what they need to do about it. (TeamViewer or something isn't a realistic option because they don't have admin rights to their own servers, and some of them don't even understand how to log into their workstations with an admin account.) So the only option to save my sanity would be to implement a direct download across the internet from my server--a security headache. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/BD.6E.21189.DB2D0F85@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Fuzzy Name Searching
Unfortunately, that would require modifications to the database, which I try to avoid due to the downtime they require. Why would that be an issue of consequence? You add some columns to a table. The rest of the software can ignore them. (Unless you use select * or other black arts, said rest might never see the new columns.) Yeah, there are black arts involved. My framework has some generic code that expects to be able to process every field in certain types of tables. If there is not corresponding code for each field in certain subclasses, errors are thrown. Probably a poor design choice in retrospect, but the choice was made in 2004 and rectifying it would require a huge amount of work. Thus when I make data changes involving certain tables, I have to lock everybody out not only for the time it takes to make those changes, but to update everybody's copy of the software. There are over 100 users at this site, many of whom use the software almost constantly, and there are other sites that also use the software. One of those tables would be the table that contains the names of people. I can work around that by storing the pre-processed data in a separate table with a one-to-one relationship to the names table (assuming that I don't need backlinks in the names table), but that seems inefficient to me. My principle for organizing a table of people is that it should contain every required aspect of the person's identity of which the person can have only one. A soundex value or Levenshtein weight for the person's name would qualify as such. No, I don't have a loader program. I would have to introduce internet download capabilities in order to provide that, and that's a headache I don't need. I'm looking for suggestions on how to produce results that include close matches on last names that doesn't require pre-processing. I can not see that the preprocessing would be very involved. I agree, it would not. It's the necessity of providing storage for the results that causes the problem. Well, there's a separate problem--the cost of having to appy one or two UDFs that would have to run on every name-search query. I was hoping, though, to get some suggestions for UDFs that I could at least test and see if they aren't impossibly slow. I suppose there are no easy answers, but if anyone has an algorithm for this kind of thing that they would be willing to share, I'd be grateful. There are not, because different languages assign different values to the Roman alphabet characters. You are going to have decide on language trade-offs. I'm liking the Levenshtein stuff, and I could use it in my utility for detecting and removing duplicate records. That wouldn't involve pre-processing. I think it could really speed that up. Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/2E.80.21189.632BFE85@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Fuzzy Name Searching
Thank you everybody. I will be working through these suggestions and let you know what I come up with. Ken I remember this joy of searching names in a system that had 2+ million customers and names were all varchar() instead of a key to a secondary table. My indexes sure took a beating when I got another "Williams", the number one last name in the system, and it had to tear a page to make a new page in this area. I found that making a table called NAMES fixed the search time I was experiencing. Two text boxes had input for whatever they keyed. I added the % for wildcard after any text in each box and one of the keypress events was the trigger to run it. Select from customer where lNameID in ( select nameID from names where Name like @Lname) and fNameID in ( select nameID from names na where na.Name like @Fname) That has been 10-13 years ago. On Wed, Apr 12, 2017 at 9:55 AM, Ken Dibble wrote: > Hi folks, > > I've been thinking of how I can improve the ability of my users to find > people's names in a system that has over 30,000 people in it. > > I've looked at soundex, and I've considered munging names to remove > spaces, apostrophes, hyphens, etc. The thing about those approaches is that > in order to be efficient, they require pre-processing all of the names in > the system and storing the results, which can then be queried to find > matches. > > Unfortunately, that would require modifications to the database, which I > try to avoid due to the downtime they require. > > I'm looking for suggestions on how to produce results that include close > matches on last names that doesn't require pre-processing. > > I've played with various schemes to assign "weights" to matches based on > the number of matching letters, but they all end up being very slow and > also producing too many false positives. > > I suppose there are no easy answers, but if anyone has an algorithm for > this kind of thing that they would be willing to share, I'd be grateful. > > Thanks. > > Ken Dibble > www.stic-cil.org > > [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/E2.1F.03423.4B39FE85@cdptpa-omsmta01 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Fuzzy Name Searching
Hi folks, I've been thinking of how I can improve the ability of my users to find people's names in a system that has over 30,000 people in it. I've looked at soundex, and I've considered munging names to remove spaces, apostrophes, hyphens, etc. The thing about those approaches is that in order to be efficient, they require pre-processing all of the names in the system and storing the results, which can then be queried to find matches. Unfortunately, that would require modifications to the database, which I try to avoid due to the downtime they require. I'm looking for suggestions on how to produce results that include close matches on last names that doesn't require pre-processing. I've played with various schemes to assign "weights" to matches based on the number of matching letters, but they all end up being very slow and also producing too many false positives. I suppose there are no easy answers, but if anyone has an algorithm for this kind of thing that they would be willing to share, I'd be grateful. Thanks. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/31.FF.16480.FDF3EE85@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Monday Survey Question
1. How many VFP books do you own? Somewhere around a dozen. 2. How many are dead-tree paper and how many ebooks? All dead trees though I did get the ebooks with the Hentzenwerk ones. 3. What is your most well-worn VFP books? Or most referenced ebook? What's New in 9 4. What book do you regret not owning? Tamar's book on SQL. 5. Would you buy VFP books if you could find them? Possibly. 6. Preferred format? Paper, PDF, CHM, ePub, HTML, other (which?) Paper. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/2B.92.21189.75530D85@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Scheduled Tasks, VFP, Batch, 7-Zip and PuTTY glitch
Ticking the checkboxes in Scheduled Tasks for "Log in as" or "Run only when logged in" or "Use maximum permissions" made no difference. Ideas? Is this a WinPro7 v. 2000 security "feature" I'm running into? I have run into this. I THINK that I was able to overcome it by promoting the user for whom the task must run to local administrator, then creating the scheduled task with maximum permissions on every related damn thing I could find, and then demoting the user. Not scientific, I know. And this is a vague memory of a problem I dealt with something like three years ago, so take it for what it's worth. But I did solve the problem, because the task, to pop-up a message in the middle of the day, persisted in annoying this user for quite some time until we finally disabled it. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/45.E4.16480.CC061C85@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: Hard-Coded Scalar Value Substituted at Run Time
At 12:47 PM 3/2/2017, you wrote: Content-Transfer-Encoding: base64Hi Ken, You may want to use SET COVERAGE at the beginning and turn it off at the end of the method that errors, and add that log, of it exists to your error logging. You'll see what lines for called and which iteration it was on. Sometimes, forgetting to LOCAL a variable changes it in a function called later. Yup. See my responses to others. Thanks. Tracy On March 2, 2017 12:24:43 PM EST, "Fernando D. Bozzo" wrote: >Hi Ken, > >Seems a difficult one to trace, but just in case I give you some ideas >based on personal experience with strange errors: > H[ÈÛÛXÝYÛH\ror rutine, put it in a try/catch that >adds >info to a var in a step by step basis, so you later can log it to a >file. >Must be bomb proof. I've once found an error there when iterating tge >stack >array, with some fields that normally are null but somerimes are not. >In >any case, an error there must not hide the real error. > ÈÝtrust UI controls to call or not a method, add validation in >the >methods called from UI so even if you call them from VFP command line, >if a >condition is noot meet, the method is not executed. Normally can be >done an >enabled_funtionallity() like method that can be used by the UI to >enable/disable controls and the same method can be used on the business Y]ÙÈÜHØ[YHÛØ[âFP worst situation, you can generate log info in real time while >the \Ù\\ÈÛÜÚ[Ë[Ø]H][ÈHXHÚ]h info about controls used >(important events like click), screens loaded/unloaded, some meaning >variables and timer events may be, to have some context about executed >order. >Analyzing it later can give you some inside about how the user >interacts >with your app. > >Once, many years agi, a user notified a bug on which when loading the main ØÜY[[ÛÛXØÞ\ÈÚ\H[ F&VBöbæ÷Bfnding the bug days later I did go with the user to watch >him Ú[H[\[È[H\[Ý[]H@ser while the app >was ØY[ÈY][\[\[er, enter,., many times to bypass BÙÈØÜY[ut all that enter keystrokes where present in the keyboard Y\Ú]Ø]\ÙYHÛÛXØÞ\ÈÈÝÚÝÈZ\efault options. >Solution was a clear typeahead before showing the UI :D > > [ÌËÌMÈ NNKÙ[XH escribió: FòföÆÆ÷rWg&öÐ yesterday evening, now that I'm back at work: âFRcode in question is a FOR ... ENDFOR loop that iterates an array, >with >> the loop limiting value being the number of rows in the array, and >there is Ý[ÈÚ][hat loop that removes or adds rows or columns to the \ay. >Bw2§W7C £ãà£ãâdõ"ÒçÒDòÄTâ D4dõ$ÒæðMail.aSortList,1) >> thekey = THISFORM.oMail.aSortList(m.x,10) && "array dimensions >[[Y£ ** More inoffensive code here. SÔ\ÈIÝHÀaid, I can't reproduce this error myself but I've seen it >\ÜYH^H\Ü[\ÚXÙH[ÛÈ^\ËÛÈHdon't know if BFW&FöâfÆVBöâFRf'7B&÷rðr some later row of the array. >2ÖVçFöæVBV&Æer, my initial assumption that the array was >supposed > to have 5 columns was incorrect, because I was looking at the wrong >control. >wfRæ÷rfW&fVBFBâFs case, when the problem code executes, >this >\^HØ@n only contain 10 columns: >> >> 1. It is a predefined property of the oMail object (based on the Ý\ÝÛB6Æ70, and defined in a .prg file) and is DIMENSIONed as (1) at the >outset. >> >> 2. It is then populated by a SELECT [10 specified fields] FROM >[variable XKØÝ\ÛÜH. INTO ARRAY expression with no WHERE clause. >2âÀthough the name of the FROM table or cursor is variable, the >ÜXÚYYYY[È\HÝ[H^\ÜÚ[ÛÙ\Ènot use AS clauses >to Ú[ÙHH[Y\ÈÙH\Ý[fields or supply default values for >them. >\YÜKif a specified field did not exist in the FROM table, an >error >ÛÝ[HÙ[\]Y]]Ú[ÈÝXÚ\Ü occurs. >> >> 4. It is not possible for the FROM table to contain no records when BöffVæFær6öFRWV7WFW0, because in that case the code that generates Be OM table would display a message for the user stating that the >query >ÙXÙYÈ\Ý[È[[ÙH[]@d controls on the form would B\ØXY\ÈH\Ý[, the method containing the SELECT ... INTO TVB^ression would not be called, the list control's array rowsource >would ÛÛZ[ÈXÛÜË[H\ÝÛÛÛ's sort method, where the \ÜØØÝ\ËÛÝ[ÝHcalled. â6òÒ6öæfFVçBFBFR'&6âöæÇave 10 columns (no more >and no \ÜÊH]HÚ[Ú@re the error is generated. >> >> Thus the only "possible" sources of an "array dimensions invalid" >error, Yhe error did indeed occur on the line indicated by the trace, ÛÝ[N£¸Q¡M1 P¸¸¸%9Q<IIdáIÌsion somehow generated fewer ÛÛ[[ÂâFâvW&R7V6`ied in its field list. â"âFRW6W"v26öÖV÷r&ÆP to induce one of the disabled GUI ÛÛÛÈÛÛYZÀw call the sort method when there was no data to sort. > >ËSS H]\Y[[ÛÜXÝ\Ý[\ÈÈH[Xer of rows in B'&GW&ærFRFW&FöâÆö÷à£à >[ÙÜÙH[ÜÈÚÝ[H[\ÜÜÚXK£Q¡Ðhird possibility is that the trace provided by ASTACKINFO() is >wrong. [^H\XØ][ÛH\]Y[HÈÙYH@ry strange things with error XÙ\ËÝXÚ\ÈÙ]\[evels of
Re: Hard-Coded Scalar Value Substituted at Run Time
Of course, the way to handle this is to add code to test the size of the array before trying to iterate it, which I have now done. But I am still at a loss to understand how the error could occur. What I usually do in situations like this is to put in lines of code to write out to log files. You usually spot something unusual then and can refine it or fix it. Something like if file('alerts.txt') strtofile('My messages','mylogfile.log',.t.) endif You can then turn off the logging by removing the alerts.txt. Yup, I've done this before too. I was hoping suggestions from folks would narrow down the range of stuff I'd need to log. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/FC.D7.21189.71B68B85@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Hard-Coded Scalar Value Substituted at Run Time
> FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1) > thekey = THISFORM.oMail.aSortList(m.x,10) && "array dimensions > invalid" > Is this m.x declared local to the procedure, or is it possibly shared with other m.x's in different scopes? It's declared local in this procedure, and all of the other m.x loop counters in the affected objects are also local. Thanks, Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/11.96.21189.9CA68B85@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: Hard-Coded Scalar Value Substituted at Run Time
To follow up from yesterday evening, now that I'm back at work: The code in question is a FOR ... ENDFOR loop that iterates an array, with the loop limiting value being the number of rows in the array, and there is nothing within that loop that removes or adds rows or columns to the array. It's just: FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1) thekey = THISFORM.oMail.aSortList(m.x,10) && "array dimensions invalid" ** More inoffensive code here. ENDFOR As I've said, I can't reproduce this error myself but I've seen it reported by my error handler twice in two days. So I don't know if the iteration failed on the first row or some later row of the array. As I mentioned earlier, my initial assumption that the array was supposed to have 5 columns was incorrect, because I was looking at the wrong control. I've now verified that in this case, when the problem code executes, this array can only contain 10 columns: 1. It is a predefined property of the oMail object (based on the Custom class, and defined in a .prg file) and is DIMENSIONed as (1) at the outset. 2. It is then populated by a SELECT [10 specified fields] FROM [variable table/cursor] ... INTO ARRAY expression with no WHERE clause. 3. Although the name of the FROM table or cursor is variable, the specified fields are not, and the expression does not use AS clauses to change the names of the result fields or supply default values for them. Therefore, if a specified field did not exist in the FROM table, an error would be generated at that point. No such error occurs. 4. It is not possible for the FROM table to contain no records when the offending code executes, because in that case the code that generates the FROM table would display a message for the user stating that the query produced no results and all of the related controls on the form would be disabled. As a result, the method containing the SELECT ... INTO ARRAY expression would not be called, the list control's array rowsource would contain no records, and the list control's sort method, where the error occurs, would not be called. So I am confident that the array can only have 10 columns (no more and no less) at the point where the error is generated. Thus the only "possible" sources of an "array dimensions invalid" error, if the error did indeed occur on the line indicated by the trace, would be: 1. The SELECT ... INTO ARRAY expression somehow generated fewer columns than were specified in its field list. 2. The user was somehow able to induce one of the disabled GUI controls to somehow call the sort method when there was no data to sort. 3. ALEN() returned an incorrect result as to the number of rows in the array during the iteration loop. All of those things should be impossible. The third possibility is that the trace provided by ASTACKINFO() is wrong. In my application I frequently do see very strange things with error traces, such as several levels of code that should be in the stack not being reported. I have also seen, in the debugger, that errors don't necessarily "surface" immediately and the line of code that generates them may not be the line on which the debugger stops. There could also be something wrong with my assumptions regarding how to read a trace. In the case of the issue I've been talking about, the trace contains the following lines: Level: 5 Program File: c:\cil data 2\genmaillst.sct Module/Object: genmaillst.listdisplay.resortlistbox Source File: c:\cil data 2\genmaillst.sct Line Number: 86 Line Contents: thekey = THISFORM.oMail.aSortList(x,10) Level: 6 Program File: c:\stic foxpro framework\base classes\sticbase.vct Module/Object: genmaillst.listdisplay.error Source File: c:\stic foxpro framework\base classes\sticbase.vct Line Number: 23 Line Contents: DO FinalSTICError WITH 0, LINENO(1), theprogram, MESSAGE(1), "" I read this as: "When the line of code at Level 5 was executed, the ERROR() method of the object that contains that code was triggered, as shown in Level 6. Therefore, the error occurred in the stated line of code in Level 5." Of course, the way to handle this is to add code to test the size of the array before trying to iterate it, which I have now done. But I am still at a loss to understand how the error could occur. Thanks. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/EE.66.16480.C2F48B85@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Hard-Coded Scalar Value Substituted at Run Time
Do you have a timer in your app? Yes, there's a timer running at the global level to monitor user activity and shut down the application if it remains idle for a long period of time. The timer code does not interact with the object directly, though it will trigger a routine that closes the window that contains the object if a shutdown proces is started. But the error did not occur within such a shutdown process. There's no DOEVENTS in the loop I described, so I would expect that the FOR .. ENDFOR loop would complete a full iteration before being interrupted by anything ultimately triggered by the timer. I do know that VFP sometimes only appears to "become aware" of states that have changed during a loop when execution gets to the "bottom" of the loop. I don't think there's any code within the loop that could remove rows from the array--I'm aware that's a big no-no, but I will double check it tomorrow at work. Or a bindevent() that may have stopped execution between those lines of code? No, no bindevents(). Thanks. Ken On March 1, 2017 4:33:22 PM EST, Ken Dibble wrote: > >>Never seen something like this, but if you are distributing an exe, >then >>you should md5 it so you can detect any change comparing with a saved >md5. >> >>This way I've found viruses that changed parts of the code and >antiviruses >>have cleaned them up, but leaving the exes in a different state than >the >>original, sometimes even unrunnable. > >That's a really good idea. > >As it turns out, I'm embarrassed to say, the line of code reported in >the trace does exist, in a virtually identical list control subclass >on the same form (one overlays the other exactly). I wasn't paying >attention to the name of the control in which the error occurred. > >There are actually 10 columns in the array in this method. > >So what actually happened is that somehow, between: > >FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1) > >and > >thekey = THISFORM.oMail.aSortList(m.x,10) > >somehow the length of the array got truncated. > >Now, there is NO other code between those two lines, so >ALEN(THISFORM.oMail.aSortList,1) would have had to return an >impossible result for the next line to fail. > >I have seen this on a few occasions when iterating arrays, but I >remain mystified as to how it could happen. > >Ken > > -- Sent from my Android device with K-9 Mail. Please excuse my brevity. [excessive quoting removed by server] ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/6E.8A.16480.A7B87B85@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: Hard-Coded Scalar Value Substituted at Run Time
Never seen something like this, but if you are distributing an exe, then you should md5 it so you can detect any change comparing with a saved md5. This way I've found viruses that changed parts of the code and antiviruses have cleaned them up, but leaving the exes in a different state than the original, sometimes even unrunnable. That's a really good idea. As it turns out, I'm embarrassed to say, the line of code reported in the trace does exist, in a virtually identical list control subclass on the same form (one overlays the other exactly). I wasn't paying attention to the name of the control in which the error occurred. There are actually 10 columns in the array in this method. So what actually happened is that somehow, between: FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1) and thekey = THISFORM.oMail.aSortList(m.x,10) somehow the length of the array got truncated. Now, there is NO other code between those two lines, so ALEN(THISFORM.oMail.aSortList,1) would have had to return an impossible result for the next line to fail. I have seen this on a few occasions when iterating arrays, but I remain mystified as to how it could happen. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/F5.B6.16480.32E37B85@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Hard-Coded Scalar Value Substituted at Run Time
I swear, my code is haunted. I have some code in a subclass of my custom-built list control class. I provide enough code here to indicate the context, but I don't think I need to explain its purpose to illustrate what has just happened: FOR m.x = 1 TO ALEN(THISFORM.oMail.aSortList,1) ** 2/28/17: ** ** On this date, a user had an "Array dimensions are invalid" ** error at this point in the code. However, the trace gave the ** offending line of code as follows: ** ** thekey = THISFORM.oMail.aSortList(m.x,10) ** ** The parent code doesn't contain any lines like that, at all. ** The array has 5 hard-coded columns, not 10. It has always ** had 5 columns since I wrote this code many years ago. ** There is NO WAY that the hard-coded scalar value of 5 ** in this code could be changed to 10. That is really, really, ** REALLY weird. ** This is the actual code: * Find the corresponding row in the temporary storage array. thekey = THISFORM.oMail.aSortList(m.x,5) ** See? Not 10. It's 5. findrow = ASCAN(THISFORM.aTmpSort,thekey,-1,-1,5,15) IF findrow > 0 * We found it. Copy the temporary storage array row back to the * listcontrol's RowSource. FOR m.y = 1 TO ALEN(THISFORM.aTmpSort,2) THIS.aItemList(therow,m.y) = ; THISFORM.aTmpSort(findrow,m.y) ENDFOR * We use this to control which aItemList row to populate because * I'm not sure the two arrays will have an equal number of rows * in all cases. (They SHOULD because the RemoveAddress() method * truncates both the RowSource and last-name-sorted arrays, but * just in case...) therow = therow + 1 ELSE * The row absolutely should be there. RETURN .F. ENDIF ENDFOR Now, this particular user uses this feature and executes this code quite frequently. But today, somehow, at run time, a hard-coded scalar value of 5 was replaced with 10. This crashed the program, which emailed me as a result, so I have the trace. I can't reproduce it. So it does not appear that the last compile messed something up. Instead, something magically changed that number this ONE TIME while the code was executing. Is this really the proverbial cosmic ray flipping a bit? Has anyone ever seen anything like this? If not, why do these things only happen to me? Thanks for any thoughts. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/06.EE.03423.31E95B85@cdptpa-omsmta01 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
RE: [NF] Unbiased Cyber Security Resources
How about actively testing your systems with penetration testing? https://www.kali.org/ When being offensive is a good thing! Bruce Schneier on penetration testing: https://www.schneier.com/blog/archives/2007/05/is_penetration.html I'm inclined to agree with most of his points. Not every theoretical threat ever becomes an actual threat, and not every actual threat is an actual threat for a particular organization. The idea of security management is to apply cost/benefit analysis to find the best means to address actual vulnerabilities in a specific setting. Thanks. Ken www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/B5.64.16480.47E40B85@cdptpa-omsmta02 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Unbiased Cyber Security Resources
Bruce Schneier would like you to buy his books, but he puts out an *excellent* email newsletter at no charge with lots of good info, far more than I can read in a month. Thanks very much Ted. This one in particular looks like a real winner. Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/90.F6.21189.B9A0FA85@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
[NF] Unbiased Cyber Security Resources
Hi folks, I am looking for unbiased sources of information on various "cyber security" issues. That is, the source should not be trying to sell me any products or services. And the source should understand the meaning of the following terms: "individualized threat assessment" "proportionate response" I'm not looking for beginner-level stuff like "always keep your software updated" but rather objective analysis of specific types of threats and potential weaknesses. Who do you trust in these matters? Thanks to all who respond. Ken Dibble www.stic-cil.org ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/9B.46.21189.000CDA85@cdptpa-omsmta03 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.
Re: [NF] Drop-Dead Simple USB Drive Encryption
The Kingston Data Traveler series drives have hardware crypto, but they're unlocked using a small program stored on separate cleartext partition. They're not cheap however. so after I lost mine I switched to truecrypt/veracrypt. About $1 US per GB at Amazon for the Kingston DataTraveler Locker + G3--do-able for me, since I typically pay close to the same price for the rubberized non-encrypted Corsair drives. Given your sole purpose, however, have you totally ruled out automating the backup routine and baking-in file-level crypto? I have a comprehensive network data backup system that automatically copies data from my SAN to a 4 TB USB drive every night, and the drive is taken offsite each day. Not all of the data that needs to be backed up is stored on the network/SAN though. Also, I'm a fan of redundant backup. The reason I'm asking is primarily because one of our big customers--tens of thousands of dollars in annual billing--has recently introduced a requirement for us to carry "cyber insurance". I will avoid the entire rant about the fact that this is a scam, since, like many other IT trends that are also essentially scams, this one seems to be unavoidably growing in popularity. The insurance provider wants an assurance that all USB thumb drives are encrypted. (It also wants all laptop hard drives to be encrypted, and it wants my 4 TB offsite backup drives encrypted.) So I am evaluating my options, one of which is to avoid much of the problem by discontinuing use of thumb drives--at an increase in inconvenience. I am opposed to essentially turning all of our computers into dumb terminals and keeping all the data on the network. What's the point of having computers at all then? Plus, I don't like single points of failure. Without thumb drives I would have to force people to make even greater use of network shares than they do now. And there would be even more people sitting here twiddling their thumbs in the event of a network outage. The laptop thing is especially troubling to me. I can encrypt the data drive on a laptop and require users to enter a password to access it, but since the user can then set the drive to be automatically decrypted without entering the password, and they are likely to do so to avoid the annoyance of having to enter two passwords to access the computer, the whole thing is mostly pointless. As for encryption software that requires the user to be logged in as administrator--has it occurred to anyone that it is more dangerous for the typical computer user to be running an administrator account on a Windows machine than it is for them to have their data on an unencrypted USB stick? Too many programmers, IMO, overestimate the ability of their customers to use computers safely or to cope with complex interfaces. (Well, that's not the right way to put it; it's more like most programmers can't change their personal mindsets to encompass the limited abilities of the vast majority of the people who have to use the software that they create. Making things simpler and safer is too annoying for power-users and CLI-lovers to contemplate.) The removable backup drives are using a Linux file system, and my consultant tells me that there's probably an option to have just these backup drives encrypted without also encrypting the data on the SAN. Since there's limited access to these drives (just me and my assistant), that's an option I can live with. Thanks for everyone's help! Ken ___ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/07.AA.03423.917F9985@cdptpa-omsmta01 ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.