Wednesday, November 7, 2007

What is OSGi -- Open Services Gateway initiative
The OSGi Alliance (formerly known as the Open Services Gateway initiative - now an obsolete name) is an open standards organization founded in March 1999. The Alliance and its members have specified a Java-based service platform that can be remotely managed. The core part of the specifications is a framework that defines an application life cycle model and a service registry. Based on this framework, a large number of OSGi Layers, APIs, and Services have been defined:

Life Cycle, and Service Layers
Framework API
Package Admin Service
Start Level Service
Conditional Permission Admin
Permission Admin Service
URL Handlers Service
Log Service
HTTP Service (runs servlets)
Device Access
Configuration Admin Service
Metatype Service
Preferences Service
User Admin Service
Wire Admin Service
I/O Connector Service
Initial Provisioning
UPnP Device Service
Declarative Services
Event Admin Service
Deployment Admin
Auto Configuration
Application Admin Service
DMT Admin Service
Monitor Admin Service
Foreign Application Service
Service Tracker
XML Parser Service
Measurement and State
Execution Environments

OSGi Framework Scope
Classification: OSGi & System-LayeringThe Framework implements a complete and dynamic component model, something that is missing in standalone Java/VM environments. Applications or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot; management of Java packages/classes is specified in great detail. Life cycle management is done via APIs which allow for remote downloading of management policies. The service registry allows bundles to detect the addition of new services, or the removal of services, and adapt accordingly.

The original focus was on service gateways but the applicability turned out to be much wider. The OSGi specifications are now used in applications ranging from mobile phones to the open source Eclipse IDE. Other application areas include cars, industrial automation, building automation, PDAs, grid computing, entertainment(e.g. iPronto), fleet management and application servers.

Specification Process
The OSGi specification is developed by the members in an open process and made available to the public free of charge under the OSGi Specification License. The OSGi Alliance has a compliance program that is open to members only. As of October 2007, the list of certified OSGi implementations contains six entries.

The OSGi Alliance was founded by Ericsson, IBM, Oracle, Sun Microsystems and others in March 1999 (before incorporating as a nonprofit corporation it was called the Connected Alliance).

Among its members are (as of May 2007) more than 35 companies from quite different business areas, for example Ericsson, Deutsche Telekom, IBM, Makewave (formerly Gatespace Telematics), Motorola, Nokia, NTT, Oracle, ProSyst, Red Hat, Samsung Electronics, Siemens, and Telefonica.

The Alliance has a Board of Directors which provides the organization's overall governance. OSGi Officers have various roles and responsibilities in supporting the Alliance. Technical work is conducted within Expert Groups (EGs) chartered by the Board of Directors, and non-technical work is conducted in various Working Groups and Committees. The technical work conducted within Expert Groups include developing specifications, reference implementations, and compliance tests. These Expert Groups, working together, have produced four major releases of the OSGi specifications (as of 2007).

There are dedicated Expert Groups for the Enterprise, Mobile, Vehicle and the Core Platform areas. The Enterprise Expert Group (EEG) is the newest EG and is addressing Enterprise / Server-side applications.

In October 2003, Nokia, Motorola, IBM, ProSyst and other OSGi members formed a Mobile Expert Group (MEG) that will specify a MIDP-based service platform for the next generation of smart mobile phones, addressing some of the needs that CLDC cannot manage - other than CDC. MEG became part of OSGi as with R4.

Also in 2003 Eclipse selected OSGi as the underlying runtime for the plug-in architecture used for the Eclipse Rich Client Platform and the IDE platform. Eclipse itself includes sophisticated tooling for developing OSGi bundles and there are a number of other Eclipse plug-ins aimed at supporting OSGi behaviour (e.g. both ProSyst and Knopflerfish have Eclipse plug-ins available specifically for OSGi developers).

There is a vibrant free software community revolving around the OSGi specifications. See Equinox OSGi implementation, Apache Felix and the Knopflerfish OSGi project.

What is J2ME -- Java Micro Edition

Java ME: the Most Ubiquitous Application Platform for Mobile Devices

