<?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-7351084055463323761</id><updated>2012-02-16T17:14:48.683+05:30</updated><category term='apache'/><category term='Netbios hack'/><category term='wallpapers'/><category term='Wordpress'/><category term='jsf'/><category term='java'/><category term='search engines'/><category term='Hardware Related'/><category term='php'/><category term='Dynamic Dns'/><category term='Heroes'/><category term='jdeveloper11g'/><category term='Usenet'/><category term='Counter Strike 1.6'/><category term='security windows xp'/><category term='Security'/><category term='Songbird'/><category term='Google'/><category term='ADF'/><category term='Cool Tutorials'/><category term='Unix/Linux'/><category term='russian walk'/><category term='rest'/><category term='firefox'/><category term='webserver'/><category term='Music Players'/><category term='Prison break'/><category term='Search engine Optimization'/><category term='Games'/><category term='sql'/><category term='Trojan Vundo.h'/><category term='Virus'/><category term='ADF security'/><category term='winxp'/><category term='Hardware'/><category term='ping flooding'/><category term='router attack'/><category term='Internet anonymity'/><category term='website on pc'/><category term='Programming Stuff'/><category term='Malware Bytes'/><category term='Softwares'/><category term='Computer Networking'/><title type='text'>Technical Essentials</title><subtitle type='html'>Counter Strike 1.6,Java,ADF 11g,FMW,Linux,  
BSD, Windows-xp Tweaks and Commands, 
Web Servers, Programming,Search Engines</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default?start-index=101&amp;max-results=100'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>128</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-2618588685484690642</id><published>2011-11-24T17:22:00.000+05:30</published><updated>2011-11-24T17:22:24.060+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>Error handling in adf</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;To override the default error handler one can extend the&amp;nbsp; DCErrorHandlerImpl. In this you can process the exceptions or can choose to suppress them. In this post i will explain a way to suppress the RowValException message and display only the detail entity attribute level exception ie AttrValException.&lt;br /&gt;&lt;br /&gt;In ADF the exceptions are grouped and raised together as a single object. For example let's say that 2 of the attributes fail the mandatory validation then the exceptions raised for them will be 2 individual AttrValException these are then attached as detail objects into a RowValException and if there are many such RowValException they will be attached and raised together as a TxnValException.&lt;br /&gt;&lt;br /&gt;So now to handle the aforementioned task we need to recursively&amp;nbsp; process the exceptions and suppress the RowValException message. The snippet below shows that :-&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;public class MyErrorHandler extends DCErrorHandlerImpl {&lt;br /&gt;    private static final ADFLogger logger = ADFLogger.createADFLogger(VleAdminErrorHandler.class);&lt;br /&gt;    private static ResourceBundle rb = ResourceBundle.getBundle("mypackage.myBundle");&lt;br /&gt;    public MyErrorHandler() {&lt;br /&gt;        super(true);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public MyErrorHandler(boolean setToThrow) {&lt;br /&gt;        super(setToThrow);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void reportException(DCBindingContainer bc, java.lang.Exception ex) {&lt;br /&gt;        disableAppendCodes(ex);&lt;br /&gt;        logger.info("entering reportException() method");&lt;br /&gt;        BindingContext ctx = bc.getBindingContext();&lt;br /&gt;        String err_code;&lt;br /&gt;        err_code = null;&lt;br /&gt;        if(ex instanceof NullPointerException){&lt;br /&gt;              logger.severe(ex); &lt;br /&gt;              JboException e = new JboException(rb.getString("STANDARD_ERROR_MESSAGE"));&lt;br /&gt;              super.reportException(bc, e);&lt;br /&gt;            }&lt;br /&gt;        else if(ex instanceof RowValException){&lt;br /&gt;          &lt;br /&gt;          Object[] exceptions= ((RowValException)ex).getDetails();&lt;br /&gt;          if(exceptions!=null){&lt;br /&gt;            for(int i=0;i&amp;lt;exceptions.length;i++){&lt;br /&gt;                  if(exceptions[i] instanceof RowValException){&lt;br /&gt;                       this.reportException(bc, (Exception)exceptions[i]);                                 &lt;br /&gt;                  }&lt;br /&gt;                  else if(exceptions[i] instanceof AttrValException){&lt;br /&gt;                super.reportException(bc, (Exception)exceptions[i]);&lt;br /&gt;                  }&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;            else{&lt;br /&gt;            this.reportException(bc, ex);&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;       else if (ex instanceof TxnValException) {&lt;br /&gt;          Object[] exceptions= ((TxnValException)ex).getDetails();&lt;br /&gt;          if(exceptions!=null){&lt;br /&gt;          for(int i=0;i&amp;lt;exceptions.length;i++){&lt;br /&gt;              if(exceptions[i] instanceof RowValException){&lt;br /&gt;                   this.reportException(bc, (Exception)exceptions[i]);                                 &lt;br /&gt;              }&lt;br /&gt;              else{&lt;br /&gt;            super.reportException(bc, (Exception)exceptions[i]);&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;          }&lt;br /&gt;          else {&lt;br /&gt;                super.reportException(bc, ex);&lt;br /&gt;              }&lt;br /&gt;        }&lt;br /&gt;      &lt;br /&gt;       else if (ex instanceof oracle.jbo.DMLException) {&lt;br /&gt;           JboException e = new JboException(rb.getString("STANDARD_ERROR_MESSAGE"));&lt;br /&gt;            super.reportException(bc, e);&lt;br /&gt;        }&lt;br /&gt;       else if(ex instanceof javax.xml.ws.WebServiceException){&lt;br /&gt;            JboException e=new JboException(rb.getString("WEB_SERVICE_EXCEPTION"));&lt;br /&gt;            super.reportException(bc, e);&lt;br /&gt;            }&lt;br /&gt;       &lt;br /&gt;        else if (ex instanceof JboException) {&lt;br /&gt;            super.reportException(bc, ex);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public static FacesMessage getMessageFromBundle(String key, FacesMessage.Severity severity) {&lt;br /&gt;        ResourceBundle bundle = ResourceBundle.getBundle("sahaj.apps.vleadministration.view.resources.VLEAdministrationUIBundle");&lt;br /&gt;        String summary = JSFUtil.getStringSafely(bundle, key, null);&lt;br /&gt;        String detail = JSFUtil.getStringSafely(bundle, key + "_detail", summary);&lt;br /&gt;        FacesMessage message = new FacesMessage(summary, detail);&lt;br /&gt;        message.setSeverity(severity);&lt;br /&gt;        return message;&lt;br /&gt;    }&lt;br /&gt;  private void disableAppendCodes(Exception ex) {&lt;br /&gt;      if (ex instanceof JboException) {&lt;br /&gt;        JboException jboEx = (JboException) ex;&lt;br /&gt;        jboEx.setAppendCodes(false);&lt;br /&gt;        Object[] detailExceptions = jboEx.getDetails();&lt;br /&gt;        if ((detailExceptions != null) &amp;amp;&amp;amp; (detailExceptions.length &amp;gt; 0)) {&lt;br /&gt;          for (int z = 0, numEx = detailExceptions.length; z &amp;lt; numEx; z++) {&lt;br /&gt;            disableAppendCodes((Exception) detailExceptions[z]);&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  @Override  &lt;br /&gt;    protected boolean skipException(Exception ex) {  &lt;br /&gt;      if (ex instanceof JboException) {  &lt;br /&gt;        return false;  &lt;br /&gt;      } else if (ex instanceof SQLIntegrityConstraintViolationException) {  &lt;br /&gt;        return true;  &lt;br /&gt;      }  &lt;br /&gt;      return super.skipException(ex);  &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public String getDisplayMessage(BindingContext bindingContext,&lt;br /&gt;                                    Exception exception) {&lt;br /&gt;        return super.getDisplayMessage(bindingContext, exception);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public DCErrorMessage getDetailedDisplayMessage(BindingContext bindingContext,&lt;br /&gt;                                                    RegionBinding regionBinding,&lt;br /&gt;                                                    Exception exception) {&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;    return super.getDetailedDisplayMessage(bindingContext, regionBinding, exception);&lt;br /&gt;    }&lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this snippet i am recursively processing TxnValException-&amp;gt;RowValException -&amp;gt; AttrValException. The AttrValException is being passed in the super call to the DCErrorHandlerImpl to process and display the message.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-2618588685484690642?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/2618588685484690642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/11/error-handling-in-adf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2618588685484690642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2618588685484690642'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/11/error-handling-in-adf.html' title='Error handling in adf'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-7428765885189759147</id><published>2011-11-17T21:46:00.004+05:30</published><updated>2012-02-14T00:37:22.284+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>Optimized update insert ADF ?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I had a recently asked a question on bulk uploads in OTN forum. Seems the performance that i would receive for bulk update/insert scenarios isn't at par.&lt;br /&gt;So i created the procedure and a custom object type and table of that object type which provides far better performance.&lt;br /&gt;&lt;br /&gt;Let's say your table structure is as follows :-&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql" id="sql1"&gt;-- &amp;nbsp; &amp;nbsp; TXN_TBL&lt;br /&gt;("TXN_ID" Number,&lt;br /&gt;"USER_NAME" VARCHAR2(50 BYTE),&lt;br /&gt;"TXN_DATE" DATE,&lt;br /&gt;"TXN_AMOUNT" NUMBER)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So you can basically create a object type mirroring that structure as follows&lt;br /&gt;&lt;pre class="brush:sql" id="adfjs"&gt;create or replace type TXN_TBL_R is object&lt;br /&gt;("TXN_ID" Number,&lt;br /&gt;"USER_NAME" VARCHAR2(50 BYTE),&lt;br /&gt;"TXN_DATE" DATE,&lt;br /&gt;"TXN_AMOUNT" NUMBER)&lt;br /&gt;&lt;/pre&gt;and then create a table type that will store record of these types:&lt;br /&gt;&lt;pre class="brush:sql" id="adfbh12"&gt;create or replace type TXN_TBL_TB as table of &amp;nbsp;TXN_TBL_R&lt;br /&gt;&lt;/pre&gt;The procedure that will perform the updates and or inserts is shown in the below snippet:-&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql" id="adfjs"&gt;create or replace procedure B_INSERT(p_in IN TXN_TBL_TB) as&lt;br /&gt;cursor for_insert is select * from TABLE(p_in) rt where not exists(select tmp.TXN_ID from TXN_TBL tmp where rt.TXN_ID=tmp.TXN_ID);&lt;br /&gt;cursor for_update is select * from TABLE(p_in) rt where exists(select tmp.TXN_ID from TXN_TBL tmp where rt.TXN_ID=tmp.TXN_ID);&lt;br /&gt;temp_insert TXN_TBL_R;&lt;br /&gt;temp_update TXN_TBL_R;&lt;br /&gt;begin&lt;br /&gt;for temp_update in for_update loop&lt;br /&gt;update TXN_TBL tmp set tmp.USER_NAME= temp_update.USER_NAME,tmp.TXN_DATE=temp_update.TXN_DATE,tmp.TXN_AMOUNT=temp_update.TXN_AMOUNT where tmp.TXN_ID= temp_update.TXN_ID;&lt;br /&gt;end loop;&lt;br /&gt;for temp_insert in for_insert loop&lt;br /&gt;insert into TXN_TBL values(temp_insert.TXN_ID, temp_insert.USER_NAME, temp_insert.TXN_DATE, temp_insert.TXN_AMOUNT);&lt;br /&gt;end loop;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then you can basically call this program from the ADF application using struct type. The snippet is shown below:-&lt;br /&gt;&lt;pre class="brush:java" id="sql12"&gt;/**&lt;br /&gt;*@param valueSet the set of bean values&lt;br /&gt;*/&lt;br /&gt; public void someMethod(Set valueSet){&lt;br /&gt;         Connection conn=null;&lt;br /&gt;        try {&lt;br /&gt;          conn = getDBTransaction().createStatement(1).getConnection();&lt;br /&gt;          StructDescriptor tblRecordStructType =&lt;br /&gt;                          StructDescriptor.createDescriptor("TXN_TBL_R", conn);&lt;br /&gt;        Iterator it= valueSet.iterator();&lt;br /&gt;        Object txnArray[]=new Object[set.size()];&lt;br /&gt;          while(it.hasNext()){&lt;br /&gt;       SomeCustomBean detail=it.next();&lt;br /&gt;  STRUCT tempStruct=new STRUCT(tblRecordStructType,conn,new Object[]{detail.getTranxId(),detail.getUserName(),detail.getTxnDate(),detail.getTransAmount()});  &lt;br /&gt;    txnArray[i]=tempStruct;&lt;br /&gt;    i=i+1;&lt;br /&gt;    }&lt;br /&gt;    //create array structure descriptor&lt;br /&gt;     ArrayDescriptor txnTableDesc=ArrayDescriptor.createDescriptor("TXN_TBL",conn);&lt;br /&gt;  //create an Array type with given structure definition&lt;br /&gt;  ARRAY txnTableArray=new ARRAY(txnTableDesc,conn,txnArray); &lt;br /&gt;           String callableProcedureStatement=" begin  TMP_INSERT(?); end;" ;&lt;br /&gt;          OracleCallableStatement st=null;&lt;br /&gt;          st=(OracleCallableStatement)getDBTransaction().createCallableStatement(callableProcedureStatement, 0);  &lt;br /&gt;          st.setARRAY(1, txnTableArray);&lt;br /&gt;          st.executeUpdate();  &lt;br /&gt;    this.getDBtransaction().commit();&lt;br /&gt;        } catch (JboException e) {&lt;br /&gt;this.getDBtransaction().rollBack();&lt;br /&gt;         throw new JboException(e.getMessage());&lt;br /&gt;   &lt;br /&gt;        }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is basically it. This will perform faster than normal ADF update/insert.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: #ffffbf; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; direction: ltr; font-family: arial, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; height: auto; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: auto; z-index: 99995;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-7428765885189759147?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/7428765885189759147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/11/optimized-update-insert-adf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7428765885189759147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7428765885189759147'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/11/optimized-update-insert-adf.html' title='Optimized update insert ADF ?'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-726752901773243694</id><published>2011-11-17T19:09:00.001+05:30</published><updated>2011-11-17T19:09:51.604+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper11g'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>Resetting values in popup ADF 11g</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you are using ADF11g version 11.1.1.3 and want to reset the values in the popup, you are not provided with the resetEditableValues option. But you can accomplish this using a custom javascript that i have made. &lt;br /&gt;&lt;br /&gt;All you have to do is set clientComponent="true" for all the components that you want to reset and pass the client id of the root component to use this.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:javascript" id="adfjs"&gt;resetAction=function(clientId){&lt;br /&gt;    var component= AdfPage.PAGE.findComponentByAbsoluteId(clientId);&lt;br /&gt;    console.log(component);&lt;br /&gt;    var components=component.getDescendantComponents();&lt;br /&gt;    this.resetFunction(components);&lt;br /&gt;    }&lt;br /&gt;   resetFunction=function(components){&lt;br /&gt;     for (var i=0;i&amp;lt;components.length;i++){&lt;br /&gt;     if(components[i] instanceof AdfRichInputText){&lt;br /&gt;     if(components[i].getVisible()&amp;amp;&amp;amp;!components[i].getDisabled()&amp;amp;&amp;amp;!components[i].getReadOnly()){&lt;br /&gt;     components[i].setValue(&amp;quot;&amp;quot;);&lt;br /&gt;     }&lt;br /&gt;     }&lt;br /&gt;     if(components[i] instanceof AdfRichSelectOneChoice){&lt;br /&gt;    if(components[i].getVisible()&amp;amp;&amp;amp;!components[i].getDisabled()&amp;amp;&amp;amp;!components[i].getReadOnly()){&lt;br /&gt;    components[i].resetValue();&lt;br /&gt;    }&lt;br /&gt;     }&lt;br /&gt;     }&lt;br /&gt;  }&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;/pre&gt;Save the contents of this file to a JS file and then import it in your fragment or a jsf page. &lt;br /&gt;&lt;br /&gt;Now you have to bind the parent container like panelFormLayout and then on action of the command button use ExtendedRenderKitService to pass the client id of the root component dynamically to resetAction Method so that this script always works. The snippet is shown below. &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="java"&gt;/**&lt;br /&gt;     * Resets the popup&lt;br /&gt;     * @return null&lt;br /&gt;     */&lt;br /&gt;    public String resetPopupAction() {&lt;br /&gt;      FacesContext context = FacesContext.getCurrentInstance();&lt;br /&gt;      ExtendedRenderKitService erks =&lt;br /&gt;      Service.getRenderKitService(context, ExtendedRenderKitService.class);&lt;br /&gt;      erks.addScript(context,&amp;quot;resetAction(&amp;#39;&amp;quot;+formBinding.getClientId(context) +&amp;quot;&amp;#39;)&amp;quot;); &lt;br /&gt;    &lt;br /&gt;      return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Hope this will be helpful :D&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-726752901773243694?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/726752901773243694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/11/resetting-values-in-popup-adf-11g.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/726752901773243694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/726752901773243694'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/11/resetting-values-in-popup-adf-11g.html' title='Resetting values in popup ADF 11g'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3567855194639105941</id><published>2011-09-21T17:06:00.000+05:30</published><updated>2011-09-21T17:06:50.560+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper11g'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>ora-01086: savepoint 'BO_SP' never established</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you are using ADF 11g and you encounter this issue kindly check your ps_txn table. You can delete the records from this table and then you will see that this error will go away.&lt;br /&gt;This table is used by ADFm internally to serialize user session state to database, so this table has to be monitored and appropriate grants have to be given to the database user so that it can create the database objects.&lt;br /&gt;For more information kindly refer to this article by chris muir.&lt;br /&gt;&lt;a href="http://one-size-doesnt-fit-all.blogspot.com/2009/08/jdevadf-importance-of-getting-pstxn-and.html"&gt;PS_TXN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3567855194639105941?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3567855194639105941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/09/ora-01086-savepoint-bosp-never.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3567855194639105941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3567855194639105941'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/09/ora-01086-savepoint-bosp-never.html' title='ora-01086: savepoint &apos;BO_SP&apos; never established'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4073197140711538586</id><published>2011-09-21T01:55:00.000+05:30</published><updated>2011-09-21T02:00:15.082+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper11g'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>javascript in adf page fragment.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is a short tip on where to add the &amp;lt;af:resource type="javascript"&amp;gt; tag when you want to include javascript in your adf page fragment. The place to include the tag is inside of a root component layout like panelFormLayout or panelGroupLayout because otherwise if you place it outside of the root component the resource might not be loaded and hence your script method will not be found which can sometimes lead to issues with the user interface also because a javascript error will prevent panelStretchLayout from stretching. But if you place it inside the root component layout the script will be loaded always. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4073197140711538586?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4073197140711538586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/09/javascript-in-adf-page-fragment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4073197140711538586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4073197140711538586'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/09/javascript-in-adf-page-fragment.html' title='javascript in adf page fragment.'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4007574949376658342</id><published>2011-09-21T01:44:00.000+05:30</published><updated>2011-09-21T02:03:15.855+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper11g'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>ADF 11g using same view object in different taskflows</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You might face a scenario where you have to reuse the same &lt;b&gt;view object&lt;/b&gt; in different task flows. But the issue you will encounter if you are not using separate View Object instances is that changes made to view objects in one task flow will reflect in the view object in the other task flow.&lt;br /&gt;If you are not using separate view object instances you can either call clearCache on the view object when the region renders or call ApplicationModuleImpl clearVOCaches method.&amp;nbsp; The former method will clear cache for both transient and entity based view object instances and the latter can be used to clear the cache on all the entity based view objects.&lt;br /&gt;&lt;br /&gt;If you are using dynamic regions you can use use the either of the following fragments for clearing the cache which solves your re-usability scenario as clicking on the command link will clear the view object cache's and hence you will get consistent results.&lt;br /&gt;&lt;pre class="brush:java" id="amCl1"&gt;       DCBindingContainer container=(DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();&lt;br /&gt;       TestAMImpl amImpl=(TestAMImpl) container.findDataControl("TestAMDataControl").getDataProvider();&lt;br /&gt;       //clear the all entity caches and do it recursively. &lt;br /&gt;       amImpl.clearVOCaches(null, true);&lt;br /&gt;      &lt;br /&gt;&lt;/pre&gt;or &lt;br /&gt;&lt;pre class="brush:java" id="amCl2"&gt;       &lt;br /&gt;    DCBindingContainer container=(DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();&lt;br /&gt;       TestAMImpl amImpl=(TestAMImpl) container.findDataControl(&amp;quot;TestAMDataControl&amp;quot;).getDataProvider();&lt;br /&gt;       String [] viewObjectName=amImpl.getViewObjectNames();&lt;br /&gt;       for (int i=0;i&amp;lt;viewobjectname.length;i++){ amimpl.findviewobject(viewobjectname[i]).clearcache();}&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Note: &lt;/b&gt;This is only a workaround and not a best practice, though if you want to reuse the view object in many places this will suffice. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4007574949376658342?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4007574949376658342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/09/adf-11g-using-same-view-object-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4007574949376658342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4007574949376658342'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/09/adf-11g-using-same-view-object-in.html' title='ADF 11g using same view object in different taskflows'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-2570852223508729079</id><published>2011-09-09T02:58:00.001+05:30</published><updated>2011-09-09T03:18:10.314+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper11g'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF security'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>OPSS ADF Security Utility</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In this post i am sharing a utility for performing the following operations on&lt;b&gt; OID&lt;/b&gt; using the &lt;b&gt;OPSS API&lt;/b&gt; :-&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;User creation&amp;nbsp;&lt;/li&gt;&lt;li&gt;Dropping a user&lt;/li&gt;&lt;li&gt; Getting all roles for a user&lt;/li&gt;&lt;li&gt;Role/Roles assignment to user/users&lt;/li&gt;&lt;li&gt;Revocation of role/roles from user/ users &lt;/li&gt;&lt;li&gt;Changing password for a user&amp;nbsp;&lt;/li&gt;&lt;li&gt;Resetting password for a user&amp;nbsp;&lt;/li&gt;&lt;li&gt;Searching a User&amp;nbsp;&lt;/li&gt;&lt;li&gt;Getting members belonging to a particular role.&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;The relevant code fragment is attached below. Hope this utility will be helpful for someone who wants to integrate application with OID using &lt;b&gt;OPSS&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="opssC1"&gt;/**&lt;br /&gt; *This class can be used to perform operation on OID using OPSS API&lt;br /&gt; * @author Ramandeep Nanda&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;public class OIDOperations {&lt;br /&gt;  public static final ADFLogger OIDLogger=ADFLogger.createADFLogger(OIDOperations.class);&lt;br /&gt;    /**&lt;br /&gt;     *&lt;br /&gt;     * @return The store instance for OID store&lt;br /&gt;     */&lt;br /&gt;    public static IdentityStore getStoreInstance(){&lt;br /&gt;        return  IdentityStoreConfigurator.initializeDefaultStore();&lt;br /&gt;        }&lt;br /&gt;    public static IdentityStoreFactory getIdentityStoreFactory(){&lt;br /&gt;        return IdentityStoreConfigurator.idStoreFactory;&lt;br /&gt;        }&lt;br /&gt;    /**&lt;br /&gt;     * Returns the logged in User if using ADF security&lt;br /&gt;     * @return The logged in User&lt;br /&gt;     */&lt;br /&gt;    public static String getLoggedInUser(){&lt;br /&gt;          ADFContext ctxt=ADFContext.getCurrent();&lt;br /&gt;          SecurityContext sctxt=ctxt.getSecurityContext();&lt;br /&gt;        return   sctxt.getUserName();&lt;br /&gt;        }&lt;br /&gt;    /**&lt;br /&gt;     * This method returns the user profile of currently logged in user if using ADF security&lt;br /&gt;     * @return oracle.adf.share.security.identitymanagement.UserProfile;&lt;br /&gt;     */&lt;br /&gt;    public static UserProfile getLoggedInUserProfile(){&lt;br /&gt;          ADFContext ctxt=ADFContext.getCurrent();&lt;br /&gt;          SecurityContext sctxt=ctxt.getSecurityContext();&lt;br /&gt;         return sctxt.getUserProfile();&lt;br /&gt;        }&lt;br /&gt;    /**&lt;br /&gt;     * Assigns the specified role to the user&lt;br /&gt;     * @param roleName the role to assign&lt;br /&gt;     * @param userName the user to assign role to&lt;br /&gt;     */&lt;br /&gt;    public static void assignRoleToUser(String roleName,String userName){&lt;br /&gt;       String methodName=Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;	     IdentityStore store=OIDOperations.getStoreInstance();&lt;br /&gt;        try {&lt;br /&gt;           Role role= store.searchRole(IdentityStore.SEARCH_BY_NAME,roleName);&lt;br /&gt;           User user= store.searchUser(userName); &lt;br /&gt;           RoleManager rm=store.getRoleManager();&lt;br /&gt;          if(!rm.isGranted(role, user.getPrincipal())){   &lt;br /&gt;           rm.grantRole(role, user.getPrincipal()); &lt;br /&gt;          }&lt;br /&gt;            &lt;br /&gt;        } catch (IMException e) {&lt;br /&gt;          OIDLogger.severe("Exception in "+methodName + "Could not assign role ["+roleName+"] to the user ["+userName +"] because of " +e.getMessage() +" ", e);&lt;br /&gt;          throw new SahajException("Could not assign role ["+roleName+"] to the user ["+userName +"] due to "+e.getMessage());&lt;br /&gt;         &lt;br /&gt;        }&lt;br /&gt;        finally  {&lt;br /&gt;            try{&lt;br /&gt;            store.close();&lt;br /&gt;                }&lt;br /&gt;              catch (IMException e) {&lt;br /&gt;              OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;              }&lt;br /&gt;            }&lt;br /&gt;    }&lt;br /&gt;  /**&lt;br /&gt;     * Assigns the specified role to the user&lt;br /&gt;     * @param roleNames the roles to assign&lt;br /&gt;     * @param userName the user to assign role to&lt;br /&gt;     * @return the set of users who are assigned roles&lt;br /&gt;     */&lt;br /&gt;  public static Set assignRolesToUser(Set roleNames,String userName){&lt;br /&gt;     Set rolesAssigned=new HashSet();&lt;br /&gt;     &lt;br /&gt;     String methodName=Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;     IdentityStore store=OIDOperations.getStoreInstance();&lt;br /&gt;     String roleName=null;&lt;br /&gt;      try {&lt;br /&gt;        User user= store.searchUser(userName); &lt;br /&gt;        Principal userPrincipal=user.getPrincipal(); &lt;br /&gt;        RoleManager rm=store.getRoleManager();&lt;br /&gt;        Iterator it=roleNames.iterator();&lt;br /&gt;        while(it.hasNext()){&lt;br /&gt;         roleName=(String)it.next();&lt;br /&gt;         Role role= store.searchRole(IdentityStore.SEARCH_BY_NAME,roleName);&lt;br /&gt;          if(!rm.isGranted(role, user.getPrincipal())){   &lt;br /&gt;         rm.grantRole(role,userPrincipal); &lt;br /&gt;         rolesAssigned.add(roleName);&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      } catch (IMException e) {&lt;br /&gt;          &lt;br /&gt;        OIDLogger.severe("Exception in "+methodName + "Could not assign role ["+roleName+"] to the user ["+userName +"] because of " +e.getMessage() +" ", e);&lt;br /&gt;        throw new SahajException("Could not assign role ["+roleName+"] to the user ["+userName +"] due to "+e.getMessage());&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;      }&lt;br /&gt;    finally  {&lt;br /&gt;        try{&lt;br /&gt;        store.close();&lt;br /&gt;            }&lt;br /&gt;          catch (IMException e) {&lt;br /&gt;          OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;    &lt;br /&gt;      return rolesAssigned;&lt;br /&gt;  }&lt;br /&gt;  /**&lt;br /&gt;     * Assigns the specified role to the user&lt;br /&gt;     * @param roleName the role to assign&lt;br /&gt;     * @param users the users to assign role to&lt;br /&gt;     * @return The users who are assigned the role&lt;br /&gt;     */&lt;br /&gt;  public static Set assignRoleToUsers(String roleName,Map users){&lt;br /&gt;     Set usersAssigned=new HashSet();&lt;br /&gt;     String methodName=Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;     IdentityStore store=OIDOperations.getStoreInstance();&lt;br /&gt;        Set entrySet = users.entrySet();&lt;br /&gt;        Iterator it=entrySet.iterator();&lt;br /&gt;        String userName=null;&lt;br /&gt;  &lt;br /&gt;      try {&lt;br /&gt;         Role role= store.searchRole(IdentityStore.SEARCH_BY_NAME,roleName);&lt;br /&gt;         RoleManager rm=store.getRoleManager();&lt;br /&gt;        while(it.hasNext()){&lt;br /&gt;          Map.Entry entry=(Map.Entry)it.next();     &lt;br /&gt;          userName=(String)entry.getKey();&lt;br /&gt;          User user= store.searchUser(userName); &lt;br /&gt;            if(!rm.isGranted(role, user.getPrincipal())){   &lt;br /&gt;              rm.grantRole(role, user.getPrincipal()); &lt;br /&gt;              usersAssigned.add(user);&lt;br /&gt;            }&lt;br /&gt;        }  &lt;br /&gt;      } catch (IMException e) {&lt;br /&gt;        OIDLogger.severe("Exception in "+methodName + "Could not assign role ["+roleName+"] to the user ["+userName +"] because of " +e.getMessage() +" ", e);&lt;br /&gt;       }&lt;br /&gt;    finally  {&lt;br /&gt;        try{&lt;br /&gt;        store.close();&lt;br /&gt;            }&lt;br /&gt;          catch (IMException e) {&lt;br /&gt;          OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      return usersAssigned;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;//revoke sample below It is similar to the above mentioned assign case so mentioning a sample operation &lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * To remove the role from user&lt;br /&gt;     * @param roleName the role to remove/ revoke&lt;br /&gt;     * @param userName the user from which to revoke role&lt;br /&gt;     */&lt;br /&gt;    public static void removeRoleFromUser(String roleName,String userName){&lt;br /&gt;          String methodName=Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;          IdentityStore store=OIDOperations.getStoreInstance();&lt;br /&gt;           try {&lt;br /&gt;              Role role= store.searchRole(IdentityStore.SEARCH_BY_NAME,roleName);&lt;br /&gt;               &lt;br /&gt;              User user= store.searchUser(userName); &lt;br /&gt;              RoleManager rm=store.getRoleManager();&lt;br /&gt;             if(rm.isGranted(role, user.getPrincipal())){   &lt;br /&gt;              rm.revokeRole(role, user.getPrincipal()); &lt;br /&gt;             }&lt;br /&gt;           } catch (IMException e) {&lt;br /&gt;             OIDLogger.severe("Exception in "+methodName + "Could not revoke role ["+roleName+"] from the user ["+userName +"] because of " +e.getMessage() +" ", e);&lt;br /&gt;             throw new SahajException("Could not remove role ["+roleName+"] from the user ["+userName +"] due to "+e.getMessage());&lt;br /&gt;             &lt;br /&gt;           }&lt;br /&gt;          finally  {&lt;br /&gt;              try{&lt;br /&gt;              store.close();&lt;br /&gt;                  }&lt;br /&gt;                catch (IMException e) {&lt;br /&gt;                OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;                }&lt;br /&gt;              }&lt;br /&gt;        }&lt;br /&gt;    public static void dropUserWithRoles(String userId){&lt;br /&gt;          UserManager um = null;&lt;br /&gt;          IdentityStore store=null;&lt;br /&gt;          User newUser = null;&lt;br /&gt;           try {&lt;br /&gt;              store=OIDOperations.getStoreInstance();&lt;br /&gt;              User user = store.searchUser(IdentityStore.SEARCH_BY_NAME, userId);&lt;br /&gt;              um=store.getUserManager();&lt;br /&gt;              if (user != null) {&lt;br /&gt;                  //drop user if already present&lt;br /&gt;                  um.dropUser(user);&lt;br /&gt;                  RoleManager rm = store.getRoleManager();&lt;br /&gt;                  Principal userPrincipal= user.getPrincipal();&lt;br /&gt;                  SearchResponse resp=rm.getGrantedRoles(userPrincipal, true);&lt;br /&gt;                  while(resp.hasNext()){&lt;br /&gt;                  rm.revokeRole((Role)resp.next(), user.getPrincipal());&lt;br /&gt;                  }&lt;br /&gt;                }&lt;br /&gt;          }&lt;br /&gt;          catch (IMException e) {&lt;br /&gt;              OIDLogger.info("[dropUser]" +&lt;br /&gt;                            &lt;br /&gt;                            e);&lt;br /&gt;&lt;br /&gt;          }&lt;br /&gt;          finally  {&lt;br /&gt;              try{&lt;br /&gt;              store.close();&lt;br /&gt;                  }&lt;br /&gt;                catch (IMException e) {&lt;br /&gt;                OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;                }&lt;br /&gt;              }&lt;br /&gt;        }&lt;br /&gt;  public static void dropUser(String userId){&lt;br /&gt;        UserManager um = null;&lt;br /&gt;        User newUser = null;&lt;br /&gt;        IdentityStore store=null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;           store =OIDOperations.getStoreInstance();&lt;br /&gt;            User user = store.searchUser(IdentityStore.SEARCH_BY_NAME, userId);&lt;br /&gt;            um=store.getUserManager();&lt;br /&gt;            if (user != null) {&lt;br /&gt;                //drop user if already present&lt;br /&gt;                um.dropUser(user);&lt;br /&gt;              }&lt;br /&gt;        }&lt;br /&gt;        catch (IMException e) {&lt;br /&gt;            OIDLogger.info("[dropUser]" +&lt;br /&gt;                          e);&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;        finally  {&lt;br /&gt;            try{&lt;br /&gt;            store.close();&lt;br /&gt;                }&lt;br /&gt;              catch (IMException e) {&lt;br /&gt;              OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;              }&lt;br /&gt;            }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Gets the userProfile of the logged in user if using ADF security&lt;br /&gt;     * @param approverUser&lt;br /&gt;     * @return&lt;br /&gt;     */&lt;br /&gt;    public static oracle.security.idm.UserProfile getUserProfile(String approverUser) {&lt;br /&gt;      IdentityStore store=OIDOperations.getStoreInstance();&lt;br /&gt;       oracle.security.idm.UserProfile profile=null;&lt;br /&gt;        try {&lt;br /&gt;           User user= store.searchUser(approverUser);&lt;br /&gt;           profile=user.getUserProfile();&lt;br /&gt;            &lt;br /&gt;        } catch (IMException e) {&lt;br /&gt;            OIDLogger.info("Could not find user in OID with supplied Id"+approverUser);&lt;br /&gt;          throw new SahajException(e.getMessage());&lt;br /&gt;        }&lt;br /&gt;      finally  {&lt;br /&gt;          try{&lt;br /&gt;          store.close();&lt;br /&gt;              }&lt;br /&gt;            catch (IMException e) {&lt;br /&gt;            OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;        return profile;&lt;br /&gt;    }&lt;br /&gt;    /**&lt;br /&gt;     * Gets all the roles &lt;br /&gt;     * @return&lt;br /&gt;     */&lt;br /&gt;    public static List getAllRoles(){&lt;br /&gt;          String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;          List returnList=new ArrayList();&lt;br /&gt;          IdentityStore store=OIDOperations.getStoreInstance();&lt;br /&gt;&lt;br /&gt;          try{&lt;br /&gt;             SimpleSearchFilter filter=store.getSimpleSearchFilter(RoleProfile.NAME,SimpleSearchFilter.TYPE_EQUAL,null);&lt;br /&gt;             String wildCardChar=filter.getWildCardChar();&lt;br /&gt;            // Here the default_role is a property this is just a placeholder can be  any pattern you want to search&lt;br /&gt;            filter.setValue(wildCardChar+rb.getString("DEFAULT_ROLE")+wildCardChar);&lt;br /&gt;                       SearchParameters parameters=new SearchParameters(filter,SearchParameters.SEARCH_ROLES_ONLY) ;&lt;br /&gt;             SearchResponse resp=store.searchRoles(Role.SCOPE_ANY,parameters);&lt;br /&gt;             while(resp.hasNext()){&lt;br /&gt;                 Role role=(Role)resp.next();&lt;br /&gt;                           String tempRole=role.getPrincipal().getName();&lt;br /&gt;                           returnList.add(tempRole);&lt;br /&gt;                          }&lt;br /&gt;             store.close();  &lt;br /&gt;           }catch(IMException e){&lt;br /&gt;                 OIDLogger.severe("Exception in "+methodName + " " +e.getMessage() +" ", e);&lt;br /&gt;                 throw new SahajException(e.getMessage());&lt;br /&gt;                 }&lt;br /&gt;          finally  {&lt;br /&gt;              try{&lt;br /&gt;              store.close();&lt;br /&gt;                  }&lt;br /&gt;                catch (IMException e) {&lt;br /&gt;                OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;                }&lt;br /&gt;              }&lt;br /&gt;            &lt;br /&gt;           return returnList;&lt;br /&gt;        }&lt;br /&gt;    /**&lt;br /&gt;     * Fetches all the roles assigned to the user&lt;br /&gt;     * @param userName&lt;br /&gt;     * @return&lt;br /&gt;     */&lt;br /&gt;    public static List getAllUserRoles(String userName, String searchPath) {&lt;br /&gt;      String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;      List returnList=new ArrayList();&lt;br /&gt;      IdentityStoreFactory storeFactory = OIDOperations.getIdentityStoreFactory();&lt;br /&gt;      IdentityStore store=null;&lt;br /&gt;      String[] userSearchBases=   {rb.getString(searchPath)};    &lt;br /&gt;      String[] groupSearchBases=     {rb.getString("group.search.bases")};  &lt;br /&gt;      Hashtable storeEnv=new Hashtable();&lt;br /&gt;      storeEnv.put(OIDIdentityStoreFactory.ADF_IM_SUBSCRIBER_NAME,rb.getString("oidsubscribername"));&lt;br /&gt;      storeEnv.put(OIDIdentityStoreFactory.RT_USER_SEARCH_BASES,userSearchBases);&lt;br /&gt;      storeEnv.put(OIDIdentityStoreFactory.RT_GROUP_SEARCH_BASES,groupSearchBases);&lt;br /&gt;     &lt;br /&gt;       try{&lt;br /&gt;          store = storeFactory.getIdentityStoreInstance(storeEnv);&lt;br /&gt;          User user= store.searchUser(IdentityStore.SEARCH_BY_NAME,userName);&lt;br /&gt;          RoleManager mgr=store.getRoleManager();&lt;br /&gt;          SearchResponse resp= mgr.getGrantedRoles(user.getPrincipal(), false);&lt;br /&gt;           while(resp.hasNext()){&lt;br /&gt;              String name= resp.next().getName();&lt;br /&gt;              returnList.add(name);&lt;br /&gt;               }&lt;br /&gt;    &lt;br /&gt;        }catch(IMException e){&lt;br /&gt;              OIDLogger.severe("Exception in "+methodName + " " +e.getMessage() +" ", e);&lt;br /&gt;              throw new SahajException(e.getMessage());&lt;br /&gt;              }&lt;br /&gt;      finally  {&lt;br /&gt;          try{&lt;br /&gt;          store.close();&lt;br /&gt;              }&lt;br /&gt;            catch (IMException e) {&lt;br /&gt;            OIDLogger.severe("Exception occured in closing store");&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;         &lt;br /&gt;        return returnList;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;*Use to change the passoword for logged in user It uses ADF Security Context to get logged in user&lt;br /&gt;*&lt;br /&gt;**/&lt;br /&gt;  public static void changePasswordForUser(String oldPassword,String newPassword, String userName){&lt;br /&gt;        String methodName =&lt;br /&gt;            java.lang.Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;        SecurityContext securityContext =&lt;br /&gt;            ADFContext.getCurrent().getSecurityContext();&lt;br /&gt;        String user = securityContext.getUserName();&lt;br /&gt;         oidStore= OIDOperations.getStoreInstance();&lt;br /&gt;        try {&lt;br /&gt;            UserManager uMgr = oidStore.getUserManager();&lt;br /&gt;            User authUser =&lt;br /&gt;                uMgr.authenticateUser(user, oldPassword.toCharArray());&lt;br /&gt;&lt;br /&gt;            if (authUser != null) {&lt;br /&gt;                UserProfile profile = authUser.getUserProfile();&lt;br /&gt;&lt;br /&gt;                profile.setPassword( oldPassword.toCharArray(),&lt;br /&gt;                                    newPasswordtoCharArray());&lt;br /&gt;              }&lt;br /&gt;        } catch (IMException e) {&lt;br /&gt;            if (amLogger.isLoggable(Level.SEVERE)) {&lt;br /&gt;                amLogger.severe("[" + methodName +&lt;br /&gt;                                "]  Exception occured due to " + e.getCause(),&lt;br /&gt;                                e);&lt;br /&gt;            }&lt;br /&gt;            throw new Exception(e.getMessage());&lt;br /&gt;        }&lt;br /&gt;      finally  {&lt;br /&gt;          try{&lt;br /&gt;          oidStore.close();&lt;br /&gt;              }&lt;br /&gt;            catch (IMException e) {&lt;br /&gt;            amLogger.severe("Exception occured in closing store");&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Resets the password for user &lt;br /&gt;*&lt;br /&gt;**/&lt;br /&gt;public static void resetPasswordForUser(String userId)&lt;br /&gt;{&lt;br /&gt;        String methodName =&lt;br /&gt;            java.lang.Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;        IdentityStore oidStore = OIDOperations.getStoreInstance();&lt;br /&gt;        User user = null;&lt;br /&gt;        try {&lt;br /&gt;            user = oidStore.searchUser(userId);&lt;br /&gt;            if (user != null) {&lt;br /&gt;                UserProfile userProfile = user.getUserProfile();&lt;br /&gt;                List passwordValues =&lt;br /&gt;                    userProfile.getProperty("userpassword").getValues();&lt;br /&gt;             ModProperty prop =&lt;br /&gt;                    new ModProperty("PASSWORD", passwordValues.get(0),&lt;br /&gt;                                    ModProperty.REMOVE);&lt;br /&gt;                userProfile.setProperty(prop);&lt;br /&gt;                String randomPassword = generateRandomPassword();&lt;br /&gt;                userProfile.setPassword(null, randomPassword.toCharArray());&lt;br /&gt;            }&lt;br /&gt;        } catch (IMException e) {&lt;br /&gt;            amLogger.severe("[" + methodName + "]" +&lt;br /&gt;                            "Exception occured due to ", e);&lt;br /&gt;         &lt;br /&gt;        }&lt;br /&gt;      finally  {&lt;br /&gt;          try{&lt;br /&gt;          oidStore.close();&lt;br /&gt;              }&lt;br /&gt;            catch (IMException e) {&lt;br /&gt;            amLogger.severe("Exception occured in closing store");&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This nested private class is used for configuring and initializing a store instance&lt;br /&gt;     * @author Ramandeep Nanda&lt;br /&gt;     */&lt;br /&gt;  private static final class IdentityStoreConfigurator {&lt;br /&gt;                              private static final IdentityStoreFactory idStoreFactory=initializeFactory();&lt;br /&gt;                           &lt;br /&gt;  &lt;br /&gt;                             private static IdentityStoreFactory initializeFactory(){&lt;br /&gt;                                       String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;                                       IdentityStoreFactoryBuilder builder = new &lt;br /&gt;                                       IdentityStoreFactoryBuilder();&lt;br /&gt;                                       IdentityStoreFactory oidFactory = null;&lt;br /&gt;                                             try {&lt;br /&gt;                                       Hashtable factEnv = new Hashtable();&lt;br /&gt;                                       factEnv.put(OIDIdentityStoreFactory.ST_SECURITY_PRINCIPAL,rb.getString("oidusername"));&lt;br /&gt;                                       factEnv.put(OIDIdentityStoreFactory.ST_SECURITY_CREDENTIALS, rb.getString("oiduserpassword"));&lt;br /&gt;                                       factEnv.put(OIDIdentityStoreFactory.ST_SUBSCRIBER_NAME,rb.getString("oidsubscribername"));&lt;br /&gt;                                       factEnv.put(OIDIdentityStoreFactory.ST_LDAP_URL,rb.getString("ldap.url"));&lt;br /&gt;                                       factEnv.put(OIDIdentityStoreFactory.ST_USER_NAME_ATTR,rb.getString("username.attr"));       &lt;br /&gt;                                       oidFactory = builder.getIdentityStoreFactory("oracle.security.idm.providers.oid.OIDIdentityStoreFactory", factEnv);&lt;br /&gt;                                          }&lt;br /&gt;                                       catch (IMException e) { &lt;br /&gt;                                               OIDLogger.severe("Exception in "+methodName + " " +e.getMessage() +" ", e);&lt;br /&gt;                                     //re throw exception here&lt;br /&gt;                                       }&lt;br /&gt;                                      return oidFactory;       &lt;br /&gt;                                     }    &lt;br /&gt;                             private static  IdentityStore initializeDefaultStore(){&lt;br /&gt;                                       IdentityStore store=null;&lt;br /&gt;                                       String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();&lt;br /&gt;                                       String[] userSearchBases=   {rb.getString("user.search.bases")};    &lt;br /&gt;                                       String[] groupCreateBases=     {rb.getString("group.search.bases")};  &lt;br /&gt;                                       String []usercreate={rb.getString("user.create.bases")};&lt;br /&gt;                                       String [] groupClass={rb.getString("GROUP_CLASSES")};&lt;br /&gt;                                       Hashtable storeEnv=new Hashtable();&lt;br /&gt;                                       storeEnv.put(OIDIdentityStoreFactory.ADF_IM_SUBSCRIBER_NAME,rb.getString("oidsubscribername"));&lt;br /&gt;                                       storeEnv.put(OIDIdentityStoreFactory.RT_USER_SEARCH_BASES,userSearchBases);&lt;br /&gt;                                       storeEnv.put(OIDIdentityStoreFactory.RT_GROUP_SEARCH_BASES,groupCreateBases);&lt;br /&gt;                                       storeEnv.put(OIDIdentityStoreFactory.RT_USER_CREATE_BASES,usercreate);&lt;br /&gt;                                       storeEnv.put(OIDIdentityStoreFactory.RT_USER_SELECTED_CREATEBASE,rb.getString("user.create.bases"));&lt;br /&gt;                                       storeEnv.put(OIDIdentityStoreFactory.RT_GROUP_OBJECT_CLASSES,groupClass); &lt;br /&gt;                                       try{&lt;br /&gt;                                       store = IdentityStoreConfigurator.idStoreFactory.getIdentityStoreInstance(storeEnv);&lt;br /&gt;                                       }  &lt;br /&gt;                               catch (IMException e) { &lt;br /&gt;                                       OIDLogger.severe("Exception in "+methodName + " " +e.getMessage() +" ", e);&lt;br /&gt;                                     // re throw exception here&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;          return  store;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;                             &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The rb instance being used in the code is a static final instance of a resource bundle. &lt;br/&gt;The relevant properties are mentioned below that you can put into your resource bundle. &lt;br /&gt;ldap.url=ldap://your_ldap_server_ip:port &lt;br/&gt;user.create.bases=cn=Users,dc=oracle,dc=com &lt;br/&gt;username.attr=uid &lt;br/&gt;oidusername=userName&lt;br/&gt;#not safe&lt;br/&gt;oiduserpassword=userpass&lt;br/&gt;user.search.bases=cn=Users,dc=oracle,dc=com&lt;br/&gt;group.search.bases=cn=Groups,dc=oracle,dc=com&lt;br/&gt;oidsubscribername=dc=oracle,dc=com&lt;br/&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-2570852223508729079?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/2570852223508729079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/09/opss-adf-security-utility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2570852223508729079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2570852223508729079'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/09/opss-adf-security-utility.html' title='OPSS ADF Security Utility'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1975679868348073310</id><published>2011-09-03T20:20:00.001+05:30</published><updated>2011-09-03T20:21:02.928+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>Adf printable page behaviour in page fragment</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you have a requirement for opening a printable page and also the print dialog and you are using page fragments then you should implement the RegionController interface rather than&amp;nbsp; PagePhaseListener. I had such a requirement and then implemented it using RegionController interface. On any page fragment that you are required to implement this functionality just add an EL expression or a fully classified name of the class that implements the region controller class in the page definition's ControllerClass attribute.&amp;nbsp; The code snippet for the region controller implementation is shown below.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="regionC1"&gt;public boolean refreshRegion(RegionContext regionContext) {&lt;br /&gt;      int refreshFlag=  regionContext.getRefreshFlag();&lt;br /&gt;      &lt;br /&gt;      FacesContext fctx = FacesContext.getCurrentInstance();&lt;br /&gt;      //check internal request parameter&lt;br /&gt;      Map requestMap = fctx.getExternalContext().getRequestMap();&lt;br /&gt;      PhaseId currentPhase=(PhaseId)requestMap.get("oracle.adfinternal.view.faces.lifecycle.CURRENT_PHASE_ID");&lt;br /&gt;     //compare phase&lt;br /&gt;      if(currentPhase.getOrdinal()==PhaseId.RENDER_RESPONSE.getOrdinal()){&lt;br /&gt;      Object showPrintableBehavior =&lt;br /&gt;          requestMap.get("oracle.adfinternal.view.faces.el.PrintablePage");&lt;br /&gt;      if (showPrintableBehavior != null) {&lt;br /&gt;          if (Boolean.TRUE == showPrintableBehavior) {&lt;br /&gt;              ExtendedRenderKitService erks = null;&lt;br /&gt;              erks =&lt;br /&gt;              Service.getRenderKitService(fctx, ExtendedRenderKitService.class);&lt;br /&gt;              //invoke JavaScript from the server&lt;br /&gt;              erks.addScript(fctx, "window.print();");&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;      }&lt;br /&gt;     regionContext.getRegionBinding().refresh(refreshFlag);&lt;br /&gt;     return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean validateRegion(RegionContext regionContext) {&lt;br /&gt;       regionContext.getRegionBinding().validate();&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean isRegionViewable(RegionContext regionContext) {&lt;br /&gt;        &lt;br /&gt;        return regionContext.getRegionBinding().isViewable();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This code checks to see if the phase id of current view is Render Response and if so checks whether show printable page behavior was used and if that is indeed the case, It calls the javascript's print function to print the form.&lt;br /&gt;Hope this will be useful to someone who is trying to implement the functionality in adf page fragment.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-1975679868348073310?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1975679868348073310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/09/adf-printable-page-behaviour-in-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1975679868348073310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1975679868348073310'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/09/adf-printable-page-behaviour-in-page.html' title='Adf printable page behaviour in page fragment'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-6852164769186460451</id><published>2011-08-20T21:47:00.001+05:30</published><updated>2011-08-20T21:49:04.212+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper11g'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF'/><title type='text'>JDeveloper 11g changing type map to oracle</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In &lt;b&gt;JDeveloper 11g&lt;/b&gt;, if you delete the database connection, you will notice that none of the oracle domain types will&amp;nbsp; appear in the drop down when you create new objects. This happens because&amp;nbsp; type map of bc4j components is changed to JAVA. Also this will cause problem in case you try to edit a already existing bc4j component as the type is changed from oracle domain to the corresponding java type.&lt;br /&gt;&lt;br /&gt;To change the type map to oracle, just follow the steps mentioned below:-&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Open your *model.jpx file and find the entry for type map ie _TypeMap.&lt;/li&gt;&lt;li&gt;Remove the aforementioned entry and restart jdeveloper 11g and now you will be able to see the oracle domain types.&lt;/li&gt;&lt;/ul&gt;Hope this will be helpful to anyone facing this issue.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-6852164769186460451?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/6852164769186460451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/08/jdeveloper-11g-changing-type-map-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6852164769186460451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6852164769186460451'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/08/jdeveloper-11g-changing-type-map-to.html' title='JDeveloper 11g changing type map to oracle'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8339474864522970956</id><published>2011-05-10T12:56:00.003+05:30</published><updated>2011-05-10T13:05:16.990+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Logging with SLF4J and logback</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt; SLF4J(Simple logging facade for JAVA)&lt;/b&gt; is a abstraction layer or facade for different logging frameworks like log4j,&lt;b&gt;Logback&lt;/b&gt; etc  which allows you to plugin the desired logging framework at deployment time. Also logback is a framework that implements the SLF4j api so it allows easy switching between different logging frameworks and it also provides more optimized logging than log4j by providing features such as parametrized logging.&lt;br /&gt;To learn more about these frameworks refer to the comprehensive documentation at the following sites:-&lt;br /&gt;1. &lt;a href="http://www.slf4j.org/"&gt;SLF4J &lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://logback.qos.ch/"&gt;Logback&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will here explain how to do logging using &lt;b&gt;SLF4J&lt;/b&gt; and &lt;b&gt;Logback&lt;/b&gt;.&lt;br /&gt;The below mentioned example has the following features provided by the logback implementation. &lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;It has a rolling file appender with capability to archive the log files. The rolling policy for the appender will be configured to archive the log file if its size increases 100MB or at the month's end which ever happens earlier. The archived files will then be zipped.&amp;nbsp;&lt;/li&gt;&lt;li&gt;It uses a &lt;b&gt;MDCInsertingServletFilter&lt;/b&gt; that inserts the following keys into the&lt;b&gt; Mapped Diagnostic Context &lt;/b&gt;:-&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;req.remoteHost:- It is set to the value returned by the getRemoteHost() of the ServletRequest api&lt;/li&gt;&lt;li&gt;req.xForwardedFor:- It is set to the value of the HTTP header X-Forwarded-For. It is useful to identify the originating ip address of the request in case the request is forwarded to the web server by a proxy server or load balancer.&lt;/li&gt;&lt;li&gt;req.requestURI:- To the value returned by getRequestURI().&lt;/li&gt;&lt;li&gt;req.requestURL:- To the value returned by getRequestURL().&lt;/li&gt;&lt;li&gt;req.queryString:- To the value returned by getQueryString().&lt;/li&gt;&lt;li&gt;req.userAgent:- To the value returned by getUserAgent().&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;The encoder pattern which inserts the value obtained from the Mapped Diagnostic Context.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Parametrized Logging &lt;/li&gt;&lt;/ol&gt;You will have to place the following code into a file named as logback.xml in your classpath. The code represents the configuration required for accomplishing the aforementioned features.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:xml" id="lgbck1"&gt;&amp;lt;configuration  debug="true"&amp;gt;&lt;br /&gt; &amp;lt;contextName&amp;gt;Your Context&amp;lt;/contextName&amp;gt;&lt;br /&gt; &amp;lt;appender name="ROLLINGFILE"&lt;br /&gt;  class="ch.qos.logback.core.rolling.RollingFileAppender"&amp;gt;&lt;br /&gt;  &amp;lt;file&amp;gt;/oracle/logs/application.log&amp;lt;/file&amp;gt;&lt;br /&gt;  &amp;lt;append&amp;gt;true&amp;lt;/append&amp;gt;&lt;br /&gt;  &amp;lt;rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"&amp;gt;&lt;br /&gt;   &amp;lt;fileNamePattern&amp;gt;/oracle/archivedapplicationlogs/applicationlog-%d{yyyy-MM}.%i.zip&lt;br /&gt;   &amp;lt;/fileNamePattern&amp;gt;&lt;br /&gt;   &amp;lt;maxHistory&amp;gt;10&amp;lt;/maxHistory&amp;gt;&lt;br /&gt;   &amp;lt;timeBasedFileNamingAndTriggeringPolicy&lt;br /&gt;    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"&amp;gt;&lt;br /&gt;    &amp;lt;maxFileSize&amp;gt;100MB&amp;lt;/maxFileSize&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;/timeBasedFileNamingAndTriggeringPolicy&amp;gt;&lt;br /&gt;  &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;encoder&amp;gt;&lt;br /&gt;   &amp;lt;pattern&amp;gt;Proxy forwarding for %X{req.xForwardedFor} %n %d{dd-mm-yyyy hh:mm:ss}- %-5level %logger{15} - %msg%n&amp;lt;/pattern&amp;gt;&lt;br /&gt;  &amp;lt;/encoder&amp;gt;&lt;br /&gt; &amp;lt;/appender&amp;gt;&lt;br /&gt; &amp;lt;root&amp;gt;&lt;br /&gt;  &amp;lt;appender-ref ref="ROLLINGFILE" /&amp;gt;&lt;br /&gt; &amp;lt;/root&amp;gt;&lt;br /&gt; &amp;lt;logger name="com.blogspot.ramannanda"  level="info"&amp;gt;&lt;br /&gt;  &amp;lt;appender-ref ref="ROLLINGFILE" /&amp;gt;&lt;br /&gt; &amp;lt;/logger&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The above mentioned configuration has a rolling file appender configured with time and size based triggering policy. The file name pattern in itself signifies that the file should be zipped and archived at the end of the month, whereas the time and name based triggering policy signifies the maximum size of the log file after which it will be archived. The MaxHistory attribute signifies the number of archived files to be kept on the system. After which they will be automatically deleted. &lt;/li&gt;&lt;li&gt;The pattern will print the originating ip address in case your application is behind a load-balancer or proxy followed by the time, the level of the log message,the name given to the logger (The name by which it is instantiated by your class) and finally the log message. &lt;/li&gt;&lt;li&gt;The logger can be used by any class under the package com.blogspot.ramannanda and it's level is info so any log messages above or at info level will be logged.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The %X{key} signifies that the value must be taken from the mapped diagnostic context.&amp;nbsp;&lt;/li&gt;&lt;li&gt; The debug=true attribute will print the information during instantiation (using the logback.xml file) and configuration errors will be reported. &lt;/li&gt;&lt;/ul&gt;To use the MDCInsertingServletFilter you will have to configure it in the web.xml configuration.&lt;br /&gt;&lt;pre class="brush:xml" id="webcfg1"&gt;....&lt;br /&gt;&amp;lt;filter&amp;gt;&lt;br /&gt;  &amp;lt;filter-name&amp;gt;MDCInsertingServletFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;  &amp;lt;filter-class&amp;gt;&lt;br /&gt;   ch.qos.logback.classic.helpers.MDCInsertingServletFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt; &amp;lt;/filter&amp;gt;&lt;br /&gt; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;  &amp;lt;filter-name&amp;gt;MDCInsertingServletFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;  &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt; &amp;lt;filter&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now all you need to do enable logging is place the following jars in your classpath logback-classic, logback-core and slf4j-api.jar. The class that uses the logging is mentioned below. It only needs to use the LoggerFactory.getInstance(String loggername) method to get the logger instance. &lt;br /&gt;The following code snippet for a DAO class shows the usage. &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="lgbck1"&gt;package com.blogspot.ramannanda.db;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;&lt;br /&gt;public class FileStoreDAO {&lt;br /&gt;public static Logger logger=(Logger) LoggerFactory.getLogger("com.blogspot.ramannanda.db.FileStoreDAO");&lt;br /&gt;.....&lt;br /&gt;public void removeData(String fileName){&lt;br /&gt; Connection conn = null;&lt;br /&gt; PreparedStatement pstmt = null;&lt;br /&gt; &lt;br /&gt;  try{&lt;br /&gt;      conn = new SahajDBConnection();&lt;br /&gt;  pstmt = conn.getPreparedStatement("delete from temp_table where file_name = ?");&lt;br /&gt;  pstmt.setString(1, fileName);&lt;br /&gt;  int count=pstmt.executeUpdate();&lt;br /&gt;             logger.info(" The user has deleted  {} file {} ",count,fileName); &lt;br /&gt;  }&lt;br /&gt;  catch (SQLException e) {&lt;br /&gt;         logger.error("An exception has occured {} {} while deleting files", e, e.getMessage());&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt;  finally {&lt;br /&gt;   try {&lt;br /&gt;    if (pstmt != null) {&lt;br /&gt;     pstmt.close();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    conn.closeConnection();&lt;br /&gt;   } catch (Exception e1) {&lt;br /&gt;logger.error("An exception has occured while closing connection or prepared statement {}", e1);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;.....&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;The above code shows the usage of parametrized logging provided by logback implementation.  The values in {} are replaced by the parameters at run-time if needed. Also the number of parameters that can be specified is not limited to 1 as can be seen from the code above. &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-8339474864522970956?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/8339474864522970956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/05/logging-with-slf4j-and-logback.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8339474864522970956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8339474864522970956'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/05/logging-with-slf4j-and-logback.html' title='Logging with SLF4J and logback'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-9091772015887394836</id><published>2011-04-25T19:50:00.008+05:30</published><updated>2011-05-03T20:38:50.985+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><title type='text'>Enabling caching in REST</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Ideally the resources like images, flash files etc should be cached on the client browser or proxy server to reduce server load and reduce bandwidth consumption. In this post i will explain on how one can enable caching of these resources if they are exposed as restful resources using JERSEY Restful framework. &lt;br /&gt;&lt;br /&gt;To enable caching of resources by proxy server or by client you need to keep a &lt;b&gt;last modified date&lt;/b&gt; column in your database table which is updated if you upload or modify the content. The solution that i am discussing over here is as follows :-&lt;br /&gt;&lt;br /&gt;1. If it is a initial request for the resource we will fetch the information from a data source and then build a response setting the last modified property on ResponseBuilder&amp;nbsp; along with the max age value for CacheControl header.&lt;br /&gt;&lt;br /&gt;2. The cached content will be forced to expire after 5 minutes after which if a request for a resource is sent to the proxy server it will be forwarded to the container, when the request is received by the container we only need to compare the modified time of the resource with the value in the request header,Only if the resource has indeed been changed will we build a new response(setting the aforementioned header values) otherwise we will tell the client to reuse the cached content.&lt;br /&gt;&lt;br /&gt;The above solution will ensure that a client will cache the response for 5 minutes and only if the content has been changed during these 5 minutes will it be re-fetched from the data source. This solution will drastically reduce the load on server and the client side. &lt;br /&gt;&lt;br /&gt;The necessary code to accomplish this is mentioned below:-&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="rf1"&gt;@Path("/") &lt;br /&gt;public class FileResource {&lt;br /&gt; /** &lt;br /&gt;sets a 5 minutes expiry time&lt;br /&gt;&lt;br /&gt;**/&lt;br /&gt; public ResponseBuilder setExpiry(ResponseBuilder rbuilder){&lt;br /&gt;  int maxAge;&lt;br /&gt;  GregorianCalendar now=new GregorianCalendar();&lt;br /&gt;                //trims the milliseconds&lt;br /&gt;  maxAge=(int) ((now.getTimeInMillis()/1000L)+(5*60));&lt;br /&gt;  CacheControl cc=new CacheControl();&lt;br /&gt;  cc.setMaxAge(maxAge);&lt;br /&gt;  rbuilder.cacheControl(cc);&lt;br /&gt;  return rbuilder;&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param filename passed in the get request&lt;br /&gt;     * @returns builds and returns a response&lt;br /&gt;     * &lt;br /&gt;     *&lt;br /&gt;     **/       &lt;br /&gt; @GET&lt;br /&gt; @Path("/files/{filename}")&lt;br /&gt; @Produces(MediaType.WILDCARD)&lt;br /&gt; public Response returnFileAsStream(@Context Request request,@PathParam("filename") String fileName){&lt;br /&gt;  FileStoreDAO ftDAO=FileStoreDAO.getInstance();&lt;br /&gt;  FileUtility futil=FileUtility.getInstance();&lt;br /&gt;  Date lastModified=ftDAO.getLastModifiedTime(fileName);&lt;br /&gt;  // re-validate whether file has changed since last modified time&lt;br /&gt;  ResponseBuilder  respBuilder=request.evaluatePreconditions(lastModified);&lt;br /&gt;  if(respBuilder!=null){&lt;br /&gt;                        //sets 5 minute cache expiry time&lt;br /&gt;   return setExpiry(respBuilder).build();&lt;br /&gt;   &lt;br /&gt;   }&lt;br /&gt;  else{&lt;br /&gt;            //reads the file  and sets its value into a DTO &lt;br /&gt;     FileDTO fdto=ftDAO.readFile(fileName);&lt;br /&gt;  if(fdto!=null){&lt;br /&gt;                String contentType=fdto.getMime();&lt;br /&gt;  InputStream is=fdto.getFileData();&lt;br /&gt;  respBuilder=Response.ok(is,contentType);&lt;br /&gt;  //sets the last modified header value&lt;br /&gt;                respBuilder.lastModified(lastModified);&lt;br /&gt;  return setExpiry(respBuilder).build();&lt;br /&gt;     &lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above code creates the response using the response builder, sets the max age value in  cache control header and the value for the last modified header for the response. &lt;br /&gt;&lt;br /&gt;The code from the DAO layer is shown below that shows a important point about HTTP proxy, the proxy does not handle milliseconds so we must set the value for milliseconds to 0 when comparing the last modified date value otherwise the comparison would never succeed. &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="rf1"&gt;/**&lt;br /&gt;  * @param fileName the filename &lt;br /&gt;  * @return the time truncated to seconds&lt;br /&gt;  */&lt;br /&gt; public java.util.Date getLastModifiedTime(String fileName){&lt;br /&gt;       //get prepared statement and execute a query&lt;br /&gt;         pstmt=conn.getPreparedStatement("select last_mod_date from editor_file_store where file_name= ?");&lt;br /&gt;         pstmt.setString(1,fileName);&lt;br /&gt;         //populate result set&lt;br /&gt;         rs=pstmt.executeQuery();&lt;br /&gt;    &lt;br /&gt;      if(rs.next()){&lt;br /&gt;       sqlDate= rs.getDate(1);  &lt;br /&gt;      }&lt;br /&gt;          //set this value on a calendar variable and set the millisecond to 0&lt;br /&gt;           cal.setTime(sqlDate);&lt;br /&gt;  cal.set(Calendar.MILLISECOND, 0);&lt;br /&gt;          &lt;br /&gt;          &lt;br /&gt;          return cal.getTime();&lt;br /&gt;          catch (SQLException e) {&lt;br /&gt;   logger.log("Exception occured"+ e.getMessage());&lt;br /&gt;  }&lt;br /&gt;          finally{&lt;br /&gt;         // close result set and connection&lt;br /&gt; try {&lt;br /&gt;  if(rs!=null){&lt;br /&gt;   rs.close();&lt;br /&gt;  }&lt;br /&gt;    if (pstmt != null) {&lt;br /&gt;     pstmt.close();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    conn.closeConnection();&lt;br /&gt;           }&lt;br /&gt;         }&lt;br /&gt;       catch (SQLException e1) {&lt;br /&gt;    logger.log( "An error occured due to "+e1.getMessage());&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;      return cal.getTime();&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;After changing the above code you can try using firebug for firefox and observe the values for the request and response headers in the net tab. You will notice the values for cache control and last-modified headers and the fact that content needs to be resent only in case it has been modified. &lt;br /&gt;&lt;br /&gt;Hope this tutorial was helpful, kindly report any error that you may find it is duly appreciated. &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-9091772015887394836?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/9091772015887394836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/04/enabling-caching-of-response-in-rest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/9091772015887394836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/9091772015887394836'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/04/enabling-caching-of-response-in-rest.html' title='Enabling caching in REST'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-5541797248866187929</id><published>2011-04-23T19:26:00.003+05:30</published><updated>2011-04-27T01:45:32.553+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='jsf'/><title type='text'>Content Management System (Tiny MCE ,Richfaces and Jersey)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In this post i will explain on how one can easily create a Content Management System using Tiny MCE , Richfaces and Jersey. This application as a whole can then be used to serve the content dynamically and can be integrated with your site.&lt;br /&gt;&lt;br /&gt;The usage of three components is mentioned below:-&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Tiny MCE :- A javascript based WYSIWYG editor&amp;nbsp; for editing HTML content. This will serve as a&amp;nbsp; HTML editor for CMS system.&lt;/li&gt;&lt;li&gt;Jersey :- This framework will provide a way to expose the content as a Restful resource. The content will also be cached for performance.&lt;/li&gt;&lt;li&gt;RichFaces:- This JSF framework will provide us with components for uploading the file and previewing the content of the file.&lt;/li&gt;&lt;/ol&gt;I have already covered the file uploading part in the &lt;a href="http://ramannanda.blogspot.com/2010/10/richfaces-file-upload-tutorial.html"&gt; RichFaces file upload tutorial&amp;nbsp; &lt;/a&gt;, Now that the file has been uploaded in to the database , We have to enable the previewing of the file. The file preview feature mentioned below will enable viewing of flash files, images and movies. This is actually a pretty simple preview page with the option of deleting the file contents and retrieving the stored file URL.&lt;/div&gt;&lt;pre class="brush:xml" id="jsp-code"&gt;&amp;lt;f:view &amp;gt;&lt;br /&gt;&amp;lt;h:form id="vup1"&amp;gt; &lt;br /&gt;.....  &lt;br /&gt;   &amp;lt;h:panelGrid columns="1" columnClasses="top,top"&amp;gt;&lt;br /&gt;           &lt;br /&gt;              &amp;lt;h:panelGroup id="info"&amp;gt;&lt;br /&gt;              &amp;lt;rich:panel bodyClass="info"&amp;gt;&lt;br /&gt;                   &lt;br /&gt;                    &amp;lt;rich:dataGrid columns="2" ajaxKeys="#{viewUploadedFilesBacking.files}" value="#{viewUploadedFilesBacking.files}"&lt;br /&gt;                        var="file"  rowKeyVar="row"&amp;gt;&lt;br /&gt;                      &amp;lt;h:selectBooleanCheckbox value="#{file.selected}"&amp;gt;&amp;lt;/h:selectBooleanCheckbox&amp;gt;&lt;br /&gt;                       &amp;lt;rich:spacer width="2" /&amp;gt;&lt;br /&gt;                       &amp;lt;rich:panel bodyClass="rich-laguna-panel-no-header"&amp;gt;&lt;br /&gt;                            &amp;lt;h:panelGrid columns="3"&amp;gt;&lt;br /&gt;                                &amp;lt;a4j:mediaOutput  element="#{file.elementType}"  uriAttribute="#{file.uriAttr}" type="#{file.mime}" mimeType="#{file.mime}" &lt;br /&gt;                                    createContent="#{viewUploadedFilesBacking.paint}"  value="#{row}"&lt;br /&gt;                                    style="width:150px; height:150px;" cacheable="false"&amp;gt;&lt;br /&gt;                                    &lt;br /&gt;                                 &amp;lt;/a4j:mediaOutput&amp;gt;&lt;br /&gt;                                &lt;br /&gt;                             &amp;lt;h:panelGrid columns="2"&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText value="File type:" /&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText value="#{file.mime}"/&amp;gt;&lt;br /&gt;                                     &amp;lt;h:outputText value="File URL:" /&amp;gt;&lt;br /&gt;                                       &amp;lt;h:inputTextarea  value="#{file.fullName}" readonly="true" cols="20" rows="2" style="overflow:auto"&amp;gt;&amp;lt;/h:inputTextarea&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText value="File Length(Kb):" /&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText  value="#{file.lengthInKb}" /&amp;gt;&lt;br /&gt;                                &amp;lt;/h:panelGrid&amp;gt;&lt;br /&gt;                            &amp;lt;/h:panelGrid&amp;gt;&lt;br /&gt;                        &amp;lt;/rich:panel&amp;gt;&lt;br /&gt;                    &amp;lt;/rich:dataGrid&amp;gt;&lt;br /&gt;                &amp;lt;/rich:panel&amp;gt;&lt;br /&gt;                &amp;lt;rich:spacer height="3"/&amp;gt;&lt;br /&gt;                &amp;lt;br /&amp;gt;&lt;br /&gt;               &lt;br /&gt;            &amp;lt;/h:panelGroup&amp;gt;&lt;br /&gt;        &amp;lt;/h:panelGrid&amp;gt;&lt;br /&gt;&amp;lt;/h:form&amp;gt;&lt;br /&gt;&amp;lt;f:view&amp;gt;&lt;br /&gt;&lt;/pre&gt;The code above just shows the usage of a4j:mediaoutput tag that is used to render images,flash files etc. The code mentioned below shows the backing bean that fetches the relevant information.&lt;br /&gt;&lt;pre class="brush:java" id="vupb1"&gt;//imports here &lt;br /&gt;public class ViewUploadedFilesBacking implements Serializable{&lt;br /&gt;&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt; //List of DTO's each representing a file &lt;br /&gt; private ArrayList&amp;lt;FileDTO&amp;gt; files = new ArrayList&amp;lt;FileDTO&amp;gt;();&lt;br /&gt; //Selection option for selecting all files&lt;br /&gt;    private List&amp;lt;SelectItem&amp;gt; selectOptions=new ArrayList&amp;lt;SelectItem&amp;gt;();&lt;br /&gt;    private int selectedOption;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;    public List&amp;lt;SelectItem&amp;gt; getSelectOptions() {&lt;br /&gt;  return selectOptions;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setSelectOptions(List&amp;lt;SelectItem&amp;gt; selectOptions) {&lt;br /&gt;  this.selectOptions = selectOptions;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static String trimFilePath(String fileName) {&lt;br /&gt;        return fileName.substring(fileName.lastIndexOf("/") + &lt;br /&gt;                                  1).substring(fileName.lastIndexOf("\\") + 1);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public ViewUploadedFilesBacking() {&lt;br /&gt;     displayALL();&lt;br /&gt;     this.setSelectOptions(populateSelection());&lt;br /&gt;       }&lt;br /&gt;    public String performSelectionChange(){&lt;br /&gt;     if(selectedOption==0){&lt;br /&gt;            return ""; &lt;br /&gt;     }&lt;br /&gt;     if(selectedOption==1){&lt;br /&gt;      for (int i = 0; i &amp;lt; files.size(); i++) {&lt;br /&gt;          files.get(i).setSelected(true);&lt;br /&gt;      }&lt;br /&gt;      return "";&lt;br /&gt;          &lt;br /&gt;            }&lt;br /&gt;     else{&lt;br /&gt;      for (int i = 0; i &amp;lt; files.size(); i++) {&lt;br /&gt;          files.get(i).setSelected(false);&lt;br /&gt;              }&lt;br /&gt;      return "";&lt;br /&gt;     }&lt;br /&gt;    &lt;br /&gt;    } &lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public int getSelectedOption() {&lt;br /&gt;  return selectedOption;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public void setSelectedOption(int selectedOption) {&lt;br /&gt;  this.selectedOption = selectedOption;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;    private List&amp;lt;SelectItem&amp;gt; populateSelection() {&lt;br /&gt;     List&amp;lt;SelectItem&amp;gt; tempList=new ArrayList&amp;lt;SelectItem&amp;gt;();&lt;br /&gt;  SelectItem item=new SelectItem(0,"-----Select------");&lt;br /&gt;  tempList.add(item);&lt;br /&gt;  item=new SelectItem(1,"Select ALL");&lt;br /&gt;  tempList.add(item);&lt;br /&gt;  item=new SelectItem(2,"Deselect ALL");&lt;br /&gt;  tempList.add(item);&lt;br /&gt;  return tempList;&lt;br /&gt; }&lt;br /&gt;    //&lt;br /&gt;&lt;br /&gt;    public void paint(OutputStream stream, Object object) throws IOException {&lt;br /&gt;        stream.write(getFiles().get((Integer)object).getData());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;   public void displayALL(){&lt;br /&gt;    FileStoreDAO fdao = FileStoreDAO.getInstance();&lt;br /&gt;       files=fdao.getFiles();&lt;br /&gt;           &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String deleteData() {&lt;br /&gt;      FileStoreDAO fdao = FileStoreDAO.getInstance();&lt;br /&gt;      FileUtility util=FileUtility.getInstance();&lt;br /&gt;      Iterator it=files.listIterator();&lt;br /&gt;      int i=0;&lt;br /&gt;     while(it.hasNext()) {&lt;br /&gt;      &lt;br /&gt;      FileDTO fdto=(FileDTO)it.next();&lt;br /&gt;      if(fdto.getSelected()){&lt;br /&gt;            fdao.removeData(ViewUploadedFilesBacking.trimFilePath(fdto.getName()));&lt;br /&gt;            util.deleteFile(ViewUploadedFilesBacking.trimFilePath(fdto.getName()));&lt;br /&gt;     it.remove();&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;      &lt;br /&gt;        }&lt;br /&gt;     FacesContext context = FacesContext.getCurrentInstance();&lt;br /&gt;     String viewId = context.getViewRoot().getViewId();&lt;br /&gt;     ViewHandler handler = context.getApplication().getViewHandler();&lt;br /&gt;     UIViewRoot root = handler.createView(context, viewId);&lt;br /&gt;     root.setViewId(viewId);&lt;br /&gt;     context.setViewRoot(root);&lt;br /&gt;     &lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public long getTimeStamp() {&lt;br /&gt;        return System.currentTimeMillis();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public ArrayList&amp;lt;FileDTO&amp;gt; getFiles() {&lt;br /&gt;        return files;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setFiles(ArrayList&amp;lt;FileDTO&amp;gt; files) {&lt;br /&gt;        this.files = files;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The relevant part of DAO for retrieving the file is mentioned below.&lt;br /&gt;&lt;pre class="brush:java" id="vupb1"&gt;//fetch records by executing prepared statement&lt;br /&gt;rs=pstmt.executeQuery();&lt;br /&gt;   FileDTO fdto=null;&lt;br /&gt;   byte b[]=null;&lt;br /&gt;   while(rs.next())&lt;br /&gt;   {&lt;br /&gt;    fdto=new FileDTO();&lt;br /&gt;    int size=Integer.parseInt(rs.getString("file_size"));&lt;br /&gt;    fdto.setLength(size);&lt;br /&gt;    fdto.setLengthInKb((int)(size/1024));&lt;br /&gt;    b=new byte[size];&lt;br /&gt;    rs.getBinaryStream("file_data").read(b);&lt;br /&gt;    fdto.setData(b);&lt;br /&gt;    String contentType=rs.getString("file_type");&lt;br /&gt;    fdto.setMime(contentType);&lt;br /&gt;      if(contentType.contains("image")){&lt;br /&gt;            fdto.setElementType("img");&lt;br /&gt;            fdto.setUriAttr("src");&lt;br /&gt;           }&lt;br /&gt;           else if(contentType.contains("flash")){&lt;br /&gt;            fdto.setElementType("object");&lt;br /&gt;            fdto.setUriAttr("data");&lt;br /&gt;           }&lt;br /&gt;           else if(contentType.contains("javascript")){&lt;br /&gt;            fdto.setElementType("script");&lt;br /&gt;            fdto.setUriAttr("src");&lt;br /&gt;           }&lt;br /&gt;           else{&lt;br /&gt;            fdto.setElementType("img");&lt;br /&gt;            fdto.setUriAttr("src");&lt;br /&gt;           }&lt;br /&gt;ResourceBundle rb = &lt;br /&gt;                ResourceBundle.getBundle("bundle location here");&lt;br /&gt;&lt;br /&gt; fdto.setFullName(rb.getString("context root")+"rest servlet path"+rs.getString("file_name"));&lt;br /&gt; fdto.setName(rs.getString("file_name"));&lt;br /&gt; files.add(fdto);&lt;br /&gt;return files;&lt;br /&gt;.....&lt;br /&gt;&lt;/pre&gt;The thing to note in the above code is the element type and URI attribute properties these will be used by the a4j media output tag to render the file such as flash, images etc.&lt;br /&gt;&lt;br /&gt;The FileDTO class is mentioned below &lt;br /&gt;&lt;pre class="brush:java" id="vupb1"&gt;public class FileDTO {&lt;br /&gt;    private String fullName;&lt;br /&gt;    private String uriAttr;&lt;br /&gt;    private int lengthInKb;&lt;br /&gt;    private String Name;&lt;br /&gt;    private String mime;&lt;br /&gt;    private Boolean selected;&lt;br /&gt;    private String fileName;&lt;br /&gt;    private long length;&lt;br /&gt;    private byte[]data;&lt;br /&gt;&lt;br /&gt;    public  FileDTO(){&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    public int getLengthInKb() {&lt;br /&gt;  return lengthInKb;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setLengthInKb(int lengthInKb) {&lt;br /&gt;  this.lengthInKb = lengthInKb;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getUriAttr() {&lt;br /&gt;  return uriAttr;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setUriAttr(String uriAttr) {&lt;br /&gt;  this.uriAttr = uriAttr;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getFullName() {&lt;br /&gt;  return fullName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setFullName(String fullName) {&lt;br /&gt;  this.fullName = fullName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    public Boolean getSelected() {&lt;br /&gt;  return selected;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setSelected(Boolean selected) {&lt;br /&gt;  this.selected = selected;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private String elementType;&lt;br /&gt; public String getElementType() {&lt;br /&gt;  return elementType;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setElementType(String elementType) {&lt;br /&gt;  this.elementType = elementType;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;    public String getFileName() {&lt;br /&gt;  return fileName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setFileName(String fileName) {&lt;br /&gt;  this.fileName = fileName;&lt;br /&gt; }&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    public void setData(byte []b){&lt;br /&gt;     this.data=b;&lt;br /&gt;    &lt;br /&gt;    }&lt;br /&gt;    public byte[] getData(){&lt;br /&gt;     &lt;br /&gt;     return data;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public void setMime(String mime) {&lt;br /&gt;  this.mime = mime;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public String getName() {&lt;br /&gt;        return Name;&lt;br /&gt;    }&lt;br /&gt;    public void setName(String name) {&lt;br /&gt;        Name = name;&lt;br /&gt;    &lt;br /&gt;    }&lt;br /&gt;    public long getLength() {&lt;br /&gt;        return length;&lt;br /&gt;    }&lt;br /&gt;    public void setLength(long length) {&lt;br /&gt;        this.length = length;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public String getMime(){&lt;br /&gt;        return mime;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now that previewing and uploading is done, we can now use the uploaded files and create our own html pages on the fly and expose these pages as rest resources. &lt;br /&gt;The jsf code for using tiny mce is mentioned below. Note that here there is no option of creating a file, this can easily be added. The code below shows how to edit a file that is already stored in the database.&lt;br /&gt;&lt;pre class="brush:xml" id="eb1"&gt;// taglib imports go here &lt;br /&gt;&amp;lt;f:view&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="tiny_mce/tiny_mce.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;//valid elements tag is there to ensure that tiny mce does not strip these tags &lt;br /&gt;//off as invalid html this is crucial.&lt;br /&gt;&lt;br /&gt; tinyMCE.init({&lt;br /&gt; // General options&lt;br /&gt; mode : "exact",&lt;br /&gt; elements:"form1:data",&lt;br /&gt; theme : "advanced",&lt;br /&gt; skin : "o2k7",&lt;br /&gt; cleanup : true,&lt;br /&gt; &lt;br /&gt; valid_elements:"blink,"&lt;br /&gt;  +"a[accesskey|charset|class|coords|dir&amp;lt;ltr?rtl|href|hreflang|id|lang|name"&lt;br /&gt;    +"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev"&lt;br /&gt;    +"|shape&amp;lt;circle?default?poly?rect|style|tabindex|title|target|type],"&lt;br /&gt;  +"abbr[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"acronym[class|dir&amp;lt;ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"address[class|align|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"applet[align&amp;lt;bottom?left?middle?right?top|alt|archive|class|code|codebase"&lt;br /&gt;    +"|height|hspace|id|name|object|style|title|vspace|width],"&lt;br /&gt;  +"area[accesskey|alt|class|coords|dir&amp;lt;ltr?rtl|href|id|lang|nohref&amp;lt;nohref"&lt;br /&gt;    +"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup"&lt;br /&gt;    +"|shape&amp;lt;circle?default?poly?rect|style|tabindex|title|target],"&lt;br /&gt;  +"base[href|target],"&lt;br /&gt;  +"basefont[color|face|id|size],"&lt;br /&gt;  +"bdo[class|dir&amp;lt;ltr?rtl|id|lang|style|title],"&lt;br /&gt;  +"big[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"blockquote[cite|class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick"&lt;br /&gt;    +"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"&lt;br /&gt;    +"|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"body[alink|background|bgcolor|class|dir&amp;lt;ltr?rtl|id|lang|link|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink],"&lt;br /&gt;  +"br[class|clear&amp;lt;all?left?none?right|id|style|title],"&lt;br /&gt;  +"button[accesskey|class|dir&amp;lt;ltr?rtl|disabled&amp;lt;disabled|id|lang|name|onblur"&lt;br /&gt;    +"|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown"&lt;br /&gt;    +"|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type"&lt;br /&gt;    +"|value],"&lt;br /&gt;  +"caption[align&amp;lt;bottom?left?right?top|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"center[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"cite[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"code[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"col[align&amp;lt;center?char?justify?left?right|char|charoff|class|dir&amp;lt;ltr?rtl|id"&lt;br /&gt;    +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"&lt;br /&gt;    +"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"&lt;br /&gt;    +"|valign&amp;lt;baseline?bottom?middle?top|width],"&lt;br /&gt;  +"colgroup[align&amp;lt;center?char?justify?left?right|char|charoff|class|dir&amp;lt;ltr?rtl"&lt;br /&gt;    +"|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"&lt;br /&gt;    +"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"&lt;br /&gt;    +"|valign&amp;lt;baseline?bottom?middle?top|width],"&lt;br /&gt;  +"dd[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"del[cite|class|datetime|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"dfn[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"dir[class|compact&amp;lt;compact|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"div[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"dl[class|compact&amp;lt;compact|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"dt[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"em/i[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"fieldset[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"font[class|color|dir&amp;lt;ltr?rtl|face|id|lang|size|style|title],"&lt;br /&gt;  +"form[accept|accept-charset|action|class|dir&amp;lt;ltr?rtl|enctype|id|lang"&lt;br /&gt;    +"|method&amp;lt;get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit"&lt;br /&gt;    +"|style|title|target],"&lt;br /&gt;  +"frame[class|frameborder|id|longdesc|marginheight|marginwidth|name"&lt;br /&gt;    +"|noresize&amp;lt;noresize|scrolling&amp;lt;auto?no?yes|src|style|title],"&lt;br /&gt;  +"frameset[class|cols|id|onload|onunload|rows|style|title],"&lt;br /&gt;  +"h1[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"h2[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"h3[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"h4[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"h5[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"h6[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"head[dir&amp;lt;ltr?rtl|lang|profile],"&lt;br /&gt;  +"hr[align&amp;lt;center?left?right|class|dir&amp;lt;ltr?rtl|id|lang|noshade&amp;lt;noshade|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|size|style|title|width],"&lt;br /&gt;  +"html[dir&amp;lt;ltr?rtl|lang|version],"&lt;br /&gt;  +"iframe[align&amp;lt;bottom?left?middle?right?top|class|frameborder|height|id"&lt;br /&gt;    +"|longdesc|marginheight|marginwidth|name|scrolling&amp;lt;auto?no?yes|src|style"&lt;br /&gt;    +"|title|width],"&lt;br /&gt;  +"img[align&amp;lt;bottom?left?middle?right?top|alt|border|class|dir&amp;lt;ltr?rtl|height"&lt;br /&gt;    +"|hspace|id|ismap&amp;lt;ismap|lang|longdesc|name|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|src|style|title|usemap|vspace|width],"&lt;br /&gt;  +"input[accept|accesskey|align&amp;lt;bottom?left?middle?right?top|alt"&lt;br /&gt;    +"|checked&amp;lt;checked|class|dir&amp;lt;ltr?rtl|disabled&amp;lt;disabled|id|ismap&amp;lt;ismap|lang"&lt;br /&gt;    +"|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"&lt;br /&gt;    +"|readonly&amp;lt;readonly|size|src|style|tabindex|title"&lt;br /&gt;    +"|type&amp;lt;button?checkbox?file?hidden?image?password?radio?reset?submit?text"&lt;br /&gt;    +"|usemap|value],"&lt;br /&gt;  +"ins[cite|class|datetime|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"isindex[class|dir&amp;lt;ltr?rtl|id|lang|prompt|style|title],"&lt;br /&gt;  +"kbd[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"label[accesskey|class|dir&amp;lt;ltr?rtl|for|id|lang|onblur|onclick|ondblclick"&lt;br /&gt;    +"|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"&lt;br /&gt;    +"|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"legend[align&amp;lt;bottom?left?right?top|accesskey|class|dir&amp;lt;ltr?rtl|id|lang"&lt;br /&gt;    +"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"li[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type"&lt;br /&gt;    +"|value],"&lt;br /&gt;  +"link[charset|class|dir&amp;lt;ltr?rtl|href|hreflang|id|lang|media|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type],"&lt;br /&gt;  +"map[class|dir&amp;lt;ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"menu[class|compact&amp;lt;compact|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"meta[content|dir&amp;lt;ltr?rtl|http-equiv|lang|name|scheme],"&lt;br /&gt;  +"noframes[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"noscript[class|dir&amp;lt;ltr?rtl|id|lang|style|title],"&lt;br /&gt;  +"object[align&amp;lt;bottom?left?middle?right?top|archive|border|class|classid"&lt;br /&gt;    +"|codebase|codetype|data|declare|dir&amp;lt;ltr?rtl|height|hspace|id|lang|name"&lt;br /&gt;    +"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap"&lt;br /&gt;    +"|vspace|width],"&lt;br /&gt;  +"ol[class|compact&amp;lt;compact|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|start|style|title|type],"&lt;br /&gt;  +"optgroup[class|dir&amp;lt;ltr?rtl|disabled&amp;lt;disabled|id|label|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"option[class|dir&amp;lt;ltr?rtl|disabled&amp;lt;disabled|id|label|lang|onclick|ondblclick"&lt;br /&gt;    +"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"&lt;br /&gt;    +"|onmouseover|onmouseup|selected&amp;lt;selected|style|title|value],"&lt;br /&gt;  +"p[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"param[id|name|type|value|valuetype&amp;lt;DATA?OBJECT?REF],"&lt;br /&gt;  +"pre/listing/plaintext/xmp[align|class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick"&lt;br /&gt;    +"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"&lt;br /&gt;    +"|onmouseover|onmouseup|style|title|width],"&lt;br /&gt;  +"q[cite|class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"s[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"samp[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"script[charset|defer|language|src|type],"&lt;br /&gt;  +"select[class|dir&amp;lt;ltr?rtl|disabled&amp;lt;disabled|id|lang|multiple&amp;lt;multiple|name"&lt;br /&gt;    +"|onblur|onchange|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style"&lt;br /&gt;    +"|tabindex|title],"&lt;br /&gt;  +"small[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"span[align&amp;lt;center?justify?left?right|class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"strike[class|class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title],"&lt;br /&gt;  +"strong/b[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"style[dir&amp;lt;ltr?rtl|lang|media|title|type],"&lt;br /&gt;  +"sub[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"sup[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],"&lt;br /&gt;  +"table[align&amp;lt;center?left?right|bgcolor|border|cellpadding|cellspacing|class"&lt;br /&gt;    +"|dir&amp;lt;ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules"&lt;br /&gt;    +"|style|summary|title|width|bordercolor],"&lt;br /&gt;  +"tbody[align&amp;lt;center?char?justify?left?right|char|class|charoff|dir&amp;lt;ltr?rtl|id"&lt;br /&gt;    +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"&lt;br /&gt;    +"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"&lt;br /&gt;    +"|valign&amp;lt;baseline?bottom?middle?top],"&lt;br /&gt;  +"td[abbr|align&amp;lt;center?char?justify?left?right|axis|bgcolor|char|charoff|class"&lt;br /&gt;    +"|colspan|dir&amp;lt;ltr?rtl|headers|height|id|lang|nowrap&amp;lt;nowrap|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|rowspan|scope&amp;lt;col?colgroup?row?rowgroup"&lt;br /&gt;    +"|style|title|valign&amp;lt;baseline?bottom?middle?top|width],"&lt;br /&gt;  +"textarea[accesskey|class|cols|dir&amp;lt;ltr?rtl|disabled&amp;lt;disabled|id|lang|name"&lt;br /&gt;    +"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"&lt;br /&gt;    +"|readonly&amp;lt;readonly|rows|style|tabindex|title],"&lt;br /&gt;  +"tfoot[align&amp;lt;center?char?justify?left?right|char|charoff|class|dir&amp;lt;ltr?rtl|id"&lt;br /&gt;    +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"&lt;br /&gt;    +"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"&lt;br /&gt;    +"|valign&amp;lt;baseline?bottom?middle?top],"&lt;br /&gt;  +"th[abbr|align&amp;lt;center?char?justify?left?right|axis|bgcolor|char|charoff|class"&lt;br /&gt;    +"|colspan|dir&amp;lt;ltr?rtl|headers|height|id|lang|nowrap&amp;lt;nowrap|onclick"&lt;br /&gt;    +"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"&lt;br /&gt;    +"|onmouseout|onmouseover|onmouseup|rowspan|scope&amp;lt;col?colgroup?row?rowgroup"&lt;br /&gt;    +"|style|title|valign&amp;lt;baseline?bottom?middle?top|width],"&lt;br /&gt;  +"thead[align&amp;lt;center?char?justify?left?right|char|charoff|class|dir&amp;lt;ltr?rtl|id"&lt;br /&gt;    +"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"&lt;br /&gt;    +"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"&lt;br /&gt;    +"|valign&amp;lt;baseline?bottom?middle?top],"&lt;br /&gt;  +"title[dir&amp;lt;ltr?rtl|lang],"&lt;br /&gt;  +"tr[abbr|align&amp;lt;center?char?justify?left?right|bgcolor|char|charoff|class"&lt;br /&gt;    +"|rowspan|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title|valign&amp;lt;baseline?bottom?middle?top],"&lt;br /&gt;  +"tt[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"u[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"&lt;br /&gt;    +"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"&lt;br /&gt;  +"ul[class|compact&amp;lt;compact|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown"&lt;br /&gt;    +"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"&lt;br /&gt;    +"|onmouseup|style|title|type],"&lt;br /&gt;  +"var[class|dir&amp;lt;ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"&lt;br /&gt;    +"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"&lt;br /&gt;    +"|title],font[size|*]",&lt;br /&gt;   &lt;br /&gt; convert_fonts_to_spans : false,   &lt;br /&gt; convert_urls : false,&lt;br /&gt; skin_variant : "black",&lt;br /&gt; plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras",&lt;br /&gt;    width:1000,&lt;br /&gt;    height:700,&lt;br /&gt;    trim_span_elements : false,&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt; // Theme options&lt;br /&gt; theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",&lt;br /&gt; theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",&lt;br /&gt; theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",&lt;br /&gt; theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",&lt;br /&gt; theme_advanced_toolbar_location : "top",&lt;br /&gt; theme_advanced_toolbar_align : "left",&lt;br /&gt; theme_advanced_statusbar_location : "bottom",&lt;br /&gt; theme_advanced_resizing : true,&lt;br /&gt;&lt;br /&gt; // Example content CSS (should be your site CSS)&lt;br /&gt; content_css : "css/example.css",&lt;br /&gt;&lt;br /&gt; // Drop lists for link/image/media/template dialogs&lt;br /&gt; template_external_list_url : "js/template_list.js",&lt;br /&gt; external_link_list_url : "js/link_list.js",&lt;br /&gt; external_image_list_url : "js/image_list.js",&lt;br /&gt; media_external_list_url : "js/media_list.js",&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h:form id="form1"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;div id="heading"&amp;gt;&lt;br /&gt;                                                &amp;lt;h1&amp;gt;&amp;lt;label&amp;gt;CMS Editor&amp;lt;/label&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;                                                &amp;lt;div class="clear"&amp;gt;                                  &lt;br /&gt;                 &amp;lt;fieldset style="width:96%; "&amp;gt;&lt;br /&gt;                  &amp;lt;legend style="background-color:#cc6666;color:#FFFFFF;font-size:small; font-weight:bold;"&amp;gt;Content File Editor&amp;lt;/legend&amp;gt; &lt;br /&gt;                    &amp;lt;h:messages id="message" errorClass="error"/&amp;gt;&lt;br /&gt;                   &amp;lt;table border="0"&amp;gt;&lt;br /&gt;                 &amp;lt;tr &amp;gt;&lt;br /&gt;                 &lt;br /&gt;&lt;br /&gt;&amp;lt;h:selectOneMenu id="file"   value="#{EditFile.fileID}" &amp;gt;&lt;br /&gt;                        &amp;lt;f:selectItems value="#{EditFile.fileList}"/&amp;gt;&lt;br /&gt;                       &amp;lt;a4j:support event="onchange" action="#{EditFile.getDataFromDB}" reRender="data"/&amp;gt;&lt;br /&gt;                        &lt;br /&gt;&amp;lt;/h:selectOneMenu&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h:inputTextarea id="data" value="#{EditFile.data}"/&amp;gt; &lt;br /&gt;&amp;lt;br/&amp;gt; &lt;br /&gt;&amp;lt;h:commandButton value="Save Changes" action="#{EditFile.storeData}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;rich:effect event="onmouseover" for="message" type="Fade"/&amp;gt; &lt;br /&gt;&amp;lt;/h:form&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&amp;lt;/f:view&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The thing to note above is on selection change you will need to force refresh in JSF code so that tiny mce element is populated with the stored file from the database. &lt;br /&gt;&lt;br /&gt;Below is the code for refreshing the JSF page after fetching data from the database.&lt;br /&gt;&lt;pre class="brush:java" id="eb1"&gt;...&lt;br /&gt;this.setData(dao.getFileData(fileID));&lt;br /&gt;FacesContext context = FacesContext.getCurrentInstance();&lt;br /&gt;String viewId = context.getViewRoot().getViewId();&lt;br /&gt;ViewHandler handler = context.getApplication().getViewHandler();&lt;br /&gt;UIViewRoot root = handler.createView(context, viewId);&lt;br /&gt;root.setViewId(viewId);&lt;br /&gt;context.setViewRoot(root);&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;Now this editor can be used to edit the files, when you need to insert an image or flash file just use the preview files window to get the restful path of the uploaded files and then place that path in the tiny mce when you insert an image or flash object. After you are done with making changes just save the file and changes will be written to the database, After the changes are written you can use the path appended with the rest resource path and the file name to expose this saved file as a rest resource to retrieve the updated html page. &lt;br /&gt;&lt;br /&gt;The jersey code is mentioned below &lt;br /&gt;&lt;pre class="brush:java" id="jb1"&gt;@Path(&amp;quot;/&amp;quot;) &lt;br /&gt;public class FileResource {&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param filename passed in the get request&lt;br /&gt;     * @returns the requested resource as stream &lt;br /&gt;     * &lt;br /&gt;     *&lt;br /&gt;     **/       &lt;br /&gt; @GET&lt;br /&gt; @Path(&amp;quot;/files/{filename}&amp;quot;)&lt;br /&gt; @Produces(MediaType.WILDCARD)&lt;br /&gt; public Response returnFileAsStream(@PathParam(&amp;quot;filename&amp;quot;) String fileName){&lt;br /&gt;  FileStoreDAO ftDAO=FileStoreDAO.getInstance();&lt;br /&gt;  FileUtility futil=FileUtility.getInstance();&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;        FileDTO fdto=ftDAO.readFile(fileName);&lt;br /&gt;  if(fdto!=null){&lt;br /&gt;        String contentType=fdto.getMime();&lt;br /&gt;  InputStream is=fdto.getFileData();&lt;br /&gt;  return Response.ok(is,contentType).build();&lt;br /&gt;  }&lt;br /&gt;  InputStream is=null;&lt;br /&gt; &lt;br /&gt;  if((is=futil.getDataAsStream(fileName))!=null){&lt;br /&gt;      &lt;br /&gt;                      MediaType mt=DefaultMediaTypePredictor.CommonMediaTypes.getMediaTypeFromFileName(fileName);&lt;br /&gt;                      return Response.ok(is,mt).build();&lt;br /&gt;                     &lt;br /&gt;                     &lt;br /&gt;  }&lt;br /&gt;  return Response.noContent().build();&lt;br /&gt; }&lt;br /&gt; @GET&lt;br /&gt; @Path(&amp;quot;/content/{filename}&amp;quot;)&lt;br /&gt; @Produces(MediaType.TEXT_HTML)&lt;br /&gt; public Response returnContentAsStream(@PathParam(&amp;quot;filename&amp;quot;) String fileName)&lt;br /&gt; {&lt;br /&gt;  FileDataDAO fdDAO= new FileDataDAO();&lt;br /&gt;  FileUtility futil=FileUtility.getInstance();&lt;br /&gt;  String data=fdDAO.getFileData(fileName);&lt;br /&gt;  if(data!=null&amp;amp;&amp;amp;!data.trim().equals(&amp;quot;&amp;quot;)){&lt;br /&gt;  return Response.ok(fdDAO.getFileData(fileName),MediaType.TEXT_HTML).build();&lt;br /&gt;  }&lt;br /&gt;  InputStream is=null;&lt;br /&gt;  &lt;br /&gt;  if((is=futil.getDataAsStream(fileName))!=null){&lt;br /&gt;    MediaType mt=DefaultMediaTypePredictor.CommonMediaTypes.getMediaTypeFromFileName(fileName);&lt;br /&gt;    return Response.ok(is,mt).build();&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;   return Response.noContent().build();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The above code exposes two resources one that returns the HTML page, the other returns the stored files like images, flash, movies.&lt;strong&gt;Note: You should  employ the cache control header to reduce the fetching from database, increase performance and reduce load both on client and server side. &lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;Hope this tutorial will be indicative enough on how one can easily make their own Content Management System through which content can be edited in real time. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-5541797248866187929?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/5541797248866187929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2011/04/content-management-system-tiny-mce.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5541797248866187929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5541797248866187929'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2011/04/content-management-system-tiny-mce.html' title='Content Management System (Tiny MCE ,Richfaces and Jersey)'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-2706814789451221566</id><published>2010-10-03T19:27:00.005+05:30</published><updated>2011-04-27T01:45:49.041+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='jsf'/><title type='text'>RichFaces File Upload Tutorial</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;b&gt;Rich Faces&lt;/b&gt; consists of some really useful components that can be used to make as they say&amp;nbsp; some very "rich web applications".&lt;br /&gt;In this tutorial i will be explaining about how to use &lt;b&gt;richfaces&lt;/b&gt; file upload component to store a file into the database and then retrieve the file using a Jersey restful web service.&lt;br /&gt;&lt;br /&gt;The file upload component of rich faces supports two modes of uploading.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;To store the uploaded file in a temporary directory or&lt;/li&gt;&lt;li&gt;To keep an in memory representation of it.&lt;/li&gt;&lt;/ol&gt;I will be explaining about how to use the latter one the reason being that&amp;nbsp; as we are going to store files in the database there's no point in creating temporary files.&lt;br /&gt;&lt;br /&gt;If you want to create temp files then specify the following filter initialization parameter in the web.xml file.&lt;br /&gt;&lt;pre class="brush:xml" id="filter-init"&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;createTempFiles&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;But we are going to set it to false.&lt;br /&gt;Following is the filter configuration for richfaces&lt;br /&gt;&lt;pre class="brush:xml" id="filter-complete"&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;org.richfaces.SKIN&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;ruby&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;br /&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;org.richfaces.CONTROL_SKINNING&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;enable&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;br /&gt;&amp;lt;filter&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;RichFaces Filter&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;lt;filter-name&amp;gt;richfaces&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;lt;filter-class&amp;gt;org.ajax4jsf.Filter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;createTempFiles&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;false&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;maxRequestSize&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;10000000&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;/filter&amp;gt;&lt;br /&gt;&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;&amp;lt;filter-name&amp;gt;richfaces&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Faces Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;dispatcher&amp;gt;REQUEST&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;lt;dispatcher&amp;gt;FORWARD&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;lt;dispatcher&amp;gt;INCLUDE&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The relevant code for jsp file is listed below. &lt;br /&gt;&lt;pre class="brush:xml" id="jsp-code"&gt;&amp;lt;h:form enctype="multipart/form-data"&amp;gt;&lt;br /&gt;....&lt;br /&gt;   &amp;lt;h:panelGrid columns="2" columnClasses="top,top"&amp;gt;&lt;br /&gt;            &amp;lt;rich:fileUpload fileUploadListener="#{fileUpload.listener}"&lt;br /&gt;              maxFilesQuantity="#{fileUpload.uploadsAvailable}"&lt;br /&gt;                 &lt;br /&gt;                id="upload"&lt;br /&gt;                immediateUpload="#{fileUpload.autoUpload}"&lt;br /&gt;                allowFlash="#{fileUpload.useFlash}"&amp;gt;&lt;br /&gt;                &amp;lt;a4j:support event="onuploadcomplete" reRender="info" /&amp;gt;&lt;br /&gt;            &amp;lt;/rich:fileUpload&amp;gt;&lt;br /&gt;          &lt;br /&gt;            &lt;br /&gt;            &amp;lt;h:panelGroup id="info"&amp;gt;&lt;br /&gt;                &amp;lt;rich:panel bodyClass="info"&amp;gt;&lt;br /&gt;                    &amp;lt;f:facet name="header"&amp;gt;&lt;br /&gt;                        &amp;lt;h:outputText value="Uploaded Files Info" /&amp;gt;&lt;br /&gt;                    &amp;lt;/f:facet&amp;gt;&lt;br /&gt;                    &amp;lt;h:outputText value="No files currently uploaded"&lt;br /&gt;                        rendered="#{fileUpload.size==0}" /&amp;gt;&lt;br /&gt;                    &amp;lt;rich:dataGrid columns="1" value="#{fileUpload.files}"&lt;br /&gt;                        var="file" rowKeyVar="row"&amp;gt;&lt;br /&gt;                        &amp;lt;rich:panel bodyClass="rich-laguna-panel-no-header"&amp;gt;&lt;br /&gt;                            &amp;lt;h:panelGrid columns="2"&amp;gt;&lt;br /&gt;                                &amp;lt;a4j:mediaOutput element="img" mimeType="#{file.mime}"&lt;br /&gt;                                    createContent="#{fileUpload.paint}" value="#{row}"&lt;br /&gt;                                    style="width:100px; height:100px;" cacheable="false"&amp;gt;&lt;br /&gt;                                    &amp;lt;f:param value="#{fileUpload.timeStamp}" name="time"/&amp;gt;  &lt;br /&gt;                                &amp;lt;/a4j:mediaOutput&amp;gt;&lt;br /&gt;                                &amp;lt;h:panelGrid columns="2"&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText value="File Name:" /&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText value="#{file.name}" /&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText value="File Length(bytes):" /&amp;gt;&lt;br /&gt;                                    &amp;lt;h:outputText value="#{file.length}" /&amp;gt;&lt;br /&gt;                                &amp;lt;/h:panelGrid&amp;gt;&lt;br /&gt;                            &amp;lt;/h:panelGrid&amp;gt;&lt;br /&gt;                        &amp;lt;/rich:panel&amp;gt;&lt;br /&gt;                    &amp;lt;/rich:dataGrid&amp;gt;&lt;br /&gt;                &amp;lt;/rich:panel&amp;gt;&lt;br /&gt;                &amp;lt;rich:spacer height="3"/&amp;gt;&lt;br /&gt;                &amp;lt;br /&amp;gt;&lt;br /&gt;                &amp;lt;a4j:commandButton action="#{fileUpload.clearUploadData}"&lt;br /&gt;                    reRender="info, upload" value="Clear Uploaded Data"&lt;br /&gt;                    rendered="#{fileUpload.size&amp;gt;0}" /&amp;gt;&lt;br /&gt;            &amp;lt;/h:panelGroup&amp;gt;&lt;br /&gt;        &amp;lt;/h:panelGrid&amp;gt;&lt;br /&gt;  &amp;lt;/h:form&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The code for the fileUpload backing bean is mentioned below. &lt;br /&gt;In the code below all the parameters are passed to the DAO class directly i recommend that you use a DTO and pass it instead. &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="javacode"&gt;public class FileUploadBacking {&lt;br /&gt;&lt;br /&gt; private ArrayList&amp;lt;filevo&amp;gt; files = new ArrayList&amp;lt;filevo&amp;gt;();&lt;br /&gt; private int uploadsAvailable = 10;&lt;br /&gt; private boolean autoUpload = false;&lt;br /&gt; private boolean useFlash = false;&amp;nbsp;&lt;br /&gt; public int getSize() {&lt;br /&gt;  if (getFiles().size() &amp;gt; 0) {&lt;br /&gt;   return getFiles().size();&lt;br /&gt;  } else {&lt;br /&gt;   return 0;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //used to write in the display pane &lt;br /&gt;&lt;br /&gt; public void paint(OutputStream stream, Object object) throws IOException {&lt;br /&gt;  stream.write(getFiles().get((Integer) object).getData());&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void listener(UploadEvent event) throws Exception {&lt;br /&gt;  UploadItem item = event.getUploadItem();&lt;br /&gt;  FileStoreDAO fdao=FileStoreDAO.getInstance();&lt;br /&gt;  FacesContext fctx=FacesContext.getCurrentInstance();&lt;br /&gt;  HttpServletRequest request=(HttpServletRequest)fctx.getExternalContext().getRequest();&lt;br /&gt;  HttpSession session=request.getSession();&lt;br /&gt;  // Call the storeFile method of fileStoreDAO passing it the params. //Create a DTO for such calls&lt;br /&gt;                String result=fdao.storeFile(item.getData(),item.getFileName(),item.getContentType(),session.getAttribute("userID").toString());&lt;br /&gt;   &lt;br /&gt;  if(result.equalsIgnoreCase("success"))&lt;br /&gt;  {&lt;br /&gt;  FileVO fileVO = new FileVO();&lt;br /&gt;                fileVO.setName("your application domain"+" context root"+"rest resource mapping"+item.getFileName());&lt;br /&gt;fileVO.setLength(item.getData().length); &lt;br /&gt;fileVO.setData(item.getData()); &lt;br /&gt;else{&lt;br /&gt;   FacesMessage fmsg=new FacesMessage(FacesMessage.SEVERITY_ERROR,"Db error","Some Db error  has occured could not upload your files");&lt;br /&gt;   fctx.addMessage(null, fmsg);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  files.add(fileVO);&lt;br /&gt;  uploadsAvailable--;&lt;br /&gt;}&lt;br /&gt;//clear the data&lt;br /&gt; public String clearUploadData() {&lt;br /&gt;  for(int i=0;i&amp;lt;files.size();i++){&lt;br /&gt;    &lt;br /&gt;    FileStoreDAO fdao=FileStoreDAO.getInstance();&lt;br /&gt;    fdao.removeData(files.get(i).getFileName());&lt;br /&gt;  }&lt;br /&gt;  files.clear();&lt;br /&gt;  return "success";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;//rest of the code&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The DAO class for storing,reading or updating files is listed below:-&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="dao"&gt;public class FileStoreDAO {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private FileStoreDAO(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static FileStoreDAO getInstance(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return new FileStoreDAO();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;public void removeData(String fileName){&lt;br /&gt;&amp;nbsp;   DBConnection conn = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreparedStatement pstmt = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Statement stmt=null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn = new DBConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stmt = conn.getStatement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stmt.executeUpdate("delete from file_store where file_name like '"+fileName+"'");&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;catch (Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (stmt != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stmt.close();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn.closeConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public String storeFile(byte data[],String fileName,String fileType,String userID){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DBConnection conn = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PreparedStatement pstmt = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Statement stmt=null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ResultSet rs = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String outcome;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; boolean flag=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn = new DBConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stmt = conn.getStatement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ByteArrayInputStream bis=new ByteArrayInputStream(data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rs=stmt.executeQuery("Select count(*) from file_store&amp;nbsp; where file_name like '"+fileName+"'"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(rs.next()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(rs.getInt(1)&amp;gt;0){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; flag=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rs=null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(flag){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt=conn.getPreparedStatement("update file_store set file_data=? , file_type=? , user_id=? , file_size=? , mod_date=sysdate() where file_name like ?" );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setAsciiStream(1,(InputStream)bis,data.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setString(2,fileType);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setString(3,userID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setLong(4,data.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setString(5,"'"+fileName+"'");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.executeUpdate();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else{&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt = conn.getPrepareStatement("Insert into file_store (file_name,file_data,file_type,user_id,file_size,mod_date) values (?,?,?,?,?,sysdate())");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;        pstmt.setString(1,fileName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setAsciiStream(2,(InputStream)bis,data.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setString(3,fileType);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setString(4,userID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setLong(5,data.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.executeUpdate();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("After insert");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; outcome="failure";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (rs != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rs.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (pstmt != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.close();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (stmt != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stmt.close();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn.closeConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; outcome="success";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return outcome;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;public FileDTO readFile(String fileName){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DBConnection conn = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Statement stmt = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ResultSet rs = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileDTO fileDTO=new FileDTO();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn = new DBConnection();&lt;br /&gt;String query="Select file_name,file_type,file_size,file_data from file_store where file_name=?";             &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;pstmt = conn.getPrepardedStatement(query);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pstmt.setString(1,"'"+fileName +"'");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rs=stmt.executeQuery();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(rs.next()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileDTO.setFileData(rs.getAsciiStream("file_data"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileDTO.setMime(rs.getString("file_type"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileDTO.setLength(rs.getLong("file_size"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileDTO.setFileName(rs.getString("file_name"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fileDTO=null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (rs != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rs.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (stmt != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stmt.close();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; conn.closeConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e1.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return fileDTO;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now all we have to do is  write the code of the jersey based restful web service and configure the jersey servlet.&lt;br /&gt;&lt;br /&gt;The jersey servlet configuration is shown below:-&lt;br /&gt;&lt;pre class="brush:xml"&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;    &amp;lt;servlet-name&amp;gt;JerseyWebService&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;    &amp;lt;servlet-class&amp;gt;&lt;br /&gt;com.sun.jersey.spi.container.servlet.ServletContainer&lt;br /&gt;&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;    &amp;lt;init-param&amp;gt;&lt;br /&gt;      &amp;lt;param-name&amp;gt;com.sun.jersey.config.property.packages&amp;lt;/param-name&amp;gt;&lt;br /&gt;      &amp;lt;param-value&amp;gt;&lt;br /&gt;com.blogspot.ramannanda.editor.rest&lt;br /&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;    &amp;lt;/init-param&amp;gt;&lt;br /&gt;    &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;  &amp;lt;/servlet&amp;gt;&lt;br /&gt;  &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;    &amp;lt;servlet-name&amp;gt;JerseyWebService&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;    &amp;lt;url-pattern&amp;gt;/rest/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;  &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;The jersey servlet intercepts any call to the resource under /rest.&lt;br /&gt;The code for the resource class is shown below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java" id="dao"&gt;@Path("/") &lt;br /&gt;public class FileResource {&lt;br /&gt;    /**&lt;br /&gt;     * @param filename passed in the get request&lt;br /&gt;     * @returns builds and returns the response&lt;br /&gt;*&lt;br /&gt;**/       &lt;br /&gt;@GET&lt;br /&gt;@Path("/files/{filename}")&lt;br /&gt;@Produces(MediaType.WILDCARD)&lt;br /&gt;public Response returnFileAsStream(@PathParam("filename") String fileName){&lt;br /&gt;FileStoreDAO ftDAO=FileStoreDAO.getInstance();&lt;br /&gt;FileDTO fdto=ftDAO.readFile(fileName);&lt;br /&gt;if(fdto!=null){&lt;br /&gt;String contentType=fdto.getMime();&lt;br /&gt;InputStream is=fdto.getFileData();&lt;br /&gt;return Response.ok(is,contentType).build();&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;return Response.noContent().build();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The FileResouce class has a mapping of /files/{filename} specified where filename is the path parameter. For example if a call to http://your-domain/yourcontextroot/rest/files/abc.jpg comes the method annotated with the get annotation simply call's the DAO class's readFile method passing it the file name as abc.jpg and get the data as a stream(if the file exists), The method then builds a response and returns it to the client.&lt;br /&gt;&lt;br /&gt;Hope this tutorial was helpful&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-2706814789451221566?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/2706814789451221566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2010/10/richfaces-file-upload-tutorial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2706814789451221566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2706814789451221566'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2010/10/richfaces-file-upload-tutorial.html' title='RichFaces File Upload Tutorial'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-2140747431317891580</id><published>2010-08-29T19:11:00.000+05:30</published><updated>2010-12-29T23:46:57.555+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='webserver'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Installing mod_ssl on apache: X.509,Certificate Authority,digital signatures explained</title><content type='html'>If you want to secure connection to a resource on your apache web-server by using public key encryption technique then you can add the mod_ssl module into the apache web-server for that purpose.&lt;br /&gt;&lt;br /&gt;Here are the list of things that are explained in this tutorial:-&lt;br /&gt;&lt;ol style="font-weight: bold;"&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#installing"&gt;Installing OpenSSL&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#pkes"&gt;Public key encryption standard.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#cads"&gt; Certificate Signing Authority(CA) and Digital Signatures&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#encrypt"&gt;Encryption Of Data (shared secret key encryption)&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#x.509"&gt;Creating the Digital Certificate.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#certificate"&gt;Installing the certificate's and keys in proper directory&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#apache"&gt;Setting up the apache configuration(httpd.conf)&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#testing"&gt;Testing the configuration &lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#installing"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div id="installing"&gt;1.&lt;b&gt;Installing OpenSSL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The apache web server comes now bundled with  and mod_ssl module.You can directly download the version 2.13 of apache web server from &lt;a href="http://httpd.apache.org/download.cgi" target="_blank"&gt;this link.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We need OpenSSL for producing digital certificates and what are these will be examined later on.&lt;br /&gt;&lt;br /&gt;Just open and run the installer and after you have done that proceed to the second step and note that you may also need to download the OpenSSL module seperately for windows and also need to have the visual C++ modules for it to run. You can download these from &lt;a href="http://www.openssl.org/related/binaries.html" target="_blank"&gt;this link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="pkes"&gt;2.&lt;span style="font-weight: bold;"&gt;Public key encryption standard:&lt;/span&gt; The public key encryption in short works as follows:-&lt;br /&gt;&lt;br /&gt;There are essentially two pairs of keys per entity. One key which is shared and used to encrypt the contents and is publicly available is called public key whereas the other key which is used for decryption is called the private key is kept secret.&lt;br /&gt;&lt;br /&gt;So if an entity &lt;b&gt;'A' &lt;/b&gt;has to send a secret message to entity &lt;b&gt;'B' &lt;/b&gt;then entity &lt;b&gt;'A'&lt;/b&gt; uses entity &lt;b&gt;'B's'&lt;/b&gt; public key to encrypt the message and on the receiving side entity &lt;b&gt;'B'&lt;/b&gt; uses its private key to decrypt the message and since only entity &lt;b&gt;'B'&lt;/b&gt; is in possession of it's private key therefore no third party can decrypt the content's of message.Unless Of-course the private key has been compromised.&lt;br /&gt;&lt;br /&gt;The point that should &amp;nbsp;be noted is that entity &lt;b&gt;'B'&lt;/b&gt; cannot guarantee that it is receiving message from entity&lt;b&gt; 'A' &lt;/b&gt;because anyone with access to &lt;b&gt;'B's' public key&amp;nbsp;&lt;/b&gt;can send B a message , therefore this communication lacks authentication.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="cads"&gt;3.&lt;span style="font-weight: bold;"&gt; Certificate Signing Authority(CA) and Digital Signatures&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;The only problem with the previous scheme was that the client cannot be sure that the sender is who he claims to be and this is where a CA comes in as it is responsible for verifying the details of the sender and issuing the  &lt;span style="font-weight: bold;"&gt;X.509 digital certificate &lt;/span&gt;to it. The X.509 digital certificate contains the sender's public key,domain identifiers,serial number for the certificate and most importantly the &lt;b&gt;encrypted hashed&lt;/b&gt;(md5 hash, RSA encryption) data (Encryption is done using CA's  private key,The hashed data encrypted using CA'S key serves as Digital signature of the CA). This constitutes sender's certificate.&lt;br /&gt;&lt;br /&gt;The sender (server), when sending information to the client may choose to encrypt the entire contents or just calculate an SHA-1 hash and encrypt it using it's private key and sends the X.509 digital certificate it obtained from the CA along with this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;On the client side&lt;/span&gt; firstly the &lt;span style="font-weight: bold;"&gt;the CA &lt;/span&gt;is identified&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;b&lt;span style="font-weight: bold;"&gt;y &lt;/span&gt;&lt;i&gt;'CA&lt;/i&gt; attribute' in the &lt;b&gt;X509v3&lt;/b&gt; extension section of &lt;span style="font-weight: bold;"&gt;x.509 digital certificate&lt;/span&gt;, then&lt;span style="font-weight: bold;"&gt; using &lt;/span&gt;CA's &lt;b&gt;public key&lt;/b&gt; (stored in the browser in the  CA certificate public key info)&amp;nbsp;&amp;nbsp; the hash is &lt;b&gt;decrypted&lt;/b&gt; and this decrypted hash is compared with the hash that is  calculated over the rest of the x.509 digital certificate that was sent by the sender.  If these hash values match then client can be sure that this  certificate really was signed by the CA and hence can be sure of the  server that is sending the data because it was signed by the CA. The  client then can decrypt the contents of the message by using the public  key found in the x.509 digital certificate. &lt;br /&gt;&lt;br /&gt;There are many well known certificate authorities such as Verisign etc whose certificates are not to be signed by any authority as they are the root certificate authorities and there certificates already come pre-installed in the browsers like Firefox, Internet Explorer etc. you can view them in mozilla firefox by going to &lt;span style="font-weight: bold;"&gt;Tools-&amp;gt;Options-&amp;gt;Advanced-&amp;gt; Encyption&lt;/span&gt; and then choosing &lt;span style="font-weight: bold;"&gt;View Certificates&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The only concern with getting the certificate signed by a CA is the cost factor.But on the other hand, This &lt;b&gt;trusted third party&lt;/b&gt; scheme is more secure because in case the sender(server) loses its private key then it can ask the CA to revoke its certificate doing so places the certificate in CRL (Certificate Revocation List) which&amp;nbsp; ensures that no one else can pretend to be the sender.&lt;br /&gt;&lt;br /&gt;It may happen that once in a while you may encounter that if you are viewing a site in mozilla you may encounter that mozilla displays you a warning message as shown below which warns you that you may be at risk viewing the website, this happens only due to the fact that the certificate may be self-signed by the server or a CA not known to the browser and therefore the authenticity of the sender cannot be known and hence you should avoid sending personal details over to a web server like that because if the&amp;nbsp; private key of the server is compromised then it can lead to potential fraudulent activity. However, if you do trust the server you can click on proceed and this leads to saving of the CA certificate of the server's CA on your browser and then you can view the certificate as mentioned above. In our sample installation we are going to create our own CA and we are going to sign that certificate signing request to produce a X.509 digital certificate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg4Z4vwiI/AAAAAAAAAUU/egMyG00UbY8/s1600-h/Untrusted_CA.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5373886040009327138" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg4Z4vwiI/AAAAAAAAAUU/egMyG00UbY8/s400/Untrusted_CA.JPG" style="cursor: pointer; float: left; height: 283px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope this was informational enough theory and now we can really proceed with the installation of mod_ssl on apache.&lt;br /&gt;&lt;br /&gt;&lt;div id="encrypt"&gt;4. &lt;b&gt;Encryption Of Data (Shared secret key Encryption):&lt;/b&gt;-&lt;br /&gt;&lt;br /&gt;The actual data b/w the client and the server is encrypted using shared secret key because it is faster and the server does not need to know the client's public key for encrypting the data that it sends to the client.&lt;br /&gt;The key exchange however occurs through &lt;b&gt;public key &lt;/b&gt;encryption &amp;nbsp;as follows:-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As the client knows of server's public key so it generates a random secret key (to be used for encrypting the data) and then encrypts it using server's &lt;b&gt;public key &lt;/b&gt;and on the server's end it uses its &lt;b&gt;private key&lt;/b&gt; to decrypt the shared secret key. Hence the public key encryption scheme helps to transfer the shared secret key.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id="x.509"&gt;5.&lt;span style="font-weight: bold;"&gt;Creating the x.509 digital certificate&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;To create the digital certificate we have to do the 5 following steps:-&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Generate the Server's Private and Public key&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Generate the CA's Private and Public key&lt;/li&gt;&lt;li&gt;Generate the CA's x.509 Digital Certificate (Self-Signed)&lt;/li&gt;&lt;li&gt;Generate the Server's Certificate Signing Request&lt;/li&gt;&lt;li&gt;CA signing the certificate signing request&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;span style="font-weight: bold;"&gt;&lt;li&gt;Generate the Server's Private and Public key:-&lt;/li&gt;&lt;/span&gt; To generate the server's private key execute the following command in the directory above the directory that contains the OpenSSL module which in windows would be (if you have installed it using the windows binary) "C:\OpenSSL\bin" :-          &lt;blockquote&gt;openssl genrsa -out server.key 1024     &lt;/blockquote&gt;This command produces an private rsa key of 1024 bits long and you do not have to create a separate public key. You can choose to encrypt these key by adding -des3 oprion after the genrsa option which will encrypt this key by using 3-DES symmetric encryption standard.&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Generate the CA's Private and Public key:-&lt;/span&gt;&lt;br /&gt;Repeat the same step as  above and generate the private key for the CA and also encrypt this key. You will be asked for the pass-phrase for the key that would be required in case you want to use that key. Now execute the following command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;openssl genrsa -des3 -out CA.key 1024&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Generate the CA's x.509 Digital Certificate (Self-Signed)&lt;/span&gt;:-&lt;br /&gt;Execute the following command to generate a self signed x.509 digital certificate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;openssl req -new -x509 -key CA.key -out cacert.pem -days 1095&lt;/blockquote&gt;&lt;br /&gt;When you execute this command you would be asked for the pass-phrase of the key which you entered in the previous step so enter it and fill in the details asked for.&lt;br /&gt;This command produces a self signed certificate(cacert.pem) using the encrypted rsa key CA.key with validity of 1095 days.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Generate the Server's Certificate Signing Request&lt;/span&gt;:-&lt;br /&gt;Now execute the following command to generate the server's certificate signing request (CSR).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;openssl req -new -key server.key -out server.csr &lt;/blockquote&gt;&lt;br /&gt;Enter the details as requested and this will produce the csr that is sent to real CA authorities but in our case we are our own CA so we'll sign the certificate on our own.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;CA signing the certificate signing request:-&lt;/span&gt;&lt;br /&gt;This command when executed will sign the certificate request server.csr to produce a x.509 digital certificate signed by our own CA.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;openssl x509 -CA cacert.pem -CAkey CA.key -in server.csr -req -days 365 -out server.crt -CAcreateserial&lt;/blockquote&gt;&lt;br /&gt;This command signs the certificate signing request and note that the last option(CAcreateserial)is required because there has to be a serial file server.crl for CA to sign the certificate and is required only the first time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div id="certificate"&gt;6.&lt;span style="font-weight: bold;"&gt;Installing the certificate's and keys in proper directory:-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The certificate's and the key files should be installed anywhere outside the web root directory of apache like a directory c:/secret and placed in that directory. The certificate's should be installed outside of the directory because they are inaccessible to visitor of your site.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="apache"&gt;7.&lt;span style="font-weight: bold;"&gt;Setting up the Apache configuration(httpd.conf):-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are many mod_ssl  directives that you can implement i am just going to discuss some basic ones for more information there is an excellent tutorial available at this link &lt;a href="http://www.modssl.org/docs/" target="_blank"&gt;www.modssl.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's the sample configuration&lt;br /&gt;&lt;br /&gt;Few of the mod_ssl directives:-&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SSLEngine on/off&lt;/span&gt;  :- This is the basic directive which enables or disables the ssl on apache. Prior to version 2 of apache this was called as SSLEnable /SSLDisable.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SSLCertificateFile&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;server_cert_file&lt;/span&gt; :- This specifies the certificate file for the server ie the server's x.509 digital certificate. Use /for absolute path or dir-name/file for the relative directory under the apache directory. In this case server.cert .&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SSLCertificateKeyFile server_key_file&lt;/span&gt; :-This specifies the private key file for the certificate file. In this case server.key .&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SSLCACertificateFile ca_cert&lt;/span&gt;_&lt;span style="font-weight: bold;"&gt;file&lt;/span&gt;:- This specifies the certificate file of the CA  ie the CA's self signed x.509 digital certificate. Use /for absolute path or dir-name/file for the relative directory under the apache directory. In this case cacert.pem  .&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SSLRequireSSL&lt;/span&gt;:- This forbids access to resource unless http over ssl is enabled for the current active connection. &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SSLProtocol (SSLv2,SSLv3,TLSv1,All)&lt;/span&gt;:- By default all the protocols are enabled.You can disable a particular protocol like this: SSLProtocol all -TLSv1 which disables the Transport layer security protocol v1.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SSLSessionCacheTimeout&lt;/span&gt; time_in_sec:- This sets the time in seconds till which the session key will be cached locally after which the key will be changed.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Now you have to setup a virtual host for which http over ssl i.e https would be enabled.&lt;br /&gt;You can create a named host or a host based on ip address. In this we are going to setup the ip based virtual host.&lt;br /&gt;&lt;br /&gt;Then we have to add the AddType directives so that apache recognizes the certificate files and their extensions. We will be adding the following two directives:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AddType application/x-x509-ca-cert .crt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; AddType application/x-pkcs7-crl    .crl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From the code box below just copy and paste the code into the httpd.conf.&lt;br /&gt;&lt;br /&gt;But before that you would have to enable the mod_ssl module in the httpd.conf. To do that just open the httpd.conf and scroll down to the LoadModule directives and find one with the name &lt;span style="font-weight: bold;"&gt;mod_ssl &lt;/span&gt;and remove the # comment from before it as shown in the following figure.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg34-ZCeI/AAAAAAAAAUM/KQc_1Jii1ys/s1600-h/mod_ssl.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5373886031174633954" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg34-ZCeI/AAAAAAAAAUM/KQc_1Jii1ys/s400/mod_ssl.JPG" style="cursor: pointer; float: left; height: 28px; margin: 0pt 10px 10px 0pt; width: 355px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From the code box below just copy and paste the code into the httpd.conf&lt;br /&gt;&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="height: 300px; width: 400px;"&gt;&lt;blockquote&gt;##############################################&lt;br /&gt;############# mod_ssl configuration ############&lt;br /&gt;AddType application/x-x509-ca-cert .crt&lt;br /&gt;AddType application/x-pkcs7-crl    .crl&lt;br /&gt;SSLEngine off&lt;br /&gt;#change this to directory where your certificate's are installed&lt;br /&gt;SSLCertificateFile conf/server.cert&lt;br /&gt;SSLCertificateKeyFile conf/server.key&lt;br /&gt;SSLCACertificateFile conf/cacert.pem&lt;br /&gt;#set the server to listen on port 8080&lt;br /&gt;Listen 127.0.0.1:8080&lt;br /&gt;&amp;lt;VirtualHost 127.0.0.1:8080&amp;gt;&lt;br /&gt;#enable ssl engine for port 8080&lt;br /&gt;SSLEngine on&lt;br /&gt;SSLSessionCacheTimeout 300&lt;br /&gt;SSLProtocol SSLv3&lt;br /&gt;# here you can setup access to directories and authentication&lt;br /&gt;# by using the &amp;lt;directory dir_name=""&amp;gt; directive and AuthType,AuthName,etc&lt;br /&gt;##############################################&lt;br /&gt;############# end mod_ssl conf ###############&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="testing"&gt;8. &lt;span style="font-weight: bold;"&gt;Testing the configuration:&lt;/span&gt;Now all you have to do is just open the browser and type in the url &lt;span style="font-weight: bold;"&gt;https://localhost:8080&lt;/span&gt; and after which you will be displayed with a warning message by your browser as was mentioned before. The warning message look like the following in Mozilla Firefox.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg4Z4vwiI/AAAAAAAAAUU/egMyG00UbY8/s1600-h/Untrusted_CA.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5373886040009327138" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg4Z4vwiI/AAAAAAAAAUU/egMyG00UbY8/s400/Untrusted_CA.JPG" style="cursor: pointer; float: left; height: 283px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You should add an exception for this after which the browser will download the CA certificate and you should see default apache web server page if successful. In mozilla certificate details can be seen by clicking on the navigation bar as shown below.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg4lLmlKI/AAAAAAAAAUc/DLWLeBBPnGA/s1600-h/success.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5373886043041207458" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg4lLmlKI/AAAAAAAAAUc/DLWLeBBPnGA/s400/success.JPG" style="cursor: pointer; float: left; height: 210px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is about it now we have set up and tested the SSL over http and hope this tutorial was helpful in making you understand the core concept behind digital certificates(X.509) public key encryption standard and setting up mod_ssl on your apache installation.&lt;br /&gt;&lt;br /&gt;&lt;iframe align="left" class=" twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0596002033&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe align="left" class=" twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0764502913&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe align="left" class=" twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz twzljkimuhzmtdzpbvsz" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0596529945&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-2140747431317891580?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/2140747431317891580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2140747431317891580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2140747431317891580'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/08/installing-modssl-on-apache.html' title='Installing mod_ssl on apache: X.509,Certificate Authority,digital signatures explained'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s4Oz51luJRA/SpPg4Z4vwiI/AAAAAAAAAUU/egMyG00UbY8/s72-c/Untrusted_CA.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-9109876448849810773</id><published>2010-08-15T20:23:00.005+05:30</published><updated>2010-08-16T17:06:50.697+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winxp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java Shutdown Utility V0.2</title><content type='html'>In case you want to &lt;span style="font-weight: bold;"&gt;schedule or automate tasks like shutting down, restarting, hibernating , Standby and Locking &lt;/span&gt;then you can use this simple application made by me. It utilizes the &lt;span style="font-weight: bold;"&gt;psshutdown&lt;/span&gt; application and has a automated counter for planning the aforementioned tasks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation&lt;/span&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Just extract the rar file and after you extract there will be two folders, one will be install and the other one will be the application folder and there will also be an executable psshutdown utility.&lt;/li&gt;&lt;li&gt;Run the installer application by using the command &lt;span style="font-weight: bold;"&gt;"java -jar installer.jar"&lt;/span&gt;(without the quotes) on the install folder and click on the "Select extracted file psshutdown" button, select the extracted&lt;span style="font-weight: bold;"&gt; psshutdown file&lt;/span&gt;, click on the install button and the application will be ready to use.&lt;/li&gt;&lt;li&gt;Now just navigate to the &lt;span style="font-weight: bold;"&gt;application&lt;/span&gt; directory execute the command &lt;span style="font-weight: bold;"&gt;java -jar shutdown.jar &lt;/span&gt;from command prompt to launch the application.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Using the application&lt;/span&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Just launch the application by opening command prompt at the application folder and invoking &lt;span style="font-weight: bold;"&gt;"java -jar shutdown.jar"&lt;/span&gt; (without the quotes) command .&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select the time and date for the scheduling the operation.&lt;/li&gt;&lt;li&gt;Select the operation from the drop down box that you want to execute and click on the submit button.&lt;/li&gt;&lt;li&gt;One can always abort the current operation in between by clicking on the abort button.&lt;/li&gt;&lt;li&gt;The label at the bottom will display the time left for the execution of the operation.&lt;/li&gt;&lt;/ul&gt;Download the application from the link below:-&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/projects/shutdownapp/"&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5341525536956139730" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiDpLNzyyNI/AAAAAAAAANc/6O2CV2BPFrg/s400/download_buttons.jpg" style="cursor: pointer; float: left; height: 67px; margin: 0pt 10px 10px 0pt; width: 123px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following are the snapshots of the application:-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_s4Oz51luJRA/TGf-MDbkPuI/AAAAAAAAAU4/BN7umahAt3c/s1600/shutdown_in.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_s4Oz51luJRA/TGf-MDbkPuI/AAAAAAAAAU4/BN7umahAt3c/s320/shutdown_in.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_s4Oz51luJRA/TGf-5bGMI6I/AAAAAAAAAVA/O50kk82dqJI/s1600/shutdown_end.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_s4Oz51luJRA/TGf-5bGMI6I/AAAAAAAAAVA/O50kk82dqJI/s320/shutdown_end.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:- Its always recommended to create a shortcut for running jar files. So just create a shortcut and in the target prefix the command &lt;b&gt;'javaw -jar' &lt;/b&gt;and&amp;nbsp;save the shortcut. &lt;iframe align="left" class=" jhvakxwkhzjgazcssmbf hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx odyhwdfvrvxhlhwtwnrp" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0072263148&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;iframe align="left" class=" jhvakxwkhzjgazcssmbf hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx odyhwdfvrvxhlhwtwnrp" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0132413930&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-9109876448849810773?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/9109876448849810773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2010/08/java-shutdown-utility-v02.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/9109876448849810773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/9109876448849810773'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2010/08/java-shutdown-utility-v02.html' title='Java Shutdown Utility V0.2'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/SiDpLNzyyNI/AAAAAAAAANc/6O2CV2BPFrg/s72-c/download_buttons.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3556377062238899504</id><published>2010-06-14T22:58:00.020+05:30</published><updated>2010-06-21T15:01:48.329+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming Stuff'/><title type='text'>Cross Domain Ajax Requests</title><content type='html'>Browser's have same origin policy for ajax requests which means you cannot make a cross domain ajax request.&lt;br /&gt;&lt;br /&gt;To overcome this barrier the following methods may be used.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Use JSONP&lt;/li&gt;&lt;li&gt;Make a service proxy&lt;/li&gt;&lt;li&gt;Use dynamic script element&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;In this post i will be explaining&amp;nbsp; about how to use JSONP . I will be writing a simple script in dojo that will communicate with twitter api and return user's latest tweet's. The dojo.io.script method works by sending name of the callback method along with the asynchronous request and on completion of the request the callback method is called automatically by server side code. &lt;br /&gt;The code snippet for the request is shown below.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;var init=function(){&lt;br /&gt;    dojo.io.script.get({&lt;br /&gt;    url:'http://twitter.com/statuses/user_timeline/ramannanda9.json',&lt;br /&gt;    timeout:15000,&lt;br /&gt;    callbackParamName:statusCallback,&lt;br /&gt;    error:errorHandler,&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;I have not used the load parameter in the above get call because i have done processing in the callback method itself.&lt;br /&gt;&lt;br /&gt;The data received is passed as a json object to the callback method statusCallback as shown below. &lt;br /&gt;&lt;pre class="brush:js"&gt;var statusCallback=function(response)&lt;br /&gt;{&lt;br /&gt;...}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The response object can now be parsed to get the relevant information.&lt;br /&gt;&lt;br /&gt;The twitter box that you can see on the right side has been made using similar script.&lt;br /&gt;&lt;br /&gt;The entire code can be seen below.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:js;wrap-lines:true"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js&amp;quot; djconfig=&amp;quot;parseOnLoad:true&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br/&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br/&gt;dojo.require(&amp;quot;dojo.fx&amp;quot;);&lt;br/&gt;dojo.require(&amp;quot;dojo.fx.easing&amp;quot;);&lt;br/&gt;dojo.require(&amp;quot;dojox.widget.Toaster&amp;quot;);&lt;br/&gt;dojo.require(&amp;quot;dojo.parser&amp;quot;);&lt;br/&gt;dojo.require(&amp;quot;dojo.io.script&amp;quot;);&lt;br/&gt;var doAddInfo=true;&lt;br/&gt;var intervalId;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;var statusCallback=function(response)&lt;br/&gt;{&lt;br/&gt;    if(doAddInfo){&lt;br/&gt;addInfo(response[0].user.name,response[0].user.screen_name,&lt;br/&gt;response[0].user.description,&lt;br/&gt;response[0].user.profile_image_url);&lt;br/&gt;       }&lt;br/&gt;       doAddInfo=false;&lt;br/&gt;       addBird();&lt;br/&gt;        for(var i=0;(i&amp;lt;response.length)&amp;amp;&amp;amp;(i&amp;lt;20);i++){&lt;br/&gt;        display_tweet(response[i],i,response);&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;}&lt;br/&gt;  var addInfo= function(username,screen_name,description,image){&lt;br/&gt;&lt;br/&gt;     dojo.create(&amp;quot;div&amp;quot;,{id:'bigtext',align:'left',innerHTML:&amp;quot;&amp;lt;a href='http://www.twitter.com/&amp;quot;+screen_name+&amp;quot;'&amp;gt;&amp;quot;+&amp;quot;&amp;lt;img class='myimg'  src='&amp;quot;+image+&amp;quot;' width=50 height=50 /&amp;gt; &amp;lt;/img&amp;gt;&amp;lt;/a&amp;gt;&amp;quot;+&amp;quot;&amp;lt;p align:'left'&amp;gt;&amp;quot;+username+&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;+&amp;quot;&amp;lt;p align='left' id='bio'&amp;gt;Bio:&amp;quot;+description+&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;},dojo.query(&amp;quot;#twitter&amp;quot;)[0],'first');&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; }&lt;br/&gt;var addBird=function(){&lt;br/&gt;&lt;br/&gt;  if(dojo.byId('plainimg')==null){&lt;br/&gt;dojo.create(&amp;quot;div&amp;quot;,{id:'plainimg',innerHTML:&amp;quot;&amp;lt;img src='http://ramannanda9.fileave.com/sparkle_bird.png' width='50' height='50' /&amp;gt;&amp;quot;},dojo.query(&amp;quot;#bigtext&amp;quot;)[0]);&lt;br/&gt;}&lt;br/&gt;else&lt;br/&gt;    {&lt;br/&gt;dojo.attr('plainimg',{innerHTML:&amp;quot;&amp;lt;img src='http://ramannanda9.fileave.com/sparkle_bird.png' width='50' height='50' /&amp;gt;&amp;quot;});&lt;br/&gt;}&lt;br/&gt;var mainbox=dojo.marginBox(dojo.byId(&amp;quot;twitter&amp;quot;));&lt;br/&gt;var imgbox=dojo.marginBox(dojo.byId(&amp;quot;plainimg&amp;quot;));&lt;br/&gt;&lt;br/&gt;dojo.fx.slideTo({node:dojo.byId('plainimg'),&lt;br/&gt;left:mainbox.w-imgbox.w-50,duration:1500,&lt;br/&gt;onEnd:function(){dojo.byId('plainimg').innerHTML=&amp;quot;&amp;lt;img src='http://ramannanda9.fileave.com/flying_bird_right_sparkles.png' align:'left' width='50' height='50' /&amp;gt;&amp;quot;;dojo.fx.slideTo({node:dojo.byId('plainimg'),&lt;br/&gt;left:0,duration:1200,easing:dojo.fx.easing.elasticIn()}).play(); },easing:dojo.fx.easing.elasticOut()}).play();}&lt;br/&gt;&lt;br/&gt;var init=function(){&lt;br/&gt;    dojo.io.script.get({&lt;br/&gt;    url:'http://twitter.com/statuses/user_timeline/ramannanda9.json?callback=statusCallback',&lt;br/&gt;    timeout:15000,&lt;br/&gt;    error:errorHandler&lt;br/&gt;    });&lt;br/&gt;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;var display_tweet=function(element,index){&lt;br/&gt;var a='index'+index;&lt;br/&gt;if(dojo.byId(a)==null){&lt;br/&gt;dojo.create('div',{id:a,align:'left',innerHTML:&amp;quot;&amp;lt;p align='left'&amp;gt;&amp;quot;+element.text+&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;+&amp;quot;&amp;lt;a class='special' href='http://twitter.com/?status=@&amp;quot;+element.user.screen_name+&amp;quot;&amp;amp;in_reply_to_status_id=&amp;quot;+element.id+&amp;quot;&amp;amp;in_reply_to=&amp;quot;+element.user.screen_name+&amp;quot;'&amp;gt; reply&amp;quot;+&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;+&amp;quot;&amp;lt;hr/&amp;gt;&amp;quot;},dojo.query('#tweetbox')[0]);&lt;br/&gt;}&lt;br/&gt;else{&lt;br/&gt;    dojo.attr(a,{innerHTML:&amp;quot;&amp;lt;p align='left'&amp;gt;&amp;quot;+element.text+&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;+&amp;quot;&amp;lt;a class='special' href='http://twitter.com/?status=@&amp;quot;+element.user.screen_name+&amp;quot;&amp;amp;in_reply_to_status_id=&amp;quot;+element.id+&amp;quot;&amp;amp;in_reply_to=&amp;quot;+element.user.screen_name+&amp;quot;'&amp;gt; reply&amp;quot;+&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;+&amp;quot;&amp;lt;hr/&amp;gt;&amp;quot;} );&lt;br/&gt;&lt;br/&gt;}&lt;br/&gt;dojo.fadeOut({ node : a , duration : 5000 , easing: dojo.fx.easing.quintInOut,onEnd:function(event){dojo.fadeIn({ node : a , duration : 2000 , easing: dojo.fx.easing.quintInOut}).play(index*300)} }).play(index*300);&lt;br/&gt;}&lt;br/&gt;var errorHandler= function(err){&lt;br/&gt;    dojo.publish(&amp;quot;error&amp;quot;, [{message:&amp;quot;Twitter is too 'Busy' cant render tweets&amp;quot;,type:&amp;quot;error&amp;quot;,duration:0}]);&lt;br/&gt;    window.clearInterval(intervalId);&lt;br/&gt;}&lt;br/&gt;dojo.addOnLoad(function (){&lt;br/&gt;intervalId=window.setInterval(init,1000*60*5);&lt;br/&gt;init();&lt;br/&gt;&lt;br/&gt;});&lt;br/&gt;   &amp;lt;/script&amp;gt;&lt;br/&gt; &amp;lt;div id=&amp;quot;twitter&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;tweetbox&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br/&gt;&amp;lt;div dojotype=&amp;quot;dojox.widget.Toaster&amp;quot; duration=&amp;quot;0&amp;quot; messagetopic=&amp;quot;error&amp;quot; positiondirection=&amp;quot;tr-left&amp;quot; &amp;gt;&lt;br/&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3556377062238899504?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3556377062238899504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2010/06/cross-domain-ajax-requests.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3556377062238899504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3556377062238899504'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2010/06/cross-domain-ajax-requests.html' title='Cross Domain Ajax Requests'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8970927088395048577</id><published>2010-05-20T20:59:00.000+05:30</published><updated>2010-05-20T20:59:04.320+05:30</updated><title type='text'>Resolving GUI display problems in Linux (Ubuntu, Red Hat etc)</title><content type='html'>The display problems in linux occur mostly due to misconfiguration of &lt;b&gt;X-server &lt;/b&gt;config file (xorg.conf) this may happen when you install or update graphics driver for your display card or due to various other reasons.&lt;br /&gt;&lt;br /&gt;So to troubleshoot GUI display problem just follow these steps: &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Login as root &lt;/li&gt;&lt;li&gt;At the shell prompt navigate to &lt;i&gt;&lt;b&gt;/etc/X11 &lt;/b&gt;&lt;/i&gt;directory (cd /etc/X11)&lt;/li&gt;&lt;li&gt;Copy the failsafe configuration file to original file &lt;br /&gt;&lt;i&gt;&lt;b&gt;"cp xorg.conf.failsafe xorg.conf"&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Start the x-server &lt;br /&gt;&lt;i&gt;&lt;b&gt;"startx"&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;The aforementioned steps should resolve the display problems :-) .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-8970927088395048577?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/8970927088395048577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2010/05/resolving-gui-display-problems-in-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8970927088395048577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8970927088395048577'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2010/05/resolving-gui-display-problems-in-linux.html' title='Resolving GUI display problems in Linux (Ubuntu, Red Hat etc)'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1940493900772854873</id><published>2010-04-18T10:34:00.002+05:30</published><updated>2010-04-18T10:38:46.294+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix/Linux'/><title type='text'>Kmix not working on kde</title><content type='html'>You might encounter a problem that when you start the &lt;b&gt;kmix&lt;/b&gt; &lt;b&gt;sound mixer &lt;/b&gt;you would not see any thing happening. It happens because it runs as an hidden application, so to access it you would need to add the system tray widget.&lt;br /&gt;&lt;br /&gt;To add the system tray widget to your panel perform the following steps:-&lt;br /&gt;&lt;br /&gt;1. Right click on the panel that you want to add your widget to.&lt;br /&gt;&lt;br /&gt;2. Select the &lt;b&gt;system tray&lt;/b&gt; widget as shown in the figure below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_s4Oz51luJRA/S8qRn46RW1I/AAAAAAAAAUo/owFG_kdzSrY/s1600/snapshot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_s4Oz51luJRA/S8qRn46RW1I/AAAAAAAAAUo/owFG_kdzSrY/s320/snapshot1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. Now you will be able to access the all the hidden applications and kmix being one of them, you would get the sound control applet where you can control the volume functionality.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: In case the above solution does not work you may try upgrading the kmix package by executing the following command.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;sudo apt-get upgrade kmix&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-1940493900772854873?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1940493900772854873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2010/04/kmix-not-working-on-kde.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1940493900772854873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1940493900772854873'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2010/04/kmix-not-working-on-kde.html' title='Kmix not working on kde'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/S8qRn46RW1I/AAAAAAAAAUo/owFG_kdzSrY/s72-c/snapshot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3230950608074408659</id><published>2009-12-06T22:56:00.007+05:30</published><updated>2010-06-15T01:01:06.654+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Hibernate 3.0: Sql Dialect must be explicitly set:(configuration error in hibernate 3.0)</title><content type='html'>You may have used &lt;b&gt;hibernate 2.x &lt;/b&gt;and in case you are getting error (&lt;b&gt;Hibernate Dialect must be explicitly set&lt;/b&gt;, &lt;b&gt;jdbc connection parameters &lt;/b&gt;must be specified, etc) by using the same code to initialize &lt;b&gt;SessionFactory &lt;/b&gt;as you did before then there's a simple fix for that error.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a hibernate.cfg.xml file and place it in root of the classpath and to initialize SessionFactory use the following code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java;"&gt;AnnotationConfiguration ac= new AnnotationConfiguration().&lt;br /&gt;setProperties(System.getProperties());&lt;br /&gt;ac.configure();&lt;br /&gt;//static final instance of SessionFactory&lt;br /&gt;sessionFactory=ac.buildSessionFactory();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;or the following code which is the same but uses method chaining:-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java;wrap-lines:true"&gt;//static final instance of SessionFactory&lt;br /&gt;sessionFactory=new AnnotationConfiguration().&lt;br /&gt;setProperties(System.getProperties()).&lt;br /&gt;configure().&lt;br /&gt;buildSessionFactory();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;this will solve your Dialect or other errors related to configuration you might be facing.&lt;br /&gt;&lt;br /&gt;&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=1932394885&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3230950608074408659?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3230950608074408659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/12/hibernate-dialect-must-be-explicitly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3230950608074408659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3230950608074408659'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/12/hibernate-dialect-must-be-explicitly.html' title='Hibernate 3.0: Sql Dialect must be explicitly set:(configuration error in hibernate 3.0)'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8643941571622271399</id><published>2009-08-24T17:50:00.007+05:30</published><updated>2009-08-24T19:23:54.876+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virus'/><title type='text'>sysdate.exe:How to remove the trojan</title><content type='html'>The sysdate.exe file is a trojan and it binds itself with the help of windows registry with the explorer.exe process.So that whenever you start the explorer.exe it starts alongwith it. It has various names like 604.exe,408.exe etc. The sysdate.exe process is stored in the recycle bin or the recycler folder which is hidden.&lt;br /&gt;&lt;br /&gt;To heal your computer from the trojan follow these steps:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The first thing you need to do is empty your temp folder where this trojan maybe stored with different names like 604.exe etc. For this open the run prompt and type %temp% and delete all the executable files in that.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now you have to delete the actual sysdate.exe file and for that you will have to manually delete it from the RECYCLER folder but the folder is a hidden and system folder so you can not see it in the c drive. So just execute the attrib command with parameters -r -h -s  to remove the the attributes(r(Read-only) ,-h(Hidden) ,-s(System)).&lt;br /&gt;To do the aforementioned task, open the command prompt and type the following command.&lt;br /&gt;&lt;blockquote&gt; &lt;p&gt; attrib -r -h -s C:/RECYCLER&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;Also you have to repeat this step with the actual folder containing the sysdate.exe under the recycler folder. Execute the following command &lt;blockquote&gt;&lt;p&gt;attrib -r -h -s C:/RECYCLER /S-1-5-21-832453443-4443154761-431384085-6428&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;Here the folder name may vary because the trojan might be stored with a different folder name.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now actually to delete  the file sysdate.exe,  you would have to first kill the explorer.exe process from the task manager. Press ctrl+alt+del , Now from the processes tab select explorer.exe process and press delete key or click on end process. Now in the task-manager go to the file menu and select new task and then click on the browse button and navigate to the folder under the Recycler folder containing the file sysdate.exe and  Shift+Delete it. Now delete the Recycler folder as well, Don't worry the recycler folder will come back so there's no risk in deleting it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/SpKYy-AP1RI/AAAAAAAAAUE/mLOR-FNlCZg/s1600-h/taskmanager.JPG" target="_blank"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 261px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SpKYy-AP1RI/AAAAAAAAAUE/mLOR-FNlCZg/s320/taskmanager.JPG" alt="" id="BLOGGER_PHOTO_ID_5373525306811340050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Now in the new task menu of task manager, type regedit and then navigate to the following key&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon&lt;/span&gt;&lt;br /&gt;Now from the right window pane delete the &lt;span style="font-weight: bold;"&gt;Taskman&lt;/span&gt; key. Press F5 to check whether it reappears or not. If it does not then you would have successfully removed the trojan.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/SpKYgKS2LLI/AAAAAAAAAT0/RF_nkmgK4xk/s1600-h/taskman.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 86px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SpKYgKS2LLI/AAAAAAAAAT0/RF_nkmgK4xk/s320/taskman.JPG" alt="" id="BLOGGER_PHOTO_ID_5373524983693061298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Now navigate to the following registry key.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon&lt;/span&gt;&lt;br /&gt;and modify the shell key by removing anything that follows the &lt;span style="font-weight: bold;"&gt;explorer.exe&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SpKYf0w1CpI/AAAAAAAAATs/_-l3CdpQhpw/s1600-h/shell.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 219px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SpKYf0w1CpI/AAAAAAAAATs/_-l3CdpQhpw/s320/shell.JPG" alt="" id="BLOGGER_PHOTO_ID_5373524977913236114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Now in the new task menu of task manager type explorer which will restart the explorer process and your system would be free from the trojan.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Alternate Solution&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;The attrib command can be skipped if you have a dual boot os then just mount the windows partition and delete the files under the recycler folder with ease.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; It is always recommended before opening the external drive just open it under the command prompt and delete the autorun.inf file from it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-8643941571622271399?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/8643941571622271399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/08/sysdateexehow-to-remove-trojan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8643941571622271399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8643941571622271399'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/08/sysdateexehow-to-remove-trojan.html' title='sysdate.exe:How to remove the trojan'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_s4Oz51luJRA/SpKYy-AP1RI/AAAAAAAAAUE/mLOR-FNlCZg/s72-c/taskmanager.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8761765865138090922</id><published>2009-08-16T18:03:00.003+05:30</published><updated>2011-12-04T17:19:00.644+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>Get 100fps in Counter Strike 1.6</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This tutorial provides you with tips on how to get a &lt;span style="font-weight: bold;"&gt;consistent&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;100fps&lt;/span&gt; or round about that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prerequisites:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a graphics card external but it maybe the case that  an on-board card would suffice.I use &lt;span style="font-weight: bold;"&gt;nvidia geforce&lt;/span&gt; 5200fx 8x agp(accelerated graphics port) slot card. It is pretty cheap and old technology as now pc's come with the pci express slot.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;a dsl connection &amp;gt;256 kbits/sec: I am pretty sure people would have that much by now.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Settings &lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Graphics card Setting&lt;/span&gt;:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;I am displaying with examples of nvidia display driver you should have similar options in ati cards or any other gfx card.&lt;/li&gt;&lt;li&gt;Ok so &lt;span style="font-weight: bold;"&gt;first step&lt;/span&gt; is to open &lt;span style="font-weight: bold;"&gt;nvidia control panel&lt;/span&gt; from nvidia icon in taskbar by right clicking on it and choosing &lt;span style="font-weight: bold;"&gt;nvidia control panel&lt;/span&gt;. You can do the same by going to &lt;span style="font-weight: bold;"&gt;control panel &lt;/span&gt;and opening it from there.&lt;/li&gt;&lt;li&gt;Now Choose &lt;span style="font-style: italic; font-weight: bold;"&gt;"3d settings"&lt;/span&gt; option from the nvidia control panel. After that choose "&lt;span style="font-weight: bold;"&gt;adjust image settings with preview&lt;/span&gt;" don't worry if you don't find that option the important point is you have to edit &lt;span style="font-weight: bold;"&gt;3d settings&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Then choose &lt;span style="font-weight: bold;"&gt;"use advanced 3d settings "&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;click on&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;take me there&lt;/span&gt; as shown in figure.&lt;br /&gt;&lt;/li&gt;&lt;a href="http://2.bp.blogspot.com/_s4Oz51luJRA/SeDUlJfjSGI/AAAAAAAAAE4/-6UgcuCdOC4/s1600-h/gfx_image1.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5323488494220429410" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SeDUlJfjSGI/AAAAAAAAAE4/-6UgcuCdOC4/s400/gfx_image1.JPG" style="cursor: pointer; float: left; height: 219px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;                 &lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Choose &lt;span style="font-weight: bold;"&gt;Global Settings&lt;/span&gt; tab and then choose &lt;span style="font-weight: bold;"&gt;texture filtering&lt;/span&gt; option and select &lt;span style="font-weight: bold;"&gt;high performance&lt;/span&gt; from drop down list as shown in the figure below. This option is most important as it will cause sharp rise in your fps.&lt;br /&gt;&lt;/li&gt;&lt;a href="http://1.bp.blogspot.com/_s4Oz51luJRA/SeDW-VXxt1I/AAAAAAAAAFA/HmsL-SLJsbg/s1600-h/gfx_image2.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5323491125929031506" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SeDW-VXxt1I/AAAAAAAAAFA/HmsL-SLJsbg/s400/gfx_image2.JPG" style="cursor: pointer; float: left; height: 225px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;                  &lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Now choose &lt;span style="font-weight: bold;"&gt;Vertical sync option&lt;/span&gt; and select&lt;span style="font-weight: bold;"&gt; force off &lt;/span&gt;,Also turn the &lt;span style="font-weight: bold;"&gt;anisotropic filtering&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;application controlled &lt;/span&gt;(as it is not allowed to be turned off in tournaments)&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;anti aliasing&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;off&lt;/span&gt;. One more thing if your graphics card is &lt;span style="font-weight: bold;"&gt;dual display card &lt;/span&gt;then choose &lt;span style="font-weight: bold;"&gt; hardware acceleration&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;single display performance mode.&lt;/span&gt; Apply these settings and move to game configuration part.&lt;/li&gt;&lt;/ul&gt;2. &lt;span style="font-weight: bold;"&gt;Configuring Counter Strike/CS1.6&lt;/span&gt; :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Configuring start up options&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;and launch parameters&lt;/span&gt;:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Right click on the shortcut to your game and select &lt;span style="font-weight: bold;"&gt;properties &lt;/span&gt;then in the &lt;span style="font-weight: bold;"&gt;target field append&lt;/span&gt; the parameters &lt;span style="font-weight: bold;"&gt;-noipx -sv_lan 0 +heapsize 250000 +sys_ticrate 1000. &lt;/span&gt;For example &lt;span style="font-weight: bold;"&gt;"C:\Counter-Strike 1.6 + Half-Life\hl.exe" -game cstrike -noipx -sv_lan 0 +heapsize 250000 +sys_ticrate 1000&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt; &lt;/span&gt;and&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;in case&lt;span style="font-weight: bold;"&gt; of steam &lt;/span&gt;append it after the&lt;span style="font-weight: bold;"&gt; -applaunch 10&lt;/span&gt;  parameter.&lt;/li&gt;&lt;li&gt;Now &lt;span style="font-weight: bold;"&gt;launch the game&lt;/span&gt; and open the console by  pressing &lt;span style="font-weight: bold;"&gt;'`' &lt;/span&gt;character and type &lt;span style="font-weight: bold;"&gt;fps_max 101&lt;/span&gt; and after that  &lt;span style="font-weight: bold;"&gt;r_decals 300&lt;/span&gt; , &lt;span style="font-weight: bold;"&gt;rate 25000&lt;/span&gt; , &lt;span style="font-weight: bold;"&gt;cl_updaterate 101&lt;/span&gt; ,&lt;span style="font-weight: bold;"&gt;cl_cmdrate 101&lt;/span&gt; . because they must match your fps rate for better registry.&lt;/li&gt;&lt;li&gt;Now go to &lt;span style="font-weight: bold;"&gt;video options&lt;/span&gt; and select &lt;span style="font-weight: bold;"&gt;open gl &lt;/span&gt;mode with resolution of your choice, i personally use 800*600 resolution.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;That's it you should get 100 fps (hovering around 99-100). Do post your comments in case you find this post helpful or encounter any problem .&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-8761765865138090922?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/8761765865138090922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/get-100fps-in-counter-strike-16_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8761765865138090922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8761765865138090922'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/get-100fps-in-counter-strike-16_14.html' title='Get 100fps in Counter Strike 1.6'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s4Oz51luJRA/SeDUlJfjSGI/AAAAAAAAAE4/-6UgcuCdOC4/s72-c/gfx_image1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-5443422164601187007</id><published>2009-08-16T18:02:00.001+05:30</published><updated>2010-04-02T20:01:38.459+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>Dual core processors: The main logic</title><content type='html'>The &lt;span style="font-weight: bold;"&gt;dual core and quad core processors&lt;/span&gt; have become very popular nowadays but the main reason behind their success is the power management.&lt;br /&gt;&lt;br /&gt;There are two basic concepts that one must know, they are :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Overclocking the processor&lt;/span&gt; :-&lt;br /&gt;&lt;br /&gt;Let's say that ideally a normal single core processor takes x units of power to give x units of performance. But users generally tend to increase the performance by &lt;span style="font-weight: bold;"&gt;overclocking&lt;/span&gt; the &lt;span style="font-weight: bold;"&gt;processor&lt;/span&gt; ie essentially increasing the &lt;span style="font-weight: bold;"&gt;clock frequency of the processor.&lt;/span&gt; If a user follows the process of overclocking the processor, then the &lt;span style="font-weight: bold;"&gt;performance increase is about 12-13 percent&lt;/span&gt;  but the power increase required for that would be about &lt;span style="font-weight: bold;"&gt;70 percent&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Under-clocking  the processor &lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;Now the interesting concept is what if we under-clock the processor that is decrease the clock frequency of the processor?&lt;br /&gt;&lt;br /&gt;In this case we could get about 80 percent of the performance at roughly half the power. For example we would get .8x units of performance at .5x units of power.&lt;br /&gt;&lt;br /&gt;Now this is the concept that is utilized by the &lt;span style="font-weight: bold;"&gt;dual core processors &lt;/span&gt;and instead of using a single processor we combine the two processors and operate each one of them at half of it's power and so for the same power taken by the normal single core processor we get about&lt;span style="font-weight: bold;"&gt; 70 percent increase&lt;/span&gt; in performance. The aforementioned reason is the core reason behind the success of dual core processors.&lt;br /&gt;&lt;br /&gt;Another major factor in dual core processors is as they operate at lower clock rates it helps in reducing the &lt;span style="font-weight: bold;"&gt;speed mismatch &lt;/span&gt;between&lt;span style="font-weight: bold;"&gt; the processor &lt;/span&gt;and&lt;span style="font-weight: bold;"&gt; the memory&lt;/span&gt; and this is a relevant factor because with processor clock rates increasing at very faster speeds the corresponding increase in clock rates of cache memory  is not their, therefore a processor's clock cycles are not utilized properly and are wasted in memory read/write cycles.&lt;br /&gt;&lt;br /&gt;Hence the concept of under-clocking helps also in reducing the speed mismatch b/w the memory and the processor.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B00116SLZS&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B001MQBQSQ&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-5443422164601187007?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/5443422164601187007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/dual-core-processors-main-logic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5443422164601187007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5443422164601187007'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/dual-core-processors-main-logic.html' title='Dual core processors: The main logic'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-5524583725633985983</id><published>2009-08-16T18:00:00.002+05:30</published><updated>2011-11-17T23:09:19.523+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>Configure Hlds Server for Counter Strike 1.6</title><content type='html'>There are a few steps that you have to follow before you can create a &lt;span style="font-weight: bold;"&gt;dedicated server&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;Hlds&lt;/span&gt;) for &lt;span style="font-weight: bold;"&gt;counter strike 1.6 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The steps are :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Configuring the router/modem&lt;/span&gt;: Follow these steps:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open any web browser and in the address bar type 192.168.1.1/main.html or 192.168.1.1/index.html or 192.168.1.1 , whichever provides you with advanced configuration menu.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;After this a pop-up will ask you about the user name and password. The default user name and password  pair's are&lt;span style="font-weight: bold;"&gt; admin, admin &lt;/span&gt;&lt;span&gt;or&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; admin, password, &lt;/span&gt;enter other values if you have modified the default settings.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Then choose advanced setup-&gt; Nat -&gt; Virtual servers (don't worry if you cannot find the exact sequence, what really matters is that you must be able to  find the virtual servers option)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now, choose add a virtual server and repeat the following steps for opening the ports shown in the table.&lt;br /&gt;&lt;br /&gt;a) Type the service name as shown in the table&lt;br /&gt;b) Type  start port as start port shown in the table&lt;br /&gt;c) Type end port as port shown in the table&lt;br /&gt;d) Choose the protocol as shown in the table&lt;br /&gt;e) Type 192.168.1.5 as server ip&lt;br /&gt;f) Press add server button.&lt;/li&gt;&lt;table bordercolorlight="#00000" bgcolor="#3333ff" border="1" cellpadding="5" cellspacing="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="left"&gt; Server name &lt;/td&gt;&lt;td align="left"&gt; Start port &lt;/td&gt;&lt;td align="left"&gt; End Port &lt;/td&gt;&lt;td align="left"&gt; Protocol&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Half life  &lt;/td&gt;&lt;td align="left"&gt; 6003 &lt;/td&gt;&lt;td align="left"&gt; 6003 &lt;/td&gt;&lt;td align="left"&gt; TCP and UDP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Half life &lt;/td&gt;&lt;td align="left"&gt; 7001&lt;/td&gt;&lt;td align="left"&gt; 7001 &lt;/td&gt;&lt;td align="left"&gt; TCP and UDP &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Half life &lt;/td&gt;&lt;td align="left"&gt; 27005 &lt;/td&gt;&lt;td align="left"&gt;27005&lt;/td&gt;&lt;td align="left"&gt;UDP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Half life &lt;/td&gt;&lt;td align="left"&gt; 27010&lt;/td&gt;&lt;td align="left"&gt; 27015 &lt;/td&gt;&lt;td align="left"&gt;UDP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Half life Server &lt;/td&gt;&lt;td align="left"&gt; 27015 &lt;/td&gt;&lt;td align="left"&gt; 27015 &lt;/td&gt;&lt;td align="left"&gt;UDP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Half life Server &lt;/td&gt;&lt;td align="left"&gt; 27016 &lt;/td&gt;&lt;td align="left"&gt; 27016 &lt;/td&gt;&lt;td align="left"&gt;UDP&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;After these steps the virtual server configuration of the modem should look like the following figure.    &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/Sf8DfvXVtKI/AAAAAAAAALk/7dkeuUmESz0/s1600-h/server+ports.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 208px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/Sf8DfvXVtKI/AAAAAAAAALk/7dkeuUmESz0/s400/server+ports.JPG" alt="" id="BLOGGER_PHOTO_ID_5331984327655142562" border="0" /&gt;&lt;/a&gt;              &lt;/ul&gt;&lt;ul&gt;&lt;li&gt;This finishes the modem's setup. Just note the DNS (Domain Name server)  ip in the modem's wan info page, it will be used later.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;2. Configuring the Local area Connection &lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the control panel and switch to classic view.&lt;/li&gt;&lt;li&gt;Then open network connections.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Right click on the Local area Connection and choose properties.&lt;/li&gt;&lt;li&gt;Then scroll down and select The &lt;span style="font-weight: bold;"&gt;Internet protocol( Tcp/Ip)&lt;/span&gt; option and click on properties button (refer to the following figure).&lt;br /&gt;&lt;/li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/Sf8HSm-LcpI/AAAAAAAAALs/31Boo8mtogs/s1600-h/localareaconnection.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 232px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/Sf8HSm-LcpI/AAAAAAAAALs/31Boo8mtogs/s400/localareaconnection.JPG" alt="" id="BLOGGER_PHOTO_ID_5331988500110340754" border="0" /&gt;&lt;/a&gt;&lt;li&gt;Choose the "use following ip address" radio button and enter the following:-&lt;br /&gt;a) Ip address: 192.168.1.5&lt;br /&gt;b) Subnet mask: 255.255.255.0&lt;br /&gt;c) Default gateway: 192.168.1.1&lt;br /&gt;d) Preffered DNS server: Enter the address that you noted in at the end of  step 1 &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Adding the exception to windows firewall&lt;/span&gt;: The last step is to add the exception in the windows firewall for the hlds server.&lt;br /&gt;&lt;br /&gt;That's it you are done . Do post comments in case you encounter any problem&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-5524583725633985983?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/5524583725633985983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/configure-hlds-server-for-counter.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5524583725633985983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5524583725633985983'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/configure-hlds-server-for-counter.html' title='Configure Hlds Server for Counter Strike 1.6'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/Sf8DfvXVtKI/AAAAAAAAALk/7dkeuUmESz0/s72-c/server+ports.JPG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-2064635222695845006</id><published>2009-08-16T17:00:00.002+05:30</published><updated>2010-04-02T19:54:34.726+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>Create custom Sprays/Images for counter strike</title><content type='html'>In this tutorial i will be explaining about following two things&lt;br /&gt;&lt;br /&gt;1) Creating your own &lt;span style="font-weight: bold;"&gt;spray paint image&lt;/span&gt;.&lt;br /&gt;2) Converting images to &lt;span style="font-weight: bold;"&gt;counter strike sprays&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;1) Creating your own spray paint image : for this follow these steps&lt;br /&gt;&lt;ul&gt;&lt;li&gt;open a simple paint program, i am using microsoft paint for this example.&lt;/li&gt;&lt;li&gt;paint your own image and then there are following  2 options available to you.&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Transparent Background&lt;/span&gt;: If you want your images to have a transparent background then in microsoft paint or any other paint program set its background to blue.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Normal background&lt;/span&gt;: This is rarely the case that you would want to have because it displays a big background to your image that looks cheap.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Now that you have created your image save it as .bmp extension for clarity and then proceed to second step.&lt;/li&gt;&lt;/ul&gt;2) Converting images to counter strike sprays : for this follow these steps&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download decal converter &lt;a href="http://rapidshare.com/files/255374414/Decal_Converter.rar"&gt;from here&lt;/a&gt; and extract the rar archive file.&lt;/li&gt;&lt;li&gt;Open the folder decal converter and then open decal converter.&lt;/li&gt;&lt;li&gt;Now you &lt;span style="font-weight: bold;"&gt;will have to set the path &lt;/span&gt;in decal converter where you have installed your counter strike. For this go to the&lt;span style="font-weight: bold; font-style: italic;"&gt; options&lt;/span&gt; menu and select &lt;span style="font-weight: bold;"&gt;"half life Games folders"&lt;/span&gt; option then choose browse and find your cs installation, check the &lt;span style="font-weight: bold;"&gt;"default game for decals "&lt;/span&gt; option and then press OK.&lt;/li&gt;&lt;li&gt;Now go to the file menu and select &lt;span style="font-weight: bold;"&gt;"open picture option"&lt;/span&gt; then choose the image for which  you want to make the spray.&lt;/li&gt;&lt;li&gt;The decal converter will automatically re size the image. You have the option of resizing image by increasing the height or the width of the image but since the maximum number of pixels allowed is limited you would have to decrease the width or height correspondingly.&lt;/li&gt;&lt;li&gt;Now go to the &lt;span style="font-weight: bold;"&gt;"decal"&lt;/span&gt; menu and choose &lt;span style="font-weight: bold;"&gt;"makedecal"&lt;/span&gt; option, Then the decal file will be created in the game directory as &lt;span style="font-weight: bold;"&gt;"pldecal.wad"&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Now &lt;span style="font-weight: bold;"&gt;delete&lt;/span&gt; the old "tempdecal.wad" and "custom.hpk" files and &lt;span style="font-weight: bold;"&gt;rename&lt;/span&gt; the pldecal.wad to tempdecal.wad and make it read only.&lt;/li&gt;&lt;li&gt;Now you are done, go in game and start spraying :)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; if your spray is not working go to the game directory and delete the custom.hpk file again (that sick file will keep on reappearing :(  )&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000098XKC&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000GOUE7O&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000UPDWL4&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-2064635222695845006?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/2064635222695845006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/create-custom-spraysimages-for-counter_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2064635222695845006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2064635222695845006'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/create-custom-spraysimages-for-counter_14.html' title='Create custom Sprays/Images for counter strike'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3715483996855430668</id><published>2009-08-16T11:37:00.001+05:30</published><updated>2009-08-16T22:19:29.537+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search engine Optimization'/><title type='text'>Verify blogger or blogspot site on msn</title><content type='html'>If you want to &lt;span style="font-weight: bold;"&gt;verify your blogger site on msn&lt;/span&gt; follow these simple steps:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to the &lt;a href="http://search.live.com/docs/submit.aspx"&gt;msn site&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then do not directly submit your site url, first visit the link at bottom that says &lt;span style="font-weight: bold;"&gt;webmasters&lt;/span&gt; (as shown in figure below). I could  have provided you this link directly but i did not because most of the users end up entering their site at the first link and that gives them no control over the site information.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SegfRlNvBKI/AAAAAAAAAGU/RIaDrN2E02M/s1600-h/msnsubmit.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 203px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SegfRlNvBKI/AAAAAAAAAGU/RIaDrN2E02M/s320/msnsubmit.JPG" alt="" id="BLOGGER_PHOTO_ID_5325540946273567906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Then the page will have a button that says &lt;span style="font-weight: bold;"&gt;"sign in to use the tools"&lt;/span&gt; press this button and then login with your userid and password. you will be redirected to webmasters tool and then there will be a button that says &lt;span style="font-weight: bold;"&gt;"add a site"&lt;/span&gt;, click on it.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then fill up the form as follows:-&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Enter the web site address. For example if you have your site address as http://abc.blogspot.com then enter only abc.blogspot.com. &lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: this is the place where people generally mess up the url and in previous example may end up entering www.abc.blogspot.com. it is to be noted that your blog address &lt;span style="font-weight: bold;"&gt;does not have a www prefix&lt;/span&gt; so do not enter the www prefix.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now submit a sitemap link as yoursite.blogspot.com/atom.xml . Here replace yoursite.blogspot.com with your blog address. After this enter the email address that you want to use as contact information and then press submit.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;After the last step you would be redirected to authentication part. Now scroll down to see meta tag verification, copy the meta tag and then proceed to the next step.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Adding meta tag in your blogger&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;site&lt;/span&gt; : Login to your blogger account and then Go to the &lt;span style="font-weight: bold;"&gt;Layout option&lt;/span&gt; after that click on the &lt;span style="font-weight: bold;"&gt;Edit Html tab&lt;/span&gt; and then in the &lt;span style="font-weight: bold;"&gt;edit template section &lt;/span&gt;paste the meta below the code fragment as shown below. Make sure that you append the closing tag if it is missing. for example if tag is like this &amp;lt;meta name="xyz" content="ahshshhsh" &amp;gt;  then change it to  &amp;lt;meta name="xyz" content="ahshshhsh" /&amp;gt;&lt;/li&gt;&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width: 300px;text-align:center;height: 150px;"&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;b:include data='blog' name='all-head-content'/&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Click the save template button and then login back to the webmasters tool in msn and click on the site after which it will be authenticated.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3715483996855430668?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3715483996855430668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/verify-blogger-or-blogspot-site-on-msn.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3715483996855430668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3715483996855430668'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/verify-blogger-or-blogspot-site-on-msn.html' title='Verify blogger or blogspot site on msn'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_s4Oz51luJRA/SegfRlNvBKI/AAAAAAAAAGU/RIaDrN2E02M/s72-c/msnsubmit.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1734268642905756994</id><published>2009-08-15T23:43:00.001+05:30</published><updated>2010-04-02T20:03:43.594+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winxp'/><title type='text'>Contig defragment single files/folders</title><content type='html'>Here i discuss about the tool that is of paramount importance in a situation where you do not have time to defragment the entire drive and just want to defragment &lt;span style="font-weight: bold;"&gt;single file /folder&lt;/span&gt; in windows xp.&lt;br /&gt;&lt;br /&gt;The tool i am discussing about is &lt;span style="font-weight: bold;"&gt;Contig&lt;/span&gt; it was developed by sysinternals and can be downloaded here. It is a tool that is operated through the &lt;span style="font-weight: bold;"&gt;command line.&lt;br /&gt;&lt;br /&gt;The first thing you should do is download the tool it's only 100kb in size.&lt;br /&gt;&lt;a href="http://download.sysinternals.com/Files/Contig.zip"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;How To Use it ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. After downloading and &lt;span style="font-weight: bold;"&gt;extracting&lt;/span&gt; it, Open the command prompt on the folder containing the tool(use command prompt here tool) or for example If the tool is extracted in C:\abc then open command prompt and type &lt;span style="font-weight: bold;"&gt;cd "C:\abc"&lt;/span&gt;  to make it the current directory. You can also set the path variable once and for all, see the tutorial on how to set the path variable &lt;a href="http://technicalessentials.blogspot.com/2009/04/setting-path-variable-in-windows-xp.html"&gt;[link]&lt;/a&gt; and after that the command can be invoked from any folder.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.The tool has the following  command line structure and options:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Command Structure &lt;/span&gt;: Contig [-options] filename.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Options&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;1) v : for providing verbose output of the ongoing operation.&lt;br /&gt;&lt;br /&gt;2) a : for analysis that is providing information of how fragmented a file or files have become.&lt;br /&gt;&lt;br /&gt;3) q: The quiet mode switch , which over-rides the -v switch, makes &lt;em&gt;Contig&lt;/em&gt; run in "quiet" mode, where the only thing it prints during a defrag run is summary information and no information regarding the ongoing operation is displayed.&lt;br /&gt;&lt;br /&gt;4)&lt;strong style="font-weight: normal;"&gt; s&lt;/strong&gt;: Use the -s switch to perform a recursive processing of subdirectories when you specify a filename with wildcards.&lt;br /&gt;&lt;br /&gt;For more options just type contig it will display the command help&lt;br /&gt;&lt;br /&gt;Usage Examples:&lt;br /&gt;&lt;br /&gt;1)If  you want to defragment the entire directory and all the files under it then use the following command&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;contig -v -s "directory path\*.*"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;For example&lt;/span&gt;: in my case directory is "C:\wamp" and i am using &lt;span style="font-weight: bold;"&gt;quiet mode&lt;/span&gt; ie -q option, So the command will be&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;contig -q -s "C:\wamp\*.*"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Output Image:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SdHgaxlqumI/AAAAAAAAADo/8lv94kgapqQ/s1600-h/contig_image.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 167px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SdHgaxlqumI/AAAAAAAAADo/8lv94kgapqQ/s320/contig_image.JPG" alt="" id="BLOGGER_PHOTO_ID_5319279385493813858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2)If you want to just defrag one file then simply use contig &lt;span style="font-weight: bold;"&gt;c:\dir_path\file_name&lt;/span&gt; .&lt;br /&gt;&lt;br /&gt;Do leave your comment if post was helpfull.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B0000CC761&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000B5RS1I&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-1734268642905756994?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1734268642905756994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/contig-defragment-single-filesfolders.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1734268642905756994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1734268642905756994'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/contig-defragment-single-filesfolders.html' title='Contig defragment single files/folders'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s72-c/download_buttons.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-583367702049133461</id><published>2009-07-31T10:19:00.018+05:30</published><updated>2010-04-02T20:05:33.803+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='webserver'/><category scheme='http://www.blogger.com/atom/ns#' term='website on pc'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Installing php on windows</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Installing php&lt;/span&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip archive of php from &lt;a target="_blank" href="http://www.php.net/downloads.php"&gt;this site.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the archive to a  c:\php or any name that you like but in the entire explanation c:\php is assumed to be the path where php is installed so replace it with the path to your directory in case you choose to install it in another directory .&lt;/li&gt;&lt;li&gt;Rename the php-ini-dist to php.ini because it is the configuration file for  php.&lt;/li&gt;&lt;li&gt;This completes the basic install and now you can change the configuration parameters in the php.ini like the timezone,  displaying errors etc.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt; Configuring apache web server&lt;/span&gt;(almost all people use it):-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Then you will have to configure apache web server and that's the tricky part because there are compatibility issues between the apache web server version and the php installation.&lt;/li&gt;&lt;li&gt;If you have the php version 5.2.10 then you can configure it for apache web server 2.0.x but the php version 5.3.0 comes with support only for the apache web server 2.2 or greater so you should check the version of apache that you have before  downloading php or vice versa.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Configuring Apache 2.0.x&lt;/span&gt; :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you have apache 2.0.x then you should download php version lower than 5.30 as it only supports the apache web server  2.2.x&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open the apache configuration file httpd.conf and search for "LoadModule" and after the last LoadModule directives just copy and past the following code.&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width:400;height:200;"&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;#php5 module for apache 2.0.x web server&lt;br /&gt;LoadModule php5_module "c:/php/php5apache2.dll"&lt;br /&gt;#Tell apache web server to recognize the .php extension&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;#The php.ini directory assuming it to be the same as c:/php&lt;br /&gt;PHPIniDir "c:/php"&lt;br /&gt;#end of php5 module&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Note that we are loading php as a module into the apache web server but you can also load it as a cgi binary. Also note that the dll that was loaded is php5apache2.dll which supports apache 2.0 web server.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Configuring Apache 2.2.x &lt;/span&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The steps remain the same but in this case you have the option to download the php 5.3.0  version but lower versions of php also support the apache 2.2.x web server because they contain the php5apache2_2.dll required for the apache 2.2.x server.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Just copy and paste the following code at the end of &lt;span style="font-weight: bold;"&gt;LoadModule&lt;/span&gt; directives in the &lt;span style="font-weight: bold;"&gt;httpd.conf&lt;/span&gt; file and i am assuming the installation directory of php is c:\php.&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width:380px;height:200px;"&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;#php5 module for apache 2.2.x web server&lt;br /&gt;LoadModule php5_module "c:/php/php5apache2_2.dll"&lt;br /&gt;#Tell apache web server to recognize the .php extension&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;#The php.ini directory assuming it to be the same as c:/php&lt;br /&gt;PHPIniDir "c:/php"&lt;br /&gt;#end of php5 module&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In this case note that only change is in the &lt;span style="font-weight: bold;"&gt;LoadModule&lt;/span&gt; directive which loads the &lt;span style="font-weight: bold;"&gt;php5apache2_2.dll&lt;/span&gt; which is loaded by the apache 2.2.x web server.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Save the http.conf file, restart the apache web server and create a simple test script and place it in the apache htdocs directory. In the test script type  and save it as test.php in the apache htdocs directory. Open the browser and type http://localhost/test.php, the installation if successful will show the page containing details about php installation and apache web server.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Activating mysql&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;support for php&lt;/span&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the installation directory of php i.e &lt;span style="font-weight: bold;"&gt;c:\php&lt;/span&gt; and then open the php.ini file and  search for  &lt;span style="font-weight: bold;"&gt;;extension=php_mysqli.dll&lt;/span&gt; and remove the semicolon  in front of it if you have mysql version 4.1 or greater because the mysqli(improved) dll file is for mysql version 4.1 or greater but if you have an older version (although it is highly unlikely) then remove the semicolon from the line that says &lt;span style="font-weight: bold;"&gt;;extension=php_mysql.dll&lt;/span&gt; .&lt;/li&gt;&lt;li&gt;Open the ext directory under the directory where php is installed and if your mysql version is  4.1 or newer then copy and paste the &lt;span style="font-weight: bold;"&gt;php_mysqli.dll&lt;/span&gt; file from it to the main directory i.e  directly under the &lt;span style="font-weight: bold;"&gt;c:\php&lt;/span&gt; directory or else copy and paste the file php_mysql.dll.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Note that there should also be a &lt;span style="font-weight: bold;"&gt;libmysql.dll&lt;/span&gt; file directly under the main directory,if not then copy and paste that file from the directory similar to the "C:\Program Files\MySQL\MySQL Server 5.0\bin" directory.&lt;/li&gt;&lt;li&gt;Now you have to set the path variable by appending &lt;span style="font-weight: bold;"&gt;c:\php&lt;/span&gt; directory path into it so that php can find the 2 above mentioned dlls required for mysql support. To see how to set the path variable see &lt;a target="_blank" style="font-weight: bold;" href="http://ramannanda.blogspot.com/2009/04/setting-path-variable-in-windows-xp_14.html"&gt;this link&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Reboot the pc&lt;/span&gt; and start the apache webserver, open browser and type the url to the file we created earlier i.e http://localhost/test.php and if everything goes fine you should see the output similar to the image shown below. This completes the installation of mysql support for php.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SnKVcFDkhSI/AAAAAAAAASA/pFolHnC7tu4/s1600-h/mysql_php.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 317px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SnKVcFDkhSI/AAAAAAAAASA/pFolHnC7tu4/s400/mysql_php.JPG" alt="" id="BLOGGER_PHOTO_ID_5364514415777711394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=1593271735&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=1590598628&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=0596157134&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-583367702049133461?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/583367702049133461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/07/installing-php-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/583367702049133461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/583367702049133461'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/07/installing-php-on-windows.html' title='Installing php on windows'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/SnKVcFDkhSI/AAAAAAAAASA/pFolHnC7tu4/s72-c/mysql_php.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4140915252771381310</id><published>2009-07-23T18:02:00.005+05:30</published><updated>2009-07-23T18:35:19.527+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='website on pc'/><category scheme='http://www.blogger.com/atom/ns#' term='Computer Networking'/><title type='text'>Dynamic Dns:Host your website on pc</title><content type='html'>The &lt;span style="font-weight: bold;"&gt;dynamic dns&lt;/span&gt; service  can be used by any person with a non-static ip address to &lt;span style="font-weight: bold;"&gt;host a website on pc&lt;/span&gt;. Non- static ip address means that a person who is  using services of an isp and so generally every time he resets his router or modem a new ip address is assigned, so  the binding of a domain name to the ip address  just cannot happen. The &lt;span style="font-weight: bold;"&gt;dynamic dns&lt;/span&gt; service can be used for this purpose to bind the non-static ip-address to a domain name by constantly updating the ip-address with the domain name provider thus a normal user can host his/her website on pc.&lt;br /&gt;&lt;br /&gt;To get the dynamic-dns service up and running for no cost, follow these steps:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Register yourself at this site: http://www.dyndns.com/&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get a free or paid dynamic domain name registered with the site.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Download and install the tool dynamic dns updater from this &lt;a href="http://www.dyndns.com/support/clients/"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Launch the tool and open the groups tab, then click on the add button, choose a name for the group, enter the user-name and password for the account that you had earlier established with the site (dyndns.com) and finally click on the download button.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;After clicking on the download button it will download the details of the domains that  have been registered for that user account after which it will update the domain name with your ip-address.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you want to host your website on your own pc and want complete configuration for it then check the following link, where i have explained all the topics like configuring modem, apache, php,  etc on your pc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ramannanda.blogspot.com/2009/04/host-website-on-pc.html"&gt; Host Website on Pc&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4140915252771381310?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4140915252771381310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/07/dynamic-dnshost-your-website-on-pc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4140915252771381310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4140915252771381310'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/07/dynamic-dnshost-your-website-on-pc.html' title='Dynamic Dns:Host your website on pc'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4672710064986592491</id><published>2009-07-21T10:40:00.016+05:30</published><updated>2010-04-02T20:11:05.382+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Using Timer class in java swing</title><content type='html'>The first thing  that you should know is that Timer class is available both in &lt;span style="font-weight: bold;"&gt;java.util&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;javax.swing&lt;/span&gt; packages and they both are different from each other.&lt;br /&gt;&lt;br /&gt;I will be discussing  code example about the Timer class in javax.Swing package which you can use to make a countdown timer, JprogressBar or do other  operations.&lt;br /&gt;&lt;br /&gt;Below is the code example and then the explanation follows:-&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width: 400px; height: 250px;"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.Timer;&lt;br /&gt;/**&lt;br /&gt;*&lt;br /&gt;* @author  morph&lt;br /&gt;*/&lt;br /&gt;public class timer_Example extends javax.swing.JFrame implements ActionListener {&lt;br /&gt;Timer timer=null;&lt;br /&gt;javax.swing.JLabel label=null;&lt;br /&gt;static int counter=0;&lt;br /&gt;/** Creates new form timer_Example */&lt;br /&gt;&lt;br /&gt;public timer_Example(){&lt;br /&gt;//your code goes here&lt;br /&gt;label=new javax.swing.JLabel("The time is 0 seconds");&lt;br /&gt;this.getContentPane().add(label);&lt;br /&gt;this.pack();&lt;br /&gt;timer=new Timer(1000,this);/*create a timer that generates an event after 1 second and pass it the frame object which handles the action event by implementing the ActionListener interface*/&lt;br /&gt;timer.start();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void actionPerformed(ActionEvent e){&lt;br /&gt;if(counter==100)&lt;br /&gt;{&lt;br /&gt;timer.stop();&lt;br /&gt;}&lt;br /&gt;javax.swing.SwingUtilities.invokeLater(new updateCount());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class updateCount implements Runnable{&lt;br /&gt;public void run(){&lt;br /&gt;counter=counter+1;//update the counter value&lt;br /&gt;label.setText("the time is "+counter+" seconds");&lt;br /&gt;//your JProgressBar code can go here&lt;br /&gt;//or any other code that you may like&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;public static void main(String args[]) {&lt;br /&gt;&lt;br /&gt;timer_Example form=new timer_Example();&lt;br /&gt;form.setVisible(true);&lt;br /&gt;form.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The code is pretty  basic but this code can be used to perform various tasks. In the code we initialize the counter to 0 and then create the timer object by calling its constructor and passing it 2 arguments the time in milliseconds after which the timer shall generate an event (timer generates an ActionEvent) and second parameter is an event handler for the action event which in this case is the form object itself.&lt;br /&gt;&lt;br /&gt;The actionPerformed function just simply checks whether the count has reached 100 or not and if it has it stops the timer.  Otherwise it creates a new runnable object of a &lt;span style="font-weight: bold;"&gt;nested class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;updateCount&lt;/span&gt; which updates the count value and displays the count value through the JLabel. Here you can do other things like updating the JProgressBar or any other event that you may wish to implement. I have used &lt;span style="font-weight: bold;"&gt;SwingUtilities.invokeLater()&lt;/span&gt; function because it is always recommended that you should place the call to some other class on an event queue and not directly call the class.&lt;br /&gt;&lt;br /&gt;I have used a similar concept to develop a simple application in java that performs various operations like Shutdown, Hibernate, Standby, lock etc but in that case the counter is countdown counter. You can also create beautiful application launcher windows with changing backgrounds and  updating progress bar with it.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=0072263148&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=0132413930&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4672710064986592491?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4672710064986592491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/07/using-timer-class-in-java-swing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4672710064986592491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4672710064986592491'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/07/using-timer-class-in-java-swing.html' title='Using Timer class in java swing'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-569383492836387831</id><published>2009-07-20T09:34:00.009+05:30</published><updated>2009-08-01T08:50:24.165+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>phpMyAdmin log in error</title><content type='html'>In case you change the password for root account using &lt;span style="font-weight: bold;"&gt;phpMyAdmin&lt;/span&gt; and then try to login into mysql database using phpmyadmin you will receive a &lt;span style="font-weight: bold;"&gt;log in error&lt;/span&gt; and you won't be able to login, this happens because phpmyadmin has no way of knowing what's the root password that you have set.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;phpmyadmin&lt;/span&gt; uses it's config.inc.php file for storing mysql user related information and that is where you should enter the root password so that on next log in it can successfully log in to the mysql database.&lt;br /&gt;&lt;br /&gt;The solutions to update the password  are explained below:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;For &lt;span style="font-weight: bold;"&gt;Wamp Server&lt;/span&gt;:- If you have installed wamp server then follow these instructions&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the apps directory under the directory of wamp server. i.e /wamp/apps&lt;/li&gt;&lt;li&gt;Now open the phpmyadmin directory and then open the config.inc.php file &lt;/li&gt;&lt;li&gt;Navigate to the line that says "&lt;span style="font-weight: bold;"&gt;$cfg['Servers'][$i]['password'] = 'xxxx '&lt;/span&gt;" and replace the xxxx with the  password for the root user and save changes.&lt;/li&gt;&lt;li&gt;Now log into the mysql database using phpmyadmin and your login will be successful&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;For &lt;span style="font-weight: bold;"&gt;Standalone installation&lt;/span&gt;:- In case you have installed phpmyadmin as a standalone version then just navigate to the directory of &lt;span style="font-weight: bold;"&gt;phpmyadmin&lt;/span&gt; and then you can follow the aforementioned solution steps.&lt;br /&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/7351084055463323761-569383492836387831?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/569383492836387831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/07/phpmyadmin-log-in-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/569383492836387831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/569383492836387831'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/07/phpmyadmin-log-in-error.html' title='phpMyAdmin log in error'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-7311176569606333746</id><published>2009-07-06T12:24:00.003+05:30</published><updated>2009-07-06T13:20:42.604+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>java.lang.NoClassDefFoundError on executing jar file</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem&lt;/span&gt;:-You encounter this error while executing your jar file then it is likely due to missing library files that your jar file needs to run.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solutions&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;For applications made using &lt;span style="font-weight: bold;"&gt;NetBeans&lt;/span&gt; Ide:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Netbeans while making your jar file adds the&lt;span style="font-weight: bold;"&gt; classpath&lt;/span&gt; of the libraries needed for your application to the &lt;span style="font-weight: bold;"&gt;manifest.mf&lt;/span&gt; file and creates the folder&lt;span style="font-weight: bold;"&gt; lib&lt;/span&gt; in the &lt;span style="font-weight: bold;"&gt;dist&lt;/span&gt; folder containing the jar files that your application needs to execute.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you copy and paste just the jar file and try to execute it it will raise an error, so  instead of just copying the jar file copy the entire &lt;span style="font-weight: bold;"&gt;dist&lt;/span&gt; folder and then execute the jar. It will work.&lt;/li&gt;&lt;/ul&gt;For applications made without the Ide:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To add the path of class libraries that are missing just create a plaint text file and then add the class path  of the libraries to it.  for example if you are getting error for the missing class file &lt;span style="font-weight: bold;"&gt;org.apache.tools.bzip2.jar&lt;/span&gt;  located under the &lt;span style="font-weight: bold;"&gt;xyz&lt;/span&gt; directory then you should add  the variable as it is shown &lt;span style="font-weight: bold;"&gt;Class-Path: xyz/org.apache.tools.bzip2.jar &lt;/span&gt; and save the text file. Then you should execute the following command.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;jar cfm &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;"Your jar File"&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt; "The text file you edited" "the files to add into the jar"&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now run the application using the command "&lt;span style="font-weight: bold;"&gt;java -jar application_name.jar" &lt;/span&gt;and it should work fine.&lt;/li&gt;&lt;/ul&gt;In case you still face problems regarding this issue post your problem and i'll solve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-7311176569606333746?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/7311176569606333746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/07/javalangnoclassdeffounderror-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7311176569606333746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7311176569606333746'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/07/javalangnoclassdeffounderror-on.html' title='java.lang.NoClassDefFoundError on executing jar file'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-5677865813755994982</id><published>2009-07-06T10:52:00.013+05:30</published><updated>2010-08-15T21:23:55.703+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winxp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Automated shutdown utility/Tool java based</title><content type='html'>In case you want to &lt;span style="font-weight: bold;"&gt;schedule or automate tasks like shutting down, restarting, hibernating , Standby and Locking &lt;/span&gt;then you can use this simple application made by me. It utilizes the &lt;span style="font-weight: bold;"&gt;psshutdown&lt;/span&gt; application and has a automated counter for planning the aforementioned tasks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation&lt;/span&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Just extract the rar file and after you extract there will be two folders, one will be install and the other one will be the application and there will also be an executable psshutdown utility.&lt;/li&gt;&lt;li&gt;Run the installer application by using the command &lt;span style="font-weight: bold;"&gt;"java -jar installer.jar"&lt;/span&gt;(without the quotes) on the install folder and click on the "Select extracted file psshutdown" button, select the extracted&lt;span style="font-weight: bold;"&gt; psshutdown file&lt;/span&gt;, click on the install button and the application will be ready to use.&lt;/li&gt;&lt;li&gt;Now just navigate to the &lt;span style="font-weight: bold;"&gt;application&lt;/span&gt; directory execute the command &lt;span style="font-weight: bold;"&gt;java -jar Shutdown.jar &lt;/span&gt;from command prompt to launch the application.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Using the application&lt;/span&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Just launch the application by opening command prompt at the application folder and invoking &lt;span style="font-weight: bold;"&gt;"java -jar shutdown.jar"&lt;/span&gt; (without the quotes) command .&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Specify the time in &lt;span style="font-weight: bold;"&gt;hours:minutes:seconds&lt;/span&gt; format. For example if you want to automate the task 36 hours from now then enter 36 in the field. The field is auto correcting so you can enter values like 23:78:65 and it will correct those values to proper format.&lt;/li&gt;&lt;li&gt;Select the operation from the drop down box that you want to execute and click on the submit button.&lt;/li&gt;&lt;li&gt;One can always abort the current operation in between by clicking on the abort button.&lt;/li&gt;&lt;li&gt;The label at the bottom will display the time left for the execution of the operation.&lt;/li&gt;&lt;/ul&gt;Download the application from the link below:-&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/projects/shutdownapp/"&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5341525536956139730" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiDpLNzyyNI/AAAAAAAAANc/6O2CV2BPFrg/s400/download_buttons.jpg" style="cursor: pointer; float: left; height: 67px; margin: 0pt 10px 10px 0pt; width: 123px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following are the snapshots of the application:-&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_s4Oz51luJRA/SlGZtG_vOEI/AAAAAAAAARo/uIQB72gpAmk/s1600-h/Shutdown_image1.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5355230432171341890" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SlGZtG_vOEI/AAAAAAAAARo/uIQB72gpAmk/s400/Shutdown_image1.JPG" style="cursor: pointer; float: left; height: 321px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_s4Oz51luJRA/SlGZte3kY1I/AAAAAAAAARw/5jDVZLNmaUw/s1600-h/Shutdown_image2.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5355230438579528530" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SlGZte3kY1I/AAAAAAAAARw/5jDVZLNmaUw/s400/Shutdown_image2.JPG" style="cursor: pointer; float: left; height: 320px; margin: 0pt 10px 10px 0pt; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:- Its always recommended to create a shortcut for running jar files. So just create a shortcut and in the target prefix the command &lt;b&gt;'java -jar' &lt;/b&gt;and&amp;nbsp; save the shortcut.&lt;br /&gt;&lt;iframe align="left" class=" jhvakxwkhzjgazcssmbf hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0072263148&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;iframe align="left" class=" jhvakxwkhzjgazcssmbf hwqzpdjqriydabaekkvz hwqzpdjqriydabaekkvz xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx xsrgmlqjhrmuuqodpdnx" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0132413930&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-5677865813755994982?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/5677865813755994982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/07/automated-shutdown-utilitytool-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5677865813755994982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5677865813755994982'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/07/automated-shutdown-utilitytool-java.html' title='Automated shutdown utility/Tool java based'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/SiDpLNzyyNI/AAAAAAAAANc/6O2CV2BPFrg/s72-c/download_buttons.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3428424231093375614</id><published>2009-06-28T16:01:00.013+05:30</published><updated>2009-08-16T15:19:41.874+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java Servlets:Introduction,Compiling,Deploying and Running</title><content type='html'>What is a &lt;span style="font-weight: bold;"&gt;servlet&lt;/span&gt;  ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Servlet&lt;/span&gt;:a short introduction:-&lt;br /&gt;A servlet handles the requests from the server, that require servlet to add something or do some operations in response to the client request so that a dynamic page can be generated, rather than the same old monotonous static html pages.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;servlet API's&lt;/span&gt; are generally provided along with &lt;span style="font-weight: bold;"&gt;Containers&lt;/span&gt; like &lt;span style="font-weight: bold;"&gt;tomcat, JBoss &lt;/span&gt;etc and you have to import the servlet-api.jar for compiling your servlet .java files. A java servlet does not have a main method so it is the container that controls the execution of servlet methods. The container initializes the servlet by calling it's init method, after which it's service method is called which determines that which of the servlet's method is to be called depending upon the client request and after a servlet's job is done it purges it's resources by calling it's destroy method.&lt;br /&gt;The container also provides support for JSP.&lt;br /&gt;&lt;br /&gt;The servlet class that you will implement let it's name be MyServlet , will generally extend the HttpServlet class that extends the GenericServlet class so the class hierarchy will be as shown in the following figure.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/SkdORR7UpTI/AAAAAAAAARg/yq1NfDJbPXk/s1600-h/ServletHierarchy.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 170px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SkdORR7UpTI/AAAAAAAAARg/yq1NfDJbPXk/s400/ServletHierarchy.gif" alt="" id="BLOGGER_PHOTO_ID_5352332740930086194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The servlet class that you will implement will most likely implement either of the following two methods:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{  //code here}&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;If the client uses the http Get query, then this will be the method that will be invoked by the container to handle the Get request. It takes reference to two objects HttpServletRequest and HttpServletResponse object, these objects are created by the container and their reference is passed to this method. A client will use a Get http request, If  the amount of data to be sent is less, the data sent using get request is visible in the browser navigation bar, so you would not want to display sensitive information like user password, for that you will want to use the Http Post request .&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ // code here }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If the client uses the http post request then this will be the method called by the container by looking at the client request. It is used when  the amount of data to be sent is more, like filling up the html form and sending it to the server to process it and also when sensitive information like user password is to sent.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;An example servlet&lt;/span&gt; :-&lt;br /&gt;&lt;br /&gt;The example servlet(infoServlet) will be the most basic servlet, It will take the parameter user-name and password, perform some fake authentication (authentication won't actually be done) and display a welcome message to the user along with the current date and time.&lt;br /&gt;&lt;br /&gt;The servlet code is given below and the explanation follows:-&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width: 380px; height: 250px;"&gt;&lt;blockquote&gt;&lt;p&gt;import javax.servlet.*;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;public class infoServlet extends HttpServlet{&lt;br /&gt;public void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException&lt;br /&gt;{&lt;br /&gt;response.setContentType("text/html");&lt;br /&gt;PrintWriter output=response.getWriter();&lt;br /&gt;String name=request.getParameter("text_field");&lt;br /&gt;String password=request.getParameter("password_field");&lt;br /&gt;Date now = new Date();&lt;br /&gt;//No authentication will be done&lt;br /&gt;output.println("&amp;lt;html&amp;gt;"+"&amp;lt;head&amp;gt;"+"&amp;lt;title&amp;gt;"+&lt;br /&gt;"Welcome page"+"&amp;lt;/title&amp;gt;"+"&amp;lt;/head&amp;gt;"+&lt;br /&gt;"&amp;lt;body&amp;gt;"+"Welcome "+name+"&amp;lt;br/&amp;gt;"+&lt;br /&gt;"The time is"+now+"&amp;lt;/body&amp;gt;"+"&amp;lt;/html&amp;gt;");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In this servlet we have implemented the doPost method as the client will be sending the sensitive information in a post request.&lt;br /&gt;&lt;br /&gt;The method &lt;span style="font-weight: bold;"&gt;setContentType&lt;/span&gt;("content_type"); tells about the response mime type to the client browser so that it can display the page received properly.&lt;br /&gt;Then we obtain a &lt;span style="font-weight: bold;"&gt;printwriter&lt;/span&gt; object reference by invoking the &lt;span style="font-weight: bold;"&gt;getWriter() &lt;/span&gt;method on the  &lt;span style="font-weight: bold;"&gt;response&lt;/span&gt; object, which is used to generate the dynamic response page for the client.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;getParameter&lt;/span&gt;("field_name") gets the parameter value entered by the user in the form.&lt;br /&gt;&lt;br /&gt;Now save the java file as &lt;span style="font-weight: bold;"&gt;infoServlet.java&lt;/span&gt; .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Compiling the servlet&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;To compile the servlet follow these steps:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the command prompt and navigate to the directory where the infoServlet java file is saved.&lt;/li&gt;&lt;li&gt;Now to compile the servlet execute the following command.&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width: 380px; height: 150px;"&gt;&lt;blockquote&gt;&lt;p&gt; javac -classpath "C:/Program files/Tomcat6.0/lib/servlet_api.jar" infoServlet.java&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Here replace the classpath (the path between the quotes) with the path to your servlet_api.jar file provided by the container that you are using. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Deploying the servlet&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;I am here using the tomcat container, the deploying part may vary depending upon the container that you use.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a directory under the &lt;span style="font-weight: bold;"&gt;tomcat6.0/webapps&lt;/span&gt; directory, name it &lt;span style="font-weight: bold;"&gt;proj1&lt;/span&gt; then under the proj1 directory create a directory &lt;span style="font-weight: bold;"&gt;WEB-INF&lt;/span&gt; , then create a directory &lt;span style="font-weight: bold;"&gt;classes&lt;/span&gt; under the WEB-INF directory.&lt;/li&gt;&lt;li&gt;Copy the generated class file into the classes directory. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Deployment Descriptor (DD)&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;Now you would have to create the deployment descriptor ie the web.xml file that tells the container about information such as where the servlet class file is placed, what is the deployment name that you are using, what will be the name by which client will call the servlet and obviously various other parameters.&lt;br /&gt;&lt;br /&gt;The deployment descriptor is given in the following code-box, copy the contents and save it as web.xml&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width: 380px; height: 250px;"&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;web-app xmlns="http://java.sun.com/xml/ns/javaee"&lt;br /&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://java.sun.com/xml/ns/javaee&lt;br /&gt;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&lt;br /&gt;version="2.5"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;TestServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;infoServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;TestServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/submit&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Explanation:-&lt;br /&gt;&lt;br /&gt;One should not worry about the webapp tag just copy and paste it.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;&amp;lt;&lt;span&gt;servlet&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;tag:- It defines the properties relating to your servlet. In this case we map the deployment name ie the name specified by &amp;lt;servlet-name&amp;gt; tag , to the path to actual class file i.e the name specified by the &amp;lt;servlet-class&amp;amp;gt tag; i.e the infoservlet, notice here that we do not specify the name as infoServlet.java as it is the java class file.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;&amp;lt;servlet-mapping &amp;gt;&lt;/span&gt; tag :-It is used to map the name by which the client will access the servlet to the deployment name. Here the &amp;lt;url-pattern&amp;gt; specifies the name by which the client accesses the servlet.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Deploying (Contd .....)&lt;/span&gt; : Copy the web.xml file and save it under the &lt;span style="font-weight: bold;"&gt;WEB-INF&lt;/span&gt; directory. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now we would have to create the simple html form in which user will enter the details and when he clicks on the submit button the post request will be send to the server. The container will then invoke the servlet to do its operation and servlet will generate the response which will be converted to http repsonse by the container and send back to the client. Simple isn't it. The code for the form is given below, copy and paste the code and &lt;span style="font-weight: bold;"&gt;save it&lt;/span&gt; as &lt;span style="font-weight: bold;"&gt;form.html &lt;/span&gt;under the &lt;span style="font-weight: bold;"&gt;proj1&lt;/span&gt; directory.&lt;br /&gt;&lt;div id="codebox"&gt;&lt;br /&gt;&lt;pre id="prestyle" style="width: 350px; height: 250px;"&gt;&lt;blockquote&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt; A temporary page &amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;&lt;br /&gt;Fill up the following form&lt;br /&gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;form id="2314" method="post" action="submit"&amp;gt;&lt;br /&gt;&amp;lt;center&amp;gt;&lt;br /&gt;Enter your name &amp;lt;input name="text_field" type="text" value=""/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;Enter your password &amp;lt;input name="password_field" type="password" value="" /&amp;gt; &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;input type="submit" value="submit form"&amp;gt;&lt;br /&gt;&amp;lt;/center&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;The html code is pretty simple and you should note only 2 things :-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; The form is using the post method so a post query is generated when the user clicks on the submit button.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The input field name property is used by the servlet to access the parameter values entered by the user.&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Running the servlet&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;Phew! everything is done now just the working of application is to be seen.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start the apache tomcat service. Note in case you have problems launching it just go to its binary directory i.e the bin directory and launch it from there, it will be launched in a command prompt.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open the browser and access the html form and type &lt;span style="font-weight: bold;"&gt;http://localhost:8080/proj1/form.html&lt;/span&gt;  in your browser  navigation bar.&lt;/li&gt;&lt;li&gt;Fill up the details and click on the submit button and voila! you will see the response generated by the servlet which will be the user-name and the date that you entered in the form.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Note:If you have any problems do post a comment and i will post the solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3428424231093375614?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3428424231093375614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/java-servletsintroductioncompilingdeplo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3428424231093375614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3428424231093375614'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/java-servletsintroductioncompilingdeplo.html' title='Java Servlets:Introduction,Compiling,Deploying and Running'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_s4Oz51luJRA/SkdORR7UpTI/AAAAAAAAARg/yq1NfDJbPXk/s72-c/ServletHierarchy.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-7477648982038230667</id><published>2009-06-28T11:21:00.004+05:30</published><updated>2010-04-02T19:56:39.898+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>Change cs 1.6 start-up/menu music</title><content type='html'>To &lt;span style="font-weight: bold;"&gt;change cs 1.6 start-up or menu music&lt;/span&gt;, follow these simple steps:-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the directory where counter strike is installed and navigate to the cstrike directory.&lt;br /&gt;&lt;br /&gt;For &lt;span style="font-weight: bold;"&gt;non steam cs 1.6&lt;/span&gt;:-&lt;br /&gt;If you don't know where the installation directory is just right click on the shortcut, choose properties and then click on the find target button.&lt;br /&gt;&lt;br /&gt;For &lt;span style="font-weight: bold;"&gt;steam cs 1.6&lt;/span&gt;:-&lt;br /&gt;Right click on the steam shortcut, choose properties and then click on the find target button.&lt;br /&gt;Now navigate to under the cstrike folder by following this sequence:-  &lt;span style="font-weight: bold;"&gt;SteamApps-&amp;gt;"your steam id"-&amp;gt;counter-strike -&amp;gt;cstrike.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Now under the cstrike directory, &lt;span style="font-weight: bold;"&gt;if &lt;/span&gt;there is a folder named &lt;span style="font-weight: bold;"&gt;media&lt;/span&gt; then open it else you should create the media folder.&lt;/li&gt;&lt;li&gt;In the media folder delete the &lt;span style="font-weight: bold;"&gt;gamestartup.mp3&lt;/span&gt; file and replace it with a &lt;span style="font-weight: bold;"&gt;mp3 &lt;/span&gt;music file of your choice, then rename the music file to &lt;span style="font-weight: bold;"&gt;gamestartup.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Now Launch the game and listen to your favorite music in the game.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SeILSPtptpI/AAAAAAAAAFQ/hqzJckf2mAI/s1600-h/2s8ivfc.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 331px; height: 400px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SeILSPtptpI/AAAAAAAAAFQ/hqzJckf2mAI/s400/2s8ivfc.jpg" alt="counter strike image" id="BLOGGER_PHOTO_ID_5323830117588907666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000098XKC&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000GOUE7O&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000UPDWL4&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-7477648982038230667?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/7477648982038230667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/change-cs-16-start-upmenu-music.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7477648982038230667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7477648982038230667'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/change-cs-16-start-upmenu-music.html' title='Change cs 1.6 start-up/menu music'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s4Oz51luJRA/SeILSPtptpI/AAAAAAAAAFQ/hqzJckf2mAI/s72-c/2s8ivfc.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4964769151744638773</id><published>2009-06-27T19:42:00.009+05:30</published><updated>2009-06-28T20:07:42.658+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cool Tutorials'/><title type='text'>Related posts widget for blogger/blogspot site</title><content type='html'>The &lt;span style="font-weight: bold;"&gt;related posts widget&lt;/span&gt; is really helpful for your site because of the following reasons:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It attracts the attention of the user viewing your website to other articles filed under the similar category i.e the posts filed under the same label. So a user generally ends up viewing those articles and in effect stays at your site for longer period of time.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It generates a lot of internal links from which a user might be able to find related information on your site and these internal links are good for SEO also. &lt;/li&gt;&lt;/ol&gt;To add the widget to your just follow these simple steps:-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the &lt;span style="font-weight: bold;"&gt;layout section&lt;/span&gt; of your blog and then go to the &lt;span style="font-weight: bold;"&gt;Edit Html&lt;/span&gt; Section. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now add the following code just above the &amp;lt;/head&amp;gt; tag. This code is added in the head section because  style-sheets  are generally defined in the head section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 400px; height: 250px;"&gt;&lt;blockquote&gt;&amp;lt;style&amp;gt;&lt;br /&gt;#related-posts {&lt;br /&gt;float : left;&lt;br /&gt;width : 540px;&lt;br /&gt;margin-top:20px;&lt;br /&gt;margin-left : 5px;&lt;br /&gt;margin-bottom:20px;&lt;br /&gt;font : 12px Verdana;&lt;br /&gt;margin-bottom:10px;&lt;br /&gt;}&lt;br /&gt;#related-posts .widget {&lt;br /&gt;list-style-type : none;&lt;br /&gt;margin : 5px 0 5px 0;&lt;br /&gt;padding : 0;&lt;br /&gt;}&lt;br /&gt;#related-posts .widget h2, #related-posts h2 {&lt;br /&gt;color : #940f04;&lt;br /&gt;font-size : 20px;&lt;br /&gt;font-weight : normal;&lt;br /&gt;margin : 5px 7px 0;&lt;br /&gt;padding : 0 0 5px;&lt;br /&gt;}&lt;br /&gt;#related-posts a {&lt;br /&gt;color : #054474;&lt;br /&gt;font-size : 12px;&lt;br /&gt;text-decoration : none;&lt;br /&gt;}&lt;br /&gt;#related-posts a:hover {&lt;br /&gt;color : #054474;&lt;br /&gt;text-decoration : none;&lt;br /&gt;}&lt;br /&gt;#related-posts ul {&lt;br /&gt;border : medium none;&lt;br /&gt;margin : 10px;&lt;br /&gt;padding : 0;&lt;br /&gt;}&lt;br /&gt;#related-posts ul li {&lt;br /&gt;display : block;&lt;br /&gt;background : url("http://ramannanda9.fileave.com/0041_sparklet.png") no-repeat 0 0;&lt;br /&gt;margin : 0;&lt;br /&gt;padding-top : 0;&lt;br /&gt;padding-right : 0;&lt;br /&gt;padding-bottom : 1px;&lt;br /&gt;padding-left : 16px;&lt;br /&gt;margin-bottom : 5px;&lt;br /&gt;line-height : 2em;&lt;br /&gt;border-bottom:1px dotted #cccccc;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;script src='http://ramannanda9.fileave.com/related_widgets.js' type='text/javascript'/&amp;gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now click on the expand widget template and search for &amp;lt;data:post.body&amp;gt; and add the following code after the &amp;lt;/p&amp;gt; tag.&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 400px; height: 150px;"&gt;&lt;blockquote&gt;&amp;lt;b:if cond='data:blog.pageType == "item"'&amp;gt;&lt;br /&gt;&amp;lt;div id="related-posts"&amp;gt;&lt;br /&gt;&amp;lt;font face='Arial' size='3'&amp;gt;&amp;lt;b&amp;gt;Related Posts : &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;font color='#FFFFFF'&amp;gt;&amp;lt;b:loop values='data:post.labels' var='label'&amp;gt;&amp;lt;data:label.name/&amp;gt;&amp;lt;b:if cond='data:label.isLast != "true"'&amp;gt;,&amp;lt;/b:if&amp;gt;&amp;lt;b:if cond='data:blog.pageType == "item"'&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&amp;amp;callback=related_results_labels&amp;amp;max-results=5"' type='text/javascript'/&amp;gt;&amp;lt;/b:if&amp;gt;&amp;lt;/b:loop&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;&amp;lt;script type='text/javascript'&amp;gt; removeRelatedDuplicates(); printRelatedLabels();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&amp;lt;/b:if&amp;gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;Now you can customize the number of related posts that are displayed by changing the value of the variable &lt;span style="font-weight: bold;"&gt;max_results &lt;/span&gt;to any number you want (try to keep it small, 5 is the default value). Just use ctrl+f to find the variable max_results with ease. The data for related posts is read from your site feed.&lt;br /&gt;&lt;br /&gt;Now just click on save the template and you will have the &lt;span style="font-weight: bold;"&gt;working related posts widget for your blogger site&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;You should not encounter any problems in case of install but in case you do, post a comment i will post the solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4964769151744638773?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4964769151744638773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/related-posts-widget-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4964769151744638773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4964769151744638773'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/related-posts-widget-for.html' title='Related posts widget for blogger/blogspot site'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1070367687229727503</id><published>2009-06-26T17:06:00.009+05:30</published><updated>2009-06-26T19:25:44.883+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix/Linux'/><title type='text'>Changing the Linux root password</title><content type='html'>There are a couple of ways in which you can change the &lt;span style="font-weight: bold;"&gt;root password of a &lt;/span&gt;linux&lt;span style="font-weight: bold;"&gt; system&lt;/span&gt;, if you have forgotten it.&lt;br /&gt;&lt;br /&gt;The efficacious and fast way of doing this is:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.&lt;/span&gt;Getting the shell in read write mode :-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;At the lilo prompt type " &lt;span style="font-weight: bold;"&gt;linux init=/bin/bash rw&lt;/span&gt; " without the quotes . Now what this does is, it gives us the bash shell (Bourne again shell) in read write mode and does not start with &lt;span style="font-weight: bold;"&gt;/sbin/init&lt;/span&gt; , &lt;span style="font-weight: bold;"&gt;/etc/rc.d/*&lt;/span&gt; and rc.local and so on and so forth routines.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now use the &lt;span style="font-weight: bold;"&gt;passwd&lt;/span&gt; command and type the new password for root but you should not restart the system yet as it can cause data crash.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;After you have changed the password, remount the partition in read only mode, this can be done by using the command  &lt;span class="docEmphBold"&gt;"&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;mount -o remount,ro /&lt;/span&gt;&lt;/span&gt; " without the quotes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now you can reboot manually without the risk of loosing the data as the partition is in read only mode&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The other way of doing it is also efficacious but it does take a step more and is really a oaf thing to do if you know the first way.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.&lt;/span&gt; Getting the shell in read mode :-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;At the lilo prompt type "&lt;span style="font-weight: bold;"&gt;l&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;inux init=/bin/bash&lt;/span&gt;" . This does that same but gives us the bash shell in read mode.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;But we want it in read-write mode so that the changes can be written to the /etc/passwd and /etc/shadow file. So for that execute the command &lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;span class="docEmphBold"&gt;&lt;span style="font-weight: bold;"&gt; mount -o remount,rw / "&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;(without the quotes). This remounts the /(root partition) in read write mode.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now you can follow the steps 2 to 4 in the aforementioned solution for accomplishing the task.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;The last and most dreaded way:-&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;Running the system at init runlevel 1&lt;/span&gt;:- This should be done with complete caution because even if you misplace a single letter or white-space while editing the kernel line in the boot menu, the system would give you the error that it cannot find the kernel and if you still want to follow this method then do so with utmost caution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;Almost all the  system administrators password protect the boot menu  but in case it is not password protected then you can easily change the&lt;span style="font-weight: bold;"&gt; root password.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Just follow these steps:-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If you are using a dual boot system, then you would be using Grub boot loader and at the start-up you would be given the time to select which os you want to boot to. Interrupt the normal boot process by pressing any key (except enter of course) and select the linux partition and press e (for editing the Grub boot option).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The boot commands will be displayed to you, Select the command representing the linux kernel from the list. The line would be of the form &lt;span style="font-weight: bold;"&gt;"kernel /vmlinuz-...."&lt;/span&gt; and press e again to edit this line.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Be careful in this step, for changing the boot process to init run-level 1 , type the space followed by 1&lt;span style="font-weight: bold;"&gt; at the end of the line &lt;/span&gt;&lt;span&gt;(after the /rhgb)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;This tells the system to run only the scripts of run-level 1 ie rc1.d (remember we by passed this in the first 2 solutions). Now just press b to continue the boot process which will leave you with a bare shell with #prompt.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Type the &lt;span style="font-weight: bold;"&gt;passwd&lt;/span&gt; command, you will be asked to enter the new root password and after you confirm it, reboot the system.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now you can log into the system with the new root password that you entered in the previous step.&lt;br /&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/7351084055463323761-1070367687229727503?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1070367687229727503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/changing-linux-root-password.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1070367687229727503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1070367687229727503'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/changing-linux-root-password.html' title='Changing the Linux root password'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-2037168862153649590</id><published>2009-06-23T15:06:00.007+05:30</published><updated>2010-04-02T19:55:11.832+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>Configure Hlds server for counter strike 1.6:Launch options and rates</title><content type='html'>This tutorial of &lt;span style="font-weight: bold;"&gt;Hlds server  &lt;/span&gt;for &lt;span style="font-weight: bold;"&gt;counter strike 1.6&lt;/span&gt; mainly concentrates upon the following aspects:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Launching&lt;/span&gt; the &lt;span style="font-weight: bold;"&gt;hlds&lt;/span&gt; and its &lt;span style="font-weight: bold;"&gt;launch options&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Server rates&lt;/span&gt; for lag and choke free game-play.&lt;/li&gt;&lt;/ul&gt;This tutorial does not cover the configuration of modem/router as it has been already covered, visit this &lt;a href="http://ramannanda.blogspot.com/2009/05/configure-hlds-server-for-counter.html"&gt;link&lt;/a&gt; for that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Launching HLDS and it's launch options&lt;/span&gt; :- It can be launched in the following modes&lt;br /&gt;&lt;ol&gt;&lt;li&gt; GUI mode&lt;/li&gt;&lt;li&gt; Console mode&lt;/li&gt;&lt;/ol&gt;You should prefer launching the server from the console mode as it consumes less resources and runs smoothly.&lt;br /&gt;&lt;br /&gt;To launch it in the console mode follow these steps:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a shortcut of hlds on the desktop.&lt;/li&gt;&lt;li&gt;Right click on the shortcut, select properties , select shortcut tab and in the target field &lt;span style="font-weight: bold;"&gt;after&lt;/span&gt; the game path (the path b/w the quotes),  copy and paste the following code.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 400px; height: 50px;"&gt;&lt;blockquote&gt;-console -game cstrike +sys_ticrate 1000 +heapsize 250000 +maxplayers 10 +map de_dust2&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;In this you can change the value of maxplayers and the map to what you want.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Setting up the rcon_password&lt;/span&gt;: One must set the &lt;span style="font-weight: bold;"&gt;rcon_password&lt;/span&gt; as it allows the server admin privileged commands like kick ban etc and if you do not set the rcon_password then anyone can execute those commands. To set the password execute  the command: &lt;span style="font-weight: bold;"&gt;rcon_password "any-password"&lt;/span&gt; where "any-password" is the password you want to use.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Increasing the process priority&lt;/span&gt;: Open the Windows task-manager, select the processes tab, select hlds.exe and right click on it and change its priority to realtime. This gives extra priority to the hlds process which reduces the lag.&lt;/li&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Changing sv_lan&lt;/span&gt;:Change the parameter sv_lan to 0 from 1 in the &lt;span style="font-weight: bold;"&gt;server.cfg&lt;/span&gt; file in the cstrike directory for online game play else there is no need to change the value.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Adding Master server&lt;/span&gt;:One must add the master servers so that the server gets listed in the list, when people search for the game servers . For that add the following lines of code to your server.cfg file&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 400px; height: 150px;"&gt;&lt;blockquote&gt;setmaster add 69.28.151.162&lt;br /&gt;setmaster add 72.165.61.189&lt;br /&gt;setmaster add 207.173.177.11&lt;br /&gt;setmaster add 68.142.72.250&lt;br /&gt;setmaster add 65.73.232.251:27040&lt;br /&gt;setmaster add 65.73.232.253:27040&lt;br /&gt;setmaster add 207.173.177.12:27010&lt;br /&gt;setmaster add 207.173.177.11:27010&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;2. Server rates&lt;/span&gt;: These server rates are very important and must be set correctly for the lag and choke free game-play.&lt;br /&gt;&lt;br /&gt;Follow these steps:-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Insert into the server.cfg file, the following alias based scripts that you can use to change the server rates easily. To change the rate just type the corresponding alias. For example:- if you want to set the rate to "normal" just type normal in the console.&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 350px; height: 100px;"&gt;&lt;blockquote&gt;alias "slow" "sv_minrate 6000;sv_maxrate 9000;sv_minupdaterate 14;sv_maxupdaterate 14;echo slow rate set"&lt;br /&gt;alias "normal" "sv_minrate 6000;sv_maxrate 13000;sv_minupdaterate 15;sv_maxupdaterate 20;echo normal rate set"&lt;br /&gt;alias "fast" "sv_minrate 10000;sv_maxrate 15000;sv_minupdaterate 20;sv_maxupdaterate 30;echo fast rate set"&lt;br /&gt;alias "veryfast" "sv_minrate 10000;sv_maxrate 20000;sv_minupdaterate 30;sv_maxupdaterate 90;echo very fast rate set" &lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Now you should turn off the logging feature which enhances the performance of the server as it does not have to write log files. Enter these settings into your server.cfg file.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 350px; height: 150px;"&gt;&lt;blockquote&gt;log off&lt;br /&gt;sv_logbans 0&lt;br /&gt;sv_logfile 0&lt;br /&gt;sv_log_onefile 0&lt;br /&gt;mp_logmessages 0&lt;br /&gt;mp_logdetail 0&lt;br /&gt;sv_unlag 1&lt;br /&gt;sv_maxunlag .1&lt;br /&gt;fps_max 500&lt;/blockquote&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Now depending upon your connection speed, you should enter the corresponding rates to the server.cfg file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;For 256kbps :-&lt;/span&gt;&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 350px; height: 100px;"&gt;&lt;blockquote&gt;sv_rate 15000&lt;br /&gt;sv_cmdrate 66&lt;br /&gt;sv_cmdbackup 4&lt;br /&gt;sv_updaterate&lt;br /&gt;sv_resend 3&lt;br /&gt;mp_dlmax 256&lt;br /&gt;mp_decals 100&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;For 512kbps&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 350px; height: 100px;"&gt;&lt;blockquote&gt;sv_rate 17000&lt;br /&gt;sv_cmdrate 80&lt;br /&gt;sv_cmdbackup 4&lt;br /&gt;mp_updaterate 80&lt;br /&gt;sv_resend 3&lt;br /&gt;mp_dlmax 420&lt;br /&gt;mp_decals 100&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt; For 1mbps&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;or higher&lt;/span&gt; :-&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 2px solid ; overflow: auto; color: rgb(0, 153, 255); width: 350px; height: 100px;"&gt;&lt;blockquote&gt;sv_rate 25000&lt;br /&gt;sv_cmdrate 101&lt;br /&gt;sv_cmdbackup 6&lt;br /&gt;mp_updaterate 101&lt;br /&gt;sv_resend 3&lt;br /&gt;mp_dlmax 768&lt;br /&gt;mp_decals 400&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;These settings should give the players playing on your &lt;span style="font-weight: bold;"&gt;hlds&lt;/span&gt;  choke free and lag free game-play.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SeILSPtptpI/AAAAAAAAAFQ/hqzJckf2mAI/s1600-h/2s8ivfc.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 331px; height: 400px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SeILSPtptpI/AAAAAAAAAFQ/hqzJckf2mAI/s400/2s8ivfc.jpg" alt="counter strike image" id="BLOGGER_PHOTO_ID_5323830117588907666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000098XKC&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000GOUE7O&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000UPDWL4&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-2037168862153649590?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/2037168862153649590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/configure-hlds-server-for-counter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2037168862153649590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2037168862153649590'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/configure-hlds-server-for-counter.html' title='Configure Hlds server for counter strike 1.6:Launch options and rates'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s4Oz51luJRA/SeILSPtptpI/AAAAAAAAAFQ/hqzJckf2mAI/s72-c/2s8ivfc.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4742758023751773113</id><published>2009-06-23T14:49:00.005+05:30</published><updated>2009-06-23T15:05:49.593+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix/Linux'/><title type='text'>partprobe command: Update partition table without reboot</title><content type='html'>&lt;p&gt;     &lt;b&gt;partprobe&lt;/b&gt; is a program that tells the operating system kernel about the partition table changes  by requesting  the operating system to re-read the partition table again so that you do not have to reboot for the changes to appear on the partition table. A reboot is what the system administrators just cannot do on the system running web server's so for them this command is of utmost importance.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The &lt;span style="font-weight: bold;"&gt;command and its option&lt;/span&gt;&lt;/p&gt;&lt;p&gt;partprobe [-d] [-s] [-h] [device]&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;-d&lt;/span&gt; : Don't update the partition table, it is what you normally don't intend to do when you change the partition tables&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;-s &lt;/span&gt;: for showing summary of the devices and their partitions&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;-h&lt;/span&gt;: To show summary of options&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;device&lt;/span&gt;: The hardware device /dev/hda , /dev/hdb etc&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4742758023751773113?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4742758023751773113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/partprobe-command-update-partition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4742758023751773113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4742758023751773113'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/partprobe-command-update-partition.html' title='partprobe command: Update partition table without reboot'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8875473743852889546</id><published>2009-06-23T13:10:00.003+05:30</published><updated>2009-06-23T14:24:41.280+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Networking'/><title type='text'>The netstat command</title><content type='html'>The &lt;span style="font-weight: bold;"&gt;netstat&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;command &lt;/span&gt;displays the network connections that have been established, the port's which these connections are using, the routing table, the statistics related to an interface(eth0 etc) and statistics for a particular protocol(ipv4,ipv6,icmp).  You can use it to see whether a trojan or a backdoor connection is established with your pc acting as a server to a client (remote pc).&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;netstat command&lt;/span&gt; and its &lt;span style="font-weight: bold;"&gt;options&lt;/span&gt; are explained below:-&lt;br /&gt;&lt;br /&gt;NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]&lt;br /&gt;&lt;br /&gt;The options:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-a :&lt;/span&gt;It displays all the connections and listening ports(the server listens for a connection to be established).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-b :&lt;/span&gt; It displays the program(executable) that is used for establishing connection.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-e&lt;/span&gt;: It displays the packet statistics at ethernet level. One often uses it along with the -s option.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-n:&lt;/span&gt; It displays the addresses in the numerical form(ip addresses) rather than using their names.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-o:&lt;/span&gt; It displays the owning process id that is a process id of the process that is using the connection. The process id's obtained can be used to check whether the process is malicious  or not. You can check it by using the tasklist command with /SVC switch or can use process monitor to do the same and then by comparing the PID of the output with the output of the tasklist command, you can see whether the process is a malware and if it is the case then you should immediately check your computer for trojans and backdoors and try and terminate the process manually.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-p protocol:&lt;/span&gt; It displays the connection's that are established for the protocol  mentioned. The protocol can be IPV4,IPV6,TCP,UDP etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-r&lt;/span&gt; : It displays the routing table. A routing table shows the interfaces, active routes under which it shows the gateway, the destination address, the subnet mask etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-s&lt;/span&gt; :It displays the statistics that are listed for each protocol seperately&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-v:&lt;/span&gt; It is used along with -b and shows the sequence of components (ie dll's) used to establish connection.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;interval&lt;/span&gt;: It displays the statistics after the seconds specified by the interval.&lt;br /&gt;&lt;br /&gt;Example usages:&lt;br /&gt;&lt;br /&gt;1) &lt;span style="font-weight: bold;"&gt;netstat -b -v&lt;/span&gt; : It shows the sequence of components used to establish connection for the processes listed by b option.&lt;br /&gt;&lt;br /&gt;2) &lt;span style="font-weight: bold;"&gt;netstat -e&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;-s:&lt;/span&gt; It displays the total bytes that are sent or received and the per protocol statistics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-8875473743852889546?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/8875473743852889546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/netstat-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8875473743852889546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8875473743852889546'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/netstat-command.html' title='The netstat command'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-6546406097120808124</id><published>2009-06-16T10:55:00.005+05:30</published><updated>2009-06-16T20:11:12.085+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming Stuff'/><title type='text'>JSON:The Javascript Object Notation file format</title><content type='html'>What is the &lt;a href="http://www.fileextensionjson.com/"&gt;File Extension JSON&lt;/a&gt; ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JSON&lt;/span&gt; is a lightweight, language independent&lt;span style="font-weight: bold;"&gt; "data "&lt;/span&gt; interchange format. It was derived from ECMAScript programming language standard. The MIME content type for it is application/json.&lt;br /&gt;The file extension for it is .json. &lt;span style="font-weight: bold;"&gt;JSON&lt;/span&gt; defines a small set of formatting or rules for portable or language independent representation of data.&lt;span style="font-weight: bold;"&gt; JSON&lt;/span&gt; can represent &lt;span style="font-weight: bold;"&gt;four primitive types namely string, number, boolean, null &lt;/span&gt;and it can also be used to represent &lt;span style="font-weight: bold;"&gt;two structured types namely objects and arrays&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;An &lt;span style="font-weight: bold;"&gt;object&lt;/span&gt; is a name-value pair similar to the dictionary data type in python where the name is a string and value can be string, number, null or boolean, object or array&lt;span style="font-weight: bold;"&gt;.&lt;br /&gt;For  example&lt;/span&gt; :- A car can be represented in an object representation as;-&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; "cars":{"model":"2006", "manufacturer":"Audi","price":"20000 USD"}&lt;/span&gt; .&lt;br /&gt;An array on the other hand is an ordered collection of similar data items.&lt;br /&gt;&lt;br /&gt;JSON was designed to be minimal, portable and as a subset of Javascript. The JSON text is encoded in Unicode and default encoding is UTF-8. The code for generating JSON text from the XML representaion is available for programming languages like java, python, php.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.fileextensionjson.com/"&gt;File Extension JSON&lt;/a&gt; is readily recognized and the JSON data is easily consumed by a simple javascript based script because it does not have to do any additional parsing. The following code snippet shows how you can use it to represent data with utmost ease.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 400px; height: 300px;"&gt;&lt;blockquote&gt;{&lt;br /&gt;"customers" : {&lt;br /&gt;"customer" : {&lt;br /&gt;"@attributes" : {&lt;br /&gt;   "id" : "2314"&lt;br /&gt;},&lt;br /&gt;"name" : "Raman deep",&lt;br /&gt;"phone" : "9967345612",&lt;br /&gt;"purchases": "30000 USD"&lt;br /&gt;"address" : {&lt;br /&gt;   "street" : "23/25 Rajouri garden",&lt;br /&gt;   "city" : "New Delhi",&lt;br /&gt;   "state" : "Delhi",&lt;br /&gt;   "zip_code" : "654321"&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;whereas its xml representation is shown below and as can be seen by comparing these two representations that the former one is easy to parse as it uses javascript object and array data types to represent data and hence is used more nowadays.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 400px; height: 300px;"&gt;&lt;blockquote&gt;&amp;lt;customer&amp;gt;&lt;br /&gt;&amp;lt;customer id="2314"&amp;gt;&lt;br /&gt; &amp;lt;name&amp;gt;Raman deep&amp;lt;/name&amp;gt;&lt;br /&gt; &amp;lt;phone&amp;gt;9967345612&amp;lt;/phone&amp;gt;&lt;br /&gt; &amp;lt;purchases&amp;gt;30000 USD &amp;lt;purchases&amp;gt;&lt;br /&gt; &amp;lt;address&amp;gt;&lt;br /&gt;     &amp;lt;street&amp;gt;23/25 Rajouri Garden&amp;lt;/street&amp;gt;&lt;br /&gt;     &amp;lt;city&amp;gt;New Delhi&amp;lt;/city&amp;gt;&lt;br /&gt;     &amp;lt;state&amp;gt;Delhi&amp;lt;/state&amp;gt;&lt;br /&gt;     &amp;lt;zipcode&amp;gt;654321&amp;lt;/zipcode&amp;gt;&lt;br /&gt; &amp;lt;/address&amp;gt;&lt;br /&gt;&amp;lt;/contact&amp;gt;&lt;br /&gt;&amp;lt;/contacts&amp;gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I hope this tutorial was brief and concise representation of the &lt;a href="http://www.fileextensionjson.com/"&gt;File Extension JSON&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-6546406097120808124?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/6546406097120808124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/jsonthe-javascript-object-notation-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6546406097120808124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6546406097120808124'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/jsonthe-javascript-object-notation-file.html' title='JSON:The Javascript Object Notation file format'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3784696752170102875</id><published>2009-06-11T15:24:00.009+05:30</published><updated>2009-06-11T20:27:26.014+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Softwares'/><title type='text'>Safari 4: The "Cover Flow" history feature</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Safari 4 : "The fastest web browser"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The one thing that you expect from apple when they launch a new product is the &lt;span style="font-weight: bold;"&gt;"design and functionality" &lt;/span&gt;of the product and the safari 4 web browser is just one example of how much attention software developers at apple pay to it.&lt;br /&gt;&lt;br /&gt;The safari 4 browser is the fastest browser as endorsed by apple. It has incorporated newest features that are yet to be found in other web browsers, which makes Safari 4 special. The features that really stand out are as mentioned below:-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;"Cover Flow" history feature&lt;/span&gt;: The browser provides a cover flow history feature by which you can actually see the web pages that you visited in a cover flow view, so that you can recognize the page you want to visit again. This feature stands out of the lot as by using this feature it becomes much easier to visit a web site that you visited in the past because it is easier to visually remember the web site rather than remembering the url you visit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SjDkLxlPOeI/AAAAAAAAARY/j4bdp-P23wA/s1600-h/cover-flow.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 207px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SjDkLxlPOeI/AAAAAAAAARY/j4bdp-P23wA/s400/cover-flow.JPG" alt="" id="BLOGGER_PHOTO_ID_5346023648627997154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The Revamped History search feature&lt;/span&gt;: We know that all browsers provide url based search feature that you can use to find the web site you visited but the only concern is that "it is difficult" to remember the url of the web page you visited. So to overcome this drawback Safari 4  employs a search strategy by which one can search "inside the content" of the page that you visited which can be coupled with the &lt;span style="font-weight: bold;"&gt;" Cover flow "&lt;/span&gt; feature to give tremendous results. As can be seen from the following snapshot the browser's history search feature, the search is also done in the content of the page also.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/SjDkLidO-EI/AAAAAAAAARQ/6NwUvXLVZ_k/s1600-h/safari4_history_search.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 339px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SjDkLidO-EI/AAAAAAAAARQ/6NwUvXLVZ_k/s400/safari4_history_search.JPG" alt="" id="BLOGGER_PHOTO_ID_5346023644567894082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The browser also provides advanced caching scheme of the &lt;span style="font-weight: bold;"&gt;most visited web pages&lt;/span&gt;, which makes them load much faster. The most visited web pages are represented in a nice, well laid out, panoramic view.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Lightning fast speed&lt;/span&gt;: It gives you lightning fast speed compared to other browsers as the page load time is drastically reduced in safari-4. It has the so called "Nitro Java script Engine" that enhances speeds for the javascript based sites. I have tweaked my mozilla firefox for best performance and yet it comes nowhere near to the performance offered by it.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Following is the video of Craig Federighi showing of the aforementioned features of Safari 4 :-&lt;br /&gt;&lt;br /&gt;&lt;object type="application/x-shockwave-flash" data="http://image.com.com/gamespot/images/cne_flash/production/media_player/proteus/one/proteus2.swf" width="432" height="362"&gt;&lt;param name="FlashVars" value="playerMode=embedded&amp;amp;allowFullScreen=1&amp;amp;flavor=EmbeddedPlayerVersion&amp;amp;showOptions=0&amp;amp;skin=http://image.com.com/gamespot/images/cne_flash/production/media_player/proteus/one/skins/proteus-tr.png&amp;amp;autoPlay=false&amp;amp;movieAspect=4.3&amp;amp;embeddingAllowed=true&amp;amp;clockColor=0x3b3b3b&amp;amp;marqueeColor=0x70AF00&amp;amp;chromeColor=0xCF0000&amp;amp;paramsURI=http://video.techrepublic.com.com%2F2461-13792_11-310097.xml%3Fwidth%3D432%26height%3D362%26ptype%3D6475%26mode%3Dembedded"&gt;&lt;param name="movie" value="http://image.com.com/gamespot/images/cne_flash/production/media_player/proteus/one/proteus2.swf"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;So go ahead and download the safari browser for yourself and feel the difference in browsing experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3784696752170102875?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3784696752170102875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/safari-4-cover-flow-history-feature.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3784696752170102875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3784696752170102875'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/safari-4-cover-flow-history-feature.html' title='Safari 4: The &quot;Cover Flow&quot; history feature'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/SjDkLxlPOeI/AAAAAAAAARY/j4bdp-P23wA/s72-c/cover-flow.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-5898675885949015260</id><published>2009-06-08T17:14:00.010+05:30</published><updated>2009-06-08T19:00:05.748+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><title type='text'>Pivot Table</title><content type='html'>What is the use of &lt;span style="font-weight: bold;"&gt;pivot table&lt;/span&gt; ?&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;pivot table&lt;/span&gt; provides support for a sequence of values for ex: In case you want to have sequential values from 1 to 100 . These sequential values are required and can be used in numerous cases. In pivot tables  values are not inserted directly but they are inserted inside a support table which is then concatenated with itself to populate pivot tables.&lt;br /&gt;&lt;br /&gt;How to create a pivot table ?&lt;br /&gt;&lt;br /&gt;To create a pivot table and insert values into it, you would have to create 2 following tables:-&lt;br /&gt;&lt;br /&gt;1)&lt;span style="font-weight: bold;"&gt; Pivot table&lt;/span&gt;   2) &lt;span style="font-weight: bold;"&gt;Temporary/Support table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1) &lt;span style="font-weight: bold;"&gt;Pivot table&lt;/span&gt;: It has a pretty simple structure. To create a pivot table in sql execute the following query&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 300px; height: 100px;"&gt;&lt;blockquote&gt;create table if not exists pivot (&lt;br /&gt;c int,&lt;br /&gt;primary key (c))&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;The primary key on c is taken so that no repetitive value are entered.&lt;br /&gt;&lt;br /&gt;2) &lt;span style="font-weight: bold;"&gt;Support&lt;/span&gt;  &lt;span style="font-weight: bold;"&gt;table&lt;/span&gt;:- The next step is to create a support/ temporary table which will be used to fill up the pivot table. To create a support table execute the following simple query.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 300px; height: 100px;"&gt;&lt;blockquote&gt;create table if not exists temp (&lt;br /&gt;ch char(1))&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;the field is taken as char so that it can be concatenated with itself easily. For ex: the character concatenation operation '1'+'1'= '11'.&lt;br /&gt;&lt;br /&gt;Then we have to insert 10 values (0 through 9) into the temp table. So execute the following insert statements one at a time.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 300px; height: 200px;"&gt;&lt;blockquote&gt;insert into temp values('0')&lt;br /&gt;insert into temp values('1')&lt;br /&gt;insert into temp values('2')&lt;br /&gt;insert into temp values('3')&lt;br /&gt;insert into temp values('4')&lt;br /&gt;insert into temp values('5')&lt;br /&gt;insert into temp values('6')&lt;br /&gt;insert into temp values('7')&lt;br /&gt;insert into temp values('8')&lt;br /&gt;insert into temp values('9')&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;Inserting values into the pivot table&lt;/span&gt;:- Now using 10 rows of the temp table, to generate 100 rows of pivot table all you have to do is concatenate temp to itself 2 times. The concatenation operation was explained above.&lt;br /&gt;&lt;br /&gt;Execute the following query,  if you are using microsoft sql:-&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 300px; height: 100px;"&gt;&lt;blockquote&gt;Insert into pivot&lt;br /&gt;select t1.ch+t2.ch&lt;br /&gt;from temp t1, temp t2&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;Else if you are using mysql execute the following query:-&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 300px; height: 100px;"&gt;&lt;blockquote&gt;Insert into pivot&lt;br /&gt;select concat(t1.ch,t2.ch)&lt;br /&gt;from temp t1, temp t2&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;The query will produce elements from 0 through 99.&lt;br /&gt;&lt;br /&gt;Example usage of pivot table:-&lt;br /&gt;&lt;br /&gt;As a simple example you can use it to print ascii chart of the ascii characters from 48 through 96. In this case the query would be as shown in the following code box:-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: medium groove ; overflow: auto; color: rgb(0, 153, 255); width: 300px; height: 100px;"&gt;&lt;blockquote&gt; select c ascii_code, char(c) ascii_value &lt;br /&gt;from pivot&lt;br /&gt;where c between 48 and 96&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-5898675885949015260?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/5898675885949015260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/pivot-table.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5898675885949015260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5898675885949015260'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/pivot-table.html' title='Pivot Table'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1279461518003210618</id><published>2009-06-07T19:52:00.003+05:30</published><updated>2009-08-16T17:41:56.363+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix/Linux'/><title type='text'>Changing window manager in ubuntu</title><content type='html'>The problem that you might face when you install ubuntu is it's default window manager GNOME is quite heavy on resources and tends to be buggy (for my pc configuration at least)  so to cope up with resource crunch you can shift to a light window manager like fluxbox, XFCE etc as they tend to provide better performance than GNOME or KDE but are a little un-user friendly.&lt;br /&gt;&lt;br /&gt;To &lt;span style="font-weight: bold;"&gt;change the window manager&lt;/span&gt; follow these steps:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) Install MENU&lt;/span&gt;:- The precondition for changing to any new window manager is to install the program &lt;span style="font-weight: bold;"&gt;MENU&lt;/span&gt; that manages the application menus so that you can launch the applications without the need of Gnome or KDE launchers.&lt;br /&gt;&lt;br /&gt;To install MENU&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open terminal i.e Application-&gt;Accesories-&gt;Terminal or press ALT+F2 and choose run in terminal&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then type the following command in the terminal :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo apt-get install menu&lt;/span&gt;&lt;br /&gt;you will be asked for your password, enter it and the package menu will be installed.&lt;/li&gt;&lt;/ul&gt;2) &lt;span style="font-weight: bold;"&gt;Install the window manager&lt;/span&gt; :-  The next step is to install the window manager itself. I would be explaining about how to install the FLUXBOX window manager.&lt;br /&gt;&lt;br /&gt;The fluxbox window manager provides tab options, styles menu from which you can change the theme and wallpapers, configuration menu for configuring window display (including transparency,icons etc), wsm (text browser)  and by default comes with 4 workspaces that you can toggle between, more workspace windows can be added. The thing that i like about it is that it's very fast.&lt;br /&gt;&lt;br /&gt;To install fluxbox execute the following command:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo apt-get install fluxbox&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;3) Changing the window manager&lt;/span&gt; :- Now all you have to do is logout from ubuntu and then from the options on the login screen choose select session, choose Fluxbox and choose the window manager for current session only so that you can try it out before choosing to make it default.&lt;br /&gt;&lt;br /&gt;The following is the snapshot of fluxbox:-&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SizCAPxbmeI/AAAAAAAAAQs/7x7qbBWrJTU/s1600-h/Fluxbox-%5B2%5D.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SizCAPxbmeI/AAAAAAAAAQs/7x7qbBWrJTU/s400/Fluxbox-%5B2%5D.jpg" alt="" id="BLOGGER_PHOTO_ID_5344860167271586274" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-1279461518003210618?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1279461518003210618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/changing-window-manager-in-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1279461518003210618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1279461518003210618'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/changing-window-manager-in-ubuntu.html' title='Changing window manager in ubuntu'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s4Oz51luJRA/SizCAPxbmeI/AAAAAAAAAQs/7x7qbBWrJTU/s72-c/Fluxbox-%5B2%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3387847335507636748</id><published>2009-06-05T00:30:00.005+05:30</published><updated>2009-06-05T01:40:04.478+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix/Linux'/><title type='text'>Installing uTorrent on ubuntu</title><content type='html'>The installation is very easy just follow these steps:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Installing Wine&lt;/span&gt; :- the wine package helps run windows executables on linux like systems. You can get any package with ease by using a single command or you can use synaptic package manager. I'll explain the procedure by using the command line (it's very easy).&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Open the terminal :- Go to Applications-&gt;Accessories-&gt;Terminal&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/Sigi4osLqYI/AAAAAAAAAQk/Uu9cmtZUDW8/s1600-h/blah.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 300px;" middle="" src="http://4.bp.blogspot.com/_s4Oz51luJRA/Sigi4osLqYI/AAAAAAAAAQk/Uu9cmtZUDW8/s400/blah.jpeg" alt="" id="BLOGGER_PHOTO_ID_5343559314265844098" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Then type the following command :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo apt-get install wine&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then you will be asked for your password , enter it and press y when asked whether you want to install the package or not&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then type exit at the prompt to exit the terminal.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Installing uTorrent&lt;/span&gt; : Download the&lt;span style="font-weight: bold;"&gt; uTorrent&lt;/span&gt; package for windows-xp and after it is downloaded, right click on it and choose open with "wine windows program loader" and after that you can choose the location of install (let it be default) , this will complete the installation of &lt;span style="font-weight: bold;"&gt;uTorrent&lt;/span&gt;. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Launch the program &lt;/span&gt;: Now you can run the uTorrent program on ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Note: If you have a dual boot os (windows-xp+ubuntu) then you should download torrent files using ubuntu which i feel utilises the maximum bandwidth available to you. Also if you receive a virus instead of the original intended file you will have no risk of it affecting your pc as linux based systems are generally virus safe and you can then transfer it to windows -xp by mounting it's partition on ubuntu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3387847335507636748?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3387847335507636748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/06/installing-utorrent-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3387847335507636748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3387847335507636748'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/06/installing-utorrent-on-ubuntu.html' title='Installing uTorrent on ubuntu'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_s4Oz51luJRA/Sigi4osLqYI/AAAAAAAAAQk/Uu9cmtZUDW8/s72-c/blah.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-7529682100557861506</id><published>2009-05-31T19:16:00.014+05:30</published><updated>2009-08-15T10:29:15.506+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wallpapers'/><title type='text'>10 Awe inspiring Wallpapers</title><content type='html'>This collection is made from deviant art's some of the most beautiful wallpapers, you can download some of these from below by clicking on the wallpaper image and opening them in a new tab and other wallpapers come in a pack so they can be downloaded in a rar archive format:-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;Ultra Beam by Yethzart&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SiKLti4lRqI/AAAAAAAAAPU/I2AuUiSyr8o/s1600-h/UltraBeam.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SiKLti4lRqI/AAAAAAAAAPU/I2AuUiSyr8o/s400/UltraBeam.jpg" alt="" id="BLOGGER_PHOTO_ID_5341985722589333154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;High Definition Nature wallpaper by CurtiXs&lt;/span&gt;:- This a high definition wallpaper representing nature's pulchritude.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/SiKMYzifQCI/AAAAAAAAAPc/zk2mI6ruML4/s1600-h/HD_Nature_Wallpapers_by_CurtiXs.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 250px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiKMYzifQCI/AAAAAAAAAPc/zk2mI6ruML4/s400/HD_Nature_Wallpapers_by_CurtiXs.jpg" alt="" id="BLOGGER_PHOTO_ID_5341986465794441250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;Music wallpaper By Zababuga&lt;/span&gt;:- This one is a naive looking wallpaper for music lovers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SiKNEwyRAbI/AAAAAAAAAPk/jzpAP2bdSXs/s1600-h/music_wallpapers_by_zababuga.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 400px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiKNEwyRAbI/AAAAAAAAAPk/jzpAP2bdSXs/s400/music_wallpapers_by_zababuga.jpg" alt="" id="BLOGGER_PHOTO_ID_5341987220969554354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;Dandelion Wallpaper for Vista by kamekai&lt;/span&gt; :- A great looking wallpaper for windows vista.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SiKNklMHupI/AAAAAAAAAPs/G9S2TG-OlBo/s1600-h/Vista_Wallpapers___Dandelion_by_kamekai.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SiKNklMHupI/AAAAAAAAAPs/G9S2TG-OlBo/s400/Vista_Wallpapers___Dandelion_by_kamekai.png" alt="" id="BLOGGER_PHOTO_ID_5341987767612586642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. One of the Wallpaper's from &lt;span style="font-weight: bold;"&gt;Artspace's 2009 collection&lt;/span&gt;:- This one is a eclectic mixture of light and dark colors.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SiKOQ76lZBI/AAAAAAAAAP0/0JryfvveQpg/s1600-h/wallpapers_by_Artspace09.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiKOQ76lZBI/AAAAAAAAAP0/0JryfvveQpg/s400/wallpapers_by_Artspace09.jpg" alt="" id="BLOGGER_PHOTO_ID_5341988529627292690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. &lt;span style="font-weight: bold;"&gt;Lamborghini wallpaper by Lil Milan&lt;/span&gt; :- This one is for people who are fanatic about car wallpaper's and obviously Lamborghini&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SiKPRRhPKPI/AAAAAAAAAP8/KuaQeQnQsJE/s1600-h/Wallpapers_by_LilMilan.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiKPRRhPKPI/AAAAAAAAAP8/KuaQeQnQsJE/s400/Wallpapers_by_LilMilan.jpg" alt="" id="BLOGGER_PHOTO_ID_5341989634938185970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. &lt;span style="font-weight: bold;"&gt;Four Extreme wallpaper's by Bartoszf&lt;/span&gt;:- A tribute to music lovers as this wallpaper represents one of the finest musical instrument . I am showing here only one sample but it is available in four background colors and you can download all of them by clicking on the download link (image)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SiKRMqU9vGI/AAAAAAAAAQE/XYkb6hO2r1M/s1600-h/006_extrame_1280x1024_black.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 320px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SiKRMqU9vGI/AAAAAAAAAQE/XYkb6hO2r1M/s400/006_extrame_1280x1024_black.png" alt="" id="BLOGGER_PHOTO_ID_5341991754721508450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://rapidshare.com/files/239253490/006_Extreme_Wallpapers_by_bartoszf.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8. &lt;span style="font-weight: bold;"&gt;Water drop wallpaper&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;by JK89&lt;/span&gt;:- This represents the pulchritude of  a water droplet on the leaves. This comes in four resolutions and can be downloaded in a rar archive format by clicking on the download link ( download image).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SiKSh_HamYI/AAAAAAAAAQM/XCWfanZC8sc/s1600-h/1024x768.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SiKSh_HamYI/AAAAAAAAAQM/XCWfanZC8sc/s400/1024x768.jpg" alt="" id="BLOGGER_PHOTO_ID_5341993220590705026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://rapidshare.com/files/239255295/WaterDrop_desktop_wallpapers_by_JK89.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. &lt;span style="font-weight: bold;"&gt;Fire wallpaper's by rubina&lt;/span&gt; :- This wallpaper comes in three resolutions (1280*800, 1440*900, 1680*1050) and can be downloaded in a rar archive format by clicking on the download link (download image).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SiKTrmwvCHI/AAAAAAAAAQU/gr7QhX8FQMw/s1600-h/1280x800.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SiKTrmwvCHI/AAAAAAAAAQU/gr7QhX8FQMw/s400/1280x800.jpg" alt="" id="BLOGGER_PHOTO_ID_5341994485363443826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://rapidshare.com/files/239255914/Fire_Wallpapers_by_rubina119.rar%20"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10. &lt;span style="font-weight: bold;"&gt;Vulcan's fury collection by Exntrik&lt;/span&gt; :- This is a collection of wallpaper's representing the fury of vulcan where &lt;b&gt;Vulcan&lt;/b&gt; is considred to be the god of beneficial and hindering fire. The collection unlike others contains different wallpapers. I am showing here only one sample but there are  three different wallpaper's in different resolution's  and you can download all of them by clicking on the download link (image).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SiKXPLKvrRI/AAAAAAAAAQc/94CVV9LEris/s1600-h/VulcansFury-1600.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 200px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SiKXPLKvrRI/AAAAAAAAAQc/94CVV9LEris/s400/VulcansFury-1600.jpg" alt="" id="BLOGGER_PHOTO_ID_5341998394966519058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://rapidshare.com/files/239257540/Vulcan__s_Fury_Wallpapers_by_Exntrik.zip"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-7529682100557861506?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/7529682100557861506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/10-awe-inspiring-wallpapers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7529682100557861506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7529682100557861506'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/10-awe-inspiring-wallpapers.html' title='10 Awe inspiring Wallpapers'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_s4Oz51luJRA/SiKLti4lRqI/AAAAAAAAAPU/I2AuUiSyr8o/s72-c/UltraBeam.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4464640781613868239</id><published>2009-05-31T12:39:00.021+05:30</published><updated>2009-07-14T10:54:34.497+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wordpress'/><title type='text'>Wordpress premium themes</title><content type='html'>This is just a small collection of premium wordpress themes. To download a theme just click on the download image.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Urban Alley Theme &lt;/span&gt;: This is a cool premium theme which comes with the space for advertisements on the top as well as on middle portion and  is a sort of  magazine theme&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIt_LxuwQI/AAAAAAAAANk/QG_Jth6l-g0/s1600-h/screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 225px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIt_LxuwQI/AAAAAAAAANk/QG_Jth6l-g0/s400/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5341882671531213058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255593032/urbanalley.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Ambiance Theme by woo themes&lt;/span&gt;: It  has great color combination (shades of violet and dark background).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SiIxYZc0AWI/AAAAAAAAAN0/ZP6Kaz5b0Ok/s1600-h/wordpress_ambience_theme.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 335px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SiIxYZc0AWI/AAAAAAAAAN0/ZP6Kaz5b0Ok/s400/wordpress_ambience_theme.jpg" alt="" id="BLOGGER_PHOTO_ID_5341886403233186146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255593727/ambience_v1.02.zip"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Blue Sky Theme&lt;/span&gt; :- This theme comes with various color options. &lt;span class="adbriteinline"&gt;&lt;span name="KonaBody"&gt;This template takes advantage of custom fields to allow for integrated thumbnail images, as well as various plugins to help take your site to the next level. This theme is adsense ready, featuring an unobtrusive integration of google adsense.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SiIy6TbyWII/AAAAAAAAAN8/gbrdY6FCfeo/s1600-h/screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 240px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SiIy6TbyWII/AAAAAAAAAN8/gbrdY6FCfeo/s400/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5341888085245450370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255593806/BlueskyTheme.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;view the live demo at &lt;a href="http://www.elegantthemes.com/gallery/bluesky/"&gt; this link &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Neko:&lt;/span&gt; This theme suits well for news related articles and comes with a descent looking white background.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/SiI2I5ZOgOI/AAAAAAAAAOM/DTHRKB8ileI/s1600-h/wordpress_theme_Neko.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 360px; height: 360px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/SiI2I5ZOgOI/AAAAAAAAAOM/DTHRKB8ileI/s400/wordpress_theme_Neko.jpg" alt="" id="BLOGGER_PHOTO_ID_5341891634488312034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255593856/neko_pro.zip"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;view the live demo at &lt;a href="http://www.themespinner.com/demo/?wptheme=Neko"&gt; this link &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="adbriteinline"&gt;&lt;span name="KonaBody"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5.Photo gallery theme&lt;/span&gt;:- This is just a photo gallery theme that you can place in a folder under your web directory to show your images.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SiI2JvKi1lI/AAAAAAAAAOk/KxtDh1CuL1Q/s1600-h/photogallery1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 280px; height: 250px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiI2JvKi1lI/AAAAAAAAAOk/KxtDh1CuL1Q/s400/photogallery1.jpg" alt="" id="BLOGGER_PHOTO_ID_5341891648922244690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255593890/wp_photo-gallery-1.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Simplism theme&lt;/span&gt;:- A simple and clean looking theme for wordpress which is adsense ready.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SiI5jkC9CyI/AAAAAAAAAOs/hk7AuHNMp4A/s1600-h/wordpress_simplism.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 190px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SiI5jkC9CyI/AAAAAAAAAOs/hk7AuHNMp4A/s400/wordpress_simplism.jpg" alt="" id="BLOGGER_PHOTO_ID_5341895391149099810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255594005/simplism.zip"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View the live demo at &lt;a href="http://www.elegantthemes.com/preview/Simplism"&gt; this link &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7. &lt;span style="font-weight: bold;"&gt;Arthemia theme&lt;/span&gt;:- A nice and clean looking theme with a featured pane&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SiI2JJS_wHI/AAAAAAAAAOU/l87h6Ldsh1Y/s1600-h/wordpress_theme_arthemia.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SiI2JJS_wHI/AAAAAAAAAOU/l87h6Ldsh1Y/s400/wordpress_theme_arthemia.JPG" alt="" id="BLOGGER_PHOTO_ID_5341891638757146738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255594530/wpathiemia.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View the live demo at &lt;a href="http://michaelhutagalung.com/arthemia/"&gt; this link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8. Freshnews-dev (Woo themes) :- This provides easy navigation by providing cascading menus and also provides tag clouds and featured pane and is adsense ready.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SiI96PbsGwI/AAAAAAAAAO8/NCGY9_Cmdnk/s1600-h/freshnewtheme.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiI96PbsGwI/AAAAAAAAAO8/NCGY9_Cmdnk/s320/freshnewtheme.JPG" alt="" id="BLOGGER_PHOTO_ID_5341900178799205122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255594266/freshnews-dev.zip"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View the live demo at &lt;a href="http://www.woothemes.com/demo/?t=6"&gt; this link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9. Market Theme: This theme can be used for a online store to sell products , it provides you with a shopping cart for this purpose.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/SiI_vGjXzaI/AAAAAAAAAPE/VVnNpu6uTlU/s1600-h/screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 300px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/SiI_vGjXzaI/AAAAAAAAAPE/VVnNpu6uTlU/s320/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5341902186460204450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/239160814/WP_market_theme.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10. &lt;span style="font-weight: bold;"&gt;Tauren Pro Theme&lt;/span&gt;: This provides you with a spinner at the top that you can use to display images. It has a descent white background to it. It is adsense ready and also provides Gravitars like most premium themes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/SiI2JaXh5sI/AAAAAAAAAOc/mN48uyAlydg/s1600-h/tauren.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 359px; height: 372px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiI2JaXh5sI/AAAAAAAAAOc/mN48uyAlydg/s400/tauren.jpg" alt="" id="BLOGGER_PHOTO_ID_5341891643339564738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255594405/Tauren_Pro.zip"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/SiIvoN3-tiI/AAAAAAAAANs/qvRioczFOBc/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341884475980559906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View the live demo at &lt;a href="http://www.themespinner.com/Tauren/"&gt; this link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4464640781613868239?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4464640781613868239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/wordpress-premium-themes.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4464640781613868239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4464640781613868239'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/wordpress-premium-themes.html' title='Wordpress premium themes'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_s4Oz51luJRA/SiIt_LxuwQI/AAAAAAAAANk/QG_Jth6l-g0/s72-c/screenshot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-147585955933436853</id><published>2009-05-30T21:32:00.004+05:30</published><updated>2009-05-30T22:40:23.166+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>Intel's Nehalem architecture: What's new ?</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Intel's Nehalem&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;architecture&lt;/span&gt; is utilized in their &lt;span style="font-weight: bold;"&gt;i7 Core processors for desktops and Nehalem based Xeon processors&lt;/span&gt; for servers and the following features tell you about what's new in them and why you should purchase one of these.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;High performance&lt;/span&gt;: The processors perform better than the &lt;span style="font-weight: bold;"&gt;amd's&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;phenom &lt;/span&gt;and&lt;span style="font-weight: bold;"&gt; intel's core 2 extreme processors&lt;/span&gt; available in the market. The extra performance boost is always welcomed by gamers. When performance was tested on the game World of Conflict the phenom processor gave 136 fps, Core 2 extreme processors gave 220 fps whereas the nehalem architecture based processors gave out 250 fps. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Enhanced Hyper Threading:&lt;/span&gt; Hyper threading technology (HTT) is a term used by intel which simply means &lt;span style="font-weight: bold;"&gt;simultaneous multi-threading&lt;/span&gt; which causes the operating system to interact with a single processor as if you had dual processors. So it doubles the number of threads that can be handled by the processor at one time. Thus if you have a Nehalem based quad core processor it can handle 8 threads going by the same logic.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Turbo boost : Dynamic performance Control&lt;/span&gt; :-&lt;br /&gt;This is similar to &lt;span style="font-weight: bold;"&gt;Overclocking&lt;/span&gt; in the standard processors but unlike the standard processors where you had to manually overclock or under-clock the processor to suit your performance requirements, in this case it is handled automatically by the processor depending upon the system load. So if the load is higher it can automatically increase the clock rate i.e basically increasing the frequency and when the load decreases it automatically lowers it's clock rate.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;QPI(Quick path interconnect)&lt;/span&gt;:- This technology is similar to amd's &lt;span style="font-weight: bold;"&gt;hyper transport technology&lt;/span&gt; but it is much faster than it. What the QPI does is it gets rid of the FSB(Front Side Bus) in the standard processors. The Xeon and i7 core processors provide 25.6 GB/s per link that is twice that of  1600MHZ FSB (which according to me is very fast :-) ) .&lt;br /&gt;&lt;br /&gt;The QPI architecture provides separate integrated memory controllers &lt;span style="font-weight: bold;"&gt;for each core&lt;/span&gt;  so that instead of the memory and I/O requests sharing a bus and waiting for many cycles, the QPI and the memory bus are separate. QPI also provides separate channels for writing and reading, so these tasks can be performed in parallel.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;3 Level Cache&lt;/span&gt; :- The dual core processors came with a 2 level cache whereas in the nehalem architecture it is expanded to 3 levels of cache. Each processor has it's own L1 and L2 levels of cache and all the processors share the &lt;span style="font-weight: bold;"&gt;L3 Level cache&lt;/span&gt; which is about 8MB in size. The L3 level cache contains copies of the contents of L1 and L2 caches which leads to better performance.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;DDR-3: Higher speed memory :-&lt;/span&gt;&lt;br /&gt;The Nehalem architecture also supports faster (so logically more expensive) RAM: The DDR3 RAM is 2wice as fast compared to the DDR-2 RAM and also maintains the same ratio when it comes to the prefetch buffer. The prefetch buffer is used to buffer the instructions for the processor when it is performing some operation and logically larger prefetch buffer size leads to better performance.  &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Lower power consumption&lt;/span&gt;:- The Intelligent Power Node Manager for Xeon servers will automatically adjust the power for the optimum power to performance ratio (this was  already mentioned when the turbo boost feature was explained). This leads to better power management and hence lower power consumption.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Hope this was informational enough and now that you know of the benefits of the nehalem architecture you would be in a better position to know whether or not you want to buy one of these.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-147585955933436853?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/147585955933436853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/intels-nehalem-architecture-whats-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/147585955933436853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/147585955933436853'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/intels-nehalem-architecture-whats-new.html' title='Intel&apos;s Nehalem architecture: What&apos;s new ?'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-6617314025473591919</id><published>2009-05-30T13:28:00.010+05:30</published><updated>2010-04-02T19:55:40.966+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>HLTV weapon models for Counter Strike 1.6</title><content type='html'>Many of you might have watched the hltv demos (.dem files) of many professional teams and may have liked the way the weapon switching looks in htlv videos. Well if you did enjoy that and would want to have those models while you play counter strike 1.6  then you can download those models from the following link.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/255335276/HLTV_models.rar"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiDpLNzyyNI/AAAAAAAAANc/6O2CV2BPFrg/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341525536956139730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After you have downloaded the models perform the following steps:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Backup the cstrike/models directory to some other location in case that you might want to revert to the older weapon models.&lt;/li&gt;&lt;li&gt;Extract the weapon models into the cstrike/models directory.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Launch the game and try out the new weapon models.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The following is the video made by someone else which shows how these models look like in game.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IiXp9gLV7Fo&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/IiXp9gLV7Fo&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000098XKC&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000GOUE7O&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=techniessent-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B000UPDWL4&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;"align="left" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-6617314025473591919?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/6617314025473591919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/hltv-weapon-models-for-counter-strike.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6617314025473591919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6617314025473591919'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/hltv-weapon-models-for-counter-strike.html' title='HLTV weapon models for Counter Strike 1.6'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/SiDpLNzyyNI/AAAAAAAAANc/6O2CV2BPFrg/s72-c/download_buttons.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-5169694476114152458</id><published>2009-05-30T12:26:00.005+05:30</published><updated>2009-05-30T13:19:52.245+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='search engines'/><title type='text'>Bing:The revamped search engine from microsoft</title><content type='html'>Microsoft is in its final stages for launching its new search engine named &lt;span style="font-weight: bold; font-style: italic;"&gt;"Bing"&lt;/span&gt; previously known as Kumo. Microsoft will be launching it for the public soon.&lt;br /&gt;&lt;br /&gt;Here's what the current site (www.bing.com) looks like which implies that this search engine will be out soon.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/SiDbLgOYA8I/AAAAAAAAANU/dfuMpCrsPrc/s1600-h/bing.JPG"&gt;&lt;img style="border: medium groove ; margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 267px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/SiDbLgOYA8I/AAAAAAAAANU/dfuMpCrsPrc/s400/bing.JPG" alt="" id="BLOGGER_PHOTO_ID_5341510148736680898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The revamped search engine will contain the following added features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A left-hand navigation pane for showing related searches which is based on the semantic technology taken from a firm powerset which microsoft has acquired for quite some time now.&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;semantic technology&lt;/span&gt; provides an user the ability to ask questions in normal day to day language and it will be more effective and precise than google's technology.  The current implementation of semantic technology in the search engine can be seen at &lt;a href="http://www.hakia.com/"&gt;this site&lt;/a&gt;.&lt;br /&gt;The semantic technology according to me is the key area where the search engine will really have to perform otherwise they'll get nowhere near to taking  the competition to google.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It will also provide Category breakdowns for search results&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bringing some information directly into the results page.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-5169694476114152458?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/5169694476114152458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/bingthe-new-search-engine-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5169694476114152458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5169694476114152458'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/bingthe-new-search-engine-from.html' title='Bing:The revamped search engine from microsoft'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/SiDbLgOYA8I/AAAAAAAAANU/dfuMpCrsPrc/s72-c/bing.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-973931184617197917</id><published>2009-05-29T20:00:00.005+05:30</published><updated>2009-05-29T21:32:21.557+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer Networking'/><title type='text'>How to verify md5/sha1 hash</title><content type='html'>What is a &lt;span style="font-weight: bold;"&gt;Hash&lt;/span&gt; and why it is used?&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-weight: bold;"&gt;hash&lt;/span&gt; produces a fixed length output given any message and the output depends on individual bits of the data,  so a change to any bit may result in change of the hash output. It is used for indexing a particular item and due to the aforementioned property it is also used for verifying the integrity of data because if a data has been changed it would not have the same hash.&lt;br /&gt;&lt;br /&gt;/** purely informational **/&lt;br /&gt;It can be produced in many ways like in &lt;span style="font-weight: bold;"&gt;sha-1&lt;/span&gt; it consists of 4 levels in each level a different function is applied and 20 steps are performed in each level. A 160 bit buffer is used for storing the intermediate values, Initially the buffer contains the 5*32 register values called ABCDE.  The operation is performed on 512 bit block of data. The output is produced by xoring the intial value of buffer with the value produced at the last step.&lt;br /&gt;/**  **/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How to calculate and verify the hash ?&lt;br /&gt;&lt;br /&gt;There are many tools available that can calculate the&lt;span style="font-weight: bold;"&gt; hash&lt;/span&gt;. The tool that i will be using for explanation is FCIV that can calculate both &lt;span style="font-weight: bold;"&gt;SHA-1 and MD5 hash&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You can &lt;span style="font-weight: bold;"&gt;download the tool and learn how to use it&lt;/span&gt; from the following link:-&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/841290"&gt;&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/Sh_2RwdxgxI/AAAAAAAAANM/Yzf8Eko0xmo/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5341258468012688146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;after downloading the tool in a directory &lt;span style="font-weight: bold;"&gt;add it's directory to the path variable&lt;/span&gt; so that it can  be easily called from anywhere by invoking it from the command line (for help in setting the path variable refer to &lt;a href="http://ramannanda.blogspot.com/2009/04/setting-path-variable-in-windows-xp_14.html"&gt;this post&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;When you download a file from the internet through mirrors provided by the site it may happen that the mirror that you are using may provide you an invalid version of the file which could be a virus or spyware.&lt;br /&gt;&lt;br /&gt;To verify that the file you downloaded is the correct one you would have to perform the following steps.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Note down the md5 hash of the file given at the site .&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Download the file.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Open the command prompt and  navigate to the directory in which you have downloaded your file. let  abcd be the name of the file for which you want to generate the hash . Now to produce a hash (md5)  of the file   execute the following command.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FCIV -add "abcd" -md5  &gt;hash.txt&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;What the last command simply does is, it calculates the md5 hash and then redirects the output to a file hash.txt&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now you can open the text file and compare the &lt;span style="font-weight: bold;"&gt;hash&lt;/span&gt; value with the value mentioned at the site. If the two values are same then file's integrity is maintained (i.e it is genuine) else you can be sure of one of the 2 things a) file was downloaded incompletely b) the file is probably a virus or malware.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Note:In the next post i will be mentioning about how to verify whether the torrents are fake or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-973931184617197917?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/973931184617197917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/how-to-verify-md5sha1-hash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/973931184617197917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/973931184617197917'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/how-to-verify-md5sha1-hash.html' title='How to verify md5/sha1 hash'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s4Oz51luJRA/Sh_2RwdxgxI/AAAAAAAAANM/Yzf8Eko0xmo/s72-c/download_buttons.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1471063028641686722</id><published>2009-05-28T11:45:00.006+05:30</published><updated>2009-05-28T13:08:04.136+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><title type='text'>Firefox hacks</title><content type='html'>As some of you may already know that in &lt;span style="font-weight: bold;"&gt;firefox&lt;/span&gt; all the major settings can be configured in the &lt;span style="font-weight: bold;"&gt;about:config&lt;/span&gt; page. Those of you who do not know or have never used it here's a How to.&lt;br /&gt;&lt;br /&gt;Just follow these steps to open the about:config page:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open the &lt;span style="font-weight: bold;"&gt;firefox&lt;/span&gt; and type about:config in the address bar&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now a page will appear which will represent a warning  message "This might void your warranty" and a button "I'll be carefull , I promise" press it.&lt;/li&gt;&lt;/ol&gt;and now we can apply the &lt;span style="font-weight: bold;"&gt;firefox hacks&lt;/span&gt; :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Speed hack&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;:-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following settings should be helpful in enhancing your browsing experience with firefox, their values are mentioned below :-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;network.http.pipelining&lt;/span&gt; /** default = false **/: Double click on this value to change it to   true. This enables the pipelining of http requests.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;network.http.proxy.pipelining&lt;/span&gt;  /** default = false **/: Change this to true by double clicking on it.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;network.http.pipelining.maxrequests&lt;/span&gt;/** default=4 **/ : It means that how many pipelined request are possible. Change this value  to 8 by right clicking on the setting and choosing modify.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;network.http.max-connections&lt;/span&gt; /** default=24 **/: If you want to keep many tabs open at the same time . Change this value to 96 .&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;network.http.max-connections-per-server&lt;/span&gt; /** default=12 **/:If you want to make many requests to the web server at the same time. Change this setting value to 32.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;2. To enable spell check in all fields&lt;/span&gt; :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;layout.spellcheckDefault&lt;/span&gt; /** default=1**/: This setting will enable the spell check for all the fields.  Change this value to 2 .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Disable extension installation delay&lt;/span&gt; :-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;security.dialog_enable_delay&lt;/span&gt; /** default = 20000 **/: This is delay time period in case you want to install a new Add-on to firefox. The delay feature is pretty annoying  and you can turn it off. Just change the value to 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Open search bar results in new tab&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;browser.search.openintab&lt;/span&gt;/** default = false **/: If set to true this setting forces the opening of the results of search bar in a new tab. It is a  setting that everyone should change because when it is set to false and you type something in the search bar,  it will open the results in the tab in which you are currently viewing some other page which honestly is very irritating.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Clearing surfing information&lt;/span&gt;  :&lt;br /&gt;&lt;br /&gt;when user's normally delete the private data by going  to Tools-&gt; clear private data and think that they  have  deleted everything  then they are wrong because the page being viewed is not deleted.&lt;br /&gt;&lt;br /&gt;So for absolutely deleting the history follow 2 simple steps:-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;In the address bar type &lt;span style="font-weight: bold;"&gt;about:blank &lt;/span&gt;(this essentially opens a trully blank page) and&lt;/li&gt;&lt;li&gt;then go to Tools -&gt; clear private data and delete everything.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;6. Disabling Automatic updates for extensions&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;firefox&lt;/span&gt;(core application) :&lt;br /&gt;&lt;br /&gt;There are 2 settings that control the updates of extensions and firefox that one should turn off for disabling the automatic updates for extensions and firefox(core application) .&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;extensions.update.enabled&lt;/span&gt; :  Change this to false by double clicking on the option. This turns off extension updates.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;app.update.auto&lt;/span&gt; : Change this setting to false. This turns off automatic application update.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-1471063028641686722?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1471063028641686722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/firefox-hacks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1471063028641686722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1471063028641686722'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/firefox-hacks.html' title='Firefox hacks'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3152159091626805022</id><published>2009-05-27T10:52:00.010+05:30</published><updated>2009-05-27T12:56:19.533+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>PHLAK:Professional Hacker's Linux Assault Kit</title><content type='html'>PHLAK is a modular security distribution. It is a derivative of Morphix, created by Alex de Landgraaf. It can be used as a live cd by security professionals to perform security analysis, penetration testing, forensics, and security auditing on a system to check whether it has been compromised in terms of security.&lt;br /&gt;&lt;br /&gt;The thing i like the most about it is that it provides one with enough security documentation to be able to help him become a security expert. It has a file cabinet full of security related documentation for your reading/educational purposes.&lt;br /&gt;&lt;br /&gt;This distribution comes with the best security tools like hping2, proxychains, lczroex, ettercap, kismet, hunt, achilies, brutus,nmap,nessus, snort, the coronor’s toolkit, ethereal and many others.&lt;br /&gt;&lt;br /&gt;It also has standard features like apache, mysql ,iptables, programming compilers etc that come with the linux distributions.&lt;br /&gt;&lt;br /&gt;It is user-friendly as it includes two fast, light-weight window managers, XFCE4 (the default) and Fluxbox.&lt;br /&gt;&lt;br /&gt;One thing that this distribution lacks is that it is 3.5 years old and new version is nowhere to be seen whereas other penetration testing systems like backtrack are new and under active development.&lt;br /&gt;&lt;br /&gt;Note:It's security documentation the one you'll definitely want to have.&lt;br /&gt;&lt;br /&gt;It can be &lt;span style="font-weight: bold;"&gt;downloaded&lt;/span&gt; from the following link:-&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/phlakproject/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 123px; height: 67px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/ShzoRYdxnKI/AAAAAAAAANE/HqjnPt65y8c/s400/download_buttons.jpg" alt="" id="BLOGGER_PHOTO_ID_5340398643477322914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following are some of the snapshots of this os:-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/Shzm-pIHB9I/AAAAAAAAAM0/vwDNSlEenTw/s1600-h/overclox.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/Shzm-pIHB9I/AAAAAAAAAM0/vwDNSlEenTw/s400/overclox.jpg" alt="" id="BLOGGER_PHOTO_ID_5340397222020712402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/ShznmtROxGI/AAAAAAAAAM8/Vx5ixIbFbxs/s1600-h/PHLAK_2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/ShznmtROxGI/AAAAAAAAAM8/Vx5ixIbFbxs/s400/PHLAK_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5340397910327477346" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3152159091626805022?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3152159091626805022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/phlakprofessional-hackers-linux-assault.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3152159091626805022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3152159091626805022'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/phlakprofessional-hackers-linux-assault.html' title='PHLAK:Professional Hacker&apos;s Linux Assault Kit'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/ShzoRYdxnKI/AAAAAAAAANE/HqjnPt65y8c/s72-c/download_buttons.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-3580033741610790048</id><published>2009-05-26T10:06:00.016+05:30</published><updated>2009-05-26T11:22:57.860+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='search engines'/><title type='text'>Wolfram|Alpha</title><content type='html'>What is &lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.wolframalpha.com"&gt;Wolfram|Alpha&lt;/a&gt;&lt;/span&gt; ?&lt;br /&gt;&lt;br /&gt;First thing's first &lt;span style="font-weight: bold;"&gt;Wolfram|Alpha&lt;/span&gt; is not your conventional search engine but is a &lt;span style="font-weight: bold;"&gt;computational engine&lt;/span&gt; that provides you with answers related to probably anything that has numbers or digits attached to it. It computes the answers by utilizing the structured database on the fly.&lt;br /&gt;&lt;br /&gt;What can one  do with &lt;span style="font-weight: bold;"&gt;Wolfram|Alpha &lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;With &lt;span style="font-weight: bold;"&gt;Wolfram|Alpha&lt;/span&gt; you can get answers to your queries that may have numbers attached to it. It can answer questions related to mathematics, economics, weather, physics, constants, currency exchange and much more topics. It also provides a user with various visualizations(charts, bars, graphs) etc along with the results.&lt;br /&gt;&lt;br /&gt;Following are some of the usage scenario's for &lt;span style="font-weight: bold;"&gt;Wolfram|Alpha&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;Mathematics :&lt;/span&gt;-&lt;br /&gt;&lt;br /&gt;a) example query :  integrate x2*sinx&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/Sht2tHOmyAI/AAAAAAAAAMM/05cu3ZZ4OEo/s1600-h/wolfram1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 341px; height: 400px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/Sht2tHOmyAI/AAAAAAAAAMM/05cu3ZZ4OEo/s400/wolfram1.JPG" alt="" id="BLOGGER_PHOTO_ID_5339992300584355842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;now as can be seen from this figure, it provides you with all the information you need along with the graphs of the integral function.&lt;br /&gt;&lt;br /&gt;b) example query: 10^5 mod 35&lt;br /&gt;would produce output's containing the result 5 ,  alternative representations etc.&lt;br /&gt;&lt;br /&gt;these are just few of the examples, you can try your own at &lt;a href="http://www.wolframalpha.com"&gt;Wolfram|Alpha &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2) &lt;span style="font-weight: bold;"&gt;Economics :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;example query: compound interest for 10000 at 5% for 3 years&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s4Oz51luJRA/Sht4skm7PGI/AAAAAAAAAMU/Z8frI7GCDPc/s1600-h/wolfram2.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 330px; height: 400px;" src="http://3.bp.blogspot.com/_s4Oz51luJRA/Sht4skm7PGI/AAAAAAAAAMU/Z8frI7GCDPc/s400/wolfram2.JPG" alt="" id="BLOGGER_PHOTO_ID_5339994490314374242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;b) example query: GDP growth of countries&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s4Oz51luJRA/Sht6R7WP8aI/AAAAAAAAAMc/tkPTkfyomek/s1600-h/wolfram3.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 333px; height: 400px;" src="http://4.bp.blogspot.com/_s4Oz51luJRA/Sht6R7WP8aI/AAAAAAAAAMc/tkPTkfyomek/s400/wolfram3.JPG" alt="" id="BLOGGER_PHOTO_ID_5339996231585231266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3) &lt;span style="font-weight: bold;"&gt;Constants&lt;/span&gt;: The thing that i like the most about it is that it can compute the value of constants to as higher precision as one may want to. You just have to click on the more digits button and it will calculate the values to a much higher precision.&lt;br /&gt;&lt;br /&gt;For ex: pi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s4Oz51luJRA/Sht8RsI26oI/AAAAAAAAAMk/fdii1E-O-hg/s1600-h/wolfram4.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 299px; height: 400px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/Sht8RsI26oI/AAAAAAAAAMk/fdii1E-O-hg/s400/wolfram4.JPG" alt="" id="BLOGGER_PHOTO_ID_5339998426525788802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4) &lt;span style="font-weight: bold;"&gt;Weather and general information:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wolfram alpha can calculate where you are by using your ip address and then provide you the relevant information.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;let's  say you type  &lt;span style="font-weight: bold;"&gt;"weather"&lt;/span&gt; then it will provide you with the weather information for your city automatically by looking at your ip address. Just take a look at the following output.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s4Oz51luJRA/Sht83d5i48I/AAAAAAAAAMs/hnDRqh5TBVg/s1600-h/wolfram5.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 303px; height: 400px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/Sht83d5i48I/AAAAAAAAAMs/hnDRqh5TBVg/s400/wolfram5.JPG" alt="" id="BLOGGER_PHOTO_ID_5339999075538494402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These are just few of the many possible things one can do with wolfram alpha.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Shortcomings&lt;/span&gt;:-&lt;br /&gt;&lt;br /&gt;the only thing that Wolfram|Alpha lacks is that it provides old data for certain queries like "gdp growth india" in this case it provides the 2005 estimate.&lt;br /&gt;&lt;br /&gt;The fresh data acquisition is the only thing that one would want Wolfram|Alpha to work upon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-3580033741610790048?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/3580033741610790048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/wolframalpha.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3580033741610790048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/3580033741610790048'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/wolframalpha.html' title='Wolfram|Alpha'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_s4Oz51luJRA/Sht2tHOmyAI/AAAAAAAAAMM/05cu3ZZ4OEo/s72-c/wolfram1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-4309285883821228708</id><published>2009-05-18T21:00:00.013+05:30</published><updated>2009-05-19T13:07:16.065+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>ddos attack/ping flooding: Explanation and Solution</title><content type='html'>what is a &lt;strong&gt;ddos attack/ping flooding&lt;/strong&gt; attack ?&lt;p&gt;&lt;strong&gt;ddos attack or ping flooding&lt;/strong&gt; attack is basically sending large and continuous ICMP (Internet control message protocol) &lt;strong&gt;echo packets&lt;/strong&gt; to a target host and wait for the icmp reply message. Now what this does is, it floods the target host with large data segments and if ICMP service is not disabled by the target host then it will send the ICMP echo reply message (that's what an &lt;strong&gt;attacker&lt;/strong&gt; wants to accomplish).&lt;/p&gt;&lt;p&gt;So if you want to try it out just use the following variation of the ping command:-&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ping -t -l [buffer_size] "target_ipaddress"&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The options:-&lt;/p&gt;&lt;p&gt;-t for repeated sending of icmp echo messages.&lt;/p&gt;&lt;p&gt;-l [buffer size] : the size of packet to be sent from[0 to 65500] &lt;/p&gt;&lt;p&gt;target_ipaddress : the host address you want to ping to&lt;/p&gt;&lt;p&gt;you can always stop the ping command like any other command by pressing ctrl+c (for windows) combination that kills the  process.&lt;/p&gt;&lt;p&gt;For the attack to be more effective tell some of your friends a group of 10-20 people to join you and ping together an ip address.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;For example: &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;ping  -l 34567 -t  202.63.160.186&lt;/p&gt;&lt;p&gt;the output will be like the following image :-&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 285px;" src="http://1.bp.blogspot.com/_s4Oz51luJRA/ShGKJzPa0xI/AAAAAAAAAL8/G_f4afUPgSQ/s400/pingflood.JPG" alt="" id="BLOGGER_PHOTO_ID_5337198934389084946" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The solution&lt;/strong&gt;:- &lt;/p&gt;&lt;p&gt;If you are a server admin you would know about this issue and you would have probably solved this by now, but many counter strike or any other online game server admins don't know the cure for this.&lt;/p&gt;&lt;p&gt;Well the cure is very simple and for that you have to disable the icmp service for the wan interface of your modem/router. Now what this will do is, it will silently ignore the icmp echo request.&lt;/p&gt;&lt;p&gt;Follow these steps to disable the icmp service for the wan interface in the router/modem :-&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Open your web browser and type the address of the default gateway configuration page(by default it is  http://192.168.1.1/index.html or http://192.168.1.1/main.html or 192.168.1.1) and then type in the user-name and password pair (by default are admin, admin or admin, password) .&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now, first find the management section in the configuration page, then the access control configuration page and finally the services config page (don't worry if you cannot find the exact sequence the important thing is that you must be able to find the &lt;strong&gt;service configuration page&lt;/strong&gt;) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Uncheck the icmp service, save the changes and after saving the changes you might have to reboot the modem so reboot it. Now any ping request to your modem's wan interface will be warded off (and counter strike admins will be able to run their servers with no lag due to this attack) (Refer to the following snapshot of my modem page which is a beetel 220bx)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 223px;" src="http://2.bp.blogspot.com/_s4Oz51luJRA/ShGQ_0f_TnI/AAAAAAAAAME/EZRJ218Ltws/s400/pingflood1.JPG" alt="" id="BLOGGER_PHOTO_ID_5337206459509722738" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:If you have any issues do post your comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-4309285883821228708?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/4309285883821228708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/05/ddos-attackping-flooding-explanation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4309285883821228708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/4309285883821228708'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/05/ddos-attackping-flooding-explanation.html' title='ddos attack/ping flooding: Explanation and Solution'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s4Oz51luJRA/ShGKJzPa0xI/AAAAAAAAAL8/G_f4afUPgSQ/s72-c/pingflood.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-2243449796191155902</id><published>2009-05-17T23:50:00.000+05:30</published><updated>2009-05-17T16:59:15.174+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usenet'/><title type='text'>Usenet Guide</title><content type='html'>This guide will be a walk through on how to use usenet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;What is Usenet ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Usenet is basically is a worldwide distributed internet discussion system containing wealth of information. It is basically based on client server architecture. Usenet information is spread across many servers across the world or internet so there is no central entity in managing it. It was heavily dominant before the existence and being of web and still provides knowledge not easily accessible through web. It is likely that you have not heard about it because web is now dominant and usenet is an obscure entity. But usenet is still the place where you can find consummate knowledge articles.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Usenet guide&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;Installing a client&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;There are many usenet clients available on the net installing a client is necessary because it lets you view the messages in newsgroup and download them from a Usenet server. As usenet is a client server based entity so installing a client is neccessary.&lt;br /&gt;&lt;br /&gt;Following list contains a number of usenet clients you can download anyone of them:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bnr2.org/"&gt;Bnr2 ( Binary News Reaper)&lt;/a&gt; :  It is a &lt;span style="font-weight: bold;"&gt;freeware&lt;/span&gt; and is basically tailored for reading articles from alt.binaries.* group.&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.cnet.com/Xnews/3000-2164_4-10026377.html"&gt;Xnews&lt;/a&gt;: It is a &lt;span style="font-weight: bold;"&gt;freeware&lt;/span&gt; client.Xnews features a quick filter, a score file for more advanced filtering, support for multiple servers and identities, binaries handling, optional header and article caching, and folders for permanent archival.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.newsbin.com/"&gt;Newsbin&lt;/a&gt;: It is &lt;span style="font-weight: bold;"&gt;not a freeware.&lt;/span&gt;It is used for downloading files from newsgroups. Also&lt;span class="style15"&gt; it automatically combines complicated &lt;strong&gt;multi-part binary posts&lt;/strong&gt; to create one file.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="style15"&gt;&lt;a href="http://www.shemes.com/"&gt;Grabit&lt;/a&gt;: It is a freeware but it's search feature is paid. One can download the content without having to download entire headers. It boast of a feature to automatically repair and extract of downloaded binaries.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="style15"&gt;2. &lt;span style="font-weight: bold;"&gt;Getting a Usenet Server:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is the place from where you can download the usenet content i.e the content from the newsgroups.&lt;br /&gt;&lt;br /&gt;I mention here a site that contains a list of &lt;span style="font-weight: bold;"&gt;free Usenet servers&lt;/span&gt; you can go to this site and choose the server you want.It is to be noted that only the servers in white text are active at any instant of time. This site maintains and updates a list of public news servers everyday.&lt;br /&gt;&lt;br /&gt;Visit &lt;a href="http://www.disenter.com/"&gt;www.disenter.com&lt;/a&gt; for server list.&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;Usenet Search Engines&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;This is a place where you can search for keywords across numerous newgroups and they provide nzb support. Nzb file contains details of the item to be downloaded, to make it more clear think of nzb file as a torrent and usenet client as the client that downloads that file for you.&lt;br /&gt;&lt;br /&gt;Here's the &lt;span style="font-weight: bold;"&gt;list of usenet search engines&lt;/span&gt;:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://binsearch.info/"&gt;Binsearch.info &lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.newzsearch.com/"&gt;www.newzsearch.com&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.issociate.de/board/"&gt;issociate&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;span&gt;&lt;a href="http://www.newzleech.com/"&gt;Newzleech&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;span&gt;&lt;a href="http://www.yabsearch.nl/"&gt;yabsearch.nl&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;This guide just provides you with basic information that you would need to get started with usenet. If you encounter any problem with client setup or any other query then post your comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-2243449796191155902?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/2243449796191155902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/usenet-guide_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2243449796191155902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/2243449796191155902'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/usenet-guide_14.html' title='Usenet Guide'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-7203020579699872940</id><published>2009-05-17T23:42:00.000+05:30</published><updated>2009-05-17T16:43:29.773+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usenet'/><title type='text'>Usenet Information</title><content type='html'>In this article i discuss about certain pitfalls and things to avoid while posting in Usenet groups.&lt;br /&gt;&lt;br /&gt;The following article explains &lt;span style="font-weight: bold;"&gt;Troll, flamer,kook,cross-poster(cascades) &lt;/span&gt;and how to avoid them before posting.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;1)Troll:&lt;/span&gt; It comes from the word that means ugly creature. What a troll basically does is that he  posts messages intended to attract predictable responses and hence people should not fall for that and should not post response to their post.&lt;br /&gt;the troll basically is pulling your leg by publishing boring information and vying for responses so don't fall for it or else he wins.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Flamer&lt;/span&gt;: posts abusive remarks or does personal attack on newsgroup,mailing list etc  is called as flamer.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3)Cross-poster&lt;/span&gt;: They will try to cross post the same useless topics across different newsgroups or mailing lists vying for response.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4)Kook&lt;/span&gt;:The kook  is characterized by  paranoia and &lt;span style="font-weight: bold;"&gt;illusions&lt;/span&gt; of grandiosity, they will keep on posting even when they are recognized by mailing lists and newsgroups. They think whatever they say is the final word or truth (know it all types but they don't nothing :-) ) and will always pick on people smarter than them and whenever contradicted they will start calling people names,Post numerous blank posts, or posts containing only a message id .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-7203020579699872940?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/7203020579699872940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/usenet-information.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7203020579699872940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7203020579699872940'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/usenet-information.html' title='Usenet Information'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-7189723924765024105</id><published>2009-05-17T23:33:00.000+05:30</published><updated>2009-05-17T17:03:38.087+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search engine Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Search Operators</title><content type='html'>In this article i provide you with a &lt;span style="font-weight: bold;"&gt;presentation&lt;/span&gt; file that explains Advanced and basic&lt;span style="font-weight: bold;"&gt; google&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;search operators&lt;/span&gt;. The most obvious question is &lt;span style="font-weight: bold;"&gt;why i need to know about them&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;The answer is the &lt;span style="font-weight: bold;"&gt;following benefits&lt;/span&gt; that it provides:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The advanced search operators and basic operators &lt;span style="font-weight: bold;"&gt;reduce your search time&lt;/span&gt; by a large extent and if you work for an organization you would know how often you have to search for resources on the net and most of us use google search engine.&lt;/li&gt;&lt;li&gt;It also provides you with certain&lt;span style="font-weight: bold;"&gt; kinds of information&lt;/span&gt; you would be not able to access in a normal search query.&lt;/li&gt;&lt;li&gt;It also &lt;span style="font-weight: bold;"&gt;weeds out duplicate&lt;/span&gt; results and &lt;span style="font-weight: bold;"&gt;unwanted results&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;That being said here's the presentation that explains those operators &lt;a href="http://rapidshare.com/files/213243706/GOOGLE__SEARCH_OPERATORS.ppt.html"&gt; download it here&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-7189723924765024105?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/7189723924765024105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/google-search-operators.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7189723924765024105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7189723924765024105'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/google-search-operators.html' title='Google Search Operators'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-998764770096280890</id><published>2009-05-17T23:28:00.000+05:30</published><updated>2009-05-17T17:01:29.360+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix/Linux'/><title type='text'>Shell Server</title><content type='html'>&lt;strong&gt;Shell servers&lt;/strong&gt; are &lt;strong&gt;unix &lt;/strong&gt;based systems that provide access to the user and user is given storage space and ability to execute commands and work on &lt;strong&gt;unix shell&lt;/strong&gt;, so if you want to try out operating system like unix you can use shell servers. Also they provide a user with a &lt;strong&gt;text based&lt;/strong&gt; browser like lynx to surf the internet with &lt;strong&gt;complete anonymity&lt;/strong&gt;, but they generally will not let you telnet from them to another server for free (those accounts are paid).&lt;br /&gt;Also if someone is working on windows and cannot install linux then he/she can work on these servers.&lt;br /&gt;They also provide user a home directory but never try to get access to root files it wont be allowed or never try to use shell scripts that can get you root privilidges that wont work either.&lt;br /&gt;Using them requires knowledge of &lt;strong&gt;linux commands.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;List Of shell servers:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://freeshell.org/"&gt;http://freeshell.org/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://sdf-eu.or/"&gt;http://sdf-eu.or/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.grex.org/"&gt;http://www.grex.org/&lt;/a&gt; : provides text based lynx browser, free webspace, pop3, email&lt;/li&gt;&lt;li&gt;&lt;a href="http://sdf.lonestar.org/"&gt;http://sdf.lonestar.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://polarhome.com/"&gt;http://polarhome.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.celebris.net/"&gt;http://www.celebris.net/&lt;/a&gt;: provides services like php, mysql and apache 7mb quota on webspace, IRC access.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So if you want to see how unix works without the hassles of installing it go and create an account on one of these.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-998764770096280890?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/998764770096280890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/shell-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/998764770096280890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/998764770096280890'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/shell-server.html' title='Shell Server'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-678765658479759673</id><published>2009-05-17T23:27:00.000+05:30</published><updated>2009-05-17T17:02:44.347+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet anonymity'/><title type='text'>Free Proxy Sites list</title><content type='html'>&lt;div&gt;What's a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;proxy server&lt;/span&gt; ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What a &lt;span style="font-weight: bold;"&gt;proxy server / proxy site&lt;/span&gt; does is it takes request from you and forwards it to the web server you are requesting resource from. Therefore the ip address of the &lt;span style="font-weight: bold;"&gt;proxy server/site&lt;/span&gt; is stored in the web server and not your ip address.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this helps in multiple ways:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;To protect your &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;anonymity&lt;/span&gt; on the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;internet&lt;/span&gt;: As already mentioned that the web server you are requesting resource from will store the address of the proxy site/server so it protects your anonymity no one but the proxy site will know that you accessed the resource.&lt;/li&gt;&lt;li&gt;To access &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;blocked sites&lt;/span&gt;: This happens often in colleges and schools where the administrator may use &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Squid &lt;/span&gt;to block your access to sites like myspace, orkut. So to overcome this as you will be connecting to the proxy site and that in turn will be forwarding the request to sites like myspace etc, you will be able to access them because what administrators do is enter the site url into Squid to block it but the proxy server will not be in that list. So you are able to request view the blocked sites.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Free Proxy list: &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.web4proxy.com/"&gt;http://www.web4proxy.com&lt;/a&gt; : It provides 10 proxy servers to choose from and best of all it has no annoying  pop up adds.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mathtunnel.com/"&gt;http://www.mathtunnel.com&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.proxy.gen.in/"&gt;http://www.proxy.gen.in&lt;/a&gt;: This is a fast indian proxy server (as can be seen from the domain itself).&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vtunnel.com/"&gt;http://www.vtunnel.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ninjacloak.com/"&gt;http://www.ninjacloak.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.aplusproxy.com/"&gt; http://www.aplusproxy.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.safehazard.com/"&gt;http://www.safehazard.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.safelizard.com/"&gt;http://www.safelizard.com&lt;/a&gt;&lt;/li&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-678765658479759673?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/678765658479759673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/free-proxy-sites-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/678765658479759673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/678765658479759673'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/free-proxy-sites-list.html' title='Free Proxy Sites list'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-6168230240959153467</id><published>2009-05-17T17:50:00.000+05:30</published><updated>2009-05-17T16:46:17.277+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winxp'/><category scheme='http://www.blogger.com/atom/ns#' term='security windows xp'/><title type='text'>Secure and boost your Windows xp</title><content type='html'>In this article i discuss about how to secure windows xp by closing the compromised services and also thereby increasing the speed and performance of the pc.&lt;br /&gt;&lt;br /&gt;The following steps must be followed:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt;Open run prompt (winkey+r).&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Type &lt;strong&gt;services.msc&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;To disable the services right click on it then press stop button, then choose disable.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;You can disable  the following services&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Tcp/Ip netbios helper&lt;/strong&gt;&lt;/em&gt; : It makes your system vulnerable to the most easily accomplishable netbios hack .&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Print Spooler &lt;/strong&gt;&lt;/em&gt;: It should not be disabled if you have the printer attached to your pc else it can be disabled.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Computer Browser&lt;/strong&gt;&lt;/em&gt; : This service can be used by the attacker to browse through your computer, If it is disabled he would have to do it in a more complex way.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Help And Support&lt;/strong&gt;&lt;/em&gt; : This is the microsoft's help and support service that you would normally not need in day to day operations so can be safely turned off.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Messenger&lt;/strong&gt;&lt;/em&gt;: It can be turned off if you don't use the msn messenger(Most people don't).&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;strong&gt;&lt;em&gt;Indexing&lt;/em&gt;&lt;/strong&gt; : This is use to build search indexes if you do not normally  search your pc a lot this should be turned off.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/em&gt; : This is also a vulnerability in Win-xp ,so if you normally don't  share your files and etc then disable this.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Telnet(port 23) &lt;/strong&gt;&lt;/em&gt;: Disable this service otherwise people form outside can connect to your pc and may try to harm it (Generally the pc has default admin user with no password).&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;World wide web publishing&lt;/strong&gt;&lt;/em&gt; : Disable this only if you do not use the internet information server i.e IIS (most people prefer apache etc).&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Remote Registry&lt;/strong&gt;&lt;/em&gt; : Disable this as a cracker could access and change your pc's registry and then may change your password and if he is one of those with malicious intent he could prevent you from login into the system.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;These services if diabled make your pc more &lt;span style="color: #ff0000;"&gt;secure &lt;/span&gt;and &lt;span style="color: #ff0000;"&gt;Faster&lt;/span&gt;&lt;/span&gt; and can be efficacious in preventing the most easy exploits in win-xp.&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-6168230240959153467?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/6168230240959153467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/secure-and-boost-your-windows-xp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6168230240959153467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/6168230240959153467'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/secure-and-boost-your-windows-xp.html' title='Secure and boost your Windows xp'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-5934402357711948734</id><published>2009-05-17T17:00:00.006+05:30</published><updated>2009-07-13T20:24:48.880+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='russian walk'/><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>Russian Walk</title><content type='html'>This dem shows how to perform &lt;span style="font-weight: bold;"&gt;russian walk&lt;/span&gt;. &lt;span style="font-weight: bold;"&gt;Russian walk&lt;/span&gt; is used to walk fast without making sound and that is very important during tournaments.&lt;br /&gt;&lt;br /&gt;People use mouse wheel binding for control , but that is not allowed in professional tournaments. Its not that difficult to master it using ctrl key itself.&lt;br /&gt;&lt;br /&gt;Just press this sequence while walking ctrl ctrl  pause(walk normally)  ctrl ctrl pause ctrl ctrl.&lt;br /&gt;&lt;br /&gt;and voila ! you have learned the russian walk. just practice though :=) .&lt;br /&gt;&lt;br /&gt;Here is the  dem download it from &lt;a href="http://www.ramannanda.blogdns.com/csfiles/russianwalk.rar"&gt;here &lt;/a&gt; or&lt;a href="http://rapidshare.com/files/255368353/russianwalk.rar"&gt; alternate link &lt;/a&gt;and open  it using winrar and extract the dem file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-5934402357711948734?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/5934402357711948734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/russian-walk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5934402357711948734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/5934402357711948734'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/russian-walk.html' title='Russian Walk'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-301875029669407003</id><published>2009-05-17T17:00:00.005+05:30</published><updated>2009-07-08T10:42:54.499+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title type='text'>Best Counter Strike Players</title><content type='html'>&lt;p&gt;&lt;strong&gt;1.SK|Spawn&lt;/strong&gt;: He is inarguably the best player of cs1.6, he is good at every counter strike weapon awp, ak, m4a1  and he owns the best cs players, too bad he does not play anymore. Also he can play with both weapon  orientation that  is both right handed and left handed. Here is an ace video of his versus one of the best cs1.6 clan fnatic.&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="400" height="290"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="src" value="http://www.youtube.com/v/q8hF_Sdlq9Y&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.youtube.com/v/q8hF_Sdlq9Y&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01" allowscriptaccess="always" allowfullscreen="true" width="400" height="290"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2.neo[t]&lt;/strong&gt;: He has consummate skills of cs 1.6  and he owns the best players in this game,he is a not a good awper though but with skills that he has with ak,m4a1 he does not need to be a good awper. Here is one of his dem in which he owns both zonic and ave of mTw clan.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="400" height="295"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="src" value="http://www.youtube.com/v/dxkFHt0Udvk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.youtube.com/v/dxkFHt0Udvk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01" allowscriptaccess="always" allowfullscreen="true" width="400" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;3.mTw.Ave : He has one of the best aims in cs 1.6 he makes it look so easy and simple that it makes you   envy. Also he is quite innovative and has  good application of mind in the game. He is currently with one of the best clan "mTw".Here is an ace video of his in a pistol round and also the video has very nice music.&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="405" height="300"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="src" value="http://www.youtube.com/v/rqMhM4JHwo8&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.youtube.com/v/rqMhM4JHwo8&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01" allowscriptaccess="always" allowfullscreen="true" width="405" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;4.Heaton&lt;/strong&gt;: As spawn is considred best in cs 1.6 he was the best in cs1.5.He has good aim and great spray control of both ak and m4a1. Here is the video showing his skills.&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="405" height="300"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="src" value="http://www.youtube.com/v/eR5QCLhwCIs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.youtube.com/v/eR5QCLhwCIs&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01" allowscriptaccess="always" allowfullscreen="true" width="405" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-301875029669407003?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/301875029669407003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/best-counter-strike-players.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/301875029669407003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/301875029669407003'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/best-counter-strike-players.html' title='Best Counter Strike Players'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-7725134653990275169</id><published>2009-05-17T17:00:00.002+05:30</published><updated>2009-05-17T16:57:58.921+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Netbios hack'/><category scheme='http://www.blogger.com/atom/ns#' term='security windows xp'/><title type='text'>Security threat in windows xp</title><content type='html'>The Netbios hack: &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;netbios is a service that works on port 139 the basic Netbios was meant for communicating  over lan  but the real threat is netbios over tcp/ip.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A user can make null session or an session with administrator as the user and  connect to your system using netbios over tcp/ip and view your share resources like ipc$,admin$,c$ by using the following commands.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a)&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Net Use \\ipaddress\IPC$ "" /USER:""&lt;/span&gt; (null session) &lt;/div&gt;&lt;div&gt;b)&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Net Use \\ipaddress\IPC$ "" /USER:Administrator&lt;/span&gt; (with admin user having no pass by default windows xp has no admin password set).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;next one can view share resources by using the following command:&lt;/div&gt;&lt;div&gt;a)&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Net View //ipaddress&lt;/span&gt; (it will show all share resources except the ipc$,admin$ etc)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Solution:&lt;/div&gt;&lt;div&gt;1) Disable the following services follow these steps:&lt;/div&gt;&lt;div&gt;a) Open run prompt (windows key+r).&lt;/div&gt;&lt;div&gt;b) Type services.msc&lt;/div&gt;&lt;div&gt;c) Disable &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Tcp/ip Netbios helper&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;Disable &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Server&lt;/span&gt; (use only if you do not have another pc to share from on lan) this service if disabled will lead to disabling  of Net View  command makes your pc more secure for more information on which services to disable look in blog for the post on this topic.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;d) or you can remove the $ shares for this you have to type the following command&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;net share sharename  /DELETE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;for ex &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;net share admin$ /DELETE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;e) The &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;IPC$&lt;/span&gt; share cannot be removed by this command and will show access denied error message for this you will have to do it manually, follow these steps:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Open run prompt (windows key+r).&lt;/div&gt;&lt;div&gt;2) Type regedit&lt;/div&gt;&lt;div&gt;3) go to the following key&lt;/div&gt;&lt;div&gt; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/div&gt;&lt;div&gt;4) Change the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;restrict anonymous&lt;/span&gt; value to 1.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;thats it now your pc is secure from this threat.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-7725134653990275169?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/7725134653990275169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/security-threat-in-windows-xp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7725134653990275169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/7725134653990275169'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/security-threat-in-windows-xp.html' title='Security threat in windows xp'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8285878118138201927</id><published>2009-05-17T17:00:00.001+05:30</published><updated>2009-05-17T16:57:09.110+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search engine Optimization'/><title type='text'>Search engine optimization</title><content type='html'>This article discusses a few things that can help your &lt;span style="font-weight: bold;"&gt;pagerank in search engines&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;What not to do?&lt;/span&gt;&lt;/span&gt; &lt;div&gt;&lt;ul&gt;&lt;li&gt;Don't make your &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;site multimedia heavy&lt;/span&gt; i.e containing a lot of flash content, it looks attractive but search engines will not index your pages based on them, so don't use heavy flash based intros instead use more content and keywords in your site it is because search engines give very high importance to plain text and content because of their primitive nature of searching text.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Javascript based&lt;/span&gt; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;navigation menus: &lt;/span&gt;Don't use javascript based navigation menus in your site because a search bot will never be able to find other pages using that.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Frames:&lt;/span&gt;do not use frames in your website coding because search engine bots will never index your pages, they will however index frame definition document but it is rarely usefull as it does not have keyword rich content. &lt;/li&gt;&lt;/ul&gt;you can always check to see if your web pages contain frames open your webpage and select view source.If it contains code in following format then you are using frames.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="border: 1px solid rgb(164, 185, 127); overflow: auto; width: 400px; height: 200px; background-color: lightblue;"&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;frameset rows="10%,20%,70%"&amp;gt;&lt;br /&gt;&amp;lt;frame source="navigation_bar.html"&amp;gt;&lt;br /&gt;&amp;lt;frame source="Banner.html"&amp;gt;&lt;br /&gt;&amp;lt;frame source="main_content.html"&amp;gt;&lt;br /&gt;&amp;lt;/frameset&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Don't use &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Embedded text on images: &lt;/span&gt;This is because a search bot will never be able to view that embedded text, search engines want plaintext that's it no fancy image based text. You can always see that whether a site contains plaintext or image based text by selecting the text if it is a image based text it will all be selected at once.&lt;/li&gt;&lt;li&gt;Don' t use irrelevant keywords.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;What you should do: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use a keyword rich title that explains about site.&lt;/li&gt;&lt;li&gt;Follow it up with a description meta tag. For example if your site is based on programming language tutorials mention the languages you are going to offer tutorials about.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;bold, italic text&lt;/span&gt; to highlight important keywords, search engines rank the text in bold higher as compared to normal text but that does not mean that you start making every text bold, highlight only the keywords that are important.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use keywords that are not common this gets your site right on top in the indexes.&lt;/li&gt;&lt;li&gt;Add a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Sitemap of your site &lt;/span&gt;to &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;search engine&lt;/span&gt; sites like google,yahoo a sitemap is an xml based document that helps a search bot in navigating through urls on your website and use more &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Text &lt;/span&gt;based links as aforementioned don't use javascript based navigation menus.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Replace images with text&lt;/span&gt; remember search engines prefer text as images can be added or removed but you rarely change text.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Do not restructure the site&lt;/span&gt; as it will lead to broken links for example if someone bookmarks a page in your site and you restructure that link may become broken.&lt;/li&gt;&lt;li&gt;Use&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; alternate text that is alt text &lt;/span&gt;with images that helps in browser for the blind people as it reads the text aloud.&lt;/li&gt;&lt;li&gt;Check spelling errors and remove them.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Use good or great keywords &lt;/span&gt;this matters most and have as much keywords in your site as you can.&lt;/li&gt;&lt;/ul&gt;This list is not exhaustive but very use full.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also to view your page rank you should download the google toolbar which shows the current page rank of the page and also you should download alexa toolbar.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-8285878118138201927?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/8285878118138201927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/search-engine-optimization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8285878118138201927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8285878118138201927'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/search-engine-optimization.html' title='Search engine optimization'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1267638393395966532</id><published>2009-05-17T17:00:00.000+05:30</published><updated>2009-05-17T16:56:08.332+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic Dns'/><category scheme='http://www.blogger.com/atom/ns#' term='website on pc'/><title type='text'>Hosting website on PC</title><content type='html'>This article provides in depth detail of &lt;span style="font-weight: bold;"&gt;hosting a website&lt;/span&gt; on your own pc&lt;br /&gt;with virtually no limit of&lt;span style="font-weight: bold;"&gt; hosting space&lt;/span&gt; but with the requirement that you keep your pc&lt;br /&gt;on at all times.&lt;br /&gt;&lt;br /&gt;This article is divided into various sections So if you know about a section just skip it&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.Dynamic Domain Name System&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.PHP,Mysql,Apache Installation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.Configuring Apache for Website&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4.Web Publishing tools&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5.Configuring modem/router&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6.How to View Your Own Website&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;1.Dynamic Domain Name System(DDNS):&lt;/strong&gt;&lt;/em&gt; What it does is simple terms is to assign a dynamic&lt;br /&gt;domain name to your pc, The domain name is "Dynamic" because your Internet Service provider&lt;br /&gt;provides you with a different ip address and your ip address is not static so we need a dynamic&lt;br /&gt;domain name system. &lt;a href="http://www.dyndns.com/"&gt;This site &lt;/a&gt;provides free dynamic domains, after registering on this site you can register for a free dynamic domain name and then download their Client DynDns Updater which will automatically update changes in your ip address with the site(dyndns.com).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.&lt;em&gt;PHP,Mysql,Apache Installation: &lt;/em&gt;&lt;/strong&gt;You can manually install each of them and the configuration part of these three can be quite tedious or you can opt for a package that does this install for you. I recommend you do the install manually but for the easy way out &lt;a href="http://nchc.dl.sourceforge.net/sourceforge/wampserver/WampServer2.0g-1.exe"&gt;download Wamp &lt;/a&gt;its a automated installer which comes with &lt;em&gt;php,mysql,apache and phpMyadmin&lt;/em&gt; and installs easily on your pc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;em&gt;Configuring Apache for Website: &lt;/em&gt;&lt;/strong&gt;After the installation of wamp server you would have to configure the apache server for allowing access and setting up domain.&lt;br /&gt;&lt;br /&gt;Follow these steps:&lt;br /&gt;&lt;br /&gt;1.&lt;strong&gt;Open http.conf&lt;/strong&gt; and Find line containing &lt;strong&gt;Listen &lt;/strong&gt;directive then change it to &lt;strong&gt;Listen *:80 &lt;/strong&gt;if you want to allow access to everyone or &lt;strong&gt;Listen ipaddress:80 &lt;/strong&gt;for listening for a specific ip range. Apache works as a Daemon that listens on port 80 by deafult and this Listen directive is used for listening to the specified ip-range&lt;br /&gt;&lt;br /&gt;2.Then Goto The &lt;strong&gt;ServerName&lt;/strong&gt; directive in &lt;strong&gt;httpd.conf &lt;/strong&gt;and change it to &lt;strong&gt;www.yoursite.com:80&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;3.Then find the&lt;strong&gt; &amp;lt;Directory /&amp;gt; &lt;/strong&gt;Directive this directive is used to control access to the specified directory which in this case is the root directory (/) you will have to change this to a more liberal access otherwise you will get the error message "you do not have rights to access /". So change the last line which by default will say &lt;strong&gt;"deny from all"&lt;/strong&gt; to &lt;strong&gt;"allow from all"&lt;/strong&gt; (without the quotes) or &lt;strong&gt;"deny from all"&lt;/strong&gt; followed by &lt;strong&gt;"allow from ip-address-range"&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;For example if you want to allow access from abc.com copy and paste the following code replace abc.com with the actual site and replace the previous &lt;&lt;strong&gt;Directory /&gt;&lt;/strong&gt; code.&lt;br /&gt;&lt;br /&gt;&lt;textarea rows="10" cols="30" readonly="readonly"&gt; &lt;directory&gt;             Options FollowSymLinks        AllowOverride None           Order deny,allow               allow from abc.com       &lt;/directory&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;4.The Last part is to find &lt;strong&gt;#online-offline tag&lt;/strong&gt; replace the &lt;strong&gt;allow from 127.0.0.1 &lt;/strong&gt;to &lt;strong&gt;"allow from all" &lt;/strong&gt;without the quotes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;4.Web Publishing tools&lt;/em&gt;&lt;/strong&gt;: There are various tools available like cms,wordpress,wordpress mu, joomla you can use either of them in my blog i will publicsh articles regarding wordpress though cause its in gnu general public licence so its free and also there has been rampant growth in wordpress sites.Watch my blog for easy ways to handle errors and using mysql for easily updating wordpress options.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;5.Configuring modem/router: &lt;/em&gt;&lt;/strong&gt;This is a very important part of so configure it carefully.&lt;br /&gt;&lt;br /&gt;The Steps are as follows&lt;br /&gt;&lt;br /&gt;a)Open your Browser and type &lt;a href="http://192.168.1.1/main.html"&gt;http://192.168.1.1/main.html&lt;/a&gt; or &lt;a href="http://192.168.1.1/index.html"&gt;http://192.168.1.1/index.html&lt;/a&gt; then enter your username and password by default are admin , admin respectively or admin ,password.&lt;br /&gt;&lt;br /&gt;b)Open the &lt;strong&gt;Advanced setup&lt;/strong&gt;, then choose &lt;strong&gt;NAT&lt;/strong&gt; and then choose &lt;strong&gt;virtual servers&lt;/strong&gt; then choose add type &lt;strong&gt;webserver&lt;/strong&gt; as application name choose port number= 80 then assign the server ip address as your local lan ip address i.e of the form 192.168.xxx.yyy make sure that this &lt;strong&gt;ip is static&lt;/strong&gt; by this i mean that &lt;strong&gt;dhcp&lt;/strong&gt; should be &lt;strong&gt;disabled.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;c)In your network settings in windows xp goto control panel, switch to classical view and then choose network connections,choose local area connection then choose properties then from items select tcp/ip and press properties button switch from obtain ip address automatically to use following ip address then type the following&lt;br /&gt;&lt;br /&gt;ipaddress=192.168.1.2 subnetmask=255.255.255.0 default gateway=192.168.1.1(usually the first ip address in a range)&lt;br /&gt;&lt;br /&gt;then assign the domain name server (dns server) addresses as provied by your isp. this is it you have set up the webserver .&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;6.How to View Your Own Website:&lt;/em&gt;&lt;/strong&gt; The thing is to view your website now you will have to connect through a proxy site as your modem will not forward requests from inside of your pc to port 80 This is because Nat is configured for traffic from the outside interface of the router.So to view your site go to a proxy site Like &lt;a href="http://www.web4proxy.com/"&gt;http://www.web4proxy.com/&lt;/a&gt; and type your site url to view your site.&lt;br /&gt;&lt;br /&gt;Thats it :-)&lt;br /&gt;&lt;br /&gt;Do comment if the post was usefull.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-1267638393395966532?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1267638393395966532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/host-website-on-pc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1267638393395966532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1267638393395966532'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/host-website-on-pc.html' title='Hosting website on PC'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8601554978181439997</id><published>2009-05-17T16:50:00.002+05:30</published><updated>2009-05-17T16:45:24.935+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>MAC address/Mac Spoofing</title><content type='html'>Changing of MAC/Physical address is salutary for following purposes:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;If your Internet Service Provider (ISP) does mac binding with your id (Almost all do).&lt;br /&gt;So in case your old modem/router is no longer usable and If you want to use a new modem then it&lt;br /&gt;will result in authentication failure.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;For "MAC Spoofing" : That is showing you have a different address to what you actually have.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The Steps are:&lt;br /&gt;&lt;br /&gt;1.Telnet to your modem/router i.e&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to Command prompt and type &lt;em&gt;&lt;strong&gt;telnet 192.168.1.1 &lt;/strong&gt;&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Enter your user name and press enter and then the password.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;2. A menu will be displayed then type sh a &lt;strong&gt;#&lt;/strong&gt; prompt appears .This lets you into the shell of your router/modem&lt;br /&gt;&lt;br /&gt;3.Now to change your ethernet Interface's address you will have to first shut it down so for that&lt;br /&gt;to happen you would have to connect through your usb interface .&lt;br /&gt;&lt;br /&gt;4. To View what interfaces are available type &lt;strong&gt;ifconfig&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;5. Assuming that you want to change &lt;strong&gt;eth0&lt;/strong&gt; interface, type the following sequence of steps :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;ifconfig eth0 down&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ifconfig eth0 hw ether &amp;lt;your mac address&amp;gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For example:&lt;strong&gt; ifconfig eth0 hw ether 02:10:18:01:00:01&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ifconfig eth0 up&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;6. That should do it type &lt;strong&gt;Ifconfig eth0&lt;/strong&gt; to view the change to eth0 Interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-8601554978181439997?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/8601554978181439997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/mac-addressmac-spoofing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8601554978181439997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/8601554978181439997'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/mac-addressmac-spoofing.html' title='MAC address/Mac Spoofing'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-1670907726359704039</id><published>2009-05-17T16:50:00.001+05:30</published><updated>2009-05-17T16:44:44.761+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trojan Vundo.h'/><category scheme='http://www.blogger.com/atom/ns#' term='Malware Bytes'/><title type='text'>Malware Bytes</title><content type='html'>You can say that i am exaggerating here, but you were not the one trying to remove a malware with every possible tool out there.&lt;br /&gt;&lt;br /&gt;So the point is this malware &lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;em&gt;"Trojan.Vundo.H" &lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;is a serious threat , The thing to talk about is the tool to remove such malwares.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;MalwareBytes&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; is a &lt;em&gt;Light-Weight&lt;/em&gt; , Uber Fast and the best part is it has a way of finding and deleting the spyware on &lt;span style="color: rgb(255, 0, 0);"&gt;"reboot" &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;em&gt;"Trojan.Vundo.H" &lt;/em&gt;&lt;/span&gt;&lt;/strong&gt; is a menace as it  messes with your display device driver csrss.exe (the display manager in xp). It also has a tendency to crop up back on reboot after deletion . It leads to a blue screen of death and after that you have no option but to reboot the pc .&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;MalwareBytes&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; is a freeware and can be  &lt;a href="http://www.download.com/Malwarebytes-Anti-Malware/3000-8022_4-10804572.html?part=dl-10804572&amp;amp;subj=dl&amp;amp;tag=button"&gt;downloaded here&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Conclusion:Go for it It's the next big thing in detection of malwares.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7351084055463323761-1670907726359704039?l=ramannanda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ramannanda.blogspot.com/feeds/1670907726359704039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ramannanda.blogspot.com/2009/04/malware-bytes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1670907726359704039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7351084055463323761/posts/default/1670907726359704039'/><link rel='alternate' type='text/html' href='http://ramannanda.blogspot.com/2009/04/malware-bytes.html' title='Malware Bytes'/><author><name>morph</name><uri>http://www.blogger.com/profile/03385350305653681268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_s4Oz51luJRA/SDPGcjyFCzI/AAAAAAAAABY/SqPpGwd0q1A/S220/anonymus017.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7351084055463323761.post-8791044231464385953</id><published>2009-05-17T16:50:00.000+05:30</published><updated>2009-05-17T16:44:07.132+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Counter Strike 1.6'/><title t
