SyntaxHighlighter

Monday, 19 March 2012

How To Dial a Phone Number From a Webpage on an iPhone or Android Device

I always find it a ball ache when I am on a mobile device, see a telephone number on a webpage but it's not clickable to automatically dial the number for me. So if you need to do this on your websites, set up the anchor element as such:

<a href="tel:01234 567 8910">01234 567 8910</a>

Jobs dones! Nice and simple :)

Friday, 9 March 2012

How To Call PHP From a Cron in Plesk

Like a lot of people I needed to run a PHP script from a cron (crontab) via the Plesk server admin tool. Simply putting the path to the file (from root) does not run it. The way to do this is by calling the php processor with some parameters. So do the following:

php -q /var/www/vhosts/mywebsite.com/httpdocs/cron/my-file.php

Obviously use the path that relates to your file.

This seems to work for a lot of people, but as my script had includes in it I was getting failure to open stream errors when it was called. So to get round this, I changed the directory prior to the call. So it now looks like this:

cd /var/www/vhosts/ mywebsite.com /httpdocs/cron; php -q  my-file .php

Hey presto, it all works a treat now!



You may need to set permissions on the script to be executed. By default, the task will email the output of the script to you (click the Settings option on the Scheduled Tasks page to change the address - see image below). This can be turned off by adding 2>&1 to the end of the command. making the it look like this:

cd /var/www/vhosts/ mywebsite.com /httpdocs/cron; php -q  my-file .php /dev/null 2>&1

Credit to http://daipratt.co.uk/crontab-plesk-php/ and http://stackoverflow.com/questions/3140675/php-cron-job-including-file-not-working for helping to work this mess out ;)

Friday, 2 March 2012

PHP: Last Modified Date of Folder / Directory

It turns out it's really easy to get the the last modified date of a folder/directory using PHP. You use the filemtime() function. It returns a timestamp for us so we would do something like:

$lastModifed = filemtime($dir);
print "Last modified on ".date("Y-m-d H:i:s", $lastModifed );

Monday, 6 February 2012

Reduce Used Space on Android

I have an android HTC Desire and am constantly running out of space on it - boo! A funky trick I recently came across, via a friend, was to un-install the Google Maps app. Then go back to the market and install it again. It seems that the Maps app keeps a copy of itself on the device each time an update occurs. I can't be sure about this, but I had a whole load of space free up after the re-install.

Obviously in the first instance, make sure your have used the "Clear Data" feature on all appropriate apps. Some apps store loads of data that you may not really want.

Another funky little app I came across was Phone Space Saver. A simple little app that tells you which apps you can move to the SD card - and free :)

Monday, 23 January 2012

How to Play MP4 Files on Your Xbox 360

I recently purchased a GoPro HD2 and what a fine piece of equipment it is too! The GoPro records the video in MP4 format and by default the Xbox 360 won't play this format (even though it claims it does).

Anyway...
After numerous fails to convert the files to AVI (a format that is supported), it turns out all you need to do is change the file extension from MP4 to AVI. Hey presto, it shows up on the Xbox now!

File Transfers with Android - FTPDroid

After coming back from a great snowboarding holiday in Les Deux Alpes, I had loads of photos and videos that I needed to move from my Android tablet to my home PC.

I present to you FTPDroid.


It's a cracking little app that turns your android device into an FTP server. You connect your FTP client to it and off you go. It works a treat when you have large numbers of files to transfer and you don't have time to sit there while they move across your network.

Wednesday, 14 December 2011

PHP header 200 Status Not Being Sent

I'm having a real mare with this PHP site I am working at the moment. Having constant configuration problems - grrr!

I am using a .htaccess file to handle the a 404 (ErrorDocument 404 /404.php). It's used to handle friendly URLs mainly. One of the other things I use it for is allowing JavaScript files to be PHP processed before they are served to the browser. This is dead useful as I can modify and customise the scripts where required.

Anyway...
In the code I use header("HTTP/1.1 200 OK") and in nearly all instances that works fine. Except for when it is processing the the JavaScript files. After massive annoyance and trying loads of different things, it turns out there is a bug in PHP 5. As they suggest at the bottom, the workaround is:

header("Status: 200 OK");

Fixed!

Tuesday, 8 November 2011

Add a Border to a Panel Using .NET Compact Framework

After spending quite some time working out how to add a border round a panel control in the .NET compact framework, I finally got it working. It's pretty easy to be honest.

VB.NET
Using g As Graphics = e.Graphics
    Using p As New Pen(Color.Black, 1)
        g.DrawRectangle(p, 0, 0, MyPanel.Width - 1, MyPanel.Height)
    End Using
End Using

