<?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-9118736465601136234</id><updated>2012-02-22T18:53:43.275+03:00</updated><category term='Misc'/><category term='Upgrading'/><category term='Installing'/><category term='Using'/><title type='text'>Smiley Bits</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-3819628340843606108</id><published>2012-02-12T20:44:00.000+03:00</published><updated>2012-02-22T18:53:43.613+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Tools</title><content type='html'>Free and Open Source Tools.&lt;br /&gt; &lt;br /&gt;&lt;div&gt;&lt;table border="2" bordercolor="#3366cc" cellpadding="3" cellspacing="0" style="background-color: white;"&gt;&lt;tbody&gt;&lt;tr style="background-color: #3366cc; color: white; padding-bottom: 4px; padding-top: 5px;"&gt; &lt;th&gt;Function&lt;/th&gt; &lt;th&gt;Tools&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;VB.NET IDE&lt;/td&gt; &lt;td&gt;&lt;b&gt;Visual Basic Express Edition&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;SharpDevelop&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Reports for VB.NET applications&lt;/td&gt; &lt;td&gt;SQL Server Express with Advanced Services (to design report) + Report Viewer redistributable/control (to display report in .NET application)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Report designer and runtime for VB6 applications&lt;/td&gt; &lt;td&gt;Report Manager Designer and ActiveX (&lt;a href="http://reportman.sourceforge.net/"&gt;http://reportman.sourceforge.net/&lt;/a&gt;)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Project management&lt;/td&gt; &lt;td&gt;OpenProj&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Source code control&lt;/td&gt; &lt;td&gt;Subversion&lt;br&gt;&lt;br&gt;VisualSvn server – for creating and managing subversion repositories. &lt;br&gt;&lt;br&gt;Tortoisesvn – svn client. &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Dictionary [offline]&lt;/td&gt; &lt;td&gt;Wordweb&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Office automation&lt;/td&gt; &lt;td&gt;LibreOffice&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Setup authoring&lt;/td&gt; &lt;td&gt;&lt;b&gt;NSIS with HM NIS Edit for a GUI&lt;/b&gt;&lt;br&gt;&lt;br&gt;Advanced installer free edition&lt;br&gt;&lt;br&gt;Excelsior Installer&lt;br&gt;&lt;br&gt;WiX&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;.NET Obfuscator&lt;/td&gt; &lt;td&gt;Eazfuscator.NET&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;SQLite GUI&lt;/td&gt; &lt;td&gt;&lt;b&gt;SQLiteStudio&lt;/b&gt;&lt;br&gt;&lt;br&gt;Sqliteman&lt;br&gt;&lt;br&gt;SQLite2009 Pro Enterprise Manager&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;CD Writing&lt;/td&gt; &lt;td&gt;CDBurnerXP&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Download manager/accelerator&lt;/td&gt; &lt;td&gt;DownThemAll firefox add-on&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Firewall&lt;/td&gt; &lt;td&gt;Comodo Internet Security&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Spyware remover&lt;/td&gt; &lt;td&gt;Spybot search &amp; destroy&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Web server&lt;/td&gt; &lt;td&gt;Apache HTTP server&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Database&lt;/td&gt; &lt;td&gt;PostgreSQL&lt;br&gt;&lt;br&gt;SQL Server Express edition&lt;br&gt;&lt;br&gt;MySQL&lt;br&gt;&lt;br&gt;SQLite&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;MySQL GUI&lt;/td&gt; &lt;td&gt;HeidiSQL&lt;br&gt;&lt;br&gt;Toad for MySQL Freeware&lt;br&gt;&lt;br&gt;MySQL Workbench&lt;br&gt;&lt;br&gt;Adminer&lt;br&gt;&lt;br&gt;PhpMyAdmin&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Disk space viewer&lt;/td&gt; &lt;td&gt;TreeSize Free&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Image resizing&lt;/td&gt; &lt;td&gt;Picture Resize Genius&lt;br&gt;&lt;br&gt;Wiseval Photophant&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Telnet client&lt;/td&gt; &lt;td&gt;PuTTY&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Music player&lt;/td&gt; &lt;td&gt;Winamp free edition&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&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/9118736465601136234-3819628340843606108?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/3819628340843606108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2012/02/tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/3819628340843606108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/3819628340843606108'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2012/02/tools.html' title='Tools'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-5473147410426409618</id><published>2012-02-12T20:12:00.000+03:00</published><updated>2012-02-12T20:12:19.396+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using JasperReports</title><content type='html'>JasperReports is a java report library that can be used to add reporting capability to an application.&lt;br /&gt;&lt;br /&gt;Using JasperReports in a Java EE application&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Prerequisistes&lt;/b&gt;&lt;br /&gt;JRE&lt;br /&gt;Servlet engine&lt;br /&gt;RDBMS + JDBC driver for a database&lt;br /&gt;Apache Ant&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;JRE 1.6.0_21&lt;br /&gt;Apache Tomcat 6.0.29&lt;br /&gt;MySQL 5.1.50&lt;br /&gt;MySQL connector/J 5.1.13&lt;br /&gt;JasperReports 3.7.0&lt;br /&gt;Apache Ant 1.8.1&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the jasperreports project zip file from sourceforge, http://sourceforge.net/projects/jasperreports/&lt;/li&gt;&lt;li&gt;Extract the zip file to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;Open a command prompt &lt;/li&gt;&lt;li&gt;Navigate to c:\temp\jasperreports-3.7.0-project\jasperreports-3.7.0\demo\samples\webapp&lt;/li&gt;&lt;li&gt;Type the command ant javac [the path to the ant bin folder needs to be in the system path]&lt;/li&gt;&lt;li&gt;Create a folder in the tomcat webapps directory e.g. jasper&lt;/li&gt;&lt;li&gt;Copy the contents of the webapp directory to the webapps\jasper directory. This sample web application can serve as a guide on how to integrate jasperreports into your own web application.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using in a custom application&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Copy the following files from the webapps\jasper\web-inf\lib\ directory to your application's web-inf\lib directory. commons-beanutils-1.8.0.jar, commons-collections-2.1.1.jar, commons-digester-1.7.jar, commons-logging-1.0.4.jar, jasperreports-3.7.0.jar, iText-2.1.0.jar (for pdf export), poi-3.2-FINAL-20081019.jar (for xls export). For generating charts you'll need jfreechart and jcommon.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Generating a report&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;import net.sf.jasperreports.engine.*; //for main jasper objects&lt;br /&gt;import net.sf.jasperreports.engine.export.*; //for exporters&lt;br /&gt;&lt;br /&gt;JasperReport jasperReport;&lt;br /&gt;JasperPrint jasperPrint;&lt;br /&gt;JRResultSetDataSource ds;&lt;br /&gt;&lt;br /&gt;ServletContext context = this.getServletConfig().getServletContext();  &lt;br /&gt;String fileBase="report1";&lt;br /&gt;&lt;br /&gt;String fileName=context.getRealPath("/reports/"+fileBase+".jasper");&lt;br /&gt;&lt;br /&gt;File reportFile = new File(context.getRealPath("/reports/"+fileBase+".jasper"));&lt;br /&gt;if (!reportFile.exists()) {&lt;br /&gt;//compile file&lt;br /&gt;fileName=JasperCompileManager.compileReportToFile(context.getRealPath("/reports/"+fileBase+".jrxml"));   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//rs is a resultset generated by your application. You can also pass a connection instead of a resultset if you want to use the query as it is in the repoort template    &lt;br /&gt;ds = new JRResultSetDataSource(rs);&lt;br /&gt;&lt;br /&gt;HashMap parameters=new HashMap(); //use a map to pass report parameters  &lt;br /&gt;jasperPrint = JasperFillManager.fillReport(fileName, parameters,ds);&lt;br /&gt;&lt;br /&gt;//export to pdf   &lt;br /&gt;JasperExportManager.exportReportToPdfFile(jasperPrint,fullFileName);&lt;br /&gt;&lt;br /&gt;//export to html&lt;br /&gt;JRXhtmlExporter exporter = new JRXhtmlExporter();&lt;br /&gt;exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);&lt;br /&gt;exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, fullFileName);&lt;br /&gt;exporter.exportReport();&lt;br /&gt;&lt;br /&gt;//export to xls&lt;br /&gt;JRXlsExporter exporter = new JRXlsExporter();    &lt;br /&gt;exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);&lt;br /&gt;exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, fullFileName);&lt;br /&gt;exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);&lt;br /&gt;exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);&lt;br /&gt;exporter.exportReport();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Passing parameters&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If passing parameters, the parameter value data type in the parameters map must match the data type of the parameter as declared in the report template.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Example template query using a single value parameter&lt;br /&gt;&lt;pre class="brush:sql"&gt;select * from customers where customer_id = $P{customer_id_param}&lt;br /&gt;&lt;/pre&gt;Example template query using a multi value parameter&lt;br /&gt;&lt;pre class="brush:sql"&gt;select * from products where $X{IN, category, categories_param}&lt;br /&gt;&lt;br /&gt;select * from products where $X{NOTIN, category, categories_param}&lt;br /&gt;&lt;/pre&gt;For multi value parameters, define the parameter class in the jrxml file as &lt;b&gt;java.util.List&lt;/b&gt;. Pass values using an array list e.g&lt;br /&gt;&lt;pre class="brush:java"&gt;List categories = new ArrayList();&lt;br /&gt;categories.add("Laptop");&lt;br /&gt;categories.add("PC");&lt;br /&gt;categories.add("Printer");&lt;br /&gt;parameters.put("categories_param", categories);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Using virtualizers&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A virtualizer can be used to enable large reports to be generated successfully, without resulting in out of memory errors. Using a virtualizer doesn't guarantee filling of arbitrarily large reports. Heap memory is still needed but memory requirements are reduced.&lt;/li&gt;&lt;li&gt;Also, once a report is filled, whether it can be exported successfully depends on the export format and library. e.g. Filling may be successful, generating a jasper print object but exporting to excel may fail because poi puts all the data in memory before generating the final file. Adding available heap memory may help to have a successful export.&lt;/li&gt;&lt;li&gt;If a report contains images, this may also be a cause of out of memory errors. In such a case, the virtualizer doesn't help until you set the image's properties "&lt;b&gt;isUsingCache&lt;/b&gt;" to false and "&lt;b&gt;isLazy&lt;/b&gt;" to true in the report template. &lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:java"&gt;import net.sf.jasperreports.engine.fill.*; //for virtualizers&lt;br /&gt;import net.sf.jasperreports.engine.util.*; //for jrswapfile&lt;br /&gt;&lt;br /&gt;//use virtualizer if required&lt;br /&gt;JRAbstractLRUVirtualizer virtualizer=null;&lt;br /&gt;&lt;br /&gt;if(!props.getProperty(VIRTUALIZER).equals("none")){&lt;br /&gt;if(props.getProperty(VIRTUALIZER).equals("file")){&lt;br /&gt;int maxSize=Integer.parseInt(props.getProperty(FILE_MAX_SIZE));&lt;br /&gt;virtualizer=new JRFileVirtualizer(maxSize,System.getProperty("java.io.tmpdir"));&lt;br /&gt;params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);&lt;br /&gt;} else if(props.getProperty(VIRTUALIZER).equals("gzip")){&lt;br /&gt;int maxSize=Integer.parseInt(props.getProperty(GZIP_MAX_SIZE));&lt;br /&gt;virtualizer=new JRGzipVirtualizer(maxSize);&lt;br /&gt;params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);&lt;br /&gt;} else {&lt;br /&gt;//use swap virtualizer by default&lt;br /&gt;int maxSize=Integer.parseInt(props.getProperty(SWAP_MAX_SIZE));&lt;br /&gt;int blockSize=Integer.parseInt(props.getProperty(SWAP_BLOCK_SIZE));&lt;br /&gt;int minGrowCount=Integer.parseInt(props.getProperty(SWAP_MIN_GROW_COUNT));&lt;br /&gt;&lt;br /&gt;JRSwapFile swapFile=new JRSwapFile(System.getProperty("java.io.tmpdir"),blockSize,minGrowCount);&lt;br /&gt;virtualizer=new JRSwapFileVirtualizer(maxSize,swapFile);&lt;br /&gt;params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//fill report with data&lt;br /&gt;JasperPrint jasperPrint;&lt;br /&gt;if(rs==null){&lt;br /&gt;//use template query&lt;br /&gt;connQuery = ArtDBCP.getConnection(datasourceId);      &lt;br /&gt;jasperPrint = JasperFillManager.fillReport(jasperFileName, params,connQuery);&lt;br /&gt;} else {&lt;br /&gt;//use recordset based on art query &lt;br /&gt;JRResultSetDataSource ds;&lt;br /&gt;ds = new JRResultSetDataSource(rs);&lt;br /&gt;jasperPrint = JasperFillManager.fillReport(jasperFileName, params,ds);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//set virtualizer read only to optimize performance. must be set after print object has been generated&lt;br /&gt;if(virtualizer!=null){&lt;br /&gt;virtualizer.setReadOnly(true);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//export report&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;//clean up&lt;br /&gt;if(virtualizer!=null){&lt;br /&gt;virtualizer.cleanup();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Notes&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If the resultset is null, by default, the generated report will consist of a completely blank page. To display other report sections and only have the data section blank, if using iReport, change the report properties "&lt;b&gt;when no data&lt;/b&gt;" option to "&lt;b&gt;all sections, no detail&lt;/b&gt;".&lt;/li&gt;&lt;li&gt;If the report contains images, the image files should be located in the same directory as the jrxml file&lt;/li&gt;&lt;li&gt;If a parameter is used in a query and is not provided, it will be ignored, as if the condition didn't exist&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/9118736465601136234-5473147410426409618?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/5473147410426409618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2012/02/using-jasperreports.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5473147410426409618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5473147410426409618'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2012/02/using-jasperreports.html' title='Using JasperReports'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-9063817983387116313</id><published>2012-02-12T19:52:00.001+03:00</published><updated>2012-02-13T19:24:28.278+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using Mondrian</title><content type='html'>Using mondrian with Jpivot in a Java EE application&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Required files&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deploy the mondrian war&lt;/li&gt;&lt;li&gt;Copy the folders webapps\mondrian\jpivot and webapps\mondrian\wcf to the root of your application e.g. webapps\myapp&lt;/li&gt;&lt;li&gt;Copy the folders webapps\mondrian\web-inf\jpivot and webapps\mondrian\web-inf\wcf to the web-inf folder of your application e.g. webapps\myapp\web-inf&lt;/li&gt;&lt;li&gt;Copy the libraries in the mondrian\web-inf\lib folder to your applications web-inf\lib folder&lt;/li&gt;&lt;li&gt;Copy the file mondrian\web-inf\mondrian.properties to the myapp\web-inf\classes folder&lt;/li&gt;&lt;li&gt;Edit this mondrian.properties file to have contents like the following&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;# Allow the use of aggregates&lt;br /&gt;mondrian.rolap.aggregates.Use=true&lt;br /&gt;mondrian.rolap.aggregates.Read=true&lt;br /&gt;mondrian.native.topcount.enable=true&lt;br /&gt;mondrian.native.filter.enable=true&lt;br /&gt;&lt;br /&gt;# result set limit&lt;br /&gt;mondrian.result.limit=50000&lt;br /&gt;&lt;br /&gt;# format sql if logging is configured to output sql or mdx&lt;br /&gt;mondrian.rolap.generate.formatted.sql=true&lt;br /&gt;&lt;br /&gt;# don't automatically load any drivers&lt;br /&gt;mondrian.jdbcDrivers=&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a file log4j.xml in the myapps\web-inf\classes folder with contents like the following&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&amp;gt;&lt;br /&gt;&lt;log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;appender class="org.apache.log4j.ConsoleAppender" name="default"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;param name="target" value="System.out" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;layout class="org.apache.log4j.PatternLayout"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;param name="ConversionPattern" value="[%p] %d{dd MMM yyyy HH:mm:ss.SSS} %t [%c]%n%m%n%n" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/layout&gt;&lt;br /&gt;&amp;nbsp; &lt;/appender&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;logger name="mondrian.sql"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;level value="warn"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;/level&gt;&lt;/logger&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;logger name="mondrian.mdx"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;level value="warn"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;/level&gt;&lt;/logger&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;logger name="mondrian.rolap.agg"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;level value="warn"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;/level&gt;&lt;/logger&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;logger name="mondrian.gui"&gt;&lt;br /&gt;&lt;level value="warn"&gt;&lt;br /&gt;&lt;/level&gt;&lt;/logger&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;logger name="com.tonbeller"&gt;&lt;br /&gt;&lt;level value="warn"&gt;&lt;br /&gt;&lt;/level&gt;&lt;/logger&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;root&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;level value="warn"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;appender-ref ref="default"&gt;&lt;br /&gt;&amp;nbsp; &lt;/appender-ref&gt;&lt;/level&gt;&lt;/root&gt;&lt;br /&gt;&amp;nbsp; &lt;/log4j:configuration&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a file named &lt;b&gt;userconfig.xml&lt;/b&gt; in myapps\web-inf\jpivot\print with the following contents&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;!-- empty configuration file to avoid error being logged because file is missing --&amp;gt;&lt;br /&gt;&lt;configuration&gt;&lt;br /&gt;&lt;/configuration&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;web.xml modifications&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Copy and adapt contents of mondrian\web-inf\web.xml to your application's web.xml file&lt;/li&gt;&lt;li&gt;Files that will launch pivot tables should be contained in the JpivotController filter mapping e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;nbsp;&lt;filter-mapping&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;filter-name&gt;JPivotController&lt;/filter-name&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;url-pattern&gt;/user/showAnalysis.jsp&lt;/url-pattern&gt;&lt;br /&gt;&amp;nbsp; &lt;/filter-mapping&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;You can change the location of the error and busy pages e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;nbsp;&lt;filter&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;filter-name&gt;JPivotController&lt;/filter-name&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;filter-class&gt;com.tonbeller.wcf.controller.RequestFilter&lt;/filter-class&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;init-param&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;param-name&gt;errorJSP&lt;/param-name&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;param-value&gt;/user/jpivotError.jsp&lt;/param-value&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;description&gt;URI of error page&lt;/description&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/init-param&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;init-param&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;param-name&gt;busyJSP&lt;/param-name&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;param-value&gt;/user/jpivotBusy.jsp&lt;/param-value&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;description&gt;This page is displayed if a the user clicks&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on a query before the previous query has finished&lt;/description&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/init-param&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/filter&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;File displaying pivot table&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use the mondrian\testpage.jsp file as a template for the file that displays pivot tables. Remove the &amp;lt;wcf:include add="" and="" for="" li="" logic="" mdx="" own="" query&amp;lt;="" section="" the="" your=""&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;if(request.getParameter("action")==null &amp;amp;&amp;amp; request.getParameter("null")==null){&lt;br /&gt;...&lt;br /&gt;&amp;nbsp;%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;jp:mondrianquery &lt;br="" id="query01" jdbcdriver="&amp;lt;%=databaseDriver%&amp;gt;"&gt;jdbcUrl="&amp;lt;%=databaseUrl%&amp;gt;" jdbcUser="&amp;lt;%=databaseUser%&amp;gt;" jdbcPassword="&amp;lt;%=databasePassword%&amp;gt;" catalogUri="&amp;lt;%=schemaFile%&amp;gt;"&amp;gt;&lt;br /&gt;&amp;lt;%=query%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;% } %&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;/br=""&gt;&lt;br /&gt;&lt;form action="showAnalysis.jsp" method="post"&gt;&lt;br /&gt;&lt;input name="action" type="hidden" value="drill" /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you want to have a title for the pivot table, store it as a session attribute and retrieve it when you want to display it.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Alternative for getting Required files&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the mondrian zip package from sourceforge. http://sourceforge.net/projects/mondrian/files/&lt;/li&gt;&lt;li&gt;Extract the mondrian zip file to a temporary folder e.g. C:\temp&lt;/li&gt;&lt;li&gt;Download the jpivot zip package from the jpivot website, jpivot.sourceforge.net&lt;/li&gt;&lt;li&gt;Extract the jpivot zip file to a temporary folder e.g. C:\temp&lt;/li&gt;&lt;li&gt;Copy all the jar files from the mondrian lib directory e.g. C:\temp\mondrian-3.2.0.13661\lib to the application's web-inf\lib directory&lt;/li&gt;&lt;li&gt;Rename the jpivot war file c:\temp\jpivot-1.8.0\jpivot.war to jpivot.zip and unzip the file&lt;/li&gt;&lt;li&gt;Copy the wcf folder to the application's root e.g. webapps\myapp&lt;/li&gt;&lt;li&gt;Copy the jpivot folder to the application's root&lt;/li&gt;&lt;li&gt;Copy the web-inf\wcf folder to the application's web-inf folder e.g. webapps\myapp\web-inf&lt;/li&gt;&lt;li&gt;Copy the web-inf\jpivot folder to the application's web-inf folder&lt;/li&gt;&lt;li&gt;Copy the files in the web-inf\lib folder to the application's web-inf\lib folder&lt;/li&gt;&lt;li&gt;Add the contents of the jpivot web.xml file to your application's web.xml file&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Printing&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To ensure is done correctly regardless of the path of the file displaying the pivot table change the wcf toolbar tags that do the printing to&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;&amp;nbsp;&lt;wcf:imgbutton href="$%7BpageContext.request.contextPath%7D/Print?cube=01&amp;amp;type=1" id="printpdf" img="print" tooltip="toolb.print"&gt;&lt;br /&gt;&amp;nbsp; &lt;wcf:imgbutton href="$%7BpageContext.request.contextPath%7D/Print?cube=01&amp;amp;type=0" id="printxls" img="excel" tooltip="toolb.excel"&gt;&lt;br /&gt;&lt;/wcf:imgbutton&gt;&lt;/wcf:imgbutton&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Modifying pdf output header and footer&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Printing to pdf generates a pdf file with default header and footer text. To modify this, edit the file myapp\web-inf\jpivot\table\fo_mdxtable.xsl&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Maintaining scroll position&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When you expand a dimension, the page is refreshed and the scroll position goes back to the top of the page. You then have to manually scroll to the element you just expanded. To maintain scroll position have the page that displays the pivot table to have code like the following&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;&lt;script src="%3C%=request.getContextPath%28%29%%3E/wcf/scroller.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;wcf:scroller&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;jp:table id="table01" query="#{query01}"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;/wcf:scroller&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Get the current mdx&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you want to get the mdx query for the currently displayed pivot table view, add code to the file that displays the pivot table similar to the following&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;&amp;lt;%@ page import="com.tonbeller.jpivot.table.TableComponent,com.tonbeller.jpivot.olap.model.*,com.tonbeller.jpivot.tags.OlapModelProxy" %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="com.tonbeller.jpivot.olap.query.MdxOlapModel" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;//get the current mdx&lt;br /&gt;TableComponent table = (TableComponent) session.getAttribute("table01"); &lt;br /&gt;//assuming table has id of table01 e.g. &amp;lt;jp:table &lt;br="" id="table01"&gt;String mdx="";&lt;br /&gt;if( table != null ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OlapModel olapModel = table.getOlapModel();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( olapModel != null ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( olapModel instanceof OlapModelProxy ) {&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; OlapModelProxy proxy = (OlapModelProxy) olapModel;&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; olapModel = proxy.getDelegate();&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;&amp;nbsp; if( olapModel instanceof OlapModelDecorator) {&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; OlapModelDecorator decorator = (OlapModelDecorator) olapModel;&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; olapModel = decorator.getDelegate();&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;&amp;nbsp; if( olapModel instanceof MdxOlapModel) {&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; MdxOlapModel model = (MdxOlapModel) olapModel;&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; mdx = model.getCurrentMdx();&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; olapModel = null;&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; }&lt;br /&gt;}&lt;br /&gt;%&amp;gt;&lt;br /&gt;&lt;/br=""&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Clear the mondrian cache&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mondrian uses a cache held in memory to make analysis faster. Every unique mondrian connection [connection string] has a cache. If the underlying database changes and you need to clear the cache, you can use a jsp page like the following&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;&amp;lt;%@ page contentType="text/html; charset=UTF-8" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;//clear all mondrian caches&lt;br /&gt;java.util.Iterator&amp;lt;mondrian.rolap.rolapschema&amp;gt; schemaIterator =&amp;nbsp; mondrian.rolap.RolapSchema.getRolapSchemas();&lt;br /&gt;while(schemaIterator.hasNext()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mondrian.rolap.RolapSchema schema = schemaIterator.next();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mondrian.olap.CacheControl cacheControl = schema.getInternalConnection().getCacheControl(null);&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; cacheControl.flushSchemaCache();&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&amp;nbsp; &lt;br /&gt;%&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Errors and possible causes&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;404 - Invalid url&lt;/li&gt;&lt;li&gt;No metadata for catalog - Misspelt catalog name. Names are case sensitive&lt;/li&gt;&lt;li&gt;XMLA connection datasource not found - Misspelt datasource name. Names are case sensitive&lt;/li&gt;&lt;li&gt;XMLA Discover unparse results error - Definition file in catalog section of datasources.xml does not exist. If change made to datasources.xml, app has to be redeployed for the changes to take effect &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/9118736465601136234-9063817983387116313?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/9063817983387116313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2012/02/using-mondrian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/9063817983387116313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/9063817983387116313'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2012/02/using-mondrian.html' title='Using Mondrian'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-5762988659417482555</id><published>2012-02-12T18:55:00.000+03:00</published><updated>2012-02-12T18:55:55.364+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Upgrading'/><title type='text'>Upgrading Apache HTTP server</title><content type='html'>&lt;ul&gt;&lt;li&gt;Save apache folder [just in case]&lt;/li&gt;&lt;li&gt;Uninstall existing installation from add/remove programs&lt;/li&gt;&lt;li&gt;Run new installer&lt;/li&gt;&lt;li&gt;Existing sites and configuration e.g. httpd.conf will not be deleted/overwritten&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/9118736465601136234-5762988659417482555?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/5762988659417482555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2012/02/upgrading-apache-http-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5762988659417482555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5762988659417482555'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2012/02/upgrading-apache-http-server.html' title='Upgrading Apache HTTP server'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-6969786758071604538</id><published>2012-02-12T18:19:00.000+03:00</published><updated>2012-02-12T18:19:23.124+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing OpenKM 5.1.7</title><content type='html'>OpenKM is an open source Document Management System&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;JDK&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;OpenKM 5.1.7&lt;br /&gt;Oracle JDK 1.6.0_21&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip package from the openkm website, openkm.com&lt;/li&gt;&lt;li&gt;Extract the zip file to a directory of your choice e.g. c:\openkm&lt;/li&gt;&lt;li&gt;Create a file in the  C:\openkm\jboss-4.2.3.GA\bin directory named start.bat with the following contents&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;run.bat -b 0.0.0.0&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a file in the  C:\openkm\jboss-4.2.3.GA\bin directory named stop.bat with the following contents&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;shutdown.bat -S&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Run the start.bat file in the C:\openkm\jboss-4.2.3.GA\bin directory&lt;/li&gt;&lt;li&gt;Wait for jboss to finish starting (until "server started in ..." is displayed)&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost:8080/OpenKM&lt;/li&gt;&lt;li&gt;Use the username/password combination of okmAdmin/admin to log in. The username is case sensitive.&lt;/li&gt;&lt;li&gt;Use the File | Exit menu to logout&lt;/li&gt;&lt;li&gt;Edit the  C:\openkm\jboss-4.2.3.GA\OpenKM.cfg file, changing the hibernate.hbm2ddl line from create to none so that it looks as follows&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;hibernate.hbm2ddl=none&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Stop openkm by running the stop.bat file in the C:\openkm\jboss-4.2.3.GA\bin directory&lt;/li&gt;&lt;li&gt;Restart openkm by running the start.bat file in the C:\openkm\jboss-4.2.3.GA\bin directory&lt;/li&gt;&lt;li&gt;Installation is complete&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Increasing permgen space&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edit the run.bat file in the C:\openkm\jboss-4.2.3.GA\bin directory. Edit the line&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m&lt;br /&gt;&lt;/pre&gt;So that it looks something like this&lt;br /&gt;&lt;pre class="brush:plain"&gt;set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -XX:MaxPermSize=256m&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/9118736465601136234-6969786758071604538?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/6969786758071604538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2012/02/installing-openkm-517.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6969786758071604538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6969786758071604538'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2012/02/installing-openkm-517.html' title='Installing OpenKM 5.1.7'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-8639426217258034900</id><published>2010-07-15T20:11:00.001+03:00</published><updated>2010-07-15T20:19:13.211+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using html2ps</title><content type='html'>html2ps is a perl script available from &lt;a href="http://user.it.uu.se/%7Ejan/html2ps.html"&gt;http://user.it.uu.se/~jan/html2ps.html&lt;/a&gt; that can be used to convert html to postscript [and then you can convert the postscript to pdf].&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Perl&lt;br /&gt;Ghostscript&lt;br /&gt;GSView [for viewing postscript files]&lt;br /&gt;ImageMagick&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;html2ps – 1.0 beta7&lt;br /&gt;ActivePerl – 5.8.8.820&lt;br /&gt;Ghostscript – 8.71&lt;br /&gt;GSView – 4.9&lt;br /&gt;ImageMagick - ImageMagick-6.6.2-3-Q16-windows-dll&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip package from &lt;a href="http://user.it.uu.se/%7Ejan/html2ps.html"&gt;http://user.it.uu.se/~jan/html2ps.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the zip package to c:\&lt;/li&gt;&lt;li&gt;Rename the extracted folder to c:\html2ps&lt;/li&gt;&lt;li&gt;Download ghostscript from &lt;a href="http://pages.cs.wisc.edu/%7Eghost/"&gt;http://pages.cs.wisc.edu/~ghost/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Run the ghostscript installation file&lt;/li&gt;&lt;li&gt;Add ghostscript to the system path. Add both the bin and lib directories&lt;/li&gt;&lt;li&gt;Download the windows binary release exe of InstallMagick from &lt;a href="http://www.imagemagick.org/script/index.php"&gt;http://www.imagemagick.org/script/index.php&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Install InstallMagick and specify that the imagemagick installation path should be included in the system path&lt;/li&gt;&lt;li&gt;Ensure the perl bin directory is in the system path&lt;/li&gt;&lt;li&gt;Open a command prompt window&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;cd c:\html2ps&lt;br /&gt;perl install&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Accept the installation script defaults. When asked to enter the name of this directory, type c:\html2ps&lt;/li&gt;&lt;li&gt;Once the install script is finished, edit the file c:\html2ps\html2ps. Replace the line $tmpname=$posix?POSIX::tmpnam():"h2p_$$"; with&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:perl"&gt;$tmpname=$posix?POSIX::tmpnam():"h2p_$$";&lt;br /&gt;if($^O =~ m/win/i) {&lt;br /&gt;$tmpname="h2p_$$";}&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Ghostscript and ImageMagick aren't required for html2ps to work, but some configuration parameters and documents may need them, or other additonal libraries.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Converting a html file to postscript&lt;/b&gt;&lt;br /&gt;Example converting the html2ps user guide&lt;br /&gt;&lt;pre class="brush:plain"&gt;cd c:\html2ps&lt;br /&gt;perl html2ps -d -D -f sample -o test.ps html2ps.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Converting the postscript file to pdf&lt;/b&gt;&lt;br /&gt;Use ps2pdf that comes with the ghostscript installation&lt;br /&gt;&lt;pre class="brush:plain"&gt;ps2pdf test.ps test.pdf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Locating the table of contents at the beginning of the document&lt;/b&gt;&lt;br /&gt;You can modify many aspects of the postscript file generated by html2ps. This would involve creating and modifying a configuration file. The file "sample" is one such configuration file. You can make a copy of it and add your own modifications to customize the file generated. Review the html2ps user guide html document for configuration options. As an example, you can set the table of contents to be generated at the start of the document instead of the end. Modify the file sample, editing the toc line to the following&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;option {&lt;br /&gt;toc: hb;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Run html2ps and ps2pdf to confirm that the table of contents is now at the beginning of the document.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;perl html2ps -d -D -f sample -o test.ps html2ps.html&lt;br /&gt;ps2pdf test.ps test.pdf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Correcting display of euro signs in pdf bookmarks&lt;/b&gt;&lt;br /&gt;If generating a table of contents, after converting the postscript file to pdf the pdf bookmarks may be displayed with two euro signs at the beginning of the bookmark text. To correct this, edit the file html2ps. Replace the line $dh.="/h$nhd [($hind\\240\\240)($htxt)] D\n"; with&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:perl"&gt;$dh.="/h$nhd [($hind\\56\\40)($htxt)] D\n";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Replace the line $toc.="$hv NH le{$nref($hind\\240\\240)$hv C($htxt)$nref 1 TN()EA()BN}if\n"; with&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:perl"&gt;$toc.="$hv NH le{$nref($hind\\56\\40)$hv C($htxt)$nref 1 TN()EA()BN}if\n";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Processing a file with images&lt;/b&gt;&lt;br /&gt;If an html file contains links to images held locally and referenced with relative links e.g. src="images/sample.png", use the base option when calling html2ps providing the base url to be appended to all relative links for images.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;perl html2ps -d -D -b file:///c:/some/path/ -f sample -o example.ps c:\some\path\example.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changing the default look of hyperlinks&lt;/b&gt;&lt;br /&gt;By default, text for all links, both to internal document sections and to external web locations, are rendered in a final pdf surrounded by boxes. To have them rendered without the boxes, add a definition to the style sheet definitions in the configuration file used.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;A:link { color: blue }&lt;/pre&gt;The color must be something other than black. In addition, when running html2ps, you'll need to add the -U parameter.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;perl html2ps -d -D -U -f myconfig.txt -o example.ps example.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Left aligning H1 elements&lt;/b&gt;&lt;br /&gt;The example configuration file "sample" provided specifies that H1 elements are centred. If left aligning is required, remove the text-align: center portion of the H1 style rule.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Undesired blank pages&lt;/b&gt;&lt;br /&gt;By default, an extra (empty) page is printed, when necessary, to ensure that the title page, the table of contents, and the document itself will start on odd pages. This is typically desirable for double sided printing. If this is not desired, add the extrapage flag to the @html2ps block of the configuration file, setting it to 0.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;@html2ps {&lt;br /&gt;extrapage: 0;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Starting new pages&lt;/b&gt;&lt;br /&gt;You can have a page break inserted anywhere in the html text, e.g. before H1 elements. To do this, modify the source html and insert &amp;lt;!--NewPage--&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using CSS&lt;/b&gt;&lt;br /&gt;html2ps ignores css contained in the html document. You can define styles in the configuration file. Only a subset of css is supported by html2ps. This subset is outlined in the user guide, in the CSS2 blocks section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using custom colours&lt;/b&gt;&lt;br /&gt;By default html2ps only recognizes 16 colours. These are defined in the colour block of the html2ps file. To use additional colours, e.g. in css rules, edit your configuration file. In the @html2ps block, add a colour block with the custom colours you use in the style rules. e.g.&lt;br /&gt;&lt;pre class="brush:plain"&gt;Colour{&lt;br /&gt;brown: A52A2A;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The user guide that comes with html2ps has explanations for all possible options for modifying the look of the generated postscript, and possibly eventual pdf document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9118736465601136234-8639426217258034900?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/8639426217258034900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/07/using-html2ps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/8639426217258034900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/8639426217258034900'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/07/using-html2ps.html' title='Using html2ps'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-1738492966549329951</id><published>2010-05-11T13:20:00.005+03:00</published><updated>2010-06-12T15:04:53.605+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using Quartz</title><content type='html'>Quartz is an open source job scheduling library that can be used within a Java application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using quartz in a Java EE application&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisistes&lt;/b&gt;&lt;br /&gt;JRE&lt;br /&gt;Servlet engine&lt;br /&gt;RDBMS + JDBC driver for storing jobs in a database&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;JRE 1.6.0_20&lt;br /&gt;Apache Tomcat 6.0.20&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;MySQL connector/J 5.1.10&lt;br /&gt;Quartz 1.8.0&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the package from the quartz website, &lt;a href="http://www.quartz-scheduler.org/"&gt;http://www.quartz-scheduler.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unzip the package to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;Add the quartz tables to your application's database schema. The scripts with the quartz table schemas will be in c:\temp\quartz-1.8.0\docs\dbtables.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;C:\&amp;gt; mysql -h localhost --database=mydb --user=dbuser --password=dbpassword&lt;br /&gt;mysql&amp;gt; \.&amp;nbsp; c:\temp\quartz-1.8.0\docs\dbtables\tables_mysql_innodb.sql&lt;br /&gt;mysql&amp;gt; quit&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create indexes on the quartz tables just created by running the following additional script&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:sql"&gt;create index idx_qrtz_t_next_fire_time on qrtz_triggers(NEXT_FIRE_TIME);&lt;br /&gt;create index idx_qrtz_t_state on qrtz_triggers(TRIGGER_STATE);&lt;br /&gt;create index idx_qrtz_t_nf_st on qrtz_triggers(TRIGGER_STATE,NEXT_FIRE_TIME);&lt;br /&gt;create index idx_qrtz_ft_trig_name on qrtz_fired_triggers(TRIGGER_NAME);&lt;br /&gt;create index idx_qrtz_ft_trig_group on qrtz_fired_triggers(TRIGGER_GROUP);&lt;br /&gt;create index idx_qrtz_ft_trig_n_g on qrtz_fired_triggers(TRIGGER_NAME,TRIGGER_GROUP);&lt;br /&gt;create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(INSTANCE_NAME);&lt;br /&gt;create index idx_qrtz_ft_job_name on qrtz_fired_triggers(JOB_NAME);&lt;br /&gt;create index idx_qrtz_ft_job_group on qrtz_fired_triggers(JOB_GROUP);&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Copy the file c:\temp\quartz-1.8.0\quartz-all-1.8.0.jar to your application's web-inf\lib folder e.g. tomcat\webapps\myapp\web-inf\lib&lt;/li&gt;&lt;li&gt;Copy all the jar files in c:\temp\quartz-1.8.0\lib to tomcat\webapps\myapp\web-inf\lib&lt;/li&gt;&lt;li&gt;Create a file named quartz.properties in myapp\web-\classes with the following details&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;# quartz configuration&lt;br /&gt;&lt;br /&gt;# jobstore&lt;br /&gt;org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX&lt;br /&gt;&lt;br /&gt;org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate&lt;br /&gt;&lt;br /&gt;# datasource&lt;br /&gt;org.quartz.jobStore.dataSource = anyString&lt;br /&gt;&lt;br /&gt;org.quartz.dataSource.anyString.driver = com.mysql.jdbc.Driver&lt;br /&gt;org.quartz.dataSource.anyString.URL = jdbc:mysql://localhost/mydb&lt;br /&gt;org.quartz.dataSource.anyString.user = dbuser&lt;br /&gt;org.quartz.dataSource.anyString.password = dbpassword&lt;br /&gt;org.quartz.dataSource.anyString.validationQuery=select 1&lt;br /&gt;&lt;br /&gt;# thread pool&lt;br /&gt;org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool&lt;br /&gt;org.quartz.threadPool.threadCount = 5&lt;br /&gt;&lt;br /&gt;# disable quartz version update check&lt;br /&gt;org.quartz.scheduler.skipUpdateCheck=true&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a file named log4j.xml in myapp\web-\classes with the following details&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;appender name="default" class="org.apache.log4j.ConsoleAppender"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name="target" value="System.out"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout class="org.apache.log4j.PatternLayout"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name="ConversionPattern" value="[%p] %d{dd MMM yyyy HH:mm:ss.SSS} %t [%c]%n%m%n%n"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/layout&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/appender&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;lt;logger name="org.quartz"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;level value="info" /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;lt;/logger&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;root&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;level value="warn" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appender-ref ref="default" /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/root&amp;gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;lt;/log4j:configuration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a servlet class to be running the scheduler&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:java"&gt;package my.app;&lt;br /&gt;&lt;br /&gt;import javax.servlet.*;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;import org.quartz.impl.StdSchedulerFactory;&lt;br /&gt;import org.quartz.utils.*;&lt;br /&gt;&lt;br /&gt;import org.quartz.*;&lt;br /&gt;&lt;br /&gt;public class TestScheduler extends HttpServlet&lt;br /&gt;{&lt;br /&gt;Scheduler myscheduler;&lt;br /&gt;public void init(ServletConfig config) throws ServletException&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;//start scheduler and run a test job&lt;br /&gt;// Initiate a Schedule Factory&lt;br /&gt;SchedulerFactory schedulerFactory = new StdSchedulerFactory();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Retrieve a scheduler from schedule factory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myscheduler = schedulerFactory.getScheduler();&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;&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; // Initiate JobDetail with job name, job group, and executable job class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JobDetail job1 = new JobDetail("myjobDetail", "myjobDetailGroup", MyJob.class);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initiate SimpleTrigger with its name and group name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleTrigger simpleTrigger = new SimpleTrigger("mysimpleTrigger", "mytriggerGroup");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;//example setting int parameter for the job&lt;br /&gt;job1.getJobDataMap().put("int-parameter-name",5);&lt;br /&gt;&lt;br /&gt;//schedule the job and start the scheduler&lt;br /&gt;myscheduler.scheduleJob(job1, simpleTrigger);&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;&amp;nbsp; // start the scheduler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myscheduler.start();&lt;br /&gt;}&lt;br /&gt;catch(Exception e)&lt;br /&gt;{&lt;br /&gt;System.err.println(e);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void destroy()&lt;br /&gt;{&lt;br /&gt;//shut down the scheduler&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;myscheduler.shutdown(true);&lt;br /&gt;}&lt;br /&gt;catch(Exception e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; System.err.println(e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Include the scheduler class in the application's web.xml file so that it runs on startup&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;nbsp;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;servlet-name&amp;gt;TestScheduler&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;servlet-class&amp;gt;my.app.TestScheduler&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;!-- Load this servlet at server startup time. Number not special. Just indicates the sequence of loading servlets --&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;load-on-startup&amp;gt;3&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/servlet&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a class that will be doing the work. The job class. This class needs to implement the org.quartz.job interface&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:java"&gt;package my.app;&lt;br /&gt;&lt;br /&gt;import org.quartz.*;&lt;br /&gt;&lt;br /&gt;public class MyJob implements Job&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//no-argument public constructor&lt;br /&gt;public MyJob()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//execute method of job interface that does the work&lt;br /&gt;public void execute (JobExecutionContext context) throws JobExecutionException&lt;br /&gt;{&lt;br /&gt;//do anything here.&lt;br /&gt;&lt;br /&gt;//you can take parameters passed by the scheduler and use them e.g&lt;br /&gt;JobDataMap dataMap=context.getMergedJobDataMap();&lt;br /&gt;int myIntVariable;&lt;br /&gt;myIntVariable=dataMap.getInt("int-parameter-name");&lt;br /&gt;&lt;br /&gt;if (myIntVariable==1)&lt;br /&gt;{ &lt;br /&gt;//do something&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;//do something else&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Instead of creating your own class to start the scheduler, you can use one provided by quartz. Modify the web.xml to have the following&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; QuartzInitializer&lt;br /&gt;&amp;nbsp;&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;display-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Quartz Initializer Servlet&lt;br /&gt;&amp;nbsp;&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; org.quartz.ee.servlet.QuartzInitializerServlet&lt;br /&gt;&amp;nbsp;&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;load-on-startup&amp;gt;3&amp;lt;/load-on-startup&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;A default scheduler instance will now be automatically created and started when the application starts, and automatically shut down when the application is stopped.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To access this scheduler within the application e.g. In a jsp page, you can retrieve the scheduler instance from the servlet context. You can have the following&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:javascript"&gt;&amp;lt;%@ page import="org.quartz.*,org.quartz.impl.*,org.quartz.utils.*,org.quartz.ee.servlet.QuartzInitializerServlet" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&amp;nbsp; StdSchedulerFactory factory = (StdSchedulerFactory) getServletConfig().getServletContext().getAttribute(QuartzInitializerServlet.QUARTZ_FACTORY_KEY);&lt;br /&gt;&amp;nbsp; Scheduler scheduler=factory.getScheduler();&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; // Initiate JobDetail with job name, job group, and executable job class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JobDetail job1 = new JobDetail("myjobDetail", "myjobDetailGroup", MyJob.class);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initiate SimpleTrigger that will fire immediately&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleTrigger simpleTrigger = new SimpleTrigger("mysimpleTrigger", "mytriggerGroup");&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; job1.getJobDataMap().put("int-parameter-name",5);&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scheduler.scheduleJob(job1, simpleTrigger);&lt;br /&gt;&amp;nbsp; %&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;You can create jobs and triggers according to the application's logic and user inteface components used and then schedule using the scheduler object.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Deleting jobs and triggers&lt;/b&gt;&lt;br /&gt;You can't add a trigger or job if another one with a similar name and group exists. Use methods of the scheduler object to do the deletion. An exception is not raised if the job or trigger doesn't exist.&lt;br /&gt;&lt;pre class="brush:java"&gt;scheduler.deleteJob("job name","job group");&lt;br /&gt;scheduler.unscheduleJob("trigger name","trigger group");&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Checking if a cron expression is valid&lt;/b&gt;&lt;br /&gt;If using a cron trigger, and the expression provided isn't valid, an exception will be raised when creating the trigger. To avoid this you can check whether the expression is valid before creating the trigger object. There's a static method in the CronExpression class for this.&lt;br /&gt;&lt;pre class="brush:java"&gt;if (CronExpression.isValidExpression(myCronString)){&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Determining next run job run time&lt;/b&gt;&lt;br /&gt;You can determine the next time a job will run using the trigger's getFireTimeAfter method&lt;br /&gt;&lt;pre class="brush:java"&gt;java.util.Date nextRunDate=myTrigger.getFireTimeAfter(new java.util.Date())&lt;/pre&gt;&lt;br /&gt;Or within the job implementation's execute method, &lt;br /&gt;&lt;pre class="brush:java"&gt;public void execute(JobExecutionContext context) throws JobExecutionException {&lt;br /&gt;&lt;br /&gt;java.util.Date nextRunDate=context.getTrigger().getFireTimeAfter(new java.util.Date());&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Setting job end date&lt;/b&gt;&lt;br /&gt;You can set the date on which a job should start or end using the associated trigger's setStartTime and setEndTime methods. By default, a trigger's start time is the time the object is instantiated with no end date. One can set the end date without specifying the start date and vice versa. The end date can't be before the start date, else an exception will be thrown.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Setting quarz properties in code&lt;/b&gt; &lt;br /&gt;Instead of having the quartz configuration properties residing in a properties file, you can create a scheduler instance with the properties defined from code. For instance if you don't want to have the database username/password in clear text in the properties file. You'll need to create a java.util.Properties object, populate it with all the relevant quartz properties and then pass the properties object to the StdSchedulerFactory constructor e.g.&lt;br /&gt;&lt;pre class="brush:java"&gt;import java.util.*;&lt;br /&gt;import org.quartz.*;&lt;br /&gt;import org.quartz.impl.*; &lt;br /&gt;&lt;br /&gt;props=new Properties();&lt;br /&gt;props.setProperty("org.quartz.threadPool.threadCount","10");&lt;br /&gt;//...set other properties&lt;br /&gt;&lt;br /&gt;//create scheduler instance &lt;br /&gt;SchedulerFactory schedulerFactory = new StdSchedulerFactory(props);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;org.quartz.Scheduler scheduler = schedulerFactory.getScheduler();&lt;br /&gt;scheduler.start(); &lt;br /&gt;&lt;br /&gt;//if doing this from a servlet that's loaded on startup, you can put the scheduler instance in the servlet context so that you can access it from anywhere within the application&lt;br /&gt;&lt;br /&gt;//save scheduler in the servlet context, to make it accessible throughout the application&lt;br /&gt;getServletConfig().getServletContext().setAttribute("myscheduler",scheduler);&lt;br /&gt;&lt;br /&gt;//to access the scheduler elsewhere in the application e.g. to schedule new jobs&lt;br /&gt;Scheduler scheduler=(Scheduler) getServletConfig().getServletContext().getAttribute("myscheduler");&lt;br /&gt;scheduler.scheduleJob(someJobObject, someTriggerObject);&lt;br /&gt;&lt;br /&gt;//make sure to call the scheduler's shutdown method in the servlet's destroy method&lt;br /&gt;&lt;/pre&gt;If creating the scheduler instance like this, you won't need the QuartzInitializerServlet entry in the web.xml file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9118736465601136234-1738492966549329951?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/1738492966549329951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/05/using-quartz.html#comment-form' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1738492966549329951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1738492966549329951'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/05/using-quartz.html' title='Using Quartz'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-5907347159007959494</id><published>2010-04-16T18:52:00.001+03:00</published><updated>2010-06-12T15:11:39.631+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Open Source Job Scheduler 1.3.6</title><content type='html'>Open Source Job Scheduler is an open source application for scheduling and monitoring tasks.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;JRE&lt;br /&gt;RDBMS + JDBC driver&lt;br /&gt;Web server with PHP configured&lt;br /&gt;PHP&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Apache 2.2.8&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;MySQL Connector/J 5.1.10&lt;br /&gt;PHP 5.2.8&lt;br /&gt;JRE 1.6.0_18&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip package from the job scheduler website, &lt;a href="http://jobscheduler.sourceforge.net/"&gt;http://jobscheduler.sourceforge.net/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Create a temporary directory e.g c:\temp\scheduler&lt;/li&gt;&lt;li&gt;Unzip the file to the temporary directory e.g. C:\temp\scheduler&lt;/li&gt;&lt;li&gt;Open a command prompt&lt;/li&gt;&lt;li&gt;Type mysql -h localhost -u root -p&lt;/li&gt;&lt;li&gt;Enter the root password&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mysql&amp;gt; create database scheduler;&lt;br /&gt;mysql&amp;gt; grant all on scheduler.* to scheduler@localhost identified by "scheduler";&lt;br /&gt;mysql&amp;gt; quit&lt;br /&gt;cd c:\temp\scheduler&lt;br /&gt;java -jar scheduler_win32.jar&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;The setup program will start&lt;/li&gt;&lt;li&gt;Change the installation path from program files e.g. to c:\scheduler&lt;/li&gt;&lt;li&gt;Be sure to include the managed jobs, database and web interface components when installing&lt;/li&gt;&lt;li&gt;Enter other required details and create a copy of the install script at the end.&lt;/li&gt;&lt;li&gt;Edit the file apache\conf\httpd.conf and add the following &lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;Alias /scheduler/logs "c:/scheduler/logs"&lt;br /&gt;Alias /scheduler "c:/scheduler/web"&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory "c:/scheduler/web"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options Indexes FollowSymLinks ExecCGI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from all&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory "c:/scheduler/logs"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options Indexes FollowSymLinks&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from all&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Restart apache&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost/scheduler/index.htm&lt;/li&gt;&lt;li&gt;In the login screen enter sos for the unit, admin for username and leave the password blank&lt;/li&gt;&lt;li&gt;Review the documents in the c:\scheduler\doc\en folder for information on how to create and manage jobs. The quickstart is a good place to start.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If you get an error after logging in e.g. Error while connecting to the scheduler... or a message like "It could not commit any Job Scheduler to this site for monitoring", try the following.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edit the file c:\scheduler\web\packages\scheduler\sos_scheduler_network.inc.php. Modify the normalize_host function to look as follows.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:php"&gt;&amp;nbsp; function normalize_host( $host ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gethostbyname($host);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ip = gethostbyname($host);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ereg( '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$', $ip ) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return gethostbyname(gethostbyaddr($ip));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp; }&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;In the same file also edit the line that sets the ip host to&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:php"&gt;$this-&amp;gt;network_schedulers[$ip_port]['host']= $this-&amp;gt;normalize_host(APP_SCHEDULER_HOST);&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the file c:\scheduler\web\scheduler_monitor.php. Edit the line that sets the ip to&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:php"&gt;$ip=gethostbyname($spooler_host);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scheduling Pentaho Data Integration (Kettle) jobs&lt;/b&gt;&lt;br /&gt;If scheduling kettle transformations or jobs, the scheduler will think the job has encountered an error because some text is written to stderr and a warning email is sent as a result. To avoid this, when configuring the job, after settting the command parameter, set the ignore stderr parameter to Yes. &lt;br /&gt;&lt;br /&gt;Another way to avoid the warning email would be to modify the batch file that runs the job or transformation to redirect stderr to the same file as stdout [using 2&amp;gt;&amp;amp;1]. e.g.&lt;br /&gt;&lt;pre class="brush:plain"&gt;cd C:\Kettle&lt;br /&gt;kitchen.bat /file:"C:\path\job.kjb" &amp;gt; "C:\path\job.log" 2&amp;gt;&amp;amp;1&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9118736465601136234-5907347159007959494?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/5907347159007959494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-open-source-job-scheduler.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5907347159007959494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5907347159007959494'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-open-source-job-scheduler.html' title='Installing Open Source Job Scheduler 1.3.6'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-652635209995212520</id><published>2010-04-16T18:29:00.005+03:00</published><updated>2011-02-27T07:23:41.560+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing OpenReports 3.2.0</title><content type='html'>OpenReports is an open source web reporting solution that supports a variety of open source reporting engines, including JasperReports, JXLS, and Eclipse BIRT. You create reports externally using these tools and then OpenReports can be used to run, schedule and deliver them. OpenReports also supports QueryReports and ChartReports which enable you to easily create reports and charts by only specifying the required SQL. No report design is required for these.&lt;br /&gt;&lt;br /&gt;OpenReports 3.2.0 supports JasperReports 3.5.1, Eclipse BIRT 2.3.2 and JXLS 0.9.8.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;JRE or JDK 1.6&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;JRE – 1.6.0.17&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip file from SourceForge, &lt;a href="http://sourceforge.net/projects/oreports/files/"&gt;http://sourceforge.net/projects/oreports/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unzip the file to C:\. Don't rename the extracted folder, but leave the extracted path as C:\openreports-tomcat.&lt;/li&gt;&lt;li&gt;Go to Start &amp;gt; Control Panel &amp;gt; System &amp;gt; Advanced System Settings. Select the Advanced tab and click on the Environment Variables button. Click on the new button and create a variable named JRE_HOME with the value set to the path of the JRE directory e.g. C:\Program Files\Java\jre6. If you have JDK installed, create a variable named JAVA_HOME instead with the value set to the path of the JDK directory.&lt;/li&gt;&lt;li&gt;Edit the file c:\openreports-tomcat\startup.bat to have the following contents&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;cd database&lt;br /&gt;start start-database.bat&lt;br /&gt;cd ..\tomcat\bin&lt;br /&gt;call startup&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a new file in c:\openreports-tomcat named shutdown.bat with the following contents&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;cd database&lt;br /&gt;start stop-database.bat&lt;br /&gt;cd ..\tomcat\bin&lt;br /&gt;call shutdown&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a new file in c:\openreports-tomcat\database named stop-database.bat with the following contents&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;@echo off&lt;br /&gt;&lt;br /&gt;FOR %%b IN (openreports,sample) DO call :runCommand %%b&lt;br /&gt;goto :end&lt;br /&gt;&lt;br /&gt;:runCommand&lt;br /&gt;java -cp hsql/hsqldb-1.7.3.jar org.hsqldb.util.ShutdownServer -url "jdbc:hsqldb:hsql://localhost/%1" -user "SA" -password ""&lt;br /&gt;&lt;br /&gt;:end&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Double-click on the file c:\openreports-tomcat\startup.bat. This will start the HSQLDB database OpenReports uses internally and the tomcat server bundled with OpenReports.&lt;/li&gt;&lt;li&gt;Wait for the tomcat server to finish starting up. When finished the original command window will display something like INFO: Server startup in 78676 ms&lt;/li&gt;&lt;li&gt;Open a browser window and navigate to http://localhost:8080/openreports&lt;/li&gt;&lt;li&gt;If port 8080 is already in use, for instance by another web server, modify the file C:\openreports-tomcat\tomcat\conf\server.xml. Search for 8080 and replace the value for the HTTP/1.1 connector with another port number that's not in use and that's greater than 1024. Restart the server and include the new port number in the URL you navigate to.&lt;/li&gt;&lt;li&gt;Login using the username admin and password admin.&lt;/li&gt;&lt;li&gt;You can now select and view the sample reports that come with the installation. &lt;/li&gt;&lt;li&gt;To add new reports, create the reports using the reporting engines supported by OpenReports e.g. JasperReports and deploy the report files to the OpenReports server. Add and configure them from OpenReports to make them available.&lt;/li&gt;&lt;li&gt;Copy the JDBC drivers for the databases you'll be reporting from to the C:\openreports-tomcat\tomcat\common\lib folder.&lt;/li&gt;&lt;li&gt;Copy the JDBC drivers for the databases used by BIRT reports to the folder C:\openreports-tomcat\tomcat\webapps\openreports\WEB-INF\platform\plugins\org.eclipse.birt.report.data.oda.jdbc_2.3.2.r232_v20090212\drivers&lt;/li&gt;&lt;li&gt;To have emails sent to a mail server with SMTP authentication turned on, add the following to the file C:\openreports-tomcat\tomcat\webapps\openreports\WEB-INF\applicationContext.xml. Setting the smtp authentication details in the OpenReports administration panel doesn't work.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;bean id="mailAuthenticator" class="org.efs.openreports.util.SMTPAuthenticator"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="0" value="email account here" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="1" value="password here" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;bean id="mailSession" class="javax.mail.Session" factory-method="getInstance"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="0"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;props&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;prop key="mail.smtp.host"&amp;gt;smtp server hostname or IP here&amp;lt;/prop&amp;gt; &lt;br /&gt;&amp;lt;prop key="mail.smtp.auth"&amp;gt;true&amp;lt;/prop&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;lt;/props&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="1" ref="mailAuthenticator" /&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;To get OLAP report samples to work when using JRE 1.6+, delete the file xalan-2.6.0.jar from the WEB-INF\lib folder and then restart tomcat. &lt;/li&gt;&lt;li&gt;To stop OpenReports, double-click on the file C:\openreports-tomcat\shutdown.bat&lt;/li&gt;&lt;li&gt;Installation is complete&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Setting up OpenReports to use an independent Tomcat server and MySQL for its database&lt;/b&gt;&lt;br /&gt;OpenReports comes bundled with a tomcat server and preconfigured HSQLDB database. To use a pre-existing tomcat server and MySQL for the database, use the following additional steps.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Tomcat&lt;br /&gt;MySQL&lt;br /&gt;Apache Ant&lt;br /&gt;JDK 1.6&lt;br /&gt;MySQL JDBC driver&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Tomcat 6.0.20&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;JDK 1.6.0_17&lt;br /&gt;Apache Ant 1.8.0RC1&lt;br /&gt;MySQL JDBC driver 5.1.10&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download Apache Ant from &lt;a href="http://ant.apache.org/"&gt;http://ant.apache.org/&lt;/a&gt; if you don't already have it. Download the binary distribution zip archive.&lt;/li&gt;&lt;li&gt;Unzip the file to c:\&lt;/li&gt;&lt;li&gt;Edit the PATH environment variable and add ;C:\apache-ant-1.8.0RC1\bin at the end.&lt;/li&gt;&lt;li&gt;Copy the MySQL JDBC driver [jar file] to the tomcat\lib folder of the tomcat installation&lt;/li&gt;&lt;li&gt;Ensure you have a JAVA_HOME environment variable that points to the JDK folder e.g. C:\Program Files\Java\jdk1.6.0_17&lt;/li&gt;&lt;li&gt;Edit the file C:\openreports-tomcat\database\schema\or_ddl_mysql.sql. Add semicolons at the end of each command, and add the following lines in addition.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:sql"&gt;INSERT INTO REPORT_USER (NAME,PASSWORD,PDF_EXPORT_TYPE) VALUES('admin','admin',0);&lt;br /&gt;INSERT INTO USER_SECURITY(USER_ID,ROLE_NAME) VALUES (1,'ROOT_ADMIN_ROLE');&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Open a command prompt window and type mysql -h localhost -u root -p [assuming mysql\bin is included in the PATH environment variable]&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Supply the root password in the mysql window that comes up&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mysql&amp;gt; CREATE DATABASE openreports;&lt;br /&gt;mysql&amp;gt; GRANT ALL ON openreports.* TO oreports@localhost IDENTIFIED BY 'oreports';&lt;br /&gt;mysql&amp;gt; use openreports&lt;br /&gt;mysql&amp;gt; \. C:\openreports-tomcat\database\schema\or_ddl_mysql.sql&lt;br /&gt;mysql&amp;gt; \. C:\openreports-tomcat\database\schema\quartz\tables_mysql_innodb.sql&lt;br /&gt;mysql&amp;gt; quit&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the file C:\openreports-tomcat\openreports\src\openreports.properties to have the following contents&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;# properties used by the Spring configuration&lt;br /&gt;&lt;br /&gt;hibernate.dialect=org.hibernate.dialect.MySQLDialect&lt;br /&gt;&lt;br /&gt;hibernate.jdbc.driver=com.mysql.jdbc.Driver&lt;br /&gt;hibernate.jdbc.url=jdbc:mysql://localhost:3306/openreports&lt;br /&gt;hibernate.jdbc.username=oreports&lt;br /&gt;hibernate.jdbc.password=oreports&lt;br /&gt;hibernate.jdbc.maxIdle=2&lt;br /&gt;hibernate.jdbc.maxActive=5&lt;br /&gt;&lt;br /&gt;quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate&amp;nbsp; &lt;br /&gt;&lt;br /&gt;# use the following line for HSQLDB demo Quartz databases&lt;br /&gt;#quartz.jobStore.selectWithLockSQL = SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?&lt;br /&gt;&lt;br /&gt;# use this for all other Quartz databases&lt;br /&gt;quartz.jobStore.selectWithLockSQL = SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;quartz.jdbc.driver = com.mysql.jdbc.Driver&lt;br /&gt;quartz.jdbc.url = jdbc:mysql://localhost:3306/openreports&lt;br /&gt;quartz.jdbc.username=oreports&lt;br /&gt;quartz.jdbc.password=oreports&lt;br /&gt;quartz.jdbc.maxIdle=2&lt;br /&gt;quartz.jdbc.maxActive=5&lt;br /&gt;&lt;br /&gt;#number of threads that are available for concurrent execution of jobs&lt;br /&gt;org.quartz.threadPool.threadCount = 5&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the file C:\openreports-tomcat\openreports\WebRoot\WEB-INF\applicationContext.xml and add the following items to enable sending mail with SMTP authentication.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;bean id="mailAuthenticator" class="org.efs.openreports.util.SMTPAuthenticator"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="0" value="email account here" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="1" value="password here" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;bean id="mailSession" class="javax.mail.Session" factory-method="getInstance"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="0"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;props&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;prop key="mail.smtp.host"&amp;gt;server hostname or IP here&amp;lt;/prop&amp;gt; &lt;br /&gt;&amp;lt;prop key="mail.smtp.auth"&amp;gt;true&amp;lt;/prop&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;lt;/props&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;constructor-arg index="1" ref="mailAuthenticator" /&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the file C:\openreports-tomcat\reports\datasources.xml and delete the sample mondrian datasource so that the file has the following contents.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;DataSources&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/DataSources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Delete the following files from C:\openreports-tomcat\openreports\WebRoot\WEB-INF\lib\.xalan-2.6.0.jar, xercesImpl-2.0.2.jar and xml-apis-2.0.2. These will be replaced with files from the xalan 2.7.1 distribution.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Download the binary distribution of xalan 2.7.1 from &lt;a href="http://xml.apache.org/xalan-j/downloads.html"&gt;http://xml.apache.org/xalan-j/downloads.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unzip the package to a temporary folder e.g. c:\temp&lt;/li&gt;&lt;li&gt;Copy the files xalan.jar, xercesImpl.jar, xml-apis.jar and serializer.jar from c:\temp\xalan-j_2_7_1 to the folder C:\openreports-tomcat\openreports\WebRoot\WEB-INF\lib\&lt;/li&gt;&lt;li&gt;If you'll be using a jasper reports version other than 3.5.1, delete the files jasperreports-3.5.1.jar and jasperreports-3.5.1-javaflow.jar from C:\openreports-tomcat\openreports\WebRoot\WEB-INF\lib\. Place the files for the required jasper engine in the folder instead e.g. jasperreports-3.7.0.jar and jasperreports-3.7.0-javaflow.jar.&lt;/li&gt;&lt;li&gt;Put the mysql JDBC driver in the folder C:\openreports-tomcat\openreports\WebRoot\WEB-INF\lib. You can skip this step if a copy of the driver is available in the tomcat\lib folder&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If you are using tomcat 6 and JRE 1.6, put a copy of the olap4j jar file in C:\openreports-tomcat\openreports\WebRoot\WEB-INF\lib. You can download this file from &lt;a href="http://sourceforge.net/projects/olap4j/files/"&gt;http://sourceforge.net/projects/olap4j/files/&lt;/a&gt;. This step is important for the environment described. If omitted, the application will deploy successfully on tomcat 5.5 but fail on tomcat 6 with an error “cannot create jdbc driver...java.lang.NoClassDefFoundError: org/olap4j/OlapWrapper...”.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Edit the C:\openreports-tomcat\openreports\WebRoot\WEB-INF\applicationContext.xml so that the environment bean section looks something like this&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;bean id="environment"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lazy-init="false"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="ignoreResourceNotFound" value="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="locations"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;list&amp;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;value&amp;gt;/WEB-INF/openreports.properties&amp;lt;/value&amp;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;lt;/list&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/bean&amp;gt; &lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Move the file openreports.properties from C:\openreports-tomcat\openreports\src to C:\openreports-tomcat\openreports\WebRoot\WEB-INF.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Edit the file C:\openreports-tomcat\openreports\build.xml to change the deployment path of the openreports.properties file. Add an entry to the “war” target fileset for this file&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;target name="war" depends="jar"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;war destfile="${deploy}/openreports.war" webxml="${web-inf}/web.xml"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;fileset dir="${WebRoot}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;include name="**/openreports.properties" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;These last 3 steps will allow you to change the openreports database at a later time, without having to recompile the application.&lt;/li&gt;&lt;li&gt;Open a command prompt window and navigate to C:\openreports-tomcat\openreports&lt;/li&gt;&lt;li&gt;Type ant war and hit enter.&lt;/li&gt;&lt;li&gt;Wait for the task to complete with a BUILD SUCCESSFUL message&lt;/li&gt;&lt;li&gt;Start the tomcat service&lt;/li&gt;&lt;li&gt;Navigate to localhost:8080/ and login to the web application manager.&lt;/li&gt;&lt;li&gt;Deploy the updated war file found at C:\openreports-tomcat\tomcat\webapps\openreports.war&lt;/li&gt;&lt;li&gt;Nagivate to localhost:8080/openreports&lt;/li&gt;&lt;li&gt;Login using username admin and password admin.&lt;/li&gt;&lt;li&gt;Click on the Administration button, then the Settings link and set the following properties&lt;/li&gt;&lt;/ul&gt;Base directory – C:\openreports-tomcat\reports [where jasper or birt report files will reside]&lt;br /&gt;Report generation directory – C:\openreports-tomcat\reports\generated&lt;br /&gt;Temp directory – C:\openreports-tomcat\temp&lt;br /&gt;Query report max rows – 1000&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you would like to use an independent tomcat server with the sample hsqldb database that comes with openreports, make sure that the version of the hsqldb driver referenced in the C:\openreports-tomcat\database\start-database.bat file used to start up the database is the same one used in the tomcat installation e.g. in the tomcat\lib folder. Otherwise you may get a “connection is broken...” error when starting the application if the openreports.properties file points to the sample database.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using BIRT reports&lt;/b&gt;&lt;br /&gt;OpenReports 3.2.0 supports BIRT 2.3.2.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Copy the JDBC drivers for the databases used by the BIRT reports to the folder tomcat\webapps\openreports\WEB-INF\platform\plugins\org.eclipse.birt.report.data.oda.jdbc_2.3.2.r232_v20090212\drivers&lt;/li&gt;&lt;li&gt;When creating a new report in OpenReports, when adding a report template, add the .rptdesign report file.&lt;/li&gt;&lt;li&gt;To design birt reports, use the BIRT RCP designer 2.3.2. You can download it from &lt;a href="http://download.eclipse.org/birt/downloads/index2.3.2.php"&gt;http://download.eclipse.org/birt/downloads/index2.3.2.php&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;When exporting to xls, BIRT uses Excel 2003 xml format [birt uses office 2003 xml for all formats but OpenReports doesn't have an option for exporting to doc or ppt]. This doesn't open properly by default in OpenOffice. To generate binary xls files, you can use the Tribix xls emitter for BIRT.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download xls-emitter-bin_2.3.1.zip from &lt;a href="http://sourceforge.net/projects/tribix/files/"&gt;http://sourceforge.net/projects/tribix/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Download the Apache POI library. Download the file poi-bin-3.2-FINAL-20081019.zip from &lt;a href="http://archive.apache.org/dist/poi/release/bin/"&gt;http://archive.apache.org/dist/poi/release/bin/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract xls-emitter-bin_2.3.1.zip to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;Extract poi-bin-3.2-FINAL-20081019.zip to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;To use the tribix emitter in the Eclipse RCP Designer, copy the contents of c:\temp\xls-emitter-bin_2.3.1\plugins to birt-rcp-report-designer-2_3_2\plugins. [a jar file and a folder]&lt;/li&gt;&lt;li&gt;Copy c:\temp\poi-3.2-FINAL\poi-3.2-FINAL-20081019.jar to birt-rcp-report-designer-2_3_2\plugins\org.uguess.birt.report.engine.emitter.xls_2.3.1.200812291511\lib&lt;/li&gt;&lt;li&gt;Rename the file birt-rcp-report-designer-2_3_2\plugins\org.eclipse.birt.report.engine.emitter.prototype.excel_2.3.2.r232_v20090601.jar e.g to not-used-org.eclipse.birt.report.engine.emitter.prototype.excel_2.3.2.r232_v20090601.jar&lt;/li&gt;&lt;li&gt;Open the BIRT designer and run a report as XLS.&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&lt;ul&gt;&lt;li&gt;To use the tribix emitter in OpenReports, stop tomcat and copy the contents of c:\temp\xls-emitter-bin_2.3.1\plugins to tomcat\webapps\openreports\WEB-INF\platform\plugins.&lt;/li&gt;&lt;li&gt;Copy c:\temp\poi-3.2-FINAL\poi-3.2-FINAL-20081019.jar to tomcat\webapps\openreports\WEB-INF\platform\plugins\org.uguess.birt.report.engine.emitter.xls_2.3.1.200812291511\lib&lt;/li&gt;&lt;li&gt;Rename the file tomcat\webapps\openreports\WEB-INF\platform\plugins\org.eclipse.birt.report.engine.emitter.prototype.excel_2.3.2.r232_20090202.jar e.g. to not-used-org.eclipse.birt.report.engine.emitter.prototype.excel_2.3.2.r232_20090202.jar&lt;/li&gt;&lt;li&gt;Restart tomcat&lt;/li&gt;&lt;li&gt;When you export BIRT reports to XLS, they will now use the tribix xls emitter.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using JasperReports&lt;/b&gt;&lt;br /&gt;OpenReports 3.2.0 supports jasperreports 3.5.1 by default.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To design reports using the jasperreports engine, install and use iReport. You can download it from &lt;a href="http://sourceforge.net/projects/ireport/files/"&gt;http://sourceforge.net/projects/ireport/files/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;If you use an iReport version later than 3.5.1 to design the reports, reports you deploy to OpenReports may not display any data. This is because the same version of jasperreports used to compile a report should be used to run it.&lt;/li&gt;&lt;/ul&gt;To use a later version of jasperreports e.g. 3.7.0, use the following additional steps.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the files jasperreports-3.7.0.jar and jasperreports-javaflow-3.7.0.jar from &lt;a href="http://sourceforge.net/projects/jasperreports/files/"&gt;http://sourceforge.net/projects/jasperreports/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Copy these two files to the tomcat\webapps\openreports\WEB-INF\lib folder&lt;/li&gt;&lt;li&gt;Delete the files jasperreports-3.5.1.jar and jasperreports-3.5.1-javaflow.jar from tomcat\webapps\openreports\WEB-INF\lib. Stop tomcat if the files are in use and can't be deleted.&lt;/li&gt;&lt;li&gt;When creating a new report in OpenReports, when adding a report template, add the .jasper report file rather than the .jrxml file. To get a .jasper file, preview the report from within iReport.&lt;/li&gt;&lt;/ul&gt;If you need to compile a jrxml file to a particular jasper version, e.g. a report to be used with the jasperreports 3.5.1 engine in OpenReports, download and use the iReport version corresponding to the required jasper version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9118736465601136234-652635209995212520?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/652635209995212520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-openreports-320.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/652635209995212520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/652635209995212520'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-openreports-320.html' title='Installing OpenReports 3.2.0'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-6564093852478372996</id><published>2010-04-16T17:18:00.002+03:00</published><updated>2010-06-12T20:19:13.789+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing OpenI 2.0 RC2</title><content type='html'>OpenI is an open source business intelligence application. It's main emphasis is on providing OLAP analysis, although it can also do regular reporting by allowing publishing of jasper report files.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Tomcat 5.5+ [with JDBC driver in the tomcat\lib directory]&lt;br /&gt;JRE 1.5+&lt;br /&gt;OLAP server&lt;br /&gt;RDBMS + JDBC driver&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Tomcat 6.0.20 &lt;br /&gt;JRE 1.6.0_18&lt;br /&gt;Mondrian 3.1.5&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;MySQL Connector/J 5.1.10&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the openi-tomcat package from sourceforge, &lt;a href="http://sourceforge.net/projects/openi/files/"&gt;http://sourceforge.net/projects/openi/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the zip package to a temporary folder e.g. C:\temp&lt;/li&gt;&lt;li&gt;Edit the file tomcat\conf\tomcat-users.xml file and add some details for openi users.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;role rolename="openi"/&amp;gt;&lt;br /&gt;&amp;lt;role rolename="app_admin"/&amp;gt;&lt;br /&gt;&amp;lt;role rolename="foodmart_user"/&amp;gt;&amp;lt;role rolename="foodmart_admin"/&amp;gt;&lt;br /&gt;&amp;lt;user username="openiadmin" password="password" roles="openi,app_admin"/&amp;gt;&lt;br /&gt;&amp;lt;user username="foodmartadmin" password="password" roles="openi,foodmart_admin"/&amp;gt;&lt;br /&gt;&amp;lt;user username="foodmartuser" password="password" roles="openi,foodmart_user"/&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the tomcat\webapps\mondrian\web-inf\datasources.xml file. Modify the default datasource [with datasourcename of Provider=Mondrian;DataSource=MondrianFoodMart;].&lt;/li&gt;&lt;li&gt;Edit the DatasourceInfo element to put the appropriate details for the foodmart sample database i.e database url, username and password. e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;DataSourceInfo&amp;gt;Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart;JdbcUser=foodmart;JdbcPassword=foodmart;JdbcDrivers=com.mysql.jdbc.Driver;&amp;lt;/DataSourceInfo&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Start tomcat&lt;/li&gt;&lt;li&gt;Copy the file c:\temp\openi\openi.war to the tomcat\webapps folder. This will cause the application to be deployed&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost:8080/openi&lt;/li&gt;&lt;li&gt;Login with username/password of openiadmin/password&lt;/li&gt;&lt;li&gt;Openi needs a folder in which to place project details. You'll be prompted to create one e.g .in c:\openi-projects. Click on the create sample project button to do this.&lt;/li&gt;&lt;li&gt;This will create the folder with a sample project that's made for the foodmart sample database.&lt;/li&gt;&lt;li&gt;Click on the Logout button&lt;/li&gt;&lt;li&gt;Edit the file c:\openi-projects\foodmart\project.xml and modify the jdbc_default string entry with the details for the sample foodmart database e.g. Put the correct database url, username and password. The details for the mondrian data source entry should match those in the tomcat\webapps\mondrian\web-inf\datasources.xml file, if this wasn't changed when installing the mondrian web application.&lt;/li&gt;&lt;li&gt;Create a new environment variable called PROJECTS_DIR with the value c:\\openi-projects.&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost:8080/openi&lt;/li&gt;&lt;li&gt;Login with username/password of openiadmin/password&lt;/li&gt;&lt;li&gt;You can now view the analyses and reports of the sample foodmart project.&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/9118736465601136234-6564093852478372996?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/6564093852478372996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-openi-20-rc2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6564093852478372996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6564093852478372996'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-openi-20-rc2.html' title='Installing OpenI 2.0 RC2'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-1966617409486370018</id><published>2010-04-16T16:52:00.002+03:00</published><updated>2010-08-24T12:37:00.701+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Mondrian 3.1.5</title><content type='html'>Mondrian is an open source ROLAP server. It uses the ROLAP scheme of storing data i.e. It doesn't have a data storage engine of its own. The data is stored in an external relational database. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;JRE 1.4+&lt;br /&gt;Tomcat 5.5+ [with JDBC driver in the tomcat\lib directory]&lt;br /&gt;RDMBS + JDBC driver&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;JRE 1.6.0_18&lt;br /&gt;Tomcat 6.0.20 &lt;br /&gt;MySQL 5.0.45&lt;br /&gt;MySQL Connector/J 5.1.10&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the mondrian zip package from sourceforge, &lt;a href="http://sourceforge.net/projects/mondrian/files/"&gt;http://sourceforge.net/projects/mondrian/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the zip file to a temporary folder e.g. C:\temp&lt;/li&gt;&lt;li&gt;Download the sample foodmart database creation script for mysql from &lt;a href="http://sites.google.com/a/dlpage.phi-integration.com/pentaho/mondrian/mysql-foodmart-database"&gt;http://sites.google.com/a/dlpage.phi-integration.com/pentaho/mondrian/mysql-foodmart-database&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the gzip package to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;Open a command prompt window and type type mysql -h localhost -u root -p&lt;/li&gt;&lt;li&gt;Enter the root password to access mysql then enter the following commands to create the foodmart database. &lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mysql&amp;gt; create database foodmart;&lt;br /&gt;mysql&amp;gt; grant all on foodmart.* to foodmart@localhost identified by "foodmart";&lt;br /&gt;mysql&amp;gt; use foodmart;&lt;br /&gt;mysql&amp;gt; \. c:\temp\foodmart_mysql.sql&lt;br /&gt;mysql&amp;gt; quit&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Start tomcat&lt;/li&gt;&lt;li&gt;Copy c:\temp\mondrian-3.1.5.13307\lib\mondrian.war to the tomcat\webapps directory. This will cause the mondrian application to be deployed.&lt;/li&gt;&lt;li&gt;Edit the the fourhier.jsp, mondrian.jsp, colors.jsp and arrows.jsp files in the tomcat\webapps\mondrian\web-inf\queries directory. Edit the following line&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:java"&gt;&amp;lt;jp:mondrianQuery id="query01" jdbcDriver="sun.jdbc.odbc.JdbcOdbcDriver" jdbcUrl="jdbc:odbc:MondrianFoodMart" catalogUri="/WEB-INF/queries/FoodMart.xml"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Replace it with details of the mysql foodmart database you've just created&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:java"&gt;&amp;lt;jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost/foodmart?user=foodmart&amp;amp;password=foodmart" catalogUri="/WEB-INF/queries/FoodMart.xml"&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the the testrole.jsp files in the tomcat\webapps\mondrian\web-inf\queries directory. Edit the following line&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:java"&gt;&amp;lt;jp:mondrianQuery id="query01" jdbcDriver="sun.jdbc.odbc.JdbcOdbcDriver" jdbcUrl="jdbc:odbc:MondrianFoodMart" catalogUri="/WEB-INF/queries/FoodMart.xml" role="California manager"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Replace it with details of the mysql foodmart database you've just created&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:java"&gt;&amp;lt;jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost/foodmart?user=foodmart&amp;password=foodmart" catalogUri="/WEB-INF/queries/FoodMart.xml" role="California manager"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the tomcat\webapps\mondrian\web-inf\datasources.xml file. Edit the datasourceinfo tag of the default data source to have the details of the sample foodmart database. e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;DataSourceInfo&amp;gt;Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart;JdbcUser=foodmart;JdbcPassword=foodmart;JdbcDrivers=com.mysql.jdbc.Driver;&amp;lt;/DataSourceInfo&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the tomcat\webapps\mondrian\web-inf\mondrian.properties file. Edit the connectionstring property to have the details of the sample foodmart database. e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mondrian.test.connectString=Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart;JdbcUser=foodmart;JdbcPassword=foodmart;JdbcDrivers=com.mysql.jdbc.Driver;Catalog=/WEB-INF/queries/FoodMart.xml;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the tomcat\webapps\mondrian\web-inf\web.xml file. Modify all occurrences of the string @mondrian.webapp.connectString@, replacing it with details for connecting to the sample foodmart database. This will be required for the connectString context parameter and the MDXQueryServlet servlet sections of the file e.g&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:xml"&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-name&amp;gt;connectString&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-value&amp;gt;Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart;JdbcUser=foodmart;JdbcPassword=foodmart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=com.mysql.jdbc.Driver;&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/context-param&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-name&amp;gt;MDXQueryServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-class&amp;gt;mondrian.web.servlet.MdxQueryServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-name&amp;gt;connectString&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-value&amp;gt;Provider=mondrian;Jdbc=jdbc:mysql://localhost/foodmart;JdbcUser=foodmart;JdbcPassword=foodmart;JdbcDrivers=com.mysql.jdbc.Driver;Catalog=/WEB-INF/queries/FoodMart.xml;&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Stop tomcat&lt;/li&gt;&lt;li&gt;Download the binary distribution of xalan 2.7.1 from &lt;a href="http://xml.apache.org/xalan-j/downloads.html"&gt;http://xml.apache.org/xalan-j/downloads.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unzip the package to a temporary folder e.g. c:\temp&lt;/li&gt;&lt;li&gt;Delete the file tomcat\webapps\mondrian\web-inf\lib\xalan.jar&lt;/li&gt;&lt;li&gt;Copy the files xalan.jar, xercesImpl.jar, xml-apis.jar and serializer.jar from c:\temp\xalan-j_2_7_1 to the folder tomcat\webapps\mondrian\WEB-INF\lib\&lt;/li&gt;&lt;li&gt;Start tomcat&lt;/li&gt;&lt;li&gt;Using your browser, navigate to localhost:8080/mondrian&lt;/li&gt;&lt;li&gt;You can now get a feel of the examples using the links provided. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using the schema workbench&lt;/b&gt;&lt;br /&gt;In order to create OLAP cubes, you can use the mondrian schema workbench. The schema workbench is a Java desktop application allows you to&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Visually create and test Mondrian OLAP cube schemas, validating the schema against the cube database&lt;/li&gt;&lt;li&gt;Run example MDX queries using the schema and the database&lt;/li&gt;&lt;li&gt;Browse the cube database&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the schema workbench zip package from sourceforge, &lt;a href="http://sourceforge.net/projects/mondrian/files/"&gt;http://sourceforge.net/projects/mondrian/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract the zip file to c:\&lt;/li&gt;&lt;li&gt;Place jdbc drivers to connect to the source database in the c:\schema-workbench\drivers folder&lt;/li&gt;&lt;li&gt;Double-click the file c:\schema-workbench\workbench.bat to start the schema workbench. You'll need to have defined a JAVA_HOME or JRE_HOME environment variable pointing to the java location.&lt;/li&gt;&lt;li&gt;Click on the Tools | Connection menu&lt;/li&gt;&lt;li&gt;Enter the connection details for the database&lt;/li&gt;&lt;li&gt;You can then open the xml file that contains a mondrian schema definition for editing, or create a new schema definition.&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/9118736465601136234-1966617409486370018?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/1966617409486370018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-mondrian-315.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1966617409486370018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1966617409486370018'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-mondrian-315.html' title='Installing Mondrian 3.1.5'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-493649173585476193</id><published>2010-04-16T16:19:00.003+03:00</published><updated>2010-06-24T20:27:09.038+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Pentaho BI Server 3.5.0</title><content type='html'>The Pentaho BI Suite Community Edition [CE] is an open source business intelligence package that includes ETL, analysis, metadata, and reporting capabilities. The suite is composed of server components and client tools. The server components [also referred to as the BI Platform] consist of the BI Server, the administration console and the user console. The BI server is responsible for management and delivery of reports.&lt;br /&gt;&lt;br /&gt;Some of the Pentaho client tools include: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Report Designer&lt;/b&gt;: Used to create formatted reports. Report Designer offers far more flexibility and functionality&lt;br /&gt;than the ad hoc reporting capabilities of the Pentaho User Console.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Design Studio&lt;/b&gt;: An Eclipse-based tool that enables you to hand-edit a report or analysis view&lt;br /&gt;xaction file. Generally, people use Design Studio to add modifications to an existing report that&lt;br /&gt;cannot be added with Report Designer. Design Studio is also required to enable report scheduling, e-mail distribution, dynamic and static prompting, and more.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Metadata Editor&lt;/b&gt;: Enables you to add a custom metadata layer to an existing data source.&lt;br /&gt;Usually you would do this for a data source that you intend to use for analysis or reporting; it's&lt;br /&gt;not required, but it makes it easier for business users to parse the database when building a&lt;br /&gt;query.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pentaho Data Integration&lt;/b&gt;: Also known as Kettle. An extract, transform, and load (ETL) tool, which enables&lt;br /&gt;you to access and prepare data sources for analysis, data mining, or reporting.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Schema Workbench&lt;/b&gt;: A graphical tool that helps you create ROLAP schemas for analysis. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;These steps are for setting up the server components. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;JRE or JDK 1.5+&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Pentaho BI Server 3.5.0&lt;br /&gt;Pentaho Report Designer 3.5.0&lt;br /&gt;JRE – 1.6.0.17&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the business intelligence server zip file from SourceForge, &lt;a href="http://sourceforge.net/projects/pentaho/files/"&gt;http://sourceforge.net/projects/pentaho/files/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Download the report designer zip file from the same SourceForge location&lt;/li&gt;&lt;li&gt;Create a folder c:\pentaho\server and extract the BI server zip file here.&lt;/li&gt;&lt;li&gt;Create a folder c:\pentaho\design-tools and extract the report designer zip file here.&lt;/li&gt;&lt;li&gt;Go to Start &amp;gt; Control Panel &amp;gt; System &amp;gt; Advanced System Settings. Select the Advanced tab and click on the Environment Variables button. Click on the new button and create a variable named JRE_HOME with the value set to the path of the JRE directory e.g. C:\Program Files\Java\jre6. If you have JDK installed, create a variable named JAVA_HOME instead with the value set to the path of the JDK directory.&lt;/li&gt;&lt;li&gt;Note that the BI server package seems to come with it's own JRE which will be located in C:\Pentaho\server\biserver-ce\jre.&lt;/li&gt;&lt;li&gt;Edit the file C:\Pentaho\server\biserver-ce\tomcat\bin\setclasspath.bat. Modify the first four lines of the gotJreHome label so that they appear as follows. [tools.jar comes with JDK, not JRE]&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;:gotJreHome&lt;br /&gt;if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome&lt;br /&gt;if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome&lt;br /&gt;REM if not exist "%JRE_HOME%\lib\tools.jar" goto noJreToolsJar&lt;br /&gt;REM set CLASSPATH=%JRE_HOME%\lib\tools.jar&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the files start-pentaho.bat and stop-pentaho.bat located in C:\Pentaho\server\biserver-ce\. Comment out the line setting the value of the JAVA_HOME variable so that it looks as below&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;REM set JAVA_HOME=%_PENTAHO_JAVA_HOME%&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;The preceding two steps are only required if you only have JRE and don't have JDK&lt;/li&gt;&lt;li&gt;Edit the file C:\Pentaho\server\biserver-ce\pentaho-solutions\system\publisher_config.xml. Enter a password [in clear text] in the &lt;publisher-password&gt; element. This is the password that will be used when publishing reports from the report designer to the BI server. Don't leave it blank.&lt;/publisher-password&gt;&lt;/li&gt;&lt;li&gt;Open a command prompt window and navigate to c:\Pentaho\server\biserver-ce. Type start-pentaho and hit enter. This will start the HSQLDB database the BI server uses internally in a new command prompt window and start the tomcat server bundled with the BI server also in a new command window.&lt;/li&gt;&lt;li&gt;Wait for the tomcat server to finish starting up. When finished the tomcat command window will display something like INFO: Server startup in 77980 ms&lt;/li&gt;&lt;li&gt;Open a command prompt window and navigate to c:\Pentaho\server\administration-console. Type start-pac and hit enter. This will start the pentaho administration console.&lt;/li&gt;&lt;li&gt;Open a browser window and navigate to http://localhost:8099 to access the pentaho administration console. If prompted for login credentials, use “admin” for the username and “password” for the password.&lt;/li&gt;&lt;li&gt;Open a browser window and navigate to http://localhost:8080/pentaho to access the pentaho user console&lt;/li&gt;&lt;li&gt;If port 8080 is already in use, for instance by another web server, modify the file C:\Pentaho\server\biserver-ce\tomcat\conf\server.xml. Search for 8080 and replace the value for the HTTP/1.1 connector with another port number that's not in use. Restart the server and include the new port number in the URL to access the user console.&lt;/li&gt;&lt;li&gt;Click on the login button in the user console and select the sample user Joe (admin) to login. The username and password are automatically filled in the form. This user has a username of “Joe” and a password of “password”.&lt;/li&gt;&lt;li&gt;If you'll need to access the user console from different machines, edit the file C:\Pentaho\server\biserver-ce\tomcat\webapps\pentaho\WEB-INF\web.xml. Change the base-url parameter, replacing “localhost” with the server's hostname or IP address.&lt;/li&gt;&lt;li&gt;To start the report designer, open a command prompt window and navigate to C:\Pentaho\design-tools\report-designer. Type report-designer and hit enter.&lt;/li&gt;&lt;li&gt;To stop the BI server, open a command prompt window and navigate to c:\Pentaho\server\biserver-ce. Type stop-pentaho and hit enter. OR double click on the stop-pentaho.bat file.&lt;/li&gt;&lt;li&gt;To stop the administration console, double click the file c:\Pentaho\server\administration-console\stop-pentaho.bat file.&lt;/li&gt;&lt;li&gt;Note that if you use IE8 for the browser, intranet settings may not be enabled for localhost, and some features of the user console will not work properly. To correct this, select the Tools | Internet Options menu. If the main menu [File, Edit etc] isn't displayed on IE, press the alt key to get it to display. Select the security tab, then the Local intranet zone and click on the sites button. Uncheck the Automatically detect intranet network box and click on the Advanced button. Type in http://localhost and click on the Add button.&lt;/li&gt;&lt;li&gt;To enable emailing of reports, edit the file C:\Pentaho\server\biserver-ce\pentaho-solutions\system\smtp-email\email_config.xml, adding the details of the email server. &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/9118736465601136234-493649173585476193?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/493649173585476193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-pentaho-bi-server-350.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/493649173585476193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/493649173585476193'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-pentaho-bi-server-350.html' title='Installing Pentaho BI Server 3.5.0'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-5084257433054070753</id><published>2010-04-16T15:05:00.001+03:00</published><updated>2010-06-12T20:29:18.656+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using Apache</title><content type='html'>&lt;b&gt;Disable caching&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Uncomment the line #LoadModule expires_module modules/mod_expires.so in the httpd.conf file&lt;/li&gt;&lt;li&gt;Create a file named .htaccess under the relevant website directory and add the text&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;&lt;ifmodule mod_expires.c=""&gt;&lt;br /&gt;# enable expiration&lt;br /&gt;ExpiresActive On&lt;br /&gt;&lt;br /&gt;#expire all pages to prevent caching&lt;br /&gt;ExpiresDefault "access plus 1 second"&lt;/ifmodule&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Restart Apache&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Use folder structure not in the document root&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add an alias in the httpd.conf file e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;Alias /mysite "c:/somefolder/mysite"&lt;br /&gt;&lt;br /&gt;&lt;directory c:="" mysite="" somefolder=""&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options Indexes FollowSymLinks ExecCGI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from all&lt;/directory&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/9118736465601136234-5084257433054070753?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/5084257433054070753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-apache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5084257433054070753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5084257433054070753'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-apache.html' title='Using Apache'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-1303175862409248223</id><published>2010-04-16T14:59:00.005+03:00</published><updated>2010-06-12T20:42:41.884+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using PostgreSQL</title><content type='html'>&lt;b&gt;Creating a database&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;createdb -U postgre_user database_name&lt;br /&gt;&lt;/pre&gt;[assumes postgre bin location has been added to the system path]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Starting the command line client&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;psql -U postgre_user&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Changing database within psql&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;postgres=# \c mydatabase&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/9118736465601136234-1303175862409248223?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/1303175862409248223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-postgresql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1303175862409248223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1303175862409248223'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-postgresql.html' title='Using PostgreSQL'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-5248218256654006372</id><published>2010-04-16T14:58:00.000+03:00</published><updated>2010-04-16T14:58:32.824+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using MySQL</title><content type='html'>&lt;b&gt;Using keywords as column names or in queries&lt;/b&gt;&lt;br /&gt;Enclose keywords around backticks e.g. Select `desc` from mytable&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9118736465601136234-5248218256654006372?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/5248218256654006372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-mysql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5248218256654006372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/5248218256654006372'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-mysql.html' title='Using MySQL'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-4412046618981614418</id><published>2010-04-16T14:49:00.001+03:00</published><updated>2010-06-12T20:44:58.645+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using Activelock</title><content type='html'>Activelock is an open source software licensing and copy protection component for windows applications. Its source is available in VB6 and VB.NET.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Visual Studio 6 with SP6&lt;br /&gt;MSXML 4&lt;br /&gt;Visual Studio 2008&lt;br /&gt;IIS with ASP.NET configured (only for testing web integration)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Version used&lt;/b&gt;&lt;br /&gt;Activelock 3.6.0.3&lt;br /&gt;Visual Studio 6 with SP6 &lt;br /&gt;.NET framework 3.5 &lt;br /&gt;Visual Studio 2008 Express edition&lt;br /&gt;IIS on Windows XP (IIS 5.1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the VB6 and VB2008 core dlls and source code packages from the activelock website, activelocksoftware.com&lt;/li&gt;&lt;li&gt;Run the setup programs to install the activelock files&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Customizing the VB6 dll&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Copy the contents of the dll source folder C:\Program Files\Activelock_VB6_3.6\Activelock3.6 for VB6 to your own folder e.g. C:\MyLock&lt;/li&gt;&lt;li&gt;Copy the contents of the test application folder C:\Program Files\Activelock_VB6_3.6\ALTestApp3.6 for VB6 to your own folder e.g. C:\MyLock TestApp&lt;/li&gt;&lt;li&gt;Using the code in the C:\MyLock folder, open the file ActiveLock3.vbp&lt;/li&gt;&lt;li&gt;Save the project with a different name e.g. MyLock.vbp&lt;/li&gt;&lt;li&gt;Change the name of the project under project properties e.g. MyLock&lt;/li&gt;&lt;li&gt;Right click on the project and click on the properties menu&lt;/li&gt;&lt;li&gt;Clear the help file text box&lt;/li&gt;&lt;li&gt;Change the project description text box e.g. MyLock&lt;/li&gt;&lt;li&gt;In the make tab, change the version number e.g. 1.0.0&lt;/li&gt;&lt;li&gt;Change the application title e.g MyLock&lt;/li&gt;&lt;li&gt;Change all the items under version information as desired&lt;/li&gt;&lt;li&gt;Open a code window and replace all occurrences of the string ActiveLock3 with e.g. MyLock. Ensure the Find whole word only option is selected.&lt;/li&gt;&lt;li&gt;In activelock.cls, change the value of the AL_REGISTRY_HIVE$ constant&lt;/li&gt;&lt;li&gt;In activelock.cls, modify the ValidateShortKey procedure. Comment out the section referring to alcrypto, only leaving the automatic registration code. If you don't want the short key to be tied to a specific computer, comment out the line fprint = modHardware.GetFingerprint()&lt;/li&gt;&lt;li&gt;In activelock.cls, modify the IactiveLock_InstallationCode Get procedure. Don't pass the fingerprint to the GenerateShortSerial function. This is also only if the short key isn't required to be tied to a specific computer&lt;/li&gt;&lt;li&gt;Make any other customizations as required&lt;/li&gt;&lt;li&gt;Add a reference to the Microsoft WMI Scripting V1.1 Library&lt;/li&gt;&lt;li&gt;If you don't have MDAC 2.8, remove the existing reference and select the reference for the highest version of Microsoft ActiveX Data Objects Library you have.&lt;/li&gt;&lt;li&gt;Compile the dll, giving it a different name e.g MyLock.dll&lt;/li&gt;&lt;li&gt;Select the project properties, and under the component tab, set version compatibility to binary compatibility, referencing the dll just compiled.&lt;/li&gt;&lt;li&gt;Compile the dll again.&lt;/li&gt;&lt;li&gt;Close the project.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Customizing the key generator&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Using the code in the C:\MyLock folder, open the file Alugen.vbp&lt;/li&gt;&lt;li&gt;Save the project with a different name e.g. MyGenerator.vbp&lt;/li&gt;&lt;li&gt;Change the name of the project e.g. MyGenerator&lt;/li&gt;&lt;li&gt;Open a code window and replace all occurrences of the string ActiveLock3 with the same name used in the dll e.g. MyLock&lt;/li&gt;&lt;li&gt;Under project references, remove the reference to the ActiveLock Object Library 3.6 and add a reference to the modified dll you've compiled e.g MyLock.dll.&lt;/li&gt;&lt;li&gt;Build the exe, giving it a different name e.g. MyGenerator.exe&lt;/li&gt;&lt;li&gt;Close the project&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Customizing the test application&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Using the code in the C:\MyLock TestApp folder, open the file ALVB6Sample.vbp.&lt;/li&gt;&lt;li&gt;Save the project with a different name e.g. MyLockTestApp.vbp&lt;/li&gt;&lt;li&gt;Open a code window and replace all occurrences of the string ActiveLock3 with the same name used in the dll e.g. MyLock&lt;/li&gt;&lt;li&gt;Under project references, remove the reference to the ActiveLock Object Library 3.6 and add a reference to the modified dll you've compiled.&lt;/li&gt;&lt;li&gt;In the form_load procedure of frmMain, comment out the line with CheckForResources&lt;/li&gt;&lt;li&gt;In the form_load procedure of frmMain, modify the software password e.g. .SoftwarePassword="pass"&lt;/li&gt;&lt;li&gt;In the form_load procedure of frmMain, modify the licence key type to .LicenseKeyType = alsShortKeyMD5. Only if a short key will be used&lt;/li&gt;&lt;li&gt;Build the exe, giving it a different name e.g. MyLockTestApp.exe&lt;/li&gt;&lt;li&gt;Close the project&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Generating an installation code&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a new project and add two text boxes to it, txtUser and txtInstallCode&lt;/li&gt;&lt;li&gt;Add a reference to the modified dll, MyLock.dll&lt;/li&gt;&lt;li&gt;Open a code window and paste the following code&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:vb"&gt;Option Explicit&lt;br /&gt;&lt;br /&gt;Private ActiveLock As DVTransManager.IActiveLock&lt;br /&gt;Private WithEvents ActiveLockEventSink As ActiveLockEventNotifier&lt;br /&gt;&lt;br /&gt;Private Sub Form_Load()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeActiveLock&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub txtUser_Change()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtInstallCode.Text = ActiveLock.InstallationCode(txtUser.Text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Error GoTo 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Private Sub InitializeActiveLock()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ActiveLock = DVTransManager.NewInstance()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ActiveLockEventSink = ActiveLock.EventNotifier&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; With ActiveLock&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .SoftwareName = "ALVB6Sample"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .SoftwareVersion = "3.6"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .SoftwarePassword = "pass"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .SoftwareCode = "RSA1024BgIAAAAkAABSU0ExAAQAAAEAAQCBcwKp9p1rkQhZyxTeREh9EM273wBqpODS+KLkeu/xn/Q0+w8uhBQfZq8f/sdRfL+S5LIBItOv0okG42mKcaNk0mRoSoJkUPMrRp43j8nAKVCmRrD7pZ1Do3uHM4SjydLY0omeK8vOCyZ2WldYy0IxwgQjNqMHLuG1rCg1DR4+5g=="&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;&amp;nbsp; .LicenseKeyType = alsShortKeyMD5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .LockType = lockNone&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End With&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActiveLock.Init&lt;br /&gt;End Sub&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run the program and in the txtUser text box, type in "test"&lt;/li&gt;&lt;li&gt;Copy the installation code displayed&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Generate and test a licence key&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Run MyGenerator.exe&lt;/li&gt;&lt;li&gt;In the licence keygen tab, make sure the product is ALVB6Sample – 3.6&lt;/li&gt;&lt;li&gt;Paste the installation code in the installation code text box&lt;/li&gt;&lt;li&gt;In the user name text box, type in "user"&lt;/li&gt;&lt;li&gt;Click on the Generate button to generate the licence key&lt;/li&gt;&lt;li&gt;Run MyLockTestApp.exe&lt;/li&gt;&lt;li&gt;In the user name text box, type in "user"&lt;/li&gt;&lt;li&gt;In the installation code text box, paste the installation code used in the key generator&lt;/li&gt;&lt;li&gt;In the liberation key text box, paste the licence key generated by the key generator&lt;/li&gt;&lt;li&gt;Click on the Register button&lt;/li&gt;&lt;li&gt;Registration should be successful, indicating that you have successfully created a licence key and had it verified.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Using with a new product&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;For your own custom application, you start by creating a new product in the key generator.&lt;/li&gt;&lt;li&gt;Type in a name and version for your product and click on the Generate button to generate the product codes. The codes are a public/private key-pair with the Vcode being the public key, and the Gcode the private key. The codes are specific to a particular product name and version combination&lt;/li&gt;&lt;li&gt;Click on Add to product list to add the new product to the list of known products&lt;/li&gt;&lt;li&gt;The source code in the test application can be used as a guide for your own windows application. Further customization would be required e.g to include different product details, and apply custom stealth measures if desired.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Customizing the VB.NET version&lt;/b&gt;&lt;br /&gt;To customize the VB.NET version of Activelock, download and install the corresponding VB.NET package and make code changes in the same places as the VB6 version.&lt;br /&gt;The product codes, installation codes and licence keys [liberation keys] generated by the VB.NET and VB6 versions are not the same. This means a licence key generated by the VB.NET key generator will not be valid when an attempt to register the licence is made from the VB6 component and vice versa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Web integration for the VB6 version&lt;/b&gt;&lt;br /&gt;One may require to automate licence key generation and distribution through a website. If your windows application is using the VB6 component to verify licence keys, you'll need to generate keys using the VB6 key generator.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download and install the VB6 version of Activelock&lt;/li&gt;&lt;li&gt;Copy the following files from C:\Program Files\Activelock_VB6_3.6\Activelock3.6 for VB6 to your own folder e.g. C:\MyWebGenerator. modActiveLock.bas, modALUGEN.bas and modWindowsVersion.bas.&lt;/li&gt;&lt;li&gt;Open the VB6 IDE and create a new ActiveX DLL project&lt;/li&gt;&lt;li&gt;Give the project a name e.g. MyWebGenerator and change the name of the default class e.g WebGenerator and save the project to the folder you created e.g. C:\MyWebGenerator&lt;/li&gt;&lt;li&gt;Add the module files to the project&lt;/li&gt;&lt;li&gt;Open the project file Alugen.vbp from C:\Program Files\Activelock_VB6_3.6\Activelock3.6 for VB6&lt;/li&gt;&lt;li&gt;Create a public function in you class e.g. GenerateLicenceKey and use code from the cmdKeyGen_Click procedure of the Alugen project to implement the licence key generation as per your requirements. &lt;/li&gt;&lt;li&gt;Declare a private class variable for the Activelock object and use the InitActiveLock procedure from frmMain in the Class_Initialize method.&lt;/li&gt;&lt;li&gt;Add a project reference to the VB6 Activelock dll, perhaps one which you've modified and compiled.&lt;/li&gt;&lt;li&gt;Compile your new dll e.g. MyWebGenerator.dll&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Using the VB6 key generation dll in an ASP.NET website&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Set up an IIS server that can serve ASP.NET pages&lt;/li&gt;&lt;li&gt;Copy MyWebGenerator.dll to the web server, if it's on a different machine, e.g to a folder C:\Components&lt;/li&gt;&lt;li&gt;Register MyWebGenerator.dll on the web server&lt;/li&gt;&lt;li&gt;Use the tlbimp.exe utility that comes with the .NET framework to create a runtime callable wrapper for the ActiveX dll you've just compiled. This is to allow you to use the functions of the dll from a .NET development environment just like it was a .NET component.&lt;/li&gt;&lt;li&gt;Search for the file tlbimp.exe on the machine and copy it to C:\Components&lt;/li&gt;&lt;li&gt;Open a command prompt window and navigate to C:\Components&lt;/li&gt;&lt;li&gt;Run tlbimp giving a new name for the .NET wrapper. The syntax to use would be something like tlbimp MyWebGenerator.dll /out:MyWebGeneratorRCW.dll /verbose&lt;/li&gt;&lt;li&gt;Create a new website project e.g using Visual Web Developer Express edition&lt;/li&gt;&lt;li&gt;Under the Website | Add Reference menu, browse and add a reference to the wrapper dll MyWebGeneratorRCW.dll&lt;/li&gt;&lt;li&gt;Use the ildasm.exe utility that comes with the .NET framework to confirm the name of the namespace, class and methods in the wrapper dll you've just created. Run ildasm and open the MyWebGeneratorRCW.dll. The namespace is the name of the node directly under the MANIFEST node. Classes are blue nodes and interfaces are blue nodes with an I.&lt;/li&gt;&lt;li&gt;Add a line in your webpage to import the wrapper namespace as indicated by ildasm e.g &amp;lt;%@ Import Namespace="MyWebGeneratorRCW" %&amp;gt;&lt;/li&gt;&lt;li&gt;Instantiate and use the methods in your dll as you would any .NET component in ASP.NET.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Web integration for the VB.NET version&lt;/b&gt;&lt;br /&gt;Create a .NET dll using code from the VB.NET ALUGEN, just like is done for the VB6 version. Since ASP.NET will use the .NET dlls without having to jump any hoops, add a reference to this dll and use as required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9118736465601136234-4412046618981614418?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/4412046618981614418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-activelock.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/4412046618981614418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/4412046618981614418'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-activelock.html' title='Using Activelock'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-3271849201969804351</id><published>2010-04-16T13:45:00.001+03:00</published><updated>2010-06-12T20:48:40.217+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Bugzilla 3.2</title><content type='html'>Bugzilla is an open source, web-based bug-tracking application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Web server configured to process CGI requests&lt;br /&gt;Perl 5.8.1 and above&lt;br /&gt;MySQL 4.2.1 and above&lt;br /&gt;Internet connection&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Apache 2.2.8&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;ActivePerl 5.8.8.820&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the package [tarball] from the bugzilla website, bugzilla.org. &lt;/li&gt;&lt;li&gt;Unzip the package to a folder in the web server's document root, e.g. Bugzilla&lt;/li&gt;&lt;li&gt;Create a database on the MySQL server e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mysql&amp;gt; create database bugs;&lt;br /&gt;mysql&amp;gt; grant all on bugs.* to bugs@localhost' identified by 'password';&lt;br /&gt;mysql&amp;gt; quit;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Confirm/enable CGI support in Apache by including the following line in the &lt;ifmodule mime_module=""&gt; section of the httpd.conf file&lt;/ifmodule&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;AddHandler cgi-script .cgi&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Allow running of .cgi scripts by adding the ExecCGI option to the &lt;directory apache="" c:="" htdocs=""&gt; section of the the httpd.conf file&lt;/directory&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;Options Indexes FollowSymLinks ExecCGI&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Allow Bugzilla's .htaccess file to restrict access to sensitive documents by allowing it to override the defaults. This involves changing AllowOverride None to AllowOverride All &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;To tell Apache to use Perl to execute .cgi files, use the ScriptInterpreterSource directive. Add ScriptInterpreterSource Registry-Strict to the httpd.conf file. In order for ScriptInterpreterSource Registry-Strict to work, you also need to add an entry to the Registry. Create a key HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command with the default value of the full path of perl.exe with a -T parameter e.g. C:\Perl\bin\perl.exe -T . This will cause this path to be used to run the cgi scripts rather than the path specified in the first line of the scripts themselves. Bugzilla's cgi scripts specify the path of the perl executable as /usr/bin/perl&lt;/li&gt;&lt;li&gt;Add index.cgi to the DirectoryIndex list in the httpd.conf file&lt;/li&gt;&lt;li&gt;Restart Apache&lt;/li&gt;&lt;li&gt;To confirm that perl cgi scripts process OK, create a file test.cgi in the document root folder with the following contents and then navigate to localhost/test.cgi. If Hello, World is displayed on the browser, cgi configuration was successful&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:perl"&gt;#!/perl/bin/perl&lt;br /&gt;# test cgi execution of perl script&lt;br /&gt;print "Content-type: text/html\r\n\r\n";&lt;br /&gt;print "Hello, World.";&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Open a command prompt window and run checksetup.pl in the bugzilla folder. This checks for perl modules required for bugzilla and guides on which ones to install if they aren't present&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;cd \apache\htdocs\bugzilla&lt;br /&gt;perl checksetup.pl&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;With an internet connection available, run the commands given to install the relevant perl packages/modules using PPM [Perl Package Manager]. Add the suggested repository and install at least the mandatory packages. Alternatively download and unzip the individual packages from the suggested website e.g. theoryx5.uwinnipeg.ca/ppms for perl 5.8 packages or ppm.activestate.com/PPMPackages/zips/, and then use PPM to install them offline. e.g. ppm install c:\tmp\TimeDate.ppd&lt;/li&gt;&lt;li&gt;After all mandatory packages are installed and the script has read the ./localconfig file, edit the file C:\apache\htdocs\bugzilla\localconfig, updating the database variables, $db_driver, $db_name, $db_user, $db_pass, with details bugzilla will use to connect to the database created.&lt;/li&gt;&lt;li&gt;Run checksetup.pl again. This time it will build your database tables and initialise Bugzilla. Enter the hostname of the SMTP server to use [or localhost to continue installation]. Also enter the admin email, name and password. Installation is now complete.&lt;/li&gt;&lt;li&gt;Navigate to yourserver/bugzilla/ using your browser and login using the administrator account created. Use the email address as the login.&lt;/li&gt;&lt;li&gt;Click on the parameters link to update some required settings. Set at least the maintainer email address and urlbase. This is the final configuration step and after this bugzilla is ready for use.&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&lt;ul&gt;&lt;li&gt;Add a Scheduled Task to run collectstats.pl nightly &lt;/li&gt;&lt;li&gt;Add a Scheduled Task to run whineatnews.pl nightly &lt;/li&gt;&lt;li&gt;Add a Scheduled Task to run whine.pl nightly. whine.pl needs to run in Perl's Taint mode. The command line needs to include the -T option e.g. C:\Perl\bin\perl.exe -T C:\apache\htdocs\bugzilla\whine.pl &lt;/li&gt;&lt;li&gt;Backup the entire Bugzilla directory &lt;/li&gt;&lt;li&gt;Backup the Bugzilla Database. It contains all the Bugs, Users, Attachments etc. Schedule the mysqldump utility to create the database dump [backup file], and add the resulting file to your backup media&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;&lt;br /&gt;If the main bugzilla page doesn't load, check that the web server is properly configured by running the perl script testserver.pl in the bugzilla folder to get an idea of what may be wrong e.g. &lt;br /&gt;&lt;pre class="brush:plain"&gt;cd \apache\htdocs\bugzilla&lt;br /&gt;perl testserver.pl http://localhost/bugzilla&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/9118736465601136234-3271849201969804351?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/3271849201969804351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-bugzilla-32.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/3271849201969804351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/3271849201969804351'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-bugzilla-32.html' title='Installing Bugzilla 3.2'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-7952419782016818481</id><published>2010-04-16T13:15:00.004+03:00</published><updated>2012-02-12T18:06:18.227+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing PHP 5.2.8</title><content type='html'>PHP stands for PHP: Hypertext Preprocessor. It refers to a scripting language mainly used for server-side scripting and the parser/engine/compiler that processes PHP code. It runs on a web server, taking PHP code as input and returning web pages/HTML as output. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Web server&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Apache HTTP server 2.2.8&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip package from PHP website, &lt;a href="http://www.php.net/downloads.php"&gt;http://www.php.net/downloads.php&lt;/a&gt;. The installer package as at version 5.2.6 doesn't seem to install correctly on Vista.&lt;/li&gt;&lt;li&gt;Create a folder C:\PHP&lt;/li&gt;&lt;li&gt;Unzip the contents of the zip package to this folder.&lt;/li&gt;&lt;li&gt;Add C:\php to the path system variable by going to Start → Settings → Control panel → System → Advanced System Settings → Advanced tab → Environment variables &lt;/li&gt;&lt;li&gt;Restart the computer&lt;/li&gt;&lt;li&gt;Make a copy of the file php.ini-recommended in C:\PHP and rename the copy as php.ini&lt;/li&gt;&lt;li&gt;Update the doc_root directive in php.ini file to the DocumentRoot path set in the Apache httpd.conf file e.g. doc_root = C:\Apache\htdocs&lt;/li&gt;&lt;li&gt;Update the extension_dir directive in php.ini file to extension_dir = C:\PHP\ext&lt;/li&gt;&lt;li&gt;Update the display_errors directive in php.ini file to display_errors = on&lt;/li&gt;&lt;li&gt;Update the date.timezone directive in php.ini e.g. date.timezone = Africa/Nairobi&lt;/li&gt;&lt;li&gt;Update the Apache httpd.conf file by adding the following lines&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;LoadModule php5_module "C:/php/php5apache2_2.dll" &lt;br /&gt;AddType application/x-httpd-php .php &lt;br /&gt;PHPIniDir "C:/php"&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Add index.php to the DirectoryIndex setting of the httpd.conf file i.e. DirectoryIndex index.html index.php&lt;/li&gt;&lt;li&gt;Restart Apache by going to Start → Programs → Apache HTTP Server 2.2 → Control Apache Server → Restart&lt;/li&gt;&lt;li&gt;Create a text file named test.php in the Apache document root path. Add the following to the file.  &amp;lt;?php phpinfo(); ?&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Open your browser and navigate to http://localhost/test.php. If a page with PHP configuration information is displayed, the PHP installation and configuration was successful.&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/9118736465601136234-7952419782016818481?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/7952419782016818481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-php-528.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/7952419782016818481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/7952419782016818481'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-php-528.html' title='Installing PHP 5.2.8'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-4317447273533118401</id><published>2010-04-16T09:38:00.000+03:00</published><updated>2010-04-16T09:38:13.526+03:00</updated><title type='text'>Installing Subversion 1.5.3</title><content type='html'>Subversion [svn] is a version control system. A class of applications also referred to as Software Configuration Management (SCM).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;None&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;VisualSVN 1.5.3&lt;br /&gt;TortoiseSVN 1.5.3&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download visualsvn server from the visualsvn website. This is a free GUI for the subversion server. It also comes with svn command line tools e.g. svn.exe&lt;/li&gt;&lt;li&gt;Download tortoisesvn from the tortoisesvn website. This is a free GUI client for subversion. It is a windows explorer extension&lt;/li&gt;&lt;li&gt;Install tortoisesvn. This will require a restart&lt;/li&gt;&lt;li&gt;Install visualsvn server. You can specify to use http on port 81 for connections using a browser. Identify the folder where the svn server will keep it's database. Use svn authentication and create a user and password.&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/9118736465601136234-4317447273533118401?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/4317447273533118401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-subversion-153.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/4317447273533118401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/4317447273533118401'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-subversion-153.html' title='Installing Subversion 1.5.3'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-1415937564117548831</id><published>2010-04-16T09:25:00.002+03:00</published><updated>2012-02-12T18:31:41.979+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Using'/><title type='text'>Using Subversion</title><content type='html'>&lt;b&gt;Creating a repository&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a new repository using visualsvn server&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In windows explorer, right click on the root directory of items you want to add to source control and select &lt;b&gt;TortoiseSVN &amp;gt; Import&lt;/b&gt;.Type the path to parent folder to create in your repository e.g. file:///C:/svn/myrepository/myfolder [don't specify the repository root path e.g. svn/myrepository]. Click on OK. This will add all files and subfolders under that folder to source control.&lt;/li&gt;&lt;li&gt;Right click on the folder again and click on &lt;b&gt;SVN Checkout&lt;/b&gt;. Note the repository URL and checkout directory and amend as appropriate.&lt;/li&gt;&lt;li&gt;Right click on the folder and select &lt;b&gt;SVN Commit&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To add only selected files or folders, in windows explorer, from any directory, right click and select TortoiseSVN &amp;gt; Repo-browser. Type the URL of the repository just created.&lt;/li&gt;&lt;li&gt;Create the directory structure you want for your repository structure. Right-click in the left pane of the repository browser and select Create folder as appropriate.&lt;/li&gt;&lt;li&gt;Click on OK to close the repository browser.&lt;/li&gt;&lt;li&gt;Right click on the folder to use as the working directory and select &lt;b&gt;SVN Checkout&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Set the repository URL e.g. file:///C:/svn/myrepository/myfolder and the checkout directory and click on OK&lt;/li&gt;&lt;li&gt;Accept any warning message that the target folder is not empty. Already existing files in the folder won't be deleted&lt;/li&gt;&lt;li&gt;To add files to source control, right click on the file and select &lt;b&gt;TortoiseSVN &amp;gt; Add&lt;/b&gt;. Click on OK to mark the file for adding to source control.&lt;/li&gt;&lt;li&gt;When finished adding files, right click on the working folder and select &lt;b&gt;SVN Commit&lt;/b&gt;. Click on OK to add the files to source control.&lt;/li&gt;&lt;li&gt;Items are now under version control&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Daily use&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To check in items, right click and select &lt;b&gt;SVN Commit&lt;/b&gt;&lt;/li&gt;&lt;li&gt;To check out, no special action is needed. SVN by default uses an update-and-merge technique rather than lock-update-check-in, so that multiple people can update the same file at the same time. If you require to lock the file so that you are the only one who can modify it, right click and select &lt;b&gt;TortoiseSVN &amp;gt; Get lock&lt;/b&gt;. Use &lt;b&gt;TortoiseSVN &amp;gt; Release lock&lt;/b&gt; when finished.&lt;/li&gt;&lt;li&gt;To get latest, right click and select &lt;b&gt;SVN update&lt;/b&gt;&lt;/li&gt;&lt;li&gt;To remove a file from version control, shift+right click on the file while viewing it from the right hand pane of windows explorer and choose the &lt;b&gt;TortoiseSVN &amp;gt; Delete (keep local)&lt;/b&gt; menu. This will mark it for deletion from svn but keep the local copy. Right click on the file and select &lt;b&gt;SVN Commit&lt;/b&gt; to effect the change. The normal TortoiseSVN &amp;gt; Delete command will immediately delete a file from the working folder. For a folder, it's marked for deletion and actually deleted when you commit. You can get a file back by browsing the repository and copying it from a previous revision, before it was deleted. Use TortoiseSVN &amp;gt; Revert to unmark an item previously marked for deletion.&lt;/li&gt;&lt;li&gt;To remove a folder from version control, right-drag the working copy onto itself. Windows explorer doesn't allow dragging items onto themselves in the same window though, so you must either use a second explorer window or drag onto the tree view. On the pop-up menu provided select &lt;b&gt;SVN Export to here&lt;/b&gt; and accept to unversion the folder. &lt;/li&gt;&lt;li&gt;To export a folder, such that a copy is made to a different location without the .svn directories, right click on the folder and select &lt;b&gt;TortoiseSVN &amp;gt; Export&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;To create a tag or branch, right click on the folder, select &lt;b&gt;TortoiseSVN  &amp;gt; Branch/tag&lt;/b&gt; and in the &lt;b&gt;To path:&lt;/b&gt; section, enter the path of the new branch/tag e.g. /tags/version2.2. The base directory e.g. tags in this case, needs to exist already.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Right-drag&lt;/b&gt;&lt;br /&gt;In Windows explorer, it is possible to move/copy files not only by dragging them with the left mouse button, but also with the right mouse button. The difference is that the left-drag executes the operation immediately, and the right-drag will first show you a context menu where you can choose the operation. TortoiseSVN adds some of its commands to that right-drag context menu.&lt;br /&gt;&lt;br /&gt;To add the files/folders to the working copy, right-drag unversioned files/folders on to a versioned folder and select &lt;b&gt;SVN Add files to this WC&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;To export items, right-drag versioned files/folders from your working copy to an unversioned folder and select one of these two commands&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SVN Export to here&lt;/b&gt;: exports the dragged files/folders to the target location, i.e. creates a copy without the .svn folders &lt;/li&gt;&lt;li&gt;&lt;b&gt;SVN Export all to here&lt;/b&gt;: exports the dragged files/folders to the target location, including unversioned files. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To move and copy your files and folders around in your working copy, right-drag files/folders inside your working copy and select one of these four commands&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SVN Move versioned files here&lt;/b&gt;: moves the files to the drop location. If a file already exists, it will ask you what to do (rename the file, overwrite it or cancel). &lt;/li&gt;&lt;li&gt;&lt;b&gt;SVN Move and rename versioned files here&lt;/b&gt;: the same as 'SVN Move versioned files here', except that it will ask for a new name for every dropped file. &lt;/li&gt;&lt;li&gt;&lt;b&gt;SVN Copy versioned files here&lt;/b&gt;: the same as 'SVN Move versioned files here' but it leaves the original file, i.e. the file is copied not moved &lt;/li&gt;&lt;li&gt;&lt;b&gt;SVN Copy and rename versioned files here&lt;/b&gt;: the same as 'SVN Move and rename versioned files here' but it leaves the original file, i.e. the files are copied not moved &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/9118736465601136234-1415937564117548831?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/1415937564117548831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-subversion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1415937564117548831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1415937564117548831'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/using-subversion.html' title='Using Subversion'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-9011843063979053877</id><published>2010-04-16T09:07:00.000+03:00</published><updated>2010-04-16T09:07:36.197+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing JasperServer 3.7.0</title><content type='html'>JasperServer is at the heart of the Jaspersoft BI suite, enabling management and distribution of reports.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;JRE [installer comes with bundled JRE]&lt;br /&gt;Tomcat [installer comes with bundled tomcat]&lt;br /&gt;MySQL [installer comes with bundled MySQL]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;JRE 1.6.0_18&lt;br /&gt;Tomcat 6.0.20&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the jasperserver installer package from sourceforge, &lt;a href="http://sourceforge.net/projects/jasperserver/files/JasperServer/"&gt;http://sourceforge.net/projects/jasperserver/files/JasperServer/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Make sure the mysql service is running&lt;/li&gt;&lt;li&gt;If you have a databases on your server named sugarcrm or foodmart,  export them to different databases. The sample databases that come with  jasperserver are stored&amp;nbsp; in these databases&lt;/li&gt;&lt;li&gt;Run the installer&lt;/li&gt;&lt;li&gt;Install to C:\jasperserver-ce-3.7.0&lt;/li&gt;&lt;li&gt;Specify to use an existing tomcat and an existing mysql&lt;/li&gt;&lt;li&gt;Start tomcat&lt;/li&gt;&lt;li&gt;Navigate to localhost:8080/jasperserver&lt;/li&gt;&lt;li&gt;Login with the username/password combination of jasperadmin/jasperadmin&lt;/li&gt;&lt;li&gt;Installation is complete&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Note that the installer package comes bundled with iReport which is a report designer for jasperreports. You need not download iReport separately.&lt;br /&gt;&lt;br /&gt;If you require to use a different application server or DBMS, download the WAR package rather than the installer. Download the jasperserver-ce-install-guide.pdf for instructions on how to set it up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9118736465601136234-9011843063979053877?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/9011843063979053877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-jasperserver-370.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/9011843063979053877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/9011843063979053877'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-jasperserver-370.html' title='Installing JasperServer 3.7.0'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-6981140144174827004</id><published>2010-04-16T08:58:00.001+03:00</published><updated>2010-06-26T17:00:31.117+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing TikiWiki 4.2</title><content type='html'>TikiWiki is an open source web-based application that does many things including collaboration and bug tracking. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Web server configured to process PHP pages&lt;br /&gt;PHP&lt;br /&gt;MySQL&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;PHP 5.2.8&lt;br /&gt;Apache 2.2.8&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip package from the tiki website, tikiwiki.org&lt;/li&gt;&lt;li&gt;Unzip the zip file to the webserver document root e.g c:\apache\htdocs&lt;/li&gt;&lt;li&gt;Rename the folder created e.g. to tiki&lt;/li&gt;&lt;li&gt;Open a command prompt window&lt;/li&gt;&lt;li&gt;Type mysql -h localhost -u root -p [assuming mysql is in the system path]&lt;/li&gt;&lt;li&gt;Enter the root password&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mysql&amp;gt; create database tiki;&lt;br /&gt;mysql&amp;gt; grant all on tiki.* to tiki@localhost identified by “tiki”;&lt;br /&gt;mysql&amp;gt;quit&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Using a browser, navigate to localhost/tiki&lt;/li&gt;&lt;li&gt;Follow the instructions of the installer&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/9118736465601136234-6981140144174827004?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/6981140144174827004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-tikiwiki-42.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6981140144174827004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6981140144174827004'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-tikiwiki-42.html' title='Installing TikiWiki 4.2'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-1952723468555852521</id><published>2010-04-16T08:53:00.001+03:00</published><updated>2010-06-26T17:01:23.360+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Palo BI Suite 3.0</title><content type='html'>Palo is an open source MOLAP server. It's primarily designed to work with excel, coming with an excel add-in. There's also an openoffice extension, palo for openoffice add-in, that can be used for integration with openoffice calc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;.NET framework 2.0&lt;br /&gt;MS Excel or OpenOffice calc&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Palo 3.0&lt;br /&gt;OpenOffice calc 3.1.0&lt;br /&gt;Palo for openoffice addin 2.0.1&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the Palo BI suite from the palo website, jedox.com&lt;/li&gt;&lt;li&gt;Run the setup file&lt;/li&gt;&lt;li&gt;Install to c:\Palo&lt;/li&gt;&lt;li&gt;Download the palo for openoffice addin from &lt;a href="http://extensions.services.openoffice.org/en/project/PaloOpenOffice"&gt;http://extensions.services.openoffice.org/en/project/PaloOpenOffice&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Start openoffice calc&lt;/li&gt;&lt;li&gt;Select the Tools | Extension manager menu&lt;/li&gt;&lt;li&gt;Click on the Add button and select the PalOOCa.oxt file downloaded.&lt;/li&gt;&lt;li&gt;Close calc after the addin has installed&lt;/li&gt;&lt;li&gt;Open calc&lt;/li&gt;&lt;li&gt;You'll have a new menu in the menu bar named Palo&lt;/li&gt;&lt;li&gt;Click on the Palo | Modeler menuClick on the edit connection icon to edit the details for the localhost connection. Set the port to 7921, username to admin and password to admin.&lt;/li&gt;&lt;li&gt;Click on the connect to server icon to connect to the server on localhost.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;To connect to a mondrian schema, and use OpenOffice to browse mondrian olap cubes,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click on the Palo | Modeler menu&lt;/li&gt;&lt;li&gt;Click on the create connection icon. Fill the following for the host and port, or similar values corresponding to the mondrian server setup&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;Host – localhost:8080&lt;br /&gt;Port – mondrian/xmla&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Click on the connect to server icon to connect to the mondrian server&lt;/li&gt;&lt;li&gt;Click on close once the connection is established&lt;/li&gt;&lt;li&gt;Click on the Palo | Insert View menu&lt;/li&gt;&lt;li&gt;Select the appropriate database and dimensions to view then click on the create button&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/9118736465601136234-1952723468555852521?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/1952723468555852521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-palo-bi-suite-30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1952723468555852521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1952723468555852521'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/installing-palo-bi-suite-30.html' title='Installing Palo BI Suite 3.0'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-251033666231117793</id><published>2010-04-16T08:39:00.000+03:00</published><updated>2010-04-16T08:39:08.718+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Upgrading'/><title type='text'>Upgrading Mantis</title><content type='html'>Based on the upgrading section of the mantis manual.&lt;br /&gt;&lt;a href="http://www.mantisbt.org/manual/manual.installation.upgrading.php"&gt;http://www.mantisbt.org/manual/manual.installation.upgrading.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Upgrade from 1.1.6 to 1.2.0&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Backup the mantis database&lt;/li&gt;&lt;li&gt;Backup the mantis directory on the web server&lt;/li&gt;&lt;li&gt;Rename the file c:\apache\htdocs\mantis\mantis_offline.php.sample to mantis_offline.php &lt;/li&gt;&lt;li&gt;Unzip the latest mantis package to a temporary folder e.g. C:\temp&lt;/li&gt;&lt;li&gt;Copy the contents of c:\temp\mantisbt-1.2.0 to the web server e.g. C:\apache\htdocs\mantis, replacing all existing files and folders&lt;/li&gt;&lt;li&gt;Delete the file c:\apache\htdocs\mantis\core\my_view_inc.php&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost/mantis/admin/install.php&lt;/li&gt;&lt;li&gt;Supply a database username and password to use to upgrade the database&lt;/li&gt;&lt;li&gt;Click on the install/upgrade database button&lt;/li&gt;&lt;li&gt;Installation should be successful &lt;/li&gt;&lt;li&gt;Confirm the installation status by navigating to localhost/mantis/admin/check.php&lt;/li&gt;&lt;li&gt;Delete the file c:\apache\htdocs\mantis\mantis_offline.php. It may be appropriate to delete all old files from the previous version (those which haven't been replaced because they no longer exist in the new version) &lt;/li&gt;&lt;li&gt;Delete the folder c:\apache\htdocs\mantis\admin&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost/mantis to log in and use the latest version of mantis&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/9118736465601136234-251033666231117793?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/251033666231117793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/04/upgrading-mantis.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/251033666231117793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/251033666231117793'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/04/upgrading-mantis.html' title='Upgrading Mantis'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-1554331603225613286</id><published>2010-03-23T20:28:00.001+03:00</published><updated>2010-04-16T08:40:25.443+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing SquirrelMail 1.4.20 RC2</title><content type='html'>SquirrelMail is an application that provides web-based access to POP or IMAP email servers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequsites&lt;/b&gt;&lt;br /&gt;Web server enabled to server php pages&lt;br /&gt;PHP&lt;br /&gt;Email server&lt;br /&gt;Perl&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Apache 2.2.8&lt;br /&gt;PHP 5.2.8&lt;br /&gt;Hmailserver 5.3&lt;br /&gt;Perl 2.6&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the zip package from the website, squirrelmail.org&lt;/li&gt;&lt;li&gt;Extract the zip file to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;Create a new folder named squirrelmail in the webroot folder of the web server e.g. In c:\apache\htdocs&lt;/li&gt;&lt;li&gt;Copy the contents of c:\temp\squirrelmail-1.4.20-RC2 to c:\apache\htdocs\squirrelmail&lt;/li&gt;&lt;li&gt;Create the folders c:\squirrelmail\data and c:\squirrelmail\attachments&lt;/li&gt;&lt;li&gt;Open a command prompt window and change directory to c:\apache\htdocs\squirrelmail\config&lt;/li&gt;&lt;li&gt;Type perl conf.pl&lt;/li&gt;&lt;li&gt;A menu driven command interface is displayed&lt;/li&gt;&lt;li&gt;Review the different options. Modify the server settings [domain name, imap server, smtp server [use IP e.g. 127.0.0.1 for the last two]] and general settings [data directory, attachment directory. Set them to the directories created above]&lt;/li&gt;&lt;li&gt;Save data when finished and quit&lt;/li&gt;&lt;li&gt;This will create a new file, c:\apache\htdocs\squirrelmail\config\config.php with the appropriate config information&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost/squirrelmail&lt;/li&gt;&lt;li&gt;To log in, use the credentials of an available email account on the configured mail server&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/9118736465601136234-1554331603225613286?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/1554331603225613286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-squirrelmail-1420-rc2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1554331603225613286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1554331603225613286'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-squirrelmail-1420-rc2.html' title='Installing SquirrelMail 1.4.20 RC2'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-3372190130705539672</id><published>2010-03-23T20:25:00.003+03:00</published><updated>2012-02-12T16:57:51.416+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Roundcube 0.3.1</title><content type='html'>Roundcube is an application that provides web-based access to IMAP email servers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Web server with php configured&lt;br /&gt;PHP&lt;br /&gt;Email server&lt;br /&gt;RDBMS&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Apache 2.2.8&lt;br /&gt;PHP 5.2.8&lt;br /&gt;Hmailserver 5.3&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the roundcube tar.gzip package from the roundcube website, roundcube.net&lt;/li&gt;&lt;li&gt;Unzip the zip and tar to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;Create a new folder named roundcubemail in the webroot folder of the web server e.g. In c:\apache\htdocs&lt;/li&gt;&lt;li&gt;copy the contents of c:\temp\roundcubemail-0.3.1 to c:\apache\htdocs\roundcubemail&lt;/li&gt;&lt;li&gt;Open a command prompt window&lt;/li&gt;&lt;li&gt;Type mysql -u root -p&lt;/li&gt;&lt;li&gt;Enter the password for the mysql root user&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mysql&amp;gt; create database roundcube;&lt;br /&gt;mysql&amp;gt; grant all privileges on roundcube.* to roundcube@localhost identified by "roundcube";&lt;br /&gt;&amp;gt; quit&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Using a browser, navigate to localhost/roundcubemail/installer/&lt;/li&gt;&lt;li&gt;Click on the start installation button&lt;/li&gt;&lt;li&gt;Click on the next button&lt;/li&gt;&lt;li&gt;Disable spell checking, set details for the database and IMAP server&lt;/li&gt;&lt;li&gt;Click on the create config button&lt;/li&gt;&lt;li&gt;Create a new file named main.inc.php in c:\apache\htdocs\roundcubemail\config and paste the contents of the main.inc.php section to it&lt;/li&gt;&lt;li&gt;Edit this file, main.inc.php, setting the smtp authentication details [for servers that require smtp authentication].&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:php"&gt;// SMTP username (if required) if you use %u as the username RoundCube&lt;br /&gt;// will use the current username for login&lt;br /&gt;$rcmail_config['smtp_user'] = 'valid user account';&lt;br /&gt;&lt;br /&gt;// SMTP password (if required) if you use %p as the password RoundCube&lt;br /&gt;// will use the current user's password for login&lt;br /&gt;$rcmail_config['smtp_pass'] = 'valid password';&lt;br /&gt;&lt;br /&gt;// SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use&lt;br /&gt;// best server supported one)&lt;br /&gt;$rcmail_config['smtp_auth_type'] = 'LOGIN';&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Create a new file named db.inc.php in c:\apache\htdocs\roundcubemail\config and paste the contents of the db.inc.php section to it&lt;/li&gt;&lt;li&gt;Click on the continue button&lt;/li&gt;&lt;li&gt;Click on the initialize database button&lt;/li&gt;&lt;li&gt;Fill in appropriate details for testing smtp settings and click on the send test mail button&lt;/li&gt;&lt;li&gt;Fill in appropriate details for testing the imap configuration and click on the check login button&lt;/li&gt;&lt;li&gt;Open a new browser window and navigate to localhost/roundcubemail&lt;/li&gt;&lt;li&gt;Log in with details of a valid email account&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/9118736465601136234-3372190130705539672?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/3372190130705539672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-rouncube-031.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/3372190130705539672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/3372190130705539672'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-rouncube-031.html' title='Installing Roundcube 0.3.1'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-1817062171320494085</id><published>2010-03-23T20:20:00.001+03:00</published><updated>2010-04-16T08:41:26.782+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing phpMyAdmin 3.1.1</title><content type='html'>phpMyAdmin is a web-based application used to administer MySQL databases.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Web server configured to process PHP pages&lt;br /&gt;PHP&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;PHP 5.2.8&lt;br /&gt;Apache&amp;nbsp; 2.2.8&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the package from the phpMyAdmin website, phpmyadmin.net. &lt;/li&gt;&lt;li&gt;Unzip the package to a folder in the web server's document root, e.g. phpMyAdmin &lt;/li&gt;&lt;li&gt;Create a folder named config in this home folder&lt;/li&gt;&lt;li&gt;Navigate to http://yourserver/phpmyadmin/setup/ to set up the config.inc.php file in the config folder&lt;/li&gt;&lt;li&gt;Click on the New Server to specify the details of the MySQL server to administer. Specify the hostname for the server. Other options can be left as default. Save these options.&lt;/li&gt;&lt;li&gt;Save the new configuration&lt;/li&gt;&lt;li&gt;Edit the newly created file ./config/config.inc.php. Change the blowfish_secret value to a different string that must contain numbers, letters and special characters e.g. my2blowfish$ecret.&lt;/li&gt;&lt;li&gt;Move the file to the root of the phpmyadmin directory.&lt;/li&gt;&lt;li&gt;The installation is complete and you can navigate to yourwebserver/phpmyadmin to start using it. Login with a valid MySQL login to the server configured for administration.&lt;/li&gt;&lt;li&gt;If you are upgrading your installation, copy the config.inc.php file to your new installation/folder.&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/9118736465601136234-1817062171320494085?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/1817062171320494085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-phpmyadmin-311.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1817062171320494085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/1817062171320494085'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-phpmyadmin-311.html' title='Installing phpMyAdmin 3.1.1'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-8056032844144342731</id><published>2010-03-23T20:15:00.002+03:00</published><updated>2010-06-26T17:05:21.836+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Mantis 1.1.6</title><content type='html'>Mantis is an open source web-based bug tracking system. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Web server configured to process PHP pages&lt;br /&gt;PHP&lt;br /&gt;MySQL&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;PHP – 5.2.8&lt;br /&gt;Apache -&amp;nbsp; 2.2.8&lt;br /&gt;Mantis – 1.1.6&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the package from the mantis website, mantisbt.org&lt;/li&gt;&lt;li&gt;Unzip the package to a folder in the web server's document root, e.g. Mantis&lt;/li&gt;&lt;li&gt;Create a database on the MySQL server e.g.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;mysql&amp;gt; create database mantis;&lt;br /&gt;mysql&amp;gt; grant all on mantis.* to mantis@localhost identified by 'password';&lt;br /&gt;mysql&amp;gt; flush privileges;&lt;br /&gt;mysql&amp;gt; quit;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Open your browser and navigate to yourserver/mantis/admin/install.php. This will run the installer. Provide database connection details&lt;/li&gt;&lt;li&gt;Installation is complete. Login as the admin user with the username administrator and password root. Change the default password once logged in.&lt;/li&gt;&lt;li&gt;Delete the \mantis\admin folder so that install scripts are not re-run by mistake.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Configuring mantis&lt;/b&gt;&lt;br /&gt;To configure mantis e.g. to send email, edit the c:\apache\mantis\config_inc.php file. Add the following. &lt;br /&gt;&lt;pre class="brush:php"&gt;// Setting up the mail &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_phpMailer_method='2'; //smtp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_smtp_host='smtp.server.address';&lt;br /&gt;&lt;br /&gt;//for smtp authentication. If not required, set to ''&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_smtp_username='email address';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_smtp_password='password';&lt;br /&gt;&lt;br /&gt;// Configure email addresses system &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_administrator_email='email address';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_webmaster_email=$g_administrator_email; //shown on mantis pages&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_from_email='email address'; //from address for emails generated by mantis&lt;br /&gt;$g_from_name= 'Mantis Bug Tracker';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_return_path_email='email address';&lt;br /&gt;&lt;br /&gt;// Setting the language and date format&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_default_language='english';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_short_date_format='d-m-Y';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_normal_date_format='d-m-Y H:i';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_complete_date_format='d-m-Y H:i';&lt;br /&gt;// Customizing Mantis&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $g_window_title='My Mantis';&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/9118736465601136234-8056032844144342731?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/8056032844144342731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-mantis-116.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/8056032844144342731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/8056032844144342731'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-mantis-116.html' title='Installing Mantis 1.1.6'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-2302783277560360832</id><published>2010-03-23T20:05:00.001+03:00</published><updated>2010-04-16T08:42:14.982+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing AtMail open 1.03</title><content type='html'>AtMail is an application that provides web-based access to IMAP email servers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;Web server with php configured&lt;br /&gt;PHP&lt;br /&gt;Email server&lt;br /&gt;RDBMS&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions used&lt;/b&gt;&lt;br /&gt;Apache 2.2.8&lt;br /&gt;PHP 5.2.8&lt;br /&gt;Hmailserver 5.3&lt;br /&gt;MySQL 5.0.45&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the installation package from artmail.org&lt;/li&gt;&lt;li&gt;Unzip the zip and tar to a temporary location e.g. C:\temp&lt;/li&gt;&lt;li&gt;Create a new folder named atmail in the webroot folder of the web server e.g. In c:\apache\htdocs&lt;/li&gt;&lt;li&gt;Copy the contents of c:\temp\atmail to c:\apache\htdocs\atmail&lt;/li&gt;&lt;li&gt;Using a browser, navigate to localhost/atmail&lt;/li&gt;&lt;li&gt;Follow the configuration steps given&lt;/li&gt;&lt;li&gt;Log in using appropriate email details&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/9118736465601136234-2302783277560360832?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/2302783277560360832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-atmail-open-103.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/2302783277560360832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/2302783277560360832'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-atmail-open-103.html' title='Installing AtMail open 1.03'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-6155287790251736447</id><published>2010-03-23T19:29:00.008+03:00</published><updated>2012-02-12T18:49:28.853+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Installing'/><title type='text'>Installing Apache HTTP server 2.2.8</title><content type='html'>Apache HTTP server is an open source web server.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;br /&gt;None&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps&lt;/b&gt; &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download package from Apache HTTP server website, http://httpd.apache.org/&lt;/li&gt;&lt;li&gt;Uninstall any previously installed version of Apache and delete all the folders where Apache was installed.&lt;/li&gt;&lt;li&gt;Ensure no service is listening to port 80. Stop/disable any that are, e.g. IIS, Skype. This isn't mandatory as the port that Apache will listen to can be updated after the installation is done.&lt;/li&gt;&lt;li&gt;Run the installer.&lt;/li&gt;&lt;li&gt;On the Server Information page, put in “localhost” for the network domain and server name. Put anything for the administrator's address e.g. admin@localhost.com. Leave the default selection to install for all users to port 80 as a service.&lt;/li&gt;&lt;li&gt;Click Next and choose Typical Installation&lt;/li&gt;&lt;li&gt;Click Next and change the destination folder to C:\Apache instead of the default installation path. This is to avoid permission inconveniences when making updates if one installs to the Program Files folder.&lt;/li&gt;&lt;li&gt;The Apache Service Monitor [feather icon] should show on the task bar after installation is complete.&lt;/li&gt;&lt;li&gt;Navigate to http://localhost. If the page says “It works!”, then installation was successful.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;To change the port on which Apache should listen e.g. if IIS was already listening on port 80 and it isn't desired to change this, update the httpd.conf file in the conf directory within the Apache install path. Change instances of port 80 to another unused port e.g. 8080. The editor needs to be run as administrator to be able to save the changes if installation was done to the Program Files folder. Restart Apache using the Apache monitor and navigate to http://localhost:8080 to confirm the changes work OK.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Setting up SSL (for https access)&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create an environment variable named &lt;b&gt;OPENSSL_CONF&lt;/b&gt; with the value &lt;b&gt;C:\Apache\conf\openssl.cnf&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Open a command prompt window and navigate to c:\apache\bin&lt;/li&gt;&lt;li&gt;Type the following command sequence&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;openssl genrsa -des3 -out server.key 1024&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Provide a pass phrase when prompted (4-500 characters)&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;openssl rsa -in server.key -out server.pem&lt;br /&gt;openssl req -new -key server.key -out server.csr&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;After providing the passphrase, provide the requested information. Set the common name to localhost (or the fully qualified domain name for the web server). The other fields can be set as appropriate or left blank. Leave the extra information fields blank.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;openssl x509 -req -days 999 -in server.csr -signkey server.key -out server.crt&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Copy the files &lt;b&gt;server.crt&lt;/b&gt; and &lt;b&gt;server.pem&lt;/b&gt; from the c:\apache\bin folder to the c:\apache\conf folder&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edit the c:\apache\conf\http.conf file&lt;/li&gt;&lt;li&gt;Uncomment the line for loading the ssl module&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;LoadModule ssl_module modules/mod_ssl.so&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Uncomment the line that includes ssl configuration&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;Include conf/extra/httpd-ssl.conf&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edit the c:\apache\conf\extra\httpd-ssl.conf&lt;/li&gt;&lt;li&gt;Set the SSLCertificateKeyFile attribute&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;SSLCertificateKeyFile "C:/Apache/conf/server.pem"&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Also ensure the SSLCertificateFile attribute points to the server.crt file just created&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush:plain"&gt;SSLCertificateFile "C:/Apache/conf/server.crt"&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Restart apache and try to access a website via https e.g. https://localhost/myapp/ (no need to specify the port number e.g. https://localhost/443/myapp)&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/9118736465601136234-6155287790251736447?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/6155287790251736447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-apache-http-server-228.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6155287790251736447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/6155287790251736447'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/03/installing-apache-http-server-228.html' title='Installing Apache HTTP server 2.2.8'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9118736465601136234.post-7541740404772377135</id><published>2010-01-15T18:14:00.015+03:00</published><updated>2010-05-20T20:18:19.623+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Convert multiple m4a files to mp3</title><content type='html'>Use VLC media player called from a batch file. Slight modification of &lt;a href="http://wiki.videolan.org/How_to_Batch_Encode"&gt;a VLC wiki entry&lt;/a&gt;. It's &lt;a href="http://www.gnu.org/licenses/gpl.html"&gt;GPLed&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Versions used&lt;/span&gt;&lt;br /&gt;VLC media player - 0.9.2&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:plain"&gt;rem @ECHO OFF&lt;br /&gt;rem batch convert m4a files to mp3 (128kb/s encoding with 44100 sampling frequency)&lt;br /&gt;&lt;br /&gt;FOR /R %%G IN (*.m4a) DO (CALL :SUB_VLC "%%G")&lt;br /&gt;FOR /R %%G IN (*.m4a.mp*) DO (CALL :SUB_RENAME "%%G")&lt;br /&gt;GOTO :eof&lt;br /&gt;&lt;br /&gt;:SUB_VLC&lt;br /&gt;SET _firstbit=%1&lt;br /&gt;SET _qt="&lt;br /&gt;CALL SET _newnm=%%_firstbit:%_qt%=%%&lt;br /&gt;SET _commanm=%_newnm:,=_COMMA_%&lt;br /&gt;REM echo %_commanm%&lt;br /&gt;CALL "C:\Program Files\VideoLAN\VLC\vlc" -I dummy -vvv %1 --sout=#transcode{acodec="mp3",ab="128","channels=2",samplerate="44100"}:standard{access="file",mux="raw",dst="%_commanm%.mp3"} vlc://quit&lt;br /&gt;GOTO :eof&lt;br /&gt;&lt;br /&gt;:SUB_RENAME&lt;br /&gt;SET _origfnm=%1&lt;br /&gt;SET _endbit=%_origfnm:*.m4a=%&lt;br /&gt;CALL SET _newfilenm=%%_origfnm:.m4a%_endbit%=.mp3%%&lt;br /&gt;SET _newfilenm=%_newfilenm:_COMMA_=,%&lt;br /&gt;COPY %1 %_newfilenm%&lt;br /&gt;DEL %1&lt;br /&gt;GOTO :eof&lt;br /&gt;&lt;br /&gt;:eof&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/9118736465601136234-7541740404772377135?l=smileybits.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://smileybits.blogspot.com/feeds/7541740404772377135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://smileybits.blogspot.com/2010/01/convert-multiple-m4a-files-to-mp3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/7541740404772377135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9118736465601136234/posts/default/7541740404772377135'/><link rel='alternate' type='text/html' href='http://smileybits.blogspot.com/2010/01/convert-multiple-m4a-files-to-mp3.html' title='Convert multiple m4a files to mp3'/><author><name>smileybits</name><uri>http://www.blogger.com/profile/16511216540829381827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
