Search Results

Search found 98288 results on 3932 pages for 'user interface'.

Page 468/3932 | < Previous Page | 464 465 466 467 468 469 470 471 472 473 474 475  | Next Page >

  • Need to transfer large video from Camera!-app to computer

    - by Henrik Söderlund
    I have a jailbroken iPhone 4S and am trying to transfer a 25minute long HD-video that I have recorded through SmugMug's Camera-Awesome (Camera!) app. Once recorded in the app, it stays within that app's interface until you choose to save it via the app onto the camera roll. When trying this option, the app just stalls, even when leaving it for an hour plus. I assume the video is too large to copy. I am trying the iExplorer app on my MacBookAir. I can find the Documents folder inside the Camera!-folder. But as soon as I access it to view the contents, it simply stalls the app completely. Probably after trying to read the enormous video. Is there a clever way to transfer this file onto the computer? I can use iFile on the iPhone to transfer through wifi, but I don't know the Camera! app's Documents folder location on the file system.

    Read the article

  • How to track site visitors across several browser sessions or computers using Google Analytics?

    - by Craig
    If a site visitor clears cookies, uses various browsers or computers then Google Analytics will have a hard time detecting them as being by the same user. However since 95% of the site content is only available when logged in, so I should be able to identify multiple visits as the same user so long as they log in. How can I identify to Google that the visits are by the same user? (without breaking the Terms and Conditions)

    Read the article

  • Alternate Client for Cisco Unified Personal Communicator protocol

    - by Jason M
    At work we have an in-house chat system using CUPC. Does anyone else out there use this? There are a few things I do not like about this client: Where's the chat log? If I close the window, I have no way of getting my conversation back. Tabbed interface? That would be nice. I hate having multiple chat windows up, having to arrange them around my desktop as more people start talking to me. I don't like that I have to use this one-off application for particular this protocol when other chat clients will handle 99% of the other protocols I use. Tell me: Is the protocol an open standard for which other applications have support? (pidgin, adium, digsby, etc.) If not, can I overcome these issues from within CUPC? Perhaps there are newer versions of the client that overcome these issues.

    Read the article

  • One way sync with either Dropbox or Google drive on linux and windows

    - by sup
    I could not google this one. I would like to use Dropbox or Google drive only as backup, so I would like to ensure I only upload to those services and never download (unless done manually via the web interface). There would be several of us uploading stuff to one account, so we would need to ensure we don't accidentaly delete something on another guy's machine by doing some changes on our local machine. Is there a simple way to do this automatically - i.e. by running a daemon that will upload eveyuthing in a given folder but never download anything? I am on linux, so that complicates things a bit, but I am also interested in windows solutions.

    Read the article

  • How do I change the Admin password on a Ubee DVW3201B?

    - by Iszi
    I must admit that I feel rather foolish having to ask this. I recently switched ISPs, and the new one gave us a Ubee DVW3201B as our home gateway. I want to change the Administrator username/password from the defaults, but I've been having some difficulty. Every time, after I save the new username and password, I'm prompted to re-authenticate to the administration interface. It fails no matter what I try. I've tried using: New username / New password Default username / New password Default username / Default password None of the above works. This has happened twice now, with my only recourse after failure being to do a reset to factory defaults (press and hold the hard reset button for 10 seconds). Is there something I'm missing?

    Read the article

  • Poppler installation

    - by Menopia
    I downloaded the new poppler 0.15 tar ball and i built it from source successfully but when trying dpkg -l | grep poppler it outputs ii libpoppler-dev 0.14.3-0ubuntu1.1 PDF rendering library -- development files ii libpoppler-glib-dev 0.14.3-0ubuntu1.1 PDF rendering library -- development files (GLib interface) ii libpoppler-glib4 0.12.4-1ubuntu1 PDF rendering library (GLib-based shared library) ii libpoppler-glib5 0.14.3-0ubuntu1.1 PDF rendering library (GLib-based shared library) ii libpoppler5 0.12.4-1ubuntu1 PDF rendering library rc libpoppler6 0.14.2.is.0.14.1-0ubuntu1 PDF rendering library ii libpoppler7 0.14.3-0ubuntu1.1 PDF rendering library ii poppler-utils 0.14.3-0ubuntu1.1 PDF utilitites (based on libpoppler) So AFAIK this means that the new version is not installed !!

    Read the article

  • Concurrent wireless and wired network

    - by Stew Megaw
    Hi, I am concerned with maintaining a wireless and wired network connection on my laptop. Basically I can change the metric on each interface so that Windows prefers one connection over the other. I am wondering is following scenario possible.... Some applications uses the wireless while other applications use the wired... I want Internet Explorer (only) to use the wireless connection while Outlook and everything else uses the wired connection. Perhaps adding some lines to the routing table might work? - Adding the ip addresses of websites I want to view via the wireless connection? Many Thanks in advance for any replies!

    Read the article

  • ISA bus on newer computers

    - by Kevin Ivarsen
    Are there companies that sell new computers that support old ISA bus expansion cards? We have an aging computer running DOS that operates some machinery via an ISA interface board. Updated versions of this board (e.g. PCI, USB) are not available, and I am concerned about the long-term reliability of the 8+ year old computers we currently keep around as backups. If these newer ISA-capable machines exist, are there any general gotchas to be aware of in terms of compatibility with older expansion boards, ability to run DOS, etc.?

    Read the article

  • Interested in scp recipe for sftp [closed]

    - by GJZ
    You wrote in a reply this Blockquote The problem is that sftp runs as the user's id -- first, the sftp client ssh's into the target host as the given user, then runs sftp-server. Since sftp-server is running as a regular user, it has no way to "give away" a file (change owner of a file). However, if you are able to use scp, and assign a key pair to each user, you can get around this. This involves adding a user's key to root's ~/.ssh/authorized_keys file, with a "command=" parameter to force it to run a script that sanitizes and alters the arguments of the server-side scp program. I've used this technique before to set up an anonymous scp dropbox that allowed anyone to submit a file, and ensure that no one could retrieve submitted files and also prevent overwrites. If you are open to this technique, let me know and I'll update this post with a quick recipe. We are interested in this scp quick recipe for our community services file sharing. Best Regards, Gert Jan Zeilstra

    Read the article

  • Test de la caméra Raspberry Pi 5M, tutoriel par Nicolargo

    Bonjour,Nous avons précédemment publié le tutoriel :Raspberry Pi : Déballage et installationComme suite nous proposons ce tutoriel : Test de la caméra Raspberry Pi 5M Citation: Raspberry propose depuis peu et pour moins de 25 € une caméra dédiée à sa gamme Pi. Cette caméra de quelques grammes se connecte à une Raspberry Pi (modèle A ou B) à travers une interface CSI v2 (MIPI camera interface) dédiée. Grâce à Kubii (fournisseur Farnell en France), j'ai pu obtenir rapidement...

    Read the article

  • Which GUI Toolkit was used for TuneUp Utilities and Avast ?

    - by vettipayyan
    There are arguments supporting and discouraging the use of TuneUp Utilities . However , their User Interface is a really good one and i can't find out what gui toolkit they've used .... I wonder this for Avast too... I'm using PyQt for my image processing app and trying to improve the look and feel which is essential for it. But i can't find these type of custom styles etc... If you've suggestions tell me. It'll be helpful..

    Read the article

  • Parsing Concerns

    - by Jesse
    If you’ve ever written an application that accepts date and/or time inputs from an external source (a person, an uploaded file, posted XML, etc.) then you’ve no doubt had to deal with parsing some text representing a date into a data structure that a computer can understand. Similarly, you’ve probably also had to take values from those same data structure and turn them back into their original formats. Most (all?) suitably modern development platforms expose some kind of parsing and formatting functionality for turning text into dates and vice versa. In .NET, the DateTime data structure exposes ‘Parse’ and ‘ToString’ methods for this purpose. This post will focus mostly on parsing, though most of the examples and suggestions below can also be applied to the ToString method. The DateTime.Parse method is pretty permissive in the values that it will accept (though apparently not as permissive as some other languages) which makes it pretty easy to take some text provided by a user and turn it into a proper DateTime instance. Here are some examples (note that the resulting DateTime values are shown using the RFC1123 format): DateTime.Parse("3/12/2010"); //Fri, 12 Mar 2010 00:00:00 GMT DateTime.Parse("2:00 AM"); //Sat, 01 Jan 2011 02:00:00 GMT (took today's date as date portion) DateTime.Parse("5-15/2010"); //Sat, 15 May 2010 00:00:00 GMT DateTime.Parse("7/8"); //Fri, 08 Jul 2011 00:00:00 GMT DateTime.Parse("Thursday, July 1, 2010"); //Thu, 01 Jul 2010 00:00:00 GMT Dealing With Inaccuracy While the DateTime struct has the ability to store a date and time value accurate down to the millisecond, most date strings provided by a user are not going to specify values with that much precision. In each of the above examples, the Parse method was provided a partial value from which to construct a proper DateTime. This means it had to go ahead and assume what you meant and fill in the missing parts of the date and time for you. This is a good thing, especially when we’re talking about taking input from a user. We can’t expect that every person using our software to provide a year, day, month, hour, minute, second, and millisecond every time they need to express a date. That said, it’s important for developers to understand what assumptions the software might be making and plan accordingly. I think the assumptions that were made in each of the above examples were pretty reasonable, though if we dig into this method a little bit deeper we’ll find that there are a lot more assumptions being made under the covers than you might have previously known. One of the biggest assumptions that the DateTime.Parse method has to make relates to the format of the date represented by the provided string. Let’s consider this example input string: ‘10-02-15’. To some people. that might look like ‘15-Feb-2010’. To others, it might be ‘02-Oct-2015’. Like many things, it depends on where you’re from. This Is America! Most cultures around the world have adopted a “little-endian” or “big-endian” formats. (Source: Date And Time Notation By Country) In this context,  a “little-endian” date format would list the date parts with the least significant first while the “big-endian” date format would list them with the most significant first. For example, a “little-endian” date would be “day-month-year” and “big-endian” would be “year-month-day”. It’s worth nothing here that ISO 8601 defines a “big-endian” format as the international standard. While I personally prefer “big-endian” style date formats, I think both styles make sense in that they follow some logical standard with respect to ordering the date parts by their significance. Here in the United States, however, we buck that trend by using what is, in comparison, a completely nonsensical format of “month/day/year”. Almost no other country in the world uses this format. I’ve been fortunate in my life to have done some international travel, so I’ve been aware of this difference for many years, but never really thought much about it. Until recently, I had been developing software for exclusively US-based audiences and remained blissfully ignorant of the different date formats employed by other countries around the world. The web application I work on is being rolled out to users in different countries, so I was recently tasked with updating it to support different date formats. As it turns out, .NET has a great mechanism for dealing with different date formats right out of the box. Supporting date formats for different cultures is actually pretty easy once you understand this mechanism. Pulling the Curtain Back On the Parse Method Have you ever taken a look at the different flavors (read: overloads) that the DateTime.Parse method comes in? In it’s simplest form, it takes a single string parameter and returns the corresponding DateTime value (if it can divine what the date value should be). You can optionally provide two additional parameters to this method: an ‘System.IFormatProvider’ and a ‘System.Globalization.DateTimeStyles’. Both of these optional parameters have some bearing on the assumptions that get made while parsing a date, but for the purposes of this article I’m going to focus on the ‘System.IFormatProvider’ parameter. The IFormatProvider exposes a single method called ‘GetFormat’ that returns an object to be used for determining the proper format for displaying and parsing things like numbers and dates. This interface plays a big role in the globalization capabilities that are built into the .NET Framework. The cornerstone of these globalization capabilities can be found in the ‘System.Globalization.CultureInfo’ class. To put it simply, the CultureInfo class is used to encapsulate information related to things like language, writing system, and date formats for a certain culture. Support for many cultures are “baked in” to the .NET Framework and there is capacity for defining custom cultures if needed (thought I’ve never delved into that). While the details of the CultureInfo class are beyond the scope of this post, so for now let me just point out that the CultureInfo class implements the IFormatInfo interface. This means that a CultureInfo instance created for a given culture can be provided to the DateTime.Parse method in order to tell it what date formats it should expect. So what happens when you don’t provide this value? Let’s crack this method open in Reflector: When no IFormatInfo parameter is provided (i.e. we use the simple DateTime.Parse(string) overload), the ‘DateTimeFormatInfo.CurrentInfo’ is used instead. Drilling down a bit further we can see the implementation of the DateTimeFormatInfo.CurrentInfo property: From this property we can determine that, in the absence of an IFormatProvider being specified, the DateTime.Parse method will assume that the provided date should be treated as if it were in the format defined by the CultureInfo object that is attached to the current thread. The culture specified by the CultureInfo instance on the current thread can vary depending on several factors, but if you’re writing an application where a single instance might be used by people from different cultures (i.e. a web application with an international user base), it’s important to know what this value is. Having a solid strategy for setting the current thread’s culture for each incoming request in an internationally used ASP .NET application is obviously important, and might make a good topic for a future post. For now, let’s think about what the implications of not having the correct culture set on the current thread. Let’s say you’re running an ASP .NET application on a server in the United States. The server was setup by English speakers in the United States, so it’s configured for US English. It exposes a web page where users can enter order data, one piece of which is an anticipated order delivery date. Most users are in the US, and therefore enter dates in a ‘month/day/year’ format. The application is using the DateTime.Parse(string) method to turn the values provided by the user into actual DateTime instances that can be stored in the database. This all works fine, because your users and your server both think of dates in the same way. Now you need to support some users in South America, where a ‘day/month/year’ format is used. The best case scenario at this point is a user will enter March 13, 2011 as ‘25/03/2011’. This would cause the call to DateTime.Parse to blow up since that value doesn’t look like a valid date in the US English culture (Note: In all likelihood you might be using the DateTime.TryParse(string) method here instead, but that method behaves the same way with regard to date formats). “But wait a minute”, you might be saying to yourself, “I thought you said that this was the best case scenario?” This scenario would prevent users from entering orders in the system, which is bad, but it could be worse! What if the order needs to be delivered a day earlier than that, on March 12, 2011? Now the user enters ‘12/03/2011’. Now the call to DateTime.Parse sees what it thinks is a valid date, but there’s just one problem: it’s not the right date. Now this order won’t get delivered until December 3, 2011. In my opinion, that kind of data corruption is a much bigger problem than having the Parse call fail. What To Do? My order entry example is a bit contrived, but I think it serves to illustrate the potential issues with accepting date input from users. There are some approaches you can take to make this easier on you and your users: Eliminate ambiguity by using a graphical date input control. I’m personally a fan of a jQuery UI Datepicker widget. It’s pretty easy to setup, can be themed to match the look and feel of your site, and has support for multiple languages and cultures. Be sure you have a way to track the culture preference of each user in your system. For a web application this could be done using something like a cookie or session state variable. Ensure that the current user’s culture is being applied correctly to DateTime formatting and parsing code. This can be accomplished by ensuring that each request has the handling thread’s CultureInfo set properly, or by using the Format and Parse method overloads that accept an IFormatProvider instance where the provided value is a CultureInfo object constructed using the current user’s culture preference. When in doubt, favor formats that are internationally recognizable. Using the string ‘2010-03-05’ is likely to be recognized as March, 5 2011 by users from most (if not all) cultures. Favor standard date format strings over custom ones. So far we’ve only talked about turning a string into a DateTime, but most of the same “gotchas” apply when doing the opposite. Consider this code: someDateValue.ToString("MM/dd/yyyy"); This will output the same string regardless of what the current thread’s culture is set to (with the exception of some cultures that don’t use the Gregorian calendar system, but that’s another issue all together). For displaying dates to users, it would be better to do this: someDateValue.ToString("d"); This standard format string of “d” will use the “short date format” as defined by the culture attached to the current thread (or provided in the IFormatProvider instance in the proper method overload). This means that it will honor the proper month/day/year, year/month/day, or day/month/year format for the culture. Knowing Your Audience The examples and suggestions shown above can go a long way toward getting an application in shape for dealing with date inputs from users in multiple cultures. There are some instances, however, where taking approaches like these would not be appropriate. In some cases, the provider or consumer of date values that pass through your application are not people, but other applications (or other portions of your own application). For example, if your site has a page that accepts a date as a query string parameter, you’ll probably want to format that date using invariant date format. Otherwise, the same URL could end up evaluating to a different page depending on the user that is viewing it. In addition, if your application exports data for consumption by other systems, it’s best to have an agreed upon format that all systems can use and that will not vary depending upon whether or not the users of the systems on either side prefer a month/day/year or day/month/year format. I’ll look more at some approaches for dealing with these situations in a future post. If you take away one thing from this post, make it an understanding of the importance of knowing where the dates that pass through your system come from and are going to. You will likely want to vary your parsing and formatting approach depending on your audience.

    Read the article

  • Can't downgrade or update jailbroken iPhone

    - by showline2
    I can't update or downgrade my iPhone 3GS, Firmware 4.3.5 tethered with redsn0w. Whenever I try to update it, I get a "device isn't eligible" error. I researched on how to do that, like changing host files, but none of them worked for me. I use OS X Snow Leopard. ## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost 74.208.10.249 gs.apple.com This is my host file – not sure if it's the orginal one or not.

    Read the article

  • Is there going to be a friendly Unity settings window?

    - by Valorin
    Currently, as far as I am aware, you need to use the CompizConfig Settings Manager application to play with the Unity configuration settings. While this makes sense, from a technical point of view, it requires the user to know about the settings manager, install it, and then find the Unity options within it. Not very user friendly. Is there a user friendly configuration application planned that will offer all the configuration options in an easy-to-use for new people fashion?

    Read the article

  • Windows Internet Connection sharing with Mobile Broadband

    - by PaoloFCantoni
    Due to circumstances, I have only got mobile broadband where I am living. I have a small network with a ADSL Router (but which isn't connected to the Internet. I want to use ICS to allow one machine (with the MBB modem) to act as the Internet interface and allow other machines connected to the ADSL router (including a new Android tablet by WiFi) to use the single mobile broadband connection. I've a feeling that my configuration is not valid - as it stands, but I'm not sure. Can some kind soul lead me "by the nose" to getting this working? FWIW The mahcines are all running Windows 7 TIA, Paolo

    Read the article

  • How can I specify custom folders for file-browsing in Metro Apps?

    - by klyonrad
    Whenever you use an Metro app and you want to import some files there is a little file browser. Like this: A lot of folders possible; however there is a folder that is very important: The personal Dropbox. How can I add this folder as a "favorite" in this view? Always browsing through the whole filesystem is slow in the Metro Interface. I realize I could make symlinks for all the typical Dropbox folders but that's simply annoying and there has to be another way (just like it's possible to "hack" the "Send To..." options for the context menu.

    Read the article

  • Configure Virtualbox guest with static IP, SSH and internet access from host

    - by koskoz
    I have an Ubuntu Server 12 virtualbox guest running on a Windows 7 host which has a dynamic IP (and I don't wanna change this considering it's a laptop and I'm changing network frenquently). I want to have a static IP for my VM and a SSH access from my host but I still want to have the internet access on my VM. I tried added a second host only adapter and configured /etc/network/interface to set eth1 to a static ip, but I can't connect via SSH to it. Setting only adapter1 to host only works for SSH and static IP but I lose the internet access.

    Read the article

  • How to blacklist Terminal Services startup environment setting?

    - by JBurace
    I have a user in Active Directory who uses this setting in the Environment tab: Start the following program at logon: "C:\Program Files\PName\Folder\gui.exe" This runs okay on various computers (that are on the domain) including his own. But the user needs to RDP into a Windows Server which does not have this program (which is normal). When the user RDPs into the server and logs in with the AD account, an error occurs about C:\Program Files\PName\Folder\gui.exe missing and the user then gets stuck at a grey screen. The user needs to RDP into this server; how can one blacklist that Environment setting from activation on a specific machine on the domain?

    Read the article

  • Keep IMAP messages locally when deleted remotely

    - by user74328
    I use my email from my phone and my computer via IMAP. I want to set something up so that if I delete a message via my phone, my computer will still keep the message locally. For example, assume I leave my computer on, with a synchronize interval of 5 minutes. I want to be able to send something from my phone, wait 5 minutes to be sure my computer has downloaded the item from the Sent folder, then delete it from the IMAP sent folder via my phone, but have the computer at home keep it's copy. Is this possible with any readily available email clients out there? I have Thunderbird and Outlook at the moment, but would be willing to learn a new interface for this feature. How can I accomplish this?

    Read the article

  • How to have a PHP web site that can play videos offline?

    - by greco
    Our client asked to implement a system with web technologies and the basic functionalities of: We have 3 users: Admin, User, Visitor. provide videos with an indexing system. Videos and other info about them are uploaded from an admin panel. Users can make playlists, add extra info to videos etc. Visitors watch playlists, videos, track their progress etc. This are some of the very basic functionalities of the system, just to get an idea. So we agreed it's a saas project and we started with php,symphony,jquery,requireJS etc. Now our client says that he wants the user and visitor part has to be accessible offline only. He says the user can download the videos and software, and continue offline. What are your suggestions on this? Provide the ability for the user to download a local server, or another way?

    Read the article

  • Automatic login option is missing in 12.04

    - by grossogrossum
    Automatic login option is missing from System Settings User Accounts, how can I solve this? I either can't set the automatic login by editing /etc/lightdm/lightdm.conf [SeatDefaults] autologin-user=x autologin-user-timeout=0 user-session=ubuntu greeter-session=unity-greeter After restart login screen asks for my password. There is a thread in Ubuntu forums http://ubuntuforums.org/showthread.php?p=11889259 . It's in lubuntu forum, but there are ubuntu users afected too. I'm runing 12.04 (precise) 64-bit with Kernel Linux 3.2.0-24-generic. Excuse my bad english, please.

    Read the article

  • Is it possible to live-boot VirtualBox from a USB flash drive?

    - by bw.
    To clarify, I'm not asking if you can boot from USB from within VirtualBox. I would like to make a portable version of Windows 7 that I can run from a USB drive on any machine. I'm putting a distro of Linux on my laptop, but I manage a Windows domain at work so I'd like an easier management solution than trying to use Linux tools to interface with a Windows DC(as RDP to a DC is not always an option). The reason I'm inquiring about VirtualBox... I plan on carrying this portable installation with me and using it on multiple machines, so I would like to avoid driver conflicts (which I imagine would happen if I only installed Windows on a flash drive). Basically, I need a way to boot an installation of Windows 7 from USB that still allows me to install/remove/update programs as if it were installed on a standard hard drive, and not freak out over different hardware configurations. Please help, superusers!

    Read the article

  • How to automatically mount a folder and change ownership from root in virtualbox

    - by Fiztban
    It is my first time using virtualbox and ubuntu (14.04), I am on a host Windows 7 OS. I am trying to mount a shared folder that has files I need to access both in the virtualbox and on the windows OS. I have successfully mounted them using the vboxsf from the Guest Additions installed. To mount I used the command sudo mount -t vboxsf <dir name in vbox> <directory in linux for example I used sudo mount -t vboxsf Test /home/user/Test I found several ways of mounting the directories automatically upon startup using for example the /etc/rc.local method (here) where you modify said file appending the command to it (without sudo). Or by using the fstab method (here). I prefer the rc.local method personally. Once mounted it has permissions dr-xr-xr-x however once mounted the directory is of root ownership and chown user /home/user/Test has no effect. This means I cannot make or change files in it as a normal user. In the VirtualBox the directory to be shared is not set as read-only. Is there a way to automatically mount the shared folder and assign ownership to my non root user?

    Read the article

  • How do I populate multiple records of data into a PDF form like a mail-merge?

    - by user38801
    I have Acrobat Pro, and I have a PDF with a form on it. Assuming the fields in the form correspond to a data source (like rows in an RDBMS table or xml file), I want to then print multiple copies of the PDF file, with each copy having the values of a different row in the data source. It is preferable to directly interface with an actual database, rather than having to save an XML file every time I do this. If this involves programming that's cool too, I only posted here because the question didn't seem appropriate for StackOverflow. Thanks!

    Read the article

  • Adding multiple data importers support to web applications

    - by DigiMortal
    I’m building web application for customer and there is requirement that users must be able to import data in different formats. Today we will support XLSX and ODF as import formats and some other formats are waiting. I wanted to be able to add new importers on the fly so I don’t have to deploy web application again when I add new importer or change some existing one. In this posting I will show you how to build generic importers support to your web application. Importer interface All importers we use must have something in common so we can easily detect them. To keep things simple I will use interface here. public interface IMyImporter {     string[] SupportedFileExtensions { get; }     ImportResult Import(Stream fileStream, string fileExtension); } Our interface has the following members: SupportedFileExtensions – string array of file extensions that importer supports. This property helps us find out what import formats are available and which importer to use with given format. Import – method that does the actual importing work. Besides file we give in as stream we also give file extension so importer can decide how to handle the file. It is enough to get started. When building real importers I am sure you will switch over to abstract base class. Importer class Here is sample importer that imports data from Excel and Word documents. Importer class with no implementation details looks like this: public class MyOpenXmlImporter : IMyImporter {     public string[] SupportedFileExtensions     {         get { return new[] { "xlsx", "docx" }; }     }     public ImportResult Import(Stream fileStream, string extension)     {         // ...     } } Finding supported import formats in web application Now we have importers created and it’s time to add them to web application. Usually we have one page or ASP.NET MVC controller where we need importers. To this page or controller we add the following method that uses reflection to find all classes that implement our IMyImporter interface. private static string[] GetImporterFileExtensions() {     var types = from a in AppDomain.CurrentDomain.GetAssemblies()                 from t in a.GetTypes()                 where t.GetInterfaces().Contains(typeof(IMyImporter))                 select t;       var extensions = new Collection<string>();     foreach (var type in types)     {         var instance = (IMyImporter)type.InvokeMember(null,                        BindingFlags.CreateInstance, null, null, null);           foreach (var extension in instance.SupportedFileExtensions)         {             if (extensions.Contains(extension))                 continue;               extensions.Add(extension);         }     }       return extensions.ToArray(); } This code doesn’t look nice and is far from optimal but it works for us now. It is possible to improve performance of web application if we cache extensions and their corresponding types to some static dictionary. We have to fill it only once because our application is restarted when something changes in bin folder. Finding importer by extension When user uploads file we need to detect the extension of file and find the importer that supports given extension. We add another method to our page or controller that uses reflection to return us importer instance or null if extension is not supported. private static IMyImporter GetImporterForExtension(string extensionToFind) {     var types = from a in AppDomain.CurrentDomain.GetAssemblies()                 from t in a.GetTypes()                 where t.GetInterfaces().Contains(typeof(IMyImporter))                 select t;     foreach (var type in types)     {         var instance = (IMyImporter)type.InvokeMember(null,                        BindingFlags.CreateInstance, null, null, null);           if (instance.SupportedFileExtensions.Contains(extensionToFind))         {             return instance;         }     }       return null; } Here is example ASP.NET MVC controller action that accepts uploaded file, finds importer that can handle file and imports data. Again, this is sample code I kept minimal to better illustrate how things work. public ActionResult Import(MyImporterModel model) {     var file = Request.Files[0];     var extension = Path.GetExtension(file.FileName).ToLower();     var importer = GetImporterForExtension(extension.Substring(1));     var result = importer.Import(file.InputStream, extension);     if (result.Errors.Count > 0)     {         foreach (var error in result.Errors)             ModelState.AddModelError("file", error);           return Import();     }     return RedirectToAction("Index"); } Conclusion That’s it. Using couple of ugly methods and one simple interface we were able to add importers support to our web application. Example code here is not perfect but it works. It is possible to cache mappings between file extensions and importer types to some static variable because changing of these mappings means that something is changed in bin folder of web application and web application is restarted in this case anyway.

    Read the article

< Previous Page | 464 465 466 467 468 469 470 471 472 473 474 475  | Next Page >