C#
Using (Graphics g = e.Graphics) {
    Using (Pen p = New Pen(Color.Black, 1)) {
        g.DrawRectangle(p, 0, 0, MyPanel.Width - 1, MyPanel.Height);
    }
}

You need to make sure that this code is put in the Paint event of your panel.

Monday, 31 October 2011

HSBC API: PayerTxnId is not in a valid base64 encoding

That pesky HSBC API caused me a lot of grief when I first had to set it up on a client site. For various reasons I ended up using the XML method of performing the transaction.

Anyway...
Having recently implemented the 3D secure (Payer Authentication Specification (PAS)) I was getting a PayerTxnId 'LOADS_OF CHARS' is not in a valid  base64 encoding. The PayerTxnId is pulled from the posted data from HSBC. It comes from the XID field.

It took me a while to spot it and, to be honest, I thought I would have to contact HSBC technical support yet again (who , by the by, are very good). But I did spot it! There was a space in the string. I swapped that out for a + and hey presto, the HSBC API processed it just fine.

Wednesday, 19 October 2011

Block IP Addresses on Windows Server 2003

A big thank you goes out to CodeHill today for allowing me to find out how to easily block IP addresses with built-in Windows server functionality.

The idea is that you create an IP Security Policy on the server and add each IP, range or subnet to it. Perfect :)


Tuesday, 18 October 2011

Unicode Characters in an Email Subject using PHP and PEAR

I've been working on a PHP site recently where I have had to cater for all languages and more importantly Unicode languages.

So after quite a lot of messing about and hunting around I found that I needed to do the following with the subject:

if (function_exists("mb_internal_encoding"))
 mb_internal_encoding("UTF-8");
if (function_exists("mb_encode_mimeheader"))
 $subject = mb_encode_mimeheader($subject, "UTF-8", "B", "\n");

Obviously if you know if the mb_* functions are available, then you can do away with the if statements.

This works using the PEAR Mail_Mime library. I haven't tested it with the built-in PHP mail function. I would assume it does not work.

Tuesday, 4 October 2011

How To Reset an Identity Column in MSSQL / SQL Server

Something I often find myself needing to do is reset the identity column on auto incrementing field in MS SQL / SQL Server.

There are a couple of ways of doing it:
  1. If you are emptying the table, instead of using a DELETE, use a TRUNCATE. That will automatically reset the identity.
  2. The ID can be set to a specific number by using DBCC CHECKIDENT([TABLE_NAME], RESEED, n). Where n is the number that is to be set.
If you already have data in the table and you want to make sure that the sequence is followed, then use this:
DBCC CHECKIDENT([TABLE_NAME], RESEED, 0)
DBCC CHECKIDENT([TABLE_NAME], RESEED)

Monday, 19 September 2011

Android: Starts in Car Mode

When I turn on my HTC Desire android phone, the device is automatically in car mode. I get a notification item allowing me turn it off, so that does the job. But I couldn't find any way of stopping it starting automatically.

Now if like me, you couldn't find the "dock" app (that seems to be mentioned all over the Internet) anywhere you need to do following:

  1. From the home screen: Menu > Settings > Search > Searchable Items
  2. Make sure the Settings options is checked
  3. Press the physical search key (usually a magnifying glass)
  4. Click the Google logo and choose Settings
  5. Type car
  6. Choose Dock
  7. Make sure the Auto-launch option is un-checked
Hey presto!
Android version: 2.2

Thursday, 1 September 2011

Compressing JPG/JPEG Images

If you need to compress and reduce the disk footprint and reduce bandwidth use, then check out JPEGmini. They are managing a 5 times reduction in the size of images!

Monday, 22 August 2011

Asus EEE Pad Transformer Quick Review 2

Following on from my original Asus EEE Pad Transformer quick review, I thought I would write another quick one. I hadn't long had the tablet when I did the first one and I have now had it for a sensible amount of time and have used it for what I had planned.

I had planned to use it not only as a browser for home use (for which it is superb), but also as a tool for when I need to work remotely.

My biggest gripe when I first got it was the lag when typing with the keyboard docked and using the browser. Typing with the keyboard in all other applications is fine. It's fine with Polaris Office and it has an excellent response time. I installed Dolphin Browser which is far superior and the gesture action is pretty useful too. The lag wasn't anywhere near as bad and the general usability of the browser (when using the blogger blogging interface for example) was much better. There is still lag, but I put that down to the speed at which the device/browser can process JavaScript. As typing into in non-JS based box is fine and there is no lag.

I also installed a different movie player. The pre-installed one will only play certain types of files - which for the most part is nether use nor ornament! I am currently using MoboPlayer.

The battery lasts really well. With it's current use it lasts around a week. It is left on stand-by all the time. It gets used one day a week for a working day - not constantly, but a reasonable amount and is used adhoc in the evenings for email checking, twitter, etc.

