Noutați

TMS FNC Maps 1.3 released!

What’s new? The first TMS FNC Maps update of 2021 includes 2 often requested features: programmatically toggle StreetView mode in TTMSFNCGoogleMaps and the ability to avoid toll roads with TTMSFNCDirections. Toggle StreetView mode in TTMSFNCGoogleMaps With just one line of code it is now possible to switch to StreetView mode on the map’s current center position. This feature is available exclusively for the TTMSFNCGoolgeMaps component.   TMSFNCGoogleMaps1.Options.StreetView.Enabled := not TMSFNCGoogleMaps1.Options.StreetView.Enabled; Avoid toll roads with TTMSFNCDirections Adjust your routing with just a single parameter to avoid toll roads. This feature is available for the following directions services: Google, Here, Bing, Azure and MapBox. Avoid toll roads:     TMSFNCDirections1.GetDirections(StartCoordinate, EndCoordinate, nil, ”, nil, False, tmDriving, nil, False, ”, mlmDefault, True); Include toll roads (default):     TMSFNCDirections1.GetDirections(StartCoordinate, EndCoordinate, nil, ”, nil, False, tmDriving, nil, False, ”, mlmDefault, False); What’s next? Although we are already working on a future update, it’s a little early to reveal what we have planned for now.I hope you enjoy the new features and I’m looking forward to share more exciting new additions to TMS FNC Maps throughout the new year! 

Read More

SVG quality improvements

Intro A while back, we introduced SVG in TMS VCL UI Pack. The first version focused on smaller icon sets. We have meanwhile tweaked and improved the engine and although there is still a lot of work to be done, the next update of TMS VCL UI Pack will offer 2 quality of life improvements: Gradients (GDI+) Rendering quality (GDI+) Disabled drawing (TVirtualImageList) Gradients Gradients were left out of the first version because of shortcomings on other platforms, as we also have SVG rendering engine support for FNC targeting not only VCL, but also FMX, LCL and WEB. The underlying native graphics can be quite complex and have various differences between frameworks. Therefore we decided to take the initial step of offering linear & radial gradients support in VCL only using GDI+. Please note that we are still targeting smaller less complex icons, but we’ll add improvements over time. Rendering quality The initial version did not use the full quality that GDI+ had to offer. When working with SVG, we focused on adding features instead of quality and therefore the rendering quality was not optimal. We have now changed this so it has a smoother appearance independant of the size. v1.0                       v1.1        Disabled drawing In v1.0 we also added support for TVirtualImageList, which converts SVG files into bitmaps on the correct size without losing quality. You can add a TAdvSVGImageCollection attached to a TVirtualImageList and specify only one SVG suitable for any size you want. The TVirtualImageList also has the ability of automatically adding disabled state versions of the converted bitmaps. Initially, this was not working due to the way the bitmap alpha channel was configured and the SVG quality drawing on the bitmap before returning it to the TVirtualImageList. In this update, we have added correct alpha channel to the bitmap conversion routine. What’s next? The above applies to VCL only and will be part of the next update of TMS VCL UI Pack. The engine is a port from FNC, support for other operating systems (macOS, iOS, Android) is still ongoing. As soon as things get shape, we’ll post an update.

Read More

Webinar: A Cross-Platform Development Deep Dive with the TMS FNC Suite of Components

We look forward to connect with you at the upcoming webinar “A Cross-Platform Development Deep Dive with the TMS FNC Suite of Components” organized by Embarcadero.   Webinar content: Starting a new project? Are you going to use FireMonkey or VCL? What about targeting the Web with TMS WEB Core? Luckily the Framework Neutral Components (FNC) from TMS Software works with all those frameworks and more.  Join this live deep-dive session with Dr. Holger Flick, Bruno Fierens and Pieter Scheldeman of TMS Software where the content will focus on your questions with live demos, real-time debugging, and a level of interaction like never before. You won’t want to wait for the replay, mark your calendar today! The TMS FNC Suite gives developers a single UI controls set, a single learning-curve and a single license to have the freedom of choice to develop Delphi or C++Builder, using VCL for Windows, FireMonkey cross-platform applications for Windows, macOS, Android, iOS, Web applications with TMS WEB Core, or even Lazarus LCL applications for Windows, macOS, or Linux. There is so much to tell about TMS FNC components so we kindly invite you to visit our landing page, where more information is provided, including online demos, video tutorials and more. Extras videos can be found on the following page: FNC videos Register today!

