rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Well, if there isn't anything in the BIOS, then you may be out of luck here. What is the make+model of CPU that your system runs, and what is the make+model of the computer? How old is it?

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

The bus expanders I found have DVI-I (29 pin) wired connectors. You can probably find optical adapters for that, but why bother? Anyway, here is a link to a 4-slot expansion bus: http://www.startech.com/product/PEX2PCIE4L-PCI-Express-to-2-PCI-Full-Length-2-PCIe-Single-lane-Expansion-Box

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Well, most 64-bit capable systems do support hardware virtualization. Have you checked in the BIOS settings? What about in the VBox configuration settings?

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Personally, I would prefer to do this when I want, rather than having the system interrupt my processing at random times. IMO, interrupts/signals are better used for unusual events, timer expiry, etc.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

There is likely a default vector size, and 123 is smaller than the default, hence the error. Just a guess.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

It's a weekend. Folks are out doing other stuff, like taking in movies, going to concerts, out to dinner, playing with kids... Be patient. If this project is due Monday, you may have to resort to your own abilities... :rolleyes:

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

stdafx.h is a Windows Visual Studio compiler header. Are you building this in a Windows environment?

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Well, in thread_routine(), you have declared it to return a void*, but it returns nothing. However, since that is not the error you are getting, it problem is likely, as Ancient Dragon noted, that there is an issue with the include files. However, you state that your error is a runtime one, but that is inconsistent with the information provided. The errors shown are compile-time errors, not run-time errors.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

I usually don't use a signal handler to deal with DOC (Death Of Chile) events. Here is the code I have used in major enterprise applications that avoids leaving zombies around.

// Clear up any uncaught dead sub-processes.
        for (pid_t pid = waitpid(-1,nil,WNOHANG);
             pid != 0 && pid != -1;
             pid = waitpid(-1,nil,WNOHANG))
        {
            cerr << "zombie process detected (pid == " << dec << pid << ")." << endl;
        }

This is usually called at the top of the event loop in the application.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

You have to wait when posting requests over a weekend. People are out doing stuff. I'll reply soon...

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

I doubt that it is the video hardware that is going tits-up. Have you tried reinstalling/recovering the operating system? Scanned for viruses? Run in safe mode?

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

From the Wikipedia:

This attribute is a part of HP's SMART IV technology and it means that after transferring through the cache RAM data buffer the parity data between the host and the hard drive did not match.

This seems to indicate that the cache memory of the drive controller is faulty, which basically means that the drive needs to be replaced.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

But be careful that you don't touch any other components on the mobo! Otherwise, you may let the magic smoke out! :-(

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

The platform is irrelevant. I've given you my suggestion for a project - some sort of middleware/message-bus/application-integration tool. Let your imagination supply the rest of the details.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Please post the compiler error(s) (including line numbers and such) here.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

With Linux, when you allocate memory, the application requests heap memory from the OS using the sbrk() function (deep inside the allocator). When you delete the memory, the heap allocated to the application is not returned (normally) to the operating system. It will be reused on subsequent allocations. In Windows, usually when you allocate memory, it is pulled from the operating system (it isn't cached in the application heap), and when you delete memory, it is returned to the operating system instead of keeping it in the application's heap cache. This can result in longer new/delete times with Windows than in Unix/Linux systems, at least in theory.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Two things as starting points:

1) In your second code fragment, you have two members named next. You can't do that.

2) This is really a C program, not a C++ program, so you would be better off asking your question in the C forum.

Indeed. If this is supposed to be C++, then use classes with proper constructor(s), initializers, destructors, and use new/delete instead of malloc/free to allocate data. So, is this supposed to be a C program, or a C++ program?

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

First, your constructor and destructor are bogus. This is how it should be:

SimpleLinkedList ::SimpleLinkedList()
{
    first = new Node;
    first -> next = NULL;

// Don't forget to initialize node's member fields. Unless
// Node has a default constructor that initializes them for
// you, they will contain random data values.
    first->cvalue = 0;
    first->dvalue = 0;
    first->keyvalue = 0;
}


SimpleLinkedList :: ~SimpleLinkedList()
{
// Implement a proper head-first deletion routine.
    while (first != 0)
    {
        Node* temp = first;
        first = first->next;
        delete temp;
    }
}

I'd look further, but this will get you started. In any case, you need to do a thorough analysis of your code.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Also, use const char* for the make and model. Most compilers will give you an error using string literals for a non-const char pointer.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

