MAGAZINE. IN DIT NUMMER O.A.:

Maat: px
Weergave met pagina beginnen:

Download "MAGAZINE. www.sdn.nl IN DIT NUMMER O.A.:"

Transcriptie

1 MAGAZINE SOFTWARE DEVELOPMENT NETWORK ISSN: IN DIT NUMMER O.A.: Advantage Database Server 11: A first Look < Onderhoudbare GUI tests met Coded UI < Getting testing done in the sprint < Nummer 115 december 2012 SDN Magazine verschijnt elk kwartaal en is een uitgave van Software Development Network 115

2

3 Colofon Uitgave: Software Development Network Twintigste jaargang No. 115 december 2012 Bestuur van SDN: Remi Caron, voorzitter Rob Suurland, penningmeester Marcel Meijer, secretaris Redactie: Marcel Meijer Aan dit magazine werd meegewerkt door: Roel Hans Bethlehem, Bob Swart, Maarten van Stam, Alexander Meijers, Remi Caron, Marcel Meijer en natuurlijk alle auteurs! Listings: Zie de website voor eventuele source files uit deze uitgave. Contact: Software Development Network Postbus 506, 7100 AM Winterswijk Tel. (085) Fax (085) Vormgeving en opmaak: Reclamebureau Bij Dageraad, Winterswijk Alle rechten voorbehouden. Niets uit deze uitgave mag worden overgenomen op welke wijze dan ook zonder voorafgaande schriftelijke toestemming van SDN. Tenzij anders vermeld zijn artikelen op persoonlijke titel geschreven en verwoorden zij dus niet noodzakelijkerwijs de mening van het bestuur en/of de redactie. Alle in dit magazine genoemde handelsmerken zijn het eigendom van hun respectievelijke eigenaren. Adverteerders CSC 2 Achmea 13 Compuware 18 Delta-N 27 Macaw 36 Beste SDN magazine lezer, voorwoord Tjonge, wat hebben we een hete herfst achter de rug zeg! Het was het release seizoen! Delphi kwam met een nieuwe versie, maar Microsoft had ook het één en ander te releasen. Op ons laatste SDN event stonden veel sessies in het teken van Windows 8. Toen was Windows 8 al RTM en beschikbaar via MSDN en Technet. De officiële release was uiteindelijk op 26 oktober. Tijdens deze keynote werd ook de Microsoft Surface gelanceerd. Deze veel geroemde ipad killer is vanaf heden beschikbaar, helaas is er nog geen verkooppunt in Nederland. Als je niet kunt wachten, dan heeft WP7.nl alle mogelijkheden op een rijtje gezet. Denk goed na wat je doet. Na de officiële release van Windows 8 werd ook Windows Phone 8 officieel gereleased. Enkele toestellen zijn in Nederland verkrijgbaar. Deze opvolger is van Windows Phone 7 belooft een gouden toekomst voor het Windows Phone platform van Microsoft. De SDK voor dit platform is nu ook beschikbaar, laat je uitdagen om de missing en geweldige apps te maken! Tijdens het //Build event van 30 oktober tot en met 2 november op de Campus van Microsoft waren er ook nog diverse zaken te melden. Zo werd er een nieuwe versie van de Windows Azure SDK gereleased, versie 1.8. Voor het Windows Azure platform waren er meerdere aankondigen, zoals het toevoegen van ios en Windows Phone 8 targets aan de Windows Azure Mobile Services. Maar ook de aankondiging dat er naast de Windows Azure Market een Windows Azure Store komt. Een hele interessante ontwikkeling voor ISV s en leveranciers van tools. Ander nieuwtje op het //Build event was, dat TFS Preview de preview status heeft verlaten en nu werkelijk productioneel is geworden. Het mooiste nog, voor teams van 5 personen is gratis ongeacht het aantal projecten. Als je nog niet de mogelijkheid hebt gehad om TFS on Windows Azure te evalueren, dan zou ik dat nu zeker doen. Kortom op de koude winteravonden die nu gaan komen, is er genoeg te doen om je niet te vervelen. Wat hebben we toch een mooi vak! Dit magazine bevat weer een mooie selectie aan artikelen van Cary Jensen, Clemens Reijnen, Sander Hoogendoorn, Michiel van Otegem, Lammert Vinke en Marcel Meijer. We wensen jullie heel veel leesplezier! Met vriendelijke groet, Marcel Meijer Adverteren? Informatie over adverteren en de advertentietarieven kunt u vinden op onder de rubriek Magazine. magazine voor software development 3

4 Agenda 2012/2013 Inhoud SDC 3/4 december 2012 Papendal Microsoft TechDays Nederland 7/8 maart 2013 Den Haag SDE 1 25 maart 2013 SDE 2 7 juni 2013 TechEd Europe juni 2013 Amsterdam SDE 3 20 september 2013 PDC of toch weer een //Build? oktober Voorwoord Marcel Meijer 04 Inhoudsopgave 04 Agenda 05 Advantage Database Server 11: A first Look Cary Jensen 14 Using 32 bit (Legacy) DLL on Windows Azure Marcel Meijer 17 The Waterfall Dentist Anti-Pattern Sander Hoogendoorn 19 Onderhoudbare GUI tests met Coded UI Lammert Vinke 22 JSON with Delphi Part 2 Cary Jensen 26 Mijn hart zingt voor Visual Studio 2012 Michiel van Otegem 29 Windows Azure Portal Updates Marcel Meijer 30 Getting testing done in the sprint Clemens Reijnen SDC 25/26 november 2013

5 DELPHI Cary Jensen Advantage Database Server 11: A First Look The Advantage Database Server is a high-performance, low maintenance database server that has earned the affection of small-to-medium sized businesses and vertical market developers. It combines speed and high-end features with an ease-of-use that is welcome but unexpected. And now, with the release of Advantage Database Server 11, a whole new world of features and enhancements make Advantage even more powerful and easier to use and manage. This article is designed to introduce you to the many exciting new features introduced in Advantage 11. It begins by looking at the Advantage Web Platform, a RESTful service that makes your data available from anywhere, anytime. Next, we will look at the new online maintenance features, improvements to replication, and the many enhancements to Advantage's support for SQL, the structured query language. Later in this article, you will learn about the new and enhanced connectivity options, general performance updates, and improved error reporting. Advantage Web Platform One of the most anticipated updates in Advantage 11 is the new Advantage Web Platform. The Advantage Web Platform is a RESTful Web service that provides you with the ability to interact with your Advantage databases over the World Wide Web. There are two distinct capabilities that the Advantage Web Platform enables. The first is the ability to read, update, and delete data from your Advantage data dictionaries using a RESTful interface. This feature is implemented through the OData protocol, an industry standard for accessing data using a REST interface. This interface also provides you with access to metadata, stored procedure and query execution, as well as offline storage. The second capability is that it permits you to manage and query your databases from a Web browser, permitting you to access your data from anywhere, using any browser, even from a smart phone. When you install the Advantage Web Platform, you are actually installing a lightweight version of Apache Web server, and it is through this Web server that the Advantage Web Platform provides access to your data. This service is configured by default to listen to HTTP (hypertext transfer protocol) requests on port 6272, and HTTPS (secure HTTP) on port These port numbers, and other aspects of the Apache Web service can be configured. Please see the Advantage help details. The following sections describe the two principle features provided by the Advantage Web Platform. Data Anywhere Using the Advantage Web Platform and OData OData is a standards-based protocol for accessing data using a RESTful Web interface. REST, which stands for REpresentation State Transfer, is a description of the basic request and response interaction that drives the World Wide Web. A RESTful Web service is one that you can interact with using basic HTTP commands over the Internet. A significant feature of REST is that you call the methods of your Web service using the values that you pass in your URI (uniform resource identifier), and sometimes pass additional data in the HTTP message body. These methods, when they return a value, return a string. Using the OData protocol, this string will either be in AtomPub (Atom Publishing Protocol), an XML-based format, or JSON (JavaScript Object Notation), and you get to choose which format you want. Because OData uses REST, any client that can communicate across the Internet, and which can issue HTTP requests, can interact with the Advantage Web Platform to retrieve, update, and manage data in your database. Importantly, because OData relies on HTTP, the client from which the RESTful Web service is accessed does not need the Advantage client API installed locally. OData can only be used to interact with Advantage data dictionaries that have been configured for access through the Advantage Web Platform, and only through the Advantage Database Server (the Advantage Web Platform cannot be used with the Advantage Local Server). For information on configuring a database for access through the Advantage Web Platform, please see the Advantage help. Fortunately, nearly every modern client development tool has the capability to communicate using HTTP, including.net, JavaScript and jquery, Java, C++, Objective-C, and Delphi, to name just a few. This means that the Advantage Web Platform provides access to your Advantage data from almost any imaginable platform, including Windows, Linux, the Mac, Unix, mobile devices, ios and Android tablets, and Web pages. OData consists of a sophisticated collection of standards and capabilities. For more information, including examples of how to use OData to communicate to the Advantage Web Platform, see the Advantage help. For more information on OData, visit The Advantage Web Administrator The Advantage Web Administrator is a Web application that gets installed along side of the Advantage Web Platform. This Web application provides you with a wide range of options, including the ability to view information about connected users, active queries, configuration parameters, communications statistics, and more. Based on how you configure the Advantage Web Administrator, you may also be able to run ad-hoc queries, interact with multiple data dictionaries, and even change configuration parameters (though many magazine voor software development 5

6 DELPHI of these configuration changes made within the Advantage Web Administrator require a subsequent re-start of the Advantage Database Server service). To provide an entry point for communication to Advantage through the Advantage Web Administrator, a new concept, the root dictionary, has been introduced. Each server can have at most one root dictionary, and it is the dictionary to which the Advantage Web Administrator initially connects. You configure the root dictionary for a particular server using the Advantage Configuration Utility. The Advantage Configuration Utility, showing the new Root Dictionary file location, is shown in Figure 1. adsweb\apache\conf directory, as well as set the JavaScript rootdb variable declaration in the configoptions.js file, located in C:\Program Files\Advantage 11.0\adsweb\apache\htdocs\adsconfig. After changing the adsweb.conf file, you must restart the Advantage Web Platform service. For more information on configuring the Advantage Web Administrator, please see the Advantage help. The Advantage Web Administrator is shown in Figure 2, where the contents of the Error logs are displayed. Online Maintenance Online maintenance is one of the more popular updates introduced in Advantage 11. Online maintenance lets you pack, reindex, and alter the tables of your database without having to first obtain an exclusive lock on those tables. This feature permits you to make significant changes to your tables without having to limit your users' access to their data. There are three aspects to online maintenance. The first is how Advantage treats these maintenance operations while users are actively using your database. The second concerns a collection of new system stored procedures introduced in Advantage 11 that permit these operations to be initiated programmatically. Finally, each of the online maintenance functions is also associated with a notification that will trigger when the operation is complete. How Online Maintenance Is Applied Normally, pack, reindex, and alter operations require that you have exclusive access to the table on which you are performing the operation. This often means that these operations have to be performed only after taking the database offline, which, in a production environment, can be difficult, or at least inconvenient. Fig. 1: The Advantage Configuration Utility showing the new Root Data Dictionary Path option You can select one of your existing data dictionaries to serve as your root dictionary. Alternatively, you can create a new, empty data dictionary, and use that as your root dictionary. This second option has the benefit of providing you with greater control over the data dictionary features that you want to expose using the Advantage Web Administrator. In addition to defining a root dictionary using the Advantage Configuration Utility, there are several additional configurations that you must perform. You must specify a location for the root dictionary in the adsweb.conf file, located in the C:\Program Files\Advantage 11.0\ Fig. 2: The Advantage Web Administrator When performing online maintenance, Advantage begins by creating a copy of the original table, and duplicating both the data and its indexes to the copy. It then uses this copy to apply the requested change. For pack and reindex online maintenance, once any pending transactions have been applied, and all users have released their locks, the new table becomes available. Users will begin using that updated table as soon as they make a request that results in a refresh of their cursor, such as navigating to a new record or setting a filter. Because an online alter physically changes the structure of the table (or its indexes), users must actually close and reopen that table before the new structure becomes available. Online maintenance is only supported using the Advantage Database Server. You cannot perform online maintenance from the Advantage Local Server. Online Maintenance System Stored Procedures Advantage 11 introduces three new system stored procedures associated with online maintenance. These are sp_packtableonline, sp_packalltablesonline, and sp_reindexonline, and they permit you to perform online maintenance programmatically from your custom applications. Calls to these stored procedures return once the operation has been completed on the copy of the table. However, individual users may continue to use the old version of the table until they reposition their cursor. As a result, a return from sp_packtableonline, sp_packall TablesOnline, or sp_reindexonline does not signal that all users are current, only that all users are in a position to use the new version of the table. There is no special system stored procedure associated with online alter operations. Instead, you execute a special version of an ALTER TABLE query, ALTER ONLINE TABLE. Other than the ONLINE 6 MAGAZINE

