This is a simple post of how to install the Birt reporting engine on Linux. In this example I am installing on Linux Mint 18.1 but the same will apply to other versions and distros based on Debian/Ubuntu.
You can use your package manager or the command line apt-get tool.
Step 1: Install Apache2 and Mysql
Apache 2 is the web server of choice for a lot of Linux installations. Mysql is a free database engine. I would assume that these tools would already be installed on your system by the time you wanted to get birt up and running.
$ sudo apt-get install apache2 mysql-server
Step 2: Install Tomcat8
At the time of writing, this is the latest version of Tomcat
$ sudo apt-get install tomcat8
Step 3: Webapps folder
This is generally downloaded from the Birt-eclipse website (http://download.eclipse.org/birt/downloads/#runtime). Unzip the file, the folder we're interested in is the WebViewerExample, you can rename this as you wish and copy or link it under /var/lib/tomcat8/webapps/
Step 4: jdbc driver
For MySQL:
$ sudo apt-get install libmysql-java
For Microsoft SQL Server, download from SourceForge https://sourceforge.net/projects/jtds/, unzip the file, copy the jtds-*.jar file to /var/lib/tomcat8/lib
Step 5 restart birt
$ sudo service tomcat8 restart
Additional Steps
Assuming you're using Eclipse to design the report, you will need to install the mysql driver into that, the download for the jar file is here https://dev.mysql.com/downloads/connector/j/
Monday, 5 June 2017
Wednesday, 6 January 2016
MySQL Workbench Delimiter gotcha
I found a problem when working with MySQL Workbench and using a delimiter other than the standard semi colon.
The above 700 line SQL script appears to have run without error, only problem is that I have changed the delimiter to "$$" and forgotten to append that after the last statement in the script (create table). Looking closely at the result output you can see that the last statement executed was not the create table one.
So there's one thing to look out for, remember to put the last delimiter in.
The above 700 line SQL script appears to have run without error, only problem is that I have changed the delimiter to "$$" and forgotten to append that after the last statement in the script (create table). Looking closely at the result output you can see that the last statement executed was not the create table one.
So there's one thing to look out for, remember to put the last delimiter in.
Wednesday, 8 July 2015
Enabling remote access for MySQL
When you
install MySQL, only local access is enabled by default. Remote access is
restricted in 2 ways:
In the
config file /etc/mysql/my.cnf
Comment out the bind-address
line:
#bind-address = 127.0.0.1
User access
To enable the ruser from
anywhere, you must use the grant command:
mysql> GRANT ALL PRIVILEGES ON *.* TO
'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Replacing 'USERNAME' and password 'PASSWORD' with your own values of course.
After modifying the config file,
you must restart the mysql service:
$ service mysql restart
Don't forget to use
"sudo" (or su) if you're not logged in as root.
Wednesday, 7 May 2014
Internet Explorer startup window position
One of my clients' servers that I log onto remotely had IE9 on it, being the only browser installed on that machine and being as I'm supporting a web based app for them I have no choice but to use such abomination.
I was quite annoyed in the way it always started up in the same position on the screen, quite like a postage stamp on my 1080p screen. Every time I would have to resize the window. I didn't want to maximize it as there are some icons down the left of the screen that I use to launch other things as well and a maximized IE window would cover them up.
I tried all the usual tricks to coax IE to save its window position, pressing Ctrl whilst exiting, pressing Shift whilst exiting all to no avail.
Finally I found this post from Microsoft MVP Don Varnau, basically you need to open a page in a new window, resize that, close the old window then close the new window.
This strikes me as a little odd, as a programmer I know it would take a lot more effort to program this behaviour into a system than it would to simply save the main window position on exit. What the thinking was behind that I'll never know, I can only imagine how that meeting went :-\
I was quite annoyed in the way it always started up in the same position on the screen, quite like a postage stamp on my 1080p screen. Every time I would have to resize the window. I didn't want to maximize it as there are some icons down the left of the screen that I use to launch other things as well and a maximized IE window would cover them up.
I tried all the usual tricks to coax IE to save its window position, pressing Ctrl whilst exiting, pressing Shift whilst exiting all to no avail.
Finally I found this post from Microsoft MVP Don Varnau, basically you need to open a page in a new window, resize that, close the old window then close the new window.
This strikes me as a little odd, as a programmer I know it would take a lot more effort to program this behaviour into a system than it would to simply save the main window position on exit. What the thinking was behind that I'll never know, I can only imagine how that meeting went :-\
Tuesday, 8 April 2014
Local mail in Linux and Mutt
Linux has a local mail system, it probably won't be of much interest to you in terms of day to day email since you probably have email set up with your ISP, Yahoo, Google, etc.
One thing that you may be interested in is administrative alerts that are sent to the root mailbox, invalid password attempts, results of cron jobs, etc.
I found the easiest way to view this mail is to install mutt, I'm currently running Linux Mint 16 but the process detailed below will be the same for other versions, Ubuntu, Debian and their derivatives.
Firstly install mutt:
$ sudo apt-get install mutt
Any time that you want to view root's email just type:
$ sudo mutt
You will then see the root mailbox. You might find your own mailbox is inaccessible, probably because it doesn't exist yet :-) This is easily remedied with a few simple command
Assuming your username is "jones", we create an empty file of that name:
$ sudo touch /var/mail/jones
Then we want to make sure that jones can use it, so assign ownership to yourself:
$ sudo chown jones /var/mail/jones
Now you own, you can change the permission so that only you can use it.
$ chmod 600 /var/mail/jones
Now you can use mutt yourself.
One thing that you may be interested in is administrative alerts that are sent to the root mailbox, invalid password attempts, results of cron jobs, etc.
I found the easiest way to view this mail is to install mutt, I'm currently running Linux Mint 16 but the process detailed below will be the same for other versions, Ubuntu, Debian and their derivatives.
Firstly install mutt:
$ sudo apt-get install mutt
Any time that you want to view root's email just type:
$ sudo mutt
You will then see the root mailbox. You might find your own mailbox is inaccessible, probably because it doesn't exist yet :-) This is easily remedied with a few simple command
Assuming your username is "jones", we create an empty file of that name:
$ sudo touch /var/mail/jones
Then we want to make sure that jones can use it, so assign ownership to yourself:
$ sudo chown jones /var/mail/jones
Now you own, you can change the permission so that only you can use it.
$ chmod 600 /var/mail/jones
Now you can use mutt yourself.
Monday, 7 April 2014
Installing Phonegap on Linux
Installing Phonegap on Linux
Introduction
Phonegap will enable you to write
mobile apps in HTML/CSS/JavaScript and then deploy to multiple mobile targets
including Android and iOS. This document will outline the installation
procedure for Linux Mint. I did this on Linux Mint 16 but the process should be
similar or the same for other versions too. Also, since Linux Mint is based
upon Ubuntu, which in turn is based upon Debian, this may work (or help) on
those distros and derivatives as well. For other flavours of Linux you should
consult the relevant documentation as the overall process will be similar but
the commands for installing programs will be different (e.g. rpm, aptitude and
yum as opposed to apt-get).
You can get this installed on Windows as well, but I found the emulator to run very slowly, even with the HAXM hardware virtualisation.
Install Pre-requisites
There’s a lot, I found this wasn’t
all documented in the same place and I had to Google error messages, etc. to find
solutions.
Install Apache Ant
A Java library and build tool
required by Phonegap.
$ sudo apt-get install ant
Install Java Development SDK (JDK)
The Java Development Kit.
$ sudo apt-get install openjdk-7-jdk
This may change to openjdk-8-jdk in later Linux editions, Linux Mint 18 uses this number.
This may change to openjdk-8-jdk in later Linux editions, Linux Mint 18 uses this number.
Install Android SDK
Download package relevant to your
system. Unzip the file into your home folder, e.g. /home/username/android-sdk-linux
Set up environment
Edit your .bashrc file:
$ gedit ~/.bashrc
Add the lines to point variables
at the installed apps, e.g.
JAVA_HOME=/usr/lib/jvm/default-java
ANDROID_HOME=$HOME/android-sdk-linux
ANDROID_HOME=$HOME/android-sdk-linux
PATH=$PATH:$JAVA_HOME/bin:$ANDROID_HOME/tools
You may need to add your bin
folder to the path as well, it may already be there, if not then add “:$HOME/bin”
to the path, e.g.
if [ -d “$HOME/bin” ] ; then
PATH=$HOME/bin :$PATH
fi
PATH=$HOME/bin :$PATH
fi
Update Android SDKs
Open terminal and run the android
sdk manager:
$ android &
Select packages if required, what
you need should already be selected apart from “Intel x86 Atom System Image”
(this will work better than emulating an ARM chip later), you may want install
earlier versions also. Click the [Install (n) Packages] button. This may take a
while, you’ll probably have time to grow some coffee beans, let alone make a
cup. Luckily, as this is a multitasking operating system, you can go onto the
next step whilst this one is completing. Once complete you may find there are
still some packages to install, click on the [Install (n) Packages] button
again.
Back in the terminal, if you
didn’t start android in the background (& parameter) then there’ll be no prompt, in this case
press Ctrl+Z to pause android then enter the command bg:
$ bg
This will allow android to run in
the background.
Install npm:
Node Packaged Modules
$ sudo apt-get install npm
Install Phonegap
$ sudo npm install -g phonegap
Install NodeJS
$ sudo apt-get install nodejs
Install ia32 libs
$ sudo apt-get install ia32-libs
Install adb
$ sudo apt-get install
android-tools-adb
Fool OS into thinking nodejs is node
There are two packages in the
Ubuntu repository that go by the name node, node is an amateur packet radio
program and nodejs is an event based server side JavaScript engine.
Unfortunately most nodejs programs will expect to use a binary called “node” so
we link that back to nodejs, thus:
$ sudo ln -s /usr/bin/nodejs
/usr/local/bin/node
As an aside, it’s probably better
to not try this development on a PC where the amateur packet radio program
“node” is installed or required since you may run into some compatibility
issues.
Install hardware virtualisation helpers.
Emulating an android device without
hardware virtualisation will be a slow and painful experience
$ sudo apt-get install qemu kvm
Create an AVD
Create an AVD (Android Virtual
Device) to test the apps on, to do this go back to the Android SDK Manager
(hopefully it will finish downloading/installing before you use it) go to Tools
-> Manage AVDs. Add a new one
- Click the [New…] button. Give it a name, e.g. “nexus”
- Select device (e.g. Nexus 7).
- Select target (API Level, your choice).
- Select CPU (Intel Atom will work best with hardware virtualisation, you can select ARM if you want but it will be slower, much slower)
- Select a skin, your preference.
- Optionally select camera(s). Mine crashed when I tried to use it but you may get lucky, you can select Emulated as the camera, it will work but the pictures won’t actually be real.
- Optionally change memory options from defaults, you will need to enter a number in the SD Card if you want to use the camera.
- Optionally tick [Use Host GPU], this may help the graphics redraw rate if you have a decently powered GPU, I’ve not really noticed a difference yet.
- Press OK to save.
Don’t start the AVD yet otherwise
it will start in emulation mode and be quite slow. If you don’t have a bin
directory in your home directory then create one, the next time bash starts, it
will add it to your path if it exists. Create a script file to start the AVD :
$ gedit ~/bin/nexus
Enter the following text:
#!/bin/sh
echo Starting Nexus…
emulator –avd nexus –qemu –enable-kvm &
echo Starting Nexus…
emulator –avd nexus –qemu –enable-kvm &
Save and exit gedit, make the file
executable:
$ chmod +x ~/bin/nexus
You can also get a bit more
elaborate and have that script start any AVD you want, e.g.
#!/bin/bash
if [ "$1" == "" ]; then
avd=nexus
echo No parameter specified, defaulting to $avd
if [ "$1" == "" ]; then
avd=nexus
echo No parameter specified, defaulting to $avd
else
avd=$1
fi
echo Starting android avd $avd
emulator -avd $avd -qemu -enable-kvm &
avd=$1
fi
echo Starting android avd $avd
emulator -avd $avd -qemu -enable-kvm &
This script will fail if you have
set the chosen AVD to have an ARM chip but you can also start the AVD from the
Android Virtual Device Manager, although bear in mind that when you do this,
the manager will not want to exit until the emulator is closed.
By now, you should have an Android
emulator up and running
With that, you should be good to
go, swipe to unlock the android device and create a phonegap app:
$ phonegap create myApp
$ cd myApp
$ phonegap run android
Addendum (28th Feb 2016):
With recent updates to phonegap, you may receive an error message saying it cannot find the module "bplist-parser", you can remedy this by installing it with the following command:
$ npm install -g bplist-parser
Monday, 16 December 2013
SQL Server Database Engine Tuning Advisor
I noticed a problem whilst doing some routine tuning. I had a query that I wanted to improve as the profiler told me it was doing a lot of work. I ran this through the Database Engine Tuning Advisor (DETA) but I guess I must have started it up wrong.
I was in another copy of the database when I was looking at this query (the two databases were identical in both structure and data). I then fired up DETA, which had selected "DatabaseB", I de-selected this and selected "DatabaseA" and ran the analysis.
The result came back, no improvement, no recommendations. I was surprised by this as I was expecting some index suggestions, I opened the view in design mode and examined the indices on the tables myself and saw what IMHO was quite a lack of at least 2 indices that I would have though would speed things up.
Curiously, I logged the Management Studio onto DatabaseA and ran it again, 2 indices suggested and 99% improvement estimated.
So it would seem that you should choose your database before firing up DETA or it would (I suspect) still run the query in the original database it was launched from but only examine tables from the selected database.
I was in another copy of the database when I was looking at this query (the two databases were identical in both structure and data). I then fired up DETA, which had selected "DatabaseB", I de-selected this and selected "DatabaseA" and ran the analysis.
The result came back, no improvement, no recommendations. I was surprised by this as I was expecting some index suggestions, I opened the view in design mode and examined the indices on the tables myself and saw what IMHO was quite a lack of at least 2 indices that I would have though would speed things up.
Curiously, I logged the Management Studio onto DatabaseA and ran it again, 2 indices suggested and 99% improvement estimated.
So it would seem that you should choose your database before firing up DETA or it would (I suspect) still run the query in the original database it was launched from but only examine tables from the selected database.
Subscribe to:
Posts (Atom)
