If you want to compare if plain old java objects have the same properties, it is easiest to override the equals method. This way, if you initialise objects on different places, you can be certain when comparing that they are the same.
We will show you how to do it with this simple class:
public class Insect
private int legs;
private int eyes;
private int colour;
private String sortName;
public boolean equals(Object o)
if (this == o)
if (o == null || this.getClass() != o.getClass())
final Insect that = (Insect) o;
if (this.legs != that.legs)
if (this.eyes != that.eyes)
if (this.colour != that.colour)
if (this.sortName != null ? (this.sortName != that.sortName) : (that.sortName != null))
public int hashCode()
int hash = super.hashCode();
hash = 14 * hash + this.legs;
hash = 14 * hash + this.eyes;
hash = 14 * hash + this.colour;
hash = 14 * hash + (this.sortName != null ? this.sortName.hashCode() : 0);
They introduced a whole new layout. This is a short post to help you load routes in Sygic 14+.
Continue reading “Loading routes in Sygic 14”
After visiting Microsoft Cloud Camp in Brussels last week I wanted to dive into android developing by using Microsoft Azure.
I wanted to store images on a storage account, and since I didn’t use Gradle or Maven, I had some issues getting it to work. In the end, this is quick guide how I did it.
On github you can find the Microsoft Azure Storage SDK for Android. I checked out the project information on the maven-repository. I had to download the com.fasterxml.jackson.core since that was a dependency I wasn’t yet using.
On the repository URL I found the azure-storage-android-0.3.1.aar file. You need to download it and open it with a ZIP client. The classes.jar file is the library you need to put in your libs folder. I renamed it to azure-storage-android-0.3.1.jar. I also put the azure-storage-android-0.3.1-sources.jar in the libs folder.
For uploading an image to a storage account, this is a code example. Remember to execute it in an Async Task!
The image object is returned after pushing it to an Azure Mobile Service and contains the sasQueryString to authorize the upload.
String FileRef = FILEPATH + FILENAME of the file.
String BaseUrl = "http://storageaccountX.blob.core.windows.net";
CloudBlobClient blobClient = new CloudBlobClient(new URI(BaseUrl);
String blobName = image.ResourceName;
URI uri = new URI(blobClient.getEndpoint().toString() + "/" + "containername" + "/" + blobName + "?" + image.SasQueryString);
CloudBlockBlob sasBlob = new CloudBlockBlob(uri, blobClient);
File fileReference = new File(FileRef);
sasBlob.upload(new FileInputStream(fileReference), fileReference.length());
For some reason, xbmc and raspbmc didn’t auto update anymore on my raspberry pi (running Raspbmc) since april this year.
Usually when you reboot your device, auto update makes sure your raspbmc is using the latest version.
By deleting some files, you can trigger your pi to update again on the next restart. This will probably solve your problem if you have the same issue:
- sudo -s
- cd /scripts/upd_sys
- rm *.sh
- wget http://svn.stmlabs.com/svn/raspbmc/release/update-system/getfile.sh
- wget http://svn.stmlabs.com/svn/raspbmc/release/update-system/cdn_env_prep.sh
- cd /scripts/upd_hist
- rm xbmcver
If you want to update CouchPotato just execute the following commands in the bash shell:
- sudo /etc/init.d/couchpotato stop
- cd CouchPotatoServer (or cd CouchPotato, whatever folder you installed CouchPotato in).
- git pull
- sudo /etc/init.d/couchpotato start
Even after starting, it might take 60 seconds before your site responds to requests.
Resilio Sync is an open source tool to create a Dropbox-like file-syncing service. You can share a folder with anyone. Files are stored on the server (which can be your raspberry pi) and on all the other computers that you gave a secret key.
Continue reading “Resilio Sync on Raspbian”
By default, all requests arriving at the pi, coming from the internet (WAN), are blocked. Only requests coming from your local LAN are allowed.
To do this, Raspbmc uses iptables. It’s like a firewall, and uses a set of rules to determine if a request has to be blocked or not.
Continue reading “Raspbmc: iptables”
The raspberry pi is an awesome device. It’s affordable, it’s a media center, a web server, very slow and doesn’t use much electricity. It’s also a very good looking piece of hardware. Fits your living room!
This post is about how mine is configured!
- Xbmc (installed as raspbmc): a powerful media center, running on Debian.
- Transmission: A minimalistic torrent client.
- CouchPotato: Software that searches the movies you want and starts to download them as soon as they come available.
- BitTorrent Sync: Dropbox like service, easy way to backup folders on multiple computers.
- Samba: Share a hard disk to the local network.
My pi lives next to my TV. It’s powered by a 5V 2A power supply. It has a 8 gb sd card and their is a 2 TB external usb hard drive attached.
I use Putty to modify raspbmc via ssh, Yatse android app to control Xbmc. When needed I can connect an external keyboard because I still have 1 usb port over.
As you could possibly open up some ports to the internet, you will want to secure your raspberry pi.
I won’t list the complete process but refer to guides I followed.
0. Static IP
First we need to install raspbmc on the pi: http://www.raspbmc.com/wiki/user/windows-installation/.
2. CouchPotato, Transmission
3. BitTorrent Sync
4. Enable samba
You can do this in the xbmc interface.
5. Dynamic Dns
- By default, if there is no hdmi connected on boot, it won’t enable hdmi. That’s ridiculous!
If you want to do proper analysis you really need to be able to draw what you intend to build. Doing so will make you a better architect.
Even though I have learned uml at school, I did forgot most of it. I have however been able lately to spend more time on making proper analyses, and thus improving my own uml skills.
This is a quick wrap up of the most important relationships you can have in uml.
An object extends another object.
An object implements an interface.
Aggregation means that classes have their own life, but they can only belong to one parent. For example a department and a teacher.
A bit stronger than aggregation, is composition. If the parent object dies, children object dies to. Sometimes referred to as the death relation. Think of it as a house and rooms. When you delete the house, all rooms get deleted too.
There is a relationship between both objects, but at the same time they also have their own life cycle.
If you installed a malfunctioning ROM on your android smartphone, it can happen that your android phone no longer works. I have had this often enough to write a blog post on how copy a hopefully better ROM on your device, to install that one.
Why didn’t the ROM work?
- If you install nightlies from cyanogenmod, it can happen that a nightly is actually broken.
- Sometimes the file you downloaded from the internet and copied to your smartphone got corrupt.
What do I need?
This guide will only work when you have ClockworkMod Recovery installed on your phone.
You also need the android SDK. If you are a developer you will already have this. It’s in the folder AndroidSDK/platform-tools.
- Copy your new cyanogenmod ROM (or other) file to this AndroidSDK/platform-tools folder. (Or any file you would like to copy.)
- Give it an easy name, something like cm-11.zip
- Control-Shift click in the folder, and choose Open command window here.
- Boot your smartphone into ClockworkMod Recovery. Every smartphone has it’s own way to do. For the Galaxy S3 you need to push power, volume-up and the home button all together. When the boot logo shows you can stop.
- Go to mounts and storage in the ClockworkMod Recovery menu.
- Make sure it says unmount /system and unmount /data by entering on the items.
- Now go to your shell and start the copy process with this command: adb push cm-11.zip /sdcard/0/cm-11.zip. (Of course, change the files to your filenames!)
- The process can take a while, it will respond with the copy speed and the total bytes / total time it took. That means it was successful!
- Go back, and choose install zip, choose zip from /sdcard to install the MOD!