Skip to content

Instantly share code, notes, and snippets.

Avatar

Rodney Rehm rodneyrehm

View GitHub Profile
@rodneyrehm
rodneyrehm / README.md
Last active Jan 6, 2020
ExpoKit: building non-OTA standalones
View README.md

ExpoKit: building non-OTA standalones

This gist is based on Hosting An App on Your Servers in order to create standalone applications that contain all bundles and assets (that have not been expo published) and do not download over-the-air updates (OTA).

We needed APKs and IPAs for integration/end-to-end testing that would not pull the latest OTA updates, but rather run the code they were built with. We didn't want to expo publish countless intermediate versions. We needed the ability to build different versions concurrently without one build interfering with the other.

Usage

change the values of manifestBaseUrl and releaseChannel in post-expo-export.ts to suit your needs

@rodneyrehm
rodneyrehm / gradlew-output.txt
Created Dec 3, 2019
ExpoKit @sentry/react-native not uploading Debug Information Files
View gradlew-output.txt
➜ ./gradlew bundleRelease --console plain +? ✗ [git:build/daedalus]
Parallel execution with configuration on demand is an incubating feature.
> Configure project :@sentry_react-native
WARNING: The specified Android SDK Build Tools version (28.0.0) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle Plugin 3.3.2.
Android SDK Build Tools 28.0.3 will be used.
To suppress this warning, remove "buildToolsVersion '28.0.0'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.
> Configure project :app
AWS Device Farm Plugin version 1.3
@rodneyrehm
rodneyrehm / sentry-clean-debug-information-files.js
Created Jul 17, 2019
Sentry Cleanup: Debug Information Files
View sentry-clean-debug-information-files.js
const axios = require('axios')
const LinkHeader = require('http-link-header')
const nextPage = (header) => {
const link = LinkHeader.parse(header)
const [ next ] = link.get('rel', 'next')
return next && next.results === 'true' ? next.uri : null
}
@rodneyrehm
rodneyrehm / README.md
Last active Jan 30, 2019
execute batches of HTTP requests in parallel
View README.md

Parallel HTTP request execution

  • Takes values from a text file and converts them into HTTP requests (against an echo service with a request execution time of 150ms - 200ms).
  • splits the text file into chunks of $CHUNKS number of items which get executed in sequence by a single curl invocation that reuses the connection (reducing TCP and TLS overhead)
  • $PARALLEL number of chunks are executed concurrently by sem (of GNU parallel)

Example

The demo generates 100 requests. Each request's response is stored to disk (because why not).

@rodneyrehm
rodneyrehm / browser.js
Last active Aug 14, 2018
Looking to find low powered devices to disable animations and stuff
View browser.js
// https://github.com/bestiejs/platform.js
import platform from 'platform'
export const OS = (platform.os.family || '').toLowerCase()
export const ANDROID = OS === 'android'
export const IOS = OS === 'ios'
export const VERSION = parseFloat(platform.version)
export const MAJOR_VERSION = Math.floor(VERSION)
View README.md

How best to encapsulate data retrieval and conversion stuff as shown in the gustav.mixin.js demo, so that it can be easily used in multiple components like gustav.vue?

The problem here is that from the component's perspective we're only interested in providing ottoId and receiving gustav. All other properties from data, computed, methods are at best irrelevant to the component - at worst may cause conflicts.

Is there any sane way I can stay in the "how a mixin would do it" kind of code, but achieve only the export of computed.gustav, watch.ottoId and created?

@rodneyrehm
rodneyrehm / polyfill-intl.js
Created Aug 21, 2017
Webpack: load Intl polyfill with languages
View polyfill-intl.js
const needsPolyfill = !window.Intl
/* eslint-disable import/no-webpack-loader-syntax */
const intl = require('bundle-loader?lazy&name=intl!intl')
/* eslint-enable import/no-webpack-loader-syntax */
const polyfilled = needsPolyfill && new Promise(resolve => {
intl(resolve)
})
@rodneyrehm
rodneyrehm / selenium-ondemand-testinfo.js
Created Jun 19, 2017
Sentry Raven injected test metadata
View selenium-ondemand-testinfo.js
function addSeleniumTags () {
if (!window._SELENIUM_TEST_BUILD) {
return
}
Raven.setTagsContext({
'test.url': window._SELENIUM_BUILD_URL,
'test.job': window._SELENIUM_TEST_JOB,
'test.build': window._SELENIUM_TEST_BUILD,
'test.name': window._SELENIUM_TEST_NAME,
@rodneyrehm
rodneyrehm / output.txt
Last active Jun 12, 2017
vue-i18n - running the unit tests
View output.txt
os: macOS 10.12.5
node: 8.1.0
npm: 5.0.3
-----
➜ npm run test:unit
> vue-i18n@7.0.2 test:unit /Users/rodneyrehm/projects/test.dev/htdocs/vue-i18n
> BABEL_ENV=test karma start config/karma.unit.conf.js
@rodneyrehm
rodneyrehm / system-font.scss
Created Jun 2, 2017
Using system fonts on the web
View system-font.scss
html {
// 12px base unit (others usually make this 10px to simplify their calculations)
font-size: 75%;
}
body {
// will be 16px default font-size
font-size: 1.33rem;
line-height: 1.2;
// See: https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/
You can’t perform that action at this time.