Noutați

How to Call Google API Detect Label with Ext JS and Sencha Architect

No matter how you look at it, Detect Labels is one of the most awesome Google APIs out there. It is the gateway to a full array of information that can be added to any picture. With it, you can read tags for almost everything you see in a given image, from its location to the products and activities you see within. Is there an animal in the image? If the answer is yes, you can even tag the species. Needless to say, there is endless potential in the Detect Label API.  That’s why today we are going to create a project using Detect Labels to scan images in Sencha Architect. Starting with Sencha Architect Before you start, you are going to need to configure and open Sencha Architect on your machine. If it asks for them, install and update Sencha CMD and the Ext JS SDK as well. Creating a project Once everything is current, you can start by clicking on New Project on the Sencha Architect main screen: You will see a number of project options, for our purposes we will start with the Blank Project template. Select it  and click on Create: This creates a new blank project ready for you to start selecting and dragging things into. Creating and configuring the view The first thing you want to do is select and drag a Form Panel from the right-side tool box. Drag it into your project and give it a title in the configurations panel on the bottom right of the Sencha Architect window. Let’s name it Detect Labels: Next, you will want to add a toolbar with a button at the bottom of the form. Call the button Run. We can assign the button an action later. Now it gets interesting, let’s add some fields that we will use to dynamically change our request parameters. You can rename them as you go by double-clicking on the name field. Add fields for API URL, API Key, Max. Results, Image URL, and Response. Now, let’s transform the Max. Results field to a Number field and disable the decimal flag because there will be an integer value for it. Configuring the View Model Now that you have created your view, it is time to work on the View Model. Here we connect the fields with values from the model using bind. To do this go to the tree files on the left panel, and select MyFormViewModel. Next, in the configuration panel, find config data and click on its value. This will change it in the code. This will also open the Architect code editor. To define the data for the view model we will enter our URL and parameters to call the Detect Labels API using an Ext Ajax request. As an example, we will use the image used on the API blog post.  Don’t forget to change your Google API Key key as well! data: { apiUrl: ‘https://vision.googleapis.com/v1/images:annotate’, apiKey: ‘yourGoogleApiKey’, imageUri: ‘gs://cloud-samples-data/vision/label/setagaya.jpeg’, maxResults: 5, response: null }   Binding the fields Once you are done, it is time to connect the data to our fields. To do this, head back to your form view on the Editor tab, select each field, and find the value property on the configurations panel. Make sure the option View Model Binding is […]

Read More

Easily Automate The DigitalOcean API From Windows And Mobile

DigitalOcean offers a set of APIs that we can access to manage their products from our application.  You can create applications that act like DigitalOcean’s Droplets Control Panel. You can access DigitalOcean’s API documentation here https://developers.digitalocean.com/documentation/v2/. One reason to utilize the DigitalOcean API is to automate your cloud server management and deployment process. If you are building out separate machines for customers (using RAD Server for example) this would be a great way to automate that process. Or maybe you have a CI pipeline you’re setting up that involves automated deployment and testing of an installation process this would be a great way to automate the process through Delphi and the DigitalOcean API. How do I set up a Windows app with DigitalOcean’s API? This article is only an example of the initial steps in creating an automation application, so I only show how to set up the DigitalOcean’s Droplet. In order to create a droplet (virtual private server) the /v2/droplets endpoint exists. It can be called to create a new server for you to use. Here are the two request headers needed which include authorization. Content-Type: application/json Authorization: Bearer b7d03a6947b217efb6f3ec3bd3504582 Content–Type: application/json Authorization: Bearer b7d03a6947b217efb6f3ec3bd3504582 Here are the list of request parameters that can be set when creating a droplet. The parameters are sent via JSON in the request body. You will see these parameters used in the Object Pascal code below. Name Type name String region String size String image integer (if using an image ID), or String (if using a public image slug) ssh_keys Array backups Boolean ipv6 Boolean private_networking Boolean vpc_uuid string user_data String monitoring Boolean volumes Array tags Array And here is some example JSON of a request body: { “name”: “example.com”, “region”: “nyc3”, “size”: “s-1vcpu-1gb”, “image”: “ubuntu-16-04-x64”, “ssh_keys”: [ 107149 ], “backups”: false, “ipv6”: true, “user_data”: null, “private_networking”: null, “volumes”: null, “tags”: [ “web” ] } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 {   “name”: “example.com”,   “region”: “nyc3”,   “size”: “s-1vcpu-1gb”,   “image”: “ubuntu-16-04-x64”,   “ssh_keys”: [     107149   ],   “backups”: false,   “ipv6”: true,   “user_data”: null,   “private_networking”: null,   “volumes”: null,   “tags”: [     “web”   ] } What Does the Delphi API code look like to access DigitalOcean? We are going to use the TRESTClient TRESTRequest TRESTResponse pipeline that is built into the Delphi RTL to make it easy to handle the REST request. The library is available for all platforms that are supported by Object Pascal. The REST Library framework focuses on JSON as the representation format. REST.Client.TRESTClient is the component that actually executes a request to a service. TRESTClient manages the HTTP connection to the service, deals with HTTP headers and proxy servers, and receives the response data. Authenticators (described later) can be attached to the client for a convenient way of adding authentication to a request. The request (REST.Client.TRESTRequest) holds all parameters and settings that form the actual HTTP request to the service. When connected to a client-component, it can be executed (even at design time). One of the most important properties of the request is the ‘Resource’. This value forms the previously mentioned ‘second half’ of the full request-url and defines the actual action that is executed on the service. The request also defines the HTTP methods (‘get’, ‘post’, ‘put’, ‘delete’) that are used for its execution. The response […]

Read More

Developer Stories: Giuliano D’Oronzo Talks Through His Board Game Prime

Giuliano D’Oronzo has been programming with Delphi since 2017. His (Prime) application was one of the showcase entries of the Delphi 26th Showcase Challenge and we have also asked him further about his Delphi skills. Get more information about his board game at Prime. When did you start using RAD Studio/Delphi and have long have you been using it? I have been using Delphi since 2017, but have been programming in Pascal for over 30 years. I almost always used Embarcadero development tools (first Borland then Inprise). What was it like building software before you had RAD Studio/Delphi? Previously I developed only for the Windows platform, now thanks to Delphi I can create applications for all the major existing platforms. How did RAD Studio/Delphi help you create your showcase application? Delphi allowed me to speed up the porting process to the Android platform with minimal effort. What made RAD Studio/Delphi stand out from other options? For me the “Object Pascal” language is extremely easy to use as well as very powerful. As a result, the development speed is significantly faster than with other development tools. What made you happiest about working with RAD Studio/Delphi? Working with Delphi is a lot of fun, and it gives me a lot of satisfaction. What have you been able to achieve through using RAD Studio/Delphi to create your showcase application? I managed to get a good chess engine (adapted for my game), and a good GUI on both platforms (android and windows). What are some future plans for your showcase application? I am developing another video game soon. Thank you for your insights, Giuliano! You will find the showcase entry for his application below Showcase

Read More

How to Call Google Natural Language APIs from Sencha Ext JS Framework

Ext.define(‘GoogleNLPDemoApp.view.main.MainView’, {   xtype: ‘mainview’,   controller: ‘mainviewcontroller’,   extend: ‘Ext.Panel’,   layout: ‘vbox’,   items: [{             xtype: ‘fieldset’,             items: [                 {                    xtype: ‘textfield’,                                      label: ‘Text Content’,                                      placeholder: ‘Enter text for analysis’,                                      name: ‘textContent’,                                      // validate not empty                                      required: true,                                      reference: ‘ct’                 },                 {                     xtype: ‘button’,                                           text: ‘analyze’,                                           handler: ‘onAnalyzeClick’                 }             ]         },  {       xtype: ‘reportgrid’,       title: ‘Sentiment Analysis Report’,       bind: {                 store: ‘{nlpStore}’             }   }],   viewModel: {       stores: {           nlpStore: {               type: ‘store’,               storeId: ‘dStore’,               autoLoad: true,               fields:[{                   name: ‘content’,                   mapping: ‘text.content’               },               {                   name: ‘magnitude’,                   mapping: ‘sentiment.magnitude’               },               {                   name: ‘score’,                   mapping: ‘sentiment.score’               }               ],               proxy: {                   type: ‘memory’,                   data: null,                   reader: {                       rootProperty: ‘sentences’                   }               }           }       }   },   defaults: {       flex: 1,       margin: 16   } });

Read More

How To Build Powerful Data Visualizations Using JavaScript with D3 in Sencha Ext JS

The D3 package in Sencha Ext JS is a very popular and efficient way to visualize data. There are 2 main components to the tool — the first is D3, the powerful JavaScript library that helps you easily visualize data on the web using HTML tables or SVG. Next is Ext JS, the Sencha JavaScript framework for building interactive cross-platform applications. By using D3 with Ext JS, you can build powerful data visualizations that help organizations and individuals uncover valuable insights by seeing their data more effectively. If effective, intuitive, and easy-to-implement data visualization is what you are after, read on to learn more about how you can put Ext JS and D3 to work for you.  What is D3? First off, you ask, what is D3?  D3 stands for Data-Driven Documents. It is an open-source JavaScript library for producing dynamic, readable, and interactive data visualizations in web browsers. It uses all the modern web standards, including SVG, HTML, and CSS.  What makes it effective is that you can use D3 to bind any arbitrary data to your Document Object Model (DOM) and apply data transformations from there.  D3 is incredibly flexible. For example, you can use D3 to generate an HTML table from any array of numbers. You can also use D3 to create an interactive SVG bar chart using the same data. In short, D3 lets you present your information in a visually appealing way.  More importantly, it gives you full control over the data selection process.  Three Reasons to use D3 for data visualization There are many reasons why Sencha’s D3 is the perfect tool to visualize your data. but for now, let’s stick to these 3: It’s easy to build any kind of visualization that you want.  The D3 library lets you present your complex numbers in a way that is easy for everyone to read. You can easily generate reports, it simplifies making comparisons and allows you to present your data that makes it easier to recognize patterns. It’s simple to reuse code and add specific functions. D3 is a JavaScript library with functional styles built in.  As a result, creating attractive, powerful data visualization is a breeze. It creates memorable visualizations. Data Visualizations created with D3 stand out. Whether you are working to convince investors or present findings, nothing works better than properly transformed data to uncover valuable insights. How to Build Powerful Data Visualizations with D3 and Ext JS The Sencha D3 package is completely integrated with Ext JS. The result is powerful, easily implemented data visualizations. The D3 package supports multiple component types, including Hierarchical Components, Heatmap Components, and Custom Components. Here we will look at the details of integrating the hierarchical “Sunburst” and “Zoomable Sunburst” components in Ext JS. Sunburst  The D3 sunburst component is a dynamic and compelling way to render your hierarchical data. Like a sunburst, it visualizes tree nodes as concentric wedge sectors, with the root circle in the center. It opens outward for every level of depth in the hierarchy.  To produce the visualization shown above, you have to create the Model by using the following code: Ext.define(‘KitchenSink.model.Tree’, {    extend: ‘Ext.data.TreeModel’,     fields: [        ‘name’,        ‘path’,        ‘size’,        {            […]

Read More

Developer Stories: Oripov Murod Converses Regarding His DovtaLab2020 Application

Oripov Murod has been programming with Delphi since 2006. His application (DovtaLab2020) was submitted as an entry for the Delphi 26th Showcase Challenge and we interviewed him to know more about his application and experiences with Delphi. You can download his application over at DovtaLab2020. When did you start using RAD Studio/Delphi and have long have you been using it? I started studying from 2003 (Delphi6)  as beginner. I use Delphi seriosly from 2012 (Delphi2010). What was it like building software before you had RAD Studio/Delphi? I used FoxPro, Basic,C, Access. How did RAD Studio/Delphi help you create your showcase application? Delphi is more simple and Delphi has a lot of tools for creating any application. What made RAD Studio/Delphi stand out from other options? It seems to me that I understand delphi better than others. What made you happiest about working with RAD Studio/Delphi? I love delphi very much What have you been able to achieve through using RAD Studio/Delphi to create your showcase application? I liked this system and now i have more abilities to create a lot of apps in future. What are some future plans for your showcase application? I want to teach children to delphi to learn more myself.   Thank you, Oripov! You can find the link of his showcase entry below. Showcase

Read More

Websockets Harness Real-Time Power In Your Delphi Apps

Are you using websockets in your applications yet? Do you need to know what websockets can do for your apps? Read on to get up to speed on everything you need to know about using websockets with Delphi along with a run-down on some of the available component sets which take all the hard work out of making the magic happen. What are websockets? There are two sides to a websocket implementation – the client side and the server side. At the most basic level a websocket server is an application which listens for TCP traffic. The websockets clients are one or more applications or even web pages which connect to the websocket server via a “handshake” request and, if successful, a continuous connection is established between the server and the client. Are websockets just a special type of HTML? The short answer to that question is no, websockets use the TCP communication protocol – not the much more heavyweight HTTP. The websockets server is not a web server, although it can be implemented on one. The websockets TCP traffic, the data sent back and forth between the client and server, is not the familiar “200 OK” and “HTTP/2.0 a bunch of HTML” type text data. The websockets protocol is very lightweight and as a result, very fast. Websockets are also designed to be used in situations where there are prolonged and ‘constantly-on’ connections to the server by multiple clients. Compare that to HTML where the interaction is typically client makes a page request, the web server sends back its response and that’s end of interaction until the next web resource request. Websockets are more like a ‘push’ technology where the server can send updates without being asked. This push ability is more similar to the notifications on your mobile phone. Are websockets secure? The websocket protocol provides for both non-secure and secure connections. The secure protocol uses TLS/SSL. Why would I want to use websockets in my app? Websockets are really useful for applications which need to update small amounts of data frequently and on a schedule which is not predictable. You can use websockets to provide a highly efficient way of communicating that data without the overhead of things like REST which relies on HTML and therefore has all the added baggage of HTML request/response codes, headers and MIME types. Your applications cut out all that extra noise using websockets while providing a near real-time response without needing to implement things like the server or client polling for any requests or updates. This makes your app super-responsive and lightweight. What sort of applications can I write? The most common example you see given for websockets is in real-time “chat” programs which emulate popular apps like Slack, Discourse and Messenger. There are a whole host of other uses too: “Feed” type usage – like a Twitter tweet feed or an “as it happens” time and status update print-out from something like a temperature monitoring hardware control. Two-way updates between two client applications. For example, two users are both updating a shared resource like a set of notes or different parts of a patient record. Using websockets you could implement an update mechanism where both users could see the other’s changes in near-real time rather than having to hit a […]

Read More

Plunge Into A Museum Adventure With This Delphi Integration

This really wonderful Delphi app makes truly creative use of the integration of museum visitors with exhibits. Written by Oz Software of Spain, vCoolture makes a trip to the museum into an adventure where visitors using the app not only hear the descriptions offered by traditional audio guides but a plethora of additional information such as a biography of the painter or sculptor of an art exhibit, links to relevant web pages such as a contemporary artist’s own website or other publicly available information like a Wikipedia article. How does vCoolture achieve this integration magic? Oz Software makes use of Delphi’s ability to integrate with iBeacons – discrete little Bluetooth Low Energy devices – which are carefully placed at strategic points around the museum or art exhibition. When a visitor using the mobile device app comes within range of an iBeacon the app looks up the iBeacon’s hardware ID and retrieves the facts, photos and links associated with it. As well as visual information at the same time the device begins playing any audio linked to the exhibit’s iBeacon. To the visitor it all seems to work by some kind of invisible magic, but that magic is pretty easy to achieve with RAD Studio Delphi and a little imagination. What other types of integration does the app enable? Along with the images and audio the app also provides a map of each room as the user enters it. This map/iBeacon integration means the user not only sees a smaller, more concise map but can have relevant exhibits highlighted on the map in greater detail than could be done on a simple full-build floor plan. vCoolture is an example of software for mobile devices that substantially improves the user experience in visiting museums or any kind of exposition, offering many more services than those offered by traditional audio guides. vCoolture also uses the ready-to-go components in Delphi to provide in-app billing using Google Ad integration as well as the ability for the museums to display virtual reality ‘billboard’ advertising which seem to be projected on the floor of the halls or even the exhibits themselves! Gift merchandising information can also be integrated into the information associated with the iBeacons so things like relevant books, mementoes and T-shirts sold in the museum gift store can be displayed next to an exhibit. But there’s more than just hardware integration! As if all of this wasn’t enough, vCoolture has one more trick: to make a great visit even more interesting, vCoolture includes a ‘Enigma’ game built in. Visitors have to find the answers to questions posed by the app which allows them to ‘find’ 10 objects hidden ‘behind’ of some works of art. There is an interactive or group play element to because the game allows you to compete with friends or colleagues. What does the Oz Software say about vCoolture? “The vast majority of applications using iBeacons are specific to a particular museum and only serve for that particular use, so often the visitor is very reluctant to install a heavy application for a single use. vCoolture is a single App for any museum or exposition, there is no limitation, since all the information is loaded on demand from a local or remote web service. But also, every museum/exposition can personalize vCoolture for […]

Read More

Customer Case Study: Viasoft Korp

Wagner Landgraf, TMS Business Product Manager, has recently published a post in his landgraf.dev blog, with a transcription of a nice interview he has made with Alexandre Henzen, Technical Director at Viasoft Korp, a big software company in Brazil that provides ERP software for industry and belongs to Viasoft group, which also has software for other segments like agribusiness, retail stores, among others. The interview was in Portuguese but the the English transcription of the main parts of it is provided by the blog. It’s really great to see how TMS Software and Delphi made an important role in the company history. The company now has more than 70 employees, being part of the group that has more than 500 employees. According to Alexandre himself: All the architecture of our software written in Delphi is built around TMS Business. He uses TMS Scripter, TMS Workflow Studio, TMS Aurelius, TMS RemoteDB and TMS XData, among other products belonging to the TMS Business line of products. Some of their customers are as big as having 500 simultaneous users, with thousands of operations every day. TMS Business products are handling it hands down. He also mentioned his experience after upgrading to Delphi 10.4.2 Sydney. In his own words: Sydney 10.4.2 is the most stable release that I’ve seen since XE2. Compilation time was 58 minutes, it dropped to less than a half of it just by upgrading to it. It’s a very interesting interview when they also talk about other topics, including the role Alexandre had in TMS Aurelius development. Visit landgraf.dev interview post to see the full text and let us know in your comments what did you think about it!

Read More