MCSD
I started working on my MCSD a while back, but we started doing more Java at work. Recently, we have been doing a lot more C#, so I am interested in picking it up again. I want to complete it this time, though.
I started working on my MCSD a while back, but we started doing more Java at work. Recently, we have been doing a lot more C#, so I am interested in picking it up again. I want to complete it this time, though.
Posted by
Kerry
at
10:28 AM
0
comments
I used to use Delphi in my job all the time. I got moved to a different project since that time and I have not really used Delphi in over two years. I had to start using it a bit this past week at work. It is so funny to feel like a newbie when you sit down to something after programming for 16+ years. :)
I finally started remembering things and got back up to speed.
tags: Programming, BORLAND, Delphi
Posted by
Kerry
at
10:06 PM
0
comments
I just came across the Eclipse Wiki today. According to the site, it was created to provide the development community with a place to share information about Eclipse and its sub-projects.
read more | tags: Eclipse, software development, programming
Posted by
Kerry
at
4:20 PM
0
comments
I came across an interesting article on DogBiscuit today that talks about how to setup test groups in JUnit if you have expensive setup code that would normally be run before each test.
read more | tags: junit
Posted by
Kerry
at
12:49 PM
0
comments
One of the claims in AMD's sensational antitrust complaint against Intel has been getting some play around the web lately. Specifically, folks are focusing on what AMD says about Intel compilers and how they react to the presence of AMD processors. Here's the meat of the claim, taken directly from the AMD complaint:
read more | digg story
Posted by
Kerry
at
12:37 AM
2
comments
A library of pre-written regular expressions that you can plug into your code. Also, features a regular expression online testing engine against inputted text or a website text. Very handy resource!
read more | digg story
Posted by
Kerry
at
10:26 PM
0
comments
For the past year or so, I have had a situation at work where I have been limited in what I could due to some issues between my current company and my previous company. It seemed like everything that I got put on, a couple of weeks later, someone came along and said that I could not work on that particular project. My job seemed to be going no place.
I got word this week that things have finally been cleared up and I can go back to working on some of the projects that I had been attempting to work on in tthe past. This was like someone lifting a huge elephant right off my back or something. I had been quite down as of late due to all of this.
After getting this news this week, I have actually been interested in programming again. Hopefully everything will start picking up and works gets fun again.
Posted by
Kerry
at
1:18 AM
0
comments
Have you ever been in a state where there was so much that you wanted to do in programming, yet you didn't really want to do anything? I am at that point right now in my programming life. I have been jerked, pulled, and tossed around so much lately that I do not know which way is up.
In the past 3 months, I have been on and off projects that used Java, C++, C#, Delphi, and VB. It is like someone threw it all in a blender, turned it up on high, and out comes a lot of mush.
I have a personal project that I was really getting into when I was working with Java, but lately, I have been on a C++ kick. I got the Power Mac back in May and I want to do some programming in Objective-C and Cocoa for it, but that is just another ingredient to add to the mix.
I am not really sure what I want to do at this point. I just sit here at night now playing around in iTunes listening to various technical podcasts and I do not do any programming. I need a plan for something that I can stick to and finish. I guess I should just pick up the personal project again.
I just hope that I have not gotten into such a rut that I cannot get myself out of it.
Posted by
Kerry
at
1:35 AM
0
comments
Wow! This one caught me off guard. I can certainly expect something like this from a software company that is fighting against the big fish in the pond, but I did not expect something like this in the computer chip market. I wonder if this has anything to do with Apple's decision to use Intel for their product line going forward?
Read the CNET News.com article for more information.
Posted by
Kerry
at
8:58 AM
0
comments
Eclipse.org released the latest version of the Eclipse development environment at JavaOne yesterday. Much of the excitement regarding Eclipse 3.1 centered on the Rich Client Platform upon which you can build very professional looking applications.
The Rich Client Platform has been greatly enhanced in this version of Eclipse. The system has improved performance, expanded tool support, bettery support for Java Web Start (JNLP), and Visual Editor support.
For more information and a podcast on the launch, check out this story on Between the Lines.
Posted by
Kerry
at
7:47 AM
0
comments
I am not sure what exactly happened today at Blogger, but my mother emailed me asking about my blog and why the Blogroll was gone. I took a look and the template had reverted to the default and lost my changes at some point in the past 36 hours. It is fixed now.
Posted by
Kerry
at
12:02 PM
3
comments
Eclipse.org has also released the first release candidate for the CDT (C/C++ Development Tools) Project. This is an excellent plugin development environment for Eclipse that gives full C/C++ development and debugging capabilities. CDT 3.0 RC0 runs under Eclipse 3.1 M7 and later.
Posted by
Kerry
at
10:09 PM
0
comments
Eclipse.org has released the Eclipse 3.1 RC3 development environment for all platforms. The environment seems to be getting quicker and more stable with each RC release at this point.
Posted by
Kerry
at
10:06 PM
0
comments
God took one of his children home tonight. My father's sister, Lillian Parker, was taken to be with God tonight. She had a really bad heart attack Saturday and was put in the hospital.
My parents went to see her earlier today. My mother said that she looked quite bad with only about 20% functionality in her heart. My father called just a little while ago to give me the news and said that he knew it was just a matter of time earlier today, because she seemed to be just holding on... just like her mother did so many years ago when I was young.
My aunt was a life long member of Harmony Baptist Church in a small, unincorporated area of Blount county in Alabama. She always laughed and smiled when I saw her. Her laugh was always infectious. She was definitely a special lady.
Please pray for my family in this time of mourning, but please do not shed a tear, for she is in no longer suffering and she is much happier than we could ever be, because she is laughing and singing with her mother, Jesus, and having a wonderful fellowship with God, The Father!
Posted by
Kerry
at
10:51 PM
0
comments
I recently started playing around with C++, partly because I wanted to work with a cross-platform language other than Java that I could use on my Windows based laptop and my PowerPC Mac. I have been a developer for 16+ years, but working with C++ has me feeling like I am a new programmer again.
I have been struggling with virtual methods, abstract classes, and templates. I am currently stuck on a situation where I have a pure abstract class defined that I want to use in a collection to represent one of three different derived classes, but I seem to be getting some compile errors where I use it.
At least I am not getting paid like a new developer again. I would go hungry. :)
Posted by
Kerry
at
8:56 AM
0
comments
I have been playing around with Swing tonight using JDK 1.5.0_02. I have found an issue where the setMinimumSize and setMaximumSize dimensions are not enforced on a JFrame. I wanted to keep a dialog from being resized smaller than a minimum bounds or larger than a maximum bounds. To do this, I originally used the following code in my application:
frame.setMinimumSize( new Dimension( 250, 200 ) ); frame.setMaximumSize( new Dimension( 325, 275 ) );Unfortunately, as I mentioned above, this does not prevent you from resizing the frame smaller or larger than the specified sizes. Of course, you could just decide to not allow any resizing of the frame. To do that, you could use this line of code in your application:
frame.setResizable( false );However, if you want to allow the user to resize a dialog, then this is not a viable alternative. I decided to create my own class derived from JFrame. This class takes a title as well as minimum and maximum dimensions. My constructor for the class looks like this:
private Dimension minimumSize;The initialize(): call does nothing more than make a call to addComponentListener on the frame. In this call, I create an anonymous ComponentAdapter class which overrides the componentResized method to handle the constraints on the frame. The code looks like this:
private Dimension maximumSize;
public MyJFrame( String title, Dimension minimumSize,
Dimension maximumSize ) throws HeadlessException
{
super( title );
this.minimumSize = minimumSize;
this.maximumSize = maximumSize;
initialize();
}
private void initialize() {This code is pretty straight forward. It grabs the current size constraints for the frame that fired the event. It then checks these constraints against the specified minimum and maximum dimensions. If the constraints on the frame are not met, the size of the frame is set explicitly, otherwise, the flow falls through and the frame is resized according to the size that the user has resized it.
this.addComponentListener( new ComponentAdapter() {
@Override
public void componentResized( ComponentEvent e ) {
MyJFrame frame = (MyJFrame) e.getSource();
int width = frame.getWidth();
int height = frame.getHeight();
boolean resize = false;
if ( width < minimumSize.getSize().width ) {
width = minimumSize.getSize().width;
resize = true;
}
else if ( width > maximumSize.getSize().width ) {
width = maximumSize.getSize().width;
resize = true;
}
if ( height < minimumSize.getSize().height ) {
height = minimumSize.getSize().height;
resize = true;
}
else if (height > maximumSize.getSize().height ) {
height = maximumSize.getSize().height;
resize = true;
}
if ( resize ) {
frame.setSize( width, height );
}
}
})
}
Posted by
Kerry
at
11:53 PM
0
comments
Eclipse Foundation has released the latest milestone build of Eclipse 3.1 for download. This version has quite a few bug fixes and some enhancements. One of the enhancements allows for plugins to be setup in JAR files instead of a directory structure.
I downloaded it today and set it up on my laptop. I then opened up the SWT application that I am currently working on at home and found that there appears to be an issue with SWT in this build. My classpath is setup correctly and the build works, but when the application launches, I get a NullReferenceException on a call to super.configureShell( shell ). This all works in Eclipse 3.1M5a. I am not sure what has changed, but I need to play around with it a little more to see what is going on.
One thing that I noticed with the new plugin setup is that the SWT DLL for Win32 is located in a totally different directory now. I think they have a little work to do on this new plugin strategy. Of course, that is why they call this beta software. It might not work for everything that you want to do.
Update: I worked with this some more tonight and it appears that there is definitely an issue with SWT in the latest milestone build. I would imagine that it might be in the swt-win32-3128.dll file, but of course, you should not bank on that information. I use milestone build M6 and pointed it ot the swt.jar and the swt-win32-3123.dll for milestone build M5a and my application works.
Posted by
Kerry
at
11:55 AM
1 comments
I started playing around with regular expressions this past week. I am going to use them in the personal project that I am working on to validate different user input data strings. I recently purchased a very good book from Apress called Regular Expression Recipes: A Problem-Solution Approach by Nathan A. Good. They have another book specifically for Java called Java Regular Expressions: Taming the java.util.regex Engine, but I did not know about it before I purchased the first book. It may have helped me with this problem. :)
Anyway, the book that I purchased has examples for Perl, Python, and shell scripting. Since it was the first example for each recipe, I picked off the regular expressions from the Perl code for the particulat items that I wanted to validate and used that in Java. I was dumbfounded when it did not work. As an example, I used a regular expression to validate an email address. The regular expression looked like this from the Perl example:
/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/I spent a couple of evenings after work at home on this problem before I finally figured it out. You should not use the starting and ending slash ("/") when using any regular expression in Java. Java's regular expression compiler apparently sees this as a literal character when it compiles the expression and the corresponding validation ends up failing. When I removed those slashes, the validation unit test past and things were grand!
Technorati Tags: Java, Perl, Regular Expressions, shell scripting
Posted by
Kerry
at
8:41 PM
0
comments
Whew! Did I get them all in there? I have been struggling lately with the Model-View-Controller pattern. Well, I haven't been struggling with the pattern itself as much as I had been struggling with how to implement it properly and create unit tests in an SWT/JFace application. Being new to MVC, one struggles with what should be in the controller and what should not. I was trying to put everything in the controller, but that is not always feasible.
In my case, I was unsure about the inherited methods from the JFace Window class, such as createContents(), initializeBounds(), etc. Well, those methods do not need to be in the controller, because there is no interaction with the model. These methods are strictly there to create and initialize the view. The methods that I ended up putting in the controller were only those that dealt with the view with respect to the model.
For instance, in my example application that I put together tonight to play around with this process, I have a Contact class (model), a setup dialog (view), and a controller class. The model contains nothing more than first, middle, and last name strings for this example. It is quite simple. The view is also simple in that it has three Label controls, three Text controls, and two Button controls (Print and Cancel).
My controller class ended up having the following methods:
public void onFirstNameChanged();The first three methods are called in the focusLost method for the FocusListener on the respective edit control for each component of the contact name. The onPrintClick method is called when I click on the Print button. It fires the print method on the view and does nothing more than print the contents of the model out to the console in this simple example. The onCancelClick method fires the close method on the view.
public void onMiddleNameChanged();
public void onLastNameChanged();
public void onPrintClick();
public void onCancelClick();
Technorati Tags: Java, JFace, JUnit, Martin Fowler, Model-View-Controller, Model-View-Presenter, MVC, patterns, SWT
Posted by
Kerry
at
12:32 AM
0
comments
I found what seems to be an issue with setting an jface.resource.ImageDescriptor for an jface.Action class. I have a few standard button bar images that I was going to use in my application. When I first set the image for the action, I thought I was doing something wrong. I set the image originally, like this:
public ExitAction() extends Action {Unfortunately, this produced a small red square on the button and on the menu item that the ExitAction was assigned to. I checked the image thinking it was corrupt, but all was well. After doing a little snooping, I found that you can also create an ImageDescriptor from a swt.graphics.Image. I changed the code to look like this:
public ExitAction() {
super( “E&xit@Ctrl+X“, ImageDescriptor.createFromFile( “images\\close.gif“ ) );
setToolTipText( “Exit Application“ );
}
}
public ExitAction() extends Action {This produces the desired results. I am not sure why the first way of setting the image for the action did not work, but every tutorial that I have gone through and even the code in Apress' The Definitive Guide to SWT and JFace do it like I did it in the first code fragment above.
public ExitAction() {
super( “E&xit@Ctrl+X“ );
setToolTipText( “Exit Application“ );
Image image = new Image( Display.getCurrent(), “images\\close.gif“ );
setImageDescriptor( ImageDescriptor.createFromImage( image ) );
}
}
Technorati Tags: ImageDescriptor, Java, JFace
Posted by
Kerry
at
7:46 PM
0
comments