Doing orm.xml Joincolumn and Cascade

When doing orm.xml, I found that the order of Joincolumn and Cascade should be in order, otherwise it will encountered some problem.

Here is my definition of some classes, Customer and CreditCard.

package com.titan.domain;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name=”CUSTOMER_TABLE”)
public class Customer implements java.io.Serializable {
    private int id;
    private String firstName;
    private String lastName;
    private Address address;
    private CreditCard creditCard;
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    @OneToOne(cascade={CascadeType.ALL})
    @JoinColumn(name=”ADDRESS_ID”)
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    @OneToOne(cascade={CascadeType.ALL})
    @JoinColumn(name=”CREDIT_CARD_ID”)
    public CreditCard getCreditCard() {
        return creditCard;
    }
    public void setCreditCard(CreditCard creditCard) {
        this.creditCard = creditCard;
    }
}

 

package com.titan.domain;

import java.util.Date;

import javax.persistence.Id;
import javax.persistence.OneToOne;

public class CreditCard implements java.io.Serializable {

    private int id;
    private Date expiration;
    private String number;
    private String name;
    private String organization;
    private Customer customer;
    @Id
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public Date getExpiration() {
        return expiration;
    }
    public void setExpiration(Date expiration) {
        this.expiration = expiration;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getOrganization() {
        return organization;
    }
    public void setOrganization(String organization) {
        this.organization = organization;
    }
    @OneToOne(mappedBy=”creditCard”)
    public Customer getCustomer() {
        return customer;
    }
    public void setCustomer(Customer customer) {
        this.customer = customer;
    }
}

 

Here is my orm.xml, placed below META-INF

<entity-mappings   
   xmlns=”http://java.sun.com/xml/ns/persistence/orm”
   xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
   xsi:schemaLocation=”http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd” 
   version=”1.0″> 
<entity class=”com.titan.domain.Customer” access=”PROPERTY”>
      <attributes>
         <id name=”id”>
            <generated-value/>
         </id>
      <one-to-one name=”creditCard”
                     target-entity=”com.titan.domain.CreditCard”
                     fetch=”LAZY”>
            <join-column name=”CREDIT_CARD_ID”/>
            <cascade>
                <cascade-all />
            </cascade>
         </one-to-one>
      </attributes>
   </entity>
   <entity class=”com.titan.domain.CreditCard” access=”PROPERTY”>
      <attributes>
         <id name=”id”>
            <generated-value/>
         </id>
      <one-to-one name=”customer”
                     target-entity=”com.titan.domain.Customer”
                     mapped-by=”creditCard”/>
      </attributes>
   </entity>

</entity-mappings> 

 

To note that, cascade element should be below of join-column element, and inside cascade element it contains cascade-all, cascade-persist, cascade-merge, cascade-remove, cascade-refresh

Reference Site: http://markmail.org/message/73xeygrwcslyekwn

Doing Persistence under JBOSS

Just learnt EJB for half month. Just learnt how to create Entity class. When deploys, JBOSS always give me error. Now I found a solution, The problem is sometimes persistence.xml lost the XML Schema, the full persistence.xml can be like this:

<?xml version=”1.0″ encoding=”UTF-8″?>

<persistence
    xmlns=”http://java.sun.com/xml/ns/persistence”
    xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
    xsi:schemaLocation=”http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd”
    version=”1.0″>
    <persistence-unit name=”calculator”>
    <jta-data-source>java:/DefaultDS</jta-data-source>
    <properties>
        <property name=”hibernate.hbm2ddl.auto” value=”create-drop” />
    </properties>
    </persistence-unit>
</persistence>

Hope anyone who faced this problem can solve your problem.

SNS coding Tip in ASP.NET

During my university small project doing Internet Technology, having opportunities doing Social Networking Service Website with using ASP.NET. I have done some coding that might help you and me. The coding below will accomplish some tasks, such as getting list of friend, list of friend of friend, and getting friendly times string.

List of Friend

First of all, we need a Friend Table and User Table, I have created like this