7 DELPHI keyword, the syntax of an ALTER ONLINE TABLE query is the same as for a normal ALTER TABLE statement. Online Maintenance Notifications Notifications, which were introduced in Advantage 9, provide a mechanism by which a client application can request to be informed by Advantage when a particular operation has taken place. For example, a client may ask to be notified when new records are inserted into a particular table, or when updates are made to a table's contents. There are two parts to a notification. First, a server must issue a specific notification through the execution of the sp_signalevent stored procedure. Second, a client must subscribe to a notification and then wait for it. A client subscribes to a notification by calling sp_createevent, and waits for the notification using the sp_waitfor Event stored procedure. Since the sp_waitforevent stored procedure call blocks until the notification is issued, this stored procedure is often called from a worker thread on the client. In the case of online maintenance operations, Advantage always issues a notification when the online operation has reached a stage where users can begin transitioning to the updated table. In the case of online packing or reindexing, a single notification is issued once users can switch to the new table. In the case of an online alter table operation, Advantage will issue a notification once users can be transitioned to the new table. In addition, Advantage will continue to issue notifications every minute until all users have closed their connection to the old version of the table. If you want your client applications to be informed once an online maintenance operation has reached the point where a transition to the new table is possible, your client applications must subscribe to, and listen for, these notifications. A client subscribes to an online maintenance notification by calling the sp_createevent system stored procedure, passing in the first parameter, an event name using a specific pattern. The event name prefix begins with two underscore characters, following by OP, OR, or OA, which corresponds to online pack, online reindex, and online alter, respectively. The middle section of the event name is FinalStage, and the suffix is a single underscore character followed by the name of the table upon which the maintenance was performed. As a result, if you want to subscribe to a notification about the packing of a table named archive, you will use the following string: OPFinalStage_archive By comparison, if you want to subscribe to a notification about the alter table operation on a table named customers, you will use the following string: OAFinalStage_customers To learn more about notifications in general, and online maintenance notifications in particular, please see the Advantage help. Replication Replication, which was first introduced in Advantage 8, provides a mechanism for duplicating changes made to one database to one or more databases. For example, replication can be used to copy changes made at regional data centers to a centralized data center, where the combined data can be analyzed and reported. Similarly, replication can be implemented in a bi-directional fashion, permitting two databases to share changes made to the individual databases. There are a number of requirements that must be met before you can implement replication. First of all, replication requires that the source database and the target database both use data dictionaries. Second, both the source data dictionary and the target data dictionary must be accessed by the Advantage Database Server (ADS). Replication cannot be implemented using Advantage Local Server. Finally, an additional replication license must be installed on the source server, and sometimes the target server as well, depending on how you configure your replication. Replication is an extremely valuable mechanism for those developers who need it. Fortunately, there are several significant capabilities added to Advantage's replication introduced in Advantage 11. These include replication to older Advantage servers, additional system stored procedures to examine the replication queue, and the ability to more easily edit the replication queue. Each of these capabilities is described in the following sections. Replication to Older Advantage Servers A significant update, one that I know will delight many developers, is the ability to replicate between the new Advantage 11 server and those servers running older versions of Advantage. In Advantage 11, replication to Advantage 9 and later servers is supported. In all previous implementations of replication, an older Advantage server could replicate to a new server, but a newer server could not replicate to an older one. What makes this update so valuable is that it permits an organization to upgrade one or more of their servers to take advantage of the many new features in Advantage 11 without having to upgrade every server involved in replication. For example, a company may want to upgrade the server at their main headquarters so that they can use the Advantage Web Platform, the new SQL capabilities, and online maintenance. If that server is involved in replication with satellite offices, those offices can continue to use their Advantage 10 servers for the meantime, upgrading at a later date when it is convenient. Replicating to an older server from Advantage 11 requires some setup. See the Advantage help for a detailed description of these steps. Viewing the Replication Queue The replication queue, which is a table in your data dictionary that you designate to hold the records that will be replicated, now displays its data in a more meaningful order. Previously, the replication queue records were displayed in the natural order. Due to efficiencies in how Advantage reuses records when they are deleted, which happens to records in the replication queue once a record has been replicated, the natural order often fails to preserve the order in which the records will actually be replicated. In Advantage 11, the order of records in the replication queue now more accurately reflect the order in which the records will be replicated. In addition, two new stored procedures assist in your work with the replication queue. You can call the system stored procedure sp_getreplicationentrydetails to retrieve detailed information about a record in the replication queue, including the text of the update, insert, delete, or merge statement that Advantage has generated to perform the replication on the target database. The sp_testreplicationconnection permits you to test whether an attempt to replicate to a replication subscription will be successful. This stored procedure is useful since it permits you to test your subscription configuration without actually having to initiate the replication. magazine voor software development 7

8 DELPHI Editing the Replication Queue Under normal conditions, replication works fine so long as your servers involved in the replication can maintain their connection, relying on the replication queue for temporary storage for those periods of time when a connection is not possible. However, sometimes anomalies in the data of a record or collection of records prevent the replication from being successful. When this happens, it is necessary to manually delete one or more records from the replication queue in order to allow the replication to proceed normally. Advantage 11 introduces a new system stored procedure that helps in this process. You can now call sp_deletereplicationentry to remove a problem record from the replication queue. Importantly, if this record was involved in a transaction, sp_deletereplicationentry deletes all records associated with that transaction from the replication queue, thereby maintaining the integrity of the data. technique we can write this same stored procedure using the syntax shown in Figure 3. SQL Enhancements Some of my favorite enhancements introduced in Advantage 11 are associated with Advantage SQL, Advantage's implementation of the structured query language. Among these changes are improvements in parameter access in stored procedures and triggers, an option for variable output parameters from SQL stored procedures, new SQL functions, new system variables, a modulo operator, several new SQL literals, and the SQL command line utility. Each of these features are described in the following sections. Improved Parameter Access in SQL Stored Procedures and Triggers In previous versions of Advantage, it was your responsibility to specifically read your input parameters from the temporary, virtual input table. This could be done using a cursor, which you needed to open, fetch, and close, or by querying the input table directly (this table's name is input preceded by two underscore characters). For example, consider the following simple SQL stored procedure: Fig. 3: Input parameters of stored procedures can be accessed using the underscore character This technique can also be used in triggers. Instead of having to use a cursor or a SELECT statement to retrieve the fields of the new table, you can use this same technique. Simply prefix the field names of the new table with a single underscore character to read the values directly. Variable SQL Stored Procedure Output Previously, you had to explicitly declare each of the output parameters of your SQL stored procedure, using the OUTPUT keyword, as seen in the preceding two queries. Furthermore, the output of your SQL stored procedures was necessarily fixed, in terms of the number of fields in the result table. CREATE PROCEDURE GetCustomer ( CustomerID Integer, FirstName Char( 18 ) OUTPUT, LastName Char( 25 ) OUTPUT, Address Char( 50 ) OUTPUT, City Char( 40 ) OUTPUT, State Char( 25 ) OUTPUT) BEGIN CURSOR as SELECT CustomerID FROM input; TRY INSERT INTO output SELECT [First Name], [Last Name], Address, City, State FROM Customer WHERE [Customer ID] FINALLY END; END; In Advantage 11, you can specify that the output is variable, permitting you to omit the output parameters altogether. When you do this, the number of fields produced by your stored procedure execution depends on the number of fields in the last SELECT statement in your stored procedure. This can be seen in Figure 4, which includes a stored procedure that supports variable output parameters. There are a total of four statements associated with the retrieval of the input parameters using this technique, which involves a cursor. And yes, in this case, we could have used a SELECT CustomerID FROM input statement instead (one statement instead of four), but the cursor approach would have been less verbose if we had five or more input parameters. Advantage 11 introduces a new option, which requires no extra lines of code. All you need to do is to reference the name of the input parameter, prefixed by a single underscore character. Using this Fig. 4: Stored procedures that return result sets can return a variable number of columns SQL Command Line Utility Another highly anticipated addition to Advantage's support for SQL is the new SQL command-line utility. The SQL Command Line Utility 8 MAGAZINE

9 DELPHI provides two distinct capabilities. First, it can act as a command line window, similar to the Windows command prompt, from which you can connect to a database and then execute ad hoc queries. In this mode you are presented with a prompt from which you can enter queries, as well as a small set of interactive commands that permit you to connect to databases, list queries you previously executed, flush the cache of previously executed queries, and exit this interactive mode. The second capability that it provides is the ability to create batch operations that execute single SQL statements, or execute SQL scripts that perform multiple operations. One important application for this usage is to create regularly scheduled batch operations, such as initiating backups or performing maintenance operations. returns true if a string ends with a particular substring. Finally, SubstringOf returns true if the specified substring is contained in the specified string. The fourth function is LastRowID. This interesting function returns the unique row id value for the most recently added row in a table. You can use this function to identify the most recently added record to a table, without knowing any of the particulars of the table's structure, such as its primary key, or without having to rely on auto increment fields, which introduce a whole slew of problems on their own. The new SQL engine functions are listed in Table 1. The SQL Command Line Utility is installed with many of the Advantage packages, including the Advantage Data Architect. To run the SQL Command Line in interactive mode, run asqlcmd.exe from a command prompt, or run it from the Window Explorer. Figure 5 shows the SQL Command Line Utility running in interactive mode. Table 1: The New SQL Engine Functions The Modulo Operator Advantage SQL supports a new operator, the modulo operator (%). The modulo is the remainder following a division operation on two numbers. For example, if you divide 5 by 4, the remainder, or modulo, is 1. If you divide 6 by 2, the modulo is 0. Figure 6 shows the use of the modulo operator in a query and the result that it produces. Fig. 5: The SQL Command Line Utility in interactive mode In batch mode, you will execute asqlcmd.exe from a batch file, or by scheduling a task using the Windows Task Scheduler. When run in this mode, you will pass command line parameters to the SQL Command Line Utility to provide it with connection string information, or direct it to read from one or more files where it will find connection information, queries to execute, or SQL scripts. Here is a typical scenario of how the SQL Command Line Utility might be used. Imagine that your database is part of an interactive shopping Web site. During the day users might browse your inventory, and create virtual shopping carts, which are records in your database that identify the items users have selected. While many of your customers will continue to checkout, after which you can delete the contents of the temporary shopping carts, moving those items to an invoice table, other users will lose interest and leave your site without checking out. Using the Windows Task Scheduler, you might run a batch file late each evening. This batch file could invoke the SQL Command Line Utility, instructing it to run a SQL script that looks for shopping carts that never made it to checkout, and which have remained unused for more than four hours or so. Those shopping carts could be considered abandoned, and the SQL script could delete those unnecessary records from their tables. Fig. 6: A query using the modulo operator The modulo operator performs essentially the same task as the MOD() SQL engine function. New System Variables System variables are symbols that are automatically available within your SQL queries and SQL scripts. Unlike the custom variables that you must declare in your SQL scripts, system variables are predefined, and can be used in expressions simply by referencing them. Five new system variables are introduced in Advantage 11, and all of them are connection-level system variables. Connection-level system variables are prefixed by two colons, the letters conn, followed by a period and the variable identifier. An example of one of these new connection-level system variables is ::conn.osuserloginname. New SQL Engine Functions SQL engine functions are subroutines that you can use in your SQL queries, whether they are used in stored procedures, SQL scripts, user defined functions, or triggers. The SQL engine includes four new functions. Three of these provide information about the contents of strings. StartsWith returns True if a specified string begins with a specified substring. Likewise, EndsWith Table 2: The New System Variables magazine voor software development 9

