Create empty layer and name it:
default 100% drawable-mdpi/ + 150% drawable-hdpi/ + 200% drawable-xhdpi/ + 300% drawable-xxhdpi/
Reference:
const clientList = document.getElementById('client-list'); | |
const mainVideo = document.getElementById('main-video'); | |
mainVideo.addEventListener('loadedmetadata', () => { | |
const {videoWidth, videoHeight} = mainVideo; | |
const longest = Math.max(videoWidth, videoHeight); | |
const size = 300; | |
mainVideo.width = size * videoWidth / longest; | |
mainVideo.height = size * videoHeight / longest; |
function createSilence(seconds = 1) { | |
const sampleRate = 8000; | |
const numChannels = 1; | |
const bitsPerSample = 8; | |
const blockAlign = numChannels * bitsPerSample / 8; | |
const byteRate = sampleRate * blockAlign; | |
const dataSize = Math.ceil(seconds * sampleRate) * blockAlign; | |
const chunkSize = 36 + dataSize; | |
const byteLength = 8 + chunkSize; |
<!doctype html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>Example of the Authorization Code flow with Spotify</title> | |
<style type="text/css"> | |
#login, #loggedin { | |
display: none; | |
} | |
.text-overflow { |
function circumcircle(point0, point1, point2) { | |
const x1 = point1.x - point0.x; | |
const y1 = point1.y - point0.y; | |
const x2 = point2.x - point0.x; | |
const y2 = point2.y - point0.y; | |
const k = 2 * (x1 * y2 - y1 * x2); | |
if (k === 0) { | |
return null; | |
} |
Create empty layer and name it:
default 100% drawable-mdpi/ + 150% drawable-hdpi/ + 200% drawable-xhdpi/ + 300% drawable-xxhdpi/
Reference:
'use strict'; | |
export default function cubicBezier(x1, y1, x2, y2) { | |
let ax, bx, cx, ay, by, cy; | |
ax = 3 * (x1 - x2) + 1; | |
bx = 3 * x2 - 6 * x1; | |
cx = 3 * x1; | |
ay = 3 * (y1 - y2) + 1; |
'use strict'; | |
/* | |
* Copyright (C) 2008 Apple Inc. All Rights Reserved. | |
* | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions | |
* are met: | |
* 1. Redistributions of source code must retain the above copyright | |
* notice, this list of conditions and the following disclaimer. |
#!/usr/bin/env node | |
getOptions(function(options) { | |
if (!options.path) { | |
console.log('Usage: invpath <path>'); | |
process.exit(0); | |
} | |
var path = options.path.trim(); | |
var type = guess(path); |
#!/usr/bin/env node | |
try { | |
var args = parseArguments(); | |
if (args.help) { | |
console.log('Usage: toremote [--mac] [--windows] [path]'); | |
process.exit(0); | |
} |
function gaussianElimination(matrix) { | |
var pivot, base, col, div, mul, v, n, i, j; | |
n = matrix.length; | |
// Forward Elimination | |
for (pivot = 0; pivot < n - 1; pivot++) { | |
swap(matrix, pivot); | |
base = matrix[pivot]; |