April 25, 2013 by Roel Veldhuizen
Just got my laptop back from Asus repairs (Jeeh!). But something quite annoying happens. They re-installed Windows 7, together with a lot of Asus crap and now Windows 7 Explorer tends to crash, almost, everytime I open a new window.
The following error report is in Dutch but, basically tells that an error ocurred in explorer.exe. In the second line you can find module ASUSWSShellExt64.dll is the trouble maker.
|
|
Naam van toepassing met fout: explorer.exe, versie: 6.1.7601.17567, tijdstempel: 0x4d672ee4 Naam van module met fout: ASUSWSShellExt64.dll, versie: 1.1.0.27, tijdstempel: 0x4c7f631d Uitzonderingscode: 0xc0000005 Foutoffset: 0x00000000000051da Id van proces met fout: 0x%9 Starttijd van toepassing met fout: 0x%10 Pad naar toepassing met fout: %11 Pad naar module met fout: %12 Rapport-id: %13 |
Module ASUSWSShellExt64.dll is part of the ASUS WebStorage program and you can solve the issue by removing ASUS WebStorage.
April 16, 2013 by Roel Veldhuizen
In Bonita BPMS you can use complex data objects to save information used in a processes. In this example I use the Eclipse IDE to create an Java object to be used in Bonitastudio.
First create a Java project in Eclipse.
Then create a object that implements the Serializable interface. This is important because otherwise the object can not be persisted by Bonita. You should take into account that every field created in this class should implement Serializable otherwise the data will be transient.

Read more…
by Roel Veldhuizen
When you have a Java project in Eclipse it can happen that you want to export the project as a JAR ( Java ARchive). It is quite easy to make this happen. Open Eclipse and right-click on your Java project. A menu will popup and hit the Export item.
A Eclipse wizard will open. Under the tab Java you can find the JAR file item. Add the projects that you want in your JAR and you probably want to exlude the .project and .classpath file.
March 25, 2013 by Roel Veldhuizen
In Bonita studio it is fairly easy to create connectors. The only requirement is some basic knowledge of how the Java programming language. Though, I think with some basic programming knowledge you can get pretty far aswell.
To create a connector the easiest way is to use the build in wizard.
Go to connector -> new connector
A window will popup where you should enter information about the connector. You could add an icon to the connector so that it is easier to recognize in the list of connectors. Connectors expect some information going into the connector and some information going out of the connector. By creating pages you can build a setup wizard for the connector every input that is created in a page will be used as input for the connection. The same holds for the outputs, though, here your can only enter output values.

Create connector wizard
So, now we create a page to enter input data. The input data will be a firstname and a lastname. Both fields are manditory and have the type Text (String in Java).