The reality is, that I still really can't pick fault with it. I will be away on Holiday for two weeks soon, so that will be a real good test of it's usability and battery life. Especially as we are likely to get through a 13 episode season of something or other...

Monday, 15 August 2011

How to Export Scheduled Tasks on Windows Server 2003

If you need to export your scheduled tasks from Windows, like I have just needed to, use this from the command prompt:

schtasks /query /FO CSV /V >sched_tasks.csv

This will output to a comma-delimited file with all the tasks in it to the current folder called sched_tasks.csv.

The "SendUsing" Configuration Value is Invalid

I recently moved a VBScript script from one server to another. The new server did not have an SMTP server on it. When I ran the script (which emailed) I got a The "SendUsing" Configuration Value is Invalid error. Having already spent sometime recently using VBScript to email via Gmail, it was an easy fix for me. I specified the server and port and off it went!

Dim objMessage

Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "MY_SUBJECT"
objMessage.From = "FROM_ADDRESS_SAME_AS_USER_NAME"
objMessage.To = "TO_ADDRESS"
objMessage.TextBody = "MY_MESSAGE"

objMessage.Configuration.Fields.Item( _
"http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item( _
"http://schemas.microsoft.com/cdo/configuration/smtpserver") = "IP_OR_NAME_OF_SERVER"
objMessage.Configuration.Fields.Item( _
"http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update

out = objMessage.Send
Set objMessage = Nothing

Thursday, 11 August 2011

CSS Colour Chart


Not being a designer type chappy I often find it hard to work out what colours to use and then what their colour code is. While I was on my Internet travels the other day I found this little gem with a whole load of colour codes on it: http://www.somacon.com/p142.php


While you're at it ColorPic is another sweet little tool, to grab colour that yuu can see on screen.


Tuesday, 9 August 2011

woff 404 Font Not Found

I noticed recently that a site I work on that uses a woff font was getting a 404 not found error in Chrome. It was also giving a Resource interpreted as Font but transferred with MIME type application/octet-stream. I spent ages hunting around the forums and found no solution to it.


The fact that I was getting a 404 was the oddest thing and made me think that IIS wasn't serving the font correctly (it was being used by the browser none the less). So I went about checking to see what .woff MIME type was set in IIS. The local computer had no MIME Type handling for .woff so I added it (Right-click > Properties > MIME Types... Extension: .woff and Type: application/x-font-woff). That didn't fix it :(

I right-clicked the Default Web Site > Properties > HTTP Headers > MIME Types... and added the new extension there also (Extension: .woff and Type: application/x-font-woff). Reloaded the page and the warning and error had gone - happy days!

Update...
Thanks to the comment below added by RyanonRails, here is an example web.config (http://pastie.org/4081017):
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <staticContent>
      <mimeMap fileExtension=".coffee" mimeType="coffeescript" />
      <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
    </staticContent>
  </system.webServer>
</configuration>

Monday, 1 August 2011

How to Share Files on Blogspot / Blogger

I keep needing to find a way of sharing files through Blogspot / Blogger that isn't costly and is dead easy - well I think I've found it - boxify.me. This is a great service, that requires no registration, is free and there is no quota - superb!

All you literally need to do is is click the "Start sharing for free" button and hey presto you're off! By default you get given a crazy link to use, but you can click the "rename" link at the top and choose something more suitable (http://boxify.me/box/techygypo).

So here's a link to my first file: http://uploads.boxify.me/7831/techygypo.png

And here's the file in question


Thank you boxify.me - stunning work!

Labels

.net (7) ajax (1) android (7) apache (1) asp.net (3) asus (2) blogger (2) blogspot (3) c# (16) compact framework (2) cron (1) css (1) data (1) data recovery (2) dns (1) eclipse (1) encryption (1) excel (1) font (1) ftp (1) gmail (5) google (4) gopro (1) html (1) iis (3) internet explorer IE (1) iphone (1) javascript (3) kinect (1) linux (1) macro (1) mail (9) mercurial (1) microsoft (3) microsoft office (3) monitoring (1) mootools (1) ms access (1) mssql (13) mysql (2) open source (1) openvpn (1) pear (2) permissions (1) php (12) plesk (4) proxy (1) qr codes (1) rant (4) reflection (3) regex (1) replication (1) reporting services (5) security (2) signalr (1) sql (11) sqlce (1) sqlexpress (1) ssis (1) ssl (1) stuff (1) svn (2) syntax (1) tablet (2) telnet (3) tools (1) twitter (1) unix (3) vb script (3) vb.net (9) vba (1) visual studio (2) vpc (2) vpn (1) windows (4) woff (1) xbox 360 (1)