Search Results

Search found 10719 results on 429 pages for 'hardware failure'.

Page 307/429 | < Previous Page | 303 304 305 306 307 308 309 310 311 312 313 314  | Next Page >

  • RAID strategy - 8 1TB drives

    - by alex
    I'm setting up a backup storage device- This machine has Windows Server 2008, on a separate boot drive. It has 8x 1TB drives, and uses a hardware RAID card. My question is, which RAID configuration should I go for? Initially, I was going to go with RAID 5 across all 8 drives, however members on serverFault have advised against it. I was just wondering why? Some people have suggested 2 lots of RAID 5 configuration on 4 of the drives, then striping them... I want to maximise the storage space, as this is a backup unit - will store SQL backups, Acronis Images, files, etc... It won't be for public access, so the I/O won't be that high I wouldn't think.

    Read the article

  • RAID striping on a desktop machine

    - by Blazemore
    I currently have a 120Gib SSD which is pretty fast for things like game loading times and video editing. However, I was wondering about getting another identical drive and hooking it up with a striping RAID array in hardware (I boot multiple operating systems). This would have the dual benefits of providing a larger logical drive, while also providing greater performance. However, I have a few questions: What kind of performance increase can I expect to see with a pair of good quality SSDs? How expensive is a quality desktop RAID controller? Will the controller present the OS with a single logical drive? Does this mean I can still partition it and multi-boot? Basically, can I treat the RAID controller as "a hard drive" at the OS level?

    Read the article

  • Network randomly drops

    - by user147661
    I have a VPS, ubuntu server 12.04 and for unknown reasons the network connection drops and I have to access my vps via the console and ifdown eth0 and ifup eth0. This brings the connection back up from about a few seconds to a few hours. I have run tail -F /var/log/syslog to monitor the log to see what happens at the point of drop and there is nothing unusual. The vps is running under virt-manager and the hardware is set to virtio. I have had linux friends look at my vps and they are unsure of what is the cause.

    Read the article

  • Windows 7 won't recognize my second hard drive after reinstall

    - by Shadur
    I recently suffered a total hardware crash on my windows C: drive. Fortunately, I had a spare disk on hand and set about reinstalling. For some reason, during the install it decided to declare my second windows drive as the booting drive, but once the installation was completed it completely and utterly refuses to acknowledge the filesystem -- I'm not even seeing a drive letter, while it /does/ find the linux partitions on the other two drives (even if it can't read any of them). My first (and most important) question: How can I get windows to re-acknowledge the drive, preferably without losing all the data on it? My second question: How can I tell windows to set up its boot loader on the new C: drive?

    Read the article

  • Ubuntu 9.10 Karmic, nVidea Quadro NVS 280 PCi, Eizo S1921 Dual Screen (Twin View) Slow Window Draws

    - by Spasm
    I have been following this Tutorial to get dual monitors working on my box http://www.dwasifar.com/?p=862&cpage=1#comment-5727 It works! However, when ever I move a window, the redraw of that window takes 3-8 seconds. Even moving the window takes the same amount of time Is this being done in software rather than the nVidea hardware? The windows themselves do not respond. I have seen a few old threads but no relevant fixes - If anyone could suggest a fix I would very much appreciate it. I have tried: sudo nvidea-xconfig sudo nvidia-settings Then configure TwinView go to save the config... and the error unable to parse xorg.conf file and the error in the console VALIDATION ERROR: Data incomplete in file /etc/X11/xorg.conf. Undefined Device "null" referenced by Screen "Configured Screen Device" Segmentation fault

    Read the article

  • Linux (Ubuntu) USB Auth

    - by themicahmachine
    I want to be able to authenticate with PAM using a USB drive with a file on it. I've read about how to do this with a PAM module that reads the specific USB hardware ID of a device, but if the device malfunctions or is lost, there would be no way to authenticate. I would prefer to use the method BitLocker uses, requiring a particular file to be found on the drive in order to authenticate. That way I can keep another drive in a secure location as a backup. Any other suggestions are welcome. I just want to require a higher level of security that just a password.

    Read the article

  • Virtualizing Windows with VT-d to play within it

    - by Bahaïka
    I would like to know if what I want to is possible. First, here is my hardware configuration : MB : Gigabyte H77-DS3H Intel Core i5 3330 (3.00GHz) MSI Nvidia GTX 760 8 Gb RAM 1333 MHz What I want to do is to have a linux (probably ArchLinux) as a main and unique OS on my computer (I don't want a dualboot). And virtualizing Windows under Linux. I've read about VT-d (supported by my CPU) and PCIBackHide. I'd like to know if I can initialize Linux with the Integrated Graphics and Virtualize Windows to use the GTX 760. If I can do it, where do I have to plug my two screens ? On the MainBoard or the GTX 760 ? How do I achive that idea ?

    Read the article

  • "Undeleting" partition (NTFS) - recommendations?

    - by kagali-san
    So I have a drive which either suffered from hardware error or, possibly, got a little shock from badly configured Windows unattended install started on the same PC (the drive in question wasn't the install drive..). Quick exam shows that filesystem is seemingly intact, as some data recovery tools work with it (UnFormat rated it as "Excellent"). This may mean that a copy of partition table exists on disk, or a copy of MFT survived whatever happened, or.. Any idea how to restore partition tables/FS header, add a drive letter thus let Windows to mount the filesystem as if nothing happened? (I guess there must be tools of this kind)

    Read the article

  • HP Presario CQ 61-322ER (VV884EA) Wi-Fi hang up! [closed]

    - by qgrabber
    Possible Duplicate: HP Presario CQ 61-322ER (VV884EA) Wi-Fi hang up! I have my new laptop and don't have Windows XP drivers for it. I found that it contains the Broadcom BCM4310 chip, but when I install any Broadcom driver my laptop hangup on installing bcm5*.sys driver. Only power-off button make any effect. After reboot the device list (Device Manager) contains Broadcom WLAN adapter, but it is marked as disabled, for some hardware errror! Also if I disable device before, and install driver - then - all is OK! But when I try to enable it, Windows hang up anyway (no speaker beep, no mouse input, no keyboard input - nothing) What is the solution?

    Read the article

  • How to get around OS X Lion Server SMB "safe save"?

    - by borrrden
    First, there is this problem: http://support.apple.com/kb/TS4149 Which says that anything copied to os x server via smb will be "safe saved" and essentially chmod to 600. This is extremely annoying and counterproductive to having a share server... I did what the article said, but nothing has changed. It is very vague about how to actually set the ACL permissions, but I think I did that via Server.app - hardware - storage - edit permissions. I added (in addition to other things): Guests - Read & Write Others - Read & Write Actually every entry is read and write, but despite this...it is still chmod to 600 when I try to copy a file via SMB. Where else should I look to solve this madness? Alternatively, how can I get rid of this crappy SMB and put back the original SMB? I tried SMBUp but it just fails to start the service every time...

    Read the article

  • I want to replace 120GB SSD with 240GB SSD. Will I need to reinstall Windows?

    - by Borek
    Some SSD vendors offer "upgrade kits" that are supposed to move the operating system from the old disk to the new one without the need to reinstall it, however, it didn't really quite work for me in the past and I always ended up installing the system from scratch. I'd really like to avoid it now so I'd like to ask: Generally speaking, when upgrading from a smaller to a larger SSD, will something like Windows Complete PC Backup and Restore work? Has someone experienced a seamless upgrade? Is there a proven tool to do that? (That worked for you, not that should work theoretically.) My problem usually is that the restored system sees a different disk, thinks it is a different hardware and doesn't want to restore.

    Read the article

  • opening a GUID usb stick in windows 7

    - by altomic
    so I have a mac which I have files on. I put in a GUID formatted usb stick and dropped some files on to it. took the stick and plugged in to my netbook with win7. In Devices & Printers it shows up. It also appears in "safely remove hardware". no actual letter or device when i search for it in other ways. Question - how do I access the files of my GUID usb stick on my windows 7 netbook? thanks

    Read the article

  • Win7 not detecting external HDD but Ubuntu is detecting. Why?

    - by unlimit
    I have a 500GB Toshiba external HDD. Since yesterday Windows 7 stopped detecting it, however I do see it listed on the "Safely remove hardware and eject media" icon on the taskbar. Then I tried the same external HDD on my Ubuntu and it detected it just fine. Ubuntu and Windows 7 are on the same laptop. I have dual boot. Can someone tell me why is it happening? Am I missing a driver in Windows 7? Additional info: 1. This drive has worked perfectly fine in the past. 2. I did not format this drive ever. 3. It just stopped working yesterday in windows.

    Read the article

  • SNMP - So I have a MIB. Now What?

    - by senfo
    I can't seem to get my head wrapped around the purpose of a MIB. I have a collection of ~20 MIB files that were supplied to me by the vendor, but what do I do with them? I also have a few OID's that were supplied by the vendor that don't seem to be valid. When I issue an "snmpget -v1 -c public 192.168.0.123 .1.4.6.3.2.6.2" (assume that's a valid OID), I get an error indicating the variable is unknown. Does this sound like a hardware configuration problem? Do I need to "load" (for lack of better words) the MIB into the device? Unfortunately, the vendor has been completely unresponsive with returning emails to my questions, so any help would be greatly appreciated.

    Read the article

  • Load-balance with LAN and Wi-Fi

    - by Synox
    I have a Mac, which runs Mac OS X 10.6 or Ubuntu 9.10 or Windows XP (Multiboot). Solution can be for any of the systems, whatever works better. I have two ISPs, one can be accessed via Wi-Fi, one can be accessed via LAN. In Mac OS X I can define the priority, which network to choose first. But what I wish to do is to load-balance with both networks. I don't want to buy extra hardware. I have some unused Wi-Fi routers if this would help. Compiling and configuring programs in Linux is no problem for me. Similar question: Load balancing with multiple gateways

    Read the article

  • Moving a "All-in-one" PC when turned on/off.

    - by Purak
    I have an "all-in-one" pc. I know that moving a pc when it is switched on is harmful to the hardware components. What I would like to know is if the same applies to "all-in-one" pc's and if the same applies to regularly moving it from one side of the room to the other when it is turned off! The reason for the question is that I work on one desk during the day, and in the evening move it to the couch so I can do other stuff while watching TV or something. I always turn it off before the move, but somebody told me that I can be damaging the machine by doing so. Can anybody shed some light on this? Many thanks

    Read the article

  • Debian - no sound output

    - by Gogeta70
    So I've been trying for the last few days to get sound output on my Linux desktop. The onboard audio is Intel HD Audio ICH9, but I couldn't get Alsa to even detect it, so I disabled it in BIOS and installed a PCI card - a Dynex DX-SC51. Searching around, I found that it needed the Alsa driver for ice1724, so I installed all the stuff for that. Now, the system detects my sound card, but I can't get any audio to play out of it. Here's some information: root@debian:~# lspci | grep audio 02:01.0 Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01) root@debian:~# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: ICE1724 [ICEnsemble ICE1724], device 0: ICE1724 [ICE1724] Subdevices: 0/1 Subdevice #0: subdevice #0 card 0: ICE1724 [ICEnsemble ICE1724], device 1: ICE1724 IEC958 [ICE1724 IEC958] Subdevices: 1/1 Subdevice #0: subdevice #0 I've been trying various solutions found on Google for a few days now and I'm getting nowhere. Hopefully someone here can point me in the right direction. Thanks.

    Read the article

  • Citrix on ESX 4 U1 - Slow login times

    - by thomps01
    I'm sure they'd be just as slow if not slower using ESX 3 but I'm looking for some assistance. On a physical Citrix server, logins are 1 - 4 seconds. The virtual - 16 - 23 seconds. I'm looking for performance enhancements that I can make to me VMs to try and reduce the login wait times. The hardware is fine (HP BL685 (24 cores, 64GB RAM). And there's nothing pushing it yet. Network 10Gb I'm planning to test the configuration with VMXNET3 tomorrow, but does anyone have a list a best practices I can use when testing?

    Read the article

  • Can I wake up PC/laptop on remote printing request?

    - by dzieciou
    I have an old Epson printer that does not have network adapter, only a USB socket. I have also a computer with network card. I could combine them to put this printer in my local network, but then I would need to keep the computer always up and running. That's definitely not economic. Is there a way to wake up computer when printing request arrives? Something like Wake-on-LAN? Or I am forced to use additional hardware?

    Read the article

  • How to know if a server is physical or virtual? [duplicate]

    - by tachomi
    This question already has an answer here: is there anyway to know if your supposedly fully dedicated server is really a virtually resource-shared machine? [duplicate] 5 answers How can I know if my provider is giving me a dedicated physical server or if I'm getting virtual servers? The provider is from an other country so I don't have the chance to go and see the servers by myself, all of them have linux and they're managed by SSH. All the hire has been done by internet or phone. Are there any commands, dirs to analyze or a way to get this info? They of course tell me that the servers are physical, but when they make some support or hardware/software upgrade or that kind of stuff doesn't take a long. For example, when I ask for a new one with specific requirements at the end they give me more infrastructure than the one I asked for. Of course no one gives extra things without an extra price. Hope I have hinted

    Read the article

  • The volume "filesystem root" has only 0 bytes disk space remaining?

    - by radek
    I installed 11.10 ~two weeks ago and run into some strange troubles recently. Installation was on brand new laptop with clear 128GB SSD. I opted for encrypting home directory. Apart from that I accepted defaults during the installation. There is no other OS on my laptop. I had circa 40GB in use when (for the third time) I got to see this very unpleasant window: Twice situation was pretty bad and whole system slowed down considerably. After reboot I could not login to graphical interface (with an error message informing about insufficient space) and had to remove some files from command line first. Third time I still managed to quickly delete some files and it helped. My laptop is mainly work environment: so no torrents, games, just two movies. Only media filling space are ~20GB of pictures, and bunch of pdfs. Working mostly on PostgreSQL & PostGIS, GeoServer and QGIS recently. Although I had lots of opportunities to test and practice my backups I would be extremely grateful if somebody could point me to any potential solutions to this problem. My laptop has been bought just before I installed Ubuntu, and it came without OS. Could that be hardware issue? Or is the encrypted home causing me headaches? Thanks for help! Update: As suggested by @maniat1k, here is current output of fdisk -l: WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sda: 160.0 GB, 160041885696 bytes 255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sda1 1 312581807 156290903+ ee GPT

    Read the article

  • Sun Storage 2500-M2 Array and Sun Fire X4470 M2 Server

    - by nospam(at)example.com (Joerg Moellenkamp)
    There is some new hardware in the Oracle portfolio. The first one is the Sun Fire X4470 M2 Server. There was a lot of talk about the system before because of benchmark results, but now it's finally announced. Two or four Intel Xeon E7-4800. Up to 1 TB as the system provides 64 DIMM slots with 16 GB DDR DIMMs. The memory is placed on those riser cards right behind the fans of this chassis. Up to 6 internal drives. In a 3 RU package. Another announcement was the Sun Storage 2500 M2 announced yesterday: From 5 to 48 drives (the later number with three expansion trays) for up to 28.8 TB of storage. The array is SAS based internally. You can put 300GB and 600 GB in it. The 2540-M2 provides 4 (8 optional) FC ports with up to 8 GB/sec. The 2530-M2 has 4 SAS2 ports with up to 6 GBit/s. It has 2 integrated controllers providing 2 GB cache protected by a power backup for 72 hours. The controller enables the arrays to deliver 0, 1, 10, 3, 5, 6, (P+Q) RAID levels.

    Read the article

  • Need a solution to store images (1 billion, 1000,000,000) which users will upload to a website via php or javascript upload [on hold]

    - by wish_you_all_peace
    I need a solution to store images (1 billion) which users will upload to a website via PHP or Javascript upload (website will have 1 billion page views a month using Linux Debian distros) assuming 20 photos per user maximum (10 thumbnails of size 90px by 90px and 10 large, script resized images of having maximum width 500px or maximum height 500px depending on shape of image, meaning square, rectangle, horizontal, vertical etc). Assume this to be a LEMP-stack (Linux Nginx MySQL PHP) social-media or social-matchmaking type application whose content will be text and images. Since everyone knows storing tons of images (website users uploaded images in this case) are bad inside a single directory or NFS etc, please explain all the details about the architecture and configuration of the entire setup of storage solution, to store 1 billion images on any method you recommend (no third-party cloud storage like S3 etc. It has to be within the private data center using our own hardware and resources.). The solution has to include both the storage solution and organizing the images uploaded by users. How will we organize the users images if a single user will not have more than 20 images (10 thumbs and 10 large of having either width or height 500px)? Please consider that this has to be organized in a structural way so we can fetch a single user's images via PHP/Javascript or API programmatically through some type of user's unique identifier(s).

    Read the article

  • Using the West Wind Web Toolkit to set up AJAX and REST Services

    - by Rick Strahl
    I frequently get questions about which option to use for creating AJAX and REST backends for ASP.NET applications. There are many solutions out there to do this actually, but when I have a choice - not surprisingly - I fall back to my own tools in the West Wind West Wind Web Toolkit. I've talked a bunch about the 'in-the-box' solutions in the past so for a change in this post I'll talk about the tools that I use in my own and customer applications to handle AJAX and REST based access to service resources using the West Wind West Wind Web Toolkit. Let me preface this by saying that I like things to be easy. Yes flexible is very important as well but not at the expense of over-complexity. The goal I've had with my tools is make it drop dead easy, with good performance while providing the core features that I'm after, which are: Easy AJAX/JSON Callbacks Ability to return any kind of non JSON content (string, stream, byte[], images) Ability to work with both XML and JSON interchangeably for input/output Access endpoints via POST data, RPC JSON calls, GET QueryString values or Routing interface Easy to use generic JavaScript client to make RPC calls (same syntax, just what you need) Ability to create clean URLS with Routing Ability to use standard ASP.NET HTTP Stack for HTTP semantics It's all about options! In this post I'll demonstrate most of these features (except XML) in a few simple and short samples which you can download. So let's take a look and see how you can build an AJAX callback solution with the West Wind Web Toolkit. Installing the Toolkit Assemblies The easiest and leanest way of using the Toolkit in your Web project is to grab it via NuGet: West Wind Web and AJAX Utilities (Westwind.Web) and drop it into the project by right clicking in your Project and choosing Manage NuGet Packages from anywhere in the Project.   When done you end up with your project looking like this: What just happened? Nuget added two assemblies - Westwind.Web and Westwind.Utilities and the client ww.jquery.js library. It also added a couple of references into web.config: The default namespaces so they can be accessed in pages/views and a ScriptCompressionModule that the toolkit optionally uses to compress script resources served from within the assembly (namely ww.jquery.js and optionally jquery.js). Creating a new Service The West Wind Web Toolkit supports several ways of creating and accessing AJAX services, but for this post I'll stick to the lower level approach that works from any plain HTML page or of course MVC, WebForms, WebPages. There's also a WebForms specific control that makes this even easier but I'll leave that for another post. So, to create a new standalone AJAX/REST service we can create a new HttpHandler in the new project either as a pure class based handler or as a generic .ASHX handler. Both work equally well, but generic handlers don't require any web.config configuration so I'll use that here. In the root of the project add a Generic Handler. I'm going to call this one StockService.ashx. Once the handler has been created, edit the code and remove all of the handler body code. Then change the base class to CallbackHandler and add methods that have a [CallbackMethod] attribute. Here's the modified base handler implementation now looks like with an added HelloWorld method: using System; using Westwind.Web; namespace WestWindWebAjax { /// <summary> /// Handler implements CallbackHandler to provide REST/AJAX services /// </summary> public class SampleService : CallbackHandler { [CallbackMethod] public string HelloWorld(string name) { return "Hello " + name + ". Time is: " + DateTime.Now.ToString(); } } } Notice that the class inherits from CallbackHandler and that the HelloWorld service method is marked up with [CallbackMethod]. We're done here. Services Urlbased Syntax Once you compile, the 'service' is live can respond to requests. All CallbackHandlers support input in GET and POST formats, and can return results as JSON or XML. To check our fancy HelloWorld method we can now access the service like this: http://localhost/WestWindWebAjax/StockService.ashx?Method=HelloWorld&name=Rick which produces a default JSON response - in this case a string (wrapped in quotes as it's JSON): (note by default JSON will be downloaded by most browsers not displayed - various options are available to view JSON right in the browser) If I want to return the same data as XML I can tack on a &format=xml at the end of the querystring which produces: <string>Hello Rick. Time is: 11/1/2011 12:11:13 PM</string> Cleaner URLs with Routing Syntax If you want cleaner URLs for each operation you can also configure custom routes on a per URL basis similar to the way that WCF REST does. To do this you need to add a new RouteHandler to your application's startup code in global.asax.cs one for each CallbackHandler based service you create: protected void Application_Start(object sender, EventArgs e) { CallbackHandlerRouteHandler.RegisterRoutes<StockService>(RouteTable.Routes); } With this code in place you can now add RouteUrl properties to any of your service methods. For the HelloWorld method that doesn't make a ton of sense but here is what a routed clean URL might look like in definition: [CallbackMethod(RouteUrl="stocks/HelloWorld/{name}")] public string HelloWorld(string name) { return "Hello " + name + ". Time is: " + DateTime.Now.ToString(); } The same URL I previously used now becomes a bit shorter and more readable with: http://localhost/WestWindWebAjax/HelloWorld/Rick It's an easy way to create cleaner URLs and still get the same functionality. Calling the Service with $.getJSON() Since the result produced is JSON you can now easily consume this data using jQuery's getJSON method. First we need a couple of scripts - jquery.js and ww.jquery.js in the page: <!DOCTYPE html> <html> <head> <link href="Css/Westwind.css" rel="stylesheet" type="text/css" /> <script src="scripts/jquery.min.js" type="text/javascript"></script> <script src="scripts/ww.jquery.min.js" type="text/javascript"></script> </head> <body> Next let's add a small HelloWorld example form (what else) that has a single textbox to type a name, a button and a div tag to receive the result: <fieldset> <legend>Hello World</legend> Please enter a name: <input type="text" name="txtHello" id="txtHello" value="" /> <input type="button" id="btnSayHello" value="Say Hello (POST)" /> <input type="button" id="btnSayHelloGet" value="Say Hello (GET)" /> <div id="divHelloMessage" class="errordisplay" style="display:none;width: 450px;" > </div> </fieldset> Then to call the HelloWorld method a little jQuery is used to hook the document startup and the button click followed by the $.getJSON call to retrieve the data from the server. <script type="text/javascript"> $(document).ready(function () { $("#btnSayHelloGet").click(function () { $.getJSON("SampleService.ashx", { Method: "HelloWorld", name: $("#txtHello").val() }, function (result) { $("#divHelloMessage") .text(result) .fadeIn(1000); }); });</script> .getJSON() expects a full URL to the endpoint of our service, which is the ASHX file. We can either provide a full URL (SampleService.ashx?Method=HelloWorld&name=Rick) or we can just provide the base URL and an object that encodes the query string parameters for us using an object map that has a property that matches each parameter for the server method. We can also use the clean URL routing syntax, but using the object parameter encoding actually is safer as the parameters will get properly encoded by jQuery. The result returned is whatever the result on the server method is - in this case a string. The string is applied to the divHelloMessage element and we're done. Obviously this is a trivial example, but it demonstrates the basics of getting a JSON response back to the browser. AJAX Post Syntax - using ajaxCallMethod() The previous example allows you basic control over the data that you send to the server via querystring parameters. This works OK for simple values like short strings, numbers and boolean values, but doesn't really work if you need to pass something more complex like an object or an array back up to the server. To handle traditional RPC type messaging where the idea is to map server side functions and results to a client side invokation, POST operations can be used. The easiest way to use this functionality is to use ww.jquery.js and the ajaxCallMethod() function. ww.jquery wraps jQuery's AJAX functions and knows implicitly how to call a CallbackServer method with parameters and parse the result. Let's look at another simple example that posts a simple value but returns something more interesting. Let's start with the service method: [CallbackMethod(RouteUrl="stocks/{symbol}")] public StockQuote GetStockQuote(string symbol) { Response.Cache.SetExpires(DateTime.UtcNow.Add(new TimeSpan(0, 2, 0))); StockServer server = new StockServer(); var quote = server.GetStockQuote(symbol); if (quote == null) throw new ApplicationException("Invalid Symbol passed."); return quote; } This sample utilizes a small StockServer helper class (included in the sample) that downloads a stock quote from Yahoo's financial site via plain HTTP GET requests and formats it into a StockQuote object. Lets create a small HTML block that lets us query for the quote and display it: <fieldset> <legend>Single Stock Quote</legend> Please enter a stock symbol: <input type="text" name="txtSymbol" id="txtSymbol" value="msft" /> <input type="button" id="btnStockQuote" value="Get Quote" /> <div id="divStockDisplay" class="errordisplay" style="display:none; width: 450px;"> <div class="label-left">Company:</div> <div id="stockCompany"></div> <div class="label-left">Last Price:</div> <div id="stockLastPrice"></div> <div class="label-left">Quote Time:</div> <div id="stockQuoteTime"></div> </div> </fieldset> The final result looks something like this:   Let's hook up the button handler to fire the request and fill in the data as shown: $("#btnStockQuote").click(function () { ajaxCallMethod("SampleService.ashx", "GetStockQuote", [$("#txtSymbol").val()], function (quote) { $("#divStockDisplay").show().fadeIn(1000); $("#stockCompany").text(quote.Company + " (" + quote.Symbol + ")"); $("#stockLastPrice").text(quote.LastPrice); $("#stockQuoteTime").text(quote.LastQuoteTime.formatDate("MMM dd, HH:mm EST")); }, onPageError); }); So we point at SampleService.ashx and the GetStockQuote method, passing a single parameter of the input symbol value. Then there are two handlers for success and failure callbacks.  The success handler is the interesting part - it receives the stock quote as a result and assigns its values to various 'holes' in the stock display elements. The data that comes back over the wire is JSON and it looks like this: { "Symbol":"MSFT", "Company":"Microsoft Corpora", "OpenPrice":26.11, "LastPrice":26.01, "NetChange":0.02, "LastQuoteTime":"2011-11-03T02:00:00Z", "LastQuoteTimeString":"Nov. 11, 2011 4:20pm" } which is an object representation of the data. JavaScript can evaluate this JSON string back into an object easily and that's the reslut that gets passed to the success function. The quote data is then applied to existing page content by manually selecting items and applying them. There are other ways to do this more elegantly like using templates, but here we're only interested in seeing how the data is returned. The data in the object is typed - LastPrice is a number and QuoteTime is a date. Note about the date value: JavaScript doesn't have a date literal although the JSON embedded ISO string format used above  ("2011-11-03T02:00:00Z") is becoming fairly standard for JSON serializers. However, JSON parsers don't deserialize dates by default and return them by string. This is why the StockQuote actually returns a string value of LastQuoteTimeString for the same date. ajaxMethodCallback always converts dates properly into 'real' dates and the example above uses the real date value along with a .formatDate() data extension (also in ww.jquery.js) to display the raw date properly. Errors and Exceptions So what happens if your code fails? For example if I pass an invalid stock symbol to the GetStockQuote() method you notice that the code does this: if (quote == null) throw new ApplicationException("Invalid Symbol passed."); CallbackHandler automatically pushes the exception message back to the client so it's easy to pick up the error message. Regardless of what kind of error occurs: Server side, client side, protocol errors - any error will fire the failure handler with an error object parameter. The error is returned to the client via a JSON response in the error callback. In the previous examples I called onPageError which is a generic routine in ww.jquery that displays a status message on the bottom of the screen. But of course you can also take over the error handling yourself: $("#btnStockQuote").click(function () { ajaxCallMethod("SampleService.ashx", "GetStockQuote", [$("#txtSymbol").val()], function (quote) { $("#divStockDisplay").fadeIn(1000); $("#stockCompany").text(quote.Company + " (" + quote.Symbol + ")"); $("#stockLastPrice").text(quote.LastPrice); $("#stockQuoteTime").text(quote.LastQuoteTime.formatDate("MMM dd, hh:mmt")); }, function (error, xhr) { $("#divErrorDisplay").text(error.message).fadeIn(1000); }); }); The error object has a isCallbackError, message and  stackTrace properties, the latter of which is only populated when running in Debug mode, and this object is returned for all errors: Client side, transport and server side errors. Regardless of which type of error you get the same object passed (as well as the XHR instance optionally) which makes for a consistent error retrieval mechanism. Specifying HttpVerbs You can also specify HTTP Verbs that are allowed using the AllowedHttpVerbs option on the CallbackMethod attribute: [CallbackMethod(AllowedHttpVerbs=HttpVerbs.GET | HttpVerbs.POST)] public string HelloWorld(string name) { … } If you're building REST style API's this might be useful to force certain request semantics onto the client calling. For the above if call with a non-allowed HttpVerb the request returns a 405 error response along with a JSON (or XML) error object result. The default behavior is to allow all verbs access (HttpVerbs.All). Passing in object Parameters Up to now the parameters I passed were very simple. But what if you need to send something more complex like an object or an array? Let's look at another example now that passes an object from the client to the server. Keeping with the Stock theme here lets add a method called BuyOrder that lets us buy some shares for a stock. Consider the following service method that receives an StockBuyOrder object as a parameter: [CallbackMethod] public string BuyStock(StockBuyOrder buyOrder) { var server = new StockServer(); var quote = server.GetStockQuote(buyOrder.Symbol); if (quote == null) throw new ApplicationException("Invalid or missing stock symbol."); return string.Format("You're buying {0} shares of {1} ({2}) stock at {3} for a total of {4} on {5}.", buyOrder.Quantity, quote.Company, quote.Symbol, quote.LastPrice.ToString("c"), (quote.LastPrice * buyOrder.Quantity).ToString("c"), buyOrder.BuyOn.ToString("MMM d")); } public class StockBuyOrder { public string Symbol { get; set; } public int Quantity { get; set; } public DateTime BuyOn { get; set; } public StockBuyOrder() { BuyOn = DateTime.Now; } } This is a contrived do-nothing example that simply echoes back what was passed in, but it demonstrates how you can pass complex data to a callback method. On the client side we now have a very simple form that captures the three values on a form: <fieldset> <legend>Post a Stock Buy Order</legend> Enter a symbol: <input type="text" name="txtBuySymbol" id="txtBuySymbol" value="GLD" />&nbsp;&nbsp; Qty: <input type="text" name="txtBuyQty" id="txtBuyQty" value="10" style="width: 50px" />&nbsp;&nbsp; Buy on: <input type="text" name="txtBuyOn" id="txtBuyOn" value="<%= DateTime.Now.ToString("d") %>" style="width: 70px;" /> <input type="button" id="btnBuyStock" value="Buy Stock" /> <div id="divStockBuyMessage" class="errordisplay" style="display:none"></div> </fieldset> The completed form and demo then looks something like this:   The client side code that picks up the input values and assigns them to object properties and sends the AJAX request looks like this: $("#btnBuyStock").click(function () { // create an object map that matches StockBuyOrder signature var buyOrder = { Symbol: $("#txtBuySymbol").val(), Quantity: $("#txtBuyQty").val() * 1, // number Entered: new Date() } ajaxCallMethod("SampleService.ashx", "BuyStock", [buyOrder], function (result) { $("#divStockBuyMessage").text(result).fadeIn(1000); }, onPageError); }); The code creates an object and attaches the properties that match the server side object passed to the BuyStock method. Each property that you want to update needs to be included and the type must match (ie. string, number, date in this case). Any missing properties will not be set but also not cause any errors. Pass POST data instead of Objects In the last example I collected a bunch of values from form variables and stuffed them into object variables in JavaScript code. While that works, often times this isn't really helping - I end up converting my types on the client and then doing another conversion on the server. If lots of input controls are on a page and you just want to pick up the values on the server via plain POST variables - that can be done too - and it makes sense especially if you're creating and filling the client side object only to push data to the server. Let's add another method to the server that once again lets us buy a stock. But this time let's not accept a parameter but rather send POST data to the server. Here's the server method receiving POST data: [CallbackMethod] public string BuyStockPost() { StockBuyOrder buyOrder = new StockBuyOrder(); buyOrder.Symbol = Request.Form["txtBuySymbol"]; ; int qty; int.TryParse(Request.Form["txtBuyQuantity"], out qty); buyOrder.Quantity = qty; DateTime time; DateTime.TryParse(Request.Form["txtBuyBuyOn"], out time); buyOrder.BuyOn = time; // Or easier way yet //FormVariableBinder.Unbind(buyOrder,null,"txtBuy"); var server = new StockServer(); var quote = server.GetStockQuote(buyOrder.Symbol); if (quote == null) throw new ApplicationException("Invalid or missing stock symbol."); return string.Format("You're buying {0} shares of {1} ({2}) stock at {3} for a total of {4} on {5}.", buyOrder.Quantity, quote.Company, quote.Symbol, quote.LastPrice.ToString("c"), (quote.LastPrice * buyOrder.Quantity).ToString("c"), buyOrder.BuyOn.ToString("MMM d")); } Clearly we've made this server method take more code than it did with the object parameter. We've basically moved the parameter assignment logic from the client to the server. As a result the client code to call this method is now a bit shorter since there's no client side shuffling of values from the controls to an object. $("#btnBuyStockPost").click(function () { ajaxCallMethod("SampleService.ashx", "BuyStockPost", [], // Note: No parameters - function (result) { $("#divStockBuyMessage").text(result).fadeIn(1000); }, onPageError, // Force all page Form Variables to be posted { postbackMode: "Post" }); }); The client simply calls the BuyStockQuote method and pushes all the form variables from the page up to the server which parses them instead. The feature that makes this work is one of the options you can pass to the ajaxCallMethod() function: { postbackMode: "Post" }); which directs the function to include form variable POST data when making the service call. Other options include PostNoViewState (for WebForms to strip out WebForms crap vars), PostParametersOnly (default), None. If you pass parameters those are always posted to the server except when None is set. The above code can be simplified a bit by using the FormVariableBinder helper, which can unbind form variables directly into an object: FormVariableBinder.Unbind(buyOrder,null,"txtBuy"); which replaces the manual Request.Form[] reading code. It receives the object to unbind into, a string of properties to skip, and an optional prefix which is stripped off form variables to match property names. The component is similar to the MVC model binder but it's independent of MVC. Returning non-JSON Data CallbackHandler also supports returning non-JSON/XML data via special return types. You can return raw non-JSON encoded strings like this: [CallbackMethod(ReturnAsRawString=true,ContentType="text/plain")] public string HelloWorldNoJSON(string name) { return "Hello " + name + ". Time is: " + DateTime.Now.ToString(); } Calling this method results in just a plain string - no JSON encoding with quotes around the result. This can be useful if your server handling code needs to return a string or HTML result that doesn't fit well for a page or other UI component. Any string output can be returned. You can also return binary data. Stream, byte[] and Bitmap/Image results are automatically streamed back to the client. Notice that you should set the ContentType of the request either on the CallbackMethod attribute or using Response.ContentType. This ensures the Web Server knows how to display your binary response. Using a stream response makes it possible to return any of data. Streamed data can be pretty handy to return bitmap data from a method. The following is a method that returns a stock history graph for a particular stock over a provided number of years: [CallbackMethod(ContentType="image/png",RouteUrl="stocks/history/graph/{symbol}/{years}")] public Stream GetStockHistoryGraph(string symbol, int years = 2,int width = 500, int height=350) { if (width == 0) width = 500; if (height == 0) height = 350; StockServer server = new StockServer(); return server.GetStockHistoryGraph(symbol,"Stock History for " + symbol,width,height,years); } I can now hook this up into the JavaScript code when I get a stock quote. At the end of the process I can assign the URL to the service that returns the image into the src property and so force the image to display. Here's the changed code: $("#btnStockQuote").click(function () { var symbol = $("#txtSymbol").val(); ajaxCallMethod("SampleService.ashx", "GetStockQuote", [symbol], function (quote) { $("#divStockDisplay").fadeIn(1000); $("#stockCompany").text(quote.Company + " (" + quote.Symbol + ")"); $("#stockLastPrice").text(quote.LastPrice); $("#stockQuoteTime").text(quote.LastQuoteTime.formatDate("MMM dd, hh:mmt")); // display a stock chart $("#imgStockHistory").attr("src", "stocks/history/graph/" + symbol + "/2"); },onPageError); }); The resulting output then looks like this: The charting code uses the new ASP.NET 4.0 Chart components via code to display a bar chart of the 2 year stock data as part of the StockServer class which you can find in the sample download. The ability to return arbitrary data from a service is useful as you can see - in this case the chart is clearly associated with the service and it's nice that the graph generation can happen off a handler rather than through a page. Images are common resources, but output can also be PDF reports, zip files for downloads etc. which is becoming increasingly more common to be returned from REST endpoints and other applications. Why reinvent? Obviously the examples I've shown here are pretty basic in terms of functionality. But I hope they demonstrate the core features of AJAX callbacks that you need to work through in most applications which is simple: return data, send back data and potentially retrieve data in various formats. While there are other solutions when it comes down to making AJAX callbacks and servicing REST like requests, I like the flexibility my home grown solution provides. Simply put it's still the easiest solution that I've found that addresses my common use cases: AJAX JSON RPC style callbacks Url based access XML and JSON Output from single method endpoint XML and JSON POST support, querystring input, routing parameter mapping UrlEncoded POST data support on callbacks Ability to return stream/raw string data Essentially ability to return ANYTHING from Service and pass anything All these features are available in various solutions but not together in one place. I've been using this code base for over 4 years now in a number of projects both for myself and commercial work and it's served me extremely well. Besides the AJAX functionality CallbackHandler provides, it's also an easy way to create any kind of output endpoint I need to create. Need to create a few simple routines that spit back some data, but don't want to create a Page or View or full blown handler for it? Create a CallbackHandler and add a method or multiple methods and you have your generic endpoints.  It's a quick and easy way to add small code pieces that are pretty efficient as they're running through a pretty small handler implementation. I can have this up and running in a couple of minutes literally without any setup and returning just about any kind of data. Resources Download the Sample NuGet: Westwind Web and AJAX Utilities (Westwind.Web) ajaxCallMethod() Documentation Using the AjaxMethodCallback WebForms Control West Wind Web Toolkit Home Page West Wind Web Toolkit Source Code © Rick Strahl, West Wind Technologies, 2005-2011Posted in ASP.NET  jQuery  AJAX   Tweet (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();

    Read the article

  • OpenGL extension vs OpenGL core

    - by user209347
    I was doubting: I'm writing a cross-platform engine OpenGL C++, I figured out windows forces the developers to access OpenGL features above 1.1 through extensions. Now the thing is, on Linux, I know that I can directly access functions if the version supports it through glext.h and opengl version. The problem is that if on Linux, the core doesn't support it, is it possible there is an extensions that supports the same functionality, in my case vertex buffer objects? I'm doing something like this: Windows: (hashdeck) define glFunction functionpointer_to_the_extension (apparently the layout changes font size if I use #) Linux: Since glext already defined glFunction, I can write in client code glFunction, and compile it both on Windows AND Linux without changing a single line in my client code using the engine (my goal). Now the thing is, I saw a tutorial use only the extension on Linux, and not checking for the opengl implementation version. If the functionality is available in the core, is it also available as extension (VBO's e.g.)? Or is an extension something you never know is available? I want to write an engine that gets all the possibilities on hardware, so I need to check (on Linux) for extensions as well as core version for possible functionality implementation.

    Read the article

< Previous Page | 303 304 305 306 307 308 309 310 311 312 313 314  | Next Page >