If you run you hosting on a Linux server, it normally comes out of the box pretty secure with few of the older less secure services enabled. On top of this, if you use a provider like AWS they further secure the server by their own custom firewall. I truly like Amazon Web Service and have used it for some time. They can scale from mom-and-pop shop right up to enterprise.
TL;DR: In Joomla there's often more than one way to get to the same page, if you're moving off joomla this needs to be considered, *preferably before moving any pages*. This article discusses the cases that I found [during my recent move to hugo](https://www.thecoderscorner.com/team-blog/web-design/cms/moving-to-hugo-from-joomla/). URL Mappings in Joomla, the background Recently I decided to move a joomla site over to hugo; I had search engine friendly URLs turned on and therefore assumed the mapping should be easy.
In this article I discuss moving sites from Joomla over to Hugo static content manager. Before we start lets take a quick look at why we may want to do this, and the cases were it may not be appropriate. tl;dr: In summary, hosting a site on Joomla is time consuming and requires that both Joomla and PHP are frequently updated. If you’re site is suitable for Hugo and are considering moving over, take a look through the phases below.
For the first time ever, this site is now statically generated using hugo content templating system, I wish I'd done it years ago. For technology sites it really is like a breath of fresh air, as there is no more playing around trying to get code and technical content into an online editor designed for WYSIWYG general purpose blog editing. For some time, I had kept the misconception that a CMS had to be dynamic; that was until I found I was spending considerable time trying to keep my Joomla system up to date and safe.
I’ve recently had to help someone still running Joomla to clean up a hacked site. We are not sure how it happened, as they generally applied updates pretty quickly, but luckily it was detected very quickly and brought down to be fixed. If your site is hacked, consider taking it offline immediately, fixing will not take that long, and if search engines detect the problem, you’ll be taken out of the search results until it’s fixed.
Web design is a rapidly changing field, both technologies and web-design standards change frequently leaving one with fairly frequent update cycles. In addition to this, any CMS based solution must be updated frequently to ensure that the most recent version. This version will be hardened as much as possible against external attack. If you've not updated your CMS solution in some time, I recommend you do so as soon as you can.
In the example below we build on the Reading a zip file from java using ZipInputStream page to provide basic filtering. This filtering is provided by the filteredExpandZipFile method taking a Predicate. Every ZipEntry is passed to the predicate, but only ones that match (predicate returns true) are included. Note that the size of an entry cannot be accurately determined in all cases, so it is not safe to perform validation on the this field.
In this example I demonstrate how to use ConcurrentMap along with Future to generate a lazy cache. Concurrent maps are a good choice in some situations, where absolute atomicity can be traded off for performance, some level of control over ordering of events has been traded for performance. Let’s assume for the sake of example that we have an object that is heavy to create. Further, it has to be created on a single thread because it calls into a single threaded maths library.
Following on from one of our popular articles on Reading a zip file from java using ZipInputStream we’ve put together a new article on how to create a zip archive using Java. The below example uses ZipOutputStream to create a zip file from all the items in a directory. Zip files are written slightly differently to a normal stream in that each entry is put into the stream one at a time.