MKYRDLHUZS ?
subscribe to php RSS feed

Home :.: About :.: Contact :.: Archives :.: Bookmarks :.: WishList
Pages: 1 2 next

I wrote a new php class that exports my firefox sqlite favorites database to a set of url files.

Which works great. The handy thing is that I now can version this set of url files (using subversion, git and / or clearcase) and also export out of chrome (using sync.sqlite3) and internet explorer to the same directory. I can also manually drag and drop stuff and, if the version system does its work they all should in sync (e.g. clearcase keeps track of moved files AND directories since each element gets a unique id just as in git where a file gets a unique hash).

So you see the list of folders:

image

and inside each folder the list of bookmark URL files:

image

and inside each of the URL files:

image

 

 

 

For the favicons I decided to not put them in the main structure but in a favicon folder (yeah I really like pharaos)

image

I can now just doubleclick such an icon and it opens in my browser, so it works pretty much as if I would open my bookmark folder with the difference that I can use total commander to manage them and that my browser does not carry around  tens of megabytes of urls in its database :) I can now manage my urls offline and independent of browser and well… carry them around.

I think i will make one main dir "home" and one main dir "work" for starters a directory per contact is the next step.

I have some TODO points on my list though which I should add:

a. The dividers could be easily also created (using — , —-, —–, —— ) but the problem is what happens when I re-run the export. In this case I should check if it exists and if it exists it will do nothing. not nice. I could also check for the firefox database id but that would make it rely too much on Firefox. I have to think about this I think I will delete all dividers IF the directory is encountered and then recreate them with the logic that if a source has the same directory name it probably knows about those dividers too. (to bad there is no divider support in native Windows Explorer).

b. I need to add export functionality as well to a variety of export sources e.g. a firefox html page that I can export in a clean firefox

c. the physical storage has some dependencies e.g. when i delete a bookmark also its favicon should be cleared

d. i would like more representations of the data on there just physical on the disk e.g. com.google. so in the directory com i want all com domains i bookmarked

e. i also want a representation per tag so i can compare if the way i stored them is in line with the way everyone stores them this probably means i will have to query e.g. delicious, stumbleupon, alexa, dmoz and zillions of other tag bookmark systems for the most used tags (AND related tags) and check if they way "they" propose it is in line with how i would want it.
That point brings up a million thoughts: why not just download all urls out there already nicely stored… and as soon as I tag it, it will just become highlighted in the millions of urls…. a gazillion things i could do here. but i don’t have the time :)
I was also thinking: why not only tags but check out other taxonomies as well… something todo in the future.

f. i also want to add some additional tooling like ‘check for duplicates’ and/or ‘top tags’ (to see what i find interesting)

g. i also need to add more import sources also e.g. a sql dump from my weblog and auto-get all urls that i ever put in there.

h. when all of that is finished i want to wrap it in a nicer webshell with multiple representations and tools.

i. there is a workflow to follow ofcourse, after exporting preferably all urls are cleared from the bookmarks and in the next run only the "\todo" folder in the bookmarks should be exported or something like that.

j. what i would really like is a sidebar in firefox that is actually a view on my directory of URL files… but what i can do anyway is drag the folders containing the url files in the firefox bookmark bar so that i can still easily "click"

h. directories also contain descriptions. I will probably add an descript.ion file in the folder itself.

p.s. no i dont follow the complete offical URL file standard


 bookmarks

 coding

 firefox

 php

 project-bookmarks

 sqlite

Monday, May 31st, 2010

 Add a Comment

Link


Facebook | XHP: A New Way to Write PHP 1/144
nice idea


 coding,

 php

Sunday, April 11th, 2010

 Add a Comment

Link


Well-Intentioned Destruction – The Daily WTF 0/1
always DIE when redirect


 php

Monday, April 20th, 2009

 Add a Comment

Link


Use PHP to convert Twitter to RSS Submit


 coding

 php

 twiter

Saturday, April 11th, 2009

 Add a Comment


image

A dynamic youtube/google video movie page with source code and download zip: so you use it, change it and improve it! (demo here 1/38)

It shows Pages of videos according to strings you defined, so you can use it for any type of video page.

Two saturdays in the month I have "daddy day" and my 3 year old son Maarten and me have fun outdoors or indoors.