Read More

Gambling with Security: Mitigating Threats to Online and Mobile Gaming

Published February 3, 2020 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 In this time of the COVID-19 pandemic, we’re all spending more time on our PCs and smartphones. It might seem odd, but The Business Research Company’s Global Online Gambling Market report asserts that online gambling has skyrocketed in 2020. This is because home-bound punters, blocked from visiting brick-and-mortar gambling dens, are turning to online gambling destinations in droves. This makes protecting games of chance — and their players — against online gambling security threats more important than ever, especially where mobile gambling security is concerned. Online gambling is in hackers’ crosshairs In June 2020, Security Boulevard published a discussion of cybersecurity for the online casino and gambling industry. It exposes a number of clear and present dangers that face online gambling developers and involve more than hack attacks (though those are also quite prevalent). Access to gambling platforms themselves can come under direct attack, but smart attackers also recognize that scamming gamblers is another avenue of more indirect attack. By stealing customer information, attackers can ultimately access their money at far less risk to themselves than a “fair game” of chance. The revenue streams involved can also be quite substantial. Grand View Research estimates the size of the global online gambling industry as $53.7 billion in 2019, and a compound annual growth rate of 11.5% is projected from 2020 to 2027, for a global market size of $127.3 billion by that year. Europe dominated the 2019 market with $22 billion in receipts, but the US appears headed for the top in the short term, with Grand View Research projecting its market size at nearly $103 billion by 2025. The Asian market is also coming on strong, as more online venues that serve its populations keep appearing. Cryptocurrency payments are becoming the norm in gambling apps and applications, as online gambling and casino operators switch to Bitcoin and its various counterparts. From a security standpoint, cryptocurrency is attractive because gamblers need not enter their personal data during deposits, and blockchain systems are nearly hack-proof. In addition, cryptocurrency transaction fees are much smaller (sometimes zero) than for a traditional payment method such as credit or debit cards, bank account access, and so forth. Deposits and withdrawals are faster, too, while maintaining player anonymity. More players means more attack vectors Desktop PCs, with their larger monitors and display areas, still dominate online gambling by user count. But as smartphone size and resolution have increased over the past decade, momentum is shifting toward mobile users. Mobile online gambling applications are looking for traction, with more variety in deposit options for playing funds, loyalty points, and interactive play with others around the globe. Mobile technology continues to exert a massive influence on online gambling. Trends such as social gambling and a proliferation of mobile gambling applications signal oncoming changes in gambling habits and practices. Given that somewhere between a third and half of the global population has ready access to a smartphone, casinos and online gambling organizations are investing ever more heavily in gaming applications, especially […]

Read More

#WEBWONDERS : The world of web audio

