By Brian Knight
If you're like me and most companies, you probably have dozens if not hundreds of SQL Server 2000 DTS packages in you SQL Server environment. The idea of upgrading those packages to SQL Server 2005 SSIS can be daunting. The packages probably drive production loads and you've spent years stabilizing them and don't want that 4AM call. This article shows you your options for upgrading the packages automatically and what components won't be upgraded.
The Server and Workstation Upgrade
After you upgrade your SQL Server to SQL Server 2005, the packages carry over in place and are not upgraded as part of the process. All of your production jobs that call the packages are also carried over without change. Without touching the packages, you can continue to run the 2000 packages since the DTS runtime environment comes over. You'll be able to find your 2000 packages in the Microsoft SQL Server Management Studio under the Management node then Legacy -> Data Transformation Services. The problem is going to be that you'll need to install the SQL Server 2005 Feature Pack (specifically, the Package Designer for 2000) to modify the package after the upgrade. This was not installed by default to give you a smaller surface area in your install. After you upgrade the last node on your SQL Server, the SQL Server 2000 tools are completely removed.
Note: Support for the Metadata Repository has been removed in SQL Server 2005 so those packages will not come over. You will need to save those packages into a different storage area like MSDB or the file structure before upgrading your instance.
You can also use the SQL Server 2005 tools to connect to SQL Server 2000 databases to manage the server and packages. I've been using the 2005 tools since an early CTP to manage my entire SQL Server 2000 environment and have encountered very few issues even in beta. The problem will lie in if you chose not to upgrade your tools. You cannot manage or design against a SQL Server 2005 environment with the 2000 tools. In other words, the 2000 tools aren't forward compatible as in past releases of SQL Server.
Package Upgrade Options
The first step that I would recommend in your upgrade path is to run the SQL Server 2005 Upgrade Advisor. The Upgrade Advisor will report also against DTS packages. It will give you warnings and errors and identify specific packages that will cause you grief in the upgrade.
In SQL Server 2005 SSIS packages, you have a new task called Execute SQL Server 2000 Package task. Another way to inch into an upgrade is to create a SQL Server 2005 SSIS package with a single Execute SQL Server 2000 Package task that executes the old package until you can execute have time to upgrade each component. The task has the option to embed the 2000 package into the task itself so as you move the SSIS package, the DTS package comes with it. This tactic will be used later by the Upgrade Wizard for complex logic.
The best way to upgrade your packages is with the Package Upgrade Wizard. The wizard will leave the old package and calling jobs in place but clone the package with no job. The wizard isn't perfect though. It was developed to perfectly upgrade simple workflow and transforms written with the Import/Export Wizard or similar logic. If you have customized transforms like one that does a upper case transform, it will not be ported over exactly as is. If you have any complex transforms or tasks, a small 2000 DTS package that contains that step will be created and a Execute SQL Server 2000 Package task will be created to call that package. The package will be embedded in the task and you can modify the 2000 package by clicking Design Package inside that task (it won't show up in your legacy packages node). Using the wizard, I was able to upgrade about 75% of the packages (with simple logic) and 10% upgraded with issues like I just mentioned and the remainder had to have manual intervention.
There are some components that will not be compatible with SQL Server 2005. Just because they're not compatible though, doesn't mean there's not an upgrade path. The areas of special consideraExecute SQL Server 2000 Package tasktion are:
* Dynamic Properties task has no 2005 task to port to. A placeholder Script Task will upgrade over but will not have any functionality. Your package will not work as expected until you upgrade the logic using the new Package Configuration option or expressions.
* Analysis Services tasks are wrapped in a Execute 2000 Package task.
* ActiveX Script tasks that take extensive use of the DTS object model will not be supported. For example, if you used the model to call other packages or loop, this will not port. You will want to implement some of the built-in controls for this like the For Each Loop container.
* Global Variables are ported to package variables with no issues.
* Data Driven Query tasks are not supported. The upgrade wizard will use a sub-2000 package to make this work.
* Any custom task will be wrapped in a subtask as well.
It's important to note that long term support of SQL Server 2000 DTS is not in the cards. You need to spend this release of SQL Server 2005 getting off of DTS because I can't imagine support of DTS existing in the next release (code named Avalon). I hope some useful information to get you start down the path to upgrading your DTS packages to SSIS.
source : http://www.sqlservercentral.com/articles/SQL+Server+2005+-+SSIS/upgradingsqlserver2000dtspackagestossis/2201/
Jumat, Mei 23, 2008
Upgrading SQL Server 2000 DTS Packages to SSIS
Measuring Performance of Stored Procedures
by Preethiviraj Kulasingham
Database developers need to write stored procedures which are not only fully functional, but also which perform acceptably. As database servers use permanent storage media heavily (mainly because of ACID properties), which are known for slow performance, optimizing the stored procedures for performance is very important. This article concentrates on some of the counters used to measure performance and analyses methods of capturing these counters. This article is intended for database developers who write stored procedures and optimize for performance.
Currently there are three counters widely used for measuring performance of the system.
* Execution time
* CPU Cost
* IO Cost
Execution Time
The most primitive method is to get the time taken to execute the query from SQL Server Management Studio (SSMS). The status bar displays the time taken in terms of hour, minute and second. This may be a measure used when a query takes a longer time (Usually more than 10 seconds, so that a 10% improvement to the query could be measured) and the time difference in sub seconds is insignificant. When a query executes within a second, SSMS rounds the value. Thus this value could not be used to get the value if the query executes within sub seconds.
Another method is to get the system time before and after the execution of the stored procedure and analyze the difference. SQL Server management studio could be used for this purpose, simply by adding print statements before and after the stored procedure.
PRINT CONVERT(varchar, GETDATE(), 114)
The developer could also use variables to hold the values and calculate the time difference.
The advantage over this method is it could be used within a query too. For a stored procedure to be executed multiple times with different parameter for each time, print statement could be injected between each execution to analyze the time difference. For a multi statement procedure, Developers need to modify the stored procedure adding print statement, but it gives better control over the data to the developers. On the disadvantages side, one of the major points is its disability over getting time taken for compilation. Instead of PRINT statements, the time could be inserted into a table for further analysis is required. As datetime data type as it allows the value to be accurate up to 3 milliseconds the results may have vary with actual up to 3 milliseconds, and better than the previous method.
SQL Server has some other methods too.
SQL Server has a Set option which could be used to display the time taken: SET STATISTICS TIME ON
The setting could be reversed by using SET STATISTICS TIME OFF statement after the query. When this set option is ON. SQL Server will return message which may look similar to:
SQL Server Execution Times:
CPU time = 109 ms, elapsed time = 164 ms.
Elapsed time is the execution time of the query.
However, there is another time involved in this query: The time taken to compile the query. To view that, the statement should be issued when SET STATISTICS TIME ON Statement is already executed. When a batch of statements is submitted, SQL Server goes through ALL of them but compiles one by one. As GO is considered as batch separator, inserting a GO statement between the SET command and the query will make SQL Server to consider each statement as a batch and compile and execute them separately. Executing the set command first and executing the query (i.e. in two batches) will also do the trick.
When done the messages may be different.
SQL Server parse and compile time:
CPU time = 62 ms, elapsed time = 72 ms.
(1139 row(s) affected)
SQL Server Execution Times:
CPU time = 109 ms, elapsed time = 167 ms.
In this case, the time taken by the server for execution is 167 milliseconds. In addition to this, 72 milliseconds have been taken for compilation. The unit of measurement is in milliseconds and smaller figures will be rounded. When a multi statement stored procedure is called, the total time may slightly differ from the calculation. For this reason, SQL Server provides a summary too. Additionally, some of the internal operations like creating worktables, statistics on temporary tables etc. may create additional load but not be captured as individual statements. However, they will be added to the final cost.
1. IF OBJECT_ID('dbo.bsp_GetBigSales_ByTerritoryGroup') IS NOT NULL
2. DROP PROCEDURE dbo.bsp_GetBigSales_ByTerritoryGroup
3. GO
4.
5. CREATE PROCEDURE dbo.bsp_GetBigSales_ByTerritoryGroup
6.
7. @Group nvarchar(100)
8. AS
9. CREATE TABLE #Territory
10. (
11. TerritoryID int NOT NULL,
12. TerritoryName nvarchar(100)
13. )
14.
15. INSERT INTO #Territory (
16. TerritoryID,
17. TerritoryName)
18. SELECT T.TerritoryID,
19. T.[Name]
20. FROM Sales.SalesTerritory T
21. WHERE T.[Group] = @Group
22.
23. SELECT T.TerritoryName,
24. SH.ShipDate,
25. SUM(SD.LineTotal) AS ProductValue
26. FROM #Territory T
27. INNER JOIN Sales.Customer C
28. ON T.TerritoryID = C.TerritoryID
29. INNER JOIN Sales.SalesOrderHeader SH
30. ON SH.CustomerID = C.CustomerID
31. INNER JOIN Sales.SalesOrderDetail SD
32. ON SH.SalesOrderID = SD.SalesOrderID
33. GROUP BY T.TerritoryName,
34. SH.ShipDate
35. ORDER BY SH.ShipDate
36.
37. DROP TABLE #Territory
38. GO
39.
40.
41. SET STATISTICS TIME ON
42. GO
43. EXEC bsp_GetBigSales_ByTerritoryGroup
44. @Group = N'Europe'
45. SET STATISTICS TIME OFF
46. GO
The above stored procedure contains four SQL statements;
1. Creates a Temporary table (Lines 8 - 12)
2. Inserts Territory data into temporary table (Lines 14 - 20)
3. Selects the required data (Lines 22 - 34)
4. Drops the temporary table (Line 36)
When the stored procedure is executed it produces multiple lines of messages. The number of lines and values may vary based on several factors.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 1 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 8 ms.
(3 row(s) affected)
(1139 row(s) affected)
SQL Server Execution Times:
CPU time = 93 ms, elapsed time = 549 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 11 ms.
SQL Server Execution Times:
CPU time = 93 ms, elapsed time = 568 ms.
The first two sets of messages are compilation related. As we have four SQL statements, the next four statements refer the time taken for execution. The fifth line specifies the total time taken for the execution of the stored procedure. Users can note that the sum of time on each statement exceeds the value on the last line.
When a query with single statement or a few statements is used, this figure may be acceptable to use. When a stored procedure with multiple statements is executed, it will return multiple lines of information and it is difficult to get the values for each statement. This becomes extremely difficult if the stored procedure contains a while loop. Additionally, it is difficult to export the value into a table or spreadsheet for further calculation unless string manipulation is used.
Another method is to use Profiler. In profiler, the events that could be used for getting duration are
Stored Procedures
* RPC: Completed
* Sp: Completed
* Sp: Stmt Completed
TSQL
* SQL: Batch Completed
* SQL: Stmt Completed
The profiler could be set up to capture these events with these events by any user who has ALTER TRACE permission. Alternately, users could use a built-in template named Tuning too. Once set, Until it is stopped (or closed) it will capture the data. text data, start time and end time are additional columns which could be used. These two columns use SQL Server's date time data type and can hold data with 3/10 milliseconds accuracy. Users can include some more columns including CPU, Reads & Writes which is covered later in this article. To get maximum performance, the user should add filters on the application name, database ID (This ID could be obtained by executing the statement SELECT DB_ID() against the database or SELECT DB_ID('
The duration in profiler is by default measured in milliseconds. However, SQL Server 2005 includes an option to measure the duration in microseconds. It is useful when examining statements which do not take much time but may being executed very frequently.
Running profiler from a client computer against a busy server is not recommended. It creates comparatively high volume of network traffic. Server side trace events could be used during the situation. It produces an output file which could be analyzed using profiler. Users can create the script for server side trace using Profiler from File -> Export menu
SQL Server 2005 provides feature rich dynamic management views and functions which displays the information on query execution time. sys.dm_exec_query_stats displays the information on elapsed time. In addition to elapsed time, this view displays time related to CLR code. The following code displays the details of cached executions for all code executed against AdventureWorks:
SELECT query.objectid
,SUBSTRING(text, stat.statement_start_offset/2,
(CASE WHEN stat.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(MAX),query.[text])) * 2
ELSE stat.statement_end_offset
END
- stat.statement_start_offset)/2) as query_text
,stat.execution_count
,stat.total_worker_time
,stat.last_worker_time
,stat.min_worker_time
,stat.max_worker_time
,stat.total_clr_time
,stat.last_clr_time
,stat.min_clr_time
,stat.max_clr_time
,stat.total_elapsed_time
,stat.last_elapsed_time
,stat.min_elapsed_time
,stat.max_elapsed_time
FROM sys.dm_exec_query_stats stat
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS query
WHERE [query].dbid = DB_ID('AdventureWorks')
Issues with Elapsed time
Elapsed time of a stored procedure may vary even in the same server at different times based on the number of operations in progress at that time, the resources it uses, number of pages cached and the parameters passed. Let's have a look on these reasons
*
A Change in resources available for query processing. This could happen when another process is running in parallel. It could be either some users running a resource intensive query, or SQL Server Agent may start certain jobs which may take some resources. Further, if the same computer could be used to run many services and a process running on a different service too could be the cause of the problem. However, developers can evaluate the stored when no other process is happening. Most of the jobs could be stopped temporarily. Creating such a situation in development environment is highly possible.
*
The plan would have been compiled during the first execution but reused during the second execution. Also, DBCC FREEPROCCACHE command could be used to remove the cached procedure information from memory. It will ensure the procedure is recompiled again and again and the same execution plan is not re-used. (The execution plan may be the same in terms of content, but the DBCC command ensures that it was recreated and not reused)
*
A check point process may occur in the middle of the executions which unload the data pages from memory, or some of the pages which were not available in the cache during the first execution and loaded into memory for the execution are used by the second execution. The check point process too could be controlled using command CHECKPOINT. DBCC DROPCLEANBUFFERS command could be issued to clean the buffers so that the data will always be read from the disk and not from memory.
*
Based on the values passed for the parameters, the number of data pages to be loaded may differ. They may cause even a recompile at certain statements within a stored procedure, and the execution plan may not be the same.
All the solutions provided above are good if the database is isolated for other users. But, if the developers are working against a centralized database server it may not be possible to run all tests during a time when no one else is working. In this case, running the same stored procedure for multiple times and analyzing the average time taken could be a good solution. Remember the application should issue the command multiple times for RPC: Completed event to capture the counters well.
CPU Cost
CPU cost will show how much of CPU cost is taken to execute the stored procedure. CPU is a valuable resource and taking more from CPU may make not only the database but the entire server system to be non-responsive. Adding a few cycles may not cost much high but, when many processes are doing that, the server may go into high CPU usage.
As seen before, SET STATISTICS TIME ON command displays the CPU time taken. Again, this option could not be used to get the information into a table or spread sheet application for further analysis. However, this refers the actual time taken for execution and not the estimated time calculated by the compiler
Again, Trace events (wither from server side or from client side using Profiler) could be used to capture the CPU usage. This is the actual usage during the execution and not the expected CPU time. The best events to capture CPU time are
Stored Procedures
* RPC: Completed
* Sp: Stmt Completed
TSQL
* SQL: Batch Completed
* SQL: Stmt Completed
SP: Completed event under stored procedure section cannot be used to capture CPU cost.
@@CPU_BUSY system global variable displays the time (in ticks) the CPU was busy since the last restart. It adds the time from all CPUs. When that number is multiplied by another global variable @@TIMETICKS it results the microseconds the CPU was busy. By selecting the values before and after the execution of the query, The CPU time taken by the query could be calculated. However, @@CPU_BUSY always return a whole number.
The set commands (SET SHOWPLAN_ALL ON, SET SHOWPLAN_XML ON and ET STATISTICS PROFILE ON) display the not the actual CPU cost, but the estimated cost along with other information. When the first two commands are issued, only the estimated execution plan is generated and the expected CPU cost (and expected IO cost) which the (actual) execution plan used will be displayed. Even though the last command does not prevent the code from being executed, it also displays the estimated cost from the plan used for execution.
The estimated costs do play a part when analyzing a query and optimizing it. However, it cannot be used to measure the performance of a query.
Windows Operating system comes with a tool called PerfMon.exe. The display name of the utility differs from operating system to operating system. In Windows XP and Windows 2003 it is named as "Performance". During the Windows 2000 days it had the name as "System Monitor". Even before, it was called as "Performance Monitor". This tool is mainly used to measure the activities happening at the server. Even though it has mechanism to monitor CPU usage Disk activity and Memory usage (and many more), it is not useful to monitor the resource usage as per a single query. Rather, it could be used to monitor the activities and the change when large column of transactions happen. This article excludes this tool from evaluation.
IO Cost
IO cost is one of the critical costs of the system. As discussed in the beginning, IO is one of the critical resources and unless IO cost is kept low, the performance of the stored procedure will go down. Cached pages (Cached page = 8kb of data loaded from hard disk into memory) may increase the performance by not reading the data from hard disk.
SET STATISTICS IO ON is one of the commands that could be used to identify the IO cost. Again, it has the same issue of, SET STATISTICS TIME ON as it prints the statement in the messages tab, and it is difficult to process. A typical output looks like this:
(2750 row(s) affected)
Table 'SalesOrderHeader'. Scan count 1, logical reads 1403, physical reads 1, read-ahead reads 1, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
1. The above lines stats quite a few information against this query which uses Sales.SalesOrderHeader:
2. A total of 1403 pages were read to complete the query (logical reads 1403).
3. Out of the above pages, only one page was read (physical reads 1) from disk and the rest were either already in memory or read into data cache by the read-ahead mechanism.
4. 1 page was read into the data cache by the read-ahead mechanism.
5. The pages were read from disk through a single pass scan.
6. The rest refers to large objects and if there is no large object (like nvarchar(MAX) or text) involved in the query, the figures will show zero values.
In this example, even though logical scan shows as 1403, it does not mean the query has processed 14903 distinct pages. If a particular page is scanned twice, the local scan will consider it as two. To get clear picture of actual pages scanned, DBCC DROPCLEANBUFFERS should be executed (to make the pages loaded before to be dropped) and the sum of physical and read-ahead reads to be calculated.
These statistics related commands can be combined with Print statements to identify the cost involved in each statement. These are really useful to identify the IO operations and the cost of them.
Using profiler (or server side trace events) the read and write (of pages) occurred could be captured. It will differentiate the pages read and pages written separately, but not the pages already in memory and read from disk. All the events mentioned for CPU cost could be used to capture reads and writes.
The dynamic management view sys.dm_exec_query_stats also could be used to view IO Cost. Simply adding the following columns in the query specified to measure elapsed time will give the details:
* total_physical_reads
* last_physical_reads
* min_physical_reads
* max_physical_reads
* total_logical_writes
* last_logical_writes
* min_logical_writes
* max_logical_writes
* total_logical_reads
* last_logical_reads
* min_logical_reads
* max_logical_reads
This view does not separate read-ahead reads and LOB related reads/writes. However, this could be used as calculated statistics against a query.
The details of this view will be available until the cache is cleared. If a stored procedure is not used for some time it will be removed from memory. Until such time this view could be used to gather data.
In the development environment, it is better to clear the cache (both data cache and proc cache) before starting with any tests.
Additionally, @@IO_BUSY also be used to measure the IO time. Like the CPU counterpart this system variable displays the number of ticks which the IO was busy. By using the same calculation method used to calculate CPU time, the microseconds of IO time also could be calculated.
What is important
The importance of these counters may differ from environment to environment and based on the nature and time of operation. For example during busy hours for some organizations it may be more important to serve as many requests as possible rather than responding faster. (A job could be done faster if all resources are used; but it may lead to system hanging for some time or no response to other requests.) Additionally, performance is also works with the mindset of the end users (users complain only when their expectations are not met!) and the developers need to understand and meet these expectations. When writing the stored procedures, developers need to analyze the critical area in the system they are working with, and choose the importance to the counters appropriately.
Conclusion
This article describes different counters used for measuring performance and ways of calculating them. This article also described on the issues with those methods and ways of overcoming them. These counters are useful for measuring how a stored procedure behaves and to optimize them.
source : http://sqlserveruniverse.com/content/PERF0600104282008MeasuringPerformanceOfStoredProcedures.aspx
Verification and Validation Techniques
Software Verification and Validation (V&V) is the process of ensuring that software being developed or changed will satisfy functional and other requirements (validation) andeach step in the process of building the software yields the right products (verification).
Verification Techniques
There are many different verification techniques but they all basically fall into two major categories - dynamic testing and static testing.
* Dynamic testing - Testing that involves the execution of a system or component. Basically, a number of test cases are chosen, where each test case consists of test data. These input test cases are used to determine output test results. Dynamic testing can be further divided into three categories - functional testing, structural testing, and random testing.
* Functional testing - Testing that involves identifying and testing all the functions of the system as defined within the requirements. This form of testing is an example of black-box testing since it involves no knowledge of the implementation of the system.
* Structural testing - Testing that has full knowledge of the implementation of the system and is an example of white-box testing. It uses the information from the internal structure of a system to devise tests to check the operation of individual components. Functional and structural testing both chooses test cases that investigate a particular characteristic of the system.
* Random testing - Testing that freely chooses test cases among the set of all possible test cases. The use of randomly determined inputs can detect faults that go undetected by other systematic testing techniques. Exhaustive testing, where the input test cases consists of every possible set of input values, is a form of random testing. Although exhaustive testing performed at every stage in the life cycle results in a complete verification of the system, it is realistically impossible to accomplish. [Andriole86]
* Static testing - Testing that does not involve the operation of the system or component. Some of these techniques are performed manually while others are automated. Static testing can be further divided into 2 categories - techniques that analyze consistency and techniques that measure some program property.
* Consistency techniques - Techniques that are used to insure program properties such as correct syntax, correct parameter matching between procedures, correct typing, and correct requirements and specifications translation.
* Measurement techniques - Techniques that measure properties such as error proneness, understandibility, and well-structuredness. [Andriole86]
Validation Techniques
Validation usually takes place at the end of the development cycle, and looks at the complete system as opposed to verification, which focuses on smaller sub-systems.
* Formal methods - Formal methods is not only a verification technique but also a validation technique. Formal methods means the use of mathematical and logical techniques to express, investigate, and analyze the specification, design, documentation, and behavior of both hardware and software.
* Fault injection - Fault injection is the intentional activation of faults by either hardware or software means to observe the system operation under fault conditions.
* Hardware fault injection - Can also be called physical fault injection because we are actually injecting faults into the physical hardware.
* Software fault injection - Errors are injected into the memory of the computer by software techniques. Software fault injection is basically a simulation of hardware fault injection.
* Dependability analysis - Dependability analysis involves identifying hazards and then proposing methods that reduces the risk of the hazard occuring.
* Hazard analysis - Involves using guidelines to identify hazards, their root causes, and possible countermeasures.
* Risk analysis - Takes hazard analysis further by identifying the possible consequences of each hazard and their probability of occuring. [Kopetz97]
The IEEE Standard for Software Verification and Validation (IEEE Std 1012-1998) contains information on software integrity levels, the V & V process, the Software V & V reporting, administrative, and documentation requirements, and an outline of the software verification and validation plan.
Verification and validation is a very time consuming process as it consists of planning from the start, the development of test cases, the actual testing, and the analysis of the testing results. It is important that there are people specifically in charge of V & V that can work with the designers. Since exhaustive testing is not feasible for any complex system, an issue that occurs is how much testing is enough testing. Sure, the more testing the better but when do the cost and time of testing outweigh the advantages gained from testing.
source : http://softwareqatestings.com/testing-and-qa/introduction-to-software-testing/verification-and-validation-techniques.html
Service Oriented Architecture (SOA) Basics for Testings
* SOA is an architecture that relies on service-orientation as its fundamental design principle. Service-orientation describes an architecture that uses loosely coupled(Loose coupling describes a resilient relationship between two or more systems or organizations with some kind of exchange relationship) services to support the requirements of business processes and users.
* SOA is a design for linking business and computational resources (principally, organizations, applications and data) on demand to achieve the desired results for service consumers (which can be end users or other services).
* SOA may be built on Web services standards (e.g., using SOAP) that have gained broad industry acceptance. These standards (also referred to as web service specifications) also provide greater interoperability and some protection from lock-in to proprietary vendor software. One can, however, implement SOA using any service-based technology
Why Service Oriented Architecture?
* Enables flexible connectivity of applications or resources.
* Promotes encapsulation which enables re-use: each aspect of your business is captured and implemented in only one place, so changing it is straightforward.
* Requires the use of implementation independent interfaces which means that heterogeneous systems can be integrated, and changes to one lead to fewer negative effects.
* Enabler for process modeling and automation. With clearly defined interfaces between all business systems, you can start modeling (and changing) the business process captured by them at a level above individual systems.
Why testers should know SOA testing?
* Usually testers test a web based application based on UI is a general practice. But testing application implemented on SOA technology needs testing the web services. SOA-based environments can include many services which exchange messages to perform tasks. Depending on the design, a single application may generate millions of messages. Managing and providing information on how services interact is a complicated task. Hence It becomes essential for the testers to test these services whether they are functioning properly.
*
What is a Web Service?
A web service is a collection of protocols and standards used for exchanging data between applications or systems . A Web Service is a software component that is described via WSDL and is capable of being accessed via standard network protocols such as but not limited to SOAP over HTTP Software applications written in various programming languages and running on various platforms can use web services to exchange data over computer networks like the Internet in a manner similar to inter-process communication on a single computer. Web service is any piece of software that makes itself available over the Internet and uses a standardized XML messaging system
What is SOAP?
* SOAP (Simple Object Access Protocol) is a simple XML-based protocol to let applications exchange information over HTTP
* This is a communication protocol which communicates between different Apps
* It is a format for sending messages and is designed to communicate via Internet
* SOAP is platform and language independent and is developed as a W3C standard
* What is JMS?
* Java messaging service is the standard API for sending and receiving messages . It has two message protocols: point to point and pub/sub instead of only one, as many earlier middleware systems did. Additionally, JMS also doesn't care whether you use a wire or wireless protocol, and provide different levels of message delivery assurance as well.
* What is ESB?
* ESB( Enterprise Service Bus) is a set of tools and programs that can share information based on messages. The messages (mostly xml) are created and published and received over TCP/IP by deamons/applications/adapters that listen to the protocol
* Most ESB providers now build ESBs to incorporate SOA principles and increase their sales, e.g. Business Process Execution Language (BPEL).
What is WSDL?
* WSDL stands for Web Services Description Language
* WSDL is written in XML
* WSDL is an XML document
* WSDL is used to describe Web services
* WSDL is also used to locate Web services
* WSDL is a W3C standard
* WSDL is a document written in XML. The document describes a Web service. It specifies the location of the service and the operations (or methods) the service exposes
What is SCA?
* The Service Component Architecture "provides an open, technology neutral model for implementing IT services that are defined in terms of a business function and make middleware functions more accessible to the application developer. SCA also provides a model for the assembly of business solutions from collections of individual services, with control over aspects of the solution such as access methods and security.
SOA Testing challenges
* Different service implementation
- Web Service (WSDL)
- SCA (SCDL)
- EJB
- Others (JMS or XML/MQ)
* Distribute environment
- Loose coupled services are developed independently by different parties.
- Services may depend on the implement of other services
- Hard to do problem determination
* Test need to be as early as possible
- How can we start testing a service though its dependency services are not available?
- How to do testing the process while some dependency service are not available?
* Test need to be as much as possible
- How to verify service implementation is good
- How to verify a set of service operations can work together
* Automatically test business process
- How to test a process with human tasks?
- How to test an timeout branch?
* Event Driven Programming model with SOA
- Fire and forget model: no answer to a service call
- Publish and subscribe model: one to many
* High Skill requirement to tester
- Tester must code test cases manually
- Many standards and programming model to understand
source : http://softwareqatestings.com/testing-and-qa/web-testing/service-oriented-architecture-soa-basics-for-testings.html
Nilai yang berbeda
Sudah tepatkah keberadaan anda sekarang?
Ada 3 kaleng coca cola, ketiga kaleng tersebut diproduksi di pabrik yang sama
Ketika tiba harinya, sebuah truk datang ke pabrik, mengangkut kaleng-kaleng coca cola dan menuju ke tempat yang berbeda untuk pendistribusian.
Pemberhentian pertama adalah supermaket lokal. Kaleng coca cola pertama di turunkan disini. Kaleng itu dipajang di rak bersama dengan kaleng coca cola lainnya dan diberi harga Rp. 4.000.
Pemberhentian kedua adalah pusat perbelanjaan besar. Di sana , kaleng kedua diturunkan. Kaleng tersebut ditempatkan di dalam kulkas supaya dingin dan dijual dengan harga Rp. 7.500.
Pemberhentian terakhir adalah hotel bintang 5 yang sangat mewah. Kaleng coca cola ketiga diturunkan di sana . Kaleng ini tidak ditempatkan di rak atau di dalam kulkas. Kaleng ini hanya akan dikeluarkan jika ada pesanan dari pelanggan. Dan ketika ada yang pesan, kaleng ini dikeluarkan besama dengan gelas kristal berisi batu es. Semua disajikan di atas baki dan pelayan hotel akan membuka kaleng coca cola itu, menuangkannya ke dalam gelas dan dengan sopan menyajikannya ke pelanggan. Harganya Rp. 60.000.
Sekarang, pertanyaannya adalah : Mengapa ketiga kaleng coca cola tersebut memiliki harga yang berbeda padahal diproduksi dari pabrik yang sama, diantar dengan truk yang sama dan bahkan mereka memiliki rasa yang sama ?
Lingkungan Anda mencerminkan harga Anda. Lingkungan berbicara tentang RELATIONSHIP.
Apabila Anda berada dilingkungan yang bisa mengeluarkan terbaik dari diri Anda, maka Anda akan menjadi cemerlang. Tapi bila Anda berada dilingkungan yang meng-kerdil-kan diri Anda, maka Anda akan menjadi kerdil.
(Orang yang sama, bakat yang sama, kemampuan yang sama) + lingkungan yang berbeda = NILAI YANG BERBEDA
http://www.beraniegagal.com
Jumat, Mei 16, 2008
Kenapa Harus Menikah? (persepektif Islam)
Berikut beberapa alasan mengapa harus menikah, semoga bisa memotivasi kaum
muslimin untuk memeriahkan dunia dengan nikah.
Berikut beberapa alasan mengapa harus menikah, semoga bisa memotivasi kaum
muslimin untuk memeriahkan dunia dengan nikah.
1. Melengkapi agamanya
"Barang siapa menikah, maka ia telah melengkapi separuh dari agamanya. Dan
hendaklah ia bertaqwa kepada Allah dalam memelihara yang separuhnya lagi. (HR.
Thabrani dan Hakim).
2. Menjaga kehormatan diri
"Wahai para pemuda! Barang siapa diantara kalian berkemampuan untuk nikah, maka
nikahlah, karena nikah itu lebih mudah menundukkan pandangan dan lebih
membentengi farji (kemaluan). Dan barang siapa yang tidak mampu, maka hendaklah
ia puasa, karena puasa itu dapat membentengi dirinya. (HSR. Ahmad, Bukhari,
Muslim, Tirmidzi, Nasaiy, Darimi, Ibnu Jarud dan Baihaqi).
3. Senda guraunya suami-istri bukanlah perbuatan sia-sia
"Segala sesuatu yang di dalamnya tidak mengandung dzikrullah merupakan perbuatan
sia-sia, senda gurau, dan permainan, kecuali empat (perkara), yaitu senda gurau
suami dengan istrinya, melatih kuda, berlatih memanah, dan mengajarkan renang."
(Buku Adab Az Zifaf Al Albani hal 245; Silsilah Al Ahadits Ash Shahihah no.
309).
Hidup berkeluarga merupakan ladang meraih pahala
4. Bersetubuh dengan istri termasuk sedekah
Pernah ada beberapa shahabat Nabi SAW berkata kepada beliau, "Wahai Rasulullah,
orang-orang kaya telah memborong pahala. Mereka bisa shalat sebagaimana kami
shalat; mereka bisa berpuasa sebagaimana kami berpuasa; bahkan mereka bisa
bersedekah dengan kelebihan harta mereka." Beliau bersabda, "Bukankah Allah
telah memberikan kepada kalian sesuatu yang bisa kalian sedekahkan? Pada
tiap-tiap ucapan tasbih terdapat sedekah; (pada tiap-tiap ucapan takbir terdapat
sedekah; pada tiap-tiap ucapan tahlil terdapat sedekah; pada tiap-tiap ucapan
tahmid terdapat sedekah); memerintahkan perbuatan baik adalah sedekah; mencegah
perbuatan munkar adalah sedekah; dan kalian bersetubuh dengan istri pun
sedekah." Mereka bertanya, "Wahai Rasulullah, kok bisa salah seorang dari kami
melampiaskan syahwatnya akan mendapatkan pahala?" Beliau menjawab, "Bagaimana
menurut kalian bila nafsu syahwatnya itu dia salurkan pada tempat yang haram,
apakah dia akan mendapatkan dosa dengan
sebab perbuatannya itu?" (Mereka menjawab, "Ya, tentu." Beliau bersabda,)
"Demikian pula bila dia salurkan syahwatnya itu pada tempat yang halal, dia pun
akan mendapatkan pahala." (Beliau kemudian menyebutkan beberapa hal lagi yang
beliau padankan masing-masingnya dengan sebuah sedekah, lalu beliau bersabda,
"Semua itu bisa digantikan cukup dengan shalat dua raka'at Dhuha.") (Buku Adab
Az Zifaf Al Albani hal 125).
5. Adanya saling nasehat-menasehati
6. Bisa mendakwahi orang yang dicintai
7. Pahala memberi contoh yang baik
"Siapa saja yang pertama memberi contoh perilaku yang baik dalam Islam, maka ia
mendapatkan pahala kebaikannya dan mendapatkan pahala orang-orang yang meniru
perbuatannya itu tanpa dikurangi sedikit pun. Dan barang siapa yang pertama
memberi contoh perilaku jelek dalam Islam, maka ia mendapatkan dosa kejahatan
itu dan mendapatkan dosa orang yang meniru perbuatannya tanpa dikurangi sedikit
pun." (HR. Muslim, Buku Riyadush Shalihin Bab Orang yang pertama kali melakukan
kebaikan atau kejahatan.)
Bagaimana menurut Anda bila ada seorang kepala keluarga yang memberi contoh
perbuatan yang baik bagi keluarganya dan ditiru oleh istri dan anak-anaknya?
Demikian juga sebaliknya bila seorang kepala keluarga memberi contoh yang jelek
bagi keluarganya?
8. Seorang suami memberikan nafkah, makan, minum, dan pakaian kepada istrinya
dan keluarganya akan terhitung sedekah yang paling utama. Dan akan diganti oleh
Allah, ini janji Allah.
Dari Abu Hurairah r.a., ia berkata: Rasulullah SAW, bersabda: "Satu dinar yang
kamu nafkahkan di jalan Allah, satu dinar yang kamu nafkahkan untuk memerdekakan
budak, satu dinar yang kamu berikan kepada orang miskin dan satu dinar yang kamu
nafkahkan kepada keluargamu, maka yang paling besar pahalanya yaitu satu dinar
yang kamu nafkahkan kepada keluargamu." (HR Muslim, Buku Riyadush Shalihin Bab
Memberi nafkah terhadap keluarga).
Dari Abu Abdullah (Abu Abdurrahman) Tsauban bin Bujdud., ia berkata: Rasulullah
SAW bersabda: "Dinar yang paling utama adalah dinar yang dinafkahkan seseorang
kepada keluarganya, dinar yang dinafkahkan untuk kendaraan di jalan Allah, dan
dinar yang dinafkahkan untuk membantu teman seperjuangan di jalan Allah." (HR.
Muslim, Buku Riyadush Shalihin Bab Memberi nafkah terhadap keluarga).
Seorang suami lebih utama menafkahkan hartanya kepada keluarganya daripada
kepada yang lain karena beberapa alasan, diantaranya adalah nafkahnya kepada
keluarganya adalah kewajiban dia, dan nafkah itu akan menimbulkan kecintaan
kepadanya.
Muawiyah bin Haidah RA., pernah bertanya kepada Rasulullah SAW: 'Wahai
Rasulullah, apa hak istri terhadap salah seorang di antara kami?" Beliau
menjawab dengan bersabda, "Berilah makan bila kamu makan dan berilah pakaian
bila kamu berpakaian. Janganlah kamu menjelekkan wajahnya, janganlah kamu
memukulnya, dan janganlah kamu memisahkannya kecuali di dalam rumah. Bagaimana
kamu akan berbuat begitu terhadapnya, sementara sebagian dari kamu telah bergaul
dengan mereka, kecuali kalau hal itu telah dihalalkan terhadap mereka." (Adab Az
Zifaf Syaikh Albani hal 249).
Dari Sa'ad bin Abi Waqqash RA., dalam hadits yang panjang yang kami tulis pada
bab niat, ia berkata: Rasulullah SAW bersabda kepadanya: "Sesungguhnya apa saja
yang kamu nafkahkan dengan maksud kamu mencari keridhaan Allah, niscaya kamu
akan diberi pahala sampai apa saja yang kamu sediakan untuk istrimu." (HR.
Bukhari dan Muslim, Buku Riyadush Shalihin Bab Memberi nafkah terhadap keluarga)
Dari Abdullah bin Amr bin 'Ash ra., ia berkata: Rasulullah SAW bersabda:
"Seseorang cukup dianggap berdosa apabila ia menyianyiaka orang yang harus
diberi belanja." (HR. Bukhari dan Muslim, Buku Riyadush Shalihin Bab Memberi
nafkah terhadap keluarga).
Dan akan diganti oleh Allah, ini janji Allah
"Dan barang apa saja yang kamu nafkahkan maka Allah akan menggantinya. " (Saba':
39).
Dari Abu Hurairah RA, ia berkata: Nabi SAW bersabda: "Setiap pagi ada dua
malaikat yang datang kepada seseorang, yang satu berdoa: "Ya Allah, berikanlah
ganti kepada orang yang menafkahkan hartanya." Dan yang lain berdoa: "Ya Allah,
binasakanlah harta orang yang kikir." (HR. Bukhari dan Muslim, Buku Riyadush
Shalihin Bab Memberi nafkah terhadap keluarga).
9. Seorang pria yang menikahi janda yang mempunyai anak, berarti ikut memelihara
anak yatim
Janji Allah berupa pertolongan- Nya bagi mereka yang menikah.
1. Dan kawinkanlah orang-orang yang sendirian diantara kamu dan orang-orang yang
layak (berkawin) dari hamba-hamba sahayamu yang laki-laki dan perempuan. Jika
mereka miskin Allah akan memampukan mereka dengan karunia-Nya. Dan Allah Maha
Luas (Pemberian-Nya) lagi Maha Mengetahui. (An Nur: 32)
2. Ada tiga golongan manusia yang berhak Allah tolong mereka, yaitu seorang
mujahid fi sabilillah, seorang hamba yang menebus dirinya supaya merdeka dan
seorang yang menikah karena ingin memelihara kehormatannya. (HR. Ahmad 2: 251,
Nasaiy, Tirmidzi, Ibnu Majah hadits no. 2518, dan Hakim 2: 160)
sumber :
Erwin Arianto,SE
Internal Auditor
PT.Sanyo Indonesia
Ejip Industrial Park Plot 1a Cikarang-Bekasi
Kamis, Mei 15, 2008
Berpikir Positif
Tadi pagi saya dengar satu cerita perumpamaan yang sangat bagus dari sebuah radio lokal..bagi saya layak untuk dibagikan..cerita tentang seorang ceria dan pemurung. si ceria yang mempunyai sebuah handphone selalu dengan senang hati meminjamkan kepada si pemurung jika membutuhkan untuk telepon ke teman-temannya atau kerumah. Sebaliknya si pemurung yang secara sengaja tidak mempunyai handphone karena dalam pikiran si pemurung, jika mempunyai handphone maka dia harus dengan berat meminjamkan juga kepada si ceria atau teman-temannya. Bahkan si pemurung selalu merasa orang tuanya tidak menyayanginya dan selalu mengeluarkan keluhan kepada orang tuanya. Orang tua dari si ceria dan pemurung mengetahui hal ini dan situasi yang ada diantara si ceria dan pemurung. Maka itu mereka berencana untuk melakukan pengujian terhadap mereka berdua. Mereka ingin bisa masing-masing dari anak mereka merasakan perasaan yang berbeda dengan kebiasaannya sehari-hari.
Orang tua mereka memberikan si pemurung sebuah handphone dengan harapan agar dapat merasakan sukacita. Hadiah tersebut ditaruh diatas tempat tidur dan ketika si pemurung pulang dari sekolah, secepat mungkin membuka hadiah tersebut dan tersenyum selama dalam proses membuka hadiahnya. Namun senyum itu berubah lagi ketika mengetahui bahwa hadiah yang diberikan adalah sebuah handphone. Seketika pikiran negatif muncul, jika si pemurung mempunyai handphone maka dia harus menanggung beban bahwa si ceria dan teman-temannya akan meminjam dan akhirnya menjadi rusak. Atau muncul juga pikiran mengapa orang tuanya memberikan handphone? Dan keluhan-keluhan lain yang terus diucapkan oleh si pemurung.
Sedangkan si ceria diberikan hadiah kotoran kuda oleh orang tuanya. Alasan mengapa dihadiahkan begitu karena si ceria adalah orang yang selalu ceria dan melihat segala sesuatu dalam pandangan positif. Oleh karena itu, sang orang tua berusaha agar si ceria mengalami perasaan yang sangat sedih dan ingin melihat bagaimana reaksi kelanjutan si ceria. Ketika hadiah tersebut ditaruh dikotak dan dibuka oleh si ceria, reaksi ceria langsung bingung dan mengerutkan kening sesaat. Dan sambil berpikir keras, dan akhirnya mulai tersenyum kecil dan akhirnya semakin tersenyum dengan lepasnya. Lalu si ceria langsung bertanya kepada orang tuanya sambil tersenyum,
"Aku tahu mengapa ayah dan ibu memberikan kado ini!".
Sang orang tua kebingungan dan membalas,"Mengapa kamu tersenyum nak? padahal kami memberikan hadiah seperti itu?". Si ceria menjawab,
"Awalnya sedikit bingung tapi aku tahu kalau ayah dan ibu pasti akan memberikan sesuatu yang lebih besar dan jauh lebih baik dari hadiah yang aku terima ini!"
"Mengapa kamu berpikir seperti itu?", tanya balik sang ayah dengan cepat.
"Karena aku tahu kalo ayah dan ibu sayang ama aku sehingga hadiah itu hanya salah satu petunjuk akan hadiah yang jauuuhh lebih bagus..!! Pasti ayah akan memberikan aku seekor kuda yang sangat baguus kan?? hayo ngaku!! ", sambil bertanya dengan semangat.
Sang orang tua akhirnya tersenyum dan mengiyakan pemberian seekor kuda yang sangat bagus kepada si ceria.
Cerita ini menunjukkan pada saya 3 hal dimana hal tersebut bersifat sangat mendasar namun sulit untuk dilakukan.
1. Semangat untuk berpikir POSITIF dalam semua keadaan.
Berpikir positif adalah hal mendasar yang telah diberikan Tuhan semenjak kita lahir. Namun seiring bertambah usia dimana banyak pengaruh pikiran negatif dalam lingkungan kita maka membuat cara berpikir semakin sering dalam kondisi negatif. Bahkan banyak pengalaman dari hidup yang mengkondisikan dalam pengalaman negatif akhirnya memaksa kita terus menerus untuk melakukan kebiasaan berpikir negatif.
Dari cerita diatas, juga menunjukkan bahwa hidup tidaklah selalu dalam keadaan yang baik-baik saja. Akan ada banyak tantangan, kesulitan dan masalah yang memaksa kita dalam kondisi tidak baik-baik saja. Nah, saat itulah dibutuhkan Pikiran POSITIF yang dapat membawa kita lebih mantap dan stabil dalam menghadapi kondisi yang tidak baik-baik tersebut. Namun akan ada banyak pendapat bahwa melakukan Pemikiran Positif tidaklah berpengaruh banyak terhadap kondisi emosi kita atau juga ada yang berpendapat untuk melakukannya cenderung sulit dan akhirnya tidak dilakukan.
Memang yang saya tuliskan disini bukannya berarti saya sendiri tidak mengalami saat-saat sulit tersebut, saya sempat mengalami jatuh bangun dalam tetap konsisten meunculkan pikiran Positif tersebut. Namun yang menjadi kekuatan buat saya pada akhirnya adalah keinginan untuk terus berpikir Positif yang akhirnya membuat diri kita menjadi Terlatih. Mengenai Berpikir Positif tidak memberi banyak pengaruh kepada kondisi emosi kita, hal ini terjadi karena memang diri kita terbiasa untuk melakukan pemikiran secara Negatif. Maka itu disaat kita melakukan Pemikiran secara Positif maka bawa semua bagian dari diri kita untuk IKUT berpikir Positif. Nantinya keputusan selanjutnya yang kita ambil akan semakin lebih jernih dan atmosfir tergesa-gesa akan hilang. Sehingga dampaknya tindakan kita selanjutnya akan lebih baik. Pikiran Positif = Emosi lebih tenang + Mampu mengambil keputusan dengan dapak yang lebih baik + Lingkungan sekitar akan ikut terkena imbas positif.
2. Yakin bahwa segala sesuatu yang kita kerjakan dengan baik akan membawa TUJUAN AKHIR dan BERKAT yang lebih baik.
Hal ini ditunjukkan dengan cara berpikir si ceria yang awalnya bingung namun akhirnya berpikir bahwa segala sesuatu yang terlihat jelek dan tidak baik serta berat untuk dilakukan akan berakhir dengan hadiah kehidupan yang jauh lebih baik. Tetapi ada syarat khusus supaya kita benar-benar akan mendapatkan Tujuan Akhir dan Berkat yang lebih baik yaitu asalkan kita melakukan apa yang kita kerjakan tidak merugikan orang lain dan malah membawa kebaikan buat orang lain serta diri kita sendiri. Saya pernah ditanya oleh orang dalam satu sesi presentasi, " Menurut Anda apa yang disebut dengan BAIK dan SALAH?". Terus terang saya kesulitan untuk menjawab pertanyaan ini namun ada 1 hal yang menjadi kepastian dan tetap saya yakini sampai saat ini adalah nilai kebaikan itu tergantung dampak yang diterima oleh orang lain/sekitar kita dan diri kita sendiri. Jadi yang disebut BAIK adalah selama pekerjaan tersebut tidak merugikan orang lain kecuali memang orang lain itu sengaja berpikiran tidak baik terhadap kita. Karena itu diperlukan third party justification yang melibatkan orang lain yang cukup obyektif untuk memberi evaluasi apakah tindakan kita termasuk kategori Baik atau Tidak.
Nah penjelasan Baik atau Tidak Baik ini berkaitan dengan keyakinan pada point 2 diatas. Memang butuh proses internal yang mendalam dan kontinyu, namun saya pikir inilah resiko yang harus diambil ketika kita berkehendak menjadi manusia yang semakin Sempurna di bumi.
3. Berkaitan dengan manusia Sempurna di Bumi dengan point no.2 diatas,untuk mampu dengan keyakinan bahwa kita mempunyai Tujuan Akhir dan Berkat yang lebih baik maka kita harus mempunyai hubungan yang baik dengan Tuhan Pencipta kita. Dalam cerita diatas, si anak yang ceria tersebut mempunyai pengalaman yang dalam dengan sang orang tua dan membuat anak tersebut mempunyai keyakinan bahwa sang orang tua tidak akan memberikan hadiah yang tidak baik. Walaupun kenyataannya, si ceria diberikan hadiah yang tidak baik tetapi si ceria dapat melihat hal yang lebih besar dan lebih indah dari sang orang tua berdasarkan keyakinan tersebut. Maka itu, sebaiknya masing-masing dari kita mempunyai hubungan yang baik dengan Tuan Pencipta kita. Dengan begitu, segala sesuatu yang kita kerjakan membuat hidup menjadi lebih baik baik untuk diri kita sendiri dan orang sekitar kita.
3 hal diatas merupakan pengetahuan dasar dalam hidup kita tetapi sudahkah kita melakukannya? sekedar melakukannya merupakan hal baik namun dengan konsisten melakukannya adalah hal yang jauh lebih baik bagi hidup kita. Seperti kata temen saya, "Sulit bukan berarti tidak dapat dilakukan, mudah bukan berarti dilupakan".
Sumber : Dedy M
Pemenang dan Pecundang
Akhir tahun sering dipenuhi dengan perasaan waswas. Penilaian kinerja segera dilaksanakan. Bagai palu godam, hasilnya hendak meluluhlantakkan si pecundang. Jangankan bonus yang cukup untuk tamasya ke mancanegara, untuk ongkos fiskalnya pun kadang tak mencukupi. Sebaliknya, bagi pemenang, selain bonus besar, juga jaminan kenaikan gaji yang lumayan di tahun depan. Ini adalah siklus yang terus terjadi tahun demi tahun. Tak ada hal yang baru. Namun kenyataannya, gejolaknya masih dirasakan dramatis bagi banyak orang.
Si pecundang akan memainkan trik tertentu untuk memperoleh penilaian yang lebih besar dari yang seharusnya ia terima. Beribu alasan dan excuse terus dilontarkan. Industri sedang meradang, kompetisi bertambah berat, pesaing meluncurkan produk baru, prinsipal tidak
mendukung, persaingan yang tak wajar, pesaing banting harga - itu adalah alasan basi yang terus dikumandangkan. Si pecundang selalu akan menunjuk hidung orang lain sebagai biang keladi kekalahan. Lagu kata "andaikan" terus dimainkan. Andaikan bagian produksi meluncurkan produknya tahun ini; andaikan bagian keuangan menyetujui down payment
split; andaikan bagian support melakukan factory campaign. Tunjuk hidung, bukan tunjuk dada. Kesalahan bukan ditudingkan pada dirinya sendiri.
Kalau pun 8 dari 10 target tidak tercapai, si pecundang masih bisa menunjukkan bahwa dua target itu sebenarnya sangat besar implikasinya dibandingkan dengan yang 8. Pecundang memang tak pernah lelah mengibarkan kesuksesannya, walaupun bagai setitik nila di antara
sebelangga susu. Ia berusaha menjadi pemenang bagi dirinya sendiri. Sebuah penyangkalan fakta yang teramat naif.
Lain halnya dengan si pemenang, apalagi yang mendapat kategori istimewa, biasanya tak menduga mendapat predikat itu. Ia pikir biasa-biasa saja. Ia hanya berpikir yang terbaik saat ini. Kalau sang bos melihat ia memiliki prestasi prima, baginya itu sebuah pecutan untuk
lari lebih cepat lagi. Penilaian akhir tahun adalah sebuah jeda bagi si pemenang untuk mengambil ancang-ancang etape berikutnya.
Piala akhir tahun yang ia peroleh, bonus dan kenaikan gaji atau promosi, selalu beriringan dengan prestasi seluruh anggota kelompoknya. Pemenang selalu dikelilingi oleh para juara. Ia tidak pemain tunggal yang berdiri sendiri di puncak. Melainkan, ia adalah pemain kelompok yang berada di belakang sebuah kelompok juara yang saling mendukung. Pemenang tidak pernah merasa kesepian seperti pecundang. Pemenang selalu berbagi tawa dengan kelompoknya. Pemenang memiliki pendukung pemenang juga, yang pada saatnya bakal
menggantikannya sebagai pemenang baru.
Pemenang selalu merujuk pada rekan sekerja untuk menunjukkan pemenang sebenarnya. Tidak menunjuk pada dirinya sendiri. Atau meminjam teori kodok yang perlu menekan ke bawah supaya ia dapat terangkat tinggi. Hanya soal waktu, pemenang macam beginilah yang dapat bertahan. Sayangnya, banyak yang mengabaikan hukum alam ini.
Saya teringat pada sebuah cerita yang pernah saya kliping 8 tahun silam, ditulis oleh sahabat saya, Debora. Ia berujar tentang pemenang yang menang justru dalam sebuah kekalahan. Bukan menang tanpo ngasorake, melainkan menang tanpa sebuah kemenangan. Pemenang yang sejati bukan ditentukan oleh sebuah piala, atau rekor, atau medali fisik, melainkan ditentukan pula oleh sikapnya sebagai pemenang tatkala medali dan piala itu justru ia berikan kepada orang lain. Ia bisa dan mampu meraihnya, tetapi ia sadar bahwa medali ini sebaiknya
diserahkan kepada orang lain agar mereka menikmati kemenangan. Ia sendiri larut dalam kenikmatan kemenangan orang lain.
Begini ceritanya. Kim Peek, seorang anak yang menderita kerusakan otak, ikut dalam lomba lari 50 meter di olimpiade khusus kaum cacat tahun 1968. Sebagai atlet yang mewakili negaranya, Kim berharap membawa pulang medali karena ia memiliki rekor lari dengan kursi roda
yang fantastis. Ia menanti hari pertandingan dengan antusias persis seperti atlet normal lainnya.
Saat pertandingan tiba, Kim dan kedua peserta lain memasuki arena pertandingan yang kala itu sudah di babak final. Kim bergerak cepat mendahului kedua lawannya ketika pistol berbunyi tanda perlombaan dimulai. Dia berada 20 meter di depan dan 10 meter dari garis akhir
pada saat ia mendengar bunyi benda yang tertubruk di belakangnya. Ia memperlambat laju kursi rodanya. Ia melihat ke belakang.
Ia melihat seorang lawannya, anak perempuan, terbentur dinding. Kursi rodanya berbalik arah dan ia kesulitan untuk mengembalikan ke arah semula. Kim melihat, peserta lainnya - anak laki-laki - berusaha mendorong kursi roda si anak perempuan untuk kembali pada arah yang
tepat.
Kim berhenti. Lalu ia pun berbalik dan menolong si anak perempuan sehingga kembali seperti semula. Bukan hanya itu. Dengan segenap kekuatannya, ia mendorong kursi roda si anak perempuan sampai ke garis akhir. Anak laki-laki yang sempat berbalik arah tadi memenangi
perlombaan itu; sementara si anak perempuan meraih juara kedua; sedangkan Kim kalah.
Benarkah Kim kalah? Para penonton berdiri memberi tepuk tangan meriah untuk Kim. Mereka tidak berpikir bahwa Kim kalah. Kim tersenyum, ia merangkul si anak perempuan dan si anak laki-laki yang menjadi lawannya. Kim memang kehilangan medali emas, tetapi ia puas.
Kim adalah pemenang sejati. Sejatinya ia tidak merasa kehilangan medali. Ia tidak merasa kalah. Ia adalah sosok pemenang yang dibutuhkan bangsa ini untuk maju. Memberi jalan agar yang lain berada di karpet merah kemenangan. Ia tersenyum bangga, bahwa ia telah
melahirkan jawara baru. Ia adalah jawara sejati. Kapan kita bisa seperti Kim?
Sumber: Pemenang dan Pecundang oleh Paulus Bambang W.S.
Bergerak
“Sebagian besar orang yang melihat belum tentu bergerak, dan yang bergerak belum tentu menyelesaikan (perubahan).”
Kalimat ini mungkin sudah pernah Anda baca dalam buku baru Saya, “ChaNge”. Minggu lalu, dalam sebuah seminar yang diselenggarakan Indosat, iseng-iseng Saya mengeluarkan dua lembaran Rp 50.000. Di tengah-tengah ratusan orang yang tengah menyimak isi buku, Saya tawarkan uang itu. “Silahkan, siapa yang mau boleh ambil,” ujar Saya. Saya menunduk ke bawah menghindari tatapan ke muka audiens sambil menjulurkan uang Rp 100.000.
Seperti yang Saya duga, hampir semua audiens hanya diam terkesima. Saya ulangi kalimat Saya beberapa kali dengan mimik muka yang lebih serius. Beberapa orang tampak tersenyum, ada yang mulai menarik badannya dari sandaran kursi, yang lain lagi menendang kaki temannya. Seorang ibu menyuruh temannya maju, tetapi mereka semua tak bergerak. Belakangan, dua orang pria maju ke depan sambil celingak-celinguk. Orang yang maju dari sisi sebelah kanan mulanya bergerak cepat, tapi ia segera menghentikan langkahnya dan termangu, begitu melihat seseorang dari sisi sebelah kiri lebih cepat ke depan. Ia lalu kembali ke kursinya. Sekarang hanya tinggal satu orang saja yang sudah berada di depan Saya. Gerakannya begitu cepat, tapi tangannya berhenti manakala uang itu disentuhnya. Saya dapat merasakan tarikan uang yang dilakukan dengan keragu-raguan. Semua audiens tertegun.
Saya ulangi pesan Saya, “Silahkan ambil, silahkan ambil.” Ia menatap wajah Saya, dan Saya pun menatapnya dengan wajah lucu. Audiens tertawa melihat keberanian anak muda itu. Saya ulangi lagi kalimat Saya, dan Ia pun merampas uang kertas itu dari tangan Saya dan kembali ke kursinya. Semua audiens tertawa terbahak-bahak. Seseorang lalu berteriak, “Kembalikan, kembalikan!” Saya mengatakan, “Tidak usah. Uang itu sudah menjadi miliknya.”
Setidaknya, dengan permainan itu seseorang telah menjadi lebih kaya Rp.100.000. Saya tanya kepada mereka, mengapa hampir semua diam, tak bergerak. Bukankah uang yang Saya sodorkan tadi adalah sebuah kesempatan? Mereka pun menjawab dengan berbagai alasan:
“Saya pikir Bapak cuma main-main ............”
“Nanti uangnya toh diambil lagi.”
“Malu-maluin aja.”
“Saya tidak mau kelihatan nafsu. Kita harus tetap terlihat cool!”
“Saya enggak yakin bapak benar-benar akan memberikan uang itu .....”
“Pasti ada orang lain yang lebih membutuhkannya....”
“Saya harus tunggu dulu instruksi yang lebih jelas.....”
“Saya takut salah, nanti cuma jadi tertawaan doang.........”
“Saya, kan duduk jauh di belakang...”
dan seterusnya.
Saya jelaskan bahwa jawaban mereka sama persis dengan tindakan mereka sehari-hari. Hampir setiap saat kita dilewati oleh rangkaian opportunity (kesempatan), tetapi kesempatan itu dibiarkan pergi begitu saja. Kita tidak menyambarnya, padahal kita ingin agar hidup kita berubah. Saya jadi ingat dengan ucapan seorang teman yang dirawat di sebuah rumah sakit jiwa di daerah Parung. Ia tampak begitu senang saat Saya dan keluarga membesuknya. Sedih melihat seorang sarjana yang punya masa depan baik terkerangkeng dalam jeruji rumah sakit bersama orang-orang tidak waras. Saya sampai tidak percaya ia berada di situ. Dibandingkan teman-temannya, ia adalah pasien yang paling waras. Ia bisa menilai ”gila” nya orang di sana satu persatu dan berbicara waras dengan Saya. Cuma, matanya memang tampak agak merah. Waktu Saya tanya apakah ia merasa sama dengan mereka, ia pun protes. ”Gila aja....ini kan gara-gara saudara-saudara Saya tidak mau mengurus Saya. Saya ini tidak gila. Mereka itu semua sakit.....”. Lantas, apa yang kamu maksud ’sakit’?”
”Orang ’sakit’ (gila) itu selalu berorientasi ke masa lalu, sedangkan Saya selalu berpikir ke depan. Yang gila itu adalah yang selalu mengharapkan perubahan, sementara melakukan hal yang sama dari hari ke hari.....,” katanya penuh semangat.” Saya pun mengangguk-angguk.
Pembaca, di dalam bisnis, gagasan, pendidikan, pemerintahan dan sebagainya, Saya kira kita semua menghadapi masalah yang sama. Mungkin benar kata teman Saya tadi, kita semua mengharapkan perubahan, tapi kita tak tahu harus mulai dari mana. Akibatnya kita semua hanya melakukan hal yang sama dari hari ke hari, Jadi omong kosong perubahan akan datang. Perubahan hanya bisa datang kalau orang-orang mau bergerak bukan hanya dengan omongan saja.
Dulu, menjelang Soeharto turun orang-orang sudah gelisah, tapi tak banyak yang berani bergerak. Tetapi sekali bergerak, perubahan seperti menjadi tak terkendali, dan perubahan yang tak terkendali bisa menghancurkan misi perubahan itu sendiri, yaitu perubahan yang menjadikan hidup lebih baik. Perubahan akan gagal kalau pemimpin-pemimpinnya hanya berwacana saja. Wacana yang kosong akan destruktif.
“Manajemen tentu berkepentingan terhadap bagaimana menggerakkan orang-orang yang tidak cuma sekedar berfikir, tetapi berinisiatif, bergerak, memulai, dan seterusnya.”
Get Started. Get into the game. Get into the playing field, Now. Just do it!
“Janganlah mereka dimusuhi, jangan inisiatif mereka dibunuh oleh orang-orang yang bermental birokratik yang bisanya cuma bicara di dalam rapat dan cuma membuat peraturan saja.”
Makanya tranformasi harus bersifat kultural, tidak cukup sekedar struktural. Ia harus bisa menyentuh manusia, yaitu manusia-manusia yang aktif, berinisiatif dan berani maju.
Manusia pemenang adalah manusia yang responsif. Seperti kata Jack Canfield, yang menulis buku Chicken Soup for the Soul, yang membedakan antara winners dengan losers adalah :
“Winners take action…they simply get up and do what has to be done…”.
Selamat bergerak!
Rhenald Kasali
Rabu, Mei 14, 2008
Bukan Tidak Bisa Hanya Belum Dicoba!!!
Banyak orang bilang, bisnis itu susah, berisiko tinggi, harus memiliki darah keturunan, harus berpendidikan tinggi dan sebagainya. Padahal sebenarnya bisnis itu mudah kok, memang sih risikonya lebih tinggi daripada seorang karyawan, namun ada satu hal yang harus Anda ingat, bahwa rezeki itu berbanding lurus dengan risiko.
Jadi kalau Anda ingin mendapatkan hasil yang tinggi, Anda juga harus siap menanggung risiko yang tinggi pula. Itu hukum alam loh!.
Jika Anda hanya berani mengambil risiko yang kecil-kecilan maka Anda pun juga harus siap mendapatkan hasil yang kecil-kecilan pula.
Tentang garis keturunan, memang banyak juga sih pengusaha sukses yang berasal dari kalangan pengusaha sukses pula, misalnya di group-group usaha para konglomerat memang pengecualian. Mereka yang sekarang menjadi pengusaha sukses memang memiliki darah keturunan orang-orang sukses dimasa yang lalu. Namun itu tidak berlaku mutlak. Banyak lho, sekarang ini muncul pengusaha-pengusaha sukses yang sama sekali tidak memiliki darah keturunan pengusaha. Ada anak petani, anak pegawai negeri, anak tukang ojeg dan lain sebagainya yang sukses menjadi pengusaha besar. Jadi “darah keturunan” itu tidaklah penting dalam rangka untuk memulai bisnis.
Sekarang tentang pendidikan, rasanya banyak pengusaha sukses yang tidak berpendidikan tinggi namun sukses menjadi pengusaha besar. Katakanlah I Nyoman Londen, Bos Edola Burger yang hanya berpendidikan “S.III” , yaitu SD, SMP dan SMA namun sukses mengelola usaha Burger hingga mencapai 400 outlet. Ada juga H. Mas Nur Huda yang “hanya” berpendidikan di Pesantren namun sukses mengelola bisnis Waralaba Es Cendol dengan omset mencapai 5 juta rupiah per-hari.
Nah, dengan demikian sebenarnya nggak ada alasan bagi Anda untuk berkata tidak bisa berbisnis, karena saya yakin bahwa sebenarnya Anda bukannya tidak bisa berbisnis, melainkan belum mencoba untuk berbisnis.
Salam
Cak Eko
www.cakeko.blogspot.com
I Love You Mom
Ini adalah mengenai Nilai kasih Ibu dari Seorang anak yang mendapatkan ibunya sedang sibuk menyediakan makan malam di dapur. Kemudian dia menghulurkan sekeping kertas yang bertulis sesuatu. Si ibu segera membersihkan tangan dan lalu menerima kertas yang dihulurkan oleh si anak dan membacanya.
Ongkos upah membantu ibu:
- Membantu Pergi Ke Warung: Rp20.000
- Menjaga adik Rp20.000
- Membuang sampah Rp5.000
- Membereskan Tempat Tidur Rp10.000
- Menyiram bunga Rp15.000
- Menyapu Halaman Rp15.000
Jumlah : Rp85.000
Selesai membaca, si ibu tersenyum memandang si anak yang raut mukanya berbinar-binar. Si ibu mengambil pena dan menulis sesuatu dibelakang kertas yang sama.
- Ongkos mengandungmu selama 9bulan- GRATIS
- Ongkos berjaga malam karena menjagamu -GRATIS
- Ongkos air mata yang menetes karenamu -GRATIS
- Ongkos khawatir kerana selalu memikirkan keadaanmu -GRATIS
- Ongkos menyediakan makan minum, pakaian dan keperluanmu -GRATIS
Jumlah keseluruhan nilai kasihku - GRATIS
Air mata si anak berlinang setelah membaca. Si anak menatap wajah ibu, memeluknya dan berkata, “Saya Sayang Ibu”.Kemu dian si anak mengambil pena dan menulis sesuatu didepan surat yang ditulisnya: “Telah Dibayar” .
KAMU SAYANG IBUMU????
Mother is the best super hero in the world
Sumber : Anonymous
Tuhan Itu Tidak Ada
Seorang konsumen datang ke tempat tukang cukur untuk memotong rambut dan merapikan brewoknya.
Si tukang cukur mulai memotong rambut konsumennya dan mulailah terlibat pembicaraan yang mulai menghangat.
Mereka membicarakan banyak hal dan berbagai variasi topik pembicaraan, dan sesaat topik pembicaraan beralih tentang Tuhan.
Si tukang cukur bilang, "Saya tidak percaya Tuhan itu ada".
"Kenapa kamu berkata begitu ???" timpal si konsumen.
"Begini, coba Anda perhatikan di depan sana , di jalanan... untuk menyadari bahwa Tuhan itu tidak ada. Katakan kepadaku, jika Tuhan itu ada, Adakah yang sakit??, Adakah anak terlantar?? Jika Tuhan ada, tidak akan ada sakit ataupun kesusahan. Saya tidak dapat membayangkan Tuhan Yang Maha Penyayang akan membiarkan ini semua terjadi."
Si konsumen diam untuk berpikir sejenak, tapi tidak merespon karena dia tidak ingin memulai adu pendapat.
Si tukang cukur menyelesaikan pekerjaannya dan si konsumen pergi meninggalkan tempat si tukang cukur.
Beberapa saat setelah dia meninggalkan ruangan itu dia melihat ada orang di jalan dengan rambut yang panjang, berombak kasar (mlungker-mlungker- istilah jawa-nya), kotor dan brewok yang tidak dicukur. Orang itu terlihat kotor dan tidak terawat.
Si konsumen balik ke tempat tukang cukur dan berkata, "Kamu tahu, sebenarnya TIDAK ADA TUKANG CUKUR."
Si tukang cukur tidak terima," Kamu kok bisa bilang begitu ??".
"Saya disini dan saya tukang cukur. Dan barusan saya mencukurmu!"
"Tidak!" elak si konsumen.
"Tukang cukur itu tidak ada, sebab jika ada, tidak akan ada orang dengan rambut panjang yang kotor dan brewokan seperti orang yang di luar sana ", si konsumen menambahkan.
"Ah tidak, tapi tukang cukur tetap ada!", sanggah si tukang cukur.
" Apa yang kamu lihat itu adalah salah mereka sendiri, kenapa mereka tidak datang ke saya", jawab si tukang cukur membela diri.
"Cocok!" kata si konsumen menyetujui.
"Itulah point utama-nya!. Sama dengan Tuhan, TUHAN ITU JUGA ADA ! Tapi apa yang terjadi... orang-orang TIDAK MAU DATANG kepada-NYA, dan TIDAK MAU MENCARI-NYA. Oleh karena itu banyak yang sakit dan tertimpa kesusahan di dunia ini."
Si tukang cukur terbengong !!!
Sumber : Anonymous
Menjadi Tidak Pantas Lagi
Seorang pendengar radio bertanya kepada Pak Mario Teguh; Apa yang harus dilakukannya, ketika ditunjuk menduduki jabatan yang lebih tinggi?
Dan, sang Gurupun dengan indah menjawab; “Mulailah dari tidak pantas, buat diri Anda menjadi pantas, kemudian menjadi tidak pantas lagi”.
Arti yang terkandung dalam kalimat penuh makna adalah: Dalam setiap pekerjaan, apapun jabatan Anda saat ini, Anda harus segera menjadi qualified (menjadi pantas!). Setelah itu, dengan kecepatan tinggi lampauilah pekerjaan itu dengan menjadi over-qualified (menjadi tidak pantas lagi) dan bersiap untuk naik ke jenjang berikutnya.
Rekan Business Owner yang terhormat,
Ilmu tersebut dapat juga Anda applikasikan dalam perusahaan Anda!
Anda harus segera membuat bisnis Anda, dari yang bertahan hidup, dari yang ‘hanya’ usaha kecil menengah (tidak pantas), apapun statusnya sekarang, menjadi perusahaan yang lebih besar, lebih mapan dan dapat bekerja tanpa Anda (pantas). Dan setelah itu, … bangunlah bisnis lain lagi (menjadi tidak pantas lagi). demikian seterusnya dan seterusnya…
“Jangan pernah berharap pekerjaan Anda menjadi lebih mudah, berharaplah Anda yang menjadi lebih pintar” (Jim Rohn? /Brad Sugars?).
So, segera buat diri Anda tidak pantas lagi…!!!
Kejarlah Bintang….. !!!
See You At The Top,
Johny Rusly
Buku Agenda Standard
www.andatidaksendiri.com
Sumber: Mario Teguh, Brad Sugar
Selasa, Mei 13, 2008
JSON vs XML
Saya menggunakan dua parameter pembanding yaitu besar stream yang ditransmisikan dan response time. Untuk menganalisis kinerja keduanya saya gunakan tool buatan Nikhil Kotari yaitu Web Development Helper yang dapat di download dari situs pribadinya di Nikhil Kothari's Projects - Web Development Helper
Pertama saya buat sebuat object Employee dengan data EmpId, Name, Sex dan Title. object ini yang akan diserialisasi ke JSON dan XML sebagai return value WebService.
[code:c#]
namespace JSONSample
{
public class Employee
{
public string EmpId { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public char Sex { get; set; }
}
}
[/code]
Selanjutnya buat web service dengan dua method yang mengembalikan Employee dalam format JSON dan XML. Jangan lupa untuk menambahkan namespace System.Web.Script.Services dan class attribute [ScriptService]
[code:c#]
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.Script.Services;
namespace JSONSample
{
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "">http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public Employee GetEmployee(string EmpId)
{
var emp = new Employee();
emp.EmpId = EmpId;
emp.Name = "Ahmad Masykur";
emp.Sex = 'M';
emp.Title = "Analyst, Application Architecture";
return emp;
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Employee GetEmployeeJSON(string EmpId)
{
var emp = new Employee();
emp.EmpId = EmpId;
emp.Name = "Ahmad Masykur";
emp.Sex = 'M';
emp.Title = "Analyst, Application Architecture";
return emp;
}
}
}
[/code]
Berikutnya adalah buat kode javascript untuk memanggil memanggil kedua method pada WebService yang telah dibuat sebelumnya.
[code:js]
var displayElement1;
var displayElement2;
// Initializes global variables and session state.
function pageLoad()
{
displayElement1 = $get("ResultId1");
displayElement2 = $get("ResultId2");
}
function getEmployee() {
JSONSample.WebService1.GetEmployee("894683", OnSucceeded, OnFailed);
JSONSample.WebService1.GetEmployeeJSON("894683", OnSucceeded, OnFailed);
}
// Callback function invoked on successful
// completion of the page method.
function OnSucceeded(result, userContext, methodName)
{
if (methodName=="GetEmployee") { // xml
displayElement1.innerHTML = result.documentElement.selectSingleNode('//Name').text;
}
else { // json
displayElement2.innerHTML = result.Name;
}
}
// Callback function invoked on failure
// of the page method.
function OnFailed(error, userContext, methodName)
{
if(error !== null)
{
displayElement.innerHTML = "An error occurred: " +
error.get_message();
}
}
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
[/code]
Terakhir buat halaman ASP.NET AJAX yang akan meregister JavaScript dan WebService sehingga WebService dapat dipanggil melalui JavaScript oleh ASP.NET AJAX proxy service.
[code:html] <%@ Page Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.Page" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/clientscript.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="~/WebService1.asmx" />
</Services>
</asp:ScriptManager>
<input type="button" value="Invoke" onclick="getEmployee()" />
<div id="ResultId1"></div>
<div id="ResultId2"></div>
</div>
</form>
</body>
</html> [/code]
Dari hasil keluaran log dapat dilihat bahwa dengan data yang sama, format XML memerlukan 226 byte sedangkan JSON hanya 132 byte. Ini jauh lebih kecil (kurang dari setengah) dibandingkan XML. Dari sisi response time, pada invoke yang pertama XML membutuhkan waktu 0:0:3430 sedangkan JSON 0:0:3280 dan invoke berikutnya untuk XML 0:0:0150 sedangkan JSON 0:0:0000. Dari data ini membuktikan bahwa JSON memang lebih ringan dibandingkan XML baik dari sisi ukuran stream yang ditransmisikan lebih kecil maupun waktu proses di server juga lebih singkat.
source :http://www.masykur.web.id