Sunday, November 30, 2008

OS-X Bootcamp Missing or Corrupt Issue

I got my OS-X Leopard 10.5 a few days ago. After OSX installation, I went to Preference->Utilities->Boot Camp Assistant and then configured it. After reboot and installed the Windows XP, when my MacBook rebooted, it always failed and showed a message as below:

Windows could not start because the following file is missing or corrupt:
\system32\hal.dll
Please re-install a copy of the above file

I've tried various attempts with no success. I searched Google but nothing really helped solving the issue. Finally, I retried again by restoring the OSX into single partition and repartitioned it using The Bootcamp and chose 32 GB FAT32 partition for the Windows. During Windows Installation, I did not delete the partition created by the Bootcamp, but instead just chose NTFS Quick format. Out of my suprise, It worked.

So, the main issue before was that I should hadn't deleted the BOOTCAMP partition I shouldn't had used Windows' Partitioner) and just straightly reformat it and install the Windows.

It works now, except it couldn't find the audio driver (all the other devices were recognized and installed through the OSX CD).

Tuesday, November 25, 2008

AVI to MPEG mass conversion

Need a FFMPEG installed.

The following command will convert all *.AVI files into SVCD-format (with MP3 audio) files:


find . -iwholename *.avi -exec ffmpeg -target ntsc-svcd -acodec mp3 -y -i '{}' '{}.mpg' \;


To see all supported format on FFMPEG:


ffmpeg -formats

Wednesday, November 19, 2008

Using Vector template


#if defined(__cplusplus)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>
#include <vector>
#else
error "must be CPP-enabled compiler to compile this program"
#endif

using namespace std;


class CPoint {
public:
CPoint(double a, double b) { x = a; y = b; };
friend std::ostream& operator<< (std::ostream& os, const CPoint& val);
double getX() { return x; };
double getY() { return y; };
private:
double x;
double y;
};


std::ostream& operator<< (ostream& os, const CPoint& pt)
{
return os << "(" << pt.x << ", " << pt.y << ")" ;
}


int main()
{
vector<CPoint> points;
vector<CPoint>::iterator it;
int i;

it = points.begin();

for (i=0; i<10; i++) {
it = points.insert( it, CPoint(10.5+double(i)/11, 22.7 - double(i)/13) );
}


cout << "Vector Demo" << endl << "-------------" << endl;
cout << "Vector size = " << points.size() << endl;

for (it = points.begin(), i=0; it < points.end(); it++,i++)
{
// cout << "points[" <<>x;
cout << " " << *it;
cout << endl;
}

for (i=0; i< points.size(); i++)
{
cout << "points[" << i << "] = " << points[i] << endl;
}

return 0;
}

Friday, November 14, 2008

Making Linux running SUSE as a Bridge


  1. Make sure bridge module is installed in the Kernel

  2. Run the bridge module: sudo modprobe bridge

  3. Install bridge-utils (download it from http://bridge.sourceforge.net) and copy brctl into /sbin (the ifup script is hardcoded to call it from /sbin)

  4. create a new bridge instance (in this example, the bridge name is called br0): sudo brctl addbr br0

  5. Add the interface(s) to be members of this bridge: sudo brctl addif br0 ethx (where x = 0, 1, ...)
  6. To make it permanent, copy /etc/sysconfig/network/ifcfg-template to ifcfg-br0
  7. Modify the content and let have it as below (IPADDR is chosen here as 192.168.1.4):

  8. IPADDR=192.168.1.4
    NETMASK=255.255.255.0
    NETWORK=
    BROADCAST=
    STARTMODE=auto
    USERCONTROL=no
    BRIDGE='yes'
    BRIDGE_PORTS='eth0 eth1 eth2'
    BRIDGE_AGEINGTIME='300'
    BRIDGE_FORWARDDELAY='0'
    BRIDGE_HELLOTIME='2'
    BRIDGE_MAXAGE='20'
    BRIDGE_PATHCOSTS='19'
    BRIDGE_PORTPRIORITIES=
    BRIDGE_PRIORITY=
    BRIDGE_STP='on'

  9. restart network: sudo /etc/init.d/network restart