Generated by All in One SEO v4.8.9, this is an llms.txt file, used by LLMs to index the site. # LogikDevelopment "Il n'y a pas de problème, il n'y a que des solutions. L'esprit de l'homme invente ensuite le problème." André Gide ## Sitemaps - [XML Sitemap](https://www.logikdev.com/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Let's do it!](https://www.logikdev.com/2009/11/16/lets-do-it/) - What's the life of a developer? Answer: coding for about 1/3 of the time and debugging for the rest of the time... This is a quite frustrating job. Whatever you are doing, even if you are very careful during the development, you are going to have a multitude of bugs. That is why the role - [RichFaces is too greedy](https://www.logikdev.com/2009/11/17/richfaces-is-too-greedy/) - For my first post, let's talk a little bit about RichFaces. RichFaces is a very powerful JSF library which allows you to easily integrate Ajax capabilities into your website. To see all the components RichFaces has to offer, please click on the following link: http://livedemo.exadel.com/richfaces-demo/richfaces/actionparam.jsf I am now using this framework for about two years - [No saved view state](https://www.logikdev.com/2009/11/25/no-saved-view-state/) - How many of you did already get the following error when working with JSF? I would be surprised if none of you got it at least once! ;) HTTP ERROR: 500 /web/home.htmlNo saved view state could be found for the view identifier: /web/home.html RequestURI=/web/home.html Caused by: javax.faces.application.ViewExpiredException: /web/home.htmlNo saved view state could be found for - [Be careful of SKIP_COMMENTS](https://www.logikdev.com/2009/12/01/be-careful-of-skip_comments/) - In the early days, we used to hide JavaScript code from old browsers that do not support JavaScript. The way of doing this was to put a one-line HTML-style comment without the closing characters immediately after the opening tag and put //--> at the end of the script. For example: However if you are - [Onclick event is not fired on IE](https://www.logikdev.com/2009/12/08/onclick-event-is-not-fired-on-ie/) - I am pretty sure everybody knows that Internet Explorer has "a few" bugs... :roll: You didn't? 8-O Alright, better to stay on your little cloud and leave this blog right away! For the others, I will talk about the JavaScript event onclick which is not fired when the following requirements are matched: In a form; - [How to monitor your Java application](https://www.logikdev.com/2009/12/17/how-to-monitor-your-java-application/) - It is very good to have your application and your database running on a Linux or Windows server, but who will tell you if your website is down? Who said "the users"? 8-O No, you won't look very professional if you wait for a user complaint. What you need to do is to monitor your - [Deploy your app to the root context](https://www.logikdev.com/2010/01/06/deploy-your-app-to-the-root-context/) - This is an easy trick which I am sure most of you already know. Let's take a Java application called MyAddressBook. Its generated war file could be called myaddressbook.war. By default, when you deploy this web application to Tomcat, the URL to access it will be http://localhost:8080/myaddressbook/. And if you point a domain name such - [WritableFont doesn't like to be static!](https://www.logikdev.com/2010/01/18/writablefont-doesnt-like-to-be-static/) - While using the tool JExcelAPI within my Java application to generate Excel spreadsheets, I got the following exception: java.lang.ArrayIndexOutOfBoundsException: 5 at jxl.biff.IndexMapping.getNewIndex(IndexMapping.java:68) at jxl.biff.FormattingRecords.rationalize(FormattingRecords.java:388) at jxl.write.biff.WritableWorkbookImpl.rationalize(WritableWorkbookImpl.java:988) at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:692) ... It appears that this exception occurs only when you try to generate more than one Excel spreadsheet! How strange is that! 8-O After a bit of - [Locale settings for your cron job](https://www.logikdev.com/2010/02/02/locale-settings-for-your-cron-job/) - Do you get special characters problem when executing your bash script from a cron job? And does the same script work fine when it is directly executed from the command line? If yes, continue reading this article! ;) The reason of this characters problem is probably because of your locale settings. Indeed, If you try - [Why GROUP_CONCAT returns BLOB?](https://www.logikdev.com/2010/02/11/why-group_concat-returns-blob/) - Last week, when using the GROUP_CONCAT() function on a MySQL database, I got an unexpected result. :( Indeed, instead of getting my result as VARCHAR types, I got it as BLOB types! For information, a BLOB is a binary large object that can hold a variable amount of data: http://dev.mysql.com/doc/refman/5.0/en/blob.html Because BLOB values are treated as - [Apple UK keyboard layout for Windows](https://www.logikdev.com/2010/02/18/apple-uk-keyboard-layout-for-windows/) - Because I am now working on a .Net project and I don't want to work on a PC ;-) , I decided to install Windows as guest on my Mac in VirtualBox. Everything works perfectly fine except that Windows doesn't like my Apple keyboard. What a surprise! :roll: After a quick search on Google, I - [limitToList attribute prevents flashing](https://www.logikdev.com/2010/03/02/limittolist-attribute-prevents-flashing/) - If you have some elements (or even the whole page) that flash/twinkle using RichFaces, it probably means that these elements are AJAX-rendering. The question is by whom and how to fix it? A lot of tags in RichFaces can AJAX-render elements such as: On the above example, the JavaScript function updateName will AJAX-render the element which - [How to personalise the URLs with Faces Navigation?](https://www.logikdev.com/2010/03/24/how-to-personalise-the-urls-with-faces-navigation/) - This is an important question if you want to have search engine friendly URLs on your website! But unfortunately, the solution is not straightforward with JavaServer Faces (JSF). :( First of all, for security reason JSF doesn't allow you to use the GET method for your forms. I didn't really understand why but this is - [The message tags of MyFaces and RichFaces](https://www.logikdev.com/2010/05/06/message-tags-of-myfaces-and-richfaces/) - Working on an application using MyFaces and RichFaces, I had no choice but understand what is the difference between the message tag provided by Myfaces (h:message) and the message tag overridden by RichFaces (rich:message). These tags allow to display information about the first FacesMessage that is assigned to the component referenced by the "for" attribute. - [Validate your EAN barcode](https://www.logikdev.com/2010/05/13/validate-your-ean-barcode/) - On one of the applications I am working on, I had to validate an EAN (European Article Number) barcode. This application is mostly using JavaScript validation so I asked my friend Google to find me a JavaScript method which would check my EAN barcode. It found validators in different languages but none in JavaScript. :( - [Using the 'date' command in your crontab](https://www.logikdev.com/2010/05/25/using-the-date-command-in-your-crontab/) - Crontab, as most people know, enables users to schedule commands or shell scripts to run periodically at certain times or dates. The other day, this very useful Linux tool gave me a hard time! :( Indeed, one of my commands wasn't working in cron but was working perfectly fine when written in a shell console. - [Image manipulation in VBScript](https://www.logikdev.com/2010/06/09/image-manipulation-in-vbscript/) - I am back on Windows development. It is not what I prefer but still, it is development so I am right here! ;) My task was to upload an image from a website (nothing difficult there) but the application has to resize and crop the uploaded image before saving it on the hard drive in - [How to configure JSF to get the browser Back button working](https://www.logikdev.com/2010/06/23/configure-jsf-to-get-the-back-button-working/) - Lately, I had a problem with one of my JSF applications which is using RichFaces. The problem was happening when the user was hitting the browser Back button. Well, you would say that it is a usual problem in web development. But still, because we cannot disable the browser Back button, the web application needs - [Use ServerXMLHTTP through a proxy](https://www.logikdev.com/2010/07/07/use-serverxmlhttp-through-proxy/) - The other day, I was trying to use the ServerXMLHTTP object. For information, this object was created to allow you to establish server-to-server HTTP connections. The code I firstly wrote looked like the following: with sURL the URL to call and sParams the parameters to send with the URL. The problem was that oXMLHTTP.responseText didn't - [Relation between TortoiseSVN and locale](https://www.logikdev.com/2010/08/15/relation-between-tortoisesvn-and-locale/) - The other day, I got stuck on a problem with TortoiseSVN for about half a day! 8-O Yes, I know, it is a pretty long time to get a simple subversion client working... The error I was continuously getting was: Nothing else! Nothing in the log files on both the client and the server. :( - [Validate file size prior upload](https://www.logikdev.com/2010/08/26/validate-file-size-prior-upload/) - If I ask you what is the most complex thing in HTML, what would you reply? For me, it would be the file upload (or maybe character encoding, but this is not the topic! :P ). One of the problem around the file upload functionality is that there is, no matter what, a file size - [Clock change affecting date display](https://www.logikdev.com/2010/09/18/clock-change-affecting-date-display/) - This is a very particular problem which happens only during the summer and not even in all the countries ! :o The problem is related to the Daylight Saving Time (DST), also called British Summer Time (BST): Daylight saving time is the practice of temporarily advancing clocks so that afternoons have more daylight and mornings - [loadBundle's behaviour with JSTL tags](https://www.logikdev.com/2010/10/02/loadbundles-behaviour-with-jstl-tags/) - Let's start with a bit of knowledge. f:loadBundle is a JSF tag which loads a resource bundle and saves it as a variable in the request scope. The RichFaces a4j:loadBundle tag is a substitution for the f:loadBundle tag and allows to use reference to bundle messages during the Ajax re-rendering. When I discovered the RichFaces - [The selfRendered attribute](https://www.logikdev.com/2010/10/12/the-selfrendered-attribute/) - This is an interesting problem related to the RichFaces rich:suggestionbox tag. Let's take the following code: If you use the code above as it is, the whole page is going to be processed each time the suggestionAction is called. And because the minChars attribute is set to 1, the action is going to be called - [Upgrade to RichFaces 3.3.3.Final](https://www.logikdev.com/2010/10/20/upgrade-to-richfaces-3-3-3-final/) - From time to time, it is good to upgrade the application libraries to the latest stable version. Especially the frontend libraries as the browsers are constantly involving and new ones are coming on the market. This is why I wanted to upgrade the RichFaces library on one of my web application which was still using - [Encrypt with PHP - Decrypt with Java](https://www.logikdev.com/2010/11/01/encrypt-with-php-decrypt-with-java/) - For security reason, I wanted to encrypt the data transferred between PHP web services and a Java application. But the problem was to encrypt the data with PHP in a way that it is possible to decrypt it using Java. It obviously exists a lot of ways of doing this. But here is the way - [Illegal Key Size](https://www.logikdev.com/2010/11/09/illegal-key-size/) - About a week ago, I wrote an article on how to encrypt with PHP and decrypt with Java. The funny thing is I got an error when I deployed the Java code into the live server! :-| As a reminder, this is the code I am talking about: This code was working perfectly fine on - [Update your Twitter status with Java](https://www.logikdev.com/2010/12/02/update-your-twitter-status-with-java/) - This article has been written for the version 2.1.7 of Twitter4J. If you want to use a newer version, please read the following article: Changes in Twitter4J 2.2.5 Some time ago, Twitter stopped supporting "Basic Authentication" in the Twitter API, in favour of a new, more secure system, OAuth. Please read this article for more - [ntpd process on D-Link DNS-313](https://www.logikdev.com/2011/01/10/ntpd-process-on-dlink-dns313/) - During the configuration of a D-Link DNS-313 which is basically a NAS (Network-Attached Storage), I got a serious but easy-to-fix problem. :) In order to get access to the box by command line, I installed the Fonz fun_plug. I then wanted to automatically synchronise the internal time with some NTP Pool Time Servers. But, for - [Permissions ignored with Samba](https://www.logikdev.com/2011/01/17/permissions-ignored-with-samba/) - After the issue regarding the ntpd process, I encountered another problem with my D-Link DNS-313. This time it was about permissions problem using Samba. Because I have multiple user accounts sharing the same data, I added the following lines into the Samba configuration file (smb.conf): With these properties, a user will have the permission to - [JDBC and the "zero" date](https://www.logikdev.com/2011/02/06/jdbc-and-the-zero-date/) - A few weeks ago, I was in the process of writing a little script in Java to extract data from a MySQL database. Because this is what we can call a micro project, I decided to simply use JDBC to talk to the database. But when I tried to run my script, I got the - [Reset clock fuse bits on AVR](https://www.logikdev.com/2011/02/15/reset-clock-fuse-bits-on-avr/) - I am just starting to learn about AVR programming and I really enjoy myself! :D Except maybe when I play with the fuse bytes and I screw things up... Basically, I was using a ATtiny13A microcontroller and I configured the fuse bytes to use the internal low-frequency oscillator running at 128kHz. I thought it would - [How to dump MySQL functions and stored procedures](https://www.logikdev.com/2011/03/01/how-to-dump-mysql-functions-and-stored-procedures/) - I discovered something interesting about MySQL the other day. Interesting enough to share it with you. ;) I was in the process of moving a MySQL database from a server to another. In order to do this, I created a dump file from the source database using the command mysqldump and I then restored the - [Segmentation fault at end of PHP script](https://www.logikdev.com/2011/03/14/segmentation-fault-at-end-of-php-script/) - This one is a very strange problem! I created a little PHP script which connects to a MySQL database. Nothing amazing, except that I needed to run it via command line using the php command. What happened is that the script ran perfectly fine but, for some reason, it returned "Segmentation fault" when it reached - [Close ModalPanel if no error](https://www.logikdev.com/2011/04/03/close-modalpanel-no-error/) - It has been a very long time I wrote this code, but I thought I would share it with you as it is quite useful. If like me, you are an adept of RichFaces, you might have already seen and used the modal panel functionality. By default, a modal panel is used to display a - [Detect if JavaScript is enabled](https://www.logikdev.com/2011/04/19/detect-javascript-enabled/) - Because of the emergence of Ajax, people don't disable JavaScript much nowadays. I don't know the percentage of people having disabled JavaScript. It is likely under 5%. But if you have a website visited by millions of visitors every month, even 1% is matter! This is why I wrote the following code: The text under - [Redmine 1.1.3 on HostMonster](https://www.logikdev.com/2011/05/09/redmine-on-hostmonster/) - Did you guys ever hear about Redmine? It is an open source project management web application written using Ruby on Rails framework. I already used it in the past and it is quite powerful! I wanted to install the last version (1.1.3) on my HostMonster account. I would lie if I say that it has - [run-parts gives an exec format error](https://www.logikdev.com/2011/05/23/run-parts-gives-an-exec-format-error/) - I got a problem the other day with a Linux script I made. Basically, the script was working perfectly fine if I executed it directly from the command line but whenever I tried to run it with run-parts it failed! This is the error message it returned: Actually, the answer of this problem is quite - [Delete the components holding unwanted state](https://www.logikdev.com/2011/06/13/delete-the-components-holding-unwanted-state/) - This is a small addition to a problem discussed on the MyFaces Wiki: http://wiki.apache.org/myfaces/ClearInputComponents Just in case the page is removed from the Wiki, please see below a copy of the problem description: Sometimes you want to provide a command component (eg a link or button) that performs some server action, and renders the same - [Prevent double-click on HTML form](https://www.logikdev.com/2011/06/29/prevent-double-click-on-html-form/) - How many users are still double-clicking when they visit a website? It is not really a problem with links, but it could be with buttons. Let's take, for example, a 'contact us' form and a submit button which will send the content of the form by email to the website administrator. What happens if a - [Differences between Amazon instances](https://www.logikdev.com/2011/07/17/differences-between-amazon-instances/) - It has now been more than a year I am using Amazon Cloud for websites hosting. I have to admit that it works pretty well and I am quite happy about their services. However, I got a strange problem a few days ago. I was deploying an application on two different large instances of Amazon - [Send email attachment with PHP](https://www.logikdev.com/2011/09/01/send-email-attachment-with-php/) - Everybody probably knows how to send an email using PHP, but do you know how to send an email with an attachment? This is actually not very difficult and you can find examples all over the web. However, it seems that all the examples I found didn't work! :( But after some debugging and testing, - [AVG function returns 0.9999](https://www.logikdev.com/2011/09/15/avg-function-returns-09999/) - This one is a very odd bug! :-| For some reason, the AVG function from MySQL is always returning the value 0.9999 instead of the average value. This has been experienced on MySQL 5.5.12 hosted on Amazon RDS (Relational Database Service). However, the exact same query executed on MySQL 5.1.28 is returning the right values. - [Make image backgrounds transparent with tolerance](https://www.logikdev.com/2011/10/05/make-image-backgrounds-transparent-with-tolerance/) - In one of the projects I am working on at the moment, I needed to convert the background colour of an image to be transparent so the image looks better on a non-white background. Looking on the Web, I found the following article from Dustin Marx: Making White Image Backgrounds Transparent with Java 2D/Groovy If - [Convert SQL Server to MySQL](https://www.logikdev.com/2011/10/17/convert-sql-server-to-mysql/) - Some time ago, I had to convert a Microsoft SQL Server database to a MySQL database. The main reason was the cost of the SQL Server license for such a small database. Looking on the web, I found the following open source application: Name: mssql2mysql URL: http://sourceforge.net/projects/mssql2mysql/ Description: mssql2mysql is a python script used to - [Refresh GeoIP automatically](https://www.logikdev.com/2011/11/07/refresh-geoip-automatically/) - GeoIP is a very useful tool provided by MaxMind. It can determine which country, region, city, postal code, and area code the visitor is coming from in real-time. For more information, visit MaxMind website. This tool is also coming with an Apache module allowing to redirect users depending on their location. For example, we could - [Monitor s3sync with Zabbix](https://www.logikdev.com/2011/11/24/monitor-s3sync-with-zabbix/) - s3sync is a ruby program that easily transfers directories between a local directory and an S3 bucket:prefix. It behaves somewhat, but not precisely, like the rsync program. I am using this tool to automatically backup the important data from Debian servers to Amazon S3. I am not going to explain here how to install s3sync - [S3 command failed if the time is not synced](https://www.logikdev.com/2011/12/06/s3-command-failed-if-time-not-synced/) - This is already the second post about the s3sync ruby program. The first article was focused on monitoring s3sync with Zabbix. I will talk on this one about an error I got when running the S3 synchronisation: S3 command failed: list_bucket prefix /data max-keys 200 delimiter / With result 403 Forbidden S3 ERROR: # s3sync.rb:290:in - [Samba access problem with Mac OS X 10.6+](https://www.logikdev.com/2011/12/13/samba-access-problem-with-mac-os-x-10-6/) - This is a problem I encountered when I upgraded Mac OS X from the version 10.5 (Leopard) to 10.6 (Snow Leopard). One of my friend also got a similar problem when she upgraded to the version 10.7 (Lion). This issue was affecting the access to the network shares set up with Samba (version 3.0.24) on - [Too many open files on Tomcat](https://www.logikdev.com/2011/12/20/too-many-open-files-on-tomcat/) - The other day, one of my websites was not available anymore. Looking at the log files, I found the following exception: Dec 7, 2011 1:22:39 AM org.apache.jk.common.ChannelSocket acceptConnections WARNING: Exception executing accept java.net.SocketException: Too many open files at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:450) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:307) at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:661) at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:872) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at - [Changes in Twitter4J 2.2.5](https://www.logikdev.com/2012/02/27/changes-in-twitter4j-2-2-5/) - Over a year ago, I wrote an article on how to update Twitter status using Twitter4J: Update your Twitter status with Java Note that I was using the version 2.1.7 of Twitter4J at that time. Following a few comments from users who were getting errors, I decided to get my code working on the latest - [Install s3fs on Amazon Clouds](https://www.logikdev.com/2012/04/03/install-s3fs-on-amazon-clouds/) - s3fs is a FUSE filesystem that allows you to mount an Amazon S3 bucket as a local filesystem. It stores files natively and transparently in S3 (i.e., you can use other programs to access the same files). The following instructions detail the steps to install the program s3fs on an Amazon EC2 running Debian 5.0.5. Install libfuse - [Check if field is displayed with JavaScript](https://www.logikdev.com/2012/04/10/check-if-field-is-displayed-with-javascript/) - When you have dynamic content on your webpage, it is sometimes useful to check if an HTML element is displayed on the screen. For example, it could be handy to move the focus on a specific field after validation. But what if this field is actually hidden? Does your browser like to move the focus - [Install a JDBC driver in SpagoBI](https://www.logikdev.com/2012/04/21/install-a-jdbc-driver-in-spagobi/) - For those who don't know what is SpagoBI, please read the following (copied from Wikipedia): SpagoBI is the only entirely Open Source Business Intelligence suite, belonging to the free/open source SpagoWorld initiative, founded and supported by Engineering Group. SpagoBI supports day-to-day and strategic business, both at the decision-making and operational levels. SpagoBI is a BI - [Redirect traffic to a specific network](https://www.logikdev.com/2012/05/06/redirect-traffic-to-a-specific-network/) - This is a little trick which can be useful in some very specific case. For example, you could have a machine with two network cards. One of the network is behind a proxy and the other one is connected directly to the internet. You might want to forward all the traffic for google.com to the - [Ubuntu on Mac Mini PowerPC](https://www.logikdev.com/2012/06/08/ubuntu-on-mac-mini-powerpc/) - The other day, I got an old Mac Mini PowerPC from 2005. And I decided to install Linux on it instead of using an old version of Mac OSX. Fun, ins't it? The first thing I did was to download the ISO image of the last version of Ubuntu and burn it on CD. But - [CP2102 on DNS-323](https://www.logikdev.com/2012/08/09/cp2102-on-dns-323/) - In one of my personal projects, I needed to connect and use a USB to RS232 (Serial) converter on my D-Link DNS-323. Weird requirements, I know. Anyway... :-| Plenty of these converters exist out there, but I choose to go for a CP2102: Innocently, I first tried to compile the code source of this module - [Remove DOS carriage return](https://www.logikdev.com/2012/09/26/remove-dos-carriage-return/) - After writing a shell script on Windows and trying to execute it on Linux, I got the following error message: The problem is obviously because the return line character on Windows and Linux are different. But how to fix it in order to execute it on Linux? I firstly tried to open it, copy the - [MD5 generates 31 bytes instead of 32](https://www.logikdev.com/2012/12/12/md5-generates-31-bytes-instead-of-32/) - I wrote the following method to generate MD5 hashes: This method takes a String and outputs a 32 character hash. However, depending on the value of the parameter, this method outputs a 31 character hash instead of 32. Why is that? It appears that it is because the leading zero is missing. But the question - [Retrieving UTF-8 values from Cassandra](https://www.logikdev.com/2013/01/05/retrieving-utf-8-values-from-cassandra/) - I recently tried out Apache Cassandra which is a NoSQL solution that was initially developed by Facebook and designed to handle very large amounts of data spread out across many commodity servers while providing a highly available service with no single point of failure. In order to populate the database, I used Apache Flume and - [Android Side Navigation](https://www.logikdev.com/2013/02/20/android-side-navigation/) - The UI pattern "Side Navigation" (also called "Fly-In App Menu" or "Slide Out Navigation") has been very famous lately. It started with Spotify and had shortly been followed by Evernote and Google+. It has now been adopted by a lot more applications such as YouTube, Facebook, Dribbble, etc. Because of the great adoption of this - [IOzone for Arch Linux ARM](https://www.logikdev.com/2013/06/08/iozone-for-arch-linux-arm/) - For different benchmarks I will later publish on this blog, I wanted to use IOzone. Unfortunately, this package is not available on Arch Linux ARM via the pacman package manager. This tool is not difficult to compile, but still I decided to create an Arch Linux ARM package for it and share it with you: - [SD Card Benchmark on a Raspberry Pi](https://www.logikdev.com/2013/07/01/sd-card-benchmark-on-a-raspberry-pi/) - Some time ago, I bought a Raspberry Pi. I am not going to describe what it is here, but you can read more about it on this page. The first thing you need to buy when you've got a Raspberry Pi is a SD card. But the question I asked myself is: "Which one?". Indeed, - [Encrypt and decrypt with Java](https://www.logikdev.com/2013/08/16/encrypt-and-decrypt-with-java/) - Encryption is a very important subject in computer science which developers need to deal with quite often. I already wrote a few years ago an article containing some code to encrypt data with PHP and decrypt it with Java. I will give you this time the code to encrypt and decrypt data with the same - [Samba vs NFS on DNS-323](https://www.logikdev.com/2013/09/09/samba-vs-nfs-on-dns-323/) - So far, I was using Samba to share the files stored on my D-Link DNS-323. However, people tend to say that NFS is quicker than Samba. So let's benchmark those two protocols and figure out which one is actually quicker. First of all, here is my configuration: ServerClient D-Link DNS-323 Linux dlink-5610E5 2.6.12.6-arm1 Samba 3.0.24 - [Replace disk on OpenSolaris](https://www.logikdev.com/2014/03/13/replace-disk-on-opensolaris/) - I've bought six years ago, in April 2008, a Sun Ultra 20 M2 Workstation, Dual-Core 2.6 GHz AMD Opteron Processor - Model 1218. The server contains four hard drives of 250Go and I installed the now abandoned operating system OpenSolaris. On top of that, I used software RAID and virtual storage pools offered by ZFS. - [Corrupted pool because of a smaller disk](https://www.logikdev.com/2014/03/20/corrupted-pool-because-of-a-smaller-disk/) - A few days ago, I replaced one of the four hard drives of my server using the now abandoned operating system OpenSolaris (cf. Replace disk on OpenSolaris). But after a forced reboot (due to a power failure), the raid pool called 'dpool' was corrupted: smoreau@GGW-Server:~# zpool import pool: dpool id: 4586630987298426393 state: UNAVAIL action: The ## Pages - [About](https://www.logikdev.com/about/) - I am a senior developer with more than seven years of work experience. I am mainly working with Java, PHP and Ajax in the web industry. As a developer, I am daily facing bugs and errors to fix. Some of them are straight forward to fix but some others can take days to find a ## Categories - [Blog](https://www.logikdev.com/category/blog/) - [Java](https://www.logikdev.com/category/java/) - [Tricks](https://www.logikdev.com/category/tricks/) - [Html](https://www.logikdev.com/category/html/) - [Linux](https://www.logikdev.com/category/linux/) - [MySQL](https://www.logikdev.com/category/mysql/) - [Windows](https://www.logikdev.com/category/windows/) - [VBScript](https://www.logikdev.com/category/vbscript/) - [PHP](https://www.logikdev.com/category/php/) - [AVR](https://www.logikdev.com/category/avr/) - [Python](https://www.logikdev.com/category/python/) - [Big Data](https://www.logikdev.com/category/big-data/) - [Android](https://www.logikdev.com/category/android/) ## Tags - [RichFaces](https://www.logikdev.com/tag/richfaces/) - [Ajax](https://www.logikdev.com/tag/ajax/) - [JSF](https://www.logikdev.com/tag/jsf/) - [memory](https://www.logikdev.com/tag/memory/) - [COMPRESS_STATE_IN_SESSION](https://www.logikdev.com/tag/compress_state_in_session/) - [state manager](https://www.logikdev.com/tag/state-manager/) - [AjaxStateManager](https://www.logikdev.com/tag/ajaxstatemanager/) - [compression](https://www.logikdev.com/tag/compression/) - [No saved view state](https://www.logikdev.com/tag/no-saved-view-state/) - [ViewExpiredException](https://www.logikdev.com/tag/viewexpiredexception/) - [session time out](https://www.logikdev.com/tag/session-time-out/) - [BUILD_BEFORE_RESTORE](https://www.logikdev.com/tag/build_before_restore/) - [a4j:poll](https://www.logikdev.com/tag/a4jpoll/) - [Facelets](https://www.logikdev.com/tag/facelets/) - [SKIP_COMMENTS](https://www.logikdev.com/tag/skip_comments/) - [JavaScript](https://www.logikdev.com/tag/javascript/) - [old browsers](https://www.logikdev.com/tag/old-browsers/) - [onclick](https://www.logikdev.com/tag/onclick/) - [Internet Explorer](https://www.logikdev.com/tag/internet-explorer/) - [Bug](https://www.logikdev.com/tag/bug/) - [Return key](https://www.logikdev.com/tag/return-key/) - [Monitoring](https://www.logikdev.com/tag/monitoring/) - [Zabbix](https://www.logikdev.com/tag/zabbix/) - [Tomcat](https://www.logikdev.com/tag/tomcat/) - [Hibernate](https://www.logikdev.com/tag/hibernate/) - [JMX Remote](https://www.logikdev.com/tag/jmx-remote/) - [Zapcat](https://www.logikdev.com/tag/zapcat/) - [Hibernate MBean](https://www.logikdev.com/tag/hibernate-mbean/) - [root context](https://www.logikdev.com/tag/root-context/) - [JExcelAPI](https://www.logikdev.com/tag/jexcelapi/) - [JXL](https://www.logikdev.com/tag/jxl/) - [ArrayIndexOutOfBoundsException](https://www.logikdev.com/tag/arrayindexoutofboundsexception/) - [WritableFont](https://www.logikdev.com/tag/writablefont/) - [cron](https://www.logikdev.com/tag/cron/) - [shell](https://www.logikdev.com/tag/shell/) - [bash](https://www.logikdev.com/tag/bash/) - [UTF-8](https://www.logikdev.com/tag/utf-8/) - [locale](https://www.logikdev.com/tag/locale/) - [varchar](https://www.logikdev.com/tag/varchar/) - [blob](https://www.logikdev.com/tag/blob/) - [group_concat_max_len](https://www.logikdev.com/tag/group_concat_max_len/) - [group_concat()](https://www.logikdev.com/tag/group_concat/) - [VirtualBox](https://www.logikdev.com/tag/virtualbox/) - [Apple keyboard](https://www.logikdev.com/tag/apple-keyboard/) - [KLC](https://www.logikdev.com/tag/klc/) - [limitToList](https://www.logikdev.com/tag/limittolist/) - [flash/twinkle](https://www.logikdev.com/tag/flashtwinkle/) - [Faces Navigation](https://www.logikdev.com/tag/faces-navigation/) - [EL expressions](https://www.logikdev.com/tag/el-expressions/) - [SEO](https://www.logikdev.com/tag/seo/) - [view handler](https://www.logikdev.com/tag/view-handler/) - [MyFaces](https://www.logikdev.com/tag/myfaces/) - [message tag](https://www.logikdev.com/tag/message-tag/) - [FacesMessage](https://www.logikdev.com/tag/facesmessage/) - [EAN barcode](https://www.logikdev.com/tag/ean-barcode/) - [date command](https://www.logikdev.com/tag/date-command/) - [ImageMagick](https://www.logikdev.com/tag/imagemagick/) - [numberOfViewsInSession](https://www.logikdev.com/tag/numberofviewsinsession/) - [Back button](https://www.logikdev.com/tag/back-button/) - [ServerXMLHTTP](https://www.logikdev.com/tag/serverxmlhttp/) - [proxy](https://www.logikdev.com/tag/proxy/) - [proxycfg tool](https://www.logikdev.com/tag/proxycfg-tool/) - [TortoiseSVN](https://www.logikdev.com/tag/tortoisesvn/) - [svn](https://www.logikdev.com/tag/svn/) - [file input](https://www.logikdev.com/tag/file-input/) - [file upload](https://www.logikdev.com/tag/file-upload/) - [fileSize function](https://www.logikdev.com/tag/filesize-function/) - [ActiveX](https://www.logikdev.com/tag/activex/) - [GMT](https://www.logikdev.com/tag/gmt/) - [BST](https://www.logikdev.com/tag/bst/) - [outputText](https://www.logikdev.com/tag/outputtext/) - [convertDateTime](https://www.logikdev.com/tag/convertdatetime/) - [time zone](https://www.logikdev.com/tag/time-zone/) - [JSTL](https://www.logikdev.com/tag/jstl/) - [loadBundle](https://www.logikdev.com/tag/loadbundle/) - [resource bundle](https://www.logikdev.com/tag/resource-bundle/) - [suggestionbox](https://www.logikdev.com/tag/suggestionbox/) - [selfRendered](https://www.logikdev.com/tag/selfrendered/) - [pom.xml](https://www.logikdev.com/tag/pom-xml/) - [SequenceDataAdaptor](https://www.logikdev.com/tag/sequencedataadaptor/) - [JBoss](https://www.logikdev.com/tag/jboss/) - [mcrypt](https://www.logikdev.com/tag/mcrypt/) - [javax.crypto](https://www.logikdev.com/tag/javax-crypto/) - [encryption](https://www.logikdev.com/tag/encryption/) - [decryption](https://www.logikdev.com/tag/decryption/) - [InvalidKeyException](https://www.logikdev.com/tag/invalidkeyexception/) - [Java Cryptography Extension](https://www.logikdev.com/tag/java-cryptography-extension/) - [JCE](https://www.logikdev.com/tag/jce/) - [Twitter](https://www.logikdev.com/tag/twitter/) - [OAuth](https://www.logikdev.com/tag/oauth/) - [Basic Authentication](https://www.logikdev.com/tag/basic-authentication/) - [access token](https://www.logikdev.com/tag/access-token/) - [Twitter4J](https://www.logikdev.com/tag/twitter4j/) - [D-Link](https://www.logikdev.com/tag/d-link/) - [DNS-313](https://www.logikdev.com/tag/dns-313/) - [DNS-323](https://www.logikdev.com/tag/dns-323/) - [ntpd](https://www.logikdev.com/tag/ntpd/) - [NAS](https://www.logikdev.com/tag/nas/) - [NTP](https://www.logikdev.com/tag/ntp/) - [fun_plug](https://www.logikdev.com/tag/fun_plug/) - [Samba](https://www.logikdev.com/tag/samba/) - [permissions](https://www.logikdev.com/tag/permissions/) - [unix extensions](https://www.logikdev.com/tag/unix-extensions/) - [Mac OS X](https://www.logikdev.com/tag/mac-os-x/) - [zero date](https://www.logikdev.com/tag/zero-date/) - [JDBC](https://www.logikdev.com/tag/jdbc/) - [zeroDateTimeBehavior](https://www.logikdev.com/tag/zerodatetimebehavior/) - [fuse bytes](https://www.logikdev.com/tag/fuse-bytes/) - [low-frequency oscillator](https://www.logikdev.com/tag/low-frequency-oscillator/) - [microcontrollers](https://www.logikdev.com/tag/microcontrollers/) - [ATtiny13A](https://www.logikdev.com/tag/attiny13a/) - [mysqldump](https://www.logikdev.com/tag/mysqldump/) - [function](https://www.logikdev.com/tag/function/) - [stored procedure](https://www.logikdev.com/tag/stored-procedure/) - [routines](https://www.logikdev.com/tag/routines/) - [log_bin_trust_function_creators](https://www.logikdev.com/tag/log_bin_trust_function_creators/) - [binary logging](https://www.logikdev.com/tag/binary-logging/) - [cURL](https://www.logikdev.com/tag/curl/) - [PostgreSQL](https://www.logikdev.com/tag/postgresql/) - [Segmentation fault](https://www.logikdev.com/tag/segmentation-fault/) - [extensions](https://www.logikdev.com/tag/extensions/) - [ModalPanel](https://www.logikdev.com/tag/modalpanel/) - [maximumSeverity](https://www.logikdev.com/tag/maximumseverity/) - [Redmine](https://www.logikdev.com/tag/redmine/) - [HostMonster](https://www.logikdev.com/tag/hostmonster/) - [Ruby](https://www.logikdev.com/tag/ruby/) - [run-parts](https://www.logikdev.com/tag/run-parts/) - [Exec format error](https://www.logikdev.com/tag/exec-format-error/) - [shebang](https://www.logikdev.com/tag/shebang/) - [component holding state](https://www.logikdev.com/tag/component-holding-state/) - [double-click](https://www.logikdev.com/tag/double-click/) - [disable button](https://www.logikdev.com/tag/disable-button/) - [onsubmit](https://www.logikdev.com/tag/onsubmit/) - [Amazon Cloud](https://www.logikdev.com/tag/amazon-cloud/) - [cpuinfo](https://www.logikdev.com/tag/cpuinfo/) - [EC2 Compute Units](https://www.logikdev.com/tag/ec2-compute-units/) - [CPU capacity](https://www.logikdev.com/tag/cpu-capacity/) - [email attachment](https://www.logikdev.com/tag/email-attachment/) - [boundary](https://www.logikdev.com/tag/boundary/) - [0.9999 value](https://www.logikdev.com/tag/0-9999-value/) - [AVG function](https://www.logikdev.com/tag/avg-function/) - [Amazon RDS](https://www.logikdev.com/tag/amazon-rds/) - [transparent](https://www.logikdev.com/tag/transparent/) - [tolerance](https://www.logikdev.com/tag/tolerance/) - [image background](https://www.logikdev.com/tag/image-background/) - [SQL Server](https://www.logikdev.com/tag/sql-server/) - [mssql2mysql](https://www.logikdev.com/tag/mssql2mysql/) - [SQL dump](https://www.logikdev.com/tag/sql-dump/) - [data type](https://www.logikdev.com/tag/data-type/) - [GeoIP](https://www.logikdev.com/tag/geoip/) - [MaxMind](https://www.logikdev.com/tag/maxmind/) - [IP address](https://www.logikdev.com/tag/ip-address/) - [Apache](https://www.logikdev.com/tag/apache/) - [Amazon S3](https://www.logikdev.com/tag/amazon-s3/) - [s3sync](https://www.logikdev.com/tag/s3sync/) - [backup](https://www.logikdev.com/tag/backup/) - [synchronisation](https://www.logikdev.com/tag/synchronisation/) - [system date](https://www.logikdev.com/tag/system-date/) - [ntpdate](https://www.logikdev.com/tag/ntpdate/) - [security mode](https://www.logikdev.com/tag/security-mode/) - [java.net.SocketException](https://www.logikdev.com/tag/java-net-socketexception/) - [Too many open files](https://www.logikdev.com/tag/too-many-open-files/) - [open file descriptors](https://www.logikdev.com/tag/open-file-descriptors/) - [ulimit](https://www.logikdev.com/tag/ulimit/) - [lsof](https://www.logikdev.com/tag/lsof/) - [s3fs](https://www.logikdev.com/tag/s3fs/) - [FUSE filesystem](https://www.logikdev.com/tag/fuse-filesystem/) - [libfuse](https://www.logikdev.com/tag/libfuse/) - [libxml](https://www.logikdev.com/tag/libxml/) - [mount](https://www.logikdev.com/tag/mount/) - [rsync](https://www.logikdev.com/tag/rsync/) - [hard links](https://www.logikdev.com/tag/hard-links/) - [offsetTop](https://www.logikdev.com/tag/offsettop/) - [SpagoBI](https://www.logikdev.com/tag/spagobi/) - [Open Source](https://www.logikdev.com/tag/open-source/) - [Business Intelligence](https://www.logikdev.com/tag/business-intelligence/) - [BI](https://www.logikdev.com/tag/bi/) - [JDBC driver](https://www.logikdev.com/tag/jdbc-driver/) - [BIRT](https://www.logikdev.com/tag/birt/) - [route](https://www.logikdev.com/tag/route/) - [network](https://www.logikdev.com/tag/network/) - [Mac Mini PowerPC](https://www.logikdev.com/tag/mac-mini-powerpc/) - [PPC](https://www.logikdev.com/tag/ppc/) - [Ubuntu](https://www.logikdev.com/tag/ubuntu/) - [tftp](https://www.logikdev.com/tag/tftp/) - [netboot](https://www.logikdev.com/tag/netboot/) - [Open Firmware](https://www.logikdev.com/tag/open-firmware/) - [CP2102](https://www.logikdev.com/tag/cp2102/) - [CP2101](https://www.logikdev.com/tag/cp2101/) - [USB to RS232 converter](https://www.logikdev.com/tag/usb-to-rs232-converter/) - [Silicon Labs](https://www.logikdev.com/tag/silicon-labs/) - [dmesg](https://www.logikdev.com/tag/dmesg/) - [DOS](https://www.logikdev.com/tag/dos/) - [carriage return](https://www.logikdev.com/tag/carriage-return/) - [vi](https://www.logikdev.com/tag/vi/) - [fileformat](https://www.logikdev.com/tag/fileformat/) - [BigInteger](https://www.logikdev.com/tag/biginteger/) - [leading zero](https://www.logikdev.com/tag/leading-zero/) - [MD5](https://www.logikdev.com/tag/md5/) - [32 bytes](https://www.logikdev.com/tag/32-bytes/) - [Apache Cassandra](https://www.logikdev.com/tag/apache-cassandra/) - [NoSQL](https://www.logikdev.com/tag/nosql/) - [Apache Flume](https://www.logikdev.com/tag/apache-flume/) - [Cassandra CLI](https://www.logikdev.com/tag/cassandra-cli/) - [CQL](https://www.logikdev.com/tag/cql/) - [DataStax](https://www.logikdev.com/tag/datastax/) - [IRB](https://www.logikdev.com/tag/irb/) - [validation class](https://www.logikdev.com/tag/validation-class/) - [PlanetCassandra](https://www.logikdev.com/tag/planetcassandra/) - [Side Navigation](https://www.logikdev.com/tag/side-navigation/) - [Fly-In App Menu](https://www.logikdev.com/tag/fly-in-app-menu/) - [Slide Out Navigation](https://www.logikdev.com/tag/slide-out-navigation/) - [Spotify](https://www.logikdev.com/tag/spotify/) - [Evernote](https://www.logikdev.com/tag/evernote/) - [Google+](https://www.logikdev.com/tag/google/) - [YouTube](https://www.logikdev.com/tag/youtube/) - [Facebook](https://www.logikdev.com/tag/facebook/) - [Dribbble](https://www.logikdev.com/tag/dribbble/) - [Cyril Mottier](https://www.logikdev.com/tag/cyril-mottier/) - [OnClickListener](https://www.logikdev.com/tag/onclicklistener/) - [IOzone](https://www.logikdev.com/tag/iozone/) - [Arch Linux](https://www.logikdev.com/tag/arch-linux/) - [pacman](https://www.logikdev.com/tag/pacman/) - [ARM](https://www.logikdev.com/tag/arm/) - [AUR](https://www.logikdev.com/tag/aur/) - [Arch User Repository](https://www.logikdev.com/tag/arch-user-repository/) - [Raspberry Pi](https://www.logikdev.com/tag/raspberry-pi/) - [SD card](https://www.logikdev.com/tag/sd-card/) - [benchmarking](https://www.logikdev.com/tag/benchmarking/) - [NFS](https://www.logikdev.com/tag/nfs/) - [CIFS](https://www.logikdev.com/tag/cifs/) - [OpenSolaris](https://www.logikdev.com/tag/opensolaris/) - [Sun](https://www.logikdev.com/tag/sun/) - [Software RAID](https://www.logikdev.com/tag/software-raid/) - [virtual storage pool](https://www.logikdev.com/tag/virtual-storage-pool/) - [ZFS](https://www.logikdev.com/tag/zfs/) - [zpool](https://www.logikdev.com/tag/zpool/) - [partition table](https://www.logikdev.com/tag/partition-table/) - [Java](https://www.logikdev.com/tag/java/) - [Html](https://www.logikdev.com/tag/html/) - [Linux](https://www.logikdev.com/tag/linux/) - [MySQL](https://www.logikdev.com/tag/mysql/) - [Windows](https://www.logikdev.com/tag/windows/) - [VBScript](https://www.logikdev.com/tag/vbscript/) - [PHP](https://www.logikdev.com/tag/php/) - [AVR](https://www.logikdev.com/tag/avr/) - [Python](https://www.logikdev.com/tag/python/) - [Android](https://www.logikdev.com/tag/android/)