Noutați

Developer Stories: Simon Hooper Recounts The Story of His Wise Eyes Application

Simon Hooper started programming with Delphi 26 years ago. He has recently submitted his application (Wise Eyes) at the Delphi 26th Showcase Challenge and he talked with us about his programming experiences. You can visit his Wise Eyes website for more information. When did you start using RAD Studio Delphi and have long have you been using it? Since Delphi 1.  Over 26 years ago! What was it like building software before you had RAD Studio Delphi? Delphi heralded a new generation of development tools.  When Microsoft only had buggy betas of Foxpro, Borland had a ground-breaking polished product. I had been recruited to rewrite an application that had “hit the buffers” in terms of GUI development using tools of DOS era origin.  My decision to use the brand new Delphi was applauded time and again.  We were working with multi-dimensional databases, writing GUIs with lots of drag and drop coupled to fast data handling.  I hardly touched a TDataset during my first 3 years with Delphi.  That changed! How did RAD Studio Delphi help you create your showcase application? We had much Delphi experience to leverage.  It is the complete development tool in one package.  Cross platform, data handling, GUI builder.  It’s well developed OO structure is vital to a large project.  With a project that is pushing boundaries we are able to build and integrate our own functions, components and tools when Delphi does not (yet) have them. What made RAD Studio Delphi stand out from other options? From a single tool with a common code base are delivering web server for Linux and Windows, and desktop for Windows and macOS. No reliance on Java, .Net, PHP interpreter or similar causing installation, compatibility and versioning headaches.  Native compile is simple, fast and keeps our IP secure. What made you happiest about working with RAD Studio Delphi? We were able to build a really solid structure, within which the wide functionality of the product is slotting in nicely.  A structure to edit and store report definitions though RTTI is infinitely extendable.   Interfaces enable any data source to be fed into the report generation engine.  Similarly interfaces on the output of the engine enable the same report to be rendered to browser, Excel, CSV or whatever.  Extensive use of records passed by pointer reduces the amount of copying, and by extension memory used. What have you been able to achieve through using RAD Studio Delphi to create your showcase application? My biggest grin came was when we load-tested the server module.  The minimum target for a viable product was 20 reports per minute per processor core.  100rpm/core would be “time for a beer” as my son put it.  The result: a staggering 300rpm/core!  Wise Eyes is fast because Delphi is fast. What are some future plans for your showcase application? Wise Eyes is just beginning.  Our Excel Inject is popular, but people are using Google Sheets and other online spreadsheets.  With the aforementioned structure existing code will extend quite easily. Multi-lingual capability is close, for which Delphi’s Unicode support is vital. The headline feature for version 2 will be easy drag and drop report writing for managers, without first building a datamart. Thank you, Simon! Visit the link below to view his showcase entry. Delphi is fast and reliable – […]

Read More

Delphi Versatility: FelixGO Workflow Logistics Android App

FelixGO is the smartphone version of Felix Tools from German-base Felix Systems Logistics Factory and it is built using RAD Studio Delphi and the versatile Firemonkey FMX cross-platform framework. According to the Felix Systems, “this app allows the creation of freight orders, transportation needs, on the basis of harvest declarations FHPDAT logistics standards. The system can be used on Android smartphones or tablets. The app is integrated into a logistics center and Felix automated master data provided. Create messages are transmitted to the Felix logistics center and processed by it.” As Felix quite rightly says, less paper equals more efficiency and that is what they are aiming for with this very nicely organized and engineered app. FelixTools and the Felix Go app collates all the data for the entire workflow process from the initial contract letters right through the billing cycle. Websites FelixGO Google Play FelixGO Screenshot Gallery You could harness the power of RAD Studio Delphi’s versatile development tools to help control your user’s workflow. Try RAD Studio today and see what it can do to increase efficiencies.

Read More

Cartoonify Photos With This Easy But Powerful Neural Network

