Skip to content

Instantly share code, notes, and snippets.

View zacharyyz's full-sized avatar

Zachary Zhou zacharyyz

View GitHub Profile
@zacharyyz
zacharyyz / Navigation.js
Created October 12, 2018 02:58
React Navigation tabBarOnPress scroll to top
const _scrollTop = navigation => {
if (navigation.isFocused() && navigation.state.index > 0) {
// Pop to root on tab bar pressed if already focused on the tab
navigation.popToTop();
} else {
// Scroll to top if at root of tab
const navigationInRoute = navigation.getChildNavigation(
navigation.state.routes[0].key
);
@zacharyyz
zacharyyz / google.js
Last active July 10, 2019 04:03
Daily Coding Problem: Problem #1
/**
* Good morning! Here's your coding interview problem for today.
*
* This problem was recently asked by Google.
*
* Given a list of numbers and a number k, return whether any two numbers from the list add up to k.
*
* For example, given [10, 15, 3, 7] and k of 17, return true since 10 + 7 is 17.
*
* Bonus: Can you do this in one pass?
@zacharyyz
zacharyyz / uber.js
Created January 19, 2019 05:35
Daily Coding Problem: Problem #2
/**
* Good morning! Here's your coding interview problem for today.
*
* This problem was asked by Uber.
*
* Given an array of integers, return a new array such that each element at index i of the new array is the product of all the numbers in the original array except the one at i.
*
* For example, if our input was [1, 2, 3, 4, 5], the expected output would be [120, 60, 40, 30, 24]. If our input was [3, 2, 1], the expected output would be [2, 3, 6].
*
* Follow-up: what if you can't use division?
@zacharyyz
zacharyyz / .eslintrc.json
Last active February 18, 2021 04:45
ESLint, Airbnb Style Guide & Prettier config
{
"extends": ["airbnb", "prettier"],
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error",
"no-unused-vars": "warn",
"no-console": "off",
"func-names": "off",
"no-process-exit": "off",
"object-shorthand": "off",
@zacharyyz
zacharyyz / husky.md
Last active February 18, 2021 04:43
Husky Pre-commit Hooks

Pre-commit Hooks with Husky

  • Prettier / ESLint
  • TSLint
  • Commit Lint
@zacharyyz
zacharyyz / README.md
Created September 20, 2019 01:58
Kill application running on network port

To list any process listening to the port 8080:

lsof -i:8080

To kill any process listening to the port 8080:

kill $(lsof -t -i:8080)
@zacharyyz
zacharyyz / string-prototype-count.js
Created December 31, 2019 03:01
Count Number of Occurence in a string
String.prototype.count = function(s1) {
return (this.length - this.replace(new RegExp(s1,"g"), '').length) / s1.length;
}
@zacharyyz
zacharyyz / JS-prototype-classes.md
Created January 24, 2020 03:43
Javascript Prototypes and Classes

Understanding Javascript Prototypes

In ES5

function Person(firstName, lastName) {
   this.firstName = firstName;
   this.lastName = lastName;
}
Person.isPerson = function(obj) {
@zacharyyz
zacharyyz / typescript-generics.ts
Created February 5, 2020 06:12
Typescript Advanced Generics
type Book = {
title: string;
genre: string;
publicationYear: number;
};
type Car = {
modelName: string;
type: string;
price: number;
@zacharyyz
zacharyyz / cache.ts
Last active February 18, 2021 04:39
Memoize Function
function hash(anyObject: any): string {
if (Array.isArray(anyObject)) return anyObject.join('-');
if (typeof anyObject === 'object') {
return Object.entries(anyObject).map(e => e).join('-');
}
if (typeof anyObject === 'number' || typeof anyObject === 'boolean') {
return anyObject.toString();
}
return anyObject;
}