Most secure linux equivalent to Shadow Defender for live CD-like nonpersistency with no traces left (or traces that are encrypted)

Virtualisation can do reasonably secure nonpersistent drives. Would rather not rely on this alone but also have a host that is nonpersistent too. A live DVD as a host leaves no traces and is physically impossible to permanently infect/own but not very practical to carry around. A live USB flash drive is more practical. Another option is grub2 configured to boot from an ISO image in an internal hard drive.

In Windows there is Shadow Defender that intercepts all writes to disk and makes them nonpersistent by storing deltas instead. The deltas are stored in an encrypted format so in the event of a power-down they cannot be recovered easily. This software is hard to bypass because it uses a driver stub that loads very early in the boot sequence. What can one do in linux that is as securely nonpersistent as Shadow Defender or better?

Is grub2 boot from an ISO image as effective?

Are bootable USB flash drives made with Rufus given any bootable ISO image as effective?

What about fsprotect, is it any better than grub2 boot from an ISO image?

Anything else?

Distros proposed for the host: anything hardened like Pure OS, Astra Linux, Kodachi. Preferably Secure Boot signed.

Which is the most hardened option?

How do I join getting one row from the left table, no matter how many matches i get from the right table?

I have two tables – one is a data table and the other is a mapping table. I want to join them together, but only preserve the data from the right table. However, it is possible that the match table may contains multiple records that match to a single record in the right table. I cannot use a DISTINCT because there may be identical rows in the right table, and I want to preserve the same number of rows from the right-table in the result set.

Here is a sample of the data I am working with:

       DataTable                           MappingTable +-----+-----+-----+-----+           +------+------+------+------+ | ID1 | ID2 | ID3 | ID1 |           | ID1  | ID2  | ID3  | ID1  | +-----+-----+-----+-----+           +------+------+------+------+ |  1  |  1  |  1  |  1  |           |  1   | NULL | NULL | NULL | |  1  |  1  |  1  |  1  |           | NULL | NULL | NULL |  1   | |  2  |  1  |  1  |  1  |           |  3   |  3   | NULL | NULL | |  3  |  1  |  1  |  3  |           +------+------+------+------+ |  4  |  1  |  1  |  4  | |  2  |  2  |  1  |  1  | |  3  |  2  |  1  |  3  | |  3  |  3  |  1  |  3  | |  2  |  1  |  0  |  1  | |  2  |  1  |  0  |  1  | |  4  |  3  |  2  |  3  | +-----+-----+-----+-----+ 

Below is the join I am using. I wrote a custom function to handle the NULL-matching behavior, which I am including here as well.

SELECT * FROM DataTable P JOIN MappingTable M ON dbo.fNullMatchCheckIntS(P.ID1,M.ID1,0,1) = 1     AND dbo.fNullMatchCheckIntS(P.ID2,M.ID2,0,1) = 1     AND dbo.fNullMatchCheckIntS(P.ID3,M.ID3,0,1) = 1     AND dbo.fNullMatchCheckIntS(P.ID4,M.ID4,0,1) = 1 

CREATE FUNCTION dbo.fNullMatchCheckIntS (     @Value1 INT     ,@Value2 INT     ,@AutoMatchIfValue1IsNull BIT     ,@AutoMatchIfValue2IsNull BIT )     RETURNS BIT AS  BEGIN      DECLARE @Result BIT = 0      SELECT         @AutoMatchIfValue1IsNull = ISNULL(@AutoMatchIfValue1IsNull,0)         ,@AutoMatchIfValue2IsNull = ISNULL(@AutoMatchIfValue2IsNull,0)      IF         (@AutoMatchIfValue1IsNull = 1 AND @Value1 IS NULL)         OR (@AutoMatchIfValue2IsNull = 1 AND @Value2 IS NULL)         OR @Value1 = @Value2         OR (@Value1 IS NULL AND @Value2 IS NULL)     BEGIN         SET @Result = 1     END      RETURN @Result END 

