Advanced Search
Search Results
457 total results found
platform
Homepage https://github.com/bestiejs/platform.js What is it? A JavaScript library for detecting a user's browser version and operating system. Why did we choose it? It works easily in-browser without having any dependencies. What do we use it for? Colle...
Rate Limits
For user actions that have a rate limit, like reblogging a given artwork, a rolling rate limit is stored in Redis for one or more duration periods. Key structures The structure for each rate limit's Redis key is kept in the configuration_rate_limits_groups d...
The purpose of this guide
There is one main reason I have written this guide: Understanding the difficulty of website development Given the ubiquitous presence of website builders, content management systems and other ready-built software, it can seem like building a sustainable art ...
Preventing Bot Activity
Other than user-submitted content, the other type of content that you will have to deal with is bot-generated content, like comments on user posts and automatic submissions. Distinguishing bots from humans is a difficult task, no matter what system you use. I...
Implementing Rolling Rate Limits
Redis sorted sets are different from other collection types, in that they are a collection of unique string values called "members", which each have an associated "score"; the score is similar to a key, and the member is similar to a value, but they work a bit...
Caching Pitfalls
The nature of caching anything is that it is a tradeoff: in return for having quick access to some data without having to recalculate it, the data returned is not up-to-date. This presents a problem - being careful in exactly what data you cache, particularly...
September 9
Hi all, hope you're doing well. My health is awful atm even compared to usual, so I've been much slower than I'd like. I've been focusing on improving the performance of the more complex database procedures, as that will be a crucial factor in making the site...
Common items to cache client-side
Naturally, what you will want to cache in a client's browser depends a lot on your use case, but some prominent examples are below. User site preferences Settings that a user has selected when browsing your site, like their selected visual theme, are well wo...
VPC: security groups and endpoints
Default VPC security group changes Modify the security group to allow TCP ports 3306 and 6379 (for MariaDB and Redis) to be accessed by each of your Lightsail servers. Note: for live environments or any other environment using a load balancer, you will want ...
IAM: users, roles and policies
IAM Policies Deserted-Chateau-Test-Lambda-Admin-Access { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "lambda:CreateFunction", ...
S3: buckets, access policies and CORS policies
deserted-chateau-test-external-site-assets Bucket Policy { "Version": "2012-10-17", "Id": "Policy1477065434531", "Statement": [ { "Sid": "Stmt1477065432829", "Effect": "Allow", "Principal": { ...
CloudFront & WAF: distributions and WAF rule configuration
Lambda: functions, layers and important configuration settings
See the codebase for a list of functions and layers to upload to Lambda, under the /lib/aws/ folder.
SES: Verified identities, DKIM/DMARC, and SNS/SQS setup
Verified Entities Add desertedchateau.com as a verified domain entity. See the SES chapter for configuring DKIM, DMARC and a custom mail from domain, alongside setting up a configuration set to publish to SNS/SQS in the event of failed emails.
RDS and ElastiCache: setup and configuration
DynamoDB: tables
Systems Manager: Parameter Store credentials
/Deserted-Chateau/Credentials/BunnyAccountCredentials {"api_key": "<bunny API key>"} /Deserted-Chateau/Credentials/BunnyCDNCredentials { "cdn_security_key": "<bunny CDN security key>" } /Deserted-Chateau/Credentials/BunnyStreamCredentials { "api_key": "<b...
The GetGalleryForDisplay procedure
The usp_galleries_GetGalleryForDisplay procedure is Deserted Chateau's most complex SQL procedure, owing to the amount of information that needs to be queried. There are a lot of performance optimisations in this procedure, which are explained both in the comm...
September 24
Hi all, hope you're doing well. My health is particularly awful at the moment, so I have been struggling to get much of anything done in the last week or so, but updates are below as usual. Gallery SQL: performance improvements After doing the performance t...
Configuration Structure
Most, though not all, of Deserted Chateau's configuration items that are relevant to the webservers are held in three database tables: configuration This is the main configuration table. This table holds configuration items for a variety of different "module...