Search Results

Search found 23648 results on 946 pages for 'tab size'.

Page 503/946 | < Previous Page | 499 500 501 502 503 504 505 506 507 508 509 510  | Next Page >

  • How to stop gecko-mediaplayer from buffering endlessly?

    - by mario
    I'm using the gecko-mediaplayer plugin (formerly "mplayerplug-in"). The totem plugin was not always working correctly with Opera, and I'm actually depending on the [Copy URL] feature of gecko-mediaplayer. However that plugin does some inept buffering of videos. It seems to default to 20% caching regardless of what you set in the preferences window. This is quite annoying for big video files. But appearantly it's by design http://groups.google.com/group/gecko-mediaplayer/browse_thread/thread/b7f0f5a3cedc8979 The Gentoo forums listed some workaround http://forums.gentoo.org/viewtopic-t-816690.html - but ~/.config/gecko-mediaplayer/gecko-mediaplayer.conf is not working in the Ubuntu version. Does anyone know the actual way to configure the cache= size. Which is the real configuration filename under Ubuntu?

    Read the article

  • Ubuntu doesn't give the intended screen resolution

    - by JMCF125
    I have recently created a Ubuntu 12.04.2 64 bit virtual machine on VirtualBox, and I am not very used to Linux (I used Linux Mint for a few weeks some time ago), so please refer the full name of stuff, not just "the what-not-command". The problem is I can't set the full resolution my computer supports (I think it is 1366 by 768), I have found similar questions and tried most of the respective solutions, thy did not work. If I type xrandr to the terminal I get: xrandr: Failed to get size of gamma for output default Screen 0: minimum 640 x 480, current 1024 x 768, maximum 1024 x 768 default connected 1024x768+0+0 0mm x 0mm 1024x768 61.0* 800x600 61.0 640x480 60.0 As you can see, the maximum is too low. And in the settings of the screen (I mean, with GUI) only 1024x768 and 800x600 appear. I don't remember exactly which answer of those questions, but it was one in the terminal (again, with xrandr) that made the resolution I wanted appear (although it gave an error when selected, not even changing to the 1366x768 resolution first and then back to 1024x768).

    Read the article

  • How to install Intel VGA drive..?

    - by Ary Catur Wicaksono
    how to install intel VGA drive..?? I've been searching on google but did not see too I've been trying to ask the ubuntu forum in Indonesia. but they did not reply my post.. is there anything that can help me? *I am sorry my English is rather chaotic arthur@Chunx:~$ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation 82G33/G31 Express Integrated Graphics Controller (rev 10) arthur@Chunx:~$ sudo lshw -c display [sudo] password for arthur: *-display description: VGA compatible controller product: 82G33/G31 Express Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 version: 10 width: 32 bits clock: 33MHz capabilities: msi pm vga_controller bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:42 memory:fea80000-feafffff ioport:dc00(size=8) memory:e0000000-efffffff memory:fe900000-fe9fffff arthur@Chunx:~$ sudo apt-get install xserver-xorg-video-intel Sedang membaca daftar paket... Selesai Membangun pohon ketergantungan Membaca informasi yang tersedia... Selesai xserver-xorg-video-intel telah berada dalam versi terbaru. 0 dimutakhirkan, 0 baru terinstal, 0 akan dihapus dan 190 tidak akan dimutakhirkan.

    Read the article

  • Ubuntu on a virtual machine

    - by Barry Miller
    I've installed Virtual Box and am trying to install Ubuntu 12.04 from a downloaded ISO. Everything is going fine but I come to a choice that says no operating system is dectected on this machine, what would you like to do? 1)Erase disk and install Ubuntu (this will erase any files on the disk) or 2) Something else (choose partition size, multiple partitions, etc). Does the first option mean erase all files on the VIRTUAL DISK--NOT THE COMPUTER? Is it just talking about the virtual machine or if I select this option will it erase my Windows operating system and other files on my hard drive?

    Read the article

  • How do I simplify terrain with tunnels or overhangs?

    - by KKlouzal
    I'm attempting to store vertex data in a quadtree with C++, such that far-away vertices can be combined to simplify the object and speed up rendering. This works well with a reasonably flat mesh, but what about terrain with overhangs or tunnels? How should I represent such a mesh in a quadtree? After the initial generation, each mesh is roughly 130,000 polygons and about 300 of these meshes are lined up to create the surface of a planetary body. A fully generated planet is upwards of 10,000,000 polygons before applying any culling to the individual meshes. Therefore, this second optimization is vital for the project. The rest of my confusion focuses around my inexperience with vertex data: How do I properly loop through the vertex data to group them into specific quads? How do I conclude from vertex data what a quad's maximum size should be? How many quads should the quadtree include?

    Read the article

  • Can't connect to WIFI after sleep Ubuntu 14.04

    - by user3380404
    After an upgrade over a previous version to Ubuntu 14.04 I have problems with connecting to WiFi. After suspending it won't reconnect to any existing network unless I restart the laptop. sudo lshw -C network: *-network description: Ethernet interface product: 82567LM Gigabit Network Connection vendor: Intel Corporation physical id: 19 bus info: pci@0000:00:19.0 logical name: eth0 version: 03 serial: 00:27:13:b4:d3:58 capacity: 1Gbit/s width: 32 bits clock: 33MHz capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=2.3.2-k firmware=1.8-3 latency=0 link=no multicast=yes port=twisted pair resources: irq:45 memory:fc200000-fc21ffff memory:fc225000-fc225fff ioport:1840(size=32) *-network description: Wireless interface product: PRO/Wireless 5100 AGN [Shiloh] Network Connection vendor: Intel Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: wlan0 version: 00 serial: 00:26:c6:c6:6b:c8 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless configuration: broadcast=yes driver=iwlwifi driverversion=3.13.0-29-generic firmware=8.83.5.1 build 33692 ip=10.0.1.160 latency=0 link=yes multicast=yes wireless=IEEE 802.11abgn resources: irq:48 memory:f4200000-f4201fff

    Read the article

  • Grams to Pounds: A Domino Chain Reaction [Video]

    - by Jason Fitzpatrick
    Most of us have seen a domino knock down or two in our day, but this demonstration video shows how a series of increasingly larger dominoes allow a tiny domino to knock over a 100 pound domino. A domino can knock over another domino about 50% larger than itself. A chain of dominos of increasing size makes a kind of mechanical chain reaction that starts with a tiny push and knocks down an impressively large domino. The only question we have after watching the video is: where can we find 29 appropriately sized dominoes? [via Neatorama] HTG Explains: What Is Windows RT and What Does It Mean To Me? HTG Explains: How Windows 8′s Secure Boot Feature Works & What It Means for Linux Hack Your Kindle for Easy Font Customization

    Read the article

  • Photo gallery for Blogspot blog

    - by Django Reinhardt
    I don't think this is entirely possible, but here we go: I have a friend who has a Blogspot blog. He has posts with text, posts with videos and posts with photos... and he was wondering if there's any way to turn the posts which are just photos into a thumbnail gallery screen on his blog. So for example, let's say he has 20 photo posts on his blog with the label Skiing Holiday 2009 (horrible example, I know). Is there a way of having a post created for his blog that displays those photos as thumbnails, linking through to their full size versions? I just don't think it's possible, but I'm really hoping someone will be able to offer a solution (or even a place where I could find a solution). Thanks a lot.

    Read the article

  • Can't boot freshly burned Ubuntu cd

    - by user89004
    So I just burned a Ubuntu 12.04.1 powerpc .iso on a cd for my iMac G5 running Mac OS X 10.4.11 and it won't even recognize the cd. I burned it on my dad's Windows 7 laptop as the process is way easier (just 2 clicks). Mac OS X 10.4.11 gives me an error when it starts and when the CD is in saying "the disk you inserted was not readable by this computer". What's funny is that I burned a Ubuntu Minimal .iso on a CD and it would totally read that and even boot it though it gave me some errors afterwards and I couldn't install. I even tried going into openfirmware and hitting boot cd:,\tbxi but I get the error "Warning sector size mismatch can't OPEN cd:,\tbxi Can't open device or file" Was there something wrong with the .iso I burned? Mac OS X 10.4.11 won't even mount that .iso it tells me that the HFS file system is corrupt or something, but I know the .iso doesn't contain HFS file system. Any help? I downloaded the .iso from http://cdimage.ubuntu.com/releases/precise/release/ubuntu-12.04-desktop-powerpc.iso

    Read the article

  • how to create texture for modelmesh?

    - by Berend
    Is there a possibiltiy to create a texture from a meshpart in xna. By getting a flat version of the mesh. So I can create a texture for it and edit that texture(via rendertarget)? I need to get the texture(wich is not yet a texture) so I can put another texture on it. I can create a texture and put it on a certain mesh. But I just cant figure out how I can create a texture with the right size. I also already found out i can use text2dproj in hlsl. But when i do this i get a gray stripe in the look. Is there a better solution?

    Read the article

  • [XSL-FO] Characters from other than English languages

    - by Lukasz Kurylo
    My client have departments in Europe Central and East, so there is highly possibility that in the generated pdfs there will be at least in the people names and/or surnames some specific characters for the country language.   With the XSL-FO we can use some out-of-the box fonts, e.g. the default is Times. We can change it for specific block of text or the entire document to other like Helvetica or Arial. All will be good to the moment that we use only an english alphabet. If we want to add e.g. some characters from polish or bulgarian language, in the *.fo file:         <fo:block >                 <fo:inline font-weight="bold">english: </fo:inline>                 <fo:inline font-weight="bold">yellow</fo:inline>       </fo:block>       <fo:block>                 <fo:inline font-weight="bold">polish: </fo:inline>                 <fo:inline font-weight="bold">zólty</fo:inline>       </fo:block>       <fo:block>                 <fo:inline font-weight="bold">russian: </fo:inline>                 <fo:inline font-weight="bold">??????</fo:inline>       </fo:block>       <fo:block>                 <fo:inline font-weight="bold">bulgarian: </fo:inline>                 <fo:inline font-weight="bold">????</fo:inline>       </fo:block>       <fo:block>                 <fo:inline font-weight="bold">english: </fo:inline>                 <fo:inline font-weight="bold">yellow</fo:inline>       </fo:block>       <fo:block>                 <fo:inline font-weight="bold">polish: </fo:inline>                 <fo:inline font-weight="bold"  font-family="Arial">zólty</fo:inline>       </fo:block>       <fo:block>                 <fo:inline font-weight="bold">russian: </fo:inline>                 <fo:inline font-weight="bold" font-family="Arial">??????</fo:inline>       </fo:block>       <fo:block>                 <fo:inline font-weight="bold">bulgarian: </fo:inline>                 <fo:inline font-weight="bold" font-family="Arial">????</fo:inline>       </fo:block>   The result can be diffrent from the expected depending on the selected font, e.g:                 As you can see Timer nor Arial work in this case.   The problem here is not related to XSL-FO, but rather to the renderer we are using. I have lost a lot of time to find a solution for the using by me XSL-FO –> PDF rendered to acquire these characters in my generated files. Fortunatelly all what have to be done it is to embed the font (or part of it) in the file(s) during rendering.   The renderer that I’m using it is an open source FO.NET.   For this one, the code to generate a pdf file looks that:   var fonet =  Fonet.FonetDriver.Make(); fonet.Render("source.fo", "result.pdf");   To emded the font in the pdf, we need to set the appropriate option to the driver:   fonet.Options = new Fonet.Render.Pdf.PdfRendererOptions() {       FontType = Fonet.Render.Pdf.FontType.Embed }; Right now, the pdf we get should look like this:               As you can see, the result for the Arial font looks exactly how it should, because this font has a characters included not only for the english language like the default Times, which we shouls avoid if we not generating a english-only documents.   This is worth to notice that in this situation the generated pdf file is quite large, it has more than 400 kb in size. This is of course because of embedding the entire font in it to make the document portable to systems, where the used font is not present. Instead on embedding the entire font, we can only embed the subset of used characters by changing the options to:   fonet.Options = new Fonet.Render.Pdf.PdfRendererOptions() {       FontType = Fonet.Render.Pdf.FontType.Subset };   Right now, this specific pdf is only 12 kb in size.

    Read the article

  • How To Specify Bitrate, Codec and Demultiplexing for VLC Video Capture or Recording

    - by Subhash
    I capture video from old TV tuner card - Pinnacle PCTV - using VLC. The video is from the Composite input and audio is from I guess the mixer or Line in. The command I use is: vlc v4l2:///dev/video0:normal=pal:width=720:height=576:input=1 :input-slave="alsa://hw:0,0" In VLC, I have enabled the Advanced Controls toolbar, which allows me to record videos when I want to. However, these videos are uncompressed - very big and play only with VLC. Totem throws the "Could not demultiplex stream" error. I need to convert them using WinFF to reduce their size and make them playable with Totem and other software. My question is whether I can configure the recording settings - the codecs and the bitrate, and also get the stream demultiplexed. If I pass any -sout parameter with command I get a "Segmentation fault". I use 64-bit Ubuntu 10.10.

    Read the article

  • Making a Background Scrolling in Stacking Game

    - by David Dimalanta
    Hmmm...Is it a good idea to use a LibGDX parallax background for making a stacking game (i.e. PAPA STACKer Lite)? For example, I'm starting to use the blocks to drag-n-drop it. Next, when the next piece reaches the top of the screen, it automatically scrolls to the next one where the available space left. Aside from that, is it also involved with the camera code (Orthographic Camera) that the screen size appeared like 720x1280 but actually it's 1440x2560 for example? And another thing, does the background scrolling have the option to scroll from start to finish and infinite?

    Read the article

  • Why did Ubuntu and Windows start hanging mysteriously after I took a vacation?

    - by Ashrey Goel
    I installed Ubuntu alongside my Windows 7, after partitioning my HDD using Easeus partitioning manager. It was working perfectly, no problems, no data lost or corruption. Then I went away for 2 days and in my absence I don't know what happened in that period, now both Windows 7 and Ubuntu keep hanging continuously, like when you paint and change a brush it'll hang, I mean on very simple commands and I know my computer does not hang on such petty things. I use it for developing music and the specification are: Model: DELL-XPS Processor: Intel i5, 2.53 GHz RAM/Memory: 4GB Hard disk size: 500GB HDD Windows 7 partition: 417 GB Ubuntu Partition: 50 GB Please Help.

    Read the article

  • Distance between two 3D objects' faces

    - by Arthur Gibraltar
    I'm really newbie on programming and I'm making some tests. I couldn't find nowhere on Internet how could I calculate the distance between two 3D objects' faces. Is there anyway? Detailing, as an example, I have two 3D cubes. Each one has a vector3 position designating it's center on the 3D space and an orientation matrix. And each cube has a size (float width, float height and float length). I could get a simple distance between them by calling Vector3.Distance(), but it doesn't consider its sizes, just the position. Then the distance would be between its centers. Is there any way to calculate the distance between the faces? Thanks for any reply.

    Read the article

  • How to download kde or gnome from synaptic for offline installation

    - by Arin Chakraborty
    I know how to install GNOME 3 and KDE using apt-get. But i want to know how to, only download, from synaptic package manager, these shells. When i search for kubuntu-desktop in synaptic then the download file shows nearly 4MB but i clearly remember the actual size was near 100 mb. Just for information both are already installed in my laptop. So the question is - How to download the actuall 100 mb KUbuNTU-DESKTOP so that i can just, without any hesitation install it in offline computer which is using ubuntu 12.04. Same for the GNOME 3. Please help me out !

    Read the article

  • Runtime analysis

    - by Joe Smith
    can someone please help me with the analysis of the following function (for inputs of size n). The part that confuses me the most is the inner for loop. def prefix_sums(L): # Total cost = ? pSum = [] #cost = 1 for a in range(len(L)+1): # range + body of function = (n+1) + (n+1)*(body) ? s = 0 #cost = 1 for b in range(a): # cost = ? s = s + L[b] #cost = operation + accessing list = 2 pSum.append(s) #cost = 1 return pSum #cost = 1 What I need to do is figure out the cost of each statement.

    Read the article

  • Download images and other documents from external websites

    - by user359650
    We're running a website which enables users to download documents about our company, such as: -wallpapers with the company logo. -company logos in various flavours. -media kits in pdf format. Since these files are quite big in size (some reach 1MB), we no longer want them to be downloaded from our website directly as it's consuming our bandwidth. Accordingly we've been looking into document sharing services. For instance we found Scribd which could allow us to share pdf files, but not our wallpapers and logos which are in png format. Is there a free service we can use for our users to reliably download any type of files we want to host? (ideally on a service which allows users to easily browse through our files).

    Read the article

  • Ubuntu Server 12 HD full

    - by julio
    I have a server with Ubuntu Server 12, today it stops some services and I found some comments about full disk, so I made a df -h S.files Size Used Disp Use% /dev/mapper/ubuntu-root 455G 434G 0 100% / udev 1,7G 4,0K 1,7G 1% /dev tmpfs 689M 4,2M 685M 1% /run none 5,0M 0 5,0M 0% /run/lock none 1,7G 0 1,7G 0% /run/shm /dev/sda1 228M 51M 166M 24% /boot overflow 1,0M 0 1,0M 0% /tmp Then I tried to delete some files but I made it from a windows remote computer just right clic and "delete" option on files, but HD still full. Is in Ubuntu Server any Trash file or what could be happeing?

    Read the article

  • cPanel SSL installation

    - by Joe
    I've tried transferring SSL issued by GoDaddy to Linux based server. The website was originally hosted in Windows. After the installation is completed, I got a message like this in cPanel: Certificate ID: *********** Domains: xxxxsomethingxxxxx.com Issuer: GoDaddy.com, Inc. Key Size: 2,048 bits Expiration: Feb 10, 2015 10:05:10 PM Does that look fine? Does the Issuer still remain as GoDaddy? Now how do I test to see if this is in fact working? After installing the SSL in the Linux server, do I now need to do something in GoDaddy or in the previous Windows server to indicate that the SSL has now been transferred to the new server?

    Read the article

  • How do I programatically determine which port a SQL Server is running on?

    - by Ralph Willgoss
    How do I programatically determine which port a SQL Server is running on?/*===== Param ref for xp_readerrorlog ===1. Value of error log file you want to read: 0 = current, 1 = Archive #1, 2 = Archive #2, etc...2. Log file type: 1 or NULL = error log, 2 = SQL Agent log3. Search string 1: String one you want to search for4. Search string 2: String two you want to search for to further refine the results5. Search from start time6. Search to end time7. Sort order for results: N'asc' = ascending, N'desc' = descendingHow many error logs do I have?SMSStudio -> Management -> SQL Server Logs -> (right click) -> configure = see values*/USE MasterGO--  get log countDECLARE @logcount intDROP TABLE #ResultCREATE TABLE #Result (ArchiveNo int, Date datetime, Size int)INSERT INTO #ResultEXEC xp_enumerrorlogsSET @logcount = (SELECT COUNT(*) FROM #Result)-- search logsDECLARE @counter intSET @counter = 0WHILE @counter <= @logcountBEGIN    EXEC xp_readerrorlog @counter, 1, N'Server is listening on', 'any', NULL, NULL, N'asc'    SET @counter = @counter + 1ENDGO

    Read the article

  • Should I Leave My Laptop Plugged In All The Time?

    - by Jason Fitzpatrick
    Should you leave your laptop plugged in and charging when you’re not on-the-go? What’s best for the battery? What’s best for your user experience? Read on as we investigate. Image available as wallpaper-size download here. Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-drive grouping of Q&A web sites. 8 Deadly Commands You Should Never Run on Linux 14 Special Google Searches That Show Instant Answers How To Create a Customized Windows 7 Installation Disc With Integrated Updates

    Read the article

  • Alt Key + Mouse Scroll is the New Text Zoom In/Out in NetBeans

    - by Geertjan
    When the text zoom in/out, via "Ctrl Key + Mouse Wheel", was introduced in editors in a recent version of NetBeans IDE, many people cheered. Others booed because the combination "Ctrl Key + Mouse Wheel" is often pressed accidentally, especially when the user scrolls in the editor while intending to use some Ctrl shortcut, such as paste, which is Ctrl-v. So, in NetBeans IDE 7.2, the text zoom in/out is now "Alt Key + Mouse Wheel": http://netbeans.org/bugzilla/show_bug.cgi?id=212484 Remember that the text change only persists for as long as the file is open. So, if you've accidentally resized the text (i.e., in the current situation, prior to 7.2, where unintended side effects may happen because of Ctrl key usage), you can just close the file and reopen it to get the text size back to the way it was before.

    Read the article

  • Example: Controlling randomizer using code contracts

    - by DigiMortal
    One cool addition to Visual Studio 2010 is support for code contracts. Code contracts make sure that all conditions under what method is supposed to run correctly are met. Those who are familiar with unit tests will find code contracts easy to use. In this posting I will show you simple example about static contract checking (example solution is included). To try out code contracts you need at least Visual Studio 2010 Standard Edition. Also you need code contracts package. You can download package from DevLabs Code Contracts page. NB! Speakers, you can use the example solution in your presentations as long as you mention me and this blog in your sessions. Solution has readme.txt file that gives you steps to go through when presenting solution in sessions. This blog posting is companion posting for Visual Studio solution referred below. As an example let’s look at the following class. public class Randomizer {     public static int GetRandomFromRange(int min, int max)     {         var rnd = new Random();         return rnd.Next(min, max);     }       public static int GetRandomFromRangeContracted(int min, int max)     {         Contract.Requires(min < max, "Min must be less than max");           var rnd = new Random();         return rnd.Next(min, max);     } } GetRandomFromRange() method returns results without any checking. GetRandomFromRangeContracted() uses one code contract that makes sure that minimum value is less than maximum value. Now let’s run the following code. class Program {     static void Main(string[] args)     {         var random1 = Randomizer.GetRandomFromRange(0, 9);         Console.WriteLine("Random 1: " + random1);           var random2 = Randomizer.GetRandomFromRange(1, 1);         Console.WriteLine("Random 2: " + random2);           var random3 = Randomizer.GetRandomFromRangeContracted(5, 5);         Console.WriteLine("Random 3: " + random3);           Console.WriteLine(" ");         Console.WriteLine("Press any key to exit ...");         Console.ReadKey();     } } As we have not turned on support for code contracts the code runs without any problems and we get no warnings by Visual Studio that something is wrong. Now let’s turn on static checking for code contracts. As you can see then code still compiles without any errors but Visual Studio warns you about possible problems with contracts. Click on image to see it at original size.  When we open Error list and run our application we get the following output to errors list. Note that these messages are not shown immediately. There is little delay between application starting and appearance of these messages. So wait couple of seconds before going out of your mind. Click on image to see it at original size.  If you look at these warnings you can see that warnings show you illegal calls and also contracts against what they are going. Third warning points to GetRandomFromRange() method and shows that there should be also problem that can be detected by contract. Download Code Contracts example VS2010 solution | 30KB

    Read the article

  • Developing Schema Compare for Oracle (Part 5): Query Snapshots

    - by Simon Cooper
    If you've emailed us about a bug you've encountered with the EAP or beta versions of Schema Compare for Oracle, we probably asked you to send us a query snapshot of your databases. Here, I explain what a query snapshot is, and how it helps us fix your bug. Problem 1: Debugging users' bug reports When we started the Schema Compare project, we knew we were going to get problems with users' databases - configurations we hadn't considered, features that weren't installed, unicode issues, wierd dependencies... With SQL Compare, users are generally happy to send us a database backup that we can restore using a single RESTORE DATABASE command on our test servers and immediately reproduce the problem. Oracle, on the other hand, would be a lot more tricky. As Oracle generally has a 1-to-1 mapping between instances and databases, any databases users sent would have to be restored to their own instance. Furthermore, the number of steps required to get a properly working database, and the size of most oracle databases, made it infeasible to ask every customer who came across a bug during our beta program to send us their databases. We also knew that there would be lots of issues with data security that would make it hard to get backups. So we needed an easier way to be able to debug customers issues and sort out what strange schema data Oracle was returning. Problem 2: Test execution time Another issue we knew we would have to solve was the execution time of the tests we would produce for the Schema Compare engine. Our initial prototype showed that querying the data dictionary for schema information was going to be slow (at least 15 seconds per database), and this is generally proportional to the size of the database. If you're running thousands of tests on the same databases, each one registering separate schemas, not only would the tests would take hours and hours to run, but the test servers would be hammered senseless. The solution To solve these, we needed to be able to populate the schema of a database without actually connecting to it. Well, the IDataReader interface is the primary way we read data from an Oracle server. The data dictionary queries we use return their data in terms of simple strings and numbers, which we then process and reconstruct into an object model, and the results of these queries are identical for identical schemas. So, we can record the raw results of the queries once, and then replay these results to construct the same object model as many times as required without needing to actually connect to the original database. This is what query snapshots do. They are binary files containing the raw unprocessed data we get back from the oracle server for all the queries we run on the data dictionary to get schema information. The core of the query snapshot generation takes the results of the IDataReader we get from running queries on Oracle, and passes the row data to a BinaryWriter that writes it straight to a file. The query snapshot can then be replayed to create the same object model; when the results of a specific query is needed by the population code, we can simply read the binary data stored in the file on disk and present it through an IDataReader wrapper. This is far faster than querying the server over the network, and allows us to run tests in a reasonable time. They also allow us to easily debug a customers problem; using a simple snapshot generation program, users can generate a query snapshot that could be sent along with a bug report that we can immediately replay on our machines to let us debug the issue, rather than having to obtain database backups and restore databases to test systems. There are also far fewer problems with data security; query snapshots only contain schema information, which is generally less sensitive than table data. Query snapshots implementation However, actually implementing such a feature did have a couple of 'gotchas' to it. My second blog post detailed the development of the dependencies algorithm we use to ensure we get all the dependencies in the database, and that algorithm uses data from both databases to find all the needed objects - what database you're comparing to affects what objects get populated from both databases. We get information on these additional objects using an appropriate WHERE clause on all the population queries. So, in order to accurately replay the results of querying the live database, the query snapshot needs to be a snapshot of a comparison of two databases, not just populating a single database. Furthermore, although the code population queries (eg querying all_tab_cols to get column information) can simply be passed straight from the IDataReader to the BinaryWriter, we need to hook into and run the live dependencies algorithm while we're creating the snapshot to ensure we get the same WHERE clauses, and the same query results, as if we were populating straight from a live system. We also need to store the results of the dependencies queries themselves, as the resulting dependency graph is stored within the OracleDatabase object that is produced, and is later used to help order actions in synchronization scripts. This is significantly helped by the dependencies algorithm being a deterministic algorithm - given the same input, it will always return the same output. Therefore, when we're replaying a query snapshot, and processing dependency information, we simply have to return the results of the queries in the order we got them from the live database, rather than trying to calculate the contents of all_dependencies on the fly. Query snapshots are a significant feature in Schema Compare that really helps us to debug problems with the tool, as well as making our testers happier. Although not really user-visible, they are very useful to the development team to help us fix bugs in the product much faster than we otherwise would be able to.

    Read the article

< Previous Page | 499 500 501 502 503 504 505 506 507 508 509 510  | Next Page >