Based on this wiki : a convolutional neural network (CNN, or ConvNet) is a class of deep neural network, most commonly applied to analyze visual imagery. They are also known as shift invariant or space invariant artificial neural networks (SIANN). Convolutional Neural Network? That sounds complicated! Is it? Good news,  DeepAI.org has provided an API to access, so we can quickly build applications using it. Follow along as we show you how.. How do I set up an app with DeepAI API? We can emulate what curl does for access to DeepAI API, because it looks quite straight-forward. curl -F ‘image=@/path/to/your/file.jpg’ -H ‘api-key:1ade887c-a8e2-4b91-b888-947aa67cde17’ https://api.deepai.org/api/toonify curl     –H span class=“s1”>‘api-key:1ade887c-a8e2-4b91-b888-947aa67cde17’/span>     https://api.deepai.org/api/toonify here what that looks like in Delphi code: procedure Toonify; var LRestClient: TRESTClient; LRestRequest: TRESTRequest; LImageDownload: TDownloadURL; LResponse: TJSONObject; begin LRestClient := TRESTClient.Create(TOONIFY_API_URL); LRestRequest:= TRESTRequest.Create(nil); try LRestRequest.Method := rmPOST; LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]); LRestRequest.AddFile(‘image’, OriginalFilename); LRestRequest.Client := LRestClient; LRestRequest.Execute; LResponse := LRestRequest.Response.JSONValue as TJSONObject; // LReponse image url processing here .. finally LRestRequest.Free; LRestClient.Free; end; end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 procedure Toonify; var   LRestClient: TRESTClient;   LRestRequest: TRESTRequest;   LImageDownload: TDownloadURL;   LResponse: TJSONObject; begin   LRestClient := TRESTClient.Create(TOONIFY_API_URL);   LRestRequest:= TRESTRequest.Create(nil);   try     LRestRequest.Method := rmPOST;     LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);     LRestRequest.AddFile(‘image’, OriginalFilename);     LRestRequest.Client := LRestClient;     LRestRequest.Execute;     LResponse := LRestRequest.Response.JSONValue as TJSONObject;     // LReponse image url processing here ..   finally     LRestRequest.Free;     LRestClient.Free;   end; end; Using the API’s JSON output The above code is only accessing JSON result from Toonify API, which JSON result similar to the following: { “id”: “fcf837eb-640f-4f02-97e29ab02377”, “output_url”: “https://api.deepai.org/job-view-file/fcf837eb-ab02377/outputs/output.jpg”} {     “id”: “fcf837eb-640f-4f02-97e29ab02377”,     “output_url”: “https://api.deepai.org/job-view-file/fcf837eb-ab02377/outputs/output.jpg”} Converting the API output into something useful So, to download the image and then attach it to the component Timage as a result of the process, here is the code: var .. LMemStream: TMemoryStream; LBitmapItem: TFixedBitmapItem; .. begin .. LImageDownload := TDownloadURL.Create; LMemStream := TMemoryStream.Create(); try LImageDownload.DownloadRawBytes(LResponse.GetValue(‘output_url’).Value, LMemStream); LBitmapItem := Image2.MultiResBitmap.Add; LBitmapItem.Bitmap.LoadFromStream(LMemStream); except on E: Exception do ShowMessage(‘Error: ‘+E.Message); end; LImageDownload.Free; LMemStream.Free; .. end 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var   ..   LMemStream: TMemoryStream;   LBitmapItem: TFixedBitmapItem;   .. begin   ..   LImageDownload := TDownloadURL.Create;   LMemStream := TMemoryStream.Create();   try    LImageDownload.DownloadRawBytes(LResponse.GetValue(‘output_url’).Value, LMemStream);    LBitmapItem := Image2.MultiResBitmap.Add;    LBitmapItem.Bitmap.LoadFromStream(LMemStream);   except on E: Exception do    ShowMessage(‘Error: ‘+E.Message);   end;   LImageDownload.Free;   LMemStream.Free;   .. end Full Delphi source code to cartoonify and image using the DeepAI API The full Tonify method is this: procedure TForm2.Toonify; var LRestClient: TRESTClient; LRestRequest: TRESTRequest; LImageDownload: TDownloadURL; LResponse: TJSONObject; LMemStream: TMemoryStream; LBitmapItem: TFixedBitmapItem; begin LRestClient := TRESTClient.Create(TOONIFY_API_URL); LRestRequest:= TRESTRequest.Create(nil); try LRestRequest.Method := rmPOST; LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]); LRestRequest.AddFile(‘image’, OriginalFilename); LRestRequest.Client := LRestClient; LRestRequest.Execute; LResponse := LRestRequest.Response.JSONValue as TJSONObject; LImageDownload := TDownloadURL.Create; LMemStream := TMemoryStream.Create(); try LImageDownload.DownloadRawBytes(LResponse.GetValue(‘output_url’).Value, LMemStream); LBitmapItem := Image2.MultiResBitmap.Add; LBitmapItem.Bitmap.LoadFromStream(LMemStream); except on E: Exception do end; LImageDownload.Free; LMemStream.Free; finally LRestRequest.Free; LRestClient.Free; end; end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 procedure TForm2.Toonify; var   LRestClient: TRESTClient;   LRestRequest: TRESTRequest;   LImageDownload: TDownloadURL;   LResponse: TJSONObject;   LMemStream: TMemoryStream;   LBitmapItem: TFixedBitmapItem; begin   LRestClient := TRESTClient.Create(TOONIFY_API_URL);   LRestRequest:= TRESTRequest.Create(nil);   try     LRestRequest.Method := rmPOST;     LRestRequest.AddParameter(‘api-key’, edtApiKey.Text, TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);     LRestRequest.AddFile(‘image’, OriginalFilename);     LRestRequest.Client := LRestClient;     LRestRequest.Execute;     LResponse := LRestRequest.Response.JSONValue as TJSONObject;     LImageDownload := TDownloadURL.Create; […]