10 DELPHI Table 2 contains a list of the five new system variables, along with a brief description of their associated values. Figure 7 shows a query that includes the five new system variables, as well as the resulting output. This particular query was executed from a virtual machine. user account with specific privileges. For example, sp_packtableonline is only available if executed from a user account having the DB:Admin role or appropriate effective permissions. Table 3: New System Stored Procedures Fig. 7: A query using the new system variables New SQL Literals Four new SQL literals have been introduced for Advantage SQL. Three of these literals can be used to represent Timestamp, Date, and Time values in queries or SQL scripts, and supplement existing literals for those types. For example, in addition to previously available literals for Timestamp values, you can now use a literal with the following format: datetime'yyyy-mm-dd hh:mm:ss' For example, the following query will select all records where the From- Timestamp field is less than 3:00am on January 1, 2012: SELECT * FROM [Accounts] WHERE [FromTimestamp] < datetime' :00:00'; Date and Time literals can now also be represented by time'hh:mm:ss' and date'yyyy-mm-dd', respectively. The fourth new literal type represents binary data. You define a binary literal by preceding a string with the letter x (upper or lower case). The string must contain a hexadecimal value consisting of 0-9 and a-f and A-F. Spaces can be used for readability, but are not required. There is no limit to the number of characters that can appear in the string. The following two queries are equivalent, and both test the Key binary field for a very small binary value: SELECT * FROM Products WHERE Key = x'29 a2 f3 0e ee'; SELECT * FROM Products WHERE Key = X'29a2f30e1676ee'; New System Stored Procedures System stored procedures are built-in routines that you can execute using the SQL EXECUTE PROCEDURE syntax. These stored procedures are typically used to control or interrogate your databases, permitting you to add intelligence to the various operations that you need to perform. In discussing some of the new features introduced in Advantage 11, I have mentioned in passing new system stored procedures that you can use. Table 3 contains a list of all of the new system stored procedures that are introduced in Advantage 11. Many of these stored procedures, like many of those introduced in previous versions of Advantage, require that they be executed from a Other SQL Enhancements In addition to the SQL features mentioned above, there are several other enhancements to Advantage SQL. For one, there is now support for SQL scripts larger than 32 K in size for SQL-based views, triggers, stored procedures, and user defined functions. Advantage now also supports transaction logs larger than 4 GB in size, as well as SQL intermediate files greater than 4GB (in both 32- bit and 64-bit environments). While few users will be affected by these changes, those users who do need such large operations will no doubt welcome the removal of these limitations. Connection Enhancements There are a number of enhancements found in Advantage 11 that are associated with connections. These are discussed in the following sections. Connection Pooling Connections made through the Advantage Client Engine (ACE), which is used by most of the Advantage connectivity options, now support connection pooling. When pooling is enabled, the Advantage Client Engine will not automatically close a connection that has been returned from a client application. Instead, the connection may be kept active for a period of time, making it available if another client requests a connection. Connection pooling is particularly useful in situations where many different connections are required for short durations. This scenario is particularly common in Internet applications. Making and dropping connections to a database tend to be expensive operations, and connection pooling goes a long way to eliminating a significant bottleneck. Connection pooling is enabled in the Advantage Client Engine through the new Pooling connection string parameters. When Pooling is set to True, connection pooling is enabled. The default is False. Additional connection string options that apply to connection pooling include Connection Timeout (how many seconds a client will be permitted to wait for a connection), Connection LifeTime (how long a connection in the pool will remain open), Max Pool Size (the maximum number of connections to maintain in the connection pool), and Unused Timeout (how long an unused connection in the pool will exist before being closed). Other Connection String Options In addition to connection pooling, the Advantage Client Engine introduces a number of additional connection string options. All of these options are supported by the new AdsConnection101 API. 10 MAGAZINE

11 DELPHI These connection string parameters include Decimals, ShowDeleted, and DateFormat. Web Versus Traditional Connections In previous versions of Advantage, all connections were treated similarly, in that they all consumed one of the available licensed connections. For example, a connection from an Internet-based application consumed a connection that could have also been used by a traditional client application (though in many cases, there were additional licensing issues that either limited or prohibited the use of Advantage from an Internet-based application). With Advantage 11, you can specifically designate how many connections are allocated for Advantage Web Platform versus traditional connections. This can be seen in Figure 8, where the Maximum Web Platform Users option permits you to limit how many of the connections are consumed by Web Platform operations. its OData support, permits access to your data from almost any development environment. While this is the case, Advantage's language and environment specific access mechanisms tend to provide direct support that greatly exceeds the "lowest common denominator" approach offered by open specifications such as OData. As a result, it is significant that Advantage has introduced additional connectivity options in Advantage 11. These connectivity options can be divided into two groups: new connectivity options and enhanced connectivity options. These are discussed separately in the following sections. New Connectivity Options In addition to the connectivity options enabled by the Advantage Web Platform's support for OData, Advantage 11 introduces three new developer libraries. Together, these provide access for developers using Ruby, Python, and PHP. There are actually two APIs (application programming interfaces) introduced in Advantage 11 intended for Ruby developers. The first is the Advantage Ruby API, and it provides Ruby developers access to the Advantage Client Engine API. The second is a package for Ruby developers that uses the Advantage Ruby API, and it implements ActiveRecord, an object-relational mapping (ORM) API commonly associated with Ruby on Rails. The new Advantage Python Driver gives Python developers access to Advantage. There is also now an Advantage Django Backend, a package that uses the Advantage Python Driver to enable Advantage access from Django, a Python Web framework that supports RAD (rapid application development) for Web sites. Advantage 11 also introduces a new PHP driver. While Advantage has supported PHP for many years with its Advantage PHP Driver, a new driver, the Advantage PDO (PHP Data Objects), is also available, increasing Advantage's support for PHP development. Fig. 8: The new Web Platform Users option reports the number of available Web platform connections Even if you do not configure a Web connection (leaving Web Platform Users set to zero), Advantage allows one connection by the Advantage Web Platform for connecting the Advantage Web Administrator for configuration purposes. If you are also using the Advantage Web Platform for its OData connectivity, you will definitely want to set Maximum Web Platform Users to a positive integer, to accommodate the additional connections through the RESTful service. One thing to keep in mind when configuring your Maximum Web Platform Users is that clients that connect through the Advantage Web Platform using OData do not share connections from the connection pool in a manner typical of other Internet-based architectures. Instead, these users are treated as normal clients, and each individual connection through OData consumes one user license, and that license remains in use by that connection until that user disconnects, or the connection times out. In other words, you should set Maximum Web Platform Users to the maximum number of OData clients that your system is designed to support. Developer-Related Enhancements While Advantage has always been notable for its many connectivity options, this release of Advantage has seen a significant increase in these options. As discussed earlier, the Advantage Web Platform, and Enhanced Connectivity Options Some of Advantage's existing connectivity options have been updated with the release of Advantage 11. For example, The Advantage RDD (replaceable database driver) for Visual Objects now supports parameters in the AdsServerObject class. In addition, a 64-bit version of the Advantage TDataSet for Lazarus is now available. Lazarus is a free IDE (interactive development environment) for the Free Pascal Compiler. The Advantage.NET Data Provider also received an upgrade. The templates for creating Advantage AEPs (Advantage Extended Procedures) and triggers using C# for.net and Visual Basic for.net have been improved. But most of the enhanced data connectivity features can be found in Advantage's support for Delphi. Advantage 11 provides support for Delphi XE2, both 32-bit and 64-bit Windows compilation. This means that you can now build 64-bit AEPs and triggers for 64-bit Advantage using Delphi. Another improvement introduced recently in Delphi, delayed loading of DLLs, has also now been implemented in the Advantage Delphi Components library. This feature allows the Advantage components to delay loading of the ACE DLLs until they are first needed, as opposed to being loaded statically when your Delphi application is initializing. Delayed static loading of DLLs was introduced in Delphi ADS 11 introduced a number of new connection string options, which magazine voor software development 11

12 DELPHI are represented by the AdsConnection101 interface. These are supported in the TAdsConnection component found in the Advantage Delphi Components package, specifically from the ExtraConnectionString property. The enhanced TAdsConnection component also introduces a new DateFormat property, which permits your application to define the default format for dates on a per connection basis. Advantage has also improved its support for the TDataSet Locate method. This method now makes more efficient use of available indexes, improving the performance of Locate invocations. Additional Improvements The updates, additions, and enhancements that I've mentioned up until now have applied to specific areas of developer concern. But there are additional improvements found in Advantage 11 that I am categorizing as miscellaneous. One notable update that has been found in all of the preceding releases of Advantage is once again present in Advantage 11, and it is related to performance. These improvements are scattered about the product, and will effect your applications depending on which of Advantage's features you use. But one of these enhancements, in particular, will effect nearly all Advantage installations. Advantage 11 has updated expression parsing, and this provides a significant improvement in the speed of opening tables and indexes. And on some platforms, such as Windows Server 2008 R2 and those Advantage installations under significant concurrent load, the performance improvement is quite large. Another area of general improvement is related to error messages. A number of error messages have been updated, providing additional information not previously available. For example, some error messages that previously reported a problem with a field now actually include the name of the field where the problem has occurred, a welcome update that will be appreciated by developers. The detection of corruption in memo fields in Advantage 11 has also improved. And, when a problem is detected, an appropriate exception is raised, alerting you to the issue and helping you to resolve the problem by packing the table, or taking some similar preventative measure. Another error message-related update is revealed by the new option for database restore operations to suppress warnings associated with automatic table creation. Many developers do not consider these to be actionable errors. Warnings that were previously created when an auto-create table was being created can now be suppressed. Advantage 11 has also introduced a number of enhancements related to security and encryption. For example, the AdsBackup utility now supports FIPS (Federal Information Processing Standard) and SSL (secure socket layout) options, as do many of the Advantage client libraries. Note that support for FIPS 140-2, a government standard that defines security standards for encryption support, requires the FIPS Encryption Security Option Add-on, which is a separate license available from Advantage. Finally, there are two new roles that can be applied to users and groups. These are administrative in nature. SERVER:Admin is a role that provides the users to which it is applied the rights to a number of administrative tasks associated with the new root dictionary when connected with the Advantage Web Administrator. Likewise, SERVER:Monitor is a role that provides its users with enhancement information gathering, again when connected to the root dictionary. See "What's New in Advantage 11" in the Advantage help for a complete list of new and enhanced features found in Advantage 11. Summary Similar to previous releases of Advantage, Advantage 11 comes filled with a wealth of new features that continue the tradition of high performance and ease-of-use. Some of these features, such as the support for online maintenance and the Advantage Web Platform, will fundamentally change the way that some users manage and access their data. Others, such as the default fetching of stored procedure parameters and variable output parameters, will dramatically improve developer productivity. These features, when taken together, make Advantage 11 yet another in a string of must have upgrades. Cary Jensen Cary Jensen is the bestselling author of more than 20 books on software development, including Delphi in Depth: ClientDataSets, and winner of the 2002 and 2003 Delphi Informant Reader's Choice Award for Best Training. A frequent speaker at conferences, workshops, and seminars throughout much of the world, he is widely regarded for his self-effacing humor and practical approaches to complex issues. Cary's company Web site is at: JensenDataSystems.com. Cary has a Ph.D. from Rice University in Human Factors Psychology, specializing in human-computer interaction. TIP: Delphi XE3 Starter Essentials Begin september is het Delphi XE3 Starter Essentials ebook uitgekomen van Bob Swart, dat gratis te downloaden is voor alle geregistreerde Delphi XE3 Starter editie gebruikers. SDN leden kunnen dit boek nu ook gratis downloaden van met als password van de ZIP file het woord "Brandevoort" (de naam van de wijk in Helmond waar de auteur woonachtig is). Het betreft de eerste van een verzameling elektronische cursusboeken over Delphi XE3 die de komende maanden zullen verschiijnen, zie voor meer details. Windows Azure SDK 1.8 for.net is uit. De SDK is er voor Visual Studio 2010 en Visual Studio Je kunt hem installeren via de Microsoft Web Platform Installer. Als je in de zoekbox Windows Azure typt, dan vind je de nodige install spullen. 12 MAGAZINE