Creating a connector wizard
The last step before Bonita studio generates our code is to put some outputs. In this case we want one output which is piece of text.
Read more…
March 6, 2013 by Roel Veldhuizen
This post is a translated copy of a post I publish in Dutch on our corporate blog. Find the original post here.
As with many commercial open source products, Bonitasoft also has an open source edition and an enterprise edition (named the Subscription Pack (SP)). In the case of Bonitasoft there are actually, three different enterprise editions. In this blog we will not go into any detail of those different editions (a detailed comparison can be found here), I would rather show some of the Subscription Pack features in more detail.
In this first post I would like to show some of the main differences between forms in the open source and enterprise edition. Creating forms in is something you want to do as much towards the end of an implementation as possible. Especially, when it concerns logic and custom design of forms. Though, creating forms in Bonita studio is quite easy, it can be better!
Read more…
March 4, 2013 by Roel Veldhuizen
A 301 Moved permanently is a HTTP status code. 301 is the status code and Moved permanently is the status message. When you request for example a page called /option-x the server will usually respond with a HTTP status code 200. Which means OK and will send you the contents corresponding with your request.
What if you changed the location of your page or for SEO reasons want to locate the request to the same content to one URL (In this way you won’t get a duplicated content penalty).
The effect of the 301 would be that the search engines will index /option-a instead of /option-x. To do this in PHP do the following first add a header which creates the HTTP status code 301 instead of 200. The second header is the redirect, in this case to /option-a. You could also put a full URL in here.
After the redirect put exit(); to stop the rest of the script to execute
|
|
header("HTTP/1.1 301 Moved Permanently"); header("Location: /option-a"); exit(); |
If you want to read more on HTTP status codes follow this link(W3C, 2012). Besides the status codes 200 and 301 there are a whole lot of other status codes that maybe interesting to look into. The most famous ones are ofcourse 404 (Page Not Found) and 500 (Internal Server Error)
February 21, 2013 by Roel Veldhuizen
I’ve seen a lot of these lists on internet and thought it was time to publish one of my own. Productivity application are supporting applications that facilitate you in being productive while at your computer, phone or tablet. If you do it right, some of the applications listed can even help with being productive after you have moved from your computer. Personally, I like simple, easy to use and most of all application that are in sync with all my computers.
Some of the applications listed, I already named once or twice in my previous blog posts.
Evernote
Since I installed Evernote I’m hooked. Evernote is a note taking application which lets you synchronize your notes with the cloud and thus with all your other Evernote instances. In fact I started writing this blog post in Evernote on my Android tablet and later refined it on my Windows computer. Personally, I love the clear overview of notes, integration/apps for almost every platform available (Windows, Android, iOS etc.) and of course the OCR in scanned documents.

Evernote
When I started using Evernote my view on notes was very traditional. Traditional notes are made using pen and paper, and you will take only notes of stuff you hear and cannot bring with you. When someone gives a presentation and sheets are handed out, you will probably not make any notes or at least less notes. If you use Evernote (or any other note application) you should consider stuff like sheets as notes. Save those presentation, categorize them, tag them and use them. There is no excuse to lose stuff!
Read more…
February 20, 2013 by Roel Veldhuizen
First of all, I’m a huge fan of Evernote. Second of all, I’ll try not to show anything of me being a big Evernote fan in this article. Why? Would you probably ask. Well this is why. Evernote doesn’t alwasy manages expectations well and that causes some issues with me.Very recently got myself a dilema, I wanted to buy tablet. The choice is iOS or Android (or maybe Windows 8, but that never really crossed my mind), this choice should not be that difficult for a Google users as myself. Though, for the first time one other perspective popped up. What would be the best choice for me, as an Evernote user. This does say something about my as an Evernote user. I was willing to make a switch of religion because of Evernote. In the end, my religon was stronger than the urge of using all of Evernote’s apps.
At the moment of writing this post I was annoyed about the fact that more and more release of new Evernote apps are done on iOS, though I haven’t seen much movement on both Windows as on Android. Thereby, Evernote never releases anything about there roadmap and thus I, as user, expect that the awnser always is; “In two weeks”. Though, the real awnser is probably; “We thought of this but, we did not plan this feature for the next year.”
Read more…
February 18, 2013 by Roel Veldhuizen
Though this blog is far from finished, I already made it available online. The last edition of this blog was based on Symfony 2 and this one is on WordPress. To me the problem with Symfony is that it takes a lot of work an time to make it a real blog. I did use a lot of the existing bundle in the previous blog and still it is a framework that you should use only if you really need to develop specific applications and not a blog like this one.