Read More

Developer Stories: Brian Thomson Shares Insights On His Pro Workout Application

Brian Thomson has been using Delphi since its 1.0. Brian submitted a showcase entry (Helpful Workout Application Is Delphi Powered) to the Delphi 26th Showcase Challenge and we interviewed him to learn more about his experiences with Delphi. You can find out more about his application and download it here on Pro Workout. When did you start using RAD Studio/Delphi and have long have you been using it?  I have been using Delphi since 1.0, and the predecessor (Object Pascal) for 5 years before then.  My entire career has been based around Delphi.  Delphi is still my favorite way to write programs. What was it like building software before you had RAD Studio/Delphi? The tools I was using before Delphi were completely non-visual.  We went through iteration after iteration just trying to get the screens to look right! How did RAD Studio Delphi help you create your showcase application? First, there are several aspects of multi-platform development that have been handled for me like a cross-platform-capable clipboard and file system utilities.  While writing my app there were a few items that I had to write for myself in a cross platform manner.  This made me appreciate what had been done for me all the more! What made RAD Studio Delphi stand out from other options? 1. It was already a tool that I was very familiar with. 2. The visual layout tools are FAR easier to use than the XML based setups other tools use. 3. The capability to write the app as a truly cross platform project meant that I could do rapid testing cycles on Windows before putting it out on mobile. What made you happiest about working with RAD Studio Delphi? For me there is no language that is easier to read than Delphi. The IDE is wonderful. The debugging tools on Windows are amazing. They still need to be brought up to that level on Android, but I expect they could get there. What have you been able to achieve through using RAD Studio Delphi to create your showcase application? One of the first issues I noticed was that a truly cross platform application needs to be ready for any resolution on any device.  As a single developer I decided that rather than creating many copies of each of my graphics in different sizes, that I would need to use vector graphics to enable me to define a graphic once, and resize it as needed.  Delphi gave me the ability to write a component that would do basic EPS graphics.  This increased my ability to incorporate graphics while lowering the weight of including the graphics. What are some future plans for your showcase application? My app is designed to help people do a better job when they workout.  As such I plan to set up a web-based infrastructure that will allow me to host workout programs, designed by professionals, which will then be able to be purchased by end users. Thanks Brian! You can take a look at his software’s showcase entry below. Showcase  

Read More

Real World Drama In This Exciting GPS Motorcycle Game

