Hello community. After several months of work, it's time for me to present my most ambitious open-source project. It's not finalized yet; there are still bugs and features that need to be added, but it's stable enough for you to "play" with and give your feedback.
### What is Phoenix?
Phoenix is a modern template engine for Spring and Spring Boot aiming to facilitate the development of complex web applications by providing a way to create complex and modular templates benefiting from server-side rendering for better integration between the frontend and backend.
### Phoenix vs Thymeleaf or Freemarker
Phoenix offers several advantages compared to other existing template engines at the moment:
- The ability to integrate Java code directly into HTML templates without needing to learn a new syntax or special utilities.
- An easier-to-understand syntax that only requires a special character "@" to integrate Java code into HTML code.
- Fragments or components that can be combined and reused, making the code easier to maintain.
- Speed, speed, speed - Phoenix templates are compiled, offering rendering speeds up to 10x faster compared to Thymeleaf.
- A single PhoenixController that easily allows the return of both HTML pages and JSON responses.
- Reverse routing - a completely new feature for Spring. URLs are written at runtime in templates, eliminating the need for manual writing. You only mention the controller and method, and Phoenix calculates the correct URL. This way, you can change the URL in the controller without having to modify the template.
- Pages dynamically modified by calling from JS to the backend to obtain a ready-to-add fragment/module to the DOM.
- Easy to configure* (Work in Progress to reduce necessary dependencies).
### Why Phoenix and not React/Angular/Vue?
Phoenix is not intended to be a replacement for JS frameworks. Instead, Phoenix aims to utilize existing JS frameworks to add SSR, thereby enhancing page rendering speed and FE-BE integration. You no longer need to always return complex JSON; you can directly provide an HTML page with everything needed and nothing more. There can be a whole debate about SSR vs non-SSR, so Phoenix tries to combine the advantages of both.
###Open Source
Phoenix is open source, and everyone is encouraged to download the code, contribute improvements, or suggest features.
It has been made many times, but I could not find something that works easily out of the box. After I made it, decided to share it since others may find it useful.
The past few days I've been working on a personal project and needed to add file-upload functionality to an existing form. So, I was searching for something to make things elegant and allow also drag&drop, not just the traditional file browser.
I could not find anything that fit my needs (DropzoneJS required too much workaround to work with my existing form), so I decided to make my own from scratch. It turned out quite well so I decided to make it open-source, since I think other may find it useful.
- It is theamable, and only requires update to the css file
- Does not require any external libraries like JQuery (it is made with pure JS and CSS)
- Small and lightweight, currently having less than 4kb for both the JS and CSS files
- Shows you the thumbnail preview for images (configurable)
- Easy to configure (even though there are only a few configuration options)
Any suggestions of improvements (or even better, code submissions) are greatly appreciated. Please, tell me what you think and if you think that this is useful and I should continue development.
Author here! I know that the title is a bit click-batei, but did not know how to better say it clearly. In the article I show two real-life examples of input-validation failures and why it is important to have server-side validation for the data received from the user. Also, I don't recommend using this for your channel (or any such service), due to the really bad quality of the subscribers.
Hi all! This is my first open-source project and I hope I managed to create something useful. LogMasker is a library that helps with masking confidential data inside logs. It is easy to integrate in both Log4j2 and Logback, configurable and can mask IPs, emails, passwords, IBANs and Card Numbers. The library is still in it's early stages, with hopefully more features on the way. Any feedback is highly appreciated.
First, I must add that it is not my article. Just found it interesting.
Related to the language, it sais it is OpenCV. I don't know if javascript has access to the actual image data from the webcam, but if it does, it may work.
Using UUIDs externally is not only for privacy, but for security as well. There are attacks that are easier if you can guess the IDs that are being used. Also, not all systems are meant to be scrapped or deal with user-generated content.
I remember a few years back a data leak of stored financial information because the IDs provided for them in the "My Cards" section used sequential IDs. A simple script could scrape credit card data. Yes, I know that there were other security problems as well (not checking if a user has access to that card, storing it in a non-PCI compliant way, etc.), but still, the fact that the internal sequentially-generated PK was provided to the outside world, made things a lot easier.
WOW! This was a really interesting read. I don't even know exactly where to start. I never looked into G+ (and was nowhere near as good as a programmer as I am now), but those were really cool findings.
Related to UUIDs, it does indeed protect privacy and protects the server from crapping and leaks. It is not enough for security, but it does make it harder. Internally you can still use sequential IDs for the PK so that speed is not impacted.
There are many data leaks that result from exposing the internal IDs of your data. These are easy to guess if you use sequential/auto-incremented values for the primary key of your data and later share it outside. here is how I think you can avoid it without sacrificing performance.
Using the power of Streams in Java 8 and with the help of Lambda Expressions we can do easy, fast and reliable manipulations on Collections. We can easily filter or sort lists as well as other operations, regardless of the overall complexity.
With JavaScript frameworks becoming more and more powerful, a lot of business logic is now done on the client side. This, however, can pose some security problems and here are three commonly found mistakes where server-side validation is omitted and parts of the web app are vulnerable because of this. We will be looking on role escalation, confidential information access, and more.
### What is Phoenix?
Phoenix is a modern template engine for Spring and Spring Boot aiming to facilitate the development of complex web applications by providing a way to create complex and modular templates benefiting from server-side rendering for better integration between the frontend and backend.
### Phoenix vs Thymeleaf or Freemarker
Phoenix offers several advantages compared to other existing template engines at the moment:
- The ability to integrate Java code directly into HTML templates without needing to learn a new syntax or special utilities.
- An easier-to-understand syntax that only requires a special character "@" to integrate Java code into HTML code.
- Fragments or components that can be combined and reused, making the code easier to maintain.
- Speed, speed, speed - Phoenix templates are compiled, offering rendering speeds up to 10x faster compared to Thymeleaf.
- A single PhoenixController that easily allows the return of both HTML pages and JSON responses.
- Reverse routing - a completely new feature for Spring. URLs are written at runtime in templates, eliminating the need for manual writing. You only mention the controller and method, and Phoenix calculates the correct URL. This way, you can change the URL in the controller without having to modify the template.
- Pages dynamically modified by calling from JS to the backend to obtain a ready-to-add fragment/module to the DOM.
- Easy to configure* (Work in Progress to reduce necessary dependencies).
### Why Phoenix and not React/Angular/Vue?
Phoenix is not intended to be a replacement for JS frameworks. Instead, Phoenix aims to utilize existing JS frameworks to add SSR, thereby enhancing page rendering speed and FE-BE integration. You no longer need to always return complex JSON; you can directly provide an HTML page with everything needed and nothing more. There can be a whole debate about SSR vs non-SSR, so Phoenix tries to combine the advantages of both.
###Open Source
Phoenix is open source, and everyone is encouraged to download the code, contribute improvements, or suggest features.
Source code: https://gitlab.com/ppopescu/phoenix-template-engine
Wiki: https://gitlab.com/ppopescu/phoenix-template-engine/-/wikis/...
Build jar: https://gitlab.com/ppopescu/phoenix-template-engine/-/jobs/5...
My blog: https://petrepopescu.tech