Search Results

Search found 3567 results on 143 pages for 'opening'.

Page 45/143 | < Previous Page | 41 42 43 44 45 46 47 48 49 50 51 52  | Next Page >

  • Migrating Core Data to new UIManagedDocument in iOS 5

    - by samerpaul
    I have an app that has been on the store since iOS 3.1, so there is a large install base out there that still uses Core Data loaded up in my AppDelegate. In the most recent set of updates, I raised the minimum version to 4.3 but still kept the same way of loading the data. Recently, I decided it's time to make the minimum version 5.1 (especially with 6 around the corner), so I wanted to start using the new fancy UIManagedDocument way of using Core Data. The issue with this though is that the old database file is still sitting in the iOS app, so there is no migrating to the new document. You have to basically subclass UIManagedDocument with a new model class, and override a couple of methods to do it for you. Here's a tutorial on what I did for my app TimeTag.  Step One: Add a new class file in Xcode and subclass "UIManagedDocument" Go ahead and also add a method to get the managedObjectModel out of this class. It should look like:   @interface TimeTagModel : UIManagedDocument   - (NSManagedObjectModel *)managedObjectModel;   @end   Step two: Writing the methods in the implementation file (.m) I first added a shortcut method for the applicationsDocumentDirectory, which returns the URL of the app directory.  - (NSURL *)applicationDocumentsDirectory {     return [[[NSFileManagerdefaultManager] URLsForDirectory:NSDocumentDirectoryinDomains:NSUserDomainMask] lastObject]; }   The next step was to pull the managedObjectModel file itself (.momd file). In my project, it's called "minimalTime". - (NSManagedObjectModel *)managedObjectModel {     NSString *path = [[NSBundlemainBundle] pathForResource:@"minimalTime"ofType:@"momd"];     NSURL *momURL = [NSURL fileURLWithPath:path];     NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];          return managedObjectModel; }   After that, I need to check for a legacy installation and migrate it to the new UIManagedDocument file instead. This is the overridden method: - (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)storeURL ofType:(NSString *)fileType modelConfiguration:(NSString *)configuration storeOptions:(NSDictionary *)storeOptions error:(NSError **)error {     // If legacy store exists, copy it to the new location     NSURL *legacyPersistentStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"minimalTime.sqlite"];          NSFileManager* fileManager = [NSFileManagerdefaultManager];     if ([fileManager fileExistsAtPath:legacyPersistentStoreURL.path])     {         NSLog(@"Old db exists");         NSError* thisError = nil;         [fileManager replaceItemAtURL:storeURL withItemAtURL:legacyPersistentStoreURL backupItemName:niloptions:NSFileManagerItemReplacementUsingNewMetadataOnlyresultingItemURL:nilerror:&thisError];     }          return [superconfigurePersistentStoreCoordinatorForURL:storeURL ofType:fileType modelConfiguration:configuration storeOptions:storeOptions error:error]; }   Basically what's happening above is that it checks for the minimalTime.sqlite file inside the app's bundle on the iOS device.  If the file exists, it tells you inside the console, and then tells the fileManager to replace the storeURL (inside the method parameter) with the legacy URL. This basically gives your app access to all the existing data the user has generated (otherwise they would load into a blank app, which would be disastrous). It returns a YES if successful (by calling it's [super] method). Final step: Actually load this database Due to how my app works, I actually have to load the database at launch (instead of shortly after, which would be ideal). I call a method called loadDatabase, which looks like this: -(void)loadDatabase {     static dispatch_once_t onceToken;          // Only do this once!     dispatch_once(&onceToken, ^{         // Get the URL         // The minimalTimeDB name is just something I call it         NSURL *url = [[selfapplicationDocumentsDirectory] URLByAppendingPathComponent:@"minimalTimeDB"];         // Init the TimeTagModel (our custom class we wrote above) with the URL         self.timeTagDB = [[TimeTagModel alloc] initWithFileURL:url];           // Setup the undo manager if it's nil         if (self.timeTagDB.undoManager == nil){             NSUndoManager *undoManager = [[NSUndoManager  alloc] init];             [self.timeTagDB setUndoManager:undoManager];         }                  // You have to actually check to see if it exists already (for some reason you can't just call "open it, and if it's not there, create it")         if ([[NSFileManagerdefaultManager] fileExistsAtPath:[url path]]) {             // If it does exist, try to open it, and if it doesn't open, let the user (or at least you) know!             [self.timeTagDB openWithCompletionHandler:^(BOOL success){                 if (!success) {                     // Handle the error.                     NSLog(@"Error opening up the database");                 }                 else{                     NSLog(@"Opened the file--it already existed");                     [self refreshData];                 }             }];         }         else {             // If it doesn't exist, you need to attempt to create it             [self.timeTagDBsaveToURL:url forSaveOperation:UIDocumentSaveForCreatingcompletionHandler:^(BOOL success){                 if (!success) {                     // Handle the error.                     NSLog(@"Error opening up the database");                 }                 else{                     NSLog(@"Created the file--it did not exist");                     [self refreshData];                 }             }];         }     }); }   If you're curious what refreshData looks like, it sends out a NSNotification that the database has been loaded: -(void)refreshData {     NSNotification* refreshNotification = [NSNotificationnotificationWithName:kNotificationCenterRefreshAllDatabaseData object:self.timeTagDB.managedObjectContext  userInfo:nil];     [[NSNotificationCenter defaultCenter] postNotification:refreshNotification];     }   The kNotificationCenterRefreshAllDatabaseData is just a constant I have defined elsewhere that keeps track of all the NSNotification names I use. I pass the managedObjectContext of the newly created file so that my view controllers can have access to it, and start passing it around to one another. The reason we do this as a Notification is because this is being run in the background, so we can't know exactly when it finishes. Make sure you design your app for this! Have some kind of loading indicator, or make sure your user can't attempt to create a record before the database actually exists, because it will crash the app.

    Read the article

  • How to find corrupted files?

    - by rafalcieslak
    Some files on my hard drive are corrupted (no worries, nothing system-related, just a junk of data files, mp3 etc.). I found that out when I tried to burn them all to a DVD, the burning application show a message that it cannot read the files as they are corrupted. [This is probably a drive issue, it had happened me once or twice already]. I don't care about recovering them, but I have to determine which ones are corrupted. I cannot check by manually opening them all, as there are thousands of them. Is there any tricky way to check all the files and list the ones that may cause problems when tried to open?

    Read the article

  • How To Make Images, Music, Video, and PDF Files Open On The Desktop in Windows 8

    - by Chris Hoffman
    Windows 8 opens many types of files in the Windows 8 interface formerly known as Metro by default. If you’re at the desktop and double-click many types of media files, you’ll see a full-screen media viewer. You can easily prevent these media files from opening in the full-screen Windows 8 apps when you double-click them. All you have to do is change your default programs. What Is the Purpose of the “Do Not Cover This Hole” Hole on Hard Drives? How To Log Into The Desktop, Add a Start Menu, and Disable Hot Corners in Windows 8 HTG Explains: Why You Shouldn’t Use a Task Killer On Android

    Read the article

  • How to completely integrate Nemo with Ubuntu?

    - by user74660
    I have installed Nemo (a fork of Nautilus created by the Linux Mint Team) in my Ubuntu 12.04.1 LTS with Gnome Shell 3.4.2. I followed the instructions here (https://help.ubuntu.com/community/DefaultFileManager), changing the "inode" and "x-directory" in the file "defaults.list", to make Nemo my default file manager. Now everything works perfectly, except for one thing: opening folders from desktop. I have set the option "Have file manager handle the desktop" on. Cool. The problem is that the desktop seems to be handled by Nautilus only, even if I have set another file manager as default. Every time I double click a folder on the desktop, it is opened by Nautilus, not Nemo. Please, does anybody know how to fix this? Thanks for your time. :)

    Read the article

  • Why does a computer science degree matter to a professional programmer?

    - by P.Brian.Mackey
    I have a degree in computer science. It has been great for opening doors, getting a job. As far as helping me in the professional field of C# .NET programming (the most popular platform and language in the area I work if not the entire united states on hands down the most popular OS in the world) its hardly useful. Why do you think it helps you as a programmer in your professional career (outside spouting off to prims algorithm to impress some interviewer)? In today's world adaptation, a quick mind, strong communication, OO and fundamental design skills enable a developer to write software that a customer will accept. These skills are only skimmed over in the cs program. In my mind, reading a 500 page C# book by Wrox offers far more useable a skillset than 4 years of the comp sci math blaster courses. Many disagree. So, why does a computer science degree matter?

    Read the article

  • After executing a command in the terminal, I sometimes can't execute another

    - by jreed121
    First off sorry for the noob question, I'm sure it's been asked before but I have no idea how to phrase it eloquently... Sometimes when I open/run/execute (unsure of proper term) an application (?lol) from the terminal like geany ie: geany filename.php or maybe run a node.js script: node server.js The command will execute fine, but I'm then left without the ability to execute any other commands unless I open another terminal. my root@pcname:~$ is gone and when I try typing in something else and hitting Enter it just breaks to the next line. I've noticed that sometimes I can hit CTRL+D and it'll give me my prompt back (sorry is prompt even the right name for it?) So could someone please explain why this is happening and how I can get back to the prompt without opening another terminal. Thanks, and sorry again for my noobery.

    Read the article

  • FTP over ssh hangs on "Connection established: Waiting for Welcome Message"

    - by Siriss
    I have looked far and wide and have not quite found the answer. I am running ubuntu 11.10, openssh, and vsftpd. I am trying to configure my FTP to tunnel over ssh. My ssh connection works just fine and I can create the tunnel to my FTP port. When I go to use Filezilla to connect, it hangs at "Waiting for Welcome Message". I think it is an iptables issue, but I can't seem to figure out what needs to be changed. When I take iptables down, it connects just fine. I don't want to open any more external ports, just my one SSH port, and I can't seem to get it right on the internal port forwarding rule. I always end up opening it to the outside. I would love some help if anyone has any ideas and I hope I have made it clear. Thank you in advance!!

    Read the article

  • Placing newly opened windows while having a window maximized?

    - by Wauzl
    I'm often working in a maximized window from which I'm opening new windows, that do not appear maximized. They are placed at the very top at the desktop in the way that I can not see the upper window decoration. The upper dock of the maximized window is in front of it. This is very unhandy, because I can not easily close or move the newly opened window. Is there a way to fix this behaviour? I played around with the Place Windows plugin in compiz but it didn't work at all. Greetings, Wauzl

    Read the article

  • KVM switching from lower resolution system resets Ubuntu high resolution

    - by Ed Manet
    I'm running 12.04 desktop on my main desktop and it's hooked to a KVM (IOGear miniview) that shares the peripherals with a SLES 11 machine. The SLES 11 machine can't get the same resolution as the Ubuntu machine because of different graphics hardware. If I switch from Ubuntu to SLES and stay there too long, when I switch back to Ubuntu the screen resolution on Ubuntu is reset to the same as SLES. I can get it back easily just opening the Displays configuration; it immediately resets to the high resolution as soon as the Displays window opens. But all my open windows have been maximized and it's a P.I.T.A. having to resize them all again. How do I get it to just stay at the high resolution between switching between systems? Is there a setting in the Xorg conf file I need to set?

    Read the article

  • 12.04 Ambiance dark side bar issue when clicking folder on desktop

    - by Lou Crittenden
    Concerning an updated custom ambiance theme: why is there no dark side bar when I click on a folder, like the home folder icon on the desktop, but the theme works as planned when I type nautilus in the terminal to open the home folder or when opening a folder up as root? Permissions issue perhaps? Note: I am using Cinnamon instead of Unity and I noticed it uses the Nemo file manager instead of Nautilus and I suspected that it was causing me the grief. I uninstalled it and now am using Nautilus only as the file manager. I found this out when I typed: sudo killall nemo and the problem went away. I'll see how this goes (and hopefully cinnamon doesn't care about it...) Has anyone else had any issues with this?

    Read the article

  • Can not start webhttrack

    - by Sitati
    I am trying to start my webhttrack on ubuntu 12.04 precise pangolin but all i get is the opening screen. When i press any button on the page it gives me the following errors: Oops! Google Chrome could not connect to barney:8081 Suggestions: Try reloading: barney:­8081/­server/­step2.­html i tried to run from a terminal window and get the output here: webhttrack /usr/bin/webhttrack(4405:( launching /usr/bin/x-www-browser /usr/bin/webhttrack(4405:( spawning regular browser.. Created new window in existing browser session. /usr/bin/webhttrack(4405:( browser exited /usr/bin/webhttrack: line 167: 4422 Killed ${BINPATH}/htsserver "${DISTPATH}/" path "${HOME}/websites" lang "${LANGN}" $@ If anyone can help me i appreciate it.

    Read the article

  • .NET Compiler Platform (Roslyn) , its relevance to developer community and its performance? [on hold]

    - by jerriclynsjohn
    I'm just starting out with a Code-Quality-plugin development for my organization based on the recently released .NET Compiler Platform APIs (Roslyn APIs). I would like to know what are the most relevant possible ways that it could be used by the developer community apart from the usual IDE experience as answered in other questions. I was wondering the implications of opening up a compiler to general public and never came across anything "breakthrough", that could possibly add up to the value of IDE experiences. Is there any performance bottleneck for its implementation since the compiler itself is managed code?

    Read the article

  • Best practice for bulk eCommerce product upload?

    - by Or W
    I'm thinking about opening a large online store for Jewelry, the one thing that really bothers me is managing the actual operation of taking pictures, uploading and describing all the products. I'm trying to figure out the best way to do it, in terms of performance or the least time consuming. Just a few things to keep in mind I'll have over 1,000 items in the online store I'll have 3-4 pictures for each item, I'm using a DSLR camera if it makes any difference. I'm going to probably use Magento, unless you have better experience with another eCommerce platform that will help me get this done quickly. I'll need to randomly(?) create a product code for each item.

    Read the article

  • High I/O wait after login

    - by Jackson Tan
    I've noticed that the ubuntuone-syncdaemon hogs up the hard disk every time I log in to Ubuntu (10.04). This takes up to two or three minutes, which makes Ubuntu insufferably slow. Opening Firefox is okay, but the browser is constantly greyed out and lags horribly. Given that I often shut down my laptop when I don't use it (about 3 to 4 times a day), this makes Ubuntu lose much of its lustre because of its long boot time. Is this a normal behaviour of Ubuntu One? Is it intended? Note that I've actually posted this in the forums here, but I received only few replies.

    Read the article

  • What would I do to figure out why Suspend sometimes crashes?

    - by Isaac
    Something is causing suspend crash occasionally. When it does crash, the system freezes with a black screen and stays on, not suspending. This makes me have to hold the power button until the system shuts down. One setting difference I have from most people is, I don't use the option that lets you suspend when the laptop lid is closed. So opening and closing the laptop lid has no actions. I like to press suspend manually. Could this preference change be the cause? How can I start looking for what's causing the crash, since the crash doesn't display errors?

    Read the article

  • How can I figure out why Suspend sometimes fails?

    - by Isaac
    Something is causing suspend crash occasionally. When it does crash, the system freezes with a black screen and stays on, not suspending. This makes me have to hold the power button until the system shuts down. One setting difference I have from most people is, I don't use the option that lets you suspend when the laptop lid is closed. So opening and closing the laptop lid has no actions. I like to press suspend manually. Could this preference change be the cause? How can I start looking for what's causing the crash, since the crash doesn't display errors?

    Read the article

  • ubuntu 12.04 ambiance dark side bar issue when clicking folder on desktop

    - by Lou Crittenden
    ubuntu 12.04 gnome: concerning an updated custom ambiance theme: why is there no dark side bar when I click on a folder, like the home folder icon on the desktop, but the theme works as planned when I type "nautilus" in the terminal to open the home folder or when opening a folder up as root? Permissions issue perhaps? note: i am using cinnamon instead of unity and i noticed it uses the nemo file manager instead of nautilus and i suspected that it was causing me the grief. so i uninstalled it and now am using nautilus only as the file manager. i found this out when i typed: "sudo killall nemo" and the problem went away. i'll see how this goes... (and hopefully cinnamon doesn't care about it...) has anyone else had any issues with this?

    Read the article

  • Ubuntu slow on HP 2000 notebook with Apu e1-1200

    - by user169861
    I am using HP 2000 notebook which initially came with Windows 7 64bit. It has 4gb ram, AMD APU E1-1200 (1.4ghz) with Radeon 7310. With Windows it worked ok, so I decided to switch to Ubuntu. I installed 13.04 64bit at first, but responsiveness wasn't that good (opening windows, menus, Firefox, dash search) even if it was way better during the testing from live USB. I tried different kind of drivers for graphic card, 13.6beta, 13.4, fgrlx proprietary, upgraded kernel but the situation was the same. Then I tried installing 32bit version but the results were identical. After that I tried LTS version 12.04 and Xubuntu 13.04.. Responsiveness wasn't that different at all. Not sure what to do, and I wouldn't want to go back to Windows. This machine is not a beast, but it should be enough to deal with Unity or Xfce without troubles. Oh yes, I have insydeH20 BIOS with not so many options at my disposal. Thanks and best regards,

    Read the article

  • www.IISJobs.com has been launched.

    - by steve schofield
    Looking for a job related to Microsoft (Internet Information Server)? Or do you have a job opening which requires IIS experience.  Look no further, subscribe to the discussion forum today at http://www.iisjobs.com and be notified as soon as a job is posted or someone responds. Why start IISJobs.com?  I'm not looking to replace Monster, Careers.com.  I've seen in various places where jobs involving Microsoft IIS (Internet Information Server) have been posted.   I thought it would be a good idea to centralize under a easy to remember domain name. :)   My goal is to help the IIS community. Cheers, Steve SchofieldWindows Server MVP - IIShttp://weblogs.asp.net/steveschofield http://www.IISLogs.comLog archival solutionInstall, Configure, Forget

    Read the article

  • #OOW 2012 : IaaS, Private Cloud, Multitenant Database, and X3H2M2

    - by Eric Bezille
    The title of this post is a summary of the 4 announcements made by Larry Ellison today, during the opening session of Oracle Open World 2012... To know what's behind X3H2M2, you will have to wait a little, as I will go in order, beginning with the IaaS - Infrastructure as a Service - announcement. Oracle IaaS goes Public... and Private... Starting in 2004 with Fusion development, Oracle Cloud was launch last year to provide not only SaaS Application, based on standard development, but also the underlying PaaS, required to build the specifics, and required interconnections between applications, in and outside of the Cloud. Still, to cover the end-to-end Cloud  Services spectrum, we had to provide an Infrastructure as a Service, leveraging our Servers, Storage, OS, and Virtualization Technologies, all "Engineered Together". This Cloud Infrastructure, was already available for our customers to build rapidly their own Private Cloud either on SPARC/Solaris or x86/Linux... The second announcement made today bring that proposition a big step further : for cautious customers (like Banks, or sensible industries) who would like to benefits from the Cloud value of "as a Service", but don't want their Data out in the Cloud... We propose to them to operate the same systems, Exadata, Exalogic & SuperCluster, that are providing our Public Cloud Infrastructure, behind their firewall, in a Private Cloud model. Oracle 12c Multitenant Database This is also a major announcement made today, on what's coming with Oracle Database 12c : the ability to consolidate multiple databases with no extra additional  cost especially in terms of memory needed on the server node, which is often THE consolidation limiting factor. The principle could be compare to Solaris Zones, where, you will have a Database Container, who is "owning" the memory and Database background processes, and "Pluggable" Database in this Database Container. This particular feature is a strong compelling event to evaluate rapidly Oracle Database 12c once it will be available, as this is major step forward into true Database consolidation with Multitenancy on a shared (optimized) infrastructure. X3H2M2, enabling the new Exadata X3 in-Memory Database Here we are :  X3H2M2 stands for X3 (the new version of Exadata announced also today) Heuristic Hierarchical Mass Memory, providing the capability to keep most if not all the Data in the memory cache hierarchy. Of course, this is the major software enhancement of the new X3 Exadata machine, but as this is a software, our current customers would be able to benefit from it on their existing systems by upgrading to the new release. But that' not the only thing that we did with X3, at the same time we have upgraded everything : the CPUs, adding more cores per server node (16 vs. 12, with the arrival of Intel E5 / Sandy Bridge), the memory with 512GB memory as well per node,  and the new Flash Fire card, bringing now up to 22 TB of Flash cache. All of this 4TB of RAM + 22TB of Flash being use cleverly not only for read but also for write by the X3H2M2 algorithm... making a very big difference compare to traditional storage flash extension. But what does those extra performances brings to you on an already very efficient system: double your performances compare to the fastest storage array on the market today (including flash) and divide you storage price x10 at the same time... Something to consider closely this days... Especially that we also announced the availability of a new Exadata X3-2 8th rack : a good starting point. As you have seen a major opening for this year again with true innovation. But that was not the only thing that we saw today, as before Larry's talk, Fujitsu did introduce more in deep the up coming new SPARC processor, that they are co-developing with us. And as such Andrew Mendelsohn - Senior Vice President Database Server Technologies came on stage to explain that the next step after I/O optimization for Database with Exadata, was to accelerate the Database at execution level by bringing functions in the SPARC processor silicium. All in all, to process more and more Data... The big theme of the day... and of the Oracle User Groups Conferences that were also happening today and where I had the opportunity to attend some interesting sessions on practical use cases of Big Data one in Finances and Fraud profiling and the other one on practical deployment of Oracle Exalytics for Data Analytics. In conclusion, one picture to try to size Oracle Open World ... and you can understand why, with such a rich content... and this only the first day !

    Read the article

  • Ubuntu boots into tty1 after driver downgrade

    - by Zach
    Earlier today I downgraded the driver for my nvidia 240 GT from version 310 to version 304 using ubuntus "additional drivers" utility. After the install I rebooted but instead of opening unity and allowing me to login it booted into tty1 instead. After using the "startx" command I got the message, "nvidia: API mismatch: the nvidia kernel module has version 310.14, but this nvidia driver component has version 304.43." What can I do to solve this? Edit: Solved my own problem by purging all nvidia packaged and reinstalling my drivers.

    Read the article

  • Why is it java code indented as BSD KNF Style and C C++ code indented as Allman or BSD style?

    - by Caffeine
    I do understand that coding convention is a matter of preference, and that different coding conventions have different subtle advantages or shortcomings, and depending on what one wants, one should choose his/her style. But why is usually Java written where the opening brace is on the same line as the function definition of control statement, and in C or C++ the curly braces have a line of their own? BSD KNF style if (data != NULL && res > 0) { if (JS_DefineProperty(cx, o, "data", STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)), NULL, NULL, JSPROP_ENUMERATE) != 0) { QUEUE_EXCEPTION("Internal error!"); goto err; } PQfreemem(data); } else { if (JS_DefineProperty(cx, o, "data", OBJECT_TO_JSVAL(NULL), NULL, NULL, JSPROP_ENUMERATE) != 0) { QUEUE_EXCEPTION("Internal error!"); goto err; } } Allman or BSD Style if (x == y) { something(); somethingelse(); } Courtesy: http://en.wikipedia.org/wiki/Indent_style

    Read the article

  • Why does Google Analytics show false referrals?

    - by Peter Merrill
    Ever since Google revamped their Analytics interface I've been noticing a weird "bug" while viewing the "Real-Time" overview area. From this area I can obviously see live stats of visitors to my website but when I visit my website by opening a new tab (Chrome) and manually visit website the real time stats sometimes look like the image linked below. http://i.stack.imgur.com/mfniY.png Is there any reason why Google is saying that I was referred by Stack Overflow when I'm visiting my website from a new tab? Could this be something do to with how I installed the analytics on my site or could this be an issue with browser cookies? Have anyone else noticed this? I am mainly concerned about this because in the standard reporting area of my Analytics panel my referral stats are getting thrown off every time I visit my own website.

    Read the article

  • External display suddenly not detected

    - by NChase
    I have a Lenovo IdeaPad U410 running Ubuntu Desktop 13.04. I have an external monitor that I connect to via HDMI, and it's worked flawlessly for six months. I plug in my laptop, it detects the display. The "change display" key built into the laptop works for switching between the two screens. Never any problems. This afternoon, when I reconnected my computer after taking it into another room for a bit, it didn't work. When I open up Display settings, it can't detect the display. I tried disconnecting/reconnecting everything multiple times. And most strangely, that same "change display" key now behaves like a Super key, opening the dash instead of toggling the display. Nothing at all changed between when I plugged it in this morning and when it stopped working a few hours later. I tried xrandr, that doesn't detect it either. Anyone have any ideas?

    Read the article

  • Cloud to On-Premise Connectivity Patterns

    - by Rajesh Raheja
    Do you have a requirement to convert an Opportunity in Salesforce.com to an Order/Quote in Oracle E-Business Suite? Or maybe you want the creation of an Oracle RightNow Incident to trigger an on-premise Oracle E-Business Suite Service Request creation for RMA and Field Scheduling? If so, read on. In a previous blog post, I discussed integrating TO cloud applications, however the use cases above are the reverse i.e. receiving data FROM cloud applications (SaaS) TO on-premise applications/databases that sit behind a firewall. Oracle SOA Suite is assumed to be on-premise with with Oracle Service Bus as the mediation and virtualization layer. The main considerations for the patterns are are security i.e. shielding enterprise resources; and scalability i.e. minimizing firewall latency. Let me use an analogy to help visualize the patterns: the on-premise system is your home - with your most valuable possessions - and the SaaS app is your favorite on-line store which regularly ships (inbound calls) various types of parcels/items (message types/service operations). You need the items at home (on-premise) but want to safe guard against misguided elements of society (internet threats) who may masquerade as postal workers and vandalize property (denial of service?). Let's look at the patterns. Pattern: Pull from Cloud The on-premise system polls from the SaaS apps and picks up the message instead of having it delivered. This may be done using Oracle RightNow Object Query Language or SOAP APIs. This is particularly suited for certain integration approaches wherein messages are trickling in, can be centralized and batched e.g. retrieving event notifications on an hourly schedule from the Oracle Messaging Service. To compare this pattern with the home analogy, you are avoiding any deliveries to your home and instead go to the post office/UPS/Fedex store to pick up your parcel. Every time. Pros: On-premise assets not exposed to the Internet, firewall issues avoided by only initiating outbound connections Cons: Polling mechanisms may affect performance, may not satisfy near real-time requirements Pattern: Open Firewall Ports The on-premise system exposes the web services that needs to be invoked by the cloud application. This requires opening up firewall ports, routing calls to the appropriate internal services behind the firewall. Fusion Applications uses this pattern, and auto-provisions the services on the various virtual hosts to secure the topology. This works well for service integration, but may not suffice for large volume data integration. Using the home analogy, you have now decided to receive parcels instead of going to the post office every time. A door mail slot cut out allows the postman can drop small parcels, but there is still concern about cutting new holes for larger packages. Pros: optimal pattern for near real-time needs, simpler administration once the service is provisioned Cons: Needs firewall ports to be opened up for new services, may not suffice for batch integration requiring direct database access Pattern: Virtual Private Networking The on-premise network is "extended" to the cloud (or an intermediary on-demand / managed service offering) using Virtual Private Networking (VPN) so that messages are delivered to the on-premise system in a trusted channel. Using the home analogy, you entrust a set of keys with a neighbor or property manager who receives the packages, and then drops it inside your home. Pros: Individual firewall ports don't need to be opened, more suited for high scalability needs, can support large volume data integration, easier management of one connection vs a multitude of open ports Cons: VPN setup, specific hardware support, requires cloud provider to support virtual private computing Pattern: Reverse Proxy / API Gateway The on-premise system uses a reverse proxy "API gateway" software on the DMZ to receive messages. The reverse proxy can be implemented using various mechanisms e.g. Oracle API Gateway provides firewall and proxy services along with comprehensive security, auditing, throttling benefits. If a firewall already exists, then Oracle Service Bus or Oracle HTTP Server virtual hosts can provide reverse proxy implementations on the DMZ. Custom built implementations are also possible if specific functionality (such as message store-n-forward) is needed. In the home analogy, this pattern sits in between cutting mail slots and handing over keys. Instead, you install (and maintain) a mailbox in your home premises outside your door. The post office delivers the parcels in your mailbox, from where you can securely retrieve it. Pros: Very secure, very flexible Cons: Introduces a new software component, needs DMZ deployment and management Pattern: On-Premise Agent (Tunneling) A light weight "agent" software sits behind the firewall and initiates the communication with the cloud, thereby avoiding firewall issues. It then maintains a bi-directional connection either with pull or push based approaches using (or abusing, depending on your viewpoint) the HTTP protocol. Programming protocols such as Comet, WebSockets, HTTP CONNECT, HTTP SSH Tunneling etc. are possible implementation options. In the home analogy, a resident receives the parcel from the postal worker by opening the door, however you still take precautions with chain locks and package inspections. Pros: Light weight software, IT doesn't need to setup anything Cons: May bypass critical firewall checks e.g. virus scans, separate software download, proliferation of non-IT managed software Conclusion The patterns above are some of the most commonly encountered ones for cloud to on-premise integration. Selecting the right pattern for your project involves looking at your scalability needs, security restrictions, sync vs asynchronous implementation, near real-time vs batch expectations, cloud provider capabilities, budget, and more. In some cases, the basic "Pull from Cloud" may be acceptable, whereas in others, an extensive VPN topology may be well justified. For more details on the Oracle cloud integration strategy, download this white paper.

    Read the article

< Previous Page | 41 42 43 44 45 46 47 48 49 50 51 52  | Next Page >