The great thing about RAD Studio Delphi is that the Firemonkey framework does a lot of the hard work for you in your mobile apps. Things like integrating with the mobile device’s hardware and sensors are made much less complicated by the power of the components and runtime library. Combine that with your own imagination and you can come up with something wonderful like WarmerKouder by Dutch developer Daan van der Werf. WarmerKouder is powered by Delphi WarmerKouder is based on a very popular traditional Dutch game of the same name. WarmerKouder, or warmer, colder in English, cleverly mixes game play with the real world by integrating with the mobile device’s GPS sensor via the Firemonkey framework. Players can select a challenge and then follow the sound hints to narrow down the final destination. Players are “warmer” if they are getting close to the target and “colder” if they are moving away from it. Variations of this kind of gameplay are probably familiar in most parts of the world and the simplicity means it has a broad appeal. Delphi’s GPS sensor integration adds a new dimension Developer Daan van der Werf says, “Turn your GPS data to start Warmer Colder and select a challenge. You get hints by the sound app, Warmer if you get closer to the final destination and Colder if you are further from moving. We advise you to use a headset to follow the hints. When you first found the end the application will ask you to make a selfie, so your participation is taken seriously. All data locations are recorded and forwarded to the score www.warmerkouder.nl. If you really are the first and your details are known to us, we will provide you with your prize. Every participant who comes to the final destination of a challenge always wins something! The prizes to be won can vary from t-shirts, caps to the latest complete tire sets or helmet for your motorcycle.” It’s never too late to innovate We think it’s a great way of taking a well-known traditional pastime and bringing it right up to date with the latest modern mobile hardware and the always-on world we live in today. Google Play WarmerKouder Screenshot Gallery

Read More

Modernize Your App: Are You Handling Windows Themes Correctly?

Modern versions of Microsoft Windows are arguably a lot more pleasing to look at.  Gone are the days of apps being gray slabs and chunky buttons.  When Microsoft adopted the Fluent UI interface along with it came a richer color palette, a cleaner, leaner look and fonts without the curls and twists of the Serif families. Sidling in with that beauty treatment were a number of other usability and user convenience facets of being a modern app for us to consider: high DPI, notifications and themes designed to cater for a “light” and “dark” mode. High DPI in your apps RAD Studio Delphi already handles the high DPI changes.  If you right click on your project in the IDE and select “properties” and then click on the “manifest” section you should see it say “per monitor v2”. Having this section ticked lets Windows know that your app (actually the VCL in your app) understands the high DPI – screen resolution pixels – and contains assets and API handling to work with it.  There is actually a substantial amount of work going on behind the scenes in the VCL runtime when the per monitor v2 setting is enabled, which it is by default, but for ordinary mortals like you and I we don’t get to worry about any of that; it just works. If you compare a program compiled with an older version of a compiler which doesn’t understand per monitor v2 you should notice that things on higher resolution monitors can look a little fuzzy.  That’s because that manifest file setting is not there and the internal API calls are older ‘backwardly compatible’ ones which work using the lowest common denominator, resulting in the app not making the best use of modern display technology. It’s a bit like watching a 1970s movie on a 4K OLED TV – bearable, but it looks…dated. What isn’t covered by the latest VCL? The other major visible change ushered in by Windows 10 was the introduction of a “dark mode”. For years we’ve all really been running Windows with almost the only choice available – white backgrounds, gray buttons and some colors dotted around to relieve the glare. Then, Microsoft brought out a “dark mode”. This dark mode turns all the Windows assets, dark (it’s well named!) and this is a setting that your apps are expected to both understand and react to. Currently this is an area where the VCL has not quite covered. Detecting dark mode When your app launches it should try and detect whether Windows is currently expecting you to be “in dark mode” or “light mode”. This is currently handled by a set of API calls for which we do not currently have support in the VCL. Luckily, there’s a registry key we can check. When our app detects that it should be “dark” then we should tell our Delphi app to load an appropriate ‘dark’ theme.  Conversely, if Windows indicates we are expecting ‘light mode’ then a similarly appropriate light-colored VCL theme should be loaded. How to detect dark mode in your VCL apps the easy way It wouldn’t be Delphi if there wasn’t an easy way to do all the hard work. So I wrote a little unit you can include in your VCL Delphi programs to […]

Read More

Developer Stories: Artur Majtczak Discusses His Superb ALLPlayer App