  1. create table Users (
  2. uid int constraint ctUser_pk primary key(uid) identity,
  3. username char(100) not null default ”,
  4. password char(32) not null default ”,
  5. gender int default ‘0’,
  6. email char(100) default ”,
  7. address char(255) default ”,
  8. avatar char(255) default ”
  9. );
  10. create table Friend (
  11. uid int not null,
  12. fuid int not null,
  13. fusername char(30) not null,
  14. status int,
  15. dateline datetime
  16. );

Then I have created a Friend Class with the method implementation below/

  1. public DataTable getFriendList(int uid, int limit)
  2.     {
  3.         SqlConnection sqlConn = Util.openDB();
  4.         SqlCommand sqlCommand = new SqlCommand(“Select Top(@limit) f.*,u.* From Friend f Left Join Users u On u.Uid = f.Uid Where f.uid = @uid”, sqlConn);
  5.         sqlCommand.Parameters.Add(“uid”, uid);
  6.         sqlCommand.Parameters.Add(“limit”, limit);
  7.         SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
  8.         DataTable dt = new DataTable();
  9.         sqlAdapter.Fill(dt);
  10.         Util.closeDB();
  11.         return dt;
  12.     }

List of Friend of Friend

Method implementation of getting friend of friend:

  1. public DataTable gerFriendOfFriend(int uid, int limit)
      {
  2.         SqlConnection sqlConn = Util.openDB();
  3.         SqlCommand sqlCommand = new SqlCommand(“select  distinct Top(@limit) f.fuid, f.fusername, u.avatar from friend f left join users u on u.uid = f.fuid where f.uid in (select fuid from friend where uid = @uid) and f.fuid != @uid”, sqlConn);
  4.         sqlCommand.Parameters.Add(“uid”, uid);
  5.         sqlCommand.Parameters.Add(“limit”, limit);
  6.         SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
  7.         DataTable dt = new DataTable();
  8.         sqlAdapter.Fill(dt);
  9.         Util.closeDB();
  10.         return dt;
  11.     }

Friendly Time String

I have created another class called Util. The method implementation of getting friendly time string as below:

