Skip to content

Instantly share code, notes, and snippets.

View Zertz's full-sized avatar
🦒
Typing...

Pier-Luc Gendreau Zertz

🦒
Typing...
View GitHub Profile
@Zertz
Zertz / useGreetings.js
Last active September 19, 2021 12:44
useMemo vs. useState
function useGreetings(language) {
const [greetings, setGreetings] = useState()
// 1. language changes (render)
// 2. useEffect triggers (post-render)
// 3. greetings are updated (render)
useEffect(() => {
switch (language) {
case "fr": {
setGreetings(["salut", "bonjour"])
@Zertz
Zertz / webcrypto.js
Created October 8, 2018 03:20
Generate an API key with the Web Crypto API
const apiKey = (async () => {
const buffer = await crypto.subtle.digest(
"SHA-256",
new TextEncoder("utf-8").encode(
window.crypto.getRandomValues(new Uint8Array(32))
)
);
return Array.prototype.map
.call(new Uint8Array(buf), x => ("00" + x.toString(16)).slice(-2))
@Zertz
Zertz / cloudflare-worker-geolocation.js
Last active April 14, 2021 19:40
Geolocation with Cloudflare Workers
addEventListener("fetch", event => {
const response = new Response(`{"country":"${event.request.headers.get("cf-ipcountry")}"}`, {
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json"
}
})
event.respondWith(response)
})
@Zertz
Zertz / font-worker.js
Last active September 22, 2018 14:28
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const response = await fetch(
request.url.replace("https://fonts.jirafe.io", "https://fonts.googleapis.com"),
request
);