JSF Performance: Mojarra improves dramatically with latest release
Reblogged from techscouting through the java news:
In our comparative study about the runtime behavior of both JSF implementations we came to the conclusion that Apache MyFaces performs significantly better on large component trees than the reference implementation Oracle Mojarra. The duration Mojarra took to step through the JSF lifecycle was increased by factors compared to MyFaces, e.g. a view containing 1.000 components took more than 5 times longer to render with Mojarra.
Windows 7 sometimes breaks FTP connections on Java 7 if firewall is enabled
netsh advfirewall set global StatefulFTP
This was helpful comment when I installed the latest IntelliJ JetBrains 12.1. The link to the issue is http://youtrack.jetbrains.com/issue/WI-17206
Visualize data and execution
The blog post http://worrydream.com/LearnableProgramming/ has an amazing introduction on how a learning environment can show a budding developer the state and execution of a piece of code.
Impedance mismatch….
Notes on InfoQ presentation by Stuart Halloway on the Impedance Mismatch.
The impedance mismatch between the OOP and DATABASE design philosophies have bitten every project in the butt at some point in time and I liked the reference to Ted Neward’s quote that ORM is all rosy in the beginning but sooner or later depending on the complexity of the problem being solved there is something that ORM can not do or imposes a solution that is sub-standard / hurt performance or is costly.
Now we all cannot afford the new 1/8th Oracle Exalogic X3-2 at a mere $200,000.00 a pop to make the application perform correctly and so it comes down to the designs / frameworks that we choose. By the way the X3-2 looks like an awesome piece of equipment that when you look at the numbers presented at Oracle OpenWorld makes you mouth drool for the budget just to spend a couple of hours to see what this baby is capable of.
Reference is also made in the presentation to Martin Fowler’s quip that the only time that you can dump on ORM is if you have an alternative to present which Stuart Halloway does in convincing style by introducing the Datomic by performing requirements analysis on what the ideal solution would like. The challenge was then laid down to perform the requirements analysis `at home` to determine if other solutions and/or criteria could be exposed.
I think this is a worthy challenge and to try it out I am going to take my concept application Sonicboom which I was going to change to use MarkLogic instead change it to use Datomic to determine the value of the technique.
Website updated
The website over at http://www.yellowfire.co.za has been updated with a new look and feel.
SQL Server JDBC Driver 3.0 returns incorrect data when using DATE, DATETIME2 or DATETIMEOFFSET
Symptoms
Consider the following scenario:
- You have a Java application that uses Microsoft SQL Server JDBC Driver version 3.0 and Java Runtime Environment version 1.7 (JRE 1.7) to connect to a SQL Server database.
The application uses any of the following functions to obtain a date from the database:- getDate()
- getTimeStamp()
- getDateTimeOffset()
- The data type in the SQL Server database is DATE, DATETIME2, or DATETIMEOFFSET.
In this scenario, the function returns an incorrect date value.
Notes
- This issue occurs only when the date value that is returned by the function is more recent than the year 1582 in the Gregorian calendar.
- This issue does not occur if the application uses one of the following combinations of components:
- Microsoft SQL Server JDBC Driver version 3.0 and JRE 1.5 or JRE 1.6
- Microsoft SQL Server JDBC Driver version 2.0 and JRE 1.7
The hotfix and article can be found at
http://support.microsoft.com/kb/2652061/en-us
Duinsoft makes installing Oracle Java 7 easy on Linux Mint 13
I needed Oracle’s version of Java 7 so that I can develop with the JetBrains WebStorm IDE on my Mint Linux 13 box, and I found that the folks over at Duinsoft have made it real easy to do this.
The basic steps are:-
- put the line
deb http://www.duinsoft.nl/pkg debs all
in the file /etc/apt/sources.list, either using Software Sources from your System Menu or by editing the file in an editor (as root)
or:
put this line in a file named (e.g.) duinsoft.list in the directory /etc/apt/sources.list.d - import the gpg key with the command (all on one line)
sudo apt-key adv –keyserver keys.gnupg.net –recv-keys 5CB26B26 - enter the commands (two lines)
sudo apt-get update
sudo apt-get install update-sun-jre
or use Synaptic to install the package
installation of the Runtime Environment will follow automatically
The page at Duinsoft details how to more control of the installation process.
Installing Apache Karaf features behind a firewall
Apache Karaf can either use :-
- the proxy settings in the Maven settings.xml in the specific user’s .m2 directory running the Karaf instance
- the proxy settings in the global settings.xml in the conf directory of the Maven installation
- the mvn repository can be changed within Karaf to include a local Maven repository like Sonatype Nexus
To use the settings.xml file, specify the following in the file in the global conf directory or in the user’s .m2 directory.
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>username</username>
<password>password*</password>
<host>hostname or ip</host>
<port>port</port>
<nonProxyHosts>localhost|127.0.0.1|10.0.0.3|10.0.0.4</nonProxyHosts>
</proxy>
</proxies>
The approach that I prefer is to add the Sonatype Nexus public url to the list of repositories that Apache Karaf should use when resolving features. This allows all the developers in a team to utilize the same shared resource for resolving artifacts. Open the ${karaf install folder}\etc\org.ops4j.pax.url.mvn.cfg file and add the url to the org.ops4j.pax.url.mvn.repositories config item.
org.ops4j.pax.url.mvn.repositories= \
http://localhost:9091/nexus/content/groups/public, \
http://repo1.maven.org/maven2@id=central, \
http://repository.apache.org/content/groups/snapshots-group@id=apache@snapshots@noreleases, \
https://oss.sonatype.org/content/repositories/ops4j-snapshots@id=ops4j.sonatype.snapshots.deploy@snapshots@noreleases, \
file:${karaf.home}/${karaf.default.repository}@id=systemrepo, \
file:${karaf.data}/kar@id=karrepos@multi
YouTube Downloader commands
Download a video
youtube-dl
Continue a previously cancelled download
youtube-dl -c
Request the file formats of the video
youtube-dl -F
Download the video in specified format
youtube-dl -f
Batch download
youtube-dl -a filename.txt
Batch download and use title in filename
youtube-dl -at filename.txt
Extract audio
youtube-dl –extract-audio
youtube-dl –audio-format mp3
youtube-dl –audio-quality 256k
Extract audio and keep the video
youtube-dl –audio-format mp3 –audio-quality 176 -k
cURL commands
1. Download a Single File
$ curl http://www.centos.org
2. Save the cURL Output to a file
-o (lowercase o) the result will be saved in the filename provided in the command line
-O (uppercase O) the filename in the URL will be taken and it will be used as the filename to store the result
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
3. Fetch Multiple Files at a time
$ curl -O URL1 -O URL2
4. Follow HTTP Location Headers with -L option
$ curl -L http://www.google.com
5. Continue/Resume a Previous Download
curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
6. Limit the Rate of Data Transfer
$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
7. Download a file only if it is modified before/after the given time
$ curl -z 21-Dec-11 http://www.example.com/yy.html
$ curl -z -21-Dec-11 http://www.example.com/yy.html
8. Pass HTTP Authentication in cURL
$ curl -u username:password URL
9. Download Files from FTP server
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
10. List/Download using Ranges
$ curl ftp://ftp.uk.debian.org/debian/pool/main/[a-z]/
11. Upload Files to FTP Server
$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
$ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
12. More Information using Verbose and Trace Option
curl -v http://google.co.in
13. Get Definition of a Word using DICT Protocol
$ curl dict://dict.org/d:ravenous:english
14. Use Proxy to Download a File
$ curl -x proxysever.test.com:3128 http://google.co.in
15. Send Mail using SMTP Protocol
$ curl --mail-from blah@test.com --mail-rcpt foo@test.com smtp://mailserver.com