To integrate multiple existing applications, you need someway to connect the output of each to the input of the others. This is called "middleware" - it sits in the middle between a bunch of applications and intelligently routes data from one to another. So, Google on the terms "application middleware". You will get a lot of good links to check out.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Assuming you are running Android 2.2 or later, you should have a wireless hotspot capability on the phone. You configure it with an SSID and optional security (WEP/WPA) with passphrase. Then, up to 5 computers can use the phone as a WiFi access point. I've done that with my 3g Nexus One, and it works very well. It was like having a 2mbps DSL internet connection. Web browsing was snappy, and YouTube videos played without excessive buffering.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Sorry to take so long to get back to you on this... :-)

Not to delve too deeply into fault-tolerant computing architectures, to my mind, RAID is primarily intended to provide a higher degree of fault-resiliance than just a bunch of discs (JBOD), but it will not guarantee that all failure scenarios will leave your data intact. In you have JBOD, then when a disc fails, you lose everything on the disc. If you have a RAID-5 array, then the data is striped over all the discs, as is the parity data, so even if one disc fails, the array can continue to operate in "degraded mode" until the disc is replaced and the new disc is rebuilt from the data on the others. RAID-1, mirroring, works much the same way, except that the discs are copies, so the rebuild cycle is just copying the data from the good drive to the new one, but you can keep using the array in degraded mode until the new disc is synced with the other. Generally, either of these work well. However, something like a catastrophic controller failure can (depending upon the design of the controller) possibly corrupt the array, resulting in your data becoming inaccessible.

So, what to do? As many have found over the years, just having RAID arrays does NOT mean you can just stop making backups of your critical data. Single disc failure (or more discs, depending upon your hardware) == continued operation and online recovery. …

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

I've not had much luck with Seagate FreeAgent drives. They are prone to failure. My suggestion is to log onto the Seagate web site, report the problem, and get an RMA to replace it. They are pretty good in getting replacements back to you quickly, and if you pay between $10 and $20, they will ship you a replacement via overnight express along with a free return shipping label. The cost of shipping that you save almost pays for the fee, and you get the replacement in the next day or two, instead of waiting for the drive to get to Seagate and then for the replacement to get back to you.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Nice advise rubberman but take note that the original poster have not come back for a long long time and update his progress. We can stop giving him advise for the time being otherwise it will flood up the whole thread. Thanks everyone for your help.

Yeah, they do do that, don't they? Not replying with progress so the thread can be closed... :rolleyes: Oh well.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

If it is the same socket, all that will probably be needed is a bios flash.

And maybe not even that... :-)

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Both the 1055 and it's big brother, the 1090T were built for overclocking :). AMD overdrive is a tool designed by AMD for the purpose of doing exactly that.

That may be true, but the other factors mentioned in my previous post still stand. Overclocking doesn't always work well. If it does, then great! If not, then ratchet the speed back to normal. As the original poster mentioned, when they did that, things worked again...

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Have you tried the format string "%lu" for the unsigned integer? If that works, then the compiler is at fault, or their library implementation is (more likely).

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

I have a Pico iMage camera that works well on Macs, Linux, and Windows. I use it with Skype (Linux) all the time and people seem to think it looks just fine. Here is a quote from a review by MacNN:

The iMage, produced by Pico Instruments, boasts a 1/7-Inch color CCD sensor that presents 640 x 480 (VGA) and 320 x 240 (QVGA) images at 15 frames per second. It works well in iChat. ... it requires an USB 2.0 high speed port... It has built-in white balancing and auto electronic iris control, which accounts for the high quality color.

Read more: http://www.macnn.com/reviews/image-usb-ccd-webcam.html#ixzz1MGEeCF3Y

As you can see, it doesn't generate full-motion video (30fps), instead trades off speed (15fps) for quality of image and color.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Even if the BIOS doesn't support booting from USB, I just read today about a tool for Windows that will let you boot from USB even if the BIOS doesn't let you. In any case, most any system purchased in the past 5 years or more will boot from USB just fine, though you may need to enable that feature in the BIOS.

As for booting different operating systems from a thumb drive, I taught a mini-class to an IEEE group in Chicago last year that showed how to do that for system recovery. One great tool, found on sourceforge.net, is Unetbootin.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Anything that lets a web site download and run an ActiveX control is unsuitable for web browsing, IMO. It is too difficult to keep your Internet Settings configured to deal with all the cruft out there. So, I ONLY use IE to get updates and stuff from Microsoft directly. Everything else on the net I get to via Firefox or Chrome. Chrome is definitely a better performer, but I've read reports that FF 4.0 has closed the performance gap at this time - don't know since I haven't used it yet.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Here is a link to an express card (the new laptop ports) to a PCMCIA/CardBus port adapter: http://www.google.com/products/catalog?hl=en&q=expresscard+to+pcmcia&um=1&ie=UTF-8&tbm=shop&cid=1159910499529702816&sa=X&ei=tH3NTerhIs-3twfYlej9DQ&ved=0CDQQ8wIwAA&biw=1068&bih=1014#