WordPress plugin: Crayon Syntax Highlighter
So, I decided to re-create this whole blog, this time based on WordPress (As I recall correctly, the blog before the “Symfony-edition” was based on Joomla). Using WordPress and some plug-ins I was able to make this blog easier to maintain and friendlier to write new posts. The main reason I dedicated a post to this blogging-platform-switch is a plugin called Crayon Syntax Highlighter.
Read more…
November 5, 2011 by Roel Veldhuizen
Obviously, every client want autocompletion because Google has it. JQuery luckily makes our lives a bit more bearable by provide us a JQuery autocompletion plug-in. The problem, however, with this plug-in is that it will either show the value or the key if your lookup returns key-value pairs. The ultimate problem with this is that when you use this information to store in a database you will either get a database error because the value is not a valid key or you have to show the key as the value to your users. Our current solution is to add a hidden field which holds the valid key value.
|
|
<code><input type="text" name="creatorUserIdA" id="creatorUserIdA"/> <input type="hidden" name="creatorUserId" id="creatorUserId"/> </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
$(document).ready(function() { $("#creatorUserIdA").autocomplete("/get/data/url/",{ parse: function(data) { var parsed = []; data = data.data; for (var i = 0; i < data.length; i++) { parsed[parsed.length] = { data: data[i], value: data[i].key, result: data[i].value }; } return parsed; }, formatItem:function(item, index, total, query){ return item.value; }, dataType: 'json' }); $("#creatorUserIdA").result(function(event, data, formatted){ $("#creatorUserId").val(data.key); }); }); |
September 5, 2011 by Roel Veldhuizen
On Linux there are not a lot of solutions to download torrents via RSS though it is one of the most awesome extensions to torrent programs. Transmission is normally not configured to download via RSS but has the ability to use a watch-directory. Torrents placed in the watch-directory are automatically downloaded by Transmission. We will use a tool, called FlexGet, to exploit this feature and automatically start download via RSS.
First we will create a watch-directory for Transmission. If you use Ubuntu, there is a settings.json in your $HOME/.config/transmission at the end of the file there are two settings “watch-dir” and “watch-dir-enabled”. The first variable sets the directory to watch and is by default your downloads directory. You can change this if you want. To enable the watch-directory you should at least change the value from “watch-dir-enabled” from false to true.
Reboot the settings of Transmission:
|
|
<code>pkill -HUP transmission-daemon </code> |
Now, we will install FlexGet. FlexGet works with python 2.5.x – 2.7.x. You could check this by running
You would also need easy_install to install FlexGet. If you didn’t install it already, run:
|
|
<code>sudo apt-get install python-setuptools </code> |
Download and installation of FlexGet are started by running the following command:
|
|
<code>sudo easy_install flexget </code> |
Okey, everything is installed! Well, not entirely, you need to create a “.flexget” folder in your home directory and add a file called “config.yml”
The contents of config.yml should look like:
|
|
<code>feeds: tv-shows: rss: http://example.com/rss.xml series: - pioneer one - south park download: ~/torrents/ </code> |
For more details on the configuration goto http://flexget.com/wiki/Cookbook/Series/Preset
Now we need to add FlexGet to the crontab to run the program every X minutes. First we need to find the location of the FlexGet command. On Ubuntu 11.04, this is /usr/local/bin/flexget. If you want to check this yourself use:
|
|
<code>which flexget </code> |
Open your crontab
Add the following line view sourceprint?
|
|
<code>@hourly /usr/local/bin/flexget --cron</code> |
March 9, 2011 by Roel Veldhuizen
It seems that some people find this web blog by searching for instructions on installing PHP on Ubuntu 10.10. I did write an article about installing PHP 5.3 on Ubuntu 10.10 some moths ago if you were searching for that article, find it here. When you want to install 5.3 (or don’t care which version) on Ubuntu, read further. I assume that you want to install a LAMP configuration (Linux, Apache, MySQL, PHP). Why do I assume this? Because, it the most common web server configuration used today. My other assumption is; you already installed Ubuntu 10.10 since this article is called “Installing PHP, Apache and Mysql on Ubuntu 10.10″.
LAMP
First some background on the configuration. We are going to install a LAMP configuration which stands for Linux, Apache, MySQL and PHP. Sometimes, people use other configurations like WAMP where the ‘W’ stands for Windows. The basic idea stays the same. You need an operating system, web server, database and a language to serve dynamic web pages. When a PHP page is queried by a web browser, basically asks the web server to serve the page. The web browser is only able to display HTML/XHTML (and some other formats) but not PHP. So, what happens? The browser queries a page at the web server and the web server recognizes that the page is a dynamic page – in this case a PHP page – and will use the PHP interpreter to execute the PHP code. The result is then submitted by the web server to the web browser.
Install MySQL
If not already open, open a terminal window and execute the following command.
|
|
<code>sudo apt-get install mysql-server mysql-client </code> |
Somewhere during this installation the terminal will pop a window in which you need to enter a root password.
Install Apache
Execute the following command to install Apache.
|
|
<code>sudo apt-get install apache2 </code> |
When Apache is installed it will automatically start. In order to test whether it really works, open a web browser and go to http://localhost/. This should result in a page that pops “It works!”
Install PHP
Installing PHP is done in the same manner as we did before with MySQL and Apache. Run:
|
|
<code>sudo apt-get install libapache2-mod-php5 php5 </code> |
This command installs both PHP5 as as a library that enables Apache to process PHP pages. To enable it, you have to restart Apache by running:
|
|
<code>sudo /etc/init.d/apache2 restart </code> |
To test whether PHP works correctly create a page in the directory /home/sites/ , call it info.php and put the following lines in the file:
|
|
<code><?php phpinfo(); ?> </code> |
Open your web browser and open http://localhost/info.php if the PHP installation is correct a page with the PHP configuration is shown.
January 11, 2011 by Roel Veldhuizen
At the moment of writing the NuSOAP implementation is far more superior then the SOAP implementation of PHP. When you use the PHP implementation you need to create your own WSDL (Web Service Description Language) file. This file describes all functions, complex types and endpoints of a web service. This requires lots of knowledge of SOAP. I wouldn’t argue that having loads of knowledge about SOAP isn’t healthy but writing a WSDL is just a waste of time. Therefor, I still use NuSOAP to create SOAP services. NuSOAP has the ability to generate your web service description.
You can download the latest NuSOAP at SourceForge. Obviously to create a service based on nusoap you should include it.
|
|
<code>include_once( "/lib/nusoap.php"); </code> |
Then you could create the server and configure the WSDL. In this case configureWSDL contains two parameters. The first defines the web service name, the second parameter contains the the namespace.
|
|
<code>$server = new soap_server(); $server->configureWSDL('demo', 'urn:demo'); </code> |
Now, it is time to tell the server which methods are available. Registering a method is done using the register function which in this case creates four parameters, the name of the method, input parameters of the method as an array, output parameters as an array an the namespace. The input and output parameters are both an array in a form where the key is the name of the parameter and the value is the type of the variable. Though PHP doesn’t concern about types other languages do. Besides basic types like string, int etc. it is also possible to create complex types but that is a different subject.
|
|
<code>$server->register('getFullName', array('firstname' => 'xsd:string', 'lastname' => 'xsd:string'), array('fullname' => 'xsd:string'), 'xsd:demo'); </code> |
After you registered all the methods you need to implement this methods like you described.
|
|
<code>function getFullName($firstname,$lastname){ return $firstname.' '.$lastname; } </code> |
Now the server needs to pick up the incoming requests.
|
|
<code>$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); </code> |
Now go to location of your service and you will get an interface that describes you service. Add ?wsdl to your URL and you will get the whole WSDL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<?php include_once( "/lib/nusoap.php"); $server = new soap_server(); $server->configureWSDL('demo', 'urn:demo'); $server->register('getFullName', array('firstname' => 'xsd:string', 'lastname' => 'xsd:string'), array('fullname' => 'xsd:string'), 'xsd:demo'); function getFullName($firstname,$lastname){ return $firstname.' '.$lastname; } $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); ?> |
November 14, 2010 by Roel Veldhuizen
Ubuntu 10.10 has PHP 5.3 as default, some application are still unable to work with PHP 5.3 and require PHP 5.2. We where able to fix this in earlier versions of Ubuntu with a script previously published. However, this script uses aptitude for re-installing the packages and since Ubuntu 10.10 aptitude isn’t installed by default. I adapted the script and was able to make it work with Ubuntu 10.10.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#!/bin/bash # by Ruben Barkow (rubo77) http://www.entikey.z11.de/ # adapted by Roel Veldhuizen http://harx.nl for Ubuntu 10.10 # Originally Posted by Bachstelze http://ubuntuforums.org/showthread.php?p=9080474#post9080474 # OK, here's how to do the Apt magic to get PHP packages from the karmic repositories: echo "Am I root? " if [ "$(whoami &2>/dev/null)" != "root" ] && [ "$(id -un &2>/dev/null)" != "root" ] ; then echo " NO! Error: You must be root to run this script. Enter sudo su " exit 1 fi echo " OK"; # finish all apt-problems: apt-get -f install # remove all your existing PHP packages. You can list them with dpkg -l| grep php PHPLIST=$(for i in $(dpkg -l | grep php|awk '{ print $2 }' ); do echo $i; done) echo these pachets will be removed: $PHPLIST # you need not to purge, if you have upgraded from karmic: apt-get remove $PHPLIST # on a fresh install, you need purge: # aptitude remove --purge $PHPLIST #Create a file each in /etc/apt/preferences.d like this (call it for example /etc/apt/preferences.d/php5.2); # #Package: php5 #Pin: release a=karmic #Pin-Priority: 991 # #The big problem is that wildcards don't work, so you will need one such stanza for each PHP package you want to pull from karmic: echo ''>/etc/apt/preferences.d/php5.2 for i in $PHPLIST ; do echo "Package: $i Pin: release a=karmic Pin-Priority: 991 ">>/etc/apt/preferences.d/php5.2; done # duplicate your existing sources.list replacing lucid with karmic and save it in sources.list.d: #sed s/lucid/karmic/g /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/karmic.list # better exactly only the needed sources, cause otherwise you can get a cachsize problem: echo "# needed sources vor php5.2: deb http://de.archive.ubuntu.com/ubuntu/ karmic main restricted deb-src http://de.archive.ubuntu.com/ubuntu/ karmic main restricted deb http://de.archive.ubuntu.com/ubuntu/ karmic-updates main restricted deb-src http://de.archive.ubuntu.com/ubuntu/ karmic-updates main restricted deb http://de.archive.ubuntu.com/ubuntu/ karmic universe deb-src http://de.archive.ubuntu.com/ubuntu/ karmic universe deb http://de.archive.ubuntu.com/ubuntu/ karmic-updates universe deb-src http://de.archive.ubuntu.com/ubuntu/ karmic-updates universe deb http://de.archive.ubuntu.com/ubuntu/ karmic multiverse deb-src http://de.archive.ubuntu.com/ubuntu/ karmic multiverse deb http://de.archive.ubuntu.com/ubuntu/ karmic-updates multiverse deb-src http://de.archive.ubuntu.com/ubuntu/ karmic-updates multiverse deb http://security.ubuntu.com/ubuntu karmic-security main restricted deb-src http://security.ubuntu.com/ubuntu karmic-security main restricted deb http://security.ubuntu.com/ubuntu karmic-security universe deb-src http://security.ubuntu.com/ubuntu karmic-security universe deb http://security.ubuntu.com/ubuntu karmic-security multiverse deb-src http://security.ubuntu.com/ubuntu karmic-security multiverse " >> /etc/apt/sources.list.d/karmic.list apt-get update apache2ctl restart echo install new from karmic: apt-get -t karmic install $PHPLIST # at the end retry the modul libapache2-mod-php5 in case it didn't work the first time: apt-get -t karmic install libapache2-mod-php5 echo $PHPLIST apache2ctl restart |
May 13, 2010 by Roel Veldhuizen
If you want to add your hyves account to Empathy you should go to the accounts overview. (Edit -> Account or press F4.). Then add a new Jabber account and enter the following information:
Login ID: username@hyves.nl
Password: yourpassword
Server: 94.100.119.196
Port: 5222 (this is default)