Product

Quickly jump to different functions of a class

Classes were introduced with 4D v18 R3. They allow you to organize your business logic and separate it from the UI part more quickly.

Classes are composed of several functions of varying lengths, so it’s not always easy to find the function you want to modify, or to move from one function to another. You can use the explorer, which displays classes and functions, but when you’re coding in the editor window, you don’t want to waste time changing windows.

With 4D v19 R4, the list of functions in your class is displayed in the code editor toolbar, allowing you to easily jump to a specific function. 

Product

Debug on the server with scalable web sessions

Scalable web sessions were a significant improvement brought by 4D v18 R6. They allow you to use 4D tags, 4D actions, and REST API in preemptive processes, even in interpreted mode, on a 4D server. However, to debug such programs, you needed to open your development environment on the server to make it switch to cooperative mode, as the debugger window cannot be opened with preemptive processes. This way, until v19 R2, you could debug REST, 4D actions, or 4D tags. From v19 R3, all of this has become much easier, and you can debug on the server-side simply by attaching the debugger to it, as usual.

Product

Bcrypt support for passwords

Security is a fundamental topic for today’s business solution systems. At 4D, we understand its importance; that’s why we keep delivering features that tackle this topic.

And with 4D v19 R3, 4D now uses a stronger hashing algorithm for user passwords. Let’s find out more!

Product

ORDA: Thoroughly compare two entity selections

Since ORDA allows you to work with several entity selections simultaneously, we’re sure you take advantage of this by passing entity selections as a parameter to project methods or to functions of ORDA Data model classes.

To work efficiently with object-oriented programming using as few lines of code as possible, you need robust and optimized functions. That’s why with 4D v19 R3, we are shipping a new function available on the entitySelection object: the selected() function.

Thanks to it, you’ll be able to inspect and compare two entity selections. Let’s see the details!

Product

Simplified navigation between development windows

When writing a new function or method, or when creating a form, the work is never linear. We usually need to:

  • access the explorer to find the form in its folder
  • access the explorer to write the documentation for the method
  • read the documentation of a command on the 4D documentation website
  • read the documentation of a component’s method

 

In this new version, we have added some menu items in the code editor and form editor to allow you to better navigate between the different elements of a project.

Product

Stop press! Accessing parameters not being passed is … possible

A method or function can have optional parameters. Sometimes the function is called with two parameters, and other times with three parameters. We’ve all dreamed of accessing the parameters without counting the parameters, checking if the parameter has been passed, or simply not having to check if the variable associated with the parameter has been initialized. This could make the code much simpler, and much more readable, without all the “If” or “Count parameters” lines.

Well, dream no more, and switch to 4D v19 R3! Managing method and function parameters has never been easier.

Tips

How to automate the compilation

Since 4D v19, you can start the compilation of a project with a simple command. You might be wondering what you can use this for!

Your team may consist of several developers, so why not automate the compilation at each code push on your source control server? It is always easier to identify an error when it is quickly detected.

Another case is when your project consists of several components. You can write a method that compiles, builds, and then copies the component to the host database.

This blog will discuss the different technical points that are very useful to create your own automation tools, along with an example application.