From the blog

Everything You Need To Build A Real-time Flight Status App

Would you like to create an application with real-time flight status & global Aviation data updated as often as every single minute? Whether it’s building booking platforms, visualizing and monitoring global flights or creating popular flight tracking applications, wouldn’t it be nice to have a free, simple REST API for live flight tracking & airport timetable data? You’ve probably used one already and, if you’re like me you’ve found a few of them a little lacking and thought “I could do that” – well, now you can! How to build a flight status app with as little code as possible In this article we will see how fast and easy it is to use RAD Studio and Delphi to create a FireMonkey multidevice application using the LowCode Wizard in addition to a REST client library to take advantage of AviationStack API and retrieve a JSON format response for worldwide Live Flight tracker & airport timetable data. What is the AviationStack API? The AviationStack API offers instant access to live extensive set of aviation data, including real-time flight status, historical flights, schedules, airline routes, airports, aircrafts from 250+ countries and 13.000+ airlines from all around the world. This is possible to be done for free (up to first 500 calls/month; no credit card required) and much more is available at very affordable prices and scalable to the use you make with no upfront commitments. Our RAD Studio and Delphi applications will be able to call the API and request information based on the name of parameters you provide. How do I set up the AviationStack API? Make sure you refer to AviationStack API website (https://aviationStack.com/) and and SignUp for the free Plan providing only your email and some basic information (no credit card required). Once you are in the website will redirect you to a Quickstart guide dashboard and your API Access Key will be provided. The Access Key unique, personal and is required to authenticate with the API. Keep it safe! How do I call AviationStack API endpoints? Now all we need to do is to call the API base URL (http://api.aviationStack.com/) via a HTTP POST method with no JSON request body needed and some few requested parameters added to the URL address depending on the ednpoint we choose to call. One can do that using REST Client libraries available on several programming languages. AviationStack offers several API endpoints to choose from: Real-Time Flights: Look up flights in real-time Historical Flights: Look up historical flights Airline Routes: Look up airline routes Airports: Look up global airports Airlines: Look up global airlines Airplanes: Look up airplanes/aircrafts Aircraft Types: Look up aircraft types Aviation Taxes: Look up aviation taxes Cities: Look up global cities Countries: Look up countries Our demo will focus on the Real Time Flights Endpoint but all the others follow similar logic but with different parameters passed. For a complete and detailed list of endpoints and its parameters make sure you refer to AviationStack Quickstart guide (https://aviationStack.com/quickstart) // Real-Time Flights (For the free subscription the request should be done using http and not https in the link below) https://api.aviationstack.com/v1/flights ? access_key = YOUR_ACCESS_KEY // optional parameters: & limit = 100 & offset = 0 // more parameters available please refer to the API Documentation (https://aviationstack.com/documentation) // Real-Time Flights (For […]

Read More

Easily Debug Javascript Ext JS Apps With This Powerful Tool

Developing an application is not easy, mainly talking about a web application, where you can expect any kind of problems depending on user environment, the internet speed, machine performance limitation, remote server availability, different browsers with different behavior and many other unexpected situations where the developer will have to fix the problem. But sometimes is very hard to identify a UI problem even using browser tools. To help with that we have a powerful product: The Sencha Inspector! What is Sencha Inspector? This is a complete tool that helps developers to debug Ext JS applications giving options to inspect anything about an Ext JS application and its ecosystem. It will help you keep the best performance and quality to your application! What are the most interesting Sencha Inspector features? This tool was designed specifically to inspect Ext JS application with many options to monitor and inspect, like: Components: identifying its id, xtype, layout, and other dynamic details, including properties, methods, layout, and the MVVM structure. Stores: checking what model was applied to id, proxy, and properties like URL, parameters and also monitor all records present in the store to easily debug the application behavior. Layout: verify what and how many times each layout is running for each component to see the performance or layout loopings are happening. Events: monitor any kind of events running and their parameters to understand who is calling if is there any unnecessary events executing that will affect the application performance. Architecture: you can see the whole project architecture in a single place (including the Ext JS framework structure). Theme: where you can change styles on the SASS variables that will apply dynamically to your app in real-time. After that, you can just copy your changes and apply them to your application! App Details: show all versions of sencha products used and their license, so here you can monitor if you are using a compatible version of Ext JS with Sencha CMD for example, and also understand the theme hierarchy applied on your application. These and many other options and all on the fly! You can see all details while your app is running and sometimes also change, like on the Theme option. On Sencha Inspector documentation has a complete guide with all steps to understand how to install and use it in detail. Check it here. How to debug and Ext JS Application with Sencha Inspector? Let’s see Sencha Inspector in action! Creating the Application You can create a new application running the commands below. To see more details on how to create an application using templates, check this previous post for more details. sencha -sd /Users/fabio/sencha-sdks/ext-7.4.0/ generate app -s /Users/fabio/sencha-sdks/ext-7.4.0/templates/admin-dashboard AdminDashboard ./admin-dashboard-extjs Now, to have the theme option enabled and working on the fly, we need to enable the fashion option on our app.json file. On the sass section, add the save property: { … “sass”: { “save”: “sass/save.scss”, //accepts .scss or .json file types … } } After that, open the Sencha Inspector, and on terminal navigate to your application folder, and then run the watch command with the inspector option enabled: sencha app watch –inspect Now open your application with this URL: http://localhost:1841/?platformTags=fashion:true After that, you will see your application ready to inspect on your SenchaInspector: Double click on it to see […]

Read More

This Is How To Protect Your Source Code from Hackers

function QuickPos(const Substr, S: WideString; MatchesIndex: Integer = 1): Integer;   var     LenOfS, LenOfSubstr: Integer;   begin     // junk instruction begin     asm       jz   @1       jnz  @1       db   $e9       @1:     end;     // junk instruction end       Result := Pos(Substr, S);       // junk instruction begin     asm           pushf           push  $0A       @1: jnb   @3           jmp   @2       @2: call  @4       @3: jnb   @2       @4: add   esp,4           jmp   @5       @5: dec   dword ptr [esp]           jno   @6       @6: jns   @1           jp    @7       @7: add   esp,4           popf           jmp   @8       @8:     end;     // junk instruction end       if (MatchesIndex = 1) or (Result = 0) then     begin       // junk instruction begin       asm             pushf             jb    @3         @1: jmp   @2         @2: call  @4         @3: jb    @1         @4: add   esp,4             popf             jmp   @5         @5:       end;       // junk instruction end         Exit;     end;       LenOfS := Length(S);        // junk instruction begin     asm           jz   @1           jnz  @1           db   $e8       @1:     end;     // junk instruction end       LenOfSubstr := Length(Substr);       // junk instruction begin     asm       db 0E9h,0A2h,001h,000h,000h,049h,00Fh,0F6h,03Ch,0CFh,075h,0EEh,0C0h,00Fh,031h,08Bh       db 0C8h,00Fh,031h,02Bh,0C8h,0F7h,0D1h,081h,0F9h,000h,050h,000h,000h,07Fh,0FEh,00Fh       db 031h,08Bh,0C8h,00Fh,031h,02Bh,0C8h,0F7h,0D1h,081h,0F9h,000h,050h,000h,000h,07Fh       db 0FEh,0D6h,00Fh,088h,0DDh,001h,000h,000h,00Fh,089h,0D7h,001h,000h,000h,03Eh,0C1h       db 0C3h,005h,0C1h,0CBh,005h,036h,00Fh,08Ah,001h,002h,000h,000h,00Fh,08Bh,0FBh,001h       db 000h,000h,05Bh,0E8h,00Bh,000h,000h,000h,072h,065h,067h,069h,073h,074h,065h,072h       db 065h,064h,000h,058h,0EBh,002h,012h,028h,0E8h,03Eh,000h,000h,000h,099h,04Fh,0F6h       db 03Ch,0FFh,090h,05Fh,050h,00Fh,031h,08Bh,0C8h,00Fh,031h,02Bh,0C8h,0F7h,0D1h,081h       db 0F9h,000h,050h,000h,000h,07Ch,005h,0E9h,0D7h,06Ch,030h,0F0h,0E8h,00Bh,000h,000h       db 000h,072h,065h,067h,069h,073h,074h,065h,072h,065h,064h,000h,058h,0F8h,00Fh,084h       db 0A1h,000h,000h,000h,00Fh,085h,09Bh,000h,000h,000h,03Bh,068h,01Dh,024h,000h,000h       db 083h,0C4h,004h,083h,0C4h,004h,00Fh,084h,007h,000h,000h,000h,00Fh,085h,001h,000h       db 000h,000h,048h,0E8h,00Bh,000h,000h,000h,072h,065h,067h,069h,073h,074h,065h,072h       db 065h,064h,000h,058h,0EBh,00Bh,072h,065h,067h,069h,073h,074h,065h,072h,065h,064h       db 000h,065h,0F8h,00Fh,083h,056h,0FFh,0FFh,0FFh,000h,0A4h,0BCh,0E6h,0D6h,0B7h,0E8h       db 00Bh,000h,000h,000h,072h,065h,067h,069h,073h,074h,065h,072h,065h,064h,000h,058h       db 0F9h,00Fh,031h,08Bh,0C8h,00Fh,031h,02Bh,0C8h,0F7h,0D1h,081h,0F9h,000h,050h,000h       db 000h,07Fh,0FEh,068h,019h,054h,000h,000h,083h,0C4h,004h,0D6h,00Fh,08Ah,0CFh,000h       db 000h,000h,00Fh,08Bh,0C9h,000h,000h,000h,058h,0EBh,00Dh,077h,072h,06Fh,06Eh,067h       db 020h,073h,065h,072h,069h,061h,06Ch,000h,0E9h,038h,0FFh,0FFh,0FFh,043h,03Eh,0F6h       db 03Ch,0C5h,094h,053h,011h,0E8h,001h,000h,000h,000h,086h,0E8h,001h,000h,000h,000h       db 0B8h,083h,044h,024h,004h,012h,083h,004h,024h,00Ah,0C3h,0F8h,050h,052h,00Fh,031h       db 033h,0C8h,05Ah,033h,0C8h,058h,051h,059h,0F9h,00Fh,082h,006h,000h,000h,000h,000h       db 06Bh,05Dh,082h,06Bh,0EBh,00Fh,0CFh,00Fh,0CFh,036h,00Fh,080h,0D3h,0FEh,0FFh,0FFh       db 00Fh,081h,0CDh,0FEh,0FFh,0FFh,0DCh,050h,052h,00Fh,031h,033h,0C8h,05Ah,033h,0C8h       db 058h,068h,0EFh,04Ch,000h,000h,083h,0C4h,004h,036h,00Fh,084h,06Dh,0FEh,0FFh,0FFh       db 00Fh,085h,067h,0FEh,0FFh,0FFh,00Ah,00Fh,031h,08Bh,0C8h,00Fh,031h,02Bh,0C8h,0F7h       db 0D1h,081h,0F9h,000h,050h,000h,000h,07Fh,0FEh,0EBh,00Bh,072h,065h,067h,069h,073h       db 074h,065h,072h,065h,064h,000h,068h,027h,0ACh,000h,000h,083h,0C4h,004h,00Fh,08Ch       db 0B3h,0FFh,0FFh,0FFh,00Fh,08Dh,0ADh,0FFh,0FFh,0FFh,094h,068h,075h,004h,000h,000h       db 083h,0C4h,004h,0F3h,0F8h,00Fh,083h,004h,0FFh,0FFh,0FFh,000h,0BBh,08Dh,090h,07Ch       db 097h,0E8h,001h,000h,000h,000h,0EAh,0E8h,001h,000h,000h,000h,008h,083h,044h,024h       db 004h,012h,083h,004h,024h,00Ah,0C3h,010h,0F9h,00Fh,082h,01Ah,0FFh,0FFh,0FFh,000h       db 02Bh,09Dh,0CDh,020h,0DBh,00Fh,031h,08Bh,0C8h,00Fh,031h,02Bh,0C8h,0F7h,0D1h,081h       db 0F9h,000h,050h,000h,000h,07Fh,0FEh,0E8h,00Bh,000h,000h,000h,072h,065h,067h,069h       db 073h,074h,065h,072h,065h,064h,000h,058h,068h,09Fh,00Ch,000h,000h,083h,0C4h,004h       db 00Fh,088h,095h,0FFh,0FFh,0FFh,00Fh,089h,08Fh,0FFh,0FFh,0FFh,073h,0EBh,00Bh,072h       db 065h,067h,069h,073h,074h,065h,072h,065h,064h,000h,00Fh,088h,007h,000h,000h,000h       db 00Fh,089h,001h,000h,000h,000h,0A1h     end;     // junk instruction end       while (MatchesIndex > 1) and (Result > 0) do     begin       Result := _PosForward(Substr, S, Result + 1, LenOfSubstr, LenOfS);         // junk instruction begin       asm             jz   @1             jnz  @1             db   $9a             db   $e8         @1:       end;       // junk instruction end         if Result = 0 then         Exit;         // junk instruction begin       asm         db   0EBh, 1,    0Fh,  31h         db   0F0h, 0EBh, 0Ch,  33h         db   0C8h, 0EBh, 3,    0EBh         db   9,    0Fh,  59h,  74h         db   5,    75h,  0F8h, 51h         db   0EBh, 0F1h       end;       // junk instruction end         Dec(MatchesIndex);         // junk instruction begin       asm             jz   @1             jnz  @1             db   $e8         @1:       end;       // junk instruction end     end;   end;

Read More

TMS WEB Core v1.8 Sirolo released

TMS WEB Core v1.8 Sirolo is released! We are excited to inform that TMS WEB Core v1.8 Sirolo is released today. This new version is the result of months of hard work of the team to bring several new milestones. Take advantage of the summer-time to expand your horizons and dive into the wonderful web world for Object Pascal developers. Here is a brief overview of the core new features included in TMS WEB Core v1.8  1) Miletus support for macOS and Linux After Miletus targeted Windows in TMS WEB Core v1.7, our team now accomplished the phenomenal next step to create cross-platform web technology based desktop applications for Windows, macOS and Linux. And all that with a minimal footprint. On Windows and Linux this means single executable file apps and for macOS the typical application folder but also here with a single application executable file. Deployment can be done via ultra simple XCOPY deployment. In a nutshell, you can create desktop applications from a single source code base from your Delphi IDE on Windows. You do actually not need an Apple mac machine or Linux box to create these applications. The GUI of these applications is rendered in the browser and therefore empowered by HTML5 and CSS3. You can take advantage of existing web application templates to create stunning GUIs. Not familiar with Miletus? You can learn all about it from this webinar replay 2) New Miletus Interbase and Firebird local database support In this new version, we added two more possible local databases that can be directly used from a Miletus application and that is Interbase and Firebird. No need here to create a REST API interface, you can directly connect a client dataset to local databases. In v1.8 this is now: MS Access, MS SQL, mySQL, SQLite, Interbase and Firebird.               3) Miletus support to access INI files, registry, OS version info Convenient for storing application settings, INI files or registry is what developers frequently use. So, from a Miletus app you can now easily access these INI files and the registry in the same way as you can from a VCL or Firemonkey application. Of course, there is no registry on macOS or Linux and here there is automatic fallback on INI files. In addition, a new API is added to retrieve operating system version information about the operating system where the Miletus executable is running. 4) Two new UI components: chatbox + rating control We have added two new controls to TMS WEB Core v1.8. This is a chatbox control and a rating panel. With the TWebChatbox control, you can write web chat applications with little to no code. Drop this component on the form and all you need to do is write some lines of code to send the message to your chat server of choice or receive messages from there. The other new component is the TWebRatingPanel. This is the classic UI pattern of rating via clicking a number of stars (or other icons of choice). The rating panel offers setting rates in units of 1, 0.5 or fully fractional. 5) SHA1 hashing support in the TWebCrypto component As SHA1 is still from time to time needed in specific communication protocols, we extended the TWebCrypto component that is internally using […]