A new year and yet another new theme for blog articles. After #GRIDGOODIES and #FREEBIEFRIDAY, this is a new theme we introduce with #WEBWONDERS. In these blogs, we explore the wonderful world of the browser operating system and uncover hidden or not so hidden treasures, tips and tricks. So, let’s kick of this new series with exploring the world of web audio. Modern browsers make the web audio API available. The goals of the web audio API are mixing sound, generating sound and applying effects to sound from web applications.  TMS WEB Core includes the Pascal import unit for using the web audio API from our beloved language. This unit is in the RTL subfolder that contains all units for several different browser APIs. So, in this blog, we let you explore the web audio API with a small code snippet that shows how you can create your own audio wave and have it played through the speakers of the device. The most straightforward is to create a sound through a sine wave with variable frequency. While technically, the web audio API comes with oscillator objects that could generate this, in this sample, we will use Pascal code for creating the buffer that will hold the sine wave. It is this buffer of floats (TJSFloat32Array) that will be played. The only part of the code where we need to use JavaScript is for the creation of the audio context. This is because there is a subtle difference between the creation on Chromium based browsers and webkit based browsers. So, basically the JavaScript code tries the webkit based creation if the Chromium based creation failed. So, the Pascal function to do this is: procedure playfreq(freq, volume: double); var   ctx: TJSAudioContext;   buf: TJSAudioBuffer;   wave: TJSFloat32Array;   i,len: integer;   src: TJSAudioBufferSourceNode;   sampleFreq: double; begin   // connect to the browser window Audio Context.    asm     ctx = new (window.AudioContext || window.webkitAudioContext)();   end;   // get the sample frequency the audio context can use    len := round(ctx.sampleRate);   // create a new buffer of floating point values   wave := TJSFloat32Array.new(len);   // determine the sine wave frequency in relation to the audio context sample frequency   sampleFreq := ctx.sampleRate / freq;   // create a buffer on the audio context   buf := ctx.createBuffer(1, len, ctx.sampleRate);   wave := buf.getChannelData(0);   // fill the float array with the sine wave data taking frequency & volume in account   for i := 0 to len – 1 do     wave[i] := (volume /100) * sin(i/(samplefreq/(2*PI)));   // create a buffer source object for the audio contect   src := ctx.createBufferSource();   // assign the buffer holding the wave to the audio buffer source object   src.buffer := buf;   // connect the audio buffer source object to the audio context output   src.connect(ctx.destination);   // play the sample from position 0   src.start(0.0); end; With this Pascal routine, it becomes simple to put two TWebTrackBar components on the form that allow to select the frequency and the volume and add a button to play the sound. With a frequency selectable between 20Hz en 20000Hz and volume between 0% and 100%, you have a little web application to test your ears frequency range or speaker […]

Read More

Release Announcement — January 28, 2021

Published January 28, 2021 WRITTEN BY THE KIUWAN TEAMExperienced developers, cyber-security experts, ALM consultants, DevOps gurus and some other dangerous species. The Kiuwan team is excited to announce the availability of our latest release, with new features for both cloud and on premise customers. Kiuwan is a fast, reliable and scalable Application Security and Enterprise Software Analytics solution. Kiuwan includes several tools for management and development that identify and guide remediation of security vulnerabilities in source code. These tools support the implementation of critical shift-left strategies that many companies desire today. Fluent in major programming languages and frameworks, Kiuwan allows extensions and customization for customer-specific needs and integrates with leading DevOps IDEs and tools, in an on-premise or SaaS model. Support for custom components in Kiuwan Insights As requested by our customers, Kiuwan Insights now supports custom artifacts, allowing the creation and maintenance of custom artifacts along with their associated licenses and vulnerabilities. This allows Kiuwan users to identify the use of custom artifacts stored in their own repositories and to track their use in their development, and signal during Insights analysis vulnerabilities added to the application, license issues, and obsolescence caused by the use of these custom components. Custom components, licenses, and vulnerabilities can be added and modified both through the UI and the REST API. With this new functionality, customers will be able to have a complete view of the components used either public or private, avoiding the need to track custom components out of Kiuwan. Engine tuning pack The Kiuwan engine is able to perform source code analysis on a wide variety of programming languages. It parses source code into memory structures, and these structures are checked with rules to identify quality and security issues. Each customer has their own way of using their languages and libraries, so we rely on continual feedback from our customers in order to continuously improve the quality and performance of our analysis to benefit customers. This engine tuning pack incorporates new cases and includes widely requested small enhancements. Add new detection rules or improve existing rules to find more security vulnerabilities in code Updates to reduce some of the false positives returned by the product Performance improvements Revisions to our security and protection rules for more accurate results Improvements to our discovery elements for Oracle, HTML5, and Javascript allowing for greater security detection Language parsing improvements for more language coverage Update language levels Additional bug fixes and improvements Documentation for this release is available in the product documentation repository. For a full list of additional bug fixes and improvements, refer to our Change Log. How to get the new release The new release is available immediately to our Cloud customers. Access the new version via the customer portal. Customers using the On-Premises version of Kiuwan should reach out to their account representative for an updated license key. Would you like to know more Kiuwan solutions? Get in touch with our Kiuwan team! We love to talk about security.

Read More

web & mobile developer magazine article on TMS WEB Core

