As we write custom WebAPI applications, we need to take extra steps to secure sensitive information after deployment. Below is one of the steps you can take to encrypt the web.config file, which is a popular place where configurable sensitive information is stored.
Powerpoint slide
Cheers!
My Ellucian's Colleague playground with all tips and tricks I learned as a programmer.
Thursday, July 26, 2018
Saturday, January 13, 2018
Writing records to disk immediately using MIO
Last week, I ran into a scenario where I needed to create two subroutines that are called sequentially by another subroutine. The first sub creates a record and then the second sub queries the database for the record and performs extra processing. The workflow looks like this:
Overall Subroutine BeginsThere was a problem with this workflow that I was using just a FOR_THE command to create the record in sub 1. Since the record created in sub 1 stays in the running buffer, it never gets written back to disk until the overall sub ends. Because of that, sub 2 never finds the new record.
Subroutine 1: creates a record
Subroutine 2: does a select to obtain the record created in subroutine 1
Overall Subroutine Ends
To get around this, my colleagues at Ferrilli suggested manually changing the MIO level so that sub 1's record is written to disk immediately. The code to be added is:
CALL @MIO.TRANSACTION(MIO.TX.SUSPEND)
FOR_THE record_id
* set field values
END_THE record_id
CALL @MIO.TRANSACTION(MIO.TX.RESUME)
The two MIO calls modify the level of the buffer and that's where the magic happens. Using MIO.TX.SUSPEND, in effect, temporarily starts a new process level at level 0. All I/O that is performed after the call to MIO.TRANSACTION using MIO.TX.SUSPEND will be held in MIO's buffers until the call to MIO.TRANSACTION using MIO.TX.RESUME is reached. In our case, as MIO.TX.RESUME is reached, the buffer of the transaction is flushed and the record is written to disk. Afterward, the MIO level returns to the normal running state. So my pseudo code looks like this at the end:
Overall Subroutine BeginsThanks Neal, Lea, and Geoff for the documentation, and Thomas Mantooth for verifying the code. GO FIGTEAM!
Subroutine 1: creates a record
CALL @MIO.TRANSACTION(MIO.TX.SUSPEND)
FOR_THE record_id
* set field values
END_THE record_id
CALL @MIO.TRANSACTION(MIO.TX.RESUME)
Subroutine 2: does a select to obtain the record created in subroutine 1
Overall Subroutine Ends
Subscribe to:
Posts (Atom)