13

14 CLOUD Marcel Meijer Using 32 bit (Legacy) DLL on Windows Azure Op Windows Azure is (bijna) alles mogelijk. Zo ben je niet beperkt tot alleen applicaties op basis van.net. Maar ook Java, PHP, NodeJS en nog veel meer talen en taaltjes zijn heel goed bruikbaar op het Windows Azure platform, Windows Azure Websites en Windows Azure Virtual Machine. Windows Azure is in de basis een 64 bits Windows 2008 server park. Maar ook dan ben je niet beperkt tot het gebruik van alleen 64 bits programma s of dll s. Dit is erg prettig, want zo hoef je legacy software niet perse te verherbouwen. Of deze legacy nu geschreven is een Microsoft taal of anders maakt dan ook weer niet zoveel uit. Zo hebben wij voor een klant een Windows Azure Proof of Concept uitgevoerd, waarbij we te maken hadden met een 32 bits C++ dll met een soort memory leak. Het resultaat moest wel in de Cloud kunnen draaien en dan ook nog eens netjes schaalbaar zijn. return result; Door het gebruik van de Mutex moet iedere aanroep wachten tot de vorige aanroep klaar is. Dat is vervelend als je een behoorlijke load verwacht. Maar we gaan het op Windows Azure gaan hosten. Daar kunnen we mooi schalen en op deze manier de load aan. Blijft nog wel het 32 bits probleem. Hiervoor zijn 2 oplossingen. 1. We kunnen de DLL hosten in een 32 bits Console applicatie. 2. We kunnen de app pool van IIS in 32 bits mode zetten. Laten we beide eens bekijken. Oplossing 1: Het hosten van de DLL in een 32 bits Console applicatie. We maken een Console applicatie en geven bij de Build opties aan dat het Platform target x86 is. In de main van deze Console applicatie zetten we dan deze code. Hoe hebben we dat aangepakt? Laten we eerst eens kijken naar de C++ dll. Zoals gezegd dit component heeft een soort memory leak. Vooraf nog even de dll was ooit bedoeld en gebruikt in een stand alone desktop applicaties. De dll is niet echt bedoeld om in een gedistribueerde omgeving te werken. Als het component door 2 websites gelijktijdig aangeroepen werd, dan werd het resultaat van beide berekeningen vermengd met elkaar. De dll heeft een stukje shared memory, dat niet per proces uniek is en daardoor vindt de vermenging plaats. In.NET is dit relatief simpel op te lossen. Door gebruik te maken van een Mutex. public int Calculate32Mutex() int result = 0; mutex.waitone(); try result = Calculate32(); // calls the actual 32bit dll function finally mutex.releasemutex(); static void Main(string[] args) Uri address = new Uri("net.pipe://localhost/Calculator- Service"); NetNamedPipeBinding binding = new NetNamedPipeBinding(); binding.receivetimeout = TimeSpan.MaxValue; using (ServiceHost host = new ServiceHost(typeof(CalculatorDll))) var ff = host.addserviceendpoint(typeof(icalcservice), binding, address); ServiceMetadataBehavior metadata = new ServiceMetadataBehavior(); host.description.behaviors.add(metadata); host.description.behaviors.oftype<servicedebugbehavior>().first().includeexceptiondetailinfaults = true; Binding mexbinding = MetadataExchangeBindings.CreateMexNamedPipe- Binding(); Uri mexaddress = 14 MAGAZINE

15 CLOUD new Uri("net.pipe://localhost/CalculatorService/Mex"); host.addserviceendpoint(typeof(imetadataexchange), mexbinding, mexaddress); host.open(); Console.WriteLine("The receiver is ready"); Console.ReadLine(); CalcServiceClient client; client = (CalcServiceClient)Application["CalcServiceClient"]; if (client == null client.state!= System.ServiceModel.CommunicationState.Opened) client = GetCalcServiceClient(); Application["CalcServiceClient"] = client; Met behulp van een named net pipe wordt de service beschikbaar. De methode op deze service bevat dan een call naar de functie in de 32 bits dll. [DllImport("Win32Project1.dll", SetLastError = true)] public static extern Int32 Calculate(Int32 delay); public int RekenDllExample() return Calculate(2000); Om dit geheel te kunnen schalen heb ik er voor gekozen om deze achter een normale WCF service te hangen. Als je hem rechtstreeks in de Website wil gebruiken, dan kan dat natuurlijk ook. Maar dan wordt het schalen erg beperkt. Op de WCF service moet dan een koppeling met deze Named Net pipe gemaakt worden. Het handigst is dat te doen in de Global.asax en wel in de Application_BeginRequest methode. Daar heb ik twee methodes: een om de DllHost te starten en een om de koppeling te maken. string dllhostpath private const int ClientInitTimeOut = 20; // in seconds protected void Application_BeginRequest(object sender, EventArgs e) // Make sure that our dll host is running EnsureDllHostRunning(); // Make sure the client is connected EnsureCalcServiceClientConnected(); private void EnsureDllHostRunning() Process[] p = Process.GetProcessesByName( Path.GetFileNameWithoutExtension(dllHostPath)); if (p.length == 0) Application["CalcServiceClient"] = null; ProcessStartInfo psi = new ProcessStartInfo(Path.Combine( AppDomain.CurrentDomain.BaseDirectory, dllhostpath).tostring()); Process dllhost = Process.Start(psi); private void EnsureCalcServiceClientConnected() De GetCalcServiceClient ziet er zo uit. private CalcServiceClient GetCalcServiceClient() CalcServiceClient serv = null; int retrycount = 0; bool connected = false; while (retrycount < ClientInitTimeOut * 10) try EndpointAddress address = "net.pipe://localhost/calculatorservice"); Binding(); new EndpointAddress( NetNamedPipeBinding binding = new NetNamedPipe- binding.receivetimeout = TimeSpan.MaxValue; serv = new CalcServiceClient(binding, address); serv.open(); if (serv.state == System.ServiceModel.CommunicationState.Opened) connected = true; break; catch (Exception e) retrycount++; System.Threading.Thread.Sleep(100); if (!connected) throw new TimeoutException( "Couldn't connect to the calculator service."); return serv; In je project moet je dan ook een Service reference leggen naar de DllHost Console applicatie. Dit is relatief eenvoudig. Je start de Console applicatie op en kies voor Add Service Reference. Hierna zijn er in de Web.config endpoint gegevens toegevoegd. Dit endpoint is net.pipe://localhost/calculatorservice. Maak je geen zorgen over Localhost, want de DllHost applicatie en de WCF service die uiteindelijk het endpoint aanroept, draaien in dezelfde instance. Daarmee is magazine voor software development 15

16 CLOUD localhost altijd waar, ook in de Cloud. Verder moet je dan een Folder aan je solution toevoegen waarin je de DllHost console app en de 32 bits dll hebt zitten. Vergeet dan niet om de property Copy to Output Directory dan te zetten op Copy Always or Copy if newer. Oplossing 2: We kunnen de app pool van IIS in 32 bits mode zetten Deze oplossing is het minst ingrijpend. Enige lastige (ik ben geen IT pro meneer) hoe kun je dat doen vanuit een script. Ten slotte kan je alles op een Windows Azure instance zolang je het maar kunt automatiseren. Als het gescript is, dan kun je met een Startup task het script laten uitvoeren en is het helemaal geregeld. Het commando om dit te doen is: REM make apppools 32bit %windir%\system32\inetsrv\appcmd set config -section:applicationpools -applicationpooldefaults.enable32bitapponwin64:true Dit commando in een startup.cmd bestand. Plaatsen in het desbetreffende project. In de ServiceDefinition.csdef definiëren we de startup task en we zijn klaar. getal groter dan 1 dan is het resultaat gemixt met een andere aanroep. Dit kun je testen door twee browser naast elkaar open te zetten en bij gelijktijdig (er is nog tijd) drukken op de knop zal er een 0 en een 1 verschijnen. Tenzij er meerdere bloglezers op hetzelfde moment aan het testen zijn ;-) Als je dat doet met de Mutex knoppen, dan zal voor beide het resultaat 0 zijn. Bovenstaand verhaal gaat niet alleen op voor Windows Azure, maar feitelijk voor elke 64 bits server omgeving on premise of bij een andere hosting partij. Referenties: 32bit-dll-in-the-windows-azure.aspx 32-bit-and-64-bit-asp-net-versions-at-the-same-time-on-differentworker-processes.aspx Marcel Meijer <Startup> <Task commandline="startup.cmd" executioncontext="elevated" tasktype="simple" /> </Startup> Verder moet je dan een Folder aan je solution toevoegen waarin de 32 bits dll staat. Vergeet dan niet om de property Copy to Output Directory dan te zetten op Copy Always or Copy if newer. Nadeel van de oplossingen: Als er dynamische configuratie nodig is, dan is de Console applicatie het minst handig. Zoals gezegd het is een Console applicatie met een app.config. Default kan deze niet zomaar uit de Service configuration settings lezen. Bij de andere oplossing kan de Webservice er gewoon wel bij. Testen Om de twee oplossingen te testen heb ik een frontend gemaakt. Daarop staan 4 knoppen. De eerste twee knoppen roepen een WCF service aan die gebruik maakt van de Dll Host console applicatie. De laatste twee knoppen roepen een WCF service aan die gebruik maakt van AppPool in 32 bits mode. Er staan labels result, waar een 0 of een 1 of hoger in komt. Als het getal 0 is dan werd de rekenmodule aangeroepen en is er niets gemixt met een andere aanroep. Is het Al meer dan 15 jaar begeeft deze 42 jarige zich in de wereld van de ICT. Op dit moment houdt hij zich voornamelijk bezig met Azure, Cloud, C#, Software Ontwikkeling, Architectuur in het algemeen en Windows Phone 7. Ook is hij bezig met Biztalk en Sharepoint. Hij werkt als Senior Architect bij VX Company. In zijn vrije tijd is hij.net track owner, eindredacteur en bestuurslid van de SDN. Binnen de SDN is hij verantwoordelijk voor het regelen van sprekers voor de SDN Events (SDE), het regelen/redigeren van artikelen voor het SDN Magazine, mede verantwoordelijk voor de eindredactie van de hardcopy en digitale magazines en de inhoud van de SDN Conferences. Op 1 oktober 2010 werd hij MVP. TIP: Windows Azure Store Echt nieuw op de portal zijn Add-on en Store. De Store is interessant voor ISV of leveranciers van handige tools. Op dit moment is de Store alleen beschikbaar in de US. Het idee van de store is, dat je daar tools/apps kunt kopen, die je in je eigen subscription installeert en gebruikt. De aangeschafte zaken komen dan te staan bij Add-on. Je ben hierbij dus niet afhankelijk van de derde partij, zoals dat wel het geval is bij de Windows Azure Market. De hele verkoop afhandelijk zal dan door Microsoft geregeld worden. Dit biedt wel weer hele mooie kansen voor diverse leveranciers en ontwikkelaars om ook hier handige tooltjes en functionaliteiten aan te bieden bij de bron. De hele afhandeling op de Windows Azure portal is een hele API, waar je op kunt aansluiten. Het principe werkt zoals je ook een Windows Azure website uitkiest of een Virtual Machine. Je kunt kiezen uit een lijst met verschillende tools. Je kunt dan voor een betaalplan kiezen en uiteindelijk betalen. Daarna zal het tool geserviced worden. 16 MAGAZINE

