Skip to main content.
November 27th, 2007

Roman Strobl in Sofia for our SwingX and NetBeans Event

The distinguished NetBeans development evangelist Roman Strobl will come tomorrow at the SwingX and NetBeans event organized by the Bulgarian Association of Software Development (BASD) and the Bulgarian Java User Group:

http://www.devbg.org/seminars/seminar-Swing-and-NetBeans-28-November-2007/

Roman Strobl has over 7 years of experience doing software development in Java and all sorts of scripting languages. His expertise includes software development tools, Cisco IP telephony, and information security. He gets very excited about new Java technologies and tools and enjoys helping developers use them effectively. Roman works for Sun Microsystems in Prague as a technology evangelist on the NetBeans project (with more than 80 presentations of NetBeans in past 2 years at Sun). He is also a passionate blogger (among the best 10 at Sun) and he produces his own podcast about NetBeans. His blog is located at: http://blogs.sun.com/roumen/.

Posted by nakov as news, java at 3:18 AM EET

Comments Off

November 19th, 2007

Advanced JavaScript, AJAX and Web 2.0 Course

I am organizing the first in Bulgaria training course for Advanced JavaScript, AJAX and Web 2.0 development: http://academy.devbg.org/news/19-11-2007.php on 6-7, 13-15 December, 2007. It will be a nice and serious training.

Advanced JavaScript, AJAX and Web 2.0 Programming Course

The JavaScript language is the core part of the modern Web 2.0 applications and AJAX frameworks. Nowadays JavaScript skills are absolutely required to any Web front end developer and are of a big advantage for Java, .NET, PHP, Python and other Web developers.

In this course the students will learn the DHTML fundamentals and some advanced JavaScript and AJAX programming techniques and frameworks like the Prototype library, the Dojo Toolkit, the JSON serialization, how to program object-oriented in JavaScript, how to write reusable components as well as best practices in creating rich client-side JavaScript applications.

Syllabus

1. World Wide Web and HTTP Introduction (1 lecture)

- What is WWW?

- WWW Components: URL, HTML, HTTP

- The HTTP Protocol

- HTTP Request Messages

- HTTP Response Messages

- Cookies

2. HTML Fundamentals (2 lectures + 2 exercises)

- Introduction to HTML: How It Works?

- HTML in Details: Basic Tags

- HTML vs XHTML

- HTML tags

- HTML tables

- HTML forms

3. Cascading Style Sheets (CSS) (2 lectures + 1 exercises)

- Why to Use CSS?

- CSS Syntax

- Linking Presentation and Content

- The Box Model

- CSS Rules

- Cross Browser Compatibility

- CSS Development Tools

4. Creating Web Sites with XHTML and CSS (1 lectures + 3 exercises)

- From JPEG Image to XHTML and CSS

- Cross Browser Compatibility

5. JavaScript Basics and Web Browser DOM (2 lectures + 2 exercises)

- What is JavaScript?

- How and where do you place JavaScript code?

- JavaScript Syntax

- The Web Browser Object Model (DOM)

- Accessing DOM from JavaScript

- JavaScript Debugging Tools

6. AJAX Basics (1 lecture)

- What is Rich User Experience?

- Rich Internet Application (RIA) Technologies

- AJAX: Real-life Examples & Usage Cases

- What is and Why AJAX?

- Technologies Used in AJAX

- Anatomy of AJAX operation

- XMLHttpRequest Methods & Properties

- AJAX Security

7. JSON Serialization (1 lectures)

- What is JSON?

- JSON vs. XML

- JSON Syntax

- AJAX & JSON

8. Advanced JavaScript Programming and JavaScript Best Practices (2 lectures + 2 exercises)

- Use Object-oriented JavaScript

- Use Object Hierarchy

- Use the Prototype Property

- DOM APIs & InnerHTML

- Write reusable JavaScript code

- Typical JavaScript Framework Architecture

- Use Object Literals as Function Parameters

- Load JavaScript on Demand

- Clean separation of Content, CSS, and JavaScript

- Reduce the Size of JavaScript File

9. Prototype Library (2 lectures + 2 exercises)

- What is Prototype?

- Object Class

- Utility Functions

- Built-in objects and classes

- Ajax and Ajax.Request

- Browser Compatibility

10. Dojo Toolkit Basics (2 lectures + 1 exercises)

- What is and Why to use Dojo Toolkit?

- Dojo Toolkit Package System

- Remoting via dojo.io.bind

- Dojo DOM Manipulation

- Backward/Forward buttons, Bookmarking

- Dojo Event System: DOM events, Chaining function calls, AOP event model

- What is a Dojo Wiget?

- How to use Dojo Wigets?

- What are the built-in Dojo Wigets?

- How can I see the built-in Dojo Wigets in action?

- How to create my own Dojo Wiget?

11. Practical Project: Web 2.0 Web Site Based on JavaScript (2 lectures + 4 exercises)

- From JPEG Image to XHTML + CSS + JavaScript

- Application Architecture: Creating the Foundation Classes

- Application Implementation: Implementing the Functionality

- Overcoming the Browser Compatibility Issues

- Best Practices

Target Audience

The course is designed for software engineers that want to gain skills for developing rich Web 2.0 front ends with HTML, CSS, JavaScript and AJAX. The audience is assumed to have some basic knowledge in computer programming, Web technologies, HTML, CSS and XML.

Posted by nakov as news at 9:24 PM EET

Comments Off

November 13th, 2007

Swing, SwingX and NetBeans 6 Seminar