Deployed on billions of devices, supported by leading tool vendors, and used worldwide.
» Look at sample Java ME code:
» Java ME goes open source:
It is Java Platform, Micro Edition (Java ME) provides a robust, flexible environment for applications running on mobile and other embedded devices—mobile phones, personal digital assistants (PDAs), TV set-top boxes, and printers. Java ME includes flexible user interfaces, robust security, built-in network protocols, and support for networked and offline applications that can be downloaded dynamically. Applications based on Java ME are portable across many devices, yet leverage each device's native capabilities.

Java ME Platform Overview
Java Platform, Micro Edition (Java ME) is a collection of technologies and specifications to create a platform that fits the requirements for mobile devices such as consumer products, embedded devices, and advanced mobile devices. It is a collection of technologies and specifications that can be combined to create a complete Java runtime environment specifically to fit the requirements of a particular device

another OODA UML design tool

Following OODA UML design tool by ChangeVersion

JUDE/Professional - System Design Tool
JUDE/Community - Free UML Modeling Tool

JUDE is a new, simple, fast and easy UML modeling tool which supports object-oriented software design in UML. It integrates Mind Mapping features with UML and helps expand your ideas

TRICHORD ($200/License)
is a simple Agile project management tool that helps developers and managers track status at a glance from three viewpoints (Time, Task, Team), using "Kanban Board" (a Just-In-Time pull control method in Toyota Production System).

Saturday, October 27, 2007

UML Design tools/sample

Check following URL for smaples of UML 2.0 diagrams

-Microsoft: VISO
-IBM: Rational Rose
-Visual Paradigram

Friday, October 26, 2007

What is Agile Software Development

Agile Software Development is a conceptual framework for software engineering that promotes development iterations throughout the software development life circle.

-Customoer satisfaction by rapid and continous delivery of useful (working) software
-Working software is deliveryed frequently (weeks rather than months)
-Late change of requirements are welcomed
-Regular adaption to changing circumastances
-Projects are built around motivated and trusted indiduals
-Face to face conversation is the best form of communication
-Close,daily,cooperation between business people and developers

Comparation with other method
Adaptive --> Predective
Short time period : in weeks --> in months
Progess mesuring: working program --> deliverable articrafts
Project size: <40 --> any size

DSDM -- Dynamic Systems Development Method
FDD -- Feature Drived Development

Big Challenge:
-database structure changes when new features added
Agile data structure: XML data field
-document update

Software testing

To undertsnad what is software testing, you need to answer following quesitons

1. What is differency between software testing and SQA(Software Quality Asurance)

2. What levels of testing can you imagine?
Unit testing
Functional testing
Integration testing
System testing
System integration testing
Acceptance testing
Alpha testing -- a group of potential users or a tema of tester on developer side
Beta testing -- customer, end user, open publicly or open partially

3. What is Black/White/Grey Box Testing? and their differences.

4. What is a test case/suite/scenario?
Case ID, Category, prerequisite, Event, Action, Input, Expected Result, Actual Result

5. What is test script
test case, test procedure, test data

6. What is a testing circle
.requirement analisys/design
.test planning, test strategy, test bed creation
.test development: test procedures, test cases, test scenrio
.test execution
.test reporting
.retesting the defects

7. What is "Code coverage of testing"?

Thursday, October 25, 2007

Software Architecture

Software architecture is structure of software of system, it is organizaed in views, just like diferent type of blueprint of boulding architectutre.

Architecture Design == Stragitic Design == Global Design ==? High Level Design
Detailed Design == Tactic Design == Local Design ==? Low Level Design

Views of software architecutre:
1. Functional view or logical view
2. Development view or structral view
3. Code view
4. Physical view or deployment veiw
5. Concurrency/process/thread view
6. User action/feedbak view

Architecture Framework
4+1 -->logic,development,process,physical + use cases/scenarios
Zachman framework
Feaderal Enterprise Architecture

Architectural Styles / Patterns
Database-centric architecture
Distributed computing
Event Driven Architecture
Implicit invocation
Monolithic application
Pipes and filters
Representational State Transfer
Structured (module-based but usually monolithic within modules)
Software componentry (strictly module-based, usually object-oriented programming within modules, slightly less monolithic)
Service-oriented architecture
Search-oriented architecture
Space based architecture
Shared nothing architecture
Three-tier model

