Deprecated! Use LiveReload instead.
via xrefresh#17
ruby ws_dir_watcher.rb ~/my_site
- Open chrome://extensions/
- "Developer mode", then press "Load unpacked extension" button
javascript:void(function(){window.addEventListener("keydown",function(e){if(e.metaKey && e.keyCode==82){e.preventDefault();var i,a,s;a=document.getElementsByTagName('link');for(i=0;i<a.length;i++){s=a[i];if(s.rel.toLowerCase().indexOf('stylesheet')>=0 && s.href){var h=s.href.replace(/(&|%5C?)forceReload=d+/,'');s.href=h+(h.indexOf('?')>=0?'&':'?')+'forceReload='+(new Date().valueOf())}}return false}})})(); |
via xrefresh#17
ruby ws_dir_watcher.rb ~/my_site
Lately, with the help of Julien Tournay, I wondered how can we resolve the model problem in the browser which is : there is no ONE true model, and one information can be duplicated in multiple places (eg: form, list, item). Finally, I found out that the real datas are from : the forms > the server > the DOM
. Meteor solved this by keeping this order, and synchronize it all in real time ! That's truly great. But. There a hudge cost in this : you have an heavy fullstack architecture, and you can't have control on the async which is black magic. Also, It's made for realtime, so concurrency apps. With Node.js in one thread, I can't imagine an app with thousands of users at the same time managing as much states properly. There is no holly grail. Just code!
Monitor is a simple HTML/JS based application. It allows requesting JSON apis, with an history. | |
This gist is used to try the demo requests on start. |
The reflow appens as many times as there are frames per seconds. It recalculate all positions that change in order to diplay them. Basically, when you scroll you execute a function where you move things between two reflows. But there are functions that triggers reflows such as jQuery offset, scroll... So there are two things to take care about when you dynamically change objects in javascript to avoid too many reflows:
Todos = | |
# public properties | |
list: OOO.observableArray([]) | |
# public methods | |
counter: OOO.computed ()-> | |
@list.length + " remaining todos" | |
clear: ()-> | |
@list.remove (_)-> _.done |
We'll take the stylus plugin as an exemple.
To make our plugin to work with node, we are going to use Christopher's js-transpiler. It allows to develop a shell script that will work independtly on both node and the jvm. You can call a shell script from the cli like this:
node my-shell.js file.extension '{"flag":true}'
You can use this to debug your processor until it works!
### Keybase proof | |
I hereby claim: | |
* I am warry on github. | |
* I am warry (https://keybase.io/warry) on keybase. | |
* I have a public key whose fingerprint is E875 F7BA 4FB3 FE3A E55B 8E48 91FA 985A B75E 490A | |
To claim this, I am signing this object: |
interface Functor<A>{ | |
flatMap<A,B> (f: (A) => B): Functor<B> | |
} | |
interface Monad<A> extends Functor<A> { | |
bind: (A) => Monad<A> | |
} | |
interface Option<A> extends Monad<A>{ | |
} |