  1. public static string gmtime(DateTime t)
      {
  2.         string timeString = “”;
  3.         // show x seconds ago, 1-59 minutes 1-23 hours 1-7 days ago, otherwise original
  4.         DateTime now = DateTime.Now;
  5.         // convert into 1970 time format (this called unix timestamp)
  6.         long nowtime = Util.ConvertToTimestamp(now);
  7.         long time = Util.ConvertToTimestamp(t);
  8.         long diff = nowtime – time;
  9.         if (diff < 0)
  10.         {
  11.             timeString = “Invalid Time”;
  12.         }
  13.         else if (diff < 60)
  14.         {
  15.             timeString = diff + ” seconds ago”;
  16.         }
  17.         else if (diff < 3600)
  18.         {
  19.             decimal minute = Math.Round((decimal) diff / 60, 0);
  20.             timeString = minute + ” minutes ago”;
  21.         }
  22.         else if (diff < 86400)
  23.         {
  24.             decimal hour = Math.Round((decimal) diff / 60 / 60, 0);
  25.             timeString = hour + ” hours ago”;
  26.         }
  27.         else if (diff < 604800) // 7 days before
  28.         {
  29.             decimal day = Math.Round((decimal) diff / 60 / 60 / 24, 0);
  30.             timeString = day + ” days ago”;
  31.         }
  32.         else
  33.         {
  34.             timeString = t.ToString(); // show original after 7 days
  35.         }
  36.         return timeString;
  37.     }
  38.     // reference: http://www.dreamincode.net/code/snippet2094.htm
  39.     // convert datetime to unix timestamp
  40.     public static long ConvertToTimestamp(DateTime value)
  41.     {
  42.         //create Timespan by subtracting the value provided from
  43.         //the Unix Epoch
  44.         TimeSpan span = (value – new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime());
  45.         //return the total seconds (which is a UNIX timestamp)
  46.         return (long)span.TotalSeconds;
  47.     }

Web 3.0 Guess: Natural Language Processing

Now the web trend we arrived at Web 2.0. This the version of Web is the common sense we know that how our web looks like.

Web 1.0: The web is driven by data and information provided by webmaster. This is simplex transmission (one-way).

Web 2.0: The web is driven by data and information provided by both webmaster and users, as well as their interaction and communication. This is the full duplex transmission (two-way).

No longer than one decade, as many as peoples started talking about Web 3.0, how the Web 3.0 looks like.

Web 3.0 will have emerging technologies to drive it. User centralization is one of the concept. Despite of Web 2.0 that is the data-driven world, Web 3.0 will be user-driven world. Every web user will have unique identity that can acknowledges themselves to the other. Everything become easier, everything become possible.

From the user perspective: the user should be able to utilize whatever service to accomplish their tasks even need not know where the services and how the services provided the solutions. The user should be able to search something that is driven by broken piece memory, they even need not know what truly the name of the object as well as the visible characteristic of the object. The user should be able to get the direct suggestion or the guidance from the web but not getting the series of BLUE link with BLACK description word anymore.

From the web perspective: the web may become intelligent, they can learning like the human, they know things based on the experience. They can store these knowledge and talk to the human, provide knowledge to the human, accomplish the user tasks. They can have automation mechanism to drive on the technology but not have the user driver at the back. They make our world become easier and delight. They may act like an expert to provide expertise suggestion or guidance to the user to guide them to find the one they want.

When the web become clever, he can interpret the user’s languages, and interpret what the user really want, and finding the solution to the user, to help the user accomplish their tasks. Thus, there is an AI area to investigate this problem, we called natural language processing. Natural language processing will be the important concept we need to investigate, to find the regular pattern how the natural languages can be changed, how the normal user’s brain to interpret the natural language, and become their knowledge.

We can think like a baby who just born to the world, he really do not know what the world is, what the language is. But all of us we are evolving from baby, from everything we don’t know become know everything. The process we gather first information by the language talked by our mother and father, one word by one word, how our brain store the word in the smaller piece neuron? How we getting out the word stored in our brain to form the meaningful sentences when we tried to interpret the other information, to find the relevant and similar information, tried to understand it and make the respond? Actually, how we form our sentences of the structure? As we become experienced, everything we think that is easier. But how at one times we have faced accident and lost some memory? Yes, the cache of the experience is missing, we have failed to interpret something we supposed to know but now we don’t know, or not remember that such thing. Lastly, the problem how to investigate the natural language processing is already started by the computer scientist. Think about it. And, say, how the application of natural language processing is important to Web 3.0?

When the web can interpret our natural languages, everything really become easier. Before that many friends asked me how to install the specified Discuz! plugins (Discuz! is the forum script developed by China company). I will ask them to goggled the tutorial, but, they in turn asked me how to write the keyword. I think this is annoying stuff for now. But if we can just typing a sentence, what we really don’t know, then in turn we write the natural sentence what we really don’t know to the textbox of the search engine, and then the search engine return the specified suggestion to us, but not the long list of the links that we supposed to annoy again. For example, he or she can write this, “I want to know how to install Discuz! Bank Plugins”.

And we know about the expert system, that act likes getting human expertise to store in the knowledge base and in turn solve the human problems. But we know expert system only can specified to one narrow domain. From my view, of the evolution of the investigation of Web 3.0 had started, how to form the semantic web to categorize the information and the knowledge around the web, in turn to help in natural language processing and interpretation. I think someone can be one stop intelligent search engine, that act likes general expert system. And that expert system can consult knowledge from the other narrower expert system to find really the user want. As well as based on this logic, no one can rule the world but cooperation to deliver something that is good for the people in the coming days.

大马“.my”注册域名半价促销!

(TechDaily电子报7月20日吉隆坡报道)不仅购物商场高喊大减价,现在就连大马域名“.my”也推行半价大促销!

大马域名注册局(.my DOMAIN REGISTRY)宣布从即日起推行一项促销运动,所有注册及更新“.my”域名者。一律给予50%折扣。

这项优惠行动将从7月20日至9月4日,主要是配合由大马电脑及多媒体工业协会(PIKOM)与科学、工艺及革新部(Mosti)联办的全国资讯、通讯及科技月(National ICT Month 2009,简称NIM),以及即将到来的国庆日。

不过,任何更新域名者,其折扣费用仅以一年为期限。

大马域名注册局前称为MYNIC,也是科学、工艺及革新部所属单位,负责处理所有网址结尾为“.my”的注册及行政事务。

欲知更多详情,可浏览www.domainregistry.my

原文转贴:http://techdaily.com.my/2009/0720/196.html

Fix Network, Clock, Volume and Power (Battery) System Icons Missing with Disabled or Grayed Out Check Box Options

This article is from: http://www.mydigitallife.info/2009/01/01/fix-network-clock-volume-and-power-battery-system-icons-missing-with-disabled-or-grayed-out-check-box-options/


This is the good article I found online to fix the Window Vista Bug, below is the article:

Clock, Volume, Network and Power or Battery icons on notification area (system tray) is system icons that users can choose to display or hide. However, sometimes, any or all of these system icons can disappear, missing or hiding from systray area. The easy solution is to re-enable the showing of system icons on Notification Area tab of Taskbar and Start Menu Properties. However, sometimes, even the checkboxes to enable or disable the displaying of system icons are disable or grayed out, forbidding user from enabling the icons in notification area.
 grayed-out-disabled-system-icons

The problematic issue can happen if Windows group policy disables the Clock, Network, Power (or Battery), and Volume icons, or the registry keys related to notification area icons have corrupted. To re-enable and restore the check boxes, and hence user able to restore these system icons on notification area, the policies have to be turned off, and the registry keys reset, cleared or fixed. Note that Power icon may remain grayed out unless your computer is a notebook or laptop, or has a UPS battery backup connected to it.

Enable System Icons via Local Group Policy Editor

