Advanced Search
Search Results
457 total results found
Setting Up
Setting up your website, and the infrastructure needed to make it function.
Implementing Searches / Galleries
Implementing search, gallery results for a given user's profile and similar use cases. A lot of caching and efficiency considerations.
Infrastructure Security
Additional security measures that can be applied to your site infrastructure.
WAF
Web Application Firewall, and specifics of using it with CloudFront + ALB
Bunny
A network services provider, who provide CDN services and related network infrastructure.
Zoho
A productivity and workspace solutions provider, who we use for internal emails.
Build, dependency and code management
"Give me a big enough dependency manager, and I can compile the world" - Archimedes (maybe)
JavaScript
"It's not Java!!"
PHP
Warning: undefined array key "brain" on line 5
Java
"It's not JavaScript!!"
General pitfalls across languages
Whether 2 + 2 = 4 is never as simple as it might seem...
BunnyCDN
Bunny's Content Delivery Network, setup instructions, etc.
Zoho Mail
Zoho's email/inbox service, setup instructions, etc.
CloudFront
Content Delivery Network, also used as an entry point for Deserted Chateau for security purposes
Configuring Apache
The server... it knows too much...
PHP and phpMyAdmin Configuration
Configuring PHP for correct security and session management + configuring phpMyAdmin.
Logging
Deserted Chateau's logging systems and configuration.
TinyMCE Standards & Overrides
Injecting world domination into the Shadow DOM. Please stand by.
HTML / JS / CSS notes
"Once, only god and I knew what this code did. But now..."
2024
"That was a problem for future me, and now I am future me..."
Page loading and AJAX considerations
Some tips on avoiding slow or "janky" page loading.
Lightsail
AWS' webserver solution
sharp
Homepage https://sharp.pixelplumbing.com/ What is it? Sharp is a high-performance library for image transformation in Node.js. Why did we choose it? Performance. Sharp uses the extremely fast libvips library under the hood, making it much faster than most...
Node.js
Homepage https://nodejs.org/en What is it? A runtime environment for running JavaScript as backend code (as opposed to JavaScript's normal use as a frontend scripting language). Why did we choose it? It's efficient, does the job well in the places where w...
flowjs
Homepage https://github.com/flowjs/flow.js What is it? An open-source library for managing file uploads in PHP and JavaScript. Makes a lot of the more tedious tasks easier, like splitting uploads into chunks, managing failed uploads and so forth. Why did w...
BaconQrCode
Homepage https://github.com/Bacon/BaconQrCode What is it? An open-source library for transforming a QR code, in its text form, into an image that can be scanned by a user's phone or other device. Why did we choose it? It's necessary for turning QR codes i...
robthree/twofactorauth
Homepage https://github.com/RobThree/TwoFactorAuth What is it? An open-source library for creating, managing and using QR codes for two-factor authentication. Why did we choose it? It's open-source, well maintained, and does the job. What do we use it fo...
monolog
Homepage https://github.com/Seldaek/monolog What is it? An open-source library that implements a logging framework for PHP, making managing logs and logging without default PHP functions a lot nicer. Why did we choose it? It's easy to use, conforms to sta...
Composer
Homepage https://getcomposer.org/ What is it? A dependency manager for PHP projects. Why did we choose it? It's well supported, and allows for easy integration of extensions and plugins we use. What do we use it for? Managing Deserted Chateau's backend ...
DOMPurify
Homepage https://github.com/cure53/DOMPurify What is it? A JavaScript library for sanitising input to protect against XSS attacks. What do we use it for? Sanitizing user input when displaying it on pages, where it's not being displayed by e.g. a library ...
Setting up BunnyCDN for use with Amazon S3
Step 1: Create an IAM user with permissions to read from the S3 Bucket Create an IAM user which will be used by BunnyCDN to access the buckets it serves from. Make sure this user has permissions to use s3::GetObject on the buckets in question. Example IAM pol...
Setting up Zoho Mail for email inboxes
Zoho Mail is used for email inboxes (as opposed to Amazon SES, which is used for sending automatic emails such as activation emails and the like). Below are the steps to get Zoho Mail working, which are fairly standard for any email provider. Step 1: Verify ...
ZohoMail
Homepage https://www.zoho.com/mail/ What is it? It provides email services, specifically the kind ordinary users are familiar with, where you have an inbox and can manually write emails to send and receive emails. Why did we choose it? Data privacy, and p...
Setting up SES for email sending
Setting up Amazon SES to send (but NOT receive) emails: - Register your domain in Route 53 (or transfer it).- In Amazon SES, create a new verified identity for your domain. Choose Easy DKIM and make sure both 2048-bit RSA and "Publish to Route 53" are enabled...
AWS Overview
Homepage https://aws.amazon.com/ What is it? Amazon Web Services (AWS) is a cloud infrastructure provider. In simple terms, cloud infrastructure providers have a huge range of services that aim to have everything modern website needs in one place. For examp...
Lightsail
Homepage https://aws.amazon.com/lightsail/ What is it? Lightsail is AWS' simplified web server offering. In the past, Amazon EC2 was the only way to run webservers in AWS; it's still possible to do that, but it's advanced and requires a lot of careful confi...
RDS (Relational Database Service)
Homepage https://aws.amazon.com/rds/ What is it? RDS provides database servers. These are used for storing, organising and querying data; on a super small website you could do this on the webserver, but in anything larger than that, you need a dedicated dat...
ElastiCache for Redis
Homepage https://aws.amazon.com/elasticache/ What is it? ElastiCache is AWS' cache server offering. Cache servers are used, as the name implies, for caching: to provide higher performance where data doesn't need to be absolutely up-to-date, or when data mig...
Controlling whether images are displayed or downloaded in new tabs
When you want a user to be able to view an image in a new tab when they right click and select "Open in new tab", instead of downloading the image (or vice versa), requires some modifications to your CDN configuration. I'll write this into the documentation l...
Transcoding: what it is, and why it is important
Definition Transcoding means resizing an image or other media to multiple sizes, so that users can be shown a size that's appropriate to their screen and internet speed, the size at which the media will be displayed on a given page, and so on. It's called tra...
The execution flow for image and video transcoding
In basic form, the way both image and video transcoding is implemented involves using 'serverless' cloud functions. This doesn't mean an eldritch horror creature performs them, but simply that you don't have a dedicated server waiting to run them; you request ...
Options for implementing image and video transcoding
When it comes to transcoding media, you have two main options you can choose from in terms of how to implement it: using a premade solution, or doing it yourself. There are merits to either approach, but don't try the DIY approach unless you know what you're d...