Search Results

Search found 19975 results on 799 pages for 'disk queue length'.

Page 392/799 | < Previous Page | 388 389 390 391 392 393 394 395 396 397 398 399  | Next Page >

  • Is php|architect any good?

    - by Andrew Heath
    Kind of a hard topic to search for, as architect turns up a lot about software architects instead. After 8 months of PHP self-study, I finally stumbled across the php|architect site. The length of time it took me to find it makes me suspicious of its quality. 3 related questions: do professional PHP coders read/care about php|architect? is it a good source for PHP beginners? assuming yes to either of the above, how far back in the archives to articles remain relevant? (ex: does stuff written about PHP4 still matter?)

    Read the article

  • How can I install a package without installing some dependencies?

    - by Alex
    I'm trying to install the package LaTeXila, and the output looks like this: $ sudo apt-get install latexila --no-install-recommends Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: latexila-data latexmk luatex tex-common texlive-base texlive-binaries texlive-common texlive-doc-base texlive-latex-base Suggested packages: rubber texlive-latex-extra debhelper Recommended packages: texlive texlive-latex-recommended texlive-luatex lmodern texlive-latex-base-doc The following NEW packages will be installed: latexila latexila-data latexmk luatex tex-common texlive-base texlive-binaries texlive-common texlive-doc-base texlive-latex-base 0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. Need to get 29.3 MB of archives. After this operation, 74.5 MB of additional disk space will be used. Do you want to continue [Y/n]? I don't want to install the texlive packages. I've installed texlive manually from http://www.tug.org/texlive/. Any suggestions?

    Read the article

  • Running UBUNTU from a USB Flash drive on Acer

    - by Byron Blue
    I've made a bootable USB flash drive to run UBUNTU. The drive works fine on MOST laptops/computers I try: It does not want to start on my (favourite) Acer Aspire 5745 (Windows 7 64 bit). The opening screen has SYSLINUX 4.06 EDD 4.06-pre1 (...) and simply sits there. I was using UBUNTU 12.04.1 64 bit until I tried booting to the Acer this morning. I've tried booting to 10.04 as well (saw this as a fix on a discussion) with the same result. I really want to use the Acer for development and do not want to wipe my Windows 7 from the hard disk. Are there any solutions/answers?

    Read the article

  • Raycasting mouse coordinates to rotated object?

    - by SPL
    I am trying to cast a ray from my mouse to a plane at a specified position with a known width and length and height. I know that you can use the NDC (Normalized Device Coordinates) to cast ray but I don't know how can I detect if the ray actually hit the plane and when it did. The plane is translated -100 on the Y and rotated 60 on the X then translated again -100. Can anyone please give me a good tutorial on this? For a complete noob! I am almost new to matrix and vector transformations.

    Read the article

  • Threads are facing deadlock in socket program [migrated]

    - by ankur.trapasiya
    I am developing one program in which a user can download a number of files. Now first I am sending the list of files to the user. So from the list user selects one file at a time and provides path where to store that file. In turn it also gives the server the path of file where does it exist. I am following this approach because I want to give stream like experience without file size limitation. Here is my code.. 1) This is server which gets started each time I start my application public class FileServer extends Thread { private ServerSocket socket = null; public FileServer() { try { socket = new ServerSocket(Utils.tcp_port); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void run() { try { System.out.println("request received"); new FileThread(socket.accept()).start(); } catch (IOException ex) { ex.printStackTrace(); } } } 2) This thread runs for each client separately and sends the requested file to the user 8kb data at a time. public class FileThread extends Thread { private Socket socket; private String filePath; public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public FileThread(Socket socket) { this.socket = socket; System.out.println("server thread" + this.socket.isConnected()); //this.filePath = filePath; } @Override public void run() { // TODO Auto-generated method stub try { ObjectInputStream ois=new ObjectInputStream(socket.getInputStream()); try { //************NOTE filePath=(String) ois.readObject(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } File f = new File(this.filePath); byte[] buf = new byte[8192]; InputStream is = new FileInputStream(f); BufferedInputStream bis = new BufferedInputStream(is); ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream()); int c = 0; while ((c = bis.read(buf, 0, buf.length)) > 0) { oos.write(buf, 0, c); oos.flush(); // buf=new byte[8192]; } oos.close(); //socket.shutdownOutput(); // client.shutdownOutput(); System.out.println("stop"); // client.shutdownOutput(); ois.close(); // Thread.sleep(500); is.close(); bis.close(); socket.close(); } catch (IOException ex) { ex.printStackTrace(); } } } NOTE: here filePath represents the path of the file where it exists on the server. The client who is connecting to the server provides this path. I am managing this through sockets and I am successfully receiving this path. 3) FileReceiverThread is responsible for receiving the data from the server and constructing file from this buffer data. public class FileReceiveThread extends Thread { private String fileStorePath; private String sourceFile; private Socket socket = null; public FileReceiveThread(String ip, int port, String fileStorePath, String sourceFile) { this.fileStorePath = fileStorePath; this.sourceFile = sourceFile; try { socket = new Socket(ip, port); System.out.println("receive file thread " + socket.isConnected()); } catch (IOException ex) { ex.printStackTrace(); } } @Override public void run() { try { ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream()); oos.writeObject(sourceFile); oos.flush(); // oos.close(); File f = new File(fileStorePath); OutputStream os = new FileOutputStream(f); BufferedOutputStream bos = new BufferedOutputStream(os); byte[] buf = new byte[8192]; int c = 0; //************ NOTE ObjectInputStream ois = new ObjectInputStream( socket.getInputStream()); while ((c = ois.read(buf, 0, buf.length)) > 0) { // ois.read(buf); bos.write(buf, 0, c); bos.flush(); // buf = new byte[8192]; } ois.close(); oos.close(); // os.close(); bos.close(); socket.close(); //Thread.sleep(500); } catch (IOException ex) { ex.printStackTrace(); } } } NOTE : Now the problem that I am facing is at the first time when the file is requested the outcome of the program is same as my expectation. I am able to transmit any size of file at first time. Now when the second file is requested (e.g. I have sent file a,b,c,d to the user and user has received file a successfully and now he is requesting file b) the program faces deadlock at this situation. It is waiting for socket's input stream. I put breakpoint and tried to debug it but it is not going in FileThread's run method second time. I could not find out the mistake here. Basically I am making a LAN Messenger which works on LAN. I am using SWT as UI framework.

    Read the article

  • /etc/init.d Character Encoding Issue

    - by Ryan Rosario
    I have a script in /etc/init.d on an EC2 image that, on machine startup, pulls in source code via SVN, builds it, and then runs it using Ant. The source code is Java. Within this code is a call to the Weka library which writes a file to disk. On most Ubuntu AMIs, and my home machines' versions of Ubuntu, there is no issue. The problem is that with certain versions/AMIs of Ubuntu, Unicode characters in the file are replaced with question marks ('?'). If I run the job manually on the trouble instance, Unicode is output to file correctly, but not when run from /etc/init.d. What might be causing this problem and how can I fix it so that Unicode characters appear correctly in files written from /etc/init.d processes?

    Read the article

  • Are there plans to use the empty space in the SoundMenu?

    - by Kyle Clarke
    There seems to be roughly 4 lines of space next to the album art. However only 3 are used. Song Title Artist Album If nothing is planned for the 4th line. I propose that it is used for track time/length. This way you can tell how far along a song is without the need of a scrub bar. Unrelated, but I feel that the play-lists section should display how many songs are in that play list. Some of my play lists have no songs, and without realising this, it seems like a bug that the songs wont play.

    Read the article

  • I can't figure out how to run ubuntu .iso from thumbdrive?

    - by Judge Cole Stanley
    I downloaded Ubuntu 12.04.1 and I can't find a solid way to run it from the disk version of Ubuntu 11.04 for a clean install. I think the hard drive is messed up, or else I would install 11.04, but it won't work. So I wanna install 12.04.1 from a thumbdrive, so I can actually use this computer without using the demo and installing everything when it dies, or shuts off... Please help? I want to make it at least bootable from a thumbdrive, just so I can lightly browse the internet and what not... it doesn't have to be a hard install.

    Read the article

  • Run fstrim from LiveCD

    - by CharlesW
    A few years ago I installed Ubuntu 10.04 with LVM + LUKS on a system with SSD, TRIM was not enabled. Now I want to install Ubuntu 12.04 on the same SSD. I have found a guide explaining how to enable TRIM on Ubuntu 12.04 with LVM + LUKS, but before installing the new system, I want to clean out all the "marked for deletion" data generated under Ubuntu 10.04, to make the disk fast as new. My plan is to boot a Ubuntu 12.04 LiveCD and create a new ext4 filesystem on the SSD, then mount the filesystem and run fstrim on it. After rebooting the LiveCD I will install the system as normal, and enable TRIM. Can anybody say if this will work?

    Read the article

  • Is php|architect any good?

    - by Andrew Heath
    Kind of a hard topic to search for, as architect turns up a lot about software architects instead. After 8 months of PHP self-study, I finally stumbled across the php|architect site. The length of time it took me to find it makes me suspicious of its quality. 3 related questions: do professional PHP coders read/care about php|architect? is it a good source for PHP beginners? assuming yes to either of the above, how far back in the archives to articles remain relevant? (ex: does stuff written about PHP4 still matter?)

    Read the article

  • Save BIG on Storage &mdash; with Oracle Advanced Compression

    - by [email protected]
    Recently, we published a podcast revealing just how much Oracle benefits from its internal use of Oracle Database 11g and Advanced Compression. With hundreds of TB and millions of dollars saved, Oracle Advanced Compression is dramatically reducing storage costs and substantially improving efficiency across the company. Now, here's your chance: Meet the experts, have your questions answered by them and immediately start using your storage more efficiently: On April 14th, join me for a live Webcast with Oracle's Tim Shetler, Vice President of Product Management and Bill Hodak, Principal Product Manager, to learn just how Oracle Advanced Compression can Reduce disk space requirements for all types of data Improve query and storage performance Lower storage costs throughout the datacenter Register here! var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); try { var pageTracker = _gat._getTracker("UA-13185312-1"); pageTracker._trackPageview(); } catch(err) {}

    Read the article

  • Can I remove "Free space" text from the Nautilus status bar?

    - by DisgruntledGoat
    I want to remove the part in Nautilus that shows free disk space. In theory it may useful but it's so badly designed, every time I select some files my eye gets drawn to "15 GB" instead of the actual size of the files. And with no files selected, it says something like "24 items, Free space 15GB" which at a quick glance looks like the total size of the files. I've looked through the preferences and don't see anything. I'm using Ubuntu 10.10 with Nautilus 2.32.0.

    Read the article

  • HTG Explains: Why Do Hard Drives Show the Wrong Capacity in Windows?

    - by Chris Hoffman
    If you’ve ever purchased a computer with a hard disk capacity of 500 GB and opened Windows Explorer only to find that its capacity looked more like 440 GB, you may be wondering where all those gigabytes went. There are several reasons Windows could display the wrong amount of available space, from invisible shadow files, formatting overhead, and hidden recovery partitions to misleading (though technically accurate) storage capacities advertised by hard drive manufacturers. Image Credit: Norlando Pobre HTG Explains: Why Do Hard Drives Show the Wrong Capacity in Windows? Java is Insecure and Awful, It’s Time to Disable It, and Here’s How What Are the Windows A: and B: Drives Used For?

    Read the article

  • Installation-Allocate drive space/Boot Loader

    - by user10134
    When I try to install Ubuntu 10.10 from the official livedisc I got in the mail, when I get to the "Allocate Disk Space" step I cannot get it to work. I shrank my win7 partition so I have unallocated space, then I tried using the space while it is formatted in NTFS, but the partitions will not show up in the box. /dev/sda is selected under boot loader, and I can't select anything else, but the partition box is blank so when I click "install ubuntu" it just says: "No root file system is defined. Please correct this from the partitioning menu." -I am trying to dual-boot win7 and ubuntu, but I was never asked in the install process whether I would like to install just ubuntu or dual-boot?

    Read the article

  • How can I create a partition without the usage of Live CD nor USB?

    - by Ariel
    ¿Cómo crear una partición sin usar live CD ni USB? Is it possible to create a partition when using the system? When I try to do it on gParted, it seems that the options are disabled because of the disk is mounted and it cannot be unmounted because of I am using it in the system. I wish to create a new partition without removing or affecting the file system; just creating a new partition, but without the need to use a Live CD or USB. ¿Es posible crear una partición estando en el sistema? Ya que cuando lo intento desde GParted, al parecer están desactivadas las opciones porque la unidad está montada y no se puede desmontar ya que estoy usando el sistema. Quiero crear una nueva partición pero sin quitar o afectar el sistema de archivos; sólo crear una nueva partición, pero sin live CD o USB.

    Read the article

  • No root file system - Alternate CD + LVM

    - by Carlos
    I am trying to install 11.10 as dual boot with Windows 7. I have all partitioned well as you can see here: http://www.flickr.com/photos/42897978@N00/7111180385/ I burned the Alternate CD ISO to a CD. Boot from it and followed instructions to Partitioning. There, I configured the LVM partitions as follows: Volume Group ubuntu-vg - Uses Physical Volume /dev/sda7 380GB - Provides Logical Volume home-lv 60GB - Provides Logical Volume root-lv 60GB - Provides Logical Volume swap-lv 6GB That is all I want (note that my /boot is outside of LVM) Then when I say that all is Ok and to write it to disk and continue with the installation, I get the following error. !! Partition Disks No root file system No root file system is defined Please correct this from the partitioning menu. What should I fix and how? I tried issuing the "Revert changes to partitions", but nothing happens. It seems that the LVM configuration has already been written to the CD. HELP!!

    Read the article

  • Need Help Unable to Mount Location

    - by Don't ASk Ubun
    I am not able to start Windows and am using a DVD copy of Ubuntu to start up. I see my 750 GB Hard Disk, but if I click it i get this error: Error mounting: mount exited with exit code 13: ntfs_attr_pread_i: ntfs_pread failed: Input/output error Failed to read NTFS $Bitmap: Input/output error NTFS is either inconsistent, or there is a hardware fault, or it's a SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows then reboot into Windows twice. The usage of the /f parameter is very important! If the device is a SoftRAID/FakeRAID then first activate it and mount a different device under the /dev/mapper/ directory, (e.g. /dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation for more details. After googling for a while I think I need to do sudo apt-get install ntfsprogs but when I try that: E: Package 'ntfsprogs' has no installation candidate My problem is a lot like this thread

    Read the article

  • Ubuntu install doesn't recognize kingston SSDnow sv 200 90g

    - by Quique Garcia
    I'm trying install Ubuntu 12.04 on my new Kingston SSD Now SVP200S3/90G, but the installer doesn't list this disk to be installed. However gparted let me do any partitioning operation correctly. I've tryed with Ubuntu Studio and Ubuntu Desktop on different machines: Lenovo ThinkPad T400, Lenovo ThinkStation C20, MoBo ASUS Crosshair V formula. SATA controller in all machines has been set to AHCI and IDE operation and different SATA ports with no luck. The firmware on the SSD has been updated to V.503xxx (latest on kingston page) Any help is appreciated, regards!

    Read the article

  • The Most Useful Bookmarklets to Enhance Your Browsing Experience

    - by Lori Kaufman
    Bookmarklets are JavaScript links you can place on your browser’s toolbar that add one-click functionality to the browser or webpage. They are free and help make repetitive tasks in your browser quicker and easier to perform. Use bookmarklets to add functionality to your browser, such as modifying the appearance of a webpage, extracting data from a webpage, and search for highlighted text in a search engine or online encyclopedia. We’ve collected some links to useful bookmarklets here to enhance your browsing experience. 7 Ways To Free Up Hard Disk Space On Windows HTG Explains: How System Restore Works in Windows HTG Explains: How Antivirus Software Works

    Read the article

  • Anatomy of a .NET Assembly - CLR metadata 2

    - by Simon Cooper
    Before we look any further at the CLR metadata, we need a quick diversion to understand how the metadata is actually stored. Encoding table information As an example, we'll have a look at a row in the TypeDef table. According to the spec, each TypeDef consists of the following: Flags specifying various properties of the class, including visibility. The name of the type. The namespace of the type. What type this type extends. The field list of this type. The method list of this type. How is all this data actually represented? Offset & RID encoding Most assemblies don't need to use a 4 byte value to specify heap offsets and RIDs everywhere, however we can't hard-code every offset and RID to be 2 bytes long as there could conceivably be more than 65535 items in a heap or more than 65535 fields or types defined in an assembly. So heap offsets and RIDs are only represented in the full 4 bytes if it is required; in the header information at the top of the #~ stream are 3 bits indicating if the #Strings, #GUID, or #Blob heaps use 2 or 4 bytes (the #US stream is not accessed from metadata), and the rowcount of each table. If the rowcount for a particular table is greater than 65535 then all RIDs referencing that table throughout the metadata use 4 bytes, else only 2 bytes are used. Coded tokens Not every field in a table row references a single predefined table. For example, in the TypeDef extends field, a type can extend another TypeDef (a type in the same assembly), a TypeRef (a type in a different assembly), or a TypeSpec (an instantiation of a generic type). A token would have to be used to let us specify the table along with the RID. Tokens are always 4 bytes long; again, this is rather wasteful of space. Cutting the RID down to 2 bytes would make each token 3 bytes long, which isn't really an optimum size for computers to read from memory or disk. However, every use of a token in the metadata tables can only point to a limited subset of the metadata tables. For the extends field, we only need to be able to specify one of 3 tables, which we can do using 2 bits: 0x0: TypeDef 0x1: TypeRef 0x2: TypeSpec We could therefore compress the 4-byte token that would otherwise be needed into a coded token of type TypeDefOrRef. For each type of coded token, the least significant bits encode the table the token points to, and the rest of the bits encode the RID within that table. We can work out whether each type of coded token needs 2 or 4 bytes to represent it by working out whether the maximum RID of every table that the coded token type can point to will fit in the space available. The space available for the RID depends on the type of coded token; a TypeOrMethodDef coded token only needs 1 bit to specify the table, leaving 15 bits available for the RID before a 4-byte representation is needed, whereas a HasCustomAttribute coded token can point to one of 18 different tables, and so needs 5 bits to specify the table, only leaving 11 bits for the RID before 4 bytes are needed to represent that coded token type. For example, a 2-byte TypeDefOrRef coded token with the value 0x0321 has the following bit pattern: 0 3 2 1 0000 0011 0010 0001 The first two bits specify the table - TypeRef; the other bits specify the RID. Because we've used the first two bits, we've got to shift everything along two bits: 000000 1100 1000 This gives us a RID of 0xc8. If any one of the TypeDef, TypeRef or TypeSpec tables had more than 16383 rows (2^14 - 1), then 4 bytes would need to be used to represent all TypeDefOrRef coded tokens throughout the metadata tables. Lists The third representation we need to consider is 1-to-many references; each TypeDef refers to a list of FieldDef and MethodDef belonging to that type. If we were to specify every FieldDef and MethodDef individually then each TypeDef would be very large and a variable size, which isn't ideal. There is a way of specifying a list of references without explicitly specifying every item; if we order the MethodDef and FieldDef tables by the owning type, then the field list and method list in a TypeDef only have to be a single RID pointing at the first FieldDef or MethodDef belonging to that type; the end of the list can be inferred by the field list and method list RIDs of the next row in the TypeDef table. Going back to the TypeDef If we have a look back at the definition of a TypeDef, we end up with the following reprensentation for each row: Flags - always 4 bytes Name - a #Strings heap offset. Namespace - a #Strings heap offset. Extends - a TypeDefOrRef coded token. FieldList - a single RID to the FieldDef table. MethodList - a single RID to the MethodDef table. So, depending on the number of entries in the heaps and tables within the assembly, the rows in the TypeDef table can be as small as 14 bytes, or as large as 24 bytes. Now we've had a look at how information is encoded within the metadata tables, in the next post we can see how they are arranged on disk.

    Read the article

  • Code and Slides: Techniques, Strategies, and Patterns for Structuring JavaScript Code

    - by dwahlin
    This presentation was given at the spring 2012 DevConnections conference in Las Vegas and is based on my Structuring JavaScript Code course from Pluralsight. The goal of the presentation is to show how closures combined with code patterns can be used to provide structure to JavaScript code and make it more re-useable, maintainable, and less susceptible to naming conflicts.  Topics covered include: Closures Using Object literals Namespaces The Prototype Pattern The Revealing Module Pattern The Revealing Prototype Pattern View more of my presentations here. Sample code from the presentation can be found here. Check out the full-length course on the topic at Pluralsight.com.

    Read the article

  • Adobe-Flash-plugin freezes when skipping ahead

    - by piedro
    I am using Firefox 7 and the new official Adobe Flash 64-bit plugin from the Ubuntu Partner repository. It's the adobe-flash package. It works nicely on the first look but when I try to skip ahead in any YouTube video (by clicking on the video progress bar) sound will go on but the video simply freezes at the position it was just before skipping. This is really annoying because I really don't want to watch every video full length. Now maybe there's cleanup work to do? I removed every Flash-related package from the package manager. Maybe it's Firefox? I couldn't find any hint. Maybe it's the video manager (display manager)? I am using KDE on an Ubuntu Natty install. I also enabled hardware acceleration with libdvpau1: sudo bash -c "echo 'EnableLinuxHWVideoDecode=1' >> /etc/adobe/mms.cfg" (this seems to have no effect at all ...) Ubuntu Natty 64-bit, Firefox 7, Flash 11.01 )

    Read the article

  • Visit the Museum of Endangered Sounds for a Bit of Nostalgic Sound-Based Fun

    - by Asian Angel
    Are you ready for a trip down memory lane? Then you will definitely want to visit the Museum of Endangered Sounds where you can have fun listening to the classic sounds of yesteryear! Enjoy listening to the sound of dial-up, the login sound of Windows 95, that classic Nokia ringtone, and more at the Museum. Click on a picture to play the sound, then click on the picture again to stop it. The sounds will continue to play until you click on the chosen picture… Museum of Endangered Sounds [via Neatorama] Browse on over to another of our ETC posts for more nostalgic sound fun: Hack Your Kindle for Easy Font Customization HTG Explains: What Is RSS and How Can I Benefit From Using It? HTG Explains: Why You Only Have to Wipe a Disk Once to Erase It

    Read the article

  • Make Your Own Paper-Craft Enigma Machine [DIY Project]

    - by Asian Angel
    If you love tinkering around with ciphers and want a fun DIY project for the upcoming weekend, then we have just the thing for you. Using common household items you can construct your own personal Enigma machine that will be completely compatible with all the settings of a real Enigma machine (models I, M1, M2 and M3). Visit the second link below for the step-by-step instructions and enjoy putting together this awesome DIY project! PDF Templates for the Enigma Machine Note: This is a direct link for the PDF file itself and the templates are sized for printing on 2 A4 sheets of paper. Enigma/Paper Enigma Instruction Homepage [via BoingBoing] HTG Explains: What Is RSS and How Can I Benefit From Using It? HTG Explains: Why You Only Have to Wipe a Disk Once to Erase It HTG Explains: Learn How Websites Are Tracking You Online

    Read the article

  • Integrating Windows Form Click Once Application into SharePoint 2007 &ndash; Part 2 of 4

    - by Kelly Jones
    In my last post, I explained why we decided to use a Click Once application to solve our business problem. To quickly review, we needed a way for our business users to upload documents to a SharePoint 2007 document library in mass, set the meta data, set the permissions per document, and to do so easily. Let’s look at the pieces that make up our solution.  First, we have the Windows Form application.  This app is deployed using Click Once and calls SharePoint web services in order to upload files and then calls web services to set the meta data (SharePoint columns and permissions).  Second, we have a custom action.  The custom action is responsible for providing our users a link that will launch the Windows app, as well as passing values to it via the query string.  And lastly, we have the web services that the Windows Form application calls.  For our solution, we used both out of the box web services and a custom web service in order to set the column values in the document library as well as the permissions on the documents. Now, let’s look at the technical details of each of these pieces.  (All of the code is downloadable from here: )   Windows Form application deployed via Click Once The Windows Form application, called “Custom Upload”, has just a few classes in it: Custom Upload -- the form FileList.xsd -- the dataset used to track the names of the files and their meta data values SharePointUpload -- this class handles uploading the file SharePointUpload uses an HttpWebRequest to transfer the file to the web server. We had to change this code from a WebClient object to the HttpWebRequest object, because we needed to be able to set the time out value.  public bool UploadDocument(string localFilename, string remoteFilename) { bool result = true; //Need to use an HttpWebRequest object instead of a WebClient object // so we can set the timeout (WebClient doesn't allow you to set the timeout!) HttpWebRequest req = (HttpWebRequest)WebRequest.Create(remoteFilename); try { req.Method = "PUT"; req.Timeout = 60 * 1000; //convert seconds to milliseconds req.AllowWriteStreamBuffering = true; req.Credentials = System.Net.CredentialCache.DefaultCredentials; req.SendChunked = false; req.KeepAlive = true; Stream reqStream = req.GetRequestStream(); FileStream rdr = new FileStream(localFilename, FileMode.Open, FileAccess.Read); byte[] inData = new byte[4096]; int bytesRead = rdr.Read(inData, 0, inData.Length); while (bytesRead > 0) { reqStream.Write(inData, 0, bytesRead); bytesRead = rdr.Read(inData, 0, inData.Length); } reqStream.Close(); rdr.Close(); System.Net.HttpWebResponse response = (HttpWebResponse)req.GetResponse(); if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created) { String msg = String.Format("An error occurred while uploading this file: {0}\n\nError response code: {1}", System.IO.Path.GetFileName(localFilename), response.StatusCode.ToString()); LogWarning(msg, "2ACFFCCA-59BA-40c8-A9AB-05FA3331D223"); result = false; } } catch (Exception ex) { LogException(ex, "{E9D62A93-D298-470d-A6BA-19AAB237978A}"); result = false; } return result; } The class also contains the LogException() and LogWarning() methods. When the application is launched, it parses the query string for some initial values.  The query string looks like this: string queryString = "Srv=clickonce&Sec=N&Doc=DMI&SiteName=&Speed=128000&Max=50"; This Srv is the path to the server (my Virtual Machine is name “clickonce”), the Sec is short for security – meaning HTTPS or HTTP, the Doc is the shortcut for which document library to use, and SiteName is the name of the SharePoint site.  Speed is used to calculate an estimate for download speed for each file.  We added this so our users uploading documents would realize how long it might take for clients in remote locations (using slow WAN connections) to download the documents. The last value, Max, is the maximum size that the SharePoint site will allow documents to be.  This allowed us to give users a warning that a file is too large before we even attempt to upload it. Another critical piece is the meta data collection.  We organized our site using SharePoint content types, so when the app loads, it gets a list of the document library’s content types.  The user then select one of the content types from the drop down list, and then we query SharePoint to get a list of the fields that make up that content type.  We used both an out of the box web service, and one that we custom built, in order to get these values. Once we have the content type fields, we then add controls to the form.  Which type of control we add depends on the data type of the field.  (DateTime pickers for date/time fields, etc)  We didn’t write code to cover every data type, since we were working with a limited set of content types and field data types. Here’s a screen shot of the Form, before and after someone has selected the content types and our code has added the custom controls:     The other piece of meta data we collect is the in the upper right corner of the app, “Users with access”.  This box lists the different SharePoint Groups that we have set up and by checking the boxes, the user can set the permissions on the uploaded documents. All of this meta data is collected and submitted to our custom web service, which then sets the values on the documents on the list.  We’ll look at these web services in a future post. In the next post, we’ll walk through the Custom Action we built.

    Read the article

< Previous Page | 388 389 390 391 392 393 394 395 396 397 398 399  | Next Page >