Artur Majtczak is a Delphi user since 1997. He has developed an application (ALLPlayer), which was a showcase entry for the Delphi 26th Showcase Challenge and we got to ask him about his Delphi journey throughout the years. Head over to the ALLPlayer website for more information about the application. When did you start using RAD Studio Delphi and have long have you been using it? I’ve been using Delphi since I can remember, most likely it was Delphi 3. Ah, I just checked, it was probably as early as 1997, so it’s been a long time! What was it like building software before you had RAD Studio Delphi? In my case it was really long time ago, in times when software was created in simple text editor. Thanks to Delphi I was able to create software ideas very quickly, design and build the user interface with just the computer mouse, and all this intuitively and with incredible ease. How did RAD Studio Delphi help you create your showcase application? ALLPlayer in its first version was created in 1998. it was not the prettiest, I admit, but it had features not seen in other players at that time, which was noticed and the number of ALLPlayer users quickly began to grow into millions of users. Subsequent versions added new features and the graphics adapted to changing needs over the years. What made RAD Studio Delphi stand out from other options? If we have a cool idea for a new application, regardless of whether it is a database application, corporate app or for the casual user, it would be hard to find a tool in which we can more quickly program a working version with a nice user interface. What made you happiest about working with RAD Studio Delphi? What made me happiest about working with RAD Studio/Delphi? Work goes fairly quickly and easily, the RAD Studio software is convenient. I think it’s also a matter of getting comfortable with it. What have you been able to achieve through using RAD Studio Delphi to create your showcase application? Readability and simplicity of code. Decent and easy to use user interface. What are some future plans for your showcase application? Continued development and enhancement of applications. Simplicity and adaptation to the latest requirements. Thank you, Artur! Check out his Artur’s showcase application entry, ALLPlayer, by clicking the link below. Showcase

Read More

#WEBWONDERS : The browser console is your friend

When writing web client applications with TMS WEB Core, chances are you will be spending quite some time in the browser developer tools. This is the place where you can debug your web client applications and can inspect every detail of your web application: the DOM, source, network, performance, local storage, … in a nutshell a wealth of useful information.  One of the capabilities of the browser developer tools is the console and from your application you can add logging statements to output these in the browser console. The closest comparison with the Windows desktop application development world is the OutputDebugString() command that sends text to a debugger. The direct equivalent is using console.log(“Hello world”) that will do exactly the same but to the browser console. But all similarities end here. The console object that is fully available as Pascal class in a TMS WEB Core web client application has many more options. This object is described here: https://www.w3schools.com/jsref/obj_console.asp Timing functions to measure performance A first convenience of the console object is the ability to time certain parts of your code. You can do this by calling console.time(‘identifier’) to start a browser timer and when the part of the code was executed, call console.timeEnd(‘identifier’) and the browser will output the time difference in the browser console. This example demonstrates the timing of a bubble sort algorithm (for the sake of having some code that takes some time to execute) function BubbleSort( list: TStringList ): TStringList; var i, j: Integer; temp: string; begin // bubble sort for i := 0 to list.Count – 1 do begin for j := 0 to ( list.Count – 1 ) – i do begin if ( j + 1 = list.Count ) then continue; if ( list.Strings[j] > list.Strings[j+1] ) then begin temp := list.Strings[j]; list.Strings[j] := list.Strings[j+1]; list.Strings[j+1] := temp; end; end; end; Result := list; end; function GenerateRandomWord(CONST Len: Integer=16; StartWithVowel: Boolean= FALSE): string; const sVowels: string = ‘AEIOUY’; sConson: string = ‘BCDFGHJKLMNPQRSTVWXZ’; var i: Integer; B: Boolean; begin B := StartWithVowel; SetLength(Result, Len); for i := 1 to len DO begin if B then Result[i] := sVowels[Random(Length(sVowels)) + 1] else Result[i] := sConson[Random(Length(sConson)) + 1]; B:= not B; end; end; procedure TForm1.MeasureTime; var sl: TStringList; i: integer; d: dword; mr: TMyRec; begin console.time(‘bubble’); sl := TStringList.Create; for i := 0 to 2000 do begin sl.Add(generaterandomword(8,false)); end; BubbleSort(sl); console.timeEnd(‘bubble’); sl.Free; end; The result in the browser console looks like: Inspecting values of variables, records, objects The console.log() call can have a variable number of arguments of different types. You can call for example: console.log(‘Date today’,DateToStr(Now)); and this will output today’s date in the console. But also objects or records will be shown with all their details in the console, as this example for a record demonstrates: type TMyRec = record Name: string; Age: integer; Member: boolean; end; var mr: TMyRec; begin mr.Name := ‘Delphi’; mr.Age := 25; mr.Member := true; console.log(mr); end; Or take this example, where the details of a HTML element are displayed in the console, in this example the HTML element used for a TWebEdit:  console.log(WebEdit1.ElementHandle); All these statements combined outputted in the browser console: Formatting output If you thought the browser could only output dull fixed text, you are wrong! On top of that, the console.log() command allows you […]

