Search Results

Search found 68828 results on 2754 pages for 'knapsack problem'.

Page 438/2754 | < Previous Page | 434 435 436 437 438 439 440 441 442 443 444 445  | Next Page >

  • SH404SEF URLs in Joomla 1.5

    - by Tao Bellamine
    I have two modules to play with urls, the global configuration module and the sh404sef module. The global config is set to "Sef urls: YES" and "mod rewrite enabled: YES" and the sh404sef is set "url optimization: NO". My problem is, even with "Sef urls" set in the global config, my urls still don't seem to be that "user friendly" so I turn on the "Url optimization" using the sh404sef module, and I get better descriptive urls. However, the problem I inherit from doing this is that my dynamically populated chronoforms get messed up (only the chrono forms, other forms are fine); These forms are now showing up at the homepage instead of their own reserved page. Here's an example: Old form "GOOD" url: http://www.mycraftwork.com/index.php?option=com_content&view=article&id=94 New optimized "BAD" URL: http://www.mycraftwork.com/handthrown-pottery/alladin-teapot/index.php?option=com_content&view=article&id=94 Any help would be GREATLY appreciated! I can even turn the sh404sef on and off if some people are interested in seeing the issue LIVE. Thanks!! Tao Bellamine

    Read the article

  • IIS 6 405 error when POSTing through I-Frame

    - by Angelo R.
    Before I begin, I must add that I am more of a programmer, so please be patient :p I have a 2003 server running IIS 6. I am trying to create a Facebook application that accesses a url on my server through an I-Frame. However, Facebook is trying to send some data via POST to my page. I assumed it wouldn't be a problem since the page is .html, but I keep receiving 405 errors (Incorrect Verbs) when trying to access it. Since these are generated by IIS, I had hoped there would be a way for me to allow html files to accept POST. However, after a lot of Googling, it seems like that isn't possible, so instead I figure I can convert the page to an aspx one, and that should work... however I am running in to the same issue. I thought that simply adding POST to the .aspx entry in Application Extension Mapping would work, but it still doesn't. Does anyone know what the problem could potentially be?

    Read the article

  • How do I stop Ubuntu Precise freezing/hanging

    - by artfulrobot
    At least once a day I lose work on my (2 different) Intel i5 machines running Ubuntu 12.04. The entire system will freeze/lock-up/hang, and never return. At this point nothing works; even the caps lock key doesn't toggle the light on the keyboard; Ctrl-Alt-F1 won't do anything either. askubuntu.com is apparently where I'm directed for support. I suspect this is a kernel bug. But I simply can't keep losing work like this, so I'm anxious to try whatever it takes to get the thing reliably working. Can you suggest something I can try to fix the problem an existing bug I can follow progress on and contribute to (from users/tester's POV) the most constructive way I can contribute to helping fix the problem, keeping in mind that I do need the computer (so can't do things that might "brick" it!)

    Read the article

  • ubuntu 12.04 returns to login screen on resume from suspend. Is there a fix?

    - by Chad
    When I resume from a suspend, Ubuntu 12.04 will come back ok for about 10 seconds, and then the screen blanks out. After about another second or so, it returns to the login screen for Unity 2d. It normally runs Unity 3d. How can I fix this? I've lost a lot of work from this problem. I sometimes get a error report window asking me to report a Compiz crash after rebooting. I think it may be Compiz or the Xorg server causing the problem. I'm not really sure. Thanks if you can provide help.

    Read the article

  • Is it evil to model JSON responses to classes when they are mostly smilar?

    - by Aybe
    Here's the problem : While implementing a C# wrapper for an online API (Discogs) I've been faced to a dilemma : quite often the responses returned have mostly similar members and while modeling these responses to classes, some questions surfaces on which way to go would be the best. Example : Querying for a 'release' or a 'master' will return an object that contains an array of 'artist', however these 'artists' do not exactly have the same members. Currently I decided to represent these 'artists' as a single 'Artist' class, against having respective 'ReleaseArtist' and 'MasterArtist' classes which soon becomes very confusing even though another problem arises : when a category (master or release) does not return these members, they will be null. Though it might sound confusing as well I find it less confusing than the former situation as I've tackled the problem by simply not showing null members when visualizing these objects. Is this the right approach to follow ? An example of these differences : public class Artist { public List<Alias> Aliases { get; set; } public string DataQuality { get; set; } public List<Image> Images { get; set; } public string Name { get; set; } public List<string> NameVariations { get; set; } public string Profile { get; set; } public string Realname { get; set; } public string ReleasesUrl { get; set; } public string ResourceUrl { get; set; } public string Uri { get; set; } public List<string> Urls { get; set; } } public class ReleaseArtist { public string Join { get; set; } public string Name { get; set; } public string Anv { get; set; } public string Tracks { get; set; } public string Role { get; set; } public string ResourceUrl { get; set; } public int Id { get; set; } }

    Read the article

  • Slow on browsing web, but normal when using apt-get

    - by Arif Setyawan
    I have a problem with my fresh instalation of Ubuntu 11.10. The problem happen when i start up my browser and accessing website such google, askubuntu.com, facebook and other sites. frustate on the situation i try watch the progress in system monitor. the result from monitor shows that there is no data transfer when i try to accessing the page. firstly, i assume that it is the trouble from my ISP or my home connection. But it is not. When i try pinging google it shows transaction between my computer and the network but still null from browser. Then i tried to test the aptitude and it was work fine but still the browser won't recieve any packet from the internet. Here is the detail of my tools : Laptop : Toshiba Satellite e205 (network card atheros) Operating System : Ubuntu 11.04 dual booted with Win7 Browser : Mozilla Firefox comes up with the Ubuntu 11.10 installation Chrome : Last version (just yesterday install it) Thank You before :) [this question posted via win]

    Read the article

  • Mouse clicks automatically / Raton hace clicks automaticos

    - by Antoni Ghalam
    Good day friends, my problem is that my mouse clicks automatically and is getting on my nerves. I tried to do the solutioned mentioned here: Press Alt + F2 and type gnome-mouse-properties then press Enter. Go to Accessibility tab and uncheck the option "Initiate click when stopping..." but my problem is that the Accessibility tab is not there. Buenos dias amigo tengo el problema de que mi raton da clicks automaticos y me fasidia mucho intente hacer la solucion que tu diste aqui. Haga clic en Alt + F2 y poner gnome-mouse-properties y pulsa enter. Ir a la accesibilidad y desmarque la opción "iniciar haga clic en ..." pero mi problema es q no me aparese la pestaña de accesibilidad me podrias ayudar porfavor

    Read the article

  • OpenGL VertexBuffer won'e render in GLFW3

    - by sm81095
    So I have started to try to learn OpenGL, and I decided to use GLFW to assist in window creation. The problem is, since GLFW3 is so new, there are no tutorials on it yet and how to use it with modern OpenGL (3.3, specifically). Using the GLFW3 tutorial found on the website, which uses older OpenGL rendering (glBegin(GL_TRIANGLES), glVertex3f()), and such, I can get a triangle to render to the screen. The problem is, using new OpenGL, I can't get the same triangle to render to the screen. I am new to OpenGL, and GLFW3 is new to most people, so I may be completely missing something obvious, but here is my code: static const GLuint g_vertex_buffer_data[] = { -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f }; int main(void) { GLFWwindow* window; if(!glfwInit()) { fprintf(stderr, "Failed to initialize GLFW."); return -1; } glfwWindowHint(GLFW_SAMPLES, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); window = glfwCreateWindow(800, 600, "Test Window", NULL, NULL); if(!window) { glfwTerminate(); fprintf(stderr, "Failed to create a GLFW window"); return -1; } glfwMakeContextCurrent(window); glewExperimental = GL_TRUE; GLenum err = glewInit(); if(err != GLEW_OK) { glfwTerminate(); fprintf(stderr, "Failed to initialize GLEW"); fprintf(stderr, (char*)glewGetErrorString(err)); return -1; } GLuint VertexArrayID; glGenVertexArrays(1, &VertexArrayID); glBindVertexArray(VertexArrayID); GLuint programID = LoadShaders("SimpleVertexShader.glsl", "SimpleFragmentShader.glsl"); GLuint vertexBuffer; glGenBuffers(1, &vertexBuffer); glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW); while(!glfwWindowShouldClose(window)) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glUseProgram(programID); glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); glDrawArrays(GL_TRIANGLES, 0, 3); glDisableVertexAttribArray(0); glfwSwapBuffers(window); glfwPollEvents(); } glDeleteBuffers(1, &vertexBuffer); glDeleteProgram(programID); glfwDestroyWindow(window); glfwTerminate(); exit(EXIT_SUCCESS); } I know it is not my shaders, they are super simple and I've checked them against GLFW 2.7 so I know that they work. I'm assuming that I've missed something crucial to using the OpenGL context with GLFW3, so any help locating the problem would be greatly appreciated.

    Read the article

  • How to choose a new technology for mastering and not lose sense of reality and practicality?

    - by Eyewan
    How to choose the right next step in learning programming and mastering new technologies? I have experience with WinForms applications in C# .NET. Next what I see as a good area of expanding the knowledge is ASP.NET. Language I already know, C #, so I think there is now more a matter of mastering new technologies. Also I have interest in WPF. Perhaps the best is to work on ASP.NET and WPF at the same time. Sometimes the problem is when we do not have motivation, but also known to become a problem when we want to much :) How to choose a new technology for mastering and not lose sense of reality and practicality?

    Read the article

  • No Wireless In Ubuntu 13.10 (maybe Need Wireless Driver) [duplicate]

    - by viktorhubinette
    This question already has an answer here: No Wireless In Ubuntu 13.10 2 answers hi after updating to ubuntu 13.10 i cant see the wireless networks on the network meny so what should i do ? tell me some commands you need to see to solve the problem. Thanks (i maybe need a wireless driver becouse i installed one when i haved 12.04 becouse i could not connect to wireless before too) i cant connect to wireless that my problem so what do i need to do to get this wireless working again? some outputs lsmod | grep rt1 nothing sudo modprobe rt18192cu FATAL: Module rt18192cu not found. iwconfig eth0 no wireless extensions. lo no wireless extensions. sudo iwlist wlan0 scan wlan0 Interface doesn't support scanning. rfkill list all nothing

    Read the article

  • Dropbox indicator icon dissapears right after login

    - by garvamel
    Even though Dropbox's app indicator dissapearing from the tray area seems like a recurrent enough problem, my issue is a litte different. When I login, I can see the app panel populating, and the dropbox icon does indeed appear (config'd as startup application), but after some other icons show up (bluetooth, battery, etc.) it's gone. It's still running though. I'm guessing it's having issues with staying pinned, and I don't know how to start addressing this problem. I have tried many if not all solutions provided here in the forums for the "icon missing" questions. So far: I've whitelisted everything regarding panel Uninstalled-reinstalled (with and without rebooting in between) Overwritten current installation Purged installation from terminal Installed from Software Center and from .deb file batch deleted every "dropbox" ocurrences from terminal (files and folders) and reinstalled Ran sudo apt-get install libappindicator1, it installed, but didn't solve anything I'm on Ubuntu 12.04 LTS - 64 bits. Any insight would me much appreciated!

    Read the article

  • Broken links in content reports when tracking subdomains with Google Analytics

    - by Rob Sobers
    I have a tracking code that I use on my main site and my blog, which is on a subdomain: www.example.com blog.example.com I have a single profile in Google Analytics. I use advanced segments to look at traffic to the main site vs. traffic to the blog. Problem 1: When I'm browsing my content reports under Standard Reporting, the "Page" column doesn't show the top-level or sub-domain, so I can't differentiate www.example.com/index.html from blog.example.com/index.html easily. According to the docs, this filter is supposed to make GA prepend the hostname to the page URL in your content reports, but it doesn't seem to work. Problem 2: When I click on the little "Open in new window" icon next to a given page in a content report line, it always assumes the page lives on www.example.com, so I get 404s when the page is actually on blog.example.com. Is there a good solution for these subdomain tracking problems?

    Read the article

  • Can't print, CUPS package corrupted and hangs on re-install

    - by Little Bobby Tables
    When I upgraded to Ubuntu 10.4 (Maverick), the upgrade process got stuck on the post-installation of the CUPS package. I had to kill processes and run several forced updates before I could finally get regular updated. Ever since I can't print - The printed file gets messed up and crashes the printer. I also can't re-install CUPS, as each time the installation hangs and I have to kill it before it completes. I tried to find a workaround for this problem, but in vain. Does anyone know how to bypass this? Or at least why can the post-installation hang, and how to re-install a problematic package? Some system specs and other hints: Dell D630 laptop running Ubuntu 10.4, Gnome desktop, standard LAN network, printing to an LPD server. Everything worked fine on 9.10. Also, the printed files themselves are not corrupted. The problem does not seem to be Evince-specific, but common to all printouts.

    Read the article

  • conflict with php zend libs and c++ libs(ctime) to build extension for php [migrated]

    - by user69800
    Im going to build an extension for PHP 5.3.x everything is OK when I build without vc++ lib. error C2039: 'clock_t' : is not a member of '`global namespace'' error C2873: 'clock_t' : symbol cannot be used in a using-declaration error C2039: 'asctime' : is not a member of '`global namespace'' error C2873: 'asctime' : symbol cannot be used in a using-declaration and... I include just and got this error. I know this problem is from my include header file in properties that required from PHP zend engine, But I do not know how solve this problem. thanks

    Read the article

  • Why should I not do a masters degree

    - by aurel
    I have left university on July 2010 where I studied web design (as we all know you learn more by your self but that’s not the issue at the moment). Since then I have not managed to find a job (apart from a one month work experience), from the way things are going, and by taking into account the fact that all my university friends are in the same situation, I don’t think that I am going to find a job soon (within the industry) Now as we all do, even though I don’t have a job, I am still working on personal projects and try to keep up to date (I don’t need a job or uni to do this) – but I am thinking, because there is not work available, would it be worth going back to uni for a master degree? I know I don’t need it and I know that is unlikely that I will learn anything important, as I believe in self learning, and in most cases it is a lot more effective (but I have to say I don’t mind going back to school) The only reason I am thinking of doing the master is, (and this is where I need your help): If it takes me a year to get a job, then on the interview, would the employer think “what the hell did this guy do since he left university” – now if I go to university that would solve this problem. Or I’m I making up a problem that does not exist Plus, I know that employers need examples of sites that I have been working on, at the moment I only have 3 (as when working on personal projects, where their is not time limit I tend drag things in order to get them perfect, and they never get perfect) – so by going back to uni, then this problem maybe solved I said all this as I have read a lot about the fact that you don’t need to have a masters degree to work on web design market (and I totally agree) but considering my concern, the question is should I do a masters course to avoid just spending hours in my room working and learning in my own (but that it would be hard to convince employers that I was really learning in my room) Maybe because I’m still young age 22 not that old anyway :), but I don’t have the “dream” of being rich, so if I were to tell the truth I don’t really care of the fact that I don’t have a job (at the moment), because regardless, I am working on what I love every day, but I know that in the future when I will need the job I may find it harder to get one, if I neglect doing so now Every time I ask a question that I’m not sure about, I keep going on and on, but I really hope you get what I am trying to get across. By the way the course that I am looking at for a masters says that it would teach me how to do these: e-commerce e-government e-science e-learning I don’t know any of them, a part from e-commerce Thanks

    Read the article

  • Can't install alternate CD from USB?

    - by mattias
    Hi im trying to install ubuntu 12.04 with full hard disk encryption. After downloading and installing the Ubuntu live CD, I learned that truecrypt doesnt support full disk encryption on linux. I also learned that the best way to get "nearly full disk encryption" on ubuntu is by installing it from the alternate install CD. I tried that, but something is wrong with my CD reader/burner so it doesnt boot up when i insert the cd. My thought here was to take the .iso that I downloaded on my unencrypted Ubuntu system, use Unetbootin to make the usb drive. The usb drive used for this is exactly the same brand as one that I know has worked with a previous ubuntu live system on the same computer. I also used unetbootin for that usb, but I created it from windows that time. The usb stick boots up fine and i get through the first couple of steps in the installation process. However, After a while I get a "box" with the following error message "Load Installer components from CD" There was a problem reading data from the CD-ROM. Please make sure it is in the drive. If retrying does not work, you should check the integrity of your CD-ROM. "Failed to copy file from CD-ROM. Retry? " Then I cant get any further. I googled a lot and found this page which seems to tackle this very problem: http://www.dotkam.com/2010/11/29/ins...mage-from-usb/ I tried to do what it said. After pressing TAB, I wrote : cdrom-detect/try-usb=true without quotes because that's what i think is right. When I press TAB, there already is a text saying : /ubnkern initrd=/ubninit vga=788 -- quiet which can be removed. I have tried to both delete the text before the "--" and just inserting cdrom-detect/try-usb=true before it. Any idea of what can be wrong? I would like to do a full system encryption, or as full as it is possible. I dont want to just encrypt my /home folder. Maybe this isn't the easiest way. I use SanDisk usb sticks. I know there is a problem with U3 launcher on some SanDisks, but I never had to remove U3 before from similar disks, and the alternate install does boot up, so I dont think using U3 removal would help me. Any help or indication to an easier way to do this would be appreciated

    Read the article

  • How to use OpenGL functions from multiples thread?

    - by Robert
    I'm writing a small game using OpenGL. I'm implementing basic networking in this game and I'm facing a problem. I have a thread in my client socket class that check for available data, when there are data I raise an event like this : immutable int len = this.m_socket.receive(data); if(len > 0) { this.m_onDataEvent(data); } Then on my game class, I have a function that handle and parse data like this : switch(msgId) { case ProtocolID.CharacterData: // Load terrain with opengl, character model.... Im not able to call opengl functions because my opengl context is created from a different thread. But I really don't know how I can solve this problem, I tried Google but it's really hard to find a solution. I'm using D programming language if it can help.

    Read the article

  • Intel Atom D425 Problems

    - by Nico
    I have recently bought an Intel Atom D425 mini itx board with OCZ 30 Gig SSD and 1 Gig DDR3 ram. I have installed Ubuntu 10.04 and Crunchbang Statler ok; works fine in both. I tried to install Xubuntu 12.04, Ubuntu 12.04, and Mint 13 Mate. All of those 3 start up, but as soon as you get to install it all goes wrong and the monitor says input not supported. Is it an Intel Atom D425 problem, an Ubuntu problem, or something else? All help would be much appreciated Regards Nico

    Read the article

  • Firefox really slows down my computer

    - by user199208
    I love Firefox; it has a special place in my heart. However, using the default Firefox in Ubuntu eventually causes my computer to freeze and crash. Nothing more to the problem, just the performance of Firefox really sucks, therefor causing a system-wide freeze. How do I know this? I use Google Chrome mostly, and other programs. None of them ever made my computer freeze. Is it an Update problem? If so, can I install a different version of Firefox from Mozilla.com? What's the deal here?

    Read the article

  • Is there now any way to convert mp3 files to m4a or aac 192kbit?

    - by piedro
    Since about two years now I am trying to find a way to convert high quality mp3 files to m4a or aac files with a fixed bitrate 192k. Please don't suggest using another format - i thought this through as far as it goes. The problem here is: ffmpeg obvioulsy can't convert to a higher bitrate than 152k. Even when it says it does so the resulting files still have 152k instead of 192k. ffmpeg also has/had a bug not writing the bitrate into the audio file tags which means when testing you have to calculate the bitrate manually by dividing the filesize by the length of the audio in seconds (resulting in 152k - see above) choosing faac as converter gets me the same results other programs don't work reliably (see this thread Howto convert audio files to *.m4a? I know that this is not an original new problem but I am wondering if there is still no way to convert with ubuntu/kubuntu 12.04 after a lot time passed and I can't find some of the bug issues mentioned in the other thread anymore. So: Is there a solution after all?

    Read the article

  • Bug once in a while,but high priority

    - by Shirish11
    I am working on a CNC (computer numerical control) project which cuts shapes into metal with help of laser. Now my problem is once in a while (1-2 times in 20 odd days) the cutting goes wrong or not according to what is set. But this causes loss so the client is not very happy about it. I tried to find out the the cause of it by Including log files Debugging Repeating the same environment. But it wont repeat. A pause and continue operation will again make it to run smoothly with the bug reappearing. How do I tackle this issue? Should I state it as a Hardware Problem?

    Read the article

  • Design Patterns - do you use them?

    - by seth
    Being an IT student, I was recently given some overview about design patterns by one of our teachers. I understood what they are for but some aspects still keep bugging me. Are they really used by the majority of programmers? Speaking of experience, I've had some troubles while programming, things I could not solve for a while, but google and some hours of research solved my problem. If somewhere in the web I find a way to solve my problem, is this a design pattern? Am I using it? And also, do you (programmers) find yourself looking for patterns (where am I supposed to look btw?) when you start the development? If so, this is certainly a habit that I must start to embrace.

    Read the article

  • Microsoft LifeCam Audio Issue

    - by Daniel Samson
    Running Ubuntu 12.04.1 LTS 32-bit on a computer with an Intel core i5 processor, 4GB RAM and a NVIDIA 450GTS Graphics card. I am trying to set up Skype with my webcam. So far everything works almost perfectly, however my Microsoft LifeCam-VX700 v2.0 audio does not work correctly. The audio feed is just static/white noise. I have checked the hardware using windows and it worked perfectly there. The video works great in Ubuntu. It is just the audio that is the problem. What can I do to rectify this problem?

    Read the article

  • Mouse and keyboard stop working after suspend or screensaver lock

    - by LEo
    If I leave the computer and let it run into screensaver and lock the screen, the mouse left click won't go back to work. If I suspend the computer, the keyboard won't get back to work. It started after upgrading to Ubuntu 11.04. Any tips to solve this problem? The follwing lines I got on dmesg after the problem happened [30536.564415] psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 [30536.565725] psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 [30536.568466] psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 [30536.569790] psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 [30536.571123] psmouse.c: TouchPad at isa0060/serio1/input0 lost sync at byte 1 [30536.571126] psmouse.c: issuing reconnect request and that after I tried to plug again my USB mouse: [31570.040088] usb 6-1: USB disconnect, address 2 [31573.490095] usb 6-1: new low speed USB device using uhci_hcd and address 3 [31573.687376] input: Microsoft Basic Optical Mouse as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/input/input12 [31573.687544] generic-usb 0003:045E:0084.0002: input,hidraw0: USB HID v1.10 Mouse [Microsoft Basic Optical Mouse] on usb-0000:00:1d.1-1/input0

    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 | 434 435 436 437 438 439 440 441 442 443 444 445  | Next Page >