List files sorted by date in java
File inboxDir = new File(“Path to your directory”);
File[] files = inboxDir.listFiles();
Arrays.sort( files, new Comparator()
{
public int compare(Object o1, Object o2) {
return new Long(((File)o1).lastModified()).compareTo(new Long(((File) o2).lastModified()));
}
});
Unidev Introduces a Content Management System Designed with Law Firms in Mind
Auctori:law Provides Turn-Key Web Solution for the Legal Industry
Unidev® is proud to announce Auctori:law™, a Microsoft Certified Web Content Management System (WCMS), designed specifically for law firms, will launch on October 15, 2009. Unidev designed the WCMS in association with several law firms to give attorneys and legal professionals an easy to use, but powerful system to update and maintain their professionally designed website.
�
Web-based Auctori:law gives attorneys the power to dynamically update their site from anywhere in the world, at anytime. With Auctori:law, it is simple to build and edit website content without the help of a professional or having had previous experience or knowledge in HTML. By simply logging into a site through a secure, password-protected portal, site administrators can update content, change images, add keywords and make other instantaneous changes to their websites.
Auctori:law is a Software as a Service (SaaS) solution providing all of the benefits of cloud computing. Unidev’s solution provides firms with the opportunity to strengthen their Internet presence and their overall brand reputation by giving lawyers a professionally designed site and the power to maintain their content in real time. In addition to standard content management features, Auctori:law is equipped with an attorney biographies module, news and articles module, and an images module. Auctori:law adheres to all Search Engine Optimization best practices in order to maximize website traffic and usability.
“While I have worked in database driven content management programs in the past, I continue to be impressed by the level of sophistication and ease of use of the WCMS as built by Unidev for our law firm. Through Unidev’s WCMS I am not only able to freely edit content throughout our site, I am now in charge of navigation items and graphics, previously outside the realm of my editing parameters,” said Kelly Annis, Client Relations Manager for The Stolar Partnership, LLP.
A Few Unique features of Auctori:Law include:
• Attorney and professional biography builder with profile photos, dynamic V-card generation, customizable fields, and professional PDF printing functionality
• Flexible content pages and navigation structure for creating practice areas and industry sections
• News and articles module to create and archive publications, resources and events.
• Multi-lingual
• Print-ready PDF documents
• Secured document libraries
-To see two excellent examples of Auctori:law in action, please visit The Stolar Partnership, LLP at http://www.stolarlaw.com and Paul J. Passanante, PC & Associates at http://www.passanantelaw.com.
“We are very excited about the launch of Auctori:law,” said Greg Alexander, CEO of Unidev. “Our team is very experienced in developing customized legal websites. We developed this WCMS designed specifically for the legal industry based upon this experience. Auctori:law presented itself as an excellent opportunity for our clients to really take control of their websites with an application that truly answers the needs of a legal firm. I am confident that Auctori:law is a complete solution for any law firm’s online needs.”
Put the Power into Your Hands Today …
Contact Auctori:Law for further information and for a free Auctori:Law™ demonstration! Call us at: 888.629.4672 or email us at: demo@Auctori.com.
Using PHP FastCGI mode on Windows Server 2003 x64 w/ IIS in 32-bit mode
I recently needed to upgrade the PHP for a particular site from 5.2.6 to 5.3.0. Of course, this is when I found out that PHP no longer supports the ISAPI module and instead wants you to use FastCGI. Luckily I found a great article on how to configure IIS at http://learn.iis.net/page.aspx/247/using-fastcgi-to-host-php-applications-on-iis-60/. However, these instructions have some caveats in regards to running IIS in 32 bit mode on Windows Server 2003 x64. To make a long story short, just like with most things running in 32 bit mode on x64, everything that references %WINDIR%\system32 really needs to point to %WINDIR%\SysWOW64. If you use the fcgiconfig.js script, this will configure everything to point to %WINDIR%\system32.
- The Web Service Extension needs to point to %WINDIR%\SysWOW64\inetsrv\fcgiext.dll.
- The .php extension on the website also needs to point to %WINDIR%\SysWOW64\inetsrv\fcgiext.dll.
- The fcgiext.ini file must also be located in %WINDIR%\SysWOW64\inetsrv. Otherwise you will get a 500 error from FastCGI saying it cannot find the configuration file.
Note that the fcgiconfig.js script is only installed in %WINDIR%\system32\inetsrv. I was able to create a fcgiconfigwow64.js file that points to the correct files. The script needs to have at least an ini file with the “[Types]” section in the %WINDIR%\SysWOW64\inetsrv directory. It also needs to be located under %WINDIR%\system32 as it doesn’t support running under Wow64. You just need to change the following 2 lines near the top of the script.
From:
var g_iniPath = g_Shell.ExpandEnvironmentStrings( "%WinDir%\\system32\\inetsrv\\fcgiext.ini" );
var g_extensionPath = g_Shell.ExpandEnvironmentStrings( "%WinDir%\\system32\\inetsrv\\fcgiext.dll" );
To:
var g_iniPath = g_Shell.ExpandEnvironmentStrings( "%WinDir%\\SysWOW64\\inetsrv\\fcgiext.ini" );
var g_extensionPath = g_Shell.ExpandEnvironmentStrings( "%WinDir%\\SysWOW64\\inetsrv\\fcgiext.dll" );
Development Efficiency
Development efficiency is an area we are constantly investing in and working to improve. I feel it is imperative that we are able to deliver value to customers at the least cost possible. Just like Walmart, if we drive the costs down to develop high function software and then pass the savings on, it is a great thing for both us and our customers.
There are two general methods for approaching a development project (be it a simple website or a complex application). The first is to get a complete defintion prior to coding and then focusing on driving to completion, staying as true to the original design as possible. The second is to define a clear target but assume that the direction will change and that the requirements will change as more information becomes available during the design and development phases. Both work, we tend to the later because we feel our ultimate goal is to deliver the best value product to the customer which may or may not be exactly what was originally defined.
There are a number of important cost drivers of a development effort. Effective communications with the customer and within the team are probably the most important one. By communicating in a timely and complete manner, you can drastically reduce rework. This is also the biggest challenge as everyone communicates differently. It is easy to require daily meetings, it is a lot more difficult to ensure that everyone understands completely everything that was said in the meeting.
We designed the layout of our offices to support easy and constant communications between team members using a open spaces, sound deadening materials which allow many conversations to occur simultaneously without disturbing others. We encourage ‘rollup meetings’ and collaboration between team members to help make sure that everyone is moving in the same direction at all times. Teams coordinate activities within the team even though individual members may be from different operating groups (technical, creative, etc.) reducing unnecessary management overhead.
Other simple investments to make to improve efficiencies are having large and available white boards for discussions, dual or triple monitor development stations (probably the most cost effective efficiency there is), fast workstations and servers (it doesn’t help if it takes a lot of time each day to do the basic development housekeeping such as check in and check out) and available development, test and production systems so teams are not stepping on one another. The software tools you use are worth some effort to evaluate thoroughly. Developers will often gravitate to the latest and flashiest tools but those are not always the best idea, especially if they do not noticably improve the teams production and they are not consistent with the rest of your development platform. It is important however, to make sure you have excellent tools as these can be a great timesaver and a very worthwhile investment.
Training is another critical investment. Teams need to be aware of the latest methods and processes. Not only does this help with the code quality but also with creating more efficient designs.
With investment, training and time, you can work to reduce your development costs significantly. With lower costs, you also have a better risk profile which is a great value to both the developer and the customer.
Unidev Employees Attend St. Louis Day of .NET Conference
The second annual St. Louis Day of .NET conference was held on August 28th and 29th, 2009. Over 500 local .NET developers, architects and other technologists, including Unidev’s George Zheng and Jinhai Wang, attended the highly anticipated event at the exciting location of The Ameristar Casino in St. Charles, Missouri. The conference, with too much info to pack into just one day, had over 50 technical sessions from local and national experts on Saturday and Sunday covering all the technologies of today, as well as providing a sneak preview of the technology possibilities of the future.
George and Jinhai took a lot of useful information from the conference and were exposed to new skills and ideas. “Day to day we use the various Microsoft Tools to focus on one project, but the conference covered every aspect of the tool. Meeting with other users of the same tools, helped me to become quicker, more educated and more productive,” George Zheng says of his experience at the conference.
Jinhai found the session on Language Integrated Query (LINQ), presented by Keith Dahlby, Senior Consultant at Inetium, to be most impressive. The session explored technologies that make LINQ possible and discussed how you can use the same techniques to make LINQ work for you. Another session Jinhai and George both found notable was the session on Silverlight presented by Brad Tutterow, Senior Consultant at Daugherty Business Solutions. Silverlight is a browser plug-in that allows .NET developers to write rich internet applications (RIAs). The session covered how to use Visual Studio and the Expression Studio suite together to build a working Silverlight game, the outcome of the presentation was a working Silverlight game that participants got to take home with them.
A few of the session topics covered at the conference included C #, VB.NET, Sharepoint, WPF, WCF, Visual Studio, .NET 4.0, Expression Blend, SQL Server 2008, ASP.NET MVC and Windows Azure. In an effort to provide the most rewarding experience possible to participants, this year’s conference offered a wide variety of alternative sessions and other unique opportunities such as roundtable discussions, “Birds of a Feather” opportunities, a vendor fair and a Friday night social at Home Night Club, located in the Ameristar Casino.
George and Jinhai both saw the .NET Conference as a success and found the experience to be extremely beneficial to their work at Unidev. They are looking forward to what the St. Louis Day of .NET 2010 Conference has in store!
Software Life Cycle, Source Code and Intellectual Property
An important but often neglected consideration when contracting for the custom development of your web site or software application are the long term issues such as who owns the source code, is it updated, who maintains the code and do you have the right to change vendors down the line and under what circumstances. While this has been an issue for a long time with custom software development, it is becoming much more common now with custom web sites as they become much more powerful through the use of content management tools and e-commerce components. In the past, with a simple brochure site, you could throw away the old one and develop something new to replace it. With today’s powerful tools, a sites appearance can change but the background code can last for many years.
In most cases, a web design or software development company will have some standard code libraries that they utilize for each project. This is a good thing in that it allows you to get more function usually at a lower cost and faster than developing everything just for you. These libraries could have been developed over a long time across a large number of customers. To replicate them from scratch could cost more than your entire project. The potential issue that you need to resolve in your contract is how do those common libraries affect your ability to upgrade long term. Web server platforms, operating systems and technologies are constantly changing. Are those libraries continually updated to the latest versions? What happens if the vendor goes out of business or decides to no longer support those libraries? What happens if you want to change vendors? At a minimum, you should consider software escrow with a trusted third party from whom you will be able to get the source code if your current vendor goes out of business or no longer supports the software.
Also, you should consult your lawyer about the ownership of the code and content being developed for your site. If you are having work done overseas, then you should understand that any enforcement of your intellectual property rights or ownership of the source code is going to be difficult at best. Trying to prevent a foreign entity from divulging or reusing your proprietary information would be an expensive and difficult effort.
If you are have enhancements or modifications done to your software, make sure you have the very latest source code when it is complete. The software developer may or may not keep good track of small modifications made to your programs. It is critical that you or your vendor have the ability to rebuild your site at any time from scratch and that you have some legal recourse to obtain all of the source code if the vendor ceases business. I would also try to get the source code if the business unit you worked with is sold. The new owner may have different ideas about how/if you are supported.
In summary, you need to really understand exactly what you are buying and consider what options you have going forward. Without source code (and/or the legal right to it), you will have limited options if your vendor goes out of business, he decides to abandon the software, you have a falling out with the vendor or you wish to change vendors.
Bidirectional Associations and JiBX
I recently needed to use JiBX to parse a XML document into domain objects that contained bidirectional associations with collections. The issue started out as a simple NullPointerException since each child object did not have a reference back to its parent.
After some searching on Google, the only suggestions that I came across had to do with using the post-set attribute, which gets called after the class has been unmarshalled. For various reasons, most of which I did not want the domain classes tied to JiBX, I sought out a different solution.
The solution I came up with was to use a set-method for the collection instead of field. So I replaced field=”fieldName” with set-method=”setFieldName”. This set method ensures that the bidirectional association is properly defined.
There is an argument to be made that I should be doing this anyway. After all, the domain class probably should not let it be up to the caller to ensure the bidirectional association is properly defined, regardless if it is being called from JiBX or some other caller.
However there was one unintentional side affect. The project is also using Hibernate. The same domain classes were mapped using lazy associations. This change to the set method in affect turned off the laziness. The solution for this was to change the Hibernate mappings to use field access to bypass the set method.
New Unidev Microsoft .NET Technology Blog
We’ve added a new .NET technology blog that is specifically focused on Microsoft .NET development and Microsoft SQL Server. This blog is written my the various developers from our .NET team and will cover a broad range of topical technical issues. We hope you find articles like the recent one about IE 8 connectivity issues useful and a good read. Please feel free to offer us feedback as we’ll certainly need it.
Paging the query result
If you have 5000 products in database, you may like to show them in pages on the screen. It’s a common request to only retrieve the records on a certain page. This query must be quick and efficient if we are talking about millions of records in a table for an AJAX control.
In Oracle, we can do this:
SELECT * from
(
SELECT *, ROWNUM as rownumber from Product order by name
)
where rownumber between (PageNbr - 1)*PageSize + 1 and PageNbr*PageSize
As you can see, this query needs to fetch all rows first then narrows down the result. A more efficient query is:
select *
from ( select a.*, rownum rnum
from ( select * from product order by name) a
where rownum <= PageNbr*PageSize)
where rnum >= (PageNbr - 1)*PageSize + 1
Oracle will optimize this query, so it is not as resource intensive as the first one.
In SQL Server 2005, we can do similar query:
WITH Temp AS
(
SELECT row_number() OVER (ORDER BY [name]) AS rowNum, * from Product
)
SELECT * FROM Temp
WHERE rowNum between (@PageNbr - 1) * @PageSize + 1 and @PageNbr * @PageSize
ORDER BY [name]
The query had been optimized in SQL Server as well.
Google App Engine is open for Java Now
Google App Engine Java Overview.
You can sign up here.