Bulgarian Association of Software Developers (BASD) kindly invites you to the next meeting of the Bulgarian Java User Group (BGJUG). The topic will be “Rich Client Applications using NetBeans 6 and Java Swing”. The objectives of this seminar is to show how to easily develop Rich Client applications using NetBeans 6 and Swing. The focus will be on the new features recently added to Swing.

Speaker will be Miroslav Nachev, software engineer with 18 years of experience.

More information is available from the official site of the seminar: http://www.devbg.org/seminars/seminar-Swing-and-NetBeans-28-November-2007/.

Posted by nakov as news, java, blog at 5:28 PM EET

Comments Off

November 12th, 2007

Implicit Variables in Java 7?

Few days ago the Belgian Java Users Group (BeJUG) and the Brazilian Java Users Group (SouJava) jointly discussed a submission of few new features as language JSR for JDK7 in the Java Community Process. Lot of small nice features were introduced but one thins was still missing.

Implicit Variable Declarations

The implicit variable declarations with “var” keyword (like in C# 3.0) can significantly reduce the ammount of code developers write every day. For example the code below:

could be simplified to: 

We could use even more interesting constructs like this: 

The type of the “entires” and “entry” variables is implicitly defined from the right side of the expressions in the above code so we don’t want to write the boring and long type definition.

Nice! I am very happy to see this in C# 3.0. Why not in Java 7 too? What do you think?

Posted by nakov as java, blog at 3:12 AM EET

3 Comments »

November 10th, 2007

GWT Tk - Patched to Support GWT 1.4.60

GWT Tk (http://www.asquare.net/gwttk/)  is an excellent open-source GWT widget library. I use it to show modal dialog boxes in my GWT applications. There is only one problem: the ModalDialog does not work with the latest version of GWT: GWT 1.4.60. I investigated where the problem comes from and I patched the file ExposedCellPanel.java to run correctly on GWT 1.4.60. Here are the changes:

The original author of GWT Tk didn’t publish a new version to support GWT 1.4.60 when it officially released so I provide my modified one here: gwttk-0.2.3-patched.zip.

Posted by nakov as java at 12:20 AM EET

Comments Off

New version of GWT Advanced Table

I released a new version of my GWT Advanced Table widget. It now supports multiple rows selection:

GWT Advanced Table - screenshot from November 2007

I hope all GWT fans will enjoy using it.

Posted by nakov as java at 12:12 AM EET

2 Comments »

November 8th, 2007

GForge as Collaboration Software for Software Development

About GForge

I use GForge, an open-source software for collaboration in a development team for almost all my projects: software projects, courses, consulting projects, etc.

I am very happy with GForge. It provides integrated set of collaboration tools: Subversion, CVS, project tracking tools, bug tracking, management of projects and users (create, manage, modify projects and users), and configurable security. You can create new project, create users and assign access rules for these users.

Where to Start From with GForge?

I prefer running GForge on a virtual machine instead on a real PC to simplify backup, migration and support of the system. If you want to start using GForge, I recommend you to download and run a VMWare virtual machine image from http://gforge.org/ and configure it. You would like to configure some files and settings as mentioned below.

Configure Network and Hostname

First you need to configure the networking settings. I prefer using bridged network and join the virtual machine as part of the existing network.

The hostname is pre-set to gforgedemo.com so you first need to create local DNS and hosts entries. To change the hostname, there are several files in /etc/* that you need to modify. Alter the hostname and IP address to your needs:

/etc/gforge/httpd.conf
/etc/gforge/local.inc
/etc/gforge/plugins/scmcvs/config.php
/etc/gforge/plugins/cvstracker/config.php
/etc/gforge/plugins/svntracker/config.php
/etc/hosts
/etc/sysconfig/network
/etc/mailman/mm_cfg.py

Test the system by logging with the default administrator, delete it and create new administrator and users. Create some sample projects and test it they work.

Configure Scheduled Tasks

By default if you register a new project, its SVN and CVS repositories will be created in few minutes, not immediately. You may need to reconfigure the speed of the scheduled tasks in the crontab file (in Red Hat it is /etc/cron.daily). Modify this line:

20 * * * * $PHP $GFORGE/cronjobs/dav-svn/create_svn.php

with this line:

*/5 * * * * $PHP $GFORGE/cronjobs/dav-svn/create_svn.php

By default All Projects are Public!

Be careful because by default all newly registered projectas are public and can be accesses (in read only mode) by any users at the system, including guests. You should edit projects and mark them private to enforce security. Thus only authenticated users belonging to the project could access it.

Configure External (Internet) Access

You may want to enable access to the GForge server form Internet. You may not have static real IP address and may want to access the SVN without establishing VPN connection to your internal network. You can make a portmap to enable accessing the GForge server from your network (e.g. http://192.168.0.17:80) through your real IP address on another port through SSL, e.g. https://dev.external-ip.mycompany.com:8080.

This is not enough! You will soon discover that GForge redirects all your external requests from dev.external-ip.mycompany.com:8080 to the internal server, e.g. 192.168.0.17:80. To disable this feature edit this file: /opt/gforge/gforge-4.5.4/www/include/pre.php and comment the redirection code (fragment of it is shown below):

/*
        redirect to proper hostname to get around certificate problem on IE 5
*/
if ($HTTP_HOST != $GLOBALS[’sys_default_domain’] && $HTTP_HOST …

That is all. Have a fun!

Posted by nakov as blog at 4:39 PM EET

Comments Off