11 Oct 2008

TRUE and FALSE, YES and NO


I have always had trouble remembering which way the boolean values map in C (1 = TRUE, 0 = FALSE )
Although TRUE and FALSE are not actually defined unless you do a type_def

Of course it is worth remembering that C treat evaluation of any non-zero result as true.

So if ( 100 ) do something; // will mean always do it. and...

if (! 100) do something; // will mean never do it.

So ok fair enough, but then in objective C we do have a BOOL type with YES and NO as values
but how exactly do the two interrelate and can you assume YES is the same as TRUE?


Another few hours struggling to find an issue with displaying CSS on Apache2

The blog pages currently use two cascading style sheets - and some of the styles were rendering
properly and others not. PearsonMain.css was not rendering but OMWB.css was rendering. After hours of
trying to find in something that was wrong with the PearsonMain.css file I had a look int he Apache2 log file

In Mac OS 10.5 (at least for me) this meant going into terminal using the cd command to get to var/log/apache2
and then using the tail command - tail access_log to see the apache access log.

I got the following.....


192.168.1.69 - - [11/Oct/2008:18:22:48 +0100] "GET /~tim/Car/Car-OMWB.shtml HTTP/1.1" 200 1191
192.168.1.69 - - [11/Oct/2008:18:22:48 +0100] "GET /~tim/images/achnag_from_the_air.jpg HTTP/1.1" 200 6527
192.168.1.69 - - [11/Oct/2008:18:22:48 +0100] "GET /~tim/OMWB.css HTTP/1.1" 200 398
192.168.1.69 - - [11/Oct/2008:18:22:48 +0100] "GET /~tim/PearsonMain.css HTTP/1.1" 403 222
192.168.1.69 - - [11/Oct/2008:18:22:48 +0100] "GET /favicon.ico HTTP/1.1" 404 209


which meant that the server wasn't even reading the missing css file?

Then I remembered something about access permissions and so I went to the directory and used the chmod command
to set ALL access permissions to the non-rendering css file - as shown below -

Tims-iMac:Sites tim$ chmod a+rwx PearsonMain.css
Tims-iMac:Sites tim$ ls -l
total 136
drwxr-xr-x 11 tim staff 374 11 Oct 18:15 Car
drwxr-xr-x 8 tim staff 272 11 Oct 10:48 Computing
-rw-r--r--@ 1 tim staff 398 11 Oct 18:08 OMWB.css
-rwxr-----@ 1 tim staff 1837 11 Oct 13:11 PearsonMain copy.css
-rwxrwxrwx@ 1 tim staff 1440 11 Oct 18:05 PearsonMain.css
-rw-r--r--@ 1 tim staff 1440 11 Oct 18:09 PearsonMain2.css
-rwxrwxrwx@ 1 tim staff 1466 5 Sep 18:59 family.css
-rwxrwxrwx 1 tim staff 1118 27 Apr 12:46 family_handheld.css
drwxrwxrwx 20 tim staff 680 8 Oct 10:08 images
-rwxrwxrwx@ 1 tim staff 2104 10 Oct 19:35 index.shtml
Tims-iMac:Sites tim$ <br />


And sure enough this solved the problem, and now the access_log file could be seen not nly getting the
css file but also the other files it references

Tims-iMac:apache2 tim$ tail access_log
192.168.1.69 - - [11/Oct/2008:18:52:54 +0100] "GET /~tim/Car/Car-OMWB.shtml HTTP/1.1" 200 1191
192.168.1.69 - - [11/Oct/2008:18:52:54 +0100] "GET /~tim/OMWB.css HTTP/1.1" 200 398
192.168.1.69 - - [11/Oct/2008:18:52:54 +0100] "GET /~tim/images/achnag_from_the_air.jpg HTTP/1.1" 200 6527
192.168.1.69 - - [11/Oct/2008:18:52:54 +0100] "GET /~tim/PearsonMain.css HTTP/1.1" 200 1440
192.168.1.69 - - [11/Oct/2008:18:52:54 +0100] "GET /favicon.ico HTTP/1.1" 404 209
192.168.1.69 - - [11/Oct/2008:18:52:54 +0100] "GET /~tim/images/header_fill_pic.jpg HTTP/1.1" 200 990
192.168.1.69 - - [11/Oct/2008:18:52:54 +0100] "GET /~tim/images/PFW_Title_Bar.jpg HTTP/1.1" 200 9843
Tims-iMac:apache2 tim$ <br />


IN fact I only needed to turn on the read permission for 'other permissions' so the following would have
done ....

Tims-iMac:Sites tim$ chmod o+r PearsonMain.css



Key learning point - if you are using Apache2 to serve your files then make sure it has the relevant file
permissions......It seems a strange Apple quirk that you have to swap from friendly GUI apps right down to
Unix commands to achieve this....surely there must be a better way (don't call me shirley).



click here to return to the blog