Subscribe to RSS Feed

Archive for May, 2008

Easy way to PXE Boot Windows

This guide provides an easy and relatively quick way to PXE boot windows which means you can install Windows over the network with PXE without the need for a CD drive. While the previous guide allows you to slip stream updates and add extra programs it took a LONG LONG time to do, especially with all the downloads it needed to do, this one just installs a vanilla XP, nice and simple, and a lot quicker :)
Step 1: Getting started.
What you’ll need:

  • Windows 2000/XP CD (to get the i386 directory off it)
  • PC running 2000/XP (to act as a server)
  • Laptop capable of booting over PXE (such as the L400).
  • Tftpd32
  • Bart Network Boot Disk
  • SMARTDRV.EXE
  • A Share. The Server must be able to share files (any Microsoft Windows computer can).
  • Working router or plain crossover cable.
  • Once you’ve collected all of the above, lets begin;

  • Create a share, for the sake of argument create it at c:\WINSTALL
  • Copy your i386 folder and SMARTDRV.EXE into this folder
  • Make a note of your computer name/host name, you can find this out by right clicking on “My Computer”, going to properties, go to “Computer Name” tab, look under Full computer name, in my example, the computers name is STAR, i believe the name needs to be 12 chars or less for this to work in dos mode, so if its longer change it and reboot.
  • Create a folder to PXE boot from, c:\OUTPUT
  • Continue Reading »
    83 Comments

    CSS Cheatsheet

    May 1, 2008 by Kode

    Background
    Backgrounds can be tricky. Nevertheless, effective when condensed correctly. The syntax for declaring the background shorthand values are as follows:
    background properties
    element {
    background-color: color || #hex || (rgb / % || 0-255);
    background-image:url(URI);
    background-repeat: repeat || repeat-x || repeat-y || no-repeat;
    background-position: X Y || (top||bottom||center) (left||right||center);
    background-attachment: scroll || fixed;
    }
    Believe it or not, all these properties can be combined into one single background property as follows:
    the background shorthand property
    element {
    background:
    #fff
    url(image.png)
    no-repeat
    20px 100px
    fixed;
    }
    The Unknown
    Often times developers find themselves wondering What if I leave out this value or that one? How will that effect the design?. Good questions.

    By default, the background property will assume the following when you do not declare each value of the properties.
    default background property values

    element {
    background-color: transparent;
    background-image: none;
    background-repeat: repeat;
    background-position: top left;
    background-attachment: scroll;
    }
    Lesson learned: be careful on what you don’t declare. By chosing to not declare a value on a shorthand property, you are explicitly declaring the above default settings. For example, let’s look at the following example.
    background shorthand example (unexplicit)
    element {
    background:red url(image.png);
    }
    This would be the same as declaring the following values:
    background shorthand example (explicit)
    element {
    background:red url(image.png) repeat top left scroll;
    }
    Font
    Font is perhaps the trickiest. However, it follows the same rules as the background shorthand property. All that you do not declare will have unexplicit values. Here is the font shorthand specification:
    font properties
    element {
    font-style: normal || italic || oblique;
    font-variant:normal || small-caps;
    font-weight: normal || bold || bolder || || lighter || (100-900);
    font-size: (number+unit) || (xx-small – xx-large);
    line-height: normal || (number+unit);
    font-family:name,”more names”;
    }
    The default values for the font shorthand property are as follows:
    default font property values
    element {
    font-style: normal;
    font-variant:normal;
    font-weight: normal;
    font-size: inherit;
    line-height: normal;
    font-family:inherit;
    }
    And of course without any further ado. The font shorthand property syntax:
    the font shorthand property
    element {
    font:
    normal
    normal
    normal
    inhert/
    normal
    inherit;
    }
    Here is where it gets tricky. The fact that font-style, font-variant, and font-weight all come “normal” out of the box, you may need to pay a little more close attention when you’re styling elements that come with default browser styles like <h1> – <h6> or <strong> and <em>. For example, styling the strong element:
    strong element styled with font
    strong {
    font:12px verdana;
    }
    By writing the above into your style sheet, you will be unexplicitly removing the font-weight:bold default browser style that is applied to strong elements.

    Last but not least (for -font- that is), a real world example:
    font shorthand property example (unexplicit)
    p {
    font:bold 1em/1.2em georgia,”times new roman”,serif;
    }
    This would be the same as declaring the following properties:
    the font shorthand property (explicit)
    p {
    font-style:normal;
    font-variant:normal;
    font-weight:bold;
    font-size:1em;
    line-height:1.2em;
    font-family:georgia,”times new roman”,serif;
    }
    Border
    Let’s not waste time discussing the warnings. The same rules apply from here on out. This is all you need to know
    border properties
    element {
    border-width: number+unit;
    border-style: (numerous);
    border-color: color || #hex || (rgb / % || 0-255);
    }
    becomes this:
    the border shorthand propertie
    element {
    border:
    4px
    groove
    linen
    }
    Don’t ask me how that would look. The fact that “linen” is in there, things could get scary. Nevermind the matter, here is where ‘border’ gets funny.
    border examples
    p {
    border:solid blue;
    }
    /* will create a ‘3px’ solid blue border…
    who knows where 3px came from?? */

    p {
    border:5px solid;
    }
    /* will create 5px solid ‘black’ border…
    default must be black?? */

    p {
    border:dashed;
    }
    /* will create a ‘3px’ dashed ‘black’ border…
    3px black lines unite! */

    p { border:10px red; }
    p { border:10px; }
    p { border:red; }
    /* these just don’t even work */
    One thing to specially take note about declaring a border without a color, the default will be ‘black’ unless otherwise noted through an explicit or inherited ‘color’ property. See the following examples:
    border color examples

    p {
    border:dotted;
    color:red;
    }
    /* will create a 3px dotted red border */
    /* —————————– */
    body {
    color:blue;
    }
    body p {
    border:5px solid;
    }
    /* will create a 5px solid blue border */
    /* —————————– */
    Get it? Got it. Good! (isn’t that a song?) Anyway. On with this
    Margin and Padding
    These are by far the easiest. Just think about the hands of a clock starting at noon, and follow the hour. For the sake of brevity, we’ll be working with margin (since it’s a shorter word). So for all cases of margin, the same rules apply to padding.
    margin properties.
    element {
    margin-top: number+unit;
    margin-right: number+unit;
    margin-bottom: number+unit;
    margin-left: number+unit;
    }
    … combined into the margin superpowers:
    the margin shorthand property
    /* top right bottom left */
    element {
    margin: auto auto auto auto;
    }
    Of course, you may declare your margin with one, two, three, or four values. Here is how each scenario will be played out:
    margin fun
    /* adds a 10px margin to all four sides */
    element {
    margin:10px;
    }

    /* adds a 20px margin to top and bottom
    and a 5px margin to left and right */
    element {
    margin:20px 5px;
    }

    /* adds a 50px margin to top
    and a 10px margin to left and right
    and a 300px margin to bottom */
    element {
    margin:50px 10px 300px;
    }
    Understood? Let’s keep going. This is fun isn’t it! (whatever, you like it).
    Outline
    Quite frankly, this property has dropped off the existence of the design radar. Mainly because of lack of browsers supporting this CSS 2.1 standard (yep, it’s an actual property), but nonetheless, it too has a shorthand property. This property follows the exact same (or same exact – they mean the same thing) specification as the ‘border’ shorthand property. But, for purposes of this being a Guide, it must be here. So:
    outline properties
    element {
    outline-width: number+unit;
    outline-style: (numerous);
    outline-color: color || #hex || (rgb / % || 0-255);
    }
    Outline written as shorthand:
    outline shorthand property
    element {
    outline:3px dotted gray;
    }
    For purposes of trying to keep things from repeating, please see the border shorthand section on this document to understand the odds, ends, and quirks of the outline property.
    List-style
    This is it. The last one. It’s rarely used frequently. Hence rarely. That is why I kept it until the end (sorry, the best was first in my own opinion). Here is the list-style properties:
    list-style properties
    element {
    list-style-type: (numerous);
    list-style-position:inside || outside;
    list-style-image:url(image.png);
    }
    Here is the defaults:
    list-style property defaults
    element {
    list-style-type:disc;
    list-style-position:outside;
    list-style-image:none;
    }
    And for the sake of final brevity. Here is a simple example:
    list-style shorthand property example
    ul li {
    list-style:square inside url(image.png);
    }
    /* in this particular case if image.png is not available
    then a square will be provided as secondary */
    This guide is originally from http://www.dustindiaz.com/css-shorthand/

    Continue Reading »
    No Comments

    MySQL Cheatsheet

    May 1, 2008 by Kode

    Query
    SELECT * FROM table
    SELECT * FROM table1, table2, …
    SELECT field1, field2, … FROM table1, table2, …
    SELECT … FROM … WHERE condition
    SELECT … FROM … WHERE condition GROUPBY field
    SELECT … FROM … WHERE condition GROUPBY field HAVING condition2
    SELECT … FROM … WHERE condition ORDER BY field1, field2
    SELECT … FROM … WHERE condition ORDER BY field1, field2 DESC
    SELECT … FROM … WHERE condition LIMIT 10
    SELECT DISTINCT field1 FROM …
    SELECT DISTINCT field1, field2 FROM …
    SELECT … FROM t1 JOIN t2 ON t1.id1 = t2.id2 WHERE condition
    SELECT … FROM t1 LEFT JOIN t2 ON t1.id1 = t2.id2 WHERE condition
    SELECT … FROM t1 JOIN (t2 JOIN t3 ON …) ON …
    conditionals:
    field1 = value1
    field1 <> value1
    field1 LIKE ‘value _ %’
    field1 IS NULL
    field1 IS NOT NULL
    field1 IS IN (value1, value2)
    field1 IS NOT IN (value1, value2)
    condition1 AND condition2
    condition1 OR condition2
    Data Manipulation
    INSERT INTO table1 (field1, field2, …) VALUES (value1, value2, …)
    DELETE FROM table1 / TRUNCATE table1
    DELETE FROM table1 WHERE condition
    – join:
    DELETE FROM table1, table2 FROM table1, table2 WHERE table1.id1 = table2.id2 AND condition
    UPDATE table1 SET field1=new_value1 WHERE condition
    – join:
    UPDATE table1, table2 SET field1=new_value1, field2=new_value2, … WHERE table1.id1 = table2.id2 AND condition
    Browsing
    SHOW DATABASES
    SHOW TABLES
    SHOW FIELDS FROM table / DESCRIBE table
    SHOW CREATE TABLE table
    SHOW PROCESSLIST
    KILL process_number
    Create / delete database
    CREATE DATABASE mabase
    CREATE DATABASE mabase CHARACTER SET utf8
    DROP DATABASE mabase
    ALTER DATABASE mabase CHARACTER SET utf8
    Create/delete/modify table
    CREATE TABLE table (field1 type1, field2 type2, …)
    CREATE TABLE table (field1 type1, field2 type2, …, INDEX (field))
    CREATE TABLE table (field1 type1, field2 type2, …, PRIMARY KEY (field1))
    CREATE TABLE table (field1 type1, field2 type2, …, PRIMARY KEY (field1, field2))
    CREATE TABLE table1 (fk_field1 type1, field2 type2, …,
    FOREIGN KEY (fk_field1) REFERENCES table2 (t2_fieldA))

    CREATE TABLE table1 (fk_field1 type1, fk_field2 type2, …,
    FOREIGN KEY (fk_field1, fk_field2) REFERENCES table2 (t2_fieldA, t2_fieldB))
    CREATE TABLE table IF NOT EXISTS (…)
    CREATE TEMPORARY TABLE table (…)
    DROP TABLE table
    DROP TABLE IF EXISTS table
    DROP TABLE table1, table2, …
    ALTER TABLE table MODIFY field1 type1
    ALTER TABLE table MODIFY field1 type1 NOT NULL …
    ALTER TABLE table CHANGE old_name_field1 new_name_field1 type1
    ALTER TABLE table CHANGE old_name_field1 new_name_field1 type1 NOT NULL …
    ALTER TABLE table ALTER field1 SET DEFAULT …
    ALTER TABLE table ALTER field1 DROP DEFAULT
    ALTER TABLE table ADD new_name_field1 type1
    ALTER TABLE table ADD new_name_field1 type1 FIRST
    ALTER TABLE table ADD new_name_field1 type1 AFTER another_field
    ALTER TABLE table DROP field1
    ALTER TABLE table ADD INDEX (field);
    – Change field order:
    ALTER TABLE table MODIFY field1 type1 FIRST
    ALTER TABLE table MODIFY field1 type1 AFTER another_field
    ALTER TABLE table CHANGE old_name_field1 new_name_field1 type1 FIRST
    ALTER TABLE table CHANGE old_name_field1 new_name_field1 type1 AFTER another_field
    ALTER TABLE old_name RENAME new_name;
    Keys
    CREATE TABLE table (…, PRIMARY KEY (field1, field2))
    CREATE TABLE table (…, FOREIGN KEY (field1, field2) REFERENCES table2 (t2_field1, t2_field2))
    Privileges
    GRANT ALL PRIVILEGES ON base.* TO ‘user’@'localhost’ IDENTIFIED BY ‘password’;
    GRANT SELECT, INSERT, DELETE ON base.* TO ‘user’@'localhost’ IDENTIFIED BY ‘password’;
    REVOKE ALL PRIVILEGES ON base.* FROM ‘user’@'host’; — one permission only
    REVOKE ALL PRIVILEGES, GRANT OPTION FROM ‘user’@'host’; — all permissions
    SET PASSWORD = PASSWORD(’new_pass’)
    SET PASSWORD FOR ‘user’@'host’ = PASSWORD(’new_pass’)
    SET PASSWORD = OLD_PASSWORD(’new_pass’)
    DROP USER ‘user’@'host’
    Main data types
    TINYINT (1o: -217+128) SMALLINT (2o: +-65 000)
    MEDIUMINT (3o: +-16 000 000) INT (4o: +- 2 000 000 000)
    BIGINT (8o: +-9.10^18)
    Precise interval: -(2^(8*N-1)) -> (2^8*N)-1
    /!\ INT(2) = “2 digits displayed” — NOT “number with 2 digits max”
    FLOAT(M,D) DOUBLE(M,D) FLOAT(D=0->53)
    /!\ 8,3 -> 12345,678 — NOT 12345678,123!
    TIME (HH:MM) YEAR (AAAA) DATE (AAAA-MM-JJ) DATETIME (AAAA-MM-JJ HH:MM; années 1000->9999)
    TIMESTAMP (like DATETIME, but 1970->2038, compatible with Unix)
    VARCHAR (single-line; explicit size) TEXT (multi-lines; max size=65535) BLOB (binary; max size=65535)
    Variants for TEXT&BLOB: TINY (max=255) MEDIUM (max=~16000) LONG (max=4Go)
    Ex: VARCHAR(32), TINYTEXT, LONGBLOB, MEDIUMTEXT
    ENUM (’value1′, ‘value2′, …) — (default NULL, or ” if NOT NULL)
    Forgot root password?
    $ /etc/init.d/mysql stop
    $ mysqld_safe –skip-grant-tables
    $ mysql # on another terminal
    mysql> UPDATE mysql.user SET password=PASSWORD(’nouveau’) WHERE user=’root’;
    ## Kill mysqld_safe from the terminal, using Control + \
    $ /etc/init.d/mysql start
    Repair tables after unclean shutdown
    mysqlcheck –all-databases
    mysqlcheck –all-databases –fast

    Continue Reading »
    1 Comment