Computers
Table of Contents
- 1 Programming
- 2 Web/CSS
- 3 Linux
- 4 Elastix
- 5 Postgres
- 5.1 Postgres YUM repos
- 5.2 Backup Postgres
- 5.3 Postgres On Centos
- 5.4 Change how many mounts fsck waits before it runs on a partition
- 5.5 Disable IPV6 on CentOS/RHEL
- 5.6 Software RAID
- 5.7 My Software RAID Adventure
- 5.8 LVM over mdraid
- 5.9 Remi Repo
- 5.10 "SCP" alternative when you don't want to follow Symlinks
- 5.11 CFV / SFV
- 5.12 Postfix with MySQL Support
- 5.13 Postfix with Postgres
- 5.14 Compaq 6710b + FC8
- 5.15 Copying the contents of a linux partition preserving permissions
- 5.16 Disable Firefox Offline mode
- 5.17 Copy and Verify
- 6 Squid
- 7 MySQL
- 8 Linux Scripts and Handy Bits
- 9 Searching and Grepping
- 9.1 Find empty folders / find and delete empty folders
- 9.2 Find files based on creation date
- 9.3 Not finding files ?!? - Exclude criteria from final result
- 9.4 Recursive Diff that skips SVN crap folders
- 9.5 One line Seach and Destroy
- 9.6 One Line Search and Replace
- 9.7 Rename Directories for Saved Web Pages
- 9.8 One Line Search and Replace (Entire Line)
- 9.9 Recursive Grep
- 10 Database Stuff
- 11 IPTables Stuff
- 12 Mods
- 13 Servers
- 14 Windows
- 15 Printer Stuff
- 16 Fiber, LAN and Broadband
- 17 GIMP Script-Fu
- 18 Public Domain Clipart etc.
- 19 Perl
- 20 Python
- 21 Microsoft Dynamics RMS Install Notes
- 22 ACCPAC Plus DOS -> Microsoft Dynamics
- 23 SAMBA as a PDC
- 24 Random EOTL MUD stuff
- 25 VMWare
- 26 Memory
- 27 Hardware
- 28 Novell 4.11 Notes
- 29 KDE
- 30 Other Misc
- 31 Financial Stuff
- 32 Mods
- 33 Old Articles
Programming
Javascript / XML
Web/CSS
Vertical Centering
http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
Linux
Random Handy Ubuntu Upgrade Stuff
When doing dist-updates be careful. Back up sources.list too. The key is updating apt, dpkg and libc6 before you dist-upgrade. This helps:
sudo sed -i 's/gutsy/hardy/' /etc/apt/sources.list
sudo apt-get update
apt-get install apt dpkg libc6
sudo apt-get dist-upgrade
Linux Firewall
http://www.ipcop.org/
http://www.advproxy.net/
http://update-accelerator.advproxy.net/
Samba
netlogon scripts for samba:
http://lists.samba.org/archive/samba/2004-December/096549.html
http://www.howtoforge.com/samba_setup_ubuntu_5.10_p4
SATA
Just recently I moved a Centos 5.2 server from SCSI to SATA with software raid. I needed to update the System.map and initrd files (I know this now...) After a lot of frustration I found these commands:
depmod -ae -F /boot/System.map-2.X.X-whatever
mkinitrd -v -f /boot/initrd-2.X.X-whatever.img 2.X.X-whatever
This meant that both ata_piix and raid1 kernel modules were loaded and the SATA drive and software RAID were recognised.
Elastix
- asterisk –rvvvvvvvvvvvvv
- sip debug peer (your extension)
Postgres
Postgres YUM repos
http://yum.pgsqlrpms.org/reporpms/repoview/letter_p.group.html
Backup Postgres
pg_dumpall -U <db_superuser_name> > backup.sql
Postgres On Centos
http://www.gentoo.org/doc/en/postgres-howto.xml
http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html
Change how many mounts fsck waits before it runs on a partition
Show the current maximum.
tune2fs -l | grep Maximal
Set the number of mounts before a scan is done.
tune2fs -c 50 /dev/hda1
Disable IPV6 on CentOS/RHEL
- Edit /etc/sysconfig/network and set "NETWORKING_IPV6" to "no"
- Add the following to /etc/modprobe.conf :
alias ipv6 off
alias net-pf-10 off
- Run chkconfig ip6tables off do disable the IPv6 firewall
- Reboot the system
Software RAID
Management with mdadm, random bits and pieces...
Had to do this once because the device wasn't created:
mknod /dev/md0 b 9 0
Other stuff:
mdadm --assemble /dev/md0 /dev/sdc1
mdadm --manage --add /dev/md0 /dev/sdd1
mdadm --detail /dev/md0
Creating a mdadm.conf - Sometimes required for booting off a md array.
echo 'DEVICE partitions' > /etc/mdadm.conf
mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
My Software RAID Adventure
This is my mdadm adventure. It's got to be one of my favorite utilities lately. The situation is this:
I had a server with old scsi drives. I rebuilt the machine with an 80 gig SATA drive with a bigger partition for the root, but the rest the same. I used tar to get everything across with permissions intact. At the same time I created soft mirrors with failed devices. This was while I waited for bigger drives. Heres what I did next.
- Partition the two 500s identically to the existing drive, plus a big partition on the end.
- Add the new partitions to the mirrors
mdadm --manage --add /dev/md0 /dev/sdb1
mdadm --manage --add /dev/md0 /dev/sdc1
mdadm --manage --add /dev/md1 /dev/sdb2
mdadm --manage --add /dev/md1 /dev/sdc2
mdadm --manage --add /dev/md2 /dev/sdb3
mdadm --manage --add /dev/md2 /dev/sdc3
- Grow them out to 3 disk mirrors so they synch all 3 disks.
mdadm -G -n 3 -l 1 /dev/md0
mdadm -G -n 3 -l 1 /dev/md1
mdadm -G -n 3 -l 1 /dev/md2
- Wait for the drives to synch up.
watch --interval=1 "cat /proc/mdstat"
- Start Failing the original partitions (80 gig sda)
mdadm --manage --fail /dev/md0 /dev/sda1
mdadm --manage --fail /dev/md1 /dev/sda2
mdadm --manage --fail /dev/md2 /dev/sda3
will output something like: 'mdadm: set /dev/sda3 faulty in /dev/md2'
- Remove the old partitions from the mirrors.
[root@cherufe cacti]# mdadm --manage --remove /dev/md0 /dev/sda1
mdadm --manage --remove /dev/md1 /dev/sda2
mdadm --manage --remove /dev/md2 /dev/sda3
will output something like: 'mdadm: hot removed /dev/sda1'
- Grow (Shrink) the mirrors back down to 2 drives.
mdadm -G -n 2 -l 1 /dev/md0
mdadm -G -n 2 -l 1 /dev/md1
mdadm -G -n 2 -l 1 /dev/md2
- Create a new big mirror to mount somewhere else with the remaining space.
mdadm --create -l 1 -n 2 /dev/md3 /dev/sdb4 /dev/sdb4
voila 2 fresh drives mirrored live.
LVM over mdraid
LVM over mdraid:
Create your mdraid. md7 in this example.
Create physical volumes from your disks.
pvcreate /dev/md7
- You can use pvscan to show the physical volumes and pvdisplay to show info (no arguments shows all of them).
Create a Volume Group to slice up into Logical Volumes.
vgcreate VolGroup00 /dev/md7
- There is also vgscan and vgdisplay for info on Volume Groups.
Create a Logical Volume on the Volume Group. In this case I am using the -l option with a percentage. This command will use all of the free space available on the Volume Group.
lvcreate -l 100%FREE -n LogVol00 VolGroup00
- There is also lvscan and lvdisplay for info on Volume Groups.
Make a filesystem on the Logical Volume.
mkfs.ext3 /dev/VolGroup00/LogVol00
For extra points:
You can extend the available space for Logical Volumes by adding Physical Volumes and then adding those to the Volume Group. From there you can extend Logical Volumes or add more.
- Create a new mdraid. Example md8.
Create the Physical Volume.
pvcreate /dev/md8
Extend the Volume Group by adding /dev/md8 to it.
vgextend VolGroup00 /dev/md8
Extend the Logical Volume by the amount of free space available.
lvextend -l +100%FREE /dev/VolGroup00/LogVol00
Scan the filesystem.
e2fsck -f /dev/VolGroup00/LogVol00
Resize the filesystem to fill.
resize2fs /dev/VolGroup00/LogVol00
Excellent docs on the subject:
http://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/index.html
Remi Repo
Remi Collet, an “official” Fedora developer, has made available a repo of packages
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-4.el5.remi.noarch.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
Remember the repo is disabled by default. I wanted PHP 5.2.x and the newer MySQL so I issued the following to only allow certain packages, rather than the whole repo.
yum --enablerepo=remi update php
yum --enablerepo=remi update mysql-server
"SCP" alternative when you don't want to follow Symlinks
rsync -azuv -e ssh [email protected]:remotesource/* localdest/
CFV / SFV
Command-Line file Verify - compatible with SFV (Simple File Verify)...
http://sourceforge.net/projects/cfv/
Postfix with MySQL Support
cd make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm'
Postfix with Postgres
Works better when you put the include and auxlib arguements in quotes... that was my trouble. It was passing the -DHAS_PHSQL to gcc but not the rest because it just got junked as an extra arguement.
make -f Makefile.init makefiles CCARGS='-DHAS_PGSQL -I/usr/include/pgsql' AUXLIBS='-L/usr/lib -lpq -lz -lm'
Compaq 6710b + FC8
- crashes at installer loading
Add kernel arguements:
floppy.allowed_drive_mask=0 clocksource=acpi_pm
Copying the contents of a linux partition preserving permissions
I found this while moving a server from SCSI to SATA. To do this, I mounted the new drive under /mnt. You then do a tar dump of the root and pull it all out again at /mnt. Job done =)
(cd /;tar cf - . ) | (cd /mnt; tar xf - )
Disable Firefox Offline mode
It's really annoying when I have wifi disabled and a LAN cable not plugged in my laptop to have Firefox go into offline mode.
Navigate to about:config in Firefox
Set toolkit.networkmanager.disable to true.
Firefox will nolonger use network manager to determine the network status and will stay in 'online' mode all the time.
Copy and Verify
rsync -cav sourcefiles destfiles
Squid
http://urlblacklist.com/?sec=download
http://wl500g.info/showthread.php?t=17287
http://linux.com/feature/60050
Squid3:
http://people.redhat.com/~jskala/squid/
Autoconfiguration:
http://www.findproxyforurl.com/pac_file_examples.html
Some notes on transparent proxy config (unorganised)
modprobe ip_conntrack
modprobe ip_conntrack_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
MySQL
MyTop
MyTop is your friend.
# yum -y install perl-TermReadKey perl-DBI mytop
Maatkit
Maatkit is also your friend.
http://www.maatkit.org/
Convert all your MyISAM tables to INNODB. I had to do this once on a SugarCRM instance where it was just deadlocking it's self all the time on MyISAM.
mk-find <db_name> --engine MyISAM --exec "ALTER TABLE %D.%N ENGINE=INNODB" --print
Linux Scripts and Handy Bits
Centos 5.2 really slow on fresh install
A bit of an unusual one, hard to spot. Having just built the machine and installed CentOS 5.2 on it, I logged in as root but found it took about 3 seconds for 'root' to come up after I typed it. I immediately thought it was the software RAID I implemented. So I did some reading. It turns out this guy had the same problem. The BIOS by default had the SATA II ports in IDE mode. You can confirm this by looking at your hard drives in /dev. They will be hdx instead of sdx. more here at nixcraft. So, you must set your SATA controller to native mode with AHCI to solve this.
Converting FLV (Flash Video) to MPEG
ffmpeg -i video.flv -ab 56 -ar 22050 -b 500 -s 320x240 test.mpg
Web Permissions
This is my little permissions fix script. Its great for folders that apache serves from.
Just remember to change permissions on config files and sensitive stuff later on.
#/bin/bash
if "$1" == ""
then
echo "Fix Web Permissions Script - Tim 10/09/2007"
echo "Recursively changes permissions on folders 775 and files 664"
echo "Usage: fixperms <user:group> <folder>"
else
chown -R $1 $2
find $2 \( -type d -execdir chmod 775 '{}' + \) , \( -type f -execdir chmod 664 '{}' + \)
fi
Continuous Tail Script
This is my continuous tail script. It's good to have running on another screen while you are working on PHP code. You can ct the apache error_log and watch the log as the page is accessed. Streamlines the whole debugging thing.
#/bin/sh
if "$1" == ""
then
echo "Continuous Tail Script (50 Lines, 5s Interval). Tim 10/09/2007"
echo "Usage: ct <file>"
else
clear
tail -n 50 -s 5 -f $1
fi
Searching and Grepping
Find empty folders / find and delete empty folders
find . -type d -empty
find . -type d -empty | while read dir; do rm -rf "$dir"; done
Find files based on creation date
Find based on date
touch -d "21 feb 2008 12:14:00" datefile
find . -newer datefile
Find based on creation between two dates
touch -amt 200906260000 /tmp/ref1
touch -amt 200906262359 /tmp/ref2
find / -type f -newer /tmp/ref1 -a ! -newer /tmp/ref2
Not finding files ?!? - Exclude criteria from final result
It makes perfect sense! Find everything except stuff that matches the condition.
find . -type f -not -iname "*.jpg"
Recursive Diff that skips SVN crap folders
This is great to compare two different instances of something checked out of subversion.
diff -rq <folder1> <folder2> | grep -v .svn
One line Seach and Destroy
This is great for stripping out all those crappy thumbs.db files windows and ACDSee leave behind in a folder.
find -type f -name "*.db" | while read file; do rm "$file"; done
One Line Search and Replace
find . -type f -exec sed -i 's/<find>/<replace with>/g' {} \;
Rename Directories for Saved Web Pages
find . -type d -name \*_files | while read dir; do mv "$dir" "`echo $dir | sed -e 's/_files//g'`"; done
One Line Search and Replace (Entire Line)
find . -type f -exec sed -i "/<pattern>/c\\<new line to use>" {} \;
Recursive Grep
This script is bloody excellent. It's the most handy script I've got at the moment as I've been doing some maintenance on an old OSCommerce installation.
Awesome recursive text search. Originally from http://www.joegrossberg.com. It's called regrep 2.0
#!/usr/bin/perl
$string = join " ", @ARGV; # ugly hack; there must be a better way
unless ($string) {
$error = "Usage: regrep [string]\nRecursively searches all files ";
$error .= "in current directory for [string]\n";
print $error;
exit 1;
}
# Ideally, we'd parse the arguments better.
#$directory = shift @ARGV;
unless ($directory) { $directory = '.'; }
@grepOutput = `egrep -rn --color=always "$string" $directory`;
for $line (@grepOutput) {
if ($line =~ /^BINARY.*/) {
; # do nothing
} elsif ($line =~ /^([^:]*)(:)([^:]*)(:)(.*)/) {
print "\033[1;34m";
print $1;
print "\033[0m";
print $2;
print "\033[1;36m";
print $3;
print "\033[0m";
print $4;
print $5;
print $6;
print "\n";
}
}
Database Stuff
Neat round to 0.25
SELECT ROUND( target/25.0, 2) * 25
IPTables Stuff
Block an IP
iptables -A INPUT -s 1.2.3.4 -j DROP
Block an IP Range
I was getting a lot of dictionary attacks from PCs in .edu.tw. So I just blocked their whole subnet.
iptables -A INPUT -m iprange --src-range 140.117.0.0-140.138.255.255 -j DROP
Lots of xxx.yyy.tw1.com. Pakistan, dictionary attacks again. Same method. They're 221.132.112.0 - 221.132.119.255.
iptables -A INPUT -m iprange --src-range 221.132.112.0-221.132.119.255 -j DROP
Quickly Locate Invalid Users
cat /var/log/secure | grep "Invalid user" | gawk '{print $10}' | sort -u
Whois From list of IPs from secure log (Work in Progress)
cat /var/log/secure | grep "Invalid user" | gawk '{print $10}' | sort -u | sort | while read line; do echo; echo "$line:"; whois $line | grep -e inetnum -e desc; done > ips.txt
Output like this:
58.246.14.235:
inetnum: 58.246.0.0 - 58.247.255.255
descr: CNC Group ShangHai province network
descr: China Network Communications Group Corporation
descr: No.156,Fu-Xing-Men-Nei Street,
descr: Beijing 100031
descr: CNC Group CHINA169 Shanghai Province Network
Mods
Once I import my old blog + articles the mods will be back in here.
Servers
Windows
Connect Printer Shares on Command Line
@echo off
rundll32 printui.dll,PrintUIEntry /ga /in /q /n "\\%server%\1stShare"
rundll32 printui.dll,PrintUIEntry /ga /in /q /n "\\%server%\2ndShare"
rundll32 printui.dll,PrintUIEntry /ga /in /q /n "\\%server%\3rdShare"
Recover 2003 AD Administrator Password
After lots of reading I have worked out this is a two stage process. First you need to obtain or break the local administrator password, you then have to change the AD Administrator password from there.
- Get Hiren's Boot CD.
- If you can't shut the machine down, power it down or reset it. Boot into safe mode. From there you will be able to gracefully shut down the server. This is the key I believe. You should repeat this twice. Shutdown from the safe mode login. The NTFS volume MUST be clean for the open source NTFS driver to be able to write to it.
- Boot Hiren's Boot CD, choose the first password reset utility ( will fill in propper name later.)
- Search the windows partition for the SAM file and wipe out the password.
Phase II
- Boot into Directory Service Restore Mode (F8 Menu)
Continued. http://www.petri.co.il/reset_domain_admin_password_in_windows_server_2003_ad.htm
Allow viewing of CHM over LAN
Save this in a .reg file to import it into the registry.
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001
Disable Automatic Reboot (XP)
Start->Run->Regedit
- Registry Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
- Modify/Create the Value Data Type(s) and Value Name(s) as detailed below.
- Data Type: Dword // Value Name: AutoReboot
- Setting for Value Data: [0 = AutoReboot Disabled / 1 = AutoReboot Enabled]
- Exit Registry and Reboot
Printer Stuff
- Service menu for HP 3550 Laserjet: 10355004
Fiber, LAN and Broadband
SNMP Bits and Pieces
List of Interfaces (names):
snmpwalk -c public -v 1 <host or IP> -On | grep .1.3.6.1.2.1.2.2.1.2. | grep STRING
Billion 7300G Interfaces:
.1.3.6.1.2.1.2.2.1.2.1 = STRING: lo
.1.3.6.1.2.1.2.2.1.2.2 = STRING: teql0
.1.3.6.1.2.1.2.2.1.2.3 = STRING: imq0
.1.3.6.1.2.1.2.2.1.2.4 = STRING: imq1
.1.3.6.1.2.1.2.2.1.2.5 = STRING: eth0
.1.3.6.1.2.1.2.2.1.2.6 = STRING: ra0
.1.3.6.1.2.1.2.2.1.2.7 = STRING: br0
.1.3.6.1.2.1.2.2.1.2.8 = STRING: ppp0
Cisco 29XX Switches:
CISCO 2924
1.3.6.1.2.1.2.2.1.5.x Interface Speed ISO bps.
1.3.6.1.2.1.2.2.1.10.x Interface In Octets
1.3.6.1.2.1.2.2.1.16.x Interface Out Octets
1.3.6.1.2.1.2.2.1.2.x Interface Description
Billion 7402 MIBs:
Remember the SNR and Attenuation are stored as integers, so you must divide them by 10 to get the actual numbers in dB. ie. 54.3dB is stored as 543.
Billion:
.1.3.6.1.2.1.10.94.1.1.5.1.2.3 Sync Up
.1.3.6.1.2.1.10.94.1.1.4.1.2.3 Sync Down
.1.3.6.1.2.1.10.94.1.1.2.1.4.3 SNR Down (INT /10 for dB)
.1.3.6.1.2.1.10.94.1.1.3.1.4.3 SNR Up (INT /10 for dB)
.1.3.6.1.2.1.10.94.1.1.2.1.5.3 Attenuation Down (INT /10 for dB)
.1.3.6.1.2.1.10.94.1.1.3.1.5.3 Attenuation Up (INT /10 for dB)
.1.3.6.1.2.1.2.2.1.18.4 Wireless TX Packets
.1.3.6.1.2.1.2.2.1.12.4 Wireless RX Packets
.1.3.6.1.2.1.2.2.1.10.4 Wireless RX Octets
.1.3.6.1.2.1.2.2.1.16.4 Wireless TX Octets
Billion 7300G Reboot URL
Restart the 7300G with Current Settings. Replace a.b.c.d with it's IP address or hostname. This example also uses the default user/password of admin/admin.
wget --post-data "factory=0" --http-user="admin" --http-password="admin" http://a.b.c.d/goform/updatecomplete
Rough ADSL Line Attenuation/SNR Grading
I found this on the Whirlpool Forums ages ago and its been hanging around in a text file. So I'm putting it here now. I'm not sure which user contributed it though, it's been quoted so many times on there.
Noise Margin (AKA Signal to Noise Margin or Signal to Noise Ratio Margin)
Relative strength of the DSL signal to Noise ratio. 6dB is the lowest dB manufactures specify for modem to be able to synch. In some instances interleaving can help raise the noise margin to an acceptable level. The higher the number the better for this measurement.
- 6dB or below is bad and will experience no synch or intermittent synch problems
- 7dB-10dB is fair but does not leave much room for variances in conditions
- 11dB-20dB is good with no synch problems
- 20dB-28dB is excellent
- 29dB or above is outstanding
Line Attenuation
Measure of how much the signal has degraded between the DSLAM and the modem. Maximum signal loss recommendation is usually about 60dB. The lower the dB the better for this measurement.
- 20dB and below is outstanding
- 20dB-30dB is excellent
- 30dB-40dB is very good
- 40dB-50dB is good
- 50dB-60dB is poor and may experience connectivity issues
- 60dB or above is bad and will experience connectivity issues/code
GIMP Script-Fu
Public Domain Clipart etc.
http://www.clker.com/
Perl
CPAN Stuff
perl -MCPAN -e shell
install Blah::Whatever
Talking to the LPT Port in Perl
From http://www.geekinventions.com/?q=node/6
#!/usr/bin/perl -w
# Not necessary, this just makes you write cleaner
# code than you probably normally would.
use strict;
# Load the Parallel Port Module.
use Device::ParallelPort;
# Set up your parallel port object and tell it what
# driver to use. Note, I used 'linux' as the driver.
# the documentation will explain how to use the
# other drivers.
my $parport = Device::ParallelPort->new('linux');
# Now that you have $parport, you can turn your # data bits on and off which will send +5VDC down # each wires.
# This line tells it to set data bit 0 on.
$parport->set_bit(0, 1);
# Now there is +5VDC going down the wire.
# This line tells it to set data bit 0 off.
$parport->set_bit(0, 0);
# Now there is 0VDC going down the wire.
# Note that the first argument is the data bit, and
# the second number is either 1 for on, or 0 for
# off. the data bits range from 0 to 7 (8 total).
# With that in mind, the following eight lines will
# turn on all 8 data bits.
$parport->set_bit(0, 1);
$parport->set_bit(1, 1);
$parport->set_bit(2, 1);
$parport->set_bit(3, 1);
$parport->set_bit(4, 1);
$parport->set_bit(5, 1);
$parport->set_bit(6, 1);
$parport->set_bit(7, 1);
# One more important line of code that isn't
# directly related to the parallel port, but can be
# very handy none the less, is how to make a
# pause for less than a second. Traditionally, you
# would use the 'sleep(1)' function to sleep for any
# amount of seconds. However, in controlling
# devices or whatnot you may only want to pause
# for a split second. That's where the select
# statement comes in.
select(undef,undef,undef, .25);
# That line would pause for .25 seconds. So, for
# example, if you want to pause for three and a
# half seconds (3.5) you would type.
select(undef,undef,undef, 3.5);
Python
QT4/PyQt/QScintilla/Eric4 Stuff
I have decided to learn Python again. I did try a while back but it kind of faded to nothing. The only little app I've got to show for that is an electronics calculator that does basic P I R E type calculations. It was a cool little fun app though. Not terribly complex. A few dropdowns, some text boxes, some basic signal/slot stuff. etc. etc.
Back to my new Python Adventure...
I just used yum to install Qt4, PyQt4 and their -devel packages. I then headed over to riverbankcomputing.co.uk to get the QScintilla2 source.
I initially had trouble building QScintilla2 for Qt4. I was getting all sorts of odd missing files type errors and undeclared data types. Looking closer at the g++ command line that qmake created in the Makefile, I noticed that it was still using qt 3.3 includes. Oops! I then worked out that the qmake I was running was actually the one that belongs to Qt3. Oops Again! I managed to create a valid Makefile once I used qmake-qt4 or referenced the qmake in /usr/lib/qt4/bin directly.
There was a small hiccup trying to get the sample "application" to compile. I forgot to do a `make install` once QScintilla was compiled.
The other thing was the QScintilla install has a number of steps. I think I saw one website that actually listed all the stuff you had to do together in one place. So now it's here too. If it was in the doco, it was hidden well or too disjointed for me to find quickly.
cd Qt4
qmake-qt4 qscintilla.pro
make
make install
cd ..
cd designer-Qt4
qmake-qt4 designer.pro
cd ..
cd Python
python configure.py
make
make install
pyParallel Module for LPT port IO
- The v0.2 setup didn't work so I just copied the module rather than installing it.
- I had to remove the lp Kernel module to allow low level port access which is indicated by an error like this:
>>> import parallel
>>> p = parallel.Parallel()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "parallel/parallelppdev.py", line 188, in __init__
self.PPCLAIM()
File "parallel/parallelppdev.py", line 215, in PPCLAIM
fcntl.ioctl(self._fd, PPCLAIM) Style
IOError: [Errno 6] No such device or address
I have read some posts and articles that have recommended you blacklist the lp kernel module so you don't have to do it all the time - which is fine if you're not using the port to print!
Some good info here: http://orionrobots.co.uk/tiki-index.php?page=Simple%20Parallel%20Port%20LED%20Board
Some sample code (should turn the first 3 bits on):
import parallel
p = parallel.Parallel()
p.setData(7)
Django on CentOS 5 - Python2.6 etc.
http://chrislea.com/2009/09/09/easy-python-2-6-django-on-centos-5/
Microsoft Dynamics RMS Install Notes
- Used MS SQL Express standalone installation file from http://download.microsoft.com as opposed to having the MS RMS installation wizard do it for me. This way you can reliably install the DB Engine and set the sa password etc.
- Got SQL Server Management Studio Express - VERY handy to have, especially while trying to map fields/inspect the database.
- Creating Field Format and Mapping File for BCP
- Expanded dbo.Item:Description to 40 chars to prevent the BCP import error (ACCPAC field is 32 chars I think, RMS is 30 chars default.)
Error = [Microsoft][SQL Native Client]String data, right truncation
ACCPAC Plus DOS -> Microsoft Dynamics
I'm still learning about MS SQL Server at the moment, so I'm kind of plodding along and learning as I go. Here are some notes for what I'm currently working on.
- Item Data from ACCPAC
- ACCPAC Item Data Fields
- Clean out excess spaces.
- Importing using BCP
SAMBA as a PDC
http://www.opensourcehowto.org/how-to/samba/openldap-lam-samba-as-pdc.html
Random EOTL MUD stuff
A few months ago my character got trashed because of inactivity. I forgot to do my regular login =(
I used to spend hours and hours online on this MUD! Back when I was on dialup...
Just recently I found a folder full of text files - all my EOTL notes! So I've put some down here, not the spoiler ones though, Quest solutions and stuff like that...
Eternal City
A MAP OF ETERNAL CITY
?
|
P-t-t-t-t-e SL PCA
| | | |
t-BS BB-e-s-s-s--s--s---o-?
| | | | |
t GC e AI-l EI--o
| | | |
SN-t AAC e-G l-a-a-a o-?
| | | | | |
?-l-l-l-l-*-l-l-l EB-a o-V
| | | | | | |
TA g L e A-i a C-o
| | | | |
g-e-e-e i-o--o--o---o-?
| | |
g-TE i a
| | |
g i-a--a--a
| |
?-g-d-d-d-d-i-?
| |
O DTR
Roads Points of Interest
===== ==================
a: Dark Alley *: Heart of E.C.
d: Dimension Drive A: Arena
e: Eternal Way AAC: A&A Clothiers
g: Glass Way AI: Anarchy Interdim.
i: Infinity Way BB: Bed & Breakfast
l: Limbo Lane BS: Dr.F's Body Shop
o: Old Road C: The Grind
s: Silver Street DTR: Dave's Throne Room
t: Tanelorn Road EB: Eight Ball
?: city exit EI: Everything Inc.
G: Public Garage
GC: EC Gold Cross
L: E.C. Library
O: Oracle
P: Posh Perko Pit
PCA: Paranoid C&A
SL: Eternal S&L
SN: Snak-O-Rama
TA: Temple of Ages
TE: Temple of Eternity
V: Videopolis
Handy Places
5w 2d 5n pay guard 3n w of heart - spirit
5w 2d 4s 3e s e 4s e s e 3s w 2s 2e - fem ogres
9 e 6s w s s u should find about 9 sailors
Crimson City:
w, s, read book, 5s, 2w
Brin's hotel
2e, 5s, 9e, n, e
Rangers - check for wtfs to get the correct numbers
5w, 2d, 2e, 5s, 3e, climb tree
Ice Castle
E, swim, 5w, 2n, 2w, 3n, w, 3n
Gnomeland Locker
5w, 2d, 6s, 6w, 2s
To The altar:
2e, 2s, 6e, 2u, put hands on altar, say kill
- Mining Town:
s, w, 4n, 3w
nw = Javier
s, u = Sam’s Hotel
w = bank
n = Bob’s Shop
e = into forrest
Thugs:
5w, 2d, 5n, pay guard, 3n, all e, 2s, 2e, 4s, climb wall, hole, d, n
Purple shop:
e, swim, 4w, 4s, 4e, ne, se, 2e, buy purple chalice
Middle Earth:
2e, 5s, 12e, n, open door, d, look into orb, 5d, out
- Forresters Guild from here:
5e, 7s
Snotling village:
2s, e, s
TV Land:
3n, 6e, 3s, e, s
Smurfland: change channel to 1, watch tv, s , 2w
Oak - n, w, w
Startrek Land: change channel to 2, watch tv
Football Quest: change channel to 3, watch tv
Entesia:
e, swim, 2n, w
From here
Orc Village:
n, 14w
Village of the Goblins:
n, 9w, nw, n
Bard Castle
d, 3w, 5s, 4w, 6n
Draconian Homelands:
8n, nw, ne, nw, w, nw, 2s, d, 2w, gate
Goblin Encampment:
8n, u, cave, use orb, 2e, 2s, enter encampment
Franks Bodyshop:
4w, 3n, e, regenerate
Statue:
4w, 2s, raise %1
Easyland:
w, s, read book
]p list - to read posts
The store in solace, which is from heart
e, swim, 2n, w, all north, u, cave, use orb, 2n, 2w, enter solace (your now in solace), all north, west.
There should be a dwarven beer seller there (unless someone killed him) who sells both barrels and boxs(of dwarven ale ie hp healing.)
The way out of acidland
8s,e,s,e,2s,w,s,e,s,enter
Fighters Guild:
2e, 2s, e, n, 2d
Berzerkas Guild:
1w, s, read book, 6s, 2w, 2s, w
Getting the BSB (Black Steel Blade) :)
3w s enter grating, 3e crawl crack, climb wall, kill krvok
Elfland
Ride horse, find door, open door, 2s, 2e, s, grab m, w, window, e, n, climb in vent, pull yellow rope
Getting out of acid land
go 8s,e,s,e,2s,w,s,e,s,enter
VMWare
VMWare Workstation/Player - Speeding it up in Linux
I saw this recently and its an excellent idea.
From http://flipcore.com/2008/07/vmware-player-make-it-faster/
Step 1: Edit VM config file
The file is usually located at /etc/vmware/config
Edit the file and make sure you have this line in it
tmpDirectory = “/dev/shm”
Step 2: Mounting /dev/shm
Edit /etc/fstab and add the following line.
tmpfs /dev/shm tmpfs defaults,size=1G,noatime 0 0
I’m getting really good results by setting the size of the partition as the same size of the ram I have.
Step 3: Mount and Run
Now mount the partition and give it shot.
VMWare Workstation 6.5
Resizign a disk: vmware-vdiskmanager -x 20GB "/path/to/diskfile.vmdk"
- You must also use something like partition magic inside the VM to expand the logical partition inside the virtual disk./code
Memory
Taken from Wikipedia
Chips and modules
Standard name | Memory clock | Cycle time | I/O bus clock | Data transfers per second | Module name | Peak transfer rate |
---|---|---|---|---|---|---|
DDR-200 | 100 MHz | 10 ns | 100 MHz | 200 Million | PC-1600 | 1600 MB/s |
DDR-266 | 133 MHz | 7.5 ns | 133 MHz | 266 Million | PC-2100 | 2100 MB/s |
DDR-333 | 166 MHz | 6 ns | 166 MHz | 333 Million | PC-2700 | 2700 MB/s |
DDR-400 | 200 MHz | 5 ns | 200 MHz | 400 Million | PC-3200 | 3200 MB/s |
DDR2-400 | 100 MHz | 10 ns | 200 MHz | 400 Million | PC2-3200 | 3200 MB/s |
DDR2-533 | 133 MHz | 7.5 ns | 266 MHz | 533 Million | PC2-4200 PC2-4300 | 4266 MB/s |
DDR2-667 | 166 MHz | 6 ns | 333 MHz | 667 Million | PC2-5300 PC2-5400 | 5333 MB/s |
DDR2-800 | 200 MHz | 5 ns | 400 MHz | 800 Million | PC2-6400 | 6400 MB/s |
DDR2-1066 | 266 MHz | 3.75 ns | 533 MHz | 1066 Million | PC2-8500 PC2-8600 | 8533 MB/s |
DDR3-800 | 100 MHz | 10 ns | 400 MHz | 800 MT/s | PC3-6400 | 6400 MB/s |
DDR3-1066 | 133 MHz | 7.5 ns | 533 MHz | 1066 MT/s | PC3-8500 | 8533 MB/s |
DDR3-1333 | 166 MHz | 6 ns | 667 MHz | 1333 MT/s | PC3-10600 | 10667 MB/s |
DDR3-1600 | 200 MHz | 5 ns | 800 MHz | 1600 MT/s | PC3-12800 | 12800 MB/s |
Hardware
- AOC-USAS-L8i
- Areca ARC-1220
Novell 4.11 Notes
I've recently set up a DOS 6.22 virtual machine. I wanted it primarily for use with our archaic accounting package ACCPAC 6.5 for DOS.
- When installing the Novell DOS client I removed all the frame types except 802.2 in the network config.
- I used the default AMD PCI LAN card driver in the client.
- config.sys additions
dos=high, umb
device=c:\dos\himem.sys
files=253
buffers=40
stacks=9,256
- autoexec.bat additions:
SET PLUSPRINT=H:\
SET PLUSSTART=H:\
SET PLUSUSER=H:\
SET PLUSSWAP=C:\ASP\SWAP
- mapped h: with ACCPAC user pref files in it.
- mapped j: to DATA/ACCPAC for ACCPAC software.
- The r makes map use the selected folder as the root of the mapped drive.
map r j:=SERVER/data:accpac
map r h:=SERVER/data/users:user
KDE
Open containing folder
Firefox or other browsers choose to open the folder using Nautilis on kubuntu. This is annoying. Edit /usr/share/applications/defaults.list. Find:
inode/directory=nautilis.desktop
Relace with:
inode/directory=kde4/dolphin.desktop
Other Misc
Hiren's Boot CD
Hiren's Boot Disk on USB Flash 8 port SATA controller
Benchmark Stuff
http://www.iometer.org/
http://www.sysopt.com/tutorials/article.php/12034_3604341_7 h2benchw
http://www.simplisoftware.com/Public/index.php?request=HdTach
Financial Stuff
- http://www.openerp.com
- Australian Chart of Accounts with GST
Mods