It’s been over a year now since the first release of TMS WEB Core. Meanwhile many developers have started first experimenting and then building new web technology based applications with the standalone version of TMS WEB Core and additional tools like TMS XData that are all included in TMS ALL-ACCESS. Some developers combined this with our FNC cross-platform components and have created extraordinary projects! We were especially pleased to see this month that the well-known and respected German magazine on web development: “web & mobile developer” features an article on TMS WEB Core.This is especially encouraging as it spreads the word about TMS WEB Core and more importantly the Delphi IDE to a wide community of software developers. Let’s hope it gets noticed and might convince developers to explore RAD component based web development in the Delphi world! Here is a short summery of the article: TMS WEB Core v1.6.1.0 for Delphi/Lazarus is available standalone now and is also part of TMS ALL-ACCESS. Do you have already one or more TMS product licenses and are interested to get on board for TMS ALL-ACCESS, our no-nonsense formula for access to our full current and future toolset, priority support and access to betas, contact our sales: sales@tmssoftware.com for a best possible upgrade offer.

Read More

Async keyword in TMS WEB Core (Leon Kassebaum)

Async? What’s that? Maybe you have already heard about the two concepts of synchronous and asynchronous processing of code statements. I give you an example. Let’s have a look at a “normal” Delphi application and the following lines of code: procedure MyProc(); var lResponse : string; begin lResponse := ExecuteServerRequest; lResponse := ‘Response: ‘ + lResponse; Writeln(lResponse); end; I think you know this type of application (maybe a VCL or FMX app) and of course line 6 is executed after receiving the servers response. This behavior is called synchronous because the computer performs the written code line by line. If you write the same type of code in JavaScript things are working differently. Let me explain why. First of all pure JavaScript is single-threaded. Due to that fact it only has the possibility to perform your code line by line, so to say JS code is executed synchronously. But this only applies to JS and not for browser api calls. Imagine, if you perform an http request as I did in the example above, you call functions from the browser api. At this point the JS engine can continue with the next statement (next line of code) and the browser performs his task in the background. As soon as he is ready he gives you a callback. This is due to the fact that a website always has to react e.g. for resizing. If this would not be possible you would see an hourglass when connecting to a webserver (which lasts a bit) and your whole web app would be frozen. I think you know the well known Blue circle of death from windows. The reason in JS style So what to do if you want to connect to a webserver? The thing is that you have to wait for the response until you can continue your code. In JS the answer is splitted to three statements: async, await and promises. The concept behind this is that the promise which executes your code (e.g. pulling a webserver), has two callback functions. One is called if everything was successful and the other handles possible errors. Maybe it is better to give you a tiny example in JS: … let lPromise = new Promise( function(ASuccess, AFailed){ setTimeout ( function(){ ASuccess(“Waited 2 seconds”) ; }, 2000); }); … I created a promises which performs setTimeout() to wait for 2 seconds and then he calls the success function. The next step is that you can mark a function as async so that it returns a promise and no longer maybe a string. This … async function MyAsyncFunction(){ return “Hello World!” ; } … is the same as … async function MyAsyncFunction(){ return new Promise( function(ASuccess, AFailed){ ASuccess(“Hello World!”); }); } … I know this is hard to understand but please keep in mind that this is just another way to return a promise but it is much more legible. Calling this function with the await keyword makes sure that your code waits for the success callback function of the returned promise and calculates the result of this function which can be the response of the server. Think of the lPromise from above which simply waits 2 seconds. If I would run the following lines of code console.log(“Before calling”); let lPromise = new … console.log(await […]

Read More

VCL Grid goodies

Our VCL component TAdvStringGrid is one of our components with the longest history. It served thousand and thousands of software developers on planet Earth and we are incredibly thankful for an not oversee-able amount of ideas from users that went into the grid during all these years. There is so much power packed into TAdvStringGrid that it becomes a challenge to know and unlock all its power. Hence this new series “Grid Goodies“. And that is not all, our colleague & chief evangelist Holger Flick has some more things up in his sleeves to help you getting the most out of our VCL grids. But I don’t want to reveal more about this upcoming surprise at this time. Let’s bring two extremely easy to use yet powerful features of TAdvStringGrid. Smart clipboard The grid has numerous settings to fine-tune the exact behavior for clipboard handling you want to have. One lesser known feature is the built-in smart clipboard handling. This is enabled by setting grid.Navigation.AllowSmartClipboard = true. What this means is that when you copy a range of cells values to the clipboard with grid.CopySelectionToClipboard and you paste this range into a cell range with a different size, it will try to perform in a smart way what you expect on the different range of cells where you paste, like for example automatic number or date increments. This isn’t limited to performing copy & paste, it can also be enabled for when you select a range of cells and resize it with the mouse. This is enabled with grid.SelectionResizer = true. Of course, for this to work, the grid must be enabled for editing and cell range selection. We decided to make it ultra easy to enable all this functionality by setting one public property instead of going over all different properties involved here, and that is: grid.SpreadSheet := true; When this is enabled, this becomes possible without any code except the button OnClick handlers calling grid.CopySelectionToClipboard / grid.PasteSelectionFromClipboard: Easy highlighting The second goodie we want to reveal is highlighting matching text in the grid. Although the grid has built-in filtering, various built-in search functionality, on the fly highlighting of matching values can be that convenient feature you are looking for. And it cannot be easier to use. All you need to do is call: grid.Hilight(FixedCells, CaseSensitive, YourText); So, for this example, all we did was attach an OnChange event handler for the edit control and call from there: procedure TForm1.Edit1Change(Sender: TObject); begin AdvStringGrid1.HilightInGrid(false,false,Edit1.Text); end; Oh, one small extra setting was done! We changed the highlight color from the standard blue to yellow background and red text with: AdvStringGrid1.HighlightColor := clYellow; AdvStringGrid1.HighlightTextColor := clRed; Let us know what your favorite grid feature is or what other interesting little goodie you discovered recently and we will be happy to share it here in a follow up #GRIDGOODIES.

Read More

TMS WEB Core for Visual Studio Code v1.2 released!

After we released TMS WEB Core v1.6 Pesaro for Delphi & Lazarus on earlier in January this year, we are pleased to inform that the release of TMS WEB Core for Visual Studio Code is now here as well. This brings the framework and language support on par with the versions for Delphi or Lazarus. Focus on new language features Among the major new capabilities of the pas2js compiler are: Generics Attributes Class constructors Resource strings Async procedure decorator Await support JavaScript promises support Resource file support So, the long awaited support for generics (that comes with the accompanying RTL unit generics.collection) and attribute support will allow that nearly all of your existing Delphi code can move over to TMS WEB Core for creating web applications. On the other side, the new support for async procedures, for promises and for await, will mean that you can use modern web paradigms for handling asynchronous functions easier. These features async, promise and await are direct equivalents to the existing JavaScript functionality and do not exist for native Delphi application development. Updating is easy Updating to the new TMS WEB Core for Visual Studio Code v1.2 is easy. Either you obtained TMS WEB Core for Visual Studio Code from the Microsoft marketplace and the IDE will handle the update automatically for you or you can download the latest version from our website. Either way, you will need to reactivate either your trial or full registered version credentials. What’s next? We have been working a long time on v1.2 but in parallel we have already made significant advances for the next release v1.3. The new version will bring component package support. So, from the IDE, you will be able to install additional component packages including creating your own custom component packages. When this is in place, your array of available components at design-time will rise significantly as our full range of TMS FNC Components will become readily available from TMS WEB Core for Visual Studio Code as well. For now, this use was limited to using the classes via runtime code. Get started now If you didn’t get your feet wet already with RAD component based Object Pascal based web client development, now is the time to enter this fast moving & fascinating world. The sheer amount of new possibilities and territories is staggering. You cannot only develop no-deployment cross platform rich web client applications, but also offline usable and installable PWA’s for use on mobile devices bypassing Apple or Google stores. Or you can use the Electron framework to create cross-platform desktop applications for Windows, macOS and Linux with a modern and fresh looking HTML/Web based GUI. And with Visual Studio Code, you can do all this directly from your favorite operating system: Windows, macOS or Linux. Learn here about the new generics support: Get the TMS WEB Core for Visual Studio Code v1.2 trial or use TMS WEB Core for Visual Studio Code v1.2 as part of the TMS ALL-ACCESS subscription, the no-nonsense subscription to our entire product portfolio coupled with priority technical support services.

Read More