The following will need to be known / obtained before getting started:
- Node.js and npm
- command-line (cli) / terminal
- Heroku account
- Heroku CLI installed and setup with your Heroku account
| version: '3.7' | |
| services: | |
| dynamodb-local: | |
| image: amazon/dynamodb-local:latest | |
| container_name: dynamodb-local | |
| ports: | |
| - "8000:8000" | |
| dynamodb-admin: | |
| image: aaronshaf/dynamodb-admin |
The following will need to be known / obtained before getting started:
| const version = 1; | |
| const appPrefix = 'myApp-'; | |
| const staticCacheName = appPrefix + 'static-v' + version; | |
| const imagesCacheName = appPrefix + 'content-imgs'; | |
| var allCaches = [ | |
| staticCacheName, | |
| imagesCacheName | |
| ]; | |
| self.addEventListener('message', event => { |
| function slugify(string) { | |
| const a = 'àáâäæãåāăąçćčđďèéêëēėęěğǵḧîïíīįìıİłḿñńǹňôöòóœøōõőṕŕřßśšşșťțûüùúūǘůűųẃẍÿýžźż·/_,:;' | |
| const b = 'aaaaaaaaaacccddeeeeeeeegghiiiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------' | |
| const p = new RegExp(a.split('').join('|'), 'g') | |
| return string.toString().toLowerCase() | |
| .replace(/\s+/g, '-') // Replace spaces with - | |
| .replace(p, c => b.charAt(a.indexOf(c))) // Replace special characters | |
| .replace(/&/g, '-and-') // Replace & with 'and' | |
| .replace(/[^\w\-]+/g, '') // Remove all non-word characters |
| const listeners = (function listAllEventListeners() { | |
| let elements = []; | |
| const allElements = document.querySelectorAll('*'); | |
| const types = []; | |
| for (let ev in window) { | |
| if (/^on/.test(ev)) types[types.length] = ev; | |
| } | |
| for (let i = 0; i < allElements.length; i++) { | |
| const currentElement = allElements[i]; |
| // original gist | |
| const shuffleArray = arr => arr.sort(() => Math.random() - 0.5); | |
| // fully random by @BetonMAN | |
| const shuffleArray = arr => arr | |
| .map(a => [Math.random(), a]) | |
| .sort((a, b) => a[0] - b[0]) | |
| .map(a => a[1]); | |
| shuffleArray([1, 2, 3]) //[3, 1, 2] |
| class DisableMigrations(object): | |
| def __contains__(self, item): | |
| return True | |
| def __getitem__(self, item): | |
| return "notmigrations" | |
| MIGRATION_MODULES = DisableMigrations() |
| //http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript | |
| Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); |
| /* | |
| No jQuery necessary. | |
| Thanks to Dan's StackOverflow answer for this: | |
| http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport | |
| */ | |
| function isElementInViewport(el) { | |
| var rect = el.getBoundingClientRect(); | |
| return ( | |
| rect.top >= 0 && |
| """ | |
| Originaly code was taken from http://djangosnippets.org/snippets/290/ | |
| But I was made some improvements like: | |
| - print URL from what queries was | |
| - don't show queries from static URLs (MEDIA_URL and STATIC_URL, also for /favicon.ico). | |
| - If DEBUG is False tell to django to not use this middleware | |
| - Remove guessing of terminal width (This breaks the rendered SQL) | |
| - Port to Python 3 and newer versions of Django | |
| """ | |
| from django.conf import settings |