Wednesday, October 24, 2007

WBS-Work Breakdown Structures

A Work Breakdown Structure is a results-oriented family tree that captures all the work of a project in an organized way.


there are two type of WBS chart.

1. Product Oriented or Deliverable Oriented WBS
based on the achievement and objectives of the project

2. Process Oriented or Task Oriented WBS
based on the tasks

Generating a WBS from Microsoft Project
There is a third-party add-on software application for MS-Project called WBS Chart Pro that will convert your Gantt chart task list with indents into a standard WBS graphic in a few clicks. You can also use this application to create a WBS and transfer it back MSP. I have found this software very valuable in organizing project work into a WBS, reviewing the scope of proposed projects, and helping managers visualize the WBS implicit in their MS-Project schedules

Principles of project management

Project management principles are most often learned from experience, and they have universal validity for all projects. It is up to you to apply them intelligently to your project. I woulld like to put those principiles in following 6W and 6-ations.

1st-W. Why? -- You must ask why do we have to do this project.
What business you are in for this project
What business value will the poroject bring to customer
What business value will the project bring to you
Undertand the "why" will help you understand requirements of customers.

keywords: business value, business needs

2nd-W. What? -- You must unserdtand clearly what the customer requirements are.
You must document all requirements and get it under version control.
You must also expect the changes of requirement and have proper change control
Software requirement specificaion(SRS), Requirement Tracking Matrix

Keywords: SRS, RTM

3rd-W. How? -- You must be able to answer to asnwer "How"
development project RESONABLE plan (project scope, schedule, cost, ...)
development project cost estimation correctly.
specify the development methodology and your approch for the project

keywords: plan, feasibility, WBS(work breakdown structure),
PMTproject management traiangle(cost,schedule,technical objectives)

4th-W. Who? -- You must establish a very clear ownership of you each tasks
create the ptoject teams, and have each task to have an owner.

Keywords: the Motivation Triangle(3T):task ownership/timely feedback/tools and training

5th-W. Where? -- this important especially for outsourcing offshore projects.
You must clearly define where the task should be conducted. The location, department, or teams

6th-W. When --
project deadline, milestone dateline, task deadkines

1st-ation: Communication -- keep the project wide visibility
Good Communication is very very important facotor.
each memebr of be easy to know/understand the progress of the projects.
Milestone review, weekly/montly reviews
management tools
good documents, feedback,

2nd-ation: Configuration -- project baseline control and configurarion management
baseline the project (cost-schedule-objectives) and get it under control
configuration manager / change control board

3rd-ation: Documentation -- write down all important stuff, save and share it
good documents are key and basic to have a good communications betwwen members.
especially for offshore projects.
requirements,design, schedule,review meeting minutes, implementation ideas,
writing agreement from customer

"it is not documented" == "it did not happen".

4th-ation: verification -- it means testing,
all requirement/fuucntions must be tested and verified.

"It is not tested" == "it does not work"

5th-ation: Satisfaction of customer
If your output/result does not satisfy customer, it means failure.
Keep the customer's real needs and requirements continuously in view
Expect and reflect requirement changes

6th-ation: Preparation -- get prepared for any potential risk
Risk management
identifying all risks(leave no stone unturned) and find a solution for each risk
solve problems as they arise

Tuesday, October 23, 2007

Important things to assure success offsite development.

Communication problem is always the bg problem.

- mis-understanding of requirement/specification
--> the outout result is not what you wanted
- information and confirmation and questiom can not reply quickly
--> effectiveness is bad

1. Good Documentation
avoid mis-unserdtanding of requirement and specification
2. Visible work-in-progress
Development management tools -- status visible at any stage
3. Reviews and report periodically
4. Information relay, each step, someone from prev stage will follow
Assign on-site engineer, answer questions promptly.

Tips to Evaluate your IT Solution Provider

6 Tips to evaluate your development partner