This should let you use newer (cheaper) laptops with your old SRAM cards.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

You might be able to install a more up-to-date AMD processor, but which or if depends upon the socket it uses. What is the make+model of the computer, and if you know which AMD chip it uses, that would be useful information as well.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

What errors are you getting? My guess is that there are some missing dll's and/or activeX controls.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

I will make the assumption that you have purchased these videos and just want to burn a CD/DVD for your personal use? :-)

Assuming that, the message about missing video filters/codecs is probably the correct hint, that you need to install additional software so that these files can be played by your normal video players and burned with your favorite tools. Have you tried installing VLC and see if that can play them? It comes with codecs/filters for just about every format known built in.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

What version of VBox did you install? The current versions (3.2.12 and 4.0) support hardware virtualization extensions of current AMD and Intel processors, and can run Windows 2008 server just fine. If you have a 64-bit version of Linux, then you can run the 64-bit version of 2008 as well. If you are running an older processor without the VT-x or AMD-V extensions, then you will have to update your computer. On many systems that do have these extensions, you have to enable them in the BIOS, then in the VirtualBox configuration tool, go to the System->Acceleration tab and enable VT-x/AMD-V as well as nested paging.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

If, as others noted, your system is adequate to run Win7, then you can install it. However, you cannot directly upgrade from Win2K to Win7. The best advice is to backup your data to an external drive, and then install Win7 from scratch, and updated versions of your applications if necessary. If it were me, I'd forget that and install Linux (some user friendly version such as Linux Mint). It will be cheaper, more reliable, not as prone to virus infections by a huge margin, and faster. That is one good way to breath new life into older systems. To replace MS Office, install Libre Office. To replace Photoshop, either install Wine and Photoshop on that to run in Linux directly, or install Gimp. There are numerous email clients, as well as all the usual web browser, video player, and other tools as well. And as I said, the price is right!

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

When you turn the system on, hold down either the Escape or F2 key on the keyboard (don't let it up). Most BIOS will see that as a keyboard error and bring up the BIOS anyway.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

You either have a virus, or your AV software is causing the system to refuse to install the driver software. First, do a full system scan (setting your scanner preferences to look at EVERYTHING, and as deep as possible into all archives), then clean up the registry (there are tools to do that), and finally disable the AV software. Then, reboot and try to install the hardware again.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

When you format your drive it can be either a "quick" format, or a "full" format. A quick format just rewrites the root file system stuff, so your data is still there and can be recovered with some of the tools mentioned. If it was a full format, then the entire disc was overwritten, which means that it will be a lot more difficult to recover. Not impossible, but not for a normal user with normal tools. It would have to go to a certified data recovery service who will probably disassemble the drive in a clean room and then use special hardware and software to read the latent data (magnetic domains) on the drive that were not completely erased by the format command. To erase a drive to where data is completely unrecoverable, you have to overwrite it several times with different bit patterns. There is a US federal standard for this, to erase sensitive data, and there are applications available (data shredders) that will do that when formatting a drive, or erasing files.

In any case, if you did a quick format, the mentioned tools can probably restore most of your data. If you did a full format, you will have to spend a fair amount of $$ to recover it via a certified data recovery service. I doubt that you "shredded" it, so there is at least that to be thankful for... :-)

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

My question is, what caused this damage? Perhaps your system is misbehaving? Since you lost the install disc, until you get a new one, you are pretty much SOL (Sorry/Sh!t, Out of Luck). If there is a computer store that handles Apples anywhere you can reach, they may be able to help you. Other computer stores / repair depots may also have an install or recovery disc.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