This saturday "we" decided to stay indoors (bad weather outside) and instead of watching tv or playing puzzles we took the laptop and watched YouTube movies. He really likes YouTube :)

YouTube can be very educational since you can visualize most every word. You can jump from "trains" to specific trains and verbs related to trains or just click from concept to concept. Maarten can constantly pinpoint other movies he finds interesting. Probably doing something smart in his head. (Ofcourse I am here to prevent him seeing "weird" movies that show up in the results and guide him in the process of discovering).

So while watching the YouTube movies I wanted to show him how we could do some life-improvement and prevent typing the same searches over and over again :)

image PHP, Google Search API, JQuery, PHP-Curl, Caching and Google Ads – I started by copying the pretty much default examples from Google Search API Code voor videos Submit and started explaining to my three year old what I was doing. He was fascinated :) Then we added some pretty default php curl Submit code for caching the pages and caching the images (since I didnt want to make a call each time). After that I downloaded the default Jquery Tabs Stuff 0/12, basically 100% as in the examples while I went with him through the code trying to explain what I was doing.

So within an hour we had this page online, with of course IS pretty quick and dirty code alltogether, but he is delighted with it and I am proud that we made it together. One thing was missing: a revenue stream :) so he can make his pocketmoney with his own video site :) So we added a Google-Ad to the top of the page.

Download, Improve and Share!

If you are a dad having your "daddy day", please feel free to download the php file and improve it somewhat with your kids e.g.:

  • implement functionality to permantly discard movies which are not suitable for children e.g. storing those IDs in an xml file and/or
  • make the movies popup and close with a click).
  • adding custom movies that always should be included
  • make the code work with older versions of PHP which do not support JSON_DECODE (e.g. 4.x.x) (fixed)

During our next weekend we will probably focus on the first thing first: permanently discarding inappropriate movies.

Download MaartensVideoPage (zip) Submit

The two additional library downloads are only ment as a reference check. You should download the libraries from the official sites. They are to be placed in the /LIB directory.

LIB directory Submit (this is the JQuery library and the JQUERY UI library which should be placed in the LIB directory. Download it the JQUERY UI lib here 0/30 and JQUERY here 3/141 officially).

LIB RPC directory Submit (you only need these 3 files if you are running an older version of PHP (<5.2) which has no JSON support. These files are available from the XML-RPC Project Submit  where you should download them officially).

E-mail Maarten and Me Submit with your improvements and comments

How to use it if you don’t know code:

  • download the zip file
  • change the variables at the top of the index.php file (notably the search string array and add your own Google API key which you can download for free)
  • download Jquery and place it in the lib directory (see notepad.txt in that directory for instructions)
  • upload the lot to your webhost

If you see that it works you can change it for any kind of video site you like by changing the search parameters e.g. your music videos, movies, how-to videos, personal videos or just collect your favorites.

History

v.0.1 = YouTube support, Jquery Tabs and basic implementation on 14-2-2009
v.0.2 = Made it compatible with all PHP versions


 coding

 curl

 google-api

 jquery

 json

 maarten

 php

 youtube

Saturday, February 14th, 2009

 2 Comments

Link


30+ Eye-Opening Web Development Screencasts – NETTUTS 9/42K


 howto

 php

 webdesign

Saturday, November 29th, 2008

 Add a Comment


image I heard about OpenGoo 8/21K, a webapplication which you can host at your own server and basically let’s you do the “office” things: contacts, todo, documents, spreadsheets, calender, task, links, and so on.

Although it probably lacks a lot of features this might be handy to install in our household. I really like to have all my data within my own household and I believe distributed everything is basically the way to go.

The main problem are the memory demands, it requires really some MB’s while my Synology CS 407 is already running uhm… a lot.

But let’s try anyway.

