Wikipedia:Reference desk/Archives/Computing/2015 June 30

From Wikipedia, the free encyclopedia
Computing desk
< June 29 << May | June | Jul >> July 1 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


June 30[edit]

Typing on mobile keyboards with finger held down[edit]

I discovered, totally by accident, a feature on my Windows Phone I hadn't encountered before: you can type long words quicker by, instead of tap-tap-tapping on the virtual keyboard, holding down your finger and sliding it around the keyboard from one key to another, then releasing on the final letter. (A trail follows your finger by way of feedback.) The software then guesses what word you were aiming at. It's genuinely been a while since I've had such a "wow, that's actually pretty clever" moment with technology. It makes it much quicker to type long words and it's impressive how it can distinguish the letters you want from the letters you're just sliding over. Plus it makes you feel like a wizard.

What's the official term for this kind of typing? I tried Googling "hold down finger typing Windows Phone" but got nothing - just a couple of tips-and-tricks listicles which didn't mention it. --87.224.68.42 (talk) 08:44, 30 June 2015 (UTC)[reply]

There doesn't seem to be an 'official' name for it, but I've heard 'gesture typing' used. The first (?) and best-known gesture keyboard was Swype, so people sometimes use that name to refer to the concept as whole too. —Noiratsi (talk) 08:54, 30 June 2015 (UTC)[reply]
I've always heard it referred to as "swiping" as opposed to "gestures". The difference is very trivial. A gesture is solely about the shape you draw (or the motion of your hand if it is a camera-based gesture). It doesn't matter where you draw it or how big/small it is. For example, if I sweep from right to left and then wiggle up/down real fast, that tells my browser to go back (but, it is easier to hit the back button). With swiping, you have to get near the keys you are using. Otherwise, the shape you draw will over the wrong keys and produce the wrong word. Of course, you don't have to be perfect. Getting near the keys is usually enough to match the location-based gesture you want. In my opinion, I would place swiping as a subset of gestures. More specifically, I would place it as gestures constrained to a position on the screen. 209.149.113.185 (talk) 15:36, 30 June 2015 (UTC)[reply]

(See also DLL hell for the general subject). I have to put together an Inno Setup script, which includes one problem DLL. What I need to do is:

  1. If the DLL isn't installed on the system, install version 3.0.5 (the latest).
  2. If version 1.x or 3.0.0 to 3.0.4 is installed on the system, install version 3.0.5.
  3. (And this is the tricky bit) If version 2.x is installed on the system, don't replace it.
  4. If version 3.0.5 or later is installed, prompt the user for overwriting (this is done with the promptifolder flag).

Is this possible, or will I have to put together a set of manual instructions? Tevildo (talk) 18:15, 30 June 2015 (UTC)[reply]

Note: in item 4, you claim the promptifolder flag will prompt to install version 3.0.5 if the existing file is "version 3.0.5 or later", but after reading the help file*, my understanding is that promptifolder will only prompt if the existing file is higher than version 3.0.5, and do nothing if the existing file is already version 3.0.5. Do you really want to re-install the file if it's already version 3.0.5? If so, this might mean a more complex check. (* Inno Setup Help → Setup Script Sections → [Files] section, find promptifolder and read it, then also go to the bottom Remarks and read them.)
If it's acceptable to do nothing when the existing file is already version 3.0.5, then, as you say, the only tricky thing to check is if the version is 2.x then don't install anything. After reading through the help file, here is an idea to persue. Read the following sections:
  • Check Parameters (Inno Setup Help → Pascal Scripting → Check Parameters)
  • GetVersionNumbers (Inno Setup Help → Pascal Scripting → Support Functions Reference → GetVersionNumbers)
You can use a Check parameter to call a function that you create. In your function, you can check the version number of the existing file, and if it's 2.x, return false and the install file will be skipped. If the existing file is any other version, you can return true and the default version checking and promptifolder flag will take care of the other cases for you. To refer to system folders, you may need to use constants:
  • Constants (Inno Setup Help → Constants)
  • ExpandConstant (Inno Setup Help → Pascal Scripting → Support Functions Reference → ExpandConstant)
--Bavi H (talk) 02:05, 1 July 2015 (UTC)[reply]
Thanks very much! This is what I've put together, which seems to work. (GetVersionNumbers didn't return meaningful numbers for this DLL, so I've used GetVersionNumbersString instead).
My code
[Files]
; NOTE:  Thermometer DLLs are not installed if version 2.x already exists
Source: {#InstallSource}\Thermometer1\Thermometer1.dll; DestDir: "{app}"; Check: CheckVersion(ExpandConstant('{app}\Thermometer1.dll')); Flags: promptifolder replacesameversion regserver sharedfile
Source: {#InstallSource}\Thermometer2\Thermometer2.dll; DestDir: "{app}"; Check: CheckVersion(ExpandConstant('{app}\Thermometer2.dll')); Flags: promptifolder replacesameversion regserver sharedfile

[Code]
function CheckVersion(const sTestFile: String): Boolean;
var
  sFileVersion: String;
begin
  if FileExists(sTestFile) then begin
    GetVersionNumbersString(sTestFile, sFileVersion);
    if sFileVersion[0] = '2' then begin
      Result := False;
    end else begin
      Result := True;
    end;
  end else begin
    Result := True;
  end;
end;

I know it'll fail if we get to version 20 of the DLL, but that can be fixed by my successor. Tevildo (talk) 16:34, 1 July 2015 (UTC)[reply]

:'( Would and sFileVersion[1] = '.' prevent that? --Bavi H (talk) 00:49, 2 July 2015 (UTC)[reply]
It would. That's three weeks of work we've taken away from a contractor. ;) Tevildo (talk) 17:56, 2 July 2015 (UTC)[reply]

Web page gotchas[edit]

I suspect that some web pages intentionally do the following:

1) Place an innocent button where it renders immediately, say "Like this".

2) Place an evil button such that it will render in the same spot, a second later. For example, "Donate all the funds in my account to ...".

3) They then get people who try to click on #1 but accidentally hit #2.

Has anyone admitted to designing web pages like this intentionally ? StuRat (talk) 19:13, 30 June 2015 (UTC)[reply]

Wikipedia regularly has a banner that loads with a slight delay so when you try to click on the search button at the top of the page, it quickly places the DONATE button where the search box used to be. Is it intentional? 209.149.113.185 (talk) 19:30, 30 June 2015 (UTC)[reply]
No. Web browsers often don't know how large an element is going to be until they have downloaded it. It's very common to see pages rearrange themselves as the elements are filled in. This is a result of browsers being programmed to show you something as soon as possible, rather than leaving the page blank until all its contents have been downloaded. Looie496 (talk) 19:58, 30 June 2015 (UTC)[reply]
I think it would be more practical just to have the "Like" button execute the "Donate" routine, since the button's text can say anything at all. For your original question, I have read about web pages that do the opposite of what you suggested: they hide the "Like" button behind an innocuous web object, so that when you click to (say) go to the next page, you also register as "Liking" the site.OldTimeNESter (talk) 12:24, 1 July 2015 (UTC)[reply]
I think they would run into legal problems if they just outright lied about what a button would do. Hence the need for deniability. StuRat (talk) 02:54, 5 July 2015 (UTC)[reply]