Read More

How To Validate And Verify Email IDs Using MailboxLayer API

Forwarding a set of emails to incorrect or invalid email addresses can be tedious and time-consuming. To avoid this problem you can utilize an email validation API which helps you thoroughly verify and identify the email sender’s domain and username with minimal fuss.  MailboxLayer can add powerful email address validation to your Delphi and C++ apps The MailboxLayer is a simple but solid REST API that measures email deliverability & quality. You can easily verify email addresses as they arrive into your system, and you can make sure you only send emails to real customers. The Low Code way of creating fully functional apps In this post, we will create our email validation application with FireMonkey App Low Code Wizard. With this wizard, you can create a fully functional Delphi mobile application with multiple screens using just a few easy steps.  The MailboxLayer API offers an easy to integrate option with RAD Studio The Mailboxlayer API is simple and secure and comes with easy to integrate URL structure, delivered in lightweight JSON format. Moreover, it offers: Email Provider Database  Interactive and clear documentation Secure data streams  Extended Statistics about your API usage Furthermore, you can power your validation process with a real-time SMTP checker, syntax & typos validation, and/or separate real permanent email addresses from disposable emails. How do I set up the MailboxLayer API? Head over to the MailboxLayer API website (https://mailboxlayer.com/) and sign up for the free subscription providing you basic information. After signing up, you can go to a quick start guide dashboard and your API access key will be provided. How do I request MailboxLayer API endpoints? Now you have the API access key and all we need to do is to call the base API endpoint (http://apilayer.net/api/check) with the required parameters added to the URL address. The easiest way of doing it is to utilize the REST Client library. What I liked about this API is that it is immaculately clean! In these images, you can see the sample of calling to API endpoint and with sample JSON response. After the request to the endpoint, you can get a clear and concise JSON response. Each API response consists of 10 different response objects. You can see them here on the official documentation of the API (https://mailboxlayer.com/documentation)  How do I connect my applications to the MailboxLayer API? Well, the crazy and fun part starts here! After following the steps and learning about the API endpoint now you can call the endpoint with RAD Studio Delphi or C++ Builder.  This REST endpoint calling is done by using 3 REST Client components those are TRESTClient, TRESTResponse, and TRESTRequest. The rapid way of connecting to APIs – REST Debugger REST Debugger helps to test and understand how RESTful web service works. You can easily configure, filter, enable OAuth 1.0/2.0 authentication and resource parameters. Moreover, after connecting and receiving the JSON response you can swiftly copy and paste components from the REST Debugger to your Delphi or C++ Builder solution. How do I build an app which runs on Windows, macOS, Android, and iOS and works with the MailboxLayer API? As we talked about Low Code Wizard earlier, we will utilize FireMonkey App Low Code Wizard now. Let’s just pause for a moment to speak some more about Low-Code development.  Low-Code development is a visual […]

Read More

How To Build A Powerful App For Live News And More

Would you like to enhance your application with news data from thousands of international news publishers and blogs, updated as often as every single minute? Wouldn’t it be nice to have a FREE, Simple REST API for Live News & Blog Articles? In this article we will see how fast and easy it is to use RAD Studio and Delphi to create a FireMonkey multidevice application using the LowCode Wizard in addition to a REST client library to take advantage of MediaStack API and retrieve a JSON format response for worldwide news, headlines and blog articles in real-time. What can the MediaStack API do for our apps? MediaStack API offers instant access to live news data feeds, discover trends & headlines, monitor brands and access breaking news events around the world. This is possible to be done for free (up to first 500 calls/month; no credit card required) and much more is available at very affordable prices and scalable to the use you make with no upfront commitments. Every minute, the MediaStack API interface is automatically collecting news articles from 7,500+ global news sources and blogs worldwide, parsing it and converting it into a standardized programmatic format for the purpose of ease of use. In order to ensure the highest possible level of accuracy and data consistency, each of the sources used is monitored closely and around the clock for technical or content anomalies. Additional news sources are added continuously as they become available. Our RAD Studio and Delphi applications will be able to call the API and request information based on the name of parameters you provide. How do I set up the MediaStack API? Make sure you refer to MediaStack API website (https://mediaStack.com/) and and sign up for the free plan providing only your email and some basic information (no credit card required). Once you are in the website will redirect you to a Quickstart guide dashboard and your API Access Key will be provided. The Access Key unique, personal and is required to authenticate with the API. Keep it safe! How do I call MediaStack API endpoints? Now all we need to do is to call the API base URL (http://api.mediaStack.com/) via a HTTP POST method with no JSON request body needed and some few requested parameters added to the URL address depending on the ednpoint we choose to call. One can do that using REST Client libraries available on several programming languages. MediaStack offers two API endpoints to choose from: News Data: Get live & historical news data News Sources: Get a list of news sources Our demo will focus on the Live News Endpoint but all the others follow similar logic but with different parameters passed. For a complete and detailed list of endpoints and its parameters make sure you refer to MediaStack Quickstart guide (https://mediaStack.com/quickstart) // Live News Data http://api.mediastack.com/v1/news ? access_key = YOUR_ACCESS_KEY // optional parameters: & sources = cnn,bbc & categories = business,sports & countries = us,au & languages = en,-de & keywords = virus,-corona & sort = published_desc & offset = 0 & limit = 100 // Live News Data http://api.mediastack.com/v1/news ? access_key = YOUR_ACCESS_KEY   // optional parameters: & sources = cnn,bbc & categories = business,sports & countries = us,au & languages = en,–de & keywords = virus,–corona & sort […]

Read More

New Delphi And C++Builder Community Editions 10.4 Available

Embarcadero has made available the Community Edition license for the most recent 10.4 release of Delphi and C++Builder. This is a free edition for students, hobbyist and startups. As announced yesterday with the blog post Delphi & C++Builder FREE Community Editions Updated to Version 10.4.2 Are Now Available, Embarcadero has moved the free CE license of its two IDEs, Delphi and C++Builder, to the last version of the product, 10.4 Sydney. The Community Edition is a free edition for non-professional developers (read the FAQ or the EULA for more information) and anyone who wants to start using one of the two products to learn them. Being a complete product aligned to the Professional Edition of Delphi or C++Builder, it allows building applications for desktop (Windows and also macOS for Delphi) and mobile (Android and iOS). The CE edition includes both the VCL and the FMX UI libraries, but also the core RTL and database libraries, web technologies and more. If you are interested, you can download 10.4 CE and also sign up for the “summer camp” to learn more about the technology of these CE editions and other Embarcadero tools: I’ve very happy we are making the 10.4 version of Delphi and C++Builder available as a free Community Edition tools, as I’m certain a lot of people will leverage the opportunity to learn about our technology, both in terms of programming languages and libraries. If you are new to it, Delphi is a lot of fun to learn and a very powerful natively compiled language, worth having a deep look.

Read More

And Delphi, huh?

That was the theme of a live I watched… “And Delphi, huh???” For those who follow the evolution of the tool over the years, especially since Embarcadero, everything that has happened is very clear. But for those who are not part of this group, the question is extremely pertinent. I became an admirer It was through a live that I got to know, I immediately became an admirer of the creator of the stream André Baltieri , or simply Balta as he is called. You who do not know, and I open space here to say that I did not know, and still do not know personally, Balta has been a Microsoft MVP for 9 times in recent years, has a long journey in his development career and through his work on the Balta portal . io has trained more than 20,000 programmers who somehow consumed some of his courses. Access the original post (in Portuguese) The live was in Portuguese, with an audience of over 300 people participating online. To learn more, follow the link to the original post on my site:

Read More

Delphi & C++Builder FREE Community Editions Updated to Version 10.4.2 Are Now Available!

The free and full-featured Community Editions of Delphi and C++Builder are designed to help you get started programming. These powerful IDEs provide all the features you need to quickly explore robust app development. When Community Edition launched it made all the features of the Professional Edition of Delphi and C++Builder free to students and hobbyists in the community: including mobile platforms, desktop database, and the full source code for the runtime libraries. Now the 10.4.2 Sydney update brings the absolutely latest features and updated platform support to Delphi & C++Builder Community Edition. There’s no better way to build powerful native applications for iOS, Android, Windows, and macOS from a single codebase than using the robust and easy-to-learn Delphi language. This makes it the ideal choice for students or anyone who just wants to get things done. C++Builder is your choice if you want to master the mysteries of the curly brace. It unlocks a huge variety of C++ standard libraries, while still giving you access to the powerful runtime libraries included in Delphi. This is a winning combination for C++ development. The Community Editions of Delphi & C++Builder are designed for students and hobbyists. If that is you, and you are new to programming, then download the free Community Edition of your choice [Delphi 10.4.2 CE or C++Builder 10.4.2 CE] and register for the free . Community Editions are available free of charge to developers, and organizations with fewer than five developers. You must have revenues less than US$5,000. They come with a one-year term license and a limited commercial license. If you aren’t sure if you qualify for the CE license then start with the Free Trial or consult the Community Edition License FAQ. Once you outgrow Community Edition then upgrade to a perpetual license with an unrestricted commercial license and choose between the Professional, Enterprise, and Architect Editions of Delphi, C++Builder, and RAD Studio.

Read More