Skip to content

Instantly share code, notes, and snippets.

{
"structure": {
"copy": [
{
"from": "/Users/eric/Code/Shared/wardrobe/core/bower.json",
"to": "bower.json"
},
{
"from": "/Users/eric/Code/Shared/wardrobe/core/package.json",
"to": "package.json"
// Bootstrap is used for visual effects
/*
HTML
<ng-upload ng-model="file"></ng-upload>
<ng-upload ng-model="Object.file"></ng-upload>
*/
var directives = {
ngUpload: function () {
/** @jsx React.DOM */
'use strict';
var React = require('react');
var AnimatableComponent = React.createClass({
propTypes: {
tag: React.PropTypes.component.isRequired,

The introduction to Reactive Programming you've been missing

(by @andrestaltz)

So you're curious in learning this new thing called (Functional) Reactive Programming (FRP).

Learning it is hard, even harder by the lack of good material. When I started, I tried looking for tutorials. I found only a handful of practical guides, but they just scratched the surface and never tackled the challenge of building the whole architecture around it. Library documentations often don't help when you're trying to understand some function. I mean, honestly, look at this:

Rx.Observable.prototype.flatMapLatest(selector, [thisArg])

Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.

import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import com.cybozu.labs.langdetect.Detector;
import com.cybozu.labs.langdetect.DetectorFactory;
import com.cybozu.labs.langdetect.LangDetectException;
import com.twitter.hbc.ClientBuilder;
import com.twitter.hbc.core.Client;
import com.twitter.hbc.core.Constants;
var subscription = new Rx.CompositeDisposable();
var observable = Rx.Observable.fromSocket('ws://localhost:8080', 'stock-protocol');
subscription.add(
observable.selectMany(function (value) {
var data = JSON.parse(value.data);
return Rx.Observable.fromArray(data.data);
}).groupBy(function (quote) {
return quote.symbol;
var Rx = require('./rx.node')
, twitter = require('ntwitter')
, credentials = require('./credentials')
, io = require('socket.io').listen(80);
var customBind = function (self, method) {
return function () {
return self[method].apply(self, arguments);
};
};
(function () {
var makeCallback = function(eventType, observer) {
if (eventType === 'value') {
return function(snap) {
observer.onNext(snap);
};
} else {
return function(snap, prevName) {
// Wrap into an object, since we can only pass one argument through.
observer.onNext({snapshot: snap, prevName: prevName});
@xgrommx
xgrommx / gulp-ify
Created August 14, 2014 19:52 — forked from RnbWd/gulp-ify
gulp.task('gulpify', function() {
gulp.src("./src/js/**")
.pipe($.plumber())
//using vinyl-transform lets us use any transforms available to browserify
.pipe(transform(reactify))
.on('error', $.util.log)
.pipe($.ext.replace('.js'))
// converting .jsx/coffee/etc. into a temp folder prior to 'bundling' reduces additional boilerplate later-on
.pipe(gulp.dest('./temp'))
.pipe($.filter('init.js'))
directives.uploadDrop = function (){
return {
require: '?ngModel',
restrict: 'E',
template: '<div class="input-file" style="width: 150px;"><span class="glyphicon glyphicon-picture"></span></div>',
link: function (scope, element, attrs, ngModel){
if (!ngModel) return;
element.bind('drop', function (event) {