<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9140742944300554542</id><updated>2011-04-21T12:51:33.312-07:00</updated><category term='buah pikiran'/><category term='xml'/><category term='recovery'/><category term='save to msword'/><category term='Deddy Mizwar'/><category term='website develpment'/><category term='review buku'/><category term='coldfusion'/><category term='coldfusion 8'/><category term='opini pribadi'/><category term='film perang'/><category term='berpikir sederhana'/><category term='curhat'/><category term='film Fantastic Four - Rise of the Silver Surfer'/><category term='film indonesia'/><category term='indexing'/><category term='novel Gajah Mada'/><category term='regular expression'/><category term='Best Practices'/><category term='and Programming Guidelines'/><category term='remove html tag'/><category term='sql'/><category term='mssql table size'/><category term='review film'/><category term='budaya nusantara'/><category term='index'/><category term='PTO'/><category term='Hamukti Palapa (3)'/><category term='SQL Server TSQL Coding Conventions'/><category term='sejarah nusantara'/><category term='review'/><category term='sql server 2005'/><category term='film Rambo IV'/><category term='Naga Bonar Jadi Dua'/><category term='kerajaan Majapahit'/><title type='text'>Enlightment People</title><subtitle type='html'>Meniru apa yg dilakukan perusahaan tempat gue bekerja. Misi yg sangat mulia, bekerja sekaligus berbuat sesuatu demi orang banyak. Itulah yg coba saya resapi..</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-2916529615644272883</id><published>2008-08-20T03:46:00.000-07:00</published><updated>2008-08-20T03:47:54.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regular expression'/><category scheme='http://www.blogger.com/atom/ns#' term='remove html tag'/><title type='text'>Menghilangkan Tag HTML dari String</title><content type='html'>REReplaceNoCase(string,"&lt;[^&gt;]*&gt;","","ALL")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-2916529615644272883?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/2916529615644272883/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=2916529615644272883' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/2916529615644272883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/2916529615644272883'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/08/menghilangkan-tag-html-dari-string.html' title='Menghilangkan Tag HTML dari String'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-8631854978893294730</id><published>2008-08-01T11:39:00.000-07:00</published><updated>2008-08-01T11:40:56.636-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><title type='text'>WORKING COLDFUSION 8 AND SQL 2005 XML</title><content type='html'>SELECT Tag, Parent,&lt;br /&gt;&lt;br /&gt;    [Agents!1!],&lt;br /&gt;&lt;br /&gt;    [Agent!2!AgentID],&lt;br /&gt;&lt;br /&gt;    [Agent!2!Fname!Element],&lt;br /&gt;&lt;br /&gt;    [Agent!2!SSN!Element],&lt;br /&gt;&lt;br /&gt;    [AddressCollection!3!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!AddressType!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!Address1!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!Address2!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!City!Element]&lt;br /&gt;&lt;br /&gt;FROM (&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        1 AS Tag,&lt;br /&gt;&lt;br /&gt;        NULL AS Parent,&lt;br /&gt;&lt;br /&gt;        0 AS Sort,&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agents!1!',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agent!2!AgentID',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agent!2!Fname!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agent!2!SSN!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'AddressCollection!3!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!AddressType!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!Address1!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!Address2!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!City!Element'&lt;br /&gt;&lt;br /&gt;    UNION ALL&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        2 AS Tag,&lt;br /&gt;&lt;br /&gt;        1 AS Parent,&lt;br /&gt;&lt;br /&gt;        AgentID * 100,&lt;br /&gt;&lt;br /&gt;        NULL, AgentID, Fname, SSN,&lt;br /&gt;&lt;br /&gt;        NULL,NULL, NULL, NULL, NULL&lt;br /&gt;&lt;br /&gt;        FROM @Agent&lt;br /&gt;&lt;br /&gt;    UNION ALL&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        3 AS Tag,&lt;br /&gt;&lt;br /&gt;        2 AS Parent,&lt;br /&gt;&lt;br /&gt;        AgentID * 100 + 1,&lt;br /&gt;&lt;br /&gt;        NULL,NULL,NULL, NULL,&lt;br /&gt;&lt;br /&gt;        NULL, NULL, NULL, NULL, NULL&lt;br /&gt;&lt;br /&gt;    FROM @Agent&lt;br /&gt;&lt;br /&gt;    UNION ALL&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        4 AS Tag,&lt;br /&gt;&lt;br /&gt;        3 AS Parent,&lt;br /&gt;&lt;br /&gt;        AgentID * 100 + 2,&lt;br /&gt;&lt;br /&gt;        NULL,NULL,NULL,NULL,NULL,&lt;br /&gt;&lt;br /&gt;        AddressType, Address1, Address2, City&lt;br /&gt;&lt;br /&gt;    FROM @Address&lt;br /&gt;&lt;br /&gt;) A&lt;br /&gt;&lt;br /&gt;ORDER BY Sort&lt;br /&gt;&lt;br /&gt;FOR XML EXPLICIT&lt;br /&gt;&lt;br /&gt;Here is the complete listing of the code.&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&lt;br /&gt;Borrowed from Kent's code&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;declare @agent table&lt;br /&gt;&lt;br /&gt;(&lt;br /&gt;&lt;br /&gt;    AgentID int,&lt;br /&gt;&lt;br /&gt;    Fname varchar(5),&lt;br /&gt;&lt;br /&gt;    SSN varchar(11)&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;insert into @agent&lt;br /&gt;&lt;br /&gt;select 1, 'Vimal', '123-23-4521' union all&lt;br /&gt;&lt;br /&gt;select 2, 'Jacob', '321-52-4562' union all&lt;br /&gt;&lt;br /&gt;select 3, 'Tom', '252-52-4563'&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;declare @address table&lt;br /&gt;&lt;br /&gt;(&lt;br /&gt;&lt;br /&gt;    AddressID int,&lt;br /&gt;&lt;br /&gt;    AddressType varchar(12),&lt;br /&gt;&lt;br /&gt;    Address1 varchar(20),&lt;br /&gt;&lt;br /&gt;    Address2 varchar(20),&lt;br /&gt;&lt;br /&gt;    City varchar(25),&lt;br /&gt;&lt;br /&gt;    AgentID int&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;insert into @address&lt;br /&gt;&lt;br /&gt;select 1, 'Home', 'abc', 'xyz road', 'RJ', 1 union all&lt;br /&gt;&lt;br /&gt;select 2, 'Office', 'temp', 'ppp road', 'RJ', 1 union all&lt;br /&gt;&lt;br /&gt;select 3, 'Home', 'xxx', 'aaa road', 'NY', 2 union all&lt;br /&gt;&lt;br /&gt;select 4, 'Office', 'ccc', 'oli Com', 'CL', 2 union all&lt;br /&gt;&lt;br /&gt;select 5, 'Temp', 'eee', 'olkiu road', 'CL', 2 union all&lt;br /&gt;&lt;br /&gt;select 6, 'Home', 'ttt', 'loik road', 'NY', 3&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&lt;br /&gt;End Borrow&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;SELECT Tag, Parent,&lt;br /&gt;&lt;br /&gt;    [Agents!1!],&lt;br /&gt;&lt;br /&gt;    [Agent!2!AgentID],&lt;br /&gt;&lt;br /&gt;    [Agent!2!Fname!Element],&lt;br /&gt;&lt;br /&gt;    [Agent!2!SSN!Element],&lt;br /&gt;&lt;br /&gt;    [AddressCollection!3!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!AddressType!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!Address1!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!Address2!Element],&lt;br /&gt;&lt;br /&gt;    [Address!4!City!Element]&lt;br /&gt;&lt;br /&gt;FROM (&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        1 AS Tag,&lt;br /&gt;&lt;br /&gt;        NULL AS Parent,&lt;br /&gt;&lt;br /&gt;        0 AS Sort,&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agents!1!',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agent!2!AgentID',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agent!2!Fname!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Agent!2!SSN!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'AddressCollection!3!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!AddressType!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!Address1!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!Address2!Element',&lt;br /&gt;&lt;br /&gt;        NULL AS 'Address!4!City!Element'&lt;br /&gt;&lt;br /&gt;    UNION ALL&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        2 AS Tag,&lt;br /&gt;&lt;br /&gt;        1 AS Parent,&lt;br /&gt;&lt;br /&gt;        AgentID * 100,&lt;br /&gt;&lt;br /&gt;        NULL, AgentID, Fname, SSN,&lt;br /&gt;&lt;br /&gt;        NULL,NULL, NULL, NULL, NULL&lt;br /&gt;&lt;br /&gt;        FROM @Agent&lt;br /&gt;&lt;br /&gt;    UNION ALL&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        3 AS Tag,&lt;br /&gt;&lt;br /&gt;        2 AS Parent,&lt;br /&gt;&lt;br /&gt;        AgentID * 100 + 1,&lt;br /&gt;&lt;br /&gt;        NULL,NULL,NULL, NULL,&lt;br /&gt;&lt;br /&gt;        NULL, NULL, NULL, NULL, NULL&lt;br /&gt;&lt;br /&gt;    FROM @Agent&lt;br /&gt;&lt;br /&gt;    UNION ALL&lt;br /&gt;&lt;br /&gt;    SELECT&lt;br /&gt;&lt;br /&gt;        4 AS Tag,&lt;br /&gt;&lt;br /&gt;        3 AS Parent,&lt;br /&gt;&lt;br /&gt;        AgentID * 100 + 2,&lt;br /&gt;&lt;br /&gt;        NULL,NULL,NULL,NULL,NULL,&lt;br /&gt;&lt;br /&gt;        AddressType, Address1, Address2, City&lt;br /&gt;&lt;br /&gt;    FROM @Address&lt;br /&gt;&lt;br /&gt;) A&lt;br /&gt;&lt;br /&gt;ORDER BY Sort&lt;br /&gt;&lt;br /&gt;FOR XML EXPLICIT&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&lt;br /&gt;OUTPUT:&lt;br /&gt;&lt;br /&gt;&lt;Agents&gt;&lt;br /&gt;&lt;br /&gt;    &lt;Agent AgentID="1"&gt;&lt;br /&gt;&lt;br /&gt;        &lt;Fname&gt;Vimal&lt;/Fname&gt;&lt;br /&gt;&lt;br /&gt;        &lt;SSN&gt;123-23-4521&lt;/SSN&gt;&lt;br /&gt;&lt;br /&gt;        &lt;AddressCollection&gt;&lt;br /&gt;&lt;br /&gt;            &lt;Address&gt;&lt;br /&gt;&lt;br /&gt;                &lt;AddressType&gt;Home&lt;/AddressType&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address1&gt;abc&lt;/Address1&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address2&gt;xyz road&lt;/Address2&gt;&lt;br /&gt;&lt;br /&gt;                &lt;City&gt;RJ&lt;/City&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/Address&gt;&lt;br /&gt;&lt;br /&gt;            &lt;Address&gt;&lt;br /&gt;&lt;br /&gt;                &lt;AddressType&gt;Office&lt;/AddressType&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address1&gt;temp&lt;/Address1&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address2&gt;ppp road&lt;/Address2&gt;&lt;br /&gt;&lt;br /&gt;                &lt;City&gt;RJ&lt;/City&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/Address&gt;&lt;br /&gt;&lt;br /&gt;        &lt;/AddressCollection&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/Agent&gt;&lt;br /&gt;&lt;br /&gt;    &lt;Agent AgentID="2"&gt;&lt;br /&gt;&lt;br /&gt;        &lt;Fname&gt;Jacob&lt;/Fname&gt;&lt;br /&gt;&lt;br /&gt;        &lt;SSN&gt;321-52-4562&lt;/SSN&gt;&lt;br /&gt;&lt;br /&gt;        &lt;AddressCollection&gt;&lt;br /&gt;&lt;br /&gt;            &lt;Address&gt;&lt;br /&gt;&lt;br /&gt;                &lt;AddressType&gt;Home&lt;/AddressType&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address1&gt;xxx&lt;/Address1&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address2&gt;aaa road&lt;/Address2&gt;&lt;br /&gt;&lt;br /&gt;                &lt;City&gt;NY&lt;/City&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/Address&gt;&lt;br /&gt;&lt;br /&gt;            &lt;Address&gt;&lt;br /&gt;&lt;br /&gt;                &lt;AddressType&gt;Office&lt;/AddressType&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address1&gt;ccc&lt;/Address1&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address2&gt;oli Com&lt;/Address2&gt;&lt;br /&gt;&lt;br /&gt;                &lt;City&gt;CL&lt;/City&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/Address&gt;&lt;br /&gt;&lt;br /&gt;            &lt;Address&gt;&lt;br /&gt;&lt;br /&gt;                &lt;AddressType&gt;Temp&lt;/AddressType&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address1&gt;eee&lt;/Address1&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address2&gt;olkiu road&lt;/Address2&gt;&lt;br /&gt;&lt;br /&gt;                &lt;City&gt;CL&lt;/City&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/Address&gt;&lt;br /&gt;&lt;br /&gt;        &lt;/AddressCollection&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/Agent&gt;&lt;br /&gt;&lt;br /&gt;    &lt;Agent AgentID="3"&gt;&lt;br /&gt;&lt;br /&gt;        &lt;Fname&gt;Tom&lt;/Fname&gt;&lt;br /&gt;&lt;br /&gt;        &lt;SSN&gt;252-52-4563&lt;/SSN&gt;&lt;br /&gt;&lt;br /&gt;        &lt;AddressCollection&gt;&lt;br /&gt;&lt;br /&gt;            &lt;Address&gt;&lt;br /&gt;&lt;br /&gt;                &lt;AddressType&gt;Home&lt;/AddressType&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address1&gt;ttt&lt;/Address1&gt;&lt;br /&gt;&lt;br /&gt;                &lt;Address2&gt;loik road&lt;/Address2&gt;&lt;br /&gt;&lt;br /&gt;                &lt;City&gt;NY&lt;/City&gt;&lt;br /&gt;&lt;br /&gt;            &lt;/Address&gt;&lt;br /&gt;&lt;br /&gt;        &lt;/AddressCollection&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/Agent&gt;&lt;br /&gt;&lt;br /&gt;&lt;/Agents&gt;&lt;br /&gt;&lt;br /&gt;*/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-8631854978893294730?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/8631854978893294730/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=8631854978893294730' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/8631854978893294730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/8631854978893294730'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/08/working-coldfusion-8-and-sql-2005-xml.html' title='WORKING COLDFUSION 8 AND SQL 2005 XML'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-733819906604239614</id><published>2008-07-13T11:49:00.000-07:00</published><updated>2008-07-13T11:50:24.545-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mssql table size'/><title type='text'>MSSQL Table Size</title><content type='html'>CREATE TABLE #SpaceUsed (name sysname,rows bigint,reserved sysname,data sysname,index_size sysname,unused sysname)&lt;br /&gt;&lt;br /&gt;DECLARE @Counter int &lt;br /&gt;DECLARE @Max int &lt;br /&gt;DECLARE @Table sysname&lt;br /&gt;&lt;br /&gt;SELECT  name, IDENTITY(int,1,1) ROWID &lt;br /&gt;INTO       #TableCollection &lt;br /&gt;FROM    sysobjects &lt;br /&gt;WHERE xtype = 'U' &lt;br /&gt;ORDER BY lower(name) &lt;br /&gt;&lt;br /&gt;SET @Counter = 1 &lt;br /&gt;SET @Max = (SELECT Max(ROWID) FROM #TableCollection) &lt;br /&gt;&lt;br /&gt;WHILE (@Counter &lt;= @Max) &lt;br /&gt;    BEGIN &lt;br /&gt;        SET @Table = (SELECT name FROM #TableCollection WHERE ROWID = @Counter) &lt;br /&gt;        INSERT INTO #SpaceUsed &lt;br /&gt;        EXECUTE sp_spaceused @Table &lt;br /&gt;        SET @Counter = @Counter + 1 &lt;br /&gt;    END&lt;br /&gt;&lt;br /&gt;SELECT * FROM #SpaceUsed &lt;br /&gt;&lt;br /&gt;DROP TABLE #TableCollection &lt;br /&gt;DROP TABLE #SpaceUsed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-733819906604239614?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/733819906604239614/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=733819906604239614' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/733819906604239614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/733819906604239614'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/07/mssql-table-size.html' title='MSSQL Table Size'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-3840888868739930752</id><published>2008-06-18T01:24:00.000-07:00</published><updated>2008-06-18T02:29:31.069-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='PTO'/><title type='text'>SQL SERVER 2005 WORKSHOP (DAY 3)</title><content type='html'>TOOLS&lt;br /&gt;- PSSDIAG OR SQLDIAG&lt;br /&gt;  capturing entire proses among the database server&lt;br /&gt;&lt;br /&gt;- Installation Tips&lt;br /&gt;  change Computer properties and adjust processor usage for optimizing background &lt;br /&gt;  process, and adjust memmory usage for application&lt;br /&gt;- Performance Monitor&lt;br /&gt;  set to capture SQL Server Performance, not less than 4/sec cuz in influence the &lt;br /&gt;  server performance&lt;br /&gt;&lt;br /&gt;  * Buffer Cache: shoulbe graeter than 90% cuz indicate number of page in cache&lt;br /&gt;  * Totap Pages: low number indicate frequent disk I/O or thrashing. &lt;br /&gt;    add more memory&lt;br /&gt;  * Total Server Memory: if high than physical memory and consistant, &lt;br /&gt;    add more memory&lt;br /&gt;- Physical Disk Counters&lt;br /&gt;  * Avg Disk Queue Length: monitor number of read/write that queued, &lt;br /&gt;    shoul be no more than 2 times of spindels&lt;br /&gt;  * Disk/sec Read: &lt;8ms&lt;br /&gt;  * Disk/sec Write: &lt;8ms (non cached), &lt;1ms (cached)&lt;br /&gt;- CPU Counters&lt;br /&gt;  * %Processor Time: should be less than 90%&lt;br /&gt;  * Contex Switches/sec: monitoring the processor switch among threads&lt;br /&gt;  * Processor Queue Length: number of thread waiting for processor time. shoul be 0&lt;br /&gt;  * %Privilleged Time: berapa besar waktu yg dibutuhkan untuk melakukan process &lt;br /&gt;    kernel. kalo tinggi kemungkinan ada masalah di I/O&lt;br /&gt;  * %User Time: kalo tinggi berarti kemungkinan ada proses blocking yg lama.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Newer Tool&lt;br /&gt;- SQL Nexus http://sqlnexus.net, used for analyzing data from SQLDiag&lt;br /&gt;- Performance Analysis of Logs (PAL, http://codeplex.com/PAL)&lt;br /&gt;- SQL Performance Dashboard (http://microsoft.com)&lt;br /&gt;  Integrated management report for toubleshooting performance&lt;br /&gt;- SQL Server 2005 Best Practice Analyzer (PAL) from microsoft.com&lt;br /&gt;  Detect issues which do not comply with best practice&lt;br /&gt;  Detect missing patches, error in event logs and error logs&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-3840888868739930752?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/3840888868739930752/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=3840888868739930752' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3840888868739930752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3840888868739930752'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/06/sql-server-2005-workshop-day-3.html' title='SQL SERVER 2005 WORKSHOP (DAY 3)'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-654087937189490116</id><published>2008-06-17T00:56:00.000-07:00</published><updated>2008-06-17T00:59:01.907-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='and Programming Guidelines'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server TSQL Coding Conventions'/><title type='text'>SQL Server TSQL Coding Conventions, Best Practices, and Programming Guidelines</title><content type='html'>By : Vyas Kondreddi&lt;br /&gt;May 10, 2001 Printer friendly  &lt;br /&gt;&lt;br /&gt;Databases are the heart and soul of many enterprise applications, and it is very essential to pay special attention to database programming. I've seen in many occasions where database programming is overlooked, thinking that it's something easy that be done by anyone. This is wrong.&lt;br /&gt;&lt;br /&gt;For a better performing database you need a real DBA and a specialist database programmer, let it be for Microsoft SQL Server, Oracle, Sybase, DB2 or whatever! If you don't use database specialists during your development cycle, databases often end up becoming the performance bottleneck. I decided to write this article in order to put together some of the database programming best practices so that my fellow DBAs and database developers can benefit!&lt;br /&gt;&lt;br /&gt;Here are some programming guidelines and best practices, keeping quality, performance and maintainability in mind. This list many not be complete at this moment, and will be constantly updated. BTW, special thanks to Tibor Karaszi (SQL Server MVP) and Linda (lindawie) for taking time to read this article and providing suggestions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Decide upon a database naming convention, standardize it across your organization, and be consistent in following it. It helps make your code more readable and understandable. Click here to see the database object naming convention that I follow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Make sure you normalize your data at least to the 3rd normal form. At the same time, do not compromise on query performance. A little bit of denormalization helps queries perform faster.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Write comments in your stored procedures, triggers and SQL batches generously, whenever something is not very obvious. This helps other programmers understand your code clearly. Don't worry about the length of the comments, as it won't impact the performance, unlike interpreted languages like ASP 2.0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do not use SELECT * in your queries. Always write the required column names after the SELECT statement, like: &lt;br /&gt;SELECT CustomerID, CustomerFirstName, City&lt;br /&gt;&lt;br /&gt;This technique results in reduced disk I/O and better performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Try to avoid server side cursors as much as possible. Always stick to a 'set-based approach' instead of a 'procedural approach' for accessing and manipulating data. Cursors can often be avoided by using SELECT statements instead. &lt;br /&gt;If a cursor is unavoidable, use a WHILE loop instead. I have personally tested and concluded that a WHILE loop is always faster than a cursor. But for a WHILE loop to replace a cursor you need a column (primary key or unique key) to identify each row uniquely. I personally believe every table must have a primary or unique key. Click here to see some examples of using a WHILE loop.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Avoid the creation of temporary tables while processing data as much as possible, as creating a temporary table means more disk I/O. Consider using advanced SQL, views, SQL Server 2000 table variable, or derived tables, instead of temporary tables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Try to avoid wildcard characters at the beginning of a word while searching using the LIKE keyword, as that results in an index scan, which defeats the purpose of an index. The following statement results in an index scan, while the second statement results in an index seek:&lt;br /&gt;&lt;br /&gt;SELECT LocationID FROM Locations WHERE Specialities LIKE '%pples'&lt;br /&gt;SELECT LocationID FROM Locations WHERE Specialities LIKE 'A%s' &lt;br /&gt;&lt;br /&gt;Also avoid searching using not equals operators (&lt;&gt; and NOT) as they result in table and index scans.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use 'Derived tables' wherever possible, as they perform better. Consider the following query to find the second highest salary from the Employees table:&lt;br /&gt;&lt;br /&gt;SELECT MIN(Salary) &lt;br /&gt;FROM Employees &lt;br /&gt;WHERE EmpID IN&lt;br /&gt;(&lt;br /&gt;SELECT TOP 2 EmpID &lt;br /&gt;FROM Employees &lt;br /&gt;ORDER BY Salary Desc&lt;br /&gt;) &lt;br /&gt;&lt;br /&gt;The same query can be re-written using a derived table, as shown below, and it performs twice as fast as the above query:&lt;br /&gt;&lt;br /&gt;SELECT MIN(Salary) &lt;br /&gt;FROM &lt;br /&gt;(&lt;br /&gt;SELECT TOP 2 Salary &lt;br /&gt;FROM Employees &lt;br /&gt;ORDER BY Salary DESC&lt;br /&gt;) AS A &lt;br /&gt;&lt;br /&gt;This is just an example, and your results might differ in different scenarios depending on the database design, indexes, volume of data, etc. So, test all the possible ways a query could be written and go with the most efficient one.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While designing your database, design it keeping "performance" in mind. You can't really tune performance later, when your database is in production, as it involves rebuilding tables andindexes, re-writing queries, etc. Use the graphical execution plan in Query Analyzer or SHOWPLAN_TEXT or SHOWPLAN_ALL commands to analyze your queries. Make sure your queries do an "Index seek" instead of an "Index scan" or a "Table scan." A table scan or an index scan is a very bad thing and should be avoided where possible. Choose the right indexes on the right columns.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Prefix the table names with the owner's name, as this improves readability and avoids any unnecessary confusion. Microsoft SQL Server Books Online even states that qualifying table names with owner names helps in execution plan reuse, further boosting performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use SET NOCOUNT ON at the beginning of your SQL batches, stored procedures and triggers in production environments, as this suppresses messages like '(1 row(s) affected)' after executing INSERT, UPDATE, DELETE and SELECT statements. This improves the performance of stored procedures by reducing network traffic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use the more readable ANSI-Standard Join clauses instead of the old style joins. With ANSI joins, the WHERE clause is used only for filtering data. Where as with older style joins, the WHERE clause handles both the join condition and filtering data. The first of the following two queries shows the old style join, while the second one shows the new ANSI join syntax:&lt;br /&gt;&lt;br /&gt;SELECT a.au_id, t.title &lt;br /&gt;FROM titles t, authors a, titleauthor ta&lt;br /&gt;WHERE &lt;br /&gt;a.au_id = ta.au_id AND&lt;br /&gt;ta.title_id = t.title_id AND &lt;br /&gt;t.title LIKE '%Computer%'&lt;br /&gt;&lt;br /&gt;SELECT a.au_id, t.title&lt;br /&gt;FROM authors a &lt;br /&gt;INNER JOIN&lt;br /&gt;titleauthor ta &lt;br /&gt;ON &lt;br /&gt;a.au_id = ta.au_id&lt;br /&gt;INNER JOIN&lt;br /&gt;titles t&lt;br /&gt;ON&lt;br /&gt;ta.title_id = t.title_id&lt;br /&gt;WHERE t.title LIKE '%Computer%'&lt;br /&gt;&lt;br /&gt;Do not prefix your stored procedure names with "sp_". The prefix sp_ is reserved for system stored procedure that ship with SQL Server. Whenever SQL Server encounters a procedure name starting with sp_, it first tries to locate the procedure in the master database, then it looks for any qualifiers (database, owner) provided, then it tries dbo as the owner. So you can really save time in locating the stored procedure by avoiding the "sp_" prefix.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Views are generally used to show specific data to specific users based on their interest. Views are also used to restrict access to the base tables by granting permission only on views. Yet another significant use of views is that they simplify your queries. Incorporate your frequently required, complicated joins and calculations into a view so that you don't have to repeat those joins/calculations in all your queries. Instead, just select from the view.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use User Defined Datatypes if a particular column repeats in a lot of your tables, so that the datatype of that column is consistent across all your tables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do not let your front-end applications query/manipulate the data directly using SELECT or INSERT/UPDATE/DELETE statements. Instead, create stored procedures, and let your applications access these stored procedures. This keeps the data access clean and consistent across all the modules of your application, and at the same time centralizing the business logic within the database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Try not to use TEXT or NTEXT datatypes for storing large textual data. The TEXT datatype has some inherent problems associated with it. For example, you cannot directly write or update text data using the INSERT or UPDATE statements. Instead,  you have to use special statements like READTEXT, WRITETEXT and UPDATETEXT. There are also a lot of bugs associated with replicating tables containing text columns. So, if you don't have to store more than 8KB of text, use CHAR(8000) or VARCHAR(8000) datatypes instead.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have a choice, do not store binary or image files (Binary Large Objects or BLOBs) inside the database. Instead, store the path to the binary or image file in the database and use that as a pointer to the actual binary file stored elsewhere on a server. Retrieving and manipulating these large binary files is better performed outside the database, and after all, a database is not meant for storing files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use the CHAR data type for a column only when the column is non-nullable. If a CHAR column is nullable, it is treated as a fixed length column in SQL Server 7.0+. So, a CHAR(100), when NULL, will eat up 100 bytes, resulting in space wastage. So, use VARCHAR(100) in this situation. Of course, variable length columns do have a very little processing overhead over fixed length columns. Carefully choose between CHAR and VARCHAR depending up on the length of the data you are going to store.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Avoid dynamic SQL statements as much as possible. Dynamic SQL tends to be slower than static SQL, as SQL Server must generate an execution plan every time at runtime. IF and CASE statements come in handy to avoid dynamic SQL. Another major disadvantage of using dynamic SQL is that it requires users to have direct access permissions on all accessed objects, like tables and views. Generally, users are given access to the stored procedures which reference the tables, but not directly on the tables. In this case, dynamic SQL will not work. Consider the following scenario where a user named 'dSQLuser' is added to the pubs database and is granted access to a procedure named 'dSQLproc', but not on any other tables in the pubs database. The procedure dSQLproc executes a direct SELECT on titles table and that works. The second statement runs the same SELECT on titles table, using dynamic SQL and it fails with the following error:&lt;br /&gt;&lt;br /&gt;Server: Msg 229, Level 14, State 5, Line 1&lt;br /&gt;SELECT permission denied on object 'titles', database 'pubs', owner 'dbo'. &lt;br /&gt;&lt;br /&gt;To reproduce the above problem, use the following commands:&lt;br /&gt;&lt;br /&gt;sp_addlogin 'dSQLuser'&lt;br /&gt;GO&lt;br /&gt;sp_defaultdb 'dSQLuser', 'pubs'&lt;br /&gt;USE pubs&lt;br /&gt;GO&lt;br /&gt;sp_adduser 'dSQLUser', 'dSQLUser'&lt;br /&gt;GO&lt;br /&gt;CREATE PROC dSQLProc&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;SELECT * FROM titles WHERE title_id = 'BU1032' --This works&lt;br /&gt;DECLARE @str CHAR(100)&lt;br /&gt;SET @str = 'SELECT * FROM titles WHERE title_id = ''BU1032'''&lt;br /&gt;EXEC (@str) --This fails&lt;br /&gt;END&lt;br /&gt;GO&lt;br /&gt;GRANT EXEC ON dSQLProc TO dSQLuser&lt;br /&gt;GO &lt;br /&gt;&lt;br /&gt;Now login to the pubs database using the login dSQLuser and execute the procedure dSQLproc to see the problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Consider the following drawbacks before using the IDENTITY property for generating primary keys. IDENTITY is very much SQL Server specific, and you will have problems porting your database application to some other RDBMS. IDENTITY columns have other inherent problems. For example, IDENTITY columns can run out of numbers at some point, depending on the data type selected; numbers can't be reused automatically, after deleting rows; and replication and IDENTITY columns don't always get along well. &lt;br /&gt;So, come up with an algorithm to generate a primary key in the front-end or from within the inserting stored procedure. There still could be issues with generating your own primary keys too, like concurrency while generating the key, or running out of values. So, consider both options and go with the one that suits you best.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Minimize the use of NULLs, as they often confuse the front-end applications, unless the applications are coded intelligently to eliminate NULLs or convert the NULLs into some other form. Any expression that deals with NULL results in a NULL output. ISNULL and COALESCE functions are helpful in dealing with NULL values. Here's an example that explains the problem:&lt;br /&gt;&lt;br /&gt;Consider the following table, Customers which stores the names of the customers and the middle name can be NULL.&lt;br /&gt;&lt;br /&gt;CREATE TABLE Customers&lt;br /&gt;(&lt;br /&gt;FirstName varchar(20),&lt;br /&gt;MiddleName varchar(20),&lt;br /&gt;LastName varchar(20)&lt;br /&gt;) &lt;br /&gt;&lt;br /&gt;Now insert a customer into the table whose name is Tony Blair, without a middle name:&lt;br /&gt;&lt;br /&gt;INSERT INTO Customers &lt;br /&gt;(FirstName, MiddleName, LastName) &lt;br /&gt;VALUES ('Tony',NULL,'Blair')&lt;br /&gt;&lt;br /&gt;The following SELECT statement returns NULL, instead of the customer name:&lt;br /&gt;&lt;br /&gt;SELECT FirstName + ' ' + MiddleName + ' ' + LastName FROM Customers&lt;br /&gt;&lt;br /&gt;To avoid this problem, use ISNULL as shown below:&lt;br /&gt;&lt;br /&gt;SELECT FirstName + ' ' + ISNULL(MiddleName + ' ','') + LastName FROM Customers&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use Unicode datatypes, like NCHAR, NVARCHAR, or NTEXT, if your database is going to store not just plain English characters, but a variety of characters used all over the world. Use these datatypes only when they are absolutely needed as they use twice as much space as non-Unicode datatypes.&lt;br /&gt;Always use a column list in your INSERT statements. This helps in avoiding problems when the table structure changes (like adding or dropping a column). Here's an example which shows the problem.&lt;br /&gt;&lt;br /&gt;Consider the following table:&lt;br /&gt;&lt;br /&gt;CREATE TABLE EuropeanCountries&lt;br /&gt;(&lt;br /&gt;CountryID int PRIMARY KEY,&lt;br /&gt;CountryName varchar(25)&lt;br /&gt;) &lt;br /&gt;&lt;br /&gt;Here's an INSERT statement without a column list , that works perfectly:&lt;br /&gt;&lt;br /&gt;INSERT INTO EuropeanCountries&lt;br /&gt;VALUES (1, 'Ireland') &lt;br /&gt;&lt;br /&gt;Now, let's add a new column to this table:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ALTER TABLE EuropeanCountries&lt;br /&gt;ADD EuroSupport bit &lt;br /&gt;&lt;br /&gt;Now run the above INSERT statement. You get the following error from SQL Server:&lt;br /&gt;&lt;br /&gt;Server: Msg 213, Level 16, State 4, Line 1&lt;br /&gt;Insert Error: Column name or number of supplied values does not match table definition. &lt;br /&gt;&lt;br /&gt;This problem can be avoided by writing an INSERT statement with a column list as shown below:&lt;br /&gt;&lt;br /&gt;INSERT INTO EuropeanCountries&lt;br /&gt;(CountryID, CountryName)&lt;br /&gt;VALUES (1, 'England')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Perform all your referential integrity checks and data validations using constraints (foreign key and check constraints) instead of triggers, as they are faster. Limit the use triggers only for auditing, custom tasks and validations that can not be performed using constraints. Constraints save you time as well, as you don't have to write code for these validations, allowing the RDBMS to do all the work for you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Always access tables in the same order in all your stored procedures and triggers consistently. This helps in avoiding deadlocks. Other things to keep in mind to avoid deadlocks are: Keep your transactions as short as possible. Touch as few data as possible during a transaction. Never, ever wait for user input in the middle of a transaction. Do not use higher level locking hints or restrictive isolation levels unless they are absolutely needed. Make your front-end applications deadlock-intelligent, that is, these applications should be able to resubmit the transaction incase the previous transaction fails with error 1205. In your applications, process all the results returned by SQL Server immediately so that the locks on the processed rows are released, hence no blocking.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Offload tasks, like string manipulations, concatenations, row numbering, case conversions, type conversions etc., to the front-end applications if these operations are going to consume more CPU cycles on the database server. Also try to do basic validations in the front-end itself during data entry. This saves unnecessary network roundtrips.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If back-end portability is your concern, stay away from bit manipulations with T-SQL, as this is very much RDBMS specific. Further, using bitmaps to represent different states of a particular entity conflicts with normalization rules.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Always add a @Debug parameter to your stored procedures. This can be of BIT data type. When a 1 is passed for this parameter, print all the intermediate results, variable contents using SELECT or PRINT statements and when 0 is passed do not print anything. This helps in quick debugging stored procedures, as you don't have to add and remove these PRINT/SELECT statements before and after troubleshooting problems.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do not call functions repeatedly within your stored procedures, triggers, functions and batches. For example, you might need the length of a string variable in many places of your procedure, but don't call the LEN function whenever it's needed, instead, call the LEN function once, and store the result in a variable, for later use.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Make sure your stored procedures always return a value indicating their status. Standardize on the return values of stored procedures for success and failures. The RETURN statement is meant for returning the execution status only, but not data. If you need to return data, use OUTPUT parameters.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If your stored procedure always returns a single row resultset, consider returning the resultset using OUTPUT parameters instead of a SELECT statement, as ADO handles output parameters faster than resultsets returned by SELECT statements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Always check the global variable @@ERROR immediately after executing a data manipulation statement (like INSERT/UPDATE/DELETE), so that you can rollback the transaction in case of an error (@@ERROR will be greater than 0 in case of an error). This is important, because, by default, SQL Server will not rollback all the previous changes within a transaction if a particular statement fails. This behavior can be changed by executing SET XACT_ABORT ON. The @@ROWCOUNT variable also plays an important role in determining how many rows were affected by a previous data manipulation (also, retrieval) statement, and based on that you could choose to commit or rollback a particular transaction.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To make SQL Statements more readable, start each clause on a new line and indent when needed. Following is an example:&lt;br /&gt;&lt;br /&gt;SELECT title_id, title&lt;br /&gt;FROM titles&lt;br /&gt;WHERE title LIKE '%Computer%' AND&lt;br /&gt;      title LIKE '%cook%'&lt;br /&gt;Though we survived the Y2K, always store 4 digit years in dates (especially, when using cCHAR or INT datatype columns), instead of 2 digit years to avoid any confusion and problems. This is not a problem with DATETIME columns, as the century is stored even if you specify a 2 digit year. But it's always a good practice to specify 4 digit years even with DATETIME datatype columns. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As is true with any other programming language, do not use GOTO, or use it sparingly. Excessive usage of GOTO can lead to hard-to-read-and-understand code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do not forget to enforce unique constraints on your alternate keys.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Always be consistent with the usage of case in your code. On a case insensitive server, your code might work fine, but it will fail on a case sensitive SQL Server if your code is not consistent in case. For example, if you create a table in SQL Server or a database that has a case-sensitive or binary sort order, all references to the table must use the same case that was specified in the CREATE TABLE statement. If you name the table as 'MyTable' in the CREATE TABLE statement and use 'mytable' in the SELECT statement, you get an 'object not found' error.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Though T-SQL has no concept of constants (like the ones in the C language), variables can serve the same purpose. Using variables instead of constant values within your queries improves readability and maintainability of your code. Consider the following example: &lt;br /&gt;&lt;br /&gt;SELECT OrderID, OrderDate&lt;br /&gt;FROM Orders&lt;br /&gt;WHERE OrderStatus IN (5,6) &lt;br /&gt;&lt;br /&gt;The same query can be re-written in a mode readable form as shown below:&lt;br /&gt;&lt;br /&gt;DECLARE @ORDER_DELIVERED, @ORDER_PENDING&lt;br /&gt;SELECT @ORDER_DELIVERED = 5, @ORDER_PENDING = 6&lt;br /&gt;&lt;br /&gt;SELECT OrderID, OrderDate&lt;br /&gt;FROM Orders&lt;br /&gt;WHERE OrderStatus IN (@ORDER_DELIVERED, @ORDER_PENDING)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do not use column numbers in the ORDER BY clause. Consider the following example in which the second query is more readable than the first one:&lt;br /&gt;&lt;br /&gt;SELECT OrderID, OrderDate&lt;br /&gt;FROM Orders&lt;br /&gt;ORDER BY 2&lt;br /&gt;&lt;br /&gt;SELECT OrderID, OrderDate&lt;br /&gt;FROM Orders&lt;br /&gt;ORDER BY OrderDate &lt;br /&gt;&lt;br /&gt;Well, this is all for now folks. I'll keep updating this page as and when I have something new to add. I welcome your feedback on this, so feel free to email me. Happy database programming!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-654087937189490116?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/654087937189490116/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=654087937189490116' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/654087937189490116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/654087937189490116'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/06/sql-server-tsql-coding-conventions-best.html' title='SQL Server TSQL Coding Conventions, Best Practices, and Programming Guidelines'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-6553184203413778486</id><published>2008-06-16T19:40:00.000-07:00</published><updated>2008-06-18T02:26:14.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indexing'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='index'/><category scheme='http://www.blogger.com/atom/ns#' term='recovery'/><title type='text'>SQL SERVER 2005 WORKSHOP (DAY 2)</title><content type='html'>SQL PROFILER&lt;br /&gt;- Deadlock handle. kondisi dimana terjadi saling tunggu antar dua proses.&lt;br /&gt;&lt;br /&gt;How data stored in MSSQL SERVER 2005&lt;br /&gt;- Data tersimpan dalam Page = 8KB.&lt;br /&gt;- Extend = 8 Page, dedicated (one data), dynamic (many data) = 64KB&lt;br /&gt;- HIP = unindexed table, index id = 0&lt;br /&gt;- Const Varchar, if updated, kekurangan size, maka akan dipindah ke page yg kosong.&lt;br /&gt;&lt;br /&gt;INDEXED&lt;br /&gt;- Clustered Index, index dimana level terbawah dari leaf itu adalah data itu sendiri&lt;br /&gt;  Sifat:&lt;br /&gt;        - data stored berurutan.&lt;br /&gt;        - sebaiknya untuk kolom yg tidak sering diupdate&lt;br /&gt;        - hanya boleh ada satu clustered index dalam satu table&lt;br /&gt;- Non-Clustered Index&lt;br /&gt;  def: - sama sama menggunakan B-TREE&lt;br /&gt;       - sebaiknya gunakan untuk kolom yg sering digunakan untuk join&lt;br /&gt;       - kolom dengan data yg besar, dan sebisa mungkin jarang update&lt;br /&gt;- Unique Index, contstraint cant be duplicated data&lt;br /&gt;- Index include column, artinya index menyertakan sebuah kolom lain, &lt;br /&gt;  misal NIK dan nama customer&lt;br /&gt;&lt;br /&gt;- Full-Text, managed index by service MSFTESQL, can be populate, &lt;br /&gt;  used to search based on phrase&lt;br /&gt;- XML Index, indexing XML data&lt;br /&gt;&lt;br /&gt;REINDEXING TASK use: DBCC REINDEX (SQL2000) ALTER INDEX (SQL2005)&lt;br /&gt;- command Alter Index Reorganize (shorter but noy optimal)&lt;br /&gt;- command Alter Index Rebuilt (take longer but better)&lt;br /&gt;&lt;br /&gt;RECOVERY MODEL&lt;br /&gt;- Simple: setiap transaksi, transaction log langsung di truncate setelah commit. &lt;br /&gt;  Tidak bisa melakukan Recovery model Log. &lt;br /&gt;  pros:Minimize Log file size. &lt;br /&gt;  const: bila disaster, hanya bisa balikin backup dari backup terakhir. &lt;br /&gt;  usage: for data tidak penting&lt;br /&gt;- Full: setiap transaksi dicatat di transaksi log, tanpa truncate transaction log. &lt;br /&gt;  transaction log baru di truncate sampai dilakukan full backup&lt;br /&gt;  harus direstore dalam waktu berurutan&lt;br /&gt;- Bulk Log: transaksi biasa di log, bulk insert tidak di log. Menjembatani antara &lt;br /&gt;  Full dan Simple Recovery&lt;br /&gt;&lt;br /&gt;  backup data vs backup transaction log means: &lt;br /&gt;  backup data is backuping data (physic), &lt;br /&gt;  backup transaction log mean backup command (DML) smaller size, &lt;br /&gt;         harus ada Fullbackup.&lt;br /&gt;&lt;br /&gt;Recover master Database:&lt;br /&gt;- Use CD Installer, run Setup.exe choose option rebuild master database RebuildM.exe&lt;br /&gt;- Master, MSDb, TempDB, Model, MssqlResources are system database: If only master database exist, restart service with -M Statement&lt;br /&gt;&lt;br /&gt;B-TREE = pemisahan data kedalam tree, misal besar di tree kanan, kecil di tree kiri&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Database SNAPSHOT &lt;br /&gt;adalah replica dari sebuah database yg bersifat readonly. tujuannya untuk menghindari akases langsung ke database aslinya.&lt;br /&gt;Pada saat Database Mirrorring, Destination Database biasanya readonly, nah agar tetap dapat digunakan bisa dibuatkan sebuah Snapshot&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-6553184203413778486?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/6553184203413778486/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=6553184203413778486' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/6553184203413778486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/6553184203413778486'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/06/sql-server-2005-workshop-day-2.html' title='SQL SERVER 2005 WORKSHOP (DAY 2)'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-3232015602952720321</id><published>2008-06-16T02:02:00.000-07:00</published><updated>2008-06-16T02:08:24.736-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2005'/><title type='text'>SQL SERVER 2005 WORKSHOP (DAY 1)</title><content type='html'>System database&lt;br /&gt; Master, Model, MsDB&lt;br /&gt;&lt;br /&gt;SQLNEXUS, MBSA (Microsoft Based Security Analyzer)&lt;br /&gt;Local Service user must be a normal user type, not as local system (administrator)&lt;br /&gt;RebuiltAmp --&gt; corrupt Master database lalu recovery system database - 2000&lt;br /&gt;Install - Rebuilt System database, restore System database pada sql 2005&lt;br /&gt;&lt;br /&gt;Maintenance Plan:&lt;br /&gt;DB Backup (FULL, PARTIAL, DEFFERENTIAL)&lt;br /&gt;Integrity Backup (execute DBCC checkdb)&lt;br /&gt;Sebelum backup: integrity check, index defrag, update statistic&lt;br /&gt;&lt;br /&gt;Common Problem and Issues&lt;br /&gt;Raid 0 = striping (fast), cons fault tolerance&lt;br /&gt;Rain 1 = pro fault tolerance, best practice for OS, or transaction log (ldf)&lt;br /&gt;1 + 0 = best practice for Data Storage&lt;br /&gt;Raid 5 = Parity, cons write time longer cuz write to much disk&lt;br /&gt;&lt;br /&gt;Best Practice Building Database Server:&lt;br /&gt;OS, LOG, DATA dipisah. Log write sequences, Data random read or write&lt;br /&gt;&lt;br /&gt;CONFIG:&lt;br /&gt;/PAE (Page Address Extension) expand memory until 16 GB (agar OS 32bit bisa extend memory)&lt;br /&gt;/3GP /USERVA3030 (alokasi memory kernel 1 GB, EPP 3 GB)&lt;br /&gt;/AWE (Address Windows Extension) untuk menseting OS agar SQL server bisa pake Memory &gt; 4GB&lt;br /&gt;&lt;br /&gt;SQL SERVER CONFIGURATION&lt;br /&gt;ALIAS : untuk membuat virtual name dari sebuah server&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-3232015602952720321?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/3232015602952720321/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=3232015602952720321' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3232015602952720321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3232015602952720321'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/06/sql-server-2005-workshop-day-1.html' title='SQL SERVER 2005 WORKSHOP (DAY 1)'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-3484152479820424424</id><published>2008-05-13T23:27:00.000-07:00</published><updated>2008-05-13T23:32:33.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='save to msword'/><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion 8'/><title type='text'>Save A WEB Page to MS WORD APP</title><content type='html'>&lt;cftry&gt;   &lt;br /&gt;&lt;!--- If it exists, connect to it ---&gt;   &lt;br /&gt;&lt;CFOBJECT        &lt;br /&gt;       ACTION="CONNECT"&lt;br /&gt;      CLASS="Word.Application"        &lt;br /&gt;      NAME="objWord"&lt;br /&gt;      TYPE="COM"&gt; &lt;br /&gt;&lt;cfcatch&gt;   &lt;br /&gt;&lt;!--- The object doesn't exist, so create it ---&gt;   &lt;br /&gt;&lt;CFOBJECT        &lt;br /&gt;       ACTION="CREATE"&lt;br /&gt;      CLASS="Word.Application"&lt;br /&gt;      NAME="objWord"&lt;br /&gt;      TYPE="COM"&gt;  &lt;br /&gt;&lt;/cfcatch&gt;&lt;br /&gt;&lt;/cftry&gt;&lt;br /&gt;&lt;br /&gt;&lt;cfscript&gt; &lt;br /&gt;/* This will open Word if running locally */   &lt;br /&gt;objWord.Visible = true;       &lt;br /&gt;/* This returns the 'Documents' collection the Word Object */   &lt;br /&gt;objDoc = objWord.Documents;       &lt;br /&gt;/* Create a new document */   &lt;br /&gt;newDoc = objDoc.Add();       &lt;br /&gt;/* Save the document to a location */   &lt;br /&gt;newDoc.SaveAs("D:\template_new.doc");       &lt;br /&gt;/* We specify the range of '0' -- start at the beginning of the document */   &lt;br /&gt;docRange = newDoc.Range(0);       &lt;br /&gt;/* Add text to the range */   &lt;br /&gt;docRange.Text = "Hello World!";      &lt;br /&gt;/* Save the changes */   &lt;br /&gt;newDoc.Save();       &lt;br /&gt;/* Close the document */   &lt;br /&gt;newDoc.Close();       &lt;br /&gt;/* Quit Word */   &lt;br /&gt;objWord.Quit();&lt;br /&gt;&lt;/cfscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-3484152479820424424?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/3484152479820424424/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=3484152479820424424' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3484152479820424424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3484152479820424424'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/05/save-web-page-to-ms-word-app.html' title='Save A WEB Page to MS WORD APP'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-5399009655565826063</id><published>2008-03-03T22:29:00.000-08:00</published><updated>2008-03-03T22:52:19.498-08:00</updated><title type='text'>Check Disk Space</title><content type='html'>&lt;table bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td colspan="2"&gt;&lt;a href="http://www.blogger.com/index.cfm/fuseaction/memberdetail/member/15.htm"&gt;&lt;br /&gt;By  Bjorn Jensen&lt;br /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td width="10"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td valign="top"&gt;&lt;br /&gt;&lt;br /&gt;http://www.developer.be/index.cfm/fuseaction/tutorialDetail/GroupID/63/tutorialName/Checking_Diskspace.htm&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-5399009655565826063?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/5399009655565826063/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=5399009655565826063' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/5399009655565826063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/5399009655565826063'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/03/by-bjorn-jensen-getting-information.html' title='Check Disk Space'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-5965693955186088260</id><published>2008-02-15T12:50:00.001-08:00</published><updated>2008-02-15T12:57:19.615-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion 8'/><title type='text'>What is the ID for the record I just inserted?</title><content type='html'>by: Pablo Varando&lt;br /&gt;&lt;br /&gt;What is my ID for the record I just inserted?&lt;br /&gt;&lt;br /&gt;A question I get quite often from visitors and members of EasyCFM.COM is "if I insert a record, is there a way I can get the ID of the record I just inserted, without having to connect to the database again?"&lt;br /&gt;&lt;br /&gt;The answer of course is yes ;) first let me explain how your database structure would look for this example (keep in mind that this is a small example and your table will be different, all you need for this example to work properly is an IDENTITY FIELD in your SQL server. If you need help setting up an identity field, please post a request to the forums [I will be writing a tutorial on this at a later time and will update this page with the link at a latter time... for now please use the forums ;] ...) Now, lets look at the database itself,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cfquery name="qGetUser" datasource="MyDSN"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO users (firstName, lastName, email )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;VALUES ( '#FORM.LastName#', '#FORM.LastName#', '#FORM.email#' );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cfquery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;select thisID = @@identity&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The ID of the item just inserted is: &lt;span style="font-family:courier new;"&gt;#qGetUser.thisID#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That more or less does it :) Let me explain what it is you saw and what it does....&lt;br /&gt;&lt;br /&gt;First you do an insert (as you would any other insert) with the difference that you add a ";" at the end of it. (Notice it in bold). The next thing you did was SELECT thisID = @@identity.... this works similar to a regular SELECT statement... but it basically just returns the ID of the item just inserted to the database!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-5965693955186088260?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/5965693955186088260/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=5965693955186088260' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/5965693955186088260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/5965693955186088260'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/02/what-is-id-for-record-i-just-inserted.html' title='What is the ID for the record I just inserted?'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-5448421457626916412</id><published>2008-02-15T07:49:00.000-08:00</published><updated>2008-02-21T06:17:28.734-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion 8'/><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;" class="topic"&gt;Server Monitor API In Coldfusion 8&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.ientrymail.com/authors/raymondcamden.gif" align="left" /&gt; &lt;span class="text"&gt;By &lt;strong&gt;&lt;a href="mailto:ray@camdenfamily.com"&gt;Raymond Camden&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Expert Author&lt;br /&gt;Article Date: 2007-06-25&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;In an &lt;a href="http://www.coldfusionjedi.com/index.cfm/2007/6/7/ColdFusion-8-Admin-API-and-Trusted-Cache" class="bluelink"&gt;earlier post&lt;/a&gt; I talked a bit about how the Admin API has been updated in ColdFusion 8. For folks who don't know what this is - it is a way to get into the internals of ColdFusion directly from CFML.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It requires the ColdFusion Admin password, which may be a negative for some, but if you have access to it, you can do quite a bit. As an example, I could build an installer for BlogCFC that would prompt the user for the CF Admin password and then handle creating the datasource for you.&lt;br /&gt;&lt;br /&gt;So it's cool. We know that. But how cool is it in ColdFusion 8?&lt;br /&gt;&lt;br /&gt;Well you know that server monitor that ships with the product? If you haven't seen it, you need to spend some time with it. I spent 5 minutes running it with BlogCFC and saw immediate, serious performance issues I was able to correct. 5 minutes to improve my application in a dramatic way is worth the cost of ColdFusion 8 right there. But did you know that 100% of what you see in the Flex application is available to you via code?&lt;br /&gt;&lt;br /&gt;Added to the Admin API is a new CFC, the Server Monitoring CFC. This CFC gives you access to everything you see in the Flex app, and maybe a bit more. Now it is important to note that each method has different requirements for server monitoring. Some require that memory tracking is turned on. Some require nothing. Some return data but will return more data if memory tracking is on. You should read the docs carefully to see what each method requires.&lt;br /&gt;&lt;br /&gt;What follows is a &lt;b&gt;short &lt;/b&gt;list of &lt;b&gt;some&lt;/b&gt; of what is available...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Get Active Session Count&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This lets you get the total number of active sessions for the server - or you can supply a ColdFusion Application name and get the number just for that application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Get Average Response Time&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is a great metric. It tells you - on average - how quickly your templates are responding.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Get Heartbeat&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This returns a structure of general information. This includes a variety of items like server up time, average request time, current requests, etc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Get Memory Utilization Summary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As you can guess - this returns information about your memory usage. It tells you how much data your Application, Server, and Session scope data is using.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Get Hit Count Stats&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now this one is truly cool. Along with telling you how many normal template hits you have - it can tell you the number of web service hits - the number of Flash Remoting hits - even the number of direct HTTP hits to your CFCs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Get Logged In User Count&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Returns the number of users logged in via CFLOGINUSER.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Get All Application Scope Memory Used&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This returns all your applications and the amount of RAM they are using. Have a machine that is running a bit slow? Run this and it will tell you if one application in particular is being a bad boy. You can follow it up with &lt;b&gt;getApplicationScopeMemoryUsed&lt;/b&gt; which returns specific data about one particular application.&lt;br /&gt;&lt;br /&gt;Cool stuff, eh? It is important to note that using these features will have an impact on your server performance. I had a demo online, but I could really tell the impact of the monitoring so I turned it off. But if you want to see the code I used (with a different Admin password of course, I trust some of you guys... ;), look here:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;code&gt;&amp;lt;cfinvoke component="cfide.adminapi.administrator" method="login" adminPassword="mypasswordcanbeatupyourpassword"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfinvoke component="cfide.adminapi.servermonitoring" method="getActiveSessionCount" returnVariable="result"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Total session count = &lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfdump var="#result#"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;p&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfinvoke component="cfide.adminapi.servermonitoring" method="getActiveSessionCount" returnVariable="result" cfapplicationname="lighthousepro"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;For app lighthousepro = &lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfdump var="#result#"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;p&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfinvoke component="cfide.adminapi.servermonitoring" method="getAverageResponseTime" returnVariable="result"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfoutput&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;code&gt;Average response time is #result#&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;/cfoutput&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;p&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfinvoke component="cfide.adminapi.servermonitoring" method="getHeartbeat" returnVariable="result"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfdump var="#result#" label="Heart Beat"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;pv&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfinvoke component="cfide.adminapi.servermonitoring" method="getMemoryUtilizationSummary" returnVariable="result"v&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfdump var="#result#" label="Memory Utilization"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;p&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfinvoke component="cfide.adminapi.servermonitoring" method="getHitCountStats" returnVariable="result"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfdump var="#result#" label="Hit Count Stats"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;p&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfinvoke component="cfide.adminapi.servermonitoring" method="getLoggedInUserCount" returnVariable="result"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Logged in users = &lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;cfdump var="#result#"&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;code&gt;p&lt;/code&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;p&gt;&lt;span class="text"&gt;&lt;p&gt; &lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-5448421457626916412?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/5448421457626916412/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=5448421457626916412' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/5448421457626916412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/5448421457626916412'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/02/server-monitor-api-in-coldfusion-8-by.html' title=''/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-3121312836415781147</id><published>2008-02-05T05:24:00.000-08:00</published><updated>2008-02-05T05:27:11.042-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='website develpment'/><title type='text'>Tahapan Dalam Membangun "World Class Website"</title><content type='html'>&lt;ol class="toc" start="1"&gt;&lt;li&gt;Let’s Get Started … but How?   &lt;ul&gt;&lt;li&gt;Planning to Stay on Schedule and Within Budget     &lt;ul&gt;&lt;li&gt;Effective Pre-planning&lt;/li&gt;&lt;li&gt;Doing your Homework and Making Educated Decisions&lt;/li&gt;&lt;li&gt;Developing a Web Site Style Guide&lt;/li&gt;&lt;li&gt;Managing Like Magic: Effective Organization&lt;/li&gt;&lt;li&gt;Working Together as a Team&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;What to Find Out: Initial Questions to Answer   &lt;ul&gt;&lt;li&gt;Establishing your Target Audience     &lt;ul&gt;&lt;li&gt;Who will Visit and Why?&lt;/li&gt;&lt;li&gt;How will they Visit?&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Identifying your Initial Goals&lt;/li&gt;&lt;li&gt;Identifying your Budget     &lt;ul&gt;&lt;li&gt;Domain Name Costs&lt;/li&gt;&lt;li&gt;Web Hosting&lt;/li&gt;&lt;li&gt;Branding and Marketing&lt;/li&gt;&lt;li&gt;Bringing in the Experts&lt;/li&gt;&lt;li&gt;How Much is a Picture Worth?&lt;/li&gt;&lt;li&gt;Ecommerce&lt;/li&gt;&lt;li&gt;Computer Software and Hardware&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Preparing Web Site Content   &lt;ul&gt;&lt;li&gt;Gathering and Itemizing Content&lt;/li&gt;&lt;li&gt;Providing Accessible Content&lt;/li&gt;&lt;li&gt;Preparing Web Copy&lt;/li&gt;&lt;li&gt;Preparing Images&lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Managing all the Content   &lt;ul&gt;&lt;li&gt;Assessing your Web Site Content&lt;/li&gt;&lt;li&gt;Determining your Content Management Needs     &lt;ul&gt;&lt;li&gt;Web Authoring Tool Features&lt;/li&gt;&lt;li&gt;Content Management System Features&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Web Site Usability: Focusing on the User   &lt;ul&gt;&lt;li&gt;Creating a User-friendly Index Page&lt;/li&gt;&lt;li&gt;Ensuring your Web Site Focuses on Users     &lt;ul&gt;&lt;li&gt;Providing Fast-loading Web Pages&lt;/li&gt;&lt;li&gt;Accommodating User Abilities, Disabilities, Browsers, and       Alternative Devices&lt;/li&gt;&lt;li&gt;Ensuring Predictability&lt;/li&gt;&lt;li&gt;Providing User-friendly Corrections for User       Errors&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Color   &lt;ul&gt;&lt;li&gt;Preparing a Color-friendly Work Environment&lt;/li&gt;&lt;li&gt;Choosing a Color Scheme&lt;/li&gt;&lt;li&gt;Using Color to Enhance Functionality     &lt;ul&gt;&lt;li&gt;Using Color to Enhance Readability&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;   &lt;/li&gt;&lt;li&gt;Information Architecture   &lt;ul&gt;&lt;li&gt;Laying the Foundations&lt;/li&gt;&lt;li&gt;Improving Findability&lt;/li&gt;&lt;li&gt;Organizing for Success     &lt;ul&gt;&lt;li&gt;Organization Schemes&lt;/li&gt;&lt;li&gt;Organizing Content Structure&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Preparing Web Page Information Architecture     &lt;ul&gt;&lt;li&gt;Information Architecture for Ecommerce Pages&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Organizing Directories&lt;/li&gt;&lt;li&gt;Using Friendly URIs, URLs, and Filenames     &lt;ul&gt;&lt;li&gt;Hiding Filename Extensions as Much as Possible&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Navigation   &lt;ul&gt;&lt;li&gt;Golden Rules for Effective Web Site Navigation&lt;/li&gt;&lt;li&gt;Creating User-centered Global Navigation&lt;/li&gt;&lt;li&gt;Creating Local or Section Navigation&lt;/li&gt;&lt;li&gt;Providing Internal Page Navigation&lt;/li&gt;&lt;li&gt;Adding Supplemental Navigation     &lt;ul&gt;&lt;li&gt;Creating Sitemaps&lt;/li&gt;&lt;li&gt;Creating Site Indexes&lt;/li&gt;&lt;li&gt;Creating Search&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Best Coding Practice: W3C Standards and Recommendations   &lt;ul&gt;&lt;li&gt;Magic Markup     &lt;ul&gt;&lt;li&gt;Separating Content from Presentation&lt;/li&gt;&lt;li&gt;Ensuring the Integrity of your Markup&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Excellent XHTML&lt;/li&gt;&lt;li&gt;Spectacular CSS     &lt;ul&gt;&lt;li&gt;Using Appropriate CSS Naming Conventions&lt;/li&gt;&lt;li&gt;Beware of Browser Bugs and Problems&lt;/li&gt;&lt;li&gt;Using CSS for Print&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Creating Accessible Web Sites   &lt;ul&gt;&lt;li&gt;The Bare Bones of Creating an Accessible Web Site    &lt;ul&gt;&lt;li&gt;Creating Valid, Structured, Semantic Markup&lt;/li&gt;&lt;li&gt;Providing Accessible Navigation&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Color for the Masses&lt;/li&gt;&lt;li&gt;A Thousand Words to Each Picture     &lt;ul&gt;&lt;li&gt;Accessible Image Maps&lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Multi-purpose Multimedia&lt;/li&gt;&lt;li&gt;In Good Form&lt;/li&gt;&lt;li&gt;Sturdy Tables&lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Web Site Optimization  &lt;ul&gt;&lt;li&gt;Creating Clean, Lean Markup  &lt;ul&gt;&lt;li&gt;Minimizing URLs&lt;/li&gt;&lt;li&gt;Optimizing CSS&lt;/li&gt;&lt;li&gt;Optimizing JavaScript&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Supporting Speedy Server Responses&lt;/li&gt;&lt;li&gt;Optimizing Images, Multimedia, and Alternative Formats&lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Search Engine Optimization &lt;ul&gt;&lt;li&gt;Successful SEO in a Nutshell&lt;/li&gt;&lt;li&gt;Working with Keywords and Keyphrases   &lt;ul&gt;&lt;li&gt;Using Keywords and Keyphrases in your Markup&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Being Search Engine-Friendly&lt;/li&gt;&lt;li&gt;Avoiding Being Banned by Search Engines&lt;/li&gt;&lt;li&gt;Getting Listed&lt;/li&gt;&lt;li&gt;Creating an Ongoing Links Campaign&lt;/li&gt;&lt;li&gt;Planning for Ongoing Maintenance&lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Design  &lt;ul&gt;&lt;li&gt;Basic Design Principles&lt;/li&gt;&lt;li&gt;Effective Typography&lt;/li&gt;&lt;li&gt;Brainstorming&lt;/li&gt;&lt;li&gt;Finalizing the Design&lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Testing &lt;ul&gt;&lt;li&gt;Getting Started&lt;/li&gt;&lt;li&gt;Good Testing Practice&lt;/li&gt;&lt;li&gt;General Testing   &lt;ul&gt;&lt;li&gt;Solid Security&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Accessibility Testing   &lt;ul&gt;&lt;li&gt;Conducting a Preliminary Review&lt;/li&gt;&lt;li&gt;Conducting a Comprehensive Review&lt;/li&gt;&lt;li&gt;Testing with a Graphical Browser&lt;/li&gt;&lt;li&gt;Testing with a Voice or Text-only Browser&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Usability Testing&lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Preparing for Launch &lt;ul&gt;&lt;li&gt;Conducting Final Checks   &lt;ul&gt;&lt;li&gt;Checking Templates and Markup&lt;/li&gt;&lt;li&gt;Checking Layouts&lt;/li&gt;&lt;li&gt;Finalizing Content&lt;/li&gt;&lt;li&gt;Checking Functionality&lt;/li&gt;&lt;li&gt;Checking Server-side Requirements&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Conducting a Soft Launch&lt;/li&gt;&lt;li&gt;Launching the Web Site&lt;/li&gt;&lt;li&gt;Completing your Web Site Handover  &lt;ul&gt;&lt;li&gt;Checking and Finalizing Project Documentation&lt;/li&gt;&lt;li&gt;Creating a Handover Package&lt;/li&gt;&lt;li&gt;Archiving Project Documentation and Files&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Post-launch Follow-up &lt;ul&gt;&lt;li&gt;Conducting a Post-launch Review&lt;/li&gt;&lt;li&gt;Completing Initial Post-launch Tasks&lt;/li&gt;&lt;li&gt;Orientating New Staff&lt;/li&gt;&lt;li&gt;Getting Attention&lt;/li&gt;&lt;li&gt;Managing Maintenance  &lt;ul&gt;&lt;li&gt;Undertaking Daily Duties&lt;/li&gt;&lt;li&gt;Conducting Monthly Minding&lt;/li&gt;&lt;li&gt;Performing Periodic Processes&lt;/li&gt;&lt;li&gt;Conducting Annual Activities&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Collecting Data  &lt;ul&gt;&lt;li&gt;Collecting and Using Quantitative Data&lt;/li&gt;&lt;li&gt;Collecting and Using Qualitative Data&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Summary&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li class="nomarker"&gt;A. Ecommerce Checklists   &lt;ul&gt;&lt;li&gt;Assessing Ecommerce Content Usage and Management Needs&lt;/li&gt;&lt;li&gt;Features to Seek in a Shopping Cart Program&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-3121312836415781147?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/3121312836415781147/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=3121312836415781147' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3121312836415781147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3121312836415781147'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/02/tahapan-dalam-membangun-world-class.html' title='Tahapan Dalam Membangun &quot;World Class Website&quot;'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-3497822529977145425</id><published>2008-02-02T05:59:00.001-08:00</published><updated>2008-02-02T05:59:50.742-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='film indonesia'/><category scheme='http://www.blogger.com/atom/ns#' term='Deddy Mizwar'/><category scheme='http://www.blogger.com/atom/ns#' term='review film'/><category scheme='http://www.blogger.com/atom/ns#' term='Naga Bonar Jadi Dua'/><title type='text'>Naga Bonar Jadi Dua</title><content type='html'>&lt;div class="revRatingContainer"&gt;&lt;div class="revTitleRating"&gt;Directed by: Deddy Mizwar  &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Pesannya dalem banget. Di masa sekarang jarang ada film yg mampu membawakan sebuah pesan hingga bener-bener sampai ke hati penontonnya. Bagaimana tidak, pemilihan tokohnya benar-benar pas, Tora Sudiro merupakan Icon generasi muda, jadi pesan yg disampaikan melaluinya akanlah mudah diterima oleh generasi muda, karena memang banyak orang akan meniru apa yg dilakukan tokoh idolanya. Seorang Deddy Mizwar yg berperan sebagai ayah dari seorang anak yg berbudaya modern, mampu menjadi teladan bagi anaknya meskipun hidup berbeda jaman. Keteladanan sang ayah yg amat mencintai bangsa dan negaranya terlihat dari betapa hormatnya dia kepada para pahlawan bangsa ini dimasa lalu.&lt;br /&gt;Singkatnya pesannya adalah cintailah negerimu ini sebelum kau mati dimakan cacing. Paling tidak dengan cara gampang yaitu janganlah membuang sampah sembarangan, buanglah pada tempat yg semestinya atau tempat sampah. Kalau cara kecil ini saja tidak bisa dilakukan, maka akan semakin rusaklah lingkungan negara kita. lalu... APA KATA DUNIA!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-3497822529977145425?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/3497822529977145425/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=3497822529977145425' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3497822529977145425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/3497822529977145425'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/02/naga-bonar-jadi-dua.html' title='Naga Bonar Jadi Dua'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-60317484941352159</id><published>2008-02-02T05:58:00.000-08:00</published><updated>2008-02-02T05:59:02.118-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opini pribadi'/><category scheme='http://www.blogger.com/atom/ns#' term='berpikir sederhana'/><category scheme='http://www.blogger.com/atom/ns#' term='buah pikiran'/><category scheme='http://www.blogger.com/atom/ns#' term='curhat'/><title type='text'>Simplify Life</title><content type='html'>&lt;p&gt;Pernah dengar bahwa pikiran manusia itu (otak) adalah ciptaan Tuhan yg amat mengagumkan. Dialah yg membawa kita pada perubahan seperti sekarang ini, merekam kejadian di masa lalu, mengira-ngira kemungkinan di masa yg akan datang, serta membantu dalam mengambil sebuah keputusan. Sungguh sebuah mahakarya yg tiada tandingannya.&lt;/p&gt;  &lt;p&gt;Terkadang pikiran juga dapat dikendalikan, ditentang, dan rekayasa sedemikian rupa sehingga mengikuti kemauan hati kita. &lt;/p&gt;  &lt;p&gt;Hidup juga dikendalikan oleh pikiran kita. Jika pikiran sudah dikendalingan oleh keinginan yg muluk-muluk dan busuk, maka kita akan kehilangan cara pikir rasional, yg artinya bertindak diluar perhitungan. Kalau sudah bertindak diluar rasio yang terjadi adalah kesalahan-kesalahan dalam bertindak yg menimbulkan penyesalan.&lt;/p&gt;  &lt;p&gt;itulah sampah-sampah yg harus disingkirkan dari dalam diri kita. Membuat segalanya menjadi simple dengan berpikir sederhana, bertindak dengan penuh perhitungan, niscaya akan menghindarkan kita dari segala kesalahan dan penyesalan yg tidak perlu.&lt;/p&gt;  &lt;p&gt;so keep it simple stupid&lt;br /&gt;Do What You Wanna Do, Be Whatever You Wanna Be&lt;br /&gt;Jangan lupa berbuat baik untuk orang lain&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-60317484941352159?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/60317484941352159/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=60317484941352159' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/60317484941352159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/60317484941352159'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/02/simplify-life.html' title='Simplify Life'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-793505588370896713</id><published>2008-02-02T05:57:00.003-08:00</published><updated>2008-02-02T05:57:57.390-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='review film'/><category scheme='http://www.blogger.com/atom/ns#' term='film Fantastic Four - Rise of the Silver Surfer'/><title type='text'>Fantastic Four - Rise of the Silver Surfer</title><content type='html'>Dalam film ini dikisahkan kemunculan sesosok mahluk aneh yg mengendarai sebuah papan selancar berwarna perak, dengan itu dia dijuluki si Silver Surfer.&lt;br /&gt;Kedatangannya ke Bumi dalam rangka menjaga eksistensi dari tuannya (kekasihnya) dengan cara datang ke planet-planet untuk dihisap energina hingga planet-planet tersebut menjadi rusak bahkan hancur.&lt;br /&gt;Ketika si Human Torch berkelahi sendirian dengan si Silver Surfer, dia mendapatkan sebuah pengaruh yg akan menyebabkan perpindahan (bertukar) energi dengan apa yg disentuhnya.&lt;br /&gt;Nah terdapat suatu, yg nenek gw bilang, blooper dari film ini. Misal jika si Human Torch menyentuh The Thing, maka si Human Torch badannya menjadi berbatu seperti The Thing, demikian pula sebaliknya. Namun apa yg terjadi ketika si Human Torch bersentuhan dengan ketiga rekannya yg lain, harusnya si Human Torch mendapat kekuatan The Thing, Mr. Fantastic, dan Invisible Woman. Yang terjadi justru sedikit aneh dan tidak konsisten dengan kondisi yg terjadi akibat pertempuran Human Torch dan Silver Surfer. Seharusnya Human Torch mendapatkan kehebatan dari 3 rekannya yg lain, lalu kehebatannya berpindah berpindah ke tiga rekannya yg lain. Ini hukum pertukaran (switch/exchange) bukan kolaborasi..&lt;br /&gt;But overall this movie entertine enough, menambah imanjinasi kita berdasar gagasan si pembuat film..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-793505588370896713?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/793505588370896713/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=793505588370896713' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/793505588370896713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/793505588370896713'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/02/fantastic-four-rise-of-silver-surfer.html' title='Fantastic Four - Rise of the Silver Surfer'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-8227686356074326076</id><published>2008-02-02T05:55:00.000-08:00</published><updated>2008-02-02T05:56:53.609-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='budaya nusantara'/><category scheme='http://www.blogger.com/atom/ns#' term='novel Gajah Mada'/><category scheme='http://www.blogger.com/atom/ns#' term='review buku'/><category scheme='http://www.blogger.com/atom/ns#' term='Hamukti Palapa (3)'/><category scheme='http://www.blogger.com/atom/ns#' term='kerajaan Majapahit'/><category scheme='http://www.blogger.com/atom/ns#' term='sejarah nusantara'/><title type='text'>Gajah Mada, Hamukti Palapa (3)</title><content type='html'>&lt;div class="revRatingContainer"&gt;&lt;div class="revTitleRating"&gt;Written by: Langit Kresna Hariadi&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt; Pada dasarnya hanya sebuah novel dengan cerita karangan dari imanjinasi sang penulis.&lt;br /&gt;Apa yg dituturkan akan sebuah kejadian bersejarah dimasa lalu, sungguh mengasikkan karena pada dasarnya saya menyenangi cerita kepahlawanan, keteladanan dari seorang tokoh serta sepak terjangnya dalam mewujudkan apa yg menjadi prinsip hidupnya. Gajah Mada, yg sampai pada seri ke tiga dari 5 buku yg ada, masih merupakan cerita menarik. Sifat-sifat yg seperti inilah yg kiranya harus dimiliki semua orang dalam memandang negara sendiri. Seperti sebuah pesan yg patut dipahatkan di hati setiap warga negara: Jangan tanya apa yg negara berikan padamu, akan tetapi bertanyalah apa yg telah kamu perbuat untuk negaramu.&lt;br /&gt;Sangat jelas dan tajam makna yg terkandung didalamnya. Gajam Mada adalah seorang yg mengabdikan seluruh hidupnya demi negaranya. Ia rela meninggalkan apa yg seharusnya ia bisa nikmati untuk mewujudkan kebesaran dan kesatuan negara, berjuang tanpa henti, belajar tanpa henti, dan juga tidak lupa selalu bercermin dari masa lalu. Masa lalu adalah sejarah, tetapi hendaknya tidak menyebabkan kesalahan di masa lalu terulang kembali di saat sekarang. Untuk itulah Gajah Mada amat selalu hati-hati dalam bertindak. Hasilnya, tepat! Sungguh orang yg luar biasa. Tak perlu diragukan lagi, sosok Gajah Mada sangat dibutuhkan negara sekarang ini, paling tidak untuk mengingatkan kita semua bahwa wilayah Nusantara ini tercipta melalui perjuangan yg tanpa mengenal lelah di masa lalu. Nusantara ini diciptakan untuk bersatu menghadapi ancaman dari negara lain yg lebih besar pada saat itu. Kita sudah punya alat pemersatu bangsa layaknya pada jaman Majapahit dulu yg menggunakan bendera gula kelapa, kita punya Sang Saka Merah Putih, Burung Garuda Pancasila, dan Undang-undang Dasar 1945. Hayati semua makna dibalik lambang itu maka di hatimu akan tumbuh rasa kagum, haru dan bangga akan Bangsa Indonesia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-8227686356074326076?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/8227686356074326076/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=8227686356074326076' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/8227686356074326076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/8227686356074326076'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/02/gajah-mada-hamukti-palapa-3.html' title='Gajah Mada, Hamukti Palapa (3)'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9140742944300554542.post-6608928937122363889</id><published>2008-01-30T18:01:00.000-08:00</published><updated>2008-02-02T05:36:44.342-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='review film'/><category scheme='http://www.blogger.com/atom/ns#' term='film perang'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><category scheme='http://www.blogger.com/atom/ns#' term='film Rambo IV'/><title type='text'>Review Rambo IV</title><content type='html'>Tokoh John Rambo dalam sequel film Rambo 1 - 3 pernah dijadikan simbol dari perjuangan prajurit/ tentara America oleh presidennya pada tahun 80-an. Memang benar, John Rambo adalah prajurit sejati dengan kemampuan komplit berkat pengalamannya terjun di berbagai medan perang dan menghadapi berbagai macam pengalaman sulit didalamnya.&lt;br /&gt; Berbekal pengalaman tokoh ini, kembali muncul sequel film Rambo IV yg tetap dibintangi oleh Silvester Stallone, sang aktor dengan perawakan kekar dengan muka yg dibuat seram. Setting film ini adalah daerah perbatasan negara Burma yg penuh dengan kekejian perang antara militer, pemberontak pro pembebasan rakyat, dan rakyat di daerah perbatasan itu sendiri yg menjadi korban kebiadaban tentara. Demi menekan kaum pemberontak yg berjuang secara gerilya dan sembunyi-sembunyi, tentara mengganggu rakyat, menganiaya mereka dengan kejam, agar kaum pemberontak menjadi takut dan tunduk pada tentara di kawasan itu.&lt;br /&gt;    John Rambo datang sebagai penyelamat bersama sekelompok tentara bayaran. Hatinya terpanggil melihat sesuatu yg tidak benar, apa lagi ada warga AS yg menjadi korban didalamnya.&lt;br /&gt;Dia adalah seorang tentara yg sudah kenyang dengan peperangan. Didalam dirinya terdapat insting membunuh yg kini muncul kembali, bukan karena membunuh demi negara, tetapi membunuh untuk sesuatu yg benar yg diyakininya.&lt;br /&gt;    Jadilah tonontonan ini menegangkan dengan pertempuran yg sengit antara tentara musuh dengan John Rambo dan teman-teman tentara bayaran tadi. Parahnya penggambaran di film ini, penumpasan terhadap tentara musuh tak kalah sadisnya sama dengan perlakuan mereka terhadap pembantaian warga tak berdosa.&lt;br /&gt;    Overall film ini menunjukkan kepada kita sebuah kisah heroik apik, diselipi pesan moral bahwa mati demi memperjuangkan sesuatu yg diyakini benar dan bermafaat bagi orang lain, lebih baik daripada hidup tapi sia-sia. Seandainya saja film ini nantinya akan diputar di televisi di tanah air, bisa jadi durasinya tinggal 30 menit, karena semua adegan perang penuh kesadisan dipotong lembaga sensor film..hahaha..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9140742944300554542-6608928937122363889?l=iarlash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iarlash.blogspot.com/feeds/6608928937122363889/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9140742944300554542&amp;postID=6608928937122363889' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/6608928937122363889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9140742944300554542/posts/default/6608928937122363889'/><link rel='alternate' type='text/html' href='http://iarlash.blogspot.com/2008/01/review-rambo-iv.html' title='Review Rambo IV'/><author><name>Bumper Keju</name><uri>http://www.blogger.com/profile/16327562493132279003</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