As the customer, how would you ensure that you are dealing with a service provider who can manage your requirements accurately? Sometimes even you are not absolutely clear as to what the requirements for your software product are.

Here are some tips on how to evaluate your development partner or service provider.

Examine the development partner/service provider for good documentation practices. Good Documentation is very important for effectively managing and implementing projects. A Requirements document is mandatory.

Examine your service provider's requirements document and verify that it truly reflects your needs.

Evaluate the development methodology for good processes. Ask your service provider/developer to submit their methodology and project plan. You can be assured that if your partner has well-developed processes, you will have a quality output.

In outsource models, communication is a very crucial aspect. Please ensure that your developer has clear and excellent communication channels.

Ensure that the scope of the project is well defined. Often, there are conflicts resulting out of poor understanding of the scope by either party.

Evaluate your development partner to see if they understand your business model. A service provider who sees the bigger picture of your business is always the better choice. His value additions can go beyond your specifications.

All the above information has been compiled from our experience and learning through interaction with over 125 clients across the globe, in building dynamic websites anchored in different business models for them. Read more about the services we offer.

If you are interested in hiring us for our consulting expertise, or helping you set up business on the Internet or to add value to your existing online presence, please contact us and tell us more about your business here.

Tuesday, October 16, 2007

Create Bootable USB Flash Drive

The following contents was copied from fillowing URL, just in case the url will becomes in-available some day.

Create Bootable USB Flash Drive
A computer with a BIOS that allows for booting from a USB port.
I used a Dell Optiplex GX260 that has a Phoenix ROM BIOS Plus version 1.10 revision A05.
A Bootable floppy disk or CD.
I used a Windows 98 bootable CD. For those who have Dell systems, you can also use the bootable Dell Optiplex Resource CD that is used to reinstall your system with Windows 98.
Utilities with the ability to create a master boot record, create partitions, set active partitions, and format and transfer boot files to the active partition
I used the DOS FDISK and FORMAT that are on the Windows 98 CD.
Of course, the USB drive that you want to make bootable
I used a 256MB SanDisk Cruzer Mini USB Flash Drive.
Make the USB drive the first in the drive sequence.
Why?? fdisk does not allow for a partition to be set as ACTIVE (bootable) unless it is the first drive. It is most likely that your hard drive(s) is set as the first drive. This needs to be changed.
How?? Setting your USB drive to be the first in the drive sequence can be done by following ONE of the methods below. No matter which method you follow, the computer MUST be booted with the USB drive plugged in into the computer. Take a note of how the options that you are about to change were set before, as they will need to be changed back later.

Method # 1. BIOS drive sequence option.
Depending on your BIOS, there may be an option to change the drive sequence. On mine, there was an option labeled "Hard-Disk Drive Sequence". If your BIOS has this or a similar option, make sure you change the sequence so that the USB Drive is listed first.

Method # 2. Disabling other hard drives.
Again, this is done from the BIOS. Different BIOS's may have different options to disable the hard drive. On mine, the system had just one hard drive. I changed the option labeled "Primary Drive 0" to "OFF".

Method # 3. Unplugging the hard drives.
If your BIOS doesn't have an option to change the drive sequence or to turn off the hard drive, you can turn off your computer and unplug your hard drive(s). Make sure you know what you are doing here. Opening your computer case may result in voiding your computer warranty if you have one.

Boot the computer from the boot floppy/CD into the command prompt with the USB Drive plugged in.
Run fdisk
Use fdisk's "Set Active Partition" (option 2) to set the primary partition on the USB Drive to ACTIVE.
This step assumes that a primary partition already exists on the USB Drive. If this is not the case, use fdisk to create one. As noted in step # 1, fdisk will not allow for setting the the partition to ACTIVE unless the drive the partition is on is the FIRST in the drive sequence.
Exit fdisk.
Reboot the computer from boot floppy/CD into the command prompt with the USB Drive plugged in.
At the command prompt enter the following command: dir c:
This step is just to verify that the C: drive is actually the primary partition on the USB Drive. Regardless of the result that the command generates whether it be a listing of files or an error message, what is important here is to make sure that the size of the primary partition on the USB Drive is roughly equal to the sum of the empty space and the used space.
Format and copy the boot files to the primary partition.
At the command prompt, from the directory where FORMAT.COM is located, enter:format /s c:
Run fdisk /mbr
"fdisk /mbr" writes the master boot record, in this case to the USB drive, without altering the partition table information.
Restart the computer and choose booting from the USB Drive. If all goes well, you should see a C:> command prompt.
Change the computer settings back to what they were before step # 1.
I had a few people e-mail me with an error message "No fixed disks present..." which they encountered when they ran fdisk.. Personally, I did not run into this issue or know what is causing it on other people's machines. A simple Google search and this link can provide more information. Good luck

