|
This page contains full list of blog posts related to software development posted to Aqris blog.
Last changed May 28, 2010 15:32 by Ürgo Ringo
I have set up my blog at http://urgoringo.wordpress.com/ So far WordPress seems to be quite good for blogging but markup is more cumbersome compared to Confluence.
Last changed Apr 30, 2010 08:51 by Ürgo Ringo
Labels: richclient, ria, gwt, mvc, mvp, presentationmodel, passiveview, supervisingcontroller Some time age we did internal training about rich client implementation patterns with the focus on GWT. I have found such simple sample quite valuable so I upgraded the code to GWT2 and published it here. The idea was to clarify what are the differences between various MVC/MVP variations. Although sample application is implemented in GWT I assume that similar implementation can be used also in other technologies. …
Last changed Apr 14, 2010 14:59 by Ürgo Ringo
Labels: scrum, scrummaster, productowner, customer, client Who should be the Product Owner if client who ordered the project and development team are in two different organizations? We have had this problem on many projects so this post describes the issues we have been facing and suggests a solution that seems to work best. On the one hand she should be from client's organization because otherwise it can easily happen that there is no single person in client organization who is responsible for the success and progress of development team. … It seems that after some time teams tend to find less issues to improve during sprint retros. First reason could be that assuming that the project context is unchanged and team is stable then there just isn't much that could be done after some point. Some things that can be fixed have already been fixed some e.g problems related to other organizations require continuous effort. Other reason could be that by maturing the team doesn't need initial framework of regular retros. … Yesterday we released the new version of PicUP. It includes the Facebook logon re-implementation.
Starting to make some research about GWT 2.0 and after having an overview of its new features, I have decided to get more closer with most interesting new feature (after hosted mode, of course :) ), called [UiBinder]. This is basically a way to declare UI and bind UI widgets in XML format. It means you (almost) don't need to bind widgets between each other in your Java code, set up widgets properties, etc. … Recently we have been doing quite a lot of hardcore customizations on Atlassian's Confluence. WebDriver is a new framework by Google for writing web automated tests. It is being merged with Selenium by OpenQA into Selenium 2.0, but as of Feb 19th, 2010, it is already available at http://code.google.com/p/selenium/ while the development is still in progress. Some of the advantages of WebDriver are a better and object-oriented API, use of browser-specific mechanisms to execute the tests and better support for advanced cases like drag and drop and dealing with pop-ups or multiple windows. … Writing and maintaining automated functional tests for web applications has always been a very complicated issue for us. We are usually between using Selenium or Canoo WebTest but regardless of the choice we seemed to always have to spend a lot of time fixing broken funcional tests and having trouble running them on continuous integration tools such as Cruise Control. Plus writing the tests itself was usually a very dull activity with all those xpaths and problems with Ajax calls, timers, etc. …
Last changed Jan 19, 2010 14:58 by Luiz Ribeiro
Spock is a testing framework based on the Groovy language but can also be used for regular Java projects. It is based on JUnit so running the test cases is as easy as running any regular JUnit tests, be it from an IDE or continuous integration servers. The framework aims to allow developers and testers to write specifications that are easily read and, ideally, may serve as documentation for actual code. …
Last changed Jan 05, 2010 10:31 by Ürgo Ringo
Labels: testing, testautomation, uitesting, grails, javascript I recently found this interesting article about UI test automation. I agree with most points mentioned there. By definition the only thing that cannot be tested any other way than via UI is the UI itself - in a typical web application this means mainly JavaScript. However the good thing with JavaScript is that usually there are not many dependencies between different pages. … In general design decisions are driven by either implementation problems or desire to improve readability. Interestingly I have found that for me the latter often drives refactorings inside existing classes but rarely creation of new classes. However creating new class to make important domain constraints or business rules explicit can be much more expressive than just introducing some new local variable or method. … The thing that I seriously missed since I started to use Android Dev Phone 1 was Estonian Mobiil-ID. So in order to visit internet bank I had to use my ID-card again. And as I haven't bothered to set ID-card software up to my Gentoo box, I could only use bank services in Windows. Android [cupcake roadmap|http://source.android. … Spring Roo is essentially RAD tool that simplifies project setup and some other common tasks like creating simple persistence queries, stubbing controllers/views, adding JMS/email support. Internal architecture is more described here http://blog.springsource.com/2009/06/18/roo-part-3/ but essentially it relies heavily on AspectJ inter-type declarations (ITD - "mixin" for Java) to separate the generated code and code written by developer. … It's not possible to talk about technology and not to try writing something on it. So, because I have something to compare to (Aqris AMS, which was written using GWT http://ams.aqris.com) I wanted to make a similar calendar, but on javafx. Firstly, it was really hard to get used to new syntax. Secondly, components base is a little poor and I'll show you why. My first thought was to do calendar view using simple table, that has 96 rows and 7 columns. … By default GORM injects whole set of dynamic finders into domain entities. However what should one do if he needs to implement more complex queries that require use of Criteria Builder or HQL? Simplest option is just to do this in the layer on top of domain model. So our controllers or services would call something like Customer.executeQuery or Customer.createCriteria. Although this is the simplest option it is also the worst. First, … IntroJavaFX is a quite new platform for developing Rich Internet Applications (RIAs).
At first glance it seems, … Like many other new web application frameworks (e.g Rails, Spring Roo) Grails with its GORM has taken the approach that separate DAO or Repository layer is removed. Is this a bad thing or is it just a change in implementation that doesn't affect conceptual design? In Grails persistence query functionality is added to domain entities by injecting set of static finder methods (e.g Customer.findByFirstname, Customer.executeQuery). I find that there are two main issues with this approach. … If you implement search form functionality using Hibernate Criteria Builder in Grails then the resulting code usually looks something like this: def criteria = Account.createCriteria(); Unknown macro: {
eq("accountNo", searchCmd.accountNo)
}
if (searchCmd.ownerName != null && searchCmd.ownerName != '') { I'm pleased to announce the release of PicUP v. 2.2.0. After several months I had a bit of free time to implement the most requested feature in PicUP – possibility to add a comment (or a caption or a title) for the image that will be uploaded to the selected services. This version of PicUP is compatible with Android SDK 1.5 or higher. Go to Android Market to get the new version of PicUP.
Last changed Oct 12, 2009 13:12 by Ürgo Ringo
Some interesting facts from recent interview (http://agile.dzone.com/videos/scott-ambler-agile-2009) with Scott Ambler:
Last changed Sep 01, 2009 19:11 by Aleksandr Zuikov
Labels: mvc, mvp, gwt, google, architecture, practice, best Inspired by a talk by Ray Ryan on Google IO conference (http://code.google.com/events/io/sessions/GoogleWebToolkitBestPractices.html), I decided to try out some of his ideas. One of the main reasons to switch architecture was a promise of improved unit testing. Those, who are familiar with testing of GWT code, know that in order to test code that calls GWT.create(), you have to extend GWTTestCase in unit tests. However, there are couple of reasons why nobody likes such tests:
Introduction.Not so long time ago GAE introduced Java environment (previously it was only Python). Currently environment is being developed and they offer only 10000 accounts for testing and feedback. GAE can be described as a sandbox hosting for web applications. Which means that you do not have to set up the environment, it is all there and ready to go. In other words, it is a cloud of "Platform as a Service" type. Key points
Last changed Aug 27, 2009 08:58 by Ürgo Ringo
I used to think that hours burndown is better that story points for tracking sprint progress. However now I think that hours are not so good at all. First problem with hours is that it is easy to start tracking only implementation time ignoring acceptance testing or functional testing done by testers. We could of course track remaining time for implementation and testing separately for each story but then we had to spend even more time keeping our estimates up to date. … Following are some notes based on initial Grails experience in a 1 month greenfield web application project. Getting startedThis is where Grails is really good at. It provides tools to help you create initial application and generates initial scaffolding code. We found that for a team without any previous Groovy experience it took about 1-2 weeks to get into decent development speed. …Today PicUP 2.1.0 was released. It includes support for Twitpic and Flickr services, and fixes a bug in logging on to Facebook. Go to Android Market to get the new version of PicUP. Today PicUP 2.0.1 was released. It fixes a bug in interface to Facebook that prevented successful logins. Hopefully Facebook won't change their login procedures and API so often anymore. Go to Android Market to get the new version of PicUP. I'm pleased to announce the release of PicUP 2.0. This version adds support for uploading images to FriendFeed service. Additionally, the application is now redesigned to be more deeply integrated to Android platform. So, you can open up camera application, capture the image and share it via PicUP. Or, you can browse through your images on SD card and, again, share them via PicUP. If you have both [Facebook|http://www.facebook. … Hamcrest library that provides Matchers used in Junit assertThat feature has interesting technique for documentation. void dont_implement_Matcher_instead_extend_BaseMatcher() Seems to be more effective than Javadocs It seems that from requirements management perspective there are two types of non-functional requirements. These that can be implemented once and for all ("independent" requirements) and these that affect many other user stories and hence will not get done until almost all user stories are finished ("distributed" requirement). … Unknown macro: { return this instanceof Cat; }
Scrum followers say that often Scrum fails because it is just used to label some existing waterfallish process. Interestingly Scrum offers quite many such labels like sprint, scrum master, daily scrum, backlog etc. If one wants to improve the current process then one should find out what are the problems and then deal with them. In some cases using "solutions" like [Containment Building|http://c2.com/cgi/wiki? … SmartGWT 1.0: A Q&A with Sanjiv Jivan (Developer of SmartGWT) SmartGWT showcase: Might be interesting: http://www.jsystemtest.org/ Some notes from the Agile Scandinavia 2008 conference:
Random thoughts from the conference: The night before When I arrived to the airport, I discovered our flight was scheduled 20 minutes before the time marked on our tickets. Luckily we had some time left and we managed to check in without problems. The security check guys did a good job making our bags lighter (deodorant, tooth paste, shaving foam - all taken away). Anyway, an hour later, after a bumpy road through the air, … Sample DDD application has been released. I guess it's sort of DDD "reference implementation" I think that having such sample applications which concentrate on good design practices rather than features of some framework or library is very beneficial to the whole community. … Probably everyone has sometimes come across comments like this: // fix for issue #3604 Ronald if (response == null) { ... } It seems to me that some people are adding such comments in sincere belief that it will make code more easily understandable. Unfortunately the result is quite the opposite. Issue id itself will not tell anything about the rationale for given fix. So we have to find it from issue tracker. In most cases this issue does not exist anymore, … As said in article below if you have fixed price project then it may be beneficial not to have very detailed requirements spec referenced in contract http://feeds.dzone.com/~r/zones/agile/~3/401890175/fixed-price-contracts-agile-pr ProblemYou want to create association based on some advanced condition not just primary and foreign keys. For example each Asset can have one or more AssetOwners but only one of them is the primary owner. SolutionAssetOwner.hbm.xml <class name="AssetOwner" table="asset_owner"> <id name="id" column="owner_id"> ... </class> Asset.hbm.xml <class name="Asset" table="asset"> According to new maintenance policy after every major release (3.0, 3.1, 4.0 etc) bugfix releases for it will be freely available for 3 months. After this time bugfixes will be available in source repository but binary releases will be available only for subscribed users. Also bugfixes to any previous major release will only be available to SpringSource Enterprise customers. … General ideaSince MVC is probably the most most widely used architectural pattern for designing classical web applications it is also appealing choice for GWT. However optimal implementation of this pattern differs quite significantly from traditional web MVC and is much closer to MVC for desktop clients. One of these differences is that the Model in MVC should be allowed to communicate with underlying (business) layer. … In my opinion there are three types of project management books:
I just finished reading "Managing Teams for Dummies" by Marty Brounstein and I think that this book falls under the 3rd category. Some things I found particularly interesting: Work groups function on 3 levels: dependent, …Hopefully following instructions are helpful, if someone wishes to subscribe to RSS feed from www.aqris.com.
Found an interesting entry about writing testable code: http://googletesting.blogspot.com/2008/08/by-miko-hevery-so-you-decided-to.html Second link was sent by Mart about testing in Agile world: http://www.agiletester. … Unknown macro: { return true; }
In my old [post] I came up with idea that we could implement EasyMock extension that enabled to use EasyMock 2 API with Java 1.4. Now we have finally made it public and you can get it from here. We are using Apache License so there shouldn't be any licensing problems. Although currently version is 0.8 this utility is fully functional and thoroughly unit tested. … A tiny plug-in for Eclipse that enables tuning colors in console output: http://marian.musgit.com/projects_grepconsole.php. There is one sample configuration visible in http://marian.musgit.com/grepconsole/index.html, but I can also provide my own if anyone's interested.
Labels: ams
Hey hey everyone, Just wanted to tell you what can you do in the new AMS 2 interface 1) Easy enter activity interface (Hotkey for "Submit" button is Ctrl+Enter) IntroductionFollowing is a brief description of the lessons learned when rewriting one single player online game using DDD. Team who did this work was: Kirill, Jaanus, Erik and I. I think that this is the first implementation of Domain Model or DDD in Aqris. BackgroundThis application was a web based game consisting of Flash client and Java server. They communicated with each other using simple proprietary protocol built upon HTTP. … The interesting thing about Ajax and JavaScript is that browsers run JavaScript in a single thread. Actually even same thread is often used for both JavaScript execution and UI event handling. So how is it possible to support asynchronous requests? It turns out that when new asynchronous request is made UI thread spawns worker thread that handles sending the request to server in background. …
Labels: patterns
It might be worth of thinking about.. from "An Introduction to Lean Thinking for Software" http://www.infoq.com/articles/lean-thinking-software Several interesting patterns that are commonly used to reduce those forms of waste:
Just discovered from Marc Guillemot's blog that they have started work on joining Apache Jmeter and WebTest.
Labels: conference
It was great to arrive in pleasantly warm Prague as, when we left Tallinn, it was chucking it down like hell! We then arrived at the hotel around 18:30 only. Mostly because flight was delayed by 30 minutes and almost everyone had to pee after waiting for the luggage for 20 minutes . Some nasty scenes during hotel checking because some guys (reasonably) refused to leave their personal credit card swiped. Finally, … I must say I am surprised to see people using indirect conversion of integers to strings. Not only it looks bad to me, but simple tests show that it's inefficient. In short: use Integer.toString(int), for God's sake! I really feel like sharing this with the world, because it has been an excruciating pain in the butt to get these to work. Anyone having downloaded a GWT package for Linux might have noticed that it includes the Mozilla browser — it seems that GWT needs a browser to run its tests, and while on a Windows machine it can safely assume IE is installed, on Linux it cannot. Hence the browser in the package. As of GWT 1.4.61, … Okay, I finally got to write this — it's really been a while since I actually faced this problem, a couple of months or so. And it's also been a while since me posting any furious rant in the blog, so here you go WARNING 1: This column describes a probably uncommon pitfall when binding collection elements in Spring MVC 2.5, but a rather nasty one, so you are better off reading it, trust me.
Labels: spring, springsource
let's watch this OSGi based platform. posted in response of Timurs forwarded springsource.com newsletter 01.05.2008: ----------------------------- So, BigDecimal type is widely used in one of our projects. Here are some interesting facts that I've faced while working with them: 1) According to javadoc, constructor that ussed a Number (new BigDecimal(42.52)) won't give you a predictable value of 42.52. Actual value will have about 30 digits.
Okay, I guess string concatenation performance can always be a sort of pain-in-the-ass-issue, and even more so in JavaScript. So I made a couple of tests. System configuration: Windows XP SP 3, Intel Core Duo 2.16 GHz, 2 GiB RAM (DDR2 667 MHz) The code: var start = new Date(). … Sorry about the title In a typical data management system significant amount of effort is spent on implementing mappings between three different models - presentation, domain and persistence model. In this article I will describe one approach to dealing with these transformations in case special ORM tool cannot be used. Absence of sophisticated ORM layer does not only complicate conversions related to persistence but also adds complexity to UI related issues. … For telling to CruiseControl which SVN repository to use, you have to use some more tricky way than just configuring CVS location into <bootstrapper/> element. First make sure you have SVN command line client installed on your server. That will save you lot of trouble shooting time! If not, please install it before continuing with next steps. Then get svnant and copy three .</bootstrapper> … On request of one developer I made a little research about Continuous Integration (CI) tools available. Luckily I found out that this job is already done by other people and I can do just copy and paste to our blog. There is a good article in JavaWorld about open source CI tools.
Labels: testing, javascript
Functional testing: GhostTrain http://wiki.script.aculo.us/scriptaculous/show/GhostTrain Unit testing: Script.aculo.us http://wiki.script.aculo.us/scriptaculous/show/UnitTesting Aptana Studio - AJAX development IDE (uses eclipse, available also as a plugin for eclipse) This is a summary of my experiences writing a macro plugin for JIRA in case someone else will need this information in the future for other projects... The plugin I wrote fetches the content of a Confluence page right into JIRA issue description (with accompanying picture attachments). This is a nice feature to keep all project documentation in Confluence, … Version 1 RC1 is fully functional and thoroughly tested version but we may need to change some things once we got licensing figured out. If you have any concerns/questions let me know. When writing Hibernate DAOs (for the AMS especially, as there are tons of them) there were two things that always bothered me:
A couple of days ago it hit me: why not try and make life easier for such cases? So here's what came out in the end. … In my old [post] I came up with idea that we could implement EasyMock extension that enabled to use EasyMock 2 API with Java 1.4. Aleksei has done good work on this project and first version will soon be ready. We think it would be cool if we made this library publicly available. However following issues need to be solved for that:
If you need an easy to set up console for Windows with tab support - consider Console2 (Open Source). The nicest thing about it is that you can select an actual console program that it will wrap about offering tabs, shortcuts, image or transparent backgrounds, etc on top of it. By default it uses cmd.exe, but if you have a cygwin (or mingw, etc.) installation, you can easily use bash, ash, etc. terminals. …
Labels: testing
Test your web design in different browsersThere is free online service available at: There is another similar and simplier service available here: I have been long time wondering if it is possible to improve API of EasyMock Java 1.3 version so that you get rid of MockControls in your test code. So as an experiment I wrote following classes to check how much work does this require. I wanted to achieve same simple API as in EasyMock 2.x but still be Java 1.4 compatible. Also I didn't want to rewrite EasyMock or extend it in any fragile way. … Juhuu.. so there is an electronic version IT year book for 2007: http://www.riso.ee/et/node/355 http://www.riso.ee/et/pub/2007it/ I found that there is nice extension to JUnit called Unitils (http://www.unitils.org). It offers some generic utilities for unit testing, EasyMock mock object management, database testing (either plain JDBC or Hibernate). Also it's integrated with DBUnit and Spring. General testing utilitiesThis feature set contains some things that are sometimes quite useful like reflection based equality (which we have more or less implemented ourselves in many projects I believe), … 2008 January 28th, Aqris makes available the full functionality of RefactorIt with the 2.6 Freeware edition. RefactorIt is a tool for Java developers. A developer can take source code of any size and complexity and rework it into well-designed code by means of over 30 automated refactorings. In addition, it provides a comprehensive set of smart query functions, a graphical dependency analyzer, and over 100 quality metrics, audits, and corrective actions, … One widely knowns agile principle is Do the Simplest Thing That Works. Often this guideline transforms into "Do the Fastest Things that Works". I suppose that the logic behind this is that if something can be done fast then it must be simple, right? Problem is that given principle is as much about simplicity of reading the code than it is about writing it. … http://www.ddj.com/architect/201202925?pgno=1 Especially good is the summary on last page. It seems to me that the complexity of any system (solution) that doesn't contain unnecessary redundancy is constant given the set of requirements is has to fulfill. It is only possible to redefine that complexity - to move it from one level to other but one cannot reduce it. So what are the possibilities to tackle with complexity? Basically we can either abstract or partition. … Here are some tips and guidelines that we all should try to follow to make everybody's life easier and save everybody's time and nerves Be prepared - prepare yourself for the meeting, …
Last changed Jan 15, 2008 16:25 by Timur Strekalov
I've been talking to this guy for like a couple of minutes, then I'm sorta explaining the situation, talking for quite some time. All this time he seemed to be listening very carefully, staring at me with this "I hear you, mate" look and muttering only something in the lines of "Uh-uh, um, uh". As I'm finally through with my tirade, he goes: — What do you mean? I swear, at this point I'm very ready to smack the ever-living crap out of his childishly-innocent looking face. … Majandus- ja Kommunikatsiooniministeeriumi pressiteade 14.01.2008 Kutse konverentsile "E-riik - uued horisondid?" Majandus- ja Kommunikatsiooniministeerium koostöös e-Riigi Akadeemia Sihtasutusega korraldab 22. jaanuaril algusega kl 9.30 Sokos Hotell Viru konverentsisaalis e-Eesti konverentsi 2008 üldnimetusega "E-riik - uued horisondid?". Tervituskõne ja lõppkokkuvõtte teeb majandus- ja kommunikatsiooniminister Juhan Parts. Konverentsi peaesineja on Hamadoun Touré (Secretary General, …
Labels: design
I recently listened to Interview with Jürgen Höller on SE-Radio (lead developer on Spring framework project). One interesting thing he mentioned was that they are following really strictly the rule that there must be no circular dependencies between packages. Of course it's quite obvious that such dependencies on any level are not good but still quite often this heuristic is broken especially on package level. …
Last changed Dec 10, 2007 10:09 by Ürgo Ringo
Labels: testing, functionaltesting, automatedtesting, codecoverage IntroductionEverybody knows that one should write tests in order to guarantee good internal and external software quality. In most cases developers focus on structural tests leaving high level functional testing to separate testing expert. However I believe that in many cases it can be useful to include functional tests in the process of writing production code same way as structural tests. …
Last changed Jul 31, 2008 10:31 by Auris Aume
On the 4 of December I had an opportunity to be a part of a Mikko Hyppönen`s lecture at IT College. F-Secure's Mikko Hypponen has been selected as one of the 50 most important people on the Web (PC World March 2007, http://www.pcworld.com/printable/article/id,129301/printable.html). In his lecture he covers next topics:
It's a new peer 2 peer system that works like a file system (with groups and privacy). As for usability it seems like a mac application so I think I finally would even get my sister to upload pictures. Below, the google tech talk on youtube - is a bit too long to watch at work but probably a nice after dinner perusal. It was quite inspirational when I watched it. Though, I must admit that I got a bit lost when he talked about replication with the many m's (I think of it as M&M's http://www. … I have created a small framework for testing JSPs and JavaScript directly from JUnit. The interesting part for me is that it does not need a deployment step: the framework itself compiles and runs JSPs, without a web server or browser. This allows us to test JSPs like regular source files: just write a test and run it. We use it on the Loan Component project in Hansapank. I just put the framework into Aqris CVS (module "aqris-common-jsptest"), … Thanks to Ürgo we found solution how to measure automated functional test (WebTest tests) coverage. For first tests we picked AMS tests and AMS. As coverage measuring tool we are using Cobertura. And the process is quite simple:
I think many of testers have done this comparison when selecting testing tool for automated testing. Marc Guillemot wrote also a good comparison in his blog: http://mguillem.wordpress.com/2007/10/29/webtest-vs-selenium-webtest-wins-13-5/
Last changed Oct 17, 2007 18:08 by Oliver Wihler
Hi! We have more and more useful information in Confluence that you may need to share with our customers or partners who don't have a confluence login or don't want to go through the troubles of logging in. One easy way is to click on the PDF icon in the upper right corner of the page "Export Page as PDF" and send it by e-mail. However, it could be that the page contains partly confidential information or, for another reason, you think some parts should not be published. … ...silly question huh? But it do not want to turn off automatically already about a month! When I click `turn off` it just restarts...so, I have to turn it out manually. Any ideas what could be a reason of that? Test-Driven Development is not just a testing technique, it is also a design technique. In fact, many proponents claim that the design benefits of TDD are even bigger than its testing benefits. TDD (done well) can teach a lot about the design of the code being tested. Here is one such example about how TDD causes us to decouple our objects. I have noticed this antipattern a few times in our project (written without TDD): domain methods take parameters that are database IDs, …
Labels: javascript
Ever used JavaScript snippet similar to this? var myArray = new Array(); myArray["January"] = "Some value"; myArray["February"] = "Some other value"; myArray["March"] = "Yet another value"; for (item in myArray) { // do something with item alert(item); } Well, there was one such usage in our project. It worked fine... until another application was upgraded that called our application and displayed our JSP page results within its own Web page. … We have started to use a form of informal reviews in project team and so far it has given quite positive results. The main purpose why we decided to try out this practice is because due to the nature of our project it wasn't possible for multiple people to work on closely related tasks. Hence the typical knowledge sharing related to team members having related everyday tasks wasn't very effective. … http://www.paulgraham.com/articles.html Click on The 18 Mistakes... Try to avoid those mistakes I discovered a nice system performance related tip I would like to share: After system has been running for a long time and with a memory intensive applications The reason in my case was because all RAM was already used up by running applications.
Labels: deployment
http://www.javarebel.com/index.php allegedly, there are no other comparable technologies around (according to E. Kabanov). so, is this any good? it comes from the same guy(s) who do http://www.araneaframework.org/. They are about to launch it commercially as http://www.zeroturnaround.com/ (probably together with jspweaver.com?). When aranea came out about one year ago it was crappy (so I've been told). Are things till crappy or is Webmedia up to something great? NOTE: original text entered by Anton accidentally as a regular page - I'm just transforming it to news post If you have a Document which you want to transform with Saxon, then you usually do something like: org.w3c.dom.Document doc; ByteArrayOutputStream output = new ByteArrayOutputStream(64000); I tend to write most of my "mock" objects by hand, without frameworks like EasyMock or JMock. Here are some reasons why I prefer that. First, let's look at an example of this style. Say we need to test some code that performs a simple database lookup: class CustomerService { public Order createOrder(String customerCode) { This is really old news and you may know this already but nonetheless... I found a neat Eclipse plugin KeepResident that has significantly improved my Eclipse experience under Windows. You may want to give it a try as well. There's just Windows version available. I guess there's no need for such a tool for Linux though as memory management is a lot different there. … The problemHow to solve situation when your Entity is getting too big and there are clearly certain subsets of attributes inside it. Good heuristics suggest that class should not contain more than 6 attributes. However I have found that in practice it is usually not easy to follow this suggestion. …
Last changed Jun 13, 2007 17:56 by Timur Strekalov
Dear fellow developers, I suppose that the topic of my rant here is going to make you smile due to the fact that we all know Java code conventions and bla-bla-bla, but here it goes. It is with great sadness that I always find messy code in our applications. Boy, does it frustrate me. Sifting through hundrends of lines of structurized, clear yet complex code is one thing, but making one's way through the jungle of code that resembles me some other languages' coding "styles" (no [names|http://en. … We have a nice question for the Monday morning, which we need a very fast answer to Does anybody has any experience in testing xslt transformations with unit-tests? And another general one not related to just xslt: If you have any information or ideas on the topic, please contact me immediately! Regards, – Sometimes you want to test not only each class in isolation but subset of one class in isolation. I suppose that in many cases this means that you actually have something wrong in your design and you should consider splitting responsibilities of given class or make the API more fine grained. However sometimes above options are not that good - for example in case of legacy code. …
Last changed May 17, 2007 11:39 by Dea Oja
Dea and Oliver went to FocusIT seminar on the 16th of May. The topic was related to different methodologies, models and standards that can be used in IT development and maintenance projects/organizations. …
Last changed May 16, 2007 16:56 by hugo.lousa
An Aqris blog post was done in order to share experiences about unit testing. In order to generate what we understand as Unit Test, I will share a basic definition here and some points we should pay special attention while defining it. From wikipedia (I personally dont like it for formal research, but as this is not our point at this moment, … How to store boolean values to Oracle database table? Or perhaps a field that can have a few predefined values, like 'A', 'B', 'C', 'D'? A table in Oracle cannot have a data type BOOLEAN. So the first solution that comes to mind is using CHAR(1) data type, making it NOT NULL and limiting the allowed values with a CHECK constraint (remember that a CHECK constraint allows NULL values). Works almost always. Almost. …
Last changed Jul 31, 2008 10:49 by Auris Aume
Context:Hibernate uses lazy initialization to load entities. E.g if some association is accessed after Hibernate session is closed we get LazyInitializationException. To solve this problem Hibernate team invented a pattern called Open Session In View. Spring offers OpenSessionInViewFilter that implement this pattern. This filter is used in many applications we have developed including AMS. …Input related to Unit Testing on different projects/experiences you have worked on is needed. I talked with some people here in the office and a pattern/common points of how usually our approach is done couldn't be found. Reasons for that are many:
There were many interesting things for me: http://www.todoorelse.com/gtd/index.html Enjoy It seems to me that widespread popularity of agile processes makes it easy to just blindly start following these principles often missing the key concepts behind the whole thing. First of all being agile means that you are valuing people over processes. So if you are applying XP, Scrum or some Crystal methodology just because they are "good" you are not in a much better situation than if following some heavyweight waterfall approach. … ProblemMVC Controller easily becomes too complex resembling more Transaction Script than plain adapter. Although if using Spring it is possible to make controllers less dependent on underlying HTTP requests/responses they will still be tied to one logical presentation view (property which is inherent to MVC). Also it is not very easy to test Controller as its public API is based on HTTP. … When you use iframes with https protocol under IE, if the iframe doesn't have proper src with a relative path, IE starts complaining all the time that there are secure and unsecure items on the same page. The correct src for an empty iframe (which you gonna fill dynamically later) is src="javascript: false;". src="about:blank" is not working, checked. Has anyone ever used MIT license? I need to use and modify a library that uses this license. I googled a bit (http://en.wikipedia.org/wiki/MIT_License, http://www.opensource.org/licenses/mit-license.php) and it seems that there are no problems if license file is contained in distributed package but still... Thanks! Something that I stumbled on: http://ats.cs.ut.ee/courses/2005/tvt/Main/Essays Lots of the topics sounded familiar for me If you ever decide to format existing sources, then commit the changes separately, first the formatting with the message "format" and then the fix (if any) with appropriate message as usually. Please, be nice and respect your neighbor developers. little bit of reading, some notes were quite interesting to me... and some just proved the point of what we are already practicing: http://yahoo.businessweek.com/smallbiz/content/sep2006/sb20060927_259688.htm
Last changed Jul 31, 2008 11:09 by Auris Aume
Here's an interesting video about some cool syntax in the next C#: It gets interesting after the first 8 minutes or so, when they show a int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, …
Last changed Sep 20, 2006 09:47 by Ürgo Ringo
In bigger projects or projects where client relationships require more management it is good idea to have someone in the team who is able to play the role of a proxy between development team and client. It seems to me that this proxying is one of the main reasons to have organizational and technical parts of project management divided between two people. Of course organizational manager can have several other tasks as well. … If you subclass AbstractDependencyInjectionSpringContextTests (or any of its subclasses) then you don't need to lookup beans under test using applicationContext.getBean("myBeanUnderTest")
. I know that test should drive the code not vice versa but sometimes you still have to write tests post factum. Here is a related anti-pattern I have noticed to be using quite often. Lets say there is a service class that does nothing else but coordinates calls to different DAOs. How do you test it? Here is the way I have done it many times. As I said you have the service class that is supposed to work. … Has anyone developed an application using something else than transaction scripts or "service oriented" approach? If yes then it would be very interesting to know what alternative did you use and how did it work out. If you haven't ever used any other pattern then it would also be very interesting to know why. … Oracle supports two rather similar data types: DATE and TIMESTAMP. Both can store date and time values; whereas TIMESTAMP can also store fractional part of the second. Usually they can be interchanged quite loosely, that is access a DATE column with getTimestamp() / setTimestamp(), since Oracle is able to implicitly convert from one data type to another. But there is a hidden gotcha: implicit data type conversion prevents the usage of indexes! … When you have added some files/folders into SVN-ignore, for some reasons it is not possible to commit them. Probably, this is caused by bug inSubEclipse- SVN plugin for Eclipse.To commit, do the following trick: Execute a "Replace With Latest" (not an update) on your project.Close and Re-Open your project (to get rid of the .svn folder that shouldn't be displayed, but is)Now, use the Team > Add to svn:ignorecontext menu item on the bind folderFinally, … I found interesting error in the code, which was very difficult to find out: -------------------------------------------- This code is working incorrectly - it calculates different hash-code every time. This happening, because method ". … We tried retrospective for Regio project. Each team member (who responded) sent his/her answers to following questions: 1) Project management At first I thought of just writing summary document of all responses but then I decided to go with a bit different approach. … What can be done to improve current development process? Should one try to find answers from organizations like SEI or ISO or from some good books ? I believe that both are important sources but the most critical element is something else - actual experience with actual projects and preferably with actual people. …
Last changed May 16, 2006 10:26 by ahti
Have you ever used following to lazy-initialize your variable? class Foo {
private Helper helper = null;
public Helper getHelper() {
if (helper == null)
synchronized(this) {
if (helper == null)
helper = new Helper();
}
return helper;
}
// other functions and members...
}
If you have then don't. Just to remind or introduce, it looks OK but it isn't - this is a pretty serious bug you can very easily make. …
Last changed May 04, 2006 11:30 by ahti
About background: Model-Driven development is a method of development where domain/business objects are modelled as an UML class-diagram having various attributes set. Then this UML model is transformed into an intermediate model automatically and then using various templatings these diagrams will be converted executable java files (domain objects, dao impls etc), jsp user-forms etc. … Isn't it so that the more powerful the solution the easier it is to forget what the original problem was? It seems to me that this applies also quite well to infrastructure frameworks. I mean their primary goal should be enabling people to focus on writing better business logic. However after having learned all the details of these frameworks it is very easy to start believing that this is all there is about design. … It seems to me that one reason why not that many unit tests are written these days is due to wrong mental approach. Everyone knows that unit tests are good and that they are certainly very good in the long run but sometimes this is just not enough. What is needed is some immediate benefit. For example if you have just spent last couple of days on writing some feature without single unit test then it is very difficult to fight the temptation to just deploy the whole thing and see what happens. … |