image - Download the zip file from the SourceForge site
- Just copy to your /web directory
- Open the installation page by just typing in the url of the place you copied it to (e.g. http://cubestation/doc)
- You get a  nice message and have to click next
image - The next page warns you aboutsimplexml extension Submit is not installed”
- According to Synology Submit however this extension is not available yet in their default php release (no libxslt.so). However I read about  some “hack” : “install a second apache with a full enabled PHP —> ipkg install php-apache”.

Some questions pop in my mind now… ah…. what the heck.

CubeStation> ipkg list php*
php – 5.2.6-2 – The php scripting language
php-apache – 5.2.6-1 – The php scripting language, built as an apache module
php-curl – 5.2.6-2 – libcurl extension for php
php-dev – 5.2.6-2 – php native development environment
php-embed – 5.2.6-2 – php embedded library – the embed SAPI
php-fcgi – 5.2.6-1 – The php scripting language, built as an fcgi module
php-gd – 5.2.6-2 – libgd extension for php
php-imap – 5.2.6-2 – imap extension for php
php-ldap – 5.2.6-2 – ldap extension for php
php-mbstring – 5.2.6-2 – mbstring extension for php
php-mssql – 5.2.6-2 – mssql extension for php
php-mysql – 5.2.6-2 – mysql extension for php
php-odbc – 5.2.6-2 – odbc extension for php
php-pear – 5.2.6-2 – PHP Extension and Application Repository
php-pgsql – 5.2.6-2 – pgsql extension for php
php-thttpd – 2.25b-5.2.6-1 – php-thttpd is thttpd webserver with php support
phpmyadmin – 2.6.2-2 – Web-based administration interface for mysq

ipkg list php* hmmm…

CubeStation> ipkg install php-apache
Installing php-apache (5.2.6-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/php-apache_5.2.6-1_arm.ipk Submit
package apr-util suggests installing sqlite
package apr-util suggests installing openldap-libs
Installing apache (2.2.10-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/apache_2.2.10-1_arm.ipk Submit
Installing apr (1.3.3-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/apr_1.3.3-1_arm.ipk Submit
Installing apr-util (1.3.4-2) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/apr-util_1.3.4-2_arm.ipk Submit
Installing e2fslibs (1.40.3-5) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/e2fslibs_1.40.3-5_arm.ipk Submit
Installing expat (2.0.1-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/expat_2.0.1-1_arm.ipk Submit
Installing gdbm (1.8.3-2) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/gdbm_1.8.3-2_arm.ipk Submit
Installing libdb (4.2.52-3) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/libdb_4.2.52-3_arm.ipk Submit
Installing e2fsprogs (1.40.3-5) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/e2fsprogs_1.40.3-5_arm.ipk Submit
Installing openssl (0.9.7m-4) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/openssl_0.9.7m-4_arm.ipk Submit
Installing zlib (1.2.3-3) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/zlib_1.2.3-3_arm.ipk Submit
Installing openldap-libs (2.3.43-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/openldap-libs_2.3.43-1_arm.ipk Submit
Installing cyrus-sasl-libs (2.1.22-2) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/cyrus-sasl-libs_2.1.22-2_arm.ipk Submit
Installing php (5.2.6-2) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/php_5.2.6-2_arm.ipk Submit
Installing bzip2 (1.0.5-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/bzip2_1.0.5-1_arm.ipk Submit
Installing libxml2 (2.7.1-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/libxml2_2.7.1-1_arm.ipk Submit
Installing libxslt (1.1.24-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/libxslt_1.1.24-1_arm.ipk Submit
Installing pcre (7.8-1) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/pcre_7.8-1_arm.ipk Submit
Installing libstdc++ (6.0.3-6) to root…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/libstdc++_6.0.3-6_arm.ipk Submit
Configuring apache
update-alternatives: Linking //opt/sbin/htpasswd to /opt/sbin/apache-htpasswd
update-alternatives: Linking //opt/sbin/httpd to /opt/sbin/apache-httpd
httpd: Could not reliably determine the server’s fully qualified domain name, using 192.168.1.70 for ServerName
httpd (no pid file) not running
httpd: Could not reliably determine the server’s fully qualified domain name, using 192.168.1.70 for ServerName
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:8000
no listening sockets available, shutting down
Unable to open logs
postinst script returned status 1
ERROR: apache.postinst returned 1
Configuring apr
Configuring apr-util
Configuring bzip2
update-alternatives: Linking //opt/bin/bzip2 to /opt/bin/bzip2-bzip2
Configuring cyrus-sasl-libs
Configuring e2fslibs
Configuring e2fsprogs
update-alternatives: Linking //opt/bin/chattr to /opt/bin/e2fsprogs-chattr
update-alternatives: Linking //opt/bin/lsattr to /opt/bin/e2fsprogs-lsattr
update-alternatives: Linking //opt/sbin/fsck to /opt/sbin/e2fsprogs-fsck
Configuring expat
Configuring gdbm
Configuring libdb
Configuring libstdc++
Configuring libxml2
Configuring libxslt
Configuring openldap-libs
Configuring openssl
Configuring pcre
Configuring php
Configuring php-apache
Configuring zlib
Successfully terminated.

1) vi /opt/etc/apache2/httpd.conf

(in /opt/lib/php/extensions is now the needed xsl.so)

(also change all libexec/bla.so to /opt/libexec/…)
(also change log file to correct location e.g. /opt/var/apache2/log)

Then edited the portnumber to 81 and changed the default webpath.

2) run /opt/sbin/httpd –k start

and we are running another instance on port 81:

image


 apache

 coding

 linux

 php

 synology

Wednesday, November 19th, 2008

 Add a Comment


image

If you wonder how I displayed the above tag tables in wordpress in the DMOZ like directory form, I just took the dive into wpdb (so the database layer functions of WordPress) instead of meddling with the taxonomy functions:

The following function gets the amount of posts labeled with a specific tag:

   1: function fetch_tag_amount($tagid) {
   2:     global $wpdb;
   3:     $amount = $wpdb->get_var("SELECT count FROM $wpdb->term_taxonomy WHERE term_id=" . $tagid);
   4:     return $amount;
   5: }

The following function gets me the slug of the tag itself (I didnt have time to change the slugs on this site so they all still look like their original tag, with the change that I capatalized the first letter:

   1: function fetch_tag_slug($tagname) {
   2:                 global $wpdb;
   3:                 $slug = $wpdb->get_var("SELECT slug FROM $wpdb->terms WHERE name='$tagname'");
   4:                 return ucfirst($slug);
   5:             }

The following function fetches me the term id of a tag, which I need to retrieve the amount of postings:

   1: function fetch_tag_id($tagname) {
   2:     global $wpdb;
   3:     $tagid = $wpdb->get_var("SELECT term_id FROM $wpdb->terms WHERE name='$tagname'");
   4:     return $tagid;
   5: }

However if you play it nice you should actually use the non wpdb call:

   1: function get_tag_id($tag_name) {
   2:    $taxarray = is_term($tag_name, 'post_tag');
   3:    return $taxarray[term_id];
   4:  

But I didnt want to show ALL tags. I just wanted to show a specific amount of tags I was interested in. So I took the easy way and created a directory under my theme /inc/tags/TAGNAME each time I wanted to have a tag appear in the list I was interested in (manually), with the advantage that the contents of the directory could be used and are used for other nice things specifically tied to the tag.

So I loop the directory for the names supplied and add them to an array name “tagarray” …

   1: $tagarray = array();
   2:     $tagarraystring = array();
   3:     $dir = $includedirectory . 'tags/';
   4:     if (is_dir($dir)) {
   5:     if ($dh = opendir($dir)) {
   6:         while (($file = readdir($dh)) !== false) {
   7:                 if (filetype($dir . $file) == 'dir' && $file != '..' && $file !='.') {
   8:                     array_push($tagarray, get_tag_id($file));
   9:                     array_push($tagarraystring,$file);
  10:                 }
  11:         }
  12:         closedir($dh);
  13:     }
  14:     }

Inside my tag page I can now use code to check for the directory existence and do stuff, e.g.

   1: if (file_exists($tagdirectory . "header.php")) {
   2:                include ($tagdirectory. "header.php");
   3:             } 

to check if there is a specific header defined for the tag page, etc… it doesnt even have to be WordPress related, I can put complete applications in there or other weird stuff.

Furthermore to then display it in a table is as simple as:

   1: function taglinkline($tagname) {
   2:                 $returntagstring = '';
   3:                 $returntagstring .= '<a href="/about/' . $tagname . '">' . fetch_tag_slug($tagname) . '</a> (';
   4:                 $tagid = fetch_tag_id($tagname);
   5:                 $returntagstring .= fetch_tag_amount($tagid);
   6:                 $returntagstring .= ')<br />';
   7:                 return $returntagstring;
   8:             }
   9:  
  10:             function taggrouptitle($taggrouptitle) {
  11:                 $returntagstring = '<b>' . $taggrouptitle . '</b><br />';
  12:                 return $returntagstring;
  13:             }
  14:  
  15:             function tagColumn($taggrouptitle,$collectiontags,$rows) {
  16:                 $returntagstring = "<td bgcolor=\"#b0b0b0\" valign=\"top\" width=\"100px\" rowspan=\"$rows\">";
  17:                 $returntagstring .= taggrouptitle($taggrouptitle);
  18:                 foreach ($collectiontags as $collectiontag) {
  19:                     $returntagstring .= taglinkline($collectiontag);
  20:                 }
  21:                 $returntagstring .= '</td>';
  22:                 return $returntagstring;
  23:             }

And then create the directory by thinking on how to shape it, in my case I wanted to have a sort of DMOZ like indexed seperation, so here I did:

   1: <table hspace="0" vspace="0"><tr>
   2:    <?php
   3:     $tagstring='';
   4:     $tagstringtag .= tagColumn("Arts",                 array("art", "video", "music", "movie", "tv", "radio", "book", "comics", "writing", "graphics", "photo", "scifi"),2);
   5:     $tagstringtag .= tagColumn("Computers",        array("software", "hardware", "pda", "kiss", "synology", "wifi", "coding", "google", "microsoft", "firefox"),2);
   6:     $tagstringtag .= tagColumn("Internet",            array("links","blogging","wordpress","webmoney","webgoodie","socialweb","webtools","webdesign","hosting"),2);
   7:     $tagstringtag .= tagColumn("Home",                   array("household","finance","fashion","baby","health","travel","food","car","sonicare","gadget"),2);
   8:     $tagstringtag .= tagColumn("Games+Recreation", array("game","xbox","risk","cool","free","humor"),1);
   9:     $tagstringtag .= tagColumn("Society",               array("brights","skeptic","human","politics","green","celebrities"),1);
  10:     $tagstringtag .= tagColumn("Private",          array("private","bali","maarten","thisweblog", "brainstorm", "idea","indo","genealogy","nikon"),2);
  11:     $tagstringtag .= '</tr><tr>';
  12:     $tagstringtag .= tagColumn("Subs",             array("health","news","shopping","science","reference","it"),1);
  13:     $tagstringtag .= tagColumn("More",             array("lost","howto","wikipedia","history","review","xara"),1);
  14:     echo $tagstringtag;
  15:     ?>
  16: </tr></table>

Next step is to actually orden the tags within the specific tag pages. Which is a sort of tagcloud but only for the posts within a certain tag archive. More on that in any of the next postings.


 coding

 dmoz

 php

 tag

 wordpress

Monday, November 10th, 2008

 Add a Comment

Link


Marc Worrell/ Verso Wiki: translate Wiki markup to HTML and HTML to Wiki markup Submit
quite handy wiki markup to html markup translator (GPL)


 coding

 html

 opensource

 php

 translator

 webtools

 wiki

Sunday, November 18th, 2007

 Add a Comment


Dreamhost is the best place for hosting your website

Summary

The hosting company dreamhost Submit caused a revolution on the Internet. Just like Microsoft or Google, Dreamhost is the most viable choice for anyone looking for a hosting company independant of country. In a short time they grew to be the #16th ranked webhosting company on the planet hosting more than 540.000 domain names.
The reasons are: extremely low price but outperforming all other hosting companies in terms of conditions and reliability, very good end-user experience based on options and a custom build control panel and a very active customer “fan” club which is party responsible for the more than 7.000.000 entries in Google. In this article we will try to convince you why you should switch.

I started in the 90′s with my first website on our university network, later I moved to free webspacehosting at Geocities and Xoom. And still later I had my own hosted webserver. Then I began the cycle of trying out all kinds of hosting companies, some which provided huge amounts of space at a very low space and other because of stories I read on the Internet and yet again others because they all kinds of other bells and whistles. During these times I had collected some domain names, some friends and relations who wanted a “shop” and which I placed there and there but also a keen eye on many of the new (web2)open source web applications like blogging (Worpress), forum (phpbb), wiki and so on which I unfortunately could only host one at a time and only if I had the money. Then dreamhost came around and it allowed me to host all my websites on all domains against unlimited databases and unlimited subdomains under just one very cheap account. It changed my life. Within an hour I can
put a new concept in the air and try out anything I read about but most of all it is cheaper than anything out there. Long live the web2.0 age. I am now actively evangelizing dreamhost to all my friend, independant of their hosting needs, dreamhost Submit is the place to be.

what does it offer?

1. Unlimited domains

dreamhost Submit offers unlimited domains under 1 account. This means that you can move all of your domains to a single account. Via the simple control panel you can point the domain to the webdirectory on your remote disk. Click. Ready.

quick how to

  1. go to godaddy 9/512
  2. buy a domain name e.g. “aweblog.net” for some dollars ($1.99 for new customers)
  3. enter the panel at godaddy and change the DNS Settings to
    DNS1.DREAMHOST.COM, DNS2.DREAMHOST.COM, DN3.DREAMHOST.COM

  4. enter your dreamhost account and click “manage domains”
  5. click “Add new domain/subdomains”
  6. Fill in the following form:

  7. You are done. Just note that you also choose for redirecting a domain,parking, forwarding, cloaking, all from the same panel.

If you ever dreamt of grabbing hundreds of domain names and loading them with GoogleAds, this is your chance. On Ebay they sell adsense packages. Meaning: if you get just 1 or 2 users to click on your site in a month (duh) the calculation is simple: just buy domainnames and throw them on the Internet and you get rich sleeping. I made you a quick how to guide for this.

Only if you are interested, else read on below:

quick how to

  1. perform the previous howto for each domain name
  2. sign up with google adsense     447
  3. if a domain name costs $7.95 a year, you need at least $7.95 income.
    So for each website you need to earn at least $7.95/12 = $0.60 a month
    Just 1 click can bring in at max $70 (!) but on average you get about $0.25
    for 1 click. So you will need about 3 people in a month clicking your
    google ad. It is difficult to determine but that means about 150 visitors
    to your site in a month, in other words around 5 visitors a day.
    So if you can manage to get 5 visitors a day to your new website you
    break-even. If you get more you gain profit.

  4. But…if you want to be less cool, but still pretty cool, you could just
    buy 1 good domainname and then start adding subdomains e.g.
    “weblog.aweblog.net”, “forum.aweblog.net”, “games.aweblog.net”, in this
    way you always run profit since there are no domain costs. Luckily
    dreamhost offers unlimited free subdomains, see next.

2. Unlimited subdomains

dreamhost Submit offers unlimited subdomains to each domain. So e.g. for your domain “http://www.aweblog.net” you can create “http://forum.aweblog.net” or even “http://some.forum.aweblog.net”. You can create them using the same control panel as in the picture above.
So why is that more useful than “http://www.weblog.net/forum”? Because in this way it becomes a real domain where you can attach e-mail accounts, applications, ftp, and so on. It is also handy when submitting a subdomain to a search or indexing website because it will be seen as a real cool new domain.
In my case I own the domain “leau.net” so i could create “http://edward.de.leau.net” and then add my own e-mail account to it which becomes “mail@edward.de.leau.net” and so on.
Also think about “http://del.icio.us”. If you would own “icio.us” you could
create all kinds of cool subdomains attracting visitors on its own.

In some time you will think of hundreds of different combinations, the handy thing with a hosting party which enables you to add and remove them on the fly is that it empowers you to actually play with these things.

3. Near Unlimited space: 75.000 digital pictures or 50.000 mp3′s!

dreamhost Submit offers
so much space that it probably will dazzle you. In the cheapest package “crazy domain insane”
you get around 200 gigabyte of space (!) and every week you get 1 gig extra, so you never will run out of space.

Notice the last bit: every week you get 1 gigabyte extra free forever!

Just for comparison: a big company with a large website will probably occupy around 50mb! Unless you will start a new flickr you will never use more than a percentage of this space (2% ?), even if you upload some episodes of LOST and most of your vacation pictures!
However, here are some ideas what you could do with this amount of space:

  • autosync your laptop’s backup with your dreamhost directory. It will
    be safe there. Use a smart syncer which auto syncs only the deltas.

  • upload all digital pictures you ever made to a dreamhost account. This
    will probably, as in my case, fill up your account in the end. Then
    auto-click-install “gallery” from the dreamhost panel and you’ve got
    a massive online foto gallery, who needs flickr anyway. You can
    probably store about 75.000 foto’s on it.

  • store your mp3 collection on it. The biggest iPod is 80 gig so you
    can store 2.5 ipod collections on it (and probably never listen to
    this stuff again – are you crazy?), install some opensource webplayer
    and you have a streaming website holding all your favorite mp3s. Uhm
    those are about 50.000 mp3s…

  • make hundreds of copies of your weblog and submit them all to search
    engines generating massive traffic (this is illegal!)

Remember: its’s auto-increasing with 1 gigabyte every week, so make sure
you keep up with uploading stuff to it :)
Seriously: it will be enough for your personal weblog! And remember, this space is
your own. So if your music or fotos or weblog, hosted at some other free company
burns down or decides otherwise, all your stuff is gone. Remember that.

4. Near Unlimited bandwidth

In the cheapest package you get around 2 TeraByte of bandwidth, which increases
every week with 16GB. Terabyte! I will compare this with the cheapest hosting
company in the Netherlands: hosting2go. They give 20 MEGAbytes of bandwith.
You will never reach this amount of traffic unless you start Hyves.nl or
some very popular porn sites.
Here is my personal usage for some PR5 websites I run on this account:

Exactly: lower than 0%!

5. Unlimited mySQL databases

Dreamhost Submit offers unlimited
sql databases. Meaning you could create unlimited websites e.g. unlimited weblogs,
forums, wiki’s, shops, foto gallery’s etc… all on the same $7.95 account. It
also means you could host all the shops of your customers on the same account AND
just download any open source application and just install it on some subdomain
and play around with it (and then blog about it).
Many other hosting companies limit the amount of mySQL databases you can host. Which
means you can either run your WordPress weblog OR you foto galley but not both. In
the case of dreamhost you can install any number of database based application (or write
your own).

6. Shell Access

Dreamhost Submit offers complete shell access. This means you can telnet to your server and basically…do anything you like. You can setup your cronjobs (though the control panel also allows you to do that) but you could also compile your own php if you wanted some extra features in it! If you are a webdeveloper or want to have more complete control over your sites then shell access is absolutely vital, just think of changing your .htaccess or tweaking some config files or just checking the usergroup in /etc/group.

- I was also looking for, on the one hand, an easy control panel which basically would let me do anything: adding domains and subdomains, one button installs of most populair software (e.g. wordpress, wiki, gallery, forum, etc), control my databases, control users, e-mail, etc… BUT on the other hand Via the control panel you can handle all things easily. So if you are a novice user that would be enough. However if you are a developer and e.g. would like to schedule jobs via crontab (e.g. reading del.icio.us every night or do some other screenscraping), compile your own stuff e.g. compile your own php, all of that is possible, complete control.

- Then I found out the goodies that they Submit
provide which are the cream on top of it:
- automatic backups. Visible for you to see and grab stuff from. Always handy! E.g. I can see several directories like “cogmios.nl.old.2″ etc… so if I ever change my layout and accidently overwrite my old style.css I can always go back some generations.
- Subversion Server. Yes. You can create as much subversion projects under as many domains as you like. Subversion is a version control system and pretty much near the functionality of Rational ClearCase. Meaning you can store all your documents and code in the database and you will never lose any version of your documents or code. Directly within the control panel you can easily configure it.
- php, ruby, your own jabber server, oneclick installers,etc…etc…

Look here Submit for more information!

7. Earn your hosting costs back by community loyality

Dreamhost Submit is unique since it does not advertise or pay to be in all kinds of “best top 50 webhosts” websites (which all work by placing the most paying hosts at the top). It refuses this although it would bring them more users. They work however via users evangelizing the quality to other users and rewarding active community users with discounts. On top of that you can set up special codes which give extra disk space or memory or just a large amount of discount on hosting costs for your friends or people in your network. If you are an active community member you can easily earn your hosting costs back. For readers of my blog I have setup the code “GODUTCH” which gives you the maximum discount. This used to be $97 but since a few months this has been brought down to a maximum of $50 discount, which still makes it worth your while since the monthly costs are $7.95…More discount is not possible, its the max on this moment.

Think about it, analyze other hosts, make excel sheets with feature comparison tables, read Google on all background, compare the features with your own hosting and then come back and use “GODUTCH” on Dreamhost Submit, it gives you the maximum discount on signup. I really wouldn’t know why you wouldn’t host here but you can investigate and compare yourself. There is a reason why they are one of the biggest. Smaller hosting companies can not compete anymore with this.


 community

 discount

 dreamhost

 for_my_readers

 hosting

 mysql

 php

 web2.0

 webhost

 webhosting

 webshop

Tuesday, February 27th, 2007

 Comments Off

Pages: 1 2 next