Friday, October 12, 2007

EnterpriseDB update fails on fedora 7.0

update fails on fedora 7.0I have report following issue to support, but there is not reply. so I post it here. Hope someone could give some advice.

I am installing edb-linux-x86_82412 on Linux(32bit) fedora 7.0. The installation is going smoothly until last step "Finish". There is an option of "Update & Finish" at finish of installation. If I select this option. the update service will failed with following error(also see attached file):

"Process exited with an error:1(exit value:1)"

Once the error occurred, the installation can not be finished. and all related windows like Error window, Update Service window are all not able to be closed. No matter how long time you wait. The only way is to kill the processes forcibly. because EnterpriseDB is not installed correctly, so it ca not be started.

I have tried following things so far.
1. if not choose to update, then everything is OK.
2. finish installation firstly, then start update service, the same problem will occur.
3. once the update problem occurs, I have to reboot system and un-install it then re-install it.

Currently, I am using the installation without update, it works normally. But I think we need to update it someday, so please help find out the cause and tell me how to escape the problem.

Thursday, October 11, 2007

InDesign Server License

See detail at


Adobe® InDesign® CS3 Server Single Instanceサーバ数ライセンス

Adobe® InDesign® CS3 Server Multi InstanceCPU数ライセンス

Wednesday, October 10, 2007

500 OOPS: cannot change directory

When I try to connect my fedora 7.0 server by ftp, following error occured.

500 OOPS: cannot change directory:/home/alvin

500 OOPS: child died

Connection closed by remote host.

It seems that the problem caused by SELinux setting (set as enforcing),

I solved the problem by changing SELinux setting to "permissive"


Be sure to change System Default Enforcing Mode too, otheriwse, the problem will occurs again after system reboot.

Tuesday, October 9, 2007

Install EnterpriseDB on fedora 7.0

This memo is taken when install "EnterpriseDB Advanced Server 8.2" on fedora 7.0

Procedure of pre-installation and installation
Platform: fedora 7.0 (Linux) EnterpriseDB Version

0. Login as root
1. Download package enterpriseedb-linux-x86_82412.tar

2. Extract to any folder, e.g. /usr/src/enterprisedb8.2/, files are as following


3. run

cd /usr/src/enterprisedb8.2

if you set SELinux in enforce mode, it ask you change it to permissive mode, do it as instructed.

4. start installer of enterprisedb8.2

Product key: 3N4DS-3DZGP-KMF00-11C2X-XHHCY

5. change install destination directory to following when prompted


6. Set up Operating System User ID
the user created will be used for run the database server

passwd: ********

7. Set Up Database Administrator USer ID
this user will be used to administrate database use default(the same user for run the database server)

