Archive for February, 2009
HOWTO: Self-Signed SSL on IIS in Vista
Author: gaweee | Filed under: development, howtoYes it can be done, no its not hard at all, no you dont have to download any weird sharewares and no it doesnt cost a cent. Lets go!
- Download the SelfSSL from microsoft downloads
- Install it, duh.
- Assuming you installed it where its supposed to be, go to C:\Program Files\IIS Resources\SelfSSL and run selfssl.exe
- Agree to it installing the certificate for you and press Y
- Open your IIS Manager > Sites
- Right click on the Default Web Site and choose Edit Bindings
- Add
- Select type as https and select the certificate you just installed.
- Done
Viola!
This adds the certificate for only a puny 7 days. If you’re like us, you’ll probably need a cert for a much longer period than that. No problem!
Fire up your command prompt and cd to C:\Program Files\IIS Resources\SelfSS\
type the following:
selfssl.exe /V:3650 /t
That’ll give you a nice cert for 10 years.
But wait, you’re original cert is still there! Wel’ll have to remove it.
- Start->Run->mmc.exe
- File -> Add/Remove Snap-in
- Certificates (on the left column)
- OK
- Navigate the tree to: Certificates -> Personal -> Certificates
- Delete the original SSL cert you created (see the expiration date differences)
- Follow the above instructions in customizing your IIS to the new cert now. =D
Note: This is used for development purposes and the certificates will be recognized as invalid for that domain. Go ahead and add the security exception in Firefox, IE, Chrome or whatever other browsers you’re using.
Thanks for all the comments and feedback! By popular request i’ve added the multi-colored progress bar and fixed some bugs. The new multi-colored bar changes from red to orange and then to green at configurable intervals. Check out the demo!
Since the last update this endeavour has seen comments claiming that it works and sometimes that it doesnt. I’ve tested the demo across Safari, Opera, IE6/7, Firefox and Chrome. Havent found any problem. For those of you who have problems, please do email me the problem.
Download the new jQuery progressbar here: jQuery progressbar
or view the demo here
HOWTO: Readymade Form CSS and Highlighting
Author: gaweee | Filed under: development, howtoWe’ve been working on web development for awhile now, i’ve really only seen a handful of pretty forms. The interfaces seen at Uni-Form, mooflex and even to a certain extent linuxjournal are all intuitive and well thought out.
So in the good ol WITS culture, we’ve tried our hand at building our own version of a universal form interface. Alot of features were borrowed off work already done at Uni-Form. We just made it jQueried, lighter and more readable. Like all other jQuery plugins, insert jquery.js, insert the jquery.witsform.js script, insert the css, use the right html code, and you’re done! I’m pretty sure as time goes by i’ll keep improving it. So here’s version 1.0 meanwhile. We bothered so that you shouldnt have to.
download the jQuery WITSForm here: jQuery WITSForm
or view the demo here
HOWTO: IE6 testing environment on Vista
Author: gaweee | Filed under: development, howtoLets cut through the chase, theres no way to install IE6 on vista but you can boot it off an image (which seems to be the most popular choice anyway), even if other sites teaches you registry hacks and etc, there are still differences between the real IE6 rendering versus the emulated/hacked version. But, what you can do is to install the Virtual PC with IE6 + XP SP3 Virtual Hard Disk.
Once you’ve downloaded both and installed the Virtual PC, run it. Then:
File > New Virtual Machine Wizard
- Create a virtual machine
- Choose some location of your preference
- Choose Windows XP for your operating system
- Use the recommended RAM (of if you can spare it, adjust it more or less to your preference)
- Use an existing Virtual Hard Disk
- Choose the downloaded IE6 + XPSP3 .vhd image
- Finish
When ready, click Start on the virtual image and viola!
Note:
- The .vhd image always expires 3 months as of download, this is to prevent ppl from just living off an image (since i gather the image can be run off other operating systems too)
- Go to Settings > Networking and choose the active network controller to give the IE6 image networking capabilities
- If you’ve been developing your website on localhost, then you cannot access http://localhost/project on your IE6 anymore as thats is resolved internally. Instead use your main computer’s IP. In my case, http://192.168.1.1/project
HOWTO: PHP image resize, centered and cropped
Author: gaweee | Filed under: development, howtoSorry for not posting in such a long time folks, i just came back from the Pegasus galaxy. While working on a Joomla! 1.5 project, we had to develop a function to crop and resize images for obvious content management and aesthetic reasons. So i gathered around some good sources on PHP.net and wrote the following class:
class ImageHelper { static function treatFilename($filename) { $newfilename = strtolower($filename); $newfilename = str_replace(" ","_",$newfilename); return $newfilename; } static function isPotrait($srcimage) { if (!file_exists(realpath($srcimage))) return; return !ImageHelper::isLandscape($srcimage); } static function isLandscape($srcimage) { if (!file_exists(realpath($srcimage))) return; $size = getimagesize( $srcimage ); return ($size[0] > $size[1]); } static function resizeImage($srcimage, $destimage, $width, $height) { if (!file_exists(realpath($srcimage))) return; $srcpathinfo = pathinfo($srcimage); $srcext = strtolower($srcpathinfo['extension']); $destpathinfo = pathinfo($destimage); $destext = strtolower($destpathinfo['extension']); $size = getimagesize( $srcimage ); // Get the size of the original image into an array [0]=> width, [1]=> height $image = null; $canvas = imagecreatetruecolor( $width, $height ); // Prepare canvas // Create a new image in the memory from the file switch ($srcext) { case 'wbmp': case 'bmp': $image = imagecreatefromwbmp($srcimage); break; case 'jpg': case 'jpeg': $image = imagecreatefromjpeg($srcimage); break; case 'png': $image = imagecreatefrompng($srcimage); break; case 'gif': $image = imagecreatefromgif($srcimage); break; case 'xpm': $image = imagecreatefromxpm($srcimage); break; default: return; } // Calculate dimensions $widthratio = $size[0]/$width; $heightratio = $size[1]/$height; $dimensions = array( 'ratio' => $widthratio, 'source_cropwidth' => 0, 'source_cropheight' => 0, 'source_offsetx' => 0, 'source_offsety' => 0 ); if ($heightratio < $widthratio) $dimensions['ratio'] = $heightratio; // let say image is 1200*800, then: // widthratio = 1200/400 = 3 // heightratio = 800/300 = 2.66 // since there is less height than width, the max scale we can do is 2.66, then // the targetwidth to crop = 400 * 2.66 // the targetheight to crop = 300 * 2.66 // the offset width = (1200 - (2.66 * 400))/2 = 68 // the offset height = (800 - (2.66 * 300))/2 = 1 $dimensions['source_width'] = $size[0]; $dimensions['source_height'] = $size[1]; $dimensions['source_cropwidth'] = $width * $dimensions['ratio']; $dimensions['source_cropheight'] = $height * $dimensions['ratio']; $dimensions['source_offsetx'] = ($size[0] - $dimensions['source_cropwidth']) / 2; $dimensions['source_offsety'] = ($size[1] - $dimensions['source_cropheight']) / 2; imagecopyresampled($canvas, $image, 0, 0, $dimensions['source_offsetx'], $dimensions['source_offsety'], $width, $height, $dimensions['source_cropwidth'], $dimensions['source_cropheight']); switch ($destext) { case 'jpg': case 'jpeg': imagejpeg( $canvas, $destimage ); break; case 'png': imagepng( $canvas, $destimage ); break; case 'gif': imagegif( $canvas, $destimage ); break; case 'wbmp': case 'bmp': imagewbmp( $canvas, $destimage ); break; } imagedestroy( $canvas ); imagedestroy( $image ); return true; } }
$width = 150; $height = 150; if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])){ $targetfilename = ImageHelper::treatFilename(uniqid() . "_" . $_FILES['ulimage']['name']); move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']); ImageHelper::resizeImage(dirname(__FILE__) . "/tmp/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/" . $targetfilename, $width, $height); }
The reason you need to save the file first is for the imageResize function to infer the image type off its extension. I hadnt bothered to create an image type override.
Most Popular
- HOWTO: PHP and jQuery upload progress bar (56)
- JQuery Progress Bar 1.1 (53)
- Howto: Repackageable custom extension development in Magento - Part 2 - Admin Controller (25)
- JQuery Progress Bar 2.0 (21)
- Howto: Repackageable custom extension development in Magento - Part 8 - CRUD - Update (18)
- HOWTO: struts 2 i18n (16)
- Howto: Repackageable custom extension development in Magento (12)
- JQuery Progress Bar 1.2 (11)
- Howto: Repackageable custom extension development in Magento - Part 9 - Frontend - List (10)
- Howto: Repackageable custom extension development in Magento - Part 3 - Database (9)
Recent Comments
- Karen: Great work around-thank you!!
- Sheldon: awesome possum!
- cmstop里所使用的有用的jquery插件 » Terry's Blog: [...] http://t.wits.sg/jquery-progress-bar/ 这篇日志的 t.cn [...]
- Lakshyami: Hi, Thank you very much for
- New site feature: User Poll « TechnoStripe: [...] progress bar used to
- seo agentur: @Krish Why do you need to
- 2kai: Hi Aromal, you need to flush
- Rob Rasner Magic Castle: I love what you guys
- รับทำเว็บไซต์: Thx for this. Nice and
- Lexus: ESxtYC I'm not easily impressed.
Latest Entries
- SD in the Community: Product Management Panel Recap
- Mac OS X and Ricoh Aficio C2051 - Making Printing "Just Work"
- How to impress your recruiter
- Thoughts on Attracting the attention of the Best Hires
- The Greg Syndrome
- The Parental Manager
- Attack of the Facebook Harvesters
- jQuery Progress Bar Configuration
- Extracting email addresses from inbox
- 10 Good (Free and Legal) Source for Photos and Images