Read More

Ground-Breaking App For Transgender & Gender-Variant People

‘Twilight People’ is a landmark project that helps users discover and celebrate the hidden history of transgender and gender-variant people of faith in the UK past and present – and it’s written with RAD Studio Delphi and the Firemonkey framework. In the words of the developer: “this collection is the first source of faith and transgender history in Britain. The project explores the narratives around ‘body and ritual’, documenting the interconnection between faith and gender journeys beyond the binary categories of male and female“. Developed by Cheryl Morgan the app contains the stories of some of the many trans people of faith who were interviewed for the project. Website Twilight People Google Play TwilightPeople Screenshot Gallery RAD Studio Delphi enables developers and organizations to further their goals, empower their users and make connections in both business and a social context. Do you have an idea which could be a game-changer for your users? Why not use RAD Studio and the power of Delphi to reach them whatever device they are using on desktop, mobile and the web?

Read More

Understanding RASP, and Putting It to Work

Published May 13, 2021 WRITTEN BY ED TITTEL. Ed Tittel is a long-time IT industry writer and consultant who specializes in matters of networking, security, and Web technologies. For a copy of his resume, a list of publications, his personal blog, and more, please visit www.edtittel.com or follow @EdTittel RASP is an initialism for runtime application self-protection. It’s a technology designed to boost application software security by monitoring inputs to running applications. RASP screens all such inputs, and blocks those that could be associated with potential attacks. RASP also protects various aspects of an applications runtime environment, and prevents changes to environment variables, access controls and privileges, and so forth. Gartner’s IT Glossary defines RASP as follows: “a security technology that is built or linked into an application runtime environment, and is capable of controlling application execution and detecting and preventing real-time attacks.” Numerous security companies offer RASP add-ins for widely used runtime environments, such as the Java Virtual Machine Specification and the .NET Common Language Runtimeli. In fact, developers generally choose to buy RASP tools from such third parties instead of building their own implementations. Putting RASP to Work When integrated into an application’s run-time, RASP incorporates security checks into supporting server environments. That is, RASP intercepts inputs sent to the application for screening, and either allows acceptable inputs or denies questionable or malicious inputs to actually reach the application. RASP also includes built-in logging and monitoring facilities so it can keep track of what it’s doing, and make sure its actions are appropriate and secure. RASP implementations seek to maximize valid interceptions (by preventing malicious or insecure inputs from obtaining application access). At the same time, RASP monitoring — and related updates from its makers — also seeks to avoid invalid interceptions (preventing legal and benign inputs from accessing the application). Ultimately, it makes sense to understand RASP as a validation tool for inputs and data requests made to applications inside their runtime environments. RASP Is An All-Purpose Technology Because it’s a plug-in that works with a range of runtime environments, RASP can handle both web-based and traditional (standalone executable-based) applications. Once present, RASP brings protection and detection capabilities to servers where targeted applications run. In addition, because RASP sees the overall application state and context, it does not work at the packet level as do application firewalls. RASP generally has a nuanced and informed view of application and input states across current ongoing interactions. A stateful view of application inputs gives RASP more scope and flexibility for protection. It can exhibit a variety of behaviors as it detects unwanted actions or malicious inputs that match security rules or policies in its knowledge base. An example of such behaviors, ordered by increasing order of severity, can include: Denial of offending input, with a warning message to the sending user Issue alerts for named recipients when offending inputs occur (usually administrators or security team members) Terminate user session upon offending input Terminate application upon offending input (does not otherwise impact the host server, and other services or applications) RASP implementations generally plug into existing server frameworks and runtime modules. Thus, they integrate with a  program’s code, associated libraries and API calls. Such integration is what gives RASP the ability to handle inputs in real-time as an application is executing. […]

Read More