What I do for clients that have this sort of problem is to remove the drive from their system, plug it into an external carrier/enclosure that I connect to my Linux OS via a high-speed eSata connection, and then run 3 different virus scanners (ClamAV, F-Prot, McAfee) on the disc (they each catch stuff the others don't) at their highest sensitivity level. I review the logs, eliminate the false positives, check which items are necessary for system operation, remove the infected files and archives, and finally clean up the registry. Some viruses actually infect components on the recovery partition, so reinstalling Windows still results in an infected system... Finally, I reinstall the disc in their system, boot into recovery mode so the system can restore missing dll's, boot into regular mode, update the system, and finally reinstall broken applications. Sometimes when the recovery partition is infected, I have to copy back the files that were infected with clean versions before I boot into recovery mode. In any case, I have always been able to restore proper operation, but this is not cheap.

So, if you can run a virus scanner on the system, at least when booted into "safe" mode, try that first. FWIW, I don't see many boot sector viruses these days, but the recovery partition infections are becoming more common.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Overclocking systems or graphics boards is an exercise fraught with danger - overheating, power consumption, fried circuits. Some folks who feel a real need for speed will purchase special gear that is designed to take this, but then all the components, CPU, RAM, power supply, video board, motherboard, all have to be built beyond the OEM specs so that overclocking won't screw the pooch. In your case, it is likely that the CPU was not really built for overclocking, so don't push your luck.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

If you do a cold shutdown of a system with applications running that have files opened, it can scramble the hard drive. Try running the disc check utility. If it doesn't see the drive at all, then it probably scrambled the partition table / boot sector. It may be recoverable with the appropriate tools, but it may be that you will have to restore the boot sector, repartition the drive, and reformat it.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Over time, batteries wear out. Example - I have a battery for my Dell laptop that after several (about 5 years) only holds about 1/2 charge. When charged, it shows full power, but it only lasts for a short while before it is down to 5% power. This may be your problem. I think Windows 7 does a better job of monitoring battery life than Vista or XP.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

no, you missed my point ,she thought the whole tower was called a hard drive

Ah! Well, it's not too surprising. A lot of folks see their monitor, and think that's the computer! If it is an iMac, it may well be! :-)

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

I wrote a repeatable 32-bit hash function some years ago (about 20 - when C++ compilers were still very non-standard) for use in a major manufacturing execution system. In all the years since, I have not heard that it caused any collisions. Let me dig up the code and post it here. That is to say, it probably will generate collisions, but extremely rarely. One of its features is that it generates the same hash value no matter the hardware or system architecture (little-endian, big-endian, 32-bit, or 64-bit).

Ok. Here it is:

union CharMask {
  unsigned	in[sizeof(unsigned)];
  char		ch[sizeof(unsigned)*sizeof(unsigned)];
  CharMask();
};

CharMask::CharMask()
{
  for (register unsigned i=0; i<sizeof(unsigned); i++)
    for (register unsigned j=0; j<sizeof(unsigned); j++)
      ch[sizeof(unsigned)*i+j] = j<i ? 0xff : 0;
}

/*
 * Return a case-sensitive hash value.
 */
unsigned hash(unsigned char* data)
{
// This modification is to assure inter-platform consistency of string
// hash values.  IE: str.hash() on Sparc == str.hash() on Alpha
  static CharMask chmask;
  static unsigned shift = (sizeof(unsigned) == 4) ? 2 : 1;
  register unsigned h, i, j;
  register unsigned char* c = data;
  union
    {
      unsigned char cdata[sizeof(unsigned)];
      unsigned udata;
    } pad;

  h = 0;
  // Compute starting bit pattern for h
  j = length();
  if (j > 0)
    {
      for (i = 0; i < sizeof(unsigned); i++)
	{
	  pad.cdata[i] = (unsigned char)(j % 256);
	  j /= 256;
	}
      h = pad.udata;
    }

  // Hash data in string to the initial bit pattern
  for (i = length(); i >= …
rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Undergraduates do this all the time in their Operating Systems courses. Find some notes online.

Well, what they do is usually a Q&D (Quick and Dirty) little mini-OS. More a run-time executive than anything else. There is no time even in an advanced undergraduate course to do much more than that.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Would you like fries with that? :rolleyes:

Attached is a zip file for linux-utils v2.12 which should be compatible with your kernel, though no guarantees of that. If you are enterested, you can find them here in their original gzip'd format: http://www.kernel.org/pub/linux/utils/util-linux/

Well, the upload failed, so you will have to download it yourself.

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Well, the hard part is done. bool isMember(double x) should just iterate over the list from head to tail (we did that when printing the values). So, just call "head->isMember(x)", and isMember() will iterate, comparing each member's value with x. The default constructor only needs to set next and value to 0, which we were doing directly. So, once you have the initializers in the constructor fixed, you can leave off the default initialization that we were doing, such as

ListNode *newNode = new ListNode;

With the appropriate default constructor, you won't have to do this:

newNode->next = 0;
newNode->value = 0;

So, consider that your part of this exercise! :-)
Post your code here when done and we'll make some sarcastic comments about it... :-)

rubberman 1,355 Nearly a Posting Virtuoso Featured Poster

Yeah! Ok! She probably took the drive apart to "dust" it... :-)