Skip to content

Instantly share code, notes, and snippets.

View chinghanho's full-sized avatar
💁‍♂️
What's up?

Ching-Han Ho chinghanho

💁‍♂️
What's up?
View GitHub Profile
@chinghanho
chinghanho / README.md
Last active November 12, 2021 09:34
貝殼放大前端工程師徵才 2021 年版本

image

團隊簡介

貝殼放大股份有限公司成立於 2014 年 10 月,是臺灣第一間也是最大的群眾集資顧問公司。至今協助超過 300 個團隊實踐夢想,累積集資金額超過 21 億元。提供的服務包含:初期的專案評估、市場調查、策略設定;製作期的影片拍攝、文案創意、商業設計;行銷面的廣告投放、社群經營、公關操作、客戶服務等,為集資提案者解決過程中的各種問題和需求。貝殼放大輔導的專案集資成功率達 9 成以上,平均單案集資金額超過 400 萬元,其中超過 30 件是破千萬案件。

在 2020 年,《#TaiwanCanHelp|集資刊登紐約時報全版廣告:台灣人寫給世界的一封信》、《魔法阿媽 23 週年電影數位修復集資計畫》、《十二夜 2》動保教育推廣計劃、《Cubiio 2 世界最薄金屬雕刻機|雷射切割機》、《大象杯 2 代》、《SwitchBot 智慧開關機器人》等深具社會意義或新奇有趣的產品集資計劃,皆有貝殼放大的參與。

2017 年參與台北世大運品牌網路行銷亦有出色表現,售票比例創下夏季世大運有史以來最高紀錄。之後陸續提供多家跨國上市櫃企業&公部門品牌顧問或整合行銷服務,合作夥伴包含:美國運通、星展銀行、桂冠、樂天、台灣小米、霹靂布袋戲、台灣櫻花、聲林之王、衛福部、台北市觀傳局⋯⋯。

@chinghanho
chinghanho / eventemitter.js
Created September 16, 2020 06:27 — forked from mudge/eventemitter.js
A very simple EventEmitter in pure JavaScript (suitable for both node.js and browsers).
/* Polyfill indexOf. */
var indexOf;
if (typeof Array.prototype.indexOf === 'function') {
indexOf = function (haystack, needle) {
return haystack.indexOf(needle);
};
} else {
indexOf = function (haystack, needle) {
var i = 0, length = haystack.length, idx = -1, found = false;
@chinghanho
chinghanho / gist:15b8072f99d5883757398931683d72b8
Last active September 17, 2020 00:29
Weekly development breakdown
We couldn’t find that file to show.
@chinghanho
chinghanho / HEY-YOU.md
Created July 13, 2020 17:36 — forked from cowboy/HEY-YOU.md
jQuery Tiny Pub/Sub: A really, really, REALLY tiny pub/sub implementation for jQuery.
@chinghanho
chinghanho / paginated.js
Created October 15, 2019 16:30 — forked from jstott/paginated.js
lodash paginated items
function getPaginatedItems(items, page, pageSize) {
var pg = page || 1,
pgSize = pageSize || 100,
offset = (pg - 1) * pgSize,
pagedItems = _.drop(items, offset).slice(0, pgSize);
return {
page: pg,
pageSize: pgSize,
total: items.length,
total_pages: Math.ceil(items.length / pgSize),
@chinghanho
chinghanho / encoding-video.md
Created June 17, 2019 15:23 — forked from Vestride/encoding-video.md
Encoding video for the web

Encoding Video

Installing

Install FFmpeg with homebrew. You'll need to install it with a couple flags for webm and the AAC audio codec.

brew install ffmpeg --with-libvpx --with-libvorbis --with-fdk-aac --with-opus
const canvasSketch = require('canvas-sketch'); // not yet released tool
const Random = require('./util/random');
const { lerp } = require('./util/math');
// We can force a random seed or a specific string/number
Random.setSeed(Random.getRandomSeed());
const settings = {
pixelsPerInch: 300,
// When exporting, use the seed as the suffix
uniform sampler2D tex; // matched from gst-plugin-gl uniform
const vec4 kappa = vec4(1.0,1.7,0.7,15.0);
// These can be made uniform if they are added to:
// gst/gl/gstglfiltershader.c:363
// gst_gl_shader_set_uniform_1f (filtershader->shader0, "screen_width", width);
// gst_gl_shader_set_uniform_1f (filtershader->shader0, "screen_height", height);
const float screen_width = 1920.0;
@chinghanho
chinghanho / fuzzy_string_match.js
Created May 13, 2018 15:34 — forked from dtjm/fuzzy_string_match.js
Fuzzy string matching function for JavaScript
// Fuzzy matching algorithm
var fuzzyMatch = function(needle, haystack) {
if(needle === "" || haystack === "") return true;
needle = needle.toLowerCase().replace(/ /g, "");
haystack = haystack.toLowerCase();
// All characters in needle must be present in haystack
var j = 0; // haystack position
for(var i = 0; i < needle.length; i++) {
@chinghanho
chinghanho / what-forces-layout.md
Created January 13, 2018 02:13 — forked from paulirish/what-forces-layout.md
What forces layout/reflow. The comprehensive list.

What forces layout / reflow

All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.

Element

Box metrics
  • elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent
  • elem.clientLeft, elem.clientTop, elem.clientWidth, elem.clientHeight
  • elem.getClientRects(), elem.getBoundingClientRect()