Advanced Search
Search Results
463 total results found
October 8
Hi all, hope you're doing well. My health is still awful, so I've been very slow, but trying to chip away at things when I can. Got a lot of hospital appointments and stuff coming up, so I don't know how much will be in the next update, but will see. Bookmar...
October 22
Hi all, hope you're doing well ^^ Styling: explanation sections To create clearer explanations for users in various sections of the site, I realised a specific "explanation template" would be helpful for things where a user needs to be aware of information w...
Setting up rate limiting via WAF
If your infrastructure setup is such that all of your site visitors are coming to your website through a CloudFront distribution as the first point of contact, then you can use WAF to reliably rate limit requests from visitors. Adding a rate limit rule To ad...
November 9
Hi all, hope you're doing well. Updates below. My health is getting worse and worse, so fairly short update today. Gallery SQL performance improvements When searching for artworks, the gallery SQL stored procedure now uses a set list of mime types to compar...
Database Structure
The tables, etc involved.
Overview
Optimising the SQL query
Optimising a query of this size can seem a very daunting task. In reality, there are a handful of important points you can keep in mind to make optimisation decisions to make your query run faster. SQL Wildcards In general, leading wildcards in SQL queries w...
Caching results
If your gallery SQL query is run every time a user performs a search or loads a gallery, it's going to cripple your database server fairly fast given the scale of said query. Caching results helps to massively reduce load on your database server, and for it to...
Caching dangers (user safety)
Because retrieving data specific to the requesting user is a huge caching inefficiency, we need to be sure that when we get results back from the database, that any artworks from artists who are blocked by the requesting user are removed before being sent to t...
Query explanation
December 12
Hi all, hope you're doing well. No second update last month, as I've been out of action due to my worsening illnesses; not a big update this time. Account verification system I've finished making the verification system for users, and now the submit artwork ...
January 23
Hi all, hope you're doing well. I'm quite badly ill, so I haven't been able to do much of anything at all - which is also why I took six weeks to publish this update, rather than the usual two. I might document my recent health problems in the next update as a...
April 9
Hi all, hope you're doing well. Video encoding tests I did some extra testing of HEVC / H.265 video encoding to see the performance differences when used with AWS MediaConvert, as I realised that for videos with a lot of views, the bandwidth savings will out...
Minification and Merging
When deploying your website to a production environment, i.e. running it live for people to use, you should optimise your frontend scripts so that they load as fast as possible and use as little bandwidth as is necessary. This has two benefits: It cuts down...
Troubleshooting & Pitfalls
Errors "Node cannot be null or undefined" While this error can signify a lot of problems, I've often found it occurs when an editor is still bound to an element on the page, but that element no longer exists. Make sure both to remove any unused editor insta...
November 3
Hi all, hope you're doing well. This update is very, very late; I keep meaning to return to a two-weekly schedule or some other consistent schedule, but my health has stopped almost everything for the last several months, and that doesn't look likely to change...
Session Management
Session Handling Deserted Chateau uses phpredis as a session handler, both for improved performance (versus storing sessions on the webservers themselves) and to enable centralised session management across multiple webservers. Session regeneration and expir...
The SpaStateManager class
Deserted Chateau's SPA is implemented via this class, and can be enabled or disabled by users via their navigation settings. Registering page render params Each JavaScript class that runs for a given page (e.g. DisplayArtwork.js, UserProfile.js), on page loa...
Less
Homepage https://lesscss.org/ What is it? An extension of CSS, that allows for functions and other features that normal CSS doesn't have. Why did we choose it? It helps with making our compiled CSS code less repetitive. What do we use it for? Writing De...
snuffleupagus
Homepage https://snuffleupagus.readthedocs.io/ What is it? A PHP module for increasing the security of websites using PHP. Why did we choose it? It's well maintained and does the job well. What do we use it for? Improving security on our webservers.