background preloader

Tech

Facebook Twitter

An Introduction to the JGit Sources | Code Affine. JGit is a pure Java library implementing the Git version control system. It is an Eclipse project and started out as the Git library for EGit, which provides a Git integration into Eclipse. Meanwhile JGit has further adopters like in Gerrit, GitBlit, GitClient Plugin for Jenkins (work in progress), … Its permissive license, few dependencies and low requirements make it easy to embed JGit in any Java application.

The core library requires Java 1.5, JSch to make SSH connections and JavaEWAH for fast bit array manipulations. Where to get it The download page lists different ways to obtain and integrate the library. While the binaries are just fine to develop your software against, you may be interested in the sources as well. Working from Source While JGit can be consumed in various forms, it is developed as a set of OSGi bundles. The source code resides — guess what — in a Git repository. The code of the core library resides in a single project: org.eclipse.jgit. Running the Tests. 10 Extremely Useful and Cost Effective Wireframe Tools For Designers. 89 Flares Twitter 39 Facebook 29 Google+ 20 StumbleUpon 1 Pin It Share 0 9 89 Flares × Wireframe tools play a crucial role in web and software development as they help developers and clients to visualize the webpage under construction. It is very important for your website to be user-friendly and easy to navigate, despite the clutter and diversity of content.

The wireframe tools also help you to minimize design hassles, once the website is in its final stages. Pen and paper are good to sketch initial wireframes and to have the preliminary idea about the website design. But, to test it at advanced stages, you need an advanced software application. PowerMockup—Wireframe Add-on for PowerPoint If you want to convert Microsoft PowerPoint into a wireframe tool, this add-on would be highly useful. PowerMockup is compatible with all the latest versions of Microsoft Office including Office 2013.

Moqups—Online Mockup and Wireframe Tool Wireframe.cc — Online Wireframe Tool (Free) Final Words. Stop Writing Code You Can’t Yet Test. This post was originally written by Dennis Stevens at LeadingAgile. Most of the organizations we engage with have more work to do than they can possibly get done. So, developers are writing code as fast as they can to get done trying to maximize their capacity. Typically, we see developers running way ahead of testing. Often, testing is still working on the prior release while development is running off on the next release – and testing just can’t ever catch up. This inventory of untested code shows up as long lists of defects, lots of code branches, untestable features, and products that can’t be integrated or regression tested until just before the next release.

This vicious cycle of long bug lists, painful regression testing, and production defects colliding with the next release continues to grow. The goal is not to write code faster. So, we understand that it is not a good economic investment for developers to write code that can’t be tested. Top 10 Books for Advanced-level Java Developers. We Recommend These Resources Java is one of the most popular programming language nowadays. There are plenty of books for beginners. But to those who have programmed with Java for a while, some of them may look somehow simple and redundant. The beginner’s books do not bring fresh and interesting ideas. However, advanced Java books are not always right at hand, not partially because they require more skills, experienced, and deep thinkers to write. In this post, I would like to share my experience with only advanced level of Java, which means books like “Thinking in Java” or “Head First Java” won’t be listed although they are very good for beginners.

Also I try to avoid listing Java books for specific software or frameworks or certifications, which I assume is not “pure” Java. Java in a Nutshell It is a more reference than a must read. The elements of Java style Effective Java This book is really only for deeper understanding Java developer. The Java language specification. Replace your Scripts with Gradle Tasks. I really like Maven, and I really like the declarative build style, but recently I finally came to understand why Gradle is better. For small projects that produce a common library JAR, you can still use Maven, but real-life, complex software projects always contain a lot of support scripts for deployment, copying artifacts, and so on. For some of those tasks you can find Maven plug-ins, for most of them you can write Maven plugins, but in real life you have shell scripts to do the job. The problem with such scripts is that they contain paths and file names, which are part of the build.

And if you change your pom.xml, you should change those scripts as well. Gradle solves the problem. I will show a small example: deploying WAR using SSH to a remote server. Notice that we use the WAR name from the build and that the deployment task depends on the test, so we can't deploy if the tests fail 01.buildscript { 02. repositories { 03. mavenCentral() 05. dependencies { 10.apply plugin: 'ssh' 14.war { Offensive Programming. Have you ever had an application that just behaved plain weird? You know, you click a button and nothing happens. Or the screen all of the sudden turns blank. Or the application get into a “strange state” and you have to restart it for things to start working again. If you’ve experienced this, you have probably been the victim of a particular form of defensive programming which I would like to call “paranoid programming.”

