(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
function getWatchers(root) { | |
root = angular.element(root || document.documentElement); | |
var watcherCount = 0; | |
function getElemWatchers(element) { | |
var isolateWatchers = getWatchersFromScope(element.data().$isolateScope); | |
var scopeWatchers = getWatchersFromScope(element.data().$scope); | |
var watchers = scopeWatchers.concat(isolateWatchers); | |
angular.forEach(element.children(), function (childElement) { | |
watchers = watchers.concat(getElemWatchers(angular.element(childElement))); |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
/* | |
* Flyspeck is Dependency Injection Container. | |
* | |
* Copyright (c) 2014 Anton Medvedev | |
* | |
* Permission is hereby granted, free of charge, to any person obtaining a copy | |
* of this software and associated documentation files (the "Software"), to deal | |
* in the Software without restriction, including without limitation the rights | |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
* copies of the Software, and to permit persons to whom the Software is furnished |
First, go to stackoverflow.com then define this in your Javascript console:
var hackMeSomeUnicoins = function(myFkey) {
console.log("Ok, let's hack you some shiny unicoins! <3 /dev/alias (www.devalias.net)")
console.log("The powers that be say you can only mine a rock every 10sec, so we do it every 11sec to be sure.")
window.setInterval(function(){
$.get( "http://stackoverflow.com/unicoin/rock", function( data ) {
var rockId = data.rock;
$.post( "http://stackoverflow.com/unicoin/mine?rock=" + rockId, { fkey: myFkey })
.done(function( data ) {
# http://ruby-doc.org/stdlib-2.0.0/libdoc/open-uri/rdoc/OpenURI.html | |
require 'open-uri' | |
# https://github.com/flori/json | |
require 'json' | |
# http://stackoverflow.com/questions/9008847/what-is-difference-between-p-and-pp | |
require 'pp' | |
# Construct the URL we'll be calling | |
request_uri = 'http://localhost:3000/users.json' | |
request_query = '' |
var ngAppElem = angular.element(document.querySelector('[ng-app]') || document); | |
window.$injector = ngAppElem.injector(); | |
window.inject = $injector.invoke; | |
window.$rootScope = ngAppElem.scope(); | |
// getService('auth') will create a variable `auth` assigned to the service `auth`. | |
var getService = serviceName => | |
inject([serviceName, s => window[serviceName] = s]); |
javascript:( function() { | |
console.group( 'Performance Information for all entries of ' + window.location.href ); | |
console.log( '\n-> Duration is displayed in ms\n ' ) | |
var entries = window.performance.getEntries(); | |
entries = entries.sort( function( a, b ) { | |
return b.duration - a.duration; | |
} ); | |
This took me several hours to figure out so I figured it was worth writing down.
Hopefully this step by step can be used to get node running locally without a lot of problems that are commonly ran into.
Update July 7th 2014 - Updated most of the versions including not pointing to the heartbleed version of OpenSSL
Custom middleware is a legacy option, since most times you just want to use policies.
HOWEVER! There are times you want to use sails for quick/dirty things you would normally use express for (but you already have sails around, w/e). More pertinently, if you want middleware to run before the static files from your assets
folder are served, policies won't let you do that.
// Put this in `config/express.js`
var nodeUtil = require("util"), | |
PFParser = require("pdf2json") | |
; | |
var pdfParser = new PFParser(); | |
pdfParser.on("pdfParser_dataReady", function(data) { | |
console.log('here'); | |
console.log(data); | |
console.log(data.data.Pages[0]); |