2010년 5월 19일 수요일

Mayfield Fund Leads $8 Million Round Of Funding For Cloud9 Analytics


Cloud9 Analytics, a provider of SaaS business analytics for line-of-business managers, today announced it has closed its Series C financing for $8 million. The financing round was led by Mayfield Fund, with participation from existing investors InterWest Partners and Leapfrog Ventures. This brings its total in funding to $21.6 million.

Rajeev Batra of Mayfield Fund joins the Cloud9 Analytics Board of Directors.

The financing will be used to accelerate development of Cloud9 Pipeline Accelerator, the company’s flagship service, build out its roadmap for performance management applications for the front office and extend its cloud-based data management automation platform to enable third-party application development.

The company has issued a separate press release in which it outlines its strategy going forward.

(Source: press release)

http://www.techcrunchit.com/2010/05/18/cloud9-analytics-funding/

Zendesk’s SaaS Help Desk System Now Being Used By Over 5,000 Businesses

Zendesk, a SaaS help desk solution, has reached a milestone: the company now has more than 5,000 customers using its platform. Launched in 2008, Zendeskoffers a web-based, SaaS-delivered help desk / support ticketing solution that gives companies a simple, cost-effective way to manage incoming support requests from end customers.

Over the past two years, the startup has managed to gain an impressive client list, including Groupon, Twitter, Yammer, Sony Music, TriptIt, Lonely Planet, Foursquare and MSNBC. And Zendesk is adding around 20 new customers per day, says CEO Mikkel Svane. In total, Zendesk’s customers have dealt with over 10 million end users.

Zendesk is also rolling out new and improved community support and knowledge base features that will make it easier for users to create online communities where their customers can chime in with feedback, suggestions, and helpful information about the company or product. Zendesk’s price ranges from $9 to $59 per support agent per month, after a one-month free trial.

The company just raised $6 million in series B funding from Benchmark Capital and Charles River Ventures.

http://www.techcrunchit.com/2010/05/18/zendesks-saas-help-desk-system-now-being-used-by-over-5000-businesses/

LG Ally (Verizon) - Full Review

http://www.youtube.com/watch?v=L1BwQtTEMvI&feature=player_embedded

Android 2.1 finally reaches 1/3 of Android handsets, just as 2.2 looms nearby

For all of the folks who had to wait — and for all of those still left waiting — for Android 2.1 to be ported, smashed, tweaked, and OTA’d onto their handsets, the last few months may have seemed pretty unbearable. If it makes you feel any better, there’s a oh-so-dim light at the end of the tunnel: as of yesterday evening, more Android handsets are running on 2.1 than on any other version of the platform.

Alas, this news comes just as Google’s I/O conference is about to blow through town — and unless something strange happens before next week, everyone’s expecting I/O to serve as the launchpad for the next version that everyone has to wait for and complain about: build 2.2.

On the upside, the ol’ rumormill says that one of Google’s goals with 2.2 is doing away with much of the fragmentation issues of the platform. What exactly that entails, however, is still a mystery. Wrapped inside of a riddle. Inside of an enigma. Inside of a burrito.

[Via AndroidPolice]

http://www.mobilecrunch.com/2010/05/18/android-2-1-finally-reaches-13-of-android-handsets-just-as-2-2-looms-nearby/

Apples releases iPhone OS 4 Beta 4 SDK to developers

It’s that time again, folks: with another two weeks behind us, Apple has released yet another Beta rendition of iPhone OS 4. Like those that came before it, this fourth Beta release is signed and sealed for developers only — in other words, if you’re not a dev, you’ll have to sit tight for a little while longer.

If Apple’s development cycle for iPhone OS 4 is staying true to major releases that came before it, we should be quickly approaching the final build. Apple rarely exceeds 6 or 7 Beta releases — so chances are, we’ll see OS 4 ship out to everyone within the next month or so.

Folks much smarter than yours truly are hard at work tearing apart this latest Beta for all the hidden morsels, so we’ll let you know if we hear anything.

http://www.mobilecrunch.com/2010/05/18/apples-releases-iphone-os-4-beta-4-sdk-to-developers/

 

Layar facilitates Disney AR campaign

In a push for the motion picture, Prince of Persia: The Sands of Time, Disney has employed the augmented reality app Layar to produce the World’s first AR outdoor advertizing campaign. The promotional film posters seen below feature instructions for Android and iPhone users: launch the app when near a poster with GPS on. The user’s location is then compared with a database of ad locations. If the person is in close proximity to a poster, a character from the movie named Tamina will appear on the phone, offering up an orientation. Play the game, answer three questions correctly, and you’ll get 50 movie points that can be redeemed at movieminutes.com. Pretty cool, eh?