8. Data Destination and WAL Directory use default (EnterpriseDB home/data and EnterpriseDB home/data/pg_xlog

9.Setup Dyna Tune choose Development
Summary: port 5444 ....

10. Finish with run auto-update
Process exit with error code 1 and it could not be finished automatically. have to kill the process force.

At this moment, I had to de-install and re-intall it. I can not find a way to run the update so far.
please don't run the update when you finish installation.

to do list:
need to download ojdbc14.jar from oracle site and put it to sub folder jre1.5/lib/ext which is under EnterpriseDB home directory /u01/app/enterprisedb/

different features of EnterprinseDB

1. there is copy state for copying data between database tables and physical data files.

2. inheritance of database table. One table can inherit from another to share fields just like class of object oriented programming.

key word ONLY is used to retrieve data from base class only(without retrieving data from inheriting tables in hierachy)

3. Quated identifier are case senstive.

following two statement are the same:

Select * from Foo; Select * from foo;

but following statement are not the same:

Select * from "Foo"; Select * from "foo";

4. Dollar-Quated string constants

A dollar-quoted string constant consists of a dollar sign ($), an optional "tag" of zero or more characters, another dollar sign, an arbitrary sequence of characters that makes up the string content, a dollar sign, the same tag that began this dollar quote, and a dollar sign. For example, here are two different ways to specify the string "Dianne's horse" using dollar quoting:

$$Dianne's horse$$

$SomeTag$Dianne's horse$SomeTag$

trouble of fedora 7.0 installation on Dell Dimension 5150

when install fedora 7.0 on Dell dimension 5150, there was trouble as following.

No matter you use Live-CD or Bootable DVD media, the installer will hang up
after showing following message.



The problem has something to do with assigning irq 12 to the mouse. If irq 12 is assigned the the mouse in bios it would work, but if irq 12 is not assigned to the bios mouse it would hang at the word ready.

In my case, I avoid the problem by following steps
1. At boot menu, select boot from image with graphical (make it highlighted)
2. Press tab key, the boot command line will appear
3. Appended following option to the command line


Above steps worked on my machine.

You can get more information from following URL

Wednesday, February 14, 2007

Why Migrate ASP to ASP.NET

Developer Productivity

Easy Programming Model ASP.NET makes building real world Web applications dramatically easier. ASP.NET server controls enable an HTML-like style of declarative programming that lets you build great pages with far less code than with classic ASP or technologies like PHP or JSP. Best of all, ASP.NET pages work in all browsers – including Firefox, Opera, Safari, and Internet Explorer.

Great Tool Support A broad range of tools support development with ASP.NET. You can work with a simple text editor (even Notepad), take advantage of the freely available Visual Web Developer 2005 Express Edition, or work with a full-powered integrated development environment, such as Visual Studio 2005. For enterprise developers, Visual Studio Team System 2005 includes additional tools for stress-testing and designing Web applications.

Improved Design

ASP.NET helps you create appealing, functional Web applications.

Master Pages ASP.NET makes it easy to create and apply a common look-and-feel to your Web site with Master Pages. Change the Master Page, and all pages automatically update to reflect those changes.

Themes Give your Web pages a consistent appearance with the built-in theming support in ASP.NET. Easily organize and apply changes to stylesheets and controls by applying a new theme to your pages.

Built Upon Standards

ASP.NET helps you create pages compliant with international standards.

XHTML Compliance Creating XHTML-compliant pages is easy with ASP.NET. Web controls support rendering valid, well-formed XHTML markup with a simple configuration option.

Accessibility Support Create Web applications usable by the widest possible audience support for building and testing accessible Web applications.

Improved Security

ASP.NET helps you protect your data and users.

Application Services There is no need to write common code for managing users and personalization with ASP.NET, as these features are included as application services. ASP.NET membership services provide best practices guidance and support for managing access to your Web applications.

Built-in Protection ASP.NET provides built-in protection from many common forms of hacker attacks, including cross-site scripting, request-replay attacks and more.

Improved Performance and Scalability

ASP.NET lets you use serve more users with the same hardware.

Caching Caching can dramatically improve the performance of Web applications, and ASP.NET supports many forms of caching. Output caching improves the rendering of controls to XHTML. Database caching enables the application to be notified when the underlying database changes, eliminating unnecessary queries.

Web-Farm Session State ASP.NET session state lets you share session data user-specific state values across all machines in your Web farm. Now a user can hit different servers in the web farm over multiple requests and still have full access to her session.

Extensible Architecture

ASP.NET can grow and change with your needs.

Provider Model The application services of ASP.NET use the provider model to connect to external services for storage and more. This enables the developer to change the database or other service used to store the membership, personalization or site map information by editing the configuration.

Web Parts Easily build portal applications with the built-in Web part functionality. Create Web applications that enable end users to organize and personalize their page content and layout.