  1. Run GPedit.msc to start Local Group Policy Editor.
  2. Expand the tree to go to User Configuration -> Administrative Templates -> Start Menu and Taskbar.
  3. Change set the state value to Disable or Not Configured for the following group policies to enable showing or displaying of the icon in the notification area.

    Clock: Remove Clock from the system notification area
    Volume: Remove the volume control icon
    Network: Remove the networking icon
    Power (battery) Icon: Remove the battery meter

  4. Close the Local Group Policy Editor.
  5. Restart Explorer, Log off and log on again, or restart computer to make the change effective.

User who uses Windows without Local Group Policy Editor can modify the registry value via Registry Editor instead.

Turn On System Icons for Displaying or Showing via Registry

  1. Run Registry Editor (RegEdit.exe).
  2. Navigate to the following registry key:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

  3. Delete and remove the following registry values in the right pane:

    HideClock
    HideSCAPower
    HideSCAVolume
    NoAutoTrayNotify
    HideSCANetwork
    NoTrayItemsDisplay

  4. Then, navigate to the following registry key:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

  5. Again, delete any of the following registry values if found:

    HideClock
    HideSCAPower
    HideSCAVolume
    NoAutoTrayNotify
    HideSCANetwork
    NoTrayItemsDisplay

  6. Exit Registry Editor.
  7. Exit Explorer and restart, Logoff and login again, or reboot PC to apply the changes.

Fix IconStreams and PastIconsStream Registry Subkeys Corruption

If your computer is not affected by group policy (all policies have shown to be enabling the system icons), then the possible root cause for the Clock, Volume, Power and Network system tray icons to go into hiding, missing and disappearing from notification area is invalid or corrupted registry key entries of IconStreams and PastIconsStream. Microsoft KB945011 explains that “when the system or an application wants to put an icon in the notification area, the system or the application sends a discrete communication message to the operating system shell. If the operating system is very busy, that message may expire, or may time out. When this time-out occurs (such as shutdown prematurely), the icon does not appear in the notification area.” However, the error can happens more frequently than the cause specified by Microsoft.

To make the icons reappear, and enable the check boxes for the system icons, delete the specific registry keys.