A defensive person is guarded and reasoned. The Cautious Reader What might such paranoid programming look like? 01.public String badlyImplementedGetData(String urlAsString) { 03. 04. try { 05. url = new URL(urlAsString); 06. } catch (MalformedURLException e) { 07. logger.error("Malformed URL", e); 11. 12. try { 13. connection = (HttpURLConnection) url.openConnection(); 14. } catch (IOException e) { 15. logger.error("Could not connect to " + url, e); 19. 20. try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { 21. 02. 05. 07. 02. 10 Subtle Best Practices when Coding Java.

This is a list of 10 best practices that are more subtle than your average Josh Bloch Effective Java rule. While Josh Bloch’s list is very easy to learn and concerns everyday situations, this list here contains less common situations involving API / SPI design that may have a big effect nontheless. I have encountered these things while writing and maintaining jOOQ, an internal DSL modelling SQL in Java. Being an internal DSL, jOOQ challenges Java compilers and generics to the max, combining generics, varargs and overloading in a way that Josh Bloch probably wouldn’t recommend for the “average API”.

Let me share with you 10 Subtle Best Practices When Coding Java: 1. Remember C++ destructors Remember C++ destructors? But nonetheless, destructors have an interesting trait to them. When using @Before and @After JUnit annotationsWhen allocating, freeing JDBC resourcesWhen calling super methods There are various other use cases. 2. What if you also need a message ID and a message source? 3. 4. The Impact Of A New Developer. 3inShare In the fast paced world of software development, continuous hiring has become commonplace.

As new features and products are dreamed up, individuals must be hired to fill necessary roles. Additionally, the software industry is highly competitive due to supply and demand. The days of "the lifer" have become almost non-existent. Unfortunately, there is a limited supply of experienced developers available at any one moment. The following is a series of observations and considerations about on-boarding new programmers to a team: Without the proper guidance, structure, and talent, junior developers can distract and degrade the output of any team. Best Practices for Interviewing Programmers. Apparently I have become something of a resource on programming interviews: I've had three people tell me they read the last two blog posts, one because his company is hiring and he wants his people to be doing interviews right, and two more expressing shock that I still get interviewed--which I don't really think is all that fair, more on that in a moment--and relief that it's not just them getting grilled on areas that they don't believe to be relevant to the job--and more on that in a moment, too.

A couple of things have emerged in the last few weeks since the saga described earlier, so I thought I'd wrap the thing up with a final post. Besides, I like things that come in threes. First, go see this video. Jonathan pinged me about it shortly after the second blog post came out, and damn if he and Mitch don't nail a bunch of things directly on the head. Specifically, I want to call out two lists they put into their slides (which I can't find online, or I'd include a link, sorry).

A gentle git introduction - debian grimoire. Why git? ¶ There are a lot of reasons to use git, many of the advantages are things you can get from any distributed, offline version control system: you can work offline and have everything available to you that you need without needing to be connected to the internet. That includes project history, commits, etc. Git is clean, only one .git directory in the root, rather than one .svn in every directory of the repository, this makes it much easier to deal with when you pull out your recursive grep.

Moving, renaming, deleting directories are really easy and clean to use. Once you understand the concepts, branching is super easy. Tracking multiple remote repositories is easy, you can watch remote changes and cherry-pick them into your own branch with ease. Why not git? Git’s interface and UI are terrible, there are a mind-boggling number of individual binaries and options and wacky ideas involved. Git’s main problem is its complexity. Lets get started! Install git¶ Our first git repository¶ $ gitk. The Real Difference Between Mercurial and Git. There are a lot of otherblogposts and web sites comparing Mercurial and git. lot: sites: Some of them are just plain outdated or wrong (whygitisbetterthanx.com for example, lists “cheap local branching” as a git advantage over Mercurial, when Mercurial actually has cheaper branching than git!). Whygitisbetterthanx.com: branching: Even the ones that aren’t factually incorrect often seem to focus on features and speed.

The Big Difference.