Skip to content

Instantly share code, notes, and snippets.

View CezaryDanielNowak's full-sized avatar

Cezary Nowak CezaryDanielNowak

View GitHub Profile
/**
* How to use:
* In the render function, include
*
* window.whyRerender && window.whyRerender(this.props, this.state);
*/
window.whyRerender = (props, state) => {
if (window.whyRerender.prevProps) {
const propsDiff = Object.keys(props).map((propName) => {
// gets device orientation.
// possible values: "landscape" | "portrait" | "" (can't detect)
const getCSSDeviceOrientation = () => {
function mediaQuery(orientation) {
return `(orientation: ${orientation})`;
}
const orientations = ['landscape', 'portrait'];
for (let orientation of orientations) {
@CezaryDanielNowak
CezaryDanielNowak / FaceDetector polyfill with jeelizFaceFilter.js
Created January 26, 2023 11:47
I'm getting an error: ERROR in ContextFF: WebGL1 and 2 are not enabled "GL_INCOMPATIBLE". But I might want to get back to this code in the future.
class _FaceDetector {
initPerformed = false;
loadPerformed = false;
constructor() {
const canvas = document.createElement('canvas');
this.canvas = canvas;
this.ctx = canvas.getContext('2d');
canvas.style.visibility = 'hidden';
@CezaryDanielNowak
CezaryDanielNowak / isBarcodeDetectorWorking
Created January 10, 2023 13:41
/** * BarcodeDetector has an "Experimental" status. It sometimes doesn't work for no reason. * * @param {string} barcodeType only qr_code and pdf417 are supported * @return {boolean} (async) If BarcodeDetector works or not */
/**
* BarcodeDetector has an "Experimental" status. It sometimes doesn't work for no reason.
*
* @param {string} barcodeType only qr_code and pdf417 are supported
* @return {boolean} (async) If BarcodeDetector works or not
*/
const isBarcodeDetectorWorking = (barcodeType) => {
return new Promise((resolve, reject) => {
if (typeof BarcodeDetector === 'undefined') return reject('UNSUPPORTED');
<?php
/*
Place this file in writable directory. Each incoming request will be saved as a file.
Sample file name:
callback_POST_08-17-2022 13.42.05.780400.txt
*/
$now = DateTime::createFromFormat('U.u', microtime(true));
$file_name = 'callback_' . $_SERVER['REQUEST_METHOD'] . '_' . $now->format("m-d-Y H.i.s.u").'.txt';
- Why subscriptions of apps purchased in App Store can be cancelled only in "Music"?
- Why navigating between maximized window and non-maximized windows is so hard?
- Why Finder can't be maximized?
- Why file paths are hidden?
- Why "open file"/"save file" dialog suck so much?
- Why transfer speed is hidden when moving file between location A and B ?
/*
* I had to print a lot of json data on a printer so I wanted to make it
* as compact as possible.
*
* This snippet changes text JSON into compact form.
*
* input:
* `{
* "width": 1080,
* "height": 1920,
/*
* Some JS objects like InputDeviceInfo or GeolocationCoordinates are impossible to clone easly.
* `Object.keys(obj)` returns `{}`
* `JSON.stringify(obj)` returns `{}`
*
* with following functions you're able to clone object properties to the simple object.
*/
function cloneGeolocationCoordinates(instance) {
return Object.keys(instance.constructor.prototype).reduce((acc, key) => {
// Extra filters for https://github.com/kig/canvasfilters.git
Filters.scaleUp = function (imageData, scale = 2) {
const sourceWidth = imageData.width;
const sourceHeight = imageData.height;
const targetWidth = parseInt(sourceWidth * scale, 10);
const targetHeight = parseInt(sourceHeight * scale, 10);
/*
* This code helps with logging image processed in the worker.
*
* Simple visual explanation for image transformation.
*/
// WORKER:
postMessage({
imageData,
});