  1. Run Registry Editor (RegEdit.exe).
  2. Navigate to the following registry key:

    HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify

  3. In the right Details pane, delete the IconStreams registry entry.
  4. In the right Details pane, click the PastIconsStream registry entry.
  5. Exit Registry Editor.
  6. Restart the Explorer.exe process.

All-in-One Registry Hack to Fix and Show Notification Are System Icons Disabled Issue

The following registry hack file contains all fixes listed above, and when apply, will delete all policies to disable the system icons, and reset and restore the notification tray icon streams to clean state.

Download FixTrayIcons.reg

Green Computing and Cloud Computing

Nowadays, green computing and cloud computing are the hot topic in anywhere. However, what is called Green Computing and Cloud Computing? Here we have some simple definition and introduction, to give readers some impression.

Green Computing

Green Computing is the study and practice of using computing resources efficiently. (From Wikipedia: http://en.wikipedia.org/wiki/Green_computing)

There are some approaches to green computing, include the way of algorithmic efficiency, virtualization of computer resources, terminal servers, power management, power supply, storage, Video Card, Display, Operating System issues, Materials recycling, Telecommuting, and etc.

Algorithmic efficiency

How the amount of computer resources required for any given computing function and there are many efficiency trade-offs in writing programs had imparted from the efficiency of algorithm. For example, the energy cost of a single Google search.

Virtualization

Computer Virtualization refers to the abstraction of computer resources, such as the process of running two or more logical computer systems on one set of physical hardware. The concept originated with the IBM mainframe operating systems of the 1960s, but was commercialized for x86-compatible computers only in the 1990s.

Terminal Servers

When using terminal servers, users connect to a central server; while all of the computing is done at the server level but the end user experiences the operating system. Now these can be combined with thin clients, which use up to 1/8 the amount of energy of a normal workstation, resulting in a decrease of energy costs and consumption. Moreover, there has been an increase in using terminal services with thin clients to create virtual labs.

Power management

The ACPI, Advanced Configuration and Power Interface (ACPI), it is an open industry standard, that allows an operating system to directly control the power saving aspects of its underlying hardware. This allows a system to automatically turn off components such as monitors and hard drives after set periods of inactivity. Moreover, a system may hibernate, where most components are turned off.

Power supply

As we know, computer power supplies (PSUs) are generally 70-75% efficient, dissipating the remaining energy as heat.

Storage

Physically larger drives often consume more power per gigabyte than smaller form factor, for example 2.5 inch. However, solid-state drives store data in flash memory or DRAM unlike hard disk drives. Since hard drive prices have fallen, storage farms have tended to increase in capacity to make more data available online. This includes archival and backup data that would formerly have been saved on tape or other offline storage. The increase in online storage has increased power consumption.

Video Card

There are some advice that how to make efficiency in energy: (1) – avoid using video card, use a shared terminal, shared thin client or desktop sharing software if display required. (2) – Use motherboard video output, typically low 3D performance and low power. (3) – Choose a GPU based on average wattage or performance per watt (For more information, see http://en.wikipedia.org/wiki/Performance_per_watt).

Cloud computing

Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the “cloud” that supports them. (From Wikipedia, http://en.wikipedia.org/wiki/Cloud_computing)

The concept of cloud computing generally involves combinations of the following:

  • Infrastructure as a service (laaS)
  • platform as a service (PaaS)
  • software as a service (SaaS)
  • Other recent technologies that rely on the Internet to satisfy the computing needs of users. Cloud computing services often provide common business applications online that are accessed from a web browser, while the software and data are stored on the servers.

However, many of us will make confuse of cloud computing with grid computing, utility computing, and autonomic computing. Actually, grid computing that is a form of distributed computing whereby a ‘super and virtual computer is composed of a cluster of networked, loosely coupled computers, acting in concert to perform very large tasks. Utility computing, that the packaging of computing resources, such as computation and storage, as a metered service similar to a traditional public utility such as electricity. Autonomic computing that is computer systems capable of self-management.

Cloud computing does not allow users to physically possess the storage of their data, but does leave responsibility of data storage and control in the hands of the provider.

Some key characteristics of cloud computing include, agility, that improves with users able to rapidly and inexpensively re-provision technological infrastructure resources. Cost, that is claimed to be greatly reduced and capital expenditure is converted to operational expenditure. Next, it is device and location independence while it enable users to access systems using a web browser regardless of their location or what device that are using, for example PC, mobile. In addition, characteristic of multi-tenancy enables sharing of resources and costs across a large pool of users thus allowing for, the centralization of infrastructure in locations with lower costs; peak-load capacity that increased; utilization and efficiency improvements for systems that are often only 10-20% utilized. Also, through the use of multiple redundant sites the reliability had improved, which makes cloud computing more suitable for business continuity and disaster recovery. By the way, scalability via dynamic provisioning of resources on a fine-grained, self-service basic near real-time, without users having to engineer for peak loads, with the performance is monitored, and consistent and loosely-coupled architectures are constructed using web services as the system interface. Typically the security is improved due to centralization of data, increased security-focused resources, etc. Lastly, sustainability comes about through improved resource utilization, more efficient systems, and caron neutrality.

The application of computing services include, peer-to-peer computing (Skype, Bittorent); Web application (Facebook); software as a service (Google Apps); Software plus service (Microsoft Online Services).

ITARC软件架构师大会7月16日开锣

原文转载:http://www.techdaily.com.my/2009/0713/175.html
本人强力推荐 http://www.techdaily.com.my 大马资讯科技网站

这项被视为本区域最大型的架构师区域大会将于7月16日至17日,在吉隆坡丽景酒店(Legend Hotel)举行,将进一步探讨今日软件架构师所面对的挑战及需求。

30场软件架构讲座会

这场软件界“武林大会”上将有超过30场软件架构相关讲座会,所讨论三大课题包括绿色电脑(Green Computing)、云端运算(Cloud Computing)及软件架构基本面(Fundamental IT Architecture)的热门科技趋势。

在此之前,多媒体发展机构(MeDC)执长行拿督巴里山指出,这项大会将在资讯、通讯与科技(Information communication technology ,ICT)及商业目标之间取得有效的平衡。

他说,如果大马要实现知识社会的目标,并成为传递高价值服务的全球领导者,这项平衡是必要的。

IASA大马分会主席哈山干尼表示,ITARC大会不仅可让IT专才了解软件架构最新资讯,同时也提供我国独立软件架构师提供一个交流论坛。

软件架构师新兴职业

软件架构师(software Architect)是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。

架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。
可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。在微软(Microsoft),这家世界最大的软件企业,其创办人比尔·盖茨在退休前,一直是该公司的首席软件架构师。
软件架构师犹如高楼大厦的设计人员,通常一座大厦在建之前,都先由设计师将蓝图描绘出来,包括其形状、结构、尺寸、材料等等,然后建筑工程师带领工人们按照蓝图将大厦一层一层地建起来。

◎亚太国际软件架构师协会网站:http://www.iasahome.org/
◎5届IT架构师区域大会网站:http://iasahome.org/web/malaysia