Apache2 unseting AddDefaultCharset (via .htaccess)

July 27th, 2010

Setting a default charset using .htaccess is a simple thing to do

However sometimes there is a need to unset default charset as well (for instance if the AddDefaultCharset is set in the apache config and this is causing problems).

This is very easy to do just edit the .htaccess file and add a line that says

AddDefaultCharset OFF

Linux: Finding the serial number of a hard drive

July 23rd, 2010

Finding the serial number of a hard drive on a Linux console (as root) is simple with the right tool.
The right tool in this case is hdparm (using the -i option).
-i will query the device directly for the details.

Example:

themachine:/proc# hdparm -i /dev/sda
 
/dev/sda:
 
 Model=ST31500341AS                            , FwRev=CC1H    , SerialNo=            9VS21ZXM
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=?16?
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=18446744072344861488
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-4,5,6,7
 
 * signifies the current active mode

Using the option -I instead gives even more information:

themachine:/proc# hdparm -I /dev/sda
 
/dev/sda:
 
ATA device, with non-removable media
        Model Number:       ST31500341AS                            
        Serial Number:      9VS21ZXM
        Firmware Revision:  CC1H    
        Transport:          Serial
Standards:
        Used: unknown (minor revision code 0x0029) 
        Supported: 8 7 6 5 
        Likely used: 8
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:   16514064
        LBA    user addressable sectors:  268435455
        LBA48  user addressable sectors: 2930277168
        device size with M = 1024*1024:     1430799 MBytes
        device size with M = 1000*1000:     1500301 MBytes (1500 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Standard, no device specific minimum
        R/W multiple sector transfer: Max = 16  Current = ?
        Recommended acoustic management value: 254, current value: 0
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4 
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    DOWNLOAD_MICROCODE
                SET_MAX security extension
           *    Automatic Acoustic Management feature set
           *    48-bit Address feature set
           *    Device Configuration Overlay feature set
           *    Mandatory FLUSH_CACHE
           *    FLUSH_CACHE_EXT
           *    SMART error logging
           *    SMART self-test
           *    General Purpose Logging feature set
           *    WRITE_{DMA|MULTIPLE}_FUA_EXT
           *    64-bit World wide name
                Write-Read-Verify feature set
           *    WRITE_UNCORRECTABLE_EXT command
           *    {READ,WRITE}_DMA_EXT_GPL commands
           *    Segmented DOWNLOAD_MICROCODE
           *    SATA-I signaling speed (1.5Gb/s)
           *    SATA-II signaling speed (3.0Gb/s)
           *    Native Command Queueing (NCQ)
           *    Phy event counters
                Device-initiated interface power management
           *    Software settings preservation
           *    SMART Command Transport (SCT) feature set
           *    SCT Long Sector Access (AC1)
           *    SCT LBA Segment Access (AC2)
           *    SCT Error Recovery Control (AC3)
           *    SCT Features Control (AC4)
           *    SCT Data Tables (AC5)
                unknown 206[12] (vendor specific)
Security: 
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase
        240min for SECURITY ERASE UNIT. 240min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000c50014ec1f60
        NAA             : 5
        IEEE OUI        : c50
        Unique ID       : 014ec1f60
Checksum: correct

HTML: UTF-8 encoding

July 14th, 2010

To get a html page to display UTF-8 encoded text correctly (without setting a default charset) simply add the following to the head of the html page.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

MYSQL Creating several UUIDs at one single time

July 14th, 2010

I recently ran into the problem that I had too add two rows to a database that uses a UUID (in this case converted to a binary) as a key.
The problem I had was that running two insert statements after each other (just separated by “;”) then the same id was generated.
A workaround I have found is to sleep for a second between the two statements.

Examples (using SELECT instead of INSERT):
Getting the same id twice

SELECT UNHEX(REPLACE(UUID(),'-','')) AS uuid1,  UNHEX(REPLACE(UUID(),'-','')) AS uuid2;
-- Shows: "849392548f1311df91b70019dbd264f1"	"849392908f1311df91b70019dbd264f1"

Adding a sleep to get different ids

SELECT UNHEX(REPLACE(UUID(),'-','')) AS uuid1, SLEEP(1), UNHEX(REPLACE(UUID(),'-','')) AS uuid2
-- Shows: "3901c1928f1511df91b70019dbd264f1"	"0"	"399a5b148f1511df91b70019dbd264f1"

And another one using INSERTS

INSERT INTO testTable (id) VALUES (UNHEX(REPLACE(UUID(),'-','')));
SLEEP(1);
INSERT INTO testTable (id) VALUES (UNHEX(REPLACE(UUID(),'-','')));

PHP: Converting a bool value to a string value

July 12th, 2010

The first idea that comes into mind for doing this is to simply make a typecast of the boolean variable to a string and use that (which works)

$testVar = false;
echo (string)$testVar; //will output a empty string (as that evaluates to false)
$testVar = true;
echo (string)$testVar; //will output 1 (as that evaluates to true)

but what if the requirement is that the string should say true or false

$testVar = false;
echo $testVar ? 'true' : 'false'; //will output false
$testVar = true;
echo $testVar ? 'true' : 'false'; //will output true

(While the above example might seam useless I recently had to do this for a db insert)

LDraw MLCad “Invalid Path (no Parts and/or Pdir Found)” (after installation)

July 11th, 2010

After installing MLCad the first time the error “Invalid Path (no Parts and/or Pdir Found)” is shown and a directory selector is shown.

The directory that should be selected is the main LDraw directory.

Disable (or change) the Click sound in Internet Explorer or Windows Explorer

July 10th, 2010

When you open a folder in Windows Explorer a click sound is played. To disable this there are two ways to do it:

  • Turn it off using the control panel:
    1. Open “Start”->”Settings”->”Control Panel”
    2. Open up “Sounds and Audio Devices”
    3. Open the tab that says “Sounds”
    4. Scroll down until you find “Windows Explorer”->”Start Navigation”
    5. When you mark this line at the bottom there is a drop down that is labeled “Sounds:” Here you should be able to change to anther sound or “none” if you do not wish a click.
  • The second option is a bit more direct and rude – but if the above does not work for you (for me something kept resetting the old sound); just remove the file that contains the click sound.
    1. Open up a Windows Explorer and go to “%windir%\Media” and find the file that is named “Windows XP Start.wav”
    2. Either remove it (permanently) or rename it to something that windows won’t recognize (but you can – so you later can reverse this if you would like to)

Different line-endings on diffrent OS

July 7th, 2010

Windows, Linux/Unix and Mac have different line-endings on text files.

A quick overview on the endings are:

  • Windows-style line endings are CRLF ( \r\n or hex 0D0A )
  • Mac-style line endings are CR ( \r or hex 0D )
  • Unix-style line endings are LF ( \n or hex 0A )

A HEX editor can be used to double check that the correct endings are written.

Pine: Flags

June 23rd, 2010

To mark a message as unread in pine this can be done using flags.
First flags have to be turned on in setup
[M]ain [S]etup [C]onfig
Then find “enable-flag-cmd” and turn it on.
After this marking a message as unread is done by “* N” in the list view or when looking at the message.

All the flags are:

  • [N]New
  • [D]Deleted
  • [*] Important
  • [A] Answered

[^T] Can be used to see all the flags and set/unset them one by one (or all).

PHP: Static functions in a Class

June 18th, 2010

Static functions can be used without instantiating the object.

A quick example of a static function is shown below as well as a comparison with a non static function.

A quick example of this (in PHP5):

class TestClass{
	static function staticFunction(){
		echo "static function called";
	}
 
	function nonStaticFunction(){
		echo "nonstatic function was called";
	}
}
 
TestClass::staticFunction(); //will echo static function called
 
$testClass = new TestClass();
$testClass.nonStaticFunction(); //will echo nonstatic function was called
unset($testClass);