17 GENERAL Sander Hoogendoorn The Waterfall Dentist Anti-Pattern Believe it or not, but I have a confession to make. I m currently in a pure waterfall project. It s my first in many, many years and despite the fact that I love the technology, I don t like our way or working it a bit. During the first phase of this project we are trying to deliver twenty functional work items. All of these twenty work items are analyzed first, then reviewed. After all review comments have been processed, all work items are designed. And again reviewed. After all review comments have been processed again, the developers start constructing them. And once they finish the testers have a go at the software produced. Yes, I know this is efficient nor effective. And yes, the testers find lots of defects that could have easily been prevented using an iterative approach where we jointly work on a single work item, and only after it s finished move on to the next. But we just don t. And the delivery date is nearing. As a result, at the delivery date we will likely deliver twenty half-baked work items, instead of delivering maybe ten or twelve complete work items. It s a choice. End of discussion You could say that the discussions about the chosen approach I have with the project manager are vivid. At the very least. No, we re not going to do agile, he clearly states. I don t care if we call it agile or not, I respond, But the way we are working now is simply inefficient. Personally I really don t care if projects are tagged as agile, Scrum, Smart, RUP or even waterfall. I just dislike inefficient processes. This approach is easy to explain to the client, the project manager continues, So we are going to stick to it. End of discussion. And then coming out of my girlfriends apartment building this morning I saw this car in the parking lot. It occurred to me immediately. We are waterfall dentists. Imaging you re a young dentist, fresh out of dentistry school, and you are starting a new practice. Why on earth you would name it The Waterfall I don t know, but twenty new patients are hurdling up to be treated. Being the waterfall dentist you use an appropriate approach. During the first week you examine all twenty patients. During the second week you commence to the first part of their treatment: drilling holes. Then in the third week, all twenty patients come back and have the holes filled. In the fourth week all patients return again for a last check-up. Just testing if all holes are filled properly. Finally, in the fifth week you get to send twenty bills to twenty happy patients. Project done. Next project. Good bookkeeping and new patients Doesn t that sound good? This approach resembles my current project in great detail. So why is it, although this model is easy to explain to patients, no dentist in the world would even slightly consider to apply it? Well, first of all, your patients don t like to walk around with unfilled holes in their mouths for a least a week. Second, your patients will have to come in to your office four times, and you will have to do pretty good bookkeeping to remember each patient s details when they return. If you would have filled a patients tooth right after you ve drilled a hole, this need for documentation and good memory wouldn t have been necessary. Moreover, what if a new patient comes in during the second or third week with a terrible toothache? You would have to decline him saying: Sorry, I don t take additional work now, advising the new patient to come back after all current patients are serviced. It s the vicious change request. And what if you become ill during? Your whole schedule will certainly slide. As a result, none of the patients will have been fully serviced at the end of the scheduled period, leaving them in uncertainty about when you will deliver. Basically, you will lose your patients as fast as they hurdled up. And you won t be able to send any bills. I could probably spent another two posts in explaining why the waterfall model isn t applied by dentist anywhere in the world. But I won t. We just might Dear project managers, despite the fact that the waterfall model is so easy to explain to clients, that doesn t make it any more effective or efficient. Armed with The Waterfall Dentist Anti-Pattern, you can explain iterative, or agile, approaches to your clients just as easy. In fact you can even service your clients better, as they may send in new urgent patients during the project, and you will be able to service those patients early. And even though you may turn ill during the project, servicing the patients one by one, rather than in a returning batch, you can actually fully service a large number of them within the designated timebox, instead of having serviced all of them half when the deadline approaches. I would much rather be able to send bills to fifteen out of twenty patients, then not being able to bill at all. So where s my current project standing? Well, just like the waterfall dentist might actually serve twenty patients during the current phase, we might actually deliver all twenty work items. But I wouldn t bet my gold teeth on it. magazine voor software development 17

18

19 DESKTOP Lammert Vinke Onderhoudbare GUI tests met Coded UI Continuous Delivery wordt de laatste jaren steeds populairder. Bij Continuous Delivery test een team bij elke oplevering of de applicatie nog functioneert conform de requirements. Daarom voert een team de testen vaker uit gedurende de lifecycle van applicatie. Daarmee loont het steeds meer om testen te automatiseren. Met end-to-end testen via de GUI kan je (deels) een invulling geven aan deze testautomatisering. Een kenmerk van end-to-end testen is dat de te testen applicatie volledig is geϊntegreerd met de andere systemen. Er zijn verschillende tools die je hierbij kunnen helpen. In dit artikel zal ik in gaan hoe dit mogelijk is met behulp van Visual Studio in combinatie met Coded UI. Een vaak terugkerende vraag daarbij is, hoe blijft een geautomatiseerde test onderhoudbaar? In dit artikel laat ik daarnaast ook zien hoe je een onderhoudbare testset realiseert. Test Automation Pyramid De literatuur beschrijft al veel over verschillende soorten geautomatiseerde testen. Mike Cohn schrijft onder andere over de Test Automation Pyramid. Deze pyramide beschrijft dat er naast geautomatiseerde end-to-end testen via GUI er ook nog andere mogelijkheden zijn om de applicatie geautomatiseerd te testen. Andere mogelijkheden zijn Unit Testen of Integratie Testen. Elk van de hiervoor genoemde type geautomatiseerde testen heeft bepaalde kenmerken en heeft een specifiek (test)doel. De Test Automation Pyramid geeft aan dat je meer Return on Investement behaald wanneer er (a) meer Unit Testen zijn dan Integratie testen, en er (b) meer Integratie Testen zijn dan end-toend GUI testen. Kortom realiseer zoveel mogelijk (en als nodig) geautomatiseerde testen op een zo laag mogelijk integratie niveau. Daarnaast geeft de pyramide aan dat handmatig uitgevoerde testen nodig blijven. Denk bijvoorbeeld aan Usabilty en Exploratory testen. Dit artikel is dan ook geen pleidooi om alle end-to-end testen via te GUI te testen of te automatiseren. Maar om end-to-end testen via de UI alleen in te zetten voor het doel waar deze het meest waardevol zijn. En probeer deze testen eerst op een lager integratie niveau te testen, bijvoorbeeld op het niveau van een service of klasse. Voorbeeld web applicatie Alhoewel end to end testen wellicht minder voorkomen dan Unit Testen en Integration Testen, leveren een set met End-to-End testen wel toegevoegde waarde in sommige scenario s. Dit omdat deze testen juist andere aspecten van de applicatie testen. Aan de hand van een voorbeeld applicatie illustreer ik in in dit artikel hoe je een onderhoudbare test set realiseert. De voorbeeld applicatie die ik gebruik in dit artikel is een website van een loterij. Met deze website kunnen (a) geϊnteresseerden een lot kopen, (b) kopers controleren wat het lotnummer was en (c) kopers controleren of de hoofdprijs op het door hun aangekochte lot is gevallen. De applicatie is al ontwikkeld; en in dit artikel zullen we een onderhoudbare verzameling test scripts op basis van Coded UI realiseren. Fig. 2: Demo applicatie Fig. 1: Test Automation Pyramid Manual Tests in MTM Op basis van de requirements van de Loterij applicatie maakt een tester als eerst een aantal Test Scripts. Elk Test Script bestaat uit een aantal test stappen. Bijvoorbeeld 1. open de applicatie, 2. navigeer naar de pagina om een lot te kopen, enz. De tester legt de Test Scripts vast met behulp van Microsoft Test Manager, in dit artikel verder afgekort als MTM. Microsoft positioneert MTM als de tool die de functionele tester gebruikt bij het maken van Test Scripts. Deze Test Script voert de functionele tester vervolgens handmatig uit binnen MTM. Voor traceability koppelt de tester elk Test Script in MTM aan een requirement. Op deze wijze geeft TFS in rapportages inzicht in welk deel van de requirements al is getest, ook wel de functional test coverage genoemd. Ook kan een teamlid of stakeholder zo herleiden in hoeverre requirements al door een tester zijn getest. Bij onderhoud magazine voor software development 19

20 DESKTOP levert dit ook het voordeel dat bij wijzigende requirements gelijk inzichtelijk is welke Test Scripts ook aangepast moeten worden. Fig. 3: Testen in MTM In een Test Script gebruikt men in MTM vaak Shared Steps. Wanneer een aantal opeenvolgende stappen herhaaldelijk voorkomen in verschillende Test Scripts, kan je daar een Shared Step van maken Een voorbeeld van een shared step is: het openen van de browser en het navigeren naar de webapplicatie op een specifieke url (Zie ook de rood gearceerde stappen in Figuur 3 voor de Shared Step Open Startpage die de browser opent en navigeert naar de startpagina). Door Shared Steps op een slimme wijze op te zetten, kan je een beter te onderhouden verzameling Test Scripts opzetten. Ook kan het gebruik van Shared Steps bijdragen aan een hogere productiviteit. Je kan een Test Script namelijk veel sneller realiseren door verschillende Shared Steps te gebruiken. Vervolgens kan de tester deze Test Scripts met behulp van MTM uitvoeren. MTM opent daarvoor de Test Runner met daarin het gemaakte Test Script in uitvoer modus (Zie Figuur 4). Per stap in het Test Script voert de tester de genoemde acties in het Test Script uit. Wanneer een stap geslaagd is, markeert de tester de stap met geslaagd en anders met gefaald. Op deze wijze worden de resultaten van de uitvoer van Test Scripts vast gelegd in TFS. Manual Test naar Coded UI Test Op basis van de Action Recording die is gekoppeld aan een Test Script genereert de developer een Coded UI Test uit in Visual Studio. Daarbij genereert Visual Studio onder andere een UIMap. Een UIMap is een afspiegeling van de te testen applicatie in code. Wanneer er aanpassingen nodig zijn in de UIMap, bewerkt de developer de UIMap met een daarvoor in Visual Studio beschikbare editor (Zie Figuur 4 voor een weergave van deze editor) of voert de developer aanpassingen uit in de gegenereerde code-behind file van de UIMap. Voor elk van de stappen in het Test Script dat de tester maakte in MTM genereert Visual Studio een zogenaamde UI Action. Daarom is het van belang om bij de test uitvoer in MTM de uitgevoerde stappen in de Test Script juist af te vinken. Voor de verschillende controls in de front-end bevinden zich in de UIMap zogenaamde UI Controls. Een UI Control beschrijft in code (als een property) hoe het test framework een control in de GUI vindt. De verschillende UI Actions gebruiken vervolgens de elementen in de UI Control Map. Naast de UIMap genereert Visual Studio een Coded UI Test. De Coded UI Test roept de verschillende UI Actions in de juiste volgorde aan. Fig. 5: Coded UI Test Builder Fysiek gezien genereert Visual Studio de volgende bestanden uit (Zie ook Figuur 5): De Coded UI Test, deze roept de verschillende UI Actions aan. (Zie KopenVanEenLot.cs, WatIsMijnLotNummer.cs en HebIk Gewonnen.cs). Dit bestand mag de developer aanpassen, want Visual Studio overschrijft dit bestand niet bij het opnieuw genereren van een Coded UI test. Deze klasse is vergelijkbaar met een normale Unit Test, echter een Coded UI Test roept de UI Actions in de UIMap aan. Doordat het een soort Unit Test is, kan de developer ook de Data Driven Tests gebruiken; De UIMap.uitest bevat een XML file met daarin de structuur van de UIMap. Dit bestand verwijst naar de verschillende uitgegenereerde elementen in de UIMap.Designer.cs; Fig. 4: Test Runner Terwijl de tester de Test Script uitvoert neemt MTM een zogenaamde Action Recording op. Een Action Recording is een opname van de acties die tester uitvoerde bij het runnen van een Test Script. Deze Action Recording gebruikt de tester om het Test Script in volgende iteraties automatisch af te spelen, dit noemt men ook wel Fast Forwarding. Bij het gebruik van Fast Forwarding controleert de tester zelf de resultaten nog wel handmatig. De Action Recording kan later door de developer worden gebruikt om een Coded UI test te generereren. Een Coded UI Test voert de verificatie stappen ook automatisch uit. Fig. 6: Gegenereerde Coded UI Test De UIMap.Designer.cs is een C#/VB bestand. Dit bestand bevat al de UI Actions (Uitgegenereerde methoden) en de UI Control Map (Properties). Deze file werkt nauw samen met het Coded UI Test Framework. Deze file mag niet worden aangepast, want dit bestand 20 MAGAZINE

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