The problem with the way the join works is that the first two rows in the DataTable match on the first two rows in the MappingTable, giving me four identical records in the result, but I only want 2. I know that I could add an identity column to the DataTable and then use DISTINCT or PARTITION to get the result I am looking for, but I would like to avoid that route if possible.

EDIT: I figured out a way to do this using EXISTS, but it looks a little ugly in my opinion. Still interested in other answers if anyone has an idea. Thanks!

SELECT * FROM DataTable D WHERE EXISTS (     SELECT D.ID1, D.ID2, D.ID3, D.ID4     FROM MappingTable M      WHERE dbo.fNullMatchCheckIntS(D.ID1,M.ID1,0,1) = 1         AND dbo.fNullMatchCheckIntS(D.ID2,M.ID2,0,1) = 1         AND dbo.fNullMatchCheckIntS(D.ID3,M.ID3,0,1) = 1         AND dbo.fNullMatchCheckIntS(D.ID4,M.ID4,0,1) = 1 ) 

What is the relative return point of the Banishment spell? (The ‘space it left’)

I’m well aware I can just choose. I’m just looking for discussion.

When a creature returns from the Banishment spell, it returns at the ‘space it left’.

How do you play the reference point to this space?

IE if it is banished from a galloping horse, after a minute the horse will have travelled a long way. Is the return point on the horse? Or where the horse was when the Banishment occurred?

Same thing with being banished from a moving ship. Does the creature return on the ship or on the water where the ship was?

How do I detect input from the left or right arrow-keys in c#?

My code is as following

using UnityEngine; using System.Collections;  public class PlayerMovement : MonoBehaviour {     // This is a reference to the Rigidbody compenent called "rb"     public Rigidbody rb;      // This creates variables for the movement     public float forwardForce = 2750f;     public float sidewaysForce = 150f;      // We marked this as "fixed"update because we are using it to mess with Physics     // In this case Unity likes FixedUpdate a lot better than Update     void FixedUpdate()     {         // Add a forward force         rb.AddForce(0, 0, forwardForce * Time.deltaTime);          if (Input.GetKey("a"))         {             // Move player to the left             rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);         }          else         {             if (Input.GetKey("left")                 {                     // Move player to the left                     rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);                 }          }          if (Input.GetKey("d"))         {             // Move player to the right             rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);         }          else         {             if (Input.GetKey("right"))                 {                     // Move player to the right                     rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);                 }          }          if (rb.position.y < -1f)         {             FindObjectOfType<GameManager>().EndGame();         }     } } 

My line of code: if (Input.GetKey("left")) obviously didn’t register the input of the arrowkey. How can I detect arrow keys like this?

Left Sidebar Menu design with hierarchy

Current scenario: I’ve a webapp, in which there is a left sidebar. There are some menuItems and subMenuItems in sidebar. This hierarchy can go to N level. enter image description here New Requirement: Now There can be multiple programs in this application. User can switch program at any time. Each program has some menuAreas. User can also switch between menuAreas. Each menuArea has its own list of menuItems (and subMenuItems in hierarchy). At a time, User can only see menuItems for selected program and menuArea. These menuItems should appear at same place where current menuItems appear. Can anyone suggest UX for this scenario?

Placement of Help button: left or right to OK/Cancel

I’m adding help to a Windows desktop application that is being in use since the Windows XP era. All the modal dialogs display the typical OK/Cancel button set placed at the bottom right as shown in this example/placeholder screenshot (in fact no MessageBox has a Help button):

enter image description here

I wish to cause minimal confusion to my users after the next release that’s why I hesitate to place the Help button right to the Cancel button. The standardized order shown by the Win32 MessageBox function when called with MB_OKCANCEL | MB_HELP in the uType parameter would shift the already existing buttons to right (replacing OK by Cancel and Cancel by Help) like this:

enter image description here

I searched the web for this, but it turned out to be very hard to get useful answers when combining help, button, and placement, nevertheless I found some screenshots with help buttons bottom left which looks good and useful from my POV.

Where should I place the Help button to the dialogs of an old-fashioned application?