is it a good idea to drink redbull when you are prone to anxiety induced by F1 races
The thing about programming is that your work is never done, because you’ll never be satisfied with the code you wrote last year.
(via thethingaboutprogramming)
Weird how the moment my FP goes to bed/stops talking to me is the same moment my mood goes from 100 to 0…. hm, must be a coincidence….
Dbl Trouble: Fix Falls Short for Backdoor in China-Made Devices
A hidden, backdoor account affects a line of VoIP gateways made by DblTek, researchers from TrustWave found. (Image courtesy of DblTek.) In-brief: A hidden, backdoor account affects a line of VoIP gateways made by DblTek, researchers from TrustWave found. The manufacturers fix, however, may not solve the problem. (more…)
View On WordPress
By Michael La Guardia, Senior Director of Product for Sports & Finance
A couple of weeks ago we introduced the world to our new Yahoo Finance page. As we told you then, our goal is to provide the same quality content our users have come to expect, with cleaner, more modern designs and a focus on increased personalization and community engagement.
At launch, we asked our users to share their thoughts and feedback, so we can continue to iterate and improve our product. We heard from many of you, and one thing is certain: Yahoo Finance inspires deep passion and loyalty. We appreciate how vocal the community has been since the redesign - both with pats on the back, some great suggestions, and some frustrations - and we’ve been listening to all of it. We’ve contacted many of you directly to let you know we’re addressing these concerns, and we’ve made real progress based on your feedback.
To date we have closed a number of major issues, and dozens of smaller ones. Here is a quick list of what’s been done so far:
We’ve addressed many data availability and quality issues.
We added back options data for the S&P VIX ticker.
We added analyst 1 year price targets to the right side of the Key Stats module.
We’re now live updating all standard quote details on the Quote Summary Page.
We are once again showing “Get Quotes for Top 10 Holdings” link for ETF and MutualFund quotes.
We’ve restored our databases and should now have the same level of historical data that we used to have. We also made it easier to manipulate date ranges for historical data.
All recent SEC filings are available for tickers again.
We’ve added “Yield” back to tables for bonds.
We have made adjustments to the way the site is laid out and how you interact with it.
You can now copy data out of our Historical Data pages and paste it correctly into a spreadsheet.
We increased the density of the data table on the Statistics tab.
When you navigate from one Quote Summary Page to another, we now keep you on the same tab. For example, if you were looking at Yahoo’s financials and navigated to the Alibaba Quote page, the new page would open on the Financials tab.
We’ve made many headers clickable for direct access to deeper information.
Clicking on an option strike price now shows all options available at that price.
We restored the link to the Currency Converter tool.
We fixed bugs that you pointed out.
The Recently Viewed list no longer gets wiped out.
You can now select MAX time frame on historical data.
Adding a symbol to multi-quote now no longer wipes out the whole list.
Our products are constantly evolving, and we’ll continue to answer your questions and address your concerns. There is still more to do, including some exciting new features that will be rolling out in the coming months. You’ll be hearing from us regularly as it happens.
In the meantime, keep your suggestions and feedback coming.
this week the senate will vote on whether or not to give the fbi warrantless access to your browsing data. this is extremely dangerous and a violation of privacy. not only would the fbi be able to essentially hack into your computers and internet service, but they might also hack into ones overseas. anything on your computers, they’ll be able to have access to. this is an extremely dangerous power the fbi is trying to get, and it CAN be stopped, but only if you guys are willing to put forth the effort.
how do you stop it? first, get the word out. twitter, tumblr, facebook, just get the word out by either making your own status or sharing this link.
secondly, call your senators. on this website, just enter your phone number and it will give you a script to read off of. it will take you less than 30 seconds, trust me. you can also tweet them, send them emails, etc. all the contact info is on this site here. they will listen. dont know who your senators are? go here and scroll to the bottom. it lists all the senators and who you can call. also, you can tweet at them or send them an email. (all the links in this paragraph lead to the same source)
guys, it is extremely important this bill not get passed. PLEASE reblog this and at least tweet at them? you dont even have to think of anything to type. you literally click the tweet button and it does it for you. please, guys, please.
Be yourself; everyone else is already taken.
Oscar Wilde (via story-dj)
Leave who you were. Love who you are. Look forward to who you will become.
Unknown (via deeplifequotes)
Santorini - Greece (by Rob Oo)
The Publish/Subscribe pattern is one of the most used patterns in software, especially in User Interfaces with JavaScript. It is used whenever 2 pieces of a system need to communicate, but cannot or should not communicate directly. For example, a system receives data from a server at regular intervals that a bunch of components can use (which are added while the system runs):
var Publisher = function() { var self = { subscribers: [] }; self.subscribe = function(callback) { self.subscribers.push(callback); }; self.publish = function(data) { self.subscribers.forEach(function(callback) { callback(data); }); }; return self; } var publisher = Publisher(); // Simulate a set of data being returned over time var serverStream = function(callback) { Array.apply(null, { length: 5 }).forEach(function(unused, index) { var ms = index * 500 setTimeout(function() { callback('data-piece: ' + ms + ' ms'); }, ms); }); }; serverStream(publisher.publish); // Simulate components being registered over time. publisher.subscribe(function(data) { console.info('subscribe from part 1', data); }); setTimeout(function() { publisher.subscribe(function(data) { console.info('subscribe from part 2', data); }); }, 1000) // subscribe from part 1 data-piece: 0 ms // subscribe from part 1 data-piece: 500 ms // subscribe from part 1 data-piece: 1000 ms // subscribe from part 1 data-piece: 1500 ms // subscribe from part 2 data-piece: 1500 ms // subscribe from part 1 data-piece: 2000 ms // subscribe from part 2 data-piece: 2000 ms
The problem is that same pattern with almost identical code will be written over and over again in the same project. So instead of creating a publisher and subscriber with multiple message types each time this pattern needs to be used, it is simpler to just use new instances of the publisher object each time:
var messageSet1 = function(callback) { Array.apply(null, { length: 3 }).forEach(function(unused, index) { setTimeout(function() { callback('Hello ' + index); }, index * 500); }); }; var messageSet2 = function(callback) { Array.apply(null, { length: 3 }).forEach(function(unused, index) { setTimeout(function() { callback('World ' + index); }, index * 500); }); }; var MessageBox = function() { var self = { publishers: [] }; self.streams = function(streams) { self.publishers = []; streams.forEach(function(stream, index) { self.publishers.push(Publisher()); stream(self.publishers[index].publish); }); }; self.subscribeTo = function(index, callback) { return self.publishers[index].subscribe(callback); } return self; }; var messageBox = MessageBox(); // Use a trivial example to preserve clarity messageBox.streams([messageSet1, messageSet2]); messageBox.subscribeTo(0, function(data) { console.info('subscribe from part 1B', data); }); messageBox.subscribeTo(1, function(data) { console.info('subscribe from part 2B', data); }); // subscribe from part 1B Hello 0 // subscribe from part 2B World 0 // subscribe from part 1B Hello 1 // subscribe from part 2B World 1 // subscribe from part 1B Hello 2 // subscribe from part 2B World 2
A non-index based naming scheme could be introduced by passing more data into the streams call, but I wanted to keep the example as minimal as possible.
Github Location: https://github.com/Jacob-Friesen/obscurejs/blob/master/2016/publishSubscribeAutomation.js