Settings for the C100BRS4 MAC Address Spoofing with cable Internet. Settings for the C100BRS4 MAC Address Spoofing with cable Internet. General: Please use the latest firmware for the router. The firmware is available on http://www.conceptronic.net! Use Firmware version

Nadere informatie

Handleiding Installatie ADS

Handleiding Installatie ADS Handleiding Installatie ADS Versie: 1.0 Versiedatum: 19-03-2014 Inleiding Deze handleiding helpt u met de installatie van Advantage Database Server. Zorg ervoor dat u bij de aanvang van de installatie

Nadere informatie

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 QUICK GUIDE C Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 Version 0.9 (June 2014) Per May 2014 OB10 has changed its name to Tungsten Network

Nadere informatie

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden?

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? [BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? Gebruik altijd de laatste versie omdat er serieuse bug-fixes in kunnen zitten. Check altijd de release notes en openstaande bugs. Er is

Nadere informatie

How to install and use dictionaries on the ICARUS Illumina HD (E652BK)

How to install and use dictionaries on the ICARUS Illumina HD (E652BK) (for Dutch go to page 4) How to install and use dictionaries on the ICARUS Illumina HD (E652BK) The Illumina HD offers dictionary support for StarDict dictionaries.this is a (free) open source dictionary

Nadere informatie

Firewall van de Speedtouch 789wl volledig uitschakelen?

Firewall van de Speedtouch 789wl volledig uitschakelen? Firewall van de Speedtouch 789wl volledig uitschakelen? De firewall van de Speedtouch 789 (wl) kan niet volledig uitgeschakeld worden via de Web interface: De firewall blijft namelijk op stateful staan

Nadere informatie

Cameramanager LSU Installation Guide

Cameramanager LSU Installation Guide Cameramanager LSU Installation Guide Network based video surveillance server Version 1.1 / August 2009 Copyright 2010 - Cameramanager.com Page 1 LSU installation guide index 1. Connecting the LSU to your

Nadere informatie

ETS 4.1 Beveiliging & ETS app concept

ETS 4.1 Beveiliging & ETS app concept ETS 4.1 Beveiliging & ETS app concept 7 juni 2012 KNX Professionals bijeenkomst Nieuwegein Annemieke van Dorland KNX trainingscentrum ABB Ede (in collaboration with KNX Association) 12/06/12 Folie 1 ETS

Nadere informatie

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Handleiding/Manual Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Inhoudsopgave / Table of Contents 1 Verbinden met het gebruik van

Nadere informatie

Installatie instructies

Installatie instructies OpenIMS CE Versie 4.2 Installatie instructies OpenSesame ICT BV Inhoudsopgave 1 INLEIDING... 3 2 INSTALLATIE INSTRUCTIES... 4 3 OPENIMS SITECOLLECTIE CONFIGURATIE... 6 OpenIMS CE Installatie instructies

Nadere informatie

Virtual Enterprise Centralized Desktop

Virtual Enterprise Centralized Desktop Virtual Enterprise Centralized Desktop Het gebruik van virtuele desktops en de licensering daarvan Bastiaan de Wilde, Solution Specialist Microsoft Nederland Aanleiding Steeds meer gebruik van Virtuele

Nadere informatie

Usage guidelines. About Google Book Search

Usage guidelines. About Google Book Search This is a digital copy of a book that was preserved for generations on library shelves before it was carefully scanned by Google as part of a project to make the world s books discoverable online. It has

Nadere informatie

Over dit boek. Richtlijnen voor gebruik

Over dit boek. Richtlijnen voor gebruik Over dit boek Dit is een digitale kopie van een boek dat al generaties lang op bibliotheekplanken heeft gestaan, maar nu zorgvuldig is gescand door Google. Dat doen we omdat we alle boeken ter wereld online

Nadere informatie

Intermax backup exclusion files

Intermax backup exclusion files Intermax backup exclusion files Document type: Referentienummer: Versienummer : Documentatie 1.0 Datum publicatie: Datum laatste wijziging: Auteur: 24-2-2011 24-2-2011 Anton van der Linden Onderwerp: Documentclassificatie:

Nadere informatie

Introductie tot het ON0RCL Echolink-systeem

Introductie tot het ON0RCL Echolink-systeem Introductie tot het ON0RCL Echolink-systeem Bijgedragen door Douglas Ros Radio Club Leuven De bedoeling van Echolink is verre spraak-verbindingen tussen radioamateurs mogelijk te maken, gebruik makend

Nadere informatie

Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 11

Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 11 QUICK GUIDE B Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 11 Version 0.14 (July 2015) Per May 2014 OB10 has

Nadere informatie

Process Mining and audit support within financial services. KPMG IT Advisory 18 June 2014

Process Mining and audit support within financial services. KPMG IT Advisory 18 June 2014 Process Mining and audit support within financial services KPMG IT Advisory 18 June 2014 Agenda INTRODUCTION APPROACH 3 CASE STUDIES LEASONS LEARNED 1 APPROACH Process Mining Approach Five step program

Nadere informatie

Find Neighbor Polygons in a Layer

Find Neighbor Polygons in a Layer Find Neighbor Polygons in a Layer QGIS Tutorials and Tips Author Ujaval Gandhi http://google.com/+ujavalgandhi Translations by Dick Groskamp This work is licensed under a Creative Commons Attribution 4.0

Nadere informatie

ZorgMail Address Book SE Documentation

ZorgMail Address Book SE Documentation ZorgMail Address Book SE Documentation File ID: addressbook_zorgmail_a15_se 2014 ENOVATION B.V. Alle rechten voorbehouden. Niets uit deze uitgave mag worden openbaar gemaakt of verveelvoudigd, opgeslagen

Nadere informatie

! GeoNetwork INSPIRE Atom!

! GeoNetwork INSPIRE Atom! GeoNetwork INSPIRE Atom GeoNetwork INSPIRE Atom 1 Configuration 2 Metadata editor 3 Services 3 Page 1 of 7 Configuration To configure the INSPIRE Atom go to Administration > System configuration and enable

Nadere informatie

Leeftijdcheck (NL) Age Check (EN)

Leeftijdcheck (NL) Age Check (EN) Leeftijdcheck (NL) Age Check (EN) [Type text] NL: Verkoopt u producten die niet aan jonge bezoekers verkocht mogen worden of heeft uw webwinkel andere (wettige) toelatingscriteria? De Webshophelpers.nl

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

Plotten. technisch tekenwerk AUTOCAD 2000

Plotten. technisch tekenwerk AUTOCAD 2000 Inleiding Voor het plotten van uw bent u bij Lifoka aan het juiste adres. Snel, betrouwbaar en dat in grote of kleine oplagen. Niet alleen het plotten, maar ook vergaren en verzenden kan Lifoka voor u

Nadere informatie

Tentamen Objectgeorienteerd Programmeren

Tentamen Objectgeorienteerd Programmeren Tentamen Objectgeorienteerd Programmeren 5082IMOP6Y maandag 16 november 2015 13:00 15:00 Schrijf je naam en studentnummer op de regel hieronder. Sla deze pagina niet om tot de surveillant vertelt dat het

Nadere informatie

Mobile Devices, Applications and Data

Mobile Devices, Applications and Data Mobile Devices, Applications and Data 1 Jits Langedijk Senior Consultant Jits.langedijk@pqr.nl Peter Sterk Solution Architect peter.sterk@pqr.nl Onderwerpen - Rol van Mobile IT in Tomorrow s Workspace

Nadere informatie

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers English Instructions Windows 8 out-of-the-box supports the ICARUS Illumina (E653) e-reader. However, when users upgrade their Windows

Nadere informatie

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 167 Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 Task clarity 1. I understand exactly what the task is 2. I understand exactly what is required of

Nadere informatie

MobiDM App Handleiding voor Windows Mobile Standard en Pro

MobiDM App Handleiding voor Windows Mobile Standard en Pro MobiDM App Handleiding voor Windows Mobile Standard en Pro Deze handleiding beschrijft de installatie en gebruik van de MobiDM App voor Windows Mobile Version: x.x Pagina 1 Index 1. WELKOM IN MOBIDM...

Nadere informatie

Interaction Design for the Semantic Web

Interaction Design for the Semantic Web Interaction Design for the Semantic Web Lynda Hardman http://www.cwi.nl/~lynda/courses/usi08/ CWI, Semantic Media Interfaces Presentation of Google results: text 2 1 Presentation of Google results: image

Nadere informatie

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016 www.iuscommune.eu Dear Ius Commune PhD researchers, You are kindly invited to attend the Ius Commune Amsterdam Masterclass for PhD researchers, which will take place on Thursday 16 June 2016. During this

Nadere informatie

WWW.EMINENT-ONLINE.COM

WWW.EMINENT-ONLINE.COM WWW.EMINENT-OINE.COM HNDLEIDING USERS MNUL EM1016 HNDLEIDING EM1016 USB NR SERIEEL CONVERTER INHOUDSOPGVE: PGIN 1.0 Introductie.... 2 1.1 Functies en kenmerken.... 2 1.2 Inhoud van de verpakking.... 2

Nadere informatie

Tim Akkerman - Head of Mobile

Tim Akkerman - Head of Mobile Tim Akkerman - Head of Mobile Emesa is the largest e-commerce company for searching, comparing and booking travel and leisure packages in the following categories: Holidays - Other accommodations - Hotels

Nadere informatie

1. Voor het installeren wordt geadviseerd een backup te maken van uw database en bestanden.

1. Voor het installeren wordt geadviseerd een backup te maken van uw database en bestanden. NL: KiyOh.nl gebruikers kunnen met deze plug in automatisch klantbeoordelingen verzamelen, publiceren en delen in social media. Wanneer een klant een bestelling heeft gemaakt in uw Magento Shop, wordt

Nadere informatie

Standard Parts Installatie Solid Edge ST3

Standard Parts Installatie Solid Edge ST3 Hamersveldseweg 65-1b 3833 GL LEUSDEN 033-457 33 22 033-457 33 25 info@caap.nl www.caap.nl Bank (Rabo): 10.54.52.173 KvK Utrecht: 32075127 BTW: 8081.46.543.B.01 Standard Parts Installatie Solid Edge ST3

Nadere informatie

NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010

NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010 NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010 Op basis van het nieuwe artikel 365, lid 4 (NCTS) en het nieuwe artikel 455bis, lid 4 (NCTS-TIR) van het Communautair Toepassingswetboek inzake douane 1

Nadere informatie

Contents. Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation

Contents. Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation TeleBank Contents Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation Introduction - TeleBank Automatic bank services Initiates a Dialog with

Nadere informatie

Cameramanager LSU Installation Guide

Cameramanager LSU Installation Guide Cameramanager LSU Installation Guide Network based video surveillance server Version 1.3 / November 2011 Copyright 2011 - Cameramanager.com Page 1 LSU installation guide index 1. Connecting the LSU to

Nadere informatie

Nieuwsbrief NRGD. Editie 11 Newsletter NRGD. Edition 11. pagina 1 van 5. http://nieuwsbrieven.nrgd.nl/newsletter/email/47

Nieuwsbrief NRGD. Editie 11 Newsletter NRGD. Edition 11. pagina 1 van 5. http://nieuwsbrieven.nrgd.nl/newsletter/email/47 pagina 1 van 5 Kunt u deze nieuwsbrief niet goed lezen? Bekijk dan de online versie Nieuwsbrief NRGD Editie 11 Newsletter NRGD Edition 11 17 MAART 2010 Het register is nu opengesteld! Het Nederlands Register

Nadere informatie

Ontpopping. ORGACOM Thuis in het Museum

Ontpopping. ORGACOM Thuis in het Museum Ontpopping Veel deelnemende bezoekers zijn dit jaar nog maar één keer in het Van Abbemuseum geweest. De vragenlijst van deze mensen hangt Orgacom in een honingraatpatroon. Bezoekers die vaker komen worden

Nadere informatie

Aim of this presentation. Give inside information about our commercial comparison website and our role in the Dutch and Spanish energy market

Aim of this presentation. Give inside information about our commercial comparison website and our role in the Dutch and Spanish energy market Aim of this presentation Give inside information about our commercial comparison website and our role in the Dutch and Spanish energy market Energieleveranciers.nl (Energysuppliers.nl) Founded in 2004

Nadere informatie

WWW.EMINENT-ONLINE.COM

WWW.EMINENT-ONLINE.COM WWW.EMINENT-ONLINE.COM NL HANDLEIDING USERS MANUAL EM1033 HANDLEIDING NL EM1033 TWEE POORTS AUTOMATISCHE KVM SWITCH INHOUDSOPGAVE: PAGINA 1.0 Introductie.... 2 1.1 Functies en kenmerken.... 2 1.2 Inhoud

Nadere informatie

Gebruikershandleiding / User manual. Klappers bestellen in de webshop Ordering readers from the webshop

Gebruikershandleiding / User manual. Klappers bestellen in de webshop Ordering readers from the webshop Gebruikershandleiding / User manual Klappers bestellen in de webshop Ordering readers from the webshop Gebruikershandleiding klappers bestellen Voor het bestellen van klappers via de webshop moeten de

Nadere informatie

Taco Schallenberg Acorel

Taco Schallenberg Acorel Taco Schallenberg Acorel Inhoudsopgave Introductie Kies een Platform Get to Know the Jargon Strategie Bedrijfsproces Concurrenten User Experience Marketing Over Acorel Introductie THE JARGON THE JARGON

Nadere informatie

Beste ouder / verzorger, Welkom bij Mijnschoolinfo, het communicatie platform voor basisonderwijs.

Beste ouder / verzorger, Welkom bij Mijnschoolinfo, het communicatie platform voor basisonderwijs. Handleiding Registratie Mijnschoolinfo en App Nederlandstalig pagina 1-7 Registration Procedure Mijnschoolinfo and App English version see page : 8-16 Beste ouder / verzorger, Welkom bij Mijnschoolinfo,

Nadere informatie

ATOS Viewer for Dental Frameworks User Manual

ATOS Viewer for Dental Frameworks User Manual ATOS Viewer for Dental Frameworks User Manual www.dentwise.eu Inhoud Content NEDERLANDS... 2 1. Installatie... 2 2. Algemene Functies... 2 3. Afstanden Meten... 3 4. Doorsneden Maken... 4 5. Weergave Aanpassen...

Nadere informatie

Security Les 1 Leerling: Marno Brink Klas: 41B Docent: Meneer Vagevuur

Security Les 1 Leerling: Marno Brink Klas: 41B Docent: Meneer Vagevuur Security Les 1 Leerling: Klas: Docent: Marno Brink 41B Meneer Vagevuur Voorwoord: In dit document gaan we beginnen met de eerste security les we moeten via http://www.politiebronnen.nl moeten we de IP

Nadere informatie

Netwerkprinter Dell 1320C installeren op Ubuntu 10.04 LTS - Lucid Lynx

Netwerkprinter Dell 1320C installeren op Ubuntu 10.04 LTS - Lucid Lynx Netwerkprinter Dell 1320C installeren op Ubuntu 10.04 LTS - Lucid Lynx Er is geen Linux driver voor deze printer, maar het werkt ook met de driver van de Fuji Xerox DocuPrint C525A Direct link to Linux

Nadere informatie

Handleiding Meldportaal Ongebruikelijke Transacties - pg 2. Manual for uploading Unusual Transactions - Reporting Portal - pg 14

Handleiding Meldportaal Ongebruikelijke Transacties - pg 2. Manual for uploading Unusual Transactions - Reporting Portal - pg 14 Handleiding Meldportaal Ongebruikelijke Transacties - pg 2 Manual for uploading Unusual Transactions - Reporting Portal - pg 14 Handleiding Meldportaal Ongebruikelijke Transacties meldportaal.fiu-nederland.nl

Nadere informatie

Functioneel Ontwerp / Wireframes:

Functioneel Ontwerp / Wireframes: Functioneel Ontwerp / Wireframes: Het functioneel ontwerp van de ilands applicatie voor op de iphone is gebaseerd op het iphone Human Interface Guidelines handboek geschreven door Apple Inc 2007. Rounded-Rectangle

Nadere informatie

Y.S. Lubbers en W. Witvoet

Y.S. Lubbers en W. Witvoet WEBDESIGN Eigen Site Evaluatie door: Y.S. Lubbers en W. Witvoet 1 Summary Summary Prefix 1. Content en structuur gescheiden houden 2. Grammaticaal correcte en beschrijvende markup 3. Kopregels 4. Client-

Nadere informatie

Oracle Rolling Upgrades met SharePlex Bart.vanKnijff@quest.com Systems Consultant Quest Software Nederland 9/11 2007

Oracle Rolling Upgrades met SharePlex Bart.vanKnijff@quest.com Systems Consultant Quest Software Nederland 9/11 2007 Oracle Rolling Upgrades met SharePlex Bart.vanKnijff@quest.com Systems Consultant Quest Software Nederland 9/11 2007 Copyright 2006 Quest Software Agenda Wat is SharePlex? Toepassingen en de belangrijkste

Nadere informatie

Handleiding beheer lijst.hva.nl. See page 11 for Instruction in English

Handleiding beheer lijst.hva.nl. See page 11 for Instruction in English Handleiding beheer lijst.hva.nl See page 11 for Instruction in English Maillijsten voor medewerkers van de Hogeschool van Amsterdam Iedereen met een HvA-ID kan maillijsten aanmaken bij lijst.hva.nl. Het

Nadere informatie

Maillijsten voor medewerkers van de Universiteit van Amsterdam

Maillijsten voor medewerkers van de Universiteit van Amsterdam See page 11 for Instruction in English Maillijsten voor medewerkers van de Universiteit van Amsterdam Iedereen met een UvAnetID kan maillijsten aanmaken bij list.uva.nl. Het gebruik van de lijsten van

Nadere informatie

Programmeren. Cursus Python

Programmeren. Cursus Python Programmeren Cursus Python Cursus Python Omschrijving In deze cursus leren de deelnemers te programmeren in de objectgeoriënteerde programmeertaal Python. Python is een taal die vaak wordt gebruikt voor

Nadere informatie

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g S e v e n P h o t o s f o r O A S E K r i j n d e K o n i n g Even with the most fundamental of truths, we can have big questions. And especially truths that at first sight are concrete, tangible and proven

Nadere informatie

Ervaringen met begeleiding FTA cursus Deployment of Free Software Systems

Ervaringen met begeleiding FTA cursus Deployment of Free Software Systems Ervaringen met begeleiding FTA cursus Deployment of Free Software Systems Frans Mofers Nederland cursusmateriaal & CAA's alle cursusmateriaal vrij downloadbaar als PDF betalen voor volgen cursus cursussite

Nadere informatie

Medicatie controle. Mobiele app op basis van App Service en Azure AD

Medicatie controle. Mobiele app op basis van App Service en Azure AD Medicatie controle Mobiele app op basis van App Service en Azure AD Michiel Lankamp Principal developer @michiellankamp michiel.lankamp@winvision.nl Zorggroep Sint Maarten Zorgorganisatie met 2.600 medewerkers,

Nadere informatie

Onder de motorkap van Microsoft Azure Web Sites. Eelco Koster Software architect ORDINA

Onder de motorkap van Microsoft Azure Web Sites. Eelco Koster Software architect ORDINA Onder de motorkap van Microsoft Azure Web Sites Eelco Koster Software architect ORDINA Agenda Introductie Architectuur Project Kudu Azure Resource Manager Doel Dieper inzicht geven in de werking van Azure

Nadere informatie

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR:

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR: NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. Door mee te doen aan deze uitdaging kan je Nspyre laten zien wat je kan. Schrijf jij de beste oplossing dan is deze lego mindstorms nxt 2.0 set voor jou.

Nadere informatie

Veel gestelde vragen nieuwe webloginpagina

Veel gestelde vragen nieuwe webloginpagina Veel gestelde vragen nieuwe webloginpagina Op deze pagina treft u een aantal veel gestelde vragen aan over het opstarten van de nieuwe webloginpagina http://weblogin.tudelft.nl: 1. Ik krijg de melding

Nadere informatie

PROJECT INFORMATION Building De Meerlanden Nieuweweg 65 in Hoofddorp

PROJECT INFORMATION Building De Meerlanden Nieuweweg 65 in Hoofddorp BT Makelaars Aalsmeerderweg 606 Rozenburg Schiphol Postbus 3109 2130 KC Hoofddorp Telefoon 020-3 166 166 Fax 020-3 166 160 Email: info@btmakelaars.nl Website : www.btmakelaars.nl PROJECT INFORMATION Building

Nadere informatie

Multi user Setup. Firebird database op een windows (server)

Multi user Setup. Firebird database op een windows (server) Multi user Setup Firebird database op een windows (server) Inhoudsopgave osfinancials multi user setup...3 Installeeren van de firebird database...3 Testing van de connectie met FlameRobin...5 Instellen

Nadere informatie

bla bla Guard Gebruikershandleiding

bla bla Guard Gebruikershandleiding bla bla Guard Gebruikershandleiding Guard Guard: Gebruikershandleiding publicatie datum dinsdag, 13. januari 2015 Version 1.2 Copyright 2006-2013 OPEN-XCHANGE Inc., Dit document is intellectueel eigendom

Nadere informatie

Open source VoIP Networks

Open source VoIP Networks Open source VoIP Networks Standard PC hardware inexpensive add-in vs. embedded designs Ing. Bruno Impens Overview History Comparison PC - Embedded More on VoIP VoIP Hardware VoIP more than talk More...

Nadere informatie

Icoon/Icon Betekenis Description. Change scheduling Online. Gaat offline op (datum/tijd) Online. Going offline on (date/time)

Icoon/Icon Betekenis Description. Change scheduling Online. Gaat offline op (datum/tijd) Online. Going offline on (date/time) Algemeen/General Gepubliceerd maar gewijzigd Published but changed Meer acties op geselecteerde content More actions on selected content Gepubliceerd en niet gewijzigd Published and not changed Terugdraaien

Nadere informatie

Introduction to IBM Cognos Express = BA 4 ALL

Introduction to IBM Cognos Express = BA 4 ALL Introduction to IBM Cognos Express = BA 4 ALL Wilma Fokker, IBM account manager BA Ton Rijkers, Business Project Manager EMI Music IBM Cognos Express Think big. Smart small. Easy to install pre-configured

Nadere informatie

UCXLog. Log en Contest programma. www.veron.nl. UCXLog by DL7UCX

UCXLog. Log en Contest programma. www.veron.nl. UCXLog by DL7UCX UCXLog Log en Contest programma UCXLog by DL7UCX Versie: : 24 mei 2008 Agenda 08:00 Presentatie 08:45 Demonstratie 09:15 Pauze 09:30 Workshop Wat is een logboek programma? Digitaal opslaan van je papieren

Nadere informatie

Recom PDA service software Remeha Avanta

Recom PDA service software Remeha Avanta Live monitoring Boiler parameters Gebruikersinstructie Short reference guide Recom PDA service software Remeha Avanta Lock-outs Shutdowns Exit Recom PDA Inleiding De Remeha Recom PDA service software biedt

Nadere informatie

More speed. Less stress.

More speed. Less stress. More speed. Less stress. Wireless broadband Internet access for your laptop or PDA. Available here. Draadloos breedbandinternet voor uw laptop of PDA. Hier beschikbaar. What is T-Mobile HotSpot? Wat is

Nadere informatie

Continuous testing in DevOps met Test Automation

Continuous testing in DevOps met Test Automation Continuous ing in met Continuous testing in met Marco Jansen van Doorn Tool Consultant 1 is a software development method that emphasizes communication, collaboration, integration, automation, and measurement

Nadere informatie

1. Drupal 8 installatie uittesten op Symplytest.me

1. Drupal 8 installatie uittesten op Symplytest.me 1. Drupal 8 installatie uittesten op Symplytest.me Surf naar www.symplytest.me Geef een projectnaam op (drupal core) en kies Launch Sandbox Hierna kan je je versie kiezen, kies de hoogst mogelijke Klik

Nadere informatie

Windows Server 2003 EoS. GGZ Nederland

Windows Server 2003 EoS. GGZ Nederland Windows Server 2003 EoS GGZ Nederland Inleiding Inleiding Op 14 juli 2015 gaat Windows Server 2003 uit Extended Support. Dat betekent dat er geen nieuwe updates, patches of security releases worden uitgebracht.

Nadere informatie

Digital municipal services for entrepreneurs

Digital municipal services for entrepreneurs Digital municipal services for entrepreneurs Smart Cities Meeting Amsterdam October 20th 2009 Business Contact Centres Project frame Mystery Shopper Research 2006: Assessment services and information for

Nadere informatie

Opgave 2 Geef een korte uitleg van elk van de volgende concepten: De Yield-to-Maturity of a coupon bond.

Opgave 2 Geef een korte uitleg van elk van de volgende concepten: De Yield-to-Maturity of a coupon bond. Opgaven in Nederlands. Alle opgaven hebben gelijk gewicht. Opgave 1 Gegeven is een kasstroom x = (x 0, x 1,, x n ). Veronderstel dat de contante waarde van deze kasstroom gegeven wordt door P. De bijbehorende

Nadere informatie

Workflow en screenshots Status4Sure

Workflow en screenshots Status4Sure Workflow en screenshots Status4Sure Inleiding Het Status4Sure systeem is een ICT oplossing waarmee de transportopdrachten papierloos door het gehele proces gaan. De status kan gevolgd worden door de logistieke

Nadere informatie

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland 1. Londen In Londen kunnen gebruikers van een scootmobiel contact opnemen met een dienst

Nadere informatie

SPX Model A-360 Azimuth Antenna Rotor Model 1 & 2

SPX Model A-360 Azimuth Antenna Rotor Model 1 & 2 Gauke Boelensstraat 108 NL-9203 RS Drachten The Netherlands Tel: +31 (0) 512 354 126 GSM: +31 (0) 650 882 889 Fax: +31 (0) 847 187 776 www.rfhamdesign.com E-mail: info@rfhamdesign.com Model A-360 Azimuth

Nadere informatie

WHITE PAPER. by Default Reasoning

WHITE PAPER. by Default Reasoning Title: Migratie van Windows 2003 naar Windows 2008 domain Authors: Marek Version: Final Date: 05 april 2009 Categories: Windows Server 2008 defaultreasoning.wordpress.com Page 1 Scenario: Een Windows Server

Nadere informatie

Hieronder een onderzoeksverslagje bij een klant van ons die een voledige onbeschibare Vmware esx omgeving had.

Hieronder een onderzoeksverslagje bij een klant van ons die een voledige onbeschibare Vmware esx omgeving had. Hieronder een onderzoeksverslagje bij een klant van ons die een voledige onbeschibare Vmware esx omgeving had. 1>Als eerste een analyse van de eventlogs van de Virtueele windows servers. Op bijna alle

Nadere informatie

Het handboek van SSCd. Peter H. Grasch

Het handboek van SSCd. Peter H. Grasch Peter H. Grasch 2 Inhoudsopgave 1 Inleiding 6 2 SSCd gebruiken 7 2.1 Basismap........................................... 7 2.2 Configuratie......................................... 7 2.3 Database...........................................

Nadere informatie

Orbis Software. Exact. Integration Tools. Whitepaper

Orbis Software. Exact. Integration Tools. Whitepaper Orbis Software Exact Integration Tools Whitepaper Exact Integration Tools Whitepaper Orbis Software is met het product TaskCentre marktleider op het gebied van Business Proces Management (BPM) software

Nadere informatie

LDA Topic Modeling. Informa5ekunde als hulpwetenschap. 9 maart 2015

LDA Topic Modeling. Informa5ekunde als hulpwetenschap. 9 maart 2015 LDA Topic Modeling Informa5ekunde als hulpwetenschap 9 maart 2015 LDA Voor de pauze: Wat is LDA? Wat kan je er mee? Hoe werkt het (Gibbs sampling)? Na de pauze Achterliggende concepten à Dirichlet distribu5e

Nadere informatie

Монгол page 1 and 2, Nederlands blz 3 en 4 English page 5 and 6. Jaarverslag / Auditor s report 2011

Монгол page 1 and 2, Nederlands blz 3 en 4 English page 5 and 6. Jaarverslag / Auditor s report 2011 Монгол page 1 and 2, Nederlands blz 3 en 4 English page 5 and 6 Jaarverslag / Auditor s report 2011 1 2 Het bestuur van de NGO All for Children heeft op 26 mei 2012 het volgende jaarverslag vastgesteld

Nadere informatie

802.11b Wireless router w. 4 port switch. StarTech ID: BR411BWDC

802.11b Wireless router w. 4 port switch. StarTech ID: BR411BWDC 802.11b Wireless router w. 4 port switch StarTech ID: BR411BWDC Share your Internet connection without being constrained by cables with StarTech.com s 802.11b wireless router. The BR411BWDC lets you share

Nadere informatie

Windows Azure in de praktijk

Windows Azure in de praktijk Windows Azure in de praktijk Eelco Koster IT Architect, Ordina eelco.koster@ordina.nl http://eelco.azurewebsites.net/ @eelco_zelf Agenda Wat is cloud Wat biedt Microsoft? Praktijk voorbeelden Wat is cloud?

Nadere informatie

Webapplicatie-generatie NIOC 2013

Webapplicatie-generatie NIOC 2013 Webapplicatie-generatie NIOC 2013 Eddy Luursema, Misja Nabben, Arnoud van Bers Research Group Model Based Information Systems Presentation Introduction M-BIS Data intensive systems Requirements Generation

Nadere informatie

Session Educa-on. 14-15 October 2013

Session Educa-on. 14-15 October 2013 Session Educa-on 14-15 October 2013 FIRE facilities in education: Networking courses (fixed and wireless) IP fixed networks ComNet Labs Build your own network [Lab router] Calculate IP ranges According

Nadere informatie

Aangescherpte inlogprocedure privacygevoelige systemen

Aangescherpte inlogprocedure privacygevoelige systemen For English, scroll to page 5. Inhoud Aangescherpte inlogprocedure privacygevoelige systemen... 2 Inloggen met 2FA. Hoe werkt dat?... 2 BasWare... 2 ERP-LN, Peoplesoft en Osiris voor backoffice-medewerkers...

Nadere informatie

Component-based software engineering

Component-based software engineering Component-based software engineering Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 19 Slide 1 CBSE essentials Independent components gespecificeerd door hun interfaces. Component standards

Nadere informatie

Als u dit dan probeert te doen dan zal hij zeggen dat de versie van Silverlight al geïnstalleerd is.

Als u dit dan probeert te doen dan zal hij zeggen dat de versie van Silverlight al geïnstalleerd is. GPS-eSuite werkt niet meer in Google Chrome versie 42. Indien uw Google Chrome een update heeft gehad naar de laatste versie 42 of hoger dan zal u merken dat hij constant komt vragen om Microsoft Silverlight

Nadere informatie

liniled Cast Joint liniled Gietmof liniled Castjoint

liniled Cast Joint liniled Gietmof liniled Castjoint liniled Cast Joint liniled Gietmof liniled is een hoogwaardige, flexibele LED strip. Deze flexibiliteit zorgt voor een zeer brede toepasbaarheid. liniled kan zowel binnen als buiten in functionele en decoratieve

Nadere informatie

Holiday child daycare. Manual online enrollments 2015 (see below for translation website)

Holiday child daycare. Manual online enrollments 2015 (see below for translation website) Holiday child daycare Manual online enrollments 2015 (see below for translation website) Step 1: Registration Click the registration link (via intranet or www.vakantieopvangstekelbees.be Reserveren) Fill

Nadere informatie

CONTROLE VAN DE TEMPERATUUR EN DE VOCHTIGHEIDSGRAAD WETENSCHAPPELIJKE DIENST PATRIMONIUM

CONTROLE VAN DE TEMPERATUUR EN DE VOCHTIGHEIDSGRAAD WETENSCHAPPELIJKE DIENST PATRIMONIUM Deze instructie beschrijft de werkwijze voor de controle van de temperatuur en de relatieve vochtigheid van de bewaarplaatsen van de Wetenschappelijke Dienst voor het Patrimonium. Deze verklaring beschrijft

Nadere informatie

beginnen met bloggen (kleine workshop Wordpress)

beginnen met bloggen (kleine workshop Wordpress) beginnen met bloggen (kleine workshop Wordpress) Een weblog is van oorsprongeen lijstje linktips met een stukje tekst. Oorspongvan het weblog Jorn Barger is an American blogger, best known as editor of

Nadere informatie

Cambridge International Examinations Cambridge International General Certificate of Secondary Education

Cambridge International Examinations Cambridge International General Certificate of Secondary Education *3745107457* Cambridge International Examinations Cambridge International General Certificate of Secondary Education DUTCH 0515/03 Paper 3 Speaking Role Play Card One 1 March 30 April 2015 Approx. 15 minutes

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 8 december 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als jeeen onderdeel

Nadere informatie

Graphic Design. Keuzevak GD1. Raul Martinez-Orozco (r.d.martinez.orozco@hro.nl / raul@thecombine.nl)

Graphic Design. Keuzevak GD1. Raul Martinez-Orozco (r.d.martinez.orozco@hro.nl / raul@thecombine.nl) Graphic Design 1 Graphic Design Keuzevak GD1 Raul Martinez-Orozco (r.d.martinez.orozco@hro.nl / raul@thecombine.nl) Graphic Design 2 Expectations Attendance, creativity, motivation and a professional attitude

Nadere informatie

Understanding and being understood begins with speaking Dutch

Understanding and being understood begins with speaking Dutch Understanding and being understood begins with speaking Dutch Begrijpen en begrepen worden begint met het spreken van de Nederlandse taal The Dutch language links us all Wat leest u in deze folder? 1.

Nadere informatie