Skip to content

Instantly share code, notes, and snippets.

💭
probably partying...

Chris Le chrisle

💭
probably partying...
View GitHub Profile
@chrisle
chrisle / gist:2252209
Created Mar 30, 2012
CURL as GoogleBot 2.1
View gist:2252209
curl --user-agent "Googlebot/2.1 (+http://www.google.com/bot.html)" -v $@
@chrisle
chrisle / hashes.js
Last active May 6, 2020
Compute hashes for Google Docs
View hashes.js
function computeMD5(str) {
var digest = Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, str);
return Utilities.base64Encode(digest);
}
function computeSHA1(str) {
var digest = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_1, str);
return Utilities.base64Encode(digest);
}
@chrisle
chrisle / simple_google_analytics.rb
Last active Apr 12, 2020
My simple Google Analytics API export API. Exports GA data as an array of flattened hashes with a SHA1 signature. No DSL, no sugar.
View simple_google_analytics.rb
require 'digest'
# = simple_google_analytics.rb
#
# Chris Le <chris at iamchrisle dot com>
#
# This module is an wrapper to export data from Google Analytics as a flattened
# hash suitable for database storage. It does not require any other gems other
# than 'oauth'. I used this simply to get metrics and directly store them in
# a database.
View answer.js
/**
* To answer @AnnieCushing's question on Twitter:
* https://twitter.com/AnnieCushing/status/806518054368739329
*
* Author: Chris Le - @iamchrisle
*
* There's a few ways to do this.
* - Like @SimoAhava suggested, server redirects that strips parameters if you
* have the ability to control the server.
@chrisle
chrisle / gist:4206925
Created Dec 4, 2012
newspaper to seomoz
View gist:4206925
require 'mechanize'
require 'linkscape'
agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
# Put your state here
state = "PA"
page = agent.get "http://newsmap.mhlakhani.com/data/US-#{state}"
@chrisle
chrisle / scraper.js
Last active Jul 2, 2016
Scrape Billboard Hot 100 and create an array of objects
View scraper.js
/**
* Install x-ray with: 'npm install x-ray'
* (Also see: https://github.com/lapwinglabs/x-ray)
*
* Run with: node scraper.js
*
* Result:
*
* [ { rankCurrent: '1',
* rankLast: 'Last Week: 1',
@chrisle
chrisle / gist:8588282
Created Jan 23, 2014
TLDR - Google Analytics
View gist:8588282
/**
* The very simplest explanation of how GA works in JavaScript is that it's simply an array.
* The GA tag (not the new Universal tag) looks similar to this:
*/
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxxxx-y']);
_gaq.push(['_trackPageview']);
(function () {
@chrisle
chrisle / gist:7055839
Last active Dec 25, 2015
Should an API allow for polling or instead push results? What do you prefer?
View gist:7055839

Question

If http://localhost/api/do_job kicks off a job on the backend that will take 45-120 seconds to complete, what should the API return?

POLL) Return 202 Accepted + a URL polling end point.

Eg:

202 Accepted
{ "job_id": 103859195, "poll": "http://localhost/poll/103859195", "complete": "0%" }
@chrisle
chrisle / gist:6368604
Created Aug 28, 2013
Humanize an underscored or camel cased string in JavaScript
View gist:6368604
/**
* Humanize a string. Turns underscored or camel cased string into human readable strings
*
* @example
* TextUtils.humanize( 'keyword_category' ); // => "Keyword Category"
* TextUtils.humanize( 'keywordCategory' ); // => "Keyword Category"
*
* @return {String}
*/
humanize: function(str) {
View gist:5774203
class Puzzle
attr_accessor :field
def initialize
self.field = true
end
def run
puts field.inspect # => true
You can’t perform that action at this time.