Some Videos From CodeMash 2017
Dave Jansen was kind enough to post these, I’ll repost, since they have me 🙂
Part 1
Part 2
Some Videos From CodeMash 2017 Read More »
Dave Jansen was kind enough to post these, I’ll repost, since they have me 🙂
Part 1
Part 2
Some Videos From CodeMash 2017 Read More »
Sorry but all the explanations this far have been bad so I thought I’d simplify it.
In plain Redux without connect you need to manually bind up your store.dispatch to your components as well as subscribe to updates so you can call store.getState(). But your components are suppose to be dumb.
const store = createStore(reducer); const render = () => ReactDOM.render( // turns ReactDOM.render into executable function <Counter value={store.getState()} onIncrement={() => store.dispatch({ type: 'INCREMENT' })} onDecrement={() => store.dispatch({ type: 'DECREMENT' })} />, document.getElementById('root') ); render(); store.subscribe(render);
So rather than manually linking dispatch and subscribing to updates we create two mapping functions, both of which bind the dispatch and the state to props of the ‘connected component’. So in this case all updates to this.store.getState().value are mapped to this.props.value and rather than mapping dispatch directly, we just wrap it and pass it in as a prop.
// create component class ContainerComponent extends React.Component { render() { <PresentationComponent value={this.props.value} onIncrement={this.props.onIncrement} onDecrement={this.props.onDecrement} /> } } // create state mapping function mapStateToProps(state) { return { value: state.value }; }
// add dispatch mapper function mapDispatchToProps(dispatch) { return { onIncrement: function() { dispatch({type:'INCREMENT'}); }, onDecrement : function() { dispatch({type:'DECREMENT'}); } }; } export default connect(mapStateToProps,mapDispatchToProps)(ContainerComponent);
Now when you call your components you can simply call the value passed in like so.
export default class PresentationComponent extends React.Component { render() { return ( <div> <span>{this.props.value}</span> <button onClick={this.props.onIncrement}>Increment</button> <button onClick={this.props.onDecrement}>Decrement</button> </div> ); } }
For more information you can checkout both of these github projects for reference.
Redux’s Connect Method Explained. Read More »
Something needs to happen to fix JavaScript making it more and more like Java is not the answer. Or is it time to move to another language with less ceremony???
JavaScript has become Java, sigh… Read More »
If you’ve ever seen this error:
MinOZW: error while loading shared libraries: libopenzwave.so.1.3: cannot open shared object file: No such file or directory or Error: libopenzwave.so.1.3: cannot open shared object file: No such file or directory
Just type this and it did the trick for me (Ubuntu 14.04).
sudo ldconfig /usr/local/lib64
libopenzwave.so error Read More »
So I’ve been trying to find a simple React example, one that uses a flux implementation that works out of the box in a browser without any compilation or node stuff. I couldn’t find one so I built one. Here it is:Â https://github.com/scottpreston/react-examples.
This requires, RefluxJS, ReactJS, React-Dom and a Browser. You can use node to run it if you want, but that’s not required. Enjoy! (Copy-Paste & ES5 Compatible)
// the action, nothing special var myAction = Reflux.createAction(); // the store, holds state and listens to action. var myStore = Reflux.createStore({ times: 0, init: function () { this.listenTo(myAction, this.actionCallback); }, actionCallback: function () { this.times++; this.trigger(this.times); } }); // the react component, which subscribtes to the store and updates it's state via listen var CountBox = React.createClass({ displayName: 'CountBox', getInitialState: function () { return {count: 0}; }, componentDidMount: function () { var self = this; myStore.listen(function (data) { self.setState({count: data}); }); }, render: function () { return ( // the component in plain old JS no JSX React.createElement('div', {className: "countBox"}, "Count Value = " + this.state.count ) ); } }); ReactDOM.render( React.createElement(CountBox, {count: 0}), document.getElementById('example') ); document.querySelector("#test").addEventListener("click", function() { myAction(null); });
Simple React Example Read More »
I’ve been struggling a bit with openzwave items because its so poorly documented. I’ve finally figured out how to get results from a door sensors with the node package node-openzwave-shared.
If you follow the install script, then just add this event handler below, you can receive updates.
zwave.on('node event', function(nodeid, nodeEvt) { console.log(new Date(), 'node event', nodeid, nodeEvt); });
More live examples coming soon here:Â https://github.com/scottpreston/node-openzwave-examples
And via npm via npm-install node-openzwave-examples
Openzwave Binary Sensors Read More »
This is a “selfie” of my arm prototype. Finding ergonomics more of a challenge, but that’s why you build it!
Building An Exo-Skeleton Read More »
I’ve been searching for a NodeJS server for web sockets, but socket.io, required both the client and server to be run from within node. I wanted to connect to this server via a normal web page using WebSockets from HTML5. Here’s some code, hope you find it useful:
https://github.com/scottpreston/examples
Server Code
var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({port: 3000}); wss.on('connection', function (ws) { ws.on('message', function (message) { console.log('received: %s', message); ws.send(message + "!!!!"); }); });
Client Code
var websocket = new WebSocket('ws://localhost:3000'); websocket.onopen = function (evt) { websocket.send("This Rocks!"); websocket.close(); } websocket.onmessage = function (evt) { console.log('RESPONSE: ' + evt.data); };
Simple WebSocket & NodeJS Server Example Read More »
I was wondering how RequireJS and AMD worked. So I created this snip. It might not be correct but it worked for me.
load('foo', function (foo){ var f = new foo(); f.a = 100; f.b = 200; alert(f.add()); }); function define(name, callback) { modules[name] = callback; } function load(file, callback) { var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true; script.src = file + ".js"; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script); script.onload = function() { callback(modules[file]); }; } var modules = []; // foo.js define("foo", function() { var foo = { a: 1, b: 2, add: function () { return this.a + this.b; } }; return foo; });
Home Grown Script Loader Read More »
I decided to create a blog for my chevelle because there was so many things I was learning about it and thought I should help out some other folks working on their car.
I’ve researched a lot on YouTub and the internet as well as Chevelles.Com, but making a post there about what I learned just didn’t seem right.
To learn more visit: scottschevelle.com.
Created A Chevelle Blog Read More »