auto_ptr::release()
The release() function removes ownership of the stored object from the
invoking auto_ptr and returns a pointer to the object. After a call to release(),
the pointed-to object is not automatically destroyed when the auto_ptr object
goes out of scope.
-- Herb Schildt's C++ Programming Cookbook, Chapter 7, page 489
petrichor (/'pe - tri - kor'/) is the familiar scent of rain on dry earth
this tech blog is the wafting fragrance of my geeky outpourings, one post at a time
Wednesday, October 14, 2009
Monday, October 12, 2009
c++: deleting elements from a map
Q: Does std::map.erase() properly delete pointers, or does it create memory leaks?
A: It properly does not delete pointers, because it can't assume that nothing else points at the same thing. std::map cleans up the memory *it* explicitly allocated. *You* clean up the memory *you* explicitly allocated.
Here's how to safely delete all elements in a map, that will work for any container:
A: It properly does not delete pointers, because it can't assume that nothing else points at the same thing. std::map cleans up the memory *it* explicitly allocated. *You* clean up the memory *you* explicitly allocated.
Here's how to safely delete all elements in a map, that will work for any container:
std::map<int, char*> Mappy;
int main()
{
for(int Index = 0; Index < 10; ++Index)
Mappy.insert(std::make_pair(Index, new char[10]));
for(std::map<int, char*>::iterator MapItor = Mappy.begin(); MapItor != Mappy.end(); ++MapItor)
{
char* Value = (*MapItor).second;
delete Value;
}
system("pause");
return 0;
}
Wednesday, October 7, 2009
visual studio: how to show the full file path in the title bar
http://www.helixoft.com/blog/archives/32
Tuesday, October 6, 2009
batch file to fix WMI errors
There's a lot to learn about batch file scripting from this example!
source
source
net stop winmgmt
pause
c:
cd c:\windows\system32\wbem
rd /S /Q repository
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
mofcomp cimwin32.mof
mofcomp cimwin32.mfl
mofcomp rsop.mof
mofcomp rsop.mfl
for /f %%s in ('dir /b /s *.dll') do regsvr32 /s %%s
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s
mofcomp exwmi.mof
mofcomp -n:root\cimv2\applications\exchange wbemcons.mof
mofcomp -n:root\cimv2\applications\exchange smtpcons.mof
mofcomp exmgmt.mof
Monday, October 5, 2009
linux: adding swap space on-the-fly to your system
You might find that the swap partition you specified at install-time just isn't enough anymore. Maybe you've added more RAM to your machine and need to increase the swap partition accordingly. Or maybe you're upgrading your system to a version that uses more swap in relation to physical RAM. Perhaps you're running Oracle. In case your machine is swapping like mad and you just can't take it down right now to add more RAM, you can add more swap space on the fly using the following procedure. As an example, to keep the machine from running out of memory entirely and freezing up, we'll add 128 MB more swap space by creating a swap file. First we check out the memory usage:
Make sure we have 128 MB laying around somewhere:
OK, we're going to make a swap file in /opt by using dd to create a file 128 MB in size.
Let's not make it world-readable...
Now we set up the swap area and enable it.
And voila! Twice as much swap as before.
You can append a line like this to /etc/fstab to enable your swap file automatically at boot time:
source
[root@domain /root]# free -m
total used free shared buffers cached
Mem: 251 242 8 22 11 32
-/+ buffers/cache: 198 52
Swap: 133 133 0
Make sure we have 128 MB laying around somewhere:
[root@domain /root]# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda9 132207 33429 91952 27% /
/dev/hda1 15522 2537 12184 17% /boot
/dev/hda6 6143236 739000 5092176 13% /opt
/dev/hda7 1035660 836204 146848 85% /usr
/dev/hda5 2071384 344048 1622112 17% /usr/local
/dev/hda8 303344 14439 273244 5% /var
OK, we're going to make a swap file in /opt by using dd to create a file 128 MB in size.
[root@domain /opt]# dd if=/dev/zero of=swapfile bs=1024 count=132207
132207+0 records in
132207+0 records out
[root@domain /opt]# ls -l
total 132364
drwxr-xr-x 20 usr-3 users 4096 May 22 10:46 usr-3
drwxr-xr-x 2 root root 16384 Feb 21 07:04 lost+found
-rw-r--r-- 1 root root 135379968 May 29 11:52 swapfile
Let's not make it world-readable...
[root@domain /opt]# chmod 600 swapfile
[root@domain /opt]# ls -l
total 132364
drwxr-xr-x 20 usr-3 users 4096 May 22 10:46 usr-3
drwxr-xr-x 2 root root 16384 Feb 21 07:04 lost+found
-rw------- 1 root root 135379968 May 29 11:52 swapfile
Now we set up the swap area and enable it.
[root@domain /opt]# mkswap swapfile
Setting up swapspace version 1, size = 135372800 bytes
[root@domain /opt]# swapon swapfile
And voila! Twice as much swap as before.
[root@domain /opt]# free
total used free shared buffers cached
Mem: 257632 254632 3000 2512 36172 15096
-/+ buffers/cache: 203364 54268
Swap: 268708 136512 132196
You can append a line like this to /etc/fstab to enable your swap file automatically at boot time:
/opt/swapfile swap swap defaults 0 0
source
Wednesday, September 23, 2009
python: writing your own urllib2 redirect_handler
class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl=''):
global intermediateURL
intermediateURL = newurl
if code in (301, 302, 303, "refresh") or (code == 307 and not req.has_data()):
newRequest = urllib2.Request(
newurl,
headers=req.headers,
origin_req_host=req.get_origin_req_host(),
unverifiable=True
)
newRequest._origin_req = getattr(req, "_origin_req", req)
return newRequest
else:
raise HTTPError(req.get_full_url(), code, msg, headers, fp)
source
Tuesday, September 15, 2009
how to enable tap zones on dell mouse drivers
To unlock the native touchpad features which are masked by Dell's touchpad software:
1. Go to control panel and select MOUSE to see what options are available (very few) and close that all up.
2. Next click on the Windows Start icon and type regedit in the search box.
Windows Registry will open.
Navigate to HKEY_LOCALMACHINE\SOFTWARE\Alps\Apoint and look for the key UseCustomGUI (it's the 2nd to last entry on the list)
Change the value from 1 to 0 and click on OK
3. Next minimize the registry (don't close it yet).
Goto Control Panel and select MOUSE.
Now all the ALPs settings are unlocked and appear here.
For example the GESTURES feature is now showing.
Select GESTURES tab and check ON the box for
Use Back/Forward Buttons.
Then click APPLY and OK.
Close the Mouse settings and close the Control panel.
4. Now go back to your registry setting and change
UseCustomGUI back to it's original value of 1 and close it and the reg editor.
Everything is back exactly as it was but the feature remains enabled.
All done....now when your surfing just swipe your finger along the top edge of the touch pad to go back and forward.
source
1. Go to control panel and select MOUSE to see what options are available (very few) and close that all up.
2. Next click on the Windows Start icon and type regedit in the search box.
Windows Registry will open.
Navigate to HKEY_LOCALMACHINE\SOFTWARE\Alps\Apoint and look for the key UseCustomGUI (it's the 2nd to last entry on the list)
Change the value from 1 to 0 and click on OK
3. Next minimize the registry (don't close it yet).
Goto Control Panel and select MOUSE.
Now all the ALPs settings are unlocked and appear here.
For example the GESTURES feature is now showing.
Select GESTURES tab and check ON the box for
Use Back/Forward Buttons.
Then click APPLY and OK.
Close the Mouse settings and close the Control panel.
4. Now go back to your registry setting and change
UseCustomGUI back to it's original value of 1 and close it and the reg editor.
Everything is back exactly as it was but the feature remains enabled.
All done....now when your surfing just swipe your finger along the top edge of the touch pad to go back and forward.
source
Subscribe to:
Posts (Atom)