Maybe some of the early concerns about location-based marketing – calls being interrupted with a BOGO offer on a Big Mac at the Micky D’s you’re walking past, or your web browser being obscured by a virtual coupon pop-up discounting the gum sitting next to you in line while you’re waiting to pay for groceries – are a bit extreme. Perhaps we’ll see tamer, slightly less invasive versions of those scenarios. But for the moment it looks like we’re entering into a very interesting period with Augmented reality. This seems to me like a nice way to kill time while waiting for the bus.

WaltDisney-TABworldmedia2.preview


Via Ads of the World by way of Noah Kravitz

 

http://www.droiddog.com/android-blog/2010/05/layar-facilitates-disney-ar-campaign/

iPhone Dev Sessions: Using Singletons

Managing an application’s state can sometimes require complex interaction with persistence and messaging with various resources, or it can be as simple as keeping track of a counter from one view to the next.

Two popular techniques to pass references to objects from one view to the next are to create properties in the Application Delegate, or to continue to pass references from one view to the next like a relay race passes a baton from one runner to the next using a series of carefully placed update methods making for an allocation nightmare and increase the opportunities for memory leaks or the hard to track down crashes. Sometimes this need in programming is referred to as implementing Global Variables. There is also a well established design pattern that can assist with this need as well, it is called the Singleton Pattern.

Singleton Pattern

The Singleton Pattern is a derivative of the Factory Pattern that ensures that one and only one instance of an Object can ever exist. By creating one or more implementations of the Singleton Pattern within a given application, the concept of ‘global variables’ can better be managed through tighter control. This allows for what is called lazy instantiation. If you do not need the variable based on what is going on in the application, then do not ask for or create an instance of one.  In Objective-C, Apple has outlined the recommended technique for implementing the singleton pattern.

Objective-C Singleton Pattern

Objective-C Singleton Pattern

static MySingletonClass *sharedGizmoManager = nil;                                                                                                                                                                                                                                                                                                                                                                                            

But you may find that the following is all that is necessary:

Singleton.h

#import <Foundation/Foundation.h> @interface Singleton : NSObject { } + (Singleton*) retrieveSingleton; @end

Singleton.m

#import "Singleton.h" @implementation Singleton static Singleton *sharedSingleton = nil; + (Singleton*) retrieveSingleton { @synchronized(self) { if (sharedSingleton == nil) { sharedSingleton = [[Singleton alloc] init]; } } return sharedSingleton; } + (id) allocWithZone:(NSZone *) zone { @synchronized(self) { if (sharedSingleton == nil) { sharedSingleton = [super allocWithZone:zone]; return sharedSingleton; } } return nil; } @end

Try and keep each singleton’s scope limited to manage only the information that is related to a particular use case and not as a catch-all for all global information across the application. It is probably best to utilize each singleton as a delegate to the information it is responsible for managing, and not use it as a means to gain access to any objects it has associations with. Although on the iPhone, and when being used in primarily a read only or a write seldom implementation, the risk of writing code that is not thread safe increases when utilizing shared objects. Keeping concurrency in mind, and utilizing the singleton as a delegate to the information at hand, one can watch out for multi thread related issues and deal with them in kind. One thing to watch out for would be include updating or setting properties of the singleton from within an implemented perform selector or a notification. If concurrency issues do arise, it may become necessary to synchronize access to certain properties or methods.

No, not the AppDelegate!

So why not just keep adding properties to the AppDelegate? After all, the AppDelegate is a singleton as well and is therefore accessible by invoking the sharedApplication class method. The problem with this techniques is that you end up loading up the application with too much information that may or may not be necessary depending on what functions the user chooses to evoke. It could also lead to longer and longer startup times. Get the application started as quickly as possible, and don’t leave the user hanging for too long.

What about Global Constants?

Keep in mind that this is not the best technique to employ if all you need is a means to define and gain access to Global Constants. The quickest way to do that is to create a Precompiled Prefix Header file and include that in your project. By default, most of the projects generated in XCode that create iPhone Applications will include a file with an extension of .pch. This file will initially look like the following:

#ifdef __OBJC__ #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #endif

One can then add any number of #define statements that will be included in all header files across the entire project.

#define SOME_STRING_CONSTANT @"My Important String"

Conclusion

The Singleton Pattern can be used to make the complex and ugly means of sharing a simple variable between two different views or view controls an easy task. If used sparingly and some basic guidelines are followed as not to bloat the application and create a multi thread nightmare to debug, this technique can be quite useful. Much more so than passing Objects back and forth among views or by breaking the encapsulation of the AppDelegate by assigning it more responsibility than it should have.

References

http://theappleblog.com/2010/05/